From a1a6fe1fc99d2083a0a53b8bfd0d898a59266561 Mon Sep 17 00:00:00 2001 From: "Lacewell, Chaunte W" Date: Thu, 2 Jul 2026 15:56:45 -0700 Subject: [PATCH 01/19] July demo code: refactored reader, updated dependencies, updated tests Signed-off-by: Lacewell, Chaunte W --- .devcontainer/Dockerfile | 4 +- .github/assets/fastapi/requirements.in | 8 +- .github/assets/finetune/requirements.in | 9 +- fastapi/.vscode/launch.json | 30 +- fastapi/Dockerfile | 4 +- fastapi/include/default_configs.py | 5 +- fastapi/include/handlers.py | 4459 ++++++++++++++--------- fastapi/include/models.py | 68 +- fastapi/include/readers.py | 1566 ++++---- fastapi/include/utils.py | 374 +- fastapi/main.py | 46 +- fastapi/tests/test_detections.py | 2827 +++++++------- fastapi/tests/test_model.py | 2 +- fastapi/tests/test_pipeline.py | 29 +- fastapi/tests/test_readers.py | 2203 +++++++++++ finetune/Dockerfile | 4 +- 16 files changed, 7594 insertions(+), 4044 deletions(-) create mode 100644 fastapi/tests/test_readers.py diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 8ae30d8..fe197ed 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -53,10 +53,10 @@ RUN apt-get update && \ RUN python3 -m venv ${VIRTUAL_ENV} && \ ${VIRTUAL_ENV}/bin/pip install --no-cache-dir \ - "pip==26.0.1" \ + "pip==26.1.2" \ "torch==2.10.0" \ "torchvision==0.25.0" \ - "numpy==1.26.0" + "numpy==1.26.4" # OPENCV W/ CUDA SUPPORT ENV PYTHON_VERSION=3.10 diff --git a/.github/assets/fastapi/requirements.in b/.github/assets/fastapi/requirements.in index d7c5f92..46074b5 100644 --- a/.github/assets/fastapi/requirements.in +++ b/.github/assets/fastapi/requirements.in @@ -15,10 +15,10 @@ protobuf>=5.29.6,<6 # For VDMS pynvvideocodec>=2.1.0 pytest>=9.0.3 requests>=2.33.0 -tensorrt_cu12==10.14.1.48.post1 -torch==2.10.0 -torchvision==0.25.0 -ultralytics>=8.4.8 +tensorrt_cu12>=10.14.1.48.post1 +torch>=2.10.0 +torchvision>=0.25.0 +ultralytics>=8.4.34 uvicorn>=0.42.0 vdms>=0.0.23 wheel>=0.46.3 diff --git a/.github/assets/finetune/requirements.in b/.github/assets/finetune/requirements.in index 0e3d576..fa2843f 100644 --- a/.github/assets/finetune/requirements.in +++ b/.github/assets/finetune/requirements.in @@ -8,12 +8,13 @@ onnxruntime-gpu>=1.23.2 onnxslim>=0.1.82 pip>=26.1 requests>=2.33.0 -tensorrt_cu12==10.14.1.48.post1 -torch==2.10.0 -torchvision==0.25.0 -ultralytics>=8.4.8 +tensorrt_cu12>=10.14.1.48.post1 +torch>=2.10.0 +torchvision>=0.25.0 +ultralytics>=8.4.34 idna>=3.15 pillow>=12.2.0 +protobuf>=5.29.6,<6 # For VDMS urllib3>=2.7.0 diff --git a/fastapi/.vscode/launch.json b/fastapi/.vscode/launch.json index 5ea2550..d69153c 100644 --- a/fastapi/.vscode/launch.json +++ b/fastapi/.vscode/launch.json @@ -4,6 +4,21 @@ // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ + { + "name": "Python Debugger: test_detections", + "type": "debugpy", + "request": "launch", + "program": "${workspaceFolder}/tests/test_detections.py", + "cwd": "${workspaceFolder}/tests", + "console": "integratedTerminal", + "justMyCode": false, + "subProcess": false, + "args": [ + "--type", "object", + // "--source", ".mp4", + // "-m", "yolo11n", "--no-custom", + ] + }, { "name": "Python Debugger: Pipeline", "type": "debugpy", @@ -60,20 +75,5 @@ // "--source", ".mp4", ] }, - { - "name": "Python Debugger: test_detections", - "type": "debugpy", - "request": "launch", - "program": "${workspaceFolder}/tests/test_detections.py", - "cwd": "${workspaceFolder}/tests", - "console": "integratedTerminal", - "justMyCode": false, - "subProcess": false, - "args": [ - "--type", "object", - // "--source", ".mp4", - // "-m", "yolo11n", "--no-custom", - ] - } ] } diff --git a/fastapi/Dockerfile b/fastapi/Dockerfile index a771678..a0d81c0 100644 --- a/fastapi/Dockerfile +++ b/fastapi/Dockerfile @@ -53,10 +53,10 @@ RUN apt-get update && \ RUN python3 -m venv ${VIRTUAL_ENV} && \ ${VIRTUAL_ENV}/bin/pip install --no-cache-dir \ - "pip==26.0.1" \ + "pip==26.1.2" \ "torch==2.10.0" \ "torchvision==0.25.0" \ - "numpy==1.26.0" + "numpy==1.26.4" # OPENCV W/ CUDA SUPPORT ENV PYTHON_VERSION=3.10 diff --git a/fastapi/include/default_configs.py b/fastapi/include/default_configs.py index 9046094..94cc90d 100644 --- a/fastapi/include/default_configs.py +++ b/fastapi/include/default_configs.py @@ -24,6 +24,7 @@ # MODEL DETECTION_THRESHOLD_DEFAULT = 0.25 +IOU_THRESHOLD_DEFAULT = 0.7 DYNAMIC_FLAG_DEFAULT = True HALF_FLAG_DEFAULT = True MAX_DETECTIONS = 100 @@ -36,7 +37,7 @@ # SMART FILTERING (RESIZE, BKGD SUB, THRESHOLD, DILATE) # Enable if resolution > 2K 1920x1080 SMART_FILTERING_PIXEL_CONSTRAINT = 1920 * 1080 -BKGD_SUB_INCLUDE_HISTORY = False # True, False +BKGD_SUB_INCLUDE_HISTORY = True # True, False BKGD_SUB_INCLUDE_HISTORY_DILATE_KERNEL_SIZE = 15 # 21 #15 BKGD_SUB_INCLUDE_HISTORY_METHOD = "or" # "and", or BKGD_SUB_INCLUDE_HISTORY_TEMPORAL_SIZE = 3 @@ -48,7 +49,7 @@ RESIZE_FLAG_DEFAULT = False ROI_BB_FULL_RES_PADDING = int(0.02 * MODEL_W) # 10, ~13 ROI_CONTAINMENT_THRESH = 0.95 -ROI_DISTANCE_THRESH_RATIO = 0.05 +ROI_DISTANCE_THRESH_RATIO = 0.05 # 0.10 #.15 # 0.05 ROI_MAX_RELATIVE_SIZE_RATIO = 1 # 1 # 0.8 ROI_MERGE_SIZE_LIMIT = MODEL_W * 1.25 ROI_MIN_AREA_RATIO = 0.01 diff --git a/fastapi/include/handlers.py b/fastapi/include/handlers.py index 9188bcc..53e2783 100644 --- a/fastapi/include/handlers.py +++ b/fastapi/include/handlers.py @@ -72,14 +72,15 @@ def log_to_logger(message, level="info"): # ----- PIPELINE CONFIGURATION ----- -os.environ["PYTORCH_ALLOC_CONF"] = "expandable_segments:True" -# Force OpenCV to use a single thread for its operations. -# This prevents internal OpenCV threads from "racing" against AI logic. -# cv2.setNumThreads(1) - # Force OpenCV to run sequentially to prevent context-switching overhead -# cv2.setNumThreads(0) -cv2.setNumThreads(os.cpu_count() or 4) +cv2.setNumThreads(0) # Forces OpenCV loops to run strictly sequentially +# cv2.setNumThreads(os.cpu_count() or 4) +torch.set_num_threads(1) +torch.set_num_interop_threads(1) +# os.environ["OMP_NUM_THREADS"] = "1" +os.environ["MKL_NUM_THREADS"] = "1" +os.environ["OMP_NUM_THREADS"] = str(mp.cpu_count()) # "1" +os.environ["PYTORCH_ALLOC_CONF"] = "expandable_segments:True" from include.utils import ( @@ -89,9 +90,636 @@ def log_to_logger(message, level="info"): get_detection_color, get_display_frame_in_bytes, metadata2vdms_with_retry, - tensor2opencv, + # AsyncVideoWriter, + # AsyncDisplayWriter, ) + +class AsyncVideoWriter: + """Handles disk saving operations asynchronously on a background thread.""" + + def __init__(self, path, fourcc, fps, size): + self.writer = cv2.VideoWriter(path, fourcc, fps, size) + self.queue = queue.Queue() + self.running = True + self.thread = threading.Thread(target=self._write_loop, daemon=True) + self.thread.start() + + def _write_loop(self): + while self.running or not self.queue.empty(): + try: + frame = self.queue.get(timeout=0.05) + if frame is None: + break + self.writer.write(frame) + self.queue.task_done() + except queue.Empty: + continue + + def write_frame(self, frame): + self.queue.put(frame) + + def release(self): + self.running = False + self.thread.join() + self.writer.release() + + +class AsyncDisplayWriter: + """ + Ultra-efficient frame-delivery client for live web streaming. + Pipes annotated BGR numpy matrices directly into matching Linux + POSIX Shared Memory allocation slots to prevent thread context-switching. + """ + + def __init__(self, target_fps, display_size, quality=60): + self.target_fps = float(target_fps) + self.disp_w, self.disp_h = display_size + self.quality = int(quality) + + # Ingestion pipeline constructs + self.queue = queue.Queue(maxsize=10) + self.running = True + + # State indicators requested by the FastAPI handler endpoints + self.handler = None + + def start_worker(self): + self.thread = threading.Thread(target=self._write_loop, daemon=True) + self.thread.start() + + def set_handler_context(self, handler_instance): + """Binds the active handler resource structures to secure index barriers.""" + self.handler = handler_instance + + def _write_loop(self): + encode_param = [int(cv2.IMWRITE_JPEG_QUALITY), self.quality] + print( + f"[DISPLAY-DEBUG] Background writer thread active for: {self.handler.name if self.handler else 'None'}", + flush=True, + ) + + while self.running or not self.queue.empty(): + try: + item = self.queue.get(timeout=0.05) + if item is None: + break + + display_frame, frame_num = item + + if self.handler is None: + print( + f"[DISPLAY-WARN] Missing handler context on Frame #{frame_num}", + flush=True, + ) + self.queue.task_done() + continue + + # --- TRACKING DIAGNOSTIC ASSERTION --- + current_last_id = ( + self.handler.mp_last_id.value + ) # self.handler.shared_details.get("last_id", -1) + if frame_num <= current_last_id: + print( + f"[DISPLAY-DROP] Skipping Frame #{frame_num} because it is older or equal to last_id ({current_last_id})", + flush=True, + ) + self.queue.task_done() # 🔄 CRITICAL: Prevent queue thread starvation + continue + + frame_bytes = get_display_frame_in_bytes( + display_frame, + display_size=(self.disp_w, self.disp_h), + quality=self.quality, + return_bytes=True, + ) + + if not frame_bytes: + print( + f"[DISPLAY-ERROR] Compression failed on Frame #{frame_num}", + flush=True, + ) + self.queue.task_done() + continue + + frame_len = len(frame_bytes) + num_shms = len(self.handler.shms) + + forbidden_idx = [ + self.handler.ready_buffer_idx.value, + self.handler.reader_active_idx.value, + ] + available_idx = [i for i in range(num_shms) if i not in forbidden_idx] + + if not available_idx: + write_idx = (self.handler.ready_buffer_idx.value + 1) % num_shms + else: + write_idx = available_idx[0] + + # Zero-copy memory map transaction + shm_block = self.handler.shms[write_idx] + shm_block.buf[:frame_len] = frame_bytes # memoryview(frame_bytes) + + # Secure metrics tracking parameters + self.handler.shm_frame_lengths[write_idx] = frame_len + self.handler.ready_buffer_idx.value = write_idx + # self.handler.shared_details["last_id"] = frame_num + self.handler.mp_last_id.value = frame_num + + # Signal FastAPI async engine handles safely + # if hasattr(self.handler, "loop") and self.handler.loop is not None: + # self.handler.loop.call_soon_threadsafe(self.handler.frame_ready_event.set) + # else: + # self.handler.frame_ready_event.set() + self.handler.mp_frame_ready_flag.value = True + + self.queue.task_done() + + except queue.Empty: + continue + except Exception as e: + print(f"[DISPLAY-FATAL-ERROR] Execution crashed: {e}", flush=True) + traceback.print_exc() + if "item" in locals(): + self.queue.task_done() + continue + + # def _write_loopv2(self): + # encode_param = [int(cv2.IMWRITE_JPEG_QUALITY), self.quality] + # while self.running or not self.queue.empty(): + # try: + # item = self.queue.get(timeout=0.05) + # if item is None: + # break + # display_frame, frame_num = item + # # self.writer.write(frame) + # # Compress to highly packable, network-ready JPEG byte streams + # # ret, jpeg_buf = cv2.imencode('.jpg', display_frame, encode_param) + # # if not ret: + # # self.queue.task_done() + # # continue + # if self.handler is None: # or not self.handler.active: + # self.queue.task_done() + # continue + + # if frame_num > self.handler.shared_details["last_id"]: + # frame_bytes = get_display_frame_in_bytes( + # display_frame, + # display_size=(self.disp_w, self.disp_h), + # quality=self.quality, + # return_bytes=True, + # ) + # if not frame_bytes: + # self.queue.task_done() + # continue + + # # frame_bytes = jpeg_buf.tobytes() + # frame_len = len(frame_bytes) + # num_shms = len(self.handler.shms) + + # # Locate alternative ring memory locations away from browser client read operations + # forbidden_idx = [self.handler.ready_buffer_idx.value, self.handler.reader_active_idx.value] + # available_idx = [i for i in range(num_shms) if i not in forbidden_idx] + + # if not available_idx: + # # Fallback to structural ring increments if locks collide + # write_idx = (self.handler.ready_buffer_idx.value + 1) % num_shms + # else: + # write_idx = available_idx[0] + + # # Direct zero-copy commit straight to volatile RAM mappings + # shm_block = self.handler.shms[write_idx] + # shm_block.buf[:frame_len] = memoryview(frame_bytes) + + # # Update pipeline sync trackers across worker contexts + # self.handler.shm_frame_lengths[write_idx] = frame_len + # self.handler.ready_buffer_idx.value = write_idx + + # # Assign atomic sequence token identifiers safely + # self.handler.shared_details["last_id"] = frame_num + + # # Fire threading synchronization barriers to release blocked generator loops + # # self.handler.frame_ready_event.set() + # if hasattr(self.handler, "loop") and self.handler.loop is not None: + # self.handler.loop.call_soon_threadsafe(self.handler.frame_ready_event.set) + # else: + # # Fallback guard if the frame context hasn't registered a loop hook yet + # self.handler.frame_ready_event.set() + + # self.queue.task_done() + # except queue.Empty: + # continue + # except Exception as e: + # print(f"[ASYNC-DISPLAY-ERROR] Silent pool worker drop: {e}") + # traceback.print_exc() + # continue + + # def _write_loopv1(self): + # """Background daemon consumer that compresses matrices directly to /dev/shm.""" + # # Performance parameters to maintain strict BT.709 encoding constraints + # encode_param = [int(cv2.IMWRITE_JPEG_QUALITY), self.quality] + + # while self.running or not self.queue.empty(): + # try: + # item = self.queue.get(timeout=0.05) + # if item is None: + # break + + # display_frame, frame_num = item + # if self.handler is None or not self.handler.active: + # self.queue.task_done() + # continue + + # # Ensure image sizes perfectly correspond with standard API expectations + # if display_frame.shape[1] != self.disp_w or display_frame.shape[0] != self.disp_h: + # display_frame = cv2.resize(display_frame, (self.disp_w, self.disp_h), interpolation=cv2.INTER_NEAREST) + + # # Compress to highly packable, network-ready JPEG byte streams + # ret, jpeg_buf = cv2.imencode('.jpg', display_frame, encode_param) + # if not ret: + # self.queue.task_done() + # continue + + # frame_bytes = jpeg_buf.tobytes() + # frame_len = len(frame_bytes) + # num_shms = len(self.handler.shms) + + # # Locate alternative ring memory locations away from browser client read operations + # forbidden_idx = [self.handler.ready_buffer_idx.value, self.handler.reader_active_idx.value] + # available_idx = [i for i in range(num_shms) if i not in forbidden_idx] + + # if not available_idx: + # # Fallback to structural ring increments if locks collide + # write_idx = (self.handler.ready_buffer_idx.value + 1) % num_shms + # else: + # write_idx = available_idx[0] + + # # Direct zero-copy commit straight to volatile RAM mappings + # shm_block = self.handler.shms[write_idx] + # shm_block.buf[:frame_len] = frame_bytes + + # # Update pipeline sync trackers across worker contexts + # self.handler.shm_frame_lengths[write_idx] = frame_len + # self.handler.ready_buffer_idx.value = write_idx + + # # Assign atomic sequence token identifiers safely + # self.handler.shared_details["last_id"] = frame_num + + # # Fire threading synchronization barriers to release blocked generator loops + # # self.handler.frame_ready_event.set() + # if hasattr(self.handler, "loop") and self.handler.loop is not None: + # self.handler.loop.call_soon_threadsafe(self.handler.frame_ready_event.set) + # else: + # # Fallback guard if the frame context hasn't registered a loop hook yet + # self.handler.frame_ready_event.set() + + # self.queue.task_done() + # except queue.Empty: + # continue + # except Exception as e: + # print(f"[ASYNC-DISPLAY-ERROR] Failed streaming injection: {e}") + # continue + + def write_frame(self, display_frame, frame_num): + """Thread-safe entry hook to stash processed canvas items into the workspace.""" + # if not self.active: + # return + # try: + # # Drop structural allocations under pressure if the worker falls behind + # self.queue.put_nowait((display_frame, frame_num)) + # except queue.Full: + # pass + self.queue.put((display_frame, frame_num)) + + def release(self): + """Terminates internal consumers gracefully to ensure process convergence.""" + # self.active = False + self.running = False + self.queue.put(None) + if self.thread.is_alive(): + self.thread.join(timeout=1.0) + + +# class AsyncDisplayVideoWriter: +# """ +# Modified streaming writer based on AsyncVideoWriter layout. +# Sequentially pipes annotated matrices directly into Linux POSIX +# Shared Memory allocations without frame drop filters. +# """ +# def __init__(self, target_fps, display_size, quality=60): +# self.target_fps = float(target_fps) +# self.disp_w, self.disp_h = display_size +# self.quality = int(quality) + +# # Ingestion pipeline constructs mirroring AsyncVideoWriter +# self.queue = queue.Queue(maxsize=2) +# self.running = True +# self.handler = None + +# # Start the sequential background thread +# self.thread = threading.Thread(target=self._write_loop, daemon=True) +# self.thread.start() + +# def set_handler_context(self, handler_instance): +# """Binds the parent handler resource structures.""" +# self.handler = handler_instance + +# def _write_loop(self): +# encode_param = [int(cv2.IMWRITE_JPEG_QUALITY), self.quality] + +# while self.running: # or not self.queue.empty(): +# try: +# item = self.queue.get(timeout=0.05) +# if item is None: +# break + +# display_frame, frame_num = item +# if self.handler is None or not self.handler.active: +# self.queue.task_done() +# continue + +# # Ensure image matches standard spatial expectations layout safely +# if display_frame.shape[1] != self.disp_w or display_frame.shape[0] != self.disp_h: +# display_frame = cv2.resize( +# display_frame, (self.disp_w, self.disp_h), interpolation=cv2.INTER_NEAREST +# ) + +# # Compress to network-ready JPEG byte streams +# ret, jpeg_buf = cv2.imencode('.jpg', display_frame, encode_param) +# if not ret: +# self.queue.task_done() +# continue + +# frame_bytes = jpeg_buf.tobytes() +# frame_len = len(frame_bytes) +# num_shms = len(self.handler.shms) + +# # Sequential Ring Buffer Allocation Step +# write_idx = (self.handler.ready_buffer_idx.value + 1) % num_shms + +# # Commit straight to the volatile shared RAM mapping +# shm_block = self.handler.shms[write_idx] +# shm_block.buf[:frame_len] = memoryview(frame_bytes) + +# # Update lengths and index pointers first so the reader has data +# self.handler.shm_frame_lengths[write_idx] = frame_len +# self.handler.ready_buffer_idx.value = write_idx +# self.handler.mp_last_id.value = frame_num + +# # Flip the shared IPC flag to wake up the FastAPI generator +# self.handler.mp_frame_ready_flag.value = True + +# self.queue.task_done() + +# # if self.queue.empty(): +# # self.handler.mp_frame_ready_flag.value = False +# except queue.Empty: +# continue +# except Exception as e: +# print(f"[STREAM-WRITER-ERROR] Failed streaming injection: {e}") +# if 'item' in locals(): +# self.queue.task_done() +# continue + +# # def write_frame(self, frame, frame_num): +# # """Appends frames to the background delivery thread queue.""" +# # if self.running: +# # self.queue.put((frame, frame_num)) + +# # def release(self): +# # """Gracefully terminates and joins the background thread loop.""" +# # self.running = False +# # self.queue.put(None) +# # if self.thread.is_alive(): +# # self.thread.join() + +# def write_frame(self, frame, frame_num): +# """Thread-safe lossy queue ingestion.""" +# if not self.running: +# return +# try: +# # 2. 🔄 FIX: Use non-blocking insertions to prevent ThreadPool starvation +# self.queue.put_nowait((frame, frame_num)) +# except queue.Full: +# try: +# # Evict the old, stale frame to ensure real-time rendering continuity +# self.queue.get_nowait() +# self.queue.task_done() +# self.queue.put_nowait((frame, frame_num)) +# except Exception: +# pass + +# def release(self): +# self.running = False +# try: +# while not self.queue.empty(): +# self.queue.get_nowait() +# self.queue.task_done() +# except Exception: +# pass +# self.queue.put(None) + +# class AsyncDisplayVideoWriter: +# """ +# Lock-free sequential frame streaming bridge optimized for 8K pipelines. +# Directly targets the reverted FastAPI main.py frame_generator loop structures. +# """ +# def __init__(self, target_fps, display_size, quality=60): +# self.target_fps = float(target_fps) +# self.disp_w, self.disp_h = display_size +# self.quality = int(quality) + +# # Enforce a tight bounded queue to eliminate memory leaks and thread pool starvation +# self.queue = queue.Queue(maxsize=1) +# self.running = True +# self.handler = None + +# self.thread = threading.Thread(target=self._write_loop, daemon=True) +# self.thread.start() + +# def set_handler_context(self, handler_instance): +# """Binds the stream handler context to pass parameters across memory spaces.""" +# self.handler = handler_instance + +# def _write_loop(self): +# encode_param = [int(cv2.IMWRITE_JPEG_QUALITY), self.quality] + +# while self.running: +# try: +# # Controlled timeout prevents zombie threads during service re-engineering +# item = self.queue.get(timeout=0.02) +# if item is None: +# break + +# display_frame, frame_num = item +# if self.handler is None or not self.handler.active: +# self.queue.task_done() +# continue + +# # Enforce spatial aspect resolution constraints +# if display_frame.shape[1] != self.disp_w or display_frame.shape[0] != self.disp_h: +# display_frame = cv2.resize( +# display_frame, (self.disp_w, self.disp_h), interpolation=cv2.INTER_NEAREST +# ) + +# # Compress matrix to network-ready JPEGs +# ret, jpeg_buf = cv2.imencode('.jpg', display_frame, encode_param) +# if not ret: +# self.queue.task_done() +# continue + +# frame_bytes = jpeg_buf.tobytes() +# frame_len = len(frame_bytes) +# num_shms = len(self.handler.shms) + +# # Lockless round-robin step selection across the pre-allocated POSIX buffers +# write_idx = (self.handler.ready_buffer_idx.value + 1) % num_shms + +# # Commit bytes directly into volatile Linux shared RAM (/dev/shm) +# shm_block = self.handler.shms[write_idx] +# shm_block.buf[:frame_len] = memoryview(frame_bytes) + +# # --- ATOMIC METRICS UPDATES ALIGNED WITH REVERTED main.py --- +# self.handler.shm_frame_lengths[write_idx] = frame_len +# self.handler.ready_buffer_idx.value = write_idx + +# # Synchronize the Manager dict proxy that main.py parses on line 197! +# self.handler.shared_details["last_id"] = frame_num +# self.handler.mp_last_id.value = frame_num + +# # Thread-safely fire the asyncio.Event to wake up the web generator loop +# if hasattr(self.handler, "loop") and self.handler.loop is not None: +# self.handler.loop.call_soon_threadsafe(self.handler.frame_ready_event.set) +# else: +# self.handler.frame_ready_event.set() + +# self.queue.task_done() +# except queue.Empty: +# continue +# except Exception as e: +# print(f"[STREAM-WRITER-ERROR] Frame streaming execution failed: {e}", flush=True) +# if 'item' in locals(): +# self.queue.task_done() +# continue + +# def write_frame(self, frame, frame_num): +# """Appends frames to the background delivery thread using non-blocking evictions.""" +# if not self.running: +# return +# try: +# self.queue.put_nowait((frame, frame_num)) +# except queue.Full: +# try: +# # Evict the old, stale frame slot to prioritize fresh real-time matrices +# self.queue.get_nowait() +# self.queue.task_done() +# self.queue.put_nowait((frame, frame_num)) +# except Exception: +# pass + +# def release(self): +# """Gracefully drains workers and joins the tracking daemon loops.""" +# self.running = False +# try: +# while not self.queue.empty(): +# self.queue.get_nowait() +# self.queue.task_done() +# except Exception: +# pass +# self.queue.put(None) + + +class AsyncDisplayVideoWriter: + """ + Lock-free single-element buffer optimized for 8K pipelines. + Eliminates queue.Queue lock contention to preserve strict target frame rates. + """ + + def __init__(self, target_fps, display_size, quality=60): + self.target_fps = float(target_fps) + self.disp_w, self.disp_h = display_size + self.quality = int(quality) + + # 1. 🔄 FIX: Use a lockless deque with maxlen=1 instead of queue.Queue + self.buffer = deque(maxlen=1) + self.running = True + self.handler = None + + self.thread = threading.Thread(target=self._write_loop, daemon=True) + self.thread.start() + + def set_handler_context(self, handler_instance): + self.handler = handler_instance + + def _write_loop(self): + encode_param = [int(cv2.IMWRITE_JPEG_QUALITY), self.quality] + + while self.running: + try: + # 2. 🔄 FIX: Non-blocking pop from the single-element buffer + if not self.buffer: + time.sleep(0.005) + continue + + display_frame, frame_num = self.buffer.popleft() + + if self.handler is None or not self.handler.active: + continue + + if ( + display_frame.shape[1] != self.disp_w + or display_frame.shape[0] != self.disp_h + ): + display_frame = cv2.resize( + display_frame, + (self.disp_w, self.disp_h), + interpolation=cv2.INTER_NEAREST, + ) + + ret, jpeg_buf = cv2.imencode(".jpg", display_frame, encode_param) + if not ret: + continue + + frame_bytes = jpeg_buf.tobytes() + frame_len = len(frame_bytes) + num_shms = len(self.handler.shms) + + write_idx = (self.handler.ready_buffer_idx.value + 1) % num_shms + + shm_block = self.handler.shms[write_idx] + shm_block.buf[:frame_len] = memoryview(frame_bytes) + + self.handler.shm_frame_lengths[write_idx] = frame_len + self.handler.ready_buffer_idx.value = write_idx + self.handler.shared_details["last_id"] = frame_num + self.handler.mp_last_id.value = frame_num + + if hasattr(self.handler, "loop") and self.handler.loop is not None: + self.handler.loop.call_soon_threadsafe( + self.handler.frame_ready_event.set + ) + else: + self.handler.frame_ready_event.set() + + except Exception as e: + print( + f"[STREAM-ERROR] Lock-free frame streaming dropped: {e}", flush=True + ) + continue + + def write_frame(self, frame, frame_num): + """Thread-safe lock-free atomic submission track.""" + if self.running: + # 3. 🔄 FIX: Directly append to overwrite the old entry without thread locks + self.buffer.append((frame, frame_num)) + + def release(self): + self.running = False + self.buffer.clear() + if self.thread.is_alive(): + self.thread.join(timeout=0.5) + + BASE_PIPELINE_CONFIG = PipelineConfig( SHARED_MODEL=os.getenv("SHARED_MODEL", False), ENABLE_QUERYING=os.getenv("ENABLE_QUERYING", ENABLE_QUERYING_DEFAULT), @@ -125,6 +753,8 @@ def log_to_logger(message, level="info"): # {"clip_name": {"video": bool, "meta": bool}} clip_completion_tracker = {} +PADDING_PX = 10 + # ----- FASTAPI APPLICATION STARTUP/SHUTDOWN ----- # The lifespan parameter handles startup and shutdown @@ -147,11 +777,11 @@ async def auto_cleanup_janitor(app): if streamer.config.ENABLE_QUERYING else 0 ) - io_backlog = ( - streamer.io_executor._work_queue.qsize() - if hasattr(streamer, "io_executor") - else 0 - ) + # io_backlog = ( + # streamer.io_executor._work_queue.qsize() + # if hasattr(streamer, "io_executor") + # else 0 + # ) # Check if the stream is marked inactive OR timed out # streamer.active should be False when the video source ends @@ -160,11 +790,11 @@ async def auto_cleanup_janitor(app): should_remove = False if not streamer.active and ( - ai_backlog == 0 and video_backlog == 0 and io_backlog == 0 + ai_backlog == 0 and video_backlog == 0 # and io_backlog == 0 ): should_remove = True # Video ended naturally elif is_stale and ( - ai_backlog == 0 and video_backlog == 0 and io_backlog == 0 + ai_backlog == 0 and video_backlog == 0 # io_backlog == 0 ): should_remove = True # Browser tab closed/Network lost elif now - streamer.last_heartbeat > 90: @@ -177,18 +807,6 @@ async def auto_cleanup_janitor(app): streamer.stop() app.state.active_streams.pop(name, None) - # --- Synchronization Data Purge --- - # if BASE_PIPELINE_CONFIG.ENABLE_QUERYING: - # # Remove trackers older than 5 minutes (300s) - # stale_keys = [ - # k - # for k, v in clip_completion_tracker.items() - # if (now - v.get("start", now)) > 300 - # ] - # for k in stale_keys: - # clip_completion_tracker.pop(k, None) - # all_metadata.pop(k, None) - @asynccontextmanager async def lifespan(app: FastAPI): @@ -215,7 +833,7 @@ async def lifespan(app: FastAPI): _ = app.state.model(dummy_input, verbose=False) del dummy_input - torch.cuda.empty_cache() + # torch.cuda.empty_cache() print("Shared model warmup and VRAM purge complete.") janitor_task = asyncio.create_task(auto_cleanup_janitor(app)) @@ -245,12 +863,6 @@ def nv12_to_rgb_torch( """ with torch.no_grad(): if is_h264_8k: - # 8K Path: Expects planar data [C, H, W] - # y: [1, H, W], uv: [1, H, W] (already resized or needs upsampling) - # y = nv12_tensor[0:1, :, :].half() - # # If your 8K source has separate U and V, adjust indices [1:2] and [2:3] - # u = nv12_tensor[1:2, :, :].half() - # v = nv12_tensor[2:3, :, :].half() # Fallback if interleaved # 8K Planar Path: Map the channels directly y = nv12_tensor[0:1, :, :].half() u = nv12_tensor[1:2, :, :].half() @@ -335,6 +947,10 @@ def send_metadata( try: queue_details = send_metadata_queue.get() if queue_details is None: + print( + "[METADATA-DEBUG D-pill] Poison pill received. Terminating send_metadata thread loops cleanly.", + flush=True, + ) break # # (clip_key, clip_filename, width, height, clip_metadata) = queue_details @@ -343,6 +959,9 @@ def send_metadata( clip_metadata = all_metadata.pop(clip_key, None) if clip_metadata: + main_app_logger.info( + f"sending 2 vdms: {clip_key} with {len(clip_metadata)} items." + ) success = metadata2vdms_with_retry( clip_key, clip_filename, @@ -389,6 +1008,7 @@ def send_metadata( except Exception as e: # pass print(f"[EXCEPTION] Exception occurred in send_metadata: {e}") + traceback.print_exc() # ----- STREAM HANDLERS ----- @@ -425,125 +1045,129 @@ def scale_clusters_to_8k(merged_640, frame_w=7680, frame_h=4320): return final_rois -def rendering_worker( - queue, - shared_details, - ready_idx, - reader_active_idx, - frame_lengths, - signal_queue, - display_size, - quality, -): - disp_w, disp_h = display_size - # Attach to both buffers - shm_names = shared_details["shm_names"] - worker_shms = [mp.shared_memory.SharedMemory(name=n) for n in shm_names] - num_shms = len(shm_names) - - # Get shm - # shm_name = shared_details.get("shm_name") - # try: - # shm = mp.shared_memory.SharedMemory(name=shm_name) - # except Exception as e: - # print(f"[WORKER] SHM attach failed: {e}", flush=True) - # return - - try: - while True: - item = queue.get() - if item is None: # Sentinel value to stop the worker - break - - # frame is display size - # metadata in resized res - display_frame, frameNum, metadata_or_bbs, class_list = item - - # display_size = (self.resize_h, self.resize_w) - # display_frame = cv2.resize(frame, display_size, interpolation=cv2.INTER_NEAREST) - - scale_display_x = disp_w / 640 - scale_display_y = disp_h / 640 - - if isinstance(metadata_or_bbs, dict): - # Case: Object Detection - display_frame = get_metadata_overlay( - display_frame, - metadata_or_bbs, - class_list, - (scale_display_x, scale_display_y), - (disp_w, disp_h), - ) - - elif metadata_or_bbs is not None: - # Case: Motion Detections Only (SF Path) - display_frame = get_bb_overlay( - display_frame, - metadata_or_bbs, - (scale_display_x, scale_display_y), - (disp_w, disp_h), - ) - - # writer.write(display_frame) - if frameNum > shared_details["last_id"]: # self.last_delivered_frame_id: - frame_bytes = get_display_frame_in_bytes( - display_frame, - display_size=display_size, - quality=quality, - return_bytes=True, - ) - if frame_bytes: - # THE HARD GUARD: If the reader is currently touching RAM, skip this write. - # This prevents the '1-minute' scramble by ensuring zero memory overlap. - # if signal_queue.full(): - # continue - frame_len = len(frame_bytes) - - forbidden_idx = [ready_idx.value, reader_active_idx.value] - available_idx = [ - i for i in range(num_shms) if i not in forbidden_idx - ] - - if not available_idx: - continue - - # Write to the buffer that is NOT currently 'ready' - # write_idx = (shared_details["buffer_idx"] + 1) % 2 - # write_idx = 1 if ready_idx.value == 0 else 0 - # current_ready = ready_idx.value - # write_idx = (current_ready + 1) % 3 - write_idx = available_idx[0] - shm = worker_shms[write_idx] - - # Zero-copy write to RAM - shm.buf[:frame_len] = frame_bytes - - frame_lengths[write_idx] = frame_len - # shared_details["buffer_idx"] = write_idx - ready_idx.value = write_idx - shared_details["last_id"] = frameNum - # self.last_frame_id = frameNum - # self.last_heartbeat = time.time() - # Signal the FastAPI generator that a new frame is ready - # self.loop.call_soon_threadsafe(self.frame_ready_event.set) - # self.mp_frame_ready_event.set() - # try: - # signal_queue.put_nowait(True) - # except Exception: - # pass - signal_queue.put(True) - - # END While - - except Exception as e: - print(f"[EXCEPTION] Error while rendering display: {e}") - finally: - for s in worker_shms: - s.close() +# def rendering_worker( +# queue, +# shared_details, +# ready_idx, +# reader_active_idx, +# frame_lengths, +# signal_queue, +# display_size, +# quality, +# ): +# disp_w, disp_h = display_size +# # Attach to both buffers +# shm_names = shared_details["shm_names"] +# worker_shms = [mp.shared_memory.SharedMemory(name=n) for n in shm_names] +# num_shms = len(shm_names) + +# try: +# while True: +# print("[FASTAPI-TRACE D] rendering_worker child process waiting on queue.get()...", flush=True) +# item = queue.get() +# if item is None: # Sentinel value to stop the worker +# break + +# # frame is display size +# # metadata in resized res +# display_frame, frameNum, metadata_or_bbs, class_list = item +# print(f"[FASTAPI-TRACE E] rendering_worker child dequeued Frame #{frameNum}.", flush=True) +# scale_display_x = disp_w / 640 +# scale_display_y = disp_h / 640 + +# if isinstance(metadata_or_bbs, dict): +# # Case: Object Detection +# display_frame = get_metadata_overlay( +# display_frame, +# metadata_or_bbs, +# class_list, +# (scale_display_x, scale_display_y), +# (disp_w, disp_h), +# ) + +# elif metadata_or_bbs is not None: +# # Case: Motion Detections Only (SF Path) +# display_frame = get_bb_overlay( +# display_frame, +# metadata_or_bbs, +# (scale_display_x, scale_display_y), +# (disp_w, disp_h), +# ) + +# # writer.write(display_frame) +# if frameNum > shared_details["last_id"]: # self.last_delivered_frame_id: +# frame_bytes = get_display_frame_in_bytes( +# display_frame, +# display_size=display_size, +# quality=quality, +# return_bytes=True, +# ) +# if frame_bytes: +# # THE HARD GUARD: If the reader is currently touching RAM, skip this write. +# # This prevents the '1-minute' scramble by ensuring zero memory overlap. +# # if signal_queue.full(): +# # continue +# frame_len = len(frame_bytes) + +# forbidden_idx = [ready_idx.value, reader_active_idx.value] +# available_idx = [ +# i for i in range(num_shms) if i not in forbidden_idx +# ] + +# # if not available_idx: +# # continue + +# # # Write to the buffer that is NOT currently 'ready' +# # # write_idx = (shared_details["buffer_idx"] + 1) % 2 +# # # write_idx = 1 if ready_idx.value == 0 else 0 +# # # current_ready = ready_idx.value +# # # write_idx = (current_ready + 1) % 3 +# # write_idx = available_idx[0] + +# if not available_idx: +# # Instead of skipping completely and freezing, force a fallback +# # to the next standard ring channel +# write_idx = (ready_idx.value + 1) % num_shms +# else: +# write_idx = available_idx[0] + +# shm = worker_shms[write_idx] + +# # Zero-copy write to RAM +# shm.buf[:frame_len] = frame_bytes + +# frame_lengths[write_idx] = frame_len +# # shared_details["buffer_idx"] = write_idx +# ready_idx.value = write_idx +# # shared_details["last_id"] = frameNum +# # self.last_frame_id = frameNum +# # self.last_heartbeat = time.time() +# # Signal the FastAPI generator that a new frame is ready +# # self.loop.call_soon_threadsafe(self.frame_ready_event.set) +# # self.mp_frame_ready_event.set() +# # try: +# # signal_queue.put_nowait(True) +# # except Exception: +# # pass +# # signal_queue.put(True) +# try: +# print(f"[FASTAPI-TRACE F] Frame #{frameNum} written to SHM slot {write_idx} ({frame_len} bytes). Signaling parent...", flush=True) +# signal_queue.put_nowait((True, frameNum)) +# except queue.Full: +# print(f"[FASTAPI-TRACE WARN] signal_queue full on Frame #{frameNum}", flush=True) +# # pass # If the web app is slightly behind, do not freeze the child process! + +# # END While + +# except Exception as e: +# print(f"[EXCEPTION] Error while rendering display: {e}") +# finally: +# for s in worker_shms: +# s.close() def get_metadata_overlay( - display_frame, metadata_or_bbs, class_list, scale_display, disp_size + display_frame, metadata_or_bbs, class_list, scale_display, disp_size, is_bgr=True ): scale_display_x, scale_display_y = scale_display disp_w, disp_h = disp_size @@ -558,10 +1182,12 @@ def get_metadata_overlay( class_id = class_list.index(class_name) if class_name in class_list else 0 confidence = bbox.get("object_det", {}).get("confidence", 0.0) - bb_color = get_detection_color(class_id, is_bgr=True) + bb_color = get_detection_color(class_id, is_bgr=is_bgr) label = f"{class_name} {confidence:.2f}" - cv2.rectangle(display_frame, (x, y), (x + w, y + h), bb_color, 2) + display_frame = cv2.rectangle( + display_frame, (x, y), (x + w, y + h), bb_color, 2 + ) draw_label(display_frame, label, (x, y), color=bb_color, padding=5) return display_frame @@ -594,6 +1220,10 @@ def test_rendering_worker(queue, display_size, out_path, target_fps): ffmpeg_cmd = [ "ffmpeg", "-y", + "-probesize", + "32", + "-analyzeduration", + "0", "-f", "rawvideo", "-pix_fmt", @@ -629,7 +1259,7 @@ def test_rendering_worker(queue, display_size, out_path, target_fps): break display_frame, frameNum, metadata_or_bbs, class_list = item - display_frame = np.ascontiguousarray(display_frame) + # display_frame = np.ascontiguousarray(display_frame) scale_display_x = disp_w / 640 scale_display_y = disp_h / 640 @@ -674,6 +1304,7 @@ def __init__( self.is_rtsp = str(self.source).startswith("rtsp:/") self.active = True self.active_streams = active_streams + self.config = config configstr = "\n".join( [f"\t{k}: {v}" for k, v in config.__dict__.items() if not k.startswith("_")] @@ -682,8 +1313,9 @@ def __init__( self.loop = asyncio.get_event_loop() self.frame_ready_event = asyncio.Event() - self._is_stopped = False # 🛡️ Shutdown guard - self._stop_lock = threading.Lock() # 🔒 Local lock for this instance + # self.frame_ready_event = threading.Event() + self._is_stopped = False + self._stop_lock = threading.Lock() # Local lock for this instance self.mp_frame_ready_event = mp.Event() # From global @@ -745,6 +1377,9 @@ def setup_model(self, provided_model, force_export=False): model_w=self.resize_w, ) + if run_platform_name == "openvino": + self.model.predictor.args.embed = False + if not self.config.sf_enabled: self.model_warmup(self.frame_height, self.frame_width) else: @@ -756,18 +1391,6 @@ def setup_model(self, provided_model, force_export=False): # self.label_source.append(v) def initialize_variables(self): - # self.input_fps = self.reader.input_fps - # self.target_fps = self.reader.target_fps - # self.step_size = self.input_fps / self.target_fps - # self.frame_skip = self.reader.frame_skip - # self.max_frames_per_clip = self.reader.max_frames_per_clip - # self.frame_interval = self.reader.frame_interval - # self.frame_width = self.reader.frame_width - # self.frame_height = self.reader.frame_height - # self.numFrames = self.reader.numFrames - # self.duration_s = self.numFrames / self.input_fps - # self.expected_num_frames = int(self.duration_s * self.target_fps) - # self.get_frameWH() # 1. HARD GUARD: Capture reader values and ensure the connection is active self.input_fps = self.reader.input_fps self.target_fps = self.reader.target_fps @@ -808,9 +1431,13 @@ def initialize_variables(self): self.config.ROI_DISTANCE_THRESH_RATIO * self.frame_width, self.config.ROI_DISTANCE_THRESH_RATIO * self.frame_height, ) - self.dist_thresh_640 = max( - self.config.ROI_DISTANCE_THRESH_RATIO * self.resize_w, - self.config.ROI_DISTANCE_THRESH_RATIO * self.resize_h, + multiplier = 2.0 if self.device_input == "cpu" else 1.0 + self.dist_thresh_640 = ( + max( + self.config.ROI_DISTANCE_THRESH_RATIO * self.resize_w, + self.config.ROI_DISTANCE_THRESH_RATIO * self.resize_h, + ) + * multiplier ) # 0.05 * self.resize_w self.scales_tensor = torch.tensor( [self.scale_x, self.scale_y, self.scale_x, self.scale_y], @@ -838,10 +1465,10 @@ def initialize_variables(self): # self.video_writer = None self.ffmpeg_proc = None # Replaces cv2.VideoWriter completely # self.fourcc = cv2.VideoWriter_fourcc(*"mp4v") # avc1, mp4v - self.clip_id = 0 + # self.clip_id = 0 # self.clip_filename = "" self.clip_filename_pattern = f"{self.config.SHARED_OUTPUT}/{self.name}_%03d.mp4" - self.clip_key = f"{self.name}_000.mp4" + # self.clip_key = f"{self.name}_000.mp4" # self.tmp_file = "" self.frame_in_clip_count = 0 @@ -863,6 +1490,21 @@ def initialize_variables(self): self.pinned_matrices = [] self.pinned_tensors = [] + self.ingest_ring_depth = 4 + self.ingest_ring_idx = 0 + self.ingest_ring = [] + + for _ in range(self.ingest_ring_depth): + # Match the exact dimensions of the 8K reader output + mat = np.zeros((self.frame_height, self.frame_width, 3), dtype=np.uint8) + try: + cv2.cuda.registerPageLocked( + mat + ) # Page-lock for ultra-fast DMA transfers + except Exception: + pass + self.ingest_ring.append(mat) + # Pre-allocate a 4-slot ring buffer for raw 8K BGR frames self.ai_ring_depth = 4 self.ai_ring_idx = 0 @@ -873,16 +1515,18 @@ def initialize_variables(self): self.ai_shms = [] self.ai_shm_names = [] self.ai_pinned_tensors = [] # Explicit property initialization 🚀 - + init_timestamp = int(time.time_ns()) for i in range(self.ai_ring_depth): - name = f"shm_ai_640_{self.name}_{i}_{os.getpid()}" + name = f"shm_ai_640_{self.name}_{i}_{os.getpid()}_{init_timestamp}" try: # Attempt to attach to a lingering zombie segment old_shm = shared_memory.SharedMemory(name=name) old_shm.close() old_shm.unlink() # Permanently destroys the old OS block handle - main_app_logger.warning(f"Cleaned up residual zombie shared memory block: {name}") + main_app_logger.warning( + f"Cleaned up residual zombie shared memory block: {name}" + ) except FileNotFoundError: pass # Block doesn't exist, safe to proceed normal initialization @@ -973,24 +1617,30 @@ def setup_reader(self, target_fps, clip_duration): # TODO: Further investigate GPU path, bkgd subtraction sensitive to artifacts self.gpu_id = 0 + is_rtsp_stream = str(self.source).startswith( + ("rtsp://", "rtmp://", "http://", "https://") + ) + determined_queue_size = ( + 4 if is_rtsp_stream else 2 + ) # (0 if self.config.TEST_MODE else 2) if self.device_input == "cuda": # and not self.is_rtsp: - from include.readers import GPUHybridReader + from include.readers import GPUReader - self.reader = GPUHybridReader( + self.reader = GPUReader( source=self.source, target_fps=target_fps, clip_duration=clip_duration, - gpu_id=self.gpu_id, - queue_size=0 if self.config.TEST_MODE else 2, + gpu_id=0, # self.gpu_id, + queue_size=determined_queue_size, ) else: - from include.readers import CPUHybridReader + from include.readers import CPUReader - self.reader = CPUHybridReader( + self.reader = CPUReader( source=self.source, target_fps=target_fps, clip_duration=clip_duration, - queue_size=0 if self.config.TEST_MODE else 2, + queue_size=determined_queue_size, ) def prepare_pipeline(self): @@ -1001,6 +1651,41 @@ def prepare_pipeline(self): else: self.prepare_cpu_pipeline() + # AUTOMATED BACKSUB WARMUP GATE + # Priming the Gaussian mixture model before the pipeline loop kicks off + if getattr(self.config, "SMART_FILTERING_ENABLED", False): + video_source = getattr(self, "source", None) + if video_source and os.path.exists(video_source): + print(f"[INIT] Warming up background subtractor using: {video_source}") + warmup_cap = cv2.VideoCapture(video_source) + + # 20 to 30 frames are optimal to prime the baseline history grid + for _ in range(30): + ret, raw_frame = warmup_cap.read() + if not ret: + break + + # Downscale the warmup frames to match your active pipeline resolution rules + resized_warmup = cv2.resize( + raw_frame, + (self.resize_w, self.resize_h), + interpolation=cv2.INTER_NEAREST, + ) + + # Force a highly aggressive learning rate (e.g., 0.1) during initialization + # to lock down the background model quickly, avoiding delayed frame processing. + if self.device_input == "cuda": + # If you use a GPU-bound background subtractor + self.bgs_cuda.apply( + resized_warmup, learningRate=self.lr, stream=self.bgs_stream + ) + else: + # Standard CPU track fallback + self.bgs.apply(resized_warmup, learningRate=self.lr) + + warmup_cap.release() + print("[INIT] Background subtractor warm up complete. GMM initialized.") + def setup_threads(self): # Shared 10MB memory for display self.setup_shared_memory() @@ -1014,76 +1699,80 @@ def setup_threads(self): flush=True, ) + self.signal_queue = mp.Queue(maxsize=32) # 1) + self.render_queue = mp.Queue(maxsize=5) + # Producer: Handles acquisition and AI metadata logs + # self.process_thread = threading.Thread( + # target=self.run_realtime_inference, + # args=(self.config.sf_enabled,), + # daemon=True, + # ) self.process_thread = threading.Thread( - target=self.run_realtime_inference, - args=(self.config.sf_enabled,), + target=lambda: self.run_realtime_inference( + sf_enabled=self.config.sf_enabled + ), daemon=True, ) - self.signal_queue = mp.Queue(maxsize=1) - self.render_queue = mp.Queue(maxsize=5) - if self.config.TEST_MODE: test_dir = os.getenv( "TEST_SUITE_RENDER_DIR", str(Path(self.config.SHARED_OUTPUT)) ) os.makedirs(test_dir, exist_ok=True) + out_path = os.path.join(test_dir, f"{self.name}_detections_output.mp4") + self.output_path = out_path log_to_logger( f"[TEST MODE] Detection results saved to: {out_path}", level="info" ) - self.render_proc = threading.Thread( - target=test_rendering_worker, - args=( - self.render_queue, - (self.disp_w, self.disp_h), - out_path, - self.target_fps, - ), - daemon=True, + + self.async_writer = AsyncVideoWriter( + self.output_path, + cv2.VideoWriter_fourcc(*"avc1"), # avc1, mp4v + float(self.target_fps), + (self.disp_w, self.disp_h), ) + # self.render_proc = threading.Thread( + # target=test_rendering_worker, + # args=( + # self.render_queue, + # (self.disp_w, self.disp_h), + # out_path, + # self.target_fps, + # ), + # daemon=True, + # ) + # Dummy target alignment to prevent execution signature exceptions + self.render_proc = threading.Thread(target=lambda: None, daemon=True) self.display_proc = threading.Thread(target=lambda: None, daemon=True) else: - self.render_proc = mp.Process( - target=rendering_worker, - args=( - self.render_queue, - self.shared_details, - self.ready_buffer_idx, - self.reader_active_idx, - self.shm_frame_lengths, - self.signal_queue, - (self.disp_w, self.disp_h), - self.config.DISPLAY_FRAME_QUALITY, - ), + self.async_writer = AsyncDisplayVideoWriter( + float(self.target_fps), + (self.disp_w, self.disp_h), + quality=int(self.config.DISPLAY_FRAME_QUALITY), ) + self.async_writer.set_handler_context(self) + # self.async_writer.start_worker() + try: + self.loop = asyncio.get_running_loop() + except RuntimeError: + try: + self.loop = asyncio.get_event_loop() + except RuntimeError: + self.loop = None # Headless fallback context - def display_signal_sync(): - while self.active: - # Wait for signal - # if self.mp_frame_ready_event.wait(timeout=1.0): - # self.mp_frame_ready_event.clear() - try: - _ = self.signal_queue.get(timeout=1.0) - # print(f"[DEBUG]: Signal received in FastAPI process for {self.name}", flush=True) - # Wake FastAPI async loop in main thread - self.loop.call_soon_threadsafe(self.frame_ready_event.set) - except queue.Empty: - continue - - self.display_proc = threading.Thread( - target=display_signal_sync, daemon=True - ) + self.render_proc = threading.Thread(target=lambda: None, daemon=True) + self.display_proc = threading.Thread(target=lambda: None, daemon=True) if self.config.ENABLE_QUERYING: # NEW: Dedicated I/O pool for Disk/GPU transfers (Higher worker count for 8K) - self.io_executor = ThreadPoolExecutor(max_workers=8) + # self.io_executor = ThreadPoolExecutor(max_workers=8) # Dedicated FFmpeg pool so re-encoding doesn't slow down live AI - self.ffmpeg_executor = ThreadPoolExecutor(max_workers=2) + # self.ffmpeg_executor = ThreadPoolExecutor(max_workers=2) if not self.config.TEST_MODE: # Sends metadata to VDMS @@ -1121,10 +1810,14 @@ def setup_shared_memory(self): self.ready_buffer_idx = mp.Value("i", 0) self.reader_active_idx = mp.Value("i", -1) self.shm_frame_lengths = mp.Array("i", [0 for _ in range(num_shms)]) + self.mp_last_id = mp.Value("i", -1) + self.mp_frame_ready_flag = mp.Value("b", False) + + display_timestamp = int(time.time_ns()) for idx in range(num_shms): # self.shm = mp.shared_memory.SharedMemory(create=True, size=10*1024*1024) - shm_name = f"shm_{self.name}_{idx}_{os.getpid()}" + shm_name = f"shm_{self.name}_{idx}_{os.getpid()}_{display_timestamp}" # print(f"[DEBUG]: Setting up SHM {shm_name}", flush=True) try: shm = mp.shared_memory.SharedMemory( @@ -1139,6 +1832,9 @@ def setup_shared_memory(self): self.shms.append(shm) shm_names.append(shm_name) + self.signal_queue = self.manager.Queue(maxsize=32) + self.render_queue = self.manager.Queue(maxsize=5) + self.shared_details = self.manager.dict() self.shared_details["shm_names"] = shm_names # self.shared_details["buffer_idx"] = 0 @@ -1157,11 +1853,6 @@ def start(self): # Start the hardware-decoupled reader first self.reader.start() - if not self.config.DISABLE_DETECTION: - self.render_proc.start() - - self.display_proc.start() - if self.config.ENABLE_QUERYING: self._initialize_writer() @@ -1172,6 +1863,26 @@ def start(self): if hasattr(self, "process_thread") and not self.process_thread.is_alive(): self.process_thread.start() + # If running on the CPU track, block the main test thread briefly until the CPU + # has successfully populated the first few frames into the render queue. + # This completely prevents the FFmpeg rendering worker from starving and skipping + # the initial 3-4 seconds of video. + # if getattr(self, "device_input", "cpu") == "cpu": + # print("[INIT] Waiting for CPU to prime the render queue...") + # timeout_counter = 0 + # # Wait until at least 5 frames are buffered in the queue or 10 seconds pass + # while self.render_queue.qsize() < 5 and timeout_counter < 100: + # time.sleep(0.1) + # timeout_counter += 1 + # print( + # f"[INIT] Render queue primed with {self.render_queue.qsize()} frames. Launching worker." + # ) + + if not self.config.DISABLE_DETECTION: + self.render_proc.start() + + self.display_proc.start() + if ( self.config.ENABLE_QUERYING and not self.config.TEST_MODE @@ -1184,264 +1895,537 @@ def start(self): return self - def stop(self): - """ - Comprehensive resource release. Safely drains the frame pipelines, - forces a graceful FFmpeg flush to prevent 'moov atom' index corruption, - and cleanly unlinks shared memory layers. - """ - with self._stop_lock: - if self._is_stopped: - return # Already stopped by another thread + # def stopv1(self): + # """ + # Comprehensive resource release. Safely drains the frame pipelines, + # forces a graceful FFmpeg flush to prevent 'moov atom' index corruption, + # and cleanly unlinks shared memory layers. + # """ + # with self._stop_lock: + # if self._is_stopped: + # return # Already stopped by another thread + + # # 1. Instantly pull out of active dashboards to stop inbound traffic + # if self.name in self.active_streams: + # self.active_streams.pop(self.name, None) + + # self.active = False + # print( + # f"[STOP] Initiating graceful flush shutdown for {self.name}", + # flush=True, + # ) - # 1. Instantly pull out of active dashboards to stop inbound traffic - if self.name in self.active_streams: - self.active_streams.pop(self.name, None) + # # 2. Trigger your event handler flags + # if hasattr(self, "stop_writer") and self.stop_writer is not None: + # try: + # self.stop_writer.set() + # except Exception: + # pass + + # # 3. PHASE 1: UNBLOCK CONSUMER CORES (Poison Pill Deliveries First) + # if hasattr(self, "write_queue") and self.write_queue is not None: + # try: + # # Clear out pending frame backlogs to speed up shutdown execution + # while not self.write_queue.empty(): + # try: + # self.write_queue.get_nowait() + # except Exception: + # break + # # Dispatch clean poison pill token to release the consumer thread + # self.write_queue.put(None) + # except Exception: + # pass + + # # if hasattr(self, "render_queue") and self.render_queue is not None: + # # try: + # # # while not self.render_queue.empty(): + # # # try: + # # # self.render_queue.get_nowait() + # # # except Exception: + # # # break + # # # self.render_queue.put_nowait(None) + # # while not self.render_queue.empty(): + # # time.sleep( + # # 0.01 + # # ) # Give the disk writer room to catch up cleanly + + # # # Deliver the poison pill token ONLY after the queue is empty + # # self.render_queue.put(None, timeout=2.0) + # # except Exception: + # # pass + + # if hasattr(self, "render_queue") and self.render_queue is not None: + # try: + # # --- THE DEFINITIVE UNBLOCKING FIX --- + # # Drop any lingering items aggressively instead of sleeping infinitely + # # on an empty queue check that never clears. + # while not self.render_queue.empty(): + # try: + # self.render_queue.get_nowait() + # except Exception: + # break + + # # Immediately push the poison pill sentinel to terminate the worker safely + # self.render_queue.put_nowait(None) + # except Exception: + # pass + + # # 4. PHASE 2: GRACEFUL FFmpeg DEFLATION GATE (Bypasses Moov Issues) + # if hasattr(self, "ffmpeg_proc") and self.ffmpeg_proc is not None: + # try: + # print( + # "[STOP] Closing video pipeline write handles to flush metadata...", + # flush=True, + # ) + # if self.ffmpeg_proc.stdin: + # self.ffmpeg_proc.stdin.close() # Safely alerts FFmpeg to finalize files - self.active = False - print( - f"[STOP] Initiating graceful flush shutdown for {self.name}", + # if self.ffmpeg_proc.stderr: + # self.ffmpeg_proc.stderr.close() # Instantly forces readline() to return None and exits thread safely + + # # Grant a soft 5-second window for storage layer disk synchronization + # self.ffmpeg_proc.wait(timeout=5.0) + # print( + # " [STOP] FFmpeg closed cleanly with valid indexing atoms.", + # flush=True, + # ) + # except subprocess.TimeoutExpired: + # print( + # " [STOP-WARN] Video flush timed out. Forcing hard termination.", + # flush=True, + # ) + # try: + # self.ffmpeg_proc.kill() + # except Exception: + # pass + # except Exception as io_err: + # print( + # f" [STOP-WARN] Error during streaming flush: {io_err}", + # flush=True, + # ) + # finally: + # self.ffmpeg_proc = None + # self.video_writer = None + + # # 5. PHASE 3: SHUTDOWN MULTIPROCESSING DAEMONS + # for proc_attr in ["render_proc", "ai_proc"]: + # proc = getattr(self, proc_attr, None) + # if proc is not None: + # try: + # if proc.is_alive(): + # proc.terminate() + # proc.join(timeout=0.5) + # proc.close() + # except Exception: + # pass + # setattr(self, proc_attr, None) + + # # 6. PHASE 4: FINAL SEGMENT EVALUATION CONVERGENCE + # try: + # final_clip_key = f"{self.name}_{self.clip_id:03d}.mp4" + # final_clip_path = f"{self.config.SHARED_OUTPUT}/{final_clip_key}" + + # # Check if the final truncated or partial segment actually exists before dispatching + # if ( + # os.path.exists(final_clip_path) + # and os.path.getsize(final_clip_path) > 0 + # ): + # print( + # f" [STOP-FLUSH] Registering finalized terminal clip: {final_clip_key}", + # flush=True, + # ) + # global clip_completion_tracker + # if final_clip_key not in clip_completion_tracker: + # clip_completion_tracker[final_clip_key] = { + # "video": False, + # "meta": False, + # "start_time": time.time(), + # } + + # clip_completion_tracker[final_clip_key]["video"] = True + # clip_completion_tracker[final_clip_key]["meta"] = True + # self._evaluate_barrier_and_dispatch( + # final_clip_key, final_clip_path, self.resize_w, self.resize_h + # ) + # except Exception as final_flush_err: + # print( + # f" [STOP-WARN] Final segment tracking layer bypass failed: {final_flush_err}", + # flush=True, + # ) + + # # 8. PHASE 6: UNMAP HARDWARE MEMORY OBJECTS + # if hasattr(self, "shared_details"): + # try: + # # Force-close the internal lock primitive hidden inside the Manager dict proxy + # if hasattr(self.shared_details, "_ctx") and hasattr( + # self.shared_details._ctx, "RLock" + # ): + # lock = self.shared_details._ctx.RLock() + # if hasattr(lock, "_semlock"): + # lock._semlock._close() + # self.shared_details.clear() + # except Exception: + # pass + # del self.shared_details + + # if ( + # hasattr(self, "mp_frame_ready_event") + # and self.mp_frame_ready_event is not None + # ): + # try: + # # mp.Event allocates an internal ctx.Cond / ctx.Lock boundary pair + # if hasattr(self.mp_frame_ready_event, "_cond"): + # cond = self.mp_frame_ready_event._cond + # if hasattr(cond, "_lock") and hasattr(cond._lock, "_semlock"): + # cond._lock._semlock._close() + # except Exception: + # pass + # self.mp_frame_ready_event = None + + # for q_attr in ["signal_queue", "render_queue"]: + # if hasattr(self, q_attr): + # q = getattr(self, q_attr) + # if q is not None: + # try: + # # 1. Flush and break down standard background worker threads safely + # q.close() + # q.join_thread() + + # # 2. CRITICAL: Force-close the hidden POSIX lock primitives to clear resource_tracker limits + # if hasattr(q, "_rlock") and q._rlock is not None: + # if hasattr(q._rlock, "_semlock"): + # q._rlock._semlock._close() + + # if hasattr(q, "_writer") and q._writer is not None: + # if hasattr(q._writer, "_semlock"): + # q._writer._semlock._close() + # except Exception: + # pass + # setattr(self, q_attr, None) + + # for primitive_attr in [ + # "ready_buffer_idx", + # "reader_active_idx", + # "shm_frame_lengths", + # ]: + # if hasattr(self, primitive_attr): + # obj = getattr(self, primitive_attr) + # if obj is not None and hasattr(obj, "get_lock"): + # try: + # # Grab the hidden lower-level POSIX context lock map + # lock = obj.get_lock() + # # If the lock handle is bound to an active system descriptor, release it + # if hasattr(lock, "_semlock"): + # lock._semlock._close() # Forces immediate unlinking at the OS level + # except Exception: + # pass + # setattr(self, primitive_attr, None) + + # if hasattr(self, "manager") and self.manager is not None: + # try: + # self.manager.shutdown() + # except Exception: + # pass + # self.manager = None + + # if hasattr(self, "pinned_matrices") and self.pinned_matrices: + # for active_mat in self.pinned_matrices: + # try: + # cv2.cuda.unregisterPageLocked(active_mat) + # except Exception: + # pass + # self.pinned_matrices.clear() + # self.pinned_tensors.clear() + + # # FIXED: Explicitly clear the high-speed AI tensor staging array allocations + # if hasattr(self, "ai_pinned_tensors") and self.ai_pinned_tensors: + # self.ai_pinned_tensors.clear() + + # if hasattr(self, "ai_shms") and self.ai_shms: + # for shm in self.ai_shms: + # try: + # shm.close() + # shm.unlink() + # except Exception: + # pass + # self.ai_shms.clear() + # if hasattr(self, "ai_shm_names") and self.ai_shm_names: + # self.ai_shm_names.clear() + + # if hasattr(self, "shms") and self.shms: + # for shm in self.shms: + # shm.close() + # try: + # shm.unlink() + # except FileNotFoundError: + # pass + # self.shms.clear() + # if ( + # hasattr(self, "shared_details") + # and "shm_names" in self.shared_details + # ): + # try: + # self.shared_details.pop("shm_names", None) + # except Exception: + # pass + + # if hasattr(self, "cap") and self.cap is not None: + # self.cap.release() + # self.cap = None + + # for pool_name in [ + # "executor", + # # "io_executor", + # "clip_executor", + # # "ffmpeg_executor", + # ]: + # if hasattr(self, pool_name) and getattr(self, pool_name) is not None: + # try: + # getattr(self, pool_name).shutdown(wait=True) + # except Exception: + # pass + # setattr(self, pool_name, None) + + # # self.reader = None + # self._is_stopped = True + # print(f" [STOP] {self.name} pipeline resources fully released.", flush=True) + + def stop(self): + """Overrides handlers.py to flush thread objects safely without deadlocking.""" + with self._stop_lock: + if self._is_stopped: + return + + print( + f"\n[PIPELINE-TEARDOWN] Initiating graceful thread drainage for {self.name}", flush=True, ) + self.active = False + time.sleep(0.05) - # 2. Trigger your event handler flags - if hasattr(self, "stop_writer") and self.stop_writer is not None: + # 1. Rapidly clear the async video writer thread queue first + if hasattr(self, "async_writer") and self.async_writer is not None: try: - self.stop_writer.set() + self.async_writer.release() except Exception: - pass + traceback.print_exc() - # 3. PHASE 1: UNBLOCK CONSUMER CORES (Poison Pill Deliveries First) - if hasattr(self, "write_queue") and self.write_queue is not None: - try: - # Clear out pending frame backlogs to speed up shutdown execution - while not self.write_queue.empty(): - try: - self.write_queue.get_nowait() - except Exception: - break - # Dispatch clean poison pill token to release the consumer thread - self.write_queue.put(None) - except Exception: - pass + # Instantly pull out of active dashboards to stop inbound traffic + if self.name in self.active_streams: + self.active_streams.pop(self.name, None) - if hasattr(self, "render_queue") and self.render_queue is not None: - try: - while not self.render_queue.empty(): - try: - self.render_queue.get_nowait() - except Exception: - break - self.render_queue.put_nowait(None) - except Exception: - pass + if not self.config.TEST_MODE: + if hasattr(self, "send_metadata_queue"): + local_send_metadata_queue = self.send_metadata_queue + else: + global send_metadata_queue + local_send_metadata_queue = send_metadata_queue + if local_send_metadata_queue is not None: + try: + # 1. Wait for any in-flight ThreadPoolExecutor inference workers + # to finish submitting final frame maps to all_metadata + if hasattr(self, "executor") and self.executor is not None: + while self.get_executor_backlog() > 0: + time.sleep(0.01) - # 4. PHASE 2: GRACEFUL FFmpeg DEFLATION GATE (Bypasses Moov Issues) - if hasattr(self, "ffmpeg_proc") and self.ffmpeg_proc is not None: + backlog_count = local_send_metadata_queue.qsize() + print( + f"[TEARDOWN] send_metadata_queue has {backlog_count} pending uploads. Delivering poison pill sentinel...", + flush=True, + ) + + # 2. Push the explicit sentinel None token to tell the consumer loop to close + local_send_metadata_queue.put(None) + + # 3. CRITICAL BRIDGING BLOCK: If the thread is active and alive, + # block the main process context to let it completely empty the queue + if ( + hasattr(self, "metadata_thread") + and self.metadata_thread is not None + ): + if self.metadata_thread.is_alive(): + # Force the main thread to join until the consumer hits the sentinel and exits + self.metadata_thread.join(timeout=2.0) + + if self.metadata_thread.is_alive(): + print( + "[TEARDOWN-WARN] Metadata database thread hung on socket lock. Bypassing safely to prevent deadlock.", + flush=True, + ) + else: + print( + "[TEARDOWN] Metadata database thread exited cleanly.", + flush=True, + ) + + except Exception as teardown_err: + print( + f"[TEARDOWN WARN] Metadata drainage exception: {teardown_err}", + flush=True, + ) + + # ===================================================================== + # DECUPLED MULTI-PROCESS TEARDOWN LIFECYCLE SEQUENCE + # ===================================================================== + # 1. FIRST: Drain and synchronize your thread pool tasks so EVERY frame drops into the IPC queue + if hasattr(self, "display_pool") and self.display_pool is not None: try: + if hasattr(self.display_pool, "_work_queue"): + backlog = self.display_pool._work_queue.qsize() + if backlog > 0: + print( + f"\n\033[94m[STAGE 1/4] Synchronizing display pool threads. Draining {backlog} background tasks...\033[0m", + flush=True, + ) + backlog_s = time.perf_counter() + while ( + self.display_pool._work_queue.qsize() > 0 + or len(self.reorder_staging_buffer) > 0 + ): + # Yield a brief slice to let worker threads complete downscaling + time.sleep(0.01) + backlog_e = time.perf_counter() - backlog_s + print(f"\t\033[94mTook {backlog_e} secs\033[0m", flush=True) print( - "[STOP] Closing video pipeline write handles to flush metadata...", + "\033[92m[SUCCESS] All background image transformations completed cleanly.\033[0m", flush=True, ) - if self.ffmpeg_proc.stdin: - self.ffmpeg_proc.stdin.close() # Safely alerts FFmpeg to finalize files - - if self.ffmpeg_proc.stderr: - self.ffmpeg_proc.stderr.close() # Instantly forces readline() to return None and exits thread safely + self.display_pool.shutdown(wait=True) + except Exception as e: + print( + f"[TEARDOWN ERROR] Thread pool synchronization failed: {e}", + flush=True, + ) + setattr(self, "display_pool", None) - # Grant a soft 5-second window for storage layer disk synchronization - self.ffmpeg_proc.wait(timeout=5.0) + # 1. FIRST: Instantly dispatch the shutdown token so the worker process knows to flush entries + if hasattr(self, "render_queue") and self.render_queue is not None: + try: print( - " [STOP] FFmpeg closed cleanly with valid indexing atoms.", + f"\n\033[94m[STAGE 1/3] Dispatching shutdown sentinel (None) to rendering process worker (Backlog: {self.render_queue.qsize()} frames)...\033[0m", flush=True, ) - except subprocess.TimeoutExpired: + # Delivering the poison pill immediately tells FFmpeg to drain remaining blocks sequentially + self.render_queue.put(None, timeout=2.0) + except Exception as queue_err: print( - " [STOP-WARN] Video flush timed out. Forcing hard termination.", + f"\033[91m[TEARDOWN ERROR] Failed staging shutdown token: {queue_err}\033[0m", flush=True, ) - try: - self.ffmpeg_proc.kill() - except Exception: - pass - except Exception as io_err: + + # 2. SECOND: Allow the background multiprocessing queue to empty outstanding items naturally + if hasattr(self, "render_queue") and self.render_queue is not None: + try: print( - f" [STOP-WARN] Error during streaming flush: {io_err}", + "\n\033[94m[STAGE 2/3] Finalizing file output. Draining remaining frames from IPC memory lane...\033[0m", flush=True, ) - finally: - self.ffmpeg_proc = None - self.video_writer = None + t_drain = time.perf_counter() + # Wait up to 15 seconds for the worker process to pull every remaining matrix out of the pipe + while ( + not self.render_queue.empty() + and (time.perf_counter() - t_drain) < 15.0 + ): + time.sleep( + 0.01 + ) # Micro-yield grants immediate execution priority to the background process core + except Exception: + pass - # 5. PHASE 3: SHUTDOWN MULTIPROCESSING DAEMONS - for proc_attr in ["render_proc", "ai_proc"]: - proc = getattr(self, proc_attr, None) - if proc is not None: - try: - if proc.is_alive(): - proc.terminate() - proc.join(timeout=0.5) - proc.close() - except Exception: - pass - setattr(self, proc_attr, None) + # 3. THIRD: Block the main thread safely and allow the detached process to finish disk I/O operations + if hasattr(self, "render_proc") and self.render_proc is not None: + try: + join_duration = 0.0 + if self.render_proc.is_alive(): + print( + "\033[94m[STAGE 2/2] Main thread blocking. Synchronizing hard drive file headers...\033[0m", + flush=True, + ) + t_join_start = time.perf_counter() + self.render_proc.join( + timeout=15.0 + ) # Safe timeout lets video containers finalize cleanly + join_duration = time.perf_counter() - t_join_start + else: + print( + "\033[94m[STAGE 2/2] Main thread clear...\033[0m", + flush=True, + ) - # 6. PHASE 4: FINAL SEGMENT EVALUATION CONVERGENCE - try: - final_clip_key = f"{self.name}_{self.clip_id:03d}.mp4" - final_clip_path = f"{self.config.SHARED_OUTPUT}/{final_clip_key}" + if self.render_proc.is_alive(): + print( + "\n\033[91m[CRITICAL STALL] Render worker process hung on disk write! Forcing termination...\033[0m", + flush=True, + ) + self.render_proc.terminate() + self.render_proc.join() + else: + print( + f"\033[92m[FINAL] Video compilation finished cleanly! Hard drive commit took {join_duration:.2f} seconds.\033[0m", + flush=True, + ) - # Check if the final truncated or partial segment actually exists before dispatching - if ( - os.path.exists(final_clip_path) - and os.path.getsize(final_clip_path) > 0 - ): + # self.render_proc.close() + except Exception as proc_err: print( - f" [STOP-FLUSH] Registering finalized terminal clip: {final_clip_key}", + f"\033[91m[TEARDOWN ERROR] Failed closing background process container: {proc_err}\033[0m", flush=True, ) - global clip_completion_tracker - if final_clip_key not in clip_completion_tracker: - clip_completion_tracker[final_clip_key] = { - "video": False, - "meta": False, - "start_time": time.time(), - } - - clip_completion_tracker[final_clip_key]["video"] = True - clip_completion_tracker[final_clip_key]["meta"] = True - self._evaluate_barrier_and_dispatch( - final_clip_key, final_clip_path, self.resize_w, self.resize_h - ) - except Exception as final_flush_err: - print( - f" [STOP-WARN] Final segment tracking layer bypass failed: {final_flush_err}", - flush=True, - ) + setattr(self, "render_proc", None) - # 8. PHASE 6: UNMAP HARDWARE MEMORY OBJECTS - if hasattr(self, "shared_details"): + render_proc_handle = getattr(self, "render_proc", None) + if render_proc_handle is not None: try: - # Force-close the internal lock primitive hidden inside the Manager dict proxy - if hasattr(self.shared_details, "_ctx") and hasattr( - self.shared_details._ctx, "RLock" - ): - lock = self.shared_details._ctx.RLock() - if hasattr(lock, "_semlock"): - lock._semlock._close() - self.shared_details.clear() - except Exception: - pass - del self.shared_details + # 1. Check if it is a Process vs Thread + if hasattr(render_proc_handle, "terminate"): + # Production/Multiprocessing fallback path + if render_proc_handle.is_alive(): + render_proc_handle.terminate() + render_proc_handle.join() + render_proc_handle.close() + else: + # Thread-Safe Path: Standard background threading handles + # do not require manual termination or descriptor closure hooks. + if render_proc_handle.is_alive(): + render_proc_handle.join(timeout=0.2) - if ( - hasattr(self, "mp_frame_ready_event") - and self.mp_frame_ready_event is not None - ): + print( + "\033[92m[SUCCESS] Background rendering thread container released cleanly.\033[0m", + flush=True, + ) + except Exception as e: + print( + f"[TEARDOWN WARN] Safely ignoring lingering thread reference handles: {e}", + flush=True, + ) + finally: + setattr(self, "render_proc", None) + + # 4. FOURTH: Clean up remaining pipeline executors and queues safely + if hasattr(self, "render_queue") and self.render_queue is not None: try: - # mp.Event allocates an internal ctx.Cond / ctx.Lock boundary pair - if hasattr(self.mp_frame_ready_event, "_cond"): - cond = self.mp_frame_ready_event._cond - if hasattr(cond, "_lock") and hasattr(cond._lock, "_semlock"): - cond._lock._semlock._close() + self.render_queue.close() + self.render_queue.cancel_join_thread() except Exception: pass - self.mp_frame_ready_event = None + setattr(self, "render_queue", None) - for q_attr in ["signal_queue", "render_queue"]: - if hasattr(self, q_attr): - q = getattr(self, q_attr) - if q is not None: - try: - # 1. Flush and break down standard background worker threads safely - q.close() - q.join_thread() - - # 2. CRITICAL: Force-close the hidden POSIX lock primitives to clear resource_tracker limits - if hasattr(q, "_rlock") and q._rlock is not None: - if hasattr(q._rlock, "_semlock"): - q._rlock._semlock._close() - - if hasattr(q, "_writer") and q._writer is not None: - if hasattr(q._writer, "_semlock"): - q._writer._semlock._close() - except Exception: - pass - setattr(self, q_attr, None) - - for primitive_attr in [ - "ready_buffer_idx", - "reader_active_idx", - "shm_frame_lengths", - ]: - if hasattr(self, primitive_attr): - obj = getattr(self, primitive_attr) - if obj is not None and hasattr(obj, "get_lock"): - try: - # Grab the hidden lower-level POSIX context lock map - lock = obj.get_lock() - # If the lock handle is bound to an active system descriptor, release it - if hasattr(lock, "_semlock"): - lock._semlock._close() # Forces immediate unlinking at the OS level - except Exception: - pass - setattr(self, primitive_attr, None) + # if hasattr(self, "async_writer") and self.async_writer is not None: + # self.async_writer.release() - if hasattr(self, "manager") and self.manager is not None: + if hasattr(self, "executor") and self.executor is not None: try: - self.manager.shutdown() + self.executor.shutdown(wait=True) except Exception: pass - self.manager = None + setattr(self, "executor", None) - if hasattr(self, "pinned_matrices") and self.pinned_matrices: - for active_mat in self.pinned_matrices: - try: - cv2.cuda.unregisterPageLocked(active_mat) - except Exception: - pass - self.pinned_matrices.clear() - self.pinned_tensors.clear() - - if hasattr(self, "ai_shms") and self.ai_shms: - for shm in self.ai_shms: - try: - shm.close() - shm.unlink() - except Exception: - pass - self.ai_shms.clear() - self.ai_shm_names.clear() - - if hasattr(self, "shms") and self.shms: - for shm in self.shms: - shm.close() - try: - shm.unlink() - except FileNotFoundError: - pass - self.shms.clear() - - if hasattr(self, "cap") and self.cap is not None: - self.cap.release() - self.cap = None - - for pool_name in [ - "executor", - "io_executor", - "clip_executor", - "ffmpeg_executor", - ]: - if hasattr(self, pool_name) and getattr(self, pool_name) is not None: - try: - getattr(self, pool_name).shutdown(wait=True) - except Exception: - pass - setattr(self, pool_name, None) - - self.reader = None + self.status = "DONE" self._is_stopped = True - print(f" [STOP] {self.name} pipeline resources fully released.", flush=True) + print( + "[TEST HARNESS] Teardown complete. Releasing session cleanly.\n", + flush=True, + ) def model_warmup(self, H=640, W=640): H, W = int(H), int(W) @@ -1459,22 +2443,45 @@ def model_warmup(self, H=640, W=640): device_input=self.device_input, stream=STREAM_ARG, ) + if i == 0 and hasattr(self.model, "predictor") and self.model.predictor: + self.cached_predictor = self.model.predictor # Force GPU to finish before returning if self.device_input == "cuda": torch.cuda.synchronize() + # Pin a lightweight tensor to prevent downstream empty_cache() calls + # from destroying the compiled model weight layouts in memory + self.__persistent_vram_lock = torch.zeros((1,), device=self.device_input) + print(f"Warmup complete for {self.name}", flush=True) def get_executor_backlog(self): """Returns the number of tasks currently waiting in the thread pool queue.""" # access the internal queue of the executor - return self.executor._work_queue.qsize() + # return self.executor._work_queue.qsize() + if getattr(self, "executor", None) is None: + return 0 + try: + # Handle standard ThreadPoolExecutor and custom queue wrappers cleanly + if hasattr(self.executor, "_work_queue"): + return self.executor._work_queue.qsize() + return 0 + except Exception: + return 0 def get_clip_executor_backlog(self): """Returns the number of tasks currently waiting in the thread pool queue.""" # access the internal queue of the clip_executor - return self.clip_executor._work_queue.qsize() + # return self.clip_executor._work_queue.qsize() + if getattr(self, "clip_executor", None) is None: + return 0 + try: + if hasattr(self.clip_executor, "_work_queue"): + return self.clip_executor._work_queue.qsize() + return 0 + except Exception: + return 0 def check_disk_usage(self, path, min_gb=0.5): """Returns True if there is at least min_gb available at path.""" @@ -1511,6 +2518,9 @@ def get_frameWH(self): self.scale_y = self.frame_height / self.config.MODEL_H def update_frame(self, stat_start_time): + if self.device_input == "cuda": + torch.cuda.synchronize() + self.stat_frame_count += 1 self.elapsed_display_time += time.perf_counter() - stat_start_time # if elapsed > 0.5: @@ -1581,136 +2591,59 @@ def run_model( # F.pad for 4D tensor (B, C, H, W) uses (left, right, top, bottom) frame = F.pad(frame, (0, pad_w, 0, pad_h), value=0) - results = self.model.predict( - frame, - imgsz=imgsz, - batch=batch, - device=device_input, - verbose=False, - stream=stream, - conf=self.config.DETECTION_THRESHOLD, - max_det=self.config.MAX_DETECTIONS, - rect=True, # False, # - ) - return results - - # def _encode_and_signal(self, data, frame_num): - # """Worker task for JPEG encoding. Optimized for zero-copy GPU transfers.""" - # if data is None: - # return - - # if isinstance(data, cv2.cuda.GpuMat): - # # GPU PATH: Use existing 8K GPU pointer. Resize on GPU (Instant) 🏎️ - # cv2.cuda.resize( - # data, - # (self.disp_w, self.disp_h), - # stream=self.encode_stream, - # dst=self.gpu_display_frame, - # ) - # # Only download the small (640x360) frame, not the 8K frame! - # display_frame = self.gpu_display_frame.download(self.encode_stream) - # else: - # # CPU PATH: Resize and force memory contiguity for faster encoding - # display_frame = cv2.resize( - # data, (self.disp_w, self.disp_h), interpolation=cv2.INTER_NEAREST - # ) - # display_frame = np.ascontiguousarray(display_frame) - - # # Drop quality to 35. This reduces the bytes FastAPI has to push to the browser. - # # success, buffer = cv2.imencode( - # # ".jpg", display_frame, [cv2.IMWRITE_JPEG_QUALITY, 35] - # # ) - - # # if success: - # # self.latest_processed_frame = buffer.tobytes() - # # self.last_delivered_frame_id = frame_num - # # self.last_heartbeat = time.time() - # # # Non-blocking signal to FastAPI - # # self.loop.call_soon_threadsafe(self.frame_ready_event.set) - - # # Run the high-overhead JPEG compression block within a non-blocking background thread worker - # def _async_compress_task(img_mat, f_idx): - # success, buffer = cv2.imencode(".jpg", img_mat, [cv2.IMWRITE_JPEG_QUALITY, 35]) - # if success and self.active: - # self.latest_processed_frame = buffer.tobytes() - # self.last_delivered_frame_id = f_idx - # self.last_heartbeat = time.time() - # # Safely wake up the FastAPI async loop on the main process thread - # self.loop.call_soon_threadsafe(self.frame_ready_event.set) - - # # Submit directly to your background I/O pool to unblock the inference stream - # self.io_executor.submit(_async_compress_task, display_frame, frame_num) - - def _encode_and_signal(self, data, frame_num): - """ - Asynchronously processes display outputs by offloading high-overhead - JPEG compression tasks directly onto the background I/O pool. - """ - if data is None: - return - - # Check the backlog of your I/O task queue to prevent memory leaks - if hasattr(self, "io_executor") and self.io_executor._work_queue.qsize() > 4: - return # Skip displaying this frame to preserve CPU performance + # with torch.inference_mode(): + # torch.set_num_threads(1) + # results = self.model.predict( + # frame, + # imgsz=imgsz, + # batch=batch, + # device=device_input, + # verbose=False, + # stream=stream, + # conf=self.config.DETECTION_THRESHOLD, + # max_det=self.config.MAX_DETECTIONS, + # rect=(batch == 1), # False, # + # ) + # return results + with torch.inference_mode(): + if device_input == "cpu": + # --- SAFE HIGH-SPEED FRAMEWORK INGESTION GATE --- + # If input is an NCHW PyTorch tensor or transposed array view, + # decode it back into a standard list of un-transposed [H, W, C] uint8 + # image frames before handing it over to the predictor engine. + if isinstance(frame, torch.Tensor): + # Convert NCHW tensor back to standard NHWC layout standard + np_frames = frame.detach().cpu().permute(0, 2, 3, 1).numpy() + # Rescale back to uint8 pixel range + np_frames = (np_frames * 255.0).astype(np.uint8) + # Unpack the batch array dimensions into a standard list of standalone images + # ingestion_source = [np.ascontiguousarray(img) for img in np_frames] + np_frames_aligned = np.copy(np_frames, order="C") + ingestion_source = list(np_frames_aligned) + else: + ingestion_source = frame + else: + ingestion_source = frame - def _async_render_and_compress(frame_data, f_num): - if isinstance(frame_data, cv2.cuda.GpuMat): - # GPU Path: Perform hardware-accelerated resizing inside VRAM - cv2.cuda.resize( - frame_data, - (self.disp_w, self.disp_h), - stream=self.encode_stream, - dst=self.gpu_display_frame, - ) - display_frame = self.gpu_display_frame.download(self.encode_stream) + if getattr(self, "cached_predictor", None) is not None: + results = self.cached_predictor(frame) else: - # CPU Path: Perform rapid array transformations - display_frame = cv2.resize( - frame_data, - (self.disp_w, self.disp_h), - interpolation=cv2.INTER_NEAREST, + # Execute prediction using the safe public API path. + # Passing raw standard [H, W, C] frame matrices handles all sigmoid bounding box + # decoders and confidence multipliers natively, correcting the top-left clumping bug. + results = self.model.predict( + ingestion_source, + imgsz=imgsz, + batch=batch, + device=device_input, + verbose=False, + stream=stream, + conf=self.config.DETECTION_THRESHOLD, + max_det=self.config.MAX_DETECTIONS, + rect=(batch == 1), + profile=False, # Disable interior torch.cuda.synchronize() gates completely! ) - - display_frame = np.ascontiguousarray(display_frame) - success, buffer = cv2.imencode( - ".jpg", display_frame, [cv2.IMWRITE_JPEG_QUALITY, 35] - ) - - if success and self.active: - self.latest_processed_frame = buffer.tobytes() - self.last_delivered_frame_id = f_num - self.last_heartbeat = time.time() - # Non-blocking signal to wake up the FastAPI event loop - self.loop.call_soon_threadsafe(self.frame_ready_event.set) - - # Offload the processing overhead entirely from the inference thread pool - self.io_executor.submit(_async_render_and_compress, data, frame_num) - - def update_ui_fallback(self, frame, frame_num): - # If backlog is very high, drop JPEG quality to 25 to clear the 'pause' faster - backlog = self.get_executor_backlog() - adaptive_quality = ( - 20 - if backlog > (self.dynamic_limit * 2) - else self.config.DISPLAY_FRAME_QUALITY - ) - - # FALLBACK: If AI is busy, worker thread encodes raw frame for the UI. - # This offloads the 40ms CPU cost from the main Producer loop. - display_frame = cv2.resize( - frame, (self.disp_w, self.disp_h), interpolation=cv2.INTER_NEAREST - ) - _, buffer = cv2.imencode( - ".jpg", display_frame, [cv2.IMWRITE_JPEG_QUALITY, adaptive_quality] - ) - - # print(f"DEFAULT DISP frameNum/last_frame_id {frame_num} self.last_delivered_frame_id: {self.last_delivered_frame_id}", flush=True) #\n\tframe_bytes: {frame_bytes}", flush=True) - self.latest_processed_frame = buffer.tobytes() - self.last_delivered_frame_id = frame_num - self.last_frame_id = frame_num - self.last_heartbeat = time.time() - # Signal the FastAPI generator that a new frame is ready - self.loop.call_soon_threadsafe(self.frame_ready_event.set) + return results def _check_shm_safety(self, threshold_percent=90): """ @@ -1747,111 +2680,6 @@ def _check_shm_safety(self, threshold_percent=90): except Exception as e: print(f"[EXCEPTION] Could not purge {clip}: {e}") - # def run_realtime_inference(self, sf_enabled): - # """Producer: Maintains the target FPS and updates clip IDs.""" - # # Calculate a dynamic limit: tolerate 0.5 seconds of lag. - # # If target_fps is 15, the limit is 7. If target_fps is 30, the limit is 15. - # self.dynamic_limit = max(2, int(0.5 * self.target_fps)) - # last_frame_time = time.perf_counter() - # while self.active: - # # --- FRAME RETRIEVAL --- - # try: - # device_frame, frame_num = self.reader.read() - # if device_frame is None: - # if self.reader.stopped: - # self.active = False - - # clip_filename = f"{self.config.SHARED_OUTPUT}/{self.name}_{self.clip_id:03d}.mp4" - # clip_key = Path(clip_filename).name - # global send_metadata_queue, all_metadata - # if clip_key in all_metadata: - # # Signal to process metadata for previous cli - # if ( - # "send_metadata_queue" in globals() - # or "send_metadata_queue" in locals() - # ): - # try: - # send_metadata_queue.put( - # (clip_filename, self.resize_w, self.resize_h) - # ) - # except Exception as queue_err: - # print( - # f"[CLIPPER-WARN] Metadata queue push skipped or unallocated: {queue_err}", - # flush=True, - # ) - # break - # continue - # except queue.Empty: - # if getattr(self.reader, "reconnect_failed", False): - # self.active = False - # break - # time.sleep(0.002) - # continue - - # # Keep 8K frame on GPU (Skip CPU conversion for non-target frames) - # # if self.device_input == "cuda" and not self.reader.is_h264_8k: - # # with torch.cuda.stream(self.ingest_stream): - # # device_frame = nv12_to_rgb_torch( - # # device_frame, self.frame_height, self.frame_width# , is_bgr=False - # # ) - # # self.ingest_stream.synchronize() - - # # if device_frame is not None: - # self.frame_count += 1 - # is_target_frame = float(frame_num) >= self.next_process_idx - - # # Determine if this frame should be AI or Raw based on backlog - # # But ALWAYS submit to the executor to maintain frame order. - # backlog = self.get_executor_backlog() - - # while backlog > 4 and self.active: - # time.sleep(0.005) - # backlog = self.get_executor_backlog() - - # def wrapped_fn(*args): - # if self.device_input == "cuda": - # with torch.cuda.stream(self.inference_stream): - # dev_frame, f_num, target_flag = args - # # FIX: Explicitly crop out any hardware padding columns horizontally - # # and rows vertically before forcing linear memory contiguity. - # if dev_frame.ndim >= 2: - # h_raw, w_raw = dev_frame.shape[-2:] - # if w_raw != self.frame_width or h_raw != self.frame_height: - # dev_frame = dev_frame[..., :self.frame_height, :self.frame_width] - - # isolated_frame = dev_frame.clone().contiguous() - # self.pipeline_fn(isolated_frame, f_num, target_flag) - # else: - # self.pipeline_fn(*args) - - # # Handoff to AI and Writer - # if self.active: - # self.executor.submit( - # # pipeline_fn, - # wrapped_fn, - # device_frame, - # frame_num, - # is_target_frame, - # ) - - # # --- PRECISE CLOCK SYNC --- - # # This prevents the producer from "lapping" the consumer - # # and building that jumpy backlog in the first place. - # elapsed = time.perf_counter() - last_frame_time - # if elapsed < self.frame_interval: - # # time.sleep(self.frame_interval - elapsed) - # # Subtract a small epsilon (0.001) for OS scheduling overhead - # # sleep_duration = self.frame_interval - elapsed - 0.0025 - # # if sleep_duration > 0.001: - # # time.sleep(sleep_duration) - # time.sleep(max(0, self.frame_interval - elapsed - 0.0015)) - # last_frame_time = time.perf_counter() - - # # self.update_frame() - # self.last_heartbeat = time.time() - - # self.stop() - def run_realtime_inference(self, sf_enabled): """Producer: Maintains the target FPS and updates clip IDs.""" # Calculate a dynamic limit: tolerate 0.5 seconds of lag. @@ -1859,37 +2687,122 @@ def run_realtime_inference(self, sf_enabled): self.dynamic_limit = max(2, int(0.5 * self.target_fps)) last_frame_time = time.perf_counter() while self.active: - # --- FRAME RETRIEVAL --- try: - device_frame, frame_num = self.reader.read() - if device_frame is None: - if self.reader is None or ( - hasattr(self.reader, "stopped") and self.reader.stopped - ): + # FRAME RETRIEVAL --------------------------------------------- + try: + ret, frame_8k, frame_num = self.reader.read() + if not ret or frame_8k is None: + print( + "[CLIPPER-TARGET] End of video file source detected. Initiating graceful shutdown.", + flush=True, + ) + # if self.reader is None or ( + # hasattr(self.reader, "stopped") and self.reader.stopped + # ): if self.device_input == "cuda": torch.cuda.synchronize() - self.active = False - clip_filename = f"{self.config.SHARED_OUTPUT}/{self.name}_{self.clip_id:03d}.mp4" - clip_key = Path(clip_filename).name - global send_metadata_queue, all_metadata - if clip_key in all_metadata: - # Signal to process metadata for previous cli - if ( - "send_metadata_queue" in globals() - or "send_metadata_queue" in locals() - ): - try: - send_metadata_queue.put( - (clip_filename, self.resize_w, self.resize_h) - ) - except Exception as queue_err: - print( - f"[CLIPPER-WARN] Metadata queue push skipped or unallocated: {queue_err}", - flush=True, - ) + if hasattr(self, "executor") and self.executor is not None: + while self.get_executor_backlog() > 0: + time.sleep(0.01) + + # Instead of only processing the active clip_id, loop through every clip + # listed in all_metadata to ensure nothing is dropped at shutdown. + global all_metadata, clip_completion_tracker + active_tracked_keys = list(all_metadata.keys()) + + for target_clip_key in active_tracked_keys: + # Reconstruct the explicit path structure for each target clip segment + target_clip_filename = ( + f"{self.config.SHARED_OUTPUT}/{target_clip_key}" + ) + + if target_clip_key not in clip_completion_tracker: + clip_completion_tracker[target_clip_key] = { + "video": False, + "meta": False, + "start_time": time.time(), + } + + # Mark tracking convergence fields to True concurrently + clip_completion_tracker[target_clip_key]["video"] = True + clip_completion_tracker[target_clip_key]["meta"] = True + + print( + f" [CLIPPER-TARGET] Finalizing terminal sync barrier for: {target_clip_key}", + flush=True, + ) + + # Safely delegate the queue pushing directly to your validation handler + self._evaluate_barrier_and_dispatch( + target_clip_key, + target_clip_filename, + self.resize_w, + self.resize_h, + ) + + # clip_id = (self.frame_count - 1) // self.max_frames_per_clip + # clip_filename = f"{self.config.SHARED_OUTPUT}/{self.name}_{clip_id:03d}.mp4" + # clip_key = Path(clip_filename).name + # global clip_completion_tracker + # if "clip_completion_tracker" in globals() or "clip_completion_tracker" in locals(): + # if clip_key not in clip_completion_tracker: + # clip_completion_tracker[clip_key] = { + # "video": False, + # "meta": False, + # "start_time": time.time(), + # } + # # Force both verification boundaries to True concurrently + # clip_completion_tracker[clip_key]["video"] = True + # clip_completion_tracker[clip_key]["meta"] = True + + # print( + # f" [BARRIER-SEAL] All metadata extracted for {clip_key}. Evaluating convergence...", + # flush=True, + # ) + # self._evaluate_barrier_and_dispatch( + # clip_key, + # clip_filename, + # self.resize_w, + # self.resize_h, + # ) + + # global send_metadata_queue, all_metadata + # if clip_key in all_metadata: + # # Signal to process metadata for previous cli + # if ( + # "send_metadata_queue" in globals() + # or "send_metadata_queue" in locals() + # ): + # try: + # send_metadata_queue.put( + # ( + # clip_filename, + # self.resize_w, + # self.resize_h, + # ) + # ) + # except Exception as queue_err: + # print( + # f"[CLIPPER-WARN] Metadata queue push skipped or unallocated: {queue_err}", + # flush=True, + # ) + + self.active = False + break + # continue + # if torch.is_tensor(device_frame): + # # Tell the main thread's stream to wait for the upload stream's completion + # torch.cuda.current_stream().wait_stream(self.reader.upload_stream) + except queue.Empty: + if getattr(self.reader, "reconnect_failed", False): + self.active = False break + time.sleep(0.002) continue + except Exception: + traceback.print_exc() + except queue.Empty: if getattr(self.reader, "reconnect_failed", False): self.active = False @@ -1897,23 +2810,31 @@ def run_realtime_inference(self, sf_enabled): time.sleep(0.002) continue - self.stat_start_time = time.perf_counter() # timing to display detection - - # Keep 8K frame on GPU (Skip CPU conversion for non-target frames) - # if self.device_input == "cuda" and not self.reader.is_h264_8k: - # with torch.cuda.stream(self.ingest_stream): - # device_frame = nv12_to_rgb_torch( - # device_frame, self.frame_height, self.frame_width# , is_bgr=False - # ) - # self.ingest_stream.synchronize() - - # if device_frame is not None: + calculated_clip_id = (frame_num - 1) // self.max_frames_per_clip + # self.clip_id = calculated_clip_id + # print(f"frame_num: {frame_num} calculated_clip_id: {calculated_clip_id}", flush=True) + stat_start_time = time.perf_counter() # timing to display detection self.frame_count += 1 - is_target_frame = float(frame_num) >= self.next_process_idx - # if not self.config.sf_enabled or abs(float(self.input_fps) - float(self.target_fps)) < 0.01: - # is_target_frame = True + self.frame_count_target += 1 + self.frame_in_clip_count += 1 + # is_target_frame = True # float(frame_num) >= self.next_process_idx + + # # Create a dedicated memory surface immediately on the Producer line. + # # This isolates the VRAM grid before the reader can overwrite it. + # if self.device_input == "cuda" and torch.is_tensor(device_frame): + # isolated_device_frame = device_frame.clone().contiguous() + # elif isinstance(device_frame, np.ndarray): + # # isolated_device_frame = device_frame.copy() + # # Zero-copy memory map assignment directly into the dedicated ingestion slot + # self.ingest_ring[self.ingest_ring_idx][:] = device_frame + # isolated_device_frame = self.ingest_ring[self.ingest_ring_idx] + + # # Safely step to the next slot in the ring buffer + # self.ingest_ring_idx = ( + # self.ingest_ring_idx + 1 + # ) % self.ingest_ring_depth # else: - # is_target_frame = float(frame_num) >= self.next_process_idx + # isolated_device_frame = device_frame # Determine if this frame should be AI or Raw based on backlog # But ALWAYS submit to the executor to maintain frame order. @@ -1926,47 +2847,57 @@ def run_realtime_inference(self, sf_enabled): def wrapped_fn(*args): if self.device_input == "cuda": # Ensure the worker thread switches to your targeted pipeline execution timeline - torch.cuda.set_stream(self.inference_stream) - dev_frame, f_num, target_flag, stat_start_time = args - isolated_device_frame = ( - dev_frame.clone() - if torch.is_tensor(dev_frame) - else dev_frame.copy() - ) - - self.pipeline_fn( - isolated_device_frame, f_num, target_flag, stat_start_time - ) + # torch.cuda.set_stream(self.inference_stream) + # dev_frame, f_num, target_flag, stat_start_time = args + dev_frame, f_num, start_time, clip_id = args + # isolated_device_frame = ( + # dev_frame.clone() + # if torch.is_tensor(dev_frame) + # else dev_frame.copy() + # ) + # isolated_device_frame = dev_frame + + with torch.cuda.stream(self.inference_stream): + self.pipeline_fn(dev_frame, f_num, start_time, clip_id) # Force a non-blocking device barrier to ensure operations have fully hit VRAM # before releasing the thread context - self.inference_stream.synchronize() + # self.inference_stream.synchronize() + # Force the device to catch up before dropping thread scope references + # self.inference_stream.synchronize() + + # Explicitly drop the variable frames from the localized stack frame + # if "isolated_device_frame" in locals(): + # del isolated_device_frame + # if "dev_frame" in locals(): + # del dev_frame else: - dev_frame, f_num, target_flag, stat_start_time = args - isolated_device_frame = ( - dev_frame.clone() - if torch.is_tensor(dev_frame) - else dev_frame.copy() - ) - self.pipeline_fn( - isolated_device_frame, f_num, target_flag, stat_start_time - ) - - if is_target_frame: # timing to display detection - self.next_process_idx += self.step_size - # Handoff to AI and Writer - # if self.active: - # Clone the tensor buffer immediately on the producer thread - # to prevent upstream overwrite races by the next reader iteration. - # isolated_device_frame = device_frame.clone() if torch.is_tensor(device_frame) else device_frame.copy() - self.executor.submit( - # pipeline_fn, - wrapped_fn, - device_frame, - frame_num, - is_target_frame, - self.stat_start_time, - ) + # dev_frame, f_num, target_flag, stat_start_time = args + dev_frame, f_num, start_time, clip_id = args + # isolated_device_frame = ( + # dev_frame.clone() + # if torch.is_tensor(dev_frame) + # else dev_frame.copy() + # ) + # isolated_device_frame = dev_frame + self.pipeline_fn(dev_frame, f_num, start_time, clip_id) + + # if is_target_frame: # timing to display detection + # self.next_process_idx += self.step_size + # Handoff to AI and Writer + # if self.active: + # Clone the tensor buffer immediately on the producer thread + # to prevent upstream overwrite races by the next reader iteration. + # isolated_device_frame = device_frame.clone() if torch.is_tensor(device_frame) else device_frame.copy() + self.executor.submit( + # pipeline_fn, + wrapped_fn, + frame_8k, + self.frame_count, + # is_target_frame, + stat_start_time, + calculated_clip_id, + ) # else: # # Process background execution context for skipped frames # self.pipeline_fn(device_frame, frame_num, is_target_frame) @@ -1986,7 +2917,7 @@ def wrapped_fn(*args): time.sleep(sleep_duration) last_frame_time = time.perf_counter() - # self.update_frame() + self.update_frame(stat_start_time) self.last_heartbeat = time.time() self.stop() @@ -2030,247 +2961,6 @@ def filter_contained_boxes(self, boxes, overlap_thresh=0.9): to_remove = (ioa > overlap_thresh) & larger_mask & ~diag return boxes[~to_remove.any(dim=1)] - # def get_detections( - # self, - # frame_raw, # BGR - # frameNum, # Added to metadata, should be frames in clip - # merged=None, - # thickness=2, - # device_input="cuda", - # ): - # metadata = {} - # try: - # # H, W = frame_raw.shape[:2] # Unpack once - # # FIX: Get H/W correctly for both Numpy [H, W, C] and Tensor [C, H, W] - # if torch.is_tensor(frame_raw): - # H, W = frame_raw.shape[-2:] # Gets last two dims - # else: - # H, W = frame_raw.shape[:2] - - # if merged is None: - # if torch.is_tensor(frame_raw): - # # Swap channels (-3 is the C dim) and normalize - # frame_input = ( - # # frame_raw.float() / 255.0 - # frame_raw.flip(-3).float() / 255.0 - # ) - # if frame_input.ndim == 3: - # frame_input = frame_input.unsqueeze(0) - # else: - # frame_input = frame_raw - - # # Run Inference (Keep stream=False as it is stable) - # results = self.run_model( - # frame_input, # Should be RGB - # imgsz=(H, W), - # batch=1, - # device_input=device_input, - # stream=False, - # ) - # else: - # cropped_batch = [] - # cropped_coords = [] - # # PREPARE CROPS (Path-specific Optimization) - # if device_input == "cuda" and torch.is_tensor(frame_raw): - # # GPU PATH: Zero-copy slicing + Hardware Interpolation - # for box in merged: - # x1, y1, x2, y2 = [int(val) for val in box] - # cropped_coords.append((x1, y1)) - # crop = frame_raw[:, y1:y2, x1:x2].unsqueeze(0) - # # crop_float = crop.float() / 255.0 - # crop_float = crop.flip(-3).float() / 255.0 - # # F.interpolate on A6000 handles 100+ crops in ~2ms - # crop_resized = F.interpolate( - # crop_float, - # size=(self.resize_h, self.resize_w), - # mode="bilinear", - # align_corners=False, - # ) - # cropped_batch.append(crop_resized.to(torch.half)) - - # # Consolidate into 4D Tensor for Parallel Hardware Batching - # input_data = ( - # torch.cat(cropped_batch, dim=0) if cropped_batch else None - # ) - # else: - # # CPU PATH: OpenCV Batching - # foi_cpu = ( - # frame_raw.permute(1, 2, 0).byte().cpu().numpy() - # if torch.is_tensor(frame_raw) - # else frame_raw - # ) - # for box in merged: - # x1, y1, x2, y2 = [int(val) for val in box] - # cropped_coords.append((x1, y1)) - # crop = foi_cpu[y1:y2, x1:x2] - # # Batching on CPU still needs resized inputs - # crop_resized = cv2.resize( - # crop, - # (self.resize_w, self.resize_h), - # interpolation=cv2.INTER_NEAREST, - # ) - # cropped_batch.append(crop_resized) - - # input_data = ( - # cropped_batch # List of arrays for OpenVINO/CPU batching - # ) - - # if cropped_batch == []: - # print("[DEBUG] Early exit: cropped_batch is empty", flush=True) - # return metadata, None - - # # if self.config.DEBUG_FLAG: - # # self.debug_save_crops(cropped_batch, frameNum) - - # # CHUNKED BATCH INFERENCE - # # Process in chunks of MODEL_MAX_BATCH_SIZE to stay within TensorRT/OpenVINO profile limits - # results = [] - # for i in range(0, len(input_data), self.config.MODEL_MAX_BATCH_SIZE): - # chunk = input_data[i : i + self.config.MODEL_MAX_BATCH_SIZE] - # chunk_results = self.run_model( - # chunk, # Should be RGB - # imgsz=(self.resize_h, self.resize_w), - # batch=len(chunk), - # device_input=device_input, - # stream=False, # stream=False is critical - # ) - # results.extend(list(chunk_results)) - - # # Process results and draw 8K-space overlays - # # Display scales for the final 640x640 stretched output - # num_objs = 0 - # scale_display_x = self.resize_w / W # 640 / 8192 - # scale_display_y = self.resize_h / H # 640 / 4608 - # for ridx, r in enumerate(list(results)): - # if r.boxes is None or len(r.boxes) == 0: - # continue - - # # Determine the ROI expansion ratio for this specific crop - # if merged is not None: - # x1_8k, y1_8k, x2_8k, y2_8k = merged[ridx] - # off_x, off_y = x1_8k, y1_8k - # # Ratio: How many 8K pixels does one inference pixel represent? - # roi_ratio_x = (x2_8k - x1_8k) / self.resize_w - # roi_ratio_y = (y2_8k - y1_8k) / self.resize_h - - # else: - # off_x, off_y = 0, 0 - # roi_ratio_x, roi_ratio_y = 1.0, 1.0 - - # # Move to CPU in one bulk operation per crop - # boxes = r.boxes.xyxy.cpu().numpy() - # clss = r.boxes.cls.cpu().numpy().astype(int) - # confs = r.boxes.conf.cpu().numpy() - - # for j in range(len(boxes)): - # num_objs += 1 - - # bx1, by1, bx2, by2 = boxes[j] - # # abs_x1, abs_y1 = off_x + bx1, off_y + by1 - # # abs_x2, abs_y2 = off_x + bx2, off_y + by2 - - # # # Map to absolute 8K pixels (Scale crop-coords to 8K then add offset) - # # abs_x1 = off_x + (bx1 * roi_ratio_x) - # # abs_y1 = off_y + (by1 * roi_ratio_y) - # # abs_x2 = off_x + (bx2 * roi_ratio_x) - # # abs_y2 = off_y + (by2 * roi_ratio_y) - - # # Map to absolute 8K pixels - # abs_x1 = off_x + (bx1 * roi_ratio_x) - # abs_y1 = off_y + (by1 * roi_ratio_y) - # abs_x2 = off_x + (bx2 * roi_ratio_x) - # abs_y2 = off_y + (by2 * roi_ratio_y) - - # # Map to 640x640 Display pixels (Apply the non-uniform stretch) - # # disp_x = int(abs_x1 * scale_display_x) - # # disp_y = int(abs_y1 * scale_display_y) - # # disp_w = int((abs_x2 - abs_x1) * scale_display_x) - # # disp_h = int((abs_y2 - abs_y1) * scale_display_y) - # disp_x = abs_x1 * scale_display_x - # disp_y = abs_y1 * scale_display_y - # disp_w = (abs_x2 - abs_x1) * scale_display_x - # disp_h = (abs_y2 - abs_y1) * scale_display_y - - # class_id = clss[j] - # class_name = self.label_source[class_id] - # confidence = confs[j] - - # if not self.config.OMIT_DETECTIONS_FLAG: - # timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S.%f")[:-3] - # print( - # # f"[OBJECT DETECTION] {class_name} detected in frame {frameNum} (Total detected: {current_cnt})", - # f"[{timestamp}] {self.name} DETECTION on Frame {frameNum}: {class_name} detected", - # flush=True, - # ) - - # # if not self.config.TEST_MODE: - # # bb_color = get_detection_color(class_id, is_bgr=True) - - # # foi = cv2.rectangle( - # # foi, - # # (abs_x1, abs_y1), - # # (abs_x2, abs_y2), - # # bb_color, - # # thickness, - # # ) - # # label = f"{class_name} {confidence:.2f}" - # # draw_label(foi, label, (abs_x1, abs_y1), color=bb_color, padding=5) - - # # height = min(abs_y2, H) - max(0, abs_y1) - # # width = min(abs_x2, W) - max(0, abs_x1) - - # # Resized - # object_res = [ - # int(disp_x), # int(abs_x1 * scale_x), - # int(disp_y), # int(abs_y1 * scale_y), - # int(disp_h), # int(height * scale_y), - # int(disp_w), # int(width * scale_x), - # class_name, - # confidence, - # int(self.resize_h), - # int(self.resize_w), - # ] - - # framenum_str = f"{frameNum:04d}_{j:04d}" - # # if self.config.DEBUG_FLAG: - # # meta_str = ",".join([str(o) for o in object_res + [framenum_str]]) - # # print(f"[{self.name} METADATA],{meta_str}", flush=True) - - # # Full Res - # metadata[framenum_str] = { - # "frameId": int(frameNum), - # "bbId": framenum_str, - # "bbox": { - # "x": int(object_res[0]), - # "y": int(object_res[1]), - # "height": int(object_res[2]), - # "width": int(object_res[3]), - # "object": str(object_res[4]), - # "object_det": { - # "confidence": float(object_res[5]), - # "frameH": int(object_res[6]), - # "frameW": int(object_res[7]), - # }, - # }, - # } - # except Exception as e: - # print(f"[GET_DETECTION] Exception: {e}\n{traceback.print_exc()}") - # num_objs = len(metadata.keys()) - - # if self.config.DEBUG_FLAG: - # log_to_logger(f"[DEBUG] get_detections returned {num_objs} detections", level="debug") - # return metadata, None - - # # # Queue frame for display (reduce quality for 8K bandwidth) - # # frame_bytes = get_display_frame_in_bytes( - # # foi, - # # display_size=(self.disp_w, self.disp_h), - # # quality=self.config.DISPLAY_FRAME_QUALITY, - # # return_bytes=True, - # # ) - - # # return metadata, frame_bytes - def get_gpu_rois_by_area(self, mask, max_candidates=100): # Extract true spatial constraints straight from the active mask object footprint if torch.is_tensor(mask): @@ -2312,6 +3002,30 @@ def get_gpu_rois_by_area(self, mask, max_candidates=100): else: raw_boxes = torch.as_tensor(boxes_gpu, device=self.device_input).float() + if raw_boxes is not None and len(raw_boxes) > 0: + PADDING_PX = 5 + # Assumes merged_boxes_tensor is a 2D tensor of shape [N, 4] containing [x1, y1, x2, y2] + # Create a matching subtraction/addition padding mask tensor + # Subtract from x1, y1 (indices 0, 1) and add to x2, y2 (indices 2, 3) + padding_mask = torch.tensor( + [-PADDING_PX, -PADDING_PX, PADDING_PX, PADDING_PX], + device=raw_boxes.device, + dtype=raw_boxes.dtype, + ) + + # Apply padding to all bounding boxes concurrently via broad-vector math + padded_tensor = raw_boxes + padding_mask + + # Guard rails: Clamp boundaries in-place to stay safely within the 8K master frame + # Indices 0 and 2 are X coordinates bounded by frame width; 1 and 3 are Y coordinates bounded by frame height + padded_tensor[:, 0].clamp_(min=0, max=self.resize_w) + padded_tensor[:, 1].clamp_(min=0, max=self.resize_h) + padded_tensor[:, 2].clamp_(min=0, max=self.resize_w) + padded_tensor[:, 3].clamp_(min=0, max=self.resize_h) + + # Re-assign back to your pipeline's tracking variable + raw_boxes = padded_tensor + # Vectorized Pre-Filter (Removes noise blobs before merging) w = raw_boxes[:, 2] - raw_boxes[:, 0] h = raw_boxes[:, 3] - raw_boxes[:, 1] @@ -2328,25 +3042,6 @@ def get_gpu_rois_by_area(self, mask, max_candidates=100): raw_boxes = raw_boxes[indices] return raw_boxes - # def get_gpu_rois(self, frame, frameNum, mask): - # raw_boxes = self.get_gpu_rois_by_area(mask) - - # if raw_boxes.shape[0] < 1: - # return torch.empty((0, 4), device=self.device_input) - - # if raw_boxes.shape[0] > 1: - # raw_boxes = merge_boxes_gpu(raw_boxes, gap_limit=self.dist_thresh_640) - - # clean_640p = self.filter_contained_boxes( - # raw_boxes, overlap_thresh=self.config.ROI_CONTAINMENT_THRESH - # ) - - # if clean_640p.shape[0] < 1: - # return torch.empty((0, 4), device=self.device_input) - - # # Scale to 8K space - # return clean_640p * self.scales_tensor - def get_cpu_rois(self, frame, frameNum, mask): contours, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) raw_boxes_xywh = [ @@ -2354,13 +3049,26 @@ def get_cpu_rois(self, frame, frameNum, mask): for c in contours if cv2.contourArea(c) > self.min_contour_area ] - raw_boxes = [[x, y, x + w, y + h] for x, y, w, h in raw_boxes_xywh] + + raw_boxes = [ + [ + max(0, int(x) - PADDING_PX), + max(0, int(y) - PADDING_PX), + min(self.resize_w, int(x + w) + PADDING_PX), + min(self.resize_h, int(y + h) + PADDING_PX), + ] + for x, y, w, h in raw_boxes_xywh + ] + # raw_boxes = [[x, y, x + w, y + h] for x, y, w, h in raw_boxes_xywh] if len(raw_boxes) < 1: return torch.empty((0, 4), device=self.device_input) if len(raw_boxes) > 1: - raw_boxes = merge_boxes_cpu(raw_boxes, gap_limit=self.dist_thresh_640) + limit_640 = (640 * 2.0) / self.scale_x + raw_boxes = merge_boxes_cpu( + raw_boxes, gap_limit=self.dist_thresh_640, size_limit=limit_640 + ) raw_boxes_640p = torch.tensor(raw_boxes, device=self.device_input).float() @@ -2389,6 +3097,7 @@ def get_detections( """ metadata = {} is_cuda = device_input == "cuda" + num_objs = 0 # ===================================================================== # 🚀 PATH 1: FULL RESOLUTION TRACK (sf_enabled = False) @@ -2421,7 +3130,7 @@ def get_detections( frame = frame.to( device_input, dtype=torch.float16, non_blocking=True ) - frame.div_(255.0) # Safe in-place float normalization + frame.mul_(1.0 / 255.0) # Safe in-place float normalization else: frame = frame.to(device_input, non_blocking=True) @@ -2482,6 +3191,7 @@ def get_detections( ] obj_id = len(metadata) + num_objs += 1 framenum_str = f"{frame_id:04d}_{obj_id:04d}" metadata[framenum_str] = { "frameId": int(frame_id), @@ -2499,174 +3209,22 @@ def get_detections( }, }, } + + if "boxes" in locals(): + del boxes + if "results" in locals(): + del results + del frame - return metadata, None + return metadata, num_objs - # ===================================================================== - # 📦 PATH 2: SMART FILTER ROIs TRACK (sf_enabled = True) - # ===================================================================== - # else: - # roi_patches = [] - # patch_coordinates = [] - # max_batch_size = getattr(self.config, "MODEL_MAX_BATCH_SIZE", 4) - - # # 1. Image Canvas Matrix Pre-processing Isolation Gauges - # if is_cuda and isinstance(frame, torch.Tensor): - # src_tensor = frame.squeeze(0) if frame.ndim == 4 else frame - # if src_tensor.shape[-1] == 3: - # src_tensor = src_tensor.permute(2, 0, 1) # Force [C, H, W] - # src_h, src_w = src_tensor.shape[-2:] - # else: - # # Host fallback tracking pointers - # src_tensor = np.asarray(frame) - # src_h, src_w = src_tensor.shape[:2] - - # # 2. Extract and Standarize Regions of Interest (ROIs) - # for box in merged: - # x1, y1, x2, y2 = map(int, box) - # x1, y1 = max(0, x1), max(0, y1) - # x2, y2 = min(src_w, x2), min(src_h, y2) - - # if (x2 - x1) < 8 or (y2 - y1) < 8: - # continue # Filter out noise slices - - # if is_cuda and isinstance(src_tensor, torch.Tensor): - # with torch.no_grad(): - # crop = src_tensor[:, y1:y2, x1:x2] - # # Bilinear scale interpolation pass on GPU hardware to achieve uniform dimensions - # if crop.shape[-2:] != (self.resize_h, self.resize_w): - # crop = F.interpolate( - # crop.unsqueeze(0).float(), - # size=(self.resize_h, self.resize_w), - # mode="bilinear", - # align_corners=False, - # ).squeeze(0) - # roi_patches.append(crop) - # else: - # # CPU Path: Crop and resize via OpenCV linear interpolation - # crop = src_tensor[y1:y2, x1:x2] - # if crop.shape[:2] != (self.resize_h, self.resize_w): - # crop = cv2.resize( - # crop, - # (self.resize_w, self.resize_h), - # interpolation=cv2.INTER_LINEAR, - # ) - # roi_patches.append(crop) - - # patch_coordinates.append((x1, y1, x2 - x1, y2 - y1)) - - # if not roi_patches: - # return metadata, None - - # # 3. Process Patches via Multi-Cam Inference Batch Factory - # results_pool = [] - # for i in range(0, len(roi_patches), max_batch_size): - # batch_slices = roi_patches[i : i + max_batch_size] - # current_batch_len = len(batch_slices) - - # if is_cuda and isinstance(batch_slices[0], torch.Tensor): - # with torch.inference_mode(): - # # Stack patches into a balanced [N, C, MODEL_H, MODEL_W] tensor matrix array - # inference_batch = torch.stack(batch_slices).to( - # device_input, dtype=torch.float16, non_blocking=True - # ) - # inference_batch.div_( - # 255.0 - # ) # Normalize directly in VRAM page boundaries - - # batch_res = self.run_model( - # inference_batch, - # imgsz=(self.resize_h, self.resize_w), - # batch=current_batch_len, - # device_input=device_input, - # stream=STREAM_ARG, - # ) - # results_pool.extend(batch_res) - # del inference_batch - # else: - # # CPU Path Processing Pass Stack - # with torch.inference_mode(): - # # Standardize NumPy array layouts into single host batch matrix block layouts - # np_batch = np.stack(batch_slices).astype(np.float32) / 255.0 - # inference_batch = ( - # torch.from_numpy(np_batch) - # .permute(0, 3, 1, 2) - # .to(device_input) - # ) - - # batch_res = self.run_model( - # inference_batch, - # imgsz=(self.resize_h, self.resize_w), - # batch=current_batch_len, - # device_input=device_input, - # stream=STREAM_ARG, - # ) - # results_pool.extend(batch_res) - # del inference_batch - - # # 4. Map Patch Bounding Boxes back onto the Global 8K Frame Coordinates Map - # scale_display_x = self.resize_w / self.frame_width # 640 / 8192 - # scale_display_y = self.resize_h / self.frame_height # 640 / 4608 - # for idx, res in enumerate(results_pool): - # ox, oy, o_width, o_height = patch_coordinates[idx] - # if res.boxes is not None: - # for b_box in res.boxes: - # lx1, ly1, lx2, ly2 = b_box.xyxy[0].cpu().tolist() - # cls_id = int(b_box.cls[0].cpu().item()) - # confidence = float(b_box.conf[0].cpu().item()) - # class_name = self.label_source[cls_id] - # # confidence = confs[j] - - # # Map relative coordinates proportionally to the original 8K ROI slice layout - # global_x1 = ox + (lx1 * (o_width / float(self.resize_w))) - # global_y1 = oy + (ly1 * (o_height / float(self.resize_h))) - # global_x2 = ox + (lx2 * (o_width / float(self.resize_w))) - # global_y2 = oy + (ly2 * (o_height / float(self.resize_h))) - # disp_x = global_x1 * scale_display_x - # disp_y = global_y1 * scale_display_y - # disp_w = (global_x2 - global_x1) * scale_display_x - # disp_h = (global_y2 - global_y1) * scale_display_y - - # if disp_w > 0 and disp_h > 0: - # # Resized - # object_res = [ - # int(disp_x), # int(abs_x1 * scale_x), - # int(disp_y), # int(abs_y1 * scale_y), - # int(disp_h), # int(height * scale_y), - # int(disp_w), # int(width * scale_x), - # class_name, - # confidence, - # int(self.resize_h), - # int(self.resize_w), - # ] - - # obj_id = len(metadata) - # framenum_str = f"{frame_id:04d}_{obj_id:04d}" - # metadata[framenum_str] = { - # "frameId": int(frame_id), - # "bbId": framenum_str, - # "bbox": { - # "x": int(object_res[0]), - # "y": int(object_res[1]), - # "height": int(object_res[2]), - # "width": int(object_res[3]), - # "object": str(object_res[4]), - # "object_det": { - # "confidence": float(object_res[5]), - # "frameH": int(object_res[6]), - # "frameW": int(object_res[7]), - # }, - # }, - # } - - # return metadata, None # ===================================================================== # PATH 2: SMART FILTER ROIs TRACK (sf_enabled = True) -> PADDED ASPECT PRESERVING 📦 # ===================================================================== else: roi_patches = [] patch_coordinates = [] - max_batch_size = getattr(self.config, "MODEL_MAX_BATCH_SIZE", 4) + max_batch_size = getattr(self.config, "MODEL_MAX_BATCH_SIZE", 64) # 1. Canvas Matrix Pre-processing Isolation if is_cuda and isinstance(frame, torch.Tensor): @@ -2732,11 +3290,13 @@ def get_detections( nw, nh = max(1, int(box_w * scale)), max(1, int(box_h * scale)) crop_resized = cv2.resize( - crop, (nw, nh), interpolation=cv2.INTER_LINEAR + crop, (nw, nh), interpolation=cv2.INTER_NEAREST ) # Center-pad the array block with zeros (black) - padded_canvas = np.zeros((th, tw, 3), dtype=np.uint8) + # padded_canvas = np.zeros((th, tw, 3), dtype=np.uint8) + padded_canvas = np.empty((th, tw, 3), dtype=np.uint8) + padded_canvas.fill(0) dx = (tw - nw) // 2 dy = (th - nh) // 2 padded_canvas[dy : dy + nh, dx : dx + nw] = crop_resized @@ -2746,7 +3306,7 @@ def get_detections( patch_coordinates.append((x1, y1, box_w, box_h, scale, dx, dy)) if not roi_patches: - return metadata, None + return {}, 0 # 3. Process Patches via Multi-Cam Inference Batch Factory results_pool = [] @@ -2760,7 +3320,7 @@ def get_detections( inference_batch = torch.stack(batch_slices).to( device_input, dtype=torch.float16, non_blocking=True ) - inference_batch.div_(255.0) # In-place GPU normalization + inference_batch.mul_(1.0 / 255.0) # In-place GPU normalization batch_res = self.run_model( inference_batch, @@ -2773,11 +3333,49 @@ def get_detections( del inference_batch else: with torch.inference_mode(): - np_batch = np.stack(batch_slices).astype(np.float32) / 255.0 - inference_batch = ( - torch.from_numpy(np_batch) - .permute(0, 3, 1, 2) - .to(device_input) + # np_batch = np.stack(batch_slices, dtype=np.float32) #.astype(np.float32) / 255.0 + # Pre-allocate the complete batch block surface memory up front: + th, tw = self.resize_h, self.resize_w + current_batch_len = len(batch_slices) + # np_batch = np.zeros((current_chunk_len, th, tw, 3), dtype=np.float32) + + # Stack the list of [H, W, C] patches into a 4D array [B, H, W, C] + np_batch_uint8 = np.stack(batch_slices) + + # Transpose from NHWC [B, H, W, C] to NCHW [B, C, H, W] natively in NumPy + np_batch_nchw = np.transpose(np_batch_uint8, (0, 3, 1, 2)) + + # Cast to float32 and normalize concurrently using contiguous memory layout + # np_batch_contiguous = np.ascontiguousarray(np_batch_nchw, dtype=np.float32) + # np_batch_contiguous *= (1.0 / 255.0) + + # 1. Stack the list of [H, W, C] patches into a 4D array [B, H, W, C] + np_batch_uint8 = np.stack(batch_slices) + + # 2. Transpose from NHWC [B, H, W, C] to NCHW [B, C, H, W] natively in NumPy + # np_batch_nchw = np.transpose(np_batch_uint8, (0, 3, 1, 2)) + + # # 3. Cast to float32 and normalize concurrently using an in-place pointer + # np_batch_float = np_batch_nchw.astype(np.float32) + # np_batch_float *= 1.0 / 255.0 + + # # --- CRITICAL MEMORY ALIGNMENT LOCK --- + # # Force the contiguous memory layer allocation AFTER all mathematical manipulations are complete. + # # This ensures the underlying C-memory arrays are perfectly packed and sequential, allowing + # # OpenVINO to run zero-copy pointer lookups and bypassing the 48.13ms serialization overhead. + # np_batch_aligned = np.ascontiguousarray(np_batch_float) + + # # 4. Expose the memory-aligned array directly to PyTorch as a host tensor view + # inference_batch = torch.from_numpy(np_batch_aligned).to( + # device_input + # ) + + np_batch_ready = np.ascontiguousarray(np_batch_uint8) + np_batch_nchw = np.transpose(np_batch_ready, (0, 3, 1, 2)) + np_batch_float = np_batch_nchw.astype(np.float32) + np_batch_float *= 1.0 / 255.0 + inference_batch = torch.from_numpy(np_batch_float).to( + device_input ) batch_res = self.run_model( @@ -2790,11 +3388,18 @@ def get_detections( results_pool.extend(batch_res) del inference_batch + # ===================================================================== + # UNIFIED STREAM BARRIER: Sync ONCE after all hardware tasks are queued + # ===================================================================== + if is_cuda and hasattr(self, "inference_stream"): + self.inference_stream.synchronize() + # 4. Map Patch Bounding Boxes back onto the Global 8K Frame Coordinates Map scale_display_x = tw / float(self.frame_width) scale_display_y = th / float(self.frame_height) for idx, res in enumerate(results_pool): + # Calculate the exact matching absolute global coordinate array slot index ox, oy, o_width, o_height, scale_f, pad_x, pad_y = patch_coordinates[ idx ] @@ -2838,6 +3443,7 @@ def get_detections( int(tw), ] obj_id = len(metadata) + num_objs += 1 framenum_str = f"{frame_id:04d}_{obj_id:04d}" metadata[framenum_str] = { "frameId": int(frame_id), @@ -2855,71 +3461,25 @@ def get_detections( }, }, } - return metadata, None - - # def get_gpu_rois_by_area(self, mask, max_candidates=25): #, limit_640=640*2): #max_candidates=100, limit_640=100): - # # Get raw boxes from mask (Direct VRAM bridge) - # boxes_gpu = find_contours_gpu_equivalent( - # mask, - # stream=self.bgs_stream, - # grid_size=32, - # limit_640=640*2, - # max_boxes=100, #250, - # ) # max_candidates) - - # if boxes_gpu is None or len(boxes_gpu) == 0: - # return torch.empty((0, 4), device=self.device_input) - - # # Wrap existing GPU memory as a float tensor (Zero Copy) - # raw_boxes = torch.as_tensor(boxes_gpu, device=self.device_input).float() - - # # Vectorized Pre-Filter (Removes noise blobs before merging) - # w = raw_boxes[:, 2] - raw_boxes[:, 0] - # h = raw_boxes[:, 3] - raw_boxes[:, 1] - # mask_filter = ( - # (w * h > self.min_contour_area) & (w < self.resize_w) & (h < self.resize_h) - # ) - # raw_boxes = raw_boxes[mask_filter] - - # # keep_idx = [] - # # for i in range(raw_boxes.shape[0]): - # # # 1. Convert to Python integers and calculate width/height - # # x1, y1, x2, y2 = [int(v.item()) for v in raw_boxes[i]] - # # w, h = x2 - x1, y2 - y1 - - # # if w <= 0 or h <= 0: - # # continue - - # # try: - # # # 2. Correct GpuMat ROI constructor: cv2.cuda.GpuMat(parent, (x, y, w, h)) - # # roi_mask = cv2.cuda.GpuMat(mask, (x1, y1, w, h)) - - # # # 3. Density check (white pixels / area) - # # # If density < 5%, it's likely the sparse terrain noise from your image - # # if (cv2.cuda.countNonZero(roi_mask) / (w * h)) > 0.01: - # # keep_idx.append(i) - # # except Exception: - # # # Skips boxes that might be slightly out of mask bounds - # # continue - - # # raw_boxes = raw_boxes[keep_idx] if keep_idx else torch.empty((0, 4), device=self.device_input) - - # # Prevents N^2 distance matrix from exploding during high noise - # if raw_boxes.shape[0] > max_candidates: - # # Prioritize the largest blobs (most likely to be drones) - # areas = (raw_boxes[:, 2] - raw_boxes[:, 0]) * ( - # raw_boxes[:, 3] - raw_boxes[:, 1] - # ) - # _, indices = torch.topk(areas, max_candidates) - # raw_boxes = raw_boxes[indices] - # return raw_boxes + + if "results_pool" in locals(): + del results_pool + if "roi_patches" in locals(): + roi_patches.clear() + del roi_patches + + del frame + del src_tensor + return metadata, num_objs def get_gpu_rois(self, frame, frameNum, mask): # If more than 20% of the screen is moving, don't bother with crops # if current_coverage > 0.6: # return torch.tensor([[0, 0, self.frame_width, self.frame_height]], device=self.device_input) - limit_640 = 640 * 2 # 40 # self.config.ROI_MERGE_SIZE_LIMIT / self.scale_x + limit_640 = ( + 640 * 2.0 + ) / self.scale_x # 40 # self.config.ROI_MERGE_SIZE_LIMIT / self.scale_x raw_boxes = self.get_gpu_rois_by_area( mask, max_candidates=50 ) # , limit_640=limit_640) @@ -2959,230 +3519,635 @@ def get_gpu_rois(self, frame, frameNum, mask): # # clean_640p[:, 2] += padding # # clean_640p[:, 3] += padding - # # 2. Re-merge the padded boxes (connects nearby drones into one clean crop) - # clean_640p = merge_boxes_gpu( - # clean_640p, - # gap_limit=self.dist_thresh_640, - # size_limit=limit_640, # self.config.ROI_MERGE_SIZE_LIMIT / self.scale_x, - # ) + # # 2. Re-merge the padded boxes (connects nearby drones into one clean crop) + # clean_640p = merge_boxes_gpu( + # clean_640p, + # gap_limit=self.dist_thresh_640, + # size_limit=limit_640, # self.config.ROI_MERGE_SIZE_LIMIT / self.scale_x, + # ) + + # # Scale to 8K and clamp + # clean_full = clean_640p * self.scales_tensor + # # clean_full[:, [0, 2]] = clean_full[:, [0, 2]].clamp(0, self.frame_width) + # # clean_full[:, [1, 3]] = clean_full[:, [1, 3]].clamp(0, self.frame_height) + # return clean_full + + xmin = clean_640p[:, 0] + ymin = clean_640p[:, 1] + # w = clean_640p[:, 2] + # h = clean_640p[:, 3] + # xmax = xmin + w + # ymax = ymin + h + xmax = clean_640p[:, 2] + ymax = clean_640p[:, 3] + + # Stack into standard format layout [xmin, ymin, xmax, ymax] + standard_boxes = torch.stack([xmin, ymin, xmax, ymax], dim=1) + + # 4. Scale to absolute 8K workspace dimensions accurately + return standard_boxes * self.scales_tensor + + def get_gpu_roisv2(self, frame, frameNum, mask): + # 1. MORPHOLOGICAL NOISE CLEANUP (Crucial for the hillside) + # Apply an in-place GPU Opening filter to dissolve the tiny white spots + # while keeping the larger, dense drone clusters perfectly intact. + if isinstance(mask, cv2.cuda.GpuMat): + # 3x3 or 5x5 Ellipse/Rect kernel eliminates high-frequency noise + kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3)) + morph_filter = cv2.cuda.createMorphologyFilter( + cv2.MORPH_OPEN, mask.type(), kernel + ) + clean_mask = morph_filter.apply(mask) + else: + kernel = np.ones((3, 3), np.uint8) + clean_mask = cv2.morphologyEx(mask, cv2.MORPH_OPEN, kernel) + + # 2. Extract raw candidate boxes using the clean mask matrix surface + limit_640 = (640 * 2.0) / self.scale_x + raw_boxes = self.get_gpu_rois_by_area( + clean_mask, max_candidates=100 + ) # Increased limit to 100 + + if raw_boxes.shape[0] < 1: + return torch.empty((0, 4), device=self.device_input) + + if raw_boxes.shape[0] > 1: + raw_boxes = merge_boxes_gpu( + raw_boxes, + gap_limit=self.dist_thresh_640, + size_limit=limit_640, + ) + + clean_640p = self.filter_contained_boxes( + raw_boxes, overlap_thresh=self.config.ROI_CONTAINMENT_THRESH + ) + + if clean_640p.shape[0] < 1: + return torch.empty((0, 4), device=self.device_input) + + # 3. CORRECT [X, Y, W, H] TO [X1, Y1, X2, y2] MATH + # Map the original width and height parameters back to endpoint coordinates + xmin = clean_640p[:, 0] + ymin = clean_640p[:, 1] + w = clean_640p[:, 2] + h = clean_640p[:, 3] + + xmax = xmin + w + ymax = ymin + h + + # Pack into full master coordinate system arrays + standard_boxes = torch.stack([xmin, ymin, xmax, ymax], dim=1) + + # 4. Project coordinates back to 8K master canvas space accurately + return standard_boxes * self.scales_tensor + + def get_gpu_roisv3(self, frame, frameNum, mask): + # 1. Extract raw candidate boxes from the mask (Already [x1, y1, x2, y2]) + limit_640 = (640 * 2.0) / self.scale_x + raw_boxes = self.get_gpu_rois_by_area(mask, max_candidates=50) + + if raw_boxes.shape[0] < 1: + return torch.empty((0, 4), device=self.device_input) + + # 2. Merge overlapping fragments directly on the GPU + if raw_boxes.shape[0] > 1: + raw_boxes = merge_boxes_gpu( + raw_boxes, + gap_limit=self.dist_thresh_640, + size_limit=limit_640, + ) + + # 3. Filter out containment or noise artifacts + clean_640p = self.filter_contained_boxes( + raw_boxes, overlap_thresh=self.config.ROI_CONTAINMENT_THRESH + ) + + if clean_640p.shape[0] < 1: + return torch.empty((0, 4), device=self.device_input) + + # 4. Direct 8K Space Scaling Matrix Multiplication + # Matches the clean CPU architecture on Page 31, Line 2050 + return clean_640p * self.scales_tensor + + def frame2video( + self, + device_frame, + frameNum, + metadata_or_bbs, + class_list, + # metrics, + ): + scale_display_x = self.disp_w / 640 + scale_display_y = self.disp_h / 640 + try: + if self.device_input == "cuda" and torch.is_tensor(device_frame): + # 2. Fast Inline VRAM Downscaling into our static memory slot + # Reshape to (Batch, Channel, Height, Width) seamlessly without duplicating data + gpu_tensor = device_frame[None, :].permute(0, 3, 1, 2).float() + + resized_tensor = torch.nn.functional.interpolate( + gpu_tensor, + size=(self.disp_h, self.disp_w), + mode="nearest", + ) + + # CONVERTS TO CPU EARLIER (WORKS but lowers fps) + # hwc_byte_tensor = resized_tensor.squeeze(0).permute(1, 2, 0).byte() + # cpu_tensor = hwc_byte_tensor.cpu() + # bgr_contiguous = cpu_tensor.contiguous() + + # Using copy_() avoids creating any runtime allocations or memory-stride drift. + self.static_gpu_byte_bchw.copy_(resized_tensor.byte()) + + # Safely reshape the pre-allocated, locked GPU memory layout back to standard HWC array topology. + # Since the underlying array layout is strictly contiguous, this permute is guaranteed + # to be zero-copy on the GPU and free from memory race stalls. + bgr_contiguous = self.static_gpu_byte_bchw.squeeze(0).permute(1, 2, 0) + + # 1. Grab the current free pinned slot tracking variables from your reader + d2h_idx = self.reader.d2h_selector + pinned_tensor_buf = self.reader.d2h_buffers[d2h_idx] + + # c_idx = self.canvas_selector + # current_canvas = self.static_host_canvases[c_idx] + + # host_tensor_view = torch.as_tensor(current_canvas, device="cpu") + + # 3. Non-blocking asynchronous PCIe DMA Download directly into our page-locked canvas + with torch.cuda.stream(self.reader.download_stream): + # pinned_tensor = torch.from_numpy(current_canvas).cuda() + pinned_tensor_buf.copy_(bgr_contiguous, non_blocking=True) + + # Synchronize only the side download stream layout channel + self.reader.download_stream.synchronize() + + cpu_360p_frame = self.reader.d2h_numpys[d2h_idx] + + # 5. Non-Blocking Push straight to your background AsyncVideoWriter thread pool + # We pass a direct .copy() slice so the hot loop can instantly reuse the pinned ring buffer + display_frame = np.array(cpu_360p_frame, copy=True, order="C") + + if display_frame is not None and display_frame.shape[-1] == 3: + display_frame = cv2.cvtColor(display_frame, cv2.COLOR_RGB2BGR) + + # --- Draw Detection Overlays --- + if isinstance(metadata_or_bbs, dict): + # Object Mode (YOLO Structs) + display_frame = get_metadata_overlay( + display_frame, + metadata_or_bbs, + class_list, + (scale_display_x, scale_display_y), + (self.disp_w, self.disp_h), + is_bgr=True, + ) + + elif metadata_or_bbs is not None: + # # Motion / Smart Filtering Overlay Path + display_frame = get_bb_overlay( + display_frame, + metadata_or_bbs, + (scale_display_x, scale_display_y), + (self.disp_w, self.disp_h), + ) + + self.async_writer.write_frame(display_frame) + # self.canvas_selector = 1 - self.canvas_selector + self.reader.d2h_selector = 1 - self.reader.d2h_selector + + else: + # Reusable baseline track for CPU execution mappings + display_frame = cv2.resize( + device_frame, + (self.disp_w, self.disp_h), + interpolation=cv2.INTER_NEAREST, + ) + # if metrics["bbs"] is not None: + # for box in metrics["bbs"]: + # cv2.rectangle(cpu_resized, (int(box[0]), int(box[1])), (int(box[2]), int(box[3])), (0, 255, 0), 2) + # --- Draw Detection Overlays --- + if isinstance(metadata_or_bbs, dict): + # Object Mode (YOLO Structs) + display_frame = get_metadata_overlay( + display_frame, + metadata_or_bbs, + class_list, + (scale_display_x, scale_display_y), + (self.disp_w, self.disp_h), + is_bgr=True, + ) + + elif metadata_or_bbs is not None: + # # Motion / Smart Filtering Overlay Path + display_frame = get_bb_overlay( + display_frame, + metadata_or_bbs, + (scale_display_x, scale_display_y), + (self.disp_w, self.disp_h), + ) + self.async_writer.write_frame(display_frame) + except Exception: + traceback.print_exc() + return + + def frame2output(self, device_frame, frame_num, metadata_or_bbs, class_list): + """ + Renders drone detection bounding boxes onto the canvas + before dispatching to the live UI shared memory stream. + """ + if not self.active: + return + scale_display_x = self.disp_w / 640 + scale_display_y = self.disp_h / 640 + try: + if self.device_input == "cuda" and torch.is_tensor(device_frame): + # 2. Fast Inline VRAM Downscaling into our static memory slot + # Reshape to (Batch, Channel, Height, Width) seamlessly without duplicating data + gpu_tensor = device_frame[None, :].permute(0, 3, 1, 2).float() + + resized_tensor = torch.nn.functional.interpolate( + gpu_tensor, + size=(self.disp_h, self.disp_w), + mode="nearest", + ) + + # CONVERTS TO CPU EARLIER (WORKS but lowers fps) + # hwc_byte_tensor = resized_tensor.squeeze(0).permute(1, 2, 0).byte() + # cpu_tensor = hwc_byte_tensor.cpu() + # bgr_contiguous = cpu_tensor.contiguous() + + # Using copy_() avoids creating any runtime allocations or memory-stride drift. + self.static_gpu_byte_bchw.copy_(resized_tensor.byte()) + + # Safely reshape the pre-allocated, locked GPU memory layout back to standard HWC array topology. + # Since the underlying array layout is strictly contiguous, this permute is guaranteed + # to be zero-copy on the GPU and free from memory race stalls. + bgr_contiguous = self.static_gpu_byte_bchw.squeeze(0).permute(1, 2, 0) + + # 1. Grab the current free pinned slot tracking variables from your reader + d2h_idx = self.reader.d2h_selector + pinned_tensor_buf = self.reader.d2h_buffers[d2h_idx] + + # c_idx = self.canvas_selector + # current_canvas = self.static_host_canvases[c_idx] + + # host_tensor_view = torch.as_tensor(current_canvas, device="cpu") + + # 3. Non-blocking asynchronous PCIe DMA Download directly into our page-locked canvas + with torch.cuda.stream(self.reader.download_stream): + # pinned_tensor = torch.from_numpy(current_canvas).cuda() + pinned_tensor_buf.copy_(bgr_contiguous, non_blocking=True) + + # Synchronize only the side download stream layout channel + self.reader.download_stream.synchronize() + + cpu_360p_frame = self.reader.d2h_numpys[d2h_idx] + + # 5. Non-Blocking Push straight to your background AsyncVideoWriter thread pool + # We pass a direct .copy() slice so the hot loop can instantly reuse the pinned ring buffer + display_frame = np.array(cpu_360p_frame, copy=True, order="C") + + if display_frame is not None and display_frame.shape[-1] == 3: + display_frame = cv2.cvtColor(display_frame, cv2.COLOR_RGB2BGR) + + # --- Draw Detection Overlays --- + if isinstance(metadata_or_bbs, dict): + # Object Mode (YOLO Structs) + display_frame = get_metadata_overlay( + display_frame, + metadata_or_bbs, + class_list, + (scale_display_x, scale_display_y), + (self.disp_w, self.disp_h), + is_bgr=True, + ) + + elif metadata_or_bbs is not None: + # # Motion / Smart Filtering Overlay Path + display_frame = get_bb_overlay( + display_frame, + metadata_or_bbs, + (scale_display_x, scale_display_y), + (self.disp_w, self.disp_h), + ) + + self.async_writer.write_frame(display_frame, frame_num) + # self.canvas_selector = 1 - self.canvas_selector + self.reader.d2h_selector = 1 - self.reader.d2h_selector + + else: + # Reusable baseline track for CPU execution mappings + display_frame = cv2.resize( + device_frame, + (self.disp_w, self.disp_h), + interpolation=cv2.INTER_NEAREST, + ) + # if metrics["bbs"] is not None: + # for box in metrics["bbs"]: + # cv2.rectangle(cpu_resized, (int(box[0]), int(box[1])), (int(box[2]), int(box[3])), (0, 255, 0), 2) + # --- Draw Detection Overlays --- + if isinstance(metadata_or_bbs, dict): + # Object Mode (YOLO Structs) + display_frame = get_metadata_overlay( + display_frame, + metadata_or_bbs, + class_list, + (scale_display_x, scale_display_y), + (self.disp_w, self.disp_h), + is_bgr=True, + ) + + elif metadata_or_bbs is not None: + # # Motion / Smart Filtering Overlay Path + display_frame = get_bb_overlay( + display_frame, + metadata_or_bbs, + (scale_display_x, scale_display_y), + (self.disp_w, self.disp_h), + ) + self.async_writer.write_frame(display_frame, frame_num) + except Exception: + traceback.print_exc() + # return + + def frame2outputv3(self, display_frame, frame_num, metadata=None, class_list=None): + """Processes and delivers operational live-mode matrices safely down to POSIX shared memory slots.""" + + # Ensure memory formats are fully detached from internal VRAM contexts + if hasattr(display_frame, "is_cuda") and display_frame.is_cuda: + display_frame = display_frame.cpu().numpy() + elif isinstance(display_frame, torch.Tensor): + display_frame = display_frame.detach().cpu().numpy() + + # 🔄 FIX: Invert colors from RGB to structural BGR layout to resolve the blue tint + try: + display_frame = cv2.cvtColor(display_frame, cv2.COLOR_RGB2BGR) + except Exception: + pass # Safety fallback guard if the tensor layout was already BGR format + + if hasattr(display_frame, "copy"): + clean_canvas = display_frame.copy() + else: + clean_canvas = np.ascontiguousarray(display_frame) + + if hasattr(self, "async_writer") and self.async_writer is not None: + self.async_writer.write_frame(clean_canvas, frame_num) + + def frame2outputv2( + self, + device_frame, + frameNum, + metadata_or_bbs, + class_list, + metrics, + ): + scale_display_x = self.disp_w / 640 + scale_display_y = self.disp_h / 640 + + if self.device_input == "cuda" and torch.is_tensor(device_frame): + # 2. Fast Inline VRAM Downscaling into our static memory slot + # Reshape to (Batch, Channel, Height, Width) seamlessly without duplicating data + gpu_tensor = device_frame[None, :].permute(0, 3, 1, 2).float() + + resized_tensor = torch.nn.functional.interpolate( + gpu_tensor, + size=(self.disp_h, self.disp_w), + mode="nearest", + ) + + # CONVERTS TO CPU EARLIER (WORKS but lowers fps) + # hwc_byte_tensor = resized_tensor.squeeze(0).permute(1, 2, 0).byte() + # cpu_tensor = hwc_byte_tensor.cpu() + # bgr_contiguous = cpu_tensor.contiguous() + + # Using copy_() avoids creating any runtime allocations or memory-stride drift. + self.static_gpu_byte_bchw.copy_(resized_tensor.byte()) + + # Safely reshape the pre-allocated, locked GPU memory layout back to standard HWC array topology. + # Since the underlying array layout is strictly contiguous, this permute is guaranteed + # to be zero-copy on the GPU and free from memory race stalls. + bgr_contiguous = self.static_gpu_byte_bchw.squeeze(0).permute(1, 2, 0) + + # 1. Grab the current free pinned slot tracking variables from your reader + d2h_idx = self.reader.d2h_selector + pinned_tensor_buf = self.reader.d2h_buffers[d2h_idx] + + # c_idx = self.canvas_selector + # current_canvas = self.static_host_canvases[c_idx] + + # host_tensor_view = torch.as_tensor(current_canvas, device="cpu") + + # 3. Non-blocking asynchronous PCIe DMA Download directly into our page-locked canvas + with torch.cuda.stream(self.reader.download_stream): + # pinned_tensor = torch.from_numpy(current_canvas).cuda() + pinned_tensor_buf.copy_(bgr_contiguous, non_blocking=True) + + # Synchronize only the side download stream layout channel + self.reader.download_stream.synchronize() + + cpu_360p_frame = self.reader.d2h_numpys[d2h_idx] + + # 5. Non-Blocking Push straight to your background AsyncVideoWriter thread pool + # We pass a direct .copy() slice so the hot loop can instantly reuse the pinned ring buffer + display_frame = np.array(cpu_360p_frame, copy=True, order="C") + + if display_frame is not None and display_frame.shape[-1] == 3: + display_frame = cv2.cvtColor(display_frame, cv2.COLOR_RGB2BGR) + + # --- Draw Detection Overlays --- + if isinstance(metadata_or_bbs, dict): + # Object Mode (YOLO Structs) + display_frame = get_metadata_overlay( + display_frame, + metadata_or_bbs, + class_list, + (scale_display_x, scale_display_y), + (self.disp_w, self.disp_h), + is_bgr=True, + ) + + elif metadata_or_bbs is not None: + # # Motion / Smart Filtering Overlay Path + display_frame = get_bb_overlay( + display_frame, + metadata_or_bbs, + (scale_display_x, scale_display_y), + (self.disp_w, self.disp_h), + ) + if hasattr(display_frame, "copy"): + clean_canvas = display_frame.copy() + else: + clean_canvas = np.ascontiguousarray(display_frame) + self.async_writer.write_frame(clean_canvas, frameNum) + # self.canvas_selector = 1 - self.canvas_selector + self.reader.d2h_selector = 1 - self.reader.d2h_selector + + else: + # Reusable baseline track for CPU execution mappings + display_frame = cv2.resize( + device_frame, + (self.disp_w, self.disp_h), + interpolation=cv2.INTER_NEAREST, + ) + # if metrics["bbs"] is not None: + # for box in metrics["bbs"]: + # cv2.rectangle(cpu_resized, (int(box[0]), int(box[1])), (int(box[2]), int(box[3])), (0, 255, 0), 2) + # --- Draw Detection Overlays --- + if isinstance(metadata_or_bbs, dict): + # Object Mode (YOLO Structs) + display_frame = get_metadata_overlay( + display_frame, + metadata_or_bbs, + class_list, + (scale_display_x, scale_display_y), + (self.disp_w, self.disp_h), + is_bgr=True, + ) + + elif metadata_or_bbs is not None: + # # Motion / Smart Filtering Overlay Path + display_frame = get_bb_overlay( + display_frame, + metadata_or_bbs, + (scale_display_x, scale_display_y), + (self.disp_w, self.disp_h), + ) + self.async_writer.write_frame(display_frame, frameNum) - # # Scale to 8K and clamp - # clean_full = clean_640p * self.scales_tensor - # # clean_full[:, [0, 2]] = clean_full[:, [0, 2]].clamp(0, self.frame_width) - # # clean_full[:, [1, 3]] = clean_full[:, [1, 3]].clamp(0, self.frame_height) - # return clean_full + return - xmin = clean_640p[:, 0] - ymin = clean_640p[:, 1] - w = clean_640p[:, 2] - h = clean_640p[:, 3] + def frame2outputv1( + self, + device_frame, + frameNum, + data_to_draw, + class_list, + ): + # scale_display_x = self.disp_w / 640 + # scale_display_y = self.disp_h / 640 - xmax = xmin + w - ymax = ymin + h + if self.device_input == "cuda" and torch.is_tensor(device_frame): + # 2. Fast Inline VRAM Downscaling into our static memory slot + # Reshape to (Batch, Channel, Height, Width) seamlessly without duplicating data + gpu_tensor = device_frame[None, :].permute(0, 3, 1, 2).float() - # Stack into standard format layout [xmin, ymin, xmax, ymax] - standard_boxes = torch.stack([xmin, ymin, xmax, ymax], dim=1) + resized_tensor = torch.nn.functional.interpolate( + gpu_tensor, + size=(self.disp_h, self.disp_w), + mode="nearest", + ) - # 4. Scale to absolute 8K workspace dimensions accurately - return standard_boxes * self.scales_tensor + # CONVERTS TO CPU EARLIER (WORKS but lowers fps) + # hwc_byte_tensor = resized_tensor.squeeze(0).permute(1, 2, 0).byte() + # cpu_tensor = hwc_byte_tensor.cpu() + # bgr_contiguous = cpu_tensor.contiguous() - # def pipeline_fn(self, device_frame, overall_frame_num, is_target_frame): - # # ─── LAZY CUDA STREAM INITIALIZATION FOR PROCESS ISOLATION ─── - # # Ensures streams are bound directly to the active executing process memory space - # if getattr(self, "device_input", "cpu") == "cuda": - # if not hasattr(self, "stream") or self.stream is None: - # self.stream = cv2.cuda.Stream() - # if not hasattr(self, "bgs_stream") or self.bgs_stream is None: - # self.bgs_stream = cv2.cuda.Stream() - # # ───────────────────────────────────────────────────────────── - - # global all_metadata - # current_clip_id = self.clip_id - # current_clip_key = f"{self.name}_{current_clip_id:03d}.mp4" - # current_clip_path = f"{self.config.SHARED_OUTPUT}/{current_clip_key}" - # # --- MOTION MASK GENERATION GATE --- - # if self.config.sf_enabled: - # if self.device_input == "cuda": - # inf_data = self.rbtd_full_gpu(device_frame) - # torch.cuda.current_stream().synchronize() - # if isinstance(inf_data, dict) and "mask" in inf_data: - # if torch.is_tensor(inf_data["mask"]): - # inf_data["mask"] = inf_data["mask"].contiguous() - # else: - # inf_data = self.rbtd_full_cpu(device_frame) - # else: - # inf_data = {} - - # # --- PIPELINE AT TARGET RATE --- - # if not is_target_frame: - # return - - # # if is_target_frame: - # self.next_process_idx += self.step_size - # self.frame_count_target += 1 # 1-indexed - # self.frame_in_clip_count += 1 - # inf_data["frameNum"] = self.frame_count_target - - # # --- CLIP GENERATION --- - # if self.config.ENABLE_QUERYING: - # if self.config.DEBUG_FLAG and ( - # self.frame_in_clip_count % 15 == 0 or self.frame_in_clip_count == 1 - # ): - # print( - # f"[CLIPPER] Frame progress tracking index: {self.frame_in_clip_count}/{self.max_frames_per_clip} (Overall Frame: {overall_frame_num})", - # flush=True, - # ) + # Using copy_() avoids creating any runtime allocations or memory-stride drift. + self.static_gpu_byte_bchw.copy_(resized_tensor.byte()) - # self.prep_frame_for_video(device_frame, overall_frame_num) + # Safely reshape the pre-allocated, locked GPU memory layout back to standard HWC array topology. + # Since the underlying array layout is strictly contiguous, this permute is guaranteed + # to be zero-copy on the GPU and free from memory race stalls. + bgr_contiguous = self.static_gpu_byte_bchw.squeeze(0).permute(1, 2, 0) - # if self.frame_in_clip_count > self.max_frames_per_clip: - # global clip_completion_tracker - # if current_clip_key not in clip_completion_tracker: - # clip_completion_tracker[current_clip_key] = { - # "video": False, - # "meta": False, - # "start_time": time.time(), - # } + # 1. Grab the current free pinned slot tracking variables from your reader + d2h_idx = self.reader.d2h_selector + pinned_tensor_buf = self.reader.d2h_buffers[d2h_idx] - # clip_completion_tracker[current_clip_key]["meta"] = True - # print( - # f" [BARRIER-SEAL] All metadata extracted for {current_clip_key}. Evaluating convergence...", - # flush=True, - # ) - # self._evaluate_barrier_and_dispatch( - # current_clip_key, - # current_clip_path, - # self.resize_w, - # self.resize_h, - # ) + # c_idx = self.canvas_selector + # current_canvas = self.static_host_canvases[c_idx] - # self.start_new_clip() - - # if not self.config.DISABLE_DETECTION: - # # --- FULL-RESOLUTION ROI EXTRACTION MAPS --- - # bbs_full_res = None - # if self.config.sf_enabled: - # if self.device_input == "cuda": - # bbs_full_res = self.get_gpu_rois( - # inf_data["full_frame"], - # self.frame_count_target, - # inf_data["mask"], - # ) - # else: - # bbs_full_res = self.get_cpu_rois( - # inf_data["full_frame"], - # self.frame_count_target, - # inf_data["mask"], - # ) + # host_tensor_view = torch.as_tensor(current_canvas, device="cpu") - # # Isolate raw coordinate matrices out of device graphs to prevent exit race conditions - # # clean_bbs = [] - # # if self.config.sf_enabled and bbs_full_res is not None: - # # if torch.is_tensor(bbs_full_res): - # # clean_bbs = bbs_full_res.detach().cpu().tolist() - # # elif isinstance(bbs_full_res, list): - # # clean_bbs = [ - # # b.detach().cpu().tolist() if torch.is_tensor(b) else b - # # for b in bbs_full_res - # # ] - # # else: - # # clean_bbs = bbs_full_res - # clean_bbs = [] - # if self.config.sf_enabled and bbs_full_res is not None: - # if torch.is_tensor(bbs_full_res): - # clean_bbs = bbs_full_res.detach().cpu().numpy() - # else: - # clean_bbs = np.array(bbs_full_res) - - # # print(f"[DEBUG] {current_clip_key}: {len(clean_bbs)} ROIs detected!") - - # if self.config.DETECTION_TYPE != "motion": - # # Object Mode: Run YOLO and prepare metadata - # det_frame = ( - # inf_data["full_frame"] - # if "full_frame" in inf_data - # else device_frame - # ) # RGB - # merged = clean_bbs if self.config.sf_enabled else None - # # num_bbs = 0 if merged is None else len(clean_bbs) - # # print(f"[DEBUG] {current_clip_key} 'merged' num bbs: {num_bbs}") - # metadata, _ = self.get_detections( - # det_frame, - # self.frame_in_clip_count, # self.frame_count_target, - # merged=merged, - # thickness=self.config.THICKNESS, - # device_input=self.config.device_input, - # ) - # if self.config.DEBUG_FLAG: - # meta_keys = ", ".join(list(metadata.keys())) - # print( - # f"[DEBUG] {current_clip_key} metadata keys: {meta_keys}", - # flush=True, - # ) - # if current_clip_key not in all_metadata: - # all_metadata[current_clip_key] = {"object": {}, "face": {}} + # 3. Non-blocking asynchronous PCIe DMA Download directly into our page-locked canvas + with torch.cuda.stream(self.reader.download_stream): + # pinned_tensor = torch.from_numpy(current_canvas).cuda() + pinned_tensor_buf.copy_(bgr_contiguous, non_blocking=True) - # all_metadata[current_clip_key]["object"].update(metadata) - # # data_to_draw = metadata + # Synchronize only the side download stream layout channel + self.reader.download_stream.synchronize() - # # print(f"Sending to queue", flush=True) + cpu_360p_frame = self.reader.d2h_numpys[d2h_idx] + print( + f"[FASTAPI-TRACE A] Frame #{frameNum} downloaded from GPU. Shape: {cpu_360p_frame.shape if cpu_360p_frame is not None else 'NONE'}", + flush=True, + ) + # Explicitly update shared state indicators so main.py can map the buffer + self.ready_buffer_idx.value = d2h_idx + # self.shared_details["last_id"] = frameNum - # display_source = ( - # inf_data["full_frame"] - # if (inf_data and "full_frame" in inf_data) - # else device_frame - # ) + # 5. Non-Blocking Push straight to your background AsyncVideoWriter thread pool + # We pass a direct .copy() slice so the hot loop can instantly reuse the pinned ring buffer + display_frame = np.array(cpu_360p_frame, copy=True, order="C") - # if self.device_input == "cuda": - # gpu_resized = F.interpolate( - # display_source.unsqueeze(0).float(), - # size=(self.disp_h, self.disp_w), - # mode="bilinear", - # align_corners=False, - # ).squeeze(0).contiguous() - # disp_frame = np.copy( - # tensor2opencv( - # gpu_resized, self.config.device_input, is_bgr=True - # ) - # ) - # else: - # cpu_resized = cv2.resize(device_frame, (self.disp_w, self.disp_h)) - # disp_frame = np.copy( - # tensor2opencv( - # cpu_resized, self.config.device_input, is_bgr=True - # ) - # ) + if display_frame is not None and display_frame.shape[-1] == 3: + display_frame = cv2.cvtColor(display_frame, cv2.COLOR_RGB2BGR) - # data_to_draw = ( - # clean_bbs if self.config.DETECTION_TYPE == "motion" else metadata - # ) + self.reader.d2h_selector = 1 - self.reader.d2h_selector - # # PUSH FRAME UNCONDITIONALLY: Ensures the test encoder gets raw frame tokens - # try: - # self.render_queue.put_nowait( # put( - # ( - # disp_frame, - # inf_data["frameNum"], - # data_to_draw, - # self.label_source, - # ) - # ) - # except queue.Full: - # pass + else: + display_frame = cv2.resize( + device_frame, + (self.disp_w, self.disp_h), + interpolation=cv2.INTER_NEAREST, + ) + # disp_frame = np.copy( + # tensor2opencv(cpu_resized, self.config.device_input, is_bgr=True) + # ) - # self.update_frame() + # PUSH FRAME UNCONDITIONALLY: Ensures the test encoder gets raw frame tokens + try: + if ( + hasattr(self, "render_queue") + and getattr(self, "render_queue", None) is not None + # and not self.render_queue.full() + ): + print( + f"[FASTAPI-TRACE B] Frame #{frameNum} pushing to render_queue. Current Q Size: {self.render_queue.qsize()}", + flush=True, + ) + self.render_queue.put_nowait( # put( put_nowait + ( + display_frame, + frameNum, + data_to_draw, + class_list, + ) + ) + print( + f"[FASTAPI-TRACE C] Frame #{frameNum} successfully enqueued into render_queue.", + flush=True, + ) + if hasattr(self, "signal_queue") and self.signal_queue is not None: + try: + # Non-blocking push to unstick main.py + self.signal_queue.put_nowait((True, frameNum)) + except queue.Full: + pass + except queue.Full: + pass def pipeline_fn( - self, device_frame, overall_frame_num, is_target_frame, stat_start_time + self, + device_frame, + overall_frame_num, + # is_target_frame, + stat_start_time, + current_clip_id, ): global all_metadata - current_clip_id = self.clip_id + # current_clip_id = self.clip_id current_clip_key = f"{self.name}_{current_clip_id:03d}.mp4" current_clip_path = f"{self.config.SHARED_OUTPUT}/{current_clip_key}" # --- MOTION MASK GENERATION GATE --- if self.config.sf_enabled: if self.device_input == "cuda": - inf_data = self.rbtd_full_gpu(device_frame) + bgs_input_frame = ( + device_frame.byte() + if torch.is_tensor(device_frame) + else device_frame + ) + inf_data = self.rbtd_full_gpu(bgs_input_frame) # torch.cuda.current_stream().synchronize() # if isinstance(inf_data, dict) and "mask" in inf_data: # if torch.is_tensor(inf_data["mask"]): @@ -3194,14 +4159,14 @@ def pipeline_fn( inf_data = {} # --- PIPELINE AT TARGET RATE --- - if not is_target_frame: - return + # if not is_target_frame: + # return # if is_target_frame: # self.next_process_idx += self.step_size - self.frame_count_target += 1 # 1-indexed - self.frame_in_clip_count += 1 - inf_data["frameNum"] = self.frame_count_target + # self.frame_count_target += 1 # 1-indexed + # self.frame_in_clip_count += 1 + inf_data["frameNum"] = overall_frame_num # self.frame_count_target # --- CLIP GENERATION --- if self.config.ENABLE_QUERYING: @@ -3236,7 +4201,7 @@ def pipeline_fn( self.resize_h, ) - self.start_new_clip() + self.start_new_clip(current_clip_id) if not self.config.DISABLE_DETECTION: # --- FULL-RESOLUTION ROI EXTRACTION MAPS --- @@ -3245,13 +4210,13 @@ def pipeline_fn( if self.device_input == "cuda": bbs_full_res = self.get_gpu_rois( inf_data["full_frame"], - self.frame_count_target, + inf_data["frameNum"], inf_data["mask"], ) else: bbs_full_res = self.get_cpu_rois( inf_data["full_frame"], - self.frame_count_target, + inf_data["frameNum"], inf_data["mask"], ) @@ -3263,29 +4228,46 @@ def pipeline_fn( else: clean_bbs = np.array(bbs_full_res) + # If inline optimizations left the tensor in channels-first format (B, C, H, W), + # restore it to standard standard layout standard (H, W, C) so get_detections + # can decode bounding boxes accurately without corrupting weights. + det_frame = device_frame + # Cast float canvases back to standard unsigned byte tracking arrays + # so get_detections can safely run its internal float normalizations. + if torch.is_tensor(det_frame): + det_frame = det_frame.byte() + + if det_frame.ndim == 4: + det_frame = det_frame.squeeze(0).permute(1, 2, 0) + elif det_frame.shape[0] == 3: + det_frame = det_frame.permute(1, 2, 0) + # print(f"[DEBUG] {current_clip_key}: {len(clean_bbs)} ROIs detected!") if self.config.DETECTION_TYPE != "motion": - # Object Mode: Run YOLO and prepare metadata - if "full_frame" in inf_data: - det_frame = inf_data["full_frame"] - else: - det_frame = ( - device_frame.clone() - if torch.is_tensor(device_frame) - else device_frame.copy() - ) + # # Object Mode: Run YOLO and prepare metadata + # if "full_frame" in inf_data: + # det_frame = inf_data["full_frame"] + # else: + # det_frame = ( + # device_frame.clone() + # if torch.is_tensor(device_frame) + # else device_frame.copy() + # ) merged = clean_bbs if self.config.sf_enabled else None # num_bbs = 0 if merged is None else len(clean_bbs) # print(f"[DEBUG] {current_clip_key} 'merged' num bbs: {num_bbs}") - metadata, _ = self.get_detections( + metadata, num_objs = self.get_detections( det_frame, self.frame_in_clip_count, # self.frame_count_target, merged=merged, thickness=self.config.THICKNESS, device_input=self.config.device_input, ) + + # num_objs = len(list(metadata.keys())) + self.total_objects_detected += num_objs if self.config.DEBUG_FLAG: meta_keys = ", ".join(list(metadata.keys())) print( @@ -3297,61 +4279,42 @@ def pipeline_fn( all_metadata[current_clip_key]["object"].update(metadata) # data_to_draw = metadata + # if self.config.DEBUG_FLAG or + if overall_frame_num % 50 == 0: + print( + f"[METADATA-DEBUG A] Logged tracking structures for Frame #{overall_frame_num} into dictionary key: {current_clip_key}. Number detections: {self.total_objects_detected} (+{num_objs})", + flush=True, + ) # print(f"Sending to queue", flush=True) - display_source = ( - inf_data["full_frame"] - if (inf_data and "full_frame" in inf_data) - else device_frame - ) - if self.device_input == "cuda": - gpu_resized = ( - F.interpolate( - display_source.unsqueeze(0).float(), - size=(self.disp_h, self.disp_w), - mode="bilinear", - align_corners=False, - ) - .squeeze(0) - .contiguous() - ) - disp_frame = np.copy( - tensor2opencv(gpu_resized, self.config.device_input, is_bgr=True) - ) - else: - cpu_resized = cv2.resize(device_frame, (self.disp_w, self.disp_h)) - disp_frame = np.copy( - tensor2opencv(cpu_resized, self.config.device_input, is_bgr=True) - ) + # torch.cuda.synchronize() + self.inference_stream.synchronize() data_to_draw = ( clean_bbs if self.config.DETECTION_TYPE == "motion" else metadata ) - # PUSH FRAME UNCONDITIONALLY: Ensures the test encoder gets raw frame tokens - try: - if ( - hasattr(self, "render_queue") - and getattr(self, "render_queue", None) is not None - # and not self.render_queue.full() - ): - self.render_queue.put( # put( put_nowait - ( - disp_frame, - inf_data["frameNum"], - data_to_draw, - self.label_source, - ) - ) - except queue.Full: - pass + if self.config.TEST_MODE: + self.frame2video( + det_frame, + inf_data["frameNum"], + data_to_draw, + self.label_source, + ) + else: + self.frame2output( + det_frame, + inf_data["frameNum"], + data_to_draw, + self.label_source, + ) - self.update_frame(stat_start_time) + # self.update_frame(stat_start_time) # VIDEO CLIPPING - def start_new_clip(self): + def start_new_clip(self, clip_id): """ Seals the current AI tracking state layout and safely moves the instance metadata references to the next sequential file block segment index. @@ -3359,7 +4322,7 @@ def start_new_clip(self): global clip_completion_tracker, all_metadata # Capture context pointers prior to counter mutation steps - old_clip_id = self.clip_id + old_clip_id = clip_id # self.clip_id old_clip_key = f"{self.name}_{old_clip_id:03d}.mp4" # old_clip_path = f"{self.config.SHARED_OUTPUT}/{old_clip_key}" @@ -3378,7 +4341,7 @@ def start_new_clip(self): # self._evaluate_barrier_and_dispatch(old_clip_key, old_clip_path, self.resize_w, self.resize_h) # Mutate tracker instance metrics parameters for the upcoming segment chunk window - self.clip_id += 1 + # self.clip_id += 1 self.frame_in_clip_count = 1 self._check_shm_safety(threshold_percent=90) @@ -3458,6 +4421,12 @@ def _async_clipper_worker(self, device_frame, frame_num): ).squeeze(0) gpu_final = gpu_resized.clamp(0, 255).to(torch.uint8) + + # If the tensor shape follows PyTorch's standard format (Channels, Height, Width), + # we reverse the channel order [0, 1, 2] to [2, 1, 0] (RGB -> BGR) + if gpu_final.ndim == 3 and gpu_final.shape[0] == 3: + gpu_final = gpu_final[[2, 1, 0], :, :] + gpu_contiguous = gpu_final.permute(1, 2, 0).contiguous() active_tensor = self.pinned_tensors[self.gpu_ring_idx] @@ -3480,7 +4449,7 @@ def _async_clipper_worker(self, device_frame, frame_num): device_frame, (self.resize_w, self.resize_h), dst=active_matrix, - interpolation=cv2.INTER_LINEAR, + interpolation=cv2.INTER_NEAREST, ) self.write_queue.put( @@ -3523,9 +4492,13 @@ def _initialize_writer(self): "-i", "-", "-c:v", - "libx264", #"mpeg4", # Or "libx264" if you prefer H.264 - "-crf","23", - "-f","mpegts","-movflags","faststart", + "libx264", # "mpeg4", # Or "libx264" if you prefer H.264 + "-crf", + "23", + "-f", + "mpegts", + "-movflags", + "faststart", "-force_key_frames", f"expr:gte(t,n_forced*{clip_duration})", "-f", @@ -3566,10 +4539,10 @@ def _initialize_writer(self): ) # Fire memory loop monitor - self.log_parser_thread = threading.Thread( - target=self._ffmpeg_log_parser_loop, daemon=True - ) - self.log_parser_thread.start() + # self.log_parser_thread = threading.Thread( + # target=self._ffmpeg_log_parser_loop, daemon=True + # ) + # self.log_parser_thread.start() log_to_logger( f"Persistent native-segmenting FFmpeg writer spawned for stream: {self.name}", @@ -3958,6 +4931,29 @@ def allocate_gpu(self): # Create a dedicated background stream for encoding tasks self.encode_stream = cv2.cuda.Stream() + # Allocate a permanent float32/float16 channel layout space directly on VRAM + self.static_gpu_360p = torch.empty( + (1, 3, self.disp_h, self.disp_w), + dtype=torch.float32, + device="cuda", + ) + self.static_gpu_byte_bchw = torch.empty( + (1, 3, self.disp_h, self.disp_w), + dtype=torch.uint8, + device="cuda", + ).contiguous() + + # Create two isolated tracking canvases to handle the ping-pong data stream + self.static_host_canvases = [ + np.zeros((self.disp_h, self.disp_w, 3), dtype=np.uint8), + np.zeros((self.disp_h, self.disp_w, 3), dtype=np.uint8), + ] + self.canvas_selector = 0 + + # Register BOTH buffers as page-locked memory + cv2.cuda.registerPageLocked(self.static_host_canvases[0]) + cv2.cuda.registerPageLocked(self.static_host_canvases[1]) + def prepare_gpu_pipeline(self): self.operation_device_map = PipelineMapping( resize_device="gpu", @@ -4116,7 +5112,7 @@ def cleanup_gpu(self): if torch.cuda.is_available(): torch.cuda.empty_cache() - def apply_background_subtraction_gpu( + def apply_background_subtraction_gpuv1( self, include_history=True, method="and", stream=None ): stream = stream if isinstance(stream, cv2.cuda.Stream) else self.stream @@ -4171,6 +5167,67 @@ def apply_background_subtraction_gpu( # self.fgMask, self.prev_bkgd, stream=stream # ) + def apply_background_subtraction_gpu( + self, motion_input, include_history=True, method="and", stream=None + ): + stream = stream if isinstance(stream, cv2.cuda.Stream) else self.stream + raw_mask = self.backSub.apply( + motion_input, + 0.005, # float(self.lr), + stream=stream, + ) + + if include_history: + # If this is the first run, clone the mask instead of ANDing with an empty/white buffer + # if len(self.mask_history) < 1: + # self.prev_bkgd.setTo(255, stream) # Clear the initial white buffer + self.prev_bkgd.setTo(0, stream=self.bgs_stream) + for m in list(self.mask_history): + # Dilate the historical mask on GPU + dilated = self.dilate_filter_for_enhanced_mask.apply(m, stream=stream) + + if method == "or": + # Bitwise OR on GPU + cv2.cuda.bitwise_or( + self.prev_bkgd, dilated, self.prev_bkgd, stream=stream + ) + else: + # Bitwise AND on GPU + cv2.cuda.bitwise_and( + self.prev_bkgd, dilated, self.prev_bkgd, stream=stream + ) + + self.mask_history.append(raw_mask.clone()) + raw_mask = cv2.cuda.bitwise_or( + raw_mask, self.prev_bkgd, stream=self.bgs_stream + ) + return raw_mask + + # min_val, max_val, _, _ = cv2.cuda.minMaxLoc(self.prev_bkgd) + # if max_val != min_val and max_val > 0: + # # bitor = cv2.cuda.bitwise_or( + # # self.fgMask, self.prev_bkgd, stream=stream + # # ) + # # bitand = cv2.cuda.bitwise_and( + # # self.fgMask, self.prev_bkgd, stream=stream + # # ) + # # not_bitand = cv2.cuda.bitwise_not(self.prev_bkgd, stream=stream) + # # self.fgMask = cv2.cuda.subtract(self.fgMask, bitand, stream=stream) + # self.fgMask = cv2.cuda.bitwise_or( + # self.fgMask, self.prev_bkgd, stream=stream + # ) + # # self.fgMask = cv2.cuda.bitwise_or( + # # self.fgMask, self.mask_history[-2], stream=stream + # # ) + # # if method == "or": + # # self.fgMask = cv2.cuda.bitwise_and( + # # self.fgMask, self.prev_bkgd, stream=stream + # # ) + # # else: + # # self.fgMask = cv2.cuda.bitwise_or( + # # self.fgMask, self.prev_bkgd, stream=stream + # # ) + def rbtd_full_gpuv1(self, frame): """ GPU-Accelerated Motion Detection Pipeline (Producer). @@ -4224,69 +5281,6 @@ def rbtd_full_gpuv1(self, frame): stream=self.bgs_stream, ) - # self.bgs_stream.waitForCompletion() - # Clean up the motion mask using Thresholding and Morphology (Dilation) - # cv2.cuda.threshold( - # self.fgMask, - # self.config.THRESHOLD_VALUE, - # 255, - # cv2.THRESH_BINARY, - # dst=self.gpu_threshold_dst_frame, - # stream=self.bgs_stream, - # ) - # self.dilate_filter.apply( - # self.gpu_threshold_dst_frame, dst=self.labels_gpu, stream=self.bgs_stream - # ) - - # return { - # # "frameNum": frameNum, # overall frame - # "mask": self.labels_gpu, # GpuMat pointer to cleaned mask - # # "full_frame": frame, # Kept for high-res cropping - # "full_frame": frame, # current_gpu_frame, - # } - - # if self.config.ENABLE_QUERYING and self.video_writer: # and not self.video_queue.full(): - # self.pinned_downloaded_resizedframe_np = self.resized_frame.download(stream) - # # self.resized_frame.download(self.stream, self.pinned_downloaded_resizedframe_np) - # # self.video_writer.write(self.pinned_downloaded_resizedframe_np) - # self.write_queue.put(self.pinned_downloaded_resizedframe_np.copy()) - - # if ( - # (self.debug_range[0] * self.target_fps) - # <= self.frame_count - # <= (self.debug_range[1] * self.target_fps) - # ): - # mask_cpu = self.fgMask.download() # fgMask is a GpuMat from the backend - # mask_path = f"{self.out_imgdir}/mask_frame_{self.frame_count}.png" - # cv2.imwrite(mask_path, mask_cpu) - # print(f"[DEBUG] Saved BGS Mask: {mask_path}") - - # -------------- - # NOISE FILTERING: Median Blur (Kills pixel noise) - # if not hasattr(self, 'median_filter'): - # self.median_filter = cv2.cuda.createMedianFilter(cv2.CV_8UC1, 5) - - # # Syntax: apply(src, dst, stream) - # self.median_filter.apply(self.fgMask, self.fgMask, self.bgs_stream) - - # # MORPHOLOGY: Erode then Dilate (Opening) - # if not hasattr(self, 'erode_filter'): - # # 3x3 kernel is sufficient when combined with a median filter - # kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3)) - - # # In OpenCV 4.x, use createMorphologyFilter for both Erode and Dilate - # self.erode_filter = cv2.cuda.createMorphologyFilter(cv2.MORPH_ERODE, cv2.CV_8UC1, kernel) - # self.dilate_filter = cv2.cuda.createMorphologyFilter(cv2.MORPH_DILATE, cv2.CV_8UC1, kernel) - - # # Shave off noise (Erode) - # self.erode_filter.apply(self.fgMask, self.fgMask, self.bgs_stream) - - # # Restore object size (Dilate) - # self.dilate_filter.apply(self.fgMask, self.fgMask, self.bgs_stream) - - # return {"mask": self.fgMask, "full_frame": frame} - # -------------- - # Clean up the motion mask using Thresholding and Morphology (Dilation) # Fused Cleanup (Threshold + Dilate) # This replaces: cv2.cuda.threshold AND cv2.cuda.dilate @@ -4347,25 +5341,40 @@ def rbtd_full_gpuv1(self, frame): def rbtd_full_gpu(self, device_frame): """ - Asynchronously handles downsampling, conversion, background subtraction, and morphology - by reshaping PyTorch CUDA Tensors to interleaved layouts before mapping to GpuMat. + Asynchronously handles downsampling, conversion, background subtraction, and + morphology while writing out intermediate files for stage-by-stage debugging. """ - # 1. BRIDGE THE PYTORCH TO OPENCV VRAM GAP (ZERO-COPY & INTERLEAVED) - if torch.is_tensor(device_frame): - # Reshape tensor to channel-last layout [H, W, C] to completely prevent the 3x3 grid tiling artifact - interleaved_frame = device_frame.permute(1, 2, 0).contiguous() + if self.config.DEBUG_FLAG: + # Create a dedicated directory structure for this stage's debug snapshots + stage_debug_dir = self.result_dir / "debug_stages" / self._testMethodName + stage_debug_dir.mkdir(parents=True, exist_ok=True) + f_num = self.frame_count_target - h_raw, w_raw, ch = interleaved_frame.shape - cuda_mem_ptr = interleaved_frame.data_ptr() + # 1. BRIDGE THE PYTORCH TO OPENCV VRAM GAP (ZERO-COPY & STRIDE-ALIGNED) + if torch.is_tensor(device_frame): + h_raw, w_raw, ch = device_frame.shape + cuda_mem_ptr = device_frame.data_ptr() cv_type = cv2.CV_8UC3 if ch == 3 else cv2.CV_8UC1 + # Explicitly pass structural step row pitch to avoid memory tearing artifacts + row_step_bytes = device_frame.stride()[0] * device_frame.element_size() src_gpu_mat = cv2.cuda.createGpuMatFromCudaMemory( - h_raw, w_raw, cv_type, cuda_mem_ptr + h_raw, w_raw, cv_type, cuda_mem_ptr, step=row_step_bytes ) else: src_gpu_mat = device_frame ch = src_gpu_mat.channels() + # [STAGE 1 DEBUG] Save incoming source frame immediately after GpuMat mapping + if self.config.DEBUG_FLAG and f_num <= self.config.DEBUG_FRAME_LIMIT: + src_cpu = src_gpu_mat.download() + # If the source is in RGB, flip channels to BGR so cv2.imwrite saves true colors + if ch == 3: + src_cpu = cv2.cvtColor(src_cpu, cv2.COLOR_RGB2BGR) + cv2.imwrite( + str(stage_debug_dir / f"frame_{f_num:04d}_stage1_src.jpg"), src_cpu + ) + # 2. INSTANTIATE GPUMAT CONTROLLERS WITH STRIDED LAYOUT HEADERS recycled_resize_mat = cv2.cuda.GpuMat( self.resize_h, self.resize_w, cv2.CV_8UC3 if ch == 3 else cv2.CV_8UC1 @@ -4380,12 +5389,25 @@ def rbtd_full_gpu(self, device_frame): src_gpu_mat, dst=recycled_resize_mat, dsize=(self.resize_w, self.resize_h), - interpolation=cv2.INTER_LINEAR, + interpolation=cv2.INTER_NEAREST, stream=self.bgs_stream, ) + # [STAGE 2 DEBUG] Check Downsampled Frame + if self.config.DEBUG_FLAG and f_num <= self.config.DEBUG_FRAME_LIMIT: + self.bgs_stream.waitForCompletion() # Synchronize stream briefly to download safely + resize_cpu = recycled_resize_mat.download() + if ch == 3: + resize_cpu = cv2.cvtColor(resize_cpu, cv2.COLOR_RGB2BGR) + cv2.imwrite( + str(stage_debug_dir / f"frame_{f_num:04d}_stage2_resize.jpg"), + resize_cpu, + ) + # 4. COLOR LAYOUT CORRECTION (COLLAPSE CHANNELS SAFELY) if recycled_resize_mat.channels() == 3: + # NOTE: If your input tensor is RGB, use COLOR_RGB2GRAY. + # If it's already converted to BGR inside your framework handlers, keep COLOR_BGR2GRAY. cv2.cuda.cvtColor( recycled_resize_mat, cv2.COLOR_BGR2GRAY, @@ -4396,45 +5418,66 @@ def rbtd_full_gpu(self, device_frame): else: motion_input = recycled_resize_mat - # 4. EXECUTE SEGMENTATION METRICS - raw_mask = self.backSub.apply( + # [STAGE 3 DEBUG] Check Grayscale Input going into Background Subtractor + if self.config.DEBUG_FLAG and f_num <= self.config.DEBUG_FRAME_LIMIT: + self.bgs_stream.waitForCompletion() + gray_cpu = motion_input.download() + cv2.imwrite( + str(stage_debug_dir / f"frame_{f_num:04d}_stage3_gray.jpg"), gray_cpu + ) + + # 5. EXECUTE BACKGROUND SUBTRACTION + # raw_mask = self.backSub.apply( + # motion_input, + # 0.005, # float(self.lr) + # stream=self.bgs_stream, + # ) + + raw_mask = self.apply_background_subtraction_gpu( motion_input, - 0.005, # float(self.lr), + include_history=self.config.BKGD_SUB_INCLUDE_HISTORY, + method=self.config.BKGD_SUB_INCLUDE_HISTORY_METHOD, stream=self.bgs_stream, ) - include_history = self.config.BKGD_SUB_INCLUDE_HISTORY - method = self.config.BKGD_SUB_INCLUDE_HISTORY_METHOD - if include_history: - # If this is the first run, clone the mask instead of ANDing with an empty/white buffer - # if len(self.mask_history) < 1: - # self.prev_bkgd.setTo(255, stream) # Clear the initial white buffer - - for m in list(self.mask_history): - # Dilate the historical mask on GPU - dilated = self.dilate_filter_for_enhanced_mask.apply( - m, stream=self.bgs_stream - ) - - if method == "or": - # Bitwise OR on GPU - cv2.cuda.bitwise_or( - self.prev_bkgd, dilated, self.prev_bkgd, stream=self.bgs_stream - ) - else: - # Bitwise AND on GPU - cv2.cuda.bitwise_and( - self.prev_bkgd, dilated, self.prev_bkgd, stream=self.bgs_stream - ) + # [STAGE 4 DEBUG] Check Raw Output directly from Subtractor Kernel + # if self.config.DEBUG_FLAG and f_num <= self.config.DEBUG_FRAME_LIMIT: + # self.bgs_stream.waitForCompletion() + # raw_mask_cpu = raw_mask.download() + # cv2.imwrite(str(stage_debug_dir / f"frame_{f_num:04d}_stage4_raw_mask.jpg"), raw_mask_cpu) + + # 6. MASK HISTORY ACCUMULATION LIFECYCLE + # include_history = self.config.BKGD_SUB_INCLUDE_HISTORY + # method = self.config.BKGD_SUB_INCLUDE_HISTORY_METHOD + # if include_history: + # self.prev_bkgd.setTo(0, stream=self.bgs_stream) + # for m in list(self.mask_history): + # dilated = self.dilate_filter_for_enhanced_mask.apply( + # m, stream=self.bgs_stream + # ) + # if method == "or": + # cv2.cuda.bitwise_or( + # self.prev_bkgd, dilated, self.prev_bkgd, stream=self.bgs_stream + # ) + # else: + # cv2.cuda.bitwise_and( + # self.prev_bkgd, dilated, self.prev_bkgd, stream=self.bgs_stream + # ) - self.mask_history.append(raw_mask.clone()) + # self.mask_history.append(raw_mask.clone()) + # raw_mask = cv2.cuda.bitwise_or( + # raw_mask, self.prev_bkgd, stream=self.bgs_stream + # ) - min_val, max_val, _, _ = cv2.cuda.minMaxLoc(self.prev_bkgd) - if max_val != min_val and max_val > 0: - raw_mask = cv2.cuda.bitwise_or( - raw_mask, self.prev_bkgd, stream=self.bgs_stream - ) + # [STAGE 5 DEBUG] Check Mask after History ORing/ANDing steps + if self.config.DEBUG_FLAG and f_num <= self.config.DEBUG_FRAME_LIMIT: + self.bgs_stream.waitForCompletion() + hist_mask_cpu = raw_mask.download() + cv2.imwrite( + str(stage_debug_dir / f"frame_{f_num:04d}_stage5_history_mask.jpg"), + hist_mask_cpu, + ) - # 5. MORPHOLOGICAL TRANSFORMATIONS BINARY FILTERS + # 7. MORPHOLOGICAL TRANSFORMATIONS & BINARY FILTERS cv2.cuda.threshold( raw_mask, self.config.THRESHOLD_VALUE, @@ -4444,27 +5487,35 @@ def rbtd_full_gpu(self, device_frame): stream=self.bgs_stream, ) - # cv2.cuda.dilate( - # thresh_mask, - # clean_mask, - # self.dilate_kernel, - # stream=self.bgs_stream - # ) + # [STAGE 6 DEBUG] Check Binary Threshold Output + if self.config.DEBUG_FLAG and f_num <= self.config.DEBUG_FRAME_LIMIT: + self.bgs_stream.waitForCompletion() + thresh_cpu = thresh_mask.download() + cv2.imwrite( + str(stage_debug_dir / f"frame_{f_num:04d}_stage6_threshold.jpg"), + thresh_cpu, + ) + self.dilate_filter.apply(thresh_mask, clean_mask, self.bgs_stream) - # 6. ENFORCE INDEPENDENT WORKSPACE MEMORY VIEWS - # Allocate an isolated output mask surface container + # 8. ENFORCE INDEPENDENT WORKSPACE MEMORY VIEWS isolated_kernel_mask = cv2.cuda.GpuMat( self.resize_h, self.resize_w, cv2.CV_8UC1 ) clean_mask.copyTo(dst=isolated_kernel_mask, stream=self.bgs_stream) - # return isolated_kernel_mask - # self.bgs_stream.waitForCompletion() + # [STAGE 7 DEBUG] Check Final Dilated Output Mask + if self.config.DEBUG_FLAG and f_num <= self.config.DEBUG_FRAME_LIMIT: + self.bgs_stream.waitForCompletion() + final_mask_cpu = isolated_kernel_mask.download() + cv2.imwrite( + str(stage_debug_dir / f"frame_{f_num:04d}_stage7_final_mask.jpg"), + final_mask_cpu, + ) return { - "mask": isolated_kernel_mask, # GpuMat pointer to cleaned mask - "full_frame": device_frame, # current_gpu_frame, + "mask": isolated_kernel_mask, + "full_frame": device_frame, } def findContours_gpu(self, mask, method="fused"): @@ -4621,7 +5672,7 @@ def cleanup_cpu(self): if hasattr(self, "mask_history"): self.mask_history.clear() - def apply_background_subtraction_cpu(self, include_history=True, method="and"): + def apply_background_subtraction_cpuv1(self, include_history=True, method="and"): self.fgMask = self.backSub.apply( self.cpu_resized_frame, learningRate=float(self.lr) ) @@ -4653,7 +5704,43 @@ def apply_background_subtraction_cpu(self, include_history=True, method="and"): combined_mask_bool = (self.fgMask > 0) | (self.prev_bkgd > 0) self.fgMask = combined_mask_bool.astype(np.uint8) * 255 - def rbtd_full_cpu(self, frame): + def apply_background_subtraction_cpu( + self, motion_input, include_history=True, method="and" + ): + raw_mask = self.backSub.apply( + motion_input, learningRate=self.config.BKGD_SUB_MOG2_LR + ) + + if include_history: + # If this is the first run, clone the mask instead of ANDing with an empty/white buffer + # if len(self.mask_history) < 1: + # self.prev_bkgd.setTo(0, stream) # Clear the initial white buffer + self.prev_bkgd = np.zeros((self.resize_h, self.resize_w), dtype="uint8") + for m in list(self.mask_history): + # Dilate the historical mask on CPU + dilated = cv2.dilate( + m, self.dilate_kernel_for_enhanced_mask, iterations=1 + ) + + if method == "or": + # Bitwise OR on CPU + cv2.bitwise_or(self.prev_bkgd, dilated, dst=self.prev_bkgd) + else: + # Bitwise AND on CPU + cv2.bitwise_and(self.prev_bkgd, dilated, dst=self.prev_bkgd) + + self.mask_history.append(raw_mask.copy()) + + # if ( + # self.prev_bkgd.max() != self.prev_bkgd.min() + # and self.prev_bkgd.max() > 0 + # ): + # combined_mask_bool = (self.fgMask > 0) | (self.prev_bkgd > 0) + # self.fgMask = combined_mask_bool.astype(np.uint8) * 255 + raw_mask = cv2.bitwise_or(raw_mask, self.prev_bkgd) + return raw_mask + + def rbtd_full_cpuv1(self, frame): """ CPU-Based Motion Detection Pipeline (Producer). @@ -4712,3 +5799,97 @@ def rbtd_full_cpu(self, frame): "mask": mask, "full_frame": frame, # Kept for high-res cropping } + + # def rbtd_full_cpu(self, frame): + # # --- PHASE 1: NATIVE CACHE-PINNED RESIZE --- + # # Fetch the exact background resolution constraints natively required by your config + # # We assume self.resize_w and self.resize_h reflect your locked tracking target dimensions + # target_w, target_h = self.resize_w, self.resize_h + + # # Safe Multi-Threaded Canvas Initialization Guard: + # # Dynamically instantiate the static persistent memory matrices on the first frame pass. + # # This completely stops the Python heap engine from allocating new arrays on subsequent frames. + # if not hasattr(self, "_pinned_small_frame") or self._pinned_small_frame.shape[ + # :2 + # ] != (target_h, target_w): + # self._pinned_small_frame = np.zeros((target_h, target_w, 3), dtype=np.uint8) + # self._pinned_fg_mask = np.zeros((target_h, target_w), dtype=np.uint8) + # self._pinned_dilated_mask = np.zeros((target_h, target_w), dtype=np.uint8) + # self._pinned_global_mask = np.zeros(frame.shape[:2], dtype=np.uint8) + + # # Force a zero-allocation resize into our pre-allocated, sequential cache-line matrix buffer + # cv2.resize( + # frame, + # (target_w, target_h), + # dst=self._pinned_small_frame, + # interpolation=cv2.INTER_NEAREST, + # ) + + # # --- PHASE 2: STRIPPED SINGLE-THREAD BACKGROUND ARITHMETIC --- + # # Run background subtraction straight into our static memory address lane + # # We pass your configured learning rate (BKGD_SUB_MOG2_LR) to lock the temporal parameters + # self._pinned_fg_mask = self.backSub.apply( + # self._pinned_small_frame, + # # dst=self._pinned_fg_mask, + # learningRate=self.config.BKGD_SUB_MOG2_LR, + # ) + + # # Execute morphology dilation inline within our zero-allocation ring workspace [PDF: 0.1.18] + # cv2.dilate( + # self._pinned_fg_mask, + # self.dilate_kernel, + # dst=self._pinned_dilated_mask, + # iterations=1, + # ) + + # return {"full_frame": frame, "mask": self._pinned_dilated_mask} + + def rbtd_full_cpu(self, frame): + # --- PHASE 1: NATIVE CACHE-PINNED RESIZE --- + # Fetch the exact background resolution constraints natively required by your config + # We assume self.resize_w and self.resize_h reflect your locked tracking target dimensions + target_w, target_h = self.resize_w, self.resize_h + + # Safe Multi-Threaded Canvas Initialization Guard: + # Dynamically instantiate the static persistent memory matrices on the first frame pass. + # This completely stops the Python heap engine from allocating new arrays on subsequent frames. + if not hasattr(self, "_pinned_small_frame") or self._pinned_small_frame.shape[ + :2 + ] != (target_h, target_w): + self._pinned_small_frame = np.zeros((target_h, target_w, 3), dtype=np.uint8) + self._pinned_fg_mask = np.zeros((target_h, target_w), dtype=np.uint8) + self._pinned_dilated_mask = np.zeros((target_h, target_w), dtype=np.uint8) + self._pinned_global_mask = np.zeros(frame.shape[:2], dtype=np.uint8) + + # Force a zero-allocation resize into our pre-allocated, sequential cache-line matrix buffer + cv2.resize( + frame, + (target_w, target_h), + dst=self._pinned_small_frame, + interpolation=cv2.INTER_NEAREST, + ) + + # --- PHASE 2: STRIPPED SINGLE-THREAD BACKGROUND ARITHMETIC --- + # Run background subtraction straight into our static memory address lane + # We pass your configured learning rate (BKGD_SUB_MOG2_LR) to lock the temporal parameters + # self._pinned_fg_mask = self.backSub.apply( + # self._pinned_small_frame, + # # dst=self._pinned_fg_mask, + # learningRate=self.config.BKGD_SUB_MOG2_LR, + # ) + + self._pinned_fg_mask = self.apply_background_subtraction_cpu( + self._pinned_small_frame, + include_history=self.config.BKGD_SUB_INCLUDE_HISTORY, + method=self.config.BKGD_SUB_INCLUDE_HISTORY_METHOD, + ) + + # Execute morphology dilation inline within our zero-allocation ring workspace [PDF: 0.1.18] + cv2.dilate( + self._pinned_fg_mask, + self.dilate_kernel, + dst=self._pinned_dilated_mask, + iterations=1, + ) + + return {"full_frame": frame, "mask": self._pinned_dilated_mask} diff --git a/fastapi/include/models.py b/fastapi/include/models.py index e9dc452..a20792c 100644 --- a/fastapi/include/models.py +++ b/fastapi/include/models.py @@ -83,9 +83,9 @@ def get_model( ): final_model_path = f"{model_dir}/{model_name}.pt" pt_detection_model = YOLO(final_model_path, verbose=False, task="detect") - label_source = [] - for k, v in pt_detection_model.names.items(): - label_source.append(v) + + # Secure the master label source dictionary reference from the raw baseline weights + master_names_dict = pt_detection_model.names if run_platform == "openvino": final_model_path = f"{model_dir}/{model_name}_openvino_model/" @@ -96,7 +96,7 @@ def get_model( dynamic=dynamic_flag, device=device_input, # batch=batch, - data={"names": pt_detection_model.names}, + data={"names": master_names_dict}, ) object_detection_model = YOLO( @@ -105,13 +105,50 @@ def get_model( task="detect", ) - # det_ov_model = core.read_model(final_model_path+"yolo11n.xml") - # ov_config = {hints.performance_mode: hints.PerformanceMode.LATENCY} - # if device == "GPU": - # ov_config["GPU_DISABLE_WINOGRAD_CONVOLUTION"] = "YES" - # compiled_model = core.compile_model(det_ov_model, device, ov_config) + import numpy as np + import openvino as ov + import openvino.preprocess as wp + from openvino import properties + + core = ov.Core() + det_ov_model = core.read_model(final_model_path + f"{model_name}.xml") + + # --- ULTRA-FAST HIGH-SPEED C++ GRAPH INJECTION --- + # We tell the OpenVINO compiler graph to apply the layout shift + # and normalization layers natively in C++ before returning data to Python + ppp = wp.PrePostProcessor(det_ov_model) + + # Inject an implicit transposition rule directly onto the output layer node + # This shifts shapes from [1, 5, 8400] -> [1, 8400, 5] automatically in memory + output = ppp.output(0) + output.tensor().set_layout(ov.Layout("NCW")) + output.model().set_layout(ov.Layout("NWC")) + + # Build the modifications back into the primary model reference structure + det_ov_model = ppp.build() + + ov_config = { + # properties.hint.performance_mode(): properties.hint.PerformanceMode.THROUGHPUT, + properties.hint.performance_mode(): properties.hint.PerformanceMode.LATENCY, + properties.streams.num(): 1, # Set strictly to 1 to prevent thread thrashing #2, + properties.inference_num_threads(): os.cpu_count() or 4, + } + compiled_model = core.compile_model( + det_ov_model, device_input.upper(), ov_config + ) + dummy_canvas = np.zeros((model_h, model_w, 3), dtype=np.uint8) + _ = object_detection_model.predict(dummy_canvas, verbose=False, save=False) # object_detection_model.predictor.model.ov_compiled_model = compiled_model + if ( + hasattr(object_detection_model, "predictor") + and object_detection_model.predictor is not None + ): + # Re-map the raw execution backend instance to utilize the multi-stream parameters + object_detection_model.predictor.model.backend.ov_compiled_model = ( + compiled_model + ) + elif run_platform == "engine": final_model_path = f"{model_dir}/{model_name}.engine" onnx_model_path = f"{model_dir}/{model_name}.onnx" @@ -159,7 +196,7 @@ def get_model( dynamic=True, device=device_input, simplify=True, - data={"names": pt_detection_model.names}, + data={"names": master_names_dict}, ) if hasattr(pt_detection_model.model, "stride"): @@ -174,7 +211,7 @@ def get_model( metadata={ "stride": max_stride, "task": "detect", - "names": pt_detection_model.names, + "names": master_names_dict, }, ) @@ -200,7 +237,7 @@ def get_model( device=device_input, simplify=True, batch=batch, - data={"names": pt_detection_model.names}, + data={"names": master_names_dict}, ) object_detection_model = YOLO(final_model_path, verbose=False, task="detect") @@ -215,6 +252,13 @@ def get_model( else: raise ValueError(f"[!] Model for {run_platform} is not implemented.") + # --- SAFELY COMPILING FINAL DEFINITIVE LABELS LIST --- + # Interrogate the runtime model instance dictionary first; fallback directly to master reference maps + current_names = ( + getattr(object_detection_model, "names", master_names_dict) or master_names_dict + ) + label_source = [current_names[i] for i in sorted(current_names.keys())] + return object_detection_model, final_model_path, label_source diff --git a/fastapi/include/readers.py b/fastapi/include/readers.py index 8494b08..dc89d23 100644 --- a/fastapi/include/readers.py +++ b/fastapi/include/readers.py @@ -5,17 +5,15 @@ import sys import threading import time -import traceback +from multiprocessing import Process, Value +from multiprocessing.shared_memory import SharedMemory import av import cv2 import numpy as np import torch -import torch.nn.functional as F from ultralytics.utils.checks import check_imgsz -# from fastapi import FastAPI - # ----- SETUP LOGGING ----- logging.basicConfig( level=logging.INFO, @@ -32,19 +30,10 @@ main_app_logger = logging.getLogger(__name__) - # ----- PIPELINE CONFIGURATION ----- os.environ["PYTORCH_ALLOC_CONF"] = "expandable_segments:True" -# Force OpenCV to use a single thread for its operations. -# This prevents internal OpenCV threads from "racing" against AI logic. -# cv2.setNumThreads(1) - -# Force OpenCV to run sequentially to prevent context-switching overhead cv2.setNumThreads(0) -# DEVICE = os.getenv("DEVICE", "CPU") -# device_input = DEVICE.lower() if DEVICE == "CPU" else "cuda" - from include.default_configs import ENABLE_QUERYING_DEFAULT from include.utils import PipelineConfig, manual_fps_calculation, str2bool @@ -58,7 +47,6 @@ INGESTION=os.getenv("INGESTION", "object"), MODEL_NAME=os.getenv("MODEL_NAME", "yolo11n"), OMIT_DETECTIONS_FLAG=str2bool(os.getenv("OMIT_DETECTIONS_FLAG", False)), - # RESIZE_FLAG=str2bool(os.getenv("RESIZE_FLAG", False)), SHARED_MODEL=os.getenv("SHARED_MODEL", False), SHARED_OUTPUT=os.getenv("SHARED_OUTPUT", "/var/www/mp4"), TEST_MODE=str2bool(os.getenv("TEST_MODE", False)), @@ -67,59 +55,203 @@ UDF_PORT=5011, ) -# Placeholder for dynamic import for PyNvVideoCodec (GPU package) -nvc = None +# def capture_shared_memory_worker(source_input, shm_name, frame_shape, running_flag): +# """Isolated background process bypassing the GIL to update raw uncompressed RAM.""" +# if str(source_input).lower().startswith("rtsp://"): +# os.environ["OPENCV_FFMPEG_CAPTURE_OPTIONS"] = "rtsp_transport;tcp;buffer_size;15728640;threads;16" +# elif "OPENCV_FFMPEG_CAPTURE_OPTIONS" in os.environ: +# del os.environ["OPENCV_FFMPEG_CAPTURE_OPTIONS"] + +# cap = cv2.VideoCapture(source_input, cv2.CAP_FFMPEG) +# if not cap.isOpened(): +# running_flag.value = False +# return + +# existing_shm = SharedMemory(name=shm_name) +# shared_array = np.ndarray(frame_shape, dtype=np.uint8, buffer=existing_shm.buf) + +# try: +# while running_flag.value: +# ret, frame = cap.read() +# if not ret or frame is None: +# running_flag.value = False +# break +# shared_array[:] = frame[:] +# except Exception: +# running_flag.value = False +# finally: +# cap.release() +# existing_shm.close() +import sys -# ----- VIDEO READERS ----- -class BaseReader: - def __init__( - self, - source, - target_fps=BASE_PIPELINE_CONFIG.TARGET_FPS, - clip_duration=BASE_PIPELINE_CONFIG.CLIP_DURATION, - queue_size=2, - ): - self.source = source - self.is_rtsp = str(self.source).startswith("rtsp://") - self.frame_idx = 0 - self.frame_queue = queue.Queue(maxsize=queue_size) # 2) # 5 - self.stopped = False - self.reconnect_failed = False - self.init_error = None - self.target_fps = ( - float(target_fps) if target_fps not in [None, 0] else target_fps +# Self-contained worker script executed in an isolated process shell to prevent global CUDA import pollution +# WORKER_SCRIPT = """ +# import os +# import sys +# import cv2 +# import numpy as np +# from multiprocessing.shared_memory import SharedMemory +# source_input = sys.argv[1] +# shm_name = sys.argv[2] +# h, w, c = map(int, sys.argv[3].split(',')) +# frame_shape = (h, w, c) +# retry_cnt = 0 +# max_retries = 5 +# cap = None +# if str(source_input).lower().startswith("rtsp://"): +# os.environ["OPENCV_FFMPEG_CAPTURE_OPTIONS"] = "rtsp_transport;tcp;buffer_size;15728640;threads;16" +# while retry_cnt < max_retries: +# cap = cv2.VideoCapture(source_input, cv2.CAP_FFMPEG) +# if cap.isOpened(): +# break +# retry_cnt += 1 +# # Exit immediately if it's a local file path layout to save CPU cycles +# if not str(source_input).lower().startswith("rtsp://"): +# break +# wait_time = retry_cnt * 2 +# # Standard string stdout message to pass back to the tracking shell logs +# print(f"RTSP background channel pending... Retry ({retry_cnt}/{max_retries}) in {wait_time}s.") +# import time +# time.sleep(wait_time) +# if cap is None or not cap.isOpened(): +# import sys +# sys.exit(1) +# try: +# shm = SharedMemory(name=shm_name) +# shared_array = np.ndarray(frame_shape, dtype=np.uint8, buffer=shm.buf) +# # Read continuously until stdin is closed by the parent process +# while sys.stdin.read(1) == '1': +# ret, frame = cap.read() +# if not ret or frame is None: +# break +# shared_array[:] = frame[:] +# except Exception: +# pass +# finally: +# cap.release() +# """ +from multiprocessing import Condition + + +def capture_shared_memory_worker( + source_input, + shm_names, + frame_shape, + running_flag, + raw_frame_counter, + latest_idx, + reader_idx, + frame_condition, + buffer_occupancy, + target_fps, +): + """Isolated background process using triple-buffering pointer rotation to eliminate memcpy.""" + if str(source_input).lower().startswith("rtsp://"): + os.environ["OPENCV_FFMPEG_CAPTURE_OPTIONS"] = ( + "rtsp_transport;tcp;buffer_size;33554432;threads;32;max_delay;500000" ) - self.clip_duration = ( - float(clip_duration) if clip_duration not in [None, 0] else clip_duration + # "rtsp_transport;tcp;buffer_size;52428800;fifo_size;500000;max_delay;100000;stimeout;2000000" + # "rtsp_transport;tcp;buffer_size;15728640;threads;16" + elif "OPENCV_FFMPEG_CAPTURE_OPTIONS" in os.environ: + del os.environ["OPENCV_FFMPEG_CAPTURE_OPTIONS"] + + retry_cnt = 0 + max_retries = 5 + cap = None + is_rtsp_stream = str(source_input).lower().startswith("rtsp://") + + while retry_cnt < max_retries: + cap = cv2.VideoCapture( + source_input, + cv2.CAP_FFMPEG, + [cv2.CAP_PROP_HW_ACCELERATION, cv2.VIDEO_ACCELERATION_ANY], ) + if cap.isOpened(): + break - def start(self): - threading.Thread(target=self.stream_frames, daemon=True).start() - return self + retry_cnt += 1 + if not is_rtsp_stream or retry_cnt >= max_retries: + main_app_logger.error( + f"Critical: Could not open/connect to video resource: {source_input}" + ) + running_flag.value = False + return - def stop(self): - """Cleanly stop the reader and release resources.""" - self.stopped = True - self.release() + wait_time = retry_cnt * 2 + main_app_logger.warning( + f"RTSP process connection pending... Retry ({retry_cnt}/{max_retries}) in {wait_time} seconds." + ) + time.sleep(wait_time) + + # existing_shm = SharedMemory(name=shm_name) + # shared_array = np.ndarray(frame_shape, dtype=np.uint8, buffer=existing_shm.buf) + # Map all 3 shared memory regions simultaneously + shm_blocks = [SharedMemory(name=name) for name in shm_names] + # from multiprocessing import resource_tracker + # for shm in shm_blocks: + # resource_tracker.unregister(shm._name, "shared_memory") + arrays = [ + np.ndarray(frame_shape, dtype=np.uint8, buffer=shm.buf) for shm in shm_blocks + ] + + write_idx = 0 + worker_frame_num = 0.0 + worker_next_process_idx = 0.0 + native_fps = cap.get(cv2.CAP_PROP_FPS) + step_size = float(native_fps) / float(target_fps) + + try: + while running_flag.value: + # 1. Check if this frame is a targeted frame before running heavy decode operations + is_target_frame = worker_frame_num >= worker_next_process_idx + worker_frame_num += 1.0 + + if not is_target_frame: + # Fast metadata-only skip: Zero heavy decode compute or CPU/GPU overhead + if not cap.grab(): + running_flag.value = False + break + continue + + ret, frame = cap.read() + if not ret or frame is None: + running_flag.value = False + break + + worker_next_process_idx += step_size + + # Prevent local files from overwriting unread ring buffer slots --- + if not str(source_input).lower().startswith("rtsp://"): + while buffer_occupancy.value >= 2 and running_flag.value: + pass + + # Dynamic Ring Buffer Selection: Identify free block + curr_latest = latest_idx.value + curr_reader = reader_idx.value + for idx in (0, 1, 2): + if idx != curr_latest and idx != curr_reader: + write_idx = idx + break - def read(self): - try: - # If the reader is stopped, don't wait a full second; - # check immediately to speed up the "Draining" phase. - wait_time = 0.1 if self.stopped else 2.0 - return self.frame_queue.get(timeout=wait_time) - except Exception: - return None, None + arrays[write_idx][:] = frame[:] + # Notify waiting processing loops without any polling latency + with frame_condition: + latest_idx.value = write_idx + raw_frame_counter.value += 1 + buffer_occupancy.value += 1 + frame_condition.notify_all() # Wake up all waiting reader threads instantly! -class CPUHybridReader(BaseReader): - """ - Decouples frame acquisition from processing. - Uses a background thread to ingest frames into a small deque, - preventing OpenCV buffer lag. - """ + except Exception: + running_flag.value = False + finally: + cap.release() + for shm in shm_blocks: + shm.close() + +class BaseReader: def __init__( self, source, @@ -128,77 +260,72 @@ def __init__( MODEL_W=BASE_PIPELINE_CONFIG.MODEL_W, MODEL_H=BASE_PIPELINE_CONFIG.MODEL_H, queue_size=2, - # as_tensor=False, ): - super().__init__( - source, - target_fps=target_fps, - clip_duration=clip_duration, - queue_size=queue_size, - ) - # self.as_tensor = as_tensor - target_fps, clip_duration = (self.target_fps, self.clip_duration) - # options = ( - # {"rtsp_transport": "tcp", "stimeout": "5000000"} - # if str(self.source).startswith("rtsp") - # else {} - # ) + self.source = source + self.is_rtsp = str(self.source).startswith("rtsp://") + self.frame_queue = queue.Queue(maxsize=queue_size) + self.stopped = False + self.total_input_frames = 0 # Increments by step size (Physical frames) + self.target_frames_passed = 0 # Increments sequentially (Target space frames) + # self.frame_idx = 0.0 + self.total_shm_copy_time = 0.0 + self.total_h2d_time = 0.0 + self.total_gpu_resize_time = 0.0 + self.total_d2h_time = 0.0 + self.total_queue_wait_time = 0.0 self.MODEL_H = MODEL_H self.MODEL_W = MODEL_W - self.device = "CPU" # Global from include.utils - self.target_frame_idx = 0 - self.cap = None + self.target_fps = ( + float(target_fps) if target_fps not in [None, 0] else target_fps + ) + self.clip_duration = ( + float(clip_duration) if clip_duration not in [None, 0] else clip_duration + ) + + probe_cap = None max_retries = 5 retry_cnt = 0 connected = False + # while probe_retry < max_retries: + # probe_cap = cv2.VideoCapture(self.source, cv2.CAP_FFMPEG) + # if probe_cap.isOpened(): + # break + # probe_retry += 1 + # if not self.is_rtsp: + # break + # wait_time = probe_retry * 2 + # main_app_logger.warning( + # f"Connection pending... Retry ({probe_retry}/{max_retries}) in {wait_time} seconds." + # ) + # time.sleep(wait_time) + while not connected and not self.stopped: try: - # Clean up stale capture descriptors safely to clear sockets - if self.cap is not None: - try: - self.cap.release() - except Exception: - pass - self.cap = None - - # Safely intercept capture context extraction layers - # Note: We pass self.source instead of recreating string evaluations - if not isinstance(self.source, cv2.VideoCapture): - params = [cv2.CAP_PROP_N_THREADS, 1] - test_cap = cv2.VideoCapture( - str(self.source), cv2.CAP_FFMPEG, params=params - ) - else: - test_cap = self.source - - if test_cap and test_cap.isOpened(): - # Validate that we can extract safe telemetry properties + probe_cap = cv2.VideoCapture(self.source, cv2.CAP_FFMPEG) + if probe_cap.isOpened(): self.get_fps_and_framecnt( - test_cap, self.target_fps, self.clip_duration + probe_cap, self.target_fps, self.clip_duration ) - self.frame_width = int(test_cap.get(cv2.CAP_PROP_FRAME_WIDTH)) - self.frame_height = int(test_cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) - self.numFrames = int(test_cap.get(cv2.CAP_PROP_FRAME_COUNT)) + self.frame_width = int(probe_cap.get(cv2.CAP_PROP_FRAME_WIDTH)) + self.frame_height = int(probe_cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) + self.numFrames = int(probe_cap.get(cv2.CAP_PROP_FRAME_COUNT)) if self.input_fps <= 0 or self.frame_width <= 0: raise RuntimeError( "VideoCapture opened but returned invalid stream properties." ) - - self.cap = test_cap self.get_frameWH() connected = True + probe_cap.release() else: raise RuntimeError( "OpenCV VideoCapture failed to open target URI resource context." ) - except Exception as e: retry_cnt += 1 self.init_error = str(e) - # Exit if local file resource or retry count exceeded if not self.is_rtsp or retry_cnt >= max_retries: main_app_logger.error( @@ -208,56 +335,125 @@ def __init__( self.stopped = True # Halt and exit the server immediately raise RuntimeError( - f"Critical CPU stream reader initialization failure: {self.init_error}" + f"Critical stream reader initialization failure: {self.init_error}" ) return wait_time = retry_cnt * 2 main_app_logger.warning( - f"CPU connection pending... Retry ({retry_cnt}/{max_retries}) in {wait_time} seconds." + f"Connection pending... Retry ({retry_cnt}/{max_retries}) in {wait_time} seconds." ) time.sleep(wait_time) - # self.cap = self._create_capture(target_fps, clip_duration) - self.cap.set(cv2.CAP_PROP_BUFFERSIZE, 1) # Force low latency - self.cap.set(cv2.CAP_PROP_HW_ACCELERATION, cv2.VIDEO_ACCELERATION_ANY) + # if probe_cap is None or not probe_cap.isOpened(): + # self.reconnect_failed = True + # self.stopped = True + # raise RuntimeError(f"OpenCV failed to open target resource: {self.source}") - # self.frame_queue = deque(maxlen=5) # Keep queue small to stay "real-time" - # self.frame_queue = queue.Queue(maxsize=5) - # self.stopped = False - # self.device = "CPU" # Global from include.utils - # self.frame_idx = 0 - # self.target_frame_idx = 0 - # self.frame_queue = queue.Queue(maxsize=30) - - def _create_capture(self, target_fps, clip_duration): - """Creates a VideoCapture with stable RTSP options.""" - # if not isinstance(self.source, cv2.VideoCapture): - # self.source = str(self.source) - # params = [cv2.CAP_PROP_N_THREADS, 1] - # cap = cv2.VideoCapture(self.source, cv2.CAP_FFMPEG, params=params) - # else: - # cap = self.source - # self.get_fps_and_framecnt(cap, target_fps, clip_duration) - # self.frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) - # self.frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) - # self.numFrames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT)) + # self.get_fps_and_framecnt(probe_cap, self.target_fps, self.clip_duration) + # self.frame_width = int(probe_cap.get(cv2.CAP_PROP_FRAME_WIDTH)) + # self.frame_height = int(probe_cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) + # self.numFrames = int(probe_cap.get(cv2.CAP_PROP_FRAME_COUNT)) # self.get_frameWH() - # return cap + # probe_cap.release() + + self.frame_shape = (self.frame_height, self.frame_width, 3) + self.frame_bytes = self.frame_width * self.frame_height * 3 + + num_shm_slots = 3 + self.shms = [ + SharedMemory(create=True, size=self.frame_bytes) + for _ in range(num_shm_slots) + ] + + # Unregister slots in the main process to eliminate leak warnings and KeyErrors cleanly + # from multiprocessing import resource_tracker + # for shm in self.shms: + # resource_tracker.unregister(shm._name, "shared_memory") + + self.running_flag = Value("b", True) + self.raw_frame_counter = Value("i", 0) + self.latest_idx = Value("i", 0) # Tracks the newest complete frame index + self.reader_idx = Value("i", -1) # Locks the frame currently being processed + shm_names = [shm.name for shm in self.shms] + # atomic counter to track unread slot density --- + self.buffer_occupancy = Value("i", 0) + + # Create a shared cross-process condition lock variable + self.frame_condition = Condition() + + self.worker = Process( + target=capture_shared_memory_worker, + args=( + self.source, + shm_names, + self.frame_shape, + self.running_flag, + self.raw_frame_counter, + self.latest_idx, + self.reader_idx, + self.frame_condition, + self.buffer_occupancy, + self.target_fps, + ), + daemon=True, + ) + self.worker.start() + time.sleep(2.5 if self.is_rtsp else 0.05) + + if not self.running_flag.value: + for shm in self.shms: + shm.close() + shm.unlink() + raise RuntimeError( + "Background worker process failed to map the stream link." + ) + + # self.shared_array_view = np.ndarray(self.frame_shape, dtype=np.uint8, buffer=self.shms.buf) + # self.static_buffer_numpy = np.empty(self.frame_shape, dtype=np.uint8) + + # self.thread = threading.Thread(target=self._processing_loop, daemon=True) + # self.thread.start() + + def read(self): + try: + wait_time = 0.1 if self.stopped else 2.0 + return self.frame_queue.get(timeout=wait_time) + except Exception: + return None, None, None + + def start(self): + self.thread = threading.Thread(target=self._processing_loop, daemon=True) + self.thread.start() + return self + + def stop(self): + self.stopped = True + if hasattr(self, "thread"): + self.thread.join(timeout=1.0) + for shm in self.shms: + try: + shm.close() + shm.unlink() + except Exception: + pass + + if hasattr(self, "bridge_thread"): + self.bridge_thread.join(timeout=1.0) - if isinstance(self.source, cv2.VideoCapture): - return self.source - params = [cv2.CAP_PROP_N_THREADS, 1] - return cv2.VideoCapture(str(self.source), cv2.CAP_FFMPEG, params=params) + if hasattr(self, "worker"): + self.worker.join(timeout=1.0) # Gets video details def get_fps_and_framecnt(self, cap, target_fps, clip_duration): - self.input_fps = int(cap.get(cv2.CAP_PROP_FPS)) # hardware fps + self.input_fps = cap.get(cv2.CAP_PROP_FPS) # hardware fps # print(f"in fps: {self.input_fps} target fps: {target_fps}") if self.input_fps == 0: # Case when FPS isn't available self.input_fps = manual_fps_calculation(cap, num_frames=10) print(f"new in fps: {self.input_fps}") - + self.numFrames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT)) + if not self.is_rtsp: + self.total_input_frames = self.numFrames # If the stream can't connect, stop immediately instead of calculating. if self.input_fps <= 0: raise RuntimeError( @@ -304,773 +500,427 @@ def get_frameWH(self): self.scale_x = self.frame_width / self.MODEL_W self.scale_y = self.frame_height / self.MODEL_H - def stream_frames(self): - """ - Continuously grabs frames. Throttles local files to maintain - the target FPS and manages RTSP reconnections. - """ - is_rtsp = str(self.source).startswith("rtsp") - max_retries = 5 - retry_cnt = 0 - - while not self.stopped: - try: - if self.cap is None or not self.cap.isOpened(): - if not is_rtsp: - self.stopped = True - break - try: - # Logic to recreate the VideoCapture - # self.cap = self._create_capture( - # self.target_fps, self.clip_duration - # ) - # self.cap.set(cv2.CAP_PROP_BUFFERSIZE, 1) - params = [cv2.CAP_PROP_N_THREADS, 1] - self.cap = cv2.VideoCapture( - str(self.source), cv2.CAP_FFMPEG, params=params - ) - self.cap.set(cv2.CAP_PROP_BUFFERSIZE, 1) - retry_cnt = 0 - except Exception: - retry_cnt += 1 - if retry_cnt >= max_retries: - self.stopped = True - break - - wait_time = retry_cnt * 2 - main_app_logger.warning( - f"CPU reconnect failed. Retry {retry_cnt} in {wait_time}s" - ) - time.sleep(wait_time) - continue - - # Fully decode this frame - ret, frame = self.cap.read() - if not ret: - if not is_rtsp: - self.stopped = True - break - - # If a live stream returns No Frame, don't just die—trigger a reconnect - main_app_logger.warning("No frame received. Attempting reconnect.") - if self.cap: - self.cap.release() - self.cap = None - continue - - # if self.as_tensor: - # frame_tensor = torch.from_numpy(frame) - - # # 3. Push to GPU memory immediately - # # non_blocking=True speeds up the host-to-device transfer - # frame_tensor = frame_tensor.to("cuda", non_blocking=True) - # # 4. Rearrange dimensions to PyTorch format: [H, W, C] -> [C, H, W] - # # .permute() changes layout; .float() converts uint8 to float32 for interpolation - # frame_tensor = frame_tensor.permute(2, 0, 1).float() - - # # 5. Add Batch dimension: [C, H, W] -> [1, C, H, W] - # frame_tensor = frame_tensor.unsqueeze(0) - - # # 6. Normalize pixel values to [0.0, 1.0] if required by your model - # frame = frame_tensor / 255.0 - - # self.frame_queue.put((frame, self.frame_idx)) - try: - self.frame_queue.put((frame, self.frame_idx), timeout=1.0) - except queue.Full: - try: - # Non-blocking pop to gracefully evict the oldest stale frame token - self.frame_queue.get_nowait() - except queue.Empty: - pass - self.frame_queue.put((frame, self.frame_idx)) - self.target_frame_idx += 1 - self.frame_idx += 1 - except Exception as e: - main_app_logger.error(f"CPU Reader error: {e}") - time.sleep(1) - - def release(self): - print("Closing HybridReader...") - self.stopped = True - - time.sleep(0.2) - if self.cap is not None and self.cap.isOpened(): - self.cap.release() - - -class GPUHybridReader(BaseReader): - """ - Encapsulates a Zero-Copy 8K video pipeline. - Bridges PyAV (Demuxing) and NVDEC (Hardware Decoding) directly to PyTorch. - """ +class CPUReader(BaseReader): + """Asynchronous CPU frame reader and processor utilizing AVX2 optimized OpenCV routines.""" def __init__( self, source, - gpu_id=0, target_fps=BASE_PIPELINE_CONFIG.TARGET_FPS, clip_duration=BASE_PIPELINE_CONFIG.CLIP_DURATION, MODEL_W=BASE_PIPELINE_CONFIG.MODEL_W, MODEL_H=BASE_PIPELINE_CONFIG.MODEL_H, queue_size=2, ): - global nvc + # self.source_input = source_input + # self.frame_queue = queue.Queue(maxsize=30) + # self.stopped = False + # self.total_shm_copy_time = 0.0 + # self.total_h2d_time = 0.0 + # self.total_gpu_resize_time = 0.0 + # self.total_d2h_time = 0.0 super().__init__( source, target_fps=target_fps, clip_duration=clip_duration, + MODEL_W=MODEL_W, + MODEL_H=MODEL_H, queue_size=queue_size, ) - if "PyNvVideoCodec" not in sys.modules: - try: - import PyNvVideoCodec as nvc + # self.MODEL_H = MODEL_H + # self.MODEL_W = MODEL_W + self.device = "CPU" - globals()["nvc"] = nvc + # self.shm = SharedMemory(create=True, size=self.frame_bytes) + # self.running_flag = Value('b', True) - except ImportError: - raise ImportError( - "GPUHybridReader requires PyNvVideoCodec. Please install." - ) - - self.gpu_id = gpu_id - self.container = None - self.nv_dec = None - self.bsf = None - - # --- Initialize CUDA Context & Bridge --- - torch.cuda.set_device(self.gpu_id) - torch.cuda.init() - _ = torch.zeros(1).cuda() # Force context creation - - # self.is_opened = self.open(target_fps, clip_duration) - self.cuda_lib = ctypes.CDLL("libcuda.so.1") - ctx = ctypes.c_void_p() - self.cuda_lib.cuCtxGetCurrent(ctypes.byref(ctx)) - self.cuda_ctx_handle = ctx.value if ctx.value is not None else 0 - - self.cuda_lib.cuCtxSetCurrent(ctypes.c_void_p(self.cuda_ctx_handle)) - target_fps, clip_duration = (self.target_fps, self.clip_duration) - self.av_options = ( - { - # "rtsp_transport": "tcp", - # "stimeout": "2000000", # 2s - # "probesize": "10000000", # "32000000", # 32MB for 8K - # "analyzeduration": "5000000", - # "buffer_size": "10240000", # 10MB socket buffer - "rtsp_transport": "tcp", - "stimeout": "2000000", - "timeout": "2000000", - "rw_timeout": "2000000", - "err_detect": "explode", - "flags": "discardcorrupt", - "probesize": "32000000", - "analyzeduration": "32000000", - } - if str(self.source).startswith("rtsp") - else {} - ) - - # try: - # self.container = av.open( - # self.source, - # options={ - # **self.av_options, - # "err_detect": "ignore_err", # Don't stop demuxing on minor packet errors - # "flags": "low_delay", # Reduce internal buffering - # }, + # self.worker = Process( + # target=capture_shared_memory_worker, + # args=(self.source_input, self.shm.name, self.frame_shape, self.running_flag), + # daemon=True # ) - # self.container.streams.video[0].thread_type = 'AUTO' - # streams = self.container.streams.get(video=0) - # self.stream = streams[0] if isinstance(streams, list) else streams + # # self.worker.start() + # time.sleep(2.5) # Warm up wait window + + # if not self.running_flag.value: + # self.shm.close() + # self.shm.unlink() + # raise RuntimeError("Background worker process failed to map the stream link.") + + # self.shared_array_view = np.ndarray(self.frame_shape, dtype=np.uint8, buffer=self.shm.buf) + self.static_buffer_numpy = np.empty(self.frame_shape, dtype=np.uint8) + + # self.thread = threading.Thread(target=self._processing_loop, daemon=True) + # self.thread.start() + + def _processing_loop(self): + # target_fps = 15.0 + # frame_num = 0.0 + # next_process_idx = 0.0 + # step_size = float(self.input_fps) / float(self.target_fps) + # # self.total_queue_wait_time = 0.0 + + # # Base loop pacing on the native camera interval (e.g., 33.3ms for 30 FPS) + # inbound_frame_interval = 1.0 / float(self.input_fps) + last_processed_shm_idx = -1 + while not self.stopped: # and self.running_flag.value: + # loop_start = time.perf_counter() + # is_target_frame = (frame_num >= next_process_idx) + + # frame_num += 1.0 + + # if not is_target_frame: + # continue + + with self.frame_condition: + # Thread sleeps instantly until the background worker calls notify_all() + # self.frame_condition.wait(timeout=1.0) + # Only wait if the background worker hasn't delivered a new index yet + while ( + self.latest_idx.value == last_processed_shm_idx and not self.stopped + ): + if not self.frame_condition.wait(timeout=0.05): + if ( + not self.running_flag.value + and self.latest_idx.value == last_processed_shm_idx + ): + self.stopped = True + break + continue + if self.stopped: + break - self.get_stream() + active_idx = self.latest_idx.value + self.reader_idx.value = active_idx + last_processed_shm_idx = active_idx + + # Signal the worker that a slot has cleared up losslessly --- + self.buffer_occupancy.value = max(0, self.buffer_occupancy.value - 1) + + # is_target_frame = (frame_num >= next_process_idx) + # Reconstruct source frame position using step spacing ratio + # if self.numFrames != 0: + # self.total_input_frames = int( + # self.target_frames_passed * getattr(self, "frame_skip", 1) + # ) + if self.is_rtsp: + self.total_input_frames = int(self.raw_frame_counter.value) + + # Update counters inside target_fps space loop execution + self.target_frames_passed += 1 + + # if not is_target_frame: + # continue + + # # Check if frame is a target frame before heavy operations + # # if frame_num >= next_process_idx: + # next_process_idx += step_size + + t_copy = time.perf_counter() + # np.copyto(self.static_buffer_numpy, self.shared_array_view) + # Zero-Copy Pointer Swap: lock the latest completed buffer index + # active_idx = self.latest_idx.value + # self.reader_idx.value = active_idx + # last_processed_shm_idx = active_idx + + # # Signal the worker that a slot has cleared up losslessly --- + # self.buffer_occupancy.value = max(0, self.buffer_occupancy.value - 1) + + # Wrap an array view directly around the locked active SHM region + active_shm = self.shms[active_idx] + frame_view = np.ndarray( + self.frame_shape, dtype=np.uint8, buffer=active_shm.buf + ) + self.total_shm_copy_time += time.perf_counter() - t_copy - # Map Codec - codec_map = {"hevc": nvc.cudaVideoCodec.HEVC, "h264": nvc.cudaVideoCodec.H264} - self.nvc_codec = codec_map.get( - self.stream.codec_context.name, nvc.cudaVideoCodec.HEVC - ) + if not self.is_rtsp or not self.frame_queue.full(): + t_queue_block = time.perf_counter() + # self.frame_queue.put((True, cpu_360p_frame)) + self.frame_queue.put( + (True, frame_view, self.target_frames_passed) + ) # self.static_buffer_numpy.copy())) + self.total_queue_wait_time += time.perf_counter() - t_queue_block - # self.stream_width = self.stream.width - # self.stream_height = self.stream.height + # frame_num += 1.0 - self.frame_width = self.true_width - self.frame_height = self.true_height + # Keep the reader thread aligned with target ingestion speeds + # elapsed = time.perf_counter() - loop_start + # time_to_wait = inbound_frame_interval - elapsed + # if time_to_wait > 0: + # time.sleep(time_to_wait) - self.input_fps = self.metadata_fps + # self.frame_idx = frame_num + # self.running_flag.value = False - self.target_fps = ( - target_fps - if target_fps not in [None, 0] and self.input_fps > target_fps - else self.input_fps - ) - if self.input_fps > 0 and self.target_fps > 0: - self.frame_skip = max(1, int(self.input_fps / self.target_fps)) - else: - self.frame_skip = 1 - self.max_frames_per_clip = ( - None - if clip_duration is None - else int(self.target_fps * float(clip_duration)) - ) - self.frame_interval = 1.0 / self.target_fps - self.numFrames = self.total_frames +class GPUReader(BaseReader): + """Asynchronous GPU frame reader leveraging Pinned Host Memory and PyTorch CUDA tensors.""" - self.raw_input = torch.empty( - (self.frame_height, self.frame_width, 3), dtype=torch.uint8, device="cuda" + def __init__( + self, + source, + gpu_id=1, # 0, + target_fps=BASE_PIPELINE_CONFIG.TARGET_FPS, + clip_duration=BASE_PIPELINE_CONFIG.CLIP_DURATION, + MODEL_W=BASE_PIPELINE_CONFIG.MODEL_W, + MODEL_H=BASE_PIPELINE_CONFIG.MODEL_H, + queue_size=2, + ): + # self.source_input = source_input + # self.frame_queue = queue.Queue(maxsize=30) + # self.stopped = False + # self.total_shm_copy_time = 0.0 + # self.total_h2d_time = 0.0 + # self.total_gpu_resize_time = 0.0 + # self.total_d2h_time = 0.0 + super().__init__( + source, + target_fps=target_fps, + clip_duration=clip_duration, + MODEL_W=MODEL_W, + MODEL_H=MODEL_H, + queue_size=queue_size, ) - self.sync_locked = True - def get_stream(self): - max_retries = 5 - retry_cnt = 0 - connected = False - is_rtsp = str(self.source).startswith("rtsp") - - while not connected: - try: - self.container = av.open( - self.source, - options={ - **self.av_options, - "err_detect": "ignore_err", # Don't stop demuxing on minor packet errors - "flags": "low_delay", # Reduce internal buffering - }, - ) - self.container.streams.video[0].thread_type = "AUTO" - streams = self.container.streams.get(video=0) - self.stream = streams[0] if isinstance(streams, list) else streams + self.gpu_id = gpu_id + self.device = torch.device(f"cuda:{gpu_id}") - if self.stream: - self.stream_width = self.stream.width - self.stream_height = self.stream.height - connected = True + # self.shm = SharedMemory(create=True, size=self.frame_bytes) + # self.running_flag = Value('b', True) - except Exception as e: - retry_cnt += 1 - self.init_error = str(e) + # self.worker = Process( + # target=capture_shared_memory_worker, + # args=(self.source_input, self.shm.name, self.frame_shape, self.running_flag), + # daemon=True + # ) + # self.worker.start() + # time.sleep(2.5) # Warm up wait window + + # if not self.running_flag.value: + # self.shm.close() + # self.shm.unlink() + # raise RuntimeError("Background worker process failed to map the stream link.") + + # self.shared_array_view = np.ndarray(self.frame_shape, dtype=np.uint8, buffer=self.shm.buf) + + # Reusable hardware space optimizations + # self.static_buffer_tensor = torch.empty(self.frame_shape, dtype=torch.uint8, pin_memory=True) + # self.static_buffer_numpy = self.static_buffer_tensor.numpy() + # Reusable double-buffered hardware space optimizations + # self.static_buffer_tensors = [ + # torch.empty(self.frame_shape, dtype=torch.uint8, pin_memory=True), + # torch.empty(self.frame_shape, dtype=torch.uint8, pin_memory=True) + # ] + # self.static_buffer_numpys = [t.numpy() for t in self.static_buffer_tensors] + # self.buffer_selector = 0 # Alternates between 0 and 1 + self.upload_stream = torch.cuda.Stream(device=self.device) + + self.download_stream = torch.cuda.Stream(device=self.device) + self.d2h_buffers = [ + torch.empty((360, 640, 3), dtype=torch.uint8, pin_memory=True), + torch.empty((360, 640, 3), dtype=torch.uint8, pin_memory=True), + ] + self.d2h_numpys = [b.numpy() for b in self.d2h_buffers] + self.d2h_selector = 0 + + # Reusable hardware space optimizations using OS-level Page-Locking + try: + self.cudart = ctypes.CDLL("libcudart.so") # Linux + except OSError: + self.cudart = ctypes.CDLL("cudart64_120.dll") # Windows - if not is_rtsp or retry_cnt >= max_retries: - main_app_logger.error( - f"Critical: Could not open/connect to {self.source}" - ) - self.reconnect_failed = True - self.stopped = True - # Halt and exit the server immediately - raise RuntimeError( - f"Critical GPU stream reader initialization failure: {self.init_error}" - ) - return + self.pinned_views = [] + cudaHostRegisterPortable = 0x01 # Visible to all CUDA contexts - wait_time = retry_cnt * 2 - main_app_logger.warning( - f"GPU connection pending... Retry ({retry_cnt}/{max_retries}) in {wait_time} seconds." - ) - time.sleep(wait_time) + # Permanently register and create zero-copy tensor views over all 3 SHM allocations + for shm in self.shms: + # 1. Create a ctypes character array mapping directly onto the memoryview buffer + ctypes_array = (ctypes.c_char * self.frame_bytes).from_buffer(shm.buf) - def stream_frames(self): - """ - Universal background thread for 8K video. - - RTSP: Reconnects automatically if the stream drops. - - Files: Processes until EOF and then stops cleanly. - """ - is_rtsp = str(self.source).startswith("rtsp") - max_retries = 5 - retry_cnt = 0 + # 2. Extract the true virtual memory address pointer from the ctypes overlay + shm_ptr = ctypes.c_void_p(ctypes.addressof(ctypes_array)) - # The outer while loop allows RTSP to recover from network hiccups - while not self.stopped: - try: - # Ensure the container and decoder are active - # For RTSP, if the demuxer loop below exits, we re-verify the connection here - if self.container is None: - try: - self.container = av.open( - self.source, - options={ - **self.av_options, - "err_detect": "explode", # Don't stop demuxing on minor packet errors - "flags": "low_delay", # Reduce internal buffering - }, - ) - retry_cnt = 0 - except Exception as e: - retry_cnt += 1 - if retry_cnt >= max_retries: - # Catch the 404 and stop the thread instead of retrying - main_app_logger.info( - f"Stream {self.source} ended or not found. Closing reader." - ) + # 3. Pin the raw memory chunk inside the OS page tracking tables + res = self.cudart.cudaHostRegister( + shm_ptr, self.frame_bytes, cudaHostRegisterPortable + ) + if res != 0: + raise RuntimeError(f"cudaHostRegister failed with status code: {res}") + + # 4. Create a high-speed zero-copy NumPy -> Torch wrapper view over that allocation + shm_numpy = np.ndarray(self.frame_shape, dtype=np.uint8, buffer=shm.buf) + shm_tensor = torch.from_numpy(shm_numpy) + self.pinned_views.append(shm_tensor) + + # self.thread = threading.Thread(target=self._processing_loop, daemon=True) + # self.thread.start() + + def _processing_loop(self): + # target_fps = 15.0 + # frame_num = 0.0 + # next_process_idx = 0.0 + # step_size = float(self.input_fps) / float(self.target_fps) + # # self.total_queue_wait_time = 0.0 + + # # Base loop pacing on the native camera interval (e.g., 33.3ms for 30 FPS) + # inbound_frame_interval = 1.0 / float(self.input_fps) + last_processed_shm_idx = -1 + torch.cuda.synchronize(self.device) + + while not self.stopped: # and self.running_flag.value: + # loop_start = time.perf_counter() + # is_target_frame = (frame_num >= next_process_idx) + + # # Central timeline step tracking + # frame_num += 1.0 + + # if not is_target_frame: + # continue + + with self.frame_condition: + # Thread sleeps instantly until the background worker calls notify_all() + # self.frame_condition.wait(timeout=1.0) + # Only wait if the background worker hasn't delivered a new index yet + while ( + self.latest_idx.value == last_processed_shm_idx and not self.stopped + ): + if not self.frame_condition.wait(timeout=0.05): + if ( + not self.running_flag.value + and self.latest_idx.value == last_processed_shm_idx + ): self.stopped = True break - wait_time = retry_cnt * 2 - main_app_logger.warning( - f"Connection failed ({e}). Retry {retry_cnt}/{max_retries} in {wait_time}s..." - ) - time.sleep(wait_time) continue - - streams = self.container.streams.get(video=0) - self.stream = streams[0] if isinstance(streams, list) else streams - - # INITIALIZE DECODER if missing (Fixes the NoneType Error) - if self.nv_dec is None: - # Sync with PyTorch - self.cuda_lib.cuCtxSetCurrent(ctypes.c_void_p(self.cuda_ctx_handle)) - torch_stream = torch.cuda.current_stream().cuda_stream - - # Detect Codec - codec_map = { - "hevc": nvc.cudaVideoCodec.HEVC, - "h264": nvc.cudaVideoCodec.H264, - } - nvc_codec = codec_map.get( - self.stream.codec_context.name, nvc.cudaVideoCodec.HEVC - ) - - # Professional cards often support 8K HEVC but are capped at 4K for H.264 - if nvc_codec == nvc.cudaVideoCodec.HEVC: - # Use 8K limits for HEVC - hw_max_w, hw_max_h = 8192, 4320 - else: - # Safely default to 4K limits for H.264 and other codecs - hw_max_w, hw_max_h = 4096, 4096 - - # Ensure max dimensions are at least as large as current stream - hw_max_w = max(hw_max_w, self.stream_width) - hw_max_h = max(hw_max_h, self.stream_height) - - # Determine if the library build supports Ultra Low Latency enums. - try: - latency_mode = nvc.DisplayDecodeLatencyType.ULTRA_LOW_LATENCY - except AttributeError: - latency_mode = nvc.DisplayDecodeLatencyType.NATIVE - - self.nv_dec = nvc.CreateDecoder( - gpuid=self.gpu_id, - codec=nvc_codec, - cudacontext=int(self.cuda_ctx_handle), - cudastream=int(torch_stream), - usedevicememory=1, - maxwidth=hw_max_w, # Force 8K profile support - maxheight=hw_max_h, - latency=latency_mode, - ) - - # Re-initialize BitStream Filter for this session - bsf_map = {"hevc": "hevc_mp4toannexb", "h264": "h264_mp4toannexb"} - bsf_name = bsf_map.get(self.stream.codec_context.name) - local_bsf = ( - av.BitStreamFilterContext(bsf_name, self.stream) - if bsf_name - else None - ) - - target_fps, clip_duration = (self.target_fps, self.clip_duration) - self.stream_width = self.stream.width - self.stream_height = self.stream.height - self.frame_width = self.true_width - self.frame_height = self.true_height - self.input_fps = self.metadata_fps - self.target_fps = ( - target_fps - if target_fps not in [None, 0] and self.input_fps > target_fps - else self.input_fps - ) - if self.input_fps > 0 and self.target_fps > 0: - self.frame_skip = max(1, int(self.input_fps / self.target_fps)) - else: - self.frame_skip = 1 - self.max_frames_per_clip = ( - None - if clip_duration is None - else int(self.target_fps * float(clip_duration)) - ) - self.frame_interval = 1.0 / self.target_fps - self.numFrames = self.total_frames - - self.is_h264_8k = ( - self.stream.codec_context.name == "h264" - and self.stream_width > 4096 - ) - - # --- PATH A: H.264 8K CPU Fallback --- - if self.is_h264_8k: - print( - f"[INFO] Starting CPU-Decode Fallback for {self.source}", - flush=True, - ) - for frame in self.container.decode(video=0): - # if self.stopped: - # break - - # img_array = frame.to_ndarray(format="rgb24") - img_array = frame.to_ndarray(format="bgr24") - # gpu_tensor = ( - # torch.from_numpy(img_array).to("cuda").permute(2, 0, 1) - # ) - self.raw_input.copy_(torch.from_numpy(img_array)) - gpu_tensor = self.raw_input.permute(2, 0, 1) - - # CRITICAL FIX: Break the shared buffer pointer! - # Clones the frame to a private memory block before queueing it. - safe_frame = gpu_tensor.clone().contiguous() - - self.frame_queue.put((safe_frame, self.frame_idx)) - self.frame_idx += 1 - - # if not is_rtsp and self.frame_idx >= 500: - # break # File test limit - - # --- PATH B: HEVC Hardware Acceleration (15 FPS Path) --- - else: - print( - f"[INFO] Starting HW-Accelerated Pump for {self.source}", - flush=True, - ) - # Create an explicit stream packet extractor to isolate bitstream errors - packet_iterator = self.container.demux(self.stream) - - while not self.stopped: - try: - packet = next(packet_iterator) - except (ValueError, OSError, StopIteration): - break - - # Check for corruption/validity safely - is_broken = packet.size == 0 or packet.dts is None - # is_broken = ( - # is_broken - # or getattr(packet, "corrupt", False) - # or getattr(packet, "is_corrupt", False) - # ) - - if is_broken: - # main_app_logger.warning("[WARNING] Corrupt packet detected. Locking sync.") - # self.sync_locked = True - continue - - # ─── OPTIMIZED HARDWARE SYNCHRONIZATION BARRIER ────────────────── - if self.sync_locked: - # Rely explicitly on PyAV header flag definitions instead of packet.size - if getattr(packet, "is_keyframe", False): - main_app_logger.info( - "[SYNC] Valid hardware keyframe intercepted. Unlocking decoder track." - ) - self.sync_locked = False - else: - # Drop incomplete frames to prevent hardware canvas corruption - continue - # ───────────────────────────────────────────────────────────────── - # if self.stopped: - # break - if packet.size == 0 or packet.dts is None: - continue - - # Apply Annex B filter - filtered_packets = ( - local_bsf.filter(packet) if local_bsf else [packet] - ) - - for filtered_packet in filtered_packets: - if self.sync_locked: - continue - - if filtered_packet.size < 10: - continue - - pkt_bytes = bytes(filtered_packet) - # Extract raw memory address from the numpy tuple - ptr_info = np.frombuffer( - pkt_bytes, dtype=np.uint8 - ).__array_interface__["data"] - addr = ( - ptr_info[0] - if isinstance(ptr_info, (tuple, list)) - else ptr_info - ) - nvc_packet = nvc.PacketData() - nvc_packet.bsl_data = int(addr) - nvc_packet.bsl = filtered_packet.size - - try: - for decoded_frame in self.nv_dec.Decode(nvc_packet): - try: - # Zero-Copy Bridge: Hardware Surface -> PyTorch Tensor - gpu_tensor = torch.from_dlpack(decoded_frame) - # 2. CONVERSION: Turn NV12 [YUV] into BGR immediately - converted_bgr = self.nv12_to_bgr_reader( - gpu_tensor - ) - - # CRITICAL FIX: Force a brand-new, isolated memory block allocation - # on the GPU so the decoder cannot overwrite this frame's pixels - # while downstream threads are analyzing the mask. - safe_frame = converted_bgr.clone().contiguous() - - while not self.stopped: - try: - self.frame_queue.put( - ( - safe_frame, - self.frame_idx, - ), - timeout=0.1, - ) - break - except queue.Full: - try: - self.frame_queue.get_nowait() - except queue.Empty: - pass - torch.cuda.current_stream().synchronize() - self.frame_idx += 1 - except ( - av.FFmpegError, - av.InvalidDataError, - RuntimeError, - ) as decode_fault: - main_app_logger.warning( - f"Isolating corrupt video packet fragment: {decode_fault}" - ) - if hasattr(decoded_frame, "Unlock"): - decoded_frame.Unlock() - continue - finally: - # Immediate VRAM Cleanup - if "gpu_tensor" in locals(): - del gpu_tensor - if hasattr(decoded_frame, "Unlock"): - decoded_frame.Unlock() - del decoded_frame - - except Exception as e: - self.sync_locked = True - if any(c in str(e) for c in ["700", "208"]): - self.nv_dec = None - break - # if not is_rtsp and self.frame_idx >= 500: - # break # File test limit - - # --- UNIVERSAL EXIT LOGIC --- - if not is_rtsp: - print( - f"[DEBUG] Reached End of File: {self.source}. Exiting thread.", - flush=True, - ) - self.stopped = True + if self.stopped: break - else: - # If we reach here and it's RTSP, the demuxer stopped yielding - print( - "[WARNING] RTSP glitch detected. Closing container and retrying...", - flush=True, - ) - if self.container: - # Explicitly flush streams before closing - for s in self.container.streams: - s.codec_context.flush_buffers() - self.container.close() - self.container = None - - if local_bsf: - try: - local_bsf.filter(None) - except Exception: - pass - - # Force close the C++ decoder context layer before resetting the pointer - if self.nv_dec is not None: - try: - if hasattr(self.nv_dec, "Close"): - self.nv_dec.Close() - except Exception: - pass - del self.nv_dec - - torch.cuda.synchronize() - torch.cuda.empty_cache() - self.nv_dec = None - while not self.frame_queue.empty(): - try: - self.frame_queue.get_nowait() - except Exception: - break - time.sleep(0.5) # Wait before reconnection attempt - except Exception as e: - print(f"[EXCEPTION] Reader Thread Failure: {e}", flush=True) - traceback.print_exc() - if not is_rtsp: - self.stopped = True - break + active_idx = self.latest_idx.value + self.reader_idx.value = active_idx + last_processed_shm_idx = active_idx + + # Update counters inside target_fps space loop execution + self.target_frames_passed += 1 + + # Reconstruct source frame position using step spacing ratio + # if self.numFrames != 0: + # self.total_input_frames = int( + # self.target_frames_passed * getattr(self, "frame_skip", 1) + # ) + if self.is_rtsp: + self.total_input_frames = int(self.raw_frame_counter.value) + + # Signal the worker that a slot has cleared up losslessly --- + self.buffer_occupancy.value = max(0, self.buffer_occupancy.value - 1) + + # is_target_frame = (frame_num >= next_process_idx) + + # if not is_target_frame: + # continue + + # # Check if frame is a target frame before heavy operations + # # if frame_num >= next_process_idx: + # next_process_idx += step_size + + t_copy = time.perf_counter() + # np.copyto(self.static_buffer_numpy, self.shared_array_view) + # Zero-Copy Pointer Swap: lock the latest completed buffer index + # active_idx = self.latest_idx.value + # self.reader_idx.value = active_idx + # last_processed_shm_idx = active_idx + + # # Signal the worker that a slot has cleared up losslessly --- + # self.buffer_occupancy.value = max(0, self.buffer_occupancy.value - 1) + + # Wrap an array view directly around the locked active SHM region + # active_shm = self.shms[active_idx] + # frame_view = np.ndarray(self.frame_shape, dtype=np.uint8, buffer=active_shm.buf) + + # Select the current active buffer slot + # buf_idx = self.buffer_selector + # current_numpy_buf = self.static_buffer_numpys[buf_idx] + # current_tensor_buf = self.static_buffer_tensors[buf_idx] + + # np.copyto(current_numpy_buf, frame_view) + current_tensor_view = self.pinned_views[active_idx] + self.total_shm_copy_time += time.perf_counter() - t_copy + + # if self.frame_queue.full() and self.is_rtsp: + # # If the consumer loop is dragging, discard this frame instantly + # # without allocating any memory or touching the PCIe bus. + # return + + # ASYNCHRONOUS PCIe UPLOAD (Only runs for target frames) + t_h2d = time.perf_counter() + + # Isolate the PCIe upload onto its own dedicated side hardware stream + # with torch.cuda.stream(self.upload_stream): + # compute_tensor = self.static_buffer_tensor.to(self.device, non_blocking=True) + # Upload directly from the selected zero-copy host view area + # compute_tensor = torch.from_numpy(frame_view).to(self.device, non_blocking=True) + # compute_tensor = current_tensor_buf.to(self.device, non_blocking=True) + + # Transfer the raw [H, W, 3] uint8 tensor to VRAM via DMA copy + compute_tensor = current_tensor_view.to(self.device, non_blocking=True) + bgr_tensor = compute_tensor[:, :, [2, 1, 0]].contiguous() + # torch.cuda.synchronize(self.device) + self.total_h2d_time += time.perf_counter() - t_h2d + + # self.buffer_selector = 1 - self.buffer_selector + + # if not self.is_rtsp or not self.frame_queue.full(): + t_queue_block = time.perf_counter() + # Record an event on the stream and make the main thread wait for it asynchronously + current_event = torch.cuda.Event() + current_event.record(self.upload_stream) + # current_event.wait() + torch.cuda.current_stream().wait_event(current_event) + + # self.frame_queue.put((True, cpu_360p_frame)) + self.frame_queue.put( + (True, bgr_tensor.detach(), self.target_frames_passed) + ) # .clone())) + self.total_queue_wait_time += time.perf_counter() - t_queue_block + + # frame_num += 1.0 + # self.frame_idx += 1 + + # Keep the reader thread aligned with target ingestion speeds + # elapsed = time.perf_counter() - loop_start + # time_to_wait = inbound_frame_interval - elapsed + # if time_to_wait > 0: + # time.sleep(time_to_wait) + # Explicitly delete frame variables to free their references + if "compute_tensor" in locals(): + del compute_tensor + + # Force PyTorch's internal allocator to release cached segments back to the OS + # torch.cuda.empty_cache() + # torch.cuda.ipc_collect() + + # self.frame_idx = frame_num + # self.running_flag.value = False - self.sync_locked = True - if self.nv_dec is not None: - try: - # Force a hardware surface close step to release hardware rings instantly - if hasattr(self.nv_dec, "Close"): - self.nv_dec.Close() - except Exception: - pass - del self.nv_dec - - # Force CUDA to synchronize and clear driver error state flags safely - torch.cuda.synchronize() - torch.cuda.empty_cache() - self.nv_dec = None - time.sleep(1.0) # Backoff for RTSP reconnection + def stop(self): + """Cleanly unregisters the locked memory mapping blocks from the OS page table.""" + if hasattr(self, "cudart") and hasattr(self, "shms"): + import ctypes - self.stopped = True + for shm in self.shms: + # 1. Safely bind ctypes to the underlying memory view structure + ctypes_array = (ctypes.c_char * self.frame_bytes).from_buffer(shm.buf) - def release(self): - """Safely flushes the decoder and closes the connection.""" - print("Closing HybridReader...") - self.stopped = True # Signal thread to stop - time.sleep(0.5) + # 2. Extract the address pointer + shm_ptr = ctypes.c_void_p(ctypes.addressof(ctypes_array)) - if self.nv_dec and self.frame_idx > 0: - try: - self.nv_dec.Decode(nvc.PacketData()) # Flush - del self.nv_dec - self.nv_dec = None - except Exception: - pass - if self.container: - self.container.close() - self.container = None - - # def nv12_to_bgr_reader(self, nv12_tensor): # , h, w, is_8k=False): - # """Internal reader helper to convert raw hardware surfaces to BGR.""" - # h, w = self.frame_height, self.frame_width - # is_8k = self.is_h264_8k - # with torch.no_grad(): - # if is_8k: - # # 8K Path: Extract and unzipper interleaved UV - # y = nv12_tensor[0:1, :, :].half() - # uv_raw = nv12_tensor[1:2, :, :].half() - # u = uv_raw[:, :, 0::2] - # v = uv_raw[:, :, 1::2] - # u = F.interpolate(u.unsqueeze(0), size=(h, w), mode="nearest").squeeze( - # 0 - # ) - # v = F.interpolate(v.unsqueeze(0), size=(h, w), mode="nearest").squeeze( - # 0 - # ) - # else: - # # Standard NV12 Path - # y = nv12_tensor[:h, :w].unsqueeze(0).half() - - # uv = ( - # nv12_tensor[h:, :w] - # .reshape(h // 2, w // 2, 2) - # .permute(2, 0, 1) - # .unsqueeze(0) - # .half() - # ) - # uv_up = F.interpolate(uv, size=(h, w), mode="nearest") - # u, v = uv_up[0, 0:1, :, :], uv_up[0, 1:2, :, :] - - # # BT.709 Math (Natural Color) - # y = (y - 16.0) * 1.164 - # u, v = u - 128.0, v - 128.0 - - # r = y + 1.793 * v - # g = y - 0.213 * u - 0.533 * v - # b = y + 2.112 * u - - # # Stack as BGR [B, G, R] for OpenCV/Browser compatibility - # return torch.cat([b, g, r], dim=0).clamp(0, 255).to(torch.uint8) - - def nv12_to_bgr_reader(self, nv12_tensor): - """Internal reader helper to convert raw hardware surfaces to BGR.""" - h, w = self.frame_height, self.frame_width - is_8k = self.is_h264_8k - - # EXTRACT TRUE STRIDE: Get the actual hardware allocation width - # which includes the hidden byte-alignment padding columns. - stride_w = nv12_tensor.shape[1] - - with torch.no_grad(): - if is_8k: - # 8K Path: Slice using stride_w, then strip padding out cleanly - y = nv12_tensor[0:1, :, :stride_w].half() - uv_raw = nv12_tensor[1:2, :, :stride_w].half() - u = uv_raw[:, :, 0::2] - v = uv_raw[:, :, 1::2] - u = F.interpolate(u.unsqueeze(0), size=(h, w), mode="nearest").squeeze( - 0 - ) - v = F.interpolate(v.unsqueeze(0), size=(h, w), mode="nearest").squeeze( - 0 - ) - else: - # Standard NV12 Path - # 1. Slice using the full hardware stride_w to preserve vertical row boundaries - y_padded = nv12_tensor[:h, :stride_w].half() - uv_padded = nv12_tensor[h:, :stride_w].half() - - # 2. Crop out the hardware padding columns horizontally to get clean spatial grids - y = y_padded[:, :w].unsqueeze(0) - - uv = ( - uv_padded[:, :w] - .reshape(h // 2, w // 2, 2) - .permute(2, 0, 1) - .unsqueeze(0) - ) - uv_up = F.interpolate(uv, size=(h, w), mode="nearest") - u, v = uv_up[0, 0:1, :, :], uv_up[0, 1:2, :, :] - - # BT.709 Math (Natural Color) - y = (y - 16.0) * 1.164 - u, v = u - 128.0, v - 128.0 - - r = y + 1.793 * v - g = y - 0.213 * u - 0.533 * v - b = y + 2.112 * u - - # Stack as BGR [B, G, R] - out_tensor = torch.cat([b, g, r], dim=0).clamp(0, 255).to(torch.uint8) - - # CRITICAL PIECE: Force memory to be completely linear and sequentially packed - # before it enters the queue or gets sliced by the sub-frame window pipeline - return out_tensor.contiguous() - - @property - def true_height(self): - """ - Returns the logical video height. - Handles cases where metadata might report the 1.5x NV12 buffer height. - """ - # if self.nv_dec: - # return int(self.nv_dec.Height()) # Get from decoder instead of stream - # return int(self.stream.height) # / 1.5) - return self.stream.height if self.stream else 0 - - @property - def true_width(self): - # if self.nv_dec: - # return self.nv_dec.Width() - # return self.stream.width - return self.stream.width if self.stream else 0 - - @property - def metadata_fps(self): - """Returns the FPS defined in the video metadata/header.""" - if self.stream and self.stream.average_rate: - return float(self.stream.average_rate) - return 0.0 - - @property - def total_frames(self): - """Returns the total number of frames defined in the file metadata.""" - if self.stream: - # Check nb_frames first - if self.stream.frames > 0: - return self.stream.frames - return 0 # Returns 0 for live streams or files with missing metadata + # 3. Unregister the address safely from the OS tables + self.cudart.cudaHostUnregister(shm_ptr) + + try: + shm.close() + shm.unlink() + except Exception: + pass + super().stop() diff --git a/fastapi/include/utils.py b/fastapi/include/utils.py index 0cae055..f843766 100644 --- a/fastapi/include/utils.py +++ b/fastapi/include/utils.py @@ -3,6 +3,7 @@ import os import queue import subprocess +import threading import time import traceback from dataclasses import dataclass @@ -40,6 +41,7 @@ DISPLAY_FRAME_SIZE, ENABLE_QUERYING_DEFAULT, INGESTION_DEFAULT, + IOU_THRESHOLD_DEFAULT, MAX_DETECTIONS, MAX_WORKERS, MODEL_H, @@ -159,6 +161,7 @@ def __init__(self, **kwargs): self.DETECTION_THRESHOLD = float( kwargs.get("DETECTION_THRESHOLD", DETECTION_THRESHOLD_DEFAULT) ) + self.IOU_THRESHOLD = float(kwargs.get("IOU_THRESHOLD", IOU_THRESHOLD_DEFAULT)) self.MAX_DETECTIONS = int(kwargs.get("MAX_DETECTIONS", MAX_DETECTIONS)) self.MODEL_H = int(kwargs.get("MODEL_H", MODEL_H)) self.MODEL_W = int(kwargs.get("MODEL_W", MODEL_W)) @@ -271,6 +274,264 @@ def return_connection(self, conn): self.pool.put(conn) +class AsyncVideoWriter: + """Handles disk saving operations asynchronously on a background thread.""" + + def __init__(self, path, fourcc, fps, size): + self.writer = cv2.VideoWriter(path, fourcc, fps, size) + self.queue = queue.Queue() + self.running = True + self.thread = threading.Thread(target=self._write_loop, daemon=True) + self.thread.start() + + def _write_loop(self): + while self.running or not self.queue.empty(): + try: + frame = self.queue.get(timeout=0.05) + if frame is None: + break + self.writer.write(frame) + self.queue.task_done() + except queue.Empty: + continue + + def write_frame(self, frame): + self.queue.put(frame) + + def release(self): + self.running = False + self.thread.join() + self.writer.release() + + +# class AsyncDisplayWriterv1: +# """Handles disk saving operations asynchronously on a background thread.""" + +# def __init__(self, path, fourcc, fps, size): +# self.writer = cv2.VideoWriter(path, fourcc, fps, size) +# self.queue = queue.Queue() +# self.running = True +# self.thread = threading.Thread(target=self._write_loop, daemon=True) +# self.thread.start() + +# def _write_loop(self): +# while self.running or not self.queue.empty(): +# try: +# frame = self.queue.get(timeout=0.05) +# self.writer.write(frame) +# self.queue.task_done() +# except queue.Empty: +# continue + +# def write_frame(self, frame): +# self.queue.put(frame) + +# def release(self): +# self.running = False +# self.thread.join() +# self.writer.release() + + +class AsyncDisplayWriter: + """ + Ultra-efficient frame-delivery client for live web streaming. + Pipes annotated BGR numpy matrices directly into matching Linux + POSIX Shared Memory allocation slots to prevent thread context-switching. + """ + + def __init__(self, target_fps, display_size, quality=60): + self.target_fps = float(target_fps) + self.disp_w, self.disp_h = display_size + self.quality = int(quality) + + # Ingestion pipeline constructs + self.queue = queue.Queue(maxsize=10) + self.running = True + + # State indicators requested by the FastAPI handler endpoints + self.handler = None + self.thread = threading.Thread(target=self._write_loop, daemon=True) + self.thread.start() + + def set_handler_context(self, handler_instance): + """Binds the active handler resource structures to secure index barriers.""" + self.handler = handler_instance + + def _write_loop(self): + # encode_param = [int(cv2.IMWRITE_JPEG_QUALITY), self.quality] + while self.running or not self.queue.empty(): + try: + item = self.queue.get(timeout=0.05) + if item is None: + break + display_frame, frame_num = item + # self.writer.write(frame) + # Compress to highly packable, network-ready JPEG byte streams + # ret, jpeg_buf = cv2.imencode('.jpg', display_frame, encode_param) + # if not ret: + # self.queue.task_done() + # continue + if self.handler is None: # or not self.handler.active: + self.queue.task_done() + continue + + if frame_num > self.handler.shared_details["last_id"]: + frame_bytes = get_display_frame_in_bytes( + display_frame, + display_size=(self.disp_w, self.disp_h), + quality=self.quality, + return_bytes=True, + ) + if not frame_bytes: + self.queue.task_done() + continue + + # frame_bytes = jpeg_buf.tobytes() + frame_len = len(frame_bytes) + num_shms = len(self.handler.shms) + + # Locate alternative ring memory locations away from browser client read operations + forbidden_idx = [ + self.handler.ready_buffer_idx.value, + self.handler.reader_active_idx.value, + ] + available_idx = [ + i for i in range(num_shms) if i not in forbidden_idx + ] + + if not available_idx: + # Fallback to structural ring increments if locks collide + write_idx = (self.handler.ready_buffer_idx.value + 1) % num_shms + else: + write_idx = available_idx[0] + + # Direct zero-copy commit straight to volatile RAM mappings + shm_block = self.handler.shms[write_idx] + shm_block.buf[:frame_len] = memoryview(frame_bytes) + + # Update pipeline sync trackers across worker contexts + self.handler.shm_frame_lengths[write_idx] = frame_len + self.handler.ready_buffer_idx.value = write_idx + + # Assign atomic sequence token identifiers safely + self.handler.shared_details["last_id"] = frame_num + + # Fire threading synchronization barriers to release blocked generator loops + # self.handler.frame_ready_event.set() + if hasattr(self.handler, "loop") and self.handler.loop is not None: + self.handler.loop.call_soon_threadsafe( + self.handler.frame_ready_event.set + ) + else: + # Fallback guard if the frame context hasn't registered a loop hook yet + self.handler.frame_ready_event.set() + + self.queue.task_done() + except queue.Empty: + continue + except Exception as e: + print(f"[ASYNC-DISPLAY-ERROR] Silent pool worker drop: {e}") + traceback.print_exc() + continue + + def _write_loopv1(self): + """Background daemon consumer that compresses matrices directly to /dev/shm.""" + # Performance parameters to maintain strict BT.709 encoding constraints + encode_param = [int(cv2.IMWRITE_JPEG_QUALITY), self.quality] + + while self.running or not self.queue.empty(): + try: + item = self.queue.get(timeout=0.05) + if item is None: + break + + display_frame, frame_num = item + if self.handler is None or not self.handler.active: + self.queue.task_done() + continue + + # Ensure image sizes perfectly correspond with standard API expectations + if ( + display_frame.shape[1] != self.disp_w + or display_frame.shape[0] != self.disp_h + ): + display_frame = cv2.resize( + display_frame, + (self.disp_w, self.disp_h), + interpolation=cv2.INTER_NEAREST, + ) + + # Compress to highly packable, network-ready JPEG byte streams + ret, jpeg_buf = cv2.imencode(".jpg", display_frame, encode_param) + if not ret: + self.queue.task_done() + continue + + frame_bytes = jpeg_buf.tobytes() + frame_len = len(frame_bytes) + num_shms = len(self.handler.shms) + + # Locate alternative ring memory locations away from browser client read operations + forbidden_idx = [ + self.handler.ready_buffer_idx.value, + self.handler.reader_active_idx.value, + ] + available_idx = [i for i in range(num_shms) if i not in forbidden_idx] + + if not available_idx: + # Fallback to structural ring increments if locks collide + write_idx = (self.handler.ready_buffer_idx.value + 1) % num_shms + else: + write_idx = available_idx[0] + + # Direct zero-copy commit straight to volatile RAM mappings + shm_block = self.handler.shms[write_idx] + shm_block.buf[:frame_len] = frame_bytes + + # Update pipeline sync trackers across worker contexts + self.handler.shm_frame_lengths[write_idx] = frame_len + self.handler.ready_buffer_idx.value = write_idx + + # Assign atomic sequence token identifiers safely + self.handler.shared_details["last_id"] = frame_num + + # Fire threading synchronization barriers to release blocked generator loops + # self.handler.frame_ready_event.set() + if hasattr(self.handler, "loop") and self.handler.loop is not None: + self.handler.loop.call_soon_threadsafe( + self.handler.frame_ready_event.set + ) + else: + # Fallback guard if the frame context hasn't registered a loop hook yet + self.handler.frame_ready_event.set() + + self.queue.task_done() + except queue.Empty: + continue + except Exception as e: + print(f"[ASYNC-DISPLAY-ERROR] Failed streaming injection: {e}") + continue + + def write_frame(self, display_frame, frame_num): + """Thread-safe entry hook to stash processed canvas items into the workspace.""" + # if not self.active: + # return + # try: + # # Drop structural allocations under pressure if the worker falls behind + # self.queue.put_nowait((display_frame, frame_num)) + # except queue.Full: + # pass + self.queue.put((display_frame, frame_num)) + + def release(self): + """Terminates internal consumers gracefully to ensure process convergence.""" + # self.active = False + self.running = False + self.queue.put(None) + if self.thread.is_alive(): + self.thread.join(timeout=1.0) + + ERR_KEYWORDS = [ "timeout", "null search iterator", @@ -705,7 +966,7 @@ def merge_boxes_gpu(raw_boxes, gap_limit=10, size_limit=1000): return torch.stack(merged) -def merge_boxes_cpu(boxes, gap_limit=10): +def merge_boxes_cpuv1(boxes, gap_limit=10): """ Greedy merge in 640x640 space to consolidate swarm fragments. Input: List of [x1, y1, x2, y2] within [0, 640] @@ -744,6 +1005,69 @@ def merge_boxes_cpu(boxes, gap_limit=10): return merged +def merge_boxes_cpu(boxes, gap_limit=10, size_limit=800): + """ + Greedy merge in 640x640 space to consolidate swarm fragments. + Preserves original boxes larger than size_limit, merging others where possible. + Input: List of [x1, y1, x2, y2] within [0, 640] + """ + if not boxes: + return [] + + # O(N log N) sort by X for early exit optimization + boxes = sorted(boxes, key=lambda x: x[0]) + merged = [] + + while boxes: + curr = boxes.pop(0) + + # --- PRESERVE OVERSIZED CROPS --- + # If the current bounding box is already larger than the size limit, + # skip merging it with anything else and save it directly to the output pool. + if (curr[2] - curr[0]) > size_limit or (curr[3] - curr[1]) > size_limit: + merged.append(curr) + continue + + i = 0 + while i < len(boxes): + test = boxes[i] + + # If the test candidate box is already larger than the size limit, + # do not attempt to merge it into the current tracking cluster. + if (test[2] - test[0]) > size_limit or (test[3] - test[1]) > size_limit: + i += 1 + continue + + # Early exit: horizontal gap exceeds limit + if test[0] - curr[2] > gap_limit: + break + + # Check vertical gap + y_dist = max(0, test[1] - curr[3], curr[3] - test[1]) + if y_dist <= gap_limit: + # Calculate proposed expanded dimensions if merged + new_x1 = min(curr[0], test[0]) + new_y1 = min(curr[1], test[1]) + new_x2 = max(curr[2], test[2]) + new_y2 = max(curr[3], test[3]) + + # --- BOUNDARY EXPANSION GUARD --- + # Reject the merge if combining these small boxes would push + # the resulting macro patch past the maximum allowed size limit. + if (new_x2 - new_x1) > size_limit or (new_y2 - new_y1) > size_limit: + i += 1 + continue + + # Expand current tracking box safely + curr = [new_x1, new_y1, new_x2, new_y2] + boxes.pop(i) + i = 0 # Re-check updated boundaries against remaining boxes + else: + i += 1 + merged.append(curr) + return merged + + def find_contours_gpu_equivalent( mask_gpu_mat, stream=None, grid_size=16, limit_640=1000, max_boxes=100 ): @@ -812,7 +1136,7 @@ def find_contours_gpu_equivalent( return merge_boxes_gpu(raw_boxes, gap_limit=grid_size * 2, size_limit=limit_640) -def find_contours_gpu_equivalentv1(mask_gpu_mat, stream=None): +def find_contours_gpu_equivalentv1(mask_gpu_mat, stream=None, limit_640=None): """ GPU equivalent to cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) Returns: torch.Tensor [N, 4] containing (x1, y1, x2, y2) in analysis space. @@ -977,7 +1301,7 @@ def format_df_value(value): return value -def get_display_frame_in_bytes( +def get_display_frame_in_bytesv1( foi, display_size=(960, 540), quality=50, return_bytes=True, device="CPU" ): # Expects BGR H, W = foi.shape[:2] @@ -1003,6 +1327,50 @@ def get_display_frame_in_bytes( return frame_bytes +def get_display_frame_in_bytes( + foi, display_size=(960, 540), quality=50, return_bytes=True, device="CPU" +): + """ + Safely formats and compresses video frames for browser distribution. + Accepts packed BGR array layouts directly. + """ + if foi is None: + return None + + # Defensive Guard: If a raw PyTorch CUDA tensor accidentally leaks into this + # context path, instantly bring it down safely to a standard contiguous numpy array + if torch.is_tensor(foi): + if foi.is_cuda: + foi = foi.detach().cpu() + foi = foi.numpy() + + # CRITICAL SIZING FIX: Explicitly parse display_size as (Width, Height) + # to perfectly match OpenCV's internal spatial coordinate expectations + target_w, target_h = display_size + current_h, current_w = foi.shape[:2] + + # Check matching structural criteria correctly + if current_h == target_h and current_w == target_w: + display_frame = foi + else: + # Resize safely without slipping strides or inverting height/width constraints + display_frame = cv2.resize( + foi, (target_w, target_h), interpolation=cv2.INTER_NEAREST + ) + + # Encode to crisp, valid JPEG compression matrices + ret, buffer = cv2.imencode( + ".jpg", display_frame, [int(cv2.IMWRITE_JPEG_QUALITY), quality] + ) + + if ret and return_bytes: + return buffer.tobytes() + elif ret: + return buffer + + return None + + # Manual FPS calculation if OpenCV reports 0 def manual_fps_calculation(src, num_frames=10): if isinstance(src, cv2.VideoCapture): diff --git a/fastapi/main.py b/fastapi/main.py index 3a02e75..a1e30aa 100644 --- a/fastapi/main.py +++ b/fastapi/main.py @@ -186,7 +186,7 @@ async def frame_generator(streamer, request: Request): # Wait for the background thread to signal that AI processing is complete await streamer.frame_ready_event.wait() - streamer.frame_ready_event.clear() # Reset for the next frame + # streamer.frame_ready_event.clear() # Reset for the next frame # streamer.reader_busy.value = True # target_idx = streamer.ready_buffer_idx.value @@ -197,7 +197,7 @@ async def frame_generator(streamer, request: Request): current_id = streamer.shared_details.get("last_id", -1) if current_id > last_sent_id: ready_idx = streamer.ready_buffer_idx.value - streamer.reader_active_idx.value = ready_idx + # streamer.reader_active_idx.value = ready_idx frame_len = streamer.shm_frame_lengths[ready_idx] if frame_len > 0: @@ -205,30 +205,34 @@ async def frame_generator(streamer, request: Request): # shm_name = shm_names[ready_idx] # print(f"DEBUG: Displaying SHM {shm_name}") # frame_bytes = streamer.latest_processed_frame - try: - frame_bytes = bytes(reader_shms[ready_idx].buf[:frame_len]) - finally: - streamer.reader_active_idx.value = -1 - last_sent_id = current_id - streamer.last_heartbeat = time.time() + # try: + frame_bytes = bytes(reader_shms[ready_idx].buf[:frame_len]) + # finally: + # streamer.reader_active_idx.value = -1 + # last_sent_id = current_id + # streamer.last_heartbeat = time.time() # streamer.reader_busy.value = False + streamer.frame_ready_event.clear() # Multipart JPEG delivery with explicit Content-Length for stability - yield ( - b"--frame\r\n" - b"Content-Type: image/jpeg\r\n" - b"Content-Length: " - + str(len(frame_bytes)).encode() - + b"\r\n\r\n" - # b"Content-Length: " - # + str(len(frame_bytes)).encode() - # + b"\r\n\r\n" - + frame_bytes - + b"\r\n" - ) - # last_sent_id = current_id + if len(frame_bytes) > 0: + yield ( + b"--frame\r\n" + b"Content-Type: image/jpeg\r\n" + b"Content-Length: " + + str(len(frame_bytes)).encode() + + b"\r\n\r\n" + # b"Content-Length: " + # + str(len(frame_bytes)).encode() + # + b"\r\n\r\n" + + frame_bytes + + b"\r\n" + ) + last_sent_id = current_id + streamer.last_heartbeat = time.time() # Yield control to the event loop to prevent blocking + # streamer.frame_ready_event.clear() # Reset for the next frame await asyncio.sleep(0.001) except Exception as e: main_app_logger.error(f"[EXCEPTION] Generator Error: {e}") diff --git a/fastapi/tests/test_detections.py b/fastapi/tests/test_detections.py index 6cac5b9..271a15a 100644 --- a/fastapi/tests/test_detections.py +++ b/fastapi/tests/test_detections.py @@ -1,12 +1,21 @@ import argparse +import asyncio import csv +import faulthandler import gc +import threading +import time +import traceback + +faulthandler.enable() +import inspect import logging import multiprocessing as mp import os +import queue import sys -import threading -import time +import types +from concurrent.futures import ThreadPoolExecutor from pathlib import Path import cv2 @@ -15,7 +24,14 @@ import pytest import tensorrt as trt import torch -import torch.nn.functional as F + +# # Force all PyTorch extension handles to compile and load BEFORE threads spawn +# if torch.cuda.is_available(): +# _ = torch.zeros(1).cuda() +# import torch._ops +# import torch.utils + +# Explicitly invoke any plotting or module style lookups early sys.path.insert(1, str(Path(__file__).parent.parent)) from include.default_configs import ( @@ -28,15 +44,16 @@ CPUStreamHandler, DeviceBaseHandler, GPUStreamHandler, + get_bb_overlay, + get_metadata_overlay, log_to_logger, ) -from include.handlers import test_rendering_worker as rendering_worker from include.utils import ( PipelineConfig, - tensor2opencv, ) try: + # Retain standard spawn mode to prevent CUDA context driver deadlocks torch.multiprocessing.set_start_method("spawn", force=True) except RuntimeError: pass @@ -46,52 +63,12 @@ trt.init_libnvinfer_plugins(logger, "") DEBUG_FLAG_DEFAULT = True if DEBUG_DEFAULT == "1" else False -os.environ["OMP_NUM_THREADS"] = "1" +os.environ["OMP_NUM_THREADS"] = str(mp.cpu_count()) # "1" os.environ["PYTORCH_ALLOC_CONF"] = "expandable_segments:True" force_export = False - -# def render_display_worker(queue, output_path, fps, size): -# """Background process that draws labels and writes to video.""" -# fourcc = cv2.VideoWriter_fourcc(*"avc1") -# writer = cv2.VideoWriter(output_path, fourcc, fps, size) - -# if not writer.isOpened(): -# print(f" [ERROR] VideoWriter failed to open: {output_path}") -# return - -# while True: -# item = queue.get() -# if item is None: -# break - -# display_frame, metadata_or_bbs, class_list = item -# if (display_frame.shape[1], display_frame.shape[0]) != size: -# display_frame = cv2.resize(display_frame, size) - -# if isinstance(metadata_or_bbs, dict): -# for _, obj in metadata_or_bbs.items(): -# bbox = obj["bbox"] -# x, y, w, h = bbox["x"], bbox["y"], bbox["width"], bbox["height"] -# class_name = bbox["object"] -# class_id = class_list.index(class_name) if class_name in class_list else 0 -# confidence = bbox["object_det"]["confidence"] - -# bb_color = get_detection_color(class_id, is_bgr=True) -# label = f"{class_name} {confidence:.2f}" - -# cv2.rectangle(display_frame, (x, y), (x + w, y + h), bb_color, 2) -# draw_label(display_frame, label, (x, y), color=bb_color, padding=5) -# elif metadata_or_bbs is not None: -# for box in metadata_or_bbs: -# if torch.is_tensor(box): -# box = box.tolist() -# x1, y1, x2, y2 = map(int, box) -# cv2.rectangle(display_frame, (x1, y1), (x2, y2), (0, 0, 225), 2) - -# writer.write(display_frame) - -# writer.release() +# Force OpenCV to run sequentially to prevent context-switching overhead +cv2.setNumThreads(0) # Forces OpenCV loops to run strictly sequentially def fps_comparison_chart(chart_path, results, fps_key="Pipeline FPS (Video frames)"): @@ -128,6 +105,48 @@ def fps_comparison_chart(chart_path, results, fps_key="Pipeline FPS (Video frame print("Skipping chart generation: error occurred.") +class AsyncVideoWriter: + """Handles disk saving operations asynchronously on a background thread.""" + + def __init__(self, path, fourcc, fps, size): + self.writer = cv2.VideoWriter(path, fourcc, fps, size) + self.queue = queue.Queue() + self.running = True + self.thread = threading.Thread(target=self._write_loop, daemon=True) + self.thread.start() + + def _write_loop(self): + while self.running or not self.queue.empty(): + try: + frame = self.queue.get(timeout=0.05) + self.writer.write(frame) + self.queue.task_done() + except queue.Empty: + continue + + def write_frame(self, frame): + self.queue.put(frame) + + def release(self): + self.running = False + self.thread.join() + self.writer.release() + + +class DummyProcess: + def start(self): + pass + + def join(self, timeout=None): + pass + + def is_alive(self): + return False + + def close(self): + pass + + @pytest.fixture(scope="class") def setup_context(request): """Replaces setUpClass: Runs once per test class.""" @@ -136,36 +155,49 @@ def setup_context(request): main_path = test_dir.parent video_dir = main_path / "inputs" - VIDEO_FILENAME = os.getenv("VIDEO_FILENAME", "anduril_swarm_8K.mp4") - if video_dir.exists(): - request.cls.video_path = video_dir / VIDEO_FILENAME + request.cls._shared_model = None + request.cls._shared_model_path = None + request.cls._shared_model_device = None + request.cls._shared_model_sf_enabled = None + + # model_name = os.getenv("MODEL_NAME", MODEL_NAME_DEFAULT) + # Handler.__init__ (main items) + request.cls.source = os.getenv("VIDEO_FILENAME", "anduril_swarm_8K.mp4") + is_rtsp = "rtsp://" in request.cls.source + if not is_rtsp: + VIDEO_FILENAME = request.cls.source + if video_dir.exists(): + vid_source = video_dir / VIDEO_FILENAME + else: + video_dir = Path("/watch_dir") + vid_source = video_dir / VIDEO_FILENAME + + assert vid_source.exists() + request.cls.source = str(vid_source) + request.cls.name = vid_source.stem + request.cls.is_rtsp = False else: - video_dir = Path("/watch_dir") - request.cls.video_path = video_dir / VIDEO_FILENAME + request.cls.name = "rtsp" + request.cls.is_rtsp = True + # request.cls.test_duration_mins = float(os.getenv("TEST_DURATION_MINS", 0.25)) model_name = os.getenv("MODEL_NAME", MODEL_NAME_DEFAULT) request.cls.result_dir = ( - test_dir - / f"{current_test_filename}_results/{model_name}" - / request.cls.video_path.stem + test_dir / f"{current_test_filename}_results/{model_name}" / request.cls.name ) request.cls.result_dir.mkdir(parents=True, exist_ok=True) request.cls.benchmarks = [] request.cls.csv_filename = ( - f"pipeline_benchmarks_{model_name}_{request.cls.video_path.stem}.csv" + f"pipeline_benchmarks_{model_name}_{request.cls.name}.csv" ) + request.cls.csv_path = request.cls.result_dir / request.cls.csv_filename - request.cls.name = request.cls.video_path.stem - request.cls.source = str(request.cls.video_path) request.cls.active = True request.cls.active_streams = {} - request.cls._shared_model = None - request.cls._shared_model_path = None - request.cls._shared_model_device = None - request.cls._shared_model_sf_enabled = None yield + # Summarize Benchmarks if request.cls.benchmarks: # Filter and exclude rows that were interrupted or failed initialization due to an early pytest skip request.cls.benchmarks = [ @@ -179,8 +211,8 @@ def setup_context(request): (r for r in results if r["Test Name"] == match_name), None ) if cpu_row: - gpu_fps = float(row["Pipeline FPS (Video frames)"]) - cpu_fps = float(cpu_row["Pipeline FPS (Video frames)"]) + gpu_fps = float(row["Pipeline FPS (Target frames)"]) + cpu_fps = float(cpu_row["Pipeline FPS (Target frames)"]) speedup = (gpu_fps / cpu_fps) if cpu_fps > 0 else 0 row["Pipeline Speedup vs CPU"] = f"{speedup:.2f}x" else: @@ -189,28 +221,18 @@ def setup_context(request): row["Pipeline Speedup vs CPU"] = "Baseline (CPU)" keys = results[0].keys() - with open( - str(request.cls.result_dir / request.cls.csv_filename), "w", newline="" - ) as f: + with open(str(request.cls.csv_path), "w", newline="") as f: dict_writer = csv.DictWriter(f, fieldnames=keys) dict_writer.writeheader() dict_writer.writerows(results) - print(f"\n[FINAL] Benchmarks saved to {request.cls.csv_filename}") + print(f"\n[FINAL] Benchmarks saved to {request.cls.csv_path}") for r in results: print( - f" > {r['Test Name']}: {r['Pipeline FPS (Video frames)']} FPS | {r['Pipeline FPS (Target frames)']} FPS | {r['sf+roi+det FPS (Target frames)']} FPS | {r['Display FPS']} FPS | Speedup: {r.get('Pipeline Speedup vs CPU', 'N/A')}" + f" > {r['Test Name']}: {r['Pipeline FPS (Video frames)']} FPS | {r['Pipeline FPS (Target frames)']} FPS | {r['Avg Frame Reading (ms)']} ms | Speedup: {r.get('Pipeline Speedup vs CPU', 'N/A')}" ) - chart_path = ( - request.cls.result_dir - / f"{request.cls.csv_filename.replace('.csv', '')}_sfFPS.png" - ) - fps_comparison_chart( - chart_path, results, fps_key="sf+roi+det FPS (Video frames)" - ) - chart_path = ( request.cls.result_dir / f"{request.cls.csv_filename.replace('.csv', '')}_pipelineFPS.png" @@ -219,19 +241,17 @@ def setup_context(request): chart_path = ( request.cls.result_dir - / f"{request.cls.csv_filename.replace('.csv', '')}_sfFPS_target.png" + / f"{request.cls.csv_filename.replace('.csv', '')}_pipelineFPS_target.png" ) fps_comparison_chart( - chart_path, results, fps_key="sf+roi+det FPS (Target frames)" + chart_path, results, fps_key="Pipeline FPS (Target frames)" ) chart_path = ( request.cls.result_dir - / f"{request.cls.csv_filename.replace('.csv', '')}_pipelineFPS_target.png" - ) - fps_comparison_chart( - chart_path, results, fps_key="Pipeline FPS (Target frames)" + / f"{request.cls.csv_filename.replace('.csv', '')}_sfdetectFPS_target.png" ) + fps_comparison_chart(chart_path, results, fps_key="SF/Detection FPS") chart_path = ( request.cls.result_dir @@ -256,6 +276,11 @@ def each_test_setup(request): else f"yolo_{detection_type}_{device}" ) + # video_output_name = f"{test_class_self._testMethodName}_detections_output.mp4" + vid_dir = test_class_self.result_dir / "results" + vid_dir.mkdir(parents=True, exist_ok=True) + + # Handler.__init__ (remaining items) # 1. Re-initialize a fresh configuration object test_class_self.config = PipelineConfig( CUSTOM_MODEL_FLAG=os.getenv("CUSTOM_MODEL_FLAG", CUSTOM_MODEL_FLAG_DEFAULT), @@ -271,22 +296,50 @@ def each_test_setup(request): DETECTION_TYPE=detection_type, ) - # video_output_name = f"{test_class_self._testMethodName}_detections_output.mp4" - vid_dir = test_class_self.result_dir / "results" - vid_dir.mkdir(parents=True, exist_ok=True) # test_video_output_path = os.path.join(str(vid_dir), video_output_name) os.environ["TEST_SUITE_RENDER_DIR"] = str(vid_dir) test_class_self.config.SHARED_OUTPUT = str(test_class_self.result_dir) + # test_class_self.disp_w, test_class_self.disp_h = (640, 360) + test_class_self.disp_w, test_class_self.disp_h = ( + test_class_self.config.DISPLAY_FRAME_SIZE + ) + + if device == "gpu": + # Allocate a permanent float32/float16 channel layout space directly on VRAM + test_class_self.static_gpu_360p = torch.empty( + (1, 3, test_class_self.disp_h, test_class_self.disp_w), + dtype=torch.float32, + device="cuda", + ) + test_class_self.static_gpu_byte_bchw = torch.empty( + (1, 3, test_class_self.disp_h, test_class_self.disp_w), + dtype=torch.uint8, + device="cuda", + ).contiguous() + + # Create two isolated tracking canvases to handle the ping-pong data stream + test_class_self.static_host_canvases = [ + np.zeros( + (test_class_self.disp_h, test_class_self.disp_w, 3), dtype=np.uint8 + ), + np.zeros( + (test_class_self.disp_h, test_class_self.disp_w, 3), dtype=np.uint8 + ), + ] + test_class_self.canvas_selector = 0 + + # Register BOTH buffers as page-locked memory + cv2.cuda.registerPageLocked(test_class_self.static_host_canvases[0]) + cv2.cuda.registerPageLocked(test_class_self.static_host_canvases[1]) # Reset core state machine properties before invoking any backend handlers test_class_self.active = True - test_class_self._is_stopped = False - - # FIXING ATTRIBUTEERRORS: Explicitly provision primitives before method re-binding - import threading - import time - test_class_self._stop_lock = threading.Lock() + test_class_self.loop = asyncio.get_event_loop() + test_class_self.frame_ready_event = asyncio.Event() + test_class_self._is_stopped = False + test_class_self._stop_lock = threading.Lock() # Local lock for this instance + test_class_self.mp_frame_ready_event = mp.Event() # test_class_self.stat_start_time = time.perf_counter() # timing to display detection test_class_self.device = test_class_self.config.DEVICE @@ -300,10 +353,7 @@ def each_test_setup(request): HandlerClass = GPUStreamHandler if device == "gpu" else CPUStreamHandler HandlerClass.pipeline_fn = test_class_self.__class__.pipeline_fn - # 2. Dynamically re-bind backend methods to this execution instance - import inspect - import types - + # Dynamically re-bind backend methods to this execution instance handler_classes = [HandlerClass, DeviceBaseHandler] all_method_names = set() @@ -327,19 +377,6 @@ def each_test_setup(request): types.MethodType(raw_func, test_class_self), ) - # FIXING FILEEXISTSERRORS: Proactively clear lingering POSIX layout blocks in /dev/shm - from multiprocessing import shared_memory - - for i in range(4): # Matches your self.ai_ring_depth footprint - stale_shm_name = f"shm_ai_640_{test_class_self.name}_{i}_{os.getpid()}" - try: - # Force link onto lingering handle and unlink it instantly from the OS map - lingering_shm = shared_memory.SharedMemory(name=stale_shm_name) - lingering_shm.close() - lingering_shm.unlink() - except FileNotFoundError: - pass - # 3. FORCE NATIVE PIPELINE PROVISIONING test_class_self.setup_reader( test_class_self.config.TARGET_FPS, test_class_self.config.CLIP_DURATION @@ -348,50 +385,112 @@ def each_test_setup(request): test_class_self.setup_model(None) test_class_self.prepare_pipeline() - # Reset runtime loop state properties - test_class_self.render_queue = None - test_class_self.frame_count_target = 0 - test_class_self.next_process_idx = 0.0 - test_class_self.frame_in_clip_count = 0 - test_class_self.frame_count = 0 - test_class_self.elapsed_display_time = 0.0 - - if hasattr(test_class_self, "setup_threads"): - test_class_self.setup_threads() - - shared_event_buffer = {"sf": [], "roi": [], "det": []} - test_class_self.gpu_event_buffer = shared_event_buffer + test_class_self.run_realtime_inference = types.MethodType( + test_class_self.__class__.run_realtime_inference, test_class_self + ) - if torch.cuda.is_available(): - torch.cuda.empty_cache() - torch.cuda.ipc_collect() + test_class_self.setup_threads() yield # Teardown logic + test_class_self.active = False + + # Fallback to production reader safety closure + if hasattr(test_class_self, "reader") and test_class_self.reader is not None: + try: + if hasattr(test_class_self.reader, "print_breakdown"): + test_class_self.reader.print_breakdown() + test_class_self.reader.stop() + except Exception: + pass + + if ( + hasattr(test_class_self, "stop_writer") + and test_class_self.stop_writer is not None + ): + try: + test_class_self.stop_writer.set() + except Exception: + pass + + # --- CRITICAL RE-ORDERED FLUSH GATE --- + # 1. First, block and wait for the video processing producer thread to completely finish + # reading all remaining frames from the input video file. + producer_thread_handle = getattr(test_class_self, "process_thread", None) + if producer_thread_handle is not None and producer_thread_handle.is_alive(): + producer_thread_handle.join(timeout=0.5) # 10.0) + + # 2. Block and wait for background asynchronous AI executor workers to finish inference tasks. + if hasattr(test_class_self, "executor") and test_class_self.executor: + test_class_self.executor.shutdown(wait=True) + + # 3. Allow the multiprocessing render queue to naturally empty its frames into the encoder pipe. if ( hasattr(test_class_self, "render_queue") and test_class_self.render_queue is not None ): try: - test_class_self.render_queue.put(None) + # Loop safely until the render loop handles the last remaining frames + # while not test_class_self.render_queue.empty(): + # time.sleep(0.05) + + # Send a poison pill token ONLY after all threads have fully stopped putting data into it + # test_class_self.render_queue.put(None, timeout=1.0) + if ( + hasattr(test_class_self, "render_queue") + and test_class_self.render_queue is not None + ): + try: + # Forcefully clear the queue thread tracking matrices + test_class_self.render_queue.close() + test_class_self.render_queue.cancel_join_thread() + except Exception: + pass except Exception: pass + # 4. Gracefully join the background FFmpeg process, avoiding premature kills render_proc_handle = getattr(test_class_self, "render_proc", None) - if render_proc_handle is not None and render_proc_handle._started.is_set(): - test_class_self.render_proc.join(timeout=10.0) + if render_proc_handle is not None: + try: + if render_proc_handle.is_alive(): + # Grant up to 10 seconds for disk I/O synchronization + render_proc_handle.join(timeout=0.5) # 10.0) - # Signal the state machine to drop out of loops safely - test_class_self.active = False - if hasattr(test_class_self, "reader") and test_class_self.reader is not None: + if render_proc_handle.is_alive(): + print( + "[WARN] Render worker hung during final flush. Forcing termination." + ) + render_proc_handle.terminate() + render_proc_handle.join() + + render_proc_handle.close() + except Exception: + pass + setattr(test_class_self, "render_proc", None) + + # 4. Deep System Unlinking of Shared Memory Layers (Parent/Child safe) + # This loop uses direct reference mapping rather than guessing PIDs + for shm_pool_attr in ["ai_shms", "shms"]: + if hasattr(test_class_self, shm_pool_attr): + shm_pool = getattr(test_class_self, shm_pool_attr) + if shm_pool: + for shm_segment in list(shm_pool): + try: + shm_segment.close() + shm_segment.unlink() + except Exception: + pass + shm_pool.clear() + + # 5. Clean up the Sync Base Manager Process + if hasattr(test_class_self, "manager") and test_class_self.manager is not None: try: - test_class_self.reader.stop() + test_class_self.manager.shutdown() except Exception: pass - - # Execute custom release blocks - test_class_self.stop() + test_class_self.manager = None # CRITICAL FIX: Block and wait for the background producer thread to die # BEFORE we delete the reader attribute from the namespace map. @@ -399,6 +498,60 @@ def each_test_setup(request): if producer_thread_handle is not None and producer_thread_handle.is_alive(): producer_thread_handle.join(timeout=5.0) + # if hasattr(test_class_self, "ingest_ring") and test_class_self.ingest_ring: + # for mat in test_class_self.ingest_ring: + # try: + # cv2.cuda.unregisterPageLocked(mat) + # except Exception: + # pass + # test_class_self.ingest_ring.clear() + + # if hasattr(test_class_self, "pinned_matrices") and test_class_self.pinned_matrices: + # for active_mat in test_class_self.pinned_matrices: + # try: + # cv2.cuda.unregisterPageLocked(active_mat) + # except Exception: + # pass + # test_class_self.pinned_matrices.clear() + # if hasattr(test_class_self, "pinned_tensors"): + # test_class_self.pinned_tensors.clear() + # if hasattr(test_class_self, "ai_pinned_tensors"): + # test_class_self.ai_pinned_tensors.clear() + + try: + cv2.cuda.unregisterPageLocked(test_class_self.pinned_matrices) + except Exception: + pass + + # ADD THIS MECHANISM: + if hasattr(test_class_self, "static_host_canvas"): + try: + cv2.cuda.unregisterPageLocked(test_class_self.static_host_canvas) + except Exception: + pass + + if ( + not test_class_self.active + ): # Only execute this block during complete class teardown + if hasattr(test_class_self, "ingest_ring") and test_class_self.ingest_ring: + for mat in test_class_self.ingest_ring: + try: + cv2.cuda.unregisterPageLocked(mat) + except Exception: + pass + test_class_self.ingest_ring.clear() + + if ( + hasattr(test_class_self, "pinned_matrices") + and test_class_self.pinned_matrices + ): + for active_mat in test_class_self.pinned_matrices: + try: + cv2.cuda.unregisterPageLocked(active_mat) + except Exception: + pass + test_class_self.pinned_matrices.clear() + # Now it is structurally safe to purge attributes without causing cross-thread collisions keys_to_purge = [ "reader", @@ -410,7 +563,7 @@ def each_test_setup(request): "ai_gpu_staging", "ai_pinned_tensors", "executor", - "io_executor", + # "io_executor", ] for key in keys_to_purge: if hasattr(test_class_self, key): @@ -427,6 +580,8 @@ def each_test_setup(request): with torch.inference_mode(): if torch.cuda.is_available(): torch.cuda.synchronize() + if device == "gpu": + torch.cuda.memory._record_memory_history(enabled=False) torch.cuda.empty_cache() torch.cuda.ipc_collect() @@ -436,39 +591,45 @@ def each_test_setup(request): @pytest.mark.usefixtures("setup_context") class TestSmartFilteringDetections: - # class TestSmartFilteringDetections(DeviceBaseHandler): - # """ - # Unified testing harness. - # By inheriting from DeviceBaseHandler, 'self' functions as both - # the pytest telemetry harness and the live stream execution runner. - # """ - # # Overriding __init__ to prevent standard initialization collisions with pytest - # def __init__(self, *args, **kwargs): - # pass # SETUP -------------------------------------------- @pytest.mark.parametrize("device", ["cpu", "gpu"]) @pytest.mark.parametrize("sf_enabled", [True, False]) @pytest.mark.parametrize("detection_type", ["motion", "object"]) - def test_detections(self, detection_type, device, sf_enabled): + def test_detections(self, device, sf_enabled, detection_type): """Unified test runner for all configurations.""" if detection_type == "motion" and not sf_enabled: pytest.skip( "Pure YOLO mode is structurally invalid for detection_type 'motion'." ) - # Run the actual model loader - # self.get_model_by_device(device, sf_enabled=self.config.sf_enabled) + self.duration_target = 30 + + # Trigger your clean overridden thread boot + self.start() + + print( + f"\n[TEST HARNESS] Execution Started. Monitoring variables natively for {self.duration_target}s...", + flush=True, + ) + # Explicit timer tracking allows background multiprocessing queues to stream uninhibited + # test_start_time = time.perf_counter() - # Execute - self.run_pipeline() # pipeline_fn) + while self.active or not self._is_stopped: + # Check if our active benchmark validation timeline target has been fulfilled + # if (time.perf_counter() - test_start_time) >= float(self.duration_target) + 15.0: + # print("\n[TEST HARNESS] Targeted test runtime duration reached. Initiating clean multi-process flush...", flush=True) + # break + time.sleep(0.1) # Stay clear of the hot pipeline lane + + assert self.status == "DONE" def setup_threads(self): - # Shared 10MB memory for display - self.setup_shared_memory() + """Overrides handlers.py to bind threads dynamically to the test instance.""" + self.setup_shared_memory() # Natively sets up Manager dictionary and buffers # Executor for Async YOLO tasks and FFmpeg re-encoding - # self.executor = ThreadPoolExecutor(max_workers=self.config.MAX_WORKERS) + self.executor = ThreadPoolExecutor(max_workers=self.config.MAX_WORKERS) # self.clip_executor = ThreadPoolExecutor(max_workers=self.config.MAX_WORKERS) print( @@ -476,102 +637,258 @@ def setup_threads(self): flush=True, ) - # Producer: Handles acquisition and AI metadata logs - # self.process_thread = threading.Thread( - # target=self.run_pipeline, - # daemon=True, - # ) - - self.signal_queue = mp.Queue(maxsize=1) - self.render_queue = mp.Queue(maxsize=5) + # Open up looking-ahead buffer horizons to eliminate 8K queue backpressure stalls + self.signal_queue = mp.Queue(maxsize=128) # 10) + self.render_queue = mp.Queue(maxsize=256) # 64) - # if self.config.TEST_MODE: test_dir = os.getenv( "TEST_SUITE_RENDER_DIR", str(Path(self.config.SHARED_OUTPUT)) ) os.makedirs(test_dir, exist_ok=True) - video_output_name = f"{self._testMethodName}_detections_output.mp4" + if self.source.startswith("rtsp"): + short_name = "rtsp" + else: + short_name = Path(self.source).stem + video_output_name = f"{self._testMethodName}_{short_name}_{self.device}.mp4" out_path = os.path.join(test_dir, video_output_name) + self.output_path = ( + out_path # f"{self.config.SHARED_OUTPUT}/{short_name}_{self.device}.mp4" + ) log_to_logger( f"[TEST MODE] Detection results saved to: {out_path}", level="info" ) - self.render_proc = threading.Thread( - target=rendering_worker, - args=( - self.render_queue, - (self.disp_w, self.disp_h), - out_path, - self.target_fps, + + # ===================================================================== + # DYNAMIC THREAD TARGET REDIRECTION + # ===================================================================== + # Lambda forces the background processing thread to evaluate your custom staging loop natively + self.process_thread = threading.Thread( + target=lambda: self.run_realtime_inference( + sf_enabled=self.config.sf_enabled ), daemon=True, ) + # self.render_proc = mp.Process( # threading.Thread( + # target=rendering_worker, + # args=( + # self.render_queue, + # (self.disp_w, self.disp_h), + # self.output_path, + # self.target_fps, + # ), + # daemon=True, + # ) + # self.render_proc = threading.Thread(target=lambda: None, daemon=True) + # self.display_proc = threading.Thread(target=lambda: None, daemon=True) + self.render_proc = DummyProcess() + self.display_proc = DummyProcess() + + self.async_writer = AsyncVideoWriter( + self.output_path, + cv2.VideoWriter_fourcc(*"avc1"), + float(self.target_fps), + (self.disp_w, self.disp_h), + ) + # self.async_writer = None - # Dummy target alignment to prevent execution signature exceptions - self.display_proc = threading.Thread(target=lambda: None, daemon=True) - # else: - # self.render_proc = mp.Process( - # target=rendering_worker, - # args=( - # self.render_queue, - # self.shared_details, - # self.ready_buffer_idx, - # self.reader_active_idx, - # self.shm_frame_lengths, - # self.signal_queue, - # (self.disp_w, self.disp_h), - # self.config.DISPLAY_FRAME_QUALITY, - # ), - # ) - - # def display_signal_sync(): - # while self.active: - # # Wait for signal - # # if self.mp_frame_ready_event.wait(timeout=1.0): - # # self.mp_frame_ready_event.clear() - # try: - # _ = self.signal_queue.get(timeout=1.0) - # # print(f"[DEBUG]: Signal received in FastAPI process for {self.name}", flush=True) - # # Wake FastAPI async loop in main thread - # self.loop.call_soon_threadsafe(self.frame_ready_event.set) - # except queue.Empty: - # continue - - # self.display_proc = threading.Thread( - # target=display_signal_sync, daemon=True - # ) - - # if self.config.ENABLE_QUERYING: - # # NEW: Dedicated I/O pool for Disk/GPU transfers (Higher worker count for 8K) - # self.io_executor = ThreadPoolExecutor(max_workers=8) - - # # Dedicated FFmpeg pool so re-encoding doesn't slow down live AI - # self.ffmpeg_executor = ThreadPoolExecutor(max_workers=2) - - # if not self.config.TEST_MODE: - # # Sends metadata to VDMS - # self.metadata_thread = threading.Thread( - # target=send_metadata, - # args=( - # VDMSPool(self.config.DBHOST, self.config.DBPORT, size=10), - # self.config.DEBUG_FLAG, - # self.config.INGESTION, - # self.config.TEST_MODE, - # self.config.UDF_HOST, - # self.config.UDF_PORT, - # self.config.DBHOST, - # self.config.DBPORT, - # ), - # daemon=True, - # ) + def start(self): + """ + Starts the decoupled ingestion and inference threads in the correct order. + """ + # PRE-SYNC: Ensure GPU is idle before timing starts + if self.device_input == "cuda": + if torch.cuda.is_available(): + torch.cuda.synchronize() + + # Start the hardware-decoupled reader first + self.reader.start() + + if self.config.ENABLE_QUERYING: + self._initialize_writer() + + # Small delay to allow the reader's deque to populate + time.sleep(0.1) + + # Start the producer and consumer threads + if hasattr(self, "process_thread") and not self.process_thread.is_alive(): + self.process_thread.start() - # # Consumer: Handles GPU-to-CPU download and Disk I/O (Writing resized frames to RAM disk) - # self.writer_thread = threading.Thread( - # target=self.video_writer_core_loop, - # args=(self.stop_writer,), - # daemon=True, - # ) + if not self.config.DISABLE_DETECTION: + self.render_proc.start() + + self.display_proc.start() + + if ( + self.config.ENABLE_QUERYING + and not self.config.TEST_MODE + and not self.metadata_thread.is_alive() + ): + self.metadata_thread.start() + + if self.config.ENABLE_QUERYING and not self.writer_thread.is_alive(): + self.writer_thread.start() + + return self + + def stop(self): + """Overrides handlers.py to flush thread objects safely without deadlocking.""" + with self._stop_lock: + if self._is_stopped: + return + + print( + f"\n[TEST HARNESS] Initiating rapid thread flush for {self.name}", + flush=True, + ) + self.active = False + + # 1. Rapidly clear the async video writer thread queue first + # if hasattr(self, "async_writer") and self.async_writer is not None: + # try: + # self.async_writer.release() + # except Exception: + # pass + + # ===================================================================== + # DECUPLED MULTI-PROCESS TEARDOWN LIFECYCLE SEQUENCE + # ===================================================================== + # 1. FIRST: Drain and synchronize your thread pool tasks so EVERY frame drops into the IPC queue + if hasattr(self, "display_pool") and self.display_pool is not None: + try: + if hasattr(self.display_pool, "_work_queue"): + backlog = self.display_pool._work_queue.qsize() + if backlog > 0: + print( + f"\n\033[94m[STAGE 1/4] Synchronizing display pool threads. Draining {backlog} background tasks...\033[0m", + flush=True, + ) + backlog_s = time.perf_counter() + while ( + self.display_pool._work_queue.qsize() > 0 + or len(self.reorder_staging_buffer) > 0 + ): + # Yield a brief slice to let worker threads complete downscaling + time.sleep(0.01) + backlog_e = time.perf_counter() - backlog_s + print(f"\t\033[94mTook {backlog_e} secs\033[0m", flush=True) + print( + "\033[92m[SUCCESS] All background image transformations completed cleanly.\033[0m", + flush=True, + ) + self.display_pool.shutdown(wait=True) + except Exception as e: + print( + f"[TEARDOWN ERROR] Thread pool synchronization failed: {e}", + flush=True, + ) + setattr(self, "display_pool", None) + + # 1. FIRST: Instantly dispatch the shutdown token so the worker process knows to flush entries + if hasattr(self, "render_queue") and self.render_queue is not None: + try: + print( + f"\n\033[94m[STAGE 1/3] Dispatching shutdown sentinel (None) to rendering process worker (Backlog: {self.render_queue.qsize()} frames)...\033[0m", + flush=True, + ) + # Delivering the poison pill immediately tells FFmpeg to drain remaining blocks sequentially + self.render_queue.put(None, timeout=2.0) + except Exception as queue_err: + print( + f"\033[91m[TEARDOWN ERROR] Failed staging shutdown token: {queue_err}\033[0m", + flush=True, + ) + + # 2. SECOND: Allow the background multiprocessing queue to empty outstanding items naturally + if hasattr(self, "render_queue") and self.render_queue is not None: + try: + print( + "\n\033[94m[STAGE 2/3] Finalizing file output. Draining remaining frames from IPC memory lane...\033[0m", + flush=True, + ) + t_drain = time.perf_counter() + # Wait up to 15 seconds for the worker process to pull every remaining matrix out of the pipe + while ( + not self.render_queue.empty() + and (time.perf_counter() - t_drain) < 15.0 + ): + time.sleep( + 0.01 + ) # Micro-yield grants immediate execution priority to the background process core + except Exception: + pass + + # 3. THIRD: Block the main thread safely and allow the detached process to finish disk I/O operations + if hasattr(self, "render_proc") and self.render_proc is not None: + try: + join_duration = 0.0 + if self.render_proc.is_alive(): + print( + "\033[94m[STAGE 2/2] Main thread blocking. Synchronizing hard drive file headers...\033[0m", + flush=True, + ) + t_join_start = time.perf_counter() + self.render_proc.join( + timeout=15.0 + ) # Safe timeout lets video containers finalize cleanly + join_duration = time.perf_counter() - t_join_start + else: + print( + "\033[94m[STAGE 2/2] Main thread clear...\033[0m", + flush=True, + ) + + if self.render_proc.is_alive(): + print( + "\n\033[91m[CRITICAL STALL] Render worker process hung on disk write! Forcing termination...\033[0m", + flush=True, + ) + self.render_proc.terminate() + self.render_proc.join() + else: + print( + f"\033[92m[FINAL] Video compilation finished cleanly! Hard drive commit took {join_duration:.2f} seconds.\033[0m", + flush=True, + ) + + expected_disk_path = Path(self.output_path) + if expected_disk_path.exists(): + size_mb = expected_disk_path.stat().st_size / (1024 * 1024) + print( + f"\033[92m[DISK VERIFIED] Destination asset compiled: {expected_disk_path.name} ({size_mb:.2f} MB)\033[0m\n", + flush=True, + ) + self.render_proc.close() + except Exception as proc_err: + print( + f"\033[91m[TEARDOWN ERROR] Failed closing background process container: {proc_err}\033[0m", + flush=True, + ) + setattr(self, "render_proc", None) + + # 4. FOURTH: Clean up remaining pipeline executors and queues safely + if hasattr(self, "render_queue") and self.render_queue is not None: + try: + self.render_queue.close() + self.render_queue.cancel_join_thread() + except Exception: + pass + setattr(self, "render_queue", None) + + if hasattr(self, "executor") and self.executor is not None: + try: + self.executor.shutdown(wait=True) + except Exception: + pass + setattr(self, "executor", None) + + self.status = "DONE" + self._is_stopped = True + print( + "[TEST HARNESS] Teardown complete. Releasing session cleanly.\n", + flush=True, + ) # HELPERS -------------------------------------------- def _print_gpu_mem(self): @@ -585,106 +902,6 @@ def _print_gpu_mem(self): else: print("\tCUDA not available.") - # def get_model_by_device(self, device, sf_enabled=False): - # """Singleton loader: only loads if device changes or model is missing.""" - # if ( - # sf_enabled - # and (self.frame_width * self.frame_height) - # <= self.config.SMART_FILTERING_PIXEL_CONSTRAINT - # ): - # sf_enabled = False - - # if ( - # TestSmartFilteringDetections._shared_model is not None - # and TestSmartFilteringDetections._shared_model_device == device - # and TestSmartFilteringDetections._shared_model_sf_enabled == sf_enabled - # ): - # self.model = TestSmartFilteringDetections._shared_model - # self.model_path = TestSmartFilteringDetections._shared_model_path - # return - - # run_platform_name = "engine" if "cuda" in self.device_input else "openvino" - - # if self.config.CUSTOM_MODEL_FLAG: - # dir_path = "/home/resources/models/ultralytics/custom_models" - # else: - # dir_path = f"/home/resources/models/ultralytics/{self.config.MODEL_NAME}/{self.config.MODEL_PRECISION}" - - # ( - # TestSmartFilteringDetections._shared_model, - # TestSmartFilteringDetections._shared_model_path, - # self.label_source, - # ) = get_model( - # # model_run_key, model_run_config, export=False - # Path(dir_path), - # self.config.MODEL_NAME, - # run_platform_name, - # self.device_input, - # batch=self.config.MODEL_MAX_BATCH_SIZE, - # force_export=force_export, - # sf_enabled=sf_enabled, - # model_h=self.resize_h, - # model_w=self.resize_w, - # ) - # TestSmartFilteringDetections._shared_model_device = device - # TestSmartFilteringDetections._shared_model_sf_enabled = sf_enabled - # self.model = TestSmartFilteringDetections._shared_model - # # self.model.half() - # self.model_path = TestSmartFilteringDetections._shared_model_path - - # W, H = self.resize_w, self.resize_h - # if not sf_enabled: - # W, H = self.frame_width, self.frame_height - # self.model_warmup(H, W) - # # self.pipeline_handler.model = self.model - # # self.pipeline_handler.model_warmup(H, W) - - # def calculate_unique_coverage(self, merged_boxes, target_w=640, target_h=640): - # """ - # FULLY VECTORIZED: Calculate pixel coverage without Python loops. - # Works for any number of boxes (1 to 1000+) with near-zero overhead. - # """ - # if merged_boxes is None or merged_boxes.shape[0] == 0: - # return 0.0 - - # # 1. Scaling (Vectorized) - # # merged_boxes is [N, 4] -> [x1, y1, x2, y2] in 8K space - # scale = torch.tensor( - # [ - # target_w / self.frame_width, - # target_h / self.frame_height, - # target_w / self.frame_width, - # target_h / self.frame_height, - # ], - # device=self.device_input, - # ) - - # # Scale and clamp all boxes at once on the GPU - # coords = (merged_boxes * scale).long() - # coords[:, [0, 2]] = coords[:, [0, 2]].clamp(0, target_w) - # coords[:, [1, 3]] = coords[:, [1, 3]].clamp(0, target_h) - - # # 2. Vectorized Mask Filling - # # We create a 1D representation of the 640x640 mask for fast indexing - # mask = torch.zeros( - # target_h * target_w, device=self.device_input, dtype=torch.uint8 - # ) - - # # For each box, we generate a range of indices and fill them. - # # Note: For small N (drones), a loop is okay, but for 'Swarm' noise, - # # we use this broadcasted approach: - # for i in range(coords.shape[0]): - # x1, y1, x2, y2 = coords[i] - # # Generate row indices for this box - # rows = torch.arange(y1, y2, device=self.device_input).view(-1, 1) - # # Calculate mask indices: (y * width) + x - # # This fills a horizontal slice of the mask in one GPU operation - # indices = (rows * target_w) + torch.arange(x1, x2, device=self.device_input) - # mask[indices] = 1 - - # # 3. Final Sum (GPU Reduction) - # return (torch.sum(mask).item() / (target_w * target_h)) * 100 - def calculate_unique_coverage(self, merged_boxes, target_w=640, target_h=640): """ TRUE LOOPLESS VECTORIZATION: Calculates combined bounding box pixel coverage @@ -725,28 +942,145 @@ def calculate_unique_coverage(self, merged_boxes, target_w=640, target_h=640): def _finalize_benchmarks( self, - # n_frames, num_objs, + total_written_frames, total_pipeline_ms, real_world_latency_ms, + total_sf_pipeline_ms, + frame_loop_latency_ms, coverage_percentages, - sf_enabled, - stat_frame_count, - stat_fps, + total_read_time, + total_queue_saturation, + queue_saturation_history, ): """Aggregates metrics and adds them to the results list.""" - latency_s = total_pipeline_ms / 1000.0 # Just pipeline (sf + roi_ det) - est_fps = self.frame_count / latency_s if latency_s > 0 else 0 - est_fps_processed = self.frame_count_target / latency_s if latency_s > 0 else 0 - duration_s = self.frame_count / self.input_fps if self.input_fps > 0 else 0 - - real_latency_s = real_world_latency_ms / 1000.0 - real_est_fps = self.frame_count / real_latency_s if real_latency_s > 0 else 0 - real_est_fps_processed = ( - self.frame_count_target / real_latency_s if real_latency_s > 0 else 0 + sf_enabled = self.config.sf_enabled + stat_frame_count = self.stat_frame_count + stat_fps = self.stat_fps + + h2d_label = ( + "Pinned H2D Transfer (PCIe DMA)" + if self.is_cuda + else "Data Preparation Overhead" + ) + # d2h_label = ( + # "D2H Transfer (PCIe Download)" + # if self.is_cuda + # else "Array Extraction Overhead" + # ) + + total_pipeline_s = total_pipeline_ms / 1000.0 # Full pipeline + + total_real_pipeline_s = ( + real_world_latency_ms / 1000.0 + ) # Pipeline until last frame sent to writer + real_est_fps = ( + self.frame_count_target / total_real_pipeline_s + if total_real_pipeline_s > 0 + else 0 + ) + + # if total_written_frames > 0: + duration_s = ( + self.reader.total_input_frames / self.reader.input_fps + if self.reader.input_fps > 0 + else 0 + ) + out_duration_s = ( + total_written_frames / self.reader.target_fps + if self.reader.target_fps > 0 + else 0 + ) + print( + f"Expected duration: {self.duration_target:.2f} stream_duration_s: {duration_s:.2f} output_duration_s: {out_duration_s:.2f}" + ) + + h2d_display_label = f"Reader {h2d_label}:" + avg_reader_ms = (total_read_time / total_written_frames) * 1000 + # avg_resize_ms = (total_resize_time / total_written_frames)*1000 + # avg_write_ms = (total_disk_write_overhead / total_written_frames)*1000 + target_frame_fps = total_written_frames / total_pipeline_s + all_frame_fps = self.reader.total_input_frames / total_pipeline_s + avg_copy_ms = (self.reader.total_shm_copy_time / total_written_frames) * 1000 + # avg_blocked_ms = ( + # self.reader.total_queue_wait_time / total_written_frames + # ) * 1000 + + # Avg Blocked MS tracks your downstream GIL blocks and serialization stalls + avg_blocked_ms = ( + sum(self.component_stats.get("queue_blocked", [0.0])) + / max(1, len(self.component_stats.get("queue_blocked", []))) + if self.component_stats.get("queue_blocked") + else 0.0 + ) + + avg_saturation = (total_queue_saturation / total_written_frames) * 100 + peak_saturation = ( + max(queue_saturation_history) * 100 if queue_saturation_history else 0 + ) + target_match_ratio = ( + total_written_frames / (total_pipeline_s * self.reader.target_fps) + ) * 100 + + frame_drop = max( + 0.0, + (1.0 - (total_written_frames / max(1, self.reader.total_input_frames))) + * 100.0, + ) + serial_pressure = (avg_blocked_ms / max(0.1, frame_loop_latency_ms)) * 100.0 + evac_vel = target_frame_fps / max(0.1, all_frame_fps) + + # Isolate the ratio of sequential loop stalls against full execution bounds + backpressure_index = (avg_blocked_ms / max(0.1, frame_loop_latency_ms)) * 100.0 + + if self.is_cuda: + avg_h2d_ms = (self.reader.total_h2d_time / total_written_frames) * 1000 + avg_prep_ms = 0.0 + else: + avg_prep_ms = (self.reader.total_h2d_time / total_written_frames) * 1000 + avg_h2d_ms = 0.0 + + # Calculate structural frame size payload in Gigabytes (H * W * Channels) + frame_size_gb = (self.reader.frame_height * self.reader.frame_width * 3) / ( + 1024**3 + ) + + # 1. Compute Peak H2D PCIe Throughput + avg_h2d_s = ( + ( + sum(self.component_stats["dma_upload"]) + / len(self.component_stats["dma_upload"]) + ) + / 1000.0 + if self.component_stats["dma_upload"] + else 0 ) + if self.is_cuda and avg_h2d_s > 0.00001: + self.pcie_throughput_gbps = frame_size_gb / avg_h2d_s + else: + self.pcie_throughput_gbps = ( + 0.0 # Safe fallback baseline for non-PCIe pipelines (CPU) + ) + + # Calculate bus saturation relative to standard Gen4 x16 baseline ceilings (31.5 GB/s) + # Scale to an index percentage safely + pcie_bus_saturation = (self.pcie_throughput_gbps / 31.5) * 100.0 + + # 2. Extract PyTorch VRAM Fragmentation Delta Metrics + if self.is_cuda and torch.cuda.is_available(): + peak_alloc = torch.cuda.max_memory_allocated(0) / 1024**2 + peak_reserved = torch.cuda.max_memory_reserved(0) / 1024**2 + self.vram_efficiency = ( + (peak_alloc / peak_reserved * 100.0) if peak_reserved > 0 else 100.0 + ) + else: + self.vram_efficiency = ( + 0.0 # Clean zero baseline representation for CPU runs + ) # Calculate averages for component breakdowns + # avg_reader_ms = (total_read_time / self.reader.total_input_frames) * 1000 + # avg_reader_ms = (total_read_time / self.frame_count_target) * 1000 avg_sf = ( sum(self.component_stats["sf"]) / len(self.component_stats["sf"]) if self.component_stats["sf"] @@ -762,6 +1096,19 @@ def _finalize_benchmarks( if self.component_stats["det"] else 0 ) + + # Total Latency Sum (SF + ROI + DET) + det_latency_ms = avg_sf + avg_roi + avg_det + det_latency_s = det_latency_ms / 1000.0 + det_est_fps = (total_written_frames / det_latency_s) if det_latency_s > 0 else 0 + + # Track model workloads against preprocessing overheads (sf_time + roi_time) + preprocessing_overhead = avg_sf + avg_roi + model_cost_density = avg_det / max(0.1, preprocessing_overhead) + + loop_overhead = max( + 0.0, 100.0 - ((det_latency_ms / max(1.0, frame_loop_latency_ms)) * 100.0) + ) avg_cov = ( sum(coverage_percentages) / len(coverage_percentages) if coverage_percentages @@ -774,9 +1121,6 @@ def _finalize_benchmarks( else 0 ) - # Total Latency Sum (SF + ROI + DET) - total_sum = avg_sf + avg_roi + avg_det - # Calculate how often we hit a high-motion cap (e.g., 20 crops) capped_frames = sum(1 for c in self.crops_per_frame_list if c >= 20) cap_rate = ( @@ -785,718 +1129,293 @@ def _finalize_benchmarks( else 0 ) + # avg_queue = ( + # sum(self.component_stats["queue_blocked"]) + # / len(self.component_stats["queue_blocked"]) + # if self.component_stats["queue_blocked"] + # else 0 + # ) + # avg_batch = ( + # sum(self.component_stats["batch_sizes"]) + # / len(self.component_stats["batch_sizes"]) + # if self.component_stats["batch_sizes"] + # else 0 + # ) + + backlog_list = self.component_stats.get("thread_backlog", []) + avg_backlog = ( + sum(backlog_list) / len(backlog_list) if len(backlog_list) > 0 else 0.0 + ) + + print("\n" + "=" * 60) + print( + f" FULLY-OPTIMIZED ASYNC STAGE ({self.config.DEVICE}) PIPELINE BREAKDOWN " + ) + print("=" * 60) + print(f"Total Output Frames Written: {total_written_frames}") + print(f"Total Pipeline Execution Time: {total_pipeline_s:.4f} seconds") + print(f"Overall Processing Speed: {target_frame_fps:.2f} FPS") + print("-" * 60) + print("MAIN CONSUMER LOOP TIMELINE (SEQUENTIAL OVERHEAD):") + print(f" 1. Shared Memory Copy to Host: {avg_copy_ms:6.2f} ms") + print( + f" 2. GIL / Downstream Queue Serialization Stalls: {avg_blocked_ms:6.2f} ms" + ) + print(f" 3. Pure Video Frame File-Ingestion Read: {avg_reader_ms:6.2f} ms") + print("-" * 60) + print("BACKGROUND INGESTION HEALTH (ASYNC METRICS):") + print( + f" A. Inbound Stream Decode Speed: {all_frame_fps:6.2f} FPS" + ) + print(f" B. {h2d_display_label:<42} {avg_h2d_ms:6.2f} ms") + print(f" C. Consumer Queue Saturation Density: {avg_saturation:6.1f}%") + print( + f" D. Peak PCIe Upload Throughput: {self.pcie_throughput_gbps:6.2f} GB/s" + ) + print( + f" E. Active Thread Pool Work Backlog: {avg_backlog:6.1f} tasks" + ) + print( + f" F. VRAM Hardware Memory Efficiency (Cache): {self.vram_efficiency:6.1f}%" + ) + print("-" * 60) + + # EXPANDED PERFORMANCE INSIGHTS AND DIAGNOSTICS + print("PIPELINE HEALTH & BEHAVIOR INSIGHTS:") + if avg_saturation > 80.0: + pipeline_status = "CHOKED" + print( + f" • Status: \033[91m🔴 {pipeline_status}\033[0m (Downstream logic cannot keep up with inbound stream speed)" + ) + elif avg_saturation > 40.0: + pipeline_status = "BALANCED" + print( + f" • Status: \033[93m🟡 {pipeline_status}\033[0m (Queue buffer is actively pacing consumer workloads)" + ) + else: + pipeline_status = "IDLE/LIGHT" + print( + f" • Status: \033[92m🟢 {pipeline_status}\033[0m (Consumer loop finishes ahead of background ingestion clock)" + ) + + print(f" • Peak Queue Fullness Reached: {peak_saturation:.1f}%") + # Calculate stream drop indicator + print(f" • Targeted Pacing Delivery Accuracy: {target_match_ratio:.1f}%") + print(f" • Downstream Serialization Pressure Index: {serial_pressure}") + print(f" • Core Queue Evacuation Velocity Rank: {evac_vel}") + print( + f" • Hardware Compute Backpressure Index: {backpressure_index:6.2f}%" + ) + print( + f" • Preprocessing to Inference Cost Density: {model_cost_density:6.2f}x" + ) + print( + f" • Physical PCIe Gen4 Bus Saturation Level: {pcie_bus_saturation:6.2f}%" + ) + print("=" * 60) + self.__class__.benchmarks.append( { "Test Name": self._testMethodName, "Detection Type": self.config.DETECTION_TYPE, - "Device": self.device, + "Device": self.config.DEVICE, "Smart Filtering": "Enabled" if sf_enabled else "Disabled", - "Video": self.video_path.name, # self.name? - "Video FPS": f"{self.input_fps:.2f}", - "Video Duration (s)": f"{duration_s:.4f}", - "Video Frames": self.frame_count, - "Target Frames": self.frame_count_target, - "Pipeline Latency (s)": f"{real_latency_s:.2f}", - "Display Latency (s)": f"{self.elapsed_display_time:.2f}", - "sf+roi+det Latency (s)": f"{latency_s:.2f}", - # Includes time by HW decoder (reader) and preparing output video - "Pipeline FPS (Video frames)": f"{real_est_fps:.2f}", - "Pipeline FPS (Target frames)": f"{real_est_fps_processed:.2f}", - # TIming to display frame (read to after send to render queue) - "Display Frames": stat_frame_count, - "Display FPS": f"{stat_fps:.2f}", - # Only sf + roi + det - "sf+roi+det FPS (Video frames)": f"{est_fps:.2f}", - "sf+roi+det FPS (Target frames)": f"{est_fps_processed:.2f}", + "Video": self.source, # self.name? + "Video FPS": f"{self.reader.input_fps:.2f}", + "Video Original Duration (s)": f"{duration_s:.4f}", + "Video Frames": self.reader.total_input_frames, + # PIPELINE OVERVIEW + "Target FPS": f"{self.reader.target_fps:.2f}", + "Output Duration (s)": f"{out_duration_s:.4f}", + "Output Frames": total_written_frames, + "Pipeline Latency (s)": f"{total_pipeline_s:.2f}", + "Pipeline FPS (Video frames)": f"{all_frame_fps:.2f}", + "Pipeline FPS (Target frames)": f"{target_frame_fps:.2f}", + "Real Pipeline Latency (s)": f"{total_real_pipeline_s:.2f}", + "Real Pipeline FPS (Target frames)": f"{real_est_fps:.2f}", + # MAIN CONSUMER LOOP TIMELINE (SEQUENTIAL OVERHEAD) + "Avg Frame Reading (ms)": f"{avg_reader_ms:.2f}", + # "Avg Resize (ms)": f"{avg_resize_ms:.2f}", + # "Avg Writer Async Handoff (ms)": f"{avg_write_ms:.2f}", + # BACKGROUND INGESTION HEALTH (ASYNC METRICS) + "Avg Host Copy (ms)": f"{avg_copy_ms:.2f}", + "Avg DMA Upload (ms)": f"{avg_h2d_ms:.2f}", + "Avg Data Prep Overhead (ms)": f"{avg_prep_ms:.2f}", + "Avg Queue Blocked (ms)": f"{avg_blocked_ms:.2f}", + "Avg Queue Saturation (%)": f"{avg_saturation:.2f}", + # Framework Overhead Leak Tracking (Measures loop time spent outside raw AI inference model blocks) + "Loop Overhead %": f"{loop_overhead:.2f}%", + # Inbound Stream Frame Drop Rate (Identifies if background threads are dropping packets due to I/O) + "Inbound Frame Drop %": f"{frame_drop:.2f}%", + # Serialization Pressure Index (Tracks what percentage of your frame time is lost to thread stalls) + "Serialization Pressure %": f"{serial_pressure:.2f}%", + # Queue Evacuation Velocity Coefficient (Values > 1.0 mean your consumer loop drains frames faster than ingestion) + "Evacuation Velocity": f"{evac_vel:.2f}x", + "Compute Backpressure Index": f"{backpressure_index:.2f}%", + "Model Cost Density Ratio": f"{model_cost_density:.2f}x", + "PCIe Bus Saturation %": f"{pcie_bus_saturation:.2f}%", + # PIPELINE HEALTH & BEHAVIOR INSIGHTS + "Pipeline Status": pipeline_status, + "Peak Queue Fullness (%)": f"{peak_saturation:.2f}", + "Targeted Pacing Delivery (%)": f"{target_match_ratio:.2f}", + # DETECTION PIPELINE (Should B NULL) + "SF/Detection Latency (s)": f"{det_latency_s:.2f}", + "SF/Detection FPS": f"{det_est_fps:.2f}", "Avg SF (ms)": f"{avg_sf:.2f}", "Avg ROI (ms)": f"{avg_roi:.2f}", "Avg Obj. Detection (ms)": f"{avg_det:.2f}", - "Total Breakdown Sum (ms)": f"{total_sum:.2f}", + "Total Breakdown Sum (ms)": f"{det_latency_ms:.2f}", "Avg Area Coverage %": f"{avg_cov:.2f}%", "Avg Crops/Frame": f"{avg_crops:.1f}", + # "Frames w/o ROIs": self.no_roi_frame_cnt, "Crop Cap Rate (>20)": f"{cap_rate:.1f}%", "Objects Detected": num_objs, + # TIming to display frame (read to after send to render queue) + "Display Latency (s)": f"{self.elapsed_display_time:.2f}", + "Display Frames": stat_frame_count, + "Display FPS": f"{stat_fps:.2f}", + "PCIe Bandwidth Throughput (GB/s)": f"{self.pcie_throughput_gbps:.2f}", + "Avg Async Thread Pool Backlog": f"{sum(self.component_stats.get('thread_backlog', [0])) / len(self.component_stats.get('thread_backlog', [1])):.1f}", + "VRAM Allocation Efficiency (%)": f"{self.vram_efficiency:.1f}%", } ) - print(f"\n[{self._testMethodName}] Latency: {latency_s:.2f} sec") print( - f"\n[{self._testMethodName}] Pipeline FPS (Target frames): {real_est_fps_processed:.2f} ({self.frame_count_target} frames)" + f"\n[{self._testMethodName}] Pipeline Latency (s): {total_pipeline_s:.2f} sec" ) print( - f"\n[{self._testMethodName}] sf+roi+det FPS (Target frames): {est_fps_processed:.2f} ({self.frame_count_target} frames)" + f"\n[{self._testMethodName}] Pipeline FPS (Target frames): {target_frame_fps:.2f} ({total_written_frames} frames)" ) print( - f"\n[{self._testMethodName}] Display FPS (Target frames): {stat_fps:.2f} ({stat_frame_count} frames)" + f"\n[{self._testMethodName}] Pipeline FPS (Video frames): {all_frame_fps:.2f} ({self.reader.total_input_frames} frames)" ) - - # def tensor2opencv_gpu(self, frame_tensor): - # """ - # GPU-native equivalent of tensor2opencv. - # Fixes the '3x3 ghosting' and 'ValueError' at 30+ FPS. - # """ - # # 1. Handle Batch Dimension: (1, 3, 640, 640) -> (3, 640, 640) - # temp = frame_tensor.squeeze(0) if frame_tensor.ndim == 4 else frame_tensor - - # # 2. Fix Layout & Shape: (3, 640, 640) -> (640, 640, 3) - # # contiguous() physically rearranges pixels in VRAM to interleave colors. - # # reshape() ensures we never see the (1, 409600, 3) shape again. - # gpu_hwc = temp.permute(1, 2, 0).reshape(640, 640, 3).contiguous() - - # # 3. Visibility Fix: Scale floats (0.0-1.0) to bytes (0-255) on GPU - # if gpu_hwc.dtype != torch.uint8: - # gpu_hwc = (gpu_hwc * 255).clamp(0, 255).byte() - - # # 4. Color Space Fix: RGB -> BGR (Matches OpenCV) - # gpu_bgr = gpu_hwc.flip(-1).contiguous() - - # # 5. Bridge to CuPy (Zero-Copy) - # cp_frame = cp.from_dlpack(torch.utils.dlpack.to_dlpack(gpu_bgr)) - - # # 6. Select Double-Buffer from Pool - # target_buf_cpu = self.pinned_pool_np[self.pool_idx] - # target_buf_gpu = self.cp_pool[self.pool_idx] - # self.pool_idx = (self.pool_idx + 1) % 2 - - # if not hasattr(self, "transfer_stream"): - # self.transfer_stream = cp.cuda.Stream(non_blocking=True) - - # with self.transfer_stream: - # # cp.copyto is more robust for pinned memory than target[:] - # cp.copyto(target_buf_gpu, cp_frame) - # # Download into the pinned CPU RAM - # target_buf_gpu.get(out=target_buf_cpu) - - # # 7. Mandatory Sync: Wait for the DMA transfer to hit RAM - # self.transfer_stream.synchronize() - - # # Return a snapshot copy so the worker has private memory for 30 FPS - # return target_buf_cpu.copy() - - # DEBUG FUNCTIONS -------------------------------------------- - def debug_save_mask(self, frame_source, frame_num, rois=None): - debug_dir = self.result_dir / "debug_mask" / self._testMethodName - debug_dir.mkdir(parents=True, exist_ok=True) - - if frame_num > self.config.DEBUG_FRAME_LIMIT: - return - - # Download or copy the data - if hasattr(frame_source, "download"): - img_cpu = frame_source.download() - elif torch.is_tensor(frame_source): - # .contiguous() fixes the horizontal "shredding"/static look - temp = frame_source.squeeze(0) if frame_source.ndim == 4 else frame_source - # img_cpu = temp.permute(1, 2, 0).contiguous().cpu().numpy() - if temp.ndim == 1: - temp = temp.view(self.resize_h, self.resize_w) - - if temp.ndim == 3: - img_cpu = temp.permute(1, 2, 0).contiguous().cpu().numpy() - else: - img_cpu = temp.contiguous().cpu().numpy() - else: - # For numpy arrays (like your pinned memory), ensure memory is linear - img_cpu = np.ascontiguousarray(frame_source) - - # Fix Visibility (Normalization) - # If float, scale to 0-255. If uint8, leave as is to avoid "neon" colors. - if img_cpu.dtype != np.uint8: - if img_cpu.max() <= 1.0: - img_cpu = (img_cpu * 255).clip(0, 255).astype(np.uint8) - else: - img_cpu = img_cpu.astype(np.uint8) - - # Handle Color Space - # OpenCV imwrite expects BGR. If 3-channel (RGB), swap. If 1-channel, save as-is. - if len(img_cpu.shape) == 3: - # img_cpu = cv2.cvtColor(img_cpu, cv2.COLOR_RGB2BGR) - pass - else: - img_cpu = cv2.cvtColor(img_cpu, cv2.COLOR_GRAY2BGR) - - # Draw 8K Boxes (Scaled down) - if rois is not None: - h_img, w_img = img_cpu.shape[:2] - scale_x = float(w_img) / self.frame_width - scale_y = float(h_img) / self.frame_height - boxes = rois.cpu().tolist() if torch.is_tensor(rois) else rois - for box in boxes: - x1, y1, x2, y2 = [ - int(box[0] * scale_x), - int(box[1] * scale_y), - int(box[2] * scale_x), - int(box[3] * scale_y), - ] - cv2.rectangle(img_cpu, (x1, y1), (x2, y2), (0, 0, 255), 2) - - # Save to disk - save_path = debug_dir / f"mask_{frame_num:04d}.jpg" - cv2.imwrite(str(save_path), img_cpu) - - def debug_save_img_roi(self, frame_source, bbs_full_res, frame_num): - debug_dir = self.result_dir / "debug_analysis" / self._testMethodName - debug_dir.mkdir(parents=True, exist_ok=True) - - if frame_num > self.config.DEBUG_FRAME_LIMIT: - return - - # Download/Copy the frame - if torch.is_tensor(frame_source): - # .contiguous() is CRITICAL here to fix the "shredded" look - temp = frame_source.squeeze(0) if frame_source.ndim == 4 else frame_source - img_cpu = temp.permute(1, 2, 0).contiguous().cpu().numpy() - elif hasattr(frame_source, "download"): - img_cpu = frame_source.download() - else: - img_cpu = np.ascontiguousarray(frame_source) - - # Fix Shape: restore spatial grid if flattened - if img_cpu.ndim == 3 and img_cpu.shape[0] == 1: - img_cpu = img_cpu.reshape((self.resize_h, self.resize_w, 3)) - - # Fix Visibility: ONLY multiply if it's actually floating point - # If uint8 is multiplied by 255, it wraps around and creates "neon" colors - if img_cpu.dtype != np.uint8: - if img_cpu.max() <= 1.0: - img_cpu = (img_cpu * 255).clip(0, 255).astype(np.uint8) - else: - img_cpu = img_cpu.astype(np.uint8) - - # Color Space: Standardize to BGR for imwrite - if len(img_cpu.shape) != 3: - img_cpu = cv2.cvtColor(img_cpu, cv2.COLOR_GRAY2BGR) - - # Draw 8K Boxes (Scaled down) - h_img, w_img = img_cpu.shape[:2] - scale_x = w_img / self.frame_width - scale_y = h_img / self.frame_height - - if bbs_full_res is not None: - boxes = ( - bbs_full_res.cpu().tolist() - if torch.is_tensor(bbs_full_res) - else bbs_full_res - ) - for box in boxes: - x1, y1, x2, y2 = [ - int(box[0] * scale_x), - int(box[1] * scale_y), - int(box[2] * scale_x), - int(box[3] * scale_y), - ] - cv2.rectangle(img_cpu, (x1, y1), (x2, y2), (0, 0, 255), 2) - - cv2.imwrite(str(debug_dir / f"analysis_{frame_num:04d}.jpg"), img_cpu) - - def debug_save_crops(self, cropped_batch, frame_num): - """Saves the first 5 crops of a batch to the results directory.""" - debug_dir = self.result_dir / "debug_crops" / self._testMethodName - debug_dir.mkdir(parents=True, exist_ok=True) - - # Only save for the first self.config.DEBUG_FRAME_LIMIT frames to avoid disk bloat - if frame_num > self.config.DEBUG_FRAME_LIMIT: - return - - for i, crop in enumerate(cropped_batch[: self.config.DEBUG_FRAME_LIMIT]): - # Convert GPU Tensor [C, H, W] -> NumPy [H, W, C] - if torch.is_tensor(crop): - # Reverse normalization (* 255) and permute to BGR - img = (crop.squeeze(0).permute(1, 2, 0) * 255).byte().cpu().numpy() - else: - img = crop - - cv2.imwrite(str(debug_dir / f"frame_{frame_num}_crop_{i}.jpg"), img) - - def debug_save_img(self, frame_source, frame_num): - debug_dir = self.result_dir / "debug_test" / self._testMethodName - debug_dir.mkdir(parents=True, exist_ok=True) - - if frame_num > self.config.DEBUG_FRAME_LIMIT: - return - - # Download/Copy the frame - if torch.is_tensor(frame_source): - # .contiguous() is CRITICAL here to fix the "shredded" look - temp = frame_source.squeeze(0) if frame_source.ndim == 4 else frame_source - img_cpu = temp.permute(1, 2, 0).contiguous().cpu().numpy() - elif hasattr(frame_source, "download"): - img_cpu = frame_source.download() - else: - img_cpu = np.ascontiguousarray(frame_source) - - # Fix Shape: restore spatial grid if flattened - if img_cpu.ndim == 3 and img_cpu.shape[0] == 1: - img_cpu = img_cpu.reshape((self.resize_h, self.resize_w, 3)) - - # Fix Visibility: ONLY multiply if it's actually floating point - # If uint8 is multiplied by 255, it wraps around and creates "neon" colors - if img_cpu.dtype != np.uint8: - if img_cpu.max() <= 1.0: - img_cpu = (img_cpu * 255).clip(0, 255).astype(np.uint8) - else: - img_cpu = img_cpu.astype(np.uint8) - - # Color Space: Standardize to BGR for imwrite - if len(img_cpu.shape) == 3: - pass - else: - img_cpu = cv2.cvtColor(img_cpu, cv2.COLOR_GRAY2BGR) - - cv2.imwrite(str(debug_dir / f"analysis_{frame_num:04d}.jpg"), img_cpu) - - # # FRAME PROCESSORS -------------------------------------------- - # def run_pipeline(self): #, pipeline_fn): - # # n_frames = 0 - # num_objs = 0 - # self.frame_count_target = 0 - # self.next_process_idx = 0.0 - # self.frame_in_clip_count = 0 - # total_pipeline_time_ms = 0.0 # Track pure latency - # coverage_percentages = [] - # self.component_stats = {"sf": [], "roi": [], "det": []} - # self.gpu_event_buffer = {"sf": [], "roi": [], "det": []} - # self.crops_per_frame_list = [] - - # # PRE-SYNC: Ensure GPU is idle before timing starts - # # if self.device_input == "cuda": - # # # Pre-allocate CUDA events for isolated GPU timing - # # # start_event = torch.cuda.Event(enable_timing=True) - # # # end_event = torch.cuda.Event(enable_timing=True) - - # # if torch.cuda.is_available(): - # # torch.cuda.synchronize() - - # self.start() - # time.sleep(0.1) - - # # start_time = time.perf_counter() - # total_session_start = time.perf_counter() - - # while self.active: # and n_frames < 10*self.fps: - # # ret, frame = self.cap.read() - # device_frame, frame_num = self.reader.read() - # if device_frame is None: - # if self.reader.stopped: - # self.active = False - # break - # continue - - # # n_frames += 1 - # self.frame_count += 1 - # is_target_frame = float(frame_num) >= self.next_process_idx - # nob = 0 - - # # if self.device_input == "cuda": - # # # start_eve nt.record() - # # nob, metrics = self.pipeline_fn(device_frame, frame_num, is_target_frame) - # # # end_event.record() - # # # torch.cuda.synchronize() - # # # total_pipeline_time_ms += start_event.elapsed_time(end_event) - # # else: - # # start_t = time.perf_counter() - # if self.device_input == "cuda": - # # Record the reader's current layout availability milestone - # curr_event = torch.cuda.Event() - # curr_event.record() - - # # Instruct the isolated inference stream to wait for this specific frame context - # self.inference_stream.wait_event(curr_event) - # with torch.cuda.stream(self.inference_stream): - # nob, metrics = self.pipeline_fn(device_frame, frame_num, is_target_frame) - # # self.inference_stream.synchronize() - - # else: - # nob, metrics = self.pipeline_fn(device_frame, frame_num, is_target_frame) - # # total_pipeline_time_ms += (time.perf_counter() - start_t) * 1000 - - # num_objs += nob - - # if is_target_frame and metrics != {}: - # num_crops = len(metrics["bbs"]) if metrics["bbs"] is not None else 0 - # self.crops_per_frame_list.append(num_crops) - - # # self.component_stats["roi"].append(metrics["roi_time"]) - - # # if self.device_input != "cuda": - # if metrics.get("sf_time"): - # self.component_stats["sf"].append(metrics["sf_time"]) - # if metrics.get("det_time"): - # self.component_stats["det"].append(metrics["det_time"]) - # if metrics.get("roi_time"): - # self.component_stats["roi"].append(metrics["roi_time"]) - - # # Calculate coverage OUTSIDE the timed block to prevent interference - # if self.config.sf_enabled and metrics.get("bbs") is not None: - # cov = self.calculate_unique_coverage(metrics["bbs"]) - # coverage_percentages.append(cov) - - # # POST-SYNC: Ensure all GPU tasks finished before timing ends - # if self.device_input == "cuda": - # torch.cuda.synchronize() - - # # ACTUAL speed including all overhead - # real_world_latency_ms = (time.perf_counter() - total_session_start) * 1000 - - # # if self.device_input == "cuda": - # # # Move GPU event timings into component_stats lists - # # for key in ["sf", "det", "roi"]: - # # for start, end in self.gpu_event_buffer[key]: - # # self.component_stats[key].append(start.elapsed_time(end)) - - # # Calculate Pure processing latency - # # This excludes: Reader, Tensor2OpenCV, Queueing, and Video Writing - # total_pipeline_time_ms = ( - # sum(self.component_stats["sf"]) - # + sum(self.component_stats["roi"]) - # + sum(self.component_stats["det"]) - # ) - - # # assert num_objs > 0 - # if num_objs == 0: - # print(f" [WARNING] No objects detected for {self._testMethodName}") - - # self._finalize_benchmarks( - # self.frame_count, - # num_objs, - # total_pipeline_time_ms, - # real_world_latency_ms, - # coverage_percentages, - # self.config.sf_enabled, - # self.stat_frame_count, - # self.stat_fps, - # ) - - def run_pipeline(self): - num_objs = 0 - self.frame_count_target = 0 - self.next_process_idx = 0.0 - self.frame_in_clip_count = 0 - total_pipeline_time_ms = 0.0 - coverage_percentages = [] - self.component_stats = {"sf": [], "roi": [], "det": []} - self.crops_per_frame_list = [] - - self.step_size = ( - float(self.input_fps) / float(self.target_fps) - if hasattr(self, "target_fps") - else 1.0 + print( + f"\n[{self._testMethodName}] SF/Detection FPS (Target frames): {det_est_fps:.2f} ({total_written_frames} frames)" + ) + print( + f"\n[{self._testMethodName}] Display FPS: {stat_fps:.2f} ({stat_frame_count} frames)" ) - self.start() - time.sleep(0.1) + def frame2video( + self, + device_frame, + frameNum, + metadata_or_bbs, + class_list, + ): + scale_display_x = self.disp_w / 640 + scale_display_y = self.disp_h / 640 + + if self.device_input == "cuda" and torch.is_tensor(device_frame): + # 2. Fast Inline VRAM Downscaling into our static memory slot + # Reshape to (Batch, Channel, Height, Width) seamlessly without duplicating data + gpu_tensor = device_frame[None, :].permute(0, 3, 1, 2).float() + + resized_tensor = torch.nn.functional.interpolate( + gpu_tensor, + size=(self.disp_h, self.disp_w), + mode="nearest", + ) - total_session_start = time.perf_counter() + # CONVERTS TO CPU EARLIER (WORKS but lowers fps) + # hwc_byte_tensor = resized_tensor.squeeze(0).permute(1, 2, 0).byte() + # cpu_tensor = hwc_byte_tensor.cpu() + # bgr_contiguous = cpu_tensor.contiguous() - while self.active: - # 1. CAPTURE COMPLETE CYCLE OVERHEAD - # t_cycle_start = time.perf_counter() + # Using copy_() avoids creating any runtime allocations or memory-stride drift. + self.static_gpu_byte_bchw.copy_(resized_tensor.byte()) - device_frame, frame_num = self.reader.read() - if device_frame is None: - if self.reader is None or ( - hasattr(self.reader, "stopped") and self.reader.stopped - ): - # --- CRITICAL PIPELINE DRAIN START --- - print( - "[INFO] Reader reached EOF. Draining asynchronous workers and VRAM queues..." - ) + # Safely reshape the pre-allocated, locked GPU memory layout back to standard HWC array topology. + # Since the underlying array layout is strictly contiguous, this permute is guaranteed + # to be zero-copy on the GPU and free from memory race stalls. + bgr_contiguous = self.static_gpu_byte_bchw.squeeze(0).permute(1, 2, 0) - # 1. Thread Pool Flush: Force the CPU thread to block here until - # every single background pipeline task in the executor finishes. - if hasattr(self, "executor") and self.executor: - self.executor.shutdown(wait=True) + # 1. Grab the current free pinned slot tracking variables from your reader + d2h_idx = self.reader.d2h_selector + pinned_tensor_buf = self.reader.d2h_buffers[d2h_idx] - # 2. Render Queue Flush: If you utilize an asynchronous video frame - # saving worker thread, wait for its queue tasks to bottom out. - if hasattr(self, "render_queue") and self.render_queue: - while not self.render_queue.empty(): - time.sleep(0.01) + # c_idx = self.canvas_selector + # current_canvas = self.static_host_canvases[c_idx] - # 3. GPU Hardware Flush: Force the GPU to completely finish - # all remaining background subtraction, crops, and YOLO operations. - if self.device_input == "cuda": - torch.cuda.synchronize() + # host_tensor_view = torch.as_tensor(current_canvas, device="cpu") - self.active = False - break - continue + # 3. Non-blocking asynchronous PCIe DMA Download directly into our page-locked canvas + with torch.cuda.stream(self.reader.download_stream): + # pinned_tensor = torch.from_numpy(current_canvas).cuda() + pinned_tensor_buf.copy_(bgr_contiguous, non_blocking=True) - self.stat_start_time = time.perf_counter() # timing to display detection - self.frame_count += 1 - # is_target_frame = float(frame_num) >= self.next_process_idx - # CRITICAL CADENCE DRIFT FIX: If input FPS equals target FPS, or if Smart Filtering - # is disabled (YOLO baseline), force is_target_frame to ALWAYS be True. - # This completely bypasses floating-point accumulation drift errors. - if ( - not self.config.sf_enabled - or abs(float(self.input_fps) - float(self.target_fps)) < 0.01 - ): - is_target_frame = True - else: - is_target_frame = float(frame_num) >= self.next_process_idx + # Synchronize only the side download stream layout channel + self.reader.download_stream.synchronize() - # 2. DISPATCH WORKLOADS ASYNCHRONOUSLY - metrics = {} - if is_target_frame: - self.next_process_idx += self.step_size + cpu_360p_frame = self.reader.d2h_numpys[d2h_idx] - if self.device_input == "cuda": - # Instantiate a lightweight hardware fence event object - curr_event = torch.cuda.Event(enable_timing=False) - # curr_event.record() - # Record the exact milestone on the default stream right after fetching the frame data - curr_event.record(torch.cuda.default_stream()) - self.inference_stream.wait_event(curr_event) - with torch.cuda.stream(self.inference_stream): - # 1. Isolate the incoming image buffer canvas - isolated_device_frame = ( - device_frame.clone() - if torch.is_tensor(device_frame) - else device_frame.copy() - ) + # 5. Non-Blocking Push straight to your background AsyncVideoWriter thread pool + # We pass a direct .copy() slice so the hot loop can instantly reuse the pinned ring buffer + display_frame = np.array(cpu_360p_frame, copy=True, order="C") - # 2. RUN BACKGROUND SUBTRACTION IMMEDIATELY ON THE PRODUCER TIMELINE - # This guarantees that the mask matches this exact frame_num before threads overlap! - nob, metrics = self.pipeline_fn( - isolated_device_frame, - frame_num, - is_target_frame, - self.stat_start_time, - ) - else: - # 1. Isolate the incoming image buffer canvas - isolated_device_frame = ( - device_frame.clone() - if torch.is_tensor(device_frame) - else device_frame.copy() - ) + if display_frame is not None and display_frame.shape[-1] == 3: + display_frame = cv2.cvtColor(display_frame, cv2.COLOR_RGB2BGR) - # 2. RUN BACKGROUND SUBTRACTION IMMEDIATELY ON THE PRODUCER TIMELINE - # This guarantees that the mask matches this exact frame_num b - nob, metrics = self.pipeline_fn( - isolated_device_frame, - frame_num, - is_target_frame, - self.stat_start_time, - ) + # --- Draw Detection Overlays --- + if isinstance(metadata_or_bbs, dict): + # Object Mode (YOLO Structs) + display_frame = get_metadata_overlay( + display_frame, + metadata_or_bbs, + class_list, + (scale_display_x, scale_display_y), + (self.disp_w, self.disp_h), + is_bgr=True, + ) - num_objs += nob - # else: - # # Process background execution context for skipped frames - # nob, metrics = self.pipeline_fn( - # device_frame, frame_num, is_target_frame, self.stat_start_time - # ) - - # 3. ENFORCE UNIFIED HARDWARE TIMING BARRIER - # if self.device_input == "cuda": - # torch.cuda.synchronize() - - # t_cycle_end = time.perf_counter() - # cycle_total_ms = (t_cycle_end - t_cycle_start) * 1000.0 - - # 4. ALLOCATE ALL TRACKING TIMINGS ACCURATELY - # if is_target_frame: - if metrics != {}: - num_crops = len(metrics["bbs"]) if metrics["bbs"] is not None else 0 - self.crops_per_frame_list.append(num_crops) - - if self.config.sf_enabled: - self.component_stats["sf"].append(metrics["sf_time"]) - self.component_stats["roi"].append(metrics["roi_time"]) - else: - # Full-frame YOLO baseline accounts for total data movement cycle - # self.component_stats["det"].append(cycle_total_ms) - self.component_stats["sf"].append(0.0) - self.component_stats["roi"].append(0.0) - - self.component_stats["det"].append(metrics["det_time"]) - - if self.config.sf_enabled and metrics.get("bbs") is not None: - cov = self.calculate_unique_coverage(metrics["bbs"]) - coverage_percentages.append(cov) - # else: - # # CRITICAL METRICS FIX: If Smart Filtering runs on a skipped frame, - # # its mask generation overhead MUST be captured and tracked! - # if self.config.sf_enabled and metrics != {}: - # self.component_stats["sf"].append(metrics["sf_time"]) + elif metadata_or_bbs is not None: + # # Motion / Smart Filtering Overlay Path + display_frame = get_bb_overlay( + display_frame, + metadata_or_bbs, + (scale_display_x, scale_display_y), + (self.disp_w, self.disp_h), + ) - if self.device_input == "cuda": - torch.cuda.synchronize() + self.async_writer.write_frame(display_frame) + # self.canvas_selector = 1 - self.canvas_selector + self.reader.d2h_selector = 1 - self.reader.d2h_selector - real_world_latency_ms = (time.perf_counter() - total_session_start) * 1000.0 + else: + # Reusable baseline track for CPU execution mappings + display_frame = cv2.resize( + device_frame, + (self.disp_w, self.disp_h), + interpolation=cv2.INTER_NEAREST, + ) + # if metrics["bbs"] is not None: + # for box in metrics["bbs"]: + # cv2.rectangle(cpu_resized, (int(box[0]), int(box[1])), (int(box[2]), int(box[3])), (0, 255, 0), 2) + # --- Draw Detection Overlays --- + if isinstance(metadata_or_bbs, dict): + # Object Mode (YOLO Structs) + display_frame = get_metadata_overlay( + display_frame, + metadata_or_bbs, + class_list, + (scale_display_x, scale_display_y), + (self.disp_w, self.disp_h), + is_bgr=True, + ) - total_pipeline_time_ms = ( - sum(self.component_stats["sf"]) - + sum(self.component_stats["roi"]) - + sum(self.component_stats["det"]) - ) + elif metadata_or_bbs is not None: + # # Motion / Smart Filtering Overlay Path + display_frame = get_bb_overlay( + display_frame, + metadata_or_bbs, + (scale_display_x, scale_display_y), + (self.disp_w, self.disp_h), + ) + self.async_writer.write_frame(display_frame) - if num_objs == 0: - print(f" [WARNING] No objects detected for {self._testMethodName}") - - self._finalize_benchmarks( - # self.frame_count, - num_objs, - total_pipeline_time_ms, - real_world_latency_ms, - coverage_percentages, - self.config.sf_enabled, - self.stat_frame_count, - self.stat_fps, - ) + # PIPELINE FUNCTIONS -------------------------------------------- - # # TESTS -------------------------------------------- - # def pipeline_fn(self, device_frame, overall_frame_num, is_target_frame): - # num_objs = 0 - # metrics = {"sf_time": 0, "roi_time": 0, "det_time": 0, "bbs": None} - - # # Initialize timing event handle pairs - # sf_start, sf_end = torch.cuda.Event(enable_timing=True), torch.cuda.Event(enable_timing=True) - # roi_start, roi_end = torch.cuda.Event(enable_timing=True), torch.cuda.Event(enable_timing=True) - # det_start, det_end = torch.cuda.Event(enable_timing=True), torch.cuda.Event(enable_timing=True) - - # # --- 1. MOTION MASK GENERATION GATE --- - # if self.config.sf_enabled: - # if self.device_input == "cuda": - # sf_start.record(self.inference_stream) - # inf_data = self.rbtd_full_gpu(device_frame) - # sf_end.record(self.inference_stream) - # else: - # t_start = time.perf_counter() - # inf_data = self.rbtd_full_cpu(device_frame) - # metrics["sf_time"] = (time.perf_counter() - t_start) * 1000.0 - # else: - # inf_data = {} - - # # --- PIPELINE AT TARGET RATE --- - # if not is_target_frame: - # # If skipping, pull outstanding execution records immediately - # if self.device_input == "cuda" and self.config.sf_enabled: - # self.inference_stream.synchronize() - # metrics["sf_time"] = sf_start.elapsed_time(sf_end) - # return num_objs, metrics - - # self.next_process_idx += self.step_size - # self.frame_count_target += 1 - # self.frame_in_clip_count += 1 - # inf_data["frameNum"] = self.frame_count_target - - # # --- 2. FULL-RESOLUTION ROI EXTRACTION MAPS --- - # bbs_full_res = None - # if self.config.sf_enabled: - # if self.device_input == "cuda": - # roi_start.record(self.inference_stream) - # bbs_full_res = self.get_gpu_rois( - # inf_data["full_frame"], - # self.frame_count_target, - # inf_data["mask"], - # ) - # roi_end.record(self.inference_stream) - # metrics["bbs"] = bbs_full_res - # else: - # t_start = time.perf_counter() - # bbs_full_res = self.get_cpu_rois( - # inf_data["full_frame"], - # self.frame_count_target, - # inf_data["mask"], - # ) - # metrics["roi_time"] = (time.perf_counter() - t_start) * 1000.0 - # metrics["bbs"] = bbs_full_res - - # if self.config.DEBUG_FLAG: - # if self.device_input == "cuda": - # torch.cuda.stream(self.inference_stream) - # torch.cuda.synchronize() - # display_source = inf_data["mask"] - # self.debug_save_mask( - # display_source, self.frame_count_target, rois=bbs_full_res - # ) - - # clean_bbs = [] - # if self.config.sf_enabled and bbs_full_res is not None: - # if torch.is_tensor(bbs_full_res): - # clean_bbs = bbs_full_res.detach().cpu().numpy() - # else: - # clean_bbs = np.array(bbs_full_res) - - # # --- 3. MODEL INFERENCE TIMING BLOCK --- - # if self.device_input == "cuda": - # det_start.record(self.inference_stream) - # else: - # t_start = time.perf_counter() - - # if self.config.DETECTION_TYPE != "motion": - # det_frame = inf_data["full_frame"] if "full_frame" in inf_data else device_frame - # merged = clean_bbs if self.config.sf_enabled else None - # metadata, _ = self.get_detections( - # det_frame, - # self.frame_in_clip_count, - # merged=merged, - # thickness=self.config.THICKNESS, - # device_input=self.config.device_input, - # ) - # num_objs = len(metadata.keys()) - # else: - # num_objs = len(clean_bbs) - # metadata = clean_bbs - - # if self.device_input == "cuda": - # det_end.record(self.inference_stream) - - # # CRITICAL PERFORMANCE SYNCHRONIZATION POINT: - # # We execute a single stream synchronization barrier here at the end of the entire loop. - # # This allows the GPU kernels to run overlapped and fully concurrently! - # self.inference_stream.synchronize() - - # # Unpack hardware timings efficiently - # if self.config.sf_enabled: - # metrics["sf_time"] = sf_start.elapsed_time(sf_end) - # metrics["roi_time"] = roi_start.elapsed_time(roi_end) - # metrics["det_time"] = det_start.elapsed_time(det_end) - # metrics["bbs"] = bbs_full_res - # else: - # metrics["det_time"] = (time.perf_counter() - t_start) * 1000.0 - - # # --- 4. RENDER WORKER PREPARATION --- - # display_source = inf_data["full_frame"] if (inf_data and "full_frame" in inf_data) else device_frame - - # if self.device_input == "cuda": - # gpu_resized = F.interpolate( - # display_source.unsqueeze(0).float(), - # size=(self.disp_h, self.disp_w), - # mode="bilinear", - # align_corners=False, - # ).squeeze(0).contiguous() - # disp_frame = np.copy(tensor2opencv(gpu_resized, self.config.device_input, is_bgr=True)) - # else: - # cpu_resized = cv2.resize(device_frame, (self.disp_w, self.disp_h)) - # disp_frame = np.copy(tensor2opencv(cpu_resized, self.config.device_input, is_bgr=True)) - - # data_to_draw = clean_bbs if self.config.DETECTION_TYPE == "motion" else metadata - - # try: - # if hasattr(self, "render_queue") and getattr(self, "render_queue", None) is not None and not self.render_queue.full(): - # self.render_queue.put( - # ( - # disp_frame, - # inf_data["frameNum"] if "frameNum" in inf_data else self.frame_count_target, - # data_to_draw, - # self.label_source, - # ) - # ) - # if self.config.DEBUG_FLAG: - # self.debug_save_img(disp_frame, self.frame_count_target) - # self.debug_save_img_roi(disp_frame, bbs_full_res, self.frame_count_target) - # except queue.Full: - # pass - - # self.update_frame() - # return num_objs, metrics - - def pipeline_fn( - self, device_frame, overall_frame_num, is_target_frame, stat_start_time - ): + def pipeline_fn(self, device_frame, overall_frame_num, stat_start_time): num_objs = 0 metrics = {"sf_time": 0, "roi_time": 0, "det_time": 0, "bbs": None} @@ -1514,11 +1433,15 @@ def pipeline_fn( torch.cuda.Event(enable_timing=True), ) - # --- 1. MOTION MASK GENERATION GATE --- if self.config.sf_enabled: if self.device_input == "cuda": sf_start.record(self.inference_stream) - inf_data = self.rbtd_full_gpu(device_frame) + bgs_input_frame = ( + device_frame.byte() + if torch.is_tensor(device_frame) + else device_frame + ) + inf_data = self.rbtd_full_gpu(bgs_input_frame) sf_end.record(self.inference_stream) else: t_start = time.perf_counter() @@ -1526,17 +1449,6 @@ def pipeline_fn( metrics["sf_time"] = (time.perf_counter() - t_start) * 1000.0 else: inf_data = {} - - # --- PIPELINE AT TARGET RATE --- - if not is_target_frame: - # Safe, non-blocking timing extraction for skipped frames - if self.device_input == "cuda" and self.config.sf_enabled: - torch.cuda.synchronize() - metrics["sf_time"] = sf_start.elapsed_time(sf_end) - return num_objs, metrics - - self.frame_count_target += 1 - self.frame_in_clip_count += 1 inf_data["frameNum"] = self.frame_count_target # --- 2. FULL-RESOLUTION ROI EXTRACTION MAPS --- @@ -1581,25 +1493,34 @@ def pipeline_fn( else: clean_bbs = np.array(bbs_full_res) + # If inline optimizations left the tensor in channels-first format (B, C, H, W), + # restore it to standard standard layout standard (H, W, C) so get_detections + # can decode bounding boxes accurately without corrupting weights. + det_frame = device_frame + # Cast float canvases back to standard unsigned byte tracking arrays + # so get_detections can safely run its internal float normalizations. + if torch.is_tensor(det_frame): + det_frame = det_frame.byte() + + if det_frame.ndim == 4: + det_frame = det_frame.squeeze(0).permute(1, 2, 0) + elif det_frame.shape[0] == 3: + det_frame = det_frame.permute(1, 2, 0) + # --- 3. MODEL INFERENCE TIMING BLOCK --- if self.device_input == "cuda": det_start.record(self.inference_stream) else: t_start = time.perf_counter() + metadata = {} if self.config.DETECTION_TYPE != "motion": + # Pass directly or use a light NumPy view slice to protect the raw pointer # det_frame = ( - # inf_data["full_frame"] if "full_frame" in inf_data else device_frame + # device_frame + # if not isinstance(device_frame, np.ndarray) + # else device_frame.view() # ) - # Isolate your image buffer array view to prevent upstream reader pointer races - if "full_frame" in inf_data: - det_frame = inf_data["full_frame"] - else: - det_frame = ( - device_frame.clone() - if torch.is_tensor(device_frame) - else device_frame.copy() - ) merged = clean_bbs if self.config.sf_enabled else None metadata, _ = self.get_detections( @@ -1616,445 +1537,415 @@ def pipeline_fn( if self.device_input == "cuda": det_end.record(self.inference_stream) - - torch.cuda.synchronize() + # torch.cuda.synchronize() + self.inference_stream.synchronize() # Extract hardware timings smoothly without stalling mid-run if self.config.sf_enabled: metrics["sf_time"] = sf_start.elapsed_time(sf_end) metrics["roi_time"] = roi_start.elapsed_time(roi_end) - metrics["det_time"] = det_start.elapsed_time(det_end) - metrics["bbs"] = bbs_full_res + metrics["det_time"] = det_start.elapsed_time(det_end) + metrics["bbs"] = bbs_full_res + metrics["batch_density"] = ( + len(clean_bbs) if clean_bbs is not None else 0 + ) + else: + # Full-frame YOLO baseline tracks the elapsed time from t_start on page 20, line 1273 + metrics["sf_time"] = 0.0 + metrics["roi_time"] = 0.0 + metrics["det_time"] = det_start.elapsed_time(det_end) + metrics["bbs"] = None + metrics["batch_density"] = 1 # 1 Full frame block + else: - metrics["det_time"] = (time.perf_counter() - t_start) * 1000.0 + # CPU Path Execution: Must use standard wall-clock timing loops to avoid CUDA Event errors + if self.config.sf_enabled: + # Timings for sf_time and roi_time are already gathered on CPU on page 19 line 1221 and page 20 line 1246 + metrics["det_time"] = (time.perf_counter() - t_start) * 1000.0 + metrics["bbs"] = bbs_full_res + metrics["batch_density"] = ( + len(clean_bbs) if clean_bbs is not None else 0 + ) + else: + metrics["sf_time"] = 0.0 + metrics["roi_time"] = 0.0 + metrics["det_time"] = (time.perf_counter() - t_start) * 1000.0 + metrics["bbs"] = None + metrics["batch_density"] = 1 + + data_to_draw = clean_bbs if self.config.DETECTION_TYPE == "motion" else metadata - # --- 4. RENDER WORKER PREPARATION --- - display_source = ( - inf_data["full_frame"] - if (inf_data and "full_frame" in inf_data) - else device_frame + self.frame2video( + det_frame, + inf_data["frameNum"], + data_to_draw, + self.label_source, ) - if self.device_input == "cuda": - gpu_resized = ( - F.interpolate( - display_source.unsqueeze(0).float(), - size=(self.disp_h, self.disp_w), - mode="bilinear", - align_corners=False, + self.update_frame(stat_start_time) + return num_objs, metrics # Skip full detection pass + + def run_realtime_inference(self, sf_enabled=True): + # self.duration_target = 30 + self.status = "RUNNING" + metrics = {} + num_objs = 0 + self.is_cuda = self.device.lower() == "gpu" and torch.cuda.is_available() + self.frame_count_target = 0 + self.next_process_idx = 0.0 + self.frame_in_clip_count = 0 + total_pipeline_time_ms = 0.0 + total_read_time = 0.0 + total_queue_saturation = 0.0 + # queue_saturation_history = [0.0] + total_written_frames = 0 + total_sf_pipeline_time_ms = 0.0 + real_world_latency_ms = 0.0 + + # queue_size = 4 + total_run_pipelinefn = 0 + # total_read_time = 0 + # total_resize_time = 0 + # total_written_frames = 0 + # total_disk_write_overhead = 0.0 + total_frame_loop_latency = 0.0 + total_active_processing_overhead = 0.0 + # total_queue_saturation = 0.0 + # total_queue_saturation = 0.0 + queue_saturation_history = [] + consecutive_slow_frames = 0 + # total_dropped_frames = 0 + + coverage_percentages = [] + self.component_stats = { + "sf": [], + "roi": [], + "det": [], + "dma_upload": [], # Track PCIe Transfer Latencies + "queue_blocked": [], # Track GIL Serialization stalls + "batch_sizes": [], # Track Smart Filtering density + "thread_backlog": [], # Track thread work pool backlog + } + self.crops_per_frame_list = [] + + self.step_size = ( + float(self.input_fps) / float(self.target_fps) + if hasattr(self, "target_fps") + else 1.0 + ) + self.max_target_frames = ( + int(self.duration_target * float(self.target_fps)) + if hasattr(self, "target_fps") + else float("inf") + ) + + # self.start() + # time.sleep(0.1) + + # if self.source.startswith("rtsp"): + # short_name = "rtsp" + # else: + # short_name = Path(self.source).stem + # output_path= f"{self.config.SHARED_OUTPUT}/{short_name}_{self.device}.mp4" + # disp_wh = (self.disp_w, self.disp_h) + # async_writer = AsyncVideoWriter( + # self.output_path, + # cv2.VideoWriter_fourcc(*'avc1'), + # float(self.target_fps), + # (self.disp_w, self.disp_h) + # ) + + pipeline_start_time = time.perf_counter() + last_loop_cycle_timestamp = time.perf_counter() + + # try: + self.dynamic_limit = max(2, int(0.5 * self.target_fps)) + # last_frame_time = time.perf_counter() + while self.active and self.frame_count_target < self.max_target_frames: + try: + # FRAME RETRIEVAL --------------------------------------------- + try: + frame_start_time = time.perf_counter() + t_read = time.perf_counter() + # if self.active: + ret, frame_8k, frame_num = ( + self.reader.read() + ) # Successfully reads the 8K frame + + if not ret or frame_8k is None: + # Check if there are any remaining frames still buffered in flight inside the reader queue + # if hasattr(self.reader, 'frame_queue') and not self.reader.frame_queue.empty(): + # ret, frame_8k, frame_num = self.reader.read() + # if not ret or frame_8k is None: + # break + # else: + # break + if self.reader is None or ( + hasattr(self.reader, "stopped") and self.reader.stopped + ): + if self.device_input == "cuda": + torch.cuda.synchronize() + self.active = False + break + continue + + reader_time = time.perf_counter() - t_read + total_read_time += reader_time + + # Calculate the exact time gap between the last frame completion + # and the start of the next read. This accurately captures downstream GIL blocks. + cycle_gap = time.perf_counter() - last_loop_cycle_timestamp + # Subtract the actual read duration to isolate the thread stall time + true_serialization_stall = max( + 0.0, (cycle_gap - (time.perf_counter() - t_read)) * 1000.0 + ) + self.component_stats["queue_blocked"].append( + true_serialization_stall + ) + + except queue.Empty: + if getattr(self.reader, "reconnect_failed", False): + self.active = False + break + time.sleep(0.002) + continue + + # print(f"frame_num: {frame_num}") + + self.stat_start_time = time.perf_counter() + self.frame_count += 1 + # is_target_frame = True + + # Real-Time Metric A: Track Queue Saturation Density Ratio + # current_q_size = self.reader.frame_queue.qsize() + saturation_ratio = ( + self.reader.frame_queue.qsize() / self.reader.frame_queue.maxsize ) - .squeeze(0) - .contiguous() - ) - disp_frame = np.copy( - tensor2opencv(gpu_resized, self.config.device_input, is_bgr=True) + total_queue_saturation += saturation_ratio + queue_saturation_history.append(saturation_ratio) + + # RUN PIPELINE_FN --------------------------------------------- + run_pipelinefn_start = time.perf_counter() + self.frame_count_target += 1 + self.frame_in_clip_count += 1 + + if self.device_input == "cuda": + # Instantiate a lightweight hardware fence event object + curr_event = torch.cuda.Event(enable_timing=False) + # curr_event.record() + # Record the exact milestone on the default stream right after fetching the frame data + curr_event.record(torch.cuda.default_stream()) + self.inference_stream.wait_event(curr_event) + + with torch.cuda.stream(self.inference_stream): + nob, metrics = self.pipeline_fn( + frame_8k, + frame_num, + # is_target_frame, + self.stat_start_time, + ) + # torch.cuda.default_stream().synchronize() + # self.inference_stream.synchronize() + + # Extract PCIe DMA upload latency from your hardware background reader + if hasattr(self.reader, "total_h2d_time"): + avg_h2d_frame_ms = ( + self.reader.total_h2d_time + / max(1, total_written_frames + 1) + ) * 1000.0 + self.component_stats["dma_upload"].append(avg_h2d_frame_ms) + else: + nob, metrics = self.pipeline_fn( + frame_8k, + frame_num, + # is_target_frame, + self.stat_start_time, + ) + num_objs += nob + + total_written_frames += 1 + + # Real-Time Metric B: Frame Processing Latency Check + frame_loop_latency = ( + time.perf_counter() - frame_start_time + ) * 1000 # ms + total_frame_loop_latency += frame_loop_latency + + # Isolate active processing time (excluding the queue blocking read) + active_processing_overhead = frame_loop_latency - (reader_time * 1000) + total_active_processing_overhead += active_processing_overhead + + # RUNTIME TERMINAL WARNING ALERTS + if saturation_ratio >= 1.0 or active_processing_overhead > ( + 1000 / self.target_fps + ): + consecutive_slow_frames += 1 + if ( + consecutive_slow_frames % self.target_fps == 0 + ): # Throttle terminal spam + print( + f"\033[93m⚠️ [PERF WARNING] Main loop starving! Waiting on stream ingestion... " + f"Read Wait: {reader_time:.1f}ms | Other Wait: {active_processing_overhead:.1f}ms | Queue Fullness: {saturation_ratio * 100:.0f}%\033[0m" + ) + else: + consecutive_slow_frames = max(0, consecutive_slow_frames - 1) + + if total_written_frames % (5 * self.target_fps) == 0: + print( + f"Captured {total_written_frames}/{self.max_target_frames} frames..." + ) + + # WRAP-UP FRAME INSTANCE --------------------------------------------- + # if self.device_input == "cuda" and torch.cuda.is_available(): + # torch.cuda.default_stream().synchronize() + + total_run_pipelinefn += time.perf_counter() - run_pipelinefn_start + + # Explicitly delete frame variables to free their references + del frame_8k + + last_loop_cycle_timestamp = time.perf_counter() + + # Force PyTorch's internal allocator to release cached segments back to the OS + # if self.frame_count_target % (5 * self.target_fps) == 0: + # print( + # f"Captured {self.frame_count_target}/{self.max_target_frames} frames..." + # ) + # torch.cuda.empty_cache() + # torch.cuda.ipc_collect() + + except torch.cuda.OutOfMemoryError: + print("\n" + "!" * 70) + print( + "[CRITICAL TEST CRASH] GPU MEMORY CEILING HIT INSIDE RUNNER LOOP!" + ) + print( + "Freezing allocation history registers and writing diagnostic log..." + ) + print("!" * 70) + + try: + import os + + snapshot_filename = ( + f"/tmp/test_vram_leak_profile_pid{os.getpid()}.pickle" + ) + torch.cuda.memory._dump_snapshot(snapshot_filename) + print( + f"[PROFILER SUCCESSFUL] Snapshot profile written to: {snapshot_filename}" + ) + print( + "--> Drag and drop this file directly into: https://pytorch.org" + ) + except Exception as dump_err: + print(f"Failed to record profile data snapshot: {dump_err}") + + # Force safe system unlinking of background workers to clean up OS handles + self.active = False + if hasattr(self, "reader") and self.reader is not None: + self.reader.stop() + raise + + except Exception: + traceback.print_exc() + + # POST FRAME PROCESSING --------------------------------------------- + pipeline_end_time = time.perf_counter() + + # Resolve the final execution window. If the stream ran to completion, + # use the operational end marker to avoid measuring downstream disk write bottlenecks. + final_end_marker = getattr(self, "pipeline_completion_timestamp", None) + if final_end_marker is None: + final_end_marker = time.perf_counter() + # self.pipeline_completion_timestamp = final_end_marker + + real_world_latency_ms = float((final_end_marker - pipeline_start_time) * 1000.0) + + total_sf_pipeline_time_ms = float( + sum(self.component_stats.get("sf", [0.0])) + + sum(self.component_stats.get("roi", [0.0])) + + sum(self.component_stats.get("det", [0.0])) + ) + total_pipeline_time_ms = float( + (pipeline_end_time - pipeline_start_time) * 1000.0 + ) + + # total_queue_saturation = sum( + # self.component_stats.get("batch_sizes", [0.0]) + # ) # Sample array profile proxy + + if metrics != {}: + num_crops = len(metrics["bbs"]) if metrics["bbs"] is not None else 0 + self.crops_per_frame_list.append(num_crops) + + # Context-aware extraction of the newly proposed metrics + density = metrics.get("batch_density", 0 if self.config.sf_enabled else 1) + self.component_stats["batch_sizes"].append(density) + + self.component_stats["sf"].append(metrics["sf_time"]) + self.component_stats["roi"].append(metrics["roi_time"]) + self.component_stats["det"].append(metrics["det_time"]) + + # Calculate coverage OUTSIDE the timed block to prevent interference + if self.config.sf_enabled and metrics.get("bbs") is not None: + cov = self.calculate_unique_coverage(metrics["bbs"]) + coverage_percentages.append(cov) + self.async_writer.release() + # Continuously sample the thread work pool backlog state mechanics + if hasattr(self, "executor") and self.executor is not None: + # Safely probe internal concurrent.futures work queue bounds + self.component_stats["thread_backlog"].append( + self.executor._work_queue.qsize() ) else: - cpu_resized = cv2.resize(device_frame, (self.disp_w, self.disp_h)) - disp_frame = np.copy( - tensor2opencv(cpu_resized, self.config.device_input, is_bgr=True) - ) + self.component_stats["thread_backlog"].append(0) - data_to_draw = clean_bbs if self.config.DETECTION_TYPE == "motion" else metadata + # Real-Time Metric B: Frame Processing Latency Check + # total_frame_loop_latency = (pipeline_end_time - frame_start_time) * 1000 # ms - # try: - # if ( - # hasattr(self, "render_queue") - # and getattr(self, "render_queue", None) is not None - # and not self.render_queue.full() - # ): - # self.render_queue.put( - # ( - # disp_frame, - # inf_data["frameNum"] - # if "frameNum" in inf_data - # else self.frame_count_target, - # data_to_draw, - # self.label_source, - # ) - # ) - # if self.config.DEBUG_FLAG: - # self.debug_save_img(disp_frame, self.frame_count_target) - # self.debug_save_img_roi( - # disp_frame, bbs_full_res, self.frame_count_target + # Isolate active processing time (excluding the queue blocking read) + # total_active_processing_overhead = total_frame_loop_latency - total_read_time #(reader_time * 1000) + + # RUNTIME TERMINAL WARNING ALERTS + # if saturation_ratio >= 1.0 or active_processing_overhead > (1000 / self.target_fps): + # consecutive_slow_frames += 1 + # if consecutive_slow_frames % self.target_fps == 0: # Throttle terminal spam + # print( + # f"\033[93m⚠️ [PERF WARNING] Main loop starving! Waiting on stream ingestion... " + # f"Read Wait: {frame_loop_latency:.1f}ms | Queue Fullness: {saturation_ratio * 100:.0f}%\033[0m" # ) - # except queue.Full: - # pass + # else: + # consecutive_slow_frames = max(0, consecutive_slow_frames - 1) - if ( - hasattr(self, "render_queue") - and getattr(self, "render_queue", None) is not None - ): - self.render_queue.put( - ( - disp_frame, - inf_data["frameNum"] - if "frameNum" in inf_data - else self.frame_count_target, - data_to_draw, - self.label_source, - ) + # CALCULATE PERFORMANCE METRICS --------------------------------------------- + print( + f"\nExecution Finished. Total Output Frames Written: {self.frame_count_target}" + ) + + # Render your metrics dashboard table cleanly + if self.frame_count_target > 0: + avg_frame_loop_latency = total_frame_loop_latency / self.frame_count_target + self._finalize_benchmarks( + num_objs, + self.frame_count_target, # Reads the updated integer directly! + total_pipeline_time_ms, + real_world_latency_ms, + total_sf_pipeline_time_ms, + avg_frame_loop_latency, + coverage_percentages, + total_read_time, + total_queue_saturation, + queue_saturation_history, ) - if self.config.DEBUG_FLAG: - self.debug_save_img(disp_frame, self.frame_count_target) - self.debug_save_img_roi(disp_frame, bbs_full_res, self.frame_count_target) + else: + print( + f"[SKIPPED SUMMARY] Only {self.frame_count_target} frames processed. ", + flush=True, + ) + self.stop() - self.update_frame(stat_start_time) - return num_objs, metrics - - # def sf_cpu_pipeline_fn(self, device_frame, overall_frame_num, is_target_frame): - # num_objs = 0 - # metrics = {"sf_time": 0, "roi_time": 0, "det_time": 0, "bbs": None} - - # # Smart Filtering (Resize / Background Subtraction / Threshold / Dilate) - # t_start = time.perf_counter() - # inf_data = self.rbtd_full_cpu(device_frame) - # metrics["sf_time"] = (time.perf_counter() - t_start) * 1000 - - # # Only keep frames for TARGET_FPS - # # Videos are written for target frames only - # if is_target_frame: - # self.next_process_idx += self.step_size - # self.frame_count_target += 1 # 1-indexed - - # if not inf_data or inf_data["mask"] is None: - # return num_objs, metrics - - # metadata = {} - # bbs_to_send = [] - # data_to_draw = [] - # if inf_data: - # inf_data["frameNum"] = self.frame_count_target - - # # Get ROIs - # t_start = time.perf_counter() - # bbs_full_res = self.get_cpu_rois( - # inf_data["full_frame"], - # self.frame_count_target, - # inf_data["mask"], - # ) - # metrics["roi_time"] = (time.perf_counter() - t_start) * 1000 - # metrics["bbs"] = bbs_full_res - - # if self.config.DEBUG_FLAG: - # display_source = inf_data["mask"] - # self.debug_save_mask( - # display_source, self.frame_count_target, rois=bbs_full_res - # ) - - # if bbs_full_res is not None and len(bbs_full_res) == 0: - # return num_objs, metrics - - # # if self.config.DEBUG_FLAG or self.config.DETECTION_TYPE == "motion": - # # display_source = ( - # # inf_data["full_frame"] - # # if (inf_data and "full_frame" in inf_data) - # # else device_frame - # # ) - # # cpu_resized = cv2.resize( - # # display_source, - # # (self.resize_w, self.resize_h), - # # interpolation=cv2.INTER_NEAREST, - # # ) - - # t_start = time.perf_counter() - # if self.config.DETECTION_TYPE == "motion": - # # Motion Mode: Prepare boxes for drawing - # if ( - # bbs_full_res is not None - # and bbs_full_res.ndim == 2 - # and bbs_full_res.size(0) > 0 - # ): - # scaled_resized_bbs = bbs_full_res / self.scales_tensor - # bbs_to_send = scaled_resized_bbs.cpu().tolist() - # else: - # bbs_to_send = [] - - # data_to_draw = bbs_to_send - # num_objs = len(bbs_full_res) - # else: - # # Object Mode: Run YOLO and prepare metadata - # det_frame = inf_data["full_frame"] if inf_data else device_frame - # metadata, _ = self.get_detections( - # det_frame, - # self.frame_count_target, # Frame used in metadata - # merged=bbs_full_res, - # thickness=self.config.THICKNESS, - # device_input=self.config.device_input, - # ) - # data_to_draw = metadata - # num_objs = len(metadata.keys()) - - # metrics["det_time"] = (time.perf_counter() - t_start) * 1000 - - # # --- OFFLOAD TO QUEUE (Run for EVERY target frame) --- - # if not self.config.TEST_MODE: - # display_source = ( - # inf_data["full_frame"] - # if (inf_data and "full_frame" in inf_data) - # else device_frame - # ) - # cpu_resized = cv2.resize(display_source, (self.resize_w, self.resize_h)) - # display_frame = tensor2opencv( - # cpu_resized, self.config.device_input, is_bgr=True - # ) - # self.render_queue.put((display_frame, data_to_draw, self.label_source)) - - # if self.config.DEBUG_FLAG: - # cpu_resized = cv2.resize( - # display_source, (self.resize_w, self.resize_h) - # ) - # self.debug_save_img(cpu_resized, self.frame_count_target) - # self.debug_save_img_roi( - # cpu_resized, bbs_full_res, self.frame_count_target - # ) - - # return num_objs, metrics - - # def sf_gpu_pipeline_fn(self, device_frame, overall_frame_num, is_target_frame): - # num_objs = 0 - # metrics = {"sf_time": 0, "roi_time": 0, "det_time": 0, "bbs": None} - - # # Smart Filtering (Resize / Background Subtraction / Threshold / Dilate) - # sf_start, sf_end = ( - # torch.cuda.Event(enable_timing=True), - # torch.cuda.Event(enable_timing=True), - # ) - # sf_start.record() - # inf_data = self.rbtd_full_gpu(device_frame) - # sf_end.record() - # self.gpu_event_buffer["sf"].append((sf_start, sf_end)) - - # # Only keep frames for TARGET_FPS - # # Videos are written for target frames only - # if is_target_frame: - # self.next_process_idx += self.step_size - # self.frame_count_target += 1 # 1-indexed - - # if not inf_data or inf_data["mask"] is None: - # return num_objs, metrics - - # metadata = {} - # bbs_to_send = [] - # data_to_draw = [] - # if inf_data: - # inf_data["frameNum"] = self.frame_count_target - - # # Get ROIs - # # time.perf_counter accurate since called self.bgs_stream.waitForCompletion() - # # t_start = time.perf_counter() - # roi_start = torch.cuda.Event(enable_timing=True) - # roi_end = torch.cuda.Event(enable_timing=True) - # roi_start.record() - # bbs_full_res = self.get_gpu_rois( - # inf_data["full_frame"], - # self.frame_count_target, - # inf_data["mask"], - # ) - # # metrics["roi_time"] = (time.perf_counter() - t_start) * 1000 - # # self.gpu_event_buffer["roi"].append((roi_start, roi_end)) - # roi_end.record() - # self.gpu_event_buffer["roi"].append((roi_start, roi_end)) - # metrics["bbs"] = bbs_full_res - - # if self.config.DEBUG_FLAG: - # self.bgs_stream.waitForCompletion() - # display_source = inf_data["mask"] - # self.debug_save_mask( - # display_source, self.frame_count_target, rois=bbs_full_res - # ) - - # if bbs_full_res is not None and len(bbs_full_res) == 0: - # return num_objs, metrics - - # det_start, det_end = ( - # torch.cuda.Event(enable_timing=True), - # torch.cuda.Event(enable_timing=True), - # ) - # det_start.record() - # if self.config.DETECTION_TYPE == "motion": - # # Motion Mode: Prepare boxes for drawing - # if ( - # bbs_full_res is not None - # and bbs_full_res.ndim == 2 - # and bbs_full_res.size(0) > 0 - # ): - # scaled_resized_bbs = bbs_full_res / self.scales_tensor - # bbs_to_send = scaled_resized_bbs.detach().cpu().tolist() - # else: - # bbs_to_send = [] - # data_to_draw = bbs_to_send - # num_objs = len(bbs_to_send) - # else: - # # Object Mode: Run YOLO and prepare metadata - # det_frame = ( - # inf_data["full_frame"] if inf_data else device_frame - # ) # RGB - # metadata, _ = self.get_detections( - # det_frame, - # self.frame_count_target, - # merged=bbs_full_res, - # thickness=self.config.THICKNESS, - # device_input=self.config.device_input, - # ) - # data_to_draw = metadata - # num_objs = len(metadata.keys()) - - # det_end.record() - # self.gpu_event_buffer["det"].append((det_start, det_end)) - - # # --- OFFLOAD TO QUEUE (Run for EVERY target frame) --- - # if not self.config.TEST_MODE: - # display_source = ( - # inf_data["full_frame"] - # if (inf_data and "full_frame" in inf_data) - # else device_frame - # ) # RGB - # gpu_resized = F.interpolate( - # display_source.unsqueeze(0).half(), - # size=(self.resize_h, self.resize_w), - # mode="bilinear", - # align_corners=False, - # ).squeeze(0) - # display_frame = tensor2opencv( - # gpu_resized, self.config.device_input, is_bgr=True - # ) - # # display_frame = self.tensor2opencv_gpu(gpu_resized) - # self.render_queue.put((display_frame, data_to_draw, self.label_source)) - - # if self.config.DEBUG_FLAG: - # gpu_resized = F.interpolate( - # display_source.unsqueeze(0).float(), - # size=(self.resize_h, self.resize_w), - # mode="bilinear", - # align_corners=False, - # ) # RGB - # self.debug_save_img(gpu_resized, self.frame_count_target) - # self.debug_save_img_roi( - # gpu_resized, bbs_full_res, self.frame_count_target - # ) - - # # Async metrics stay at 0 for fairness; collected at the end of the video - # metrics["sf_time"] = 0 - # metrics["roi_time"] = 0 - # metrics["det_time"] = 0 - # return num_objs, metrics - - # def yolo_cpu_pipeline_fn(self, device_frame, overall_frame_num, is_target_frame): - # num_objs = 0 - # metadata = {} - # metrics = {"sf_time": 0, "roi_time": 0, "det_time": 0, "bbs": None} - - # # Only keep frames for TARGET_FPS - # if is_target_frame: - # self.next_process_idx += self.step_size - # self.frame_count_target += 1 # 1-indexed - - # # Get detection at original resolution (No SF) - # t_start = time.perf_counter() - # metadata, _ = self.get_detections( - # device_frame, - # self.frame_count_target, - # thickness=self.config.THICKNESS, - # device_input=self.config.device_input, - # ) - # num_objs = len(metadata.keys()) - # metrics["det_time"] = (time.perf_counter() - t_start) * 1000 - - # if not self.config.TEST_MODE: - # cpu_resized = cv2.resize(device_frame, (self.resize_w, self.resize_h)) - # display_frame = tensor2opencv( - # cpu_resized, self.config.device_input, is_bgr=True - # ) - # self.render_queue.put((display_frame, metadata, self.label_source)) - - # return num_objs, metrics - - # def yolo_gpu_pipeline_fn(self, frame_raw, overall_frame_num, is_target_frame): - # num_objs = 0 - # metadata = {} - # metrics = {"sf_time": 0, "roi_time": 0, "det_time": 0, "bbs": None} - - # # Only keep frames for TARGET_FPS - # if is_target_frame: - # self.next_process_idx += self.step_size - # self.frame_count_target += 1 # 1-indexed - - # # Get detection at original resolution (No SF) - # det_start, det_end = ( - # torch.cuda.Event(enable_timing=True), - # torch.cuda.Event(enable_timing=True), - # ) - # det_start.record() - # metadata, _ = self.get_detections( - # frame_raw, - # self.frame_count_target, - # thickness=self.config.THICKNESS, - # device_input=self.config.device_input, - # ) - # num_objs = len(metadata.keys()) - # det_end.record() - # self.gpu_event_buffer["det"].append((det_start, det_end)) - - # # --- OFFLOAD TO QUEUE (Run for EVERY target frame) --- - # if not self.config.TEST_MODE: - # gpu_resized = F.interpolate( - # frame_raw.unsqueeze(0).half(), - # size=(self.resize_h, self.resize_w), - # mode="bilinear", - # align_corners=False, - # ).squeeze(0) - # display_frame = tensor2opencv( - # gpu_resized, self.config.device_input, is_bgr=True - # ) - # # display_frame = self.tensor2opencv_gpu(gpu_resized) - # self.render_queue.put((display_frame, metadata, self.label_source)) - - # # Async metrics stay at 0 for fairness; collected at the end of the video - # metrics["sf_time"] = 0 - # metrics["det_time"] = 0 - # return num_objs, metrics - - -# INHERIT METHODS FROM HANDLERS ----------------------------------------------------------------- -# TestSmartFilteringDetections.setup_reader = DeviceBaseHandler.setup_reader -# TestSmartFilteringDetections.get_frameWH = DeviceBaseHandler.get_frameWH -# TestSmartFilteringDetections.initialize_variables = ( -# DeviceBaseHandler.initialize_variables -# ) -# TestSmartFilteringDetections.filter_contained_boxes = ( -# DeviceBaseHandler.filter_contained_boxes -# ) -# TestSmartFilteringDetections.get_detections = DeviceBaseHandler.get_detections -# TestSmartFilteringDetections.prepare_pipeline = DeviceBaseHandler.prepare_pipeline -# TestSmartFilteringDetections.get_gpu_rois_by_area = ( -# DeviceBaseHandler.get_gpu_rois_by_area -# ) -# TestSmartFilteringDetections.get_gpu_rois = DeviceBaseHandler.get_gpu_rois -# TestSmartFilteringDetections.get_cpu_rois = DeviceBaseHandler.get_cpu_rois -# TestSmartFilteringDetections.run_model = DeviceBaseHandler.run_model -# TestSmartFilteringDetections.model_warmup = DeviceBaseHandler.model_warmup - -# # TestSmartFilteringDetections.cleanup_gpu = GPUStreamHandler.cleanup_gpu -# # TestSmartFilteringDetections.rbtd_full_gpu = GPUStreamHandler.rbtd_full_gpu -# # TestSmartFilteringDetections.prepare_gpu_pipeline = ( -# # GPUStreamHandler.prepare_gpu_pipeline -# # ) -# # TestSmartFilteringDetections.allocate_gpu = GPUStreamHandler.allocate_gpu -# TestSmartFilteringDetections.gpu_warmup = GPUStreamHandler.gpu_warmup -# TestSmartFilteringDetections.apply_background_subtraction_gpu = ( -# GPUStreamHandler.apply_background_subtraction_gpu -# ) - -# TestSmartFilteringDetections.cleanup_cpu = CPUStreamHandler.cleanup_cpu -# # TestSmartFilteringDetections.rbtd_full_cpu = CPUStreamHandler.rbtd_full_cpu -# # TestSmartFilteringDetections.prepare_cpu_pipeline = ( -# # CPUStreamHandler.prepare_cpu_pipeline -# # ) -# # TestSmartFilteringDetections.allocate_cpu = CPUStreamHandler.allocate_cpu -# TestSmartFilteringDetections.apply_background_subtraction_cpu = ( -# CPUStreamHandler.apply_background_subtraction_cpu -# ) + +# MAIN ---------------------------------------- def get_pytest_filter_expression(args): @@ -2089,6 +1980,12 @@ def get_pytest_filter_expression(args): if __name__ == "__main__": + # Force all PyTorch extension handles to compile and load BEFORE threads spawn + if torch.cuda.is_available(): + _ = torch.zeros(1).cuda() + import torch._ops + import torch.utils + # TEST ARGUMENTS parser = argparse.ArgumentParser(description="Run Video Detection Pipeline Tests") parser.add_argument( diff --git a/fastapi/tests/test_model.py b/fastapi/tests/test_model.py index c2710fd..efd8428 100644 --- a/fastapi/tests/test_model.py +++ b/fastapi/tests/test_model.py @@ -206,7 +206,7 @@ def test_pipeline(self, device): results = self.model.predict( source=self.source, conf=self.config.DETECTION_THRESHOLD, - # iou=self.config.IOU_THRESHOLD, + iou=self.config.IOU_THRESHOLD, show=False, imgsz=(self.frame_height, self.frame_width), save=True, diff --git a/fastapi/tests/test_pipeline.py b/fastapi/tests/test_pipeline.py index fb924dd..1735e4c 100644 --- a/fastapi/tests/test_pipeline.py +++ b/fastapi/tests/test_pipeline.py @@ -81,7 +81,7 @@ def setup_context(request): request.cls.name = vid_source.stem else: request.cls.name = "rtsp" - request.cls.test_duration_mins = float(os.getenv("TEST_DURATION_MINS", 2.0)) + request.cls.test_duration_mins = float(os.getenv("TEST_DURATION_MINS", 1.0)) request.cls.result_dir = test_dir / f"{current_test_filename}_results" request.cls.result_dir.mkdir(parents=True, exist_ok=True) @@ -303,7 +303,7 @@ def mock_connect(self, host, port): current_backlog = handler.prefetch_queue.qsize() prefetch_backlog_samples.append(current_backlog) last_sample = curr_time - time.sleep(0.01) + time.sleep(0.2) # 0.01 # Safely capture performance values out of production thread states actual_duration = time.perf_counter() - loop_start @@ -348,12 +348,12 @@ def mock_connect(self, host, port): metrics["fallback_engine_triggered"] = ( 1 if getattr(r, "use_cpu_decode_fallback", False) else 0 ) - if not str(handler.source).startswith("rtsp://"): - metrics["video_duration"] = ( - round(r.numFrames / metrics["hardware_video_fps"], 2) - if metrics["hardware_video_fps"] > 0 - else 0.0 - ) + # if not str(handler.source).startswith("rtsp://"): + metrics["video_duration"] = ( + round(r.total_input_frames / metrics["hardware_video_fps"], 2) + if metrics["hardware_video_fps"] > 0 + else 0.0 + ) h_telemetry = getattr(handler, "telemetry", {}) io_latencies = h_telemetry.get("ram_disk_io_write_ms", []) @@ -489,10 +489,11 @@ def test_scenario_1_invalid_rtsp(self, device): ), ) worker_p.start() - worker_p.join() + worker_p.join(timeout=2.0) if worker_p.is_alive(): worker_p.terminate() + worker_p.join() # Ensure kernel resource tracking fully unlinks worker_p.close() # Reclaims underlying OS file descriptors immediately test_metrics = res_queue.get() @@ -575,7 +576,7 @@ def test_scenario_3_video_clipper(self, device): ) render_dir = self.result_dir / f"{self.name}/scenario3_{device}" render_dir.mkdir(parents=True, exist_ok=True) - test_duration_mins = 1.0 + # test_duration_mins = 1.0 # Execute production workflow in completely isolated spawned sandbox ctx = multiprocessing.get_context("spawn") @@ -589,7 +590,7 @@ def test_scenario_3_video_clipper(self, device): self.name, render_dir, device, - test_duration_mins, + self.test_duration_mins, res_queue, run_clipper, ), @@ -636,7 +637,7 @@ def test_scenario_4_detection_and_clipper(self, device, sf_enabled, detection_ty / f"{self.name}/scenario4_{device}/{detection_type}_{mode_str}" ) render_dir.mkdir(parents=True, exist_ok=True) - test_duration_mins = 1.0 + # test_duration_mins = 1.0 # Execute production workflow in completely isolated spawned sandbox ctx = multiprocessing.get_context("spawn") @@ -650,7 +651,7 @@ def test_scenario_4_detection_and_clipper(self, device, sf_enabled, detection_ty self.name, render_dir, device, - test_duration_mins, + self.test_duration_mins, res_queue, run_clipper, disable_detection, @@ -774,7 +775,7 @@ def get_pytest_filter_expression(args, sorted_scenarios): "-d", "--duration", type=float, - default=2.0, + default=1.0, help="Test duration in minutes.", ) parser.add_argument( diff --git a/fastapi/tests/test_readers.py b/fastapi/tests/test_readers.py new file mode 100644 index 0000000..51a13c0 --- /dev/null +++ b/fastapi/tests/test_readers.py @@ -0,0 +1,2203 @@ +import argparse +import asyncio +import csv +import faulthandler +import gc +import threading +import time +import traceback + +faulthandler.enable() +import inspect +import logging +import multiprocessing as mp +import os +import queue +import sys +import types +from concurrent.futures import ThreadPoolExecutor +from pathlib import Path + +import cv2 +import matplotlib.pyplot as plt +import numpy as np +import pytest +import tensorrt as trt +import torch + +# # Force all PyTorch extension handles to compile and load BEFORE threads spawn +# if torch.cuda.is_available(): +# _ = torch.zeros(1).cuda() +# import torch._ops +# import torch.utils + +# Explicitly invoke any plotting or module style lookups early + +sys.path.insert(1, str(Path(__file__).parent.parent)) +from include.default_configs import ( + CUSTOM_MODEL_FLAG_DEFAULT, + DEBUG_DEFAULT, + MODEL_NAME_DEFAULT, + THRESHOLD_VALUE, +) +from include.handlers import ( + CPUStreamHandler, + DeviceBaseHandler, + GPUStreamHandler, + log_to_logger, +) +from include.utils import ( + PipelineConfig, +) + +try: + # Retain standard spawn mode to prevent CUDA context driver deadlocks + torch.multiprocessing.set_start_method("spawn", force=True) +except RuntimeError: + pass + +logging.getLogger("matplotlib").setLevel(logging.WARNING) +logger = trt.Logger(trt.Logger.WARNING) +trt.init_libnvinfer_plugins(logger, "") + +DEBUG_FLAG_DEFAULT = True if DEBUG_DEFAULT == "1" else False +os.environ["OMP_NUM_THREADS"] = str(mp.cpu_count()) # "1" +os.environ["PYTORCH_ALLOC_CONF"] = "expandable_segments:True" +force_export = False + +# Force OpenCV to run sequentially to prevent context-switching overhead +cv2.setNumThreads(0) # Forces OpenCV loops to run strictly sequentially + + +def fps_comparison_chart(chart_path, results, fps_key="Pipeline FPS (Video frames)"): + try: + names = [r["Test Name"] for r in results] + fps_values = [float(r[fps_key]) for r in results] + + plt.figure(figsize=(10, 6)) + plt.grid(axis="y", linestyle="--", alpha=0.7, zorder=0) + + colors = ["#2ca02c" if "gpu" in n.lower() else "#1f77b4" for n in names] + bars = plt.bar(names, fps_values, color=colors, zorder=3) + plt.ylabel("Frames Per Second (FPS)") + plt.title(f"Performance Comparison: {chart_path.stem}") + plt.xticks(rotation=45) + + for bar in bars: + yval = bar.get_height() + plt.text( + bar.get_x() + bar.get_width() / 2, + yval + 1, + f"{yval:.1f}", + ha="center", + va="bottom", + ) + + if fps_values: + plt.ylim(0, max(fps_values) * 1.2) + + plt.tight_layout() + plt.savefig(str(chart_path)) + print(f" Comparison chart saved to: {chart_path}") + except Exception: + print("Skipping chart generation: error occurred.") + + +class AsyncVideoWriter: + """Handles disk saving operations asynchronously on a background thread.""" + + def __init__(self, path, fourcc, fps, size): + self.writer = cv2.VideoWriter(path, fourcc, fps, size) + self.queue = queue.Queue() + self.running = True + self.thread = threading.Thread(target=self._write_loop, daemon=True) + self.thread.start() + + def _write_loop(self): + while self.running or not self.queue.empty(): + try: + frame = self.queue.get(timeout=0.05) + self.writer.write(frame) + self.queue.task_done() + except queue.Empty: + continue + + def write_frame(self, frame): + self.queue.put(frame) + + def release(self): + self.running = False + self.thread.join() + self.writer.release() + + +class DummyProcess: + def start(self): + pass + + def join(self, timeout=None): + pass + + def is_alive(self): + return False + + def close(self): + pass + + +@pytest.fixture(scope="class") +def setup_context(request): + """Replaces setUpClass: Runs once per test class.""" + current_test_filename = Path(__file__).stem + test_dir = Path(__file__).parent + main_path = test_dir.parent + video_dir = main_path / "inputs" + + request.cls._shared_model = None + request.cls._shared_model_path = None + request.cls._shared_model_device = None + request.cls._shared_model_sf_enabled = None + + # model_name = os.getenv("MODEL_NAME", MODEL_NAME_DEFAULT) + # Handler.__init__ (main items) + request.cls.source = os.getenv("VIDEO_FILENAME", "anduril_swarm_8K.mp4") + is_rtsp = "rtsp://" in request.cls.source + if not is_rtsp: + VIDEO_FILENAME = request.cls.source + if video_dir.exists(): + vid_source = video_dir / VIDEO_FILENAME + else: + video_dir = Path("/watch_dir") + vid_source = video_dir / VIDEO_FILENAME + + assert vid_source.exists() + request.cls.source = str(vid_source) + request.cls.name = vid_source.stem + request.cls.is_rtsp = False + else: + request.cls.name = "rtsp" + request.cls.is_rtsp = True + # request.cls.test_duration_mins = float(os.getenv("TEST_DURATION_MINS", 0.25)) + request.cls.result_dir = ( + test_dir + / f"{current_test_filename}_results" # /{model_name}" + / request.cls.name + ) + request.cls.result_dir.mkdir(parents=True, exist_ok=True) + request.cls.benchmarks = [] + request.cls.csv_filename = f"pipeline_benchmarks_{request.cls.name}.csv" + request.cls.csv_path = request.cls.result_dir / request.cls.csv_filename + + request.cls.active = True + request.cls.active_streams = {} + + yield + + # Summarize Benchmarks + if request.cls.benchmarks: + # Filter and exclude rows that were interrupted or failed initialization due to an early pytest skip + request.cls.benchmarks = [ + r for r in request.cls.benchmarks if r and "Test Name" in r + ] + results = request.cls.benchmarks + for row in results: + if "GPU" in row["Test Name"]: + match_name = row["Test Name"].replace("GPU", "CPU") + cpu_row = next( + (r for r in results if r["Test Name"] == match_name), None + ) + if cpu_row: + gpu_fps = float(row["Pipeline FPS (Target frames)"]) + cpu_fps = float(cpu_row["Pipeline FPS (Target frames)"]) + speedup = (gpu_fps / cpu_fps) if cpu_fps > 0 else 0 + row["Pipeline Speedup vs CPU"] = f"{speedup:.2f}x" + else: + row["Pipeline Speedup vs CPU"] = "N/A" + else: + row["Pipeline Speedup vs CPU"] = "Baseline (CPU)" + + keys = results[0].keys() + with open(str(request.cls.csv_path), "w", newline="") as f: + dict_writer = csv.DictWriter(f, fieldnames=keys) + dict_writer.writeheader() + dict_writer.writerows(results) + + print(f"\n[FINAL] Benchmarks saved to {request.cls.csv_path}") + + for r in results: + print( + f" > {r['Test Name']}: {r['Pipeline FPS (Video frames)']} FPS | {r['Pipeline FPS (Target frames)']} FPS | {r['Avg Frame Reading (ms)']} ms | Speedup: {r.get('Pipeline Speedup vs CPU', 'N/A')}" + ) + + chart_path = ( + request.cls.result_dir + / f"{request.cls.csv_filename.replace('.csv', '')}_pipelineFPS.png" + ) + fps_comparison_chart(chart_path, results, fps_key="Pipeline FPS (Video frames)") + + chart_path = ( + request.cls.result_dir + / f"{request.cls.csv_filename.replace('.csv', '')}_pipelineFPS_target.png" + ) + fps_comparison_chart( + chart_path, results, fps_key="Pipeline FPS (Target frames)" + ) + + +@pytest.fixture(autouse=True) +def each_test_setup(request): + test_class_self = request.instance + if torch.cuda.is_available(): + torch.cuda.synchronize() + + device = request.node.callspec.params.get("device") + # detection_type = request.node.callspec.params.get("detection_type") + # sf_enabled = request.node.callspec.params.get("sf_enabled") + + test_class_self._testMethodName = f"{device.upper()}Reader" + + # video_output_name = f"{test_class_self._testMethodName}_detections_output.mp4" + vid_dir = test_class_self.result_dir / "results" + vid_dir.mkdir(parents=True, exist_ok=True) + + # Handler.__init__ (remaining items) + # 1. Re-initialize a fresh configuration object + test_class_self.config = PipelineConfig( + CUSTOM_MODEL_FLAG=os.getenv("CUSTOM_MODEL_FLAG", CUSTOM_MODEL_FLAG_DEFAULT), + DEVICE=device.upper(), + OMIT_DETECTIONS_FLAG=True, + TEST_MODE=True, + DEBUG=os.getenv("DEBUG", DEBUG_DEFAULT), + DEBUG_FRAME_LIMIT=int(os.getenv("DEBUG_FRAME_LIMIT", 100)), + ENABLE_QUERYING=False, + MODEL_NAME=os.getenv("MODEL_NAME", MODEL_NAME_DEFAULT), + # SMART_FILTERING_ENABLED=sf_enabled, + THRESHOLD_VALUE=int(os.getenv("THRESHOLD_VALUE", THRESHOLD_VALUE)), + # DETECTION_TYPE=detection_type, + ) + + # test_video_output_path = os.path.join(str(vid_dir), video_output_name) + os.environ["TEST_SUITE_RENDER_DIR"] = str(vid_dir) + test_class_self.config.SHARED_OUTPUT = str(test_class_self.result_dir) + test_class_self.disp_w, test_class_self.disp_h = (640, 360) + + if device == "gpu": + # Allocate a permanent float32/float16 channel layout space directly on VRAM + test_class_self.static_gpu_360p = torch.empty( + (1, 3, test_class_self.disp_h, test_class_self.disp_w), + dtype=torch.float32, + device="cuda", + ) + test_class_self.static_gpu_byte_bchw = torch.empty( + (1, 3, test_class_self.disp_h, test_class_self.disp_w), + dtype=torch.uint8, + device="cuda", + ).contiguous() + # Fast reusable canvas tensor matching your writer width/height payload bounds + # test_class_self.static_host_canvas = np.zeros((test_class_self.disp_h, test_class_self.disp_w, 3), dtype=np.uint8) + # Register the memory block as page-locked (pinned) to max out PCIe DMA bandwidth + # cv2.cuda.registerPageLocked(test_class_self.static_host_canvas) + + # Create two isolated tracking canvases to handle the ping-pong data stream + test_class_self.static_host_canvases = [ + np.zeros( + (test_class_self.disp_h, test_class_self.disp_w, 3), dtype=np.uint8 + ), + np.zeros( + (test_class_self.disp_h, test_class_self.disp_w, 3), dtype=np.uint8 + ), + ] + test_class_self.canvas_selector = 0 + + # Register BOTH buffers as page-locked memory + cv2.cuda.registerPageLocked(test_class_self.static_host_canvases[0]) + cv2.cuda.registerPageLocked(test_class_self.static_host_canvases[1]) + + # Reset core state machine properties before invoking any backend handlers + test_class_self.active = True + # test_class_self._is_stopped = False + + # Replaces the standard class dictionary with an active inter-process proxy container layout. + # This ensures child worker processes can write memory back to the parent process. + # if not hasattr(test_class_self.__class__, "_managed_sync_ctx"): + # test_class_self.__class__._managed_sync_ctx = mp.Manager() + + # test_class_self.__class__._shared_bench_metrics = test_class_self.__class__._managed_sync_ctx.dict({ + # "num_objs": 0, + # "total_written_frames": 0, + # "total_pipeline_ms": 0.0, + # "real_world_latency_ms": 0.0, + # "total_sf_pipeline_time_ms": 0.0, + # "total_read_time": 0.0, + # "total_queue_saturation": 0.0, + # "queue_saturation_history": [0.0] + # }) + + test_class_self.loop = asyncio.get_event_loop() + test_class_self.frame_ready_event = asyncio.Event() + test_class_self._is_stopped = False + test_class_self._stop_lock = threading.Lock() # Local lock for this instance + test_class_self.mp_frame_ready_event = mp.Event() + # test_class_self.stat_start_time = time.perf_counter() # timing to display detection + + test_class_self.device = test_class_self.config.DEVICE + test_class_self.device_input = test_class_self.config.device_input + test_class_self.resize_h, test_class_self.resize_w = [ + test_class_self.config.MODEL_H, + test_class_self.config.MODEL_W, + ] + + # Resolve concrete handler class type + HandlerClass = GPUStreamHandler if device == "gpu" else CPUStreamHandler + HandlerClass.pipeline_fn = test_class_self.__class__.pipeline_fn + + # Dynamically re-bind backend methods to this execution instance + handler_classes = [HandlerClass, DeviceBaseHandler] + all_method_names = set() + + for cls in handler_classes: + for name, attr in inspect.getmembers(cls, predicate=inspect.isfunction): + all_method_names.add(name) + + for method_name in all_method_names: + source_obj = ( + HandlerClass if hasattr(HandlerClass, method_name) else DeviceBaseHandler + ) + if hasattr(source_obj, method_name): + raw_func = getattr(source_obj, method_name) + if ( + not hasattr(test_class_self.__class__, method_name) + or method_name == "pipeline_fn" + ): + setattr( + test_class_self, + method_name, + types.MethodType(raw_func, test_class_self), + ) + # Force the background thread-pool launcher to run your modified staging loop + # setattr( + # test_class_self, + # "run_realtime_inference", + # types.MethodType(test_class_self.__class__.run_realtime_inference, test_class_self) + # ) + + # 3. FORCE NATIVE PIPELINE PROVISIONING + test_class_self.setup_reader( + test_class_self.config.TARGET_FPS, test_class_self.config.CLIP_DURATION + ) + test_class_self.initialize_variables() + test_class_self.setup_model(None) + test_class_self.prepare_pipeline() + + test_class_self.run_realtime_inference = types.MethodType( + test_class_self.__class__.run_realtime_inference, test_class_self + ) + # This guarantees that when handlers.py spawns background execution threads, + # it is forced to execute your modified staging test loop method. + # HandlerClass.run_realtime_inference = test_class_self.__class__.run_realtime_inference + # DeviceBaseHandler.run_realtime_inference = test_class_self.__class__.run_realtime_inference + + test_class_self.setup_threads() + + # # Reset runtime loop state properties + # test_class_self.render_queue = None + # test_class_self.next_process_idx = 0.0 + # test_class_self.frame_in_clip_count = 0 + # test_class_self.frame_count = 0 + # test_class_self.elapsed_display_time = 0.0 + # test_class_self.no_roi_frame_cnt = 0 + + # test_class_self.component_stats = { + # "sf": [], + # "roi": [], + # "det": [], + # "dma_upload": [], + # "queue_blocked": [], + # "batch_sizes": [], + # "thread_backlog": [] + # } + # test_class_self.crops_per_frame_list = [] + + # test_class_self.is_cuda = test_class_self.device.lower() == "gpu" and torch.cuda.is_available() + # # test_class_self.frame_count_target = mp.Value("i", 0) # test_class_self.frame_count_target = 0 + # test_class_self.frame_count_target = 0 + # test_class_self.next_process_idx = 0.0 + # test_class_self.frame_in_clip_count = 0 + + # if hasattr(test_class_self, "setup_threads"): + # test_class_self.setup_threads() + + # shared_event_buffer = {"sf": [], "roi": [], "det": []} + # test_class_self.gpu_event_buffer = shared_event_buffer + + # if torch.cuda.is_available(): + # torch.cuda.empty_cache() + # torch.cuda.ipc_collect() + # torch.cuda.reset_peak_memory_stats(0) + + # if device == "gpu" and torch.cuda.is_available(): + # print("\n[PROFILER] Initializing isolated PyTorch VRAM allocation history map...") + # try: + # # Modern PyTorch API signature format + # torch.cuda.memory._record_memory_history( + # enabled=True, + # max_entries=200000 # Sets the buffer queue size limits + # ) + # except TypeError: + # # Fallback baseline if your specific environment only allows a basic toggle switch + # torch.cuda.memory._record_memory_history(enabled=True) + + # # Force eager initialization of hidden packages to avoid dynamic lookups in the hot path + # import dataclasses + # import importlib + # import torch.nn.functional as F + # from ultralytics.cfg import get_cfg + # import pyparsing + # import matplotlib + # import matplotlib.rcsetup + # import anyio + # import anyio._core._fileio + # import numpy.core.overrides + # import numpy.lib.function_base + # import asyncio.base_events + # import sre_parse + # import logging + + # # Dummy execution pass to fully resolve internal lazy properties and populate sys.modules caches + # try: + # _ = get_cfg() + # except Exception: + # pass + + yield + + # Teardown logic + test_class_self.active = False + + # # Force immediate structural flush of the asynchronous display thread pool before memory unlinking + # if hasattr(test_class_self, "display_pool") and test_class_self.display_pool is not None: + # try: + # # wait=True guarantees every single remaining background 8K layout operation + # # finishes processing and flushes into the rendering_worker before the clock stops + # test_class_self.display_pool.shutdown(wait=True) + # except Exception: + # pass + # if hasattr(test_class_self, "display_ring_buffer"): + # delattr(test_class_self, "display_ring_buffer") + # delattr(test_class_self, "display_pool") + + # Fallback to production reader safety closure + if hasattr(test_class_self, "reader") and test_class_self.reader is not None: + try: + if hasattr(test_class_self.reader, "print_breakdown"): + test_class_self.reader.print_breakdown() + test_class_self.reader.stop() + except Exception: + pass + + if ( + hasattr(test_class_self, "stop_writer") + and test_class_self.stop_writer is not None + ): + try: + test_class_self.stop_writer.set() + except Exception: + pass + + # --- CRITICAL RE-ORDERED FLUSH GATE --- + # 1. First, block and wait for the video processing producer thread to completely finish + # reading all remaining frames from the input video file. + producer_thread_handle = getattr(test_class_self, "process_thread", None) + if producer_thread_handle is not None and producer_thread_handle.is_alive(): + producer_thread_handle.join(timeout=0.5) # 10.0) + + # 2. Block and wait for background asynchronous AI executor workers to finish inference tasks. + if hasattr(test_class_self, "executor") and test_class_self.executor: + test_class_self.executor.shutdown(wait=True) + + # 3. Allow the multiprocessing render queue to naturally empty its frames into the encoder pipe. + if ( + hasattr(test_class_self, "render_queue") + and test_class_self.render_queue is not None + ): + try: + # Loop safely until the render loop handles the last remaining frames + # while not test_class_self.render_queue.empty(): + # time.sleep(0.05) + + # Send a poison pill token ONLY after all threads have fully stopped putting data into it + # test_class_self.render_queue.put(None, timeout=1.0) + if ( + hasattr(test_class_self, "render_queue") + and test_class_self.render_queue is not None + ): + try: + # Forcefully clear the queue thread tracking matrices + test_class_self.render_queue.close() + test_class_self.render_queue.cancel_join_thread() + except Exception: + pass + except Exception: + pass + + # 4. Gracefully join the background FFmpeg process, avoiding premature kills + render_proc_handle = getattr(test_class_self, "render_proc", None) + if render_proc_handle is not None: + try: + if render_proc_handle.is_alive(): + # Grant up to 10 seconds for disk I/O synchronization + render_proc_handle.join(timeout=0.5) # 10.0) + + if render_proc_handle.is_alive(): + print( + "[WARN] Render worker hung during final flush. Forcing termination." + ) + render_proc_handle.terminate() + render_proc_handle.join() + + render_proc_handle.close() + except Exception: + pass + setattr(test_class_self, "render_proc", None) + + # 4. Deep System Unlinking of Shared Memory Layers (Parent/Child safe) + # This loop uses direct reference mapping rather than guessing PIDs + for shm_pool_attr in ["ai_shms", "shms"]: + if hasattr(test_class_self, shm_pool_attr): + shm_pool = getattr(test_class_self, shm_pool_attr) + if shm_pool: + for shm_segment in list(shm_pool): + try: + shm_segment.close() + shm_segment.unlink() + except Exception: + pass + shm_pool.clear() + + # 5. Clean up the Sync Base Manager Process + if hasattr(test_class_self, "manager") and test_class_self.manager is not None: + try: + test_class_self.manager.shutdown() + except Exception: + pass + test_class_self.manager = None + + # CRITICAL FIX: Block and wait for the background producer thread to die + # BEFORE we delete the reader attribute from the namespace map. + producer_thread_handle = getattr(test_class_self, "process_thread", None) + if producer_thread_handle is not None and producer_thread_handle.is_alive(): + producer_thread_handle.join(timeout=5.0) + + # if hasattr(test_class_self, "ingest_ring") and test_class_self.ingest_ring: + # for mat in test_class_self.ingest_ring: + # try: + # cv2.cuda.unregisterPageLocked(mat) + # except Exception: + # pass + # test_class_self.ingest_ring.clear() + + # if hasattr(test_class_self, "pinned_matrices") and test_class_self.pinned_matrices: + # for active_mat in test_class_self.pinned_matrices: + # try: + # cv2.cuda.unregisterPageLocked(active_mat) + # except Exception: + # pass + # test_class_self.pinned_matrices.clear() + # if hasattr(test_class_self, "pinned_tensors"): + # test_class_self.pinned_tensors.clear() + # if hasattr(test_class_self, "ai_pinned_tensors"): + # test_class_self.ai_pinned_tensors.clear() + + try: + cv2.cuda.unregisterPageLocked(test_class_self.pinned_matrices) + except Exception: + pass + + # ADD THIS MECHANISM: + if hasattr(test_class_self, "static_host_canvas"): + try: + cv2.cuda.unregisterPageLocked(test_class_self.static_host_canvas) + except Exception: + pass + + if ( + not test_class_self.active + ): # Only execute this block during complete class teardown + if hasattr(test_class_self, "ingest_ring") and test_class_self.ingest_ring: + for mat in test_class_self.ingest_ring: + try: + cv2.cuda.unregisterPageLocked(mat) + except Exception: + pass + test_class_self.ingest_ring.clear() + + if ( + hasattr(test_class_self, "pinned_matrices") + and test_class_self.pinned_matrices + ): + for active_mat in test_class_self.pinned_matrices: + try: + cv2.cuda.unregisterPageLocked(active_mat) + except Exception: + pass + test_class_self.pinned_matrices.clear() + + # Now it is structurally safe to purge attributes without causing cross-thread collisions + keys_to_purge = [ + "reader", + "process_thread", + "inference_stream", + "bgs_stream", + "model", + "raw_input", + "ai_gpu_staging", + "ai_pinned_tensors", + "executor", + # "io_executor", + ] + for key in keys_to_purge: + if hasattr(test_class_self, key): + delattr(test_class_self, key) + + if ( + hasattr(test_class_self, "gpu_event_buffer") + and test_class_self.gpu_event_buffer + ): + test_class_self.gpu_event_buffer.clear() + if hasattr(test_class_self, "component_stats") and test_class_self.component_stats: + test_class_self.component_stats.clear() + + with torch.inference_mode(): + if torch.cuda.is_available(): + torch.cuda.synchronize() + if device == "gpu": + torch.cuda.memory._record_memory_history(enabled=False) + torch.cuda.empty_cache() + torch.cuda.ipc_collect() + + gc.collect() + time.sleep(0.2) + + +@pytest.mark.usefixtures("setup_context") +class TestReader: + # SETUP -------------------------------------------- + + @pytest.mark.parametrize("device", ["cpu", "gpu"]) + def test_device_reader(self, device): + """Unified test runner for all configurations.""" + self.duration_target = 30 + + # Trigger your clean overridden thread boot + self.start() + + print( + f"\n[TEST HARNESS] Execution Started. Monitoring variables natively for {self.duration_target}s..." + ) + # test_start_time = time.perf_counter() + # target_wait_frames = ( + # int(self.duration_target * float(self.target_fps)) + # if hasattr(self, "target_fps") + # else 450 + # ) + + # --- WATCH NATIVE VARIABLES LIVE --- + # while not self._is_stopped: + # time.sleep(0.1) + + # Explicit timer tracking allows background multiprocessing queues to stream uninhibited + # test_start_time = time.perf_counter() + + while self.active or not self._is_stopped: + # Check if our active benchmark validation timeline target has been fulfilled + # if (time.perf_counter() - test_start_time) >= float(self.duration_target) + 15.0: + # print("\n[TEST HARNESS] Targeted test runtime duration reached. Initiating clean multi-process flush...", flush=True) + # break + time.sleep(0.1) # Stay clear of the hot pipeline lane + + # Natively initiate the multi-process writer teardown + # self.stop() + + assert self.status == "DONE" + + def setup_threads(self): + """Overrides handlers.py to bind threads dynamically to the test instance.""" + self.setup_shared_memory() # Natively sets up Manager dictionary and buffers + + # Executor for Async YOLO tasks and FFmpeg re-encoding + self.executor = ThreadPoolExecutor(max_workers=self.config.MAX_WORKERS) + # self.clip_executor = ThreadPoolExecutor(max_workers=self.config.MAX_WORKERS) + + print( + f"sf_enabled: {self.config.sf_enabled}\tTEST_MODE: {self.config.TEST_MODE}", + flush=True, + ) + + # Open up looking-ahead buffer horizons to eliminate 8K queue backpressure stalls + self.signal_queue = mp.Queue(maxsize=128) # 10) + self.render_queue = mp.Queue(maxsize=256) # 64) + + test_dir = os.getenv( + "TEST_SUITE_RENDER_DIR", str(Path(self.config.SHARED_OUTPUT)) + ) + os.makedirs(test_dir, exist_ok=True) + + if self.source.startswith("rtsp"): + short_name = "rtsp" + else: + short_name = Path(self.source).stem + video_output_name = f"{self._testMethodName}_{short_name}_{self.device}.mp4" + out_path = os.path.join(test_dir, video_output_name) + self.output_path = ( + out_path # f"{self.config.SHARED_OUTPUT}/{short_name}_{self.device}.mp4" + ) + + log_to_logger( + f"[TEST MODE] Detection results saved to: {out_path}", level="info" + ) + + # ===================================================================== + # DYNAMIC THREAD TARGET REDIRECTION + # ===================================================================== + # Lambda forces the background processing thread to evaluate your custom staging loop natively + self.process_thread = threading.Thread( + target=lambda: self.run_realtime_inference( + sf_enabled=self.config.sf_enabled + ), + daemon=True, + ) + # self.render_proc = mp.Process( # threading.Thread( + # target=rendering_worker, + # args=( + # self.render_queue, + # (self.disp_w, self.disp_h), + # self.output_path, + # self.target_fps, + # ), + # daemon=True, + # ) + # self.render_proc = threading.Thread(target=lambda: None, daemon=True) + # self.display_proc = threading.Thread(target=lambda: None, daemon=True) + self.render_proc = DummyProcess() + self.display_proc = DummyProcess() + + self.async_writer = AsyncVideoWriter( + self.output_path, + cv2.VideoWriter_fourcc(*"avc1"), + float(self.target_fps), + (self.disp_w, self.disp_h), + ) + # self.async_writer = None + + def start(self): + """ + Starts the decoupled ingestion and inference threads in the correct order. + """ + # PRE-SYNC: Ensure GPU is idle before timing starts + if self.device_input == "cuda": + if torch.cuda.is_available(): + torch.cuda.synchronize() + + # Start the hardware-decoupled reader first + self.reader.start() + + if self.config.ENABLE_QUERYING: + self._initialize_writer() + + # Small delay to allow the reader's deque to populate + time.sleep(0.1) + + # Start the producer and consumer threads + if hasattr(self, "process_thread") and not self.process_thread.is_alive(): + self.process_thread.start() + + # If running on the CPU track, block the main test thread briefly until the CPU + # has successfully populated the first few frames into the render queue. + # This completely prevents the FFmpeg rendering worker from starving and skipping + # the initial 3-4 seconds of video. + # if getattr(self, "device_input", "cpu") == "cpu": + # print("[INIT] Waiting for CPU to prime the render queue...") + # timeout_counter = 0 + # # Wait until at least 5 frames are buffered in the queue or 10 seconds pass + # while self.render_queue.qsize() < 5 and timeout_counter < 100: + # time.sleep(0.1) + # timeout_counter += 1 + # print( + # f"[INIT] Render queue primed with {self.render_queue.qsize()} frames. Launching worker." + # ) + + if not self.config.DISABLE_DETECTION: + self.render_proc.start() + + self.display_proc.start() + + if ( + self.config.ENABLE_QUERYING + and not self.config.TEST_MODE + and not self.metadata_thread.is_alive() + ): + self.metadata_thread.start() + + if self.config.ENABLE_QUERYING and not self.writer_thread.is_alive(): + self.writer_thread.start() + + return self + + def stop(self): + """Overrides handlers.py to flush thread objects safely without deadlocking.""" + with self._stop_lock: + if self._is_stopped: + return + + print( + f"\n[TEST HARNESS] Initiating rapid thread flush for {self.name}", + flush=True, + ) + self.active = False + + # 1. Rapidly clear the async video writer thread queue first + # if hasattr(self, "async_writer") and self.async_writer is not None: + # try: + # self.async_writer.release() + # except Exception: + # pass + + # ===================================================================== + # DECUPLED MULTI-PROCESS TEARDOWN LIFECYCLE SEQUENCE + # ===================================================================== + # 1. FIRST: Drain and synchronize your thread pool tasks so EVERY frame drops into the IPC queue + if hasattr(self, "display_pool") and self.display_pool is not None: + try: + if hasattr(self.display_pool, "_work_queue"): + backlog = self.display_pool._work_queue.qsize() + if backlog > 0: + print( + f"\n\033[94m[STAGE 1/4] Synchronizing display pool threads. Draining {backlog} background tasks...\033[0m", + flush=True, + ) + backlog_s = time.perf_counter() + while ( + self.display_pool._work_queue.qsize() > 0 + or len(self.reorder_staging_buffer) > 0 + ): + # Yield a brief slice to let worker threads complete downscaling + time.sleep(0.01) + backlog_e = time.perf_counter() - backlog_s + print(f"\t\033[94mTook {backlog_e} secs\033[0m", flush=True) + print( + "\033[92m[SUCCESS] All background image transformations completed cleanly.\033[0m", + flush=True, + ) + self.display_pool.shutdown(wait=True) + except Exception as e: + print( + f"[TEARDOWN ERROR] Thread pool synchronization failed: {e}", + flush=True, + ) + setattr(self, "display_pool", None) + + # 2. SECOND: Now that every single frame is safely sitting in the render_queue, dispatch the poison pill + # if hasattr(self, "render_queue") and self.render_queue is not None: + # try: + # print(f"\033[94m[STAGE 2/4] Dispatching shutdown sentinel (None) to rendering process worker (Backlog: {self.render_queue.qsize()} frames)...\033[0m", flush=True) + # self.render_queue.put(None, timeout=2.0) + # except Exception as queue_err: + # print(f"\033[91m[TEARDOWN ERROR] Failed staging shutdown token: {queue_err}\033[0m", flush=True) + + # # 3. THIRD: Block the main thread safely and allow the detached process to write everything to disk + # if hasattr(self, "render_proc") and self.render_proc is not None: + # try: + # if self.render_proc.is_alive(): + # print(f"\033[94m[STAGE 3/4] Main thread blocking. Waiting for hardware disk I/O synchronization...\033[0m", flush=True) + # t_join_start = time.perf_counter() + # self.render_proc.join(timeout=30.0) # Increase timeout to ensure all 248 frames save + # join_duration = time.perf_counter() - t_join_start + + # if self.render_proc.is_alive(): + # print("\n\033[91m[CRITICAL STALL] Render worker process hung on disk write! Forcing termination...\033[0m", flush=True) + # self.render_proc.terminate() + # self.render_proc.join() + # else: + # print(f"\033[92m[FINAL] Video compilation finished cleanly! Hard drive commit took {join_duration:.2f} seconds.\033[0m", flush=True) + + # if hasattr(self, "source"): + # expected_disk_path = Path(self.output_path) + # if expected_disk_path.exists(): + # size_mb = expected_disk_path.stat().st_size / (1024 * 1024) + # print(f"\033[92m[DISK VERIFIED] Destination asset compiled: {expected_disk_path.name} ({size_mb:.2f} MB)\033[0m\n", flush=True) + # self.render_proc.close() + # except Exception as proc_err: + # print(f"\033[91m[TEARDOWN ERROR] Failed closing background process container: {proc_err}\033[0m", flush=True) + # setattr(self, "render_proc", None) + + # 2. SECOND: Deliver a poison pill sentinel token to tell FFmpeg to flush its internal buffers + # ===================================================================== + # MULTI-PROCESS TEARDOWN LIFECYCLE SEQUENCE (DECOUPLED FLUSH) + # ===================================================================== + # 1. FIRST: Instantly dispatch the shutdown token so the worker process knows to flush entries + if hasattr(self, "render_queue") and self.render_queue is not None: + try: + print( + f"\n\033[94m[STAGE 1/3] Dispatching shutdown sentinel (None) to rendering process worker (Backlog: {self.render_queue.qsize()} frames)...\033[0m", + flush=True, + ) + # Delivering the poison pill immediately tells FFmpeg to drain remaining blocks sequentially + self.render_queue.put(None, timeout=2.0) + except Exception as queue_err: + print( + f"\033[91m[TEARDOWN ERROR] Failed staging shutdown token: {queue_err}\033[0m", + flush=True, + ) + + # 2. SECOND: Allow the background multiprocessing queue to empty outstanding items naturally + if hasattr(self, "render_queue") and self.render_queue is not None: + try: + print( + "\n\033[94m[STAGE 2/3] Finalizing file output. Draining remaining frames from IPC memory lane...\033[0m", + flush=True, + ) + t_drain = time.perf_counter() + # Wait up to 15 seconds for the worker process to pull every remaining matrix out of the pipe + while ( + not self.render_queue.empty() + and (time.perf_counter() - t_drain) < 15.0 + ): + time.sleep( + 0.01 + ) # Micro-yield grants immediate execution priority to the background process core + except Exception: + pass + + # 3. THIRD: Block the main thread safely and allow the detached process to finish disk I/O operations + if hasattr(self, "render_proc") and self.render_proc is not None: + try: + join_duration = 0.0 + if self.render_proc.is_alive(): + print( + "\033[94m[STAGE 2/2] Main thread blocking. Synchronizing hard drive file headers...\033[0m", + flush=True, + ) + t_join_start = time.perf_counter() + self.render_proc.join( + timeout=15.0 + ) # Safe timeout lets video containers finalize cleanly + join_duration = time.perf_counter() - t_join_start + + if self.render_proc.is_alive(): + print( + "\n\033[91m[CRITICAL STALL] Render worker process hung on disk write! Forcing termination...\033[0m", + flush=True, + ) + self.render_proc.terminate() + self.render_proc.join() + else: + print( + f"\033[92m[FINAL] Video compilation finished cleanly! Hard drive commit took {join_duration:.2f} seconds.\033[0m", + flush=True, + ) + + expected_disk_path = Path(self.output_path) + if expected_disk_path.exists(): + size_mb = expected_disk_path.stat().st_size / (1024 * 1024) + print( + f"\033[92m[DISK VERIFIED] Destination asset compiled: {expected_disk_path.name} ({size_mb:.2f} MB)\033[0m\n", + flush=True, + ) + self.render_proc.close() + except Exception as proc_err: + print( + f"\033[91m[TEARDOWN ERROR] Failed closing background process container: {proc_err}\033[0m", + flush=True, + ) + setattr(self, "render_proc", None) + + # 4. FOURTH: Clean up remaining pipeline executors and queues safely + if hasattr(self, "render_queue") and self.render_queue is not None: + try: + self.render_queue.close() + self.render_queue.cancel_join_thread() + except Exception: + pass + setattr(self, "render_queue", None) + + if hasattr(self, "executor") and self.executor is not None: + try: + self.executor.shutdown(wait=True) + except Exception: + pass + setattr(self, "executor", None) + + self.status = "DONE" + self._is_stopped = True + print( + "[TEST HARNESS] Teardown complete. Releasing session cleanly.\n", + flush=True, + ) + + # # 2. De-couple the multiprocessing queues without holding internal worker joins + # for q_attr in ["signal_queue"]: #, "render_queue"]: + # if hasattr(self, q_attr): + # q = getattr(self, q_attr) + # if q is not None: + # try: + # q.close() + # q.cancel_join_thread() + # except Exception: + # pass + # setattr(self, q_attr, None) + # if hasattr(self, "render_queue") and self.render_queue is not None: + # try: + # print(f"[TEST HARNESS] Finalizing file output. Waiting for {self.render_queue.qsize()} frames to commit...") + # while not self.render_queue.empty(): + # time.sleep(0.05) + # # Send the shutdown token to tell FFmpeg/OpenCV to save container indexes + # self.render_queue.put(None, timeout=2.0) + # except Exception: + # pass + + # # 3. Stop the shared-memory zero-copy background reader workers safely + # if hasattr(self, "reader") and self.reader is not None: + # try: + # if hasattr(self.reader, "running_flag"): + # self.reader.running_flag.value = False + # if hasattr(self.reader, "stopped"): + # self.reader.stopped = True + # self.reader.stop() + # except Exception: + # pass + + # # 4. Fast non-blocking thread pool shutdown prevents joining active loops indefinitely + # if hasattr(self, "executor") and self.executor is not None: + # try: + # # wait=False closes the pool interface instantly without stalling the CPU core! + # self.executor.shutdown(wait=True) #False) + # except Exception: + # pass + # setattr(self, "executor", None) + + # # FIX: Shut down the display layout pool to guarantee all frame tasks reach the writer queue + # if hasattr(self, "display_pool") and self.display_pool is not None: + # try: + # # wait=True forces the main thread to wait until async_display_task cycles finish execution + # self.display_pool.shutdown(wait=True) + # except Exception: + # pass + # setattr(self, "display_pool", None) + + # # 5. Clean up loose GPU stream handles + # if hasattr(self, "inference_stream") and self.inference_stream is not None: + # if torch.cuda.is_available(): + # try: + # self.inference_stream.synchronize() + # except Exception: + # pass + + # if hasattr(self, "async_writer") and self.async_writer is not None: + # try: + # self.async_writer.release() + # except Exception: + # pass + # setattr(self, "async_writer", None) + + # if hasattr(self, "render_proc") and self.render_proc is not None: + # try: + # if self.render_proc.is_alive(): + # self.render_proc.join(timeout=10.0) + # if self.render_proc.is_alive(): + # print("[WARN] Render worker hung during final flush. Forcing termination.") + # self.render_proc.terminate() + # self.render_proc.join() + # self.render_proc.close() + # except Exception: + # pass + # setattr(self, "render_proc", None) + + # self.status = "DONE" + # self._is_stopped = True + + # print(f"\n[TEST HARNESS] Teardown complete. Releasing session cleanly.", flush=True) + + # HELPERS -------------------------------------------- + def _print_gpu_mem(self): + if torch.cuda.is_available(): + # Memory currently used by tensors + allocated = torch.cuda.memory_allocated(0) / 1024**2 + # Total memory reserved by PyTorch (the "Pool") + reserved = torch.cuda.memory_reserved(0) / 1024**2 + print(f"\tAllocated: {allocated:0.2f} MB") + print(f"\tReserved: {reserved:0.2f} MB") + else: + print("\tCUDA not available.") + + def _finalize_benchmarks( + self, + num_objs, + total_written_frames, + total_pipeline_ms, + real_world_latency_ms, + total_sf_pipeline_ms, + total_read_time, + total_queue_saturation, + queue_saturation_history, + ): + """Aggregates metrics and adds them to the results list.""" + # sf_enabled = self.config.sf_enabled + stat_frame_count = self.stat_frame_count + stat_fps = self.stat_fps + + h2d_label = ( + "Pinned H2D Transfer (PCIe DMA)" + if self.is_cuda + else "Data Preparation Overhead" + ) + # d2h_label = ( + # "D2H Transfer (PCIe Download)" + # if self.is_cuda + # else "Array Extraction Overhead" + # ) + + total_pipeline_s = total_pipeline_ms / 1000.0 # Full pipeline + total_real_pipeline_s = ( + real_world_latency_ms / 1000.0 + ) # Pipeline until last frame sent to writer + real_est_fps = ( + self.frame_count_target / total_real_pipeline_s + if total_real_pipeline_s > 0 + else 0 + ) + + # det_latency_s = ( + # total_sf_pipeline_ms / 1000.0 + # ) # Just SF/Detection pipeline (sf + roi_ det) + # det_est_fps = ( + # self.frame_count_target / det_latency_s if det_latency_s > 0 else 0 + # ) + + # if total_written_frames > 0: + duration_s = ( + self.reader.total_input_frames / self.reader.input_fps + if self.reader.input_fps > 0 + else 0 + ) + out_duration_s = ( + total_written_frames / self.reader.target_fps + if self.reader.target_fps > 0 + else 0 + ) + print( + f"Expected duration: {self.duration_target:.2f} stream_duration_s: {duration_s:.2f} output_duration_s: {out_duration_s:.2f}" + ) + + h2d_display_label = f"Reader {h2d_label}:" + avg_reader_ms = (total_read_time / total_written_frames) * 1000 + # avg_resize_ms = (total_resize_time / total_written_frames)*1000 + # avg_write_ms = (total_disk_write_overhead / total_written_frames)*1000 + target_frame_fps = total_written_frames / total_pipeline_s + all_frame_fps = self.reader.total_input_frames / total_pipeline_s + avg_copy_ms = (self.reader.total_shm_copy_time / total_written_frames) * 1000 + avg_blocked_ms = ( + self.reader.total_queue_wait_time / total_written_frames + ) * 1000 + + avg_saturation = (total_queue_saturation / total_written_frames) * 100 + peak_saturation = ( + max(queue_saturation_history) * 100 if queue_saturation_history else 0 + ) + target_match_ratio = ( + total_written_frames / (total_pipeline_s * self.reader.target_fps) + ) * 100 + if self.is_cuda: + avg_h2d_ms = (self.reader.total_h2d_time / total_written_frames) * 1000 + avg_prep_ms = 0.0 + else: + avg_prep_ms = (self.reader.total_h2d_time / total_written_frames) * 1000 + avg_h2d_ms = 0.0 + + # Calculate structural frame size payload in Gigabytes (H * W * Channels) + frame_size_gb = (self.reader.frame_height * self.reader.frame_width * 3) / ( + 1024**3 + ) + + # 1. Compute Peak H2D PCIe Throughput + avg_h2d_s = ( + ( + sum(self.component_stats["dma_upload"]) + / len(self.component_stats["dma_upload"]) + ) + / 1000.0 + if self.component_stats["dma_upload"] + else 0 + ) + if self.is_cuda and avg_h2d_s > 0.00001: + self.pcie_throughput_gbps = frame_size_gb / avg_h2d_s + else: + self.pcie_throughput_gbps = ( + 0.0 # Safe fallback baseline for non-PCIe pipelines (CPU) + ) + + # 2. Extract PyTorch VRAM Fragmentation Delta Metrics + if self.is_cuda and torch.cuda.is_available(): + peak_alloc = torch.cuda.max_memory_allocated(0) / 1024**2 + peak_reserved = torch.cuda.max_memory_reserved(0) / 1024**2 + self.vram_efficiency = ( + (peak_alloc / peak_reserved * 100.0) if peak_reserved > 0 else 100.0 + ) + else: + self.vram_efficiency = ( + 0.0 # Clean zero baseline representation for CPU runs + ) + + # Calculate averages for component breakdowns + # avg_reader_ms = (total_read_time / self.reader.total_input_frames) * 1000 + # avg_reader_ms = (total_read_time / self.frame_count_target) * 1000 + avg_sf = ( + sum(self.component_stats["sf"]) / len(self.component_stats["sf"]) + if self.component_stats["sf"] + else 0 + ) + avg_roi = ( + sum(self.component_stats["roi"]) / len(self.component_stats["roi"]) + if self.component_stats["roi"] + else 0 + ) + avg_det = ( + sum(self.component_stats["det"]) / len(self.component_stats["det"]) + if self.component_stats["det"] + else 0 + ) + + avg_crops = ( + sum(self.crops_per_frame_list) / len(self.crops_per_frame_list) + if self.crops_per_frame_list + else 0 + ) + + # Total Latency Sum (SF + ROI + DET) + # total_sum = avg_sf + avg_roi + avg_det + det_latency_ms = avg_sf + avg_roi + avg_det + det_latency_s = det_latency_ms / 1000.0 + det_est_fps = (total_written_frames / det_latency_s) if det_latency_s > 0 else 0 + + # Calculate how often we hit a high-motion cap (e.g., 20 crops) + capped_frames = sum(1 for c in self.crops_per_frame_list if c >= 20) + cap_rate = ( + (capped_frames / len(self.crops_per_frame_list)) * 100 + if self.crops_per_frame_list + else 0 + ) + + # avg_queue = ( + # sum(self.component_stats["queue_blocked"]) + # / len(self.component_stats["queue_blocked"]) + # if self.component_stats["queue_blocked"] + # else 0 + # ) + # avg_batch = ( + # sum(self.component_stats["batch_sizes"]) + # / len(self.component_stats["batch_sizes"]) + # if self.component_stats["batch_sizes"] + # else 0 + # ) + + backlog_list = self.component_stats.get("thread_backlog", []) + avg_backlog = ( + sum(backlog_list) / len(backlog_list) if len(backlog_list) > 0 else 0.0 + ) + + print("\n" + "=" * 60) + print( + f" FULLY-OPTIMIZED ASYNC STAGE ({self.config.DEVICE}) PIPELINE BREAKDOWN " + ) + print("=" * 60) + print(f"Total Output Frames Written: {total_written_frames}") + print(f"Total Pipeline Execution Time: {total_pipeline_s:.4f} seconds") + print(f"Overall Processing Speed: {target_frame_fps:.2f} FPS") + print("-" * 60) + print("MAIN CONSUMER LOOP TIMELINE (SEQUENTIAL OVERHEAD):") + print(f" 1. Read Frame from Queue: {avg_reader_ms:6.2f} ms") + # print(f" 2. Image Resize Time (360p Transformation): {avg_resize_ms:6.2f} ms") + # print(f" 3. Disk Writer Queue Hand-off (Async): {avg_write_ms:6.2f} ms") + print("-" * 60) + print("BACKGROUND INGESTION HEALTH (ASYNC METRICS):") + print(f" A. Inbound Stream Capture Speed: {all_frame_fps:6.2f} FPS") + print(f" B. Host RAM Array Copy (100MB Memcpy): {avg_copy_ms:6.2f} ms") + print(f" C. {h2d_display_label:<42} {avg_h2d_ms:6.2f} ms") + print(f" D. Reader Thread Queue Blocked Time: {avg_blocked_ms:6.2f} ms") + print(f" E. Consumer Queue Saturation Density: {avg_saturation:6.1f}%") + print( + f" F. Peak PCIe Upload Throughput: {self.pcie_throughput_gbps:6.2f} GB/s" + ) + print(f" G. Active Worker Thread Backlog: {avg_backlog:6.1f} tasks") + print(f" H. VRAM Memory Efficiency (Cache): {self.vram_efficiency:6.1f}%") + print("-" * 60) + + # EXPANDED PERFORMANCE INSIGHTS AND DIAGNOSTICS + print("PIPELINE HEALTH & BEHAVIOR INSIGHTS:") + if avg_saturation > 80.0: + pipeline_status = "CHOKED" + print( + f" • Status: \033[91m🔴 {pipeline_status}\033[0m (Downstream logic cannot keep up with inbound stream speed)" + ) + elif avg_saturation > 40.0: + pipeline_status = "BALANCED" + print( + f" • Status: \033[93m🟡 {pipeline_status}\033[0m (Queue buffer is actively pacing consumer workloads)" + ) + else: + pipeline_status = "IDLE/LIGHT" + print( + f" • Status: \033[92m🟢 {pipeline_status}\033[0m (Consumer loop finishes ahead of background ingestion clock)" + ) + + print(f" • Peak Queue Fullness Reached: {peak_saturation:.1f}%") + # Calculate stream drop indicator + print(f" • Targeted Pacing Delivery Accuracy: {target_match_ratio:.1f}%") + print("=" * 60) + + self.__class__.benchmarks.append( + { + "Test Name": self._testMethodName, + # "Detection Type": self.config.DETECTION_TYPE, + "Device": self.config.DEVICE, + # "Smart Filtering": "Enabled" if sf_enabled else "Disabled", + "Video": self.source, # self.name? + "Video FPS": f"{self.reader.input_fps:.2f}", + "Video Original Duration (s)": f"{duration_s:.4f}", + "Video Frames": self.reader.total_input_frames, + # PIPELINE OVERVIEW + "Target FPS": f"{self.reader.target_fps:.2f}", + "Output Duration (s)": f"{out_duration_s:.4f}", + "Output Frames": total_written_frames, + "Pipeline Latency (s)": f"{total_pipeline_s:.2f}", + "Pipeline FPS (Video frames)": f"{all_frame_fps:.2f}", + "Pipeline FPS (Target frames)": f"{target_frame_fps:.2f}", + "Real Pipeline Latency (s)": f"{total_real_pipeline_s:.2f}", + "Real Pipeline FPS (Target frames)": f"{real_est_fps:.2f}", + # MAIN CONSUMER LOOP TIMELINE (SEQUENTIAL OVERHEAD) + "Avg Frame Reading (ms)": f"{avg_reader_ms:.2f}", + # "Avg Resize (ms)": f"{avg_resize_ms:.2f}", + # "Avg Writer Async Handoff (ms)": f"{avg_write_ms:.2f}", + # BACKGROUND INGESTION HEALTH (ASYNC METRICS) + "Avg Host Copy (ms)": f"{avg_copy_ms:.2f}", + "Avg DMA Upload (ms)": f"{avg_h2d_ms:.2f}", + "Avg Data Prep Overhead (ms)": f"{avg_prep_ms:.2f}", + "Avg Queue Blocked (ms)": f"{avg_blocked_ms:.2f}", + "Avg Queue Saturation (%)": f"{avg_saturation:.2f}", + # PIPELINE HEALTH & BEHAVIOR INSIGHTS + "Pipeline Status": pipeline_status, + "Peak Queue Fullness (%)": f"{peak_saturation:.2f}", + "Targeted Pacing Delivery (%)": f"{target_match_ratio:.2f}", + # DETECTION PIPELINE (Should B NULL) + "SF/Detection Latency (s)": f"{det_latency_s:.2f}", + "SF/Detection FPS": f"{det_est_fps:.2f}", + "Avg SF (ms)": f"{avg_sf:.2f}", + "Avg ROI (ms)": f"{avg_roi:.2f}", + "Avg Obj. Detection (ms)": f"{avg_det:.2f}", + "Total Breakdown Sum (ms)": f"{det_latency_ms:.2f}", + "Avg Crops/Frame": f"{avg_crops:.1f}", + # "Frames w/o ROIs": self.no_roi_frame_cnt, + "Crop Cap Rate (>20)": f"{cap_rate:.1f}%", + "Objects Detected": num_objs, + # TIming to display frame (read to after send to render queue) + "Display Latency (s)": f"{self.elapsed_display_time:.2f}", + "Display Frames": stat_frame_count, + "Display FPS": f"{stat_fps:.2f}", + "PCIe Bandwidth Throughput (GB/s)": f"{self.pcie_throughput_gbps:.2f}", + "Avg Async Thread Pool Backlog": f"{sum(self.component_stats.get('thread_backlog', [0])) / len(self.component_stats.get('thread_backlog', [1])):.1f}", + "VRAM Allocation Efficiency (%)": f"{self.vram_efficiency:.1f}%", + } + ) + + print( + f"\n[{self._testMethodName}] Pipeline Latency (s): {total_pipeline_s:.2f} sec" + ) + print( + f"\n[{self._testMethodName}] Pipeline FPS (Target frames): {target_frame_fps:.2f} ({total_written_frames} frames)" + ) + print( + f"\n[{self._testMethodName}] Pipeline FPS (Video frames): {all_frame_fps:.2f} ({self.reader.total_input_frames} frames)" + ) + print( + f"\n[{self._testMethodName}] SF/Detection FPS (Target frames): {det_est_fps:.2f} ({total_written_frames} frames)" + ) + print( + f"\n[{self._testMethodName}] Display FPS: {stat_fps:.2f} ({stat_frame_count} frames)" + ) + + def _finalize_benchmarksv2( + self, + total_written_frames, + total_pipeline_time, + total_read_time, + total_resize_time, + total_disk_write_overhead, + total_queue_saturation, + queue_saturation_history, + ): + """Aggregates metrics and adds them to the results list.""" + h2d_label = ( + "Pinned H2D Transfer (PCIe DMA)" + if self.is_cuda + else "Data Preparation Overhead" + ) + # d2h_label = ( + # "D2H Transfer (PCIe Download)" + # if self.is_cuda + # else "Array Extraction Overhead" + # ) + + if total_written_frames > 0: + duration_s = ( + self.reader.total_input_frames / self.reader.input_fps + if self.reader.input_fps > 0 + else 0 + ) + out_duration_s = ( + total_written_frames / self.reader.target_fps + if self.reader.target_fps > 0 + else 0 + ) + print( + f"Expected duration: {self.duration_target} stream_duration_s: {int(duration_s)} output_duration_s: {int(out_duration_s)}" + ) + h2d_display_label = f"Reader {h2d_label}:" + avg_reader_ms = (total_read_time / total_written_frames) * 1000 + avg_resize_ms = (total_resize_time / total_written_frames) * 1000 + avg_write_ms = (total_disk_write_overhead / total_written_frames) * 1000 + target_frame_fps = total_written_frames / total_pipeline_time + all_frame_fps = self.reader.total_input_frames / total_pipeline_time + avg_copy_ms = ( + self.reader.total_shm_copy_time / total_written_frames + ) * 1000 + + avg_blocked_ms = ( + self.reader.total_queue_wait_time / total_written_frames + ) * 1000 + avg_saturation = (total_queue_saturation / total_written_frames) * 100 + peak_saturation = ( + max(queue_saturation_history) * 100 if queue_saturation_history else 0 + ) + target_match_ratio = ( + total_written_frames / (total_pipeline_time * self.reader.target_fps) + ) * 100 + if self.is_cuda: + avg_h2d_ms = (self.reader.total_h2d_time / total_written_frames) * 1000 + avg_prep_ms = 0.0 + else: + avg_prep_ms = (self.reader.total_h2d_time / total_written_frames) * 1000 + avg_h2d_ms = 0.0 + + print("\n" + "=" * 60) + print( + f" FULLY-OPTIMIZED ASYNC STAGE ({self.config.DEVICE}) PIPELINE BREAKDOWN " + ) + print("=" * 60) + print(f"Total Output Frames Written: {total_written_frames}") + print(f"Total Pipeline Execution Time: {total_pipeline_time:.4f} seconds") + print(f"Overall Processing Speed: {target_frame_fps:.2f} FPS") + print("-" * 60) + print("MAIN CONSUMER LOOP TIMELINE (SEQUENTIAL OVERHEAD):") + print( + f" 1. Read Frame from Queue: {avg_reader_ms:6.2f} ms" + ) + print( + f" 2. Image Resize Time (360p Transformation): {avg_resize_ms:6.2f} ms" + ) + print( + f" 3. Disk Writer Queue Hand-off (Async): {avg_write_ms:6.2f} ms" + ) + print("-" * 60) + print("BACKGROUND INGESTION HEALTH (ASYNC METRICS):") + print( + f" A. Inbound Stream Capture Speed: {all_frame_fps:6.2f} FPS" + ) + print( + f" B. Host RAM Array Copy (100MB Memcpy): {avg_copy_ms:6.2f} ms" + ) + print(f" C. {h2d_display_label:<42} {avg_h2d_ms:6.2f} ms") + print( + f" D. Reader Thread Queue Blocked Time: {avg_blocked_ms:6.2f} ms" + ) + print( + f" E. Consumer Queue Saturation Density: {avg_saturation:6.1f}%" + ) + print("-" * 60) + + # EXPANDED PERFORMANCE INSIGHTS AND DIAGNOSTICS + print("PIPELINE HEALTH & BEHAVIOR INSIGHTS:") + if avg_saturation > 80.0: + pipeline_status = "CHOKED" + print( + f" • Status: \033[91m🔴 {pipeline_status}\033[0m (Downstream logic cannot keep up with inbound stream speed)" + ) + elif avg_saturation > 40.0: + pipeline_status = "BALANCED" + print( + f" • Status: \033[93m🟡 {pipeline_status}\033[0m (Queue buffer is actively pacing consumer workloads)" + ) + else: + pipeline_status = "IDLE/LIGHT" + print( + f" • Status: \033[92m🟢 {pipeline_status}\033[0m (Consumer loop finishes ahead of background ingestion clock)" + ) + + print( + f" • Peak Queue Fullness Reached: {peak_saturation:.1f}%" + ) + # Calculate stream drop indicator + print( + f" • Targeted Pacing Delivery Accuracy: {target_match_ratio:.1f}%" + ) + print("=" * 60) + + self.__class__.benchmarks.append( + { + "Test Name": self._testMethodName, + # "Detection Type": self.config.DETECTION_TYPE, + "Device": self.config.DEVICE, + # "Smart Filtering": "Enabled" if sf_enabled else "Disabled", + "Video": self.source, # self.name? + "Video FPS": f"{self.reader.input_fps:.2f}", + "Video Duration (s)": f"{duration_s:.4f}", + "Video Frames": self.reader.total_input_frames, + # PIPELINE OVERVIEW + "Target FPS": f"{self.reader.target_fps:.2f}", + "Output Frames": total_written_frames, + "Pipeline Latency (s)": f"{total_pipeline_time:.2f}", + "Pipeline FPS (Video frames)": f"{all_frame_fps:.2f}", + "Pipeline FPS (Target frames)": f"{target_frame_fps:.2f}", + # MAIN CONSUMER LOOP TIMELINE (SEQUENTIAL OVERHEAD) + "Avg Frame Reading (ms)": f"{avg_reader_ms:.2f}", + "Avg Resize (ms)": f"{avg_resize_ms:.2f}", + "Avg Writer Async Handoff (ms)": f"{avg_write_ms:.2f}", + # BACKGROUND INGESTION HEALTH (ASYNC METRICS) + "Avg Host Copy (ms)": f"{avg_copy_ms:.2f}", + "Avg DMA Upload (ms)": f"{avg_h2d_ms:.2f}", + "Avg Data Prep Overhead (ms)": f"{avg_prep_ms:.2f}", + "Avg Queue Blocked (ms)": f"{avg_blocked_ms:.2f}", + "Avg Queue Saturation (%)": f"{avg_saturation:.2f}", + # PIPELINE HEALTH & BEHAVIOR INSIGHTS + "Pipeline Status": pipeline_status, + "Peak Queue Fullness (%)": f"{peak_saturation:.2f}", + "Targeted Pacing Delivery (%)": f"{target_match_ratio:.2f}", + } + ) + + print( + f"\n[{self._testMethodName}] Pipeline Latency (s): {total_pipeline_time:.2f} sec" + ) + print( + f"\n[{self._testMethodName}] Pipeline FPS (Target frames): {target_frame_fps:.2f} ({total_written_frames} frames)" + ) + print( + f"\n[{self._testMethodName}] Pipeline FPS (Video frames): {all_frame_fps:.2f} ({self.reader.total_input_frames} frames)" + ) + + # TESTS -------------------------------------------- + + def pipeline_fn( + self, device_frame, overall_frame_num, is_target_frame, stat_start_time + ): + num_objs = 0 + metrics = {"sf_time": 0, "roi_time": 0, "det_time": 0, "bbs": None} + + # TODO: Add Function to write frames sized to (disp_w, disp_h) efficiently + if self.device_input == "cuda" and torch.is_tensor(device_frame): + # 2. Fast Inline VRAM Downscaling into our static memory slot + # Reshape to (Batch, Channel, Height, Width) seamlessly without duplicating data + gpu_tensor = device_frame[None, :].permute(0, 3, 1, 2).float() + + resized_tensor = torch.nn.functional.interpolate( + gpu_tensor, + size=(360, 640), + mode="nearest", + ) + + # CONVERTS TO CPU EARLIER (WORKS but lowers fps) + # hwc_byte_tensor = resized_tensor.squeeze(0).permute(1, 2, 0).byte() + # cpu_tensor = hwc_byte_tensor.cpu() + # bgr_contiguous = cpu_tensor.contiguous() + + # Using copy_() avoids creating any runtime allocations or memory-stride drift. + self.static_gpu_byte_bchw.copy_(resized_tensor.byte()) + + # Safely reshape the pre-allocated, locked GPU memory layout back to standard HWC array topology. + # Since the underlying array layout is strictly contiguous, this permute is guaranteed + # to be zero-copy on the GPU and free from memory race stalls. + bgr_contiguous = self.static_gpu_byte_bchw.squeeze(0).permute(1, 2, 0) + + # 1. Grab the current free pinned slot tracking variables from your reader + d2h_idx = self.reader.d2h_selector + pinned_tensor_buf = self.reader.d2h_buffers[d2h_idx] + + # c_idx = self.canvas_selector + # current_canvas = self.static_host_canvases[c_idx] + + # host_tensor_view = torch.as_tensor(current_canvas, device="cpu") + + # 3. Non-blocking asynchronous PCIe DMA Download directly into our page-locked canvas + with torch.cuda.stream(self.reader.download_stream): + # pinned_tensor = torch.from_numpy(current_canvas).cuda() + pinned_tensor_buf.copy_(bgr_contiguous, non_blocking=True) + + # Synchronize only the side download stream layout channel + self.reader.download_stream.synchronize() + + cpu_360p_frame = self.reader.d2h_numpys[d2h_idx] + + # 4. Fast Metadata Rendering via OpenCV + # if metrics["bbs"] is not None and len(metrics["bbs"]) > 0: + # for box in metrics["bbs"]: + # # Coordinates must match your 360p scaled target context map + # x1, y1, x2, y2 = int(box[0]), int(box[1]), int(box[2]), int(box[3]) + # cv2.rectangle(current_canvas, (x1, y1), (x2, y2), (0, 255, 0), 2) + # cv2.putText(current_canvas, str(box[4]), (x1, y1 - 10), + # cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 1) + + # 5. Non-Blocking Push straight to your background AsyncVideoWriter thread pool + # We pass a direct .copy() slice so the hot loop can instantly reuse the pinned ring buffer + safe_disk_frame = np.array(cpu_360p_frame, copy=True, order="C") + self.async_writer.write_frame(safe_disk_frame) + # self.canvas_selector = 1 - self.canvas_selector + self.reader.d2h_selector = 1 - self.reader.d2h_selector + + else: + # Reusable baseline track for CPU execution mappings + cpu_resized = cv2.resize( + device_frame, (640, 360), interpolation=cv2.INTER_NEAREST + ) + if metrics["bbs"] is not None: + for box in metrics["bbs"]: + cv2.rectangle( + cpu_resized, + (int(box[0]), int(box[1])), + (int(box[2]), int(box[3])), + (0, 255, 0), + 2, + ) + self.async_writer.write_frame(cpu_resized) + + self.update_frame(stat_start_time) + return num_objs, metrics # Skip full detection pass + + def run_realtime_inference(self, sf_enabled=True): + # self.duration_target = 30 + self.status = "RUNNING" + metrics = {} + num_objs = 0 + self.is_cuda = self.device.lower() == "gpu" and torch.cuda.is_available() + self.frame_count_target = 0 + self.next_process_idx = 0.0 + self.frame_in_clip_count = 0 + total_pipeline_time_ms = 0.0 + total_read_time = 0.0 + total_queue_saturation = 0.0 + # queue_saturation_history = [0.0] + total_written_frames = 0 + total_sf_pipeline_time_ms = 0.0 + real_world_latency_ms = 0.0 + + # queue_size = 4 + total_run_pipelinefn = 0 + # total_read_time = 0 + # total_resize_time = 0 + # total_written_frames = 0 + # total_disk_write_overhead = 0.0 + total_frame_loop_latency = 0.0 + total_active_processing_overhead = 0.0 + # total_queue_saturation = 0.0 + # total_queue_saturation = 0.0 + queue_saturation_history = [] + consecutive_slow_frames = 0 + # total_dropped_frames = 0 + + # coverage_percentages = [] + self.component_stats = { + "sf": [], + "roi": [], + "det": [], + "dma_upload": [], # Track PCIe Transfer Latencies + "queue_blocked": [], # Track GIL Serialization stalls + "batch_sizes": [], # Track Smart Filtering density + "thread_backlog": [], # Track thread work pool backlog + } + self.crops_per_frame_list = [] + + self.step_size = ( + float(self.input_fps) / float(self.target_fps) + if hasattr(self, "target_fps") + else 1.0 + ) + self.max_target_frames = ( + int(self.duration_target * float(self.target_fps)) + if hasattr(self, "target_fps") + else float("inf") + ) + + # self.start() + # time.sleep(0.1) + + # if self.source.startswith("rtsp"): + # short_name = "rtsp" + # else: + # short_name = Path(self.source).stem + # output_path= f"{self.config.SHARED_OUTPUT}/{short_name}_{self.device}.mp4" + # disp_wh = (640, 360) + # async_writer = AsyncVideoWriter( + # self.output_path, + # cv2.VideoWriter_fourcc(*'avc1'), + # float(self.target_fps), + # (self.disp_w, self.disp_h) + # ) + + pipeline_start_time = time.perf_counter() + + # try: + self.dynamic_limit = max(2, int(0.5 * self.target_fps)) + # last_frame_time = time.perf_counter() + while self.active and self.frame_count_target < self.max_target_frames: + try: + # FRAME RETRIEVAL --------------------------------------------- + try: + # device_frame, frame_num = self.reader.read() + # Utilize a clean OS kernel-level block to completely eliminate GIL thrashing + # frame_8k, frame_num = None, None + frame_start_time = time.perf_counter() + t_read = time.perf_counter() + # if self.active: + ret, frame_8k, frame_num = ( + self.reader.read() + ) # Successfully reads the 8K frame + if not ret or frame_8k is None: + # Check if there are any remaining frames still buffered in flight inside the reader queue + # if hasattr(self.reader, 'frame_queue') and not self.reader.frame_queue.empty(): + # ret, frame_8k, frame_num = self.reader.read() + # if not ret or frame_8k is None: + # break + # else: + # break + if self.reader is None or ( + hasattr(self.reader, "stopped") and self.reader.stopped + ): + if self.device_input == "cuda": + torch.cuda.synchronize() + self.active = False + break + continue + + reader_time = time.perf_counter() - t_read + total_read_time += reader_time + except queue.Empty: + if getattr(self.reader, "reconnect_failed", False): + self.active = False + break + time.sleep(0.002) + continue + + # print(f"frame_num: {frame_num}") + + self.stat_start_time = time.perf_counter() + self.frame_count += 1 + is_target_frame = True + + if torch.is_tensor(frame_8k): + if frame_8k.device.type != "cuda": + # Standard functional cross-stream synchronization barrier + # self.reader.upload_stream.wait_stream( + # torch.cuda.current_stream() + # ) + # frame_8k = frame_8k.to("cuda:0", non_blocking=True) + torch.cuda.current_stream().wait_stream( + self.reader.upload_stream + ) + + # Real-Time Metric A: Track Queue Saturation Density Ratio + # current_q_size = self.reader.frame_queue.qsize() + saturation_ratio = ( + self.reader.frame_queue.qsize() / self.reader.frame_queue.maxsize + ) + total_queue_saturation += saturation_ratio + queue_saturation_history.append(saturation_ratio) + + # RUN PIPELINE_FN --------------------------------------------- + run_pipelinefn_start = time.perf_counter() + self.frame_count_target += 1 + self.frame_in_clip_count += 1 + + if self.device_input == "cuda": + # Instantiate a lightweight hardware fence event object + curr_event = torch.cuda.Event(enable_timing=False) + # curr_event.record() + # Record the exact milestone on the default stream right after fetching the frame data + curr_event.record(torch.cuda.default_stream()) + self.inference_stream.wait_event(curr_event) + + with torch.cuda.stream(self.inference_stream): + nob, metrics = self.pipeline_fn( + frame_8k, + frame_num, + is_target_frame, + self.stat_start_time, + ) + # torch.cuda.default_stream().synchronize() + # self.inference_stream.synchronize() + else: + nob, metrics = self.pipeline_fn( + frame_8k, + frame_num, + is_target_frame, + self.stat_start_time, + ) + num_objs += nob + + total_written_frames += 1 + + # Real-Time Metric B: Frame Processing Latency Check + frame_loop_latency = ( + time.perf_counter() - frame_start_time + ) * 1000 # ms + total_frame_loop_latency += frame_loop_latency + + # Isolate active processing time (excluding the queue blocking read) + active_processing_overhead = frame_loop_latency - (reader_time * 1000) + total_active_processing_overhead += active_processing_overhead + + # RUNTIME TERMINAL WARNING ALERTS + if saturation_ratio >= 1.0 or active_processing_overhead > ( + 1000 / self.target_fps + ): + consecutive_slow_frames += 1 + if ( + consecutive_slow_frames % self.target_fps == 0 + ): # Throttle terminal spam + print( + f"\033[93m⚠️ [PERF WARNING] Main loop starving! Waiting on stream ingestion... " + f"Read Wait: {frame_loop_latency:.1f}ms | Queue Fullness: {saturation_ratio * 100:.0f}%\033[0m" + ) + else: + consecutive_slow_frames = max(0, consecutive_slow_frames - 1) + + if total_written_frames % (5 * self.target_fps) == 0: + print( + f"Captured {total_written_frames}/{self.max_target_frames} frames..." + ) + + # WRAP-UP FRAME INSTANCE --------------------------------------------- + # if self.device_input == "cuda" and torch.cuda.is_available(): + # torch.cuda.default_stream().synchronize() + + total_run_pipelinefn += time.perf_counter() - run_pipelinefn_start + + # Explicitly delete frame variables to free their references + del frame_8k + + # Force PyTorch's internal allocator to release cached segments back to the OS + # if self.frame_count_target % (5 * self.target_fps) == 0: + # print( + # f"Captured {self.frame_count_target}/{self.max_target_frames} frames..." + # ) + # torch.cuda.empty_cache() + # torch.cuda.ipc_collect() + + except torch.cuda.OutOfMemoryError: + print("\n" + "!" * 70) + print( + "[CRITICAL TEST CRASH] GPU MEMORY CEILING HIT INSIDE RUNNER LOOP!" + ) + print( + "Freezing allocation history registers and writing diagnostic log..." + ) + print("!" * 70) + + try: + import os + + snapshot_filename = ( + f"/tmp/test_vram_leak_profile_pid{os.getpid()}.pickle" + ) + torch.cuda.memory._dump_snapshot(snapshot_filename) + print( + f"[PROFILER SUCCESSFUL] Snapshot profile written to: {snapshot_filename}" + ) + print( + "--> Drag and drop this file directly into: https://pytorch.org" + ) + except Exception as dump_err: + print(f"Failed to record profile data snapshot: {dump_err}") + + # Force safe system unlinking of background workers to clean up OS handles + self.active = False + if hasattr(self, "reader") and self.reader is not None: + self.reader.stop() + raise + + except Exception: + traceback.print_exc() + + # POST FRAME PROCESSING --------------------------------------------- + pipeline_end_time = time.perf_counter() + + # Resolve the final execution window. If the stream ran to completion, + # use the operational end marker to avoid measuring downstream disk write bottlenecks. + final_end_marker = getattr(self, "pipeline_completion_timestamp", None) + if final_end_marker is None: + final_end_marker = time.perf_counter() + # self.pipeline_completion_timestamp = final_end_marker + + real_world_latency_ms = float((final_end_marker - pipeline_start_time) * 1000.0) + + total_sf_pipeline_time_ms = float( + sum(self.component_stats.get("sf", [0.0])) + + sum(self.component_stats.get("roi", [0.0])) + + sum(self.component_stats.get("det", [0.0])) + ) + total_pipeline_time_ms = float( + (pipeline_end_time - pipeline_start_time) * 1000.0 + ) + + # total_read_time = ( + # sum(self.component_stats.get("queue_blocked", [0.0])) / 1000.0 + # if self.component_stats.get("queue_blocked") + # else 0.0 + # ) + total_queue_saturation = sum( + self.component_stats.get("batch_sizes", [0.0]) + ) # Sample array profile proxy + + if metrics != {}: + num_crops = len(metrics["bbs"]) if metrics["bbs"] is not None else 0 + self.crops_per_frame_list.append(num_crops) + + # Context-aware extraction of the newly proposed metrics + density = metrics.get("batch_density", 0 if self.config.sf_enabled else 1) + self.component_stats["batch_sizes"].append(density) + + self.component_stats["sf"].append(metrics["sf_time"]) + self.component_stats["roi"].append(metrics["roi_time"]) + self.component_stats["det"].append(metrics["det_time"]) + + self.async_writer.release() + # Continuously sample the thread work pool backlog state mechanics + if hasattr(self, "executor") and self.executor is not None: + # Safely probe internal concurrent.futures work queue bounds + self.component_stats["thread_backlog"].append( + self.executor._work_queue.qsize() + ) + else: + self.component_stats["thread_backlog"].append(0) + + # Real-Time Metric B: Frame Processing Latency Check + # frame_loop_latency = (pipeline_end_time - frame_start_time) * 1000 # ms + + # # Isolate active processing time (excluding the queue blocking read) + # active_processing_overhead = frame_loop_latency - (reader_time * 1000) + + # # RUNTIME TERMINAL WARNING ALERTS + # if saturation_ratio >= 1.0 or active_processing_overhead > ( + # 1000 / self.target_fps + # ): + # consecutive_slow_frames += 1 + # if consecutive_slow_frames % self.target_fps == 0: # Throttle terminal spam + # print( + # f"\033[93m⚠️ [PERF WARNING] Main loop starving! Waiting on stream ingestion... " + # f"Read Wait: {frame_loop_latency:.1f}ms | Queue Fullness: {saturation_ratio * 100:.0f}%\033[0m" + # ) + # else: + # consecutive_slow_frames = max(0, consecutive_slow_frames - 1) + + # CALCULATE PERFORMANCE METRICS --------------------------------------------- + print( + f"\nExecution Finished. Total Output Frames Written: {self.frame_count_target}" + ) + + # Render your metrics dashboard table cleanly + self._finalize_benchmarks( + num_objs, + self.frame_count_target, # Reads the updated integer directly! + total_pipeline_time_ms, + real_world_latency_ms, + total_sf_pipeline_time_ms, + total_read_time, + total_queue_saturation, + queue_saturation_history, + ) + self.stop() + + +# MAIN ---------------------------------------- +# def pytest_runtest_logreport(report): +# """Intercepts teardown to ensure benchmarks write to disk BEFORE 'PASSED' prints.""" +# if report.when == "teardown" and report.status == "passed": +# from test_readers import TestReader # Safe local class lookup + +# # Guarantee stop lifecycle finishes completely before reporting opens +# if hasattr(TestReader, "active") and TestReader.active: +# TestReader.stop() + +# if hasattr(TestReader, "benchmarks") and TestReader.benchmarks: +# TestReader.benchmarks = [r for r in TestReader.benchmarks if r and "Test Name" in r] +# results = TestReader.benchmarks +# if not results: +# return + +# # Compute relative speedup modifiers vs CPU baseline +# for row in results: +# if "GPU" in row["Test Name"]: +# match_name = row["Test Name"].replace("GPU", "CPU") +# cpu_row = next((r for r in results if r["Test Name"] == match_name), None) +# if cpu_row: +# speedup = float(row["Pipeline FPS (Target frames)"]) / float(cpu_row["Pipeline FPS (Target frames)"]) +# row["Pipeline Speedup vs CPU"] = f"{speedup:.2f}x" +# else: +# row["Pipeline Speedup vs CPU"] = "N/A" +# else: +# row["Pipeline Speedup vs CPU"] = "Baseline (CPU)" + +# # Bulk write results back to your CSV asset file +# if hasattr(TestReader, "csv_path") and TestReader.csv_path: +# with open(str(TestReader.csv_path), "w", newline="") as f: +# keys = results[0].keys() +# writer = csv.DictWriter(f, fieldnames=keys) +# writer.writeheader() +# writer.writerows(results) +# print(f"\n[FINAL] Benchmarks saved to {TestReader.csv_path}") + +# for r in results: +# print(f" > {r['Test Name']}: {r['Pipeline FPS (Video frames)']} FPS | {r['Pipeline FPS (Target frames)']} FPS | Speedup: {r.get('Pipeline Speedup vs CPU', 'N/A')}") + +# # Export comparison chart figures cleanly +# if hasattr(TestReader, "result_dir") and hasattr(TestReader, "csv_filename"): +# from test_readers import fps_comparison_chart +# chart_path_video = TestReader.result_dir / f"{TestReader.csv_filename.replace('.csv', '')}_pipelineFPS.png" +# fps_comparison_chart(chart_path_video, results, fps_key="Pipeline FPS (Video frames)") + +# chart_path_target = TestReader.result_dir / f"{TestReader.csv_filename.replace('.csv', '')}_pipelineFPS_target.png" +# fps_comparison_chart(chart_path_target, results, fps_key="Pipeline FPS (Target frames)") + + +def get_pytest_filter_expression(args): + print("\n" + "=" * 50) + print("TARGET SELECTION PREVIEW") + print("=" * 50) + + filter_expression = "test_device_reader" + # applied_subs = [] + + if args.sf_enabled is not None: + # Target exact parameter tokens generated by pytest parametrization + sf_str = "-True-" if args.sf_enabled else "-False-" + filter_expression += f" and {sf_str}" + # applied_subs.append(f"sf_enabled={args.sf_enabled}") + + if args.detection_type: + filter_expression += f" and {args.detection_type}" + + # Target hardware context selection filter applies globally across all test cases + if args.device.lower() != "all": + print(f" 💻 Hardware Context Constraint: {args.device.upper()}") + filter_expression = f"({filter_expression}) and {args.device.lower()}" + else: + print(" 💻 Hardware Context Constraint: ALL AVAILABLE") + + print("=" * 50) + print(f"COMPILED PYTEST KEYWORD EXPRESSION:\n 👉 {filter_expression}") + print("=" * 50 + "\n") + + return filter_expression + + +if __name__ == "__main__": + # Force all PyTorch extension handles to compile and load BEFORE threads spawn + if torch.cuda.is_available(): + _ = torch.zeros(1).cuda() + import torch._ops + import torch.utils + + # TEST ARGUMENTS + parser = argparse.ArgumentParser(description="Run Video Detection Pipeline Tests") + parser.add_argument( + "-s", + "--source", + type=str, + default="anduril_swarm_8K.mp4", + help="Video filename (located in /inputs)", + ) + + # MODEL TO USE + parser.add_argument( + "--no-custom", + action="store_false", + dest="custom_model_flag", + help="Enable if using Ultralytics YOLO model", + ) + parser.add_argument( + "-m", + "--model", + type=str, + default="drone_detection", + dest="model_name", + help="Name of model. Required if `--no-custom` is enabled. [Default: drone_detection]", + ) + + # Filter tests + parser.add_argument( + "--type", + type=str, + choices=["object", "motion"], + dest="detection_type", + help="Filter by detection type (object or motion)", + ) + parser.add_argument( + "--device", + type=str, + default="all", + choices=["cpu", "gpu", "all"], + help="Filter by device (cpu or gpu)", + ) + parser.add_argument( + "--sf", + action="store_true", + default=None, + dest="sf_enabled", + help="Filter by Smart Filtering", + ) + + # DEBUGGING + parser.add_argument( + "--debug", + action="store_true", + help="Enable debug message and save intermediate images for Smart Filtering tests", + ) + parser.add_argument( + "-n", + type=int, + default=100, + dest="debug_frame_limit", + help="Number of frames used for debugging [Default: 100]", + ) + + args = parser.parse_args() + + # UPDATE ENVIRONMENTAL VARIABLES + os.environ["VIDEO_FILENAME"] = args.source + os.environ["CUSTOM_MODEL_FLAG"] = "True" if args.custom_model_flag else "False" + os.environ["MODEL_NAME"] = args.model_name + os.environ["DEBUG"] = "1" if args.debug else "0" + os.environ["DEBUG_FRAME_LIMIT"] = str(args.debug_frame_limit) + + # detection_type, device, sf_enabled + filter_expression = get_pytest_filter_expression(args) + + # PYTEST COMMAND + pytest_args = [ + "-k", + filter_expression, + "-s", + "-v", + # "--log-cli-level=DEBUG", + __file__, + ] + + print(f"Launching tests for {args.source}") + + sys.exit(pytest.main(pytest_args)) diff --git a/finetune/Dockerfile b/finetune/Dockerfile index e093a7b..4c5d15b 100644 --- a/finetune/Dockerfile +++ b/finetune/Dockerfile @@ -44,10 +44,10 @@ RUN apt-get update && \ # hadolint ignore=DL3013 RUN python3 -m venv ${VIRTUAL_ENV} && \ ${VIRTUAL_ENV}/bin/pip install --no-cache-dir \ - "pip==26.0.1" \ + "pip==26.1.2" \ "torch==2.10.0" \ "torchvision==0.25.0" \ - "numpy==1.26.0" + "numpy==1.26.4" ENV DEVICE="GPU" From 3d1e9837c8472fb4941d679288205c1655e99a57 Mon Sep 17 00:00:00 2001 From: "Lacewell, Chaunte W" Date: Wed, 15 Jul 2026 17:15:36 -0700 Subject: [PATCH 02/19] [Docs] Update pipeline.md; [Fastapi] clean launch.json, handlers.py, and utils.py. Also cleaned tests and test result structure Signed-off-by: Lacewell, Chaunte W --- .devcontainer/devcontainer.json | 17 +- doc/pipeline.md | 78 ++- fastapi/.vscode/launch.json | 79 ++- fastapi/include/handlers.py | 924 +++---------------------------- fastapi/include/utils.py | 259 --------- fastapi/tests/test_detections.py | 67 +-- fastapi/tests/test_model.py | 413 ++++++++++++-- fastapi/tests/test_pipeline.py | 46 +- fastapi/tests/test_readers.py | 35 +- 9 files changed, 631 insertions(+), 1287 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index b44624a..79e0d9c 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -28,7 +28,16 @@ "no_proxy" : "${localEnv:no_proxy}", }, - "runArgs" : [ "--rm", "--gpus", "all", "--ipc=host", "--name", "pipeline_dev", "-p", "8011:8000","--cap-add=SYS_NICE", "--shm-size=8gb"], //, "--net=host", "--privileged", "--shm-size=2gb"], + "runArgs" : [ + "--rm", + "--gpus", "all", + "--ipc=host", + "--name", "pipeline_dev", + "-p", "8011:8000", + "--cap-add=SYS_NICE", + "--shm-size=8gb" + ], + //, "--net=host", "--privileged", "--shm-size=2gb"], "postStartCommand": "apt-get update -o Acquire::Check-Date=false -y && apt-get install -y gdb sudo && cp -rp /workspace/app/*.md /app/ && cp -rp /workspace/app/.vscode /app/ && cp -rp /workspace/app/.gitignore /app/ && cp -rp /workspace/app/.github /app/", // "postAttachCommand": "sudo chown -R ${localEnv:USER} /workspaces", @@ -51,7 +60,7 @@ }, "workspaceFolder": "/home", - "workspaceMount": "source=./,target=/workspace/app,type=bind,consistency=cached", + "workspaceMount": "source=${localWorkspaceFolder},target=/workspace/app,type=bind,consistency=cached", // For training only // "mounts": [ @@ -60,8 +69,8 @@ // For fastapi "mounts": [ - "source=./inputs,target=/watch_dir,type=bind", - "source=./fastapi,target=/home,type=bind" + "source=${localWorkspaceFolder}/inputs,target=/watch_dir,type=bind", + "source=${localWorkspaceFolder}/fastapi,target=/home,type=bind" // "source=./fastapi/resources,target=/home/resources,type=bind", // "source=./fastapi/tests,target=/home/tests,type=bind" ], diff --git a/doc/pipeline.md b/doc/pipeline.md index 4236c11..6ddd8a6 100644 --- a/doc/pipeline.md +++ b/doc/pipeline.md @@ -2,7 +2,7 @@ This pipeline focuses on real-time processing of high-resolution (8K) video for object detection. Currently, real-time processing of high-resolution (HR) frames is not possible as large compute power is needed which are typically beyond any HW capabilities. -There are techniques such as image tiling or resolution reduction, but these workarounds compromisr detail integrity, diminish inference throughput, and can make rendering real-time processing of HR feeds infeasible within HW boundaries. +There are techniques such as image tiling or resolution reduction, but these workarounds compromise detail integrity, diminish inference throughput, and can make rendering real-time processing of HR feeds infeasible within HW boundaries. HR video streams typically achieve higher accuracy in object detection, therefore, a technique to reduce compute on HR videos is needed. To solve this issue, we created a Smart Filtering Pipeline to significantly reduce pixel processing (compute) by *automatically* identifying the regions of interest (ROIs) which is then forwarded to the detection model. @@ -15,7 +15,7 @@ To solve this issue, we created a Smart Filtering Pipeline to significantly redu ## Smart Filtering Pipeline The Smart Filtering (SF) is a portion of the pipeline which filters HR videos for ROIs which are used in the detection phase instead of processing the entire frame. This helps reduce the compute while maintaining detection accuracy. -In smart filtering, we use motion to help identify ROIs, which is ideal for surviellence and applications such as the test use-case, drone detection, with stationary cameras. +In smart filtering, we use motion to help identify ROIs, which is ideal for surveillance and applications such as the test use-case, drone detection, with stationary cameras. Keep in mind, if camera is NOT stationary, some background movement may be captured as foreground objects due to background subtraction algorithm.
@@ -25,8 +25,8 @@ Keep in mind, if camera is NOT stationary, some background movement may be captu The current filtering pipeline includes the following steps: 1. **Resize:** Resize full resolution (HR) frame to smaller size for less computation. 1. **Background Subtraction:** Use resized image to obtain mask of foreground objects using background subtraction. With background subtraction, there is an option to include the masks of previous frames which is enabled by default for 3 previous frames. -1. **Threshold:** Apply thresholding to mask generated by previous step -1. **Clean Mask:** Dilate the thresholded frame for easier detection of ROIs. +1. **Threshold:** Apply threshold to mask generated by previous step +1. **Clean Mask:** Dilate the threshold frame for easier detection of ROIs. 1. **Identify Region of Interests (ROIs):** Retrieve contours from dilated mask 1. Filter contours by defined minimum contour area and obtain ROIs in full resolution coordinates. 1. Sort ROIs by area (largest to smallest) @@ -119,6 +119,8 @@ For testing other components, please see [Testing Pipeline Components](#testing- #### VSCode If using VSCode, the provided `.vscode` directory is already mounted in the above command which includes `launch.json` for debugging. You can use the provided DevContainer or use the docker extension to connect to the `lcc_fastapi:stream` container by clicking `Attach Visual Studio Code`. +The DevContainer assumes GPU availability. +If your system does NOT support GPU, check [devcontainer.json](/.devcontainer/devcontainer.json) and make sure within the `runArgs` section, `"--gpus", "all"` is commented out. Once connected, it will install VSCode in the container. If you receive an error regarding permissions during installation, you must modify the remote user. To allow permission for the installation, open the `Command Pallette` and select `Dev Containers: Open Attached Container Configuration File`. @@ -142,11 +144,11 @@ Edit the file as follows: ### Optimization Areas -For the smart filtering pipeline, the following are potential areas for optimizations. +For the Smart Filtering pipeline, the following are potential areas for optimizations. | Category | Variable | Default | Description | | ---------------------- | ------------------------------------ | ----------- |------------ | -| Smart Filtering | SMART_FILTERING_PIXEL_CONSTRAINT | 1920 * 1080 | Smart filtering is enabled if vidoe is larger than 2K. YOLO models typicaly can efficiently process lower resolution without overloading resources. | +| Smart Filtering | SMART_FILTERING_PIXEL_CONSTRAINT | 1920 * 1080 | Smart filtering is enabled if video is larger than 2K. YOLO models typically can efficiently process lower resolution without overloading resources. | | Background Subtraction | BKGD_SUB_INCLUDE_HISTORY | True | Include temporal history with mask generation. True: dilate masks in history and combine into single current mask via `method`. The final background model mask is generated using the union of combined mask (if true) and current background mask. | | Background Subtraction | BKGD_SUB_INCLUDE_HISTORY_DILATE_KERNEL_SIZE | 15 x 15 | Kernel used to dilate temporal masks if `BKGD_SUB_INCLUDE_HISTORY` is True. | | Background Subtraction | BKGD_SUB_INCLUDE_HISTORY_METHOD | or | Method used to combine mask history. Specify `and` or `or`. | @@ -156,7 +158,7 @@ For the smart filtering pipeline, the following are potential areas for optimiza | Background Subtraction | BKGD_SUB_MOG2_LR | 1 / BKGD_SUB_MOG2_HISTORY | Learning rate to use for background model | | Background Subtraction | BKGD_SUB_MOG2_VARTHRESHOLD | 10 | The Mahalanobis distance threshold to decide whether a pixel is foreground or background. Higher value (Lower sensitivity): This reduces "salt and pepper" noise and ignores small fluctuations, but you might lose the edges of your actual objects (making bounding boxes smaller/fragmented). Lower value (Higher sensitivity): You’ll catch every tiny movement, but you’ll get a lot of noise from compression artifacts or camera sensor grain. | | Threshold | THRESHOLD_VALUE | 127 | The threshold value used to classify pixel intensities. | -| Clean Mask | DILATE_KERNEL_SIZE | 5 x 5 | Kernel used to dilate mask AFTER thresholding is performed. | +| Clean Mask | DILATE_KERNEL_SIZE | 5 x 5 | Kernel used to dilate mask AFTER threshold is applied. | | Identify ROIs | ROI_BB_FULL_RES_PADDING | MODEL_W * .02 | Padding to add to ROIs to make sure detection captures full box. | | Identify ROIs | ROI_CONTAINMENT_THRESH | 0.95 | Input argument to filter_contained_boxes used for removing smaller contained ROIs. Current value is 0.9 (90%). | | Identify ROIs | ROI_DISTANCE_THRESH_RATIO | 0.05 | Input argument to merge ROIs is distance less than this parameter. | @@ -192,15 +194,17 @@ Here we provide details on each available test. | Component | Test File | Description | | --------- | --------- | ----------- | -| Detection Model | [test_model.py](/fastapi/tests/test_model.py) | Test the model for both CPU and GPU on provided RTSP URL or video file | -| Smart Filtering | [test_detections.py](/fastapi/tests/test_detections.py) | This test independently evaluates the detection pipeline (with and without Smart Filtering) only and does not include video clip generation or sending metadata to database for querying. | -| Stream Reader | [test_pipeline.py](/fastapi/tests/test_pipeline.py) | Scenario 1 tests the behavior of Readers when provided an invalid RTSP url.
Scenario 2 reads the RTSP url or video file for a specified duration or until it ends. | +| Model | [test_model.py](/fastapi/tests/test_model.py) | Test the model for both CPU and GPU on provided RTSP URL or video file | +| Stream Readers | [test_readers.py](/fastapi/tests/test_readers.py) | Independently test the stream readers for both CPU and GPU on provided RTSP URL or video file | +| Smart Filtering | [test_detections.py](/fastapi/tests/test_detections.py) | Independently test the detection pipeline (with and without Smart Filtering) only. Test does not include video clip generation or sending metadata to database for querying. | +| Stream Readers | [test_pipeline.py](/fastapi/tests/test_pipeline.py) | Scenario 1 tests the behavior of Readers when provided an invalid RTSP url.
Scenario 2 reads the RTSP url or video file for a specified duration or until it ends. | | Video Clip Generation | [test_pipeline.py](/fastapi/tests/test_pipeline.py) | Scenario 3 mimics the clip generation within the pipeline. | | Smart Filtering | [test_pipeline.py](/fastapi/tests/test_pipeline.py) | Scenario 4 tests the entire pipeline and saves output video of results. | -### Test Models +### Test Model This test reads the `SOURCE` from `./inputs` (the local directory or `/watch_dir` if in container), or RTSP server, and creates a video with overlaid detection results for both GPU and CPU model. +Results are located in `test_model_results/{MODEL_NAME}`. ```bash python test_models.py -s "${SOURCE}" ``` @@ -216,20 +220,36 @@ The arguments available for this test are as follows: | -s SOURCE,
--source SOURCE | anduril_swarm_8K.mp4 | Video filename (located in /inputs) or RTSP target stream endpoint | | --no-custom | - | Enable if using Ultralytics YOLO model | | -m MODEL_NAME,
--model MODEL_NAME | drone_detection | Name of model. Required if `--no-custom` is enabled. | -| --type {object,motion} | None | Filter by detection type (object or motion) | | --device {cpu,gpu} | None | Filter by device (cpu or gpu) |
+### Test Readers +This test reads the `SOURCE` from `./inputs` (the local directory or `/watch_dir` if in container), or RTSP server, and creates a video with overlaid detection results for both GPU and CPU model. +Results are located in `test_readers_results/{SOURCE_NAME}`. +```bash +python test_readers.py -s "${SOURCE}" +``` + +The arguments available for this test are as follows: +| Argument | Default | Description | +| -------- | ------- | ----------- | +| -s SOURCE,
--source SOURCE | anduril_swarm_8K.mp4 | Video filename (located in ./inputs) | +| --device {cpu,gpu,all} | all | Filter by target hardware. | +| --debug | False | Enable debug message | +
+ + ### Test Detections This test reads the `SOURCE` from `./inputs`, and evaluates the detection pipeline only. +Results are located in `test_detections_results/{MODEL_NAME}/{SOURCE_NAME}`. To run the detection test, use the following: ```bash python test_detections.py --source "${SOURCE}" ``` -You also have control on which scenario, model, etc. to use during testinh. +You also have control on which scenario, model, etc. to use during testing. The arguments available are as follows: | Argument | Default | Description | | -------- | ------- | ----------- | @@ -246,13 +266,14 @@ The arguments available are as follows: ### Test Pipeline This test reads the `SOURCE` from `./inputs` or RTSP server, and uses the stream readers to perform multiple scenarios. +Results are located in `test_pipeline_results/{MODEL_NAME}/{SOURCE_NAME}`. To run the full pipeline test, use the following: ```bash python test_pipeline.py --source "${SOURCE}" ``` -You also have control on which scenario, model, etc. to use during testinh. +You also have control on which scenario, model, etc. to use during testing. The arguments available are as follows: | Argument | Default | Description | | -------- | ------- | ----------- | @@ -269,7 +290,7 @@ The arguments available are as follows:
#### Scenario 1: Invalid RTSP URL -Scenario 1 is a simple test to verify the pipeline ends if an invalid input is provided. For this test, an invalie RTSP url is provided, there are 5 retry attempts, and after a failed connection, the test ends. By default, the test iterates over available devices ("cpu" and "gpu"). +Scenario 1 is a simple test to verify the pipeline ends if an invalid input is provided. For this test, an invalid RTSP url is provided, there are 5 retry attempts, and after a failed connection, the test ends. By default, the test iterates over available devices ("cpu" and "gpu"). #### Scenario 2: Stability & Throughput @@ -279,34 +300,51 @@ Scenario 2 evaluates the stability and throughput of the readers by continuously #### Scenario 3: Video Clip Generation Scenario 3 evaluates the video clip generation process in the pipeline. In the pipeline, we segment the input video into 10 sec clips for easy retrieval and playback associated with results in the query UI. By default, the test iterates over available devices ("cpu" and "gpu"). -The resulting video clips generated from this test are located in `test_pipeline_results/scenario3_*`. +The resulting video clips generated from this test are located in `test_pipeline_results/{MODEL_NAME}/{SOURCE_NAME}/scenario3_{DEVICE}`. #### Scenario 4: Pipeline (Without Sending Metadata) Scenario 4 mimics the entire pipeline excluding sending the generated metadata to VDMS. By default, the test iterates over available devices ("cpu" and "gpu"), detection type ("object" or "motion"), and with and without SF. -The resulting video clips and the detection results are located in `test_pipeline_results/scenario4_*`. +The resulting video clips and the detection results are located in `test_pipeline_results/{MODEL_NAME}/{SOURCE_NAME}/scenario4_{DEVICE}`. In the case of testing the Smart Filtering pipeline, to display the ROIs, you can use the following, which will test for both gpu and cpu. ```bash -python test_pipeline.py --scenario 4 --source "${SOURCE}" --type motion +python test_pipeline.py --source "${SOURCE}" --scenario 4 --sf --type motion ``` ## Pipeline Deployment +All components for this application are dockerize. +Scripts are also provided to make deployment easier. ### Deployment +[Optional] To make sure there aren't any running containers for this application, run the following which stops the application and prunes containers: +```bash ./stop.sh –p +``` + +To start the application, run the following for GPU: +```bash ./start_app.sh –e GPU –o –m drone_detection +``` ### Visualization: View live detection -GOTO: http://:30077/ +To view the live detections, open a browser for host system and goto `http://:30077` ### Query: View Page to Query Videos -GOTO: http://:30007/ +To query videos, open a browser for host system and goto `http://:30007`. ### Shutdown +To shutdown this application, run the following: +```bash +./stop.sh +``` + +Or add the necessary flag to stop the application and prune containers: +```bash ./stop.sh –p +``` diff --git a/fastapi/.vscode/launch.json b/fastapi/.vscode/launch.json index d69153c..bf0e18c 100644 --- a/fastapi/.vscode/launch.json +++ b/fastapi/.vscode/launch.json @@ -5,75 +5,106 @@ "version": "0.2.0", "configurations": [ { - "name": "Python Debugger: test_detections", + // Test the model for both CPU and GPU on provided RTSP URL or video file + "name": "Test Model", "type": "debugpy", "request": "launch", - "program": "${workspaceFolder}/tests/test_detections.py", + "program": "${workspaceFolder}/tests/test_model.py", "cwd": "${workspaceFolder}/tests", + "python": "/opt/venv/bin/python", "console": "integratedTerminal", "justMyCode": false, "subProcess": false, "args": [ - "--type", "object", + // VIDEOS EXPECTED TO BE rstp url OR IN inputs/ or /watch_dir + // "--source", "rtsp://:/", // "--source", ".mp4", - // "-m", "yolo11n", "--no-custom", + ] }, { - "name": "Python Debugger: Pipeline", + // Independently test the stream readers for both CPU and GPU on provided RTSP URL or video file + "name": "Test Readers (Independent)", "type": "debugpy", "request": "launch", - "program": "${workspaceFolder}/tests/test_pipeline.py", + "program": "${workspaceFolder}/tests/test_readers.py", + "cwd": "${workspaceFolder}/tests", + "python": "/opt/venv/bin/python", "console": "integratedTerminal", - "subProcess": false, "justMyCode": false, + "subProcess": false, "args": [ - "--duration", "2", - - // AVAILABLE SCENARIO PARAMS - // Use --scenario to specify tests by number (1 - 4) - // 1 - 3: --device (cpu or gpu) - // 4: --device, --sf, --type (object or motion) - // VIDEOS EXPECTED TO BE rstp url OR IN inputs/ or /watch_dir // "--source", "rtsp://:/", - // "--source", ".mp4", + // "--source", ".mp4" + ] }, - { - "name": "Python Debugger: Model", + // Independently test the detection pipeline (with and without Smart Filtering) only + "name": "Test Detections (Independent)", "type": "debugpy", "request": "launch", - "program": "${workspaceFolder}/tests/test_model.py", + "program": "${workspaceFolder}/tests/test_detections.py", "cwd": "${workspaceFolder}/tests", + "python": "/opt/venv/bin/python", "console": "integratedTerminal", "justMyCode": false, "subProcess": false, "args": [ // VIDEOS EXPECTED TO BE rstp url OR IN inputs/ or /watch_dir + // "--source", "rtsp://:/", + // "--source", ".mp4" + + ] + }, + { + // Test pipeline with various scenarios + "name": "Test Pipeline", + "type": "debugpy", + "request": "launch", + "program": "${workspaceFolder}/tests/test_pipeline.py", + "cwd": "${workspaceFolder}/tests", + "python": "/opt/venv/bin/python", + "console": "integratedTerminal", + "subProcess": false, + "justMyCode": false, + "args": [ + // VIDEOS EXPECTED TO BE rstp url OR IN inputs/ or /watch_dir + // "--source", "rtsp://:/", // "--source", ".mp4", + + // AVAILABLE SCENARIO PARAMS + // Use --scenario to specify tests by number (1 - 4) + // 1 - 3: --device (cpu or gpu) + // 4: --device, --sf, --type (object or motion) + + "--duration", "1", + ] }, { - "name": "Python Debugger: Smart filtering", + // Test Smart Filtering within pipeline to display the ROIs + "name": "Test Pipeline: Smart filtering Only", "type": "debugpy", "request": "launch", "program": "${workspaceFolder}/tests/test_pipeline.py", + "cwd": "${workspaceFolder}/tests", + "python": "/opt/venv/bin/python", "console": "integratedTerminal", "subProcess": false, "justMyCode": false, "args": [ + // VIDEOS EXPECTED TO BE rstp url OR IN inputs/ or /watch_dir + // "--source", "rtsp://:/", + // "--source", ".mp4", + // SF SCENARIO PARAMS // 4: --device, --sf, --type (object or motion) "--scenario", "4", "--sf", "--type", "motion", - - // VIDEOS EXPECTED TO BE rstp url OR IN inputs/ or /watch_dir - // "--source", "rtsp://:/", - // "--source", ".mp4", ] - }, + } ] } diff --git a/fastapi/include/handlers.py b/fastapi/include/handlers.py index 53e2783..fce0edc 100644 --- a/fastapi/include/handlers.py +++ b/fastapi/include/handlers.py @@ -88,10 +88,7 @@ def log_to_logger(message, level="info"): PipelineMapping, draw_label, get_detection_color, - get_display_frame_in_bytes, metadata2vdms_with_retry, - # AsyncVideoWriter, - # AsyncDisplayWriter, ) @@ -125,510 +122,6 @@ def release(self): self.writer.release() -class AsyncDisplayWriter: - """ - Ultra-efficient frame-delivery client for live web streaming. - Pipes annotated BGR numpy matrices directly into matching Linux - POSIX Shared Memory allocation slots to prevent thread context-switching. - """ - - def __init__(self, target_fps, display_size, quality=60): - self.target_fps = float(target_fps) - self.disp_w, self.disp_h = display_size - self.quality = int(quality) - - # Ingestion pipeline constructs - self.queue = queue.Queue(maxsize=10) - self.running = True - - # State indicators requested by the FastAPI handler endpoints - self.handler = None - - def start_worker(self): - self.thread = threading.Thread(target=self._write_loop, daemon=True) - self.thread.start() - - def set_handler_context(self, handler_instance): - """Binds the active handler resource structures to secure index barriers.""" - self.handler = handler_instance - - def _write_loop(self): - encode_param = [int(cv2.IMWRITE_JPEG_QUALITY), self.quality] - print( - f"[DISPLAY-DEBUG] Background writer thread active for: {self.handler.name if self.handler else 'None'}", - flush=True, - ) - - while self.running or not self.queue.empty(): - try: - item = self.queue.get(timeout=0.05) - if item is None: - break - - display_frame, frame_num = item - - if self.handler is None: - print( - f"[DISPLAY-WARN] Missing handler context on Frame #{frame_num}", - flush=True, - ) - self.queue.task_done() - continue - - # --- TRACKING DIAGNOSTIC ASSERTION --- - current_last_id = ( - self.handler.mp_last_id.value - ) # self.handler.shared_details.get("last_id", -1) - if frame_num <= current_last_id: - print( - f"[DISPLAY-DROP] Skipping Frame #{frame_num} because it is older or equal to last_id ({current_last_id})", - flush=True, - ) - self.queue.task_done() # 🔄 CRITICAL: Prevent queue thread starvation - continue - - frame_bytes = get_display_frame_in_bytes( - display_frame, - display_size=(self.disp_w, self.disp_h), - quality=self.quality, - return_bytes=True, - ) - - if not frame_bytes: - print( - f"[DISPLAY-ERROR] Compression failed on Frame #{frame_num}", - flush=True, - ) - self.queue.task_done() - continue - - frame_len = len(frame_bytes) - num_shms = len(self.handler.shms) - - forbidden_idx = [ - self.handler.ready_buffer_idx.value, - self.handler.reader_active_idx.value, - ] - available_idx = [i for i in range(num_shms) if i not in forbidden_idx] - - if not available_idx: - write_idx = (self.handler.ready_buffer_idx.value + 1) % num_shms - else: - write_idx = available_idx[0] - - # Zero-copy memory map transaction - shm_block = self.handler.shms[write_idx] - shm_block.buf[:frame_len] = frame_bytes # memoryview(frame_bytes) - - # Secure metrics tracking parameters - self.handler.shm_frame_lengths[write_idx] = frame_len - self.handler.ready_buffer_idx.value = write_idx - # self.handler.shared_details["last_id"] = frame_num - self.handler.mp_last_id.value = frame_num - - # Signal FastAPI async engine handles safely - # if hasattr(self.handler, "loop") and self.handler.loop is not None: - # self.handler.loop.call_soon_threadsafe(self.handler.frame_ready_event.set) - # else: - # self.handler.frame_ready_event.set() - self.handler.mp_frame_ready_flag.value = True - - self.queue.task_done() - - except queue.Empty: - continue - except Exception as e: - print(f"[DISPLAY-FATAL-ERROR] Execution crashed: {e}", flush=True) - traceback.print_exc() - if "item" in locals(): - self.queue.task_done() - continue - - # def _write_loopv2(self): - # encode_param = [int(cv2.IMWRITE_JPEG_QUALITY), self.quality] - # while self.running or not self.queue.empty(): - # try: - # item = self.queue.get(timeout=0.05) - # if item is None: - # break - # display_frame, frame_num = item - # # self.writer.write(frame) - # # Compress to highly packable, network-ready JPEG byte streams - # # ret, jpeg_buf = cv2.imencode('.jpg', display_frame, encode_param) - # # if not ret: - # # self.queue.task_done() - # # continue - # if self.handler is None: # or not self.handler.active: - # self.queue.task_done() - # continue - - # if frame_num > self.handler.shared_details["last_id"]: - # frame_bytes = get_display_frame_in_bytes( - # display_frame, - # display_size=(self.disp_w, self.disp_h), - # quality=self.quality, - # return_bytes=True, - # ) - # if not frame_bytes: - # self.queue.task_done() - # continue - - # # frame_bytes = jpeg_buf.tobytes() - # frame_len = len(frame_bytes) - # num_shms = len(self.handler.shms) - - # # Locate alternative ring memory locations away from browser client read operations - # forbidden_idx = [self.handler.ready_buffer_idx.value, self.handler.reader_active_idx.value] - # available_idx = [i for i in range(num_shms) if i not in forbidden_idx] - - # if not available_idx: - # # Fallback to structural ring increments if locks collide - # write_idx = (self.handler.ready_buffer_idx.value + 1) % num_shms - # else: - # write_idx = available_idx[0] - - # # Direct zero-copy commit straight to volatile RAM mappings - # shm_block = self.handler.shms[write_idx] - # shm_block.buf[:frame_len] = memoryview(frame_bytes) - - # # Update pipeline sync trackers across worker contexts - # self.handler.shm_frame_lengths[write_idx] = frame_len - # self.handler.ready_buffer_idx.value = write_idx - - # # Assign atomic sequence token identifiers safely - # self.handler.shared_details["last_id"] = frame_num - - # # Fire threading synchronization barriers to release blocked generator loops - # # self.handler.frame_ready_event.set() - # if hasattr(self.handler, "loop") and self.handler.loop is not None: - # self.handler.loop.call_soon_threadsafe(self.handler.frame_ready_event.set) - # else: - # # Fallback guard if the frame context hasn't registered a loop hook yet - # self.handler.frame_ready_event.set() - - # self.queue.task_done() - # except queue.Empty: - # continue - # except Exception as e: - # print(f"[ASYNC-DISPLAY-ERROR] Silent pool worker drop: {e}") - # traceback.print_exc() - # continue - - # def _write_loopv1(self): - # """Background daemon consumer that compresses matrices directly to /dev/shm.""" - # # Performance parameters to maintain strict BT.709 encoding constraints - # encode_param = [int(cv2.IMWRITE_JPEG_QUALITY), self.quality] - - # while self.running or not self.queue.empty(): - # try: - # item = self.queue.get(timeout=0.05) - # if item is None: - # break - - # display_frame, frame_num = item - # if self.handler is None or not self.handler.active: - # self.queue.task_done() - # continue - - # # Ensure image sizes perfectly correspond with standard API expectations - # if display_frame.shape[1] != self.disp_w or display_frame.shape[0] != self.disp_h: - # display_frame = cv2.resize(display_frame, (self.disp_w, self.disp_h), interpolation=cv2.INTER_NEAREST) - - # # Compress to highly packable, network-ready JPEG byte streams - # ret, jpeg_buf = cv2.imencode('.jpg', display_frame, encode_param) - # if not ret: - # self.queue.task_done() - # continue - - # frame_bytes = jpeg_buf.tobytes() - # frame_len = len(frame_bytes) - # num_shms = len(self.handler.shms) - - # # Locate alternative ring memory locations away from browser client read operations - # forbidden_idx = [self.handler.ready_buffer_idx.value, self.handler.reader_active_idx.value] - # available_idx = [i for i in range(num_shms) if i not in forbidden_idx] - - # if not available_idx: - # # Fallback to structural ring increments if locks collide - # write_idx = (self.handler.ready_buffer_idx.value + 1) % num_shms - # else: - # write_idx = available_idx[0] - - # # Direct zero-copy commit straight to volatile RAM mappings - # shm_block = self.handler.shms[write_idx] - # shm_block.buf[:frame_len] = frame_bytes - - # # Update pipeline sync trackers across worker contexts - # self.handler.shm_frame_lengths[write_idx] = frame_len - # self.handler.ready_buffer_idx.value = write_idx - - # # Assign atomic sequence token identifiers safely - # self.handler.shared_details["last_id"] = frame_num - - # # Fire threading synchronization barriers to release blocked generator loops - # # self.handler.frame_ready_event.set() - # if hasattr(self.handler, "loop") and self.handler.loop is not None: - # self.handler.loop.call_soon_threadsafe(self.handler.frame_ready_event.set) - # else: - # # Fallback guard if the frame context hasn't registered a loop hook yet - # self.handler.frame_ready_event.set() - - # self.queue.task_done() - # except queue.Empty: - # continue - # except Exception as e: - # print(f"[ASYNC-DISPLAY-ERROR] Failed streaming injection: {e}") - # continue - - def write_frame(self, display_frame, frame_num): - """Thread-safe entry hook to stash processed canvas items into the workspace.""" - # if not self.active: - # return - # try: - # # Drop structural allocations under pressure if the worker falls behind - # self.queue.put_nowait((display_frame, frame_num)) - # except queue.Full: - # pass - self.queue.put((display_frame, frame_num)) - - def release(self): - """Terminates internal consumers gracefully to ensure process convergence.""" - # self.active = False - self.running = False - self.queue.put(None) - if self.thread.is_alive(): - self.thread.join(timeout=1.0) - - -# class AsyncDisplayVideoWriter: -# """ -# Modified streaming writer based on AsyncVideoWriter layout. -# Sequentially pipes annotated matrices directly into Linux POSIX -# Shared Memory allocations without frame drop filters. -# """ -# def __init__(self, target_fps, display_size, quality=60): -# self.target_fps = float(target_fps) -# self.disp_w, self.disp_h = display_size -# self.quality = int(quality) - -# # Ingestion pipeline constructs mirroring AsyncVideoWriter -# self.queue = queue.Queue(maxsize=2) -# self.running = True -# self.handler = None - -# # Start the sequential background thread -# self.thread = threading.Thread(target=self._write_loop, daemon=True) -# self.thread.start() - -# def set_handler_context(self, handler_instance): -# """Binds the parent handler resource structures.""" -# self.handler = handler_instance - -# def _write_loop(self): -# encode_param = [int(cv2.IMWRITE_JPEG_QUALITY), self.quality] - -# while self.running: # or not self.queue.empty(): -# try: -# item = self.queue.get(timeout=0.05) -# if item is None: -# break - -# display_frame, frame_num = item -# if self.handler is None or not self.handler.active: -# self.queue.task_done() -# continue - -# # Ensure image matches standard spatial expectations layout safely -# if display_frame.shape[1] != self.disp_w or display_frame.shape[0] != self.disp_h: -# display_frame = cv2.resize( -# display_frame, (self.disp_w, self.disp_h), interpolation=cv2.INTER_NEAREST -# ) - -# # Compress to network-ready JPEG byte streams -# ret, jpeg_buf = cv2.imencode('.jpg', display_frame, encode_param) -# if not ret: -# self.queue.task_done() -# continue - -# frame_bytes = jpeg_buf.tobytes() -# frame_len = len(frame_bytes) -# num_shms = len(self.handler.shms) - -# # Sequential Ring Buffer Allocation Step -# write_idx = (self.handler.ready_buffer_idx.value + 1) % num_shms - -# # Commit straight to the volatile shared RAM mapping -# shm_block = self.handler.shms[write_idx] -# shm_block.buf[:frame_len] = memoryview(frame_bytes) - -# # Update lengths and index pointers first so the reader has data -# self.handler.shm_frame_lengths[write_idx] = frame_len -# self.handler.ready_buffer_idx.value = write_idx -# self.handler.mp_last_id.value = frame_num - -# # Flip the shared IPC flag to wake up the FastAPI generator -# self.handler.mp_frame_ready_flag.value = True - -# self.queue.task_done() - -# # if self.queue.empty(): -# # self.handler.mp_frame_ready_flag.value = False -# except queue.Empty: -# continue -# except Exception as e: -# print(f"[STREAM-WRITER-ERROR] Failed streaming injection: {e}") -# if 'item' in locals(): -# self.queue.task_done() -# continue - -# # def write_frame(self, frame, frame_num): -# # """Appends frames to the background delivery thread queue.""" -# # if self.running: -# # self.queue.put((frame, frame_num)) - -# # def release(self): -# # """Gracefully terminates and joins the background thread loop.""" -# # self.running = False -# # self.queue.put(None) -# # if self.thread.is_alive(): -# # self.thread.join() - -# def write_frame(self, frame, frame_num): -# """Thread-safe lossy queue ingestion.""" -# if not self.running: -# return -# try: -# # 2. 🔄 FIX: Use non-blocking insertions to prevent ThreadPool starvation -# self.queue.put_nowait((frame, frame_num)) -# except queue.Full: -# try: -# # Evict the old, stale frame to ensure real-time rendering continuity -# self.queue.get_nowait() -# self.queue.task_done() -# self.queue.put_nowait((frame, frame_num)) -# except Exception: -# pass - -# def release(self): -# self.running = False -# try: -# while not self.queue.empty(): -# self.queue.get_nowait() -# self.queue.task_done() -# except Exception: -# pass -# self.queue.put(None) - -# class AsyncDisplayVideoWriter: -# """ -# Lock-free sequential frame streaming bridge optimized for 8K pipelines. -# Directly targets the reverted FastAPI main.py frame_generator loop structures. -# """ -# def __init__(self, target_fps, display_size, quality=60): -# self.target_fps = float(target_fps) -# self.disp_w, self.disp_h = display_size -# self.quality = int(quality) - -# # Enforce a tight bounded queue to eliminate memory leaks and thread pool starvation -# self.queue = queue.Queue(maxsize=1) -# self.running = True -# self.handler = None - -# self.thread = threading.Thread(target=self._write_loop, daemon=True) -# self.thread.start() - -# def set_handler_context(self, handler_instance): -# """Binds the stream handler context to pass parameters across memory spaces.""" -# self.handler = handler_instance - -# def _write_loop(self): -# encode_param = [int(cv2.IMWRITE_JPEG_QUALITY), self.quality] - -# while self.running: -# try: -# # Controlled timeout prevents zombie threads during service re-engineering -# item = self.queue.get(timeout=0.02) -# if item is None: -# break - -# display_frame, frame_num = item -# if self.handler is None or not self.handler.active: -# self.queue.task_done() -# continue - -# # Enforce spatial aspect resolution constraints -# if display_frame.shape[1] != self.disp_w or display_frame.shape[0] != self.disp_h: -# display_frame = cv2.resize( -# display_frame, (self.disp_w, self.disp_h), interpolation=cv2.INTER_NEAREST -# ) - -# # Compress matrix to network-ready JPEGs -# ret, jpeg_buf = cv2.imencode('.jpg', display_frame, encode_param) -# if not ret: -# self.queue.task_done() -# continue - -# frame_bytes = jpeg_buf.tobytes() -# frame_len = len(frame_bytes) -# num_shms = len(self.handler.shms) - -# # Lockless round-robin step selection across the pre-allocated POSIX buffers -# write_idx = (self.handler.ready_buffer_idx.value + 1) % num_shms - -# # Commit bytes directly into volatile Linux shared RAM (/dev/shm) -# shm_block = self.handler.shms[write_idx] -# shm_block.buf[:frame_len] = memoryview(frame_bytes) - -# # --- ATOMIC METRICS UPDATES ALIGNED WITH REVERTED main.py --- -# self.handler.shm_frame_lengths[write_idx] = frame_len -# self.handler.ready_buffer_idx.value = write_idx - -# # Synchronize the Manager dict proxy that main.py parses on line 197! -# self.handler.shared_details["last_id"] = frame_num -# self.handler.mp_last_id.value = frame_num - -# # Thread-safely fire the asyncio.Event to wake up the web generator loop -# if hasattr(self.handler, "loop") and self.handler.loop is not None: -# self.handler.loop.call_soon_threadsafe(self.handler.frame_ready_event.set) -# else: -# self.handler.frame_ready_event.set() - -# self.queue.task_done() -# except queue.Empty: -# continue -# except Exception as e: -# print(f"[STREAM-WRITER-ERROR] Frame streaming execution failed: {e}", flush=True) -# if 'item' in locals(): -# self.queue.task_done() -# continue - -# def write_frame(self, frame, frame_num): -# """Appends frames to the background delivery thread using non-blocking evictions.""" -# if not self.running: -# return -# try: -# self.queue.put_nowait((frame, frame_num)) -# except queue.Full: -# try: -# # Evict the old, stale frame slot to prioritize fresh real-time matrices -# self.queue.get_nowait() -# self.queue.task_done() -# self.queue.put_nowait((frame, frame_num)) -# except Exception: -# pass - -# def release(self): -# """Gracefully drains workers and joins the tracking daemon loops.""" -# self.running = False -# try: -# while not self.queue.empty(): -# self.queue.get_nowait() -# self.queue.task_done() -# except Exception: -# pass -# self.queue.put(None) - - class AsyncDisplayVideoWriter: """ Lock-free single-element buffer optimized for 8K pipelines. @@ -1209,90 +702,90 @@ def get_bb_overlay(display_frame, metadata_or_bbs, scale_display, disp_size): return display_frame -def test_rendering_worker(queue, display_size, out_path, target_fps): - """ - Ultra-efficient video saver for TEST_MODE. - Pipes raw BGR frames directly into an internal FFmpeg engine subshell. - """ - disp_w, disp_h = display_size - - # Construct optimized MPEG-4 parameters to match main pipeline architecture - ffmpeg_cmd = [ - "ffmpeg", - "-y", - "-probesize", - "32", - "-analyzeduration", - "0", - "-f", - "rawvideo", - "-pix_fmt", - "bgr24", - "-s", - f"{disp_w}x{disp_h}", - "-r", - str(int(target_fps)), - "-i", - "-", - "-c:v", - "libx264", - "-crf", - "23", - # "-c:v", "mpeg4", # Or "libx264" if you prefer H.264 - # "-qscale:v", "4", # Quality scale (use -crf 23 if using libx264) - str(out_path), - ] - - # Spawn background daemon process - proc = subprocess.Popen( - ffmpeg_cmd, - stdin=subprocess.PIPE, - stdout=subprocess.DEVNULL, - stderr=subprocess.DEVNULL, - bufsize=10**7, - ) +# def test_rendering_worker(queue, display_size, out_path, target_fps): +# """ +# Ultra-efficient video saver for TEST_MODE. +# Pipes raw BGR frames directly into an internal FFmpeg engine subshell. +# """ +# disp_w, disp_h = display_size - try: - while True: - item = queue.get() - if item is None: # Sentinel value to drain and close the process - break +# # Construct optimized MPEG-4 parameters to match main pipeline architecture +# ffmpeg_cmd = [ +# "ffmpeg", +# "-y", +# "-probesize", +# "32", +# "-analyzeduration", +# "0", +# "-f", +# "rawvideo", +# "-pix_fmt", +# "bgr24", +# "-s", +# f"{disp_w}x{disp_h}", +# "-r", +# str(int(target_fps)), +# "-i", +# "-", +# "-c:v", +# "libx264", +# "-crf", +# "23", +# # "-c:v", "mpeg4", # Or "libx264" if you prefer H.264 +# # "-qscale:v", "4", # Quality scale (use -crf 23 if using libx264) +# str(out_path), +# ] + +# # Spawn background daemon process +# proc = subprocess.Popen( +# ffmpeg_cmd, +# stdin=subprocess.PIPE, +# stdout=subprocess.DEVNULL, +# stderr=subprocess.DEVNULL, +# bufsize=10**7, +# ) - display_frame, frameNum, metadata_or_bbs, class_list = item - # display_frame = np.ascontiguousarray(display_frame) - scale_display_x = disp_w / 640 - scale_display_y = disp_h / 640 - - # --- Draw Detection Overlays --- - if isinstance(metadata_or_bbs, dict): - # Object Mode (YOLO Structs) - display_frame = get_metadata_overlay( - display_frame, - metadata_or_bbs, - class_list, - (scale_display_x, scale_display_y), - (disp_w, disp_h), - ) +# try: +# while True: +# item = queue.get() +# if item is None: # Sentinel value to drain and close the process +# break - elif metadata_or_bbs is not None: - # # Motion / Smart Filtering Overlay Path - display_frame = get_bb_overlay( - display_frame, - metadata_or_bbs, - (scale_display_x, scale_display_y), - (disp_w, disp_h), - ) +# display_frame, frameNum, metadata_or_bbs, class_list = item +# # display_frame = np.ascontiguousarray(display_frame) +# scale_display_x = disp_w / 640 +# scale_display_y = disp_h / 640 + +# # --- Draw Detection Overlays --- +# if isinstance(metadata_or_bbs, dict): +# # Object Mode (YOLO Structs) +# display_frame = get_metadata_overlay( +# display_frame, +# metadata_or_bbs, +# class_list, +# (scale_display_x, scale_display_y), +# (disp_w, disp_h), +# ) + +# elif metadata_or_bbs is not None: +# # # Motion / Smart Filtering Overlay Path +# display_frame = get_bb_overlay( +# display_frame, +# metadata_or_bbs, +# (scale_display_x, scale_display_y), +# (disp_w, disp_h), +# ) - # Pipe continuous raw contiguous memory block directly into kernel filesystem handles - proc.stdin.write(np.ascontiguousarray(display_frame).tobytes()) - # queue.task_done() +# # Pipe continuous raw contiguous memory block directly into kernel filesystem handles +# proc.stdin.write(np.ascontiguousarray(display_frame).tobytes()) +# # queue.task_done() - except Exception as e: - print(f"[TEST-WORKER-EXCEPTION] Video compilation error: {e}") - finally: - if proc.stdin: - proc.stdin.close() - proc.wait() +# except Exception as e: +# print(f"[TEST-WORKER-EXCEPTION] Video compilation error: {e}") +# finally: +# if proc.stdin: +# proc.stdin.close() +# proc.wait() class DeviceBaseHandler: @@ -2423,7 +1916,7 @@ def stop(self): self.status = "DONE" self._is_stopped = True print( - "[TEST HARNESS] Teardown complete. Releasing session cleanly.\n", + "[STOPPING] Teardown complete. Releasing session cleanly.\n", flush=True, ) @@ -3870,263 +3363,6 @@ def frame2output(self, device_frame, frame_num, metadata_or_bbs, class_list): traceback.print_exc() # return - def frame2outputv3(self, display_frame, frame_num, metadata=None, class_list=None): - """Processes and delivers operational live-mode matrices safely down to POSIX shared memory slots.""" - - # Ensure memory formats are fully detached from internal VRAM contexts - if hasattr(display_frame, "is_cuda") and display_frame.is_cuda: - display_frame = display_frame.cpu().numpy() - elif isinstance(display_frame, torch.Tensor): - display_frame = display_frame.detach().cpu().numpy() - - # 🔄 FIX: Invert colors from RGB to structural BGR layout to resolve the blue tint - try: - display_frame = cv2.cvtColor(display_frame, cv2.COLOR_RGB2BGR) - except Exception: - pass # Safety fallback guard if the tensor layout was already BGR format - - if hasattr(display_frame, "copy"): - clean_canvas = display_frame.copy() - else: - clean_canvas = np.ascontiguousarray(display_frame) - - if hasattr(self, "async_writer") and self.async_writer is not None: - self.async_writer.write_frame(clean_canvas, frame_num) - - def frame2outputv2( - self, - device_frame, - frameNum, - metadata_or_bbs, - class_list, - metrics, - ): - scale_display_x = self.disp_w / 640 - scale_display_y = self.disp_h / 640 - - if self.device_input == "cuda" and torch.is_tensor(device_frame): - # 2. Fast Inline VRAM Downscaling into our static memory slot - # Reshape to (Batch, Channel, Height, Width) seamlessly without duplicating data - gpu_tensor = device_frame[None, :].permute(0, 3, 1, 2).float() - - resized_tensor = torch.nn.functional.interpolate( - gpu_tensor, - size=(self.disp_h, self.disp_w), - mode="nearest", - ) - - # CONVERTS TO CPU EARLIER (WORKS but lowers fps) - # hwc_byte_tensor = resized_tensor.squeeze(0).permute(1, 2, 0).byte() - # cpu_tensor = hwc_byte_tensor.cpu() - # bgr_contiguous = cpu_tensor.contiguous() - - # Using copy_() avoids creating any runtime allocations or memory-stride drift. - self.static_gpu_byte_bchw.copy_(resized_tensor.byte()) - - # Safely reshape the pre-allocated, locked GPU memory layout back to standard HWC array topology. - # Since the underlying array layout is strictly contiguous, this permute is guaranteed - # to be zero-copy on the GPU and free from memory race stalls. - bgr_contiguous = self.static_gpu_byte_bchw.squeeze(0).permute(1, 2, 0) - - # 1. Grab the current free pinned slot tracking variables from your reader - d2h_idx = self.reader.d2h_selector - pinned_tensor_buf = self.reader.d2h_buffers[d2h_idx] - - # c_idx = self.canvas_selector - # current_canvas = self.static_host_canvases[c_idx] - - # host_tensor_view = torch.as_tensor(current_canvas, device="cpu") - - # 3. Non-blocking asynchronous PCIe DMA Download directly into our page-locked canvas - with torch.cuda.stream(self.reader.download_stream): - # pinned_tensor = torch.from_numpy(current_canvas).cuda() - pinned_tensor_buf.copy_(bgr_contiguous, non_blocking=True) - - # Synchronize only the side download stream layout channel - self.reader.download_stream.synchronize() - - cpu_360p_frame = self.reader.d2h_numpys[d2h_idx] - - # 5. Non-Blocking Push straight to your background AsyncVideoWriter thread pool - # We pass a direct .copy() slice so the hot loop can instantly reuse the pinned ring buffer - display_frame = np.array(cpu_360p_frame, copy=True, order="C") - - if display_frame is not None and display_frame.shape[-1] == 3: - display_frame = cv2.cvtColor(display_frame, cv2.COLOR_RGB2BGR) - - # --- Draw Detection Overlays --- - if isinstance(metadata_or_bbs, dict): - # Object Mode (YOLO Structs) - display_frame = get_metadata_overlay( - display_frame, - metadata_or_bbs, - class_list, - (scale_display_x, scale_display_y), - (self.disp_w, self.disp_h), - is_bgr=True, - ) - - elif metadata_or_bbs is not None: - # # Motion / Smart Filtering Overlay Path - display_frame = get_bb_overlay( - display_frame, - metadata_or_bbs, - (scale_display_x, scale_display_y), - (self.disp_w, self.disp_h), - ) - if hasattr(display_frame, "copy"): - clean_canvas = display_frame.copy() - else: - clean_canvas = np.ascontiguousarray(display_frame) - self.async_writer.write_frame(clean_canvas, frameNum) - # self.canvas_selector = 1 - self.canvas_selector - self.reader.d2h_selector = 1 - self.reader.d2h_selector - - else: - # Reusable baseline track for CPU execution mappings - display_frame = cv2.resize( - device_frame, - (self.disp_w, self.disp_h), - interpolation=cv2.INTER_NEAREST, - ) - # if metrics["bbs"] is not None: - # for box in metrics["bbs"]: - # cv2.rectangle(cpu_resized, (int(box[0]), int(box[1])), (int(box[2]), int(box[3])), (0, 255, 0), 2) - # --- Draw Detection Overlays --- - if isinstance(metadata_or_bbs, dict): - # Object Mode (YOLO Structs) - display_frame = get_metadata_overlay( - display_frame, - metadata_or_bbs, - class_list, - (scale_display_x, scale_display_y), - (self.disp_w, self.disp_h), - is_bgr=True, - ) - - elif metadata_or_bbs is not None: - # # Motion / Smart Filtering Overlay Path - display_frame = get_bb_overlay( - display_frame, - metadata_or_bbs, - (scale_display_x, scale_display_y), - (self.disp_w, self.disp_h), - ) - self.async_writer.write_frame(display_frame, frameNum) - - return - - def frame2outputv1( - self, - device_frame, - frameNum, - data_to_draw, - class_list, - ): - # scale_display_x = self.disp_w / 640 - # scale_display_y = self.disp_h / 640 - - if self.device_input == "cuda" and torch.is_tensor(device_frame): - # 2. Fast Inline VRAM Downscaling into our static memory slot - # Reshape to (Batch, Channel, Height, Width) seamlessly without duplicating data - gpu_tensor = device_frame[None, :].permute(0, 3, 1, 2).float() - - resized_tensor = torch.nn.functional.interpolate( - gpu_tensor, - size=(self.disp_h, self.disp_w), - mode="nearest", - ) - - # CONVERTS TO CPU EARLIER (WORKS but lowers fps) - # hwc_byte_tensor = resized_tensor.squeeze(0).permute(1, 2, 0).byte() - # cpu_tensor = hwc_byte_tensor.cpu() - # bgr_contiguous = cpu_tensor.contiguous() - - # Using copy_() avoids creating any runtime allocations or memory-stride drift. - self.static_gpu_byte_bchw.copy_(resized_tensor.byte()) - - # Safely reshape the pre-allocated, locked GPU memory layout back to standard HWC array topology. - # Since the underlying array layout is strictly contiguous, this permute is guaranteed - # to be zero-copy on the GPU and free from memory race stalls. - bgr_contiguous = self.static_gpu_byte_bchw.squeeze(0).permute(1, 2, 0) - - # 1. Grab the current free pinned slot tracking variables from your reader - d2h_idx = self.reader.d2h_selector - pinned_tensor_buf = self.reader.d2h_buffers[d2h_idx] - - # c_idx = self.canvas_selector - # current_canvas = self.static_host_canvases[c_idx] - - # host_tensor_view = torch.as_tensor(current_canvas, device="cpu") - - # 3. Non-blocking asynchronous PCIe DMA Download directly into our page-locked canvas - with torch.cuda.stream(self.reader.download_stream): - # pinned_tensor = torch.from_numpy(current_canvas).cuda() - pinned_tensor_buf.copy_(bgr_contiguous, non_blocking=True) - - # Synchronize only the side download stream layout channel - self.reader.download_stream.synchronize() - - cpu_360p_frame = self.reader.d2h_numpys[d2h_idx] - print( - f"[FASTAPI-TRACE A] Frame #{frameNum} downloaded from GPU. Shape: {cpu_360p_frame.shape if cpu_360p_frame is not None else 'NONE'}", - flush=True, - ) - # Explicitly update shared state indicators so main.py can map the buffer - self.ready_buffer_idx.value = d2h_idx - # self.shared_details["last_id"] = frameNum - - # 5. Non-Blocking Push straight to your background AsyncVideoWriter thread pool - # We pass a direct .copy() slice so the hot loop can instantly reuse the pinned ring buffer - display_frame = np.array(cpu_360p_frame, copy=True, order="C") - - if display_frame is not None and display_frame.shape[-1] == 3: - display_frame = cv2.cvtColor(display_frame, cv2.COLOR_RGB2BGR) - - self.reader.d2h_selector = 1 - self.reader.d2h_selector - - else: - display_frame = cv2.resize( - device_frame, - (self.disp_w, self.disp_h), - interpolation=cv2.INTER_NEAREST, - ) - # disp_frame = np.copy( - # tensor2opencv(cpu_resized, self.config.device_input, is_bgr=True) - # ) - - # PUSH FRAME UNCONDITIONALLY: Ensures the test encoder gets raw frame tokens - try: - if ( - hasattr(self, "render_queue") - and getattr(self, "render_queue", None) is not None - # and not self.render_queue.full() - ): - print( - f"[FASTAPI-TRACE B] Frame #{frameNum} pushing to render_queue. Current Q Size: {self.render_queue.qsize()}", - flush=True, - ) - self.render_queue.put_nowait( # put( put_nowait - ( - display_frame, - frameNum, - data_to_draw, - class_list, - ) - ) - print( - f"[FASTAPI-TRACE C] Frame #{frameNum} successfully enqueued into render_queue.", - flush=True, - ) - if hasattr(self, "signal_queue") and self.signal_queue is not None: - try: - # Non-blocking push to unstick main.py - self.signal_queue.put_nowait((True, frameNum)) - except queue.Full: - pass - except queue.Full: - pass - def pipeline_fn( self, device_frame, diff --git a/fastapi/include/utils.py b/fastapi/include/utils.py index f843766..a379a23 100644 --- a/fastapi/include/utils.py +++ b/fastapi/include/utils.py @@ -3,7 +3,6 @@ import os import queue import subprocess -import threading import time import traceback from dataclasses import dataclass @@ -274,264 +273,6 @@ def return_connection(self, conn): self.pool.put(conn) -class AsyncVideoWriter: - """Handles disk saving operations asynchronously on a background thread.""" - - def __init__(self, path, fourcc, fps, size): - self.writer = cv2.VideoWriter(path, fourcc, fps, size) - self.queue = queue.Queue() - self.running = True - self.thread = threading.Thread(target=self._write_loop, daemon=True) - self.thread.start() - - def _write_loop(self): - while self.running or not self.queue.empty(): - try: - frame = self.queue.get(timeout=0.05) - if frame is None: - break - self.writer.write(frame) - self.queue.task_done() - except queue.Empty: - continue - - def write_frame(self, frame): - self.queue.put(frame) - - def release(self): - self.running = False - self.thread.join() - self.writer.release() - - -# class AsyncDisplayWriterv1: -# """Handles disk saving operations asynchronously on a background thread.""" - -# def __init__(self, path, fourcc, fps, size): -# self.writer = cv2.VideoWriter(path, fourcc, fps, size) -# self.queue = queue.Queue() -# self.running = True -# self.thread = threading.Thread(target=self._write_loop, daemon=True) -# self.thread.start() - -# def _write_loop(self): -# while self.running or not self.queue.empty(): -# try: -# frame = self.queue.get(timeout=0.05) -# self.writer.write(frame) -# self.queue.task_done() -# except queue.Empty: -# continue - -# def write_frame(self, frame): -# self.queue.put(frame) - -# def release(self): -# self.running = False -# self.thread.join() -# self.writer.release() - - -class AsyncDisplayWriter: - """ - Ultra-efficient frame-delivery client for live web streaming. - Pipes annotated BGR numpy matrices directly into matching Linux - POSIX Shared Memory allocation slots to prevent thread context-switching. - """ - - def __init__(self, target_fps, display_size, quality=60): - self.target_fps = float(target_fps) - self.disp_w, self.disp_h = display_size - self.quality = int(quality) - - # Ingestion pipeline constructs - self.queue = queue.Queue(maxsize=10) - self.running = True - - # State indicators requested by the FastAPI handler endpoints - self.handler = None - self.thread = threading.Thread(target=self._write_loop, daemon=True) - self.thread.start() - - def set_handler_context(self, handler_instance): - """Binds the active handler resource structures to secure index barriers.""" - self.handler = handler_instance - - def _write_loop(self): - # encode_param = [int(cv2.IMWRITE_JPEG_QUALITY), self.quality] - while self.running or not self.queue.empty(): - try: - item = self.queue.get(timeout=0.05) - if item is None: - break - display_frame, frame_num = item - # self.writer.write(frame) - # Compress to highly packable, network-ready JPEG byte streams - # ret, jpeg_buf = cv2.imencode('.jpg', display_frame, encode_param) - # if not ret: - # self.queue.task_done() - # continue - if self.handler is None: # or not self.handler.active: - self.queue.task_done() - continue - - if frame_num > self.handler.shared_details["last_id"]: - frame_bytes = get_display_frame_in_bytes( - display_frame, - display_size=(self.disp_w, self.disp_h), - quality=self.quality, - return_bytes=True, - ) - if not frame_bytes: - self.queue.task_done() - continue - - # frame_bytes = jpeg_buf.tobytes() - frame_len = len(frame_bytes) - num_shms = len(self.handler.shms) - - # Locate alternative ring memory locations away from browser client read operations - forbidden_idx = [ - self.handler.ready_buffer_idx.value, - self.handler.reader_active_idx.value, - ] - available_idx = [ - i for i in range(num_shms) if i not in forbidden_idx - ] - - if not available_idx: - # Fallback to structural ring increments if locks collide - write_idx = (self.handler.ready_buffer_idx.value + 1) % num_shms - else: - write_idx = available_idx[0] - - # Direct zero-copy commit straight to volatile RAM mappings - shm_block = self.handler.shms[write_idx] - shm_block.buf[:frame_len] = memoryview(frame_bytes) - - # Update pipeline sync trackers across worker contexts - self.handler.shm_frame_lengths[write_idx] = frame_len - self.handler.ready_buffer_idx.value = write_idx - - # Assign atomic sequence token identifiers safely - self.handler.shared_details["last_id"] = frame_num - - # Fire threading synchronization barriers to release blocked generator loops - # self.handler.frame_ready_event.set() - if hasattr(self.handler, "loop") and self.handler.loop is not None: - self.handler.loop.call_soon_threadsafe( - self.handler.frame_ready_event.set - ) - else: - # Fallback guard if the frame context hasn't registered a loop hook yet - self.handler.frame_ready_event.set() - - self.queue.task_done() - except queue.Empty: - continue - except Exception as e: - print(f"[ASYNC-DISPLAY-ERROR] Silent pool worker drop: {e}") - traceback.print_exc() - continue - - def _write_loopv1(self): - """Background daemon consumer that compresses matrices directly to /dev/shm.""" - # Performance parameters to maintain strict BT.709 encoding constraints - encode_param = [int(cv2.IMWRITE_JPEG_QUALITY), self.quality] - - while self.running or not self.queue.empty(): - try: - item = self.queue.get(timeout=0.05) - if item is None: - break - - display_frame, frame_num = item - if self.handler is None or not self.handler.active: - self.queue.task_done() - continue - - # Ensure image sizes perfectly correspond with standard API expectations - if ( - display_frame.shape[1] != self.disp_w - or display_frame.shape[0] != self.disp_h - ): - display_frame = cv2.resize( - display_frame, - (self.disp_w, self.disp_h), - interpolation=cv2.INTER_NEAREST, - ) - - # Compress to highly packable, network-ready JPEG byte streams - ret, jpeg_buf = cv2.imencode(".jpg", display_frame, encode_param) - if not ret: - self.queue.task_done() - continue - - frame_bytes = jpeg_buf.tobytes() - frame_len = len(frame_bytes) - num_shms = len(self.handler.shms) - - # Locate alternative ring memory locations away from browser client read operations - forbidden_idx = [ - self.handler.ready_buffer_idx.value, - self.handler.reader_active_idx.value, - ] - available_idx = [i for i in range(num_shms) if i not in forbidden_idx] - - if not available_idx: - # Fallback to structural ring increments if locks collide - write_idx = (self.handler.ready_buffer_idx.value + 1) % num_shms - else: - write_idx = available_idx[0] - - # Direct zero-copy commit straight to volatile RAM mappings - shm_block = self.handler.shms[write_idx] - shm_block.buf[:frame_len] = frame_bytes - - # Update pipeline sync trackers across worker contexts - self.handler.shm_frame_lengths[write_idx] = frame_len - self.handler.ready_buffer_idx.value = write_idx - - # Assign atomic sequence token identifiers safely - self.handler.shared_details["last_id"] = frame_num - - # Fire threading synchronization barriers to release blocked generator loops - # self.handler.frame_ready_event.set() - if hasattr(self.handler, "loop") and self.handler.loop is not None: - self.handler.loop.call_soon_threadsafe( - self.handler.frame_ready_event.set - ) - else: - # Fallback guard if the frame context hasn't registered a loop hook yet - self.handler.frame_ready_event.set() - - self.queue.task_done() - except queue.Empty: - continue - except Exception as e: - print(f"[ASYNC-DISPLAY-ERROR] Failed streaming injection: {e}") - continue - - def write_frame(self, display_frame, frame_num): - """Thread-safe entry hook to stash processed canvas items into the workspace.""" - # if not self.active: - # return - # try: - # # Drop structural allocations under pressure if the worker falls behind - # self.queue.put_nowait((display_frame, frame_num)) - # except queue.Full: - # pass - self.queue.put((display_frame, frame_num)) - - def release(self): - """Terminates internal consumers gracefully to ensure process convergence.""" - # self.active = False - self.running = False - self.queue.put(None) - if self.thread.is_alive(): - self.thread.join(timeout=1.0) - - ERR_KEYWORDS = [ "timeout", "null search iterator", diff --git a/fastapi/tests/test_detections.py b/fastapi/tests/test_detections.py index 271a15a..eec1120 100644 --- a/fastapi/tests/test_detections.py +++ b/fastapi/tests/test_detections.py @@ -41,6 +41,7 @@ THRESHOLD_VALUE, ) from include.handlers import ( + AsyncVideoWriter, CPUStreamHandler, DeviceBaseHandler, GPUStreamHandler, @@ -105,34 +106,6 @@ def fps_comparison_chart(chart_path, results, fps_key="Pipeline FPS (Video frame print("Skipping chart generation: error occurred.") -class AsyncVideoWriter: - """Handles disk saving operations asynchronously on a background thread.""" - - def __init__(self, path, fourcc, fps, size): - self.writer = cv2.VideoWriter(path, fourcc, fps, size) - self.queue = queue.Queue() - self.running = True - self.thread = threading.Thread(target=self._write_loop, daemon=True) - self.thread.start() - - def _write_loop(self): - while self.running or not self.queue.empty(): - try: - frame = self.queue.get(timeout=0.05) - self.writer.write(frame) - self.queue.task_done() - except queue.Empty: - continue - - def write_frame(self, frame): - self.queue.put(frame) - - def release(self): - self.running = False - self.thread.join() - self.writer.release() - - class DummyProcess: def start(self): pass @@ -179,25 +152,27 @@ def setup_context(request): else: request.cls.name = "rtsp" request.cls.is_rtsp = True - # request.cls.test_duration_mins = float(os.getenv("TEST_DURATION_MINS", 0.25)) model_name = os.getenv("MODEL_NAME", MODEL_NAME_DEFAULT) request.cls.result_dir = ( test_dir / f"{current_test_filename}_results/{model_name}" / request.cls.name ) request.cls.result_dir.mkdir(parents=True, exist_ok=True) + + # Benchmark statistics request.cls.benchmarks = [] request.cls.csv_filename = ( - f"pipeline_benchmarks_{model_name}_{request.cls.name}.csv" + f"detections_benchmarks_{model_name}_{request.cls.name}.csv" ) request.cls.csv_path = request.cls.result_dir / request.cls.csv_filename request.cls.active = True request.cls.active_streams = {} + # RUN ALL PARAMETERIZED TESTS ---------------------------------------- yield - # Summarize Benchmarks + # FINAL CSV EXPORT -------------------------------------------------- if request.cls.benchmarks: # Filter and exclude rows that were interrupted or failed initialization due to an early pytest skip request.cls.benchmarks = [ @@ -221,6 +196,7 @@ def setup_context(request): row["Pipeline Speedup vs CPU"] = "Baseline (CPU)" keys = results[0].keys() + with open(str(request.cls.csv_path), "w", newline="") as f: dict_writer = csv.DictWriter(f, fieldnames=keys) dict_writer.writeheader() @@ -270,6 +246,11 @@ def each_test_setup(request): detection_type = request.node.callspec.params.get("detection_type") sf_enabled = request.node.callspec.params.get("sf_enabled") + if detection_type == "motion" and not sf_enabled: + pytest.skip( + "Pure YOLO mode is structurally invalid for detection_type 'motion'.\n" + ) + test_class_self._testMethodName = ( f"sf_{detection_type}_{device}" if sf_enabled @@ -277,12 +258,13 @@ def each_test_setup(request): ) # video_output_name = f"{test_class_self._testMethodName}_detections_output.mp4" - vid_dir = test_class_self.result_dir / "results" + vid_dir = test_class_self.result_dir / device vid_dir.mkdir(parents=True, exist_ok=True) # Handler.__init__ (remaining items) # 1. Re-initialize a fresh configuration object test_class_self.config = PipelineConfig( + SHARED_OUTPUT=str(test_class_self.result_dir), CUSTOM_MODEL_FLAG=os.getenv("CUSTOM_MODEL_FLAG", CUSTOM_MODEL_FLAG_DEFAULT), DEVICE=device.upper(), OMIT_DETECTIONS_FLAG=True, @@ -298,7 +280,7 @@ def each_test_setup(request): # test_video_output_path = os.path.join(str(vid_dir), video_output_name) os.environ["TEST_SUITE_RENDER_DIR"] = str(vid_dir) - test_class_self.config.SHARED_OUTPUT = str(test_class_self.result_dir) + # test_class_self.config.SHARED_OUTPUT = str(test_class_self.result_dir) # test_class_self.disp_w, test_class_self.disp_h = (640, 360) test_class_self.disp_w, test_class_self.disp_h = ( test_class_self.config.DISPLAY_FRAME_SIZE @@ -598,10 +580,10 @@ class TestSmartFilteringDetections: @pytest.mark.parametrize("detection_type", ["motion", "object"]) def test_detections(self, device, sf_enabled, detection_type): """Unified test runner for all configurations.""" - if detection_type == "motion" and not sf_enabled: - pytest.skip( - "Pure YOLO mode is structurally invalid for detection_type 'motion'." - ) + # if detection_type == "motion" and not sf_enabled: + # pytest.skip( + # "Pure YOLO mode is structurally invalid for detection_type 'motion'.\n" + # ) self.duration_target = 30 @@ -650,15 +632,15 @@ def setup_threads(self): short_name = "rtsp" else: short_name = Path(self.source).stem - video_output_name = f"{self._testMethodName}_{short_name}_{self.device}.mp4" + video_output_name = f"{self._testMethodName}_{short_name}.mp4" out_path = os.path.join(test_dir, video_output_name) self.output_path = ( out_path # f"{self.config.SHARED_OUTPUT}/{short_name}_{self.device}.mp4" ) - log_to_logger( - f"[TEST MODE] Detection results saved to: {out_path}", level="info" - ) + # log_to_logger( + # f"[TEST MODE] Detection results saved to: {out_path}", level="info" + # ) # ===================================================================== # DYNAMIC THREAD TARGET REDIRECTION @@ -692,6 +674,9 @@ def setup_threads(self): (self.disp_w, self.disp_h), ) # self.async_writer = None + log_to_logger( + f"[TEST MODE] Detection results saved to: {self.output_path}", level="info" + ) def start(self): """ diff --git a/fastapi/tests/test_model.py b/fastapi/tests/test_model.py index efd8428..ffdc3bd 100644 --- a/fastapi/tests/test_model.py +++ b/fastapi/tests/test_model.py @@ -1,10 +1,12 @@ import argparse import csv import gc +import inspect import logging import os import sys import time +import types from pathlib import Path import pytest @@ -18,7 +20,11 @@ MODEL_NAME_DEFAULT, THRESHOLD_VALUE, ) -from include.handlers import DeviceBaseHandler +from include.handlers import ( + CPUStreamHandler, + DeviceBaseHandler, + GPUStreamHandler, +) from include.models import get_model from include.utils import PipelineConfig @@ -47,37 +53,42 @@ def setup_context(request): main_path = test_dir.parent video_dir = main_path / "inputs" - VIDEO_FILENAME = os.getenv("VIDEO_FILENAME", "anduril_swarm_8K.mp4") - if video_dir.exists(): - request.cls.video_path = video_dir / VIDEO_FILENAME + request.cls._shared_model = None + request.cls._shared_model_path = None + request.cls._shared_model_device = None + request.cls._shared_model_sf_enabled = None + + request.cls.source = os.getenv("VIDEO_FILENAME", "anduril_swarm_8K.mp4") + is_rtsp = "rtsp://" in request.cls.source + if not is_rtsp: + VIDEO_FILENAME = request.cls.source + if video_dir.exists(): + vid_source = video_dir / VIDEO_FILENAME + else: + video_dir = Path("/watch_dir") + vid_source = video_dir / VIDEO_FILENAME + + assert vid_source.exists() + request.cls.source = str(vid_source) + request.cls.name = vid_source.stem + request.cls.is_rtsp = False else: - video_dir = Path("/watch_dir") - request.cls.video_path = video_dir / VIDEO_FILENAME + request.cls.name = "rtsp" + request.cls.is_rtsp = True # Add any shared state to the class model_name = os.getenv("MODEL_NAME", MODEL_NAME_DEFAULT) - request.cls.result_dir = ( - test_dir / f"{current_test_filename}_results/{request.cls.video_path.stem}" - ) + request.cls.result_dir = test_dir / f"{current_test_filename}_results/{model_name}" request.cls.result_dir.mkdir(parents=True, exist_ok=True) # Benchmark statistics request.cls.benchmarks = [] - request.cls.csv_filename = ( - f"model_benchmarks_{model_name}_{request.cls.video_path.stem}.csv" - ) + request.cls.csv_filename = f"model_benchmarks_{request.cls.name}.csv" request.cls.csv_path = request.cls.result_dir / request.cls.csv_filename # Initialize class vars - request.cls.name = request.cls.video_path.stem - request.cls.source = str(request.cls.video_path) - request.cls.is_rtsp = str(request.cls.source).startswith("rtsp:/") request.cls.active = True request.cls.active_streams = {} - request.cls._shared_model = None - request.cls._shared_model_path = None - request.cls._shared_model_device = None - request.cls._shared_model_sf_enabled = None # RUN ALL PARAMETERIZED TESTS ---------------------------------------- yield @@ -98,8 +109,6 @@ def setup_context(request): @pytest.fixture(autouse=True) def each_test_setup(request): test_class_self = request.instance - - # setUp LOGIC -------------------------------------------------- if torch.cuda.is_available(): torch.cuda.synchronize() @@ -107,17 +116,17 @@ def each_test_setup(request): os.environ["DEVICE"] = device detection_type = "object" # request.node.callspec.params.get("detection_type") sf_enabled = False # request.node.callspec.params.get("sf_enabled") + model_name = os.getenv("MODEL_NAME", MODEL_NAME_DEFAULT) test_class_self._testMethodName = f"{model_name}_{detection_type}_{device}" - render_dir = test_class_self.result_dir / f"{test_class_self._testMethodName}" + render_dir = test_class_self.result_dir / f"{device}" render_dir.mkdir(exist_ok=True) + test_class_self.config = PipelineConfig( # GENERAL SHARED_OUTPUT=render_dir, # os.getenv("SHARED_OUTPUT",SHARED_OUTPUT_DEFAULT), - CUSTOM_MODEL_FLAG=os.getenv( - "CUSTOM_MODEL_FLAG", CUSTOM_MODEL_FLAG_DEFAULT - ), # True, + CUSTOM_MODEL_FLAG=os.getenv("CUSTOM_MODEL_FLAG", CUSTOM_MODEL_FLAG_DEFAULT), DEVICE=device.upper(), OMIT_DETECTIONS_FLAG=True, TEST_MODE=False, @@ -146,9 +155,47 @@ def each_test_setup(request): test_class_self.config.MODEL_W, ] + # Resolve concrete handler class type + HandlerClass = GPUStreamHandler if device == "gpu" else CPUStreamHandler + # HandlerClass.pipeline_fn = test_class_self.__class__.pipeline_fn + + # Dynamically re-bind backend methods to this execution instance + handler_classes = [HandlerClass, DeviceBaseHandler] + all_method_names = set() + + for cls in handler_classes: + for name, attr in inspect.getmembers(cls, predicate=inspect.isfunction): + all_method_names.add(name) + + for method_name in all_method_names: + source_obj = ( + HandlerClass if hasattr(HandlerClass, method_name) else DeviceBaseHandler + ) + if hasattr(source_obj, method_name): + raw_func = getattr(source_obj, method_name) + if ( + not hasattr(test_class_self.__class__, method_name) + or method_name == "pipeline_fn" + ): + setattr( + test_class_self, + method_name, + types.MethodType(raw_func, test_class_self), + ) + + # 3. FORCE NATIVE PIPELINE PROVISIONING test_class_self.setup_reader( test_class_self.config.TARGET_FPS, test_class_self.config.CLIP_DURATION ) + test_class_self.initialize_variables() + test_class_self.setup_model(None) + test_class_self.prepare_pipeline() + + # test_class_self.run _realtime_inference = types.MethodType( + # test_class_self.__class__.run_realtime_inference, test_class_self + # ) + + test_class_self.setup_threads() # RUN PARAMETERIZED TEST ---------------------------------------- yield @@ -158,6 +205,8 @@ def each_test_setup(request): f"\n--- [TearDown] Memory Before Cleanup ({test_class_self._testMethodName}) ---" ) + # test_class_self.stop() + # Nullify the model reference to trigger automatic cleanup if hasattr(test_class_self, "model") and test_class_self.model is not None: # Check if it's an Ultralytics model with a predictor @@ -171,9 +220,9 @@ def each_test_setup(request): test_class_self.model = None # Clear the singleton references to force a reload - TestSmartFilteringDetections._shared_model = None - TestSmartFilteringDetections._shared_model_path = None - TestSmartFilteringDetections._shared_model_device = None + TestModelDetections._shared_model = None + TestModelDetections._shared_model_path = None + TestModelDetections._shared_model_device = None # Force Python to run destructors NOW while streams are still alive gc.collect() @@ -185,7 +234,7 @@ def each_test_setup(request): @pytest.mark.usefixtures("setup_context") -class TestSmartFilteringDetections: +class TestModelDetections: # SETUP -------------------------------------------- @pytest.mark.parametrize( @@ -195,7 +244,7 @@ class TestSmartFilteringDetections: ("gpu"), ], ) - def test_pipeline(self, device): + def test_model(self, device): """Unified test runner for all configurations.""" # Run the actual model loader @@ -205,15 +254,17 @@ def test_pipeline(self, device): results = self.model.predict( source=self.source, + imgsz=(self.frame_height, self.frame_width), + batch=1, + device=self.config.device_input, + stream=True, conf=self.config.DETECTION_THRESHOLD, iou=self.config.IOU_THRESHOLD, show=False, - imgsz=(self.frame_height, self.frame_width), save=True, project=str(self.config.SHARED_OUTPUT), - name=f"pred_{self._testMethodName}_output_video", + name="predict_results", exist_ok=True, # overwrite if folder exists - stream=True, data={"names": {i: name for i, name in enumerate(self.label_source)}}, ) @@ -250,12 +301,12 @@ def get_model_by_device(self, device, sf_enabled=False): sf_enabled = False if ( - TestSmartFilteringDetections._shared_model is not None - and TestSmartFilteringDetections._shared_model_device == device - and TestSmartFilteringDetections._shared_model_sf_enabled == sf_enabled + TestModelDetections._shared_model is not None + and TestModelDetections._shared_model_device == device + and TestModelDetections._shared_model_sf_enabled == sf_enabled ): - self.model = TestSmartFilteringDetections._shared_model - self.model_path = TestSmartFilteringDetections._shared_model_path + self.model = TestModelDetections._shared_model + self.model_path = TestModelDetections._shared_model_path return run_platform_name = "engine" if "cuda" in self.device_input else "openvino" @@ -266,8 +317,8 @@ def get_model_by_device(self, device, sf_enabled=False): dir_path = f"/home/resources/models/ultralytics/{self.config.MODEL_NAME}/{self.config.MODEL_PRECISION}" ( - TestSmartFilteringDetections._shared_model, - TestSmartFilteringDetections._shared_model_path, + TestModelDetections._shared_model, + TestModelDetections._shared_model_path, self.label_source, ) = get_model( Path(dir_path), @@ -281,11 +332,11 @@ def get_model_by_device(self, device, sf_enabled=False): model_w=self.resize_w, ) - TestSmartFilteringDetections._shared_model_device = device - TestSmartFilteringDetections._shared_model_sf_enabled = sf_enabled - self.model = TestSmartFilteringDetections._shared_model + TestModelDetections._shared_model_device = device + TestModelDetections._shared_model_sf_enabled = sf_enabled + self.model = TestModelDetections._shared_model # self.model.half() - self.model_path = TestSmartFilteringDetections._shared_model_path + self.model_path = TestModelDetections._shared_model_path W, H = self.resize_w, self.resize_h if not sf_enabled: @@ -317,7 +368,7 @@ def _finalize_benchmarks( "Detection Type": self.config.DETECTION_TYPE, "Device": self.device, "Smart Filtering": "Enabled" if self.config.sf_enabled else "Disabled", - "Video": self.video_path.name, + "Video": self.name, "Video Duration (s)": f"{duration_s:.4f}", "Video FPS": f"{self.input_fps:.2f}", "Pipeline Latency (s)": f"{real_latency_s:.2f}", @@ -337,12 +388,272 @@ def _finalize_benchmarks( f"\n[{self._testMethodName}] Model Est. FPS: {model_fps:.2f} ({n_frames} frames)" ) - -# INHERIT METHODS FROM HANDLERS ----------------------------------------------------------------- -TestSmartFilteringDetections.setup_reader = DeviceBaseHandler.setup_reader -TestSmartFilteringDetections.get_frameWH = DeviceBaseHandler.get_frameWH -TestSmartFilteringDetections.run_model = DeviceBaseHandler.run_model -TestSmartFilteringDetections.model_warmup = DeviceBaseHandler.model_warmup + def setup_threads(self): + """Overrides handlers.py to bind threads dynamically to the test instance.""" + pass + # self.setup_shared_memory() # Natively sets up Manager dictionary and buffers + + # # Executor for Async YOLO tasks and FFmpeg re-encoding + # self.executor = ThreadPoolExecutor(max_workers=self.config.MAX_WORKERS) + # # self.clip_executor = ThreadPoolExecutor(max_workers=self.config.MAX_WORKERS) + + # print( + # f"sf_enabled: {self.config.sf_enabled}\tTEST_MODE: {self.config.TEST_MODE}", + # flush=True, + # ) + + # # Open up looking-ahead buffer horizons to eliminate 8K queue backpressure stalls + # self.signal_queue = mp.Queue(maxsize=128) # 10) + # self.render_queue = mp.Queue(maxsize=256) # 64) + + # test_dir = os.getenv( + # "TEST_SUITE_RENDER_DIR", str(Path(self.config.SHARED_OUTPUT)) + # ) + # os.makedirs(test_dir, exist_ok=True) + + # if self.source.startswith("rtsp"): + # short_name = "rtsp" + # else: + # short_name = Path(self.source).stem + # video_output_name = f"{self._testMethodName}_{short_name}_{self.device}.mp4" + # out_path = os.path.join(test_dir, video_output_name) + # self.output_path = ( + # out_path # f"{self.config.SHARED_OUTPUT}/{short_name}_{self.device}.mp4" + # ) + + # log_to_logger( + # f"[TEST MODE] Detection results saved to: {out_path}", level="info" + # ) + + # # ===================================================================== + # # DYNAMIC THREAD TARGET REDIRECTION + # # ===================================================================== + # # Lambda forces the background processing thread to evaluate your custom staging loop natively + # self.process_thread = threading.Thread( + # target=lambda: self.run_realtime_inference( + # sf_enabled=self.config.sf_enabled + # ), + # daemon=True, + # ) + # # self.render_proc = mp.Process( # threading.Thread( + # # target=rendering_worker, + # # args=( + # # self.render_queue, + # # (self.disp_w, self.disp_h), + # # self.output_path, + # # self.target_fps, + # # ), + # # daemon=True, + # # ) + # # self.render_proc = threading.Thread(target=lambda: None, daemon=True) + # # self.display_proc = threading.Thread(target=lambda: None, daemon=True) + # self.render_proc = DummyProcess() + # self.display_proc = DummyProcess() + + # self.async_writer = AsyncVideoWriter( + # self.output_path, + # cv2.VideoWriter_fourcc(*"avc1"), + # float(self.target_fps), + # (self.disp_w, self.disp_h), + # ) + # # self.async_writer = None + + def start(self): + """ + Starts the decoupled ingestion and inference threads in the correct order. + """ + # PRE-SYNC: Ensure GPU is idle before timing starts + if self.device_input == "cuda": + if torch.cuda.is_available(): + torch.cuda.synchronize() + + # Start the hardware-decoupled reader first + self.reader.start() + + # if self.config.ENABLE_QUERYING: + # self._initialize_writer() + + # # Small delay to allow the reader's deque to populate + # time.sleep(0.1) + + # # Start the producer and consumer threads + # if hasattr(self, "process_thread") and not self.process_thread.is_alive(): + # self.process_thread.start() + + # if not self.config.DISABLE_DETECTION: + # self.render_proc.start() + + # self.display_proc.start() + + # if ( + # self.config.ENABLE_QUERYING + # and not self.config.TEST_MODE + # and not self.metadata_thread.is_alive() + # ): + # self.metadata_thread.start() + + # if self.config.ENABLE_QUERYING and not self.writer_thread.is_alive(): + # self.writer_thread.start() + + return self + + def stop(self): + """Overrides handlers.py to flush thread objects safely without deadlocking.""" + with self._stop_lock: + if self._is_stopped: + return + + print( + f"\n[TEST HARNESS] Initiating rapid thread flush for {self.name}", + flush=True, + ) + self.active = False + + # 1. Rapidly clear the async video writer thread queue first + # if hasattr(self, "async_writer") and self.async_writer is not None: + # try: + # self.async_writer.release() + # except Exception: + # pass + + # ===================================================================== + # DECUPLED MULTI-PROCESS TEARDOWN LIFECYCLE SEQUENCE + # ===================================================================== + # 1. FIRST: Drain and synchronize your thread pool tasks so EVERY frame drops into the IPC queue + if hasattr(self, "display_pool") and self.display_pool is not None: + try: + if hasattr(self.display_pool, "_work_queue"): + backlog = self.display_pool._work_queue.qsize() + if backlog > 0: + print( + f"\n\033[94m[STAGE 1/4] Synchronizing display pool threads. Draining {backlog} background tasks...\033[0m", + flush=True, + ) + backlog_s = time.perf_counter() + while ( + self.display_pool._work_queue.qsize() > 0 + or len(self.reorder_staging_buffer) > 0 + ): + # Yield a brief slice to let worker threads complete downscaling + time.sleep(0.01) + backlog_e = time.perf_counter() - backlog_s + print(f"\t\033[94mTook {backlog_e} secs\033[0m", flush=True) + print( + "\033[92m[SUCCESS] All background image transformations completed cleanly.\033[0m", + flush=True, + ) + self.display_pool.shutdown(wait=True) + except Exception as e: + print( + f"[TEARDOWN ERROR] Thread pool synchronization failed: {e}", + flush=True, + ) + setattr(self, "display_pool", None) + + # 1. FIRST: Instantly dispatch the shutdown token so the worker process knows to flush entries + if hasattr(self, "render_queue") and self.render_queue is not None: + try: + print( + f"\n\033[94m[STAGE 1/3] Dispatching shutdown sentinel (None) to rendering process worker (Backlog: {self.render_queue.qsize()} frames)...\033[0m", + flush=True, + ) + # Delivering the poison pill immediately tells FFmpeg to drain remaining blocks sequentially + self.render_queue.put(None, timeout=2.0) + except Exception as queue_err: + print( + f"\033[91m[TEARDOWN ERROR] Failed staging shutdown token: {queue_err}\033[0m", + flush=True, + ) + + # 2. SECOND: Allow the background multiprocessing queue to empty outstanding items naturally + if hasattr(self, "render_queue") and self.render_queue is not None: + try: + print( + "\n\033[94m[STAGE 2/3] Finalizing file output. Draining remaining frames from IPC memory lane...\033[0m", + flush=True, + ) + t_drain = time.perf_counter() + # Wait up to 15 seconds for the worker process to pull every remaining matrix out of the pipe + while ( + not self.render_queue.empty() + and (time.perf_counter() - t_drain) < 15.0 + ): + time.sleep( + 0.01 + ) # Micro-yield grants immediate execution priority to the background process core + except Exception: + pass + + # 3. THIRD: Block the main thread safely and allow the detached process to finish disk I/O operations + if hasattr(self, "render_proc") and self.render_proc is not None: + try: + join_duration = 0.0 + if self.render_proc.is_alive(): + print( + "\033[94m[STAGE 2/2] Main thread blocking. Synchronizing hard drive file headers...\033[0m", + flush=True, + ) + t_join_start = time.perf_counter() + self.render_proc.join( + timeout=15.0 + ) # Safe timeout lets video containers finalize cleanly + join_duration = time.perf_counter() - t_join_start + else: + print( + "\033[94m[STAGE 2/2] Main thread clear...\033[0m", + flush=True, + ) + + if self.render_proc.is_alive(): + print( + "\n\033[91m[CRITICAL STALL] Render worker process hung on disk write! Forcing termination...\033[0m", + flush=True, + ) + self.render_proc.terminate() + self.render_proc.join() + else: + print( + f"\033[92m[FINAL] Video compilation finished cleanly! Hard drive commit took {join_duration:.2f} seconds.\033[0m", + flush=True, + ) + + expected_disk_path = Path(self.output_path) + if expected_disk_path.exists(): + size_mb = expected_disk_path.stat().st_size / (1024 * 1024) + print( + f"\033[92m[DISK VERIFIED] Destination asset compiled: {expected_disk_path.name} ({size_mb:.2f} MB)\033[0m\n", + flush=True, + ) + self.render_proc.close() + except Exception as proc_err: + print( + f"\033[91m[TEARDOWN ERROR] Failed closing background process container: {proc_err}\033[0m", + flush=True, + ) + setattr(self, "render_proc", None) + + # 4. FOURTH: Clean up remaining pipeline executors and queues safely + if hasattr(self, "render_queue") and self.render_queue is not None: + try: + self.render_queue.close() + self.render_queue.cancel_join_thread() + except Exception: + pass + setattr(self, "render_queue", None) + + if hasattr(self, "executor") and self.executor is not None: + try: + self.executor.shutdown(wait=True) + except Exception: + pass + setattr(self, "executor", None) + + self.status = "DONE" + self._is_stopped = True + print( + "[TEST HARNESS] Teardown complete. Releasing session cleanly.\n", + flush=True, + ) if __name__ == "__main__": diff --git a/fastapi/tests/test_pipeline.py b/fastapi/tests/test_pipeline.py index 1735e4c..32ad892 100644 --- a/fastapi/tests/test_pipeline.py +++ b/fastapi/tests/test_pipeline.py @@ -83,15 +83,16 @@ def setup_context(request): request.cls.name = "rtsp" request.cls.test_duration_mins = float(os.getenv("TEST_DURATION_MINS", 1.0)) - request.cls.result_dir = test_dir / f"{current_test_filename}_results" + model_name = os.getenv("MODEL_NAME", MODEL_NAME_DEFAULT) + request.cls.result_dir = test_dir / f"{current_test_filename}_results" / model_name request.cls.result_dir.mkdir(parents=True, exist_ok=True) request.cls.benchmarks = [] if is_rtsp: - request.cls.csv_filename = "reader_perf_results_rtsp.csv" + request.cls.csv_filename = "pipeline_benchmarks_rtsp.csv" else: vid_shortname = Path(request.cls.source).stem - request.cls.csv_filename = f"reader_perf_results_{vid_shortname}.csv" + request.cls.csv_filename = f"pipeline_benchmarks_{vid_shortname}.csv" request.cls.csv_path = request.cls.result_dir / request.cls.csv_filename yield @@ -259,9 +260,9 @@ def stream_worker( if out_dir: if "Scenario_4_" in test_name: - result_dir = out_dir / "results" - result_dir.mkdir(parents=True, exist_ok=True) - os.environ["TEST_SUITE_RENDER_DIR"] = str(result_dir) + # result_dir = out_dir / "results" + # result_dir.mkdir(parents=True, exist_ok=True) + os.environ["TEST_SUITE_RENDER_DIR"] = str(out_dir) config.SHARED_OUTPUT = str(out_dir) import vdms @@ -278,6 +279,8 @@ def mock_connect(self, host, port): else: HandlerClass = CPUStreamHandler + print("\t[STREAM_WORKER] Starting ...") + last_sample = time.perf_counter() handler = None # Explicit initializing tracking state pointer 🚀 @@ -450,7 +453,8 @@ def mock_connect(self, host, port): # Absolute kill switch safely reclaims orphaned third-party threads # at the kernel level without crashing the parent pytest framework time.sleep(0.1) - os._exit(0) + # os._exit(0) + print("\t[STREAM_WORKER] Processing complete. Exiting...") @pytest.mark.usefixtures("setup_context") @@ -489,7 +493,9 @@ def test_scenario_1_invalid_rtsp(self, device): ), ) worker_p.start() - worker_p.join(timeout=2.0) + print("[SCENARIO 1] Started processing ...") + worker_p.join() # timeout=2.0) + print(f"[SCENARIO 1] Stopped cleanly with exit code: {worker_p.exitcode}") if worker_p.is_alive(): worker_p.terminate() @@ -541,7 +547,9 @@ def test_scenario_2_longevity_throughput(self, device): ), ) worker_p.start() + print("[SCENARIO 2] Started processing ...") worker_p.join() + print(f"[SCENARIO 2] Stopped cleanly with exit code: {worker_p.exitcode}") if worker_p.is_alive(): worker_p.terminate() @@ -596,7 +604,9 @@ def test_scenario_3_video_clipper(self, device): ), ) worker_p.start() + print("[SCENARIO 3] Started processing ...") worker_p.join() + print(f"[SCENARIO 3] Stopped cleanly with exit code: {worker_p.exitcode}") if worker_p.is_alive(): worker_p.terminate() @@ -660,7 +670,9 @@ def test_scenario_4_detection_and_clipper(self, device, sf_enabled, detection_ty ), ) worker_p.start() + print("[SCENARIO 4] Started processing ...") worker_p.join() + print(f"[SCENARIO 4] Stopped cleanly with exit code: {worker_p.exitcode}") if worker_p.is_alive(): worker_p.terminate() @@ -733,14 +745,22 @@ def get_pytest_filter_expression(args, sorted_scenarios): clause += f" and {args.detection_type}" applied_subs.append(f"type={args.detection_type}") - sub_msg = ( - f" with sub-filters: {', '.join(applied_subs)}" if applied_subs else "" - ) - print(f" ⚙️ Scenario {num}: Active compilation{sub_msg}") + if applied_subs: + applied_subs_str = ", ".join(applied_subs) + sub_msg = f" with sub-filters: {applied_subs_str}" + print(f" ⚙️ Scenario {num}: Active compilation{sub_msg}") + else: + sub_msg = ( + f" with sub-filters: {', '.join(applied_subs)}" + if applied_subs + else "" + ) + print(f" 🔹 Scenario {num}: Standard routing (ignoring sub-filters)") scenario_clauses.append(f"({clause})") # Safely join scenarios together with 'or' so they can execute side-by-side - filter_expression = f"test_scenario_ and ({' or '.join(scenario_clauses)})" + scenario_clauses_str = " or ".join(scenario_clauses) + filter_expression = f"test_scenario_ and ({scenario_clauses_str})" # Target hardware context selection filter applies globally across all test cases if args.device.lower() != "all": diff --git a/fastapi/tests/test_readers.py b/fastapi/tests/test_readers.py index 51a13c0..6730162 100644 --- a/fastapi/tests/test_readers.py +++ b/fastapi/tests/test_readers.py @@ -41,6 +41,7 @@ THRESHOLD_VALUE, ) from include.handlers import ( + AsyncVideoWriter, CPUStreamHandler, DeviceBaseHandler, GPUStreamHandler, @@ -103,34 +104,6 @@ def fps_comparison_chart(chart_path, results, fps_key="Pipeline FPS (Video frame print("Skipping chart generation: error occurred.") -class AsyncVideoWriter: - """Handles disk saving operations asynchronously on a background thread.""" - - def __init__(self, path, fourcc, fps, size): - self.writer = cv2.VideoWriter(path, fourcc, fps, size) - self.queue = queue.Queue() - self.running = True - self.thread = threading.Thread(target=self._write_loop, daemon=True) - self.thread.start() - - def _write_loop(self): - while self.running or not self.queue.empty(): - try: - frame = self.queue.get(timeout=0.05) - self.writer.write(frame) - self.queue.task_done() - except queue.Empty: - continue - - def write_frame(self, frame): - self.queue.put(frame) - - def release(self): - self.running = False - self.thread.join() - self.writer.release() - - class DummyProcess: def start(self): pass @@ -185,7 +158,7 @@ def setup_context(request): ) request.cls.result_dir.mkdir(parents=True, exist_ok=True) request.cls.benchmarks = [] - request.cls.csv_filename = f"pipeline_benchmarks_{request.cls.name}.csv" + request.cls.csv_filename = f"reader_benchmarks_{request.cls.name}.csv" request.cls.csv_path = request.cls.result_dir / request.cls.csv_filename request.cls.active = True @@ -257,7 +230,7 @@ def each_test_setup(request): test_class_self._testMethodName = f"{device.upper()}Reader" # video_output_name = f"{test_class_self._testMethodName}_detections_output.mp4" - vid_dir = test_class_self.result_dir / "results" + vid_dir = test_class_self.result_dir / device vid_dir.mkdir(parents=True, exist_ok=True) # Handler.__init__ (remaining items) @@ -746,7 +719,7 @@ def setup_threads(self): short_name = "rtsp" else: short_name = Path(self.source).stem - video_output_name = f"{self._testMethodName}_{short_name}_{self.device}.mp4" + video_output_name = f"{self._testMethodName}_{short_name}.mp4" out_path = os.path.join(test_dir, video_output_name) self.output_path = ( out_path # f"{self.config.SHARED_OUTPUT}/{short_name}_{self.device}.mp4" From 75fcf4cc0fea98d5c1781dad68a9d3e3073b5e07 Mon Sep 17 00:00:00 2001 From: "Lacewell, Chaunte W" Date: Mon, 31 Aug 2026 02:40:56 -0700 Subject: [PATCH 03/19] Code updates for AUG demo; Includes updated tests Signed-off-by: Lacewell, Chaunte W --- .codespell-ignore | 16 + .devcontainer/Dockerfile | 84 +- .devcontainer/devcontainer.json | 42 +- .gitignore | 4 +- .pre-commit-config.yaml | 26 +- .vscode/extensions.json | 9 + .vscode/settings.json | 26 + README.md | 5 + doc/DATASETS.md | 25 + fastapi/.vscode/launch.json | 68 +- fastapi/.vscode/settings.json | 7 + fastapi/entrypoint.sh | 4 + fastapi/include/__init__.py | 78 + fastapi/include/default_configs.py | 15 +- fastapi/include/detectors.py | 4362 ++++++++++++++++ fastapi/include/handlers.py | 7713 +++++++++++++--------------- fastapi/include/models.py | 6 +- fastapi/include/readers.py | 1339 ++++- fastapi/include/utils.py | 2275 +++++++- fastapi/main.py | 179 +- fastapi/nginx.conf | 2 +- fastapi/templates/index.html | 6 +- fastapi/tests/base_test.py | 3442 +++++++++++++ fastapi/tests/metrics.py | 258 + fastapi/tests/test_detections.py | 2341 ++------- fastapi/tests/test_eval.py | 812 +++ fastapi/tests/test_model.py | 1088 ++-- fastapi/tests/test_pipeline.py | 553 +- fastapi/tests/test_readers.py | 2406 ++------- 29 files changed, 18044 insertions(+), 9147 deletions(-) create mode 100644 .codespell-ignore create mode 100644 .vscode/extensions.json create mode 100644 .vscode/settings.json create mode 100644 doc/DATASETS.md create mode 100644 fastapi/.vscode/settings.json create mode 100644 fastapi/include/__init__.py create mode 100644 fastapi/include/detectors.py create mode 100644 fastapi/tests/base_test.py create mode 100644 fastapi/tests/metrics.py create mode 100644 fastapi/tests/test_eval.py diff --git a/.codespell-ignore b/.codespell-ignore new file mode 100644 index 0000000..02a0a85 --- /dev/null +++ b/.codespell-ignore @@ -0,0 +1,16 @@ +anduril +bkgd +codespell +cuda +detectshadows +esbenp +fastapi +finetune +imgs +imgsz +lanczos +rstp +tensorrt +varthreshold +venv +yolov diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index fe197ed..b1503fb 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -42,13 +42,15 @@ RUN apt-get update && \ gfortran && \ # Install necessary CUDA packages curl -fsSL https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb -o /tmp/cuda-keyring.deb && \ - dpkg -i /tmp/cuda-keyring.deb && rm /tmp/cuda-keyring.deb && \ - apt-get update && \ + dpkg -i /tmp/cuda-keyring.deb && rm /tmp/cuda-keyring.deb + +ARG CUDA_MAJOR_VERSION=12 +ARG CUDA_MINOR_VERSION=8 + +RUN apt-get update && \ apt-get install -y -q --no-install-recommends \ - cuda-toolkit-12-4 \ - libcudnn9-dev-cuda-12 \ - libnpp-dev-12-4 \ - && \ + cuda-toolkit-${CUDA_MAJOR_VERSION}-${CUDA_MINOR_VERSION} \ + libcudnn9-dev-cuda-${CUDA_MAJOR_VERSION} && \ rm -rf /var/lib/apt/lists/* && apt-get clean RUN python3 -m venv ${VIRTUAL_ENV} && \ @@ -58,6 +60,10 @@ RUN python3 -m venv ${VIRTUAL_ENV} && \ "torchvision==0.25.0" \ "numpy==1.26.4" +# Ensure paths capture the version dynamically +ENV PATH="/usr/local/cuda/bin:${PATH}" +ENV LD_LIBRARY_PATH="/usr/local/cuda/lib64:${LD_LIBRARY_PATH}" + # OPENCV W/ CUDA SUPPORT ENV PYTHON_VERSION=3.10 ENV OPENCV_VERSION="4.11.0" @@ -74,6 +80,7 @@ RUN git clone --branch ${OPENCV_VERSION} --depth 1 https://github.com/opencv/ope WORKDIR ${DEPENDENCY_DIR}/opencv/build RUN ln -s /usr/include/x86_64-linux-gnu/cudnn*.h /usr/local/cuda/include/ && \ ln -s /usr/lib/x86_64-linux-gnu/libcudnn*.so* /usr/local/cuda/lib64/ + RUN cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX="${VIRTUAL_ENV}" \ -D OPENCV_EXTRA_MODULES_PATH="${DEPENDENCY_DIR}/opencv_contrib/modules" \ @@ -84,7 +91,7 @@ RUN cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D WITH_TBB=ON \ -D WITH_V4L=ON \ -D OPENCV_DNN_CUDA=ON \ - -D CUDA_ARCH_BIN=70,75,80,86,89,90 \ + -D CUDA_ARCH_BIN=80,86,89,90 \ -D CUDA_FAST_MATH=ON \ -D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda \ -D CUDNN_INCLUDE_DIR=/usr/include/x86_64-linux-gnu \ @@ -93,8 +100,8 @@ RUN cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D BUILD_opencv_cudaarithm=ON \ -D BUILD_opencv_cudafilters=ON \ -D BUILD_opencv_cudacodec=ON \ - -D WITH_NVCUVID=ON \ - -D WITH_NVCUVENC=ON \ + -D WITH_NVCUVID=OFF \ + -D WITH_NVCUVENC=OFF \ -D WITH_VAAPI=ON \ -D WITH_FFMPEG=ON \ -D BUILD_opencv_python3=ON \ @@ -108,12 +115,13 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] RUN mkdir -p /tmp/cv2_deps && \ PY_CV2_SO=$(find "${VIRTUAL_ENV}" -name "cv2*.so" | head -n 1) && \ ldd "${PY_CV2_SO}" | grep "=> /" | awk '{print $3}' | xargs -I '{}' cp -v '{}' /tmp/cv2_deps/ && \ - cp -v /usr/local/cuda/lib64/libnpp*.so* /tmp/cv2_deps/ && \ - cp -v /usr/local/cuda/lib64/libcudart.so* /tmp/cv2_deps/ && \ - cp -P /usr/local/cuda/lib64/libnvrtc.so* /tmp/cv2_deps/ && \ + # FIX: Robust fallback copying to grab NPP/CUDA libs regardless of whether they land in /usr/local or system path channels + (cp -v /usr/local/cuda/lib64/libnpp*.so* /tmp/cv2_deps/ || cp -v /usr/lib/x86_64-linux-gnu/libnpp*.so* /tmp/cv2_deps/) && \ + (cp -v /usr/local/cuda/lib64/libcudart.so* /tmp/cv2_deps/ || cp -v /usr/lib/x86_64-linux-gnu/libcudart.so* /tmp/cv2_deps/) && \ + (cp -P /usr/local/cuda/lib64/libnvrtc.so* /tmp/cv2_deps/ || cp -P /usr/lib/x86_64-linux-gnu/libnvrtc.so* /tmp/cv2_deps/) && \ + (cp -v /usr/local/cuda/lib64/libcublas*.so* /tmp/cv2_deps/ || cp -v /usr/lib/x86_64-linux-gnu/libcublas*.so* /tmp/cv2_deps/) && \ cp -v /usr/lib/x86_64-linux-gnu/libnvidia-encode.so* /tmp/cv2_deps/ || true - # Clean up RUN rm -rf ${DEPENDENCY_DIR} @@ -121,44 +129,53 @@ RUN rm -rf ${DEPENDENCY_DIR} FROM openvisualcloud/xeon-ubuntu2204-media-nginx:23.1@sha256:d19eb597dc210134063803630ae2ea1ec84dfd4189138f59551e2f5ed047284a ARG DEBIAN_FRONTEND=noninteractive +ARG CUDA_MAJOR_VERSION=12 +ARG CUDA_MINOR_VERSION=8 ENV VIRTUAL_ENV=/opt/venv ENV PATH="$VIRTUAL_ENV/bin:/usr/local/cuda/bin:${PATH}" # Install Runtime Libraries, FFmpeg/VA-API headers, and cuDNN # Includes libva and ffmpeg libraries required for HEVC decoding # hadolint ignore=DL3008 -RUN apt-get update && apt-get install -y --no-install-recommends \ - ca-certificates \ - curl \ - python3 \ - libgl1 \ - libglib2.0-0 \ - libtbb12 \ - # Critical for Hardware Decoding (HEVC) - libva2 \ - libva-drm2 \ - libva-x11-2 \ - libavcodec58 \ - libavformat58 \ - libswscale5 \ - libv4l-0 && \ +RUN apt-get update && \ + apt-get install -y --no-install-recommends \ + ca-certificates \ + curl \ + python3 \ + libgl1 \ + libglib2.0-0 \ + libtbb12 \ + # Critical for Hardware Decoding (HEVC) + libva2 \ + libva-drm2 \ + libva-x11-2 \ + libavcodec58 \ + libavformat58 \ + libswscale5 \ + libv4l-0 && \ # Install necessary CUDA packages curl -fsSL https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb -o /tmp/cuda-keyring.deb && \ - dpkg -i /tmp/cuda-keyring.deb && rm /tmp/cuda-keyring.deb && \ + dpkg -i /tmp/cuda-keyring.deb && rm /tmp/cuda-keyring.deb && \ apt-get update && \ - apt-get install -y -q --no-install-recommends libcudnn9-cuda-12 \ + apt-get install -y -q --no-install-recommends \ + libcudnn9-cuda-${CUDA_MAJOR_VERSION} \ libavcodec-dev \ libavformat-dev \ - libavutil-dev nvidia-cuda-dev && \ + libavutil-dev \ + cuda-nvcc-${CUDA_MAJOR_VERSION}-${CUDA_MINOR_VERSION} && \ rm -rf /var/lib/apt/lists/* # Copy the entire pre-compiled virtual environment from the build stage COPY --from=build ${VIRTUAL_ENV} ${VIRTUAL_ENV} -# Copy NPP (NVIDIA Performance Primitives) libs - Required for OpenCV CUDA -# COPY --from=build /usr/local/cuda/lib64/libnpp*.so* /usr/local/cuda/lib64/ + # Copy additional required CUDA math/parallel libs RUN mkdir -p /usr/local/cuda/lib64 COPY --from=build /tmp/cv2_deps/* /usr/local/cuda/lib64/ + +# Tells the host engine to expose all GPUs and utility binaries (like nvidia-smi) +ENV NVIDIA_VISIBLE_DEVICES=all +# FIX: Cleaned duplicate line later in file to ensure capabilities are consistently initialized +ENV NVIDIA_DRIVER_CAPABILITIES=compute,utility,video ENV LD_LIBRARY_PATH="/usr/local/cuda/lib64:${VIRTUAL_ENV}/lib:${LD_LIBRARY_PATH}" RUN ldconfig @@ -168,7 +185,6 @@ ENV DEVICE="${DEVICE}" # Set the working directory in the container WORKDIR /home COPY requirements.txt /home/ -ENV NVIDIA_DRIVER_CAPABILITIES=all # RUN pip3 install --no-cache-dir "pytest>=9.0.3" && \ # pip3 install --no-cache-dir --require-hashes -r /home/requirements.CPU.txt --index-url https://download.pytorch.org/whl/cpu --extra-index-url https://pypi.org/simple && \ diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 79e0d9c..7c6e073 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -2,13 +2,10 @@ // README at: https://github.com/devcontainers/templates/tree/main/src/debian { "name": "Pipeline Dev", - // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile - // "image": "mcr.microsoft.com/devcontainers/base:bullseye" + "build": { // Path is relative to the devcontainer.json file. "dockerfile" : "Dockerfile", - // "context" : "..", - // "dockerfile" : "../fastapi/Dockerfile", "context" : "../fastapi", "args":{ "HTTP_PROXY" : "${localEnv:HTTP_PROXY}", @@ -16,30 +13,47 @@ "HTTPS_PROXY" : "${localEnv:HTTPS_PROXY}", "https_proxy" : "${localEnv:https_proxy}", "NO_PROXY" : "${localEnv:NO_PROXY}", - "no_proxy" : "${localEnv:no_proxy}", - } + "no_proxy" : "${localEnv:no_proxy}" + }, + // Forces the build phase to use the host network to fix any Ubuntu timeout + "options": [ + "--network=host" + ] }, + "containerEnv" : { "HTTP_PROXY" : "${localEnv:HTTP_PROXY}", "http_proxy" : "${localEnv:http_proxy}", "HTTPS_PROXY" : "${localEnv:HTTPS_PROXY}", "https_proxy" : "${localEnv:https_proxy}", "NO_PROXY" : "${localEnv:NO_PROXY}", - "no_proxy" : "${localEnv:no_proxy}", + "no_proxy" : "${localEnv:no_proxy}" }, + // Native, modern way to pass GPUs to the Dev Container + // VS Code will automatically append the --gpus all flag if detected + "hostRequirements": { + "gpu": "optional" + }, + "runArgs" : [ - "--rm", - "--gpus", "all", + // "-p", "8011:8000", + // "--rm", + // "--gpus", "all", "--ipc=host", "--name", "pipeline_dev", - "-p", "8011:8000", "--cap-add=SYS_NICE", - "--shm-size=8gb" + "--shm-size=8gb", + "--network=host" // Ensures runtime matches the host network ], - //, "--net=host", "--privileged", "--shm-size=2gb"], + //, "--privileged", "--shm-size=2gb"], + + // Forwarding ports cleanly via VS Code spec instead of raw "-p" + // "forwardPorts": [], + "overrideCommand": true, - "postStartCommand": "apt-get update -o Acquire::Check-Date=false -y && apt-get install -y gdb sudo && cp -rp /workspace/app/*.md /app/ && cp -rp /workspace/app/.vscode /app/ && cp -rp /workspace/app/.gitignore /app/ && cp -rp /workspace/app/.github /app/", + "postStartCommand": "apt-get update -o Acquire::Check-Date=false -y && apt-get install -y gdb sudo", + // && cp -rp /workspace/app/*.md /home/ && cp -rp /workspace/app/.vscode /home/ && cp -rp /workspace/app/.gitignore /home/ && cp -rp /workspace/app/.github /home/", // "postAttachCommand": "sudo chown -R ${localEnv:USER} /workspaces", // Features to add to the dev container. More info: https://containers.dev/features. @@ -71,8 +85,6 @@ "mounts": [ "source=${localWorkspaceFolder}/inputs,target=/watch_dir,type=bind", "source=${localWorkspaceFolder}/fastapi,target=/home,type=bind" - // "source=./fastapi/resources,target=/home/resources,type=bind", - // "source=./fastapi/tests,target=/home/tests,type=bind" ], // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root. diff --git a/.gitignore b/.gitignore index 0a718e2..41cfe6f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,15 +1,17 @@ .venv* -.vscode *.log **/__pycache__/ **/_* +**/* copy* **/DockerImageTars/ build/* fastapi/resources/models/intel fastapi/resources/models/ultralytics +fastapi/tests/*_data/ fastapi/tests/*_results* fastapi/tests/*_test_imgs fastapi/tests/*.mp4 +fastapi/tests/run_test_*.* finetune/.env finetune/app/*-Results inputs/camera_config.yaml diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index e5dca08..243fb6f 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -20,12 +20,20 @@ repos: - id: mixed-line-ending args: ["--fix=auto"] - id: trailing-whitespace - - repo: https://github.com/pre-commit/mirrors-clang-format - rev: v19.1.7 - hooks: - - id: clang-format - types: [c, c++] - args: [ - "--style=Google", - "-i" - ] + - repo: https://github.com/pre-commit/mirrors-clang-format + rev: v19.1.7 + hooks: + - id: clang-format + types: [c, c++] + args: [ + "--style=Google", + "-i" + ] + - repo: https://github.com/codespell-project/codespell + rev: v2.4.1 + hooks: + - id: codespell + args: [ + --ignore-words=.codespell-ignore, + --skip="./build,./.git,./.devcontainer/Dockerfile" + ] diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..d38ebc5 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,9 @@ +{ + "recommendations": [ + "kevinrose.vsc-python-indent", + "mechatroner.rainbow-csv", + "ms-python.debugpy", + "ms-vscode-remote.remote-containers", + "streetsidesoftware.code-spell-checker", + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..241d119 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,26 @@ +{ + "cSpell.ignorePaths": [ + "./build/**", + "./.git/**", + "./.devcontainer/Dockerfile", + "./deployment/Dockerfiles/**", + "./frontend/html/**" + ], + "cSpell.dictionaryDefinitions": [ + { + "name": "codespell-file", + "path": "${workspaceRoot}/.codespell-ignore", + "description": "Forcing cspell to read the codespell file" + } + ], + "cSpell.dictionaries": [ + "codespell-file" + ], + "cSpell.words": [ + "bchw", + "callspec", + "fourcc", + "gbps", + "rbtd" + ] +} \ No newline at end of file diff --git a/README.md b/README.md index 5228d7b..61df77f 100644 --- a/README.md +++ b/README.md @@ -23,6 +23,11 @@ This sample is powered by the following software stacks:
+## Datasets & Attributions +This project utilizes third-party open datasets. Please see our [Data Attributions](docs/DATASETS.md) for full licensing, copyright details, and citation parameters. +
+ + ## Install Prerequisites: - **Time Zone**: Check that the timezone setting of your host machine is correctly configured. Timezone is used during build. diff --git a/doc/DATASETS.md b/doc/DATASETS.md new file mode 100644 index 0000000..9e4ae55 --- /dev/null +++ b/doc/DATASETS.md @@ -0,0 +1,25 @@ +# Dataset and Third-Party Media Attributions + +This repository utilizes external datasets and media for training/demo purposes, without storing the actual files. + +--- + +## 1. SynDroneVision Dataset +* **Source:** [Zenodo (Record 13360116)](https://zenodo.org/records/13360116) +* **License:** [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode.en) +* **Citation:** See DOI [10.1109/WACV61041.2025.00742](https://doi.org/10.1109/WACV61041.2025.00742) (Lenhard et al., WACV 2025). +* **Usage:** External data for fine-tuning model for drone detection. + +--- + +## 2. Sample Drone Video (`anduril_swarm.mp4`) +* **Source:** [droneforge/yolov11-UAV-finetune](https://github.com/droneforge/yolov11-UAV-finetune/blob/main/anduril_swarm.mp4) +* **Usage:** External sample video for pipeline demonstration. + +--- + +## 3. DUT Anti-UAV Dataset +* **Source:** [wangdongdut/DUT-Anti-UAV](https://github.com/wangdongdut/DUT-Anti-UAV) +* **License:** [Apache License 2.0](https://github.com/wangdongdut/DUT-Anti-UAV/blob/master/LICENSE) +* **Citation:** See DOI [10.48550/arXiv.2205.10851](https://doi.org/10.48550/arXiv.2205.10851) (Zhao et al., IEEE T-ITS 2022). +* **Usage:** External sample video dataset for pipeline validation/demonstration. diff --git a/fastapi/.vscode/launch.json b/fastapi/.vscode/launch.json index bf0e18c..1f9faee 100644 --- a/fastapi/.vscode/launch.json +++ b/fastapi/.vscode/launch.json @@ -4,6 +4,22 @@ // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ + { + // Test the model for both CPU and GPU on provided RTSP URL or video file + "name": "Eval Pipeline", + "type": "debugpy", + "request": "launch", + "program": "${workspaceFolder}/tests/test_eval.py", + "cwd": "${workspaceFolder}/tests", + "python": "/opt/venv/bin/python", + "console": "integratedTerminal", + "justMyCode": false, + "subProcess": false, + "args": [ + "--type", "object", + "--device", "gpu" + ] + }, { // Test the model for both CPU and GPU on provided RTSP URL or video file "name": "Test Model", @@ -19,7 +35,7 @@ // VIDEOS EXPECTED TO BE rstp url OR IN inputs/ or /watch_dir // "--source", "rtsp://:/", // "--source", ".mp4", - + "--device", "gpu" ] }, { @@ -37,7 +53,7 @@ // VIDEOS EXPECTED TO BE rstp url OR IN inputs/ or /watch_dir // "--source", "rtsp://:/", // "--source", ".mp4" - + "--device", "gpu" ] }, { @@ -51,11 +67,15 @@ "console": "integratedTerminal", "justMyCode": false, "subProcess": false, + "env":{ + "PYTHONTRACEMALLOC":"20", + }, "args": [ // VIDEOS EXPECTED TO BE rstp url OR IN inputs/ or /watch_dir // "--source", "rtsp://:/", // "--source", ".mp4" - + "--device", "gpu", + "--type", "object" ] }, { @@ -80,12 +100,13 @@ // 4: --device, --sf, --type (object or motion) "--duration", "1", - + "--device", "gpu", + "--type", "object" ] }, { // Test Smart Filtering within pipeline to display the ROIs - "name": "Test Pipeline: Smart filtering Only", + "name": "Test Pipeline: Smart filtering Only (Scenario 4)", "type": "debugpy", "request": "launch", "program": "${workspaceFolder}/tests/test_pipeline.py", @@ -103,8 +124,41 @@ // 4: --device, --sf, --type (object or motion) "--scenario", "4", "--sf", - "--type", "motion", + "--type", "object", + + "--duration", "1", + "--device", "gpu" + ] + }, + { + // Test Smart Filtering within pipeline to display the ROIs + "name": "Test Pipeline: Scenario 3", + "type": "debugpy", + "request": "launch", + "program": "${workspaceFolder}/tests/test_pipeline.py", + "cwd": "${workspaceFolder}/tests", + "python": "/opt/venv/bin/python", + "console": "integratedTerminal", + "subProcess": false, + "justMyCode": false, + "args": [ + // VIDEOS EXPECTED TO BE rstp url OR IN inputs/ or /watch_dir + // "--source", "rtsp://:/", + // "--source", ".mp4", + + "--scenario", "3", + "--type", "object", + + "--duration", "1", + "--device", "gpu" ] - } + }, + { + "name": "Python Debugger: Current File", + "type": "debugpy", + "request": "launch", + "program": "${file}", + "console": "integratedTerminal" + }, ] } diff --git a/fastapi/.vscode/settings.json b/fastapi/.vscode/settings.json new file mode 100644 index 0000000..9b38853 --- /dev/null +++ b/fastapi/.vscode/settings.json @@ -0,0 +1,7 @@ +{ + "python.testing.pytestArgs": [ + "tests" + ], + "python.testing.unittestEnabled": false, + "python.testing.pytestEnabled": true +} \ No newline at end of file diff --git a/fastapi/entrypoint.sh b/fastapi/entrypoint.sh index 850f4a3..694b55c 100644 --- a/fastapi/entrypoint.sh +++ b/fastapi/entrypoint.sh @@ -1,6 +1,10 @@ #!/bin/bash set -e +echo "Sweeping stale shared memory segments from previous runs..." +# Delete only Python-specific shared memory blocks to avoid messing up other host processes +rm -f /dev/shm/psm_* + # Run the download script using container env vars echo "Starting model download..." python /home/include/models.py -o /var/www/cache/model_classes.json diff --git a/fastapi/include/__init__.py b/fastapi/include/__init__.py new file mode 100644 index 0000000..c57681f --- /dev/null +++ b/fastapi/include/__init__.py @@ -0,0 +1,78 @@ +import os +import warnings +from multiprocessing import resource_tracker + +import torch + +# ============================================================================== +# SUPPRESS WARNINGS + +# warnings.filterwarnings( +# "ignore", category=FutureWarning, message=".*reduce_op` is deprecated.*" +# ) +warnings.filterwarnings("ignore", category=FutureWarning) +warnings.filterwarnings("ignore", category=DeprecationWarning) +warnings.filterwarnings("ignore", category=UserWarning, module="torch.distributed") +warnings.filterwarnings("ignore", message=".*reduce_op.*") +warnings.filterwarnings("ignore", message=".*expandable_segments.*") + +# ============================================================================== +# MONKEY PATCH + + +def _patch_resource_tracker_for_shm(): + """ + Prevents Python's resource_tracker from tracking shared memory segments. + Eliminates BPO-39959 / Issue #82300 KeyError crashes. + """ + _orig_register = resource_tracker.register + _orig_unregister = resource_tracker.unregister + + def _safe_register(name, rtype): + if rtype == "shared_memory": + return # Do not register shared memory with tracker daemon + return _orig_register(name, rtype) + + def _safe_unregister(name, rtype): + if rtype == "shared_memory": + return # Do not send unregister signals for shared memory + return _orig_unregister(name, rtype) + + resource_tracker.register = _safe_register + resource_tracker.unregister = _safe_unregister + + +_patch_resource_tracker_for_shm() + + +# Cache the hardware availability state globally. +# This prevents internal framework loops from triggering driver/NVML checks per frame. +_cuda_available = torch.cuda.is_available() + + +def _patched_is_available(): + return _cuda_available + + +torch.cuda.is_available = _patched_is_available + +# ============================================================================== +# ENVIRONMENT + +os.environ["OMP_NUM_THREADS"] = "4" # "4" #"2" +os.environ["MKL_NUM_THREADS"] = "2" +os.environ["PYTORCH_ALLOC_CONF"] = "expandable_segments:True" + +# Suppress low-delay reference block warnings from OpenCV/PyAV/FFmpeg +os.environ["OPENCV_FFMPEG_LOGLEVEL"] = "-8" +os.environ["OPENCV_LOG_LEVEL"] = "OFF" + +try: + torch.set_num_interop_threads(1) + torch.set_num_threads(2) +except RuntimeError: + # Safe graceful fallback if a process-level fork duplicated context maps + pass + +# Force disable tracking states to stop graph allocation recursion +torch.set_grad_enabled(False) diff --git a/fastapi/include/default_configs.py b/fastapi/include/default_configs.py index 94cc90d..41b4fba 100644 --- a/fastapi/include/default_configs.py +++ b/fastapi/include/default_configs.py @@ -3,7 +3,7 @@ CUSTOM_MODEL_FLAG_DEFAULT = False DEBUG_DEFAULT = "0" DEVICE_DEFAULT = "CPU" -MAX_WORKERS = 4 # 6 +MAX_WORKERS = 4 # 4 # 6 OMIT_DETECTIONS_FLAG_DEFAULT = False SHARED_OUTPUT_DEFAULT = "/var/www/mp4" TEST_MODE_DEFAULT = False @@ -12,19 +12,19 @@ # VIDEO WRITER CLIP_DURATION_DEFAULT = 10 -TARGET_FPS = 15 +TARGET_FPS = 15.0 # VDMS DBHOST_DEFAULT = "vdms-service" DBPORT_DEFAULT = 55555 -ENABLE_QUERYING_DEFAULT = True # False, True +ENABLE_QUERYING_DEFAULT = False # False, True INGESTION_DEFAULT = "object" # object,face UDF_HOST_DEFAULT = "udf-service" UDF_PORT_DEFAULT = 5011 # MODEL -DETECTION_THRESHOLD_DEFAULT = 0.25 -IOU_THRESHOLD_DEFAULT = 0.7 +DETECTION_THRESHOLD_DEFAULT = 0.1 # 0.25 +IOU_THRESHOLD_DEFAULT = 0.1 # 0.7 DYNAMIC_FLAG_DEFAULT = True HALF_FLAG_DEFAULT = True MAX_DETECTIONS = 100 @@ -37,14 +37,15 @@ # SMART FILTERING (RESIZE, BKGD SUB, THRESHOLD, DILATE) # Enable if resolution > 2K 1920x1080 SMART_FILTERING_PIXEL_CONSTRAINT = 1920 * 1080 -BKGD_SUB_INCLUDE_HISTORY = True # True, False +SMART_FILTERING_WARMUP = False # True, False +BKGD_SUB_INCLUDE_HISTORY = False # True, False BKGD_SUB_INCLUDE_HISTORY_DILATE_KERNEL_SIZE = 15 # 21 #15 BKGD_SUB_INCLUDE_HISTORY_METHOD = "or" # "and", or BKGD_SUB_INCLUDE_HISTORY_TEMPORAL_SIZE = 3 BKGD_SUB_MOG2_DETECTSHADOWS = False BKGD_SUB_MOG2_HISTORY = int(2 * TARGET_FPS) BKGD_SUB_MOG2_LR = 1 / BKGD_SUB_MOG2_HISTORY # 0.002 # 1 / BKGD_SUB_MOG2_HISTORY -BKGD_SUB_MOG2_VARTHRESHOLD = 10 +BKGD_SUB_MOG2_VARTHRESHOLD = 50 # 30 # 20 #10 DILATE_KERNEL_SIZE = 5 # (3, 3) RESIZE_FLAG_DEFAULT = False ROI_BB_FULL_RES_PADDING = int(0.02 * MODEL_W) # 10, ~13 diff --git a/fastapi/include/detectors.py b/fastapi/include/detectors.py new file mode 100644 index 0000000..2a93006 --- /dev/null +++ b/fastapi/include/detectors.py @@ -0,0 +1,4362 @@ +# ============================================================================== +# LOGGING + +import logging +import sys + +logging.basicConfig( + level=logging.INFO, + # format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", + format="%(asctime)s [%(levelname)s] %(name)s (%(filename)s:%(lineno)d) - %(message)s", + handlers=[logging.StreamHandler(sys.stdout)], +) + +main_app_logger = logging.getLogger(__name__) + + +# ============================================================================== +# IMPORTS + +import time +import traceback +from collections import deque +from pathlib import Path + +import cupy +import cupyx.scipy +import cupyx.scipy.ndimage +import cv2 +import numpy as np +import torch +import torch.nn.functional as F +from ultralytics.engine.results import Boxes, Results +from ultralytics.utils.nms import non_max_suppression + +sys.path.insert(1, str(Path(__file__).parent.parent)) +from include.models import get_model +from include.utils import ( + get_bb_overlay, + get_bounds_kernel, + merge_boxes_gpu, +) + +# ============================================================================== +# CONFIGURATIONS +STREAM_ARG = False +PADDING_SCALE = 0.5 + + +class BaseObjectDetector: + def __init__( + self, + config, + device="cuda", + timer_enabled=True, + resize_hw=(640, 640), + frame_hw=(4320, 7680), + target_fps=15.0, + result_dir="/tmp", + run_name=None, + debug_frame_limit=-1, + **kwargs, + ): # , label_source=["drone"] + self.device_input = device + self.timer_enabled = timer_enabled + self.config = config + self.target_fps = target_fps + self.resize_h, self.resize_w = int(resize_hw[0]), int(resize_hw[1]) + self.frame_height, self.frame_width = int(frame_hw[0]), int(frame_hw[1]) + # self.label_source = label_source + self.compiled_no_grad_gate = torch.no_grad() + + if run_name is None: + run_type = "sf" if self.config.sf_enabled else "yolo" + det_type = self.config.DETECTION_TYPE + device_name = self.config.DEVICE.lower() + run_name = f"{run_type}_{det_type}_{device_name}" + self._testMethodName = run_name + + self.result_dir = result_dir + # self.debug_frame_limit = debug_frame_limit + self.debug_frame_limit = ( + debug_frame_limit + if self.config.DEBUG_FLAG and debug_frame_limit > -1 + else -1 + ) + + provided_model = kwargs.get("model") + self.setup_model(provided_model) + self.initialize() + + def model_warmup(self, H=640, W=640): + H, W = int(H), int(W) + # Move the dummy input creation inside a no_grad block + with self.compiled_no_grad_gate: + # main_app_logger.info(f"Starting warmup for {self.name}...") + dummy_input = torch.zeros((1, 3, H, W)).to(self.device_input) + + # Perform iterations directly on the main thread + for i in range(5): + dummy_result = self.run_model( + dummy_input, + imgsz=(H, W), + batch=1, + device_input=self.device_input, + stream=STREAM_ARG, + ) + # if i == 0 and hasattr(self.model, "predictor") and self.model.predictor: + # self.cached_predictor = self.model.predictor + # self.cached_predictor.profile = False + + del dummy_input, dummy_result + + if hasattr(self.model, "predictor") and self.model.predictor is not None: + predictor = self.model.predictor + + # Disable the internal framework statistics stopwatch loops + # This wipes out the trailing 2.3ms context synchronization gates completely! + predictor.stride = 32 + predictor.profile = False + + # CRITICAL OPTIMIZATION: Tell the post-processor to skip input image array compilation. + # This completely satisfies the internal checks, bypassing convert_torch2numpy_batch + # and dropping your 17.99ms PCIe bus device-to-host download stall down to 0 ms. + predictor.save_dir = None + predictor.args.visualize = False + predictor.args.show = False + predictor.args.save = False + self.cached_predictor = predictor + + # Force GPU to finish before returning + # if self.device_input == "cuda": + # torch.cuda.synchronize() + + # Pin a lightweight tensor to prevent downstream empty_cache() calls + # from destroying the compiled model weight layouts in memory + self.__persistent_vram_lock = torch.zeros((1,), device=self.device_input) + + main_app_logger.info("Warmup complete") + + def setup_model(self, provided_model, force_export=False): + if ( + self.frame_width * self.frame_height + ) <= self.config.SMART_FILTERING_PIXEL_CONSTRAINT: + if "_noSF" not in self.config.model_path: + oldpath = Path(self.config.model_path) + old_modelname = self.config.MODEL_NAME + self.config.MODEL_NAME = f"{old_modelname}_noSF" + new_model_name = oldpath.name.replace( + old_modelname, self.config.MODEL_NAME + ) + self.config.model_path = str(oldpath.parent / new_model_name) + + if provided_model is not None and not isinstance(provided_model, str): + self.model = provided_model + self.label_source = [v for k, v in self.model.names.items()] + self.label_source_dict = self.model.names + else: + run_platform_name = "engine" if "cuda" in self.device_input else "openvino" + self.model, _, self.label_source = get_model( + Path(self.config.model_path).parent, + self.config.MODEL_NAME.replace("_noSF", ""), + run_platform_name, + self.device_input, + batch=self.config.MODEL_MAX_BATCH_SIZE, + force_export=force_export, + sf_enabled=self.config.sf_enabled, + model_h=self.resize_h, + model_w=self.resize_w, + ) + self.label_source_dict = self.model.names + + # if run_platform_name == "openvino": + # self.model.predictor.args.embed = False + + # Warmup Model + if not self.config.sf_enabled: + self.model_warmup(self.frame_height, self.frame_width) + else: + self.model_warmup(self.resize_h, self.resize_w) + + def run_model( + self, + frame, + imgsz=(640, 640), + batch=1, + device_input="cuda", + stream=False, + ): + if ( + isinstance(frame, torch.Tensor) + # and device_input == "cuda" + # and getattr(self, "cached_predictor", None) is not None + ): + if frame.dtype == torch.uint8: + # Use standard out-of-place division to prevent byte truncation errors + frame = frame.to(dtype=torch.float32).mul(1.0 / 255.0) + else: + # If it's already a float tensor array block, in-place scaling is safe + frame = frame.mul_(1.0 / 255.0) + raw_module = None + + if hasattr(self, "cached_predictor") and self.cached_predictor is not None: + raw_module = self.cached_predictor.model + + with torch.inference_mode(): + # Establish your pipeline invariant: + # frame = [B,C,H,W], uint8, CUDA, [0,255]. + # if frame.dtype == torch.uint8: + # dtype = ( + # torch.float16 + # if getattr(raw_module, "fp16", False) + # else torch.float32 + # ) + # frame = frame.to(dtype=dtype).mul_(1.0 / 255.0) + # elif not frame.is_floating_point(): + # frame = frame.float() + + if raw_module is not None: + # start = torch.cuda.Event(enable_timing=True) + # end = torch.cuda.Event(enable_timing=True) + + # start.record() + # If input is guaranteed 640x640, don't pad here. + raw_output = raw_module(frame) + # end.record() + # torch.cuda.synchronize() + # inference_ms = start.elapsed_time(end) + + # start.record() + decoded_results = non_max_suppression( + prediction=raw_output, + conf_thres=self.config.DETECTION_THRESHOLD, + iou_thres=self.config.IOU_THRESHOLD, + max_det=self.config.MAX_DETECTIONS, + classes=None, + ) + # end.record() + # torch.cuda.synchronize() + # nms_ms = start.elapsed_time(end) + + # main_app_logger.info(f"Inference: {inference_ms:.3f} ms") + # main_app_logger.info(f"NMS: {nms_ms:.3f} ms") + + results = [] + dummy_img = np.empty( + (1, 1, 3), + dtype=np.uint8, + ) + + for pred in decoded_results: + if pred is None or pred.shape[0] == 0: + pred = torch.empty( + (0, 6), + dtype=frame.dtype, + device=frame.device, + ) + + pre_calculated_boxes = Boxes( + pred, + imgsz, + ) + + # Construct a conforming container using native VRAM references + res = Results( + orig_img=dummy_img, + path="", + names=self.label_source_dict, + boxes=None, # Bypasses internal allocation thrashing! # pred, + ) + res.boxes = pre_calculated_boxes + results.append(res) + + del decoded_results, raw_output + return results + + # Fallback to normal Ultralytics path. + with torch.inference_mode(): + if getattr(self, "cached_predictor", None) is not None: + return self.cached_predictor(frame) + else: + static_img_h = int(imgsz[0]) # Maps explicitly to your fixed 640 target + static_img_w = int(imgsz[1]) + return self.model.predict( + frame, + imgsz=(static_img_h, static_img_w), + batch=batch, + device=device_input, + verbose=False, + stream=stream, + conf=self.config.DETECTION_THRESHOLD, + iou=self.config.IOU_THRESHOLD, + max_det=self.config.MAX_DETECTIONS, + rect=(batch == 1), + profile=False, + ) + + def format_bbs_and_frame_4_detection_v1(self, bbs_full_res, device_frame): + clean_bbs = [] + + if self.config.sf_enabled and bbs_full_res is not None: + if torch.is_tensor(bbs_full_res): + # Check hardware registry constraints dynamically + if bbs_full_res.is_cuda: + # 🚀 GPU Target: Stage non-blocking fast copy into page-locked host memory + # via PCIe DMA background channels to completely bypass lock-stalls + # pinned_host_tensor = bbs_full_res.detach()#.to( + # # device="cpu", + # # non_blocking=True, + # # memory_format=torch.contiguous_format, + # # ) + # clean_bbs = pinned_host_tensor.numpy() + + # Moving the data to the host via non_blocking=True allows the PCIe + # DMA engine to handle the transfer, freeing up your CPU thread context! + cpu_tensor = bbs_full_res.detach().to( + device="cpu", non_blocking=True + ) + + # Extract the numpy array safely without triggering a global stream sync fence + clean_bbs = cpu_tensor.numpy() + else: + # 🚀 CPU Target: Direct view mapping without triggering device-transfer hooks + clean_bbs = bbs_full_res.detach().numpy() + else: + clean_bbs = np.array(bbs_full_res) + + # Layout tracking adjustments (Universal compatibility layer) + det_frame = device_frame + if torch.is_tensor(det_frame): + det_frame = det_frame.contiguous() # byte() + + if det_frame.ndim == 4: + det_frame = det_frame.squeeze(0).permute(1, 2, 0) + elif det_frame.shape == 3: + det_frame = det_frame.permute(1, 2, 0) + + merged = clean_bbs if self.config.sf_enabled else None + + return merged, det_frame + + def format_bbs_and_frame_4_detection(self, bbs_full_res, device_frame): + clean_bbs = bbs_full_res if self.config.sf_enabled else None + + # if self.config.sf_enabled and bbs_full_res is not None: + # if torch.is_tensor(bbs_full_res): + # # Check hardware registry constraints dynamically + # if bbs_full_res.is_cuda: + # # 🚀 GPU Target: Stage non-blocking fast copy into page-locked host memory + # # via PCIe DMA background channels to completely bypass lock-stalls + # # pinned_host_tensor = bbs_full_res.detach()#.to( + # # # device="cpu", + # # # non_blocking=True, + # # # memory_format=torch.contiguous_format, + # # # ) + # # clean_bbs = pinned_host_tensor.numpy() + + # # Moving the data to the host via non_blocking=True allows the PCIe + # # DMA engine to handle the transfer, freeing up your CPU thread context! + # cpu_tensor = bbs_full_res.detach().to(device="cpu", non_blocking=True) + + # # Extract the numpy array safely without triggering a global stream sync fence + # clean_bbs = cpu_tensor.numpy() + # else: + # # 🚀 CPU Target: Direct view mapping without triggering device-transfer hooks + # clean_bbs = bbs_full_res.detach().numpy() + # else: + # clean_bbs = np.array(bbs_full_res) + + # Layout tracking adjustments (Universal compatibility layer) + det_frame = device_frame + if torch.is_tensor(det_frame): + # det_frame = det_frame.contiguous() #byte() + + if det_frame.ndim == 4: + det_frame = det_frame.squeeze(0) # .permute(1, 2, 0) + # elif det_frame.shape == 3: + # det_frame = det_frame.permute(1, 2, 0) + + if not det_frame.is_contiguous(): + det_frame = det_frame.contiguous() + + return clean_bbs, det_frame + + def motion2metadata(self, merged, frame_count_target): + metadata = {} + if merged is not None and merged.shape[0] > 0: + # merged = merged / self.scales_tensor.cpu().numpy().reshape(-1, 4) + merged = merged.div(self.scales_tensor.view(-1, 4)) + + # Calculate area for each box: (xmax - xmin) * (ymax - ymin) + widths = merged[:, 2] - merged[:, 0] + heights = merged[:, 3] - merged[:, 1] + areas = widths * heights + # max_area = np.max(areas) if np.max(areas) > 0 else 1.0 + + if torch.is_tensor(areas): + # Use native PyTorch reduction math if areas is a device tensor block + raw_max = torch.max(areas).item() if areas.numel() > 0 else 0.0 + max_area = raw_max if raw_max > 0 else 1.0 + else: + # Fallback standard array parsing logic for host NumPy sequences + raw_max = np.max(areas) if len(areas) > 0 else 0.0 + max_area = raw_max if raw_max > 0 else 1.0 + + # Format motion results like detection results for evaluation + for i, bb in enumerate(merged): + disp_x, disp_y, disp_x2, disp_y2 = bb + disp_w = disp_x2 - disp_x + disp_h = disp_y2 - disp_y + + if disp_w > 2 and disp_h > 2: + obj_id = len(metadata) + # num_objs += 1 + framenum_str = f"{frame_count_target:04d}_{obj_id:04d}" + score = areas[i] / max_area + + metadata[framenum_str] = { + "frameId": int(frame_count_target), + "bbId": framenum_str, + "bbox": { + "x": int(disp_x), + "y": int(disp_y), + "height": int(disp_h), + "width": int(disp_w), + "object": "", + "object_det": { + "confidence": score, + "frameH": int(self.resize_h), + "frameW": int(self.resize_w), + }, + }, + } + + return metadata + + def initialize(self): + self.device = self.config.DEVICE + self.device_input = self.config.device_input + self.disp_w, self.disp_h = self.config.DISPLAY_FRAME_SIZE + self.resize_h, self.resize_w = [self.config.MODEL_H, self.config.MODEL_W] + # self.fixed_inference_batch = torch.empty( + # ( + # self.config.MODEL_MAX_BATCH_SIZE, + # 3, + # self.config.MODEL_H, + # self.config.MODEL_W, + # ), + # dtype=torch.half, + # device=self.device_input, + # ) + + # DEBUG FUNCTIONS -------------------------------------------- + def debug_save_mask(self, frame_source, frame_num, rois=None, gt_boxes=None): + debug_dir = self.result_dir / "debug_stages" / self._testMethodName / "mask" + debug_dir.mkdir(parents=True, exist_ok=True) + + save_path = ( + debug_dir / f"frame_{frame_num:04d}_mask.jpg" + ) # f"mask_{frame_num:04d}.jpg" + + # cv2.imwrite( + # # str(stage_debug_dir / f"frame_{f_num:04d}_stage6_threshold.jpg"), + # str(stage_debug_dir / f"frame_{self.frame_count_target:04d}_stagerois_merged.jpg"), + # display_frame, + # ) + + if frame_num > self.config.DEBUG_FRAME_LIMIT: + return + + # # Download or copy the data + # if hasattr(frame_source, "download"): + # img_cpu = frame_source.download() + # elif torch.is_tensor(frame_source): + # # .contiguous() fixes the horizontal "shredding"/static look + # temp = frame_source.squeeze(0) if frame_source.ndim == 4 else frame_source + # img_cpu = temp.permute(1, 2, 0).contiguous().cpu().numpy() + # else: + # # For numpy arrays (like your pinned memory), ensure memory is linear + # img_cpu = np.ascontiguousarray(frame_source) + + # # Fix Visibility (Normalization) + # # If float, scale to 0-255. If uint8, leave as is to avoid "neon" colors. + # if img_cpu.dtype != np.uint8: + # if img_cpu.max() <= 1.0: + # img_cpu = (img_cpu * 255).clip(0, 255).astype(np.uint8) + # else: + # img_cpu = img_cpu.astype(np.uint8) + + # Download/Copy the frame + if torch.is_tensor(frame_source): + # .contiguous() is CRITICAL here to fix the "shredded" look + temp = frame_source.squeeze(0) if frame_source.ndim == 4 else frame_source + # img_cpu = temp.permute(1, 2, 0).contiguous().cpu().numpy() + img_cpu = temp.contiguous().cpu().numpy() + img_cpu = cv2.cvtColor(img_cpu, cv2.COLOR_RGB2BGR) + elif hasattr(frame_source, "download"): + img_cpu = frame_source.download() + else: + img_cpu = np.ascontiguousarray(frame_source) + + # Fix Shape: restore spatial grid if flattened + if img_cpu.ndim == 3 and img_cpu.shape[0] == 1: + img_cpu = img_cpu.reshape((self.resize_h, self.resize_w, 3)) + + # Fix Visibility: ONLY multiply if it's actually floating point + # If uint8 is multiplied by 255, it wraps around and creates "neon" colors + if img_cpu.dtype != np.uint8: + if img_cpu.max() <= 1.0: + img_cpu = (img_cpu * 255).clip(0, 255).astype(np.uint8) + else: + img_cpu = img_cpu.astype(np.uint8) + + # Color Space: Standardize to BGR for imwrite + if len(img_cpu.shape) != 3: + img_cpu = cv2.cvtColor(img_cpu, cv2.COLOR_GRAY2BGR) + + h_img, w_img = img_cpu.shape[:2] + scale_x = float(w_img) / self.frame_width + scale_y = float(h_img) / self.frame_height + if gt_boxes is not None: + # Factor for converting 8K (original) bb dimensions to display dimensions + # disp_w, disp_h = inf_data["mask"].shape[:2] if hasattr(inf_data["mask"], "shape") else inf_data["mask"].size() + # scale_display_ox = disp_w / self.frame_width + # scale_display_oy = disp_h / self.frame_height + + img_cpu = get_bb_overlay( + img_cpu, + gt_boxes, + (scale_x, scale_y), + (w_img, h_img), + color=(0, 255, 0), # green + ) + + # Draw 8K Boxes (Scaled down) + if rois is not None and len(rois) > 0: + boxes = rois.cpu().tolist() if torch.is_tensor(rois) else rois + for box in boxes: + x1, y1, x2, y2 = [ + # int(box[0] * scale_x), + # int(box[1] * scale_y), + # int(box[2] * scale_x), + # int(box[3] * scale_y), + max(0, int(box[0] * scale_x)), + max(0, int(box[1] * scale_y)), + min(w_img - 1, int(box[2] * scale_x)), + min(h_img - 1, int(box[3] * scale_y)), + ] + cv2.rectangle(img_cpu, (x1, y1), (x2, y2), (0, 0, 255), 2) + + # Save to disk + cv2.imwrite(str(save_path), img_cpu) + del img_cpu + + def debug_save_img_roi(self, frame_source, bbs_full_res, frame_num, gt_boxes=None): + debug_dir = self.result_dir / "debug_stages" / self._testMethodName / "img_roi" + debug_dir.mkdir(parents=True, exist_ok=True) + + # out_filename = str(debug_dir / f"analysis_{frame_num:04d}.jpg") + save_path = debug_dir / f"frame_{frame_num:04d}_analysis.jpg" + + if frame_num > self.config.DEBUG_FRAME_LIMIT: + return + + # Download/Copy the frame + if torch.is_tensor(frame_source): + # .contiguous() is CRITICAL here to fix the "shredded" look + temp = frame_source.squeeze(0) if frame_source.ndim == 4 else frame_source + img_cpu = temp.permute(1, 2, 0).contiguous().cpu().numpy() + elif hasattr(frame_source, "download"): + img_cpu = frame_source.download() + else: + img_cpu = np.ascontiguousarray(frame_source) + + # Fix Shape: restore spatial grid if flattened + if img_cpu.ndim == 3 and img_cpu.shape[0] == 1: + img_cpu = img_cpu.reshape((self.resize_h, self.resize_w, 3)) + + # Fix Visibility: ONLY multiply if it's actually floating point + # If uint8 is multiplied by 255, it wraps around and creates "neon" colors + if img_cpu.dtype != np.uint8: + if img_cpu.max() <= 1.0: + img_cpu = (img_cpu * 255).clip(0, 255).astype(np.uint8) + else: + img_cpu = img_cpu.astype(np.uint8) + + # Color Space: Standardize to BGR for imwrite + if len(img_cpu.shape) != 3: + img_cpu = cv2.cvtColor(img_cpu, cv2.COLOR_GRAY2BGR) + + # Draw 8K Boxes (Scaled down) + h_img, w_img = img_cpu.shape[:2] + scale_x = w_img / self.frame_width + scale_y = h_img / self.frame_height + + if gt_boxes is not None: + # Factor for converting 8K (original) bb dimensions to display dimensions + # disp_w, disp_h = inf_data["mask"].shape[:2] if hasattr(inf_data["mask"], "shape") else inf_data["mask"].size() + # scale_display_ox = disp_w / self.frame_width + # scale_display_oy = disp_h / self.frame_height + + img_cpu = get_bb_overlay( + img_cpu, + gt_boxes, + (scale_x, scale_y), + (w_img, h_img), + color=(0, 255, 0), # green + ) + + if bbs_full_res is not None: + boxes = ( + bbs_full_res.cpu().tolist() + if torch.is_tensor(bbs_full_res) + else bbs_full_res + ) + # Annotate Box to image shape + for box in boxes: + x1, y1, x2, y2 = [ + max(0, int(box[0] * scale_x)), + max(0, int(box[1] * scale_y)), + min(w_img - 1, int(box[2] * scale_x)), + min(h_img - 1, int(box[3] * scale_y)), + ] + img_cpu = cv2.rectangle(img_cpu, (x1, y1), (x2, y2), (0, 0, 255), 2) + + cv2.imwrite(str(save_path), img_cpu) + del img_cpu + + def debug_save_crops(self, cropped_batch, frame_num): + """Saves the first 5 crops of a batch to the results directory.""" + debug_dir = self.result_dir / "debug_stages" / self._testMethodName / "crops" + # debug_dir = self.result_dir / "debug_stages" / self._testMethodName + debug_dir.mkdir(parents=True, exist_ok=True) + + # Only save for the first self.config.DEBUG_FRAME_LIMIT frames to avoid disk bloat + if frame_num > self.config.DEBUG_FRAME_LIMIT: + return + + for i, crop in enumerate(cropped_batch[: self.config.DEBUG_FRAME_LIMIT]): + # Convert GPU Tensor [C, H, W] -> NumPy [H, W, C] + if torch.is_tensor(crop): + # Reverse normalization (* 255) and permute to BGR + # img = (crop.squeeze(0).permute(1, 2, 0) * 255).byte().cpu().numpy() + temp = crop.squeeze(0) if crop.ndim == 4 else crop + # Flip the color channels from RGB to BGR before any extraction utilities run + # Flips only the first axis (channels) from [0, 1, 2] to [2, 1, 0] + temp = torch.flip(temp, dims=[0]) + img = temp.permute(1, 2, 0).contiguous().cpu().numpy() + # img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR) + else: + img = crop + + if img.dtype != np.uint8: + if img.max() <= 1.0: + img = (img * 255).clip(0, 255).astype(np.uint8) + else: + img = img.astype(np.uint8) + + cv2.imwrite(str(debug_dir / f"frame_{frame_num}_crop_{i}.jpg"), img) + + del img + + def debug_save_img(self, frame_source, frame_num): + debug_dir = self.result_dir / "debug_stages" / self._testMethodName / "img" + debug_dir.mkdir(parents=True, exist_ok=True) + + if frame_num > self.config.DEBUG_FRAME_LIMIT: + return + + # Download/Copy the frame + if torch.is_tensor(frame_source): + # .contiguous() is CRITICAL here to fix the "shredded" look + temp = frame_source.squeeze(0) if frame_source.ndim == 4 else frame_source + img_cpu = temp.permute(1, 2, 0).contiguous().cpu().numpy() + elif hasattr(frame_source, "download"): + img_cpu = frame_source.download() + else: + img_cpu = np.ascontiguousarray(frame_source) + + # Fix Shape: restore spatial grid if flattened + if img_cpu.ndim == 3 and img_cpu.shape[0] == 1: + img_cpu = img_cpu.reshape((self.resize_h, self.resize_w, 3)) + + # Fix Visibility: ONLY multiply if it's actually floating point + # If uint8 is multiplied by 255, it wraps around and creates "neon" colors + if img_cpu.dtype != np.uint8: + if img_cpu.max() <= 1.0: + img_cpu = (img_cpu * 255).clip(0, 255).astype(np.uint8) + else: + img_cpu = img_cpu.astype(np.uint8) + + # Color Space: Standardize to BGR for imwrite + if len(img_cpu.shape) == 3: + pass + else: + img_cpu = cv2.cvtColor(img_cpu, cv2.COLOR_GRAY2BGR) + + cv2.imwrite(str(debug_dir / f"analysis_{frame_num:04d}.jpg"), img_cpu) + del img_cpu + + +class GeneralObjectDetector(BaseObjectDetector): + def initialize(self): + super().initialize() + + if self.device_input == "cuda": + self.gpu_id = 0 + self.device_index = f"cuda:{self.gpu_id}" + self.inference_stream = torch.cuda.Stream() + + self.gpu_float_staging = torch.empty( + (1, 3, self.frame_height, self.frame_width), + dtype=torch.float16, + device=self.device_index, + ) + + if self.timer_enabled: + self.det_start, self.det_end = ( + torch.cuda.Event(enable_timing=True), + torch.cuda.Event(enable_timing=True), + ) + else: + self.device_index = "cpu" + + def run( + self, device_frame, overall_frame_num, frame_in_clip_count=0, gt_boxes=None + ): + if self.config.DETECTION_TYPE == "motion": + main_app_logger.info( + "[SKIP] Invalid type (motion) for GeneralObjectDetector!" + ) + return + + metrics = { + "sf_time": 0, + "roi_time": 0, + "det_time": 0, + "bbs": None, + "batch_density": 1, + } + inf_data = {} + bbs_full_res = None + motion_detected = True # Uses all frames for evaluation + inf_data["frameNum"] = overall_frame_num + + # Format BBs for Detection + merged, det_frame = self.format_bbs_and_frame_4_detection( + bbs_full_res, device_frame + ) + + try: + if ( + self.config.DEBUG_FLAG + and overall_frame_num <= self.config.DEBUG_FRAME_LIMIT + ): + self.debug_save_mask( + det_frame, overall_frame_num, rois=merged, gt_boxes=gt_boxes + ) + + if not self.config.DISABLE_DETECTION: + # --- 3. MODEL INFERENCE TIMING BLOCK --- + if self.device_input == "cuda" and self.timer_enabled: + self.det_start.record(self.inference_stream) + elif self.timer_enabled: + t_start = time.perf_counter() + + metadata, _ = self.get_detections( + det_frame, + frame_in_clip_count, + device_input=self.config.device_input, + ) + + # num_objs = len(metadata.keys()) + + if self.device_input == "cuda" and self.timer_enabled: + self.det_end.record(self.inference_stream) + # self.inference_stream.synchronize() + + # Lock-free check: wait for event completion without blocking the CPU GIL + while not self.det_end.query(): + # Yield GIL to let file-writers and thread-pools work + time.sleep(0.001) + # self.det_end.synchronize() + # Leverages the hardware driver scheduler without thread polling overhead + # if hasattr(self, "inference_stream"): + # self.inference_stream.synchronize() + + # Full-frame YOLO baseline tracks the elapsed time from t_start on page 20, line 1273 + metrics["det_time"] = self.det_start.elapsed_time(self.det_end) + + elif self.timer_enabled: + # CPU Path Execution: Must use standard wall-clock timing loops to avoid CUDA Event errors + metrics["det_time"] = (time.perf_counter() - t_start) * 1000.0 + + except Exception: + traceback.print_exc() + finally: + del merged, bbs_full_res + return metrics, metadata, det_frame, motion_detected + + @torch.inference_mode() + def get_detections(self, frame, frame_id, device_input="cuda"): + metadata = {} + num_objs = 0 + + with torch.inference_mode(): + if isinstance(frame, torch.Tensor): + if frame.ndim == 3 and frame.shape[-1] == 3: + with self.compiled_no_grad_gate: + # 1. Transform from [4320, 7680, 3] to [3, 4320, 7680] + # 2. Unsqueeze(0) converts it to the required [1, 3, 4320, 7680] shape format + frame_inference = ( + frame.permute(2, 0, 1).contiguous().unsqueeze(0) + ) + else: + frame_inference = frame.contiguous() + else: + frame_inference = frame + + H, W = frame_inference.shape[-2:] + target_imgsz = (int(H), int(W)) + scale_display_x = self.resize_w / W # 640 / 8192 + scale_display_y = self.resize_h / H # 640 / 4608 + results = self.run_model( + frame_inference, + imgsz=target_imgsz, + batch=1, + device_input=device_input, + stream=STREAM_ARG, + ) + + # Extract full resolution detections + if results and len(results) > 0: + boxes = results[0].boxes + if boxes is not None and len(boxes) > 0: + # OPTIMIZATION: Download coordinates as a unified batch array block to drop PCIe latency + batch_coords = boxes.xywh.cpu().numpy() + batch_cls = boxes.cls.cpu().numpy().astype(np.int32) + batch_conf = boxes.conf.cpu().numpy() + # for idx, box in enumerate(boxes): + # # coords = box.xywh[0].cpu().tolist() # [x_center, y_center, width, height] + # # cls_id = int(box.cls[0].cpu().item()) + # # conf = float(box.conf[0].cpu().item()) + # coords = ( + # box.xywh.cpu().squeeze().tolist() + # ) # Converts [x_center, y_center, w, h] safely + # cls_id = int(box.cls.cpu().item()) + # class_name = self.label_source[cls_id] + # confidence = float(box.conf.cpu().item()) + for idx in range(len(batch_coords)): + coords = batch_coords[idx] + cls_id = batch_cls[idx] + class_name = self.label_source[cls_id] + confidence = float(batch_conf[idx]) + + # Guard against un-squeezed structural lists + if isinstance(coords[0], list): + coords = coords[0] + + # Convert center bounds coordinates back to upper-left origin layout standard + # and scale to 640x640 + disp_x = (coords[0] - (coords[2] / 2.0)) * scale_display_x + disp_y = (coords[1] - (coords[3] / 2.0)) * scale_display_y + disp_w = coords[2] * scale_display_x + disp_h = coords[3] * scale_display_y + + # ---------------------------------- + # TODO: Need function, same for SF and non-SF + if disp_w > 2 and disp_h > 2: + # Resized + object_res = [ + int(disp_x), # int(abs_x1 * scale_x), + int(disp_y), # int(abs_y1 * scale_y), + int(disp_h), # int(height * scale_y), + int(disp_w), # int(width * scale_x), + class_name, + confidence, + int(self.resize_h), + int(self.resize_w), + ] + + obj_id = len(metadata) + num_objs += 1 + framenum_str = f"{frame_id:04d}_{obj_id:04d}" + metadata[framenum_str] = { + "frameId": int(frame_id), + "bbId": framenum_str, + "bbox": { + "x": int(object_res[0]), + "y": int(object_res[1]), + "height": int(object_res[2]), + "width": int(object_res[3]), + "object": str(object_res[4]), + "object_det": { + "confidence": float(object_res[5]), + "frameH": int(object_res[6]), + "frameW": int(object_res[7]), + }, + }, + } + # ---------------------------------- + + if "boxes" in locals(): + del boxes + if "results" in locals(): + del results + + del frame, frame_inference + if "cuda" in device_input: + torch.cuda.empty_cache() + return metadata, num_objs + + +# Create a dummy object representing the interface +class GPUHolder: + def __init__(self, interface): + self.__cuda_array_interface__ = interface + + +class SmartFilteringObjectDetector(BaseObjectDetector): + def initialize(self): + super().initialize() + + self.scale_x = self.frame_width / self.resize_w + self.scale_y = self.frame_height / self.resize_h + + self.min_roi_w = int(self.config.ROI_MIN_AREA_RATIO * self.resize_w) + self.min_roi_h = int(self.config.ROI_MIN_AREA_RATIO * self.resize_h) + self.max_roi_w = int(self.resize_w * self.config.ROI_MAX_RELATIVE_SIZE_RATIO) + self.max_roi_h = int(self.resize_h * self.config.ROI_MAX_RELATIVE_SIZE_RATIO) + self.max_cached_elements = 100 + # Pre-allocate a single static tensor to hold the non-zero indices. + # For a 640x640 mask, there are at most 409,600 pixels. + # This pre-allocates a static ~3.2MB buffer in VRAM once. + self.coords_scratchpad = torch.empty( + (self.config.MODEL_H * self.config.MODEL_W, 2), + dtype=torch.long, + device="cuda", + ) + + # Pre-allocate a static box container for up to 100 candidate ROIs + # Sized [100, 4] for [x1, y1, x2, y2] + self.static_boxes_out = torch.empty( + (self.max_cached_elements, 4), dtype=torch.float32, device="cuda" + ) + + # Default Kernels + self.dilate_kernel = cv2.getStructuringElement( + cv2.MORPH_ELLIPSE, + # cv2.MORPH_RECT, + (self.config.DILATE_KERNEL_SIZE, self.config.DILATE_KERNEL_SIZE), + ) + # self.dilate_kernel_for_enhanced_mask = np.ones((15,15), np.uint8) # 5, 5) (21, 21) + self.dilate_kernel_for_enhanced_mask = cv2.getStructuringElement( + cv2.MORPH_ELLIPSE, + # cv2.MORPH_RECT, + ( + self.config.BKGD_SUB_INCLUDE_HISTORY_DILATE_KERNEL_SIZE, + self.config.BKGD_SUB_INCLUDE_HISTORY_DILATE_KERNEL_SIZE, + ), + ) + + # Determine minimum contour size relative to frame resolution + self.min_contour_area = int((self.min_roi_h) * (self.min_roi_h)) # 207 + + self.dist_thresh_8k = max( + self.config.ROI_DISTANCE_THRESH_RATIO * self.frame_width, + self.config.ROI_DISTANCE_THRESH_RATIO * self.frame_height, + ) + multiplier = 2.0 if self.device_input == "cpu" else 1.0 + self.dist_thresh_640 = ( + max( + self.config.ROI_DISTANCE_THRESH_RATIO * self.resize_w, + self.config.ROI_DISTANCE_THRESH_RATIO * self.resize_h, + ) + * multiplier + ) # 0.05 * self.resize_w + + if not hasattr(self, "static_canvas_scratch"): + self.static_canvas_scratch = torch.full( + (640, 640, 3), + fill_value=114, + dtype=torch.uint8, + device=self.device_input, + ) + if self.device_input == "cuda": + self.init_gpu_pipeline() + else: + self.init_cpu_pipeline() + + self.scales_tensor = torch.tensor( + [self.scale_x, self.scale_y, self.scale_x, self.scale_y], + device=self.device_index, + ) + + self.fixed_inference_batch = torch.empty( + ( + self.config.MODEL_MAX_BATCH_SIZE, + 3, + self.config.MODEL_H, + self.config.MODEL_W, + ), + dtype=torch.half, + device=self.device_input, + ) + + def run( + self, device_frame, overall_frame_num, frame_in_clip_count=0, gt_boxes=None + ): + if self.device_input == "cuda": + return self.run_gpu_pipeline( + device_frame, overall_frame_num, frame_in_clip_count + ) + else: + return self.run_cpu_pipeline( + device_frame, overall_frame_num, frame_in_clip_count + ) + + # v1 + # def get_detections_v1( + # self, frame, frame_id, device_input="cuda", merged=None, thickness=2 + # ): + # metadata = {} + # if merged is None or len(merged) == 0: + # return metadata, 0 + + # is_cuda = device_input == "cuda" + # num_objs = 0 + + # # FIX 1: Pre-cache class property values onto local function registers + # # Bypasses repeated slow overhead parsing blocks inside the hot box-loop + # max_batch_size = getattr(self.config, "MODEL_MAX_BATCH_SIZE", 64) + # target_crop_size = self.config.MODEL_W + # resize_w_factor = self.resize_w / self.frame_width + # resize_h_factor = self.resize_h / self.frame_height + # resize_h_int = int(self.resize_h) + # resize_w_int = int(self.resize_w) + + # if is_cuda and isinstance(frame, torch.Tensor): + # src_tensor = frame.squeeze(0) if frame.ndim == 4 else frame + # if src_tensor.shape[-1] == 3: + # src_tensor = src_tensor.permute(2, 0, 1) + # src_h, src_w = src_tensor.shape[-2:] + # else: + # src_tensor = np.asarray(frame) + # if src_tensor.ndim == 4: + # src_tensor = src_tensor[0] + # src_h, src_w = src_tensor.shape[:2] + + # results_pool = [] + # patch_coordinates = [] + # patch_idx = 0 + + # # ----------------------------------------------------------------- + # # STEP 1: VECTORIZED SWEEP & DIRECT-WRITE MATRIX POOL + # # ----------------------------------------------------------------- + # roi_patches = [] + # for box in merged: + # if patch_idx >= max_batch_size: + # break + + # # FIX 2: Bypassing hasattr() check loop hooks entirely + # # Directly extract standard bounding elements as fast local scalars + # box_data = box.tolist() if hasattr(box, "tolist") else box + # x1_raw, y1_raw, x2_raw, y2_raw = ( + # box_data[0], + # box_data[1], + # box_data[2], + # box_data[3], + # ) + + # w_raw = x2_raw - x1_raw + # h_raw = y2_raw - y1_raw + # cx = (x1_raw + x2_raw) * 0.5 + # cy = (y1_raw + y2_raw) * 0.5 + + # w_cushioned = w_raw + (target_crop_size * 0.1) + # h_cushioned = h_raw + (target_crop_size * 0.1) + + # crop_w = max(w_cushioned, target_crop_size) + # crop_h = max(h_cushioned, target_crop_size) + + # x1 = cx - (crop_w / 2.0) + # y1 = cy - (crop_h / 2.0) + # x2 = cx + (crop_w / 2.0) + # y2 = cy + (crop_h / 2.0) + + # shift_left = max(0.0, 0.0 - x1) + # shift_right = max(0.0, x2 - src_w) + # x1 += shift_left - shift_right + # x2 += shift_left - shift_right + + # shift_top = max(0.0, 0.0 - y1) + # shift_bottom = max(0.0, y2 - src_h) + # y1 += shift_top - shift_bottom + # y2 += shift_top - shift_bottom + + # x1, y1 = max(0, int(x1)), max(0, int(y1)) + # x2, y2 = min(src_w, int(x2)), min(src_h, int(y2)) + + # box_w, box_h = x2 - x1, y2 - y1 + # if box_w < 8 or box_h < 8: + # continue + + # scale = min(target_crop_size / box_w, target_crop_size / box_h) + # nw, nh = int(max(1, box_w * scale)), int(max(1, box_h * scale)) + # dx = (target_crop_size - nw) // 2 + # dy = (target_crop_size - nh) // 2 + + # if is_cuda and isinstance(src_tensor, torch.Tensor): + # # with torch.no_grad(): + # crop = src_tensor[:, y1:y2, x1:x2] + # crop_resized = F.interpolate( + # crop.unsqueeze(0), + # size=(nh, nw), + # mode="nearest", + # ).squeeze(0) + + # self.fixed_inference_batch[patch_idx].fill_(114.0) + # self.fixed_inference_batch[patch_idx][ + # :, dy : dy + nh, dx : dx + nw + # ].copy_(crop_resized, non_blocking=True) + + # else: + # crop = src_tensor[y1:y2, x1:x2] + # crop_resized = cv2.resize( + # crop, (nw, nh), interpolation=cv2.INTER_NEAREST + # ) + # padded_canvas = np.empty( + # (target_crop_size, target_crop_size, 3), dtype=np.uint8 + # ) + # padded_canvas.fill(114) + # padded_canvas[dy : dy + nh, dx : dx + nw] = crop_resized + + # self.fixed_inference_batch[patch_idx].copy_( + # torch.from_numpy(padded_canvas).permute(2, 0, 1), non_blocking=True + # ) + + # if self.debug_frame_limit > -1: + # roi_patches.append(self.fixed_inference_batch[patch_idx]) + # patch_coordinates.append((x1, y1, box_w, box_h, scale, dx, dy)) + # patch_idx += 1 + + # if patch_idx == 0: + # return {}, 0 + + # if ( + # self.debug_frame_limit > -1 + # ): # and self.config.DEBUG_FLAG and hasattr(self, "debug_save_crops") and len(roi_patches) > 0: + # self.debug_save_crops(roi_patches, frame_id) + # roi_patches = [] + + # # ----------------------------------------------------------------- + # # STEP 2: INSTANT NON-BLOCKING SUB-SLICE MODEL INGESTION + # # ----------------------------------------------------------------- + # # with torch.inference_mode(): + # inference_batch = self.fixed_inference_batch[:patch_idx].clone() + # batch_res = self.run_model( + # inference_batch, + # imgsz=(target_crop_size, target_crop_size), + # batch=patch_idx, + # device_input=device_input, + # stream=STREAM_ARG, + # ) + # results_pool.extend(batch_res) + + # if is_cuda and hasattr(self, "inference_stream"): + # self.inference_stream.synchronize() + # # ----------------------------------------------------------------- + # # OPTIMIZED STEP 3: TRUE BATCHED DEVICE HANDOFF (0ms LOCKS) + # # ----------------------------------------------------------------- + # main_xyxy_list = [] + # main_cls_list = [] + # main_conf_list = [] + # patch_mapping_indices = [] + + # # 1. Asynchronously collect the raw VRAM references from the model pool + # for idx, res in enumerate(results_pool): + # if res.boxes is not None and len(res.boxes) > 0: + # # Gather underlying torch.Tensor GPU pointer segments straight out of memory + # main_xyxy_list.append(res.boxes.data[:, 0:4]) + # main_cls_list.append(res.boxes.data[:, 5]) + # main_conf_list.append(res.boxes.data[:, 4]) + # # Track how many objects belong to this patch index to map them back later + # patch_mapping_indices.append((idx, len(res.boxes))) + + # if len(main_xyxy_list) == 0: + # return {}, 0 + + # # if len(main_xyxy_list) > 0: + # # with torch.inference_mode(): + # # 2. Vectorized GPU Concatenation + # # Stacks independent slices into uniform, single-pass matrices entirely on the GPU + # all_main_xyxy = torch.cat(main_xyxy_list, dim=0) + # all_main_clss = torch.cat(main_cls_list, dim=0) + # all_main_confs = torch.cat(main_conf_list, dim=0) + + # num_detected = int(all_main_xyxy.shape[0]) + # num_clss = int(all_main_clss.shape[0]) + # num_confs = int(all_main_confs.shape[0]) + + # if is_cuda: + # # Perform fast, non-blocking asynchronous streaming transfers across the PCIe bus + # self.pinned_cpu_xyxy[:num_detected].copy_(all_main_xyxy, non_blocking=True) + # cuda_int_clss = all_main_clss.to(torch.int32) + # self.pinned_cpu_clss[:num_clss].copy_(cuda_int_clss, non_blocking=True) + # self.pinned_cpu_confs[:num_confs].copy_(all_main_confs, non_blocking=True) + + # # Synchronize ONLY the specific inference stream handle right before reading on host + # # self.inference_stream.synchronize() + # if not hasattr(self, "_dma_fence_event"): + # self._dma_fence_event = torch.cuda.Event() + # self._dma_fence_event.record(self.inference_stream) + # self._dma_fence_event.synchronize() + + # all_cpu_xyxy = self.pinned_cpu_xyxy[:num_detected].numpy() + # all_cpu_clss = self.pinned_cpu_clss[:num_clss].numpy().flatten() + # all_cpu_confs = self.pinned_cpu_confs[:num_confs].numpy().flatten() + # else: + # all_cpu_xyxy = all_main_xyxy.cpu().numpy() + # all_cpu_clss = all_main_clss.cpu().numpy().astype(np.int32).flatten() + # all_cpu_confs = all_main_confs.cpu().numpy().flatten() + + # # Global tracking increment initialization + # global_box_ptr = 0 + # total_available_boxes = len(all_cpu_clss) + + # # 4. Map detections back to global metadata layout space using our scalar index pointers + # for idx, num_boxes in patch_mapping_indices: + # ox1, oy1, box_w, box_h, scale, dx, dy = patch_coordinates[idx] + + # for _ in range(num_boxes): + # if global_box_ptr >= total_available_boxes: + # break + + # lx1, ly1, lx2, ly2 = all_cpu_xyxy[global_box_ptr] + # class_id = int(all_cpu_clss[global_box_ptr]) + # # if class_id < len(self.label_source): + # try: + # if class_id >= 0 and class_id < len(self.label_source): + # class_name = self.label_source[class_id] + # else: + # class_name = "unknown" + # except Exception: + # traceback.print_exc() + + # confidence = float(all_cpu_confs[global_box_ptr]) + + # lx1_unpadded = lx1 - dx + # ly1_unpadded = ly1 - dy + # lx2_unpadded = lx2 - dx + # ly2_unpadded = ly2 - dy + + # global_x1 = ox1 + (lx1_unpadded / scale) + # global_y1 = oy1 + (ly1_unpadded / scale) + # global_x2 = ox1 + (lx2_unpadded / scale) + # global_y2 = oy1 + (ly2_unpadded / scale) + + # disp_x = int(global_x1 * resize_w_factor) + # disp_y = int(global_y1 * resize_h_factor) + # disp_x2 = int(global_x2 * resize_w_factor) + # disp_y2 = int(global_y2 * resize_h_factor) + + # disp_w = disp_x2 - disp_x + # disp_h = disp_y2 - disp_y + + # if disp_w > 2 and disp_h > 2 and class_name != "unknown": + # num_objs += 1 + # obj_id = num_objs - 1 + # framenum_str = f"{frame_id:04d}_{obj_id:04d}" + # metadata[framenum_str] = { + # "frameId": int(frame_id), + # "bbId": framenum_str, + # "bbox": { + # "x": disp_x, + # "y": disp_y, + # "height": disp_h, + # "width": disp_w, + # "object": class_name, + # "object_det": { + # "confidence": confidence, + # "frameH": resize_h_int, + # "frameW": resize_w_int, + # }, + # }, + # } + + # global_box_ptr += 1 + + # # Clean local tensor references to protect unmanaged memory scopes + # crop = None + # del ( + # crop, + # patch_coordinates, + # results_pool, + # main_xyxy_list, + # main_cls_list, + # main_conf_list, + # ) + # return metadata, num_objs + + # v2 + @torch.inference_mode() + def get_detections_v2( + self, frame, frame_id, device_input="cuda", merged=None, thickness=2 + ): + metadata = {} + if merged is None or len(merged) == 0: + return metadata, 0 + + num_boxes = merged.shape[0] + if num_boxes == 0: + return {}, 0 + + target_h, target_w = (self.config.MODEL_H, self.config.MODEL_W) + + # ========================================================================= + # STEP 1: VECTORIZED MATH FOR CUSHION & LETTERBOX PADDING + # ========================================================================= + + # 1a. Apply 10% Cushion to original boxes + cushion = target_w * 0.1 + + x1_t = (merged[:, 0] - cushion).clamp(min=0) + y1_t = (merged[:, 1] - cushion).clamp(min=0) + x2_t = (merged[:, 2] + cushion).clamp(max=self.frame_width) + y2_t = (merged[:, 3] + cushion).clamp(max=self.frame_height) + + # 1b. Calculate scaled dimensions to fit within target size (preserving aspect ratio) + box_w = (x2_t - x1_t).clamp(min=1) + box_h = (y2_t - y1_t).clamp(min=1) + + scale = torch.min(target_w / box_w, target_h / box_h) + + new_w = (box_w * scale).int() + new_h = (box_h * scale).int() + + pad_x = (target_w - new_w) // 2 + pad_y = (target_h - new_h) // 2 + + # ========================================================================= + # STEP 2: HIGH-SPEED CROPPING & RESIZING LOOP + # ========================================================================= + + # Ensure frame is CHW and float for F.interpolate + if frame.dim() == 3: + if frame.shape[2] == 3: + frame_chw = frame.permute(2, 0, 1).float() + else: + frame_chw = frame.float() + elif frame.dim() == 4: + frame_chw = frame.squeeze(0).float() + if frame_chw.shape[2] == 3: + frame_chw = frame_chw.permute(2, 0, 1) + else: + frame_chw = frame.float() + + # Determine correct gray padding value (114 for 0-255 range, 114/255 for 0-1 range) + gray_val = ( + 114.0 / 255.0 + if getattr(self, "normalize", False) or frame_chw.max() <= 1.0 + else 114.0 + ) + + padded_batch = torch.full( + (num_boxes, 3, target_h, target_w), + gray_val, + device=frame.device, + dtype=torch.float32, + ) + + # CRITICAL PERFORMANCE FIX: Extract tensors to fast Python lists + # This prevents the loop from halting to sync CPU/GPU on every single slice iteration + x1_c = x1_t.int().tolist() + y1_c = y1_t.int().tolist() + x2_c = x2_t.int().tolist() + y2_c = y2_t.int().tolist() + nw_c = new_w.tolist() + nh_c = new_h.tolist() + px_c = pad_x.tolist() + py_c = pad_y.tolist() + + for i in range(num_boxes): + # 1. Slice cushioned box + crop = frame_chw[:, y1_c[i] : y2_c[i], x1_c[i] : x2_c[i]].unsqueeze(0) + + # 2. Resize maintaining aspect ratio exactly once + crop_resized = F.interpolate( + crop, size=(nh_c[i], nw_c[i]), mode="bilinear", align_corners=False + ) + + # 3. Paste into the center of the padded gray canvas + padded_batch[ + i, :, py_c[i] : py_c[i] + nh_c[i], px_c[i] : px_c[i] + nw_c[i] + ] = crop_resized.squeeze(0) + + self.fixed_inference_batch[:num_boxes] = padded_batch.to( + self.fixed_inference_batch.dtype + ) + + # ========================================================================= + # STEP 3: MODEL INFERENCE + # ========================================================================= + batch_res = self.run_model( + self.fixed_inference_batch[:num_boxes], + imgsz=(target_h, target_w), + batch=num_boxes, + device_input=device_input, + stream=STREAM_ARG, + ) + + # ========================================================================= + # STEP 4: BATCHED COORDINATE TRANSLATION + # ========================================================================= + all_detections = [] + detection_to_crop_map = [] + + for i, res in enumerate(batch_res): + if res.boxes is not None and len(res.boxes) > 0: + all_detections.append(res.boxes.data) + detection_to_crop_map.extend([i] * len(res.boxes)) + + if not all_detections: + return {}, 0 + + all_detections_tensor = torch.cat(all_detections, dim=0) + detection_to_crop_map = torch.tensor( + detection_to_crop_map, device=merged.device, dtype=torch.long + ) + + # Coordinates are local to the 640x640 padded input + local_boxes = all_detections_tensor[:, :4] + + # Get the mapping variables for each specific detection + scale_map = scale[detection_to_crop_map] + pad_x_map = pad_x[detection_to_crop_map] + pad_y_map = pad_y[detection_to_crop_map] + orig_x1_map = x1_t[detection_to_crop_map] + orig_y1_map = y1_t[detection_to_crop_map] + + # 4a. Remove padding offset and rescale to original cushioned crop dimensions + unpadded_x1 = (local_boxes[:, 0] - pad_x_map) / scale_map + unpadded_y1 = (local_boxes[:, 1] - pad_y_map) / scale_map + unpadded_x2 = (local_boxes[:, 2] - pad_x_map) / scale_map + unpadded_y2 = (local_boxes[:, 3] - pad_y_map) / scale_map + + # 4b. Add original cushioned crop's top-left corner to get global 8K coordinates + global_x1 = unpadded_x1 + orig_x1_map + global_y1 = unpadded_y1 + orig_y1_map + global_x2 = unpadded_x2 + orig_x1_map + global_y2 = unpadded_y2 + orig_y1_map + + # 4c. Scale from 8K to 640x640 metadata space + meta_scale_x = self.resize_w / self.frame_width + meta_scale_y = self.resize_h / self.frame_height + + meta_x1 = global_x1 * meta_scale_x + meta_y1 = global_y1 * meta_scale_y + meta_x2 = global_x2 * meta_scale_x + meta_y2 = global_y2 * meta_scale_y + + # ========================================================================= + # STEP 5: METADATA FORMATTING + # ========================================================================= + all_confs = all_detections_tensor[:, 4].cpu().numpy() + all_cls_ids = all_detections_tensor[:, 5].cpu().numpy().astype(int) + meta_boxes_cpu = ( + torch.stack([meta_x1, meta_y1, meta_x2, meta_y2], dim=1).cpu().numpy() + ) + + num_objs = 0 + for i in range(len(all_detections_tensor)): + class_id = all_cls_ids[i] + if class_id < 0 or class_id >= len(self.label_source): + continue + + disp_x, disp_y, disp_x2, disp_y2 = meta_boxes_cpu[i] + disp_w = disp_x2 - disp_x + disp_h = disp_y2 - disp_y + + if disp_w > 2 and disp_h > 2: + num_objs += 1 + obj_id = num_objs - 1 + framenum_str = f"{int(frame_id):04d}_{obj_id:04d}" + metadata[framenum_str] = { + "frameId": int(frame_id), + "bbId": framenum_str, + "bbox": { + "x": int(disp_x), + "y": int(disp_y), + "height": int(disp_h), + "width": int(disp_w), + "object": self.label_source[class_id], + "object_det": { + "confidence": float(all_confs[i]), + "frameH": int(self.resize_h), + "frameW": int(self.resize_w), + }, + }, + } + + del all_detections_tensor + return metadata, num_objs + + # v3 - reduce memory footprint + @torch.inference_mode() + def get_detections( + self, frame, frame_id, device_input="cuda", merged=None, thickness=2 + ): + metadata = {} + if merged is None or len(merged) == 0: + return metadata, 0 + + num_boxes = merged.shape[0] + if num_boxes == 0: + return {}, 0 + + target_h, target_w = (self.config.MODEL_H, self.config.MODEL_W) + + # ========================================================================= + # STEP 1: VECTORIZED MATH FOR CUSHION & LETTERBOX PADDING + # ========================================================================= + + # 1a. Apply 10% Cushion to original boxes + cushion = target_w * 0.1 + + x1_t = (merged[:, 0] - cushion).clamp(min=0).detach().cpu() + y1_t = (merged[:, 1] - cushion).clamp(min=0).detach().cpu() + x2_t = (merged[:, 2] + cushion).clamp(max=self.frame_width).detach().cpu() + y2_t = (merged[:, 3] + cushion).clamp(max=self.frame_height).detach().cpu() + + # 1b. Calculate scaled dimensions to fit within target size (preserving aspect ratio) + box_w = (x2_t - x1_t).clamp(min=1).detach().cpu() + box_h = (y2_t - y1_t).clamp(min=1).detach().cpu() + + scale = torch.min(target_w / box_w, target_h / box_h).detach().cpu() + + new_w = (box_w * scale).int() + new_h = (box_h * scale).int() + + pad_x = (target_w - new_w) // 2 + pad_y = (target_h - new_h) // 2 + + # ========================================================================= + # STEP 2: HIGH-SPEED CROPPING & RESIZING LOOP + # ========================================================================= + + # Ensure frame is CHW and float for F.interpolate + if frame.dim() == 3: + if frame.shape[2] == 3: + # frame_chw = frame.permute(2, 0, 1).float() + # Permute is just a "view" metadata change (0ms, 0 VRAM allocation) + permuted_view = frame.permute(2, 0, 1) + + # Copy and cast directly into our pre-allocated static float buffer in-place! + # This allocates 0 MB of new memory! + self.gpu_float_staging.copy_(permuted_view, non_blocking=True) + + # Now divide by 255.0 in-place to normalize (reuses the exact same float32 memory) + frame_chw = self.gpu_float_staging[0] # .div_(255.0) + else: + frame_chw = frame.float() + elif frame.dim() == 4: + frame_chw = frame.squeeze(0).float() + if frame_chw.shape[2] == 3: + frame_chw = frame_chw.permute(2, 0, 1) + else: + frame_chw = frame.float() + + # Determine correct gray padding value (114 for 0-255 range, 114/255 for 0-1 range) + gray_val = ( + 114.0 / 255.0 + if getattr(self, "normalize", False) or frame_chw.max() <= 1.0 + else 114.0 + ) + + # padded_batch = torch.full( + # (num_boxes, 3, target_h, target_w), + # gray_val, + # device=frame.device, + # dtype=torch.float32, + # ) + + # CRITICAL PERFORMANCE FIX: Extract tensors to fast Python lists + # This prevents the loop from halting to sync CPU/GPU on every single slice iteration + x1_c = x1_t.int().tolist() + y1_c = y1_t.int().tolist() + x2_c = x2_t.int().tolist() + y2_c = y2_t.int().tolist() + nw_c = new_w.tolist() + nh_c = new_h.tolist() + px_c = pad_x.tolist() + py_c = pad_y.tolist() + + for i in range(num_boxes): + # 1. Slice cushioned box + crop = frame_chw[:, y1_c[i] : y2_c[i], x1_c[i] : x2_c[i]].unsqueeze(0) + + # 2. Resize maintaining aspect ratio exactly once + crop_resized = F.interpolate( + crop, size=(nh_c[i], nw_c[i]), mode="bilinear", align_corners=False + ) + + # 3. Paste into the center of the padded gray canvas + # padded_batch[ + # i, :, py_c[i] : py_c[i] + nh_c[i], px_c[i] : px_c[i] + nw_c[i] + # ] = crop_resized.squeeze(0) + self.fixed_inference_batch[ + i, :, py_c[i] : py_c[i] + nh_c[i], px_c[i] : px_c[i] + nw_c[i] + ] = crop_resized.squeeze(0) + + # self.fixed_inference_batch[:num_boxes] = padded_batch.to( + # self.fixed_inference_batch.dtype + # ) + + # ========================================================================= + # STEP 3: MODEL INFERENCE + # ========================================================================= + + # ========================================================================= + # STEP 4: BATCHED COORDINATE TRANSLATION + # ========================================================================= + # all_detections = [] + # detection_to_crop_map = [] + num_objs = 0 + meta_scale_x = self.resize_w / self.frame_width + meta_scale_y = self.resize_h / self.frame_height + + with torch.no_grad(): + batch_res = self.run_model( + self.fixed_inference_batch[:num_boxes], + imgsz=(target_h, target_w), + batch=num_boxes, + device_input=device_input, + stream=STREAM_ARG, + ) + + for i, res in enumerate(batch_res): + if res.boxes is None or len(res.boxes) == 0: + del res + continue + + # Move data to CPU immediately to free VRAM + local_boxes = res.boxes.data.detach().cpu() + + # Get the mapping variables for each specific detection + scale_map = scale[i] + pad_x_map = pad_x[i] + pad_y_map = pad_y[i] + orig_x1_map = x1_t[i] + orig_y1_map = y1_t[i] + + # 4a. Remove padding offset and rescale to original cushioned crop dimensions + unpadded_x1 = (local_boxes[:, 0] - pad_x_map) / scale_map + unpadded_y1 = (local_boxes[:, 1] - pad_y_map) / scale_map + unpadded_x2 = (local_boxes[:, 2] - pad_x_map) / scale_map + unpadded_y2 = (local_boxes[:, 3] - pad_y_map) / scale_map + + # 4b. Add original cushioned crop's top-left corner to get global 8K coordinates + global_x1 = unpadded_x1 + orig_x1_map + global_y1 = unpadded_y1 + orig_y1_map + # global_x2 = unpadded_x2 + orig_x1_map + # global_y2 = unpadded_y2 + orig_y1_map + + # 4c. Scale from 8K to 640x640 metadata space + meta_x1 = global_x1 * meta_scale_x + meta_y1 = global_y1 * meta_scale_y + # meta_x2 = global_x2 * meta_scale_x + # meta_y2 = global_y2 * meta_scale_y + meta_w = (unpadded_x2 - unpadded_x1) * meta_scale_x + meta_h = (unpadded_y2 - unpadded_y1) * meta_scale_y + + # ========================================================================= + # STEP 5: METADATA FORMATTING + # ========================================================================= + # Format metadata + for j in range(len(local_boxes)): + if meta_w[j] > 2 and meta_h[j] > 2: + class_id = int(local_boxes[j, 5]) + if 0 <= class_id < len(self.label_source): + framenum_str = f"{int(frame_id):04d}_{num_objs:04d}" + metadata[framenum_str] = { + "frameId": int(frame_id), + "bbId": framenum_str, + "bbox": { + "x": int(meta_x1[j]), + "y": int(meta_y1[j]), + "height": int(meta_h[j]), + "width": int(meta_w[j]), + "object": self.label_source[class_id], + "object_det": { + "confidence": float(local_boxes[j, 4]), + "frameH": int(self.resize_h), + "frameW": int(self.resize_w), + }, + }, + } + num_objs += 1 + + # Explicitly delete tensors to free memory inside the loop + del res, local_boxes + + del batch_res + self.fixed_inference_batch.fill_(gray_val) + + if "cuda" in device_input: + torch.cuda.empty_cache() + return metadata, num_objs + + # GPU ------------------------------------------------ + + def init_gpu_pipeline(self): + self.gpu_id = 0 + self.inference_stream = torch.cuda.Stream() + + if self.timer_enabled: + self.sf_start, self.sf_end = ( + torch.cuda.Event(enable_timing=True), + torch.cuda.Event(enable_timing=True), + ) + self.roi_start, self.roi_end = ( + torch.cuda.Event(enable_timing=True), + torch.cuda.Event(enable_timing=True), + ) + self.det_start, self.det_end = ( + torch.cuda.Event(enable_timing=True), + torch.cuda.Event(enable_timing=True), + ) + + # --- START: FUSED KERNEL COMPILATION --- + # This CUDA C++ kernel fuses a 3x3 Box Blur and a binary threshold (value: 50). + # A fused dilation is very complex; we apply it separately for correctness. + # This still reduces 3 kernel launches (Blur, Thresh, Dilate) to 2 (Fused, Dilate). + fused_blur_thresh_kernel_code = r""" + extern "C" __global__ + void fused_blur_thresh(const unsigned char* src, unsigned char* dst, int width, int height, int src_step, int dst_step) { + int x = blockIdx.x * blockDim.x + threadIdx.x; + int y = blockIdx.y * blockDim.y + threadIdx.y; + + if (x >= width || y >= height) return; + + // 1. Fused 3x3 Box Blur + float sum = 0.0f; + int count = 0; + for (int dy = -1; dy <= 1; ++dy) { + for (int dx = -1; dx <= 1; ++dx) { + int nx = x + dx; + int ny = y + dy; + if (nx >= 0 && nx < width && ny >= 0 && ny < height) { + sum += src[ny * src_step + nx]; + count++; + } + } + } + float blurred_val = sum / count; + + // 2. Fused Threshold + unsigned char output_val = (blurred_val > 50.0f) ? 255 : 0; + + // Write the final result + dst[y * dst_step + x] = output_val; + } + """ + self.fused_blur_thresh_kernel = cupy.RawKernel( + fused_blur_thresh_kernel_code, "fused_blur_thresh" + ) + + # This CUDA C++ kernel fuses a 3x3 Box Blur, a binary threshold (50), and a 3x3 Dilation. + # fused_3_in_1_kernel_code = r''' + # #define TILE_DIM 16 + # #define BLOCK_DIM 16 + + # extern "C" __global__ + # void fused_btd(const unsigned char* src, unsigned char* dst, int width, int height, int src_step, int dst_step) { + + # // Shared memory for the source tile and the intermediate thresholded tile + # __shared__ unsigned char s_src_tile[TILE_DIM + 2][TILE_DIM + 2]; + # __shared__ unsigned char s_thresh_tile[TILE_DIM][TILE_DIM]; + + # int tx = threadIdx.x; + # int ty = threadIdx.y; + # int gx = blockIdx.x * TILE_DIM + tx; + # int gy = blockIdx.y * TILE_DIM + ty; + + # // Load source data into shared memory (including a 1-pixel halo) + # for (int i = ty; i < TILE_DIM + 2; i += BLOCK_DIM) { + # for (int j = tx; j < TILE_DIM + 2; j += BLOCK_DIM) { + # int load_x = gx - 1 + j; + # int load_y = gy - 1 + i; + # if (load_x >= 0 && load_x < width && load_y >= 0 && load_y < height) { + # s_src_tile[i][j] = src[load_y * src_step + load_x]; + # } else { + # s_src_tile[i][j] = 0; + # } + # } + # } + # __syncthreads(); + + # // --- 1. Fused Blur & Threshold --- + # if (tx < TILE_DIM && ty < TILE_DIM) { + # float sum = 0.0f; + # for (int dy = 0; dy <= 2; ++dy) { + # for (int dx = 0; dx <= 2; ++dx) { + # sum += s_src_tile[ty + dy][tx + dx]; + # } + # } + # float blurred_val = sum / 9.0f; + # s_thresh_tile[ty][tx] = (blurred_val > 50.0f) ? 255 : 0; + # } + # __syncthreads(); + + # // --- 2. Fused Dilation --- + # if (tx < TILE_DIM && ty < TILE_DIM && gx < width && gy < height) { + # unsigned char max_val = 0; + # for (int dy = -1; dy <= 1; ++dy) { + # for (int dx = -1; dx <= 1; ++dx) { + # int check_x = tx + dx; + # int check_y = ty + dy; + # if (check_x >= 0 && check_x < TILE_DIM && check_y >= 0 && check_y < TILE_DIM) { + # if (s_thresh_tile[check_y][check_x] > max_val) { + # max_val = s_thresh_tile[check_y][check_x]; + # } + # } + # } + # } + # dst[gy * dst_step + gx] = max_val; + # } + # } + # ''' + + # fused_3_in_1_kernel_code = r''' + # extern "C" __global__ + # void fused_btd(const unsigned char* src, unsigned char* dst, int width, int height, int src_step, int dst_step) { + # int x = blockIdx.x * blockDim.x + threadIdx.x; + # int y = blockIdx.y * blockDim.y + threadIdx.y; + + # if (x >= width || y >= height) return; + + # // --- STEP 1 & 2: 3x3 NEIGHBORHOOD BLUR & THRESHOLD --- + # // We compute the thresholded values of the local 3x3 neighborhood on the fly + # unsigned char local_thresh[3][3]; + + # for (int dy = -1; dy <= 1; ++dy) { + # for (int dx = -1; dx <= 1; ++dx) { + # int nx = x + dx; + # int ny = y + dy; + + # // Clamp coordinates to image edges safely + # nx = (nx < 0) ? 0 : ((nx >= width) ? width - 1 : nx); + # ny = (ny < 0) ? 0 : ((ny >= height) ? height - 1 : ny); + + # // Compute blur for coordinate (nx, ny) + # float sum = 0.0f; + # int count = 0; + # for (int k_dy = -1; k_dy <= 1; ++k_dy) { + # for (int k_dx = -1; k_dx <= 1; ++k_dx) { + # int k_nx = nx + k_dx; + # int k_ny = ny + k_dy; + + # k_nx = (k_nx < 0) ? 0 : ((k_nx >= width) ? width - 1 : k_nx); + # k_ny = (k_ny < 0) ? 0 : ((k_ny >= height) ? height - 1 : k_ny); + + # sum += src[k_ny * src_step + k_nx]; + # count++; + # } + # } + # float blurred_val = sum / (float)count; + + # // Threshold instantly + # local_thresh[dy + 1][dx + 1] = (blurred_val > 50.0f) ? 255 : 0; + # } + # } + + # // --- STEP 3: DILATE ON THRESHOLDED RESULTS --- + # unsigned char max_val = 0; + # for (int dy = 0; dy < 3; ++dy) { + # for (int dx = 0; dx < 3; ++dx) { + # if (local_thresh[dy][dx] > max_val) { + # max_val = local_thresh[dy][dx]; + # } + # } + # } + + # // Write the final dilate value safely to global memory + # dst[y * dst_step + x] = max_val; + # } + # ''' + fused_3_in_1_kernel_code = r""" + extern "C" __global__ + void fused_btd(const unsigned char* src, unsigned char* dst, int width, int height, int src_step, int dst_step) { + int x = blockIdx.x * blockDim.x + threadIdx.x; + int y = blockIdx.y * blockDim.y + threadIdx.y; + + if (x >= width || y >= height) return; + + // --- STEP 1 & 2: 17x17 BLUR & THRESHOLD --- + // 5x5 local neighborhood for the Dilation phase + unsigned char local_thresh[5][5]; + + // 5x5 Dilation radius (dy, dx from -2 to 2) + for (int dy = -2; dy <= 2; ++dy) { + for (int dx = -2; dx <= 2; ++dx) { + int nx = x + dx; + int ny = y + dy; + + // Clamp coordinates to image edges safely + nx = (nx < 0) ? 0 : ((nx >= width) ? width - 1 : nx); + ny = (ny < 0) ? 0 : ((ny >= height) ? height - 1 : ny); + + // 5x5 Blur radius (k_dy, k_dx from -8 to 8 (for 17x17)) + float sum = 0.0f; + int count = 0; + for (int k_dy = -2; k_dy <= 2; ++k_dy) { + for (int k_dx = -8; k_dx <= 8; ++k_dx) { + int k_nx = nx + k_dx; + int k_ny = ny + k_dy; + + k_nx = (k_nx < 0) ? 0 : ((k_nx >= width) ? width - 1 : k_nx); + k_ny = (k_ny < 0) ? 0 : ((k_ny >= height) ? height - 1 : k_ny); + + sum += src[k_ny * src_step + k_nx]; + count++; + } + } + float blurred_val = sum / (float)count; + + // Threshold instantly (offset dx, dy by +2 to fit in 0-4 array indices) + local_thresh[dy + 2][dx + 2] = (blurred_val > 50.0f) ? 255 : 0; + } + } + + // --- STEP 3: 5x5 DILATE ON THRESHOLDED RESULTS --- + unsigned char max_val = 0; + for (int dy = 0; dy < 5; ++dy) { + for (int dx = 0; dx < 5; ++dx) { + if (local_thresh[dy][dx] > max_val) { + max_val = local_thresh[dy][dx]; + } + } + } + + // Write the final dilate value safely to global memory + dst[y * dst_step + x] = max_val; + } + """ + + self.fused_3_in_1_kernel = cupy.RawKernel(fused_3_in_1_kernel_code, "fused_btd") + # --- END: FUSED KERNEL COMPILATION --- + + self.prepare_gpu_pipeline() + + def allocate_gpu(self): + """ + Allocates persistent GpuMat buffers and CUDA streams to + enable zero-copy GPU processing. + """ + self.device_index = f"cuda:{self.gpu_id}" + + # Safely extract the primitive compiled C++ function pointer out of CuPy's RawKernel + if hasattr(get_bounds_kernel, "kernel"): + self._raw_bounds_function = get_bounds_kernel.kernel + else: + # Fallback handle if utilizing an alternate CuPy execution wrapper mapping + self._raw_bounds_function = get_bounds_kernel + + ksize = (17, 17) + self._cuda_gaussian_filter = cv2.cuda.createGaussianFilter( + srcType=cv2.CV_8UC1, dstType=cv2.CV_8UC1, ksize=ksize, sigma1=0 + ) + + self.recycled_resize_mat = cv2.cuda.GpuMat( + self.resize_h, self.resize_w, cv2.CV_8UC3 + ) + # Pre-allocate double buffers for resizing + # self.recycled_resize_mat_A = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_8UC3) + # self.recycled_resize_mat_B = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_8UC3) + + # Track which buffer is active + self.use_buffer_A = True + + self.raw_mask = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_8UC1) + self.thresh_mask = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_8UC1) + self.clean_mask = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_8UC1) + self.d_blurred = cv2.cuda.GpuMat(self.clean_mask.size(), cv2.CV_8UC1) + + # Compile the kernel once at startup + # self._row_bounds_function = cupy.RawKernel(PROPAGATION_KERNEL_CODE, "get_row_bounds_fused") + + # self.fixed_inference_batch = torch.empty( + # ( + # self.config.MODEL_MAX_BATCH_SIZE, + # 3, + # self.config.MODEL_H, + # self.config.MODEL_W, + # ), + # dtype=torch.half, + # device="cuda", + # ) + + # self.gpu_float_staging = None + + self.gpu_float_staging = torch.empty( + (1, 3, self.frame_height, self.frame_width), + dtype=torch.float16, + device=self.device_index, + ) + # self.stream = cv2.cuda.Stream() + # self.ingest_stream = torch.cuda.Stream() + # self.inference_stream = torch.cuda.Stream() + self.bgs_stream = cv2.cuda.Stream() + # self.gpu_fullres_frame = cv2.cuda.GpuMat( + # self.frame_height, self.frame_width, cv2.CV_8UC3 + # ) + # self.resized_gpumat = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_8UC3) + # self.resized_frame = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_8UC3) + # self.resized_frame.setTo(0, self.bgs_stream) + # self.fgMask = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_8UC1) + self.prev_bkgd = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_8UC1) + if self.config.BKGD_SUB_INCLUDE_HISTORY_METHOD == "and": + self.prev_bkgd.setTo((1,)) + else: + self.prev_bkgd.setTo((0,)) + self.mask_history = deque( + maxlen=self.config.BKGD_SUB_INCLUDE_HISTORY_TEMPORAL_SIZE + ) + self.mask_history.append(self.prev_bkgd) + + self.gpu_threshold_dst_frame = cv2.cuda.GpuMat( + self.resize_h, self.resize_w, cv2.CV_8UC1 + ) + self.gpu_morphed_frame = cv2.cuda.GpuMat( + self.resize_h, self.resize_w, cv2.CV_8UC1 + ) + + self.upload_stream = cv2.cuda.Stream() + self.upload_event = cv2.cuda.Event() + + # self.queue_capacity = int(2 * self.target_fps) # 60 + self.num_buffers = int(2 * self.target_fps) # self.queue_capacity + 5 + self.gpu_buffer_pool = [ + cv2.cuda.GpuMat(self.frame_height, self.frame_width, cv2.CV_8UC3) + for _ in range(self.num_buffers) + ] + self.buffer_idx = 0 + + self.frame_buffer_pool = [ + torch.empty( + (3, self.frame_height, self.frame_width), + dtype=torch.uint8, + device="cuda", + ) + for _ in range(2) + ] + self.pool_idx = 0 + + # Create a matching pool of pinned host memory for the 8K frames + # self.host_buffer_pool = [ + # cv2.cuda.HostMem(self.frame_height, self.frame_width, cv2.CV_8UC3) + # for _ in range(self.num_buffers) + # ] + + # Create continuous buffers to prevent stride artifacts during 8K downloads + self.pinned_downloaded_resizedframe_np = cv2.cuda.createContinuous( + self.resize_h, self.resize_w, cv2.CV_8UC3 + ) + self.pinned_downloaded_frame_np = cv2.cuda.createContinuous( + self.resize_h, self.resize_w, cv2.CV_8UC1 + ) + cv2.cuda.createContinuous( + self.resize_h, self.resize_w, cv2.CV_8UC1, self.gpu_threshold_dst_frame + ) + cv2.cuda.createContinuous( + self.resize_h, self.resize_w, cv2.CV_8UC1, self.gpu_morphed_frame + ) + + # This prevents the AI thread from overwriting the encoder's data. + self.gpu_encoder_8k_buf = cv2.cuda.createContinuous( + self.frame_height, self.frame_width, cv2.CV_8UC3 + ) + + # Continuous allocation prevents stride/padding artifacts + self.gpu_display_frame = cv2.cuda.createContinuous( + self.disp_h, self.disp_w, cv2.CV_8UC3 + ) + + # Create a dedicated background stream for encoding tasks + self.encode_stream = cv2.cuda.Stream() + + # Allocate a permanent float32/float16 channel layout space directly on VRAM + # self.static_gpu_360p = torch.empty( + # (1, 3, self.disp_h, self.disp_w), + # dtype=torch.float32, + # device="cuda", + # ) + # self.static_gpu_byte_bchw = torch.empty( + # (1, 3, self.disp_h, self.disp_w), + # dtype=torch.uint8, + # device="cuda", + # ).contiguous() + + # Allocates a fixed memory space directly accessible by your GPU DMA engine + self.pinned_cpu_xyxy = torch.empty( + (self.config.MAX_DETECTIONS, 4), dtype=torch.float32, device="cpu" + ).pin_memory() + self.pinned_cpu_clss = torch.empty( + (self.config.MAX_DETECTIONS,), dtype=torch.int32, device="cpu" + ).pin_memory() + self.pinned_cpu_confs = torch.empty( + (self.config.MAX_DETECTIONS,), dtype=torch.float32, device="cpu" + ).pin_memory() + + self.cupy_structure = cupy.ones((3, 3), dtype=cupy.int32) # , order="C") + self._max_labels = 1024 # Cap maximum tracking elements per frame + # Pre-allocate static, persistent workspace array caches straight in VRAM + self._x1_pool = cupy.zeros((self._max_labels,), dtype=cupy.int32) + self._y1_pool = cupy.zeros((self._max_labels,), dtype=cupy.int32) + self._x2_pool = cupy.zeros((self._max_labels,), dtype=cupy.int32) + self._y2_pool = cupy.zeros((self._max_labels,), dtype=cupy.int32) + + # Pre-allocate the labeled output tensor space to avoid internal allocation churn + # Match your target resized canvas dimensions (e.g., 640x640) + self._labeled_scratch = cupy.empty( + (self.resize_h, self.resize_w), dtype=cupy.int32, order="C" + ) + + # Create two isolated tracking canvases to handle the ping-pong data stream + # self.static_host_canvases = [ + # np.zeros((self.disp_h, self.disp_w, 3), dtype=np.uint8), + # np.zeros((self.disp_h, self.disp_w, 3), dtype=np.uint8), + # ] + # self.canvas_selector = 0 + + # # Register BOTH buffers as page-locked memory + # cv2.cuda.registerPageLocked(self.static_host_canvases[0]) + # cv2.cuda.registerPageLocked(self.static_host_canvases[1]) + + def prepare_gpu_pipeline(self): + self.allocate_gpu() + + # Subtraction + # self.backSub_lock = threading.Lock() + # history = int(2 * self.target_fps) # 300 # int(5 * self.target_fps) + self.lr = self.config.BKGD_SUB_MOG2_LR # 1 / history + self.backSub = cv2.cuda.createBackgroundSubtractorMOG2( + history=self.config.BKGD_SUB_MOG2_HISTORY, # Clear ghosts of fast drones in ~2 seconds (2*fps) + varThreshold=int( + self.config.BKGD_SUB_MOG2_VARTHRESHOLD # 1.15 + ), # High threshold to ignore "shimmer" and compression noise # default 16 + # varThreshold=50, #self.config.BKGD_SUB_MOG2_VARTHRESHOLD, # High threshold to ignore "shimmer" and compression noise # default 16 + # CUDA implementation of MOG2 often requires a higher varThreshold to achieve the same "cleanliness" as the CPU (15-20%) + detectShadows=self.config.BKGD_SUB_MOG2_DETECTSHADOWS, # default True + ) + self.opencv_bgs_output = cv2.cuda.GpuMat( + self.resize_h, self.resize_w, cv2.CV_8UC1 + ) + self.opencv_bgs_dilate_output = cv2.cuda.GpuMat( + self.resize_h, self.resize_w, cv2.CV_8UC1 + ) + + # Force the GPU to match the CPU's background criteria limits + # self.backSub.setBackgroundRatio(0.05) # Standardize background matching speed + # self.backSub.setComplexityReductionThreshold(0.05) # Drop unstable low-variance noise regions + # self.backSub.setVarMin(4.0) # High-pass filter to erase micro-vibrations + + self.dilate_filter = cv2.cuda.createMorphologyFilter( + cv2.MORPH_DILATE, cv2.CV_8U, self.dilate_kernel + ) + self.dilate_filter_for_enhanced_mask = cv2.cuda.createMorphologyFilter( + cv2.MORPH_DILATE, cv2.CV_8UC1, self.dilate_kernel_for_enhanced_mask + ) + # # self.morph_kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5, 5)) + # self.morph_kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5)) + # self.morph_filter = cv2.cuda.createMorphologyFilter( + # cv2.MORPH_DILATE, cv2.CV_8UC1, self.morph_kernel + # ) + # self.labels_gpu = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_32S) + # self.labels_gpu = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_8U) + # self.labels_gpu.setTo(0, self.bgs_stream) + + def gpu_warmup(self): + """ + Comprehensive, non-blocking GPU warmup harness. + Pre-compiles CuPy Scipy labeling kernels, box-merging logic, + and TensorRT engine profiles without disk writing side effects. + """ + # import cv2 + # import torch + + self.warmup_stream = cv2.cuda.Stream() + + h, w = self.resize_h, self.resize_w + + # 1. Standard OpenCV CUDA Pre-processing Compilation + gpu_warmup_input_frame = cv2.cuda_GpuMat(h, w, cv2.CV_8U) + if gpu_warmup_input_frame is not None: + gpu_warmup_input_frame.setTo(255) + gpu_warmup_frame = cv2.cuda_GpuMat(h, w, cv2.CV_8U) + + cv2.cuda.resize( + gpu_warmup_input_frame, + (w, h), + stream=self.warmup_stream, + dst=gpu_warmup_frame, + interpolation=cv2.INTER_NEAREST, + ) + + gpu_threshold_dst_frame = cv2.cuda_GpuMat(h, w, cv2.CV_8U) + cv2.cuda.threshold( + gpu_warmup_frame, + self.config.THRESHOLD_VALUE, + self.config.THRESHOLD_MAX_VALUE, + cv2.THRESH_BINARY, + gpu_threshold_dst_frame, + self.warmup_stream, + ) + + gpu_morphed_frame = cv2.cuda_GpuMat(h, w, cv2.CV_8U) + self.dilate_filter.apply( + gpu_threshold_dst_frame, gpu_morphed_frame, self.warmup_stream + ) + active_stream_ptr = ( + self.bgs_stream.cudaPtr() if hasattr(self, "bgs_stream") else 0 + ) + self.warmup_stream.waitForCompletion() + + mock_mask = cupy.zeros((640, 640), dtype=cupy.uint8) + mock_mask[100:150, 100:150] = 1 # Draw a dummy blob + # mock_scratch = cupy.empty((640, 640), dtype=cupy.int32) + # mock_structure = cupy.ones((3, 3), dtype=cupy.int32) + + # Invoke once to trigger NVRTC compilation and cache the binary module to disk + # cupyx.scipy.ndimage.label(mock_mask, structure=self.cupy_structure, output=mock_scratch) + with cupy.cuda.ExternalStream(active_stream_ptr): + cupyx.scipy.ndimage.label( + mock_mask, structure=self.cupy_structure, output=self._labeled_scratch + ) + # cupy.cuda.stream.get_current_stream().synchronize() + cupy.cuda.ExternalStream(active_stream_ptr).synchronize() + main_app_logger.info("[WARMUP] CuPy SciPy Labeling kernels fully cached.") + + # 🚀 2. PIPELINE EXTENSION: Pre-allocate static canvas memories if missing + # if not hasattr(self, "static_canvas_scratch"): + # self.static_canvas_scratch = torch.full( + # (640, 640, 3), fill_value=114, dtype=torch.uint8, device="cuda" + # ) + + # 🚀 3. PIPELINE EXTENSION: Pre-compile AI Model and Box reduction pipelines + # Capture the original debug configuration state + original_debug_flag = getattr(self.config, "DEBUG_FLAG", False) + + try: + # Force the debug flag off during warmup loop to completely block debug_save_crops + self.config.DEBUG_FLAG = False + + # Construct a synthetic 8K model input canvas block on the GPU device + # Adjust dimensions if your raw source video maps differently than [8192, 8192, 3] + synthetic_8k_tensor = torch.zeros( + (self.frame_height, self.frame_width, 3), + dtype=torch.uint8, + device="cuda", + ) + + # Create a standard mock overlapping region block to exercise merge_boxes_gpu + # Shapes: [N, 4] -> format (x1, y1, x2, y2) + mock_overlapping_boxes = torch.tensor( + [ + [100.0, 100.0, 250.0, 250.0], + [102.0, 101.0, 248.0, 252.0], # Overlapping twin bounding box + [500.0, 500.0, 640.0, 640.0], + ], + dtype=torch.float32, + device="cuda", + ) + + # Run exactly 3 dummy steps to guarantee CuPy Scipy features and TensorRT allocations cache + main_app_logger.info( + "[WARMUP] Priming algorithm pipeline layers asynchronously..." + ) + for _ in range(3): + with torch.inference_mode(): + # Feed through the master detection utility function directly + # _, _ = self.get_detections_with_smart_filtering( + # frame=synthetic_8k_tensor, + # frame_id=0, + # device_input="cuda", + # merged=mock_overlapping_boxes, + # ) + self.get_detections( + frame=synthetic_8k_tensor, + frame_id=0, + device_input="cuda", + merged=mock_overlapping_boxes + if self.config.sf_enabled + else None, + ) + + # Hard fence sync to secure compilation layers across active CUDA contexts + # torch.cuda.synchronize() + main_app_logger.info( + "[WARMUP] Complete. All pipeline pathways completely compiled." + ) + + finally: + # Safely restore your original testing workflow debug constraints + self.config.DEBUG_FLAG = original_debug_flag + + # Release resources + del synthetic_8k_tensor, mock_overlapping_boxes + del ( + gpu_warmup_input_frame, + gpu_warmup_frame, + gpu_threshold_dst_frame, + gpu_morphed_frame, + ) + if hasattr(self, "warmup_stream"): + delattr(self, "warmup_stream") + + torch.cuda.empty_cache() + + def cleanup_gpu_v1(self): + """ + Explicitly releases all GPU-allocated memory to prevent + VRAM leaks in 8K concurrent streams. + """ + # Iterate through class attributes to explicitly release VRAM. + for attr_name in list(self.__dict__.keys()): + attr_value = getattr(self, attr_name) + + # Check if the attribute is a GpuMat + if isinstance(attr_value, cv2.cuda.GpuMat): + # 🏎️ Force the NVIDIA driver to deallocate this specific memory segment + attr_value.release() + setattr(self, attr_name, None) + main_app_logger.info(f"✅ Released GpuMat: {attr_name}") + + # if hasattr(self, "gpu_fullres_frame") and self.gpu_fullres_frame is not None: + # try: + # self.gpu_fullres_frame.release() + # except Exception: + # self.gpu_fullres_frame = None + + if hasattr(self, "gpu_morphed_frame") and self.gpu_morphed_frame is not None: + try: + self.gpu_morphed_frame.release() + except Exception: + self.gpu_morphed_frame = None + + # if hasattr(self, "labels_gpu") and self.labels_gpu is not None: + # try: + # self.labels_gpu.release() + # except Exception: + # self.labels_gpu = None + + if hasattr(self, "gpu_encoder_8k_buf") and self.gpu_encoder_8k_buf is not None: + try: + self.gpu_encoder_8k_buf.release() + except Exception: + self.gpu_encoder_8k_buf = None + + if hasattr(self, "gpu_display_frame") and self.gpu_display_frame is not None: + try: + self.gpu_display_frame.release() + except Exception: + self.gpu_display_frame = None + + if hasattr(self, "gpu_crop_batch"): + for mat in self.gpu_crop_batch: + if isinstance(mat, cv2.cuda.GpuMat): + mat.release() + self.gpu_crop_batch = [] + + # if hasattr(self, "stream"): + # self.stream.waitForCompletion() + + self.pinned_downloaded_resizedframe_np = None + self.gpu_threshold_dst_frame = None + self.gpu_morphed_frame = None + self.pinned_downloaded_frame_np = None + + # Handle specific buffers (like your Ping-Pong lists) + # if hasattr(self, "encode_buffers"): + # self.encode_buffers.clear() + + # Clear the BGS history + if hasattr(self, "mask_history"): + self.mask_history.clear() + + # Optional: Final flush of the CUDA caching allocator + if torch.cuda.is_available(): + torch.cuda.empty_cache() + + def apply_background_subtraction_gpu( + self, gpu_frame, include_history=True, method="and", stream=None + ): + stream = stream if isinstance(stream, cv2.cuda.Stream) else self.bgs_stream + + # raw_mask = self.backSub.apply( + # gpu_frame, + # # motion_input, + # float(self.lr), # 0.005, # float(self.lr), + # stream=stream, + # ) + self.backSub.apply( + image=gpu_frame, + fgmask=self.opencv_bgs_output, + learningRate=float(self.lr), + stream=stream, + ) + raw_mask = self.opencv_bgs_output + + if include_history: + # if self.config.BKGD_SUB_INCLUDE_HISTORY_METHOD == "and": + # self.prev_bkgd.setTo((1,)) + # else: + # self.prev_bkgd.setTo((0,)) + # If the deque is full, pop the oldest GpuMat and explicitly release it. + if len(self.mask_history) >= self.mask_history.maxlen: + old_mask = self.mask_history.popleft() + if old_mask is not None: + # It releases the VRAM held by the oldest mask. + old_mask.release() + + for m in list(self.mask_history): + # Dilate the historical mask on GPU + # dilated = self.dilate_filter_for_enhanced_mask.apply(m, stream=stream) + self.dilate_filter_for_enhanced_mask.apply( + src=m, dst=self.opencv_bgs_dilate_output, stream=stream + ) + + if method == "or": + # Bitwise OR on GPU + cv2.cuda.bitwise_or( + self.prev_bkgd, + self.opencv_bgs_dilate_output, + self.prev_bkgd, + stream=stream, + ) + else: + # Bitwise AND on GPU + cv2.cuda.bitwise_and( + self.prev_bkgd, + self.opencv_bgs_dilate_output, + self.prev_bkgd, + stream=stream, + ) + + self.mask_history.append(raw_mask.clone()) # .clone() + + raw_mask = cv2.cuda.bitwise_or( + raw_mask, self.prev_bkgd, stream=self.bgs_stream + ) + return raw_mask + + def get_sf_gpu_rois_v1( + self, device_frame, overall_frame_num, max_candidates=100, limit_640=1280 + ): + debug_frame_limit = self.debug_frame_limit + + if overall_frame_num <= debug_frame_limit: + stage_debug_dir = ( + self.result_dir / "debug_stages" / self._testMethodName / "roi_stages" + ) + stage_debug_dir.mkdir(parents=True, exist_ok=True) + + # 2. BRIDGE THE PYTORCH TO OPENCV VRAM GAP + if torch.is_tensor(device_frame): + h_raw, w_raw, ch = device_frame.shape + cuda_mem_ptr = device_frame.data_ptr() + cv_type = cv2.CV_8UC3 if ch == 3 else cv2.CV_8UC1 + row_step_bytes = device_frame.stride()[0] * device_frame.element_size() + src_gpu_mat = cv2.cuda.createGpuMatFromCudaMemory( + h_raw, w_raw, cv_type, cuda_mem_ptr, step=row_step_bytes + ) + else: + src_gpu_mat = device_frame + ch = src_gpu_mat.channels() + + if overall_frame_num <= debug_frame_limit: + src_cpu = src_gpu_mat.download() + if ch == 3: + src_cpu = cv2.cvtColor(src_cpu, cv2.COLOR_RGB2BGR) + cv2.imwrite( + str(stage_debug_dir / f"frame_{overall_frame_num:04d}_stage1_src.jpg"), + src_cpu, + ) + + # 3. STRIDED LAYOUT INITIALIZATION + # if not hasattr(self, "raw_mask"): + # self.recycled_resize_mat = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_8UC3 if ch == 3 else cv2.CV_8UC1) + # self.raw_mask = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_8UC1) + # self.thresh_mask = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_8UC1) + # self.clean_mask = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_8UC1) + # self.d_blurred = cv2.cuda.GpuMat(self.clean_mask.size(), cv2.CV_8UC1) + + # 4. RUN ASYNCHRONOUS DOWN-SAMPLING GATE + cv2.cuda.resize( + src_gpu_mat, + dst=self.recycled_resize_mat, + dsize=(self.resize_w, self.resize_h), + interpolation=cv2.INTER_NEAREST, + stream=self.bgs_stream, + ) + + if overall_frame_num <= debug_frame_limit: + self.bgs_stream.waitForCompletion() + resize_cpu = self.recycled_resize_mat.download() + if ch == 3: + resize_cpu = cv2.cvtColor(resize_cpu, cv2.COLOR_RGB2BGR) + cv2.imwrite( + str( + stage_debug_dir / f"frame_{overall_frame_num:04d}_stage2_resize.jpg" + ), + resize_cpu, + ) + + # 5. BACKGROUND SUBTRACTION & FILTERING + self.raw_mask = self.apply_background_subtraction_gpu( + self.recycled_resize_mat, + include_history=self.config.BKGD_SUB_INCLUDE_HISTORY, + method=self.config.BKGD_SUB_INCLUDE_HISTORY_METHOD, + stream=self.bgs_stream, + ) + + if overall_frame_num <= debug_frame_limit: + self.bgs_stream.waitForCompletion() + cv2.imwrite( + str( + stage_debug_dir + / f"frame_{overall_frame_num:04d}_stage5_history_mask.jpg" + ), + self.raw_mask.download(), + ) + + self._cuda_gaussian_filter.apply( + self.raw_mask, self.d_blurred, stream=self.bgs_stream + ) + + if overall_frame_num <= debug_frame_limit: + self.bgs_stream.waitForCompletion() + cv2.imwrite( + str( + stage_debug_dir / f"frame_{overall_frame_num:04d}_stage5b_blur.jpg" + ), + self.d_blurred.download(), + ) + + cv2.cuda.threshold( + self.d_blurred, + 50, + self.config.THRESHOLD_MAX_VALUE, + cv2.THRESH_BINARY, + self.thresh_mask, + stream=self.bgs_stream, + ) + + if overall_frame_num <= debug_frame_limit: + self.bgs_stream.waitForCompletion() + cv2.imwrite( + str( + stage_debug_dir + / f"frame_{overall_frame_num:04d}_stage6_threshold.jpg" + ), + self.thresh_mask.download(), + ) + + self.dilate_filter.apply(self.thresh_mask, self.clean_mask, self.bgs_stream) + + # [STAGE 7 DEBUG] Check Final Dilated Output Mask + if overall_frame_num <= debug_frame_limit: + self.bgs_stream.waitForCompletion() + cv2.imwrite( + str( + stage_debug_dir + / f"frame_{overall_frame_num:04d}_stage8_final_dilatemask.jpg" + ), + self.clean_mask.download(), + ) + + # inf_data = { + # "mask": self.clean_mask, + # "full_frame": device_frame, + # "frameNum": overall_frame_num, + # } + # start = torch.cuda.Event(enable_timing=True) + # end = torch.cuda.Event(enable_timing=True) + + # 6. REGION OF INTEREST ANALYSIS + limit_8K = 1280 + limit_640 = limit_8K / self.scale_x + # start.record() + raw_boxes = self.get_gpu_rois_by_area( + overall_frame_num, self.clean_mask, max_candidates=50, limit_640=limit_640 + ) + # end.record() + # torch.cuda.synchronize() + # gpu_rois_by_area_ms = start.elapsed_time(end) + + if raw_boxes.shape[0] < 1: + return torch.empty((0, 4), device=self.device_input) + + raw_boxes = self.gpu_roi_padding(raw_boxes, method="uniform") + # start.record() + clean_640p = merge_boxes_gpu( + raw_boxes, + gap_limit=self.dist_thresh_640, + size_limit=limit_640, + max_cached_elements=self.max_cached_elements, + ) + # end.record() + # torch.cuda.synchronize() + # merge_ms = start.elapsed_time(end) + + # main_app_logger.info(f"gpu_rois_by_area: {gpu_rois_by_area_ms:.3f} ms") + # main_app_logger.info(f"merge_boxes_gpu: {merge_ms:.3f} ms") + + if clean_640p.shape[0] < 1: + return torch.empty((0, 4), device=self.device_input) + + clean_640p[:, 0].clamp_(min=0, max=self.resize_w - 1) + clean_640p[:, 1].clamp_(min=0, max=self.resize_h - 1) + clean_640p[:, 2].clamp_(min=0, max=self.resize_w - 1) + clean_640p[:, 3].clamp_(min=0, max=self.resize_h - 1) + + # OPTIMIZATION: IN-PLACE RESCALING + # Avoid slicing arrays out sequentially into individual variables (xmin, ymin...) + # Construct and scale standard boxes directly to prevent memory allocation chattering. + standard_boxes = torch.stack( + [clean_640p[:, 0], clean_640p[:, 1], clean_640p[:, 2], clean_640p[:, 3]], + dim=1, + ) + + # if standard_boxes is None or standard_boxes.shape[0] == 0: + # return torch.empty((0, 4), device=self.device_input, dtype=torch.float32) + + # Multiply inplace and avoid manual `del` garbage sweeps to maintain maximum throughput + bbs_full_res = (standard_boxes * self.scales_tensor).detach() + return bbs_full_res + + # def get_sf_gpu_rois_v2( + # self, device_frame, overall_frame_num, max_candidates=100, limit_640=1280 + # ): + # debug_frame_limit = self.debug_frame_limit + + # if overall_frame_num <= debug_frame_limit: + # stage_debug_dir = ( + # self.result_dir / "debug_stages" / self._testMethodName / "roi_stages" + # ) + # stage_debug_dir.mkdir(parents=True, exist_ok=True) + + # # 2. BRIDGE THE PYTORCH TO OPENCV VRAM GAP + # if torch.is_tensor(device_frame): + # h_raw, w_raw, ch = device_frame.shape + # cuda_mem_ptr = device_frame.data_ptr() + # cv_type = cv2.CV_8UC3 if ch == 3 else cv2.CV_8UC1 + # row_step_bytes = device_frame.stride()[0] * device_frame.element_size() + # src_gpu_mat = cv2.cuda.createGpuMatFromCudaMemory( + # h_raw, w_raw, cv_type, cuda_mem_ptr, step=row_step_bytes + # ) + # else: + # src_gpu_mat = device_frame + # ch = src_gpu_mat.channels() + + # if overall_frame_num <= debug_frame_limit: + # src_cpu = src_gpu_mat.download() + # if ch == 3: + # src_cpu = cv2.cvtColor(src_cpu, cv2.COLOR_RGB2BGR) + # cv2.imwrite( + # str(stage_debug_dir / f"frame_{overall_frame_num:04d}_stage1_src.jpg"), + # src_cpu, + # ) + # del src_cpu + + # # 3. STRIDED LAYOUT INITIALIZATION + # # if not hasattr(self, "raw_mask"): + # # self.recycled_resize_mat = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_8UC3 if ch == 3 else cv2.CV_8UC1) + # # self.raw_mask = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_8UC1) + # # self.thresh_mask = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_8UC1) + # # self.clean_mask = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_8UC1) + # # self.d_blurred = cv2.cuda.GpuMat(self.clean_mask.size(), cv2.CV_8UC1) + + # # 4. RUN ASYNCHRONOUS DOWN-SAMPLING GATE + # cv2.cuda.resize( + # src_gpu_mat, + # dst=self.recycled_resize_mat, + # dsize=(self.resize_w, self.resize_h), + # interpolation=cv2.INTER_NEAREST, + # stream=self.bgs_stream, + # ) + # isolated_resize_mat = self.recycled_resize_mat.clone() + + # if overall_frame_num <= debug_frame_limit: + # self.bgs_stream.waitForCompletion() + # resize_cpu = self.recycled_resize_mat.download() + # if ch == 3: + # resize_cpu = cv2.cvtColor(resize_cpu, cv2.COLOR_RGB2BGR) + # cv2.imwrite( + # str( + # stage_debug_dir / f"frame_{overall_frame_num:04d}_stage2_resize.jpg" + # ), + # resize_cpu, + # ) + + # # 5. BACKGROUND SUBTRACTION & FILTERING + # self.raw_mask = self.apply_background_subtraction_gpu( + # isolated_resize_mat, # self.recycled_resize_mat, + # include_history=self.config.BKGD_SUB_INCLUDE_HISTORY, + # method=self.config.BKGD_SUB_INCLUDE_HISTORY_METHOD, + # stream=self.bgs_stream, + # ) + + # if overall_frame_num <= debug_frame_limit: + # self.bgs_stream.waitForCompletion() + # cv2.imwrite( + # str( + # stage_debug_dir + # / f"frame_{overall_frame_num:04d}_stage5_history_mask.jpg" + # ), + # self.raw_mask.download(), + # ) + + # # self._cuda_gaussian_filter.apply( + # # self.raw_mask, self.d_blurred, stream=self.bgs_stream + # # ) + # # cv2.cuda.threshold( + # # self.d_blurred, + # # 50, + # # self.config.THRESHOLD_MAX_VALUE, + # # cv2.THRESH_BINARY, + # # self.thresh_mask, + # # stream=self.bgs_stream, + # # ) + + # # self.dilate_filter.apply(self.thresh_mask, self.clean_mask, self.bgs_stream) + # # --- START: FUSED KERNEL EXECUTION --- + # # We bridge raw_mask and clean_mask to CuPy arrays (zero-copy) + # height, width = self.raw_mask.size() + + # raw_mask_cp = cupy.ndarray( + # shape=(height, width), + # dtype=cupy.uint8, + # memptr=cupy.cuda.MemoryPointer( + # cupy.cuda.UnownedMemory( + # self.raw_mask.cudaPtr(), self.raw_mask.step * height, self.raw_mask + # ), + # 0, + # ), + # strides=(self.raw_mask.step, 1), + # ) + + # clean_mask_cp = cupy.ndarray( + # shape=(height, width), + # dtype=cupy.uint8, + # memptr=cupy.cuda.MemoryPointer( + # cupy.cuda.UnownedMemory( + # self.clean_mask.cudaPtr(), + # self.clean_mask.step * height, + # self.clean_mask, + # ), + # 0, + # ), + # strides=(self.clean_mask.step, 1), + # ) + + # # 3. Launch the Fused CUDA Kernel! + # # Grid/Block sizes optimized for RTX A6000 architecture + # block_dim = 16 + # grid_size = ( + # (width + block_dim - 1) // block_dim, + # (height + block_dim - 1) // block_dim, + # ) + # block_size = (block_dim, block_dim) + + # # --- START: FUSED KERNEL EXECUTION --- + # # Get the underlying CUDA stream pointer from the OpenCV stream + # # self.cupy_bgs_stream = cupy.cuda.ExternalStream(self.bgs_stream.cudaPtr()) + # # self.fused_blur_thresh_kernel( + # # grid_size, + # # block_size, + # # ( + # # self.raw_mask.cudaPtr(), # const unsigned char* src + # # self.thresh_mask.cudaPtr(), # unsigned char* dst + # # width, # int width + # # height, # int height + # # self.raw_mask.step, # int src_step + # # self.thresh_mask.step # int dst_step + # # ), + # # stream=self.cupy_bgs_stream + # # ) + # # self.dilate_filter.apply(self.thresh_mask, self.clean_mask, self.bgs_stream) + + # # --- END: FUSED KERNEL EXECUTION --- + + # # --- START: 3-in-1 FUSED KERNEL EXECUTION --- + + # # 2. Wait for OpenCV BGS stream to finish before CuPy takes over + # # self.bgs_stream.waitForCompletion() + # self.cupy_bgs_stream = cupy.cuda.ExternalStream(self.bgs_stream.cudaPtr()) + + # # 4. Launch the single fused kernel on CuPy's default stream + # self.fused_3_in_1_kernel( + # grid_size, + # block_size, + # ( + # raw_mask_cp, # src + # clean_mask_cp, # dst + # width, + # height, + # self.raw_mask.step, + # self.clean_mask.step, + # ), + # stream=self.cupy_bgs_stream, + # ) + + # # 5. Ensure CuPy kernel is finished before proceeding + # # import cupy as cp + # # cupy.cuda.Stream.null.synchronize() + # # --- END: FUSED KERNEL EXECUTION --- + + # # [STAGE 7 DEBUG] Check Final Dilated Output Mask + # # if overall_frame_num <= debug_frame_limit: + # # self.bgs_stream.waitForCompletion() + # # cv2.imwrite( + # # str( + # # stage_debug_dir + # # / f"frame_{overall_frame_num:04d}_stage8_final_dilatemask.jpg" + # # ), + # # self.clean_mask.download(), + # # ) + + # # inf_data = { + # # "mask": self.clean_mask, + # # "full_frame": device_frame, + # # "frameNum": overall_frame_num, + # # } + # # start = torch.cuda.Event(enable_timing=True) + # # end = torch.cuda.Event(enable_timing=True) + + # # 6. REGION OF INTEREST ANALYSIS + # limit_8K = 1280 + # limit_640 = limit_8K / self.scale_x + # # start.record() + # raw_boxes = self.get_gpu_rois_by_area( + # overall_frame_num, self.clean_mask, max_candidates=50, limit_640=limit_640 + # ) + # # end.record() + # # torch.cuda.synchronize() + # # gpu_rois_by_area_ms = start.elapsed_time(end) + + # if raw_boxes.shape[0] < 1: + # return torch.empty((0, 4), device=self.device_input) + + # raw_boxes = self.gpu_roi_padding(raw_boxes, method="uniform") + # # start.record() + # clean_640p = merge_boxes_gpu( + # raw_boxes, + # gap_limit=self.dist_thresh_640, + # size_limit=limit_640, + # max_cached_elements=self.max_cached_elements, + # ) + # # end.record() + # # torch.cuda.synchronize() + # # merge_ms = start.elapsed_time(end) + + # # main_app_logger.info(f"gpu_rois_by_area: {gpu_rois_by_area_ms:.3f} ms") + # # main_app_logger.info(f"merge_boxes_gpu: {merge_ms:.3f} ms") + + # if clean_640p.shape[0] < 1: + # return torch.empty((0, 4), device=self.device_input) + + # clean_640p[:, 0].clamp_(min=0, max=self.resize_w - 1) + # clean_640p[:, 1].clamp_(min=0, max=self.resize_h - 1) + # clean_640p[:, 2].clamp_(min=0, max=self.resize_w - 1) + # clean_640p[:, 3].clamp_(min=0, max=self.resize_h - 1) + + # # OPTIMIZATION: IN-PLACE RESCALING + # # Avoid slicing arrays out sequentially into individual variables (xmin, ymin...) + # # Construct and scale standard boxes directly to prevent memory allocation chattering. + # standard_boxes = torch.stack( + # [clean_640p[:, 0], clean_640p[:, 1], clean_640p[:, 2], clean_640p[:, 3]], + # dim=1, + # ) + + # # if standard_boxes is None or standard_boxes.shape[0] == 0: + # # return torch.empty((0, 4), device=self.device_input, dtype=torch.float32) + + # # Multiply inplace and avoid manual `del` garbage sweeps to maintain maximum throughput + # bbs_full_res = (standard_boxes * self.scales_tensor).detach() + # return bbs_full_res + + # v3: reduce memory footprint + def get_sf_gpu_rois( + self, device_frame, overall_frame_num, max_candidates=100, limit_640=1280 + ): + cupy.get_default_memory_pool().free_all_blocks() + height, width = self.raw_mask.size() + + raw_mask_cp = cupy.ndarray( + shape=(height, width), + dtype=cupy.uint8, + memptr=cupy.cuda.MemoryPointer( + cupy.cuda.UnownedMemory( + self.raw_mask.cudaPtr(), + self.raw_mask.step * height, + self.raw_mask, + ), + 0, + ), + strides=(self.raw_mask.step, 1), + ) + + clean_mask_cp = cupy.ndarray( + shape=(height, width), + dtype=cupy.uint8, + memptr=cupy.cuda.MemoryPointer( + cupy.cuda.UnownedMemory( + self.clean_mask.cudaPtr(), + self.clean_mask.step * height, + self.clean_mask, + ), + 0, + ), + strides=(self.clean_mask.step, 1), + ) + try: + debug_frame_limit = self.debug_frame_limit + + if overall_frame_num <= debug_frame_limit: + stage_debug_dir = ( + self.result_dir + / "debug_stages" + / self._testMethodName + / "roi_stages" + ) + stage_debug_dir.mkdir(parents=True, exist_ok=True) + + # 2. BRIDGE THE PYTORCH TO OPENCV VRAM GAP + if torch.is_tensor(device_frame): + h_raw, w_raw, ch = device_frame.shape + cuda_mem_ptr = device_frame.data_ptr() + cv_type = cv2.CV_8UC3 if ch == 3 else cv2.CV_8UC1 + row_step_bytes = device_frame.stride()[0] * device_frame.element_size() + src_gpu_mat = cv2.cuda.createGpuMatFromCudaMemory( + h_raw, w_raw, cv_type, cuda_mem_ptr, step=row_step_bytes + ) + else: + src_gpu_mat = device_frame + ch = src_gpu_mat.channels() + + if overall_frame_num <= debug_frame_limit: + src_cpu = src_gpu_mat.download() + if ch == 3: + src_cpu = cv2.cvtColor(src_cpu, cv2.COLOR_RGB2BGR) + cv2.imwrite( + str( + stage_debug_dir + / f"frame_{overall_frame_num:04d}_stage1_src.jpg" + ), + src_cpu, + ) + del src_cpu + + # 1. Swap active buffers (Double Buffering) + # This gives us a 100% thread-safe copy without allocating a single byte of new VRAM! + # if self.use_buffer_A: + # active_resize_mat = self.recycled_resize_mat_A + # self.use_buffer_A = False + # else: + # active_resize_mat = self.recycled_resize_mat_B + # self.use_buffer_A = True + + # 4. RUN ASYNCHRONOUS DOWN-SAMPLING GATE + cv2.cuda.resize( + src_gpu_mat, + dst=self.recycled_resize_mat, # active_resize_mat, + dsize=(self.resize_w, self.resize_h), + interpolation=cv2.INTER_NEAREST, + stream=self.bgs_stream, + ) + # isolated_resize_mat = self.recycled_resize_mat.clone() + + if overall_frame_num <= debug_frame_limit: + self.bgs_stream.waitForCompletion() + resize_cpu = self.recycled_resize_mat.download() + if ch == 3: + resize_cpu = cv2.cvtColor(resize_cpu, cv2.COLOR_RGB2BGR) + cv2.imwrite( + str( + stage_debug_dir + / f"frame_{overall_frame_num:04d}_stage2_resize.jpg" + ), + resize_cpu, + ) + del resize_cpu + + # 5. BACKGROUND SUBTRACTION & FILTERING + self.raw_mask = self.apply_background_subtraction_gpu( + self.recycled_resize_mat, + include_history=self.config.BKGD_SUB_INCLUDE_HISTORY, + method=self.config.BKGD_SUB_INCLUDE_HISTORY_METHOD, + stream=self.bgs_stream, + ) + + if overall_frame_num <= debug_frame_limit: + self.bgs_stream.waitForCompletion() + cv2.imwrite( + str( + stage_debug_dir + / f"frame_{overall_frame_num:04d}_stage5_history_mask.jpg" + ), + self.raw_mask.download(), + ) + + # --- START: FUSED KERNEL EXECUTION --- + # We bridge raw_mask and clean_mask to CuPy arrays (zero-copy) + # height, width = self.raw_mask.size() + + # raw_mask_cp = cupy.ndarray( + # shape=(height, width), + # dtype=cupy.uint8, + # memptr=cupy.cuda.MemoryPointer( + # cupy.cuda.UnownedMemory( + # self.raw_mask.cudaPtr(), + # self.raw_mask.step * height, + # self.raw_mask, + # ), + # 0, + # ), + # strides=(self.raw_mask.step, 1), + # ) + + # clean_mask_cp = cupy.ndarray( + # shape=(height, width), + # dtype=cupy.uint8, + # memptr=cupy.cuda.MemoryPointer( + # cupy.cuda.UnownedMemory( + # self.clean_mask.cudaPtr(), + # self.clean_mask.step * height, + # self.clean_mask, + # ), + # 0, + # ), + # strides=(self.clean_mask.step, 1), + # ) + + # 3. Launch the Fused CUDA Kernel! + # Grid/Block sizes optimized for RTX A6000 architecture + block_dim = 16 + grid_size = ( + (width + block_dim - 1) // block_dim, + (height + block_dim - 1) // block_dim, + ) + block_size = (block_dim, block_dim) + + # 2. Wait for OpenCV BGS stream to finish before CuPy takes over + # self.bgs_stream.waitForCompletion() + self.cupy_bgs_stream = cupy.cuda.ExternalStream(self.bgs_stream.cudaPtr()) + + # 4. Launch the single fused kernel on CuPy's default stream + self.fused_3_in_1_kernel( + grid_size, + block_size, + ( + raw_mask_cp, # src + clean_mask_cp, # dst + width, + height, + self.raw_mask.step, + self.clean_mask.step, + ), + stream=self.cupy_bgs_stream, + ) + + # 6. REGION OF INTEREST ANALYSIS + limit_8K = 1280 + limit_640 = limit_8K / self.scale_x + # start.record() + raw_boxes = self.get_gpu_rois_by_area( + overall_frame_num, + self.clean_mask, + max_candidates=50, + limit_640=limit_640, + ) + # end.record() + # torch.cuda.synchronize() + # gpu_rois_by_area_ms = start.elapsed_time(end) + + if raw_boxes.shape[0] < 1: + return torch.empty((0, 4), device=self.device_input) + + raw_boxes = self.gpu_roi_padding(raw_boxes, method="uniform") + # start.record() + clean_640p = merge_boxes_gpu( + raw_boxes, + gap_limit=self.dist_thresh_640, + size_limit=limit_640, + max_cached_elements=self.max_cached_elements, + ) + # end.record() + # torch.cuda.synchronize() + # merge_ms = start.elapsed_time(end) + + # main_app_logger.info(f"gpu_rois_by_area: {gpu_rois_by_area_ms:.3f} ms") + # main_app_logger.info(f"merge_boxes_gpu: {merge_ms:.3f} ms") + + if clean_640p.shape[0] < 1: + return torch.empty((0, 4), device=self.device_input) + + clean_640p[:, 0].clamp_(min=0, max=self.resize_w - 1) + clean_640p[:, 1].clamp_(min=0, max=self.resize_h - 1) + clean_640p[:, 2].clamp_(min=0, max=self.resize_w - 1) + clean_640p[:, 3].clamp_(min=0, max=self.resize_h - 1) + + # OPTIMIZATION: IN-PLACE RESCALING + # Avoid slicing arrays out sequentially into individual variables (xmin, ymin...) + # Construct and scale standard boxes directly to prevent memory allocation chattering. + # standard_boxes = torch.stack( + # [ + # clean_640p[:, 0], + # clean_640p[:, 1], + # clean_640p[:, 2], + # clean_640p[:, 3], + # ], + # dim=1, + # ) + bbs_full_res = ( + torch.stack( + [ + clean_640p[:, 0], + clean_640p[:, 1], + clean_640p[:, 2], + clean_640p[:, 3], + ], + dim=1, + ) + * self.scales_tensor + ).detach() + + # if standard_boxes is None or standard_boxes.shape[0] == 0: + # return torch.empty((0, 4), device=self.device_input, dtype=torch.float32) + + # Multiply inplace and avoid manual `del` garbage sweeps to maintain maximum throughput + # bbs_full_res = (standard_boxes * self.scales_tensor).detach() + finally: + # 2. Release temporary OpenCV GpuMats. Using 'in locals()' is safer. + if "raw_mask_cp" in locals(): + del raw_mask_cp + if "clean_mask_cp" in locals(): + del clean_mask_cp + if "src_gpu_mat" in locals(): + del src_gpu_mat + # if "isolated_resize_mat" in locals(): + # del isolated_resize_mat + + del device_frame + + if "raw_boxes" in locals(): + del raw_boxes + if "clean_640p" in locals(): + del clean_640p + + # 3. Force CuPy to release all unused memory back to the system. + # This is the most critical step for preventing inter-library OOM errors. + cupy.get_default_memory_pool().free_all_blocks() + return bbs_full_res + + def run_gpu_pipeline( + self, device_frame, overall_frame_num, frame_in_clip_count=0, gt_boxes=None + ): + metrics = {"sf_time": 0, "roi_time": 0, "det_time": 0, "bbs": None} + metadata = {} + + # Get ROIs + if self.timer_enabled: + self.sf_start.record(self.inference_stream) + + bgs_input_frame = ( + device_frame.byte() if torch.is_tensor(device_frame) else device_frame + ) + bbs_full_res = self.get_sf_gpu_rois(bgs_input_frame, overall_frame_num) + + if self.timer_enabled: + self.sf_end.record(self.inference_stream) + + # metrics["bbs"] = bbs_full_res + # Detach the matrix coordinates cleanly out of the tracking graph immediately + if bbs_full_res is not None: + if torch.is_tensor(bbs_full_res): + metrics["bbs"] = bbs_full_res.detach().cpu().numpy() + elif isinstance(bbs_full_res, np.ndarray): + metrics["bbs"] = bbs_full_res + else: + metrics["bbs"] = np.empty((0, 4), dtype=np.float32) + + merged, det_frame = self.format_bbs_and_frame_4_detection( + bbs_full_res, device_frame + ) + motion_detected = len(merged) > 0 if merged is not None else False + metrics["batch_density"] = len(merged) if merged is not None else 0 + + if ( + self.config.DEBUG_FLAG + and overall_frame_num <= self.config.DEBUG_FRAME_LIMIT + ): + self.debug_save_mask( + det_frame, overall_frame_num, rois=merged, gt_boxes=gt_boxes + ) + + if not self.config.DISABLE_DETECTION: + # --- 3. MODEL INFERENCE TIMING BLOCK --- + if self.device_input == "cuda" and self.timer_enabled: + self.det_start.record(self.inference_stream) + # elif self.timer_enabled: + # t_start = time.perf_counter() + + # Get Detection Metadata + if self.config.DETECTION_TYPE != "motion": # Object detection + metadata, _ = self.get_detections( + det_frame, + frame_in_clip_count, + merged=merged, + thickness=self.config.THICKNESS, + device_input=self.config.device_input, + ) + # num_objs = len(metadata.keys()) + else: # Motion: Smart filtering results + # 8k bb to 640 + metadata = self.motion2metadata(merged, frame_in_clip_count) + + if self.device_input == "cuda" and self.timer_enabled: + self.det_end.record(self.inference_stream) + # self.inference_stream.synchronize() + + # Lock-free check: wait for event completion without blocking the CPU GIL + while not self.det_end.query(): + # Yield GIL to let file-writers and thread-pools work + time.sleep(0.001) + # self.det_end.synchronize() + + # Full-frame YOLO baseline tracks the elapsed time from t_start on page 20, line 1273 + metrics["sf_time"] = self.sf_start.elapsed_time(self.sf_end) + metrics["det_time"] = self.det_start.elapsed_time(self.det_end) + elif self.device_input == "cuda" and self.timer_enabled: + metrics["sf_time"] = self.sf_start.elapsed_time(self.sf_end) + + # elif self.timer_enabled: + # # CPU Path Execution: Must use standard wall-clock timing loops to avoid CUDA Event errors + # metrics["det_time"] = (time.perf_counter() - t_start) * 1000.0 + + del merged, bbs_full_res + return metrics, metadata, det_frame, motion_detected + + # v1 + def find_contours_gpu_equivalent(self, mask_gpu_mat, stream=None, limit_640=None): + """ + Refactored allocation-free GPU bounding box contour extraction tree. + Bypasses dynamic VRAM creation paths entirely. + """ + + # start = torch.cuda.Event(enable_timing=True) + # end = torch.cuda.Event(enable_timing=True) + w, h = mask_gpu_mat.size() + ptr = mask_gpu_mat.cudaPtr() + pitch_bytes = mask_gpu_mat.step + + mask_cp = cupy.ndarray( + (h, w), + dtype=cupy.uint8, + memptr=cupy.cuda.MemoryPointer( + cupy.cuda.UnownedMemory(ptr, pitch_bytes * h, mask_gpu_mat), 0 + ), + strides=(pitch_bytes, 1), + ) + + stream_ptr = stream.cudaPtr() if stream else 0 + + with cupy.cuda.ExternalStream(stream_ptr): + if ( + not hasattr(self, "_labeled_scratch") + or self._labeled_scratch.shape != (h, w) + or not self._labeled_scratch.flags.c_contiguous + ): + # Explicitly force order='C' (Row-Major Linear Stride alignment) at initialization. + # This completely eliminates internal syncdetect regular expression matching stutters! + self._labeled_scratch = cupy.empty((h, w), dtype=cupy.int32, order="C") + + # start = cupy.cuda.Event() + # end = cupy.cuda.Event() + # start.record() + # 2. FAST IN-PLACE LABELING + # Because output is guaranteed to be a linear memory layout, SciPy processes it with zero device syncs + # TODO: Custom CUDA kernel to replace b/c label algorithm is costly + num_labels = cupyx.scipy.ndimage.label( + mask_cp, structure=self.cupy_structure, output=self._labeled_scratch + ) + # end.record() + # end.synchronize() + # ms = cupy.cuda.get_elapsed_time(start, end) + # main_app_logger.info(f"cupyx label: {ms:.3f} ms") + + if num_labels == 0: + return torch.empty((0, 4), device="cuda") + + # Prevent array overflows if features spike abnormally + safe_labels = min(num_labels + 1, self._max_labels) + + # Quick, specialized in-place fills over our persistent pools (0 loop churn) + self._x1_pool[:safe_labels].fill(w) + self._y1_pool[:safe_labels].fill(h) + self._x2_pool[:safe_labels].fill(-1) + self._y2_pool[:safe_labels].fill(-1) + + # self._x1_pool[:safe_labels] = w + # self._y1_pool[:safe_labels] = h + # self._x2_pool[:safe_labels] = -1 + # self._y2_pool[:safe_labels] = -1 + + # Extract references for your custom kernel execution map + pitch_elements = self._labeled_scratch.strides[0] // 4 + + tpb = (16, 16, 1) + bpg = ((w + tpb[0] - 1) // tpb[0], (h + tpb[1] - 1) // tpb[1], 1) + + # 3. DIRECT DRIVER FUNCTION CALL (Maintains your accurate get_bounds logic) + self._raw_bounds_function( + bpg, + tpb, + ( + self._labeled_scratch.data.ptr, # const int* labeled + pitch_elements, # int pitch + w, # int w + h, # int h + num_labels, # int num_labels + self._x1_pool[:safe_labels].data.ptr, # int* x1 + self._y1_pool[:safe_labels].data.ptr, # int* y1 + self._x2_pool[:safe_labels].data.ptr, # int* x2 + self._y2_pool[:safe_labels].data.ptr, # int* y2 + ), + ) + + # 4. ELIMINATE COLUMN_STACK ALLOCATION OVERHEAD (Replaces lines 91-105) + # Your previous code allocated memory on the heap every frame via cupy.column_stack. + # Instead, map the pre-allocated pool buffers directly into contiguous PyTorch tensor views! + x1_t = torch.as_tensor(self._x1_pool[1:safe_labels], device="cuda") + y1_t = torch.as_tensor(self._y1_pool[1:safe_labels], device="cuda") + x2_t = torch.as_tensor(self._x2_pool[1:safe_labels], device="cuda") + y2_t = torch.as_tensor(self._y2_pool[1:safe_labels], device="cuda") + + # Stack tensors natively using unified memory views without copies or host syncs + return torch.stack((x1_t, y1_t, x2_t, y2_t), dim=1).float() + + # def find_contours_gpu_equivalent_v3(self, clean_mask, stream=None, limit_640=1280): + # """ + # Extremely fast, zero-allocation GPU boundary extraction. + # Bypasses OpenCV's costly contour allocations entirely. + # """ + # # Convert the OpenCV GpuMat directly to a PyTorch GPU Tensor view (Zero-Copy) + # # This does not allocate any new VRAM! + # # mask_tensor = torch.as_tensor( + # # clean_mask, + # # device="cuda" + # # ) + # height, width = clean_mask.size() + + # # 1. Grab the raw C++ VRAM pointer from the OpenCV GpuMat + # # and wrap it in a CuPy array without copying the data + # mask_cp = cupy.ndarray( + # shape=(height, width), + # dtype=cupy.uint8, + # memptr=cupy.cuda.MemoryPointer( + # cupy.cuda.UnownedMemory( + # clean_mask.cudaPtr(), + # clean_mask.step * height, + # clean_mask + # ), + # 0 + # ), + # strides=(clean_mask.step, 1) + # ) + # mask_tensor = from_dlpack(mask_cp.toDlpack()) + + # # 1. Extract the coordinates of all active motion pixels (Non-zero coordinates) + # # We write directly into our pre-allocated coordinates scratchpad using a view + # nz = torch.nonzero(mask_tensor, out=self.coords_scratchpad) + + # if nz.shape[0] == 0: + # return torch.empty((0, 4), dtype=torch.float32, device="cuda") + + # # 2. Extract boundaries using vectorized Min/Max operations + # # This completely avoids creating temporary contour objects! + # y_coords = nz[:, 0] + # x_coords = nz[:, 1] + + # # Find the global min/max coordinates of the motion region + # x1 = x_coords.min() + # y1 = y_coords.min() + # x2 = x_coords.max() + # y2 = y_coords.max() + + # # 3. Write directly to our pre-allocated static output box + # self.static_boxes_out[0, 0] = x1 + # self.static_boxes_out[0, 1] = y1 + # self.static_boxes_out[0, 2] = x2 + # self.static_boxes_out[0, 3] = y2 + + # # Return a view of the active boxes (Zero new allocations) + # return self.static_boxes_out[:1] + + # def find_contours_gpu_equivalent_v2(self, mask_gpu_mat, stream=None, limit_640=None): + # """ + # Replaces the CuPy version with a 100% PyTorch-native implementation. + # This completely eliminates CuPy-PyTorch context-switching overhead + # and utilizes parallel GPU reduction via scatter_reduce. + # """ + # # We manually construct the __cuda_array_interface__ to share GPU memory pointers + # # without any host-device copies. + + # # 1. Gather GpuMat metadata + # height, width = mask_gpu_mat.size() + # gpu_ptr = mask_gpu_mat.cudaPtr() + # step = mask_gpu_mat.step # Number of bytes per row (stride) + + # # Instantly wrap the pointer into a PyTorch GPU Tensor (0 ms latency!) + # holder = GPUHolder({ + # 'shape': (height, width), + # 'typestr': '|u1', # OpenCV's CV_8UC1 is equivalent to uint8 + # 'data': (gpu_ptr, False), # Pointer address, Read-only=False + # 'strides': (step, 1), + # 'version': 3 + # }) + # mask_tensor = torch.as_tensor(holder, device=self.device_input) + # # ========================================================================= + + # # 2. Convert mask to boolean for segmentation + # binary_mask = mask_tensor > 0 + + # # 3. Use OpenCV's highly optimized CPU CC labeling (faster than CuPy for small labels/warmups) + # # Or if OpenCV's CUDA CC labeling is available, dispatch there. + # # This gives a fast, reliable label grid. + # num_labels, labels = cv2.connectedComponents( + # binary_mask.cpu().numpy().astype(np.uint8), + # connectivity=8 + # ) + + # # If there are only background pixels, return an empty coordinate tensor + # if num_labels <= 1: + # return torch.empty((0, 4), device=self.device_input, dtype=torch.float32) + + # # 4. Push label grid back to the active GPU + # labels_gpu = torch.as_tensor(labels, device=self.device_input) + + # # 5. Pre-allocate coordinate bounds tensors on the GPU + # # We use standard 32-bit integers to keep memory operations light + # max_val = torch.iinfo(torch.int32).max + # x1 = torch.full((num_labels,), max_val, device=self.device_input, dtype=torch.int32) + # y1 = torch.full((num_labels,), max_val, device=self.device_input, dtype=torch.int32) + # x2 = torch.full((num_labels,), -1, device=self.device_input, dtype=torch.int32) + # y2 = torch.full((num_labels,), -1, device=self.device_input, dtype=torch.int32) + + # # 6. Extract raw indices of all active foreground pixels on GPU + # # This keeps the coordinates completely in memory + # y_coords, x_coords = torch.nonzero(labels_gpu, as_tuple=True) + # label_vals = labels_gpu[y_coords, x_coords] + + # # 7. Perform high-speed parallel GPU reductions to find min/max coordinates + # # 'amin' and 'amax' are computed concurrently across all threads + # x1.scatter_reduce_(0, label_vals, x_coords.int(), reduce="amin", include_self=False) + # y1.scatter_reduce_(0, label_vals, y_coords.int(), reduce="amin", include_self=False) + # x2.scatter_reduce_(0, label_vals, x_coords.int(), reduce="amax", include_self=False) + # y2.scatter_reduce_(0, label_vals, y_coords.int(), reduce="amax", include_self=False) + + # # 8. Stack bounds and discard index 0 (which represents the background) + # # Returns shape: (N, 4) -> [x1, y1, x2, y2] matching your downstream merge_boxes format + # boxes = torch.stack((x1[1:], y1[1:], x2[1:], y2[1:]), dim=1).float() + + # return boxes + + # def find_contours_gpu_equivalent_v3(self, mask_gpu_mat, stream=None, limit_640=None): + # """ + # 100% GPU-native connected components labeling. + # Combines CuPy labeling with PyTorch-native vectorized bounding box reduction. + # """ + # # import cupy + # # import cupyx.scipy.ndimage + # # import torch + + # # 1. Zero-copy bridge from OpenCV GpuMat to CuPy array on the GPU + # height, width = mask_gpu_mat.size() + + # mask_cp = cupy.ndarray( + # shape=(height, width), + # dtype=cupy.uint8, + # memptr=cupy.cuda.MemoryPointer( + # cupy.cuda.UnownedMemory(mask_gpu_mat.cudaPtr(), mask_gpu_mat.step * height, mask_gpu_mat), 0 + # ), + # strides=(mask_gpu_mat.step, 1) + # ) + + # # 2. Perform high-speed connected components labeling on GPU using CuPy + # structure = cupy.ones((3, 3), dtype=cupy.int32) + # labeled_mask, num_labels = cupyx.scipy.ndimage.label(mask_cp > 0, structure=structure) + + # if num_labels == 0: + # return torch.empty((0, 4), device=self.device_input, dtype=torch.float32) + + # # ========================================================================= + # # 3. Zero-copy bridge from labeled CuPy array to PyTorch GPU Tensor + # # ========================================================================= + # # Since labeled_mask is a CuPy array, we can access its __cuda_array_interface__ + # # to expose the memory block directly to PyTorch without any copies! + # labels_gpu = torch.as_tensor(labeled_mask, device=self.device_input) + + # # 4. Pre-allocate coordinate bounds tensors on the GPU + # max_val = torch.iinfo(torch.int32).max + # x1 = torch.full((num_labels + 1,), max_val, device=self.device_input, dtype=torch.int32) + # y1 = torch.full((num_labels + 1,), max_val, device=self.device_input, dtype=torch.int32) + # x2 = torch.full((num_labels + 1,), -1, device=self.device_input, dtype=torch.int32) + # y2 = torch.full((num_labels + 1,), -1, device=self.device_input, dtype=torch.int32) + + # # 5. Extract raw indices of all active foreground pixels on the GPU + # y_coords, x_coords = torch.nonzero(labels_gpu, as_tuple=True) + # label_vals = labels_gpu[y_coords, x_coords].long() # Cast to long for indexing + + # # 6. Parallel GPU reduction to find bounding coordinates for all labels at once + # x1.scatter_reduce_(0, label_vals, x_coords.int(), reduce="amin", include_self=False) + # y1.scatter_reduce_(0, label_vals, y_coords.int(), reduce="amin", include_self=False) + # x2.scatter_reduce_(0, label_vals, x_coords.int(), reduce="amax", include_self=False) + # y2.scatter_reduce_(0, label_vals, y_coords.int(), reduce="amax", include_self=False) + + # # 7. Stack bounds, skipping index 0 (the background label) + # # Returns shape: (N, 4) -> [x1, y1, x2, y2] + # boxes = torch.stack((x1[1:], y1[1:], x2[1:], y2[1:]), dim=1).float() + + # return boxes + + def get_gpu_rois_by_area(self, frameNum, mask, max_candidates=100, limit_640=1280): + # Extract true spatial constraints straight from the active mask object footprint + if torch.is_tensor(mask): + mask_h, mask_w = mask.shape[-2:] + elif isinstance(mask, cv2.cuda.GpuMat): + # cv2.cuda.GpuMat.size() returns a tuple of (width, height) standard formatting + mask_w, mask_h = mask.size() + else: + mask_h, mask_w = mask.shape[:2] + + # This prevents find_contours_gpu_equivalent from mutating the mask variables used by other threads. + if isinstance(mask, cv2.cuda.GpuMat): + # .clone() allocates a new C++ memory surface and forces full continuity + isolated_kernel_mask = mask # .clone() + elif torch.is_tensor(mask): + isolated_kernel_mask = mask # .clone().contiguous() + else: + isolated_kernel_mask = mask # .copy() + + # Get raw boxes from mask (Direct VRAM bridge) + boxes_gpu = self.find_contours_gpu_equivalent( + isolated_kernel_mask, + stream=self.bgs_stream, + limit_640=limit_640, # 640*1.5, + ) + + # --- FIX: ELIMINATE STREAM RACE --- + if boxes_gpu is None or len(boxes_gpu) == 0: + return torch.empty((0, 4), device=self.device_input) + + # if len(boxes_gpu) > max_candidates: # Adjust threshold based on target max objects + # # Prioritize or slice to prevent merge_boxes_gpu from thrashing scatter_reduce_ + # boxes_gpu = boxes_gpu[:max_candidates] + + # Wrap existing GPU memory as a float tensor (Zero Copy) + raw_boxes = torch.as_tensor(boxes_gpu, device=self.device_input).float() + # if self.device_input == "cuda": + # # Wrap the native device handle and IMMEDIATELY append .clone() + # # This allocates a brand new, physically isolated VRAM block to secure the bounding boxes + # raw_boxes = ( + # torch.as_tensor(boxes_gpu, device=self.device_input).float().clone() + # ) + # else: + # raw_boxes = torch.as_tensor(boxes_gpu, device=self.device_input).float() + + if raw_boxes is not None and len(raw_boxes) > 0: + # Vectorized Pre-Filter (Removes noise blobs before merging) + w = raw_boxes[:, 2] - raw_boxes[:, 0] + h = raw_boxes[:, 3] - raw_boxes[:, 1] + # mask_filter = (w > 2) & (h > 2) & (w * h > self.min_contour_area) & (w < mask_w) & (h < mask_h) + mask_filter = ( + (w <= self.max_roi_w) + & (h <= self.max_roi_h) + & (w >= self.min_roi_w) + & (h >= self.min_roi_h) + ) + # Ensure both structures match dimensions along the indexing axis + # if raw_boxes.shape[0] == mask_filter.shape[0] and raw_boxes.shape[0] > 0: + # raw_boxes = raw_boxes[mask_filter] + # else: + # # Short-circuit directly to an empty tensor if shapes don't match or are 0 + # raw_boxes = torch.empty((0, 4), device=self.device_input, dtype=torch.float32) + if raw_boxes.shape[0] > 0: + raw_boxes = raw_boxes[mask_filter] + + # Guard rails: Clamp boundaries in-place to stay safely within the 8K master frame + # Indices 0 and 2 are X coordinates bounded by frame width; 1 and 3 are Y coordinates bounded by frame height + raw_boxes[:, 0].clamp_(min=0, max=self.resize_w - 1) + raw_boxes[:, 1].clamp_(min=0, max=self.resize_h - 1) + raw_boxes[:, 2].clamp_(min=0, max=self.resize_w - 1) + raw_boxes[:, 3].clamp_(min=0, max=self.resize_h - 1) + + # Re-assign back to your pipeline's tracking variable + # raw_boxes = padded_tensor + + # Prevents N^2 distance matrix from exploding during high noise + # if raw_boxes.shape[0] > max_candidates: + # # Prioritize the largest blobs (most likely to be drones) + # areas = (raw_boxes[:, 2] - raw_boxes[:, 0]) * ( + # raw_boxes[:, 3] - raw_boxes[:, 1] + # ) + # flat_areas = areas.view(-1) + # _, indices = torch.topk( + # flat_areas, k=min(max_candidates, flat_areas.shape[0]), dim=-1 + # ) + # # _, indices = torch.topk(areas, max_candidates) + # raw_boxes = raw_boxes[indices] + num_boxes = raw_boxes.shape[0] + if num_boxes > max_candidates: + areas = (raw_boxes[:, 2] - raw_boxes[:, 0]) * ( + raw_boxes[:, 3] - raw_boxes[:, 1] + ) + _, indices = torch.topk(areas, k=max_candidates, dim=0) + raw_boxes = raw_boxes[indices] + return raw_boxes + + def gpu_roi_padding(self, raw_boxes, method="uniform"): + """ + raw_boxes: in resize space (640) + """ + + if method == "uniform": + # pad using scale factor + widths = raw_boxes[:, 2] - raw_boxes[:, 0] + heights = raw_boxes[:, 3] - raw_boxes[:, 1] + # pad_w = widths * (PADDING_SCALE / 2.0) + # pad_h = heights * (PADDING_SCALE / 2.0) + # Add a minimum 3px clamp to ensure tiny objects don't lose their margins + pad_w = torch.clamp(widths * (PADDING_SCALE / 2.0), min=3.0) + pad_h = torch.clamp(heights * (PADDING_SCALE / 2.0), min=3.0) + padding_mask = torch.stack([-pad_w, -pad_h, pad_w, pad_h], dim=1) + + # Apply padding to all bounding boxes concurrently via broad-vector math + raw_boxes = raw_boxes + padding_mask + elif method == "modelsize": + # extend box up to MODEL size + # if box is larger, keep as-is + scaley_8Kto640 = self.config.MODEL_H / self.frame_height + scalex_8Kto640 = self.config.MODEL_W / self.frame_width + model_w_640 = int(self.config.MODEL_W * scalex_8Kto640) + model_h_640 = int(self.config.MODEL_H * scaley_8Kto640) + + widths = raw_boxes[:, 2] - raw_boxes[:, 0] + heights = raw_boxes[:, 3] - raw_boxes[:, 1] + # if (widths,heights) == (model_w_640,model_h_640) or widths > model_w_640 or heights > model_h_640: + # pass # Keep as is + # else: + x_centers = (raw_boxes[:, 0] + raw_boxes[:, 2]) / 2.0 + y_centers = (raw_boxes[:, 1] + raw_boxes[:, 3]) / 2.0 + + # Determine target dimensions (clamp to target size if smaller) + new_widths = torch.clamp(widths, min=model_w_640) + new_heights = torch.clamp(heights, min=model_h_640) + + # Calculate new coordinates from the centers + new_x1 = x_centers - (new_widths / 2.0) + new_y1 = y_centers - (new_heights / 2.0) + new_x2 = x_centers + (new_widths / 2.0) + new_y2 = y_centers + (new_heights / 2.0) + + # 4. Stack into a tensor matching raw_boxes shape + raw_boxes = torch.stack([new_x1, new_y1, new_x2, new_y2], dim=1) + elif method == "pixel": + # pad using scale factor + # widths = raw_boxes[:, 2] - raw_boxes[:, 0] + # heights = raw_boxes[:, 3] - raw_boxes[:, 1] + # # pad_w = widths * (PADDING_SCALE / 2.0) + # # pad_h = heights * (PADDING_SCALE / 2.0) + # Add a minimum 3px clamp to ensure tiny objects don't lose their margins + # padding_mask = torch.stack([-PADDING_PX, -PADDING_PX, PADDING_PX, PADDING_PX], dim=1) + + # Apply padding to all bounding boxes concurrently via broad-vector math + # raw_boxes = raw_boxes + padding_mask + # padding = 5 # self.config.ROI_BB_FULL_RES_PADDING / self.scale_x + padding_scale = 0.01 + raw_boxes[:, 0] -= int(padding_scale * self.frame_width) + raw_boxes[:, 1] -= int(padding_scale * self.frame_height) + raw_boxes[:, 2] += int(padding_scale * self.frame_width) + raw_boxes[:, 3] += int(padding_scale * self.frame_height) + + return raw_boxes + + def filter_contained_boxes(self, boxes, overlap_thresh=0.9, max_elements=2000): + """ + True Zero-Copy Anchor Filter. Eliminates torch.stack stream synchronization + stalls by utilizing a pre-allocated boolean tracking register map. + Supports both CPU and GPU execution profiles natively. + """ + if boxes.shape[0] <= 1: + return boxes + + # 1. Extract dimensions safely using vectorized layout views + x1, y1, x2, y2 = boxes[:, 0], boxes[:, 1], boxes[:, 2], boxes[:, 3] + w = (x2 - x1).clamp(min=0) + h = (y2 - y1).clamp(min=0) + areas = w * h + + valid_mask = ( + (w < self.max_roi_w) + & (h < self.max_roi_h) + & (w >= self.min_roi_w) + & (h >= self.min_roi_h) + ) + boxes = boxes[valid_mask] + areas = areas[valid_mask] + + N = boxes.shape[0] + if N <= 1: + return boxes + + # 2. Sort structural metrics into our pre-allocated scratch index register + order = self._filter_order_scratch[:N] + torch.argsort(areas, stable=False, dim=0, descending=True, out=order) + + # 🚀 REPLACEMENT: Use an in-place boolean tracking mask instead of a Python list + # to collect survival flags without triggering heap fragmentation or synchronization locks. + if ( + not hasattr(self, "_filter_survival_mask") + or self._filter_survival_mask.shape[0] < max_elements + ): + self._filter_survival_mask = torch.zeros( + (max_elements,), dtype=torch.bool, device=boxes.device + ) + + survival_mask = self._filter_survival_mask[:N].zero_() + + # 3. User-Space Evaluation Loop + while order.numel() > 0: + i = order[0] + survival_mask[i] = ( + True # Mark this anchor index as verified on-device instantly + ) + + if order.numel() == 1: + break + + order_tail = order[1:] + num_tail = order_tail.numel() + + # Enforce static VRAM outputs using target 'out=' parameter parameters + torch.max( + boxes[i, 0], + boxes[order_tail, 0], + out=self._filter_scratch_x1[:num_tail], + ) + torch.max( + boxes[i, 1], + boxes[order_tail, 1], + out=self._filter_scratch_y1[:num_tail], + ) + torch.min( + boxes[i, 2], + boxes[order_tail, 2], + out=self._filter_scratch_x2[:num_tail], + ) + torch.min( + boxes[i, 3], + boxes[order_tail, 3], + out=self._filter_scratch_y2[:num_tail], + ) + + inter_w = ( + self._filter_scratch_x2[:num_tail] - self._filter_scratch_x1[:num_tail] + ).clamp_(min=0) + inter_h = ( + self._filter_scratch_y2[:num_tail] - self._filter_scratch_y1[:num_tail] + ).clamp_(min=0) + inter_area = inter_w * inter_h + + torch.div( + inter_area, + (areas[order_tail] + 1e-6), + out=self._filter_scratch_ioa[:num_tail], + ) + + mask = self._filter_scratch_keep[:num_tail] + torch.le(self._filter_scratch_ioa[:num_tail], overlap_thresh, out=mask) + + # Advance tracking window slice cleanly to the filtered child nodes + order = order_tail[mask] + + # 🚀 REPLACEMENT: Slice the original tensor layout with the boolean mask directly. + # This keeps the execution pipeline loopless and avoids cross-hardware synchronization stalls. + return boxes[survival_mask] + + def cpu_roi_padding(self, coords_xywh, method="uniform"): + """ + raw_boxes: in resize space (640) + """ + + if method == "uniform": + # pad using scale factor + widths = coords_xywh[:, 2] + heights = coords_xywh[:, 3] + # pad_w = widths * (PADDING_SCALE / 2.0) + # pad_h = heights * (PADDING_SCALE / 2.0) + # Add a minimum 3px clamp to ensure tiny objects don't lose their margins + pad_w = torch.clamp(widths * (PADDING_SCALE / 2.0), min=3.0) + pad_h = torch.clamp(heights * (PADDING_SCALE / 2.0), min=3.0) + # padding_mask = torch.stack([-pad_w, -pad_h, pad_w, pad_h], dim=1) + + x1 = coords_xywh[:, 0] - pad_w + y1 = coords_xywh[:, 1] - pad_h + x2 = (coords_xywh[:, 0] + widths) + pad_w + y2 = (coords_xywh[:, 1] + heights) + pad_h + raw_boxes = torch.stack([x1, y1, x2, y2], dim=1) + + elif method == "modelsize": + # extend box up to MODEL size + # if box is larger, keep as-is + scaley_8Kto640 = self.config.MODEL_H / self.frame_height + scalex_8Kto640 = self.config.MODEL_W / self.frame_width + model_w_640 = int(self.config.MODEL_W * scalex_8Kto640) + model_h_640 = int(self.config.MODEL_H * scaley_8Kto640) + + widths = coords_xywh[:, 2] + heights = coords_xywh[:, 3] + # if (widths,heights) == (model_w_640,model_h_640) or widths > model_w_640 or heights > model_h_640: + # pass # Keep as is + # else: + x_centers = (coords_xywh[:, 0] + widths) / 2.0 + y_centers = (coords_xywh[:, 1] + heights) / 2.0 + + # Determine target dimensions (clamp to target size if smaller) + new_widths = torch.clamp(widths, min=model_w_640) + new_heights = torch.clamp(heights, min=model_h_640) + + # Calculate new coordinates from the centers + new_x1 = x_centers - (new_widths / 2.0) + new_y1 = y_centers - (new_heights / 2.0) + new_x2 = x_centers + (new_widths / 2.0) + new_y2 = y_centers + (new_heights / 2.0) + + # 4. Stack into a tensor matching raw_boxes shape + raw_boxes = torch.stack([new_x1, new_y1, new_x2, new_y2], dim=1) + + elif method == "pixel": + # pad using scale factor + # widths = raw_boxes[:, 2] - raw_boxes[:, 0] + # heights = raw_boxes[:, 3] - raw_boxes[:, 1] + # # pad_w = widths * (PADDING_SCALE / 2.0) + # # pad_h = heights * (PADDING_SCALE / 2.0) + # Add a minimum 3px clamp to ensure tiny objects don't lose their margins + # padding_mask = torch.stack([-PADDING_PX, -PADDING_PX, PADDING_PX, PADDING_PX], dim=1) + + # Apply padding to all bounding boxes concurrently via broad-vector math + # raw_boxes = raw_boxes + padding_mask + # padding = 5 # self.config.ROI_BB_FULL_RES_PADDING / self.scale_x + padding_scale = 0.01 + widths = coords_xywh[:, 2] + heights = coords_xywh[:, 3] + pad_w = int(padding_scale * self.frame_width) + pad_h = int(padding_scale * self.frame_height) + # raw_boxes[:, 2] += int(padding_scale * self.frame_width) + # raw_boxes[:, 3] += int(padding_scale * self.frame_height) + + x1 = coords_xywh[:, 0] - pad_w + y1 = coords_xywh[:, 1] - pad_h + x2 = (coords_xywh[:, 0] + widths) + pad_w + y2 = (coords_xywh[:, 1] + heights) + pad_h + raw_boxes = torch.stack([x1, y1, x2, y2], dim=1) + + # Clean vectorized boundary clamping on host CPU memory + raw_boxes[:, 0].clamp_(min=0, max=self.resize_w - 1) + raw_boxes[:, 1].clamp_(min=0, max=self.resize_h - 1) + raw_boxes[:, 2].clamp_(min=0, max=self.resize_w - 1) + raw_boxes[:, 3].clamp_(min=0, max=self.resize_h - 1) + + return raw_boxes + + # CPU ------------------------------------------------ + def init_cpu_pipeline(self): + self.prepare_cpu_pipeline() + + def allocate_cpu(self): + self.device_index = "cpu" + if not hasattr( + self, "_pinned_small_frame" + ): # or self._pinned_small_frame.shape[:2] != (self.resize_h, self.resize_w): + self._pinned_small_frame = np.zeros( + (self.resize_h, self.resize_w, 3), dtype=np.uint8 + ) + self._pinned_fg_mask = np.zeros( + (self.resize_h, self.resize_w), dtype=np.uint8 + ) + self._pinned_blurred_mask = np.zeros( + (self.resize_h, self.resize_w), dtype=np.uint8 + ) + self._pinned_threshold_mask = np.zeros( + (self.resize_h, self.resize_w), dtype=np.uint8 + ) + self._pinned_dilated_mask = np.zeros( + (self.resize_h, self.resize_w), dtype=np.uint8 + ) + + # Existing order and boolean validation maps + self._filter_scratch_keep = torch.zeros( + (self.max_cached_elements,), dtype=torch.bool, device=self.device_input + ) + self._filter_order_scratch = torch.zeros( + (self.max_cached_elements,), dtype=torch.long, device=self.device_input + ) + + # Persistent coordinate layers to absorb inner-loop tensor evaluations safely + self._filter_scratch_x1 = torch.zeros( + (self.max_cached_elements,), dtype=torch.float32, device=self.device_input + ) + self._filter_scratch_y1 = torch.zeros( + (self.max_cached_elements,), dtype=torch.float32, device=self.device_input + ) + self._filter_scratch_x2 = torch.zeros( + (self.max_cached_elements,), dtype=torch.float32, device=self.device_input + ) + self._filter_scratch_y2 = torch.zeros( + (self.max_cached_elements,), dtype=torch.float32, device=self.device_input + ) + self._filter_scratch_ioa = torch.zeros( + (self.max_cached_elements,), dtype=torch.float32, device=self.device_input + ) + + # pass + self.resized_frame = np.zeros((3, self.resize_h, self.resize_w), dtype="uint8") + # cv2.cuda.createContinuous( + # self.resize_h, self.resize_w, cv2.CV_8UC3 + # ) + + self.fgMask = np.zeros( + (self.resize_h, self.resize_w), dtype="uint8" + ) # For resize + + if self.config.BKGD_SUB_INCLUDE_HISTORY_METHOD == "and": + self.prev_bkgd = np.ones( + (self.resize_h, self.resize_w), dtype="uint8" + ) # * 255 + else: + self.prev_bkgd = np.zeros((self.resize_h, self.resize_w), dtype="uint8") + + # self.prev_bkgd = np.ones((self.resize_h, self.resize_w), dtype="uint8") * 255 + + self.mask_history = deque( + maxlen=self.config.BKGD_SUB_INCLUDE_HISTORY_TEMPORAL_SIZE + ) + self.mask_history.append(self.prev_bkgd) + + def prepare_cpu_pipeline(self): # , method="mog2"): + self.allocate_cpu() + + # Subtraction + self.lr = self.config.BKGD_SUB_MOG2_LR + self.backSub = cv2.createBackgroundSubtractorMOG2( + history=self.config.BKGD_SUB_MOG2_HISTORY, # Clear ghosts of fast drones in ~2 seconds (2*fps) + varThreshold=self.config.BKGD_SUB_MOG2_VARTHRESHOLD, # High threshold to ignore "shimmer" and compression noise # default 16 + detectShadows=self.config.BKGD_SUB_MOG2_DETECTSHADOWS, # default True + ) + # else: + # raise ValueError(f"Provided method ({method}) is not available.") + + def cleanup_cpu_v1(self): + """ + Purges large 8K NumPy buffers and CPU-based AI resources. + """ + self._pinned_small_frame = None + self._pinned_fg_mask = None + self._pinned_blurred_mask = None + self._pinned_threshold_mask = None + self._pinned_dilated_mask = None + + # Nullify specific class references to allow Garbage Collection + self.executor = None + self.clip_executor = None + self.reader = None + self.latest_processed_frame = None + + # Clear the Ping-Pong buffers (up to 200MB of RAM) + # if hasattr(self, "encode_buffers"): + # self.encode_buffers.clear() + + # Explicitly nullify large arrays to trigger Garbage Collection + self.resized_frame = None + self.fgMask = None + self.prev_bkgd = None + + # Clear the BGS history + if hasattr(self, "mask_history"): + self.mask_history.clear() + + def apply_background_subtraction_cpu( + self, motion_input, include_history=True, method="and" + ): + raw_mask = self.backSub.apply( + motion_input, learningRate=self.config.BKGD_SUB_MOG2_LR + ) + + if include_history: + # self.prev_bkgd = np.zeros((self.resize_h, self.resize_w), dtype="uint8") + + for m in list(self.mask_history): + # Dilate the historical mask on CPU + dilated = cv2.dilate( + m, self.dilate_kernel_for_enhanced_mask, iterations=1 + ) + + if method == "or": + # Bitwise OR on CPU + cv2.bitwise_or(self.prev_bkgd, dilated, dst=self.prev_bkgd) + else: + # Bitwise AND on CPU + cv2.bitwise_and(self.prev_bkgd, dilated, dst=self.prev_bkgd) + + self.mask_history.append(raw_mask) # .copy()) + + # if ( + # self.prev_bkgd.max() != self.prev_bkgd.min() + # and self.prev_bkgd.max() > 0 + # ): + # combined_mask_bool = (self.fgMask > 0) | (self.prev_bkgd > 0) + # self.fgMask = combined_mask_bool.astype(np.uint8) * 255 + raw_mask = cv2.bitwise_or(raw_mask, self.prev_bkgd) + return raw_mask + + def get_sf_cpu_rois( + self, device_frame, overall_frame_num, max_candidates=100, limit_640=1280 + ): + # is_debug = self.config.DEBUG_FLAG + # test_mode = self.config.TEST_MODE + debug_frame_limit = ( + self.debug_frame_limit + if self.config.DEBUG_FLAG and self.debug_frame_limit > -1 + else -1 + ) + + if overall_frame_num <= debug_frame_limit: + stage_debug_dir = ( + self.result_dir / "debug_stages" / self._testMethodName / "roi_stages" + ) + stage_debug_dir.mkdir(parents=True, exist_ok=True) + # f_num = overall_frame_num + + if overall_frame_num <= debug_frame_limit: + cv2.imwrite( + str(stage_debug_dir / f"frame_{overall_frame_num:04d}_stage1_src.jpg"), + device_frame, + ) + + # target_w, target_h = self.resize_w, self.resize_h + + # Force a zero-allocation resize into our pre-allocated, sequential cache-line matrix buffer + cv2.resize( + device_frame, + (self.resize_w, self.resize_h), + dst=self._pinned_small_frame, + interpolation=cv2.INTER_NEAREST, + ) + # [STAGE 2 DEBUG] Check Downsampled Frame + if overall_frame_num <= debug_frame_limit: + cv2.imwrite( + str( + stage_debug_dir / f"frame_{overall_frame_num:04d}_stage2_resize.jpg" + ), + self._pinned_small_frame, + ) + + # --- PHASE 2: STRIPPED SINGLE-THREAD BACKGROUND ARITHMETIC --- + # Run background subtraction straight into our static memory address lane + # We pass your configured learning rate (BKGD_SUB_MOG2_LR) to lock the temporal parameters + # self._pinned_fg_mask = self.backSub.apply( + # self._pinned_small_frame, + # # dst=self._pinned_fg_mask, + # learningRate=self.config.BKGD_SUB_MOG2_LR, + # ) + + self._pinned_fg_mask = self.apply_background_subtraction_cpu( + self._pinned_small_frame, + include_history=self.config.BKGD_SUB_INCLUDE_HISTORY, + method=self.config.BKGD_SUB_INCLUDE_HISTORY_METHOD, + ) + + # [STAGE 5 DEBUG] Check Mask after History ORing/ANDing steps + if overall_frame_num <= debug_frame_limit: + cv2.imwrite( + str( + stage_debug_dir + / f"frame_{overall_frame_num:04d}_stage5_history_mask.jpg" + ), + self._pinned_fg_mask, + ) + + # d_blurred = cv2.cuda.GpuMat(raw_mask.size(), cv2.CV_8UC1) + # self._cuda_gaussian_filter.apply(raw_mask, d_blurred, stream=self.bgs_stream) + ksize = (17, 17) + self._pinned_blurred_mask = cv2.GaussianBlur(self._pinned_fg_mask, ksize, 0) + + # [STAGE 6 DEBUG] + if overall_frame_num <= debug_frame_limit: + cv2.imwrite( + str( + stage_debug_dir / f"frame_{overall_frame_num:04d}_stage5b_blur.jpg" + ), + # str(stage_debug_dir / f"frame_{overall_frame_num:04d}_stage6_thresh_final_mask.jpg"), + self._pinned_blurred_mask, + ) + + # 7. MORPHOLOGICAL TRANSFORMATIONS & BINARY FILTERS + _, self._pinned_threshold_mask = cv2.threshold( + self._pinned_blurred_mask, + 50, # self.config.THRESHOLD_VALUE, + self.config.THRESHOLD_MAX_VALUE, + cv2.THRESH_BINARY, + ) + + # [STAGE 6 DEBUG] Check Binary Threshold Output + if overall_frame_num <= debug_frame_limit: + cv2.imwrite( + str( + stage_debug_dir + / f"frame_{overall_frame_num:04d}_stage6_threshold.jpg" + ), + # str(stage_debug_dir / f"frame_{overall_frame_num:04d}_stage6_thresh_final_mask.jpg"), + self._pinned_threshold_mask, + ) + + # Execute morphology dilation inline within our zero-allocation ring workspace [PDF: 0.1.18] + cv2.dilate( + self._pinned_threshold_mask, + self.dilate_kernel, + dst=self._pinned_dilated_mask, + iterations=1, + ) + # [STAGE 7 DEBUG] Check Final Dilated Output Mask + if overall_frame_num <= debug_frame_limit: + cv2.imwrite( + str( + stage_debug_dir + / f"frame_{overall_frame_num:04d}_stage8_final_dilatemask.jpg" + ), + self._pinned_dilated_mask, + ) + + # inf_data = {"full_frame": frame, "mask": self._pinned_dilated_mask} + + # REGION OF INTEREST ANALYSIS + # get cpu rois by area + contours, _ = cv2.findContours( + self._pinned_dilated_mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE + ) + raw_boxes = [ + list(cv2.boundingRect(c)) + for c in contours + if cv2.contourArea(c) > self.min_contour_area + ] + + if len(raw_boxes) < 1: + return torch.empty((0, 4), device=self.device_input) + + if len(raw_boxes) > max_candidates: + raw_boxes.sort(key=lambda b: b[2] * b[3], reverse=True) + raw_boxes = raw_boxes[:max_candidates] + + with self.compiled_no_grad_gate: + # coords_xywh = np.array(raw_boxes_xywh, dtype=np.float32) + coords_xywh = torch.tensor( + raw_boxes, dtype=torch.float32, device=self.device_input + ) + + raw_boxes = self.cpu_roi_padding(coords_xywh, method="uniform") + + clean_640p = self.filter_contained_boxes( + raw_boxes, overlap_thresh=self.config.ROI_CONTAINMENT_THRESH + ) + + if clean_640p.shape[0] < 1: + # del raw_boxes_640p, clean_640p, raw_boxes_xywh # , raw_boxes + return torch.empty((0, 4), device=self.device_input) + + # Scale to 8K space + # Sever the PyTorch graph graph entirely by detaching and casting to a standard numpy block + bbs_full_res = (clean_640p * self.scales_tensor).detach() # .clone() + + # Explicitly clear the intermediate tensor tensors to drop heap allocations to 0 + # del raw_boxes_640p, clean_640p, raw_boxes_xywh, scaled_output # , raw_boxes + + return bbs_full_res + + def run_cpu_pipeline( + self, device_frame, overall_frame_num, frame_in_clip_count=0, gt_boxes=None + ): + metrics = {"sf_time": 0, "roi_time": 0, "det_time": 0, "bbs": None} + + # Get ROIs + if self.timer_enabled: + t_start = time.perf_counter() + + bbs_full_res = self.get_sf_cpu_rois(device_frame, overall_frame_num) + + if self.timer_enabled: + metrics["sf_time"] = (time.perf_counter() - t_start) * 1000.0 + + # metrics["bbs"] = bbs_full_res + if bbs_full_res is not None: + if torch.is_tensor(bbs_full_res): + metrics["bbs"] = bbs_full_res.detach().cpu().numpy() + elif isinstance(bbs_full_res, np.ndarray): + metrics["bbs"] = bbs_full_res + else: + metrics["bbs"] = np.empty((0, 4), dtype=np.float32) + + merged, det_frame = self.format_bbs_and_frame_4_detection( + bbs_full_res, device_frame + ) + motion_detected = len(merged) > 0 if merged is not None else False + metrics["batch_density"] = len(merged) if merged is not None else 0 + + if ( + self.config.DEBUG_FLAG + and overall_frame_num <= self.config.DEBUG_FRAME_LIMIT + ): + self.debug_save_mask( + det_frame, overall_frame_num, rois=merged, gt_boxes=gt_boxes + ) + + if not self.config.DISABLE_DETECTION: + # --- 3. MODEL INFERENCE TIMING BLOCK --- + if self.timer_enabled: + t_start = time.perf_counter() + + # Get Detection Metadata + if self.config.DETECTION_TYPE != "motion": # Object detection + metadata, _ = self.get_detections( + det_frame, + frame_in_clip_count, + merged=merged, + thickness=self.config.THICKNESS, + device_input=self.config.device_input, + ) + # num_objs = len(metadata.keys()) + else: # Motion: Smart filtering results + # 8k bb to 640 + metadata = self.motion2metadata(merged, self.frame_count_target) + + if self.timer_enabled: + metrics["det_time"] = (time.perf_counter() - t_start) * 1000.0 + + del merged, bbs_full_res + return metrics, metadata, det_frame, motion_detected + + def cleanup_gpu(self): + """ + Explicitly releases all GPU-allocated memory, persistent tensors, + and pinned cross-hardware streams to prevent VRAM leaks. + """ + main_app_logger.info("[CLEANUP] Starting comprehensive GPU resource purge...") + + # 1. Clear the persistent VRAM lock tensor to allow full layout collection + if hasattr(self, "_BaseObjectDetector__persistent_vram_lock"): + self._BaseObjectDetector__persistent_vram_lock = None + + # 2. Iterate through and explicitly release all primitive OpenCV GpuMat layers + for attr_name in list(self.__dict__.keys()): + attr_value = getattr(self, attr_name) + if isinstance(attr_value, cv2.cuda.GpuMat): + attr_value.release() + setattr(self, attr_name, None) + main_app_logger.info(f" [x] Released GpuMat: {attr_name}") + + # 3. Explicitly nullify persistent PyTorch Tensors on GPU/CPU + tensor_attributes = [ + "fixed_inference_batch", + "gpu_float_staging", + "scales_tensor", + "pinned_cpu_xyxy", + "pinned_cpu_clss", + "pinned_cpu_confs", + "static_canvas_scratch", + "_labeled_scratch", + "_filter_survival_mask", + "_filter_scratch_keep", + "_filter_order_scratch", + "_filter_scratch_x1", + "_filter_scratch_y1", + "_filter_scratch_x2", + "_filter_scratch_y2", + "_filter_scratch_ioa", + ] + for attr in tensor_attributes: + if hasattr(self, attr): + setattr(self, attr, None) + + # 4. Flush pre-allocated lists and buffer collections + if hasattr(self, "gpu_buffer_pool"): + for mat in self.gpu_buffer_pool: + if isinstance(mat, cv2.cuda.GpuMat): + mat.release() + self.gpu_buffer_pool = [] + + if hasattr(self, "frame_buffer_pool"): + self.frame_buffer_pool = [] + + if hasattr(self, "mask_history"): + self.mask_history.clear() + + # 5. Nullify models and framework engines to drop context weights + self.model = None + self.cached_predictor = None + self.compiled_no_grad_gate = None + if hasattr(self, "_raw_bounds_function"): + self._raw_bounds_function = None + + # 6. Final unified hardware fence synchronization and allocator sweep + if torch.cuda.is_available(): + torch.cuda.synchronize() + torch.cuda.empty_cache() + main_app_logger.info( + "[CLEANUP] GPU resource tracking layers completely isolated." + ) + + def cleanup_cpu(self): + """ + Purges large 8K NumPy buffers and host-side tracking structures. + """ + main_app_logger.info("[CLEANUP] Purging host CPU variables...") + + cpu_buffers = [ + "_pinned_small_frame", + "_pinned_fg_mask", + "_pinned_blurred_mask", + "_pinned_threshold_mask", + "_pinned_dilated_mask", + "resized_frame", + "fgMask", + "prev_bkgd", + ] + for attr in cpu_buffers: + if hasattr(self, attr): + setattr(self, attr, None) + + if hasattr(self, "mask_history"): + self.mask_history.clear() + + # Clean background web workers and thread pool contexts safely + self.executor = None + self.clip_executor = None + self.reader = None + self.latest_processed_frame = None + + # Explicitly run standard garbage collection to drop unreferenced heap layers + import gc + + gc.collect() + main_app_logger.info("[CLEANUP] Host CPU workspace successfully cleared.") diff --git a/fastapi/include/handlers.py b/fastapi/include/handlers.py index fce0edc..f95cd43 100644 --- a/fastapi/include/handlers.py +++ b/fastapi/include/handlers.py @@ -1,9 +1,13 @@ +# ============================================================================== +# IMPORTS import asyncio import gc +import inspect import json import logging import multiprocessing as mp import os +import pickle import queue import shutil import subprocess @@ -11,19 +15,17 @@ import threading import time import traceback -from collections import deque +import types from concurrent.futures import ThreadPoolExecutor from contextlib import asynccontextmanager from datetime import datetime -from multiprocessing import shared_memory from pathlib import Path -import cupy -import cupyx.scipy -import cupyx.scipy.ndimage import cv2 import numpy as np +import psutil import torch +import torch.cuda._memory_viz as memory_viz import torch.nn.functional as F from ultralytics import YOLO from ultralytics.utils.checks import check_imgsz @@ -32,34 +34,73 @@ sys.path.insert(1, str(Path(__file__).parent.parent)) from include.default_configs import ENABLE_QUERYING_DEFAULT -from include.models import get_model +from include.detectors import GeneralObjectDetector, SmartFilteringObjectDetector from include.utils import ( - BOUNDS_KERNEL, - DETECTION_ACCEL_KERNEL, + AsyncDisplayVideoWriter, + AsyncVideoWriter, + DummyProcess, + PipelineConfig, VDMSPool, - find_contours_gpu_equivalent, - merge_boxes_cpu, - merge_boxes_gpu, + # safe_unregister_shm, + analyze_tracemalloc_snapshot, + default_attr_keys, + get_bb_overlay, + get_metadata_overlay, + # find_contours_gpu_equivalent, + global_frame_prefetch_worker_v1, + metadata2vdms_with_retry, + release_native_linux_heap, + release_shared_memory, ) -# ----- SETUP LOGGING ----- +# Force OpenCV to run sequentially to prevent context-switching overhead +cv2.setNumThreads(0) # Forces OpenCV loops to run strictly sequentially + +# ============================================================================== +# LOGGING logging.basicConfig( level=logging.INFO, - format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", + # format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", + format="%(asctime)s [%(levelname)s] %(name)s (%(filename)s:%(lineno)d) - %(message)s", handlers=[logging.StreamHandler(sys.stdout)], ) # Suppress low-delay reference block warnings from OpenCV/PyAV/FFmpeg -os.environ["OPENCV_FFMPEG_LOGLEVEL"] = "-8" -os.environ["OPENCV_LOG_LEVEL"] = "OFF" +# os.environ["OPENCV_FFMPEG_LOGLEVEL"] = "-8" +# os.environ["OPENCV_LOG_LEVEL"] = "OFF" logging.getLogger("libav").setLevel(logging.CRITICAL) logging.getLogger("libav.hevc").setLevel(logging.CRITICAL) - main_app_logger = logging.getLogger(__name__) + +# ============================================================================== +# FUNCTIONS + STREAM_ARG = False +# PADDING_PX = 5 #25 +PADDING_SCALE = 0.5 # 0.2 #3 #0.05 # 0.045 # 0.05 +BASE_PIPELINE_CONFIG = PipelineConfig( + SHARED_MODEL=os.getenv("SHARED_MODEL", False), + ENABLE_QUERYING=os.getenv("ENABLE_QUERYING", ENABLE_QUERYING_DEFAULT), +) +os.environ["OPENCV_FFMPEG_CAPTURE_OPTIONS"] = ( + "rtsp_transport;tcp;hwaccel;cuda;threads;auto;low_delay;1;probesize;5000000" +) + +ffmpeg_cores = "4,5,6,7" # Manually define cores + +# ----- GLOBAL VARIABLES ----- +all_metadata = {} + +# Queue for metadata being sent to vdms +send_metadata_queue = queue.Queue() + +# Tracks if both components are finished: +# {"clip_name": {"video": bool, "meta": bool}} +clip_completion_tracker = {} def log_to_logger(message, level="info"): + """Safely logs a message to the main application logger.""" try: if level.lower() == "debug": main_app_logger.debug(message) @@ -71,187 +112,143 @@ def log_to_logger(message, level="info"): pass -# ----- PIPELINE CONFIGURATION ----- -# Force OpenCV to run sequentially to prevent context-switching overhead -cv2.setNumThreads(0) # Forces OpenCV loops to run strictly sequentially -# cv2.setNumThreads(os.cpu_count() or 4) -torch.set_num_threads(1) -torch.set_num_interop_threads(1) -# os.environ["OMP_NUM_THREADS"] = "1" -os.environ["MKL_NUM_THREADS"] = "1" -os.environ["OMP_NUM_THREADS"] = str(mp.cpu_count()) # "1" -os.environ["PYTORCH_ALLOC_CONF"] = "expandable_segments:True" - - -from include.utils import ( - PipelineConfig, - PipelineMapping, - draw_label, - get_detection_color, - metadata2vdms_with_retry, -) - - -class AsyncVideoWriter: - """Handles disk saving operations asynchronously on a background thread.""" - - def __init__(self, path, fourcc, fps, size): - self.writer = cv2.VideoWriter(path, fourcc, fps, size) - self.queue = queue.Queue() - self.running = True - self.thread = threading.Thread(target=self._write_loop, daemon=True) - self.thread.start() - - def _write_loop(self): - while self.running or not self.queue.empty(): - try: - frame = self.queue.get(timeout=0.05) - if frame is None: - break - self.writer.write(frame) - self.queue.task_done() - except queue.Empty: - continue - - def write_frame(self, frame): - self.queue.put(frame) - - def release(self): - self.running = False - self.thread.join() - self.writer.release() +from multiprocessing.shared_memory import SharedMemory -class AsyncDisplayVideoWriter: +def video_writer_core_loop( + write_queue, + segment_pattern, + fps, + width, + height, + clip_duration, + shm_names, + frame_bytes, +): """ - Lock-free single-element buffer optimized for 8K pipelines. - Eliminates queue.Queue lock contention to preserve strict target frame rates. + Original core loop, now running in an isolated process. + It manages its own FFmpeg pipe and reads frames from the multiprocessing queue. """ + # 1. Move your existing FFmpeg command creation here + # (Adapt these arguments if your original segment command differed slightly) + # command = [ + # 'ffmpeg', '-y', + # '-f', 'rawvideo', '-vcodec', 'rawvideo', + # '-s', f'{width}x{height}', '-pix_fmt', 'bgr24', '-r', str(fps), + # '-i', '-', + # '-c:v', 'libx264', '-preset', 'ultrafast', '-crf', '28', + # '-f', 'segment', '-segment_time', '60', '-reset_timestamps', '1', + # segment_pattern + # ] + # clip_duration = int(self.config.CLIP_DURATION) + # Attach to the existing shared memory blocks + shm_blocks = [SharedMemory(name=name) for name in shm_names] + + frame_buffers = [ + np.ndarray((height, width, 3), dtype=np.uint8, buffer=shm.buf) + for shm in shm_blocks + ] + # Example: Get the CPU core count and reserve the last few for FFmpeg + # core_count = os.cpu_count() + # ffmpeg_cores = "4,5,6,7" # Manually define cores + command = [ + "taskset", + "-c", + ffmpeg_cores, + "ffmpeg", + "-y", + "-f", + "rawvideo", + "-pix_fmt", + "bgr24", + "-s", + f"{width}x{height}", + "-r", + str(fps), + "-i", + "-", + "-c:v", + "libx264", # "mpeg4", # Or "libx264" if you prefer H.264 + "-crf", + "23", + "-f", + "mpegts", + "-movflags", + "faststart", + "-force_key_frames", + f"expr:gte(t,n_forced*{clip_duration})", + "-f", + "segment", + "-segment_time", + f"{clip_duration}", + "-reset_timestamps", + "1", + "-segment_format", + "mp4", + # CRITICAL: Force fragmented headers so every chunk has a valid moov atom instantly + "-segment_format_options", + "movflags=frag_keyframe+empty_moov+default_base_moof", + segment_pattern, + ] + + # 2. Start the FFmpeg pipe INSIDE the process + video_writer = subprocess.Popen( + command, stdin=subprocess.PIPE, stderr=subprocess.DEVNULL + ) - def __init__(self, target_fps, display_size, quality=60): - self.target_fps = float(target_fps) - self.disp_w, self.disp_h = display_size - self.quality = int(quality) - - # 1. 🔄 FIX: Use a lockless deque with maxlen=1 instead of queue.Queue - self.buffer = deque(maxlen=1) - self.running = True - self.handler = None - - self.thread = threading.Thread(target=self._write_loop, daemon=True) - self.thread.start() - - def set_handler_context(self, handler_instance): - self.handler = handler_instance - - def _write_loop(self): - encode_param = [int(cv2.IMWRITE_JPEG_QUALITY), self.quality] - - while self.running: - try: - # 2. 🔄 FIX: Non-blocking pop from the single-element buffer - if not self.buffer: - time.sleep(0.005) - continue - - display_frame, frame_num = self.buffer.popleft() - - if self.handler is None or not self.handler.active: - continue - - if ( - display_frame.shape[1] != self.disp_w - or display_frame.shape[0] != self.disp_h - ): - display_frame = cv2.resize( - display_frame, - (self.disp_w, self.disp_h), - interpolation=cv2.INTER_NEAREST, - ) - - ret, jpeg_buf = cv2.imencode(".jpg", display_frame, encode_param) - if not ret: - continue - - frame_bytes = jpeg_buf.tobytes() - frame_len = len(frame_bytes) - num_shms = len(self.handler.shms) - - write_idx = (self.handler.ready_buffer_idx.value + 1) % num_shms - - shm_block = self.handler.shms[write_idx] - shm_block.buf[:frame_len] = memoryview(frame_bytes) - - self.handler.shm_frame_lengths[write_idx] = frame_len - self.handler.ready_buffer_idx.value = write_idx - self.handler.shared_details["last_id"] = frame_num - self.handler.mp_last_id.value = frame_num - - if hasattr(self.handler, "loop") and self.handler.loop is not None: - self.handler.loop.call_soon_threadsafe( - self.handler.frame_ready_event.set - ) - else: - self.handler.frame_ready_event.set() - - except Exception as e: - print( - f"[STREAM-ERROR] Lock-free frame streaming dropped: {e}", flush=True - ) - continue - - def write_frame(self, frame, frame_num): - """Thread-safe lock-free atomic submission track.""" - if self.running: - # 3. 🔄 FIX: Directly append to overwrite the old entry without thread locks - self.buffer.append((frame, frame_num)) - - def release(self): - self.running = False - self.buffer.clear() - if self.thread.is_alive(): - self.thread.join(timeout=0.5) - - -BASE_PIPELINE_CONFIG = PipelineConfig( - SHARED_MODEL=os.getenv("SHARED_MODEL", False), - ENABLE_QUERYING=os.getenv("ENABLE_QUERYING", ENABLE_QUERYING_DEFAULT), -) - - -# Optimizes RTSP ingestion with hardware acceleration and low-delay flags -os.environ["OPENCV_FFMPEG_CAPTURE_OPTIONS"] = ( - "rtsp_transport;tcp|hwaccel;cuda|threads;auto|low_delay;1|probesize;5000000" - # "rtsp_transport;tcp|hwaccel;cuda|threads;1|probesize;32|analyzeduration;0" - # "rtsp_transport;tcp|hwaccel;cuda|threads;2|probesize;32|analyzeduration;0" - # "rtsp_transport;tcp|hwaccel;cuda|threads;2|probesize;32|analyzeduration;0" - # "rtsp_transport;tcp|hwaccel;cuda|threads;4|probesize;5000000|analyzeduration;5000000" - # "rtsp_transport;udp|hwaccel;cuda|threads;8|stimeout;5000000|listen_timeout;5000" -) - - -# ----- GLOBAL VARIABLES ----- -# ENABLE_QUERYING = os.getenv("ENABLE_QUERYING", ENABLE_QUERYING_DEFAULT) -# if BASE_PIPELINE_CONFIG.ENABLE_QUERYING: -# Tracks all metadata -all_metadata = {} - -# Tracks clip_filename once video re-encoded -# video_ready_list = {} - -# Queue for metadata being sent to vdms -send_metadata_queue = queue.Queue() + try: + # while True: + # # 3. Read the frame array directly from the queue + # frame = write_queue.get() + + # # Poison pill to stop the process cleanly + # if frame is None: + # break + + # # ================================================================= + # # 🛠️ SAFE BYTE EXTRACTION + # # ================================================================= + # if torch.is_tensor(frame): + # # Move to CPU, convert to NumPy, and get bytes + # raw_bytes = frame.detach().cpu().numpy().tobytes() + # elif isinstance(frame, np.ndarray): + # raw_bytes = frame.tobytes() + # else: + # raw_bytes = bytes(frame) # Fallback for raw byte strings + # # ================================================================= + + # # Write the raw bytes to the FFmpeg pipe + # video_writer.stdin.write(raw_bytes) + + # # Help garbage collection in the isolated process + # del frame, raw_bytes + while True: + # Get the SLOT INDEX from the queue (not the full frame) + slot_idx = write_queue.get() + if slot_idx is None: + break -# Tracks if both components are finished: -# {"clip_name": {"video": bool, "meta": bool}} -clip_completion_tracker = {} + # 3. Access the frame directly from the shared memory buffer + frame = frame_buffers[slot_idx] + video_writer.stdin.write(frame.tobytes()) -PADDING_PX = 10 + except Exception as e: + logging.error(f"[VIDEO WRITER] Loop exception: {e}") + finally: + video_writer.stdin.close() + video_writer.wait() + # Clean up process-local attachments + for shm in shm_blocks: + shm.close() # ----- FASTAPI APPLICATION STARTUP/SHUTDOWN ----- # The lifespan parameter handles startup and shutdown async def auto_cleanup_janitor(app): + """ + A background task that runs periodically to find and clean up stale or inactive streams. + This acts as a safety net to prevent resource leaks from streams that do not terminate correctly. + """ while True: await asyncio.sleep(10) now = time.time() @@ -262,47 +259,92 @@ async def auto_cleanup_janitor(app): for name, streamer in list(app.state.active_streams.items()): # streamer = app.state.active_streams.get(name) if not streamer: + app.state.active_streams.pop(name, None) continue - ai_backlog = streamer.get_executor_backlog() - video_backlog = ( - streamer.write_queue.qsize() - if streamer.config.ENABLE_QUERYING - else 0 - ) - # io_backlog = ( - # streamer.io_executor._work_queue.qsize() - # if hasattr(streamer, "io_executor") - # else 0 - # ) - - # Check if the stream is marked inactive OR timed out - # streamer.active should be False when the video source ends - is_stale = now - streamer.last_heartbeat > 30 - - should_remove = False - - if not streamer.active and ( - ai_backlog == 0 and video_backlog == 0 # and io_backlog == 0 - ): - should_remove = True # Video ended naturally - elif is_stale and ( - ai_backlog == 0 and video_backlog == 0 # io_backlog == 0 - ): - should_remove = True # Browser tab closed/Network lost - elif now - streamer.last_heartbeat > 90: - should_remove = True # Hard timeout for hung processes + # If the stream handler marked itself inactive or stopped + # if getattr(streamer, "_is_stopped", False) or not getattr(streamer, "active", True): + # main_app_logger.info(f"JANITOR: Removing dead stream {name}") + # app.state.active_streams.pop(name, None) + # if not streamer._is_stopped: + # loop = asyncio.get_event_loop() + # loop.run_in_executor(None, streamer.stop) + # continue + + if hasattr( + streamer, "last_heartbeat" + ): # and (getattr(streamer, "active", False) == "RUNNING"): + # # Inactivity heartbeat check (e.g., 5 seconds with no new frames) + # if now - getattr(streamer, "last_heartbeat", now) > 15.0: + # main_app_logger.info(f"JANITOR: Stream {name} timed out. Evicting.") + # app.state.active_streams.pop(name, None) + # if not streamer._is_stopped: + # loop = asyncio.get_event_loop() + # loop.run_in_executor(None, streamer.stop) + # continue + + ai_backlog = streamer.get_executor_backlog() + video_backlog = ( + streamer.write_queue.qsize() + if streamer.config.ENABLE_QUERYING + else 0 + ) + # io_backlog = ( + # streamer.io_executor._work_queue.qsize() + # if hasattr(streamer, "io_executor") + # else 0 + # ) - if should_remove: - async with app.state.stream_lock: - if BASE_PIPELINE_CONFIG.DEBUG == "1": - print(f"CLEANUP: Removing {name} from active_streams") - streamer.stop() - app.state.active_streams.pop(name, None) + # Check if the stream is marked inactive OR timed out + # streamer.active should be False when the video source ends + is_stale = now - streamer.last_heartbeat > 30 # No activity for 30s + is_hung = ( + now - streamer.last_heartbeat > 90 + ) # Hard timeout after 90s + + should_remove = False + reason = "" + + # Conditions to remove stream + if streamer._is_stopped: + should_remove, reason = True, "Handler already stopped" + elif not streamer.active and ( + ai_backlog == 0 and video_backlog == 0 # and io_backlog == 0 + ): + should_remove, reason = True, "Video ended naturally" + elif is_stale and ( + ai_backlog == 0 and video_backlog == 0 # io_backlog == 0 + ): + should_remove, reason = True, "Browser tab closed/Network lost" + elif is_hung: + should_remove, reason = True, "Hard timeout for hung processes" + + if should_remove: + async with app.state.stream_lock: + if BASE_PIPELINE_CONFIG.DEBUG == "1": + main_app_logger.info( + f"CLEANUP: Removing {name} from active_streams: {reason}" + ) + try: + if not streamer._is_stopped: + streamer.stop() + streamer.stop_threads(["process_thread"]) + app.state.active_streams.pop(name, None) + finally: + del streamer + + gc.collect() # Final garbage collection + if torch.cuda.is_available(): + torch.cuda.empty_cache() @asynccontextmanager async def lifespan(app: FastAPI): + """ + Manages FastAPI startup and shutdown lifecycle. + Guarantees release on shutdown. + """ + # --- STARTUP --- if not hasattr(app.state, "classes"): app.state.classes = None @@ -312,27 +354,31 @@ async def lifespan(app: FastAPI): app.state.status = "Ready" app.state.stream_lock = asyncio.Lock() + + # Warmup shared model (if configured) if BASE_PIPELINE_CONFIG.SHARED_MODEL: app.state.model = YOLO( BASE_PIPELINE_CONFIG.model_path, verbose=False, task="detect" ) device_input = "cuda" if BASE_PIPELINE_CONFIG.DEVICE == "GPU" else "cpu" - print("Starting shared model warmup...") - dummy_input = torch.zeros( - (1, 3, BASE_PIPELINE_CONFIG.MODEL_H, BASE_PIPELINE_CONFIG.MODEL_W) - ).to(device_input) - for _ in range(20): - _ = app.state.model(dummy_input, verbose=False) - - del dummy_input - # torch.cuda.empty_cache() - print("Shared model warmup and VRAM purge complete.") + main_app_logger.info("Starting shared model warmup...") + try: + dummy_input = torch.zeros( + (1, 3, BASE_PIPELINE_CONFIG.MODEL_H, BASE_PIPELINE_CONFIG.MODEL_W) + ).to(device_input) + for _ in range(5): + _ = app.state.model(dummy_input, verbose=False) + finally: + del dummy_input + if "cuda" in device_input: + torch.cuda.empty_cache() + main_app_logger.info("Shared model warmup and VRAM purge complete.") janitor_task = asyncio.create_task(auto_cleanup_janitor(app)) if BASE_PIPELINE_CONFIG.DEBUG == "1": - print(f"--- APP STARTUP | PID: {os.getpid()} | STATE READY ---") + main_app_logger.info(f"--- APP STARTUP | PID: {os.getpid()} | STATE READY ---") yield @@ -340,79 +386,24 @@ async def lifespan(app: FastAPI): janitor_task.cancel() async with app.state.stream_lock: for name, streamer in list(app.state.active_streams.items()): - print(f"Shutting down stream: {name}") + main_app_logger.info(f"Shutting down stream: {name}") streamer.stop() # Custom stop method defined below + streamer.stop_threads(["process_thread"]) app.state.active_streams.pop(name, None) - app.state.status = "Stopped" - - -# ----- INGESTION FUNCTIONS ----- -def nv12_to_rgb_torch( - nv12_tensor, h, w, is_h264_8k=False, out_buffer=None, is_bgr=True -): - """ - Highly optimized NV12/YUV to RGB/BGR conversion. - Fixes the 'Blue Frame' by applying proper YUV-to-RGB matrix math. - """ - with torch.no_grad(): - if is_h264_8k: - # 8K Planar Path: Map the channels directly - y = nv12_tensor[0:1, :, :].half() - u = nv12_tensor[1:2, :, :].half() - v = nv12_tensor[2:3, :, :].half() # Use the 3rd channel! - - # No column slicing (0::2) needed if it's already planar. - # But we must ensure U and V match Y dimensions if they were subsampled. - if u.shape[-1] != w or u.shape[-2] != h: - u = F.interpolate(u.unsqueeze(0), size=(h, w), mode="bilinear").squeeze( - 0 - ) - v = F.interpolate(v.unsqueeze(0), size=(h, w), mode="bilinear").squeeze( - 0 - ) - else: - # Standard NV12 Path: Image is [H*1.5, W] - y = nv12_tensor[:h, :w].unsqueeze(0).half() - uv = ( - nv12_tensor[h:, :w] - .reshape(h // 2, w // 2, 2) - .permute(2, 0, 1) - .unsqueeze(0) - .half() - ) - # Upsample Chroma (4:2:0 -> 4:4:4) - uv_up = F.interpolate(uv, size=(h, w), mode="nearest") - u = uv_up[0, 0:1, :, :] - v = uv_up[0, 1:2, :, :] - - # --- YUV to RGB Conversion Math (BT.709) --- - # 1. Normalize Luma and center Chroma - y = (y - 16.0) * 1.164 - u = u - 128.0 - v = v - 128.0 - - # 2. Matrix Multiplication (Coefficients for natural color) - r = y + 1.793 * v - g = y - 0.213 * u - 0.533 * v - b = y + 2.112 * u - - # 3. Stack into final order - if is_bgr: - colored_img = torch.cat([b, g, r], dim=0) - else: - colored_img = torch.cat([r, g, b], dim=0) - - # 4. Final Clamp and Format - colored_img.clamp_(0, 255) - output = colored_img.to(torch.uint8) + del streamer - if out_buffer is not None: - out_buffer.copy_(output) - return out_buffer + # Clear all application state + app.state.active_streams.clear() + if hasattr(app.state, "model"): + del app.state.model - return output + gc.collect() # Final garbage collection + if torch.cuda.is_available(): + torch.cuda.empty_cache() + app.state.status = "Stopped" +# ----- INGESTION FUNCTIONS ----- def send_metadata( VDMS_POOL=None, DEBUG_FLAG=BASE_PIPELINE_CONFIG.DEBUG_FLAG, @@ -436,13 +427,17 @@ def send_metadata( clip_key = "" width = 0 height = 0 + while True: + queue_details = None + clip_metadata = None + try: queue_details = send_metadata_queue.get() + # send_metadata_queue.task_done() if queue_details is None: - print( + main_app_logger.info( "[METADATA-DEBUG D-pill] Poison pill received. Terminating send_metadata thread loops cleanly.", - flush=True, ) break @@ -492,7 +487,6 @@ def send_metadata( f" [CRITICAL] Permanent VDMS failure. Data saved to: {error_path}" ) - send_metadata_queue.task_done() else: main_app_logger.error( f" [MISSING] Metadata for {clip_key} was lost before upload!" @@ -500,292 +494,109 @@ def send_metadata( except Exception as e: # pass - print(f"[EXCEPTION] Exception occurred in send_metadata: {e}") + main_app_logger.info( + f"[EXCEPTION] Exception occurred in send_metadata: {e}" + ) traceback.print_exc() + finally: + if "queue_details" in locals(): + del queue_details + if "clip_metadata" in locals(): + del clip_metadata + send_metadata_queue.task_done() + + +_KNOWN_HANDLER_METHODS = {} + + +def get_known_handler_methods(handler_class): + if handler_class not in _KNOWN_HANDLER_METHODS: + handler_methods = {} + for cls in [handler_class, DeviceBaseHandler]: + for name, attr in inspect.getmembers(cls, predicate=inspect.isfunction): + handler_methods[name] = attr + _KNOWN_HANDLER_METHODS[handler_class] = handler_methods + return _KNOWN_HANDLER_METHODS[handler_class] + + +def standalone_writer_process(write_queue, fps, width, height, output_path): + """Runs completely isolated from the GIL and main AI loop.""" + # 1. Initialize FFmpeg INSIDE the new process + command = [ + "ffmpeg", + "-y", + "-f", + "rawvideo", + "-vcodec", + "rawvideo", + "-s", + f"{width}x{height}", + "-pix_fmt", + "bgr24", + "-r", + str(fps), + "-i", + "-", + "-c:v", + "libx264", + "-preset", + "ultrafast", + "-crf", + "28", + "-pix_fmt", + "yuv420p", + output_path, + ] + + writer = subprocess.Popen(command, stdin=subprocess.PIPE, stderr=subprocess.DEVNULL) + try: + while True: + frame_data = write_queue.get() + if frame_data is None: # Poison pill to stop + break -# ----- STREAM HANDLERS ----- -def scale_clusters_to_8k(merged_640, frame_w=7680, frame_h=4320): - # Ratios for 8K projection - scale_x = frame_w / 640.0 - scale_y = frame_h / 640.0 - final_rois = [] - - for box in merged_640: - # Calculate centroid in 640p space - cx_640 = (box[0] + box[2]) / 2.0 - cy_640 = (box[1] + box[3]) / 2.0 - - # Map to 8K space with float precision to avoid offset drift - cx_8k = cx_640 * scale_x - cy_8k = cy_640 * scale_y - - # Center the 640x640 YOLO crop at the 8K centroid - half = 320 - nx1 = max(0, int(cx_8k - half)) - ny1 = max(0, int(cy_8k - half)) - nx2 = min(frame_w, nx1 + 640) - ny2 = min(frame_h, ny1 + 640) - - # Shift back if clamped at 8K boundaries - if nx2 == frame_w: - nx1 = max(0, frame_w - 640) - if ny2 == frame_h: - ny1 = max(0, frame_h - 640) - - final_rois.append([nx1, ny1, nx1 + 640, ny1 + 640]) - - return final_rois - - -# def rendering_worker( -# queue, -# shared_details, -# ready_idx, -# reader_active_idx, -# frame_lengths, -# signal_queue, -# display_size, -# quality, -# ): -# disp_w, disp_h = display_size -# # Attach to both buffers -# shm_names = shared_details["shm_names"] -# worker_shms = [mp.shared_memory.SharedMemory(name=n) for n in shm_names] -# num_shms = len(shm_names) - -# try: -# while True: -# print("[FASTAPI-TRACE D] rendering_worker child process waiting on queue.get()...", flush=True) -# item = queue.get() -# if item is None: # Sentinel value to stop the worker -# break - -# # frame is display size -# # metadata in resized res -# display_frame, frameNum, metadata_or_bbs, class_list = item -# print(f"[FASTAPI-TRACE E] rendering_worker child dequeued Frame #{frameNum}.", flush=True) -# scale_display_x = disp_w / 640 -# scale_display_y = disp_h / 640 - -# if isinstance(metadata_or_bbs, dict): -# # Case: Object Detection -# display_frame = get_metadata_overlay( -# display_frame, -# metadata_or_bbs, -# class_list, -# (scale_display_x, scale_display_y), -# (disp_w, disp_h), -# ) - -# elif metadata_or_bbs is not None: -# # Case: Motion Detections Only (SF Path) -# display_frame = get_bb_overlay( -# display_frame, -# metadata_or_bbs, -# (scale_display_x, scale_display_y), -# (disp_w, disp_h), -# ) - -# # writer.write(display_frame) -# if frameNum > shared_details["last_id"]: # self.last_delivered_frame_id: -# frame_bytes = get_display_frame_in_bytes( -# display_frame, -# display_size=display_size, -# quality=quality, -# return_bytes=True, -# ) -# if frame_bytes: -# # THE HARD GUARD: If the reader is currently touching RAM, skip this write. -# # This prevents the '1-minute' scramble by ensuring zero memory overlap. -# # if signal_queue.full(): -# # continue -# frame_len = len(frame_bytes) - -# forbidden_idx = [ready_idx.value, reader_active_idx.value] -# available_idx = [ -# i for i in range(num_shms) if i not in forbidden_idx -# ] - -# # if not available_idx: -# # continue - -# # # Write to the buffer that is NOT currently 'ready' -# # # write_idx = (shared_details["buffer_idx"] + 1) % 2 -# # # write_idx = 1 if ready_idx.value == 0 else 0 -# # # current_ready = ready_idx.value -# # # write_idx = (current_ready + 1) % 3 -# # write_idx = available_idx[0] - -# if not available_idx: -# # Instead of skipping completely and freezing, force a fallback -# # to the next standard ring channel -# write_idx = (ready_idx.value + 1) % num_shms -# else: -# write_idx = available_idx[0] - -# shm = worker_shms[write_idx] - -# # Zero-copy write to RAM -# shm.buf[:frame_len] = frame_bytes - -# frame_lengths[write_idx] = frame_len -# # shared_details["buffer_idx"] = write_idx -# ready_idx.value = write_idx -# # shared_details["last_id"] = frameNum -# # self.last_frame_id = frameNum -# # self.last_heartbeat = time.time() -# # Signal the FastAPI generator that a new frame is ready -# # self.loop.call_soon_threadsafe(self.frame_ready_event.set) -# # self.mp_frame_ready_event.set() -# # try: -# # signal_queue.put_nowait(True) -# # except Exception: -# # pass -# # signal_queue.put(True) -# try: -# print(f"[FASTAPI-TRACE F] Frame #{frameNum} written to SHM slot {write_idx} ({frame_len} bytes). Signaling parent...", flush=True) -# signal_queue.put_nowait((True, frameNum)) -# except queue.Full: -# print(f"[FASTAPI-TRACE WARN] signal_queue full on Frame #{frameNum}", flush=True) -# # pass # If the web app is slightly behind, do not freeze the child process! - -# # END While - -# except Exception as e: -# print(f"[EXCEPTION] Error while rendering display: {e}") -# finally: -# for s in worker_shms: -# s.close() - - -def get_metadata_overlay( - display_frame, metadata_or_bbs, class_list, scale_display, disp_size, is_bgr=True -): - scale_display_x, scale_display_y = scale_display - disp_w, disp_h = disp_size - for _, obj in metadata_or_bbs.items(): - bbox = obj["bbox"] - x = max(0, int(bbox["x"] * scale_display_x)) - y = max(0, int(bbox["y"] * scale_display_y)) - w = min(disp_w, int(bbox["width"] * scale_display_x)) - h = min(disp_h, int(bbox["height"] * scale_display_y)) - - class_name = bbox["object"] - class_id = class_list.index(class_name) if class_name in class_list else 0 - confidence = bbox.get("object_det", {}).get("confidence", 0.0) - - bb_color = get_detection_color(class_id, is_bgr=is_bgr) - label = f"{class_name} {confidence:.2f}" - - display_frame = cv2.rectangle( - display_frame, (x, y), (x + w, y + h), bb_color, 2 - ) - draw_label(display_frame, label, (x, y), color=bb_color, padding=5) - return display_frame + # Write the raw bytes directly to FFmpeg + writer.stdin.write(frame_data.tobytes()) + except Exception as e: + logging.error(f"[WRITER PROCESS] Error: {e}") + finally: + writer.stdin.close() + writer.wait() -def get_bb_overlay(display_frame, metadata_or_bbs, scale_display, disp_size): - scale_display_x, scale_display_y = scale_display - disp_w, disp_h = disp_size - for box in metadata_or_bbs: - if torch.is_tensor(box): - x1, y1, x2, y2 = box.to(torch.int).cpu().tolist() - else: - x1, y1, x2, y2 = map(int, box) - - x1 = max(0, int(x1 * scale_display_x)) - y1 = max(0, int(y1 * scale_display_y)) - x2 = min(disp_w, int(x2 * scale_display_x)) - y2 = min(disp_h, int(y2 * scale_display_y)) - display_frame = cv2.rectangle(display_frame, (x1, y1), (x2, y2), (0, 0, 255), 2) - return display_frame - - -# def test_rendering_worker(queue, display_size, out_path, target_fps): -# """ -# Ultra-efficient video saver for TEST_MODE. -# Pipes raw BGR frames directly into an internal FFmpeg engine subshell. -# """ -# disp_w, disp_h = display_size - -# # Construct optimized MPEG-4 parameters to match main pipeline architecture -# ffmpeg_cmd = [ -# "ffmpeg", -# "-y", -# "-probesize", -# "32", -# "-analyzeduration", -# "0", -# "-f", -# "rawvideo", -# "-pix_fmt", -# "bgr24", -# "-s", -# f"{disp_w}x{disp_h}", -# "-r", -# str(int(target_fps)), -# "-i", -# "-", -# "-c:v", -# "libx264", -# "-crf", -# "23", -# # "-c:v", "mpeg4", # Or "libx264" if you prefer H.264 -# # "-qscale:v", "4", # Quality scale (use -crf 23 if using libx264) -# str(out_path), -# ] - -# # Spawn background daemon process -# proc = subprocess.Popen( -# ffmpeg_cmd, -# stdin=subprocess.PIPE, -# stdout=subprocess.DEVNULL, -# stderr=subprocess.DEVNULL, -# bufsize=10**7, -# ) - -# try: -# while True: -# item = queue.get() -# if item is None: # Sentinel value to drain and close the process -# break - -# display_frame, frameNum, metadata_or_bbs, class_list = item -# # display_frame = np.ascontiguousarray(display_frame) -# scale_display_x = disp_w / 640 -# scale_display_y = disp_h / 640 - -# # --- Draw Detection Overlays --- -# if isinstance(metadata_or_bbs, dict): -# # Object Mode (YOLO Structs) -# display_frame = get_metadata_overlay( -# display_frame, -# metadata_or_bbs, -# class_list, -# (scale_display_x, scale_display_y), -# (disp_w, disp_h), -# ) - -# elif metadata_or_bbs is not None: -# # # Motion / Smart Filtering Overlay Path -# display_frame = get_bb_overlay( -# display_frame, -# metadata_or_bbs, -# (scale_display_x, scale_display_y), -# (disp_w, disp_h), -# ) - -# # Pipe continuous raw contiguous memory block directly into kernel filesystem handles -# proc.stdin.write(np.ascontiguousarray(display_frame).tobytes()) -# # queue.task_done() - -# except Exception as e: -# print(f"[TEST-WORKER-EXCEPTION] Video compilation error: {e}") -# finally: -# if proc.stdin: -# proc.stdin.close() -# proc.wait() + +# ----- STREAM HANDLERS ----- +def get_test_handler(test_class_self, device): # Resolve concrete handler class type + HandlerClass = GPUStreamHandler if device == "gpu" else CPUStreamHandler + # HandlerClass.pipeline_fn = test_class_self.__class__.pipeline_fn + + # Dynamically re-bind backend methods to this execution instance + handler_classes = [HandlerClass, DeviceBaseHandler] + handler_methods = get_known_handler_methods(HandlerClass) + for method_name, method_func in handler_methods.items(): + if method_name in ["pipeline_fn", "config"]: # "run_realtime_inference" + continue + + if not hasattr(test_class_self.__class__, method_name): + setattr( + test_class_self, + method_name, + types.MethodType(method_func, test_class_self), + ) + + orig_methods = list( + sorted( + set( + [ + k + for h in handler_classes + [test_class_self] + for k in h.__dict__.keys() + ] + ) + ) + ) + return test_class_self, orig_methods class DeviceBaseHandler: @@ -797,428 +608,494 @@ def __init__( self.is_rtsp = str(self.source).startswith("rtsp:/") self.active = True self.active_streams = active_streams - self.config = config + + sf_name = "SF" if config.sf_enabled else "noSF" + self._testMethodName = kwargs.get( + "run_name", + f"{name}_{sf_name}_{config.DETECTION_TYPE.lower()}_{config.DEVICE.lower()}", + ) + configstr = "\n".join( [f"\t{k}: {v}" for k, v in config.__dict__.items() if not k.startswith("_")] ) - log_to_logger(f"PipelineConfig: \n{configstr}\n", level="info") + main_app_logger.info(f"PipelineConfig: \n{configstr}\n") self.loop = asyncio.get_event_loop() self.frame_ready_event = asyncio.Event() - # self.frame_ready_event = threading.Event() self._is_stopped = False self._stop_lock = threading.Lock() # Local lock for this instance - self.mp_frame_ready_event = mp.Event() + self.main_startup_event = mp.Event() # From global self.device = self.config.DEVICE self.device_input = self.config.device_input - # self.disp_w, self.disp_h = self.config.DISPLAY_FRAME_SIZE + self.disp_w, self.disp_h = self.config.DISPLAY_FRAME_SIZE self.resize_h, self.resize_w = [self.config.MODEL_H, self.config.MODEL_W] - self.setup_reader(self.config.TARGET_FPS, self.config.CLIP_DURATION) + self.setup_reader( + self.config.TARGET_FPS, + self.config.CLIP_DURATION, + startup_event=self.main_startup_event, + ) # Kwargs # clip_duration = kwargs.get("clip_duration", CLIP_DURATION) self.initialize_variables() - provided_model = kwargs.get("model") - self.setup_model(provided_model) - - self.prepare_pipeline() + # Should be started before calling setup_threads + # if hasattr(self.reader, "worker") and not self.reader.worker.is_alive(): + # self.reader.worker.start() # Start dedicated inference thread and timers # self.stat_start_time = time.perf_counter() # timing to display frame - self.last_heartbeat = time.time() self.setup_threads() + self.last_heartbeat = time.perf_counter() - def setup_model(self, provided_model, force_export=False): - if ( - self.frame_width * self.frame_height - ) <= self.config.SMART_FILTERING_PIXEL_CONSTRAINT: - if "_noSF" not in self.config.model_path: - oldpath = Path(self.config.model_path) - old_modelname = self.config.MODEL_NAME - self.config.MODEL_NAME = f"{old_modelname}_noSF" - new_model_name = oldpath.name.replace( - old_modelname, self.config.MODEL_NAME - ) - self.config.model_path = str(oldpath.parent / new_model_name) + def start(self): + """ + Starts the decoupled ingestion and inference threads in the correct order. + """ + # PRE-SYNC: Ensure GPU is idle before timing starts + if self.device_input == "cuda" and torch.cuda.is_available(): + torch.cuda.synchronize() - if provided_model is not None and not isinstance(provided_model, str): - self.model = provided_model - self.label_source = [v for k, v in self.model.names.items()] - else: - # if isinstance(provided_model, str) or provided_model is None: - # if Path(self.config.model_path).exists(): - # self.model = YOLO(self.config.model_path, verbose=False, task="detect") - # self.label_source = [] - # for k, v in self.model.names.items(): - # self.label_source.append(v) - # else: - run_platform_name = "engine" if "cuda" in self.device_input else "openvino" - self.model, _, self.label_source = get_model( - Path(self.config.model_path).parent, - self.config.MODEL_NAME.replace("_noSF", ""), - run_platform_name, - self.device_input, - batch=self.config.MODEL_MAX_BATCH_SIZE, - force_export=force_export, - sf_enabled=self.config.sf_enabled, - model_h=self.resize_h, - model_w=self.resize_w, - ) + main_app_logger.info(f"[START {self.name}] Starting Threads ...") - if run_platform_name == "openvino": - self.model.predictor.args.embed = False + # Start the hardware-decoupled reader first + self.reader.start() - if not self.config.sf_enabled: - self.model_warmup(self.frame_height, self.frame_width) - else: - self.model_warmup(self.resize_h, self.resize_w) - # else: - # self.model = provided_model - # self.label_source = [] - # for k, v in self.model.names.items(): - # self.label_source.append(v) + # if self.config.ENABLE_QUERYING: + # self._initialize_writer() - def initialize_variables(self): - # 1. HARD GUARD: Capture reader values and ensure the connection is active - self.input_fps = self.reader.input_fps - self.target_fps = self.reader.target_fps - self.frame_width = self.reader.frame_width - self.frame_height = self.reader.frame_height - self.numFrames = self.reader.numFrames + # Small delay to allow the reader's deque to populate + time.sleep(0.1) - if self.input_fps <= 0 or self.frame_width <= 0 or self.frame_height <= 0: - main_app_logger.error( - f"[{self.name}] Stream handler fast-fail triggered. Destination " - f"unreachable or invalid ({self.source}). Terminating pipeline configuration." - ) - # Instantly stop background threads to prevent zombie process leakage - if hasattr(self, "reader") and self.reader is not None: - self.reader.stop() + # Start the producer and consumer threads + if hasattr(self, "process_thread") and not self.process_thread.is_alive(): + self.process_thread.start() - raise RuntimeError( - f"Failed to initialize stream reader endpoint: {self.source}" - ) + if not self.config.DISABLE_DETECTION: + if hasattr(self, "render_proc") and hasattr(self.render_proc, "start"): + self.render_proc.start() - # 2. Proceed with calculation mechanics safely only if values are healthy - self.step_size = self.input_fps / self.target_fps - self.frame_skip = self.reader.frame_skip - self.max_frames_per_clip = self.reader.max_frames_per_clip - self.frame_interval = self.reader.frame_interval + if hasattr(self, "display_proc") and hasattr(self.display_proc, "start"): + self.display_proc.start() - self.duration_s = self.numFrames / self.input_fps - self.expected_num_frames = int(self.duration_s * self.target_fps) - self.get_frameWH() + if ( + self.config.ENABLE_QUERYING + and not self.config.TEST_MODE + and not self.metadata_thread.is_alive() + ): + self.metadata_thread.start() - # Determine minimum contour size relative to frame resolution - self.min_contour_area = int( - (self.config.ROI_MIN_AREA_RATIO * self.resize_w) - * (self.config.ROI_MIN_AREA_RATIO * self.resize_h) - ) # 207 - - self.dist_thresh_8k = max( - self.config.ROI_DISTANCE_THRESH_RATIO * self.frame_width, - self.config.ROI_DISTANCE_THRESH_RATIO * self.frame_height, - ) - multiplier = 2.0 if self.device_input == "cpu" else 1.0 - self.dist_thresh_640 = ( - max( - self.config.ROI_DISTANCE_THRESH_RATIO * self.resize_w, - self.config.ROI_DISTANCE_THRESH_RATIO * self.resize_h, - ) - * multiplier - ) # 0.05 * self.resize_w - self.scales_tensor = torch.tensor( - [self.scale_x, self.scale_y, self.scale_x, self.scale_y], - # device="cpu", - device=self.device_input, - ) + if self.config.ENABLE_QUERYING and not self.writer_process.is_alive(): + self.writer_process.start() - self.disp_w, self.disp_h = self.config.DISPLAY_FRAME_SIZE + self.last_heartbeat = time.perf_counter() + return self - # Performance Tracking - self.elapsed_display_time = 0.0 - self.frame_count = 0 # Frame count for videos - self.frame_count_target = 0 - self.last_delivered_frame_id = -1 # Track what was actually sent - self.last_frame_id = 0 - self.latest_processed_frame = None - self.next_process_idx = 0.0 - self.stat_fps = 0 - self.stat_frame_count = 0 - self.total_objects_detected = 0 + def stop(self): + """ + A robust, sequential shutdown process that gracefully terminates all threads + and releases all resources without race conditions, especially for live streams. + """ + # Force the GPU to finish all active kernels, copy operations, + # and event processing across all streams. + # This guarantees no async operations are holding the memory locked! + if "cuda" in str(self.device_input) and torch.cuda.is_available(): + # main_app_logger.info(f"[STOP {self.name}] Synchronizing all CUDA streams...") + torch.cuda.synchronize(self.device_input) + + # Use a lock to prevent this complex function from being called by multiple threads at once. + with self._stop_lock: + if getattr(self, "_is_stopped", False): + return - self.writer_done = True + main_app_logger.info( + f"[STOP {self.name}] Initiating orderly shutdown sequence..." + ) - # Video Clipping - # self.video_writer = None - self.ffmpeg_proc = None # Replaces cv2.VideoWriter completely - # self.fourcc = cv2.VideoWriter_fourcc(*"mp4v") # avc1, mp4v - # self.clip_id = 0 - # self.clip_filename = "" - self.clip_filename_pattern = f"{self.config.SHARED_OUTPUT}/{self.name}_%03d.mp4" - # self.clip_key = f"{self.name}_000.mp4" - # self.tmp_file = "" - self.frame_in_clip_count = 0 + if hasattr(self, "write_queue") and hasattr(self, "writer_process"): + try: + self.write_queue.put( + None, timeout=1.0 + ) # The poison pill for the process + except (queue.Full, AttributeError): + pass - if self.config.ENABLE_QUERYING: - # Thread-safe queue for the resized frames (640x640) - # maxlen=300 allows for a 20-second buffer in case of extreme disk lag - # Non-blocking queue for frames and control signals - self.write_queue = queue.Queue(maxsize=300) - if not self.config.TEST_MODE: - self.send_metadata_queue = queue.Queue() - self.writer_done = False - self.stop_writer = threading.Event() if self.config.ENABLE_QUERYING else None + # Signal all active loops to stop accepting new work. + self.active = False + self.prefetch_active = False - # --- PRE-ALLOCATED ZERO-COPY HARDWARE RING WORKSPACE --- - self.ring_depth = 4 # 8 - self.gpu_ring_idx = 0 - self.cpu_ring_idx = 0 - - self.pinned_matrices = [] - self.pinned_tensors = [] - - self.ingest_ring_depth = 4 - self.ingest_ring_idx = 0 - self.ingest_ring = [] + if hasattr(self, "active_streams") and isinstance( + self.active_streams, dict + ): + self.active_streams.pop(self.name, None) - for _ in range(self.ingest_ring_depth): - # Match the exact dimensions of the 8K reader output - mat = np.zeros((self.frame_height, self.frame_width, 3), dtype=np.uint8) - try: - cv2.cuda.registerPageLocked( - mat - ) # Page-lock for ultra-fast DMA transfers - except Exception: - pass - self.ingest_ring.append(mat) - - # Pre-allocate a 4-slot ring buffer for raw 8K BGR frames - self.ai_ring_depth = 4 - self.ai_ring_idx = 0 - self.frame_stride_bytes = ( - self.resize_w * self.resize_h * 3 - ) # ~99.5 MB per frame - - self.ai_shms = [] - self.ai_shm_names = [] - self.ai_pinned_tensors = [] # Explicit property initialization 🚀 - init_timestamp = int(time.time_ns()) - for i in range(self.ai_ring_depth): - name = f"shm_ai_640_{self.name}_{i}_{os.getpid()}_{init_timestamp}" + # Wake up any FastAPI async streaming generators waiting on frame_ready_event + if ( + hasattr(self, "frame_ready_event") + and self.frame_ready_event is not None + ): + try: + if hasattr(self, "loop") and self.loop and self.loop.is_running(): + self.loop.call_soon_threadsafe(self.frame_ready_event.set) + else: + self.frame_ready_event.set() + except Exception: + pass - try: - # Attempt to attach to a lingering zombie segment - old_shm = shared_memory.SharedMemory(name=name) - old_shm.close() - old_shm.unlink() # Permanently destroys the old OS block handle - main_app_logger.warning( - f"Cleaned up residual zombie shared memory block: {name}" - ) - except FileNotFoundError: - pass # Block doesn't exist, safe to proceed normal initialization + main_app_logger.info(f"[STOP {self.name}] Stopping writer event...") + self.set_stop_writer_event(remove=False) - shm = shared_memory.SharedMemory( - name=name, create=True, size=self.frame_stride_bytes + # Shut down the worker pools. wait=True is crucial. + # This blocks until all background tasks have finished. + main_app_logger.info( + f"[STOP {self.name}] Shutting down worker executors..." ) - self.ai_shms.append(shm) - self.ai_shm_names.append(name) + self.stop_executors(["clip_executor", "executor"]) - # Map a zero-copy lockless numpy array view straight onto the memory block - view = np.ndarray( - (self.resize_h, self.resize_w, 3), dtype=np.uint8, buffer=shm.buf + # Join all other background threads. + main_app_logger.info( + f"[STOP {self.name}] Joining all background threads..." + ) + self.stop_threads( + [ + "process_thread", + "writer_process", + "metadata_thread", + "display_proc", + "render_proc", + ] ) + # if ( + # hasattr(self, "writer_process") and self.writer_process.is_alive() + # ): # actually a process + # self.writer_process.join(timeout=3.0) + # if self.writer_process.is_alive(): + # self.writer_process.terminate() + self.unregister_pinned_cuda_data() + buffer_pools = [ + "shm_buffer_pool", + "gpu_input", + "clipper_shm_np_views", + "pinned_matrices", + "pinned_tensors", + ] + self.clear_buffer_pools(buffer_pools) - # Page-lock the host buffer window to maximize PCIe bus transfer bandwidth - try: - cv2.cuda.registerPageLocked(view) - except Exception: - pass + if hasattr(self, "reader") and self.reader is not None: + if hasattr(self.reader, "pinned_views"): + self.reader.pinned_views = [] + if hasattr(self.reader, "_static_gpu_frame_buffer"): + self.reader._static_gpu_frame_buffer = None - # Expose a direct matching PyTorch host tensor map to secure high-speed uploads - self.ai_pinned_tensors.append(torch.from_numpy(view)) + if hasattr(self, "reader") and self.reader is not None: + main_app_logger.info(f"[STOP {self.name}] Stopping reader process...") + self.reader.stop() + main_app_logger.info(f"[STOP {self.name}] Reader process stopped.") - # Pre-allocate a 4D FP16 GPU staging canvas to maximize Tensor Core performance - # if self.device_input == "cuda": - # self.ai_gpu_staging = torch.empty( - # (1, 3, self.frame_height, self.frame_width), - # dtype=torch.float16, - # device=f"cuda:{self.gpu_id}", - # ) - # self.preview_gpu_staging = torch.empty( - # (1, 3, self.frame_height, self.frame_width), - # dtype=torch.float16, - # device=f"cuda:{self.gpu_id}", - # ) + if hasattr(self, "prefetch_threads") and self.prefetch_threads: + main_app_logger.info(f"[STOP {self.name}] Stopping prefetch threads...") + for val in self.prefetch_threads: + self.stop_thread(val) + self.prefetch_threads.clear() + # delattr(self, "prefetch_threads") - # Pre-allocate 640x640 workspace footprint across CPU and GPU spaces - for _ in range(self.ring_depth): - mat = np.zeros((self.resize_h, self.resize_w, 3), dtype=np.uint8) - try: - cv2.cuda.registerPageLocked(mat) - except cv2.error: - pass - self.pinned_matrices.append(mat) - self.pinned_tensors.append(torch.from_numpy(mat)) - # Isolate CUDA tasks using a dedicated stream and independent hardware completion barriers - self.processing_stream = ( - torch.cuda.Stream() if self.device_input == "cuda" else None - ) - # Pre-allocated hardware events guarantee completely non-blocking stream isolation - self.slot_events = ( - [torch.cuda.Event() for _ in range(8)] - if self.device_input == "cuda" - else None - ) + if hasattr(self, "async_writer") and self.async_writer is not None: + main_app_logger.info(f"[STOP {self.name}] Releasing writer...") + try: + self.async_writer.release() + except Exception: + pass + setattr(self, "async_writer", None) + + # Clear the buffer that holds direct pointers to the shared memory. + # This is the most critical step to release the "exported pointers". + # buffer_pools = ["shm_buffer_pool", "gpu_input"] + # buffer_pools = [ + # "shm_buffer_pool", + # "gpu_input", + # "clipper_shm_np_views", + # "pinned_matrices", + # "pinned_tensors", + # ] + # self.clear_buffer_pools(buffer_pools) + # if hasattr(self, "shm_buffer_pool") and self.shm_buffer_pool is not None: + # main_app_logger.info( + # f"[STOP {self.name}] Clearing shared memory buffer pool to release pointers..." + # ) + # for i in range(len(self.shm_buffer_pool)): + # self.shm_buffer_pool[i] = None + # # self.shm_buffer_pool = None - self.gpu_float_staging = None - if self.device_input == "cuda": - self.gpu_float_staging = torch.empty( - (1, 3, self.frame_height, self.frame_width), - dtype=torch.float16, - device=f"cuda:{self.gpu_id}", + # if hasattr(self, "gpu_input") and self.gpu_input is not None: + # # main_app_logger.info( + # # f"[STOP {self.name}] Clearing shared memory buffer pool to release pointers..." + # # ) + # for i in range(len(self.gpu_input)): + # self.gpu_input[i] = None + # self.gpu_input = None + # # self.gpu_input.clear() + + # Force instant garbage collection to drop Python buffer exports from memoryview + gc.collect() + if "cuda" in str(self.device_input) and torch.cuda.is_available(): + torch.cuda.empty_cache() + + shm_names = [ + "clipper_shm_blocks", + "reader.shms", + "shms", + ] + main_app_logger.info(f"[STOP {self.name}] Clearing shared memory...") + self.clear_shared_memory_list(shm_names) + + # if hasattr(self, "clipper_shm_blocks"): + # for shm in self.clipper_shm_blocks: + # shm.close() + # shm.unlink() # This removes the file from /dev/shm + + # shms_to_close = [] # self.shms + # if hasattr(self, "reader") and self.reader is not None: + # main_app_logger.info( + # f"[STOP {self.name}] Calling reader.stop() to clean up worker process..." + # ) + # self.reader.stop() + # if hasattr(self.reader, "shms"): + # shms_to_close += self.reader.shms + # self.reader = None + + # if hasattr(sys, "exc_info"): + # # This clears the three-element tuple (type, value, traceback) + # exc_info = sys.exc_info() + # if exc_info[2] is not None: # Check if a traceback object exists + # traceback.clear_frames(exc_info[2]) + # # For older python versions, or as an extra measure + # if hasattr(sys, "exc_clear"): + # sys.exc_clear() + + # gc.collect() + # if "cuda" in str(self.device_input) and torch.cuda.is_available(): + # torch.cuda.empty_cache() + # if hasattr(torch.cuda, "ipc_collect"): + # torch.cuda.ipc_collect() + + # if shms_to_close: + # main_app_logger.info(f"[STOP {self.name}] Closing OS shared memory files...") + # for shm in shms_to_close: + # try: + # shm.close() + # shm.unlink() + # except Exception: + # pass + # shms_to_close.clear() + + # ========================================================================= + # 🕵️‍♂️ ADVANCED REFERENCE INVESTIGATOR + # ========================================================================= + # import gc + # import inspect + + main_app_logger.info("\n" + "=" * 80) + main_app_logger.info( + "🕵️‍♂️ [STOP INVESTIGATION] Scanning for active pointers to SharedMemory blocks..." + ) + # main_app_logger.info("=" * 80) + + # if hasattr(self, "reader") and hasattr(self.reader, "shms"): + # for idx, shm in enumerate(self.reader.shms): + # main_app_logger.info(f"\n[SHM BLOCK {idx}] Name: {shm.name}") + + # # Create a function to recursively find the ultimate owner + # def find_owner(obj, depth=0): + # if depth > 5: # Safety limit to prevent infinite recursion + # return + + # referrers = gc.get_referrers(obj) + # for ref in referrers: + # # Ignore the current function's local variables + # if ref is referrers or ref is locals(): + # continue + + # ref_type_name = type(ref).__name__ + + # # If we find a class instance, we found the owner! + # if hasattr(ref, "__dict__"): + # # Check if it's a class instance and not just a dict + # if not isinstance(ref, (dict, list, tuple, set)): + # for k, v in ref.__dict__.items(): + # if v is obj: + # main_app_logger.info( + # f"{' ' * depth}└── Found Owner: Class <{type(ref).__name__}> holds reference in attribute '{k}'" + # ) + + # # If the referrer is a list or tuple, recurse deeper + # elif isinstance(ref, (list, tuple)): + # main_app_logger.info( + # f"{' ' * depth}└── Held by container: <{ref_type_name}> of len {len(ref)}" + # ) + # find_owner(ref, depth + 1) + + # find_owner(shm) + # main_app_logger.info("=" * 80 + "\n") + # ========================================================================= + + # 8. Clean up any remaining handler resources like queues and events. + main_app_logger.info(f"[STOP {self.name}] Cleaning up final resources...") + self.stop_sync_manager() + self.drain_and_close_queues( + ["signal_queue", "render_queue", "prefetch_queue", "write_queue"] ) - # Default Kernels - self.dilate_kernel = cv2.getStructuringElement( - cv2.MORPH_ELLIPSE, - # cv2.MORPH_RECT, - (self.config.DILATE_KERNEL_SIZE, self.config.DILATE_KERNEL_SIZE), - ) - # self.dilate_kernel_for_enhanced_mask = np.ones((15,15), np.uint8) # 5, 5) (21, 21) - self.dilate_kernel_for_enhanced_mask = cv2.getStructuringElement( - cv2.MORPH_ELLIPSE, - # cv2.MORPH_RECT, - ( - self.config.BKGD_SUB_INCLUDE_HISTORY_DILATE_KERNEL_SIZE, - self.config.BKGD_SUB_INCLUDE_HISTORY_DILATE_KERNEL_SIZE, - ), - ) - - def setup_reader(self, target_fps, clip_duration): - # if hasattr(self, "reader"): - # del self.reader - - # Add a tiny sleep or garbage collect to ensure the GPU handle is released - gc.collect() - torch.cuda.empty_cache() # Clear any remaining context + remove_attrs = [ + "_cached_grid_x", + "_cached_grid_y", + "ffmpeg_proc", + "frame_in_clip_count", + "latest_processed_frame", + "mp_frame_ready_flag", + "mp_last_id", + "processing_stream", + "reader_active_idx", + "ready_buffer_idx", + "render_queue_backlog_counter", + "render_queue_counter", + "shm_frame_lengths", + "stat_start_time", + "write_queue_backlog_counter", + "write_queue_counter", + "static_gpu_360p", + "static_gpu_byte_bchw", + "gpu_float_staging", + "pinned_matrices", + "pinned_tensors", + ] + main_app_logger.info(f"[STOP {self.name}] Removing attributes...") + self.remove_scalar_attributes(remove_attrs) + + # self.stop_events() + events = [ + "frame_ready_event", + "queue_data_ready_event", + "_d2h_fence", + "det_end", + "det_start", + "frame_ready_event", + "main_startup_event", + "queue_data_ready_event", + "reader_lock", + "roi_end", + "roi_start", + "sf_end", + "sf_start", + "worker_tracking_lock", + ] + main_app_logger.info(f"[STOP {self.name}] Stopping events...") + self.stop_events(events, keys_to_skip_deletion=default_attr_keys) + + if hasattr(self, "slot_events") and self.slot_events is not None: + main_app_logger.info(f"[STOP {self.name}] Stopping slot events...") + # Grab local reference and immediately nullify instance attribute + events_to_clean = self.slot_events + self.slot_events = None + if events_to_clean is not None: + for ev in list(events_to_clean): + try: + if isinstance(ev, torch.cuda.Event): + # Force internal driver handle release + del ev + except Exception: + pass + # self.slot_events = None - # TODO: Further investigate GPU path, bkgd subtraction sensitive to artifacts - self.gpu_id = 0 - is_rtsp_stream = str(self.source).startswith( - ("rtsp://", "rtmp://", "http://", "https://") - ) - determined_queue_size = ( - 4 if is_rtsp_stream else 2 - ) # (0 if self.config.TEST_MODE else 2) - if self.device_input == "cuda": # and not self.is_rtsp: - from include.readers import GPUReader + if getattr(self, "processor", None): + delattr(self, "processor") - self.reader = GPUReader( - source=self.source, - target_fps=target_fps, - clip_duration=clip_duration, - gpu_id=0, # self.gpu_id, - queue_size=determined_queue_size, - ) - else: - from include.readers import CPUReader + if getattr(self, "evaluator", None): + delattr(self, "evaluator") - self.reader = CPUReader( - source=self.source, - target_fps=target_fps, - clip_duration=clip_duration, - queue_size=determined_queue_size, - ) + # self.pinned_matrices.clear() + # self.pinned_tensors.clear() - def prepare_pipeline(self): - if self.device_input == "cuda": - self.prepare_gpu_pipeline() - if len(self.active_streams) == 0: - self.gpu_warmup() - else: - self.prepare_cpu_pipeline() - - # AUTOMATED BACKSUB WARMUP GATE - # Priming the Gaussian mixture model before the pipeline loop kicks off - if getattr(self.config, "SMART_FILTERING_ENABLED", False): - video_source = getattr(self, "source", None) - if video_source and os.path.exists(video_source): - print(f"[INIT] Warming up background subtractor using: {video_source}") - warmup_cap = cv2.VideoCapture(video_source) - - # 20 to 30 frames are optimal to prime the baseline history grid - for _ in range(30): - ret, raw_frame = warmup_cap.read() - if not ret: - break + self.clean_up_tensors_and_arrays() - # Downscale the warmup frames to match your active pipeline resolution rules - resized_warmup = cv2.resize( - raw_frame, - (self.resize_w, self.resize_h), - interpolation=cv2.INTER_NEAREST, - ) + release_native_linux_heap() - # Force a highly aggressive learning rate (e.g., 0.1) during initialization - # to lock down the background model quickly, avoiding delayed frame processing. - if self.device_input == "cuda": - # If you use a GPU-bound background subtractor - self.bgs_cuda.apply( - resized_warmup, learningRate=self.lr, stream=self.bgs_stream - ) - else: - # Standard CPU track fallback - self.bgs.apply(resized_warmup, learningRate=self.lr) + gc.collect() + if "cuda" in self.device_input and torch.cuda.is_available(): + torch.cuda.empty_cache() + if hasattr(torch.cuda, "ipc_collect"): + torch.cuda.ipc_collect() - warmup_cap.release() - print("[INIT] Background subtractor warm up complete. GMM initialized.") + # with self._stop_lock: + self._is_stopped = True + self.status = "DONE" + self.active_streams.pop(self.name, None) + main_app_logger.info(f"[STOP {self.name}] Shutdown complete.") def setup_threads(self): - # Shared 10MB memory for display - self.setup_shared_memory() + """Overrides handlers.py to bind threads dynamically to the test instance.""" + + self._cached_grid_y, self._cached_grid_x = torch.meshgrid( + torch.arange( + self.resize_h, device=self.device_input + ), # Match target tracking resolution + torch.arange(self.resize_w, device=self.device_input), + indexing="ij", + ) + + self.setup_shared_memory() # Natively sets up Manager dictionary and buffers # Executor for Async YOLO tasks and FFmpeg re-encoding self.executor = ThreadPoolExecutor(max_workers=self.config.MAX_WORKERS) + self.clip_executor = ThreadPoolExecutor(max_workers=self.config.MAX_WORKERS) - print( + main_app_logger.info( f"sf_enabled: {self.config.sf_enabled}\tTEST_MODE: {self.config.TEST_MODE}", - flush=True, ) - self.signal_queue = mp.Queue(maxsize=32) # 1) - self.render_queue = mp.Queue(maxsize=5) - - # Producer: Handles acquisition and AI metadata logs - # self.process_thread = threading.Thread( - # target=self.run_realtime_inference, - # args=(self.config.sf_enabled,), - # daemon=True, - # ) self.process_thread = threading.Thread( - target=lambda: self.run_realtime_inference( - sf_enabled=self.config.sf_enabled - ), + target=self.run_realtime_inference, + kwargs={ + "sf_enabled": self.config.sf_enabled, + "gt_enabled": getattr(self, "gt_enabled", False), + }, daemon=True, ) + # # Open up looking-ahead buffer horizons to eliminate 8K queue backpressure stalls + # self.render_queue_maxsize = 16 # 4 + # self.render_queue = queue.Queue(maxsize=self.render_queue_maxsize) + + # self.signal_queue_maxsize = 32 # 8 + # self.signal_queue = queue.Queue(maxsize=self.signal_queue_maxsize) + if self.config.TEST_MODE: test_dir = os.getenv( "TEST_SUITE_RENDER_DIR", str(Path(self.config.SHARED_OUTPUT)) ) os.makedirs(test_dir, exist_ok=True) - out_path = os.path.join(test_dir, f"{self.name}_detections_output.mp4") - self.output_path = out_path - log_to_logger( - f"[TEST MODE] Detection results saved to: {out_path}", level="info" - ) + if hasattr(self, "video_output_name"): + video_output_name = self.video_output_name + else: + if self.source.startswith("rtsp"): + short_name = "rtsp" + else: + short_name = Path(self.source).stem + video_output_name = f"{self._testMethodName}_{short_name}.mp4" + + self.output_path = os.path.join(test_dir, video_output_name) + # self.output_path = os.path.join( + # test_dir, f"{self.name}_detections_output.mp4" + # ) + # log_to_logger( + # f"[TEST MODE] Detection results saved to: {self.output_path}", + # level="info", + # ) self.async_writer = AsyncVideoWriter( self.output_path, @@ -1227,20 +1104,14 @@ def setup_threads(self): (self.disp_w, self.disp_h), ) - # self.render_proc = threading.Thread( - # target=test_rendering_worker, - # args=( - # self.render_queue, - # (self.disp_w, self.disp_h), - # out_path, - # self.target_fps, - # ), - # daemon=True, - # ) - # Dummy target alignment to prevent execution signature exceptions - self.render_proc = threading.Thread(target=lambda: None, daemon=True) - self.display_proc = threading.Thread(target=lambda: None, daemon=True) + # self.render_proc = threading.Thread(target=lambda: None, daemon=True) + # self.display_proc = threading.Thread(target=lambda: None, daemon=True) + # self.render_proc = DummyProcess() + # self.display_proc = DummyProcess() + log_to_logger( + f"[TEST MODE] Results saved to: {self.output_path}", level="info" + ) else: self.async_writer = AsyncDisplayVideoWriter( float(self.target_fps), @@ -1257,9 +1128,6 @@ def setup_threads(self): except RuntimeError: self.loop = None # Headless fallback context - self.render_proc = threading.Thread(target=lambda: None, daemon=True) - self.display_proc = threading.Thread(target=lambda: None, daemon=True) - if self.config.ENABLE_QUERYING: # NEW: Dedicated I/O pool for Disk/GPU transfers (Higher worker count for 8K) # self.io_executor = ThreadPoolExecutor(max_workers=8) @@ -1285,670 +1153,2077 @@ def setup_threads(self): ) # Consumer: Handles GPU-to-CPU download and Disk I/O (Writing resized frames to RAM disk) - self.writer_thread = threading.Thread( - target=self.video_writer_core_loop, - args=(self.stop_writer,), - daemon=True, - ) - - def setup_shared_memory(self): - self.manager = mp.Manager() + # self.writer_process = threading.Thread( + # target=self.video_writer_core_loop, + # args=(self.stop_writer,), + # daemon=True, + # ) - self.shms = [] - shm_names = [] - num_shms = 3 + # self.render_proc = threading.Thread(target=lambda: None, daemon=True) + # self.display_proc = threading.Thread(target=lambda: None, daemon=True) + # self.render_proc = DummyProcess() + # self.display_proc = DummyProcess() - # Shared Integer to track which buffer is "Ready" for the UI - # 'i' for integer, initialized to 0 - self.ready_buffer_idx = mp.Value("i", 0) - self.reader_active_idx = mp.Value("i", -1) - self.shm_frame_lengths = mp.Array("i", [0 for _ in range(num_shms)]) - self.mp_last_id = mp.Value("i", -1) - self.mp_frame_ready_flag = mp.Value("b", False) + def initialize_variables(self): + self.prefetch_threads = [] + # Track active worker threads atomically to protect end-of-stream drainage + num_prefetch_workers = 4 if self.device_input == "cpu" else 3 + self.active_workers_count = num_prefetch_workers + self.worker_tracking_lock = threading.Lock() - display_timestamp = int(time.time_ns()) + # Override the atomic tracking count to match our active pool allocation + with self.worker_tracking_lock: + self.active_workers_count = num_prefetch_workers - for idx in range(num_shms): - # self.shm = mp.shared_memory.SharedMemory(create=True, size=10*1024*1024) - shm_name = f"shm_{self.name}_{idx}_{os.getpid()}_{display_timestamp}" - # print(f"[DEBUG]: Setting up SHM {shm_name}", flush=True) - try: - shm = mp.shared_memory.SharedMemory( - name=shm_name, create=True, size=10 * 1024 * 1024 - ) - except FileExistsError: - # Attach to existing memory - shm = mp.shared_memory.SharedMemory(name=shm_name) - except Exception as e: - main_app_logger.error(f"Failed to initialize shared memory: {e}") - raise - self.shms.append(shm) - shm_names.append(shm_name) + # self.initialize_run_realtime_inference(read_frame_only, num_prefetch_workers) - self.signal_queue = self.manager.Queue(maxsize=32) - self.render_queue = self.manager.Queue(maxsize=5) + # 1. HARD GUARD: Capture reader values and ensure the connection is active + if not hasattr(self, "result_dir"): + self.result_dir = self.config.SHARED_OUTPUT + self.device_index = f"cuda:{self.gpu_id}" if self.device_input else "cpu" + self.input_fps = self.reader.input_fps + self.target_fps = self.reader.target_fps + self.frame_width = self.reader.frame_width + self.frame_height = self.reader.frame_height + self.numFrames = self.reader.numFrames + # self.min_roi_w = int(self.config.ROI_MIN_AREA_RATIO * self.resize_w) + # self.min_roi_h = int(self.config.ROI_MIN_AREA_RATIO * self.resize_h) + # self.max_roi_w = int(self.resize_w * self.config.ROI_MAX_RELATIVE_SIZE_RATIO) + # self.max_roi_h = int(self.resize_h * self.config.ROI_MAX_RELATIVE_SIZE_RATIO) + # self.max_cached_elements = 100 - self.shared_details = self.manager.dict() - self.shared_details["shm_names"] = shm_names - # self.shared_details["buffer_idx"] = 0 - # self.shared_details["frame_length"] = [0 for _ in range(num_shms)] - self.shared_details["last_id"] = -1 + if self.input_fps <= 0 or self.frame_width <= 0 or self.frame_height <= 0: + main_app_logger.error( + f"[{self.name}] Stream handler fast-fail triggered. Destination " + f"unreachable or invalid ({self.source}). Terminating pipeline configuration." + ) + # Instantly stop background threads to prevent zombie process leakage + if hasattr(self, "reader") and self.reader is not None: + self.reader.stop() - def start(self): - """ - Starts the decoupled ingestion and inference threads in the correct order. - """ - # PRE-SYNC: Ensure GPU is idle before timing starts - if self.device_input == "cuda": - if torch.cuda.is_available(): - torch.cuda.synchronize() + raise RuntimeError( + f"Failed to initialize stream reader endpoint: {self.source}" + ) - # Start the hardware-decoupled reader first - self.reader.start() + # 2. Proceed with calculation mechanics safely only if values are healthy + self.step_size = ( + float(self.input_fps) / float(self.target_fps) + if hasattr(self, "target_fps") + else 1.0 + ) + self.frame_skip = self.reader.frame_skip + self.max_frames_per_clip = self.reader.max_frames_per_clip + self.frame_interval = self.reader.frame_interval - if self.config.ENABLE_QUERYING: - self._initialize_writer() + self.duration_s = self.numFrames / self.input_fps + self.expected_num_frames = int(self.duration_s * self.target_fps) + self.get_frameWH() - # Small delay to allow the reader's deque to populate - time.sleep(0.1) + # Determine minimum contour size relative to frame resolution + # self.min_contour_area = int( + # (self.min_roi_h) + # * (self.min_roi_h) + # ) # 207 + + # self.dist_thresh_8k = max( + # self.config.ROI_DISTANCE_THRESH_RATIO * self.frame_width, + # self.config.ROI_DISTANCE_THRESH_RATIO * self.frame_height, + # ) + # multiplier = 2.0 if self.device_input == "cpu" else 1.0 + # self.dist_thresh_640 = ( + # max( + # self.config.ROI_DISTANCE_THRESH_RATIO * self.resize_w, + # self.config.ROI_DISTANCE_THRESH_RATIO * self.resize_h, + # ) + # * multiplier + # ) # 0.05 * self.resize_w + # self.scales_tensor = torch.tensor( + # [self.scale_x, self.scale_y, self.scale_x, self.scale_y], + # # device="cpu", + # device=self.device_input, + # ) - # Start the producer and consumer threads - if hasattr(self, "process_thread") and not self.process_thread.is_alive(): - self.process_thread.start() + # self.disp_w, self.disp_h = self.config.DISPLAY_FRAME_SIZE - # If running on the CPU track, block the main test thread briefly until the CPU - # has successfully populated the first few frames into the render queue. - # This completely prevents the FFmpeg rendering worker from starving and skipping - # the initial 3-4 seconds of video. - # if getattr(self, "device_input", "cpu") == "cpu": - # print("[INIT] Waiting for CPU to prime the render queue...") - # timeout_counter = 0 - # # Wait until at least 5 frames are buffered in the queue or 10 seconds pass - # while self.render_queue.qsize() < 5 and timeout_counter < 100: - # time.sleep(0.1) - # timeout_counter += 1 - # print( - # f"[INIT] Render queue primed with {self.render_queue.qsize()} frames. Launching worker." - # ) + # Performance Tracking + self.elapsed_display_time = 0.0 + self.frame_count = 0 # Frame count for videos + self.frame_count_target = 0 + self.last_delivered_frame_id = -1 # Track what was actually sent + self.last_frame_id = 0 + self.latest_processed_frame = None + self.next_process_idx = 0.0 + self.stat_fps = 0 + self.stat_frame_count = 0 + self.abs_frame_num = 0 + self.total_objects_detected = 0 + self.is_cuda = self.device.lower() == "gpu" and torch.cuda.is_available() + self.frame_in_clip_count = 0 - if not self.config.DISABLE_DETECTION: - self.render_proc.start() + self.writer_done = True - self.display_proc.start() + # Video Clipping + # self.video_writer = None + self.ffmpeg_proc = None # Replaces cv2.VideoWriter completely + # self.fourcc = cv2.VideoWriter_fourcc(*"mp4v") # avc1, mp4v + # self.clip_id = 0 + # self.clip_filename = "" + self.clip_filename_pattern = f"{self.config.SHARED_OUTPUT}/{self.name}_%03d.mp4" + # self.clip_key = f"{self.name}_000.mp4" + # self.tmp_file = "" + # self.frame_in_clip_count = 0 - if ( - self.config.ENABLE_QUERYING - and not self.config.TEST_MODE - and not self.metadata_thread.is_alive() - ): - self.metadata_thread.start() + if self.config.ENABLE_QUERYING: + self.gpu_float_staging = torch.empty( + (1, 3, self.frame_height, self.frame_width), + dtype=torch.float16, + device=self.device_index, + ) + # Thread-safe queue for the resized frames (640x640) + # maxlen=300 allows for a 20-second buffer in case of extreme disk lag + # Non-blocking queue for frames and control signals + # self.write_queue = queue.Queue(maxsize=int(self.target_fps)) # 300) + + # self.write_queue = queue.Queue( + # maxsize=int(self.target_fps / 2) + # if self.device_input == "cpu" + # else int(self.target_fps / 2) + # ) # 300) + + # Define the depth of your shared memory ring buffer. 16 is a safe number. + self.clipper_ring_depth = 16 + self.clipper_shm_frame_bytes = self.config.MODEL_W * self.config.MODEL_H * 3 + + # Create the shared memory blocks + self.clipper_shm_blocks = [ + SharedMemory(create=True, size=self.clipper_shm_frame_bytes) + for _ in range(self.clipper_ring_depth) + ] - if self.config.ENABLE_QUERYING and not self.writer_thread.is_alive(): - self.writer_thread.start() + # Get the names to pass to the new process + self.clipper_shm_names = [shm.name for shm in self.clipper_shm_blocks] - return self + # Create NumPy array views that the main process will use to write data + self.clipper_shm_np_views = [ + np.ndarray( + (self.config.MODEL_H, self.config.MODEL_W, 3), + dtype=np.uint8, + buffer=shm.buf, + ) + for shm in self.clipper_shm_blocks + ] - # def stopv1(self): - # """ - # Comprehensive resource release. Safely drains the frame pipelines, - # forces a graceful FFmpeg flush to prevent 'moov atom' index corruption, - # and cleanly unlinks shared memory layers. - # """ - # with self._stop_lock: - # if self._is_stopped: - # return # Already stopped by another thread - - # # 1. Instantly pull out of active dashboards to stop inbound traffic - # if self.name in self.active_streams: - # self.active_streams.pop(self.name, None) - - # self.active = False - # print( - # f"[STOP] Initiating graceful flush shutdown for {self.name}", - # flush=True, - # ) + # An atomic, thread-safe counter to track the next available slot + self.clipper_ring_idx = mp.Value("i", 0) + self.clipper_idx_lock = ( + mp.Lock() + ) # Lock to prevent race conditions when getting an index - # # 2. Trigger your event handler flags - # if hasattr(self, "stop_writer") and self.stop_writer is not None: - # try: - # self.stop_writer.set() - # except Exception: - # pass + self.write_queue = mp.Queue(maxsize=self.clipper_ring_depth * 2) + # if ( + # not hasattr(self, "writer_process") + # or self.writer_process is None + # or not self.writer_process.is_alive() + # ): + # main_app_logger.info( + # " [CLIPPER-INIT] Target worker runtime thread is offline. Provisioning core consumer loop thread...", + # ) + self.writer_process = mp.Process( + target=video_writer_core_loop, + args=( + self.write_queue, + self.clip_filename_pattern, + self.target_fps, + self.config.MODEL_W, + self.config.MODEL_H, + int(self.config.CLIP_DURATION), + # Pass the shared memory details to the new process + self.clipper_shm_names, + self.clipper_shm_frame_bytes, + ), + daemon=True, + ) + # self.writer_process.start() + if not self.config.TEST_MODE: + self.send_metadata_queue = queue.Queue() + self.writer_done = False + self.stop_writer = threading.Event() if self.config.ENABLE_QUERYING else None - # # 3. PHASE 1: UNBLOCK CONSUMER CORES (Poison Pill Deliveries First) - # if hasattr(self, "write_queue") and self.write_queue is not None: - # try: - # # Clear out pending frame backlogs to speed up shutdown execution - # while not self.write_queue.empty(): - # try: - # self.write_queue.get_nowait() - # except Exception: - # break - # # Dispatch clean poison pill token to release the consumer thread - # self.write_queue.put(None) - # except Exception: - # pass + # self._cached_grid_y, self._cached_grid_x = torch.meshgrid( + # torch.arange( + # self.resize_h, device=self.device_input + # ), # Match target tracking resolution + # torch.arange(self.resize_w, device=self.device_input), + # indexing="ij", + # ) - # # if hasattr(self, "render_queue") and self.render_queue is not None: - # # try: - # # # while not self.render_queue.empty(): - # # # try: - # # # self.render_queue.get_nowait() - # # # except Exception: - # # # break - # # # self.render_queue.put_nowait(None) - # # while not self.render_queue.empty(): - # # time.sleep( - # # 0.01 - # # ) # Give the disk writer room to catch up cleanly - - # # # Deliver the poison pill token ONLY after the queue is empty - # # self.render_queue.put(None, timeout=2.0) - # # except Exception: - # # pass - - # if hasattr(self, "render_queue") and self.render_queue is not None: - # try: - # # --- THE DEFINITIVE UNBLOCKING FIX --- - # # Drop any lingering items aggressively instead of sleeping infinitely - # # on an empty queue check that never clears. - # while not self.render_queue.empty(): - # try: - # self.render_queue.get_nowait() - # except Exception: - # break - - # # Immediately push the poison pill sentinel to terminate the worker safely - # self.render_queue.put_nowait(None) - # except Exception: - # pass + # self.fixed_inference_batch = torch.empty( + # (self.config.MODEL_MAX_BATCH_SIZE, 3, self.config.MODEL_H, self.config.MODEL_W), + # dtype=torch.half, + # device=self.device_input, + # ) + # Create a deep look-ahead queue buffer that consumes near 0 RAM + # because it only holds reference pointers to your 6 SHM slots! + # if self.is_rtsp: + # prefetch_maxsize = 10 + prefetch_maxsize = 5 # use 4 or 5; 10 risk memlock + # else: + # prefetch_maxsize = ( + # 128 if self.device_input != "cpu" else int(self.target_fps) + # ) + + self.prefetch_queue = queue.Queue( + maxsize=prefetch_maxsize, + ) + # self.prefetch_queue = mp.Queue(maxsize=128) + # Initialize a thread-safe signaling handle at class setup (run_realtime_inference) + self.queue_data_ready_event = threading.Event() + maxsize = ( + self.prefetch_queue.maxsize + if hasattr(self.prefetch_queue, "maxsize") + else self.prefetch_queue._maxsize + ) + # self.shm_buffer_pool = [None] * maxsize + try: + self.shm_buffer_pool = [ + # ( + # torch.empty( + # (self.frame_height, self.frame_width, 3), dtype=torch.uint8 + # ).pin_memory(), + # None, # event + # 0, # frame_num + # 0, # abs_frame_num + # 0.0, # read_latency + # ) + None + for _ in range(maxsize) + ] + except Exception as e_: + traceback.print_exc() + main_app_logger.info(f"[INITIALIZATION ERROR] Error occurred: {e_}") + self.gpu_input = [ + torch.empty( + (self.frame_height, self.frame_width, 3), + device=self.device_input, + dtype=torch.uint8, + ) # .pin_memory() + for _ in range(maxsize) + ] + + self.prefetch_active = True + + self.prefetch_threads = [] + + # self.shm_buffer_pool = [None] * maxsize + # self.shm_buffer_pool = mp.Manager().list([None] * maxsize) + # global_shared_pool = mp.Manager().list([None] * maxsize) + # self.shm_buffer_pool = global_shared_pool + + # Track active worker threads atomically to protect end-of-stream drainage + num_prefetch_workers = 1 # 4 if self.device_input == "cpu" else 3 + self.active_workers_count = num_prefetch_workers + self.worker_tracking_lock = threading.RLock() + # self.obj_counter_l-ock = threading.Lock() + + # Offload the pre-fetch layer straight to a daemon thread context + # prefetch_thread = threading.Thread(target=frame_prefetch_worker, daemon=True) + # prefetch_thread.start() + # num_prefetch_workers = 1 if self.device_input == "cpu" else 3 + # num_prefetch_workers = 3 + + # Override the atomic tracking count to match our active pool allocation + with self.worker_tracking_lock: + self.active_workers_count = num_prefetch_workers + + # This guarantees frames are read from self.reader sequentially + # and stay perfectly in order, while letting workers decode in parallel! + self.reader_lock = threading.RLock() + + # --- PRE-ALLOCATED ZERO-COPY HARDWARE RING WORKSPACE --- + self.ring_depth = 4 # 8 # _async_clipper_worker + self.gpu_ring_idx = 0 # _async_clipper_worker + self.cpu_ring_idx = 0 # _async_clipper_worker + + self.pinned_matrices = [] # _async_clipper_worker, video_writer_core_loop (CPU) + if self.device_input == "cuda": + self.pinned_tensors = [] # _async_clipper_worker + + self.static_gpu_byte_bchw = torch.empty( + (1, 3, self.disp_h, self.disp_w), + dtype=torch.uint8, + device="cuda", + ).contiguous() + + # Pre-allocate 640x640 workspace footprint across CPU and GPU spaces + for _ in range( + self.ring_depth + ): # _async_clipper_worker, video_writer_core_loop + mat = np.zeros((self.resize_h, self.resize_w, 3), dtype=np.uint8) + if self.device_input == "cuda": + try: + cv2.cuda.registerPageLocked(mat) + except cv2.error: + pass + self.pinned_tensors.append(torch.from_numpy(mat)) + + self.pinned_matrices.append(mat) + + # self.init_pipeline_shared_memory() + + # if self.device_input == "cuda" and not hasattr(self, "_cuda_gaussian_filter"): + # # Large block blur to dissolve high-frequency single-pixel speckles + # # ksize=(15, 15) + # # ksize=(11, 11) + # ksize = (17, 17) + # self._cuda_gaussian_filter = cv2.cuda.createGaussianFilter( + # srcType=cv2.CV_8UC1, dstType=cv2.CV_8UC1, ksize=ksize, sigma1=0 + # ) + + # if not hasattr(self, "_filter_scratch_keep"): + # # Existing order and boolean validation maps + # self._filter_scratch_keep = torch.zeros( + # (self.max_cached_elements,), dtype=torch.bool, device=self.device_input + # ) + # self._filter_order_scratch = torch.zeros( + # (self.max_cached_elements,), dtype=torch.long, device=self.device_input + # ) + + # # Persistent coordinate layers to absorb inner-loop tensor evaluations safely + # self._filter_scratch_x1 = torch.zeros( + # (self.max_cached_elements,), dtype=torch.float32, device=self.device_input + # ) + # self._filter_scratch_y1 = torch.zeros( + # (self.max_cached_elements,), dtype=torch.float32, device=self.device_input + # ) + # self._filter_scratch_x2 = torch.zeros( + # (self.max_cached_elements,), dtype=torch.float32, device=self.device_input + # ) + # self._filter_scratch_y2 = torch.zeros( + # (self.max_cached_elements,), dtype=torch.float32, device=self.device_input + # ) + # self._filter_scratch_ioa = torch.zeros( + # (self.max_cached_elements,), dtype=torch.float32, device=self.device_input + # ) + + # Isolate CUDA tasks using a dedicated stream and independent hardware completion barriers + self.processing_stream = ( + torch.cuda.Stream() if self.device_input == "cuda" else None + ) + + # Cache the context manager instance persistently + self.compiled_no_grad_gate = torch.no_grad() + + # Pre-allocated hardware events guarantee completely non-blocking stream isolation + self.slot_events = ( + [torch.cuda.Event() for _ in range(8)] + if self.device_input == "cuda" + else None + ) + + # Allocate a permanent float32/float16 channel layout space directly on VRAM + if self.device_input == "cuda": + self.static_gpu_360p = torch.empty( + (1, 3, self.disp_h, self.disp_w), + dtype=torch.float32, + device=self.device_input, + ) + self.static_gpu_byte_bchw = torch.empty( + (1, 3, self.disp_h, self.disp_w), + dtype=torch.uint8, + device=self.device_input, + ).contiguous() + + def setup_reader(self, target_fps, clip_duration, startup_event=None): + # if hasattr(self, "reader"): + # del self.reader + + self.gpu_id = 0 + + # try: + determined_queue_size = ( + # 4 if self.is_rtsp else 2 # (0 if self.config.TEST_MODE else 2) + # 4 if self.is_rtsp else 8 + 4 # max: 5 + ) + if self.device_input == "cuda": # and not self.is_rtsp: + # Add a tiny sleep or garbage collect to ensure the GPU handle is released + # gc.collect() + # torch.cuda.empty_cache() # Clear any remaining context + + from include.readers import GPUReader + + self.reader = GPUReader( + source=self.source, + startup_event=startup_event, + target_fps=target_fps, + clip_duration=clip_duration, + gpu_id=0, # self.gpu_id, + queue_size=determined_queue_size, + ) + else: + from include.readers import CPUReader + + self.reader = CPUReader( + source=self.source, + startup_event=startup_event, + target_fps=target_fps, + clip_duration=clip_duration, + queue_size=determined_queue_size, + ) + # except Exception as e: + # self.reader = None + # raise ValueError(f"Stream reader initialization failure: {e}") + + def setup_shared_memory(self): + self.manager = mp.Manager() + + self.shms = [] + shm_names = [] + num_shms = 3 + + # Shared Integer to track which buffer is "Ready" for the UI + # 'i' for integer, initialized to 0 + self.ready_buffer_idx = mp.Value("i", 0) + self.reader_active_idx = mp.Value("i", -1) + self.shm_frame_lengths = mp.Array("i", [0 for _ in range(num_shms)]) + self.mp_last_id = mp.Value("i", -1) + self.mp_frame_ready_flag = mp.Value("b", False) + + # --- HIGH-SPEED ATOMIC TELEMETRY BACKLOG REGISTERS --- + self.render_queue_backlog_counter = mp.Value("i", 0) + self.write_queue_backlog_counter = mp.Value("i", 0) + + display_timestamp = int(time.time_ns()) + + for idx in range(num_shms): + # self.shm = mp.shared_memory.SharedMemory(create=True, size=10*1024*1024) + shm_name = f"shm_{self.name}_{idx}_{os.getpid()}_{display_timestamp}" + if shm_name not in shm_names: + try: + SharedMemory(name=shm_name).unlink() + except FileNotFoundError: + pass + # main_app_logger.info(f"[DEBUG]: Setting up SHM {shm_name}") + try: + shm = SharedMemory( + name=shm_name, create=True, size=10 * 1024 * 1024 + ) + # safe_unregister_shm(shm.name) + except FileExistsError: + # Attach to existing memory + shm = SharedMemory(name=shm_name) + # safe_unregister_shm(shm.name) + except Exception as e: + main_app_logger.error(f"Failed to initialize shared memory: {e}") + raise + self.shms.append(shm) + shm_names.append(shm_name) + + # try: + # unregister(shm._name, "shared_memory") + # # main_app_logger.info(f"[HANDLER] Successfully unregistered {shm.name} from Resource Tracker.") + # except Exception: + # pass + + self.signal_queue = self.manager.Queue(maxsize=32) + self.render_queue = self.manager.Queue(maxsize=10) # old-5 + + self.shared_details = self.manager.dict() + self.shared_details["shm_names"] = shm_names + # self.shared_details["buffer_idx"] = 0 + # self.shared_details["frame_length"] = [0 for _ in range(num_shms)] + self.shared_details["last_id"] = -1 + + # PIPELINE FUNCTIONS -------------------------------------------- + + def update_frame(self, stat_start_time): + # if self.device_input == "cuda": + # torch.cuda.synchronize() + + self.stat_frame_count += 1 + self.elapsed_display_time += time.perf_counter() - stat_start_time + # self.elapsed_display_time = time.perf_counter() - stat_start_time + # if elapsed > 0.5: + self.stat_fps = round(self.stat_frame_count / self.elapsed_display_time, 1) + + @torch.inference_mode() + def pipeline_fn( + self, + device_frame, + overall_frame_num, + stat_start_time, + current_clip_id, + gt_boxes=None, + read_frame_only=False, + ): + global all_metadata + current_clip_key = f"{self.name}_{current_clip_id:03d}.mp4" + current_clip_path = f"{self.config.SHARED_OUTPUT}/{current_clip_key}" + + metadata = {} + motion_detected = False + metrics = {"sf_time": 0, "roi_time": 0, "det_time": 0, "bbs": None} + + # Given input frame, get metadata and metrics + try: + if read_frame_only: + # Get frame, metadata and metrics + _, det_frame = self.processor.format_bbs_and_frame_4_detection( + [], device_frame + ) + + else: + # --- CLIP GENERATION --- + if self.config.ENABLE_QUERYING: + if ( + self.config.DEBUG_FLAG + and hasattr(self, "max_frames_per_clip") + and ( + self.frame_in_clip_count % 15 == 0 + or self.frame_in_clip_count == 1 + ) + ): + main_app_logger.info( + f"[CLIPPER] Frame progress tracking index: {self.frame_in_clip_count}/{self.max_frames_per_clip} (Overall Frame: {overall_frame_num})" + ) + + self.prep_frame_for_video(device_frame, overall_frame_num) + + if self.frame_in_clip_count > self.max_frames_per_clip: + global clip_completion_tracker + if current_clip_key not in clip_completion_tracker: + clip_completion_tracker[current_clip_key] = { + "video": False, + "meta": False, + "start_time": time.time(), + } + + clip_completion_tracker[current_clip_key]["meta"] = True + # main_app_logger.info( + # f" [BARRIER-SEAL] All metadata extracted for {current_clip_key}. Evaluating convergence...", + # + # ) + self._evaluate_barrier_and_dispatch( + current_clip_key, + current_clip_path, + self.resize_w, + self.resize_h, + ) + + self.start_new_clip(current_clip_id) + + # Run model on frame, get metadata and metrics + with torch.inference_mode(): + metrics, metadata, det_frame, motion_detected = self.processor.run( + device_frame, + overall_frame_num, + frame_in_clip_count=self.frame_in_clip_count, + gt_boxes=None, + ) + + num_objs = len(metadata.keys()) + self.total_objects_detected += num_objs + + if self.config.DEBUG_FLAG: + meta_keys = ", ".join(list(metadata.keys())) + main_app_logger.info( + f"[DEBUG] {current_clip_key} metadata keys: {meta_keys}", + ) + + if num_objs > 0: + if current_clip_key not in all_metadata: + all_metadata[current_clip_key] = {"object": {}, "face": {}} + + all_metadata[current_clip_key]["object"].update(metadata) + + # data_to_draw = metadata + if self.config.DEBUG_FLAG and overall_frame_num % 50 == 0: + main_app_logger.info( + f"[METADATA-DEBUG A] Logged tracking structures for Frame #{overall_frame_num} into dictionary key: {current_clip_key}. Number detections: {self.total_objects_detected}", + ) + + if self.config.TEST_MODE: + self.frame2video( + det_frame, + overall_frame_num, + metadata, + getattr(self, "label_source", None), + stat_start_time, + ) + else: + self.frame2output( + det_frame, + overall_frame_num, + metadata, + self.label_source, + stat_start_time, + ) + + # with self.obj_counter_lock: + # self.num_objs += len(metadata.keys()) + # except (TypeError, IndexError): + # # App is shutting down and processor/reader not available + # self.active = False + + except Exception as e_detection: + # traceback.print_exc() + # if self.active: + traceback.print_exc() + main_app_logger.info(f"[DETECTION ERROR] Exception: {e_detection}") + # self.active = False + + finally: + # del inf_data, bbs_full_res, device_frame, det_frame + if "det_frame" in locals(): + del det_frame + if "device_frame" in locals(): + del device_frame + # if "bbs_full_res" in locals(): + # del bbs_full_res + # if "inf_data" in locals(): + # del inf_data + + return metadata, metrics # Skip full detection pass + + def initialize_run_realtime_inference(self, read_frame_only, num_prefetch_workers): + # self.duration_target = 30 + # self.status = "RUNNING" + self.processor = self._setup_processor(read_frame_only) + + if hasattr(self, "processor") and hasattr(self.processor, "label_source"): + self.label_source = self.processor.label_source + # Setup empty list to track background futures natively + # self._active_inference_futures = [] + + if self.is_cuda and not hasattr(self, "sf_start") and self.config.TEST_MODE: + self.sf_start, self.sf_end = ( + torch.cuda.Event(enable_timing=True), + torch.cuda.Event(enable_timing=True), + ) + self.roi_start, self.roi_end = ( + torch.cuda.Event(enable_timing=True), + torch.cuda.Event(enable_timing=True), + ) + self.det_start, self.det_end = ( + torch.cuda.Event(enable_timing=True), + torch.cuda.Event(enable_timing=True), + ) + + if self.config.TEST_MODE: + self.component_stats = { + "sf": [], + "roi": [], + "det": [], + "dma_upload": [], # Track PCIe Transfer Latencies + "queue_blocked": [], # Track GIL Serialization stalls + "batch_sizes": [], # Track Smart Filtering density + "thread_backlog": [], # Track thread work pool backlog + } + self.crops_per_frame_list = [] + + # Bind active execution permanently to sub-stream BEFORE entering loop (Bypasses TLS Overhead) + # if self.device_input == "cuda" and torch.cuda.is_available(): + # torch.cuda.set_stream(self.inference_stream) + if hasattr(self, "target_fps") and hasattr(self, "duration_target"): + self.max_target_frames = int(self.duration_target * float(self.target_fps)) + elif hasattr(self, "numFrames"): + self.max_target_frames = self.numFrames + else: + self.max_target_frames = float("inf") + + # self.dynamic_limit = max(2, int(0.5 * self.target_fps)) + + # Initialize a thread-safe signaling handle at class setup (run_realtime_inference) + self.queue_data_ready_event = threading.Event() + + try: + for _ in range(num_prefetch_workers): + # prefetch_thread = mp.Process( + prefetch_thread = threading.Thread( + target=lambda: global_frame_prefetch_worker_v1(self), + daemon=True, + ) + prefetch_thread.start() + self.prefetch_threads.append(prefetch_thread) + except Exception as e: + main_app_logger.critical( + f"[{self.name}] Failed to start prefetch workers: {e}", exc_info=True + ) + traceback.print_exc() + raise + + @torch.inference_mode() + def run_realtime_inference( + self, + sf_enabled=True, + profiler=None, + gt_enabled=False, + read_frame_only=False, + ): + self.status = "RUNNING" + + self.initialize_run_realtime_inference( + read_frame_only, self.active_workers_count + ) + + self.stat_start_time = time.perf_counter() + # pipeline_start_time = self.stat_start_time + # last_loop_cycle_timestamp = self.stat_start_time + + missing_frame_cnt = 0 + max_retries = int(self.target_fps) + # Release the master startup event at the last possible moment. + self.main_startup_event.set() + while ( + self.active # or not self.prefetch_queue.empty() + ): # and self.frame_count_target < self.max_target_frames: + stat_start_time = time.perf_counter() + try: + # FRAME RETRIEVAL --------------------------------------------- + try: + safe_frame, frame_details, should_continue = ( + self._get_frame_from_queue() + ) + + if not should_continue: + self.active = False # Signal loop termination + break + if safe_frame is None: # and self.is_rtsp: + missing_frame_cnt += 1 + + if missing_frame_cnt >= max_retries: + self.active = False # Signal loop termination + main_app_logger.info("Too many frames missing. Exiting ...") + break + continue # Skip to the next iteration if the frame is invalid + + # try: + # # ret, slot_idx = self.prefetch_queue.get(block=True, timeout=1.0) + # # ret, slot_idx = self.prefetch_queue.get(block=False) + # ret, slot_idx = self.prefetch_queue.get(block=True, timeout=1.0) + # self.prefetch_queue.task_done() + + # except queue.Empty: + # with self.worker_tracking_lock: + # if ( + # self.active_workers_count == 0 + # and self.prefetch_queue.empty() + # ): + # self.active = False + # break + # # If the queue is empty AND the prefetch workers are done, we can exit. + # if not self.active: + # break + # continue + + # # If self.stop() drops the queues, break out of the thread loop natively. + # except (OSError, ValueError, AssertionError): + # main_app_logger.info( + # "[PROCESS THREAD] Ingestion queue disconnected via stop() signal. Breaking loop." + # ) + # self.active = False + # break + + # if ret is False or slot_idx == "END_OF_STREAM": + # main_app_logger.info( + # "[PROCESS THREAD] End of video stream detected. Breaking loop naturally." + # ) + # self.active = False + # break + + # if not self.active: + # break + + # # if slot_idx == -1 or self.shm_buffer_pool[slot_idx] is None: + # # continue + # if ( + # slot_idx == -1 + # or not hasattr(self, "shm_buffer_pool") + # or self.shm_buffer_pool is None + # ): + # continue + # if ( + # slot_idx >= len(self.shm_buffer_pool) + # or self.shm_buffer_pool[slot_idx] is None + # ): + # continue + + # # Zero-Copy Reference Extraction straight out of the memory slot array + # ( + # raw_shm_frame, + # current_event, + # frame_num, + # abs_frame_num, + # true_read_latency_secs, + # ) = self.shm_buffer_pool[slot_idx] + + # if frame_num == 0: + # main_app_logger.info( + # f"[VERIFY - CONSUMER] Main loop is officially processing Frame {frame_num}!", + # ) + + # if "cuda" in str(self.device_input): + # safe_frame = self.gpu_input[slot_idx] + # # safe_frame = cpu_tensor.to(self.device_input, non_blocking=True) + # safe_frame.copy_(raw_shm_frame) + # # self.gpu_input[slot_idx].zero_() + # else: + # safe_frame = raw_shm_frame + + # # Record the PyTorch CUDA event on the current stream + # if current_event is not None and isinstance( + # current_event, torch.cuda.Event + # ): + # # This tells the GPU that the consumer is done reading this slot + # current_event.record(torch.cuda.current_stream()) + + # # Originally 0-based but make 1-based + # frame_num += 1 + # abs_frame_num += 1 + # self.abs_frame_num = abs_frame_num + missing_frame_cnt = 0 + + except queue.Empty: + if getattr(self.reader, "reconnect_failed", False): + self.active = False + break + if not self.active: + break # Exit on error if shutdown has been initiated + time.sleep(0.001) + continue + + # FRAME PROCESSING --------------------------------------------- + # stat_start_time = self.stat_start_time + self.abs_frame_num = frame_details["abs_frame_num"] + calculated_clip_id = ( + frame_details["frame_num"] - 1 + ) // self.max_frames_per_clip + self.frame_count += 1 + self.frame_count_target += 1 + self.frame_in_clip_count += 1 + + # RUN PIPELINE_FN --------------------------------------------- + # run_pipelinefn_start = time.perf_counter() + # self.frame_count_target += 1 + # self.frame_in_clip_count += 1 + + # if gt_enabled: + # target_boxes_array = self.get_frame_gt_boxes( + # abs_frame_num, gt_sequence, gt_boxes + # ) + + metadata_or_bbs, metrics = self.pipeline_fn( + safe_frame, + frame_details["frame_num"], + stat_start_time, + calculated_clip_id, + read_frame_only=read_frame_only, + ) + + # # FRAME POST PROCESSING --------------------------------------------- + + # Explicitly delete frame variables to free their references + frame_8k = None + del frame_8k, safe_frame + if "metadata_or_bbs" in locals(): + del metadata_or_bbs + + if self.frame_count % 100 == 0: + gc.collect() + + # Force a microscopic micro-yield if executing on CPU. + # This grants immediate execution priority back to the background cleaning thread, + # allowing the garbage collector to evict data from RAM instantly! + if self.device_input == "cpu": + time.sleep( + 0 + ) # .005) # 1ms yield breaks core processor starvation lock + + # END -> frame processing + except torch.cuda.OutOfMemoryError: + main_app_logger.info("!" * 70) + main_app_logger.info( + "[CRITICAL TEST CRASH] GPU MEMORY CEILING HIT INSIDE RUNNER LOOP!" + ) + main_app_logger.info( + "Freezing allocation history registers and writing diagnostic log..." + ) + main_app_logger.info("!" * 70) + + try: + snapshot_filename = ( + f"/tmp/test_vram_leak_profile_pid{os.getpid()}.pickle" + ) + torch.cuda.memory._dump_snapshot(snapshot_filename) + main_app_logger.info( + f"[PROFILER SUCCESSFUL] Snapshot profile written to: {snapshot_filename}" + ) + main_app_logger.info( + "--> Drag and drop this file directly into: https://pytorch.org" + ) + except Exception as dump_err: + main_app_logger.info( + f"Failed to record profile data snapshot: {dump_err}" + ) + + # Force safe system unlinking of background workers to clean up OS handles + self.active = False + if hasattr(self, "reader") and self.reader is not None: + self.reader.stop() + raise + + except Exception as e: + if not self.active or not getattr(self, "prefetch_active", True): + main_app_logger.info( + "[PROCESS THREAD] System shutdown detected during exception sweep. Exiting thread payload context." + ) + break + + main_app_logger.info( + f"[CRITICAL PIPELINE ERROR] Crash on frame: {repr(e)}" + ) + traceback.print_exc() + raise e # Let it break so you can see the exact line number! + + # END -> while self.active and self.frame_count_target < self.max_target_frames: + + # PIPELINE POST PROCESSING --------------------------------------------- + # ) + + self.async_writer.release() + + # CALCULATE PERFORMANCE METRICS --------------------------------------------- + main_app_logger.info( + f"Execution Finished. Total Output Frames Written: {self.frame_count_target}" + ) + + # Force early hardware driver sweep before unbinding threads + if self.device_input == "cuda" and torch.cuda.is_available(): + torch.cuda.synchronize() + torch.cuda.empty_cache() + torch.cuda.ipc_collect() + + gc.collect() + + if profiler is not None: + profiler.stop() + + self.stop() + + def get_overlay( + self, + display_frame, + metadata_or_bbs, + class_list, + scale_display_x, + scale_display_y, + color=(0, 0, 255), + ): + if isinstance(metadata_or_bbs, dict): + detached_bbs = { + k: (v.detach() if torch.is_tensor(v) else v) + for k, v in metadata_or_bbs.items() + } + # Object Mode (YOLO Structs) + display_frame = get_metadata_overlay( + display_frame, + detached_bbs, + class_list, + (scale_display_x, scale_display_y), + (self.disp_w, self.disp_h), + is_bgr=True, + ) + + elif metadata_or_bbs is not None: + # # Motion / Smart Filtering Overlay Path + display_frame = get_bb_overlay( + display_frame, + metadata_or_bbs, + (scale_display_x, scale_display_y), + (self.disp_w, self.disp_h), + color=color, + ) + + return display_frame + + def _get_frame_from_queue(self): + """ + Retrieves the next available frame data from the shared memory prefetch queue. + + This helper encapsulates the logic for handling an empty queue, stream termination + signals, and invalid data slots, making the main processing loop cleaner. + + Returns: + A tuple containing: + - (torch.Tensor or None): The frame tensor if successful, otherwise None. + - (dict or None): A dictionary with frame metadata (frame_num, event), or None. + - (bool): A flag indicating if the processing loop should continue. + """ + try: + # Block for a short timeout to wait for a frame + ret, slot_idx = self.prefetch_queue.get(block=True, timeout=1.0) + self.prefetch_queue.task_done() + except queue.Empty: + # If the queue is empty, check if workers are still active before deciding to exit. + with self.worker_tracking_lock: + if self.active_workers_count == 0 and self.prefetch_queue.empty(): + main_app_logger.info( + "[HELPER] Prefetch queue is empty and all workers are done. Signaling stop." + ) + return None, None, False # Stop + return None, None, True # Continue waiting + except (OSError, ValueError): + # The queue was likely closed by self.stop(), signal to exit. + main_app_logger.info("[HELPER] Prefetch queue was closed. Signaling stop.") + return None, None, False # Stop + + # Check for end-of-stream signal or invalid data + if not ret or slot_idx == "END_OF_STREAM": + main_app_logger.info("[HELPER] Received end-of-stream signal.") + return None, None, False # Stop + + if ( + slot_idx == -1 + or not hasattr(self, "shm_buffer_pool") + or self.shm_buffer_pool is None + or slot_idx >= len(self.shm_buffer_pool) + or self.shm_buffer_pool[slot_idx] is None + ): + return None, None, True # Continue, skip this invalid slot + + # --- Zero-Copy Reference Extraction --- + ( + raw_shm_frame, + current_event, + frame_num, + abs_frame_num, + true_read_latency_secs, + ) = self.shm_buffer_pool[slot_idx] + # self.shm_buffer_pool[slot_idx] = None # Immediately clear the slot + + if frame_num == 0: + main_app_logger.info( + f"[VERIFY - CONSUMER] Main loop is officially processing Frame {frame_num}!", + ) + + # Convert numpy array from shared memory to a torch tensor + # cpu_tensor = torch.from_numpy(raw_shm_frame) if isinstance(raw_shm_frame, np.ndarray) else raw_shm_frame + + # # Move to the correct device (GPU or CPU) + # if "cuda" in str(self.device_input): + # safe_frame = cpu_tensor.to(self.device_input, non_blocking=True) + # else: + # safe_frame = cpu_tensor + + # if "cuda" in str(self.device_input): + # safe_frame = self.gpu_input[slot_idx] + # # safe_frame = cpu_tensor.to(self.device_input, non_blocking=True) + # safe_frame.copy_(raw_shm_frame) + # # self.gpu_input[slot_idx].zero_() + # else: + safe_frame = raw_shm_frame + + # Record the CUDA event to signal that the consumer is done with this slot + if current_event and isinstance(current_event, torch.cuda.Event): + current_event.record(torch.cuda.current_stream()) + + frame_details = { + "frame_num": frame_num + 1, + "abs_frame_num": abs_frame_num + 1, + "event": current_event, + "reader_time": true_read_latency_secs, + } + + # Explicitly delete intermediate tensors + del raw_shm_frame + + return safe_frame, frame_details, True + + def _setup_processor(self, read_frame_only): + """ + Selects and initializes the appropriate object detector based on the configuration. + + This helper encapsulates the logic for creating the AI model (`processor`), + handling potential initialization errors gracefully. + + Args: + read_frame_only (bool): If True, no processor is initialized as frames are only being read. + + Returns: + An initialized detector instance (e.g., SmartFilteringObjectDetector) or None. + """ + # If we are only reading frames, no AI model is needed. + # if read_frame_only: + # return None + + # Determine the correct detector class based on the smart filtering configuration. + DetectorClass = ( + SmartFilteringObjectDetector + if self.config.sf_enabled + else GeneralObjectDetector + ) + detector_name = DetectorClass.__name__ + main_app_logger.info(f"[{self.name}] Initializing processor: {detector_name}") + + try: + # Common configuration for all detectors. + debug_frame_limit = ( + self.config.DEBUG_FRAME_LIMIT if self.config.DEBUG_FLAG else -1 + ) + + processor = DetectorClass( + config=self.config, + device=self.device_input, + timer_enabled=True, + resize_hw=(self.resize_h, self.resize_w), + frame_hw=(self.frame_height, self.frame_width), + target_fps=self.target_fps, + result_dir=self.result_dir, + run_name=self._testMethodName, + debug_frame_limit=debug_frame_limit, + ) + return processor + except Exception as e: + # If the model fails to load, log the error and halt the pipeline. + main_app_logger.critical( + f"[{self.name}] CRITICAL: Failed to initialize AI processor '{detector_name}'. Error: {e}", + exc_info=True, + ) + # Propagate the error to stop the handler from starting. + raise + + def frame2video( + self, + device_frame, + frameNum, + metadata_or_bbs, + class_list, + stat_start_time, + gt_boxes=None, + ): + """ + Frame is formated and added to video + metadata_or_bbs: Expected to be in resize dimensions (640x640) + """ + + # Factor for converting 640 bb dimensions to display dimensions + scale_display_x = self.disp_w / self.resize_w # 640 + scale_display_y = self.disp_h / self.resize_h # 640 + + if self.device_input == "cuda": # and torch.is_tensor(device_frame): + with torch.inference_mode(): + # 2. Fast Inline VRAM Downscaling into our static memory slot + # Reshape to (Batch, Channel, Height, Width) seamlessly without duplicating data + gpu_tensor = device_frame[None].permute(0, 3, 1, 2) + + resized_tensor = torch.nn.functional.interpolate( + gpu_tensor, + size=(self.disp_h, self.disp_w), + mode="nearest", + ) + + # Using copy_() avoids creating any runtime allocations or memory-stride drift. + self.static_gpu_byte_bchw.copy_(resized_tensor) + + # Safely reshape the pre-allocated, locked GPU memory layout back to standard HWC array topology. + # Since the underlying array layout is strictly contiguous, this permute is guaranteed + # to be zero-copy on the GPU and free from memory race stalls. + bgr_contiguous = self.static_gpu_byte_bchw.squeeze(0).permute(1, 2, 0) + + # 1. Grab the current free pinned slot tracking variables from your reader + d2h_idx = self.reader.d2h_selector + pinned_tensor_buf = self.reader.d2h_buffers[d2h_idx] + + # # Synchronize only the side download stream layout channel + # self.reader.download_stream.synchronize() + # Initialize a static download sync event on setup_context if not present + # if not hasattr(self, "_d2h_fence"): + # self._d2h_fence = torch.cuda.Event() + + with torch.cuda.stream(self.reader.download_stream): + pinned_tensor_buf.copy_( + bgr_contiguous, + non_blocking=True, + ) + # self._d2h_fence.record() + + # self._d2h_fence.synchronize() + + cpu_360p_frame = self.reader.d2h_numpys[d2h_idx] + + # 5. Non-Blocking Push straight to your background AsyncVideoWriter thread pool + # We pass a direct .copy() slice so the hot loop can instantly reuse the pinned ring buffer + # display_frame = np.array(cpu_360p_frame, copy=True, order="C") + display_frame = np.asarray(cpu_360p_frame, order="C") + if display_frame.shape[-1] == 3: + display_frame = cv2.cvtColor(display_frame, cv2.COLOR_RGB2BGR) + + # --- Draw Detection Overlays --- + if gt_boxes is not None: + # Factor for converting 8K (original) bb dimensions to display dimensions + scale_display_ox = self.disp_w / self.frame_width + scale_display_oy = self.disp_h / self.frame_height + + display_frame = self.get_overlay( + display_frame, + gt_boxes, + None, + scale_display_ox, + scale_display_oy, + color=(0, 255, 0), + ) + + display_frame = self.get_overlay( + display_frame, + metadata_or_bbs, + class_list, + scale_display_x, + scale_display_y, + ) + + self.async_writer.write_frame(display_frame) + self.update_frame(stat_start_time) + # self.canvas_selector = 1 - self.canvas_selector + self.reader.d2h_selector = 1 - self.reader.d2h_selector + + if ( + self.config.DEBUG_FLAG + and self.config.TEST_MODE + and frameNum <= self.config.DEBUG_FRAME_LIMIT + ): + stage_debug_dir = ( + self.result_dir / "debug_stages" / self._testMethodName / "display" + ) + stage_debug_dir.mkdir(parents=True, exist_ok=True) + cv2.imwrite( + # str(stage_debug_dir / f"frame_{f_num:04d}_stage6_threshold.jpg"), + str(stage_debug_dir / f"frame_{frameNum:04d}_final_frame.jpg"), + display_frame, + ) + + else: # CPU + # Reusable baseline track for CPU execution mappings + display_frame = cv2.resize( + device_frame, + (self.disp_w, self.disp_h), + interpolation=cv2.INTER_NEAREST, + ) + + # --- Draw Detection Overlays --- + if gt_boxes is not None: + # Factor for converting 8K (original) bb dimensions to display dimensions + scale_display_ox = self.disp_w / self.frame_width + scale_display_oy = self.disp_h / self.frame_height + + display_frame = self.get_overlay( + display_frame, + gt_boxes, + None, + scale_display_ox, + scale_display_oy, + color=(0, 255, 0), + ) + + display_frame = self.get_overlay( + display_frame, + metadata_or_bbs, + class_list, + scale_display_x, + scale_display_y, + ) + self.async_writer.write_frame(display_frame) + self.update_frame(stat_start_time) + + # if "display_frame" in locals(): + # del display_frame + # if "metadata_or_bbs" in locals(): + # del metadata_or_bbs + + def frame2output( + self, device_frame, frame_num, metadata_or_bbs, class_list, stat_start_time + ): + """ + Renders drone detection bounding boxes onto the canvas + before dispatching to the live UI shared memory stream. + """ + if not self.active: + return + + # Factor for converting 640 bb dimensions to display dimensions + scale_display_x = self.disp_w / self.resize_w # 640 + scale_display_y = self.disp_h / self.resize_h # 640 + + try: + if self.device_input == "cuda": # and torch.is_tensor(device_frame): + with torch.inference_mode(): + # main_app_logger.info(f"device_frame.shape: {device_frame.shape}") + # main_app_logger.info(f"\tdevice_frame[None, :].shape: {device_frame[None, :].shape}") + # 2. Fast Inline VRAM Downscaling into our static memory slot + # Reshape to (Batch, Channel, Height, Width) seamlessly without duplicating data + gpu_tensor = device_frame[None, :].permute(0, 3, 1, 2).float() + + resized_tensor = torch.nn.functional.interpolate( + gpu_tensor, + size=(self.disp_h, self.disp_w), + mode="nearest", + ) + + # CONVERTS TO CPU EARLIER (WORKS but lowers fps) + # hwc_byte_tensor = resized_tensor.squeeze(0).permute(1, 2, 0).byte() + # cpu_tensor = hwc_byte_tensor.cpu() + # bgr_contiguous = cpu_tensor.contiguous() + + # Using copy_() avoids creating any runtime allocations or memory-stride drift. + self.static_gpu_byte_bchw.copy_(resized_tensor.byte()) + + # Safely reshape the pre-allocated, locked GPU memory layout back to standard HWC array topology. + # Since the underlying array layout is strictly contiguous, this permute is guaranteed + # to be zero-copy on the GPU and free from memory race stalls. + bgr_contiguous = self.static_gpu_byte_bchw.squeeze(0).permute(1, 2, 0) + + # 1. Grab the current free pinned slot tracking variables from your reader + d2h_idx = self.reader.d2h_selector + pinned_tensor_buf = self.reader.d2h_buffers[d2h_idx] + + # c_idx = self.canvas_selector + # current_canvas = self.static_host_canvases[c_idx] + + # host_tensor_view = torch.as_tensor(current_canvas, device="cpu") + + # 3. Non-blocking asynchronous PCIe DMA Download directly into our page-locked canvas + # with torch.cuda.stream(self.reader.download_stream): + # if ( + # hasattr(self.reader, "download_stream") + # and self.reader.download_stream is not None + # ): + # torch.cuda.set_stream(self.reader.download_stream) + # pinned_tensor = torch.from_numpy(current_canvas).cuda() + pinned_tensor_buf.copy_(bgr_contiguous, non_blocking=True) + + # Synchronize only the side download stream layout channel + # self.reader.download_stream.synchronize() + + cpu_360p_frame = self.reader.d2h_numpys[d2h_idx] + + # 5. Non-Blocking Push straight to your background AsyncVideoWriter thread pool + # We pass a direct .copy() slice so the hot loop can instantly reuse the pinned ring buffer + display_frame = np.array(cpu_360p_frame, copy=True, order="C") + if display_frame is not None and display_frame.shape[-1] == 3: + display_frame = cv2.cvtColor(display_frame, cv2.COLOR_RGB2BGR) - # # 4. PHASE 2: GRACEFUL FFmpeg DEFLATION GATE (Bypasses Moov Issues) - # if hasattr(self, "ffmpeg_proc") and self.ffmpeg_proc is not None: - # try: - # print( - # "[STOP] Closing video pipeline write handles to flush metadata...", - # flush=True, - # ) - # if self.ffmpeg_proc.stdin: - # self.ffmpeg_proc.stdin.close() # Safely alerts FFmpeg to finalize files + # --- Draw Detection Overlays --- + display_frame = self.get_overlay( + display_frame, + metadata_or_bbs, + class_list, + scale_display_x, + scale_display_y, + ) - # if self.ffmpeg_proc.stderr: - # self.ffmpeg_proc.stderr.close() # Instantly forces readline() to return None and exits thread safely + self.async_writer.write_frame(display_frame, frame_num) + self.update_frame(stat_start_time) + # self.canvas_selector = 1 - self.canvas_selector + self.reader.d2h_selector = 1 - self.reader.d2h_selector - # # Grant a soft 5-second window for storage layer disk synchronization - # self.ffmpeg_proc.wait(timeout=5.0) - # print( - # " [STOP] FFmpeg closed cleanly with valid indexing atoms.", - # flush=True, - # ) - # except subprocess.TimeoutExpired: - # print( - # " [STOP-WARN] Video flush timed out. Forcing hard termination.", - # flush=True, - # ) - # try: - # self.ffmpeg_proc.kill() - # except Exception: - # pass - # except Exception as io_err: - # print( - # f" [STOP-WARN] Error during streaming flush: {io_err}", - # flush=True, - # ) - # finally: - # self.ffmpeg_proc = None - # self.video_writer = None - - # # 5. PHASE 3: SHUTDOWN MULTIPROCESSING DAEMONS - # for proc_attr in ["render_proc", "ai_proc"]: - # proc = getattr(self, proc_attr, None) - # if proc is not None: - # try: - # if proc.is_alive(): - # proc.terminate() - # proc.join(timeout=0.5) - # proc.close() - # except Exception: - # pass - # setattr(self, proc_attr, None) - - # # 6. PHASE 4: FINAL SEGMENT EVALUATION CONVERGENCE - # try: - # final_clip_key = f"{self.name}_{self.clip_id:03d}.mp4" - # final_clip_path = f"{self.config.SHARED_OUTPUT}/{final_clip_key}" - - # # Check if the final truncated or partial segment actually exists before dispatching - # if ( - # os.path.exists(final_clip_path) - # and os.path.getsize(final_clip_path) > 0 - # ): - # print( - # f" [STOP-FLUSH] Registering finalized terminal clip: {final_clip_key}", - # flush=True, - # ) - # global clip_completion_tracker - # if final_clip_key not in clip_completion_tracker: - # clip_completion_tracker[final_clip_key] = { - # "video": False, - # "meta": False, - # "start_time": time.time(), - # } - - # clip_completion_tracker[final_clip_key]["video"] = True - # clip_completion_tracker[final_clip_key]["meta"] = True - # self._evaluate_barrier_and_dispatch( - # final_clip_key, final_clip_path, self.resize_w, self.resize_h - # ) - # except Exception as final_flush_err: - # print( - # f" [STOP-WARN] Final segment tracking layer bypass failed: {final_flush_err}", - # flush=True, - # ) - - # # 8. PHASE 6: UNMAP HARDWARE MEMORY OBJECTS - # if hasattr(self, "shared_details"): - # try: - # # Force-close the internal lock primitive hidden inside the Manager dict proxy - # if hasattr(self.shared_details, "_ctx") and hasattr( - # self.shared_details._ctx, "RLock" - # ): - # lock = self.shared_details._ctx.RLock() - # if hasattr(lock, "_semlock"): - # lock._semlock._close() - # self.shared_details.clear() - # except Exception: - # pass - # del self.shared_details + else: + # Reusable baseline track for CPU execution mappings + display_frame = cv2.resize( + device_frame, + (self.disp_w, self.disp_h), + interpolation=cv2.INTER_NEAREST, + ) - # if ( - # hasattr(self, "mp_frame_ready_event") - # and self.mp_frame_ready_event is not None - # ): - # try: - # # mp.Event allocates an internal ctx.Cond / ctx.Lock boundary pair - # if hasattr(self.mp_frame_ready_event, "_cond"): - # cond = self.mp_frame_ready_event._cond - # if hasattr(cond, "_lock") and hasattr(cond._lock, "_semlock"): - # cond._lock._semlock._close() - # except Exception: - # pass - # self.mp_frame_ready_event = None - - # for q_attr in ["signal_queue", "render_queue"]: - # if hasattr(self, q_attr): - # q = getattr(self, q_attr) - # if q is not None: - # try: - # # 1. Flush and break down standard background worker threads safely - # q.close() - # q.join_thread() - - # # 2. CRITICAL: Force-close the hidden POSIX lock primitives to clear resource_tracker limits - # if hasattr(q, "_rlock") and q._rlock is not None: - # if hasattr(q._rlock, "_semlock"): - # q._rlock._semlock._close() - - # if hasattr(q, "_writer") and q._writer is not None: - # if hasattr(q._writer, "_semlock"): - # q._writer._semlock._close() - # except Exception: - # pass - # setattr(self, q_attr, None) - - # for primitive_attr in [ - # "ready_buffer_idx", - # "reader_active_idx", - # "shm_frame_lengths", - # ]: - # if hasattr(self, primitive_attr): - # obj = getattr(self, primitive_attr) - # if obj is not None and hasattr(obj, "get_lock"): - # try: - # # Grab the hidden lower-level POSIX context lock map - # lock = obj.get_lock() - # # If the lock handle is bound to an active system descriptor, release it - # if hasattr(lock, "_semlock"): - # lock._semlock._close() # Forces immediate unlinking at the OS level - # except Exception: - # pass - # setattr(self, primitive_attr, None) - - # if hasattr(self, "manager") and self.manager is not None: - # try: - # self.manager.shutdown() - # except Exception: - # pass - # self.manager = None + # --- Draw Detection Overlays --- + display_frame = self.get_overlay( + display_frame, + metadata_or_bbs, + class_list, + scale_display_x, + scale_display_y, + ) + self.async_writer.write_frame(display_frame, frame_num) + self.update_frame(stat_start_time) - # if hasattr(self, "pinned_matrices") and self.pinned_matrices: - # for active_mat in self.pinned_matrices: - # try: - # cv2.cuda.unregisterPageLocked(active_mat) - # except Exception: - # pass - # self.pinned_matrices.clear() - # self.pinned_tensors.clear() - - # # FIXED: Explicitly clear the high-speed AI tensor staging array allocations - # if hasattr(self, "ai_pinned_tensors") and self.ai_pinned_tensors: - # self.ai_pinned_tensors.clear() - - # if hasattr(self, "ai_shms") and self.ai_shms: - # for shm in self.ai_shms: - # try: - # shm.close() - # shm.unlink() - # except Exception: - # pass - # self.ai_shms.clear() - # if hasattr(self, "ai_shm_names") and self.ai_shm_names: - # self.ai_shm_names.clear() - - # if hasattr(self, "shms") and self.shms: - # for shm in self.shms: - # shm.close() - # try: - # shm.unlink() - # except FileNotFoundError: - # pass - # self.shms.clear() - # if ( - # hasattr(self, "shared_details") - # and "shm_names" in self.shared_details - # ): - # try: - # self.shared_details.pop("shm_names", None) - # except Exception: - # pass - - # if hasattr(self, "cap") and self.cap is not None: - # self.cap.release() - # self.cap = None - - # for pool_name in [ - # "executor", - # # "io_executor", - # "clip_executor", - # # "ffmpeg_executor", - # ]: - # if hasattr(self, pool_name) and getattr(self, pool_name) is not None: - # try: - # getattr(self, pool_name).shutdown(wait=True) - # except Exception: - # pass - # setattr(self, pool_name, None) + except Exception: + traceback.print_exc() + # return - # # self.reader = None - # self._is_stopped = True - # print(f" [STOP] {self.name} pipeline resources fully released.", flush=True) + if "display_frame" in locals(): + del display_frame + if "metadata_or_bbs" in locals(): + del metadata_or_bbs - def stop(self): - """Overrides handlers.py to flush thread objects safely without deadlocking.""" - with self._stop_lock: - if self._is_stopped: - return + # CLEANUP -------------------------------------------- - print( - f"\n[PIPELINE-TEARDOWN] Initiating graceful thread drainage for {self.name}", - flush=True, - ) - self.active = False - time.sleep(0.05) + def clean_up_tensors_and_arrays_v1(self): + main_app_logger.info("[CLEANUP] Safely stripping active runtime arrays ...") - # 1. Rapidly clear the async video writer thread queue first - if hasattr(self, "async_writer") and self.async_writer is not None: + # 1. Force disable tracking states to stop graph allocation recursion + # torch.set_grad_enabled(False) + + # if hasattr(torch, "jit") and hasattr(torch.jit, "_builtins"): + # if isinstance(torch.jit._builtins, dict): + # torch.jit._sbuiltins.clear() + # else: + # torch.jit._builtins = {} + + # 2. Collect references safely using strict type checking + # This completely avoids pulling unmanaged proxy objects from the heap + all_live_objects = gc.get_objects() + + target_tensors = [] + target_arrays = [] + + for obj in all_live_objects: + try: + obj_type = type(obj) + if isinstance(obj, types.FrameType): + frame_info = inspect.getframeinfo(obj) + if ( + "openvino" in frame_info.filename + or "openvino.py" in frame_info.filename + ): + # Clear the frame's local variable dictionary to break circular references + obj.f_locals.clear() + + # Check for concrete types to prevent triggering proxy __getattr__ hooks + if obj_type is torch.Tensor: + target_tensors.append(obj) + elif obj_type is np.ndarray: + # Explicitly guard size checks to keep it completely stable + if obj.base is None and obj.ndim > 0: + target_arrays.append(obj) + except Exception: + traceback.print_exc() + + # 3. Truncate discovered references in-place without triggering deletions + reclaimed_tensors = 0 + for tensor in target_tensors: + try: + # Truncate raw storage footprint safely + tensor.data = torch.empty(0, device=self.device_input) + reclaimed_tensors += 1 + except Exception: + traceback.print_exc() + + reclaimed_arrays = 0 + for arr in target_arrays: + try: + # Shrink writeable numpy arrays down to 0 bytes safely + if arr.flags.writeable: + arr.resize((0,), refcheck=False) + reclaimed_arrays += 1 + except (ValueError, SystemError): + traceback.print_exc() + except Exception: + traceback.print_exc() + + main_app_logger.info( + f"[CLEANUP] Reclaimed {reclaimed_tensors} tensors and {reclaimed_arrays} arrays safely." + ) + + # Clean local registers immediately + all_live_objects = None + target_tensors = None + target_arrays = None + + if hasattr(sys, "exc_info"): + sys.exc_clear() if hasattr(sys, "exc_clear") else None + gc.collect() + + def clean_up_tensors_and_arrays(self): + """ + Safely releases instance-local memory without corrupting global PyTorch tensors. + """ + main_app_logger.info( + f"[CLEANUP {getattr(self, 'name', '')}] Releasing local arrays and flushing caches..." + ) + + # Explicitly release any instance-level tensor references + instance_tensor_attrs = [ + "static_gpu_360p", + "static_gpu_byte_bchw", + "gpu_float_staging", + "scales_tensor", + "_cached_grid_x", + "_cached_grid_y", + ] + for attr in instance_tensor_attrs: + if hasattr(self, attr): + setattr(self, attr, None) + + if hasattr(sys, "exc_info"): + try: + if hasattr(sys, "exc_clear"): + sys.exc_clear() + except Exception: + pass + + gc.collect() + if "cuda" in str(self.device_input) and torch.cuda.is_available(): + torch.cuda.empty_cache() + if hasattr(torch.cuda, "ipc_collect"): + torch.cuda.ipc_collect() + + def drain_queues(self, all_queues, wait_time=15.0): + # Wait (15 seconds) for your background writers to pull remaining matrices out of the pipe + drain_start = time.perf_counter() + while time.perf_counter() - drain_start < wait_time: + still_has_frames = False + for q_name in all_queues: + q_val = getattr(self, q_name, None) + if q_val is not None: + try: + # Accumulate total remaining frame backlogs across your pipelines + # if hasattr(q_val, "qsize"): + # backlog += q_val.qsize() + if not q_val.empty(): + still_has_frames = True + break + except Exception: + pass + + if not still_has_frames: + main_app_logger.info( + "[TEARDOWN] All background queues are empty. Proceeding to safe close.", + ) + break + + # Yield micro-slices to grant immediate execution priority to background threads + time.sleep(0.01) + + def remove_scalar_attributes(self, remove_attrs): + for attr in remove_attrs: + val = getattr(self, attr, None) + if val is not None: + # try: + # val.clear() + # except Exception: + # setattr(self, attr, None) + + # # try: delattr(self, attr) + # # except AttributeError: pass try: - self.async_writer.release() + # THE NATIVE SHIELD: Only call clear() if it has the attribute! + if hasattr(val, "clear") and callable(getattr(val, "clear")): + val.clear() + else: + # If it's a primitive type like an int, reset it safely + if isinstance(val, int): + setattr(self, attr, 0) + elif isinstance(val, float): + setattr(self, attr, 0.0) + elif isinstance(val, dict): + setattr(self, attr, {}) + elif torch.is_tensor(val): + val.data = torch.empty(0, device=self.device_input) + else: + setattr(self, attr, None) + if hasattr(self, attr): + delattr(self, attr) except Exception: + # pass traceback.print_exc() - # Instantly pull out of active dashboards to stop inbound traffic - if self.name in self.active_streams: - self.active_streams.pop(self.name, None) + try: + if hasattr(self, attr): + delattr(self, attr) + except Exception: + # pass + traceback.print_exc() - if not self.config.TEST_MODE: - if hasattr(self, "send_metadata_queue"): - local_send_metadata_queue = self.send_metadata_queue - else: - global send_metadata_queue - local_send_metadata_queue = send_metadata_queue - if local_send_metadata_queue is not None: - try: - # 1. Wait for any in-flight ThreadPoolExecutor inference workers - # to finish submitting final frame maps to all_metadata - if hasattr(self, "executor") and self.executor is not None: - while self.get_executor_backlog() > 0: - time.sleep(0.01) - - backlog_count = local_send_metadata_queue.qsize() - print( - f"[TEARDOWN] send_metadata_queue has {backlog_count} pending uploads. Delivering poison pill sentinel...", - flush=True, - ) + def drain_and_close_queues(self, all_queues): + for key in all_queues: + val = getattr(self, key, None) + if val is None: + continue + try: + while not val.empty(): + val.get_nowait() + except Exception: + pass + try: + if hasattr(val, "close"): + if hasattr(val, "cancel_join_thread"): + val.cancel_join_thread() + val.close() + except Exception: + pass + # setattr(self, key, None) - # 2. Push the explicit sentinel None token to tell the consumer loop to close - local_send_metadata_queue.put(None) - - # 3. CRITICAL BRIDGING BLOCK: If the thread is active and alive, - # block the main process context to let it completely empty the queue - if ( - hasattr(self, "metadata_thread") - and self.metadata_thread is not None - ): - if self.metadata_thread.is_alive(): - # Force the main thread to join until the consumer hits the sentinel and exits - self.metadata_thread.join(timeout=2.0) - - if self.metadata_thread.is_alive(): - print( - "[TEARDOWN-WARN] Metadata database thread hung on socket lock. Bypassing safely to prevent deadlock.", - flush=True, - ) - else: - print( - "[TEARDOWN] Metadata database thread exited cleanly.", - flush=True, - ) + def stop_events(self, events=[], keys_to_skip_deletion=[]): + for event_attr in events: + # if hasattr(self, event_attr): + tgt_event = getattr(self, event_attr, None) + if tgt_event is None: + continue + try: + if hasattr(tgt_event, "_handle"): + tgt_event._handle.close() + if ( + isinstance(tgt_event, torch.cuda.Event) + and event_attr not in keys_to_skip_deletion + ): + # Force internal driver handle release + del tgt_event + except Exception: + # pass + traceback.print_exc() + setattr(self, event_attr, None) - except Exception as teardown_err: - print( - f"[TEARDOWN WARN] Metadata drainage exception: {teardown_err}", - flush=True, - ) + if hasattr(self, event_attr) and event_attr not in keys_to_skip_deletion: + delattr(self, event_attr) - # ===================================================================== - # DECUPLED MULTI-PROCESS TEARDOWN LIFECYCLE SEQUENCE - # ===================================================================== - # 1. FIRST: Drain and synchronize your thread pool tasks so EVERY frame drops into the IPC queue - if hasattr(self, "display_pool") and self.display_pool is not None: - try: - if hasattr(self.display_pool, "_work_queue"): - backlog = self.display_pool._work_queue.qsize() - if backlog > 0: - print( - f"\n\033[94m[STAGE 1/4] Synchronizing display pool threads. Draining {backlog} background tasks...\033[0m", - flush=True, - ) - backlog_s = time.perf_counter() - while ( - self.display_pool._work_queue.qsize() > 0 - or len(self.reorder_staging_buffer) > 0 - ): - # Yield a brief slice to let worker threads complete downscaling - time.sleep(0.01) - backlog_e = time.perf_counter() - backlog_s - print(f"\t\033[94mTook {backlog_e} secs\033[0m", flush=True) - print( - "\033[92m[SUCCESS] All background image transformations completed cleanly.\033[0m", - flush=True, - ) - self.display_pool.shutdown(wait=True) - except Exception as e: - print( - f"[TEARDOWN ERROR] Thread pool synchronization failed: {e}", - flush=True, - ) - setattr(self, "display_pool", None) + def stop_thread(self, val): + # current_thread_id = threading.get_ident() + # val = getattr(self, targeted_key, None) + # val = targeted_key_val + try: + if hasattr(val, "is_alive") and val.is_alive(): + if val.ident != threading.get_ident(): + if hasattr(val, "terminate"): + val.terminate() + val.join(timeout=0.5) + except Exception: + if val is None: + pass + traceback.print_exc() + + def stop_threads(self, all_targeted_keys): + current_thread_id = threading.get_ident() + for attr in all_targeted_keys: + val = getattr(self, attr, None) + if val is None: + continue + try: + if hasattr(val, "is_alive") and val.is_alive(): + if getattr(val, "ident", None) != current_thread_id: + # if hasattr(val, "terminate"): val.terminate() + # val.join(timeout=0.5) + if isinstance(val, (threading.Thread, DummyProcess)): + # Threads can only be joined cooperatively via flags (self.active = False) + val.join(timeout=0.2) # Use a tight, rapid timeout gate + else: + val.join(timeout=3.0) + # OS multi-processing blocks can safely accept termination hooks + if val.is_alive() and hasattr(val, "terminate"): + val.terminate() + except Exception: + # pass + traceback.print_exc() + + # Clean up references immediately to drop tracking counters + if getattr(val, "ident", None) != current_thread_id: + setattr(self, attr, None) + + def set_stop_writer_event(self, remove=False): + if hasattr(self, "stop_writer") and self.stop_writer is not None: + try: + self.stop_writer.set() + except Exception: + pass + setattr(self, "stop_writer", None) - # 1. FIRST: Instantly dispatch the shutdown token so the worker process knows to flush entries - if hasattr(self, "render_queue") and self.render_queue is not None: + if remove: try: - print( - f"\n\033[94m[STAGE 1/3] Dispatching shutdown sentinel (None) to rendering process worker (Backlog: {self.render_queue.qsize()} frames)...\033[0m", - flush=True, - ) - # Delivering the poison pill immediately tells FFmpeg to drain remaining blocks sequentially - self.render_queue.put(None, timeout=2.0) - except Exception as queue_err: - print( - f"\033[91m[TEARDOWN ERROR] Failed staging shutdown token: {queue_err}\033[0m", - flush=True, - ) + delattr(self, "stop_writer") + except AttributeError: + pass - # 2. SECOND: Allow the background multiprocessing queue to empty outstanding items naturally - if hasattr(self, "render_queue") and self.render_queue is not None: + def stop_executors(self, all_targeted_keys, remove=True): + for key in list(all_targeted_keys): + val = getattr(self, key, None) + if val is None: + continue + try: + val.shutdown(wait=False, cancel_futures=True) + # Natively strip out the inner worker thread arrays to drop OS handles + if hasattr(val, "_threads"): + val._threads.clear() + except Exception: try: - print( - "\n\033[94m[STAGE 2/3] Finalizing file output. Draining remaining frames from IPC memory lane...\033[0m", - flush=True, - ) - t_drain = time.perf_counter() - # Wait up to 15 seconds for the worker process to pull every remaining matrix out of the pipe - while ( - not self.render_queue.empty() - and (time.perf_counter() - t_drain) < 15.0 - ): - time.sleep( - 0.01 - ) # Micro-yield grants immediate execution priority to the background process core + val.shutdown(wait=False) + except Exception: + pass + setattr(self, key, None) + if remove: + delattr(self, key) + + def unregister_pinned_cuda_data_v1(self): + # Unregister the hidden page-locks inside the ai_pinned_tensors pool + if hasattr(self, "ai_pinned_tensors") and self.ai_pinned_tensors: + for tensor in list(self.ai_pinned_tensors): + try: + if torch.is_tensor(tensor): + # Extract the shared NumPy view to break the C++ driver lock + cv2.cuda.unregisterPageLocked(tensor.numpy()) + except cv2.error: + pass except Exception: pass - # 3. THIRD: Block the main thread safely and allow the detached process to finish disk I/O operations - if hasattr(self, "render_proc") and self.render_proc is not None: + # Unregister the standard pinned_tensors pool page-locks + if hasattr(self, "pinned_tensors") and self.pinned_tensors: + for tensor in list(self.pinned_tensors): try: - join_duration = 0.0 - if self.render_proc.is_alive(): - print( - "\033[94m[STAGE 2/2] Main thread blocking. Synchronizing hard drive file headers...\033[0m", - flush=True, - ) - t_join_start = time.perf_counter() - self.render_proc.join( - timeout=15.0 - ) # Safe timeout lets video containers finalize cleanly - join_duration = time.perf_counter() - t_join_start - else: - print( - "\033[94m[STAGE 2/2] Main thread clear...\033[0m", - flush=True, - ) + if torch.is_tensor(tensor): + cv2.cuda.unregisterPageLocked(tensor.numpy()) + except cv2.error: + pass + except Exception: + pass - if self.render_proc.is_alive(): - print( - "\n\033[91m[CRITICAL STALL] Render worker process hung on disk write! Forcing termination...\033[0m", - flush=True, - ) - self.render_proc.terminate() - self.render_proc.join() - else: - print( - f"\033[92m[FINAL] Video compilation finished cleanly! Hard drive commit took {join_duration:.2f} seconds.\033[0m", - flush=True, - ) + # Unregister any standalone page-locked matrices + if hasattr(self, "pinned_matrices") and self.pinned_matrices: + for active_mat in list(self.pinned_matrices): + if getattr(self, "device_input", "cpu") == "cuda": + try: + # Wrap explicitly to catch the native OpenCV -217 API Exception! + cv2.cuda.unregisterPageLocked(active_mat) + except cv2.error: + # Catch the pointer registry mismatch safely without breaking the stop() execution stream + pass + except Exception: + pass + + # FORCE PYTORCH C++ ALLOCATOR TO DISSOLVE THE HARDWARE BOUNDARIES + if torch.cuda.is_available(): + torch.cuda.synchronize() + torch.cuda.empty_cache() - # self.render_proc.close() - except Exception as proc_err: - print( - f"\033[91m[TEARDOWN ERROR] Failed closing background process container: {proc_err}\033[0m", - flush=True, - ) - setattr(self, "render_proc", None) + def unregister_pinned_cuda_data(self): + """ + Safely unregisters OpenCV page-locked host memory from the CUDA driver + before the underlying arrays are released. + """ + if getattr(self, "device_input", "cpu") != "cuda": + return - render_proc_handle = getattr(self, "render_proc", None) - if render_proc_handle is not None: - try: - # 1. Check if it is a Process vs Thread - if hasattr(render_proc_handle, "terminate"): - # Production/Multiprocessing fallback path - if render_proc_handle.is_alive(): - render_proc_handle.terminate() - render_proc_handle.join() - render_proc_handle.close() - else: - # Thread-Safe Path: Standard background threading handles - # do not require manual termination or descriptor closure hooks. - if render_proc_handle.is_alive(): - render_proc_handle.join(timeout=0.2) - - print( - "\033[92m[SUCCESS] Background rendering thread container released cleanly.\033[0m", - flush=True, - ) - except Exception as e: - print( - f"[TEARDOWN WARN] Safely ignoring lingering thread reference handles: {e}", - flush=True, - ) - finally: - setattr(self, "render_proc", None) + if hasattr(self, "pinned_matrices") and self.pinned_matrices: + for active_mat in list(self.pinned_matrices): + if active_mat is not None: + try: + cv2.cuda.unregisterPageLocked(active_mat) + except Exception: + pass + + if hasattr(self, "pinned_tensors") and self.pinned_tensors: + for tensor in list(self.pinned_tensors): + if tensor is not None and torch.is_tensor(tensor): + try: + cv2.cuda.unregisterPageLocked(tensor.numpy()) + except Exception: + pass + + # Force CUDA driver to finalize unpinning + if torch.cuda.is_available(): + torch.cuda.synchronize() + torch.cuda.empty_cache() + if hasattr(torch.cuda, "ipc_collect"): + torch.cuda.ipc_collect() + + def clear_buffer_pools(self, buffer_pools): + for buffer_pool in buffer_pools: + val = getattr(self, buffer_pool, None) + if val is None: + continue - # 4. FOURTH: Clean up remaining pipeline executors and queues safely - if hasattr(self, "render_queue") and self.render_queue is not None: + setattr(self, buffer_pool, None) + for i in range(len(val)): + val[i] = None + if hasattr(val, "clear"): try: - self.render_queue.close() - self.render_queue.cancel_join_thread() + val.clear() except Exception: pass - setattr(self, "render_queue", None) - - # if hasattr(self, "async_writer") and self.async_writer is not None: - # self.async_writer.release() - if hasattr(self, "executor") and self.executor is not None: + def clear_pinned_data(self): + tensor_pools = ["ai_pinned_tensors", "pinned_tensors"] + for pool_attr in tensor_pools: + pool = getattr(self, pool_attr, None) + if pool: + for tensor in list(pool): + try: + if torch.is_tensor(tensor): + # Truncate internal storage mapping layer immediately + tensor.data = torch.empty(0, device="cpu") + except Exception: + pass try: - self.executor.shutdown(wait=True) + pool.clear() except Exception: pass - setattr(self, "executor", None) - self.status = "DONE" - self._is_stopped = True - print( - "[STOPPING] Teardown complete. Releasing session cleanly.\n", - flush=True, - ) + # 7. UNPIN HARDWARE MATRICES (From initialize_variables) + if hasattr(self, "pinned_matrices") and self.pinned_matrices: + try: + self.pinned_matrices.clear() + except Exception: + pass + + def clear_shared_memory_list(self, shm_names: list): + """ + Cleans up and unlinks shared memory collections, supporting both + direct attributes ("shms") and nested attributes ("reader.shms"). + """ + for shm_path in shm_names: + curr_obj = self + for attr in shm_path.split("."): + curr_obj = getattr(curr_obj, attr, None) + if curr_obj is None: + break + + val = curr_obj + if not val: + continue + + release_shared_memory(list(val)) + # for shm in list(val): + # if shm is not None: + # try: + # # Release buffer view if open + # if hasattr(shm, "buf") and shm.buf is not None: + # shm.buf.release() + # except Exception: + # pass + + # try: + # shm.close() + # except Exception: + # pass + + # try: + # shm.unlink() + # except (FileNotFoundError, AttributeError, OSError): + # pass + + # # Clear the container list/collection in-place + # if hasattr(val, "clear"): + # try: + # val.clear() + # except Exception: + # pass + + def clean_up_reader(self): + """Halts the background prefetch staging worker completely before draining pipeline queues.""" + if hasattr(self, "reader") and self.reader is not None: + try: + # 1. IMMEDIATE HALT: Force the background loop condition to fail instantly + self.reader.stopped = True + self.prefetch_active = False + self.active = False + + # 2. Join the prefetch thread gracefully so it finishes its current read and dies + if hasattr(self, "prefetch_threads") and self.prefetch_threads: + for th in self.prefetch_threads: + if th.is_alive(): + th.join(timeout=0.2) + self.prefetch_threads.clear() + + # if hasattr(self.reader, "print_breakdown"): + # self.reader.print_breakdown() + + # 3. Safe, deadlock-free queue drain loop (Now guaranteed to exit cleanly) + drain_timeout_start = time.perf_counter() + while not self.prefetch_queue.empty(): + try: + self.prefetch_queue.get_nowait() + self.prefetch_queue.task_done() + except Exception: + break + # Hard escape hatch safety guard to prevent hanging if threads ghost + if time.perf_counter() - drain_timeout_start > 0.5: + break - def model_warmup(self, H=640, W=640): - H, W = int(H), int(W) - # Move the dummy input creation inside a no_grad block - with torch.no_grad(): - print(f"Starting warmup for {self.name}...", flush=True) - dummy_input = torch.zeros((1, 3, H, W)).to(self.device_input) - - # Perform iterations directly on the main thread - for i in range(5): - _ = self.run_model( - dummy_input, - imgsz=(H, W), - batch=1, - device_input=self.device_input, - stream=STREAM_ARG, + # 4. Trigger standard standalone hardware unpinning routines + # if hasattr(self.reader, "release_hardware_pins"): + # self.reader.release_hardware_pins() + + self.reader.stop() + + except Exception as e: + main_app_logger.debug( + f"Reader object isolation step encountered a soft error: {e}" ) - if i == 0 and hasattr(self.model, "predictor") and self.model.predictor: - self.cached_predictor = self.model.predictor + finally: + self.reader = None - # Force GPU to finish before returning - if self.device_input == "cuda": - torch.cuda.synchronize() + def unlink_shared_memory(self, all_shm_keys): + for key in all_shm_keys: + val = getattr(self, key, None) + if val is None: + continue + for shm in list(val): + if shm is not None: + try: + # Drop direct memoryview trackers instantly + if hasattr(shm, "buf") and shm.buf is not None: + try: + shm.buf.release() + except Exception: + pass + + # Invalidate private mmap structures to drop pytest stack frame caches + if hasattr(shm, "_mmap") and shm._mmap is not None: + try: + shm._mmap = None + except Exception: + pass + + # try: + # shm.__class__.__del__ = lambda self: None + # except Exception: + # pass + + # # Unlink text descriptors out of the core tracker process + # shm_descriptor = shm._name if shm._name.startswith("/") else f"/{shm._name}" + # try: + # unregister(shm_descriptor, "shared_memory") + # except Exception: + # pass + + shm.close() + shm.unlink() + except Exception: + pass + try: + val.clear() + except Exception: + pass + + def stop_sync_manager(self): + """Safely shuts down the background Sync Base Manager process daemon.""" + # if hasattr(self, "shared_details") and self.shared_details is not None: + # try: self.shared_details.clear() + # except Exception: pass + + if hasattr(self, "manager") and self.manager is not None: + try: + if hasattr(self.manager, "_allocated"): + for memory_block in list(self.manager._allocated): + try: + if ( + hasattr(memory_block, "buf") + and memory_block.buf is not None + ): + memory_block.buf.release() + memory_block.close() + memory_block.unlink() + except Exception: + pass + try: + self.manager._allocated.clear() + except Exception: + pass + self.manager.shutdown() + + # Added + if ( + hasattr(self.manager, "_process") + and self.manager._process is not None + ): + proc = self.manager._process + if proc.is_alive(): + proc.join(timeout=0.2) + if proc.is_alive(): + proc.terminate() + proc.join() - # Pin a lightweight tensor to prevent downstream empty_cache() calls - # from destroying the compiled model weight layouts in memory - self.__persistent_vram_lock = torch.zeros((1,), device=self.device_input) + except Exception: + pass + setattr(self, "manager", None) + + def purge_attributes(self): + # ─── FORCE LOW-LEVEL OPENVINO C++ HARDWARE PURGE ─── + if hasattr(self, "model") and self.model is not None: + try: + # If your backend utilizes an OpenVINO core orchestrator: + model_wrapper = self.model + + # Check for common OpenVINO runtime handle names inside your core class + for attr_name in ["core", "_core", "ov_core", "runtime"]: + if hasattr(model_wrapper, attr_name): + ov_core = getattr(model_wrapper, attr_name) + if ov_core is not None: + # 1. Force OpenVINO to clear internal cached compiled models and models' graphs + if hasattr(ov_core, "get_property"): + try: + # Tells OpenVINO to drop its physical memory caching metrics pools + ov_core.set_property({}, {}) + except Exception: + pass + + # 2. Trigger explicit Python C++ boundary deconstruction bindings + if hasattr(ov_core, "__del__"): + ov_core.__del__() + + setattr(model_wrapper, attr_name, None) + except Exception: + pass + + # Un-bind dynamic instance methods to break Pytest's reference hold + for dynamic_method in ["run_realtime_inference", "pipeline_fn"]: + if hasattr(self, dynamic_method): + try: + # Wiping out the bound method object instantly frees the frame loops + # setattr(self, dynamic_method, None) + delattr(self, dynamic_method) + except Exception: + pass + + for cls_attr in ["d2h_buffers", "d2h_numpys", "d2h_selector"]: # "pipeline_fn", + if hasattr(self, cls_attr): + try: + setattr(self, cls_attr, None) + except AttributeError: + pass + + # Now it is structurally safe to purge attributes without causing cross-thread collisions + keys_to_purge = [ + "__persistent_vram_lock", + "_DeviceBaseHandler__persistent_vram_lock", # Wipes out the private lock tensor safely + "ai_gpu_staging", + "ai_pinned_tensors", + "ai_shm_names", # Clear names list references + "ai_shms", # Clear handler specific memory arrays + # "all_preds", + # "all_targets", + "bgs_stream", + "config", # Force config destruction + "evaluator", + "executor", + "frame_buffer_pool", + "gpu_buffer_pool", + "gpu_display_frame", + "gpu_encoder_8k_buf", + "gpu_float_staging", + "host_buffer_pool", + "inference_stream", + "model", + "pinned_downloaded_frame_np", + "pinned_downloaded_resizedframe_np", + "pinned_matrices", # Clear handler registration matrix list + "pinned_tensors", # Clear backend tensor mappings + "process_thread", + "raw_input", + "reader", + "scales_tensor", + "shms", # Clear handler specific memory arrays + "static_gpu_360p", # Added to secure structural bounds + "static_gpu_byte_bchw", # Added to secure structural bounds + # "static_host_canvases", + # "io_executor", + ] + for key in keys_to_purge: + if hasattr(self, key): + try: + delattr(self, key) + except AttributeError: + pass - print(f"Warmup complete for {self.name}", flush=True) + gc.collect() + # HELPER FUNCTIONS -------------------------------------------- def get_executor_backlog(self): """Returns the number of tasks currently waiting in the thread pool queue.""" # access the internal queue of the executor @@ -1984,7 +3259,7 @@ def check_disk_usage(self, path, min_gb=0.5): free_gb = free / (2**30) return free_gb > min_gb except Exception as e: - print(f"[EXCEPTION] Disk check error: {e}") + main_app_logger.info(f"[EXCEPTION] Disk check error: {e}") return False # Gets frame W and H details @@ -2005,20 +3280,11 @@ def get_frameWH(self): self.width = new_sizeWH[0] self.height = new_sizeWH[1] - # Configure scaling for 8K-to-Model coordinate mapping - self.resize_h, self.resize_w = [self.config.MODEL_H, self.config.MODEL_W] - self.scale_x = self.frame_width / self.config.MODEL_W - self.scale_y = self.frame_height / self.config.MODEL_H - - def update_frame(self, stat_start_time): - if self.device_input == "cuda": - torch.cuda.synchronize() - - self.stat_frame_count += 1 - self.elapsed_display_time += time.perf_counter() - stat_start_time - # if elapsed > 0.5: - self.stat_fps = round(self.stat_frame_count / self.elapsed_display_time, 1) - + # Configure scaling for 8K-to-Model coordinate mapping + self.resize_h, self.resize_w = [self.config.MODEL_H, self.config.MODEL_W] + self.scale_x = self.frame_width / self.config.MODEL_W + self.scale_y = self.frame_height / self.config.MODEL_H + def is_processing(self): """Returns True if any part of the pipeline is still active.""" if not self.reader.stopped: @@ -2034,110 +3300,24 @@ def is_processing(self): q_size = self.write_queue.qsize() if self.process_thread is not None: - print( + main_app_logger.info( f"[STATUS] Writer: {self.write_count}/{self.frame_count_target} | Q: {q_size} | Inf: {'Alive' if self.process_thread.is_alive() else 'Dead'}", end="\r", - flush=True, ) else: - print( + main_app_logger.info( f"[STATUS] Writer: {self.write_count}/{self.frame_count_target} | Q: {q_size}", end="\r", - flush=True, ) if not self.write_queue.empty(): return True if self.write_count < self.frame_count_target: # q_size = self.write_queue.qsize() - # print(f"[DRAIN] Writer: {self.write_count}/{self.frame_count} | Queue: {q_size}", end="\r", flush=True) + # main_app_logger.info(f"[DRAIN] Writer: {self.write_count}/{self.frame_count} | Queue: {q_size}", end="\r") return True return False - def run_model( - self, - frame, - imgsz=(BASE_PIPELINE_CONFIG.MODEL_H, BASE_PIPELINE_CONFIG.MODEL_W), - batch=1, - device_input="cuda", - stream=False, - ): - # --- DEBUG VERIFICATION --- - # if torch.is_tensor(frame): - # # We want to see [N, 3, 640, 640] where N > 1 - # print(f"[DEBUG] Tensor Input Shape: {frame.shape}") - # elif isinstance(frame, list): - # print(f"[DEBUG] List Input Length: {len(frame)}") - - # print(f"[DEBUG] Stream Mode: {stream} | Requested Batch: {batch}") - # --------------------------- - if isinstance(frame, torch.Tensor): - # Ensure on the right device - frame = frame.to(device_input) - - # Make sure input is multiple of 32 - h, w = frame.shape[-2:] - pad_h = (32 - h % 32) % 32 - pad_w = (32 - w % 32) % 32 - - if pad_h > 0 or pad_w > 0: - # F.pad for 4D tensor (B, C, H, W) uses (left, right, top, bottom) - frame = F.pad(frame, (0, pad_w, 0, pad_h), value=0) - - # with torch.inference_mode(): - # torch.set_num_threads(1) - # results = self.model.predict( - # frame, - # imgsz=imgsz, - # batch=batch, - # device=device_input, - # verbose=False, - # stream=stream, - # conf=self.config.DETECTION_THRESHOLD, - # max_det=self.config.MAX_DETECTIONS, - # rect=(batch == 1), # False, # - # ) - # return results - with torch.inference_mode(): - if device_input == "cpu": - # --- SAFE HIGH-SPEED FRAMEWORK INGESTION GATE --- - # If input is an NCHW PyTorch tensor or transposed array view, - # decode it back into a standard list of un-transposed [H, W, C] uint8 - # image frames before handing it over to the predictor engine. - if isinstance(frame, torch.Tensor): - # Convert NCHW tensor back to standard NHWC layout standard - np_frames = frame.detach().cpu().permute(0, 2, 3, 1).numpy() - # Rescale back to uint8 pixel range - np_frames = (np_frames * 255.0).astype(np.uint8) - # Unpack the batch array dimensions into a standard list of standalone images - # ingestion_source = [np.ascontiguousarray(img) for img in np_frames] - np_frames_aligned = np.copy(np_frames, order="C") - ingestion_source = list(np_frames_aligned) - else: - ingestion_source = frame - else: - ingestion_source = frame - - if getattr(self, "cached_predictor", None) is not None: - results = self.cached_predictor(frame) - else: - # Execute prediction using the safe public API path. - # Passing raw standard [H, W, C] frame matrices handles all sigmoid bounding box - # decoders and confidence multipliers natively, correcting the top-left clumping bug. - results = self.model.predict( - ingestion_source, - imgsz=imgsz, - batch=batch, - device=device_input, - verbose=False, - stream=stream, - conf=self.config.DETECTION_THRESHOLD, - max_det=self.config.MAX_DETECTIONS, - rect=(batch == 1), - profile=False, # Disable interior torch.cuda.synchronize() gates completely! - ) - return results - def _check_shm_safety(self, threshold_percent=90): """ Scans /dev/shm and deletes the oldest .mp4 files if usage exceeds threshold. @@ -2148,7 +3328,7 @@ def _check_shm_safety(self, threshold_percent=90): percent_used = (usage.used / usage.total) * 100 if percent_used > threshold_percent: - print( + main_app_logger.info( f" [CRITICAL] /dev/shm usage at {percent_used:.1f}%. Purging old clips..." ) @@ -2163,1393 +3343,315 @@ def _check_shm_safety(self, threshold_percent=90): # if str(clip) == self.tmp_file: # continue - clip.unlink() - print(f"[PURGE] Deleted {clip.name} to free RAM.") - - # Re-check usage after each deletion - usage = shutil.disk_usage("/dev/shm") - if (usage.used / usage.total) * 100 < 70: - break - except Exception as e: - print(f"[EXCEPTION] Could not purge {clip}: {e}") - - def run_realtime_inference(self, sf_enabled): - """Producer: Maintains the target FPS and updates clip IDs.""" - # Calculate a dynamic limit: tolerate 0.5 seconds of lag. - # If target_fps is 15, the limit is 7. If target_fps is 30, the limit is 15. - self.dynamic_limit = max(2, int(0.5 * self.target_fps)) - last_frame_time = time.perf_counter() - while self.active: - try: - # FRAME RETRIEVAL --------------------------------------------- - try: - ret, frame_8k, frame_num = self.reader.read() - if not ret or frame_8k is None: - print( - "[CLIPPER-TARGET] End of video file source detected. Initiating graceful shutdown.", - flush=True, - ) - # if self.reader is None or ( - # hasattr(self.reader, "stopped") and self.reader.stopped - # ): - if self.device_input == "cuda": - torch.cuda.synchronize() - - if hasattr(self, "executor") and self.executor is not None: - while self.get_executor_backlog() > 0: - time.sleep(0.01) - - # Instead of only processing the active clip_id, loop through every clip - # listed in all_metadata to ensure nothing is dropped at shutdown. - global all_metadata, clip_completion_tracker - active_tracked_keys = list(all_metadata.keys()) - - for target_clip_key in active_tracked_keys: - # Reconstruct the explicit path structure for each target clip segment - target_clip_filename = ( - f"{self.config.SHARED_OUTPUT}/{target_clip_key}" - ) - - if target_clip_key not in clip_completion_tracker: - clip_completion_tracker[target_clip_key] = { - "video": False, - "meta": False, - "start_time": time.time(), - } - - # Mark tracking convergence fields to True concurrently - clip_completion_tracker[target_clip_key]["video"] = True - clip_completion_tracker[target_clip_key]["meta"] = True - - print( - f" [CLIPPER-TARGET] Finalizing terminal sync barrier for: {target_clip_key}", - flush=True, - ) - - # Safely delegate the queue pushing directly to your validation handler - self._evaluate_barrier_and_dispatch( - target_clip_key, - target_clip_filename, - self.resize_w, - self.resize_h, - ) - - # clip_id = (self.frame_count - 1) // self.max_frames_per_clip - # clip_filename = f"{self.config.SHARED_OUTPUT}/{self.name}_{clip_id:03d}.mp4" - # clip_key = Path(clip_filename).name - # global clip_completion_tracker - # if "clip_completion_tracker" in globals() or "clip_completion_tracker" in locals(): - # if clip_key not in clip_completion_tracker: - # clip_completion_tracker[clip_key] = { - # "video": False, - # "meta": False, - # "start_time": time.time(), - # } - # # Force both verification boundaries to True concurrently - # clip_completion_tracker[clip_key]["video"] = True - # clip_completion_tracker[clip_key]["meta"] = True - - # print( - # f" [BARRIER-SEAL] All metadata extracted for {clip_key}. Evaluating convergence...", - # flush=True, - # ) - # self._evaluate_barrier_and_dispatch( - # clip_key, - # clip_filename, - # self.resize_w, - # self.resize_h, - # ) - - # global send_metadata_queue, all_metadata - # if clip_key in all_metadata: - # # Signal to process metadata for previous cli - # if ( - # "send_metadata_queue" in globals() - # or "send_metadata_queue" in locals() - # ): - # try: - # send_metadata_queue.put( - # ( - # clip_filename, - # self.resize_w, - # self.resize_h, - # ) - # ) - # except Exception as queue_err: - # print( - # f"[CLIPPER-WARN] Metadata queue push skipped or unallocated: {queue_err}", - # flush=True, - # ) - - self.active = False - break - # continue - # if torch.is_tensor(device_frame): - # # Tell the main thread's stream to wait for the upload stream's completion - # torch.cuda.current_stream().wait_stream(self.reader.upload_stream) - except queue.Empty: - if getattr(self.reader, "reconnect_failed", False): - self.active = False - break - time.sleep(0.002) - continue - except Exception: - traceback.print_exc() - - except queue.Empty: - if getattr(self.reader, "reconnect_failed", False): - self.active = False - break - time.sleep(0.002) - continue - - calculated_clip_id = (frame_num - 1) // self.max_frames_per_clip - # self.clip_id = calculated_clip_id - # print(f"frame_num: {frame_num} calculated_clip_id: {calculated_clip_id}", flush=True) - stat_start_time = time.perf_counter() # timing to display detection - self.frame_count += 1 - self.frame_count_target += 1 - self.frame_in_clip_count += 1 - # is_target_frame = True # float(frame_num) >= self.next_process_idx - - # # Create a dedicated memory surface immediately on the Producer line. - # # This isolates the VRAM grid before the reader can overwrite it. - # if self.device_input == "cuda" and torch.is_tensor(device_frame): - # isolated_device_frame = device_frame.clone().contiguous() - # elif isinstance(device_frame, np.ndarray): - # # isolated_device_frame = device_frame.copy() - # # Zero-copy memory map assignment directly into the dedicated ingestion slot - # self.ingest_ring[self.ingest_ring_idx][:] = device_frame - # isolated_device_frame = self.ingest_ring[self.ingest_ring_idx] - - # # Safely step to the next slot in the ring buffer - # self.ingest_ring_idx = ( - # self.ingest_ring_idx + 1 - # ) % self.ingest_ring_depth - # else: - # isolated_device_frame = device_frame - - # Determine if this frame should be AI or Raw based on backlog - # But ALWAYS submit to the executor to maintain frame order. - backlog = self.get_executor_backlog() - - while backlog > 4 and self.active: - time.sleep(0.005) - backlog = self.get_executor_backlog() - - def wrapped_fn(*args): - if self.device_input == "cuda": - # Ensure the worker thread switches to your targeted pipeline execution timeline - # torch.cuda.set_stream(self.inference_stream) - # dev_frame, f_num, target_flag, stat_start_time = args - dev_frame, f_num, start_time, clip_id = args - # isolated_device_frame = ( - # dev_frame.clone() - # if torch.is_tensor(dev_frame) - # else dev_frame.copy() - # ) - # isolated_device_frame = dev_frame - - with torch.cuda.stream(self.inference_stream): - self.pipeline_fn(dev_frame, f_num, start_time, clip_id) - - # Force a non-blocking device barrier to ensure operations have fully hit VRAM - # before releasing the thread context - # self.inference_stream.synchronize() - # Force the device to catch up before dropping thread scope references - # self.inference_stream.synchronize() - - # Explicitly drop the variable frames from the localized stack frame - # if "isolated_device_frame" in locals(): - # del isolated_device_frame - # if "dev_frame" in locals(): - # del dev_frame - else: - # dev_frame, f_num, target_flag, stat_start_time = args - dev_frame, f_num, start_time, clip_id = args - # isolated_device_frame = ( - # dev_frame.clone() - # if torch.is_tensor(dev_frame) - # else dev_frame.copy() - # ) - # isolated_device_frame = dev_frame - self.pipeline_fn(dev_frame, f_num, start_time, clip_id) - - # if is_target_frame: # timing to display detection - # self.next_process_idx += self.step_size - # Handoff to AI and Writer - # if self.active: - # Clone the tensor buffer immediately on the producer thread - # to prevent upstream overwrite races by the next reader iteration. - # isolated_device_frame = device_frame.clone() if torch.is_tensor(device_frame) else device_frame.copy() - self.executor.submit( - # pipeline_fn, - wrapped_fn, - frame_8k, - self.frame_count, - # is_target_frame, - stat_start_time, - calculated_clip_id, - ) - # else: - # # Process background execution context for skipped frames - # self.pipeline_fn(device_frame, frame_num, is_target_frame) - - # if self.device_input == "cuda": - # torch.cuda.synchronize() - - # --- PRECISE CLOCK SYNC --- - # This prevents the producer from "lapping" the consumer - # and building that jumpy backlog in the first place. - elapsed = time.perf_counter() - last_frame_time - if elapsed < self.frame_interval: - # time.sleep(self.frame_interval - elapsed) - # Subtract a small epsilon (0.001) for OS scheduling overhead - sleep_duration = max(0, self.frame_interval - elapsed - 0.0015) - if sleep_duration > 0.001: - time.sleep(sleep_duration) - last_frame_time = time.perf_counter() - - self.update_frame(stat_start_time) - self.last_heartbeat = time.time() - - self.stop() - - def filter_contained_boxes(self, boxes, overlap_thresh=0.9): - """ - Vectorized IoA filter: Removes boxes if most of their area is inside another box. - """ - if boxes.shape[0] <= 1: - return boxes - - # Calculate Areas - w = (boxes[:, 2] - boxes[:, 0]).clamp(min=0) - h = (boxes[:, 3] - boxes[:, 1]).clamp(min=0) - areas = w * h - valid_mask = ( - (w < (self.resize_w * self.config.ROI_MAX_RELATIVE_SIZE_RATIO)) - & (h < (self.resize_h * self.config.ROI_MAX_RELATIVE_SIZE_RATIO)) - & (w > 0) - & (h > 0) - & (areas >= self.min_contour_area) - ) - boxes = boxes[valid_mask] - areas = areas[valid_mask] - - # Compute all-to-all Intersections [N, N] - lt = torch.max(boxes.unsqueeze(1)[:, :, :2], boxes.unsqueeze(0)[:, :, :2]) - rb = torch.min(boxes.unsqueeze(1)[:, :, 2:], boxes.unsqueeze(0)[:, :, 2:]) - wh = (rb - lt).clamp(min=0) - inter_area = wh[:, :, 0] * wh[:, :, 1] - - # Intersection over Area (How much of Box A is in Box B) - # ioa[i, j] = (Box i ∩ Box j) / Area(i) - ioa = inter_area / (areas.unsqueeze(1) + 1e-6) - - # Filter logic: - # Only remove if Box J is LARGER than Box I and overlap is high - diag = torch.eye(boxes.shape[0], device=boxes.device, dtype=torch.bool) - larger_mask = areas.unsqueeze(0) >= areas.unsqueeze(1) - - to_remove = (ioa > overlap_thresh) & larger_mask & ~diag - return boxes[~to_remove.any(dim=1)] - - def get_gpu_rois_by_area(self, mask, max_candidates=100): - # Extract true spatial constraints straight from the active mask object footprint - if torch.is_tensor(mask): - mask_h, mask_w = mask.shape[-2:] - elif isinstance(mask, cv2.cuda.GpuMat): - # cv2.cuda.GpuMat.size() returns a tuple of (width, height) standard formatting - mask_w, mask_h = mask.size() - else: - mask_h, mask_w = mask.shape[:2] - - # This prevents find_contours_gpu_equivalent from mutating the mask variables used by other threads. - if isinstance(mask, cv2.cuda.GpuMat): - # .clone() allocates a new C++ memory surface and forces full continuity - isolated_kernel_mask = mask.clone() - elif torch.is_tensor(mask): - isolated_kernel_mask = mask.clone().contiguous() - else: - isolated_kernel_mask = mask.copy() - - # Get raw boxes from mask (Direct VRAM bridge) - boxes_gpu = find_contours_gpu_equivalent( - isolated_kernel_mask, - stream=self.bgs_stream, - limit_640=640 * 1.5, - ) - - # --- FIX: ELIMINATE STREAM RACE --- - if boxes_gpu is None or len(boxes_gpu) == 0: - return torch.empty((0, 4), device=self.device_input) - - # Wrap existing GPU memory as a float tensor (Zero Copy) - # raw_boxes = torch.as_tensor(boxes_gpu, device=self.device_input).float() - if self.device_input == "cuda": - # Wrap the native device handle and IMMEDIATELY append .clone() - # This allocates a brand new, physically isolated VRAM block to secure the bounding boxes - raw_boxes = ( - torch.as_tensor(boxes_gpu, device=self.device_input).float().clone() - ) - else: - raw_boxes = torch.as_tensor(boxes_gpu, device=self.device_input).float() - - if raw_boxes is not None and len(raw_boxes) > 0: - PADDING_PX = 5 - # Assumes merged_boxes_tensor is a 2D tensor of shape [N, 4] containing [x1, y1, x2, y2] - # Create a matching subtraction/addition padding mask tensor - # Subtract from x1, y1 (indices 0, 1) and add to x2, y2 (indices 2, 3) - padding_mask = torch.tensor( - [-PADDING_PX, -PADDING_PX, PADDING_PX, PADDING_PX], - device=raw_boxes.device, - dtype=raw_boxes.dtype, - ) - - # Apply padding to all bounding boxes concurrently via broad-vector math - padded_tensor = raw_boxes + padding_mask - - # Guard rails: Clamp boundaries in-place to stay safely within the 8K master frame - # Indices 0 and 2 are X coordinates bounded by frame width; 1 and 3 are Y coordinates bounded by frame height - padded_tensor[:, 0].clamp_(min=0, max=self.resize_w) - padded_tensor[:, 1].clamp_(min=0, max=self.resize_h) - padded_tensor[:, 2].clamp_(min=0, max=self.resize_w) - padded_tensor[:, 3].clamp_(min=0, max=self.resize_h) - - # Re-assign back to your pipeline's tracking variable - raw_boxes = padded_tensor - - # Vectorized Pre-Filter (Removes noise blobs before merging) - w = raw_boxes[:, 2] - raw_boxes[:, 0] - h = raw_boxes[:, 3] - raw_boxes[:, 1] - mask_filter = (w * h > self.min_contour_area) & (w < mask_w) & (h < mask_h) - raw_boxes = raw_boxes[mask_filter] - - # Prevents N^2 distance matrix from exploding during high noise - if raw_boxes.shape[0] > max_candidates: - # Prioritize the largest blobs (most likely to be drones) - areas = (raw_boxes[:, 2] - raw_boxes[:, 0]) * ( - raw_boxes[:, 3] - raw_boxes[:, 1] - ) - _, indices = torch.topk(areas, max_candidates) - raw_boxes = raw_boxes[indices] - return raw_boxes - - def get_cpu_rois(self, frame, frameNum, mask): - contours, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) - raw_boxes_xywh = [ - list(cv2.boundingRect(c)) - for c in contours - if cv2.contourArea(c) > self.min_contour_area - ] - - raw_boxes = [ - [ - max(0, int(x) - PADDING_PX), - max(0, int(y) - PADDING_PX), - min(self.resize_w, int(x + w) + PADDING_PX), - min(self.resize_h, int(y + h) + PADDING_PX), - ] - for x, y, w, h in raw_boxes_xywh - ] - # raw_boxes = [[x, y, x + w, y + h] for x, y, w, h in raw_boxes_xywh] - - if len(raw_boxes) < 1: - return torch.empty((0, 4), device=self.device_input) - - if len(raw_boxes) > 1: - limit_640 = (640 * 2.0) / self.scale_x - raw_boxes = merge_boxes_cpu( - raw_boxes, gap_limit=self.dist_thresh_640, size_limit=limit_640 - ) - - raw_boxes_640p = torch.tensor(raw_boxes, device=self.device_input).float() - - clean_640p = self.filter_contained_boxes( - raw_boxes_640p, overlap_thresh=self.config.ROI_CONTAINMENT_THRESH - ) - - if clean_640p.shape[0] < 1: - return torch.empty((0, 4), device=self.device_input) - - # Scale to 8K space - return clean_640p * self.scales_tensor - - # Project clusters back to 8K and build centered YOLO windows - # final_8k_rois = scale_clusters_to_8k( - # merged_640, frame_w=self.frame_width, frame_h=self.frame_height - # ) - # return torch.tensor(final_8k_rois, device=self.device_input).float() - - def get_detections( - self, frame, frame_id, thickness=2, device_input="cuda", merged=None - ): - """ - Processes full-frame 8K targets or aggregates smart-filtered bounding-box regions - into uniform tensor arrays for batched inference execution. - """ - metadata = {} - is_cuda = device_input == "cuda" - num_objs = 0 - - # ===================================================================== - # 🚀 PATH 1: FULL RESOLUTION TRACK (sf_enabled = False) - # ===================================================================== - if merged is None: - with torch.inference_mode(): - if isinstance(frame, torch.Tensor): - # # Transpose to channel-first shape format [1, C, H, W] if layout is trailing - # if frame.ndim == 3 and frame.shape[-1] == 3: - # frame = frame.permute(2, 0, 1).unsqueeze(0).clone().contiguous() - # elif frame.ndim == 3: - # frame = frame.unsqueeze(0).clone().contiguous() - - # # Create a memory-contiguous layout view and cast cleanly inside VRAM - # frame = frame.contiguous() - - # Transpose to channel-first shape format [1, C, H, W] if layout is trailing - if frame.ndim == 3 and frame.shape[-1] == 3: - # CRITICAL BUG FIX: Appending .clone().contiguous() creates a brand new, - # physically isolated tensor memory block. This breaks the link to - # temporary buffers, preventing the VS Code debugger from crashing on evaluation. - frame = frame.permute(2, 0, 1).unsqueeze(0).clone().contiguous() - elif frame.ndim == 3: - frame = frame.unsqueeze(0).clone().contiguous() - else: - # Ensure any multi-dimensional batch views are physically packed - frame = frame.clone().contiguous() - - if frame.dtype == torch.uint8: - frame = frame.to( - device_input, dtype=torch.float16, non_blocking=True - ) - frame.mul_(1.0 / 255.0) # Safe in-place float normalization - else: - frame = frame.to(device_input, non_blocking=True) - - img_size = frame.shape[-2:] - else: - # CPU / Host NumPy NDArray fallback - img_size = frame.shape[:2] - - # img_size = (self.resize_h, self.resize_w) - H, W = img_size - scale_display_x = self.resize_w / W # 640 / 8192 - scale_display_y = self.resize_h / H # 640 / 4608 - results = self.run_model( - frame, - imgsz=img_size, - batch=1, - device_input=device_input, - stream=STREAM_ARG, - ) - - # Extract full resolution detections - if results and len(results) > 0: - boxes = results[0].boxes - if boxes is not None: - for idx, box in enumerate(boxes): - # coords = box.xywh[0].cpu().tolist() # [x_center, y_center, width, height] - # cls_id = int(box.cls[0].cpu().item()) - # conf = float(box.conf[0].cpu().item()) - coords = ( - box.xywh.cpu().squeeze().tolist() - ) # Converts [x_center, y_center, w, h] safely - cls_id = int(box.cls.cpu().item()) - class_name = self.label_source[cls_id] - confidence = float(box.conf.cpu().item()) - - # Guard against un-squeezed structural lists - if isinstance(coords[0], list): - coords = coords[0] - - # Convert center bounds coordinates back to upper-left origin layout standard - # and scale to 640x640 - disp_x = (coords[0] - (coords[2] / 2.0)) * scale_display_x - disp_y = (coords[1] - (coords[3] / 2.0)) * scale_display_y - disp_w = coords[2] * scale_display_x - disp_h = coords[3] * scale_display_y - - if disp_w > 2 and disp_h > 2: - # Resized - object_res = [ - int(disp_x), # int(abs_x1 * scale_x), - int(disp_y), # int(abs_y1 * scale_y), - int(disp_h), # int(height * scale_y), - int(disp_w), # int(width * scale_x), - class_name, - confidence, - int(self.resize_h), - int(self.resize_w), - ] - - obj_id = len(metadata) - num_objs += 1 - framenum_str = f"{frame_id:04d}_{obj_id:04d}" - metadata[framenum_str] = { - "frameId": int(frame_id), - "bbId": framenum_str, - "bbox": { - "x": int(object_res[0]), - "y": int(object_res[1]), - "height": int(object_res[2]), - "width": int(object_res[3]), - "object": str(object_res[4]), - "object_det": { - "confidence": float(object_res[5]), - "frameH": int(object_res[6]), - "frameW": int(object_res[7]), - }, - }, - } - - if "boxes" in locals(): - del boxes - if "results" in locals(): - del results - - del frame - return metadata, num_objs - - # ===================================================================== - # PATH 2: SMART FILTER ROIs TRACK (sf_enabled = True) -> PADDED ASPECT PRESERVING 📦 - # ===================================================================== - else: - roi_patches = [] - patch_coordinates = [] - max_batch_size = getattr(self.config, "MODEL_MAX_BATCH_SIZE", 64) - - # 1. Canvas Matrix Pre-processing Isolation - if is_cuda and isinstance(frame, torch.Tensor): - src_tensor = frame.squeeze(0) if frame.ndim == 4 else frame - if src_tensor.shape[-1] == 3: - src_tensor = src_tensor.permute(2, 0, 1) # Force [C, H, W] - src_h, src_w = src_tensor.shape[-2:] - else: - src_tensor = np.asarray(frame) - src_h, src_w = src_tensor.shape[:2] - - # Target layout constraints - th, tw = self.resize_h, self.resize_w - - # 2. Extract, Aspect-Scale, and Pad Regions of Interest (ROIs) - for box in merged: - x1, y1, x2, y2 = map(int, box) - x1, y1 = max(0, x1), max(0, y1) - x2, y2 = min(src_w, x2), min(src_h, y2) - - box_w, box_h = x2 - x1, y2 - y1 - if box_w < 8 or box_h < 8: - continue # Filter out invalid spatial artifacts - - if is_cuda and isinstance(src_tensor, torch.Tensor): - with torch.no_grad(): - crop = src_tensor[:, y1:y2, x1:x2] - - # Calculate aspect-preserving scale factor - scale = min(tw / box_w, th / box_h) - nw, nh = int(box_w * scale), int(box_h * scale) - nw, nh = max(1, nw), max(1, nh) - - # Dynamic scaling: downsample or upsample using clean bilinear grids - if (box_h, box_w) != (nh, nw): - crop_resized = F.interpolate( - crop.unsqueeze(0).float(), - size=(nh, nw), - mode="bilinear", - align_corners=False, - ).squeeze(0) - else: - crop_resized = crop.float() - - # Force the canvas tracking allocation to occur safely inside your active stream scope context - with torch.cuda.stream(self.inference_stream): - # Instantiate a clean, pre-allocated padded evaluation canvas context - padded_canvas = torch.zeros( - (3, th, tw), dtype=torch.float32, device=device_input - ) - - # Center the aspect-scaled crop onto the dark zero-padded mask grid - dx = (tw - nw) // 2 - dy = (th - nh) // 2 - padded_canvas[:, dy : dy + nh, dx : dx + nw] = crop_resized - - # Convert directly to half-precision to speed up pipeline passes - roi_patches.append(padded_canvas.to(torch.half)) - else: - # CPU Path: Aspect-preserving resize and padding via OpenCV - crop = src_tensor[y1:y2, x1:x2] - scale = min(tw / box_w, th / box_h) - nw, nh = max(1, int(box_w * scale)), max(1, int(box_h * scale)) - - crop_resized = cv2.resize( - crop, (nw, nh), interpolation=cv2.INTER_NEAREST - ) - - # Center-pad the array block with zeros (black) - # padded_canvas = np.zeros((th, tw, 3), dtype=np.uint8) - padded_canvas = np.empty((th, tw, 3), dtype=np.uint8) - padded_canvas.fill(0) - dx = (tw - nw) // 2 - dy = (th - nh) // 2 - padded_canvas[dy : dy + nh, dx : dx + nw] = crop_resized - roi_patches.append(padded_canvas) - - # Store the scaling shifts to map detections back to the 8K coordinate grid accurately - patch_coordinates.append((x1, y1, box_w, box_h, scale, dx, dy)) - - if not roi_patches: - return {}, 0 - - # 3. Process Patches via Multi-Cam Inference Batch Factory - results_pool = [] - for i in range(0, len(roi_patches), max_batch_size): - batch_slices = roi_patches[i : i + max_batch_size] - current_batch_len = len(batch_slices) - - if is_cuda and isinstance(batch_slices[0], torch.Tensor): - with torch.inference_mode(): - torch.cuda.set_stream(self.inference_stream) - inference_batch = torch.stack(batch_slices).to( - device_input, dtype=torch.float16, non_blocking=True - ) - inference_batch.mul_(1.0 / 255.0) # In-place GPU normalization - - batch_res = self.run_model( - inference_batch, - imgsz=(th, tw), - batch=current_batch_len, - device_input=device_input, - stream=STREAM_ARG, - ) - results_pool.extend(batch_res) - del inference_batch - else: - with torch.inference_mode(): - # np_batch = np.stack(batch_slices, dtype=np.float32) #.astype(np.float32) / 255.0 - # Pre-allocate the complete batch block surface memory up front: - th, tw = self.resize_h, self.resize_w - current_batch_len = len(batch_slices) - # np_batch = np.zeros((current_chunk_len, th, tw, 3), dtype=np.float32) - - # Stack the list of [H, W, C] patches into a 4D array [B, H, W, C] - np_batch_uint8 = np.stack(batch_slices) - - # Transpose from NHWC [B, H, W, C] to NCHW [B, C, H, W] natively in NumPy - np_batch_nchw = np.transpose(np_batch_uint8, (0, 3, 1, 2)) - - # Cast to float32 and normalize concurrently using contiguous memory layout - # np_batch_contiguous = np.ascontiguousarray(np_batch_nchw, dtype=np.float32) - # np_batch_contiguous *= (1.0 / 255.0) - - # 1. Stack the list of [H, W, C] patches into a 4D array [B, H, W, C] - np_batch_uint8 = np.stack(batch_slices) - - # 2. Transpose from NHWC [B, H, W, C] to NCHW [B, C, H, W] natively in NumPy - # np_batch_nchw = np.transpose(np_batch_uint8, (0, 3, 1, 2)) - - # # 3. Cast to float32 and normalize concurrently using an in-place pointer - # np_batch_float = np_batch_nchw.astype(np.float32) - # np_batch_float *= 1.0 / 255.0 - - # # --- CRITICAL MEMORY ALIGNMENT LOCK --- - # # Force the contiguous memory layer allocation AFTER all mathematical manipulations are complete. - # # This ensures the underlying C-memory arrays are perfectly packed and sequential, allowing - # # OpenVINO to run zero-copy pointer lookups and bypassing the 48.13ms serialization overhead. - # np_batch_aligned = np.ascontiguousarray(np_batch_float) - - # # 4. Expose the memory-aligned array directly to PyTorch as a host tensor view - # inference_batch = torch.from_numpy(np_batch_aligned).to( - # device_input - # ) - - np_batch_ready = np.ascontiguousarray(np_batch_uint8) - np_batch_nchw = np.transpose(np_batch_ready, (0, 3, 1, 2)) - np_batch_float = np_batch_nchw.astype(np.float32) - np_batch_float *= 1.0 / 255.0 - inference_batch = torch.from_numpy(np_batch_float).to( - device_input - ) - - batch_res = self.run_model( - inference_batch, - imgsz=(th, tw), - batch=current_batch_len, - device_input=device_input, - stream=STREAM_ARG, - ) - results_pool.extend(batch_res) - del inference_batch - - # ===================================================================== - # UNIFIED STREAM BARRIER: Sync ONCE after all hardware tasks are queued - # ===================================================================== - if is_cuda and hasattr(self, "inference_stream"): - self.inference_stream.synchronize() - - # 4. Map Patch Bounding Boxes back onto the Global 8K Frame Coordinates Map - scale_display_x = tw / float(self.frame_width) - scale_display_y = th / float(self.frame_height) - - for idx, res in enumerate(results_pool): - # Calculate the exact matching absolute global coordinate array slot index - ox, oy, o_width, o_height, scale_f, pad_x, pad_y = patch_coordinates[ - idx - ] - if res.boxes is not None and len(res.boxes) > 0: - all_xyxy = res.boxes.xyxy.cpu().numpy() - all_clss = res.boxes.cls.cpu().numpy().astype(int) - all_confs = res.boxes.conf.cpu().numpy().astype(float) - - for j in range(len(all_xyxy)): - lx1, ly1, lx2, ly2 = all_xyxy[j] - class_name = self.label_source[all_clss[j]] - confidence = all_confs[j] - - # Reverse the centering padding offset values - lx1_unpadded = lx1 - pad_x - ly1_unpadded = ly1 - pad_y - lx2_unpadded = lx2 - pad_x - ly2_unpadded = ly2 - pad_y - - # Reverse the aspect ratio scale shift to map back to absolute 8K coordinates - global_x1 = ox + (lx1_unpadded / scale_f) - global_y1 = oy + (ly1_unpadded / scale_f) - global_x2 = ox + (lx2_unpadded / scale_f) - global_y2 = oy + (ly2_unpadded / scale_f) - - # Project directly onto the 640x640 display monitoring layout canvas - disp_x = global_x1 * scale_display_x - disp_y = global_y1 * scale_display_y - disp_w = (global_x2 - global_x1) * scale_display_x - disp_h = (global_y2 - global_y1) * scale_display_y - - if disp_w > 0 and disp_h > 0: - object_res = [ - int(disp_x), - int(disp_y), - int(disp_h), - int(disp_w), - class_name, - confidence, - int(th), - int(tw), - ] - obj_id = len(metadata) - num_objs += 1 - framenum_str = f"{frame_id:04d}_{obj_id:04d}" - metadata[framenum_str] = { - "frameId": int(frame_id), - "bbId": framenum_str, - "bbox": { - "x": int(object_res[0]), - "y": int(object_res[1]), - "height": int(object_res[2]), - "width": int(object_res[3]), - "object": str(object_res[4]), - "object_det": { - "confidence": float(object_res[5]), - "frameH": int(object_res[6]), - "frameW": int(object_res[7]), - }, - }, - } - - if "results_pool" in locals(): - del results_pool - if "roi_patches" in locals(): - roi_patches.clear() - del roi_patches - - del frame - del src_tensor - return metadata, num_objs - - def get_gpu_rois(self, frame, frameNum, mask): - # If more than 20% of the screen is moving, don't bother with crops - # if current_coverage > 0.6: - # return torch.tensor([[0, 0, self.frame_width, self.frame_height]], device=self.device_input) - - limit_640 = ( - 640 * 2.0 - ) / self.scale_x # 40 # self.config.ROI_MERGE_SIZE_LIMIT / self.scale_x - raw_boxes = self.get_gpu_rois_by_area( - mask, max_candidates=50 - ) # , limit_640=limit_640) - # padding = 5 # self.config.ROI_BB_FULL_RES_PADDING / self.scale_x - # raw_boxes[:, 0] -= padding - # raw_boxes[:, 1] -= padding - # raw_boxes[:, 2] += padding - # raw_boxes[:, 3] += padding - - if raw_boxes.shape[0] < 1: - return torch.empty((0, 4), device=self.device_input) - - if raw_boxes.shape[0] > 1: - raw_boxes = merge_boxes_gpu( - raw_boxes, - gap_limit=self.dist_thresh_640, - size_limit=limit_640, - ) - - clean_640p = self.filter_contained_boxes( - raw_boxes, overlap_thresh=self.config.ROI_CONTAINMENT_THRESH - ) - - if clean_640p.shape[0] < 1: - return torch.empty((0, 4), device=self.device_input) - - # # Scale to 8K space - # # return clean_640p * self.scales_tensor - # # margin = 0.10 - # # offsets = (clean_640p[:, 2:] - clean_640p[:, :2]) * margin - # # clean_640p[:, :2] -= offsets - # # clean_640p[:, 2:] += offsets - # # 1. Add 30-pixel 'breathing room' (in 640p space) - # # padding = 40 # self.config.ROI_BB_FULL_RES_PADDING / self.scale_x - # # clean_640p[:, 0] -= padding - # # clean_640p[:, 1] -= padding - # # clean_640p[:, 2] += padding - # # clean_640p[:, 3] += padding - - # # 2. Re-merge the padded boxes (connects nearby drones into one clean crop) - # clean_640p = merge_boxes_gpu( - # clean_640p, - # gap_limit=self.dist_thresh_640, - # size_limit=limit_640, # self.config.ROI_MERGE_SIZE_LIMIT / self.scale_x, - # ) - - # # Scale to 8K and clamp - # clean_full = clean_640p * self.scales_tensor - # # clean_full[:, [0, 2]] = clean_full[:, [0, 2]].clamp(0, self.frame_width) - # # clean_full[:, [1, 3]] = clean_full[:, [1, 3]].clamp(0, self.frame_height) - # return clean_full - - xmin = clean_640p[:, 0] - ymin = clean_640p[:, 1] - # w = clean_640p[:, 2] - # h = clean_640p[:, 3] - # xmax = xmin + w - # ymax = ymin + h - xmax = clean_640p[:, 2] - ymax = clean_640p[:, 3] - - # Stack into standard format layout [xmin, ymin, xmax, ymax] - standard_boxes = torch.stack([xmin, ymin, xmax, ymax], dim=1) - - # 4. Scale to absolute 8K workspace dimensions accurately - return standard_boxes * self.scales_tensor - - def get_gpu_roisv2(self, frame, frameNum, mask): - # 1. MORPHOLOGICAL NOISE CLEANUP (Crucial for the hillside) - # Apply an in-place GPU Opening filter to dissolve the tiny white spots - # while keeping the larger, dense drone clusters perfectly intact. - if isinstance(mask, cv2.cuda.GpuMat): - # 3x3 or 5x5 Ellipse/Rect kernel eliminates high-frequency noise - kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3)) - morph_filter = cv2.cuda.createMorphologyFilter( - cv2.MORPH_OPEN, mask.type(), kernel - ) - clean_mask = morph_filter.apply(mask) - else: - kernel = np.ones((3, 3), np.uint8) - clean_mask = cv2.morphologyEx(mask, cv2.MORPH_OPEN, kernel) - - # 2. Extract raw candidate boxes using the clean mask matrix surface - limit_640 = (640 * 2.0) / self.scale_x - raw_boxes = self.get_gpu_rois_by_area( - clean_mask, max_candidates=100 - ) # Increased limit to 100 - - if raw_boxes.shape[0] < 1: - return torch.empty((0, 4), device=self.device_input) - - if raw_boxes.shape[0] > 1: - raw_boxes = merge_boxes_gpu( - raw_boxes, - gap_limit=self.dist_thresh_640, - size_limit=limit_640, - ) - - clean_640p = self.filter_contained_boxes( - raw_boxes, overlap_thresh=self.config.ROI_CONTAINMENT_THRESH - ) - - if clean_640p.shape[0] < 1: - return torch.empty((0, 4), device=self.device_input) - - # 3. CORRECT [X, Y, W, H] TO [X1, Y1, X2, y2] MATH - # Map the original width and height parameters back to endpoint coordinates - xmin = clean_640p[:, 0] - ymin = clean_640p[:, 1] - w = clean_640p[:, 2] - h = clean_640p[:, 3] - - xmax = xmin + w - ymax = ymin + h - - # Pack into full master coordinate system arrays - standard_boxes = torch.stack([xmin, ymin, xmax, ymax], dim=1) - - # 4. Project coordinates back to 8K master canvas space accurately - return standard_boxes * self.scales_tensor - - def get_gpu_roisv3(self, frame, frameNum, mask): - # 1. Extract raw candidate boxes from the mask (Already [x1, y1, x2, y2]) - limit_640 = (640 * 2.0) / self.scale_x - raw_boxes = self.get_gpu_rois_by_area(mask, max_candidates=50) - - if raw_boxes.shape[0] < 1: - return torch.empty((0, 4), device=self.device_input) - - # 2. Merge overlapping fragments directly on the GPU - if raw_boxes.shape[0] > 1: - raw_boxes = merge_boxes_gpu( - raw_boxes, - gap_limit=self.dist_thresh_640, - size_limit=limit_640, - ) - - # 3. Filter out containment or noise artifacts - clean_640p = self.filter_contained_boxes( - raw_boxes, overlap_thresh=self.config.ROI_CONTAINMENT_THRESH - ) - - if clean_640p.shape[0] < 1: - return torch.empty((0, 4), device=self.device_input) - - # 4. Direct 8K Space Scaling Matrix Multiplication - # Matches the clean CPU architecture on Page 31, Line 2050 - return clean_640p * self.scales_tensor - - def frame2video( - self, - device_frame, - frameNum, - metadata_or_bbs, - class_list, - # metrics, - ): - scale_display_x = self.disp_w / 640 - scale_display_y = self.disp_h / 640 - try: - if self.device_input == "cuda" and torch.is_tensor(device_frame): - # 2. Fast Inline VRAM Downscaling into our static memory slot - # Reshape to (Batch, Channel, Height, Width) seamlessly without duplicating data - gpu_tensor = device_frame[None, :].permute(0, 3, 1, 2).float() - - resized_tensor = torch.nn.functional.interpolate( - gpu_tensor, - size=(self.disp_h, self.disp_w), - mode="nearest", - ) - - # CONVERTS TO CPU EARLIER (WORKS but lowers fps) - # hwc_byte_tensor = resized_tensor.squeeze(0).permute(1, 2, 0).byte() - # cpu_tensor = hwc_byte_tensor.cpu() - # bgr_contiguous = cpu_tensor.contiguous() - - # Using copy_() avoids creating any runtime allocations or memory-stride drift. - self.static_gpu_byte_bchw.copy_(resized_tensor.byte()) - - # Safely reshape the pre-allocated, locked GPU memory layout back to standard HWC array topology. - # Since the underlying array layout is strictly contiguous, this permute is guaranteed - # to be zero-copy on the GPU and free from memory race stalls. - bgr_contiguous = self.static_gpu_byte_bchw.squeeze(0).permute(1, 2, 0) - - # 1. Grab the current free pinned slot tracking variables from your reader - d2h_idx = self.reader.d2h_selector - pinned_tensor_buf = self.reader.d2h_buffers[d2h_idx] - - # c_idx = self.canvas_selector - # current_canvas = self.static_host_canvases[c_idx] - - # host_tensor_view = torch.as_tensor(current_canvas, device="cpu") - - # 3. Non-blocking asynchronous PCIe DMA Download directly into our page-locked canvas - with torch.cuda.stream(self.reader.download_stream): - # pinned_tensor = torch.from_numpy(current_canvas).cuda() - pinned_tensor_buf.copy_(bgr_contiguous, non_blocking=True) - - # Synchronize only the side download stream layout channel - self.reader.download_stream.synchronize() - - cpu_360p_frame = self.reader.d2h_numpys[d2h_idx] - - # 5. Non-Blocking Push straight to your background AsyncVideoWriter thread pool - # We pass a direct .copy() slice so the hot loop can instantly reuse the pinned ring buffer - display_frame = np.array(cpu_360p_frame, copy=True, order="C") - - if display_frame is not None and display_frame.shape[-1] == 3: - display_frame = cv2.cvtColor(display_frame, cv2.COLOR_RGB2BGR) - - # --- Draw Detection Overlays --- - if isinstance(metadata_or_bbs, dict): - # Object Mode (YOLO Structs) - display_frame = get_metadata_overlay( - display_frame, - metadata_or_bbs, - class_list, - (scale_display_x, scale_display_y), - (self.disp_w, self.disp_h), - is_bgr=True, - ) - - elif metadata_or_bbs is not None: - # # Motion / Smart Filtering Overlay Path - display_frame = get_bb_overlay( - display_frame, - metadata_or_bbs, - (scale_display_x, scale_display_y), - (self.disp_w, self.disp_h), - ) - - self.async_writer.write_frame(display_frame) - # self.canvas_selector = 1 - self.canvas_selector - self.reader.d2h_selector = 1 - self.reader.d2h_selector - - else: - # Reusable baseline track for CPU execution mappings - display_frame = cv2.resize( - device_frame, - (self.disp_w, self.disp_h), - interpolation=cv2.INTER_NEAREST, - ) - # if metrics["bbs"] is not None: - # for box in metrics["bbs"]: - # cv2.rectangle(cpu_resized, (int(box[0]), int(box[1])), (int(box[2]), int(box[3])), (0, 255, 0), 2) - # --- Draw Detection Overlays --- - if isinstance(metadata_or_bbs, dict): - # Object Mode (YOLO Structs) - display_frame = get_metadata_overlay( - display_frame, - metadata_or_bbs, - class_list, - (scale_display_x, scale_display_y), - (self.disp_w, self.disp_h), - is_bgr=True, - ) - - elif metadata_or_bbs is not None: - # # Motion / Smart Filtering Overlay Path - display_frame = get_bb_overlay( - display_frame, - metadata_or_bbs, - (scale_display_x, scale_display_y), - (self.disp_w, self.disp_h), - ) - self.async_writer.write_frame(display_frame) - except Exception: - traceback.print_exc() - return - - def frame2output(self, device_frame, frame_num, metadata_or_bbs, class_list): - """ - Renders drone detection bounding boxes onto the canvas - before dispatching to the live UI shared memory stream. - """ - if not self.active: - return - scale_display_x = self.disp_w / 640 - scale_display_y = self.disp_h / 640 - try: - if self.device_input == "cuda" and torch.is_tensor(device_frame): - # 2. Fast Inline VRAM Downscaling into our static memory slot - # Reshape to (Batch, Channel, Height, Width) seamlessly without duplicating data - gpu_tensor = device_frame[None, :].permute(0, 3, 1, 2).float() - - resized_tensor = torch.nn.functional.interpolate( - gpu_tensor, - size=(self.disp_h, self.disp_w), - mode="nearest", - ) - - # CONVERTS TO CPU EARLIER (WORKS but lowers fps) - # hwc_byte_tensor = resized_tensor.squeeze(0).permute(1, 2, 0).byte() - # cpu_tensor = hwc_byte_tensor.cpu() - # bgr_contiguous = cpu_tensor.contiguous() - - # Using copy_() avoids creating any runtime allocations or memory-stride drift. - self.static_gpu_byte_bchw.copy_(resized_tensor.byte()) - - # Safely reshape the pre-allocated, locked GPU memory layout back to standard HWC array topology. - # Since the underlying array layout is strictly contiguous, this permute is guaranteed - # to be zero-copy on the GPU and free from memory race stalls. - bgr_contiguous = self.static_gpu_byte_bchw.squeeze(0).permute(1, 2, 0) + clip.unlink() + main_app_logger.info(f"[PURGE] Deleted {clip.name} to free RAM.") - # 1. Grab the current free pinned slot tracking variables from your reader - d2h_idx = self.reader.d2h_selector - pinned_tensor_buf = self.reader.d2h_buffers[d2h_idx] + # Re-check usage after each deletion + usage = shutil.disk_usage("/dev/shm") + if (usage.used / usage.total) * 100 < 70: + break + except Exception as e: + main_app_logger.info(f"[EXCEPTION] Could not purge {clip}: {e}") - # c_idx = self.canvas_selector - # current_canvas = self.static_host_canvases[c_idx] + def print_active_gpu_tensor_memory(self): + main_app_logger.info( + "=" * 60, + ) + main_app_logger.info( + "\033[95m[VRAM INVESTIGATOR] Scanning Active GPU Tensors with Sources:\033[0m" + ) - # host_tensor_view = torch.as_tensor(current_canvas, device="cpu") + # Capture the exact C++ memory registry structure + try: + raw_snapshot = torch.cuda.memory._snapshot() + segments = raw_snapshot.get("segments", []) + except Exception: + segments = [] + main_app_logger.info( + "[WARN] Failed parsing native memory context snapshot.", + ) - # 3. Non-blocking asynchronous PCIe DMA Download directly into our page-locked canvas - with torch.cuda.stream(self.reader.download_stream): - # pinned_tensor = torch.from_numpy(current_canvas).cuda() - pinned_tensor_buf.copy_(bgr_contiguous, non_blocking=True) + # Map raw block storage memory addresses straight to Python frames + addr_to_source = {} + for seg in segments: + for block in seg.get("blocks", []): + if block.get("state") == "active_allocated": + addr = block.get("address") + history = block.get("history", []) + if history: + # Inspect the deepest frame in the allocation stack + frame = history[-1] + filename = frame.get("filename", "Unknown") + lineno = frame.get("line", 0) + func_name = frame.get("name", "unknown_func") + addr_to_source[addr] = f"{filename}:{lineno} ({func_name})" + + # Scan the heap via GC and resolve actual backing storage layers + leaked_tensors = [] + total_detected_bytes = 0 + + for obj in gc.get_objects(): + try: + if torch.is_tensor(obj) and obj.is_cuda: + t_bytes = obj.element_size() * obj.nelement() + total_detected_bytes += t_bytes + if t_bytes > 0: + leaked_tensors.append(obj) + except Exception: + pass - # Synchronize only the side download stream layout channel - self.reader.download_stream.synchronize() + obj = None # Break tracking register references - cpu_360p_frame = self.reader.d2h_numpys[d2h_idx] + for i, tensor in enumerate(leaked_tensors): + t_bytes = tensor.element_size() * tensor.nelement() - # 5. Non-Blocking Push straight to your background AsyncVideoWriter thread pool - # We pass a direct .copy() slice so the hot loop can instantly reuse the pinned ring buffer - display_frame = np.array(cpu_360p_frame, copy=True, order="C") + # --- THE FIX: Extract the address of the underlying storage block --- + try: + if hasattr(tensor, "untyped_storage"): + storage_addr = tensor.untyped_storage().data_ptr() + elif hasattr(tensor, "storage") and tensor.storage(): + storage_addr = tensor.storage().data_ptr() + else: + storage_addr = tensor.data_ptr() + except Exception: + storage_addr = tensor.data_ptr() - if display_frame is not None and display_frame.shape[-1] == 3: - display_frame = cv2.cvtColor(display_frame, cv2.COLOR_RGB2BGR) + # Extract absolute code trace locations from our snapshot dictionary + source_loc = addr_to_source.get( + storage_addr, "Unknown Native C++ Allocation / Model Context" + ) - # --- Draw Detection Overlays --- - if isinstance(metadata_or_bbs, dict): - # Object Mode (YOLO Structs) - display_frame = get_metadata_overlay( - display_frame, - metadata_or_bbs, - class_list, - (scale_display_x, scale_display_y), - (self.disp_w, self.disp_h), - is_bgr=True, - ) + main_app_logger.info( + f" > Tensor {i:3d} | Shape: {str(list(tensor.shape)):<18} | " + f"Size: {t_bytes / 1024**2:6.2f} MB | Source: \033[93m{source_loc}\033[0m" + ) - elif metadata_or_bbs is not None: - # # Motion / Smart Filtering Overlay Path - display_frame = get_bb_overlay( - display_frame, - metadata_or_bbs, - (scale_display_x, scale_display_y), - (self.disp_w, self.disp_h), - ) + del leaked_tensors + main_app_logger.info( + f"[VRAM INVESTIGATOR] Total Live Tensor Memory: {total_detected_bytes / 1024**2:.2f} MB" + ) + gc.collect() + if ( + torch.cuda.is_available() + ): # self.device_input == "cuda" and torch.cuda.is_available(): + torch.cuda.synchronize() + torch.cuda.empty_cache() # Flush the pool BEFORE the guard snapshots it - self.async_writer.write_frame(display_frame, frame_num) - # self.canvas_selector = 1 - self.canvas_selector - self.reader.d2h_selector = 1 - self.reader.d2h_selector + def print_active_shared_memory(self): + main_app_logger.info( + "=" * 60, + ) + main_app_logger.info( + "\033[96m[SHM INVESTIGATOR] Scanning Active OS Shared Memory Filesystem Tables:\033[0m" + ) + try: + shm_dir = Path("/dev/shm") + if shm_dir.exists(): + # Extract and inventory all live POSIX memory segments allocated right now + shm_files = [ + f + for f in shm_dir.iterdir() + if f.is_file() + and not f.name.startswith("sem.") + and not f.name.startswith("psm") + ] + main_app_logger.info( + f" > Discovered Live OS-Mapped Memory Nodes: {len(shm_files)}" + ) + + for f_path in shm_files: + try: + f_stat = f_path.stat() + size_mb = f_stat.st_size / (1024 * 1024) + # Highlight the files using visual color anchors for scannability + main_app_logger.info( + f" ⚠️ \033[93m[ALIVE SHM NODE]\033[0m File: {f_path.name:<25} | Size: {size_mb:7.2f} MB" + ) + except Exception: + pass else: - # Reusable baseline track for CPU execution mappings - display_frame = cv2.resize( - device_frame, - (self.disp_w, self.disp_h), - interpolation=cv2.INTER_NEAREST, + main_app_logger.info( + " [ERROR] /dev/shm runtime directory is inaccessible on this host context." ) - # if metrics["bbs"] is not None: - # for box in metrics["bbs"]: - # cv2.rectangle(cpu_resized, (int(box[0]), int(box[1])), (int(box[2]), int(box[3])), (0, 255, 0), 2) - # --- Draw Detection Overlays --- - if isinstance(metadata_or_bbs, dict): - # Object Mode (YOLO Structs) - display_frame = get_metadata_overlay( - display_frame, - metadata_or_bbs, - class_list, - (scale_display_x, scale_display_y), - (self.disp_w, self.disp_h), - is_bgr=True, - ) + except Exception as e: + main_app_logger.info( + f" [WARN] Kernel inspection execution pass failed: {e}" + ) - elif metadata_or_bbs is not None: - # # Motion / Smart Filtering Overlay Path - display_frame = get_bb_overlay( - display_frame, - metadata_or_bbs, - (scale_display_x, scale_display_y), - (self.disp_w, self.disp_h), - ) - self.async_writer.write_frame(display_frame, frame_num) - except Exception: - traceback.print_exc() - # return + # gc.collect() + # if torch.cuda.is_available(): + # torch.cuda.synchronize() + # torch.cuda.empty_cache() # Flush the pool BEFORE the guard snapshots it - def pipeline_fn( - self, - device_frame, - overall_frame_num, - # is_target_frame, - stat_start_time, - current_clip_id, + def calculate_leaked_memory( + self, device, video_name, start_allocated, start_reserved ): - global all_metadata - # current_clip_id = self.clip_id - current_clip_key = f"{self.name}_{current_clip_id:03d}.mp4" - current_clip_path = f"{self.config.SHARED_OUTPUT}/{current_clip_key}" - # --- MOTION MASK GENERATION GATE --- - if self.config.sf_enabled: - if self.device_input == "cuda": - bgs_input_frame = ( - device_frame.byte() - if torch.is_tensor(device_frame) - else device_frame + _testMethodName = f"{video_name}_{device}" + main_app_logger.info("=" * 60) + max_allowed_leak = 1024 * 1024 # 1MB buffer allowance + msg = "[LEAKAGE INVESTIGATOR] Scanning memory allocations:\n" + if device == "gpu" and torch.cuda.is_available(): + # torch.cuda.synchronize() + + end_allocated = torch.cuda.memory_allocated(0) + end_reserved = torch.cuda.memory_reserved(0) + + leak_allocated = end_allocated - start_allocated + leak_reserved = end_reserved - start_reserved + # max_allowed_leak = 1024 * 1024 # 1MB buffer allowance + + if leak_allocated > max_allowed_leak: + msg += ( + f"\n🔴 GPU Memory Leak Detected for {_testMethodName}!\n" + f"Check for dangling references or missing 'del' statements\n\n" ) - inf_data = self.rbtd_full_gpu(bgs_input_frame) - # torch.cuda.current_stream().synchronize() - # if isinstance(inf_data, dict) and "mask" in inf_data: - # if torch.is_tensor(inf_data["mask"]): - # inf_data["mask"] = inf_data["mask"].contiguous() - # inf_data = self.rbtd_full_gpu(device_frame) - else: - inf_data = self.rbtd_full_cpu(device_frame) - else: - inf_data = {} + # else: + # msg = "\n" - # --- PIPELINE AT TARGET RATE --- - # if not is_target_frame: - # return + msg += ( + f"\tPre-Setup Allocation: {start_allocated / 1024**2:.2f} MB\n" + f"\tPost-Teardown Allocation: {end_allocated / 1024**2:.2f} MB\n" + f"\tNet Leaked VRAM: {leak_allocated / 1024**2:.2f} MB\n" + f"\tNet Leaked Reserved Blocks: {leak_reserved / 1024**2:.2f} MB" + ) - # if is_target_frame: - # self.next_process_idx += self.step_size - # self.frame_count_target += 1 # 1-indexed - # self.frame_in_clip_count += 1 - inf_data["frameNum"] = overall_frame_num # self.frame_count_target + # main_app_logger.info(msg, ) + else: + process = psutil.Process(os.getpid()) + end_rss = process.memory_info().rss - # --- CLIP GENERATION --- - if self.config.ENABLE_QUERYING: - if self.config.DEBUG_FLAG and ( - self.frame_in_clip_count % 15 == 0 or self.frame_in_clip_count == 1 - ): - print( - f"[CLIPPER] Frame progress tracking index: {self.frame_in_clip_count}/{self.max_frames_per_clip} (Overall Frame: {overall_frame_num})", - flush=True, - ) + # start_allocated and start_reserved must be populated with baseline RSS in each_test_setup + leak_rss = end_rss - start_allocated - self.prep_frame_for_video(device_frame, overall_frame_num) - - if self.frame_in_clip_count > self.max_frames_per_clip: - global clip_completion_tracker - if current_clip_key not in clip_completion_tracker: - clip_completion_tracker[current_clip_key] = { - "video": False, - "meta": False, - "start_time": time.time(), - } - - clip_completion_tracker[current_clip_key]["meta"] = True - print( - f" [BARRIER-SEAL] All metadata extracted for {current_clip_key}. Evaluating convergence...", - flush=True, - ) - self._evaluate_barrier_and_dispatch( - current_clip_key, - current_clip_path, - self.resize_w, - self.resize_h, + if leak_rss > max_allowed_leak: + msg += ( + f"\n🔴 CPU Memory Leak Detected for {_testMethodName}!\n" + f"Check for dangling references or missing 'del' statements\n\n" ) + # else: + # msg = "\n" - self.start_new_clip(current_clip_id) + msg += ( + f" Pre-Setup Host RAM Allocation: {start_allocated / 1024**2:.2f} MB\n" + ) + msg += f" Post-Teardown Host RAM Allocation: {end_rss / 1024**2:.2f} MB\n" + msg += f" Net Leaked Host System Memory: {leak_rss / 1024**2:.2f} MB" + main_app_logger.info(msg) + main_app_logger.info("=" * 60) + + def diagnostic_profiler(self, device, video_name, start_allocated, start_reserved): + _testMethodName = f"{video_name}_{device}" + self.calculate_leaked_memory( + device, video_name, start_allocated, start_reserved + ) - if not self.config.DISABLE_DETECTION: - # --- FULL-RESOLUTION ROI EXTRACTION MAPS --- - bbs_full_res = None - if self.config.sf_enabled: - if self.device_input == "cuda": - bbs_full_res = self.get_gpu_rois( - inf_data["full_frame"], - inf_data["frameNum"], - inf_data["mask"], - ) - else: - bbs_full_res = self.get_cpu_rois( - inf_data["full_frame"], - inf_data["frameNum"], - inf_data["mask"], - ) + # main_app_logger.info("=" * 60, ) + # main_app_logger.info( + # f"\n\033[95m[DIAGNOSTICS] Starting Automated Leak Analysis for {_testMethodName}...\033[0m", + # , + # ) - # Isolate raw coordinate matrices out of device graphs to prevent exit race conditions - clean_bbs = [] - if self.config.sf_enabled and bbs_full_res is not None: - if torch.is_tensor(bbs_full_res): - clean_bbs = bbs_full_res.detach().cpu().numpy() - else: - clean_bbs = np.array(bbs_full_res) - - # If inline optimizations left the tensor in channels-first format (B, C, H, W), - # restore it to standard standard layout standard (H, W, C) so get_detections - # can decode bounding boxes accurately without corrupting weights. - det_frame = device_frame - # Cast float canvases back to standard unsigned byte tracking arrays - # so get_detections can safely run its internal float normalizations. - if torch.is_tensor(det_frame): - det_frame = det_frame.byte() - - if det_frame.ndim == 4: - det_frame = det_frame.squeeze(0).permute(1, 2, 0) - elif det_frame.shape[0] == 3: - det_frame = det_frame.permute(1, 2, 0) - - # print(f"[DEBUG] {current_clip_key}: {len(clean_bbs)} ROIs detected!") - - if self.config.DETECTION_TYPE != "motion": - # # Object Mode: Run YOLO and prepare metadata - # if "full_frame" in inf_data: - # det_frame = inf_data["full_frame"] - # else: - # det_frame = ( - # device_frame.clone() - # if torch.is_tensor(device_frame) - # else device_frame.copy() - # ) + # 1. Run objgraph to inspect the Python object reference trees before clearing containers + # try: + # main_app_logger.info( + # "\033[94m[DIAGNOSTICS] Python Object Registry Standings:\033[0m", + # ) + # objgraph.show_most_common_types(limit=10) + + # Check if the metrics arrays are pinning references inside memory + # for tracker_attr in ["all_preds", "all_targets"]: + # if hasattr(self, tracker_attr): + # tgt_list = getattr(self, tracker_attr) + # if len(tgt_list) > 0: + # graph_path = f"/tmp/backrefs_{tracker_attr}_{device}.png" + # main_app_logger.info( + # f"\033[93m[WARN] '{tracker_attr}' contains {len(tgt_list)} entries. Generating reference graph to: {graph_path}\033[0m" + # ) + # objgraph.show_backrefs( + # [tgt_list], max_depth=3, filename=graph_path + # ) + # except ImportError: + # main_app_logger.info( + # "\033[91m[DIAGNOSTICS] 'objgraph' package missing. Skipping reference chain mapping. (pip install objgraph)\033[0m" + # ) - merged = clean_bbs if self.config.sf_enabled else None - # num_bbs = 0 if merged is None else len(clean_bbs) - # print(f"[DEBUG] {current_clip_key} 'merged' num bbs: {num_bbs}") - metadata, num_objs = self.get_detections( - det_frame, - self.frame_in_clip_count, # self.frame_count_target, - merged=merged, - thickness=self.config.THICKNESS, - device_input=self.config.device_input, + # 2. Dump PyTorch Memory Snapshot before clearing VRAM caches + if device == "gpu" and torch.cuda.is_available(): + try: + # snapshot_path = f"/tmp/vram_leak_profile_{self._testMethodName}.pickle" + snapshot_path = self.output_path.replace(".mp4", "_vram_profile.html") + torch.cuda.memory._dump_snapshot(snapshot_path) + main_app_logger.info( + f"\033[92m[DIAGNOSTICS] VRAM Snapshot Trace generated successfully: {snapshot_path}\033[0m" + ) + main_app_logger.info( + "\033[92m--> Upload this file to https://pytorch.org to inspect leak allocation stacks.\033[0m" ) - # num_objs = len(list(metadata.keys())) - self.total_objects_detected += num_objs - if self.config.DEBUG_FLAG: - meta_keys = ", ".join(list(metadata.keys())) - print( - f"[DEBUG] {current_clip_key} metadata keys: {meta_keys}", - flush=True, - ) - if current_clip_key not in all_metadata: - all_metadata[current_clip_key] = {"object": {}, "face": {}} + with open(snapshot_path, "rb") as f: + snapshot = pickle.load(f) - all_metadata[current_clip_key]["object"].update(metadata) - # data_to_draw = metadata - # if self.config.DEBUG_FLAG or - if overall_frame_num % 50 == 0: - print( - f"[METADATA-DEBUG A] Logged tracking structures for Frame #{overall_frame_num} into dictionary key: {current_clip_key}. Number detections: {self.total_objects_detected} (+{num_objs})", - flush=True, - ) + # Print an HTML visualization path map of the allocations + html_timeline = memory_viz.trace_plot(snapshot) + html_path = snapshot_path.replace(".pickle", ".html") + with open(html_path, "w", encoding="utf-8") as f: + f.write(html_timeline) + except Exception as e: + main_app_logger.info( + f"\033[91m[DIAGNOSTICS] Failed to generate PyTorch memory snapshot: {e}\033[0m" + ) - # print(f"Sending to queue", flush=True) + def assess_memory(self, device, video_name, start_allocated, start_reserved): + gc.collect() - if self.device_input == "cuda": - # torch.cuda.synchronize() - self.inference_stream.synchronize() + surviving_arrays = [ + obj + for obj in gc.get_objects() + # if isinstance(obj, np.ndarray) and obj.size >= 1 #(1920 * 1080) + if type(obj) is np.ndarray and obj.ndim > 0 + ] + analyze_tracemalloc_snapshot() + + main_app_logger.info( + f"[DIAGNOSTICS] Found {len(surviving_arrays)} uncollected large arrays alive in RAM filesystem." + ) - data_to_draw = ( - clean_bbs if self.config.DETECTION_TYPE == "motion" else metadata + for i, arr in enumerate(surviving_arrays): + referrers = gc.get_referrers(arr) + main_app_logger.info( + f" > Array {i} | Shape: {arr.shape} | Pinned by {len(referrers)} references:" ) + for ref in referrers: + if isinstance(ref, dict): + main_app_logger.info( + f" - Dict Keys holding this array: {list(ref.keys())[:4]}" + ) + else: + main_app_logger.info( + f" - Variable holding object layout: {type(ref)}", + ) + # ─────────────────────────────────────── - if self.config.TEST_MODE: - self.frame2video( - det_frame, - inf_data["frameNum"], - data_to_draw, - self.label_source, - ) - else: - self.frame2output( - det_frame, - inf_data["frameNum"], - data_to_draw, - self.label_source, - ) + # analyze_tracemalloc_snapshot() - # self.update_frame(stat_start_time) + if device == "gpu": + self.print_active_gpu_tensor_memory() + else: + # --- CPU RAM PATH METRICS --- + # main_app_logger.info("=" * 60, ) + # main_app_logger.info("\n[RAM INVESTIGATOR] Scanning Host CPU Memory Standings:", ) + # process = psutil.Process(os.getpid()) + # current_rss = process.memory_info().rss / (1024 * 1024) # Host RAM in MB + # main_app_logger.info(f" > Current Process Resident Set Size (RSS): {current_rss:.2f} MB", ) + self.print_active_cpu_tensor_memory() + + self.print_active_shared_memory() - # VIDEO CLIPPING + # AUTOMATED DIAGNOSTIC PROFILING PHASE (TRIGGERED ON TEST TEARDOWN) + self.diagnostic_profiler(device, video_name, start_allocated, start_reserved) + + # VIDEO CLIPPING -------------------------------------------- def start_new_clip(self, clip_id): """ Seals the current AI tracking state layout and safely moves the instance metadata references @@ -3557,32 +3659,13 @@ def start_new_clip(self, clip_id): """ global clip_completion_tracker, all_metadata - # Capture context pointers prior to counter mutation steps - old_clip_id = clip_id # self.clip_id - old_clip_key = f"{self.name}_{old_clip_id:03d}.mp4" - # old_clip_path = f"{self.config.SHARED_OUTPUT}/{old_clip_key}" - - print( - f" [CLIPPER] Rotating AI context engine tracking timeline layer. Sealing metadata for: {old_clip_key}", - flush=True, - ) - - # Seal the AI processing side of the tracker - # if old_clip_key not in clip_completion_tracker: - # clip_completion_tracker[old_clip_key] = {"video": False, "meta": False, "start_time": time.time()} - - # clip_completion_tracker[old_clip_key]["meta"] = True - - # # Evaluate the barrier in case the video segment completed before the AI loop reached this gate - # self._evaluate_barrier_and_dispatch(old_clip_key, old_clip_path, self.resize_w, self.resize_h) - # Mutate tracker instance metrics parameters for the upcoming segment chunk window # self.clip_id += 1 self.frame_in_clip_count = 1 self._check_shm_safety(threshold_percent=90) log_to_logger( - f"New clip created: clip frame {self.frame_in_clip_count} ({self.frame_count_target})) of {self.max_frames_per_clip}", + f"New clip created: clip frame {self.frame_in_clip_count} of {self.max_frames_per_clip} (Overall target frame: {self.frame_count_target})", level="info", ) @@ -3592,92 +3675,142 @@ def prep_frame_for_video(self, device_frame, frame_num): return if not hasattr(self, "write_queue") or self.write_queue is None: - print( + main_app_logger.info( " [CLIPPER-INIT] Missing write_queue footprint. Provisioning runtime workspace buffer...", - flush=True, ) - self.write_queue = queue.Queue(maxsize=300) + # self.write_queue = queue.Queue(maxsize=300) + # write_queue_size = int(self.target_fps / 2) if self.device_input == "cpu" else int(self.target_fps / 2) + write_queue_size = int(2 * self.target_fps) + self.write_queue = queue.Queue(maxsize=write_queue_size) # 300) self.writer_done = False if not self.config.TEST_MODE and ( not hasattr(self, "send_metadata_queue") or self.send_metadata_queue is None ): - print( + main_app_logger.info( " [CLIPPER-INIT] Binding instance metadata reference array layer dynamically...", - flush=True, ) - self.send_metadata_queue = queue.Queue() + self.send_metadata_queue = queue.Queue(maxsize=50) if not hasattr(self, "stop_writer") or self.stop_writer is None: self.stop_writer = threading.Event() - if ( - not hasattr(self, "writer_thread") - or self.writer_thread is None - or not self.writer_thread.is_alive() - ): - print( - " [CLIPPER-INIT] Target worker runtime thread is offline. Provisioning core consumer loop thread...", - flush=True, - ) - self.writer_thread = threading.Thread( - target=self.video_writer_core_loop, - args=(self.stop_writer,), - daemon=True, - ) - self.writer_thread.start() + # if ( + # not hasattr(self, "writer_process") + # or self.writer_process is None + # or not self.writer_process.is_alive() + # ): + # main_app_logger.info( + # " [CLIPPER-INIT] Target worker runtime thread is offline. Provisioning core consumer loop thread...", + # ) + # self.writer_process = threading.Thread( + # target=self.video_writer_core_loop, + # args=(self.stop_writer,), + # daemon=True, + # ) + # self.writer_process.start() - if getattr(self, "video_writer", None) is None: - print( - " [CLIPPER-INIT] Downstream execution handle is blank. Initializing FFmpeg subprocess daemon...", - flush=True, - ) - self._initialize_writer() + # if getattr(self, "video_writer", None) is None: + # main_app_logger.info( + # " [CLIPPER-INIT] Downstream execution handle is blank. Initializing FFmpeg subprocess daemon...", + # ) + # self._initialize_writer() - self.clip_executor.submit(self._async_clipper_worker, device_frame, frame_num) + if not self.active or self._is_stopped: + return - def _async_clipper_worker(self, device_frame, frame_num): + # self.clip_executor.submit(self._async_clipper_worker, device_frame, frame_num) + try: + if hasattr(self, "clip_executor") and self.clip_executor is not None: + self.clip_executor.submit( + self._async_clipper_worker, device_frame, frame_num + ) + except RuntimeError as e: + # If the executor was shut down in the fraction of a millisecond + # between our check and the submit, catch it silently and drop the frame. + if "cannot schedule new futures" in str(e): + pass + else: + # If it's a different RuntimeError, we still want to see it + raise e + except Exception: + # Catch other unexpected submission errors + # pass + traceback.print_exc() + + @torch.inference_mode() + def _async_clipper_worker_v1(self, device_frame, frame_num): + """ + A worker that resizes a full-resolution frame and places it in a queue + for the video writer. Runs in a separate thread. + """ + # ring_idx = (frame_num - 1) % self.ring_depth try: + # If a shutdown has started, attributes might be gone. Exit cleanly. + if ( + not self.active + or not hasattr(self, "processing_stream") + or self.processing_stream is None + ): + return + if self.device_input == "cuda": - with torch.cuda.stream(self.processing_stream): - if device_frame.shape[-1] == 3: - gpu_ch_first = device_frame.permute(2, 0, 1).contiguous() - else: - gpu_ch_first = device_frame.contiguous() + # with torch.cuda.stream(self.processing_stream): + if ( + hasattr(self, "processing_stream") + and self.processing_stream is not None + ): + torch.cuda.set_stream(self.processing_stream) + if device_frame.shape[-1] == 3: + gpu_ch_first = device_frame.permute(2, 0, 1).contiguous() + else: + gpu_ch_first = device_frame.contiguous() - self.gpu_float_staging[0, :, :, :].copy_( - gpu_ch_first, non_blocking=True - ) + self.gpu_float_staging[0, :, :, :].copy_( + gpu_ch_first, non_blocking=True + ) - gpu_resized = F.interpolate( - self.gpu_float_staging, - size=(self.resize_h, self.resize_w), - mode="bilinear", - align_corners=False, - ).squeeze(0) + gpu_resized = F.interpolate( + self.gpu_float_staging, + size=(self.resize_h, self.resize_w), + # mode="bilinear", + # align_corners=False, + mode="nearest", + ).squeeze(0) - gpu_final = gpu_resized.clamp(0, 255).to(torch.uint8) + gpu_final = gpu_resized.clamp(0, 255).to(torch.uint8) - # If the tensor shape follows PyTorch's standard format (Channels, Height, Width), - # we reverse the channel order [0, 1, 2] to [2, 1, 0] (RGB -> BGR) - if gpu_final.ndim == 3 and gpu_final.shape[0] == 3: - gpu_final = gpu_final[[2, 1, 0], :, :] + # If the tensor shape follows PyTorch's standard format (Channels, Height, Width), + # we reverse the channel order [0, 1, 2] to [2, 1, 0] (RGB -> BGR) + if gpu_final.ndim == 3 and gpu_final.shape[0] == 3: + gpu_final = gpu_final[[2, 1, 0], :, :] - gpu_contiguous = gpu_final.permute(1, 2, 0).contiguous() + gpu_contiguous = gpu_final.permute(1, 2, 0).contiguous() - active_tensor = self.pinned_tensors[self.gpu_ring_idx] - active_tensor.copy_(gpu_contiguous, non_blocking=True) + active_tensor = self.pinned_tensors[self.gpu_ring_idx] + active_tensor.copy_(gpu_contiguous, non_blocking=True) if self.slot_events is not None: self.slot_events[self.gpu_ring_idx].record(self.processing_stream) - self.write_queue.put( - { - "ring_slot_idx": self.gpu_ring_idx, - "frame_num": frame_num, - "pipe_handle": self.video_writer, - } - ) + # with self.write_queue_backlog_counter.get_lock(): + # self.write_queue_backlog_counter.value += 1 + # self.write_queue.put( + # { + # "ring_slot_idx": self.gpu_ring_idx, + # "frame_num": frame_num, + # "pipe_handle": self.video_writer, + # } + # ) + try: + # Put the NumPy array directly into the queue + self.write_queue.put_nowait(active_tensor) + + # (Optional) Increment your backlog counter if you still use it + with self.write_queue_backlog_counter.get_lock(): + self.write_queue_backlog_counter.value += 1 + except queue.Full: + pass # Drop the frame if the writer process is lagging self.gpu_ring_idx = (self.gpu_ring_idx + 1) % self.ring_depth else: active_matrix = self.pinned_matrices[self.cpu_ring_idx] @@ -3688,22 +3821,202 @@ def _async_clipper_worker(self, device_frame, frame_num): interpolation=cv2.INTER_NEAREST, ) - self.write_queue.put( - { - "ring_slot_idx": self.cpu_ring_idx, - "frame_num": frame_num, - "pipe_handle": self.video_writer, - } + # with self.write_queue_backlog_counter.get_lock(): + # self.write_queue_backlog_counter.value += 1 + # self.write_queue.put( + # { + # "ring_slot_idx": self.cpu_ring_idx, + # "frame_num": frame_num, + # "pipe_handle": self.video_writer, + # } + # ) + try: + # Put the NumPy array directly into the queue + self.write_queue.put_nowait(active_matrix) + + # (Optional) Increment your backlog counter if you still use it + with self.write_queue_backlog_counter.get_lock(): + self.write_queue_backlog_counter.value += 1 + except queue.Full: + pass # Drop the frame if the writer process is lagging + + self.cpu_ring_idx = (self.cpu_ring_idx + 1) % self.ring_depth + + except Exception as e: + main_app_logger.info( + f"[CRITICAL-CLIPPER-WORKER] Resizing execution loop dropped: {e}", + ) + traceback.print_exc() + + finally: + # This worker handles large 8K frames. Deleting all local tensor + # references here is critical to prevent VRAM accumulation. + if "device_frame" in locals(): + del device_frame + if "gpu_ch_first" in locals(): + del gpu_ch_first + if "gpu_resized" in locals(): + del gpu_resized + if "gpu_final" in locals(): + del gpu_final + if "gpu_contiguous" in locals(): + del gpu_contiguous + + @torch.inference_mode() + def _async_clipper_worker(self, device_frame, frame_num): + """ + A worker that resizes a full-resolution frame and places it in a queue + for the video writer. Runs in a separate thread. + """ + # ring_idx = (frame_num - 1) % self.ring_depth + try: + # If a shutdown has started, attributes might be gone. Exit cleanly. + if ( + not self.active + or not hasattr(self, "processing_stream") + or self.processing_stream is None + ): + return + + if self.device_input == "cuda": + # with torch.cuda.stream(self.processing_stream): + if ( + hasattr(self, "processing_stream") + and self.processing_stream is not None + ): + torch.cuda.set_stream(self.processing_stream) + if device_frame.shape[-1] == 3: + gpu_ch_first = device_frame.permute(2, 0, 1).contiguous() + else: + gpu_ch_first = device_frame.contiguous() + + self.gpu_float_staging[0, :, :, :].copy_( + gpu_ch_first, non_blocking=True + ) + + gpu_resized = F.interpolate( + self.gpu_float_staging, + size=(self.resize_h, self.resize_w), + # mode="bilinear", + # align_corners=False, + mode="nearest", + ).squeeze(0) + + gpu_final = gpu_resized.clamp(0, 255).to(torch.uint8) + + # If the tensor shape follows PyTorch's standard format (Channels, Height, Width), + # we reverse the channel order [0, 1, 2] to [2, 1, 0] (RGB -> BGR) + if gpu_final.ndim == 3 and gpu_final.shape[0] == 3: + gpu_final = gpu_final[[2, 1, 0], :, :] + + gpu_contiguous = gpu_final.permute(1, 2, 0).contiguous() + + active_tensor = self.pinned_tensors[self.gpu_ring_idx] + active_tensor.copy_(gpu_contiguous, non_blocking=True) + + if self.slot_events is not None: + self.slot_events[self.gpu_ring_idx].record(self.processing_stream) + + # with self.write_queue_backlog_counter.get_lock(): + # self.write_queue_backlog_counter.value += 1 + # self.write_queue.put( + # { + # "ring_slot_idx": self.gpu_ring_idx, + # "frame_num": frame_num, + # "pipe_handle": self.video_writer, + # } + # ) + + # try: + # # Put the NumPy array directly into the queue + # self.write_queue.put_nowait(active_tensor) + + # # (Optional) Increment your backlog counter if you still use it + # with self.write_queue_backlog_counter.get_lock(): + # self.write_queue_backlog_counter.value += 1 + # except queue.Full: + # pass # Drop the frame if the writer process is lagging + + # 1. Get the next available ring buffer slot atomically + with self.clipper_idx_lock: + slot_idx = self.clipper_ring_idx.value + self.clipper_ring_idx.value = ( + self.clipper_ring_idx.value + 1 + ) % self.clipper_ring_depth + + # 2. Get the NumPy view for that slot and copy the data into it + target_buffer = self.clipper_shm_np_views[slot_idx] + np.copyto(target_buffer, active_tensor) + + # 3. Put the INTEGER INDEX into the queue (extremely fast) + self.write_queue.put_nowait(slot_idx) + + self.gpu_ring_idx = (self.gpu_ring_idx + 1) % self.ring_depth + else: + active_matrix = self.pinned_matrices[self.cpu_ring_idx] + cv2.resize( + device_frame, + (self.resize_w, self.resize_h), + dst=active_matrix, + interpolation=cv2.INTER_NEAREST, ) + + # with self.write_queue_backlog_counter.get_lock(): + # self.write_queue_backlog_counter.value += 1 + # self.write_queue.put( + # { + # "ring_slot_idx": self.cpu_ring_idx, + # "frame_num": frame_num, + # "pipe_handle": self.video_writer, + # } + # ) + + # try: + # # Put the NumPy array directly into the queue + # self.write_queue.put_nowait(active_matrix) + + # # (Optional) Increment your backlog counter if you still use it + # with self.write_queue_backlog_counter.get_lock(): + # self.write_queue_backlog_counter.value += 1 + # except queue.Full: + # pass # Drop the frame if the writer process is lagging + + # 1. Get the next available ring buffer slot atomically + with self.clipper_idx_lock: + slot_idx = self.clipper_ring_idx.value + self.clipper_ring_idx.value = ( + self.clipper_ring_idx.value + 1 + ) % self.clipper_ring_depth + + # 2. Get the NumPy view for that slot and copy the data into it + target_buffer = self.clipper_shm_np_views[slot_idx] + np.copyto(target_buffer, active_matrix) + + # 3. Put the INTEGER INDEX into the queue (extremely fast) + self.write_queue.put_nowait(slot_idx) + self.cpu_ring_idx = (self.cpu_ring_idx + 1) % self.ring_depth except Exception as e: - print( + main_app_logger.info( f"[CRITICAL-CLIPPER-WORKER] Resizing execution loop dropped: {e}", - flush=True, ) traceback.print_exc() + finally: + # This worker handles large 8K frames. Deleting all local tensor + # references here is critical to prevent VRAM accumulation. + if "device_frame" in locals(): + del device_frame + if "gpu_ch_first" in locals(): + del gpu_ch_first + if "gpu_resized" in locals(): + del gpu_resized + if "gpu_final" in locals(): + del gpu_final + if "gpu_contiguous" in locals(): + del gpu_contiguous + def _initialize_writer(self): """ Spawns a persistent background FFmpeg subprocess with native segment-splitting @@ -3751,7 +4064,7 @@ def _initialize_writer(self): self.clip_filename_pattern, ] - # print(f" [FFMPEG-INIT] Spawning binary pipeline targeted at: {self.clip_filename_pattern}", flush=True) + # main_app_logger.info(f" [FFMPEG-INIT] Spawning binary pipeline targeted at: {self.clip_filename_pattern}") try: # log_dir = "/home/logs" @@ -3769,9 +4082,8 @@ def _initialize_writer(self): bufsize=0, ) self.video_writer = self.ffmpeg_proc.stdin - print( + main_app_logger.info( " [FFMPEG-INIT] Subprocess online. Log stream parser engine initialization sequencing...", - flush=True, ) # Fire memory loop monitor @@ -3785,9 +4097,8 @@ def _initialize_writer(self): level="info", ) except Exception as e: - print( + main_app_logger.info( f"[CRITICAL-FFMPEG] Process spawn aborted at kernel boundary: {e}", - flush=True, ) self.video_writer = None @@ -3866,9 +4177,8 @@ def _ffmpeg_log_parser_loop(self): ) # Rest the polling thread to preserve CPU cycles if not file_stable: - print( + main_app_logger.info( f" [PARSER-WARN] IO Flush timeout exceeded for {completed_clip_key}. Forcing dispatch anyway.", - flush=True, ) # ========================================================================= @@ -3884,9 +4194,8 @@ def _ffmpeg_log_parser_loop(self): True ) if self.config.DEBUG_FLAG: - print( + main_app_logger.info( f"[PARSER] Memory pipe intercepted completed segment confirmation: {completed_clip_key}", - flush=True, ) # Run convergence evaluation pass @@ -3897,128 +4206,147 @@ def _ffmpeg_log_parser_loop(self): self.resize_h, ) except Exception as calc_err: - print( + main_app_logger.info( f"[PARSER-WARN] Index calculation lookback anomaly skipped: {calc_err}", - flush=True, ) except Exception as parse_err: - print( + main_app_logger.info( f"[PARSER-ERROR] Failed to extract target token patterns out of logging stream: {parse_err}", - flush=True, ) - continue - if self.config.DEBUG_FLAG: - print( - " [LOG-PARSER] Memory loop pipe interface closed down smoothly.", - flush=True, - ) - - def video_writer_core_loop(self, stop_evt): - """ - Thread-safe background min-heap consumer with adaptive sequence hole recovery. - """ - print( - " [WRITER-LOOP] Background tracking consumer loop active and polling memory queues...", - flush=True, - ) - try: - while not stop_evt.is_set() or not self.write_queue.empty(): - try: - data = None - try: - data = self.write_queue.get(timeout=0.02) - except (queue.Empty, AttributeError): - continue - - if data is None: - continue - - control_data = data.get("control") - if control_data == "FLUSH": - print( - " [WRITER-LOOP] Intercepted downstream engine flush token code signature.", - flush=True, - ) - if "pipe_handle" in data and data["pipe_handle"]: - try: - data["pipe_handle"].close() - except Exception: - pass - self.write_queue.task_done() - continue - - slot_target = data.get("ring_slot_idx") - sock_handle = data.get("pipe_handle") - # frame_num = data.get("frame_num") + continue + if self.config.DEBUG_FLAG: + main_app_logger.info( + " [LOG-PARSER] Memory loop pipe interface closed down smoothly.", + ) - if ( - sock_handle is None - and getattr(self, "video_writer", None) is not None - ): - sock_handle = self.video_writer - - if slot_target is not None and sock_handle is not None: - if self.device_input == "cuda" and self.slot_events is not None: - self.slot_events[slot_target].synchronize() - - if ( - self.ffmpeg_proc is None - or self.ffmpeg_proc.poll() is not None - ): - print( - " [WRITER-WARN] Downstream execution loop pipe was broken out-of-band. Launching recovery routine...", - flush=True, - ) - self._initialize_writer() - sock_handle = self.video_writer - if sock_handle is None: - self.write_queue.task_done() - continue + # def video_writer_core_loop(self, stop_evt): + # """Thread-safe background min-heap consumer with adaptive sequence hole recovery - try: - raw_buffer_view = memoryview( - self.pinned_matrices[slot_target] - ) - sock_handle.write(raw_buffer_view) - sock_handle.flush() + # and leak-proof lifecycle task tracking signals. + # """ + # main_app_logger.info( + # " [WRITER-LOOP] Background tracking consumer loop active and polling memory queues...", + # ) + # try: + # # Use a safe helper function to check if the queue is both active and not empty + # def is_queue_active_and_populated(): + # if self.write_queue is None: + # return False + # try: + # return not self.write_queue.empty() + # except (AttributeError, ValueError): + # # In case the queue was just destroyed by the main thread + # return False - except (OSError, ValueError) as pipe_err: - print( - f" [PIPE-ERROR] Write operation dropped on ring index slot {slot_target}: {pipe_err}", - flush=True, - ) - pass + # while not stop_evt.is_set() or not is_queue_active_and_populated(): + # try: + # data = None + # try: + # data = self.write_queue.get(timeout=0.02) + # except (queue.Empty, AttributeError): + # continue - self.write_queue.task_done() - else: - self.write_queue.task_done() + # if data is None: + # continue - except Exception as e: - print( - f"[WRITER-EXCEPTION] Worker engine cycle processing failure: {e}", - flush=True, - ) - continue + # # --- DETACHED PROCESSING LOGIC ENVELOPE ------------------ + # try: + # control_data = data.get("control") + # if control_data == "FLUSH": + # main_app_logger.info( + # " [WRITER-LOOP] Intercepted downstream engine flush token code signature.", + # ) + # if "pipe_handle" in data and data["pipe_handle"]: + # try: + # data["pipe_handle"].close() + # except Exception: + # pass + # continue + + # slot_target = data.get("ring_slot_idx") + # sock_handle = data.get("pipe_handle") + + # if ( + # sock_handle is None + # and getattr(self, "video_writer", None) is not None + # ): + # sock_handle = self.video_writer + + # if slot_target is not None and sock_handle is not None: + # if ( + # self.device_input == "cuda" + # and self.slot_events is not None + # ): + # self.slot_events[slot_target].synchronize() + + # if ( + # self.ffmpeg_proc is None + # or self.ffmpeg_proc.poll() is not None + # ): + # main_app_logger.info( + # " [WRITER-WARN] Downstream execution loop pipe was broken out-of-band. Launching recovery routine...", + # ) + # self.initialize_writer() + # sock_handle = self.video_writer + # if sock_handle is None: + # continue + + # try: + # raw_buffer_view = memoryview( + # self.pinned_matrices[slot_target] + # ) + # sock_handle.write(raw_buffer_view) + # sock_handle.flush() + # except (OSError, ValueError) as pipe_err: + # main_app_logger.info( + # f" [PIPE-ERROR] Write operation dropped on ring index slot {slot_target}: {pipe_err}", + # ) + # finally: + # if "raw_buffer_view" in locals(): + # del raw_buffer_view + + # del slot_target, sock_handle + + # with self.write_queue_backlog_counter.get_lock(): + # self.write_queue_backlog_counter.value -= 1 + # if ( + # self.write_queue_backlog_counter.value % 30 == 0 + # ): # Every ~2 seconds + # gc.collect() + # if torch.cuda.is_available(): + # torch.cuda.empty_cache() + + # # --- ENSURE PRECISE TASK TRACKING REGISTRATION ALLOCATION --- + # finally: + # if "data" in locals(): + # del data + # # This executes exactly once per queue iteration pass, completely + # # eliminating "task_done() called too many times" exceptions. + # self.write_queue.task_done() + + # except Exception as e: + # main_app_logger.info( + # f" [WRITER-EXCEPTION] Worker engine cycle processing failure: {e}", + # ) + # continue - try: - if hasattr(self, "socket_path") and os.path.exists(self.socket_path): - os.remove(self.socket_path) - except Exception: - pass + # if hasattr(self, "socket_path") and os.path.exists(self.socket_path): + # try: + # os.remove(self.socket_path) + # except Exception: + # pass - self.writer_done = True - print( - " [WRITER-LOOP] Thread pool queue completely drained. Processing safe exit termination sequence...", - flush=True, - ) + # self.writer_done = True + # main_app_logger.info( + # " [WRITER-LOOP] Thread pool queue completely drained. Processing safe exit termination sequence...", + # ) - except Exception as fatal_err: - print( - f"[FATAL-WRITER-CRASH] Unhandled background crash: {fatal_err}", - flush=True, - ) - traceback.print_exc() + # except Exception as fatal_err: + # main_app_logger.info( + # f"[FATAL-WRITER-CRASH] Unhandled background crash: {fatal_err}", + # ) + # traceback.print_exc() def _evaluate_barrier_and_dispatch(self, clip_key, clip_path, frame_w, frame_h): """ @@ -4039,14 +4367,23 @@ def _evaluate_barrier_and_dispatch(self, clip_key, clip_path, frame_w, frame_h): # Check convergence layout: Trigger upload sequence only if both pipelines sealed operations if tracker["video"] and tracker["meta"]: if self.config.DEBUG_FLAG: - print( + main_app_logger.info( f" [BARRIER-CONVERGENCE] Fully synchronized state reached for asset: {clip_key}", - flush=True, ) # Extract and unmap metadata tracking payloads safely from shared RAM memory space - clip_metadata = all_metadata.pop(clip_key, None) - clip_completion_tracker.pop(clip_key, None) + # clip_metadata = all_metadata.pop(clip_key, None) + # clip_completion_tracker.pop(clip_key, None) + clip_metadata = all_metadata.get(clip_key) + # Immediately delete the data from the global dictionaries to release VRAM + if clip_key in all_metadata: + del all_metadata[clip_key] + if clip_key in clip_completion_tracker: + del clip_completion_tracker[clip_key] + + gc.collect() + if "cuda" in self.device_input: + torch.cuda.empty_cache() if not self.config.TEST_MODE and clip_metadata: # Re-insert the fully constructed framework into the active VDMS queue worker pool @@ -4059,14 +4396,12 @@ def _evaluate_barrier_and_dispatch(self, clip_key, clip_path, frame_w, frame_h): global send_metadata_queue send_metadata_queue.put((clip_path, frame_w, frame_h)) - print( + main_app_logger.info( f" [BARRIER-INGEST] Unified data packages successfully submitted for DB processing: {clip_key}", - flush=True, ) elif not self.config.TEST_MODE: - print( + main_app_logger.info( f" [BARRIER-WARN] Synchronization completed but all_metadata structure for {clip_key} was empty!", - flush=True, ) elif not self.config.TEST_MODE: waiting_on = ( @@ -4074,208 +4409,12 @@ def _evaluate_barrier_and_dispatch(self, clip_key, clip_path, frame_w, frame_h): if not tracker["video"] else "AI frame processing execution" ) - print( + main_app_logger.info( f" [BARRIER-WAIT] {clip_key}: Milestone checked. Awaiting {waiting_on} before issuing DB ingestion call.", - flush=True, ) class GPUStreamHandler(DeviceBaseHandler): - def allocate_gpu(self): - """ - Allocates persistent GpuMat buffers and CUDA streams to - enable zero-copy GPU processing. - """ - self.stream = cv2.cuda.Stream() - self.ingest_stream = torch.cuda.Stream() - self.inference_stream = torch.cuda.Stream() - self.bgs_stream = cv2.cuda.Stream() - self.gpu_fullres_frame = cv2.cuda.GpuMat( - self.frame_height, self.frame_width, cv2.CV_8UC3 - ) - # self.resized_gpumat = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_8UC3) - self.resized_frame = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_8UC3) - self.resized_frame.setTo(0, self.bgs_stream) - self.fgMask = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_8UC1) - self.prev_bkgd = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_8UC1) - if self.config.BKGD_SUB_INCLUDE_HISTORY_METHOD == "and": - self.prev_bkgd.setTo((1,)) - else: - self.prev_bkgd.setTo((0,)) - self.mask_history = deque( - maxlen=self.config.BKGD_SUB_INCLUDE_HISTORY_TEMPORAL_SIZE - ) - self.mask_history.append(self.prev_bkgd) - self.gpu_threshold_dst_frame = cv2.cuda.GpuMat( - self.resize_h, self.resize_w, cv2.CV_8UC1 - ) - self.gpu_morphed_frame = cv2.cuda.GpuMat( - self.resize_h, self.resize_w, cv2.CV_8UC1 - ) - - self.upload_stream = cv2.cuda.Stream() - self.upload_event = cv2.cuda.Event() - - # self.queue_capacity = int(2 * self.target_fps) # 60 - self.num_buffers = int(2 * self.target_fps) # self.queue_capacity + 5 - self.gpu_buffer_pool = [ - cv2.cuda.GpuMat(self.frame_height, self.frame_width, cv2.CV_8UC3) - for _ in range(self.num_buffers) - ] - self.buffer_idx = 0 - - self.frame_buffer_pool = [ - torch.empty( - (3, self.frame_height, self.frame_width), - dtype=torch.uint8, - device="cuda", - ) - for _ in range(2) - ] - self.pool_idx = 0 - - # Create a matching pool of pinned host memory for the 8K frames - self.host_buffer_pool = [ - cv2.cuda.HostMem(self.frame_height, self.frame_width, cv2.CV_8UC3) - for _ in range(self.num_buffers) - ] - - # Create continuous buffers to prevent stride artifacts during 8K downloads - self.pinned_downloaded_resizedframe_np = cv2.cuda.createContinuous( - self.resize_h, self.resize_w, cv2.CV_8UC3 - ) - self.pinned_downloaded_frame_np = cv2.cuda.createContinuous( - self.resize_h, self.resize_w, cv2.CV_8UC1 - ) - cv2.cuda.createContinuous( - self.resize_h, self.resize_w, cv2.CV_8UC1, self.gpu_threshold_dst_frame - ) - cv2.cuda.createContinuous( - self.resize_h, self.resize_w, cv2.CV_8UC1, self.gpu_morphed_frame - ) - - # This prevents the AI thread from overwriting the encoder's data. - self.gpu_encoder_8k_buf = cv2.cuda.createContinuous( - self.frame_height, self.frame_width, cv2.CV_8UC3 - ) - - # Continuous allocation prevents stride/padding artifacts - self.gpu_display_frame = cv2.cuda.createContinuous( - self.disp_h, self.disp_w, cv2.CV_8UC3 - ) - - # Create a dedicated background stream for encoding tasks - self.encode_stream = cv2.cuda.Stream() - - # Allocate a permanent float32/float16 channel layout space directly on VRAM - self.static_gpu_360p = torch.empty( - (1, 3, self.disp_h, self.disp_w), - dtype=torch.float32, - device="cuda", - ) - self.static_gpu_byte_bchw = torch.empty( - (1, 3, self.disp_h, self.disp_w), - dtype=torch.uint8, - device="cuda", - ).contiguous() - - # Create two isolated tracking canvases to handle the ping-pong data stream - self.static_host_canvases = [ - np.zeros((self.disp_h, self.disp_w, 3), dtype=np.uint8), - np.zeros((self.disp_h, self.disp_w, 3), dtype=np.uint8), - ] - self.canvas_selector = 0 - - # Register BOTH buffers as page-locked memory - cv2.cuda.registerPageLocked(self.static_host_canvases[0]) - cv2.cuda.registerPageLocked(self.static_host_canvases[1]) - - def prepare_gpu_pipeline(self): - self.operation_device_map = PipelineMapping( - resize_device="gpu", - bkgd_subtraction_device="gpu", - threshold_device="gpu", - erodeAndDilate_device="gpu", - detection_device="gpu", - ) # rbtd_detection_gpu - - self.device_input = "cuda" - - self.allocate_gpu() - - # Subtraction - # history = int(2 * self.target_fps) # 300 # int(5 * self.target_fps) - self.lr = self.config.BKGD_SUB_MOG2_LR # 1 / history - self.backSub = cv2.cuda.createBackgroundSubtractorMOG2( - history=self.config.BKGD_SUB_MOG2_HISTORY, # Clear ghosts of fast drones in ~2 seconds (2*fps) - varThreshold=int( - 1.15 * self.config.BKGD_SUB_MOG2_VARTHRESHOLD - ), # High threshold to ignore "shimmer" and compression noise # default 16 - # CUDA implementation of MOG2 often requires a higher varThreshold to achieve the same "cleanliness" as the CPU (15-20%) - detectShadows=self.config.BKGD_SUB_MOG2_DETECTSHADOWS, # default True - ) - - self.dilate_filter = cv2.cuda.createMorphologyFilter( - cv2.MORPH_DILATE, cv2.CV_8U, self.dilate_kernel - ) - self.dilate_filter_for_enhanced_mask = cv2.cuda.createMorphologyFilter( - cv2.MORPH_DILATE, cv2.CV_8UC1, self.dilate_kernel_for_enhanced_mask - ) - # # self.morph_kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5, 5)) - # self.morph_kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5)) - # self.morph_filter = cv2.cuda.createMorphologyFilter( - # cv2.MORPH_DILATE, cv2.CV_8UC1, self.morph_kernel - # ) - # self.labels_gpu = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_32S) - self.labels_gpu = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_8U) - self.labels_gpu.setTo(0, self.bgs_stream) - - def gpu_warmup(self): - # WARM UP (Crucial for first-run latency) - # JIT kernels are compiled on the first call - h, w = self.resize_h, self.resize_w - - self.gpu_warmup_input_frame_np = cv2.cuda.createContinuous(h, w, cv2.CV_8UC3) - - if self.gpu_warmup_input_frame_np is not None: - self.gpu_warmup_input_frame_np[:] = [255, 0, 0] - - gpu_warmup_input_frame = cv2.cuda.GpuMat(h, w, cv2.CV_8U) - gpu_warmup_input_frame.upload(self.gpu_warmup_input_frame_np) - cv2.cuda.createContinuous(h, w, cv2.CV_8U, gpu_warmup_input_frame) - - # Trigger compiler - gpu_warmup_frame = cv2.cuda.GpuMat(h, w, cv2.CV_8U) - cv2.cuda.createContinuous(h, w, cv2.CV_8U, gpu_warmup_frame) - - cv2.cuda.resize( - gpu_warmup_input_frame, - (self.resize_w, self.resize_h), - stream=self.stream, - dst=gpu_warmup_frame, - interpolation=cv2.INTER_NEAREST, - ) - # Thresholding - gpu_threshold_dst_frame = cv2.cuda.GpuMat(h, w, cv2.CV_8U) - cv2.cuda.createContinuous(h, w, cv2.CV_8U, gpu_threshold_dst_frame) - cv2.cuda.threshold( - gpu_warmup_frame, - self.config.THRESHOLD_VALUE, - self.config.THRESHOLD_MAX_VALUE, - cv2.THRESH_BINARY, - gpu_threshold_dst_frame, - self.stream, - ) - - gpu_morphed_frame = cv2.cuda.GpuMat(h, w, cv2.CV_8U) - cv2.cuda.createContinuous(h, w, cv2.CV_8U, gpu_morphed_frame) - self.dilate_filter.apply( - gpu_threshold_dst_frame, gpu_morphed_frame, self.stream - ) - self.stream.waitForCompletion() - - torch.cuda.empty_cache() - def cleanup_gpu(self): """ Explicitly releases all GPU-allocated memory to prevent @@ -4290,7 +4429,7 @@ def cleanup_gpu(self): # 🏎️ Force the NVIDIA driver to deallocate this specific memory segment attr_value.release() setattr(self, attr_name, None) - print(f"✅ Released GpuMat: {attr_name}") + main_app_logger.info(f"✅ Released GpuMat: {attr_name}") if hasattr(self, "gpu_fullres_frame") and self.gpu_fullres_frame is not None: try: @@ -4328,8 +4467,8 @@ def cleanup_gpu(self): mat.release() self.gpu_crop_batch = [] - if hasattr(self, "stream"): - self.stream.waitForCompletion() + # if hasattr(self, "stream"): + # self.stream.waitForCompletion() self.pinned_downloaded_resizedframe_np = None self.gpu_threshold_dst_frame = None @@ -4346,549 +4485,21 @@ def cleanup_gpu(self): # Optional: Final flush of the CUDA caching allocator if torch.cuda.is_available(): + torch.cuda.synchronize() torch.cuda.empty_cache() - def apply_background_subtraction_gpuv1( - self, include_history=True, method="and", stream=None - ): - stream = stream if isinstance(stream, cv2.cuda.Stream) else self.stream - self.fgMask = self.backSub.apply( - self.resized_frame, float(self.lr), stream=stream - ) - - if include_history: - # If this is the first run, clone the mask instead of ANDing with an empty/white buffer - # if len(self.mask_history) < 1: - # self.prev_bkgd.setTo(255, stream) # Clear the initial white buffer - - for m in list(self.mask_history): - # Dilate the historical mask on GPU - dilated = self.dilate_filter_for_enhanced_mask.apply(m, stream=stream) - - if method == "or": - # Bitwise OR on GPU - cv2.cuda.bitwise_or( - self.prev_bkgd, dilated, self.prev_bkgd, stream=stream - ) - else: - # Bitwise AND on GPU - cv2.cuda.bitwise_and( - self.prev_bkgd, dilated, self.prev_bkgd, stream=stream - ) - - self.mask_history.append(self.fgMask.clone()) - - min_val, max_val, _, _ = cv2.cuda.minMaxLoc(self.prev_bkgd) - if max_val != min_val and max_val > 0: - # bitor = cv2.cuda.bitwise_or( - # self.fgMask, self.prev_bkgd, stream=stream - # ) - # bitand = cv2.cuda.bitwise_and( - # self.fgMask, self.prev_bkgd, stream=stream - # ) - # not_bitand = cv2.cuda.bitwise_not(self.prev_bkgd, stream=stream) - # self.fgMask = cv2.cuda.subtract(self.fgMask, bitand, stream=stream) - self.fgMask = cv2.cuda.bitwise_or( - self.fgMask, self.prev_bkgd, stream=stream - ) - # self.fgMask = cv2.cuda.bitwise_or( - # self.fgMask, self.mask_history[-2], stream=stream - # ) - # if method == "or": - # self.fgMask = cv2.cuda.bitwise_and( - # self.fgMask, self.prev_bkgd, stream=stream - # ) - # else: - # self.fgMask = cv2.cuda.bitwise_or( - # self.fgMask, self.prev_bkgd, stream=stream - # ) - - def apply_background_subtraction_gpu( - self, motion_input, include_history=True, method="and", stream=None - ): - stream = stream if isinstance(stream, cv2.cuda.Stream) else self.stream - raw_mask = self.backSub.apply( - motion_input, - 0.005, # float(self.lr), - stream=stream, - ) - - if include_history: - # If this is the first run, clone the mask instead of ANDing with an empty/white buffer - # if len(self.mask_history) < 1: - # self.prev_bkgd.setTo(255, stream) # Clear the initial white buffer - self.prev_bkgd.setTo(0, stream=self.bgs_stream) - for m in list(self.mask_history): - # Dilate the historical mask on GPU - dilated = self.dilate_filter_for_enhanced_mask.apply(m, stream=stream) - - if method == "or": - # Bitwise OR on GPU - cv2.cuda.bitwise_or( - self.prev_bkgd, dilated, self.prev_bkgd, stream=stream - ) - else: - # Bitwise AND on GPU - cv2.cuda.bitwise_and( - self.prev_bkgd, dilated, self.prev_bkgd, stream=stream - ) - - self.mask_history.append(raw_mask.clone()) - raw_mask = cv2.cuda.bitwise_or( - raw_mask, self.prev_bkgd, stream=self.bgs_stream - ) - return raw_mask - - # min_val, max_val, _, _ = cv2.cuda.minMaxLoc(self.prev_bkgd) - # if max_val != min_val and max_val > 0: - # # bitor = cv2.cuda.bitwise_or( - # # self.fgMask, self.prev_bkgd, stream=stream - # # ) - # # bitand = cv2.cuda.bitwise_and( - # # self.fgMask, self.prev_bkgd, stream=stream - # # ) - # # not_bitand = cv2.cuda.bitwise_not(self.prev_bkgd, stream=stream) - # # self.fgMask = cv2.cuda.subtract(self.fgMask, bitand, stream=stream) - # self.fgMask = cv2.cuda.bitwise_or( - # self.fgMask, self.prev_bkgd, stream=stream - # ) - # # self.fgMask = cv2.cuda.bitwise_or( - # # self.fgMask, self.mask_history[-2], stream=stream - # # ) - # # if method == "or": - # # self.fgMask = cv2.cuda.bitwise_and( - # # self.fgMask, self.prev_bkgd, stream=stream - # # ) - # # else: - # # self.fgMask = cv2.cuda.bitwise_or( - # # self.fgMask, self.prev_bkgd, stream=stream - # # ) - - def rbtd_full_gpuv1(self, frame): - """ - GPU-Accelerated Motion Detection Pipeline (Producer). - - This function performs high-speed background subtraction (BGS) on a downscaled - version of the 8K frame to identify regions of interest (ROIs). - - Args: - frame (np.ndarray): The raw 8K input frame. - frameNum (float): Chronological timestamp or ID. - - Returns: - dict: Contains the frame ID, the GPU-resident motion mask, and the original 8K frame. - """ - # stream = self.stream - - with torch.no_grad(): # , torch.cuda.stream(self.bgs_stream): - # frame is [3, 4320, 7680] - resized_torch = F.interpolate( - frame.unsqueeze(0).float(), - size=(self.resize_h, self.resize_w), - mode="nearest", - # mode="bilinear", - # align_corners=False, - ).squeeze(0) - # resized_torch = F.interpolate( - # frame.to(memory_format=torch.channels_last), - # size=(self.resize_h, self.resize_w), - # mode="nearest", - # # align_corners=False - # ) - - # CRITICAL: Change format from [3, 640, 640] to [640, 640, 3] - # .contiguous() is mandatory here to reorganize the actual memory bits - resized_torch = resized_torch.permute(1, 2, 0).byte().contiguous() - gpu_mat_view = cv2.cuda.createGpuMatFromCudaMemory( - self.resize_h, self.resize_w, cv2.CV_8UC3, resized_torch.data_ptr() - ) - - # Bridge the TINY 640p frame to OpenCV - # Moving 8K (100MB) to CPU takes 114ms. - # Moving 640p (1.2MB) to CPU takes <0.2ms. - # This preserves your 15 FPS target. - # small_cpu = resized_torch.permute(1, 2, 0).cpu().numpy() - # self.resized_frame.upload(small_cpu) - # gpu_mat_bridge = torch2gpumat(resized_torch.byte()) - gpu_mat_view.copyTo(self.bgs_stream, self.resized_frame) - self.apply_background_subtraction_gpu( - include_history=self.config.BKGD_SUB_INCLUDE_HISTORY, - method=self.config.BKGD_SUB_INCLUDE_HISTORY_METHOD, - stream=self.bgs_stream, - ) - - # Clean up the motion mask using Thresholding and Morphology (Dilation) - # Fused Cleanup (Threshold + Dilate) - # This replaces: cv2.cuda.threshold AND cv2.cuda.dilate - w, h = self.fgMask.size() - pitch = self.fgMask.step - tpb = (16, 16) - bpg = ((w + 15) // 16, (h + 15) // 16) - - # Bridge GpuMat to CuPy for the kernel - fg_ptr = self.fgMask.cudaPtr() - with cupy.cuda.ExternalStream(self.bgs_stream.cudaPtr()): - fg_cp = cupy.ndarray( - (h, w), - dtype=cupy.uint8, - memptr=cupy.cuda.MemoryPointer( - cupy.cuda.UnownedMemory(fg_ptr, pitch * h, self), 0 - ), - strides=(pitch, 1), - ) - - # Launch Fused Kernel - labels_ptr = self.labels_gpu.cudaPtr() - # Ensure this matches the size of fg_cp - labels_cp = cupy.ndarray( - (h, w), - dtype=cupy.uint8, - memptr=cupy.cuda.MemoryPointer( - cupy.cuda.UnownedMemory(labels_ptr, self.labels_gpu.step * h, self), - 0, - ), - strides=(self.labels_gpu.step, 1), - ) - # with cupy.cuda.ExternalStream(self.stream.cudaPtr()): - # Launch your kernel on the same physical GPU stream as OpenCV BGS - DETECTION_ACCEL_KERNEL( - bpg, - tpb, - (fg_cp, labels_cp, pitch, w, h, self.config.THRESHOLD_VALUE), - ) - # Ensure CuPy is done before the stream returns to OpenCV/PyTorch - # cupy.cuda.get_current_stream().synchronize() - - # if self.debug_range[0] <= self.frame_count <= self.debug_range[1]: - # after_cpu = self.labels_gpu.download() - # # Multiply by 50 to make distinct object labels visible - # visible_labels = (after_cpu * 50).clip(0, 255).astype(np.uint8) - # cv2.imwrite( - # f"{self.out_imgdir}/mask_AFTER_frame_{self.frame_count}.png", - # visible_labels, - # ) - - return { - # "frameNum": frameNum, # overall frame - "mask": self.labels_gpu, # GpuMat pointer to cleaned mask - # "full_frame": frame, # Kept for high-res cropping - "full_frame": frame, # current_gpu_frame, - } - - def rbtd_full_gpu(self, device_frame): - """ - Asynchronously handles downsampling, conversion, background subtraction, and - morphology while writing out intermediate files for stage-by-stage debugging. - """ - if self.config.DEBUG_FLAG: - # Create a dedicated directory structure for this stage's debug snapshots - stage_debug_dir = self.result_dir / "debug_stages" / self._testMethodName - stage_debug_dir.mkdir(parents=True, exist_ok=True) - f_num = self.frame_count_target - - # 1. BRIDGE THE PYTORCH TO OPENCV VRAM GAP (ZERO-COPY & STRIDE-ALIGNED) - if torch.is_tensor(device_frame): - h_raw, w_raw, ch = device_frame.shape - cuda_mem_ptr = device_frame.data_ptr() - cv_type = cv2.CV_8UC3 if ch == 3 else cv2.CV_8UC1 - - # Explicitly pass structural step row pitch to avoid memory tearing artifacts - row_step_bytes = device_frame.stride()[0] * device_frame.element_size() - src_gpu_mat = cv2.cuda.createGpuMatFromCudaMemory( - h_raw, w_raw, cv_type, cuda_mem_ptr, step=row_step_bytes - ) - else: - src_gpu_mat = device_frame - ch = src_gpu_mat.channels() - - # [STAGE 1 DEBUG] Save incoming source frame immediately after GpuMat mapping - if self.config.DEBUG_FLAG and f_num <= self.config.DEBUG_FRAME_LIMIT: - src_cpu = src_gpu_mat.download() - # If the source is in RGB, flip channels to BGR so cv2.imwrite saves true colors - if ch == 3: - src_cpu = cv2.cvtColor(src_cpu, cv2.COLOR_RGB2BGR) - cv2.imwrite( - str(stage_debug_dir / f"frame_{f_num:04d}_stage1_src.jpg"), src_cpu - ) - - # 2. INSTANTIATE GPUMAT CONTROLLERS WITH STRIDED LAYOUT HEADERS - recycled_resize_mat = cv2.cuda.GpuMat( - self.resize_h, self.resize_w, cv2.CV_8UC3 if ch == 3 else cv2.CV_8UC1 - ) - gray_resize_mat = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_8UC1) - raw_mask = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_8UC1) - thresh_mask = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_8UC1) - clean_mask = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_8UC1) - - # 3. RUN ASYNCHRONOUS DOWN-SAMPLING GATE - cv2.cuda.resize( - src_gpu_mat, - dst=recycled_resize_mat, - dsize=(self.resize_w, self.resize_h), - interpolation=cv2.INTER_NEAREST, - stream=self.bgs_stream, - ) - - # [STAGE 2 DEBUG] Check Downsampled Frame - if self.config.DEBUG_FLAG and f_num <= self.config.DEBUG_FRAME_LIMIT: - self.bgs_stream.waitForCompletion() # Synchronize stream briefly to download safely - resize_cpu = recycled_resize_mat.download() - if ch == 3: - resize_cpu = cv2.cvtColor(resize_cpu, cv2.COLOR_RGB2BGR) - cv2.imwrite( - str(stage_debug_dir / f"frame_{f_num:04d}_stage2_resize.jpg"), - resize_cpu, - ) - - # 4. COLOR LAYOUT CORRECTION (COLLAPSE CHANNELS SAFELY) - if recycled_resize_mat.channels() == 3: - # NOTE: If your input tensor is RGB, use COLOR_RGB2GRAY. - # If it's already converted to BGR inside your framework handlers, keep COLOR_BGR2GRAY. - cv2.cuda.cvtColor( - recycled_resize_mat, - cv2.COLOR_BGR2GRAY, - dst=gray_resize_mat, - stream=self.bgs_stream, - ) - motion_input = gray_resize_mat - else: - motion_input = recycled_resize_mat - - # [STAGE 3 DEBUG] Check Grayscale Input going into Background Subtractor - if self.config.DEBUG_FLAG and f_num <= self.config.DEBUG_FRAME_LIMIT: - self.bgs_stream.waitForCompletion() - gray_cpu = motion_input.download() - cv2.imwrite( - str(stage_debug_dir / f"frame_{f_num:04d}_stage3_gray.jpg"), gray_cpu - ) - - # 5. EXECUTE BACKGROUND SUBTRACTION - # raw_mask = self.backSub.apply( - # motion_input, - # 0.005, # float(self.lr) - # stream=self.bgs_stream, - # ) - - raw_mask = self.apply_background_subtraction_gpu( - motion_input, - include_history=self.config.BKGD_SUB_INCLUDE_HISTORY, - method=self.config.BKGD_SUB_INCLUDE_HISTORY_METHOD, - stream=self.bgs_stream, - ) - # [STAGE 4 DEBUG] Check Raw Output directly from Subtractor Kernel - # if self.config.DEBUG_FLAG and f_num <= self.config.DEBUG_FRAME_LIMIT: - # self.bgs_stream.waitForCompletion() - # raw_mask_cpu = raw_mask.download() - # cv2.imwrite(str(stage_debug_dir / f"frame_{f_num:04d}_stage4_raw_mask.jpg"), raw_mask_cpu) - - # 6. MASK HISTORY ACCUMULATION LIFECYCLE - # include_history = self.config.BKGD_SUB_INCLUDE_HISTORY - # method = self.config.BKGD_SUB_INCLUDE_HISTORY_METHOD - # if include_history: - # self.prev_bkgd.setTo(0, stream=self.bgs_stream) - # for m in list(self.mask_history): - # dilated = self.dilate_filter_for_enhanced_mask.apply( - # m, stream=self.bgs_stream - # ) - # if method == "or": - # cv2.cuda.bitwise_or( - # self.prev_bkgd, dilated, self.prev_bkgd, stream=self.bgs_stream - # ) - # else: - # cv2.cuda.bitwise_and( - # self.prev_bkgd, dilated, self.prev_bkgd, stream=self.bgs_stream - # ) - - # self.mask_history.append(raw_mask.clone()) - # raw_mask = cv2.cuda.bitwise_or( - # raw_mask, self.prev_bkgd, stream=self.bgs_stream - # ) - - # [STAGE 5 DEBUG] Check Mask after History ORing/ANDing steps - if self.config.DEBUG_FLAG and f_num <= self.config.DEBUG_FRAME_LIMIT: - self.bgs_stream.waitForCompletion() - hist_mask_cpu = raw_mask.download() - cv2.imwrite( - str(stage_debug_dir / f"frame_{f_num:04d}_stage5_history_mask.jpg"), - hist_mask_cpu, - ) - - # 7. MORPHOLOGICAL TRANSFORMATIONS & BINARY FILTERS - cv2.cuda.threshold( - raw_mask, - self.config.THRESHOLD_VALUE, - self.config.THRESHOLD_MAX_VALUE, - cv2.THRESH_BINARY, - thresh_mask, - stream=self.bgs_stream, - ) - - # [STAGE 6 DEBUG] Check Binary Threshold Output - if self.config.DEBUG_FLAG and f_num <= self.config.DEBUG_FRAME_LIMIT: - self.bgs_stream.waitForCompletion() - thresh_cpu = thresh_mask.download() - cv2.imwrite( - str(stage_debug_dir / f"frame_{f_num:04d}_stage6_threshold.jpg"), - thresh_cpu, - ) - - self.dilate_filter.apply(thresh_mask, clean_mask, self.bgs_stream) - - # 8. ENFORCE INDEPENDENT WORKSPACE MEMORY VIEWS - isolated_kernel_mask = cv2.cuda.GpuMat( - self.resize_h, self.resize_w, cv2.CV_8UC1 - ) - clean_mask.copyTo(dst=isolated_kernel_mask, stream=self.bgs_stream) - - # [STAGE 7 DEBUG] Check Final Dilated Output Mask - if self.config.DEBUG_FLAG and f_num <= self.config.DEBUG_FRAME_LIMIT: - self.bgs_stream.waitForCompletion() - final_mask_cpu = isolated_kernel_mask.download() - cv2.imwrite( - str(stage_debug_dir / f"frame_{f_num:04d}_stage7_final_mask.jpg"), - final_mask_cpu, - ) - - return { - "mask": isolated_kernel_mask, - "full_frame": device_frame, - } - - def findContours_gpu(self, mask, method="fused"): - # self.stream.waitForCompletion() - h, w = mask.size() - ptr = mask.cudaPtr() - pitch = mask.step - mask_cp = cupy.ndarray( - (h, w), - dtype=cupy.uint8, - memptr=cupy.cuda.MemoryPointer( - cupy.cuda.UnownedMemory(ptr, pitch * h, self), 0 - ), - strides=(pitch, 1), - ) - - labeled, num_labels = cupyx.scipy.ndimage.label(mask_cp, output=cupy.int32) - # labeled = labeled.astype(cupy.int32) - # labeled.strides is in bytes. For int32, we need row-start in bytes. - labeled_pitch_bytes = labeled.strides[0] - - if num_labels == 0: - return torch.empty((0, 4), device="cuda") - - # Pre-allocate bounds with sentinels - x1, y1 = ( - cupy.full((num_labels + 1,), w, dtype=cupy.int32), - cupy.full((num_labels + 1,), h, dtype=cupy.int32), - ) - x2, y2 = ( - cupy.full((num_labels + 1,), -1, dtype=cupy.int32), - cupy.full((num_labels + 1,), -1, dtype=cupy.int32), - ) - - # BOUNDS_KERNEL(((w+15)//16, (h+15)//16), (16, 16), (labeled, w, h, num_labels, x1, y1, x2, y2)) - BOUNDS_KERNEL( - ((w + 15) // 16, (h + 15) // 16), - (16, 16), - ( - labeled.data.ptr, - labeled_pitch_bytes, - w, - h, - num_labels, - x1.data.ptr, - y1.data.ptr, - x2.data.ptr, - y2.data.ptr, - ), - ) - # cupy.cuda.get_current_stream().synchronize() - # cupy.cuda.Stream.null.synchronize() - # Convert to torch - boxes = torch.stack( - [ - torch.as_tensor(x1[1:], device="cuda"), - torch.as_tensor(y1[1:], device="cuda"), - torch.as_tensor(x2[1:], device="cuda"), - torch.as_tensor(y2[1:], device="cuda"), - ], - dim=1, - ).float() - - # --- CRITICAL FIX: Filter out boxes that weren't updated by the kernel --- - # A valid box must have x2 >= x1 - valid_mask = boxes[:, 2] >= boxes[:, 0] - boxes = boxes[valid_mask] - - # if boxes.shape[0] > 0: - # print(f"[GPU] Found {boxes.shape[0]} boxes", flush=True) - return boxes - class CPUStreamHandler(DeviceBaseHandler): - def allocate_cpu(self): - # pass - self.resized_frame = np.zeros((3, self.resize_h, self.resize_w), dtype="uint8") - # cv2.cuda.createContinuous( - # self.resize_h, self.resize_w, cv2.CV_8UC3 - # ) - - self.fgMask = np.zeros( - (self.resize_h, self.resize_w), dtype="uint8" - ) # For resize - - if self.config.BKGD_SUB_INCLUDE_HISTORY_METHOD == "and": - self.prev_bkgd = np.ones( - (self.resize_h, self.resize_w), dtype="uint8" - ) # * 255 - else: - self.prev_bkgd = np.zeros((self.resize_h, self.resize_w), dtype="uint8") - - # self.prev_bkgd = np.ones((self.resize_h, self.resize_w), dtype="uint8") * 255 - - self.mask_history = deque( - maxlen=self.config.BKGD_SUB_INCLUDE_HISTORY_TEMPORAL_SIZE - ) - self.mask_history.append(self.prev_bkgd) - - def prepare_cpu_pipeline(self): # , method="mog2"): - self.operation_device_map = PipelineMapping() # "full_cpu" - self.device_input = self.operation_device_map.detection_device - - self.allocate_cpu() - - # Subtraction - # if method == "knn": - # history = 300 # int(5 * self.target_fps) - # background_thresh = 350 - # NSamples = 10 - # kNNSamples = 2 - # self.lr = 1 / history - - # self.backSub = cv2.createBackgroundSubtractorKNN( - # history=history, # default 500 - # dist2Threshold=background_thresh, # default 400 - # detectShadows=False, # default True - # ) - # self.backSub.setkNNSamples(kNNSamples) - # self.backSub.setNSamples(NSamples) - # elif method == "mog2": - # history = int(2 * self.target_fps) - # background_thresh = 10 - self.lr = self.config.BKGD_SUB_MOG2_LR - - self.backSub = cv2.createBackgroundSubtractorMOG2( - history=self.config.BKGD_SUB_MOG2_HISTORY, # Clear ghosts of fast drones in ~2 seconds (2*fps) - varThreshold=self.config.BKGD_SUB_MOG2_VARTHRESHOLD, # High threshold to ignore "shimmer" and compression noise # default 16 - detectShadows=self.config.BKGD_SUB_MOG2_DETECTSHADOWS, # default True - ) - # else: - # raise ValueError(f"Provided method ({method}) is not available.") - def cleanup_cpu(self): """ Purges large 8K NumPy buffers and CPU-based AI resources. """ + self._pinned_small_frame = None + self._pinned_fg_mask = None + self._pinned_blurred_mask = None + self._pinned_threshold_mask = None + self._pinned_dilated_mask = None + # Nullify specific class references to allow Garbage Collection self.executor = None self.clip_executor = None @@ -4907,225 +4518,3 @@ def cleanup_cpu(self): # Clear the BGS history if hasattr(self, "mask_history"): self.mask_history.clear() - - def apply_background_subtraction_cpuv1(self, include_history=True, method="and"): - self.fgMask = self.backSub.apply( - self.cpu_resized_frame, learningRate=float(self.lr) - ) - - if include_history: - # If this is the first run, clone the mask instead of ANDing with an empty/white buffer - # if len(self.mask_history) < 1: - # self.prev_bkgd.setTo(0, stream) # Clear the initial white buffer - - for m in list(self.mask_history): - # Dilate the historical mask on CPU - dilated = cv2.dilate( - m, self.dilate_kernel_for_enhanced_mask, iterations=1 - ) - - if method == "or": - # Bitwise OR on CPU - cv2.bitwise_or(self.prev_bkgd, dilated, dst=self.prev_bkgd) - else: - # Bitwise AND on CPU - cv2.bitwise_and(self.prev_bkgd, dilated, dst=self.prev_bkgd) - - self.mask_history.append(self.fgMask.copy()) - - if ( - self.prev_bkgd.max() != self.prev_bkgd.min() - and self.prev_bkgd.max() > 0 - ): - combined_mask_bool = (self.fgMask > 0) | (self.prev_bkgd > 0) - self.fgMask = combined_mask_bool.astype(np.uint8) * 255 - - def apply_background_subtraction_cpu( - self, motion_input, include_history=True, method="and" - ): - raw_mask = self.backSub.apply( - motion_input, learningRate=self.config.BKGD_SUB_MOG2_LR - ) - - if include_history: - # If this is the first run, clone the mask instead of ANDing with an empty/white buffer - # if len(self.mask_history) < 1: - # self.prev_bkgd.setTo(0, stream) # Clear the initial white buffer - self.prev_bkgd = np.zeros((self.resize_h, self.resize_w), dtype="uint8") - for m in list(self.mask_history): - # Dilate the historical mask on CPU - dilated = cv2.dilate( - m, self.dilate_kernel_for_enhanced_mask, iterations=1 - ) - - if method == "or": - # Bitwise OR on CPU - cv2.bitwise_or(self.prev_bkgd, dilated, dst=self.prev_bkgd) - else: - # Bitwise AND on CPU - cv2.bitwise_and(self.prev_bkgd, dilated, dst=self.prev_bkgd) - - self.mask_history.append(raw_mask.copy()) - - # if ( - # self.prev_bkgd.max() != self.prev_bkgd.min() - # and self.prev_bkgd.max() > 0 - # ): - # combined_mask_bool = (self.fgMask > 0) | (self.prev_bkgd > 0) - # self.fgMask = combined_mask_bool.astype(np.uint8) * 255 - raw_mask = cv2.bitwise_or(raw_mask, self.prev_bkgd) - return raw_mask - - def rbtd_full_cpuv1(self, frame): - """ - CPU-Based Motion Detection Pipeline (Producer). - - Performs background subtraction on the CPU to identify moving objects. - Ideal for saving VRAM or for environments without high-end NVIDIA GPUs. - - Args: - frame (np.ndarray): The raw 8K input frame. - frameNum (float): Unique ID for the current frame. - - Returns: - dict: Motion data containing the frame ID, CPU-based mask, and original 8K frame. - """ - # Resize the 8K frame to a smaller 'model' size (e.g., 640x640) - # Using INTER_NEAREST as it is the fastest CPU interpolation method. - # H, W = self.resize_h, self.resize_w - self.cpu_resized_frame = cv2.resize( - frame, (self.resize_w, self.resize_h), interpolation=cv2.INTER_NEAREST - ) - # if self.config.ENABLE_QUERYING and self.video_writer: - # self.write_queue.put(self.cpu_resized_frame.copy()) - - # Apply Background Subtraction on CPU - self.apply_background_subtraction_cpu( - include_history=self.config.BKGD_SUB_INCLUDE_HISTORY, - method=self.config.BKGD_SUB_INCLUDE_HISTORY_METHOD, - ) - - # ---------------- - # NOISE FILTERING: Median Blur - # Kills small single-pixel noise specs - # self.fgMask = cv2.medianBlur(self.fgMask, 5) - - # # MORPHOLOGY: Opening (Erode then Dilate) - # kernel = np.ones((3,3), np.uint8) - - # # Remove small specs - # self.fgMask = cv2.erode(self.fgMask, kernel, iterations=2) - - # # Re-expand and connect nearby moving pixels - # self.fgMask = cv2.dilate(self.fgMask, kernel, iterations=2) - # return {"mask": self.fgMask, "full_frame": frame} - # ---------------- - - # Clean up the motion mask using Thresholding and Morphology (Dilation) - _, mask = cv2.threshold( - self.fgMask, - self.config.THRESHOLD_VALUE, - self.config.THRESHOLD_MAX_VALUE, - cv2.THRESH_BINARY, - ) - mask = cv2.dilate(mask, self.dilate_kernel, iterations=1) - - return { - # "frameNum": frameNum, # overall frame - "mask": mask, - "full_frame": frame, # Kept for high-res cropping - } - - # def rbtd_full_cpu(self, frame): - # # --- PHASE 1: NATIVE CACHE-PINNED RESIZE --- - # # Fetch the exact background resolution constraints natively required by your config - # # We assume self.resize_w and self.resize_h reflect your locked tracking target dimensions - # target_w, target_h = self.resize_w, self.resize_h - - # # Safe Multi-Threaded Canvas Initialization Guard: - # # Dynamically instantiate the static persistent memory matrices on the first frame pass. - # # This completely stops the Python heap engine from allocating new arrays on subsequent frames. - # if not hasattr(self, "_pinned_small_frame") or self._pinned_small_frame.shape[ - # :2 - # ] != (target_h, target_w): - # self._pinned_small_frame = np.zeros((target_h, target_w, 3), dtype=np.uint8) - # self._pinned_fg_mask = np.zeros((target_h, target_w), dtype=np.uint8) - # self._pinned_dilated_mask = np.zeros((target_h, target_w), dtype=np.uint8) - # self._pinned_global_mask = np.zeros(frame.shape[:2], dtype=np.uint8) - - # # Force a zero-allocation resize into our pre-allocated, sequential cache-line matrix buffer - # cv2.resize( - # frame, - # (target_w, target_h), - # dst=self._pinned_small_frame, - # interpolation=cv2.INTER_NEAREST, - # ) - - # # --- PHASE 2: STRIPPED SINGLE-THREAD BACKGROUND ARITHMETIC --- - # # Run background subtraction straight into our static memory address lane - # # We pass your configured learning rate (BKGD_SUB_MOG2_LR) to lock the temporal parameters - # self._pinned_fg_mask = self.backSub.apply( - # self._pinned_small_frame, - # # dst=self._pinned_fg_mask, - # learningRate=self.config.BKGD_SUB_MOG2_LR, - # ) - - # # Execute morphology dilation inline within our zero-allocation ring workspace [PDF: 0.1.18] - # cv2.dilate( - # self._pinned_fg_mask, - # self.dilate_kernel, - # dst=self._pinned_dilated_mask, - # iterations=1, - # ) - - # return {"full_frame": frame, "mask": self._pinned_dilated_mask} - - def rbtd_full_cpu(self, frame): - # --- PHASE 1: NATIVE CACHE-PINNED RESIZE --- - # Fetch the exact background resolution constraints natively required by your config - # We assume self.resize_w and self.resize_h reflect your locked tracking target dimensions - target_w, target_h = self.resize_w, self.resize_h - - # Safe Multi-Threaded Canvas Initialization Guard: - # Dynamically instantiate the static persistent memory matrices on the first frame pass. - # This completely stops the Python heap engine from allocating new arrays on subsequent frames. - if not hasattr(self, "_pinned_small_frame") or self._pinned_small_frame.shape[ - :2 - ] != (target_h, target_w): - self._pinned_small_frame = np.zeros((target_h, target_w, 3), dtype=np.uint8) - self._pinned_fg_mask = np.zeros((target_h, target_w), dtype=np.uint8) - self._pinned_dilated_mask = np.zeros((target_h, target_w), dtype=np.uint8) - self._pinned_global_mask = np.zeros(frame.shape[:2], dtype=np.uint8) - - # Force a zero-allocation resize into our pre-allocated, sequential cache-line matrix buffer - cv2.resize( - frame, - (target_w, target_h), - dst=self._pinned_small_frame, - interpolation=cv2.INTER_NEAREST, - ) - - # --- PHASE 2: STRIPPED SINGLE-THREAD BACKGROUND ARITHMETIC --- - # Run background subtraction straight into our static memory address lane - # We pass your configured learning rate (BKGD_SUB_MOG2_LR) to lock the temporal parameters - # self._pinned_fg_mask = self.backSub.apply( - # self._pinned_small_frame, - # # dst=self._pinned_fg_mask, - # learningRate=self.config.BKGD_SUB_MOG2_LR, - # ) - - self._pinned_fg_mask = self.apply_background_subtraction_cpu( - self._pinned_small_frame, - include_history=self.config.BKGD_SUB_INCLUDE_HISTORY, - method=self.config.BKGD_SUB_INCLUDE_HISTORY_METHOD, - ) - - # Execute morphology dilation inline within our zero-allocation ring workspace [PDF: 0.1.18] - cv2.dilate( - self._pinned_fg_mask, - self.dilate_kernel, - dst=self._pinned_dilated_mask, - iterations=1, - ) - - return {"full_frame": frame, "mask": self._pinned_dilated_mask} diff --git a/fastapi/include/models.py b/fastapi/include/models.py index a20792c..3be6e20 100644 --- a/fastapi/include/models.py +++ b/fastapi/include/models.py @@ -6,13 +6,13 @@ from pathlib import Path import tensorrt as trt +from torch import cuda +from ultralytics import YOLO +from ultralytics.utils.checks import check_requirements sys.path.insert(1, str(Path(__file__).parent.parent)) from include.default_configs import ENABLE_QUERYING_DEFAULT from include.utils import PipelineConfig, get_freest_gpu, str2bool -from torch import cuda -from ultralytics import YOLO -from ultralytics.utils.checks import check_requirements # OBJECT DETECTION diff --git a/fastapi/include/readers.py b/fastapi/include/readers.py index dc89d23..c08b7e1 100644 --- a/fastapi/include/readers.py +++ b/fastapi/include/readers.py @@ -1,12 +1,20 @@ +# ============================================================================== +# IMPORTS import ctypes +import gc +import inspect import logging +import multiprocessing as mp import os -import queue +import signal import sys import threading import time -from multiprocessing import Process, Value +import types +from collections import deque +from multiprocessing import Condition, Process, Value from multiprocessing.shared_memory import SharedMemory +from pathlib import Path import av import cv2 @@ -14,28 +22,36 @@ import torch from ultralytics.utils.checks import check_imgsz -# ----- SETUP LOGGING ----- +sys.path.insert(1, str(Path(__file__).parent.parent)) +from include.default_configs import ENABLE_QUERYING_DEFAULT +from include.utils import ( + PipelineConfig, + ResourceTrackerFilter, + manual_fps_calculation, + str2bool, +) + +# ============================================================================== +# LOGGING + logging.basicConfig( level=logging.INFO, - format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", + # format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", + format="%(asctime)s [%(levelname)s] %(name)s (%(filename)s:%(lineno)d) - %(message)s", handlers=[logging.StreamHandler(sys.stdout)], ) -# Suppress low-delay reference block warnings from OpenCV/PyAV/FFmpeg -os.environ["OPENCV_FFMPEG_LOGLEVEL"] = "-8" -os.environ["OPENCV_LOG_LEVEL"] = "OFF" logging.getLogger("libav").setLevel(logging.CRITICAL) logging.getLogger("libav.hevc").setLevel(logging.CRITICAL) av.logging.set_level(av.logging.PANIC) main_app_logger = logging.getLogger(__name__) -# ----- PIPELINE CONFIGURATION ----- -os.environ["PYTORCH_ALLOC_CONF"] = "expandable_segments:True" -cv2.setNumThreads(0) -from include.default_configs import ENABLE_QUERYING_DEFAULT -from include.utils import PipelineConfig, manual_fps_calculation, str2bool +# ============================================================================== +# PIPELINE CONFIGURATION + +cv2.setNumThreads(0) BASE_PIPELINE_CONFIG = PipelineConfig( CODE_DIR=os.getenv("CODE_DIR", "/home"), @@ -55,86 +71,9 @@ UDF_PORT=5011, ) -# def capture_shared_memory_worker(source_input, shm_name, frame_shape, running_flag): -# """Isolated background process bypassing the GIL to update raw uncompressed RAM.""" -# if str(source_input).lower().startswith("rtsp://"): -# os.environ["OPENCV_FFMPEG_CAPTURE_OPTIONS"] = "rtsp_transport;tcp;buffer_size;15728640;threads;16" -# elif "OPENCV_FFMPEG_CAPTURE_OPTIONS" in os.environ: -# del os.environ["OPENCV_FFMPEG_CAPTURE_OPTIONS"] - -# cap = cv2.VideoCapture(source_input, cv2.CAP_FFMPEG) -# if not cap.isOpened(): -# running_flag.value = False -# return - -# existing_shm = SharedMemory(name=shm_name) -# shared_array = np.ndarray(frame_shape, dtype=np.uint8, buffer=existing_shm.buf) - -# try: -# while running_flag.value: -# ret, frame = cap.read() -# if not ret or frame is None: -# running_flag.value = False -# break -# shared_array[:] = frame[:] -# except Exception: -# running_flag.value = False -# finally: -# cap.release() -# existing_shm.close() - -import sys - -# Self-contained worker script executed in an isolated process shell to prevent global CUDA import pollution -# WORKER_SCRIPT = """ -# import os -# import sys -# import cv2 -# import numpy as np -# from multiprocessing.shared_memory import SharedMemory -# source_input = sys.argv[1] -# shm_name = sys.argv[2] -# h, w, c = map(int, sys.argv[3].split(',')) -# frame_shape = (h, w, c) -# retry_cnt = 0 -# max_retries = 5 -# cap = None -# if str(source_input).lower().startswith("rtsp://"): -# os.environ["OPENCV_FFMPEG_CAPTURE_OPTIONS"] = "rtsp_transport;tcp;buffer_size;15728640;threads;16" -# while retry_cnt < max_retries: -# cap = cv2.VideoCapture(source_input, cv2.CAP_FFMPEG) -# if cap.isOpened(): -# break -# retry_cnt += 1 -# # Exit immediately if it's a local file path layout to save CPU cycles -# if not str(source_input).lower().startswith("rtsp://"): -# break -# wait_time = retry_cnt * 2 -# # Standard string stdout message to pass back to the tracking shell logs -# print(f"RTSP background channel pending... Retry ({retry_cnt}/{max_retries}) in {wait_time}s.") -# import time -# time.sleep(wait_time) -# if cap is None or not cap.isOpened(): -# import sys -# sys.exit(1) -# try: -# shm = SharedMemory(name=shm_name) -# shared_array = np.ndarray(frame_shape, dtype=np.uint8, buffer=shm.buf) -# # Read continuously until stdin is closed by the parent process -# while sys.stdin.read(1) == '1': -# ret, frame = cap.read() -# if not ret or frame is None: -# break -# shared_array[:] = frame[:] -# except Exception: -# pass -# finally: -# cap.release() -# """ -from multiprocessing import Condition - def capture_shared_memory_worker( + startup_event, source_input, shm_names, frame_shape, @@ -145,6 +84,8 @@ def capture_shared_memory_worker( frame_condition, buffer_occupancy, target_fps, + slot_available_event, + num_shm_slots, ): """Isolated background process using triple-buffering pointer rotation to eliminate memcpy.""" if str(source_input).lower().startswith("rtsp://"): @@ -156,6 +97,9 @@ def capture_shared_memory_worker( elif "OPENCV_FFMPEG_CAPTURE_OPTIONS" in os.environ: del os.environ["OPENCV_FFMPEG_CAPTURE_OPTIONS"] + if startup_event: + startup_event.wait() # Worker will pause here until the main app is ready + retry_cnt = 0 max_retries = 5 cap = None @@ -205,41 +149,73 @@ def capture_shared_memory_worker( while running_flag.value: # 1. Check if this frame is a targeted frame before running heavy decode operations is_target_frame = worker_frame_num >= worker_next_process_idx + raw_frame_counter.value = int(worker_frame_num) worker_frame_num += 1.0 if not is_target_frame: # Fast metadata-only skip: Zero heavy decode compute or CPU/GPU overhead if not cap.grab(): running_flag.value = False + with frame_condition: + frame_condition.notify_all() break + # raw_frame_counter.value += 1 continue ret, frame = cap.read() if not ret or frame is None: running_flag.value = False + with frame_condition: + frame_condition.notify_all() break worker_next_process_idx += step_size # Prevent local files from overwriting unread ring buffer slots --- + # if not str(source_input).lower().startswith("rtsp://"): + # # while buffer_occupancy.value >= 2 and running_flag.value: + # # pass + # with frame_condition: + # while buffer_occupancy.value >= 2 and running_flag.value: + # # Drop the thread into a low-power kernel sleep state + # frame_condition.wait(timeout=0.01) + + # Prevent local files from overwriting unread ring buffer slots losslessly + # if not str(source_input).lower().startswith("rtsp://"): + # if buffer_occupancy.value >= 2: + # slot_available_event.clear() # Lock the gate + # while buffer_occupancy.value >= 2 and running_flag.value: + # # Block instantly via kernel context without time-stepping drifts + # slot_available_event.wait(timeout=1.0) + if not str(source_input).lower().startswith("rtsp://"): - while buffer_occupancy.value >= 2 and running_flag.value: - pass + max_allowed_occupancy = num_shm_slots - 1 + while ( + buffer_occupancy.value >= max_allowed_occupancy + and running_flag.value + ): + time.sleep(0.001) # Dynamic Ring Buffer Selection: Identify free block curr_latest = latest_idx.value curr_reader = reader_idx.value - for idx in (0, 1, 2): + + write_idx = None + for idx in range(num_shm_slots): if idx != curr_latest and idx != curr_reader: write_idx = idx break + # Fallback if somehow all slots are locked (should theoretically never happen) + if write_idx is None: + write_idx = (curr_latest + 1) % num_shm_slots + arrays[write_idx][:] = frame[:] # Notify waiting processing loops without any polling latency with frame_condition: latest_idx.value = write_idx - raw_frame_counter.value += 1 + # raw_frame_counter.value += 1 buffer_occupancy.value += 1 frame_condition.notify_all() # Wake up all waiting reader threads instantly! @@ -247,14 +223,24 @@ def capture_shared_memory_worker( running_flag.value = False finally: cap.release() + + # Delete the memoryview-holding arrays first + del arrays + for shm in shm_blocks: - shm.close() + try: + shm.close() + except Exception: + pass + del shm_blocks + gc.collect() class BaseReader: def __init__( self, source, + startup_event=None, target_fps=BASE_PIPELINE_CONFIG.TARGET_FPS, clip_duration=BASE_PIPELINE_CONFIG.CLIP_DURATION, MODEL_W=BASE_PIPELINE_CONFIG.MODEL_W, @@ -263,7 +249,8 @@ def __init__( ): self.source = source self.is_rtsp = str(self.source).startswith("rtsp://") - self.frame_queue = queue.Queue(maxsize=queue_size) + # self.frame_queue = queue.Queue(maxsize=queue_size) + self.frame_queue = deque(maxlen=queue_size) self.stopped = False self.total_input_frames = 0 # Increments by step size (Physical frames) self.target_frames_passed = 0 # Increments sequentially (Target space frames) @@ -337,7 +324,6 @@ def __init__( raise RuntimeError( f"Critical stream reader initialization failure: {self.init_error}" ) - return wait_time = retry_cnt * 2 main_app_logger.warning( @@ -360,17 +346,13 @@ def __init__( self.frame_shape = (self.frame_height, self.frame_width, 3) self.frame_bytes = self.frame_width * self.frame_height * 3 - num_shm_slots = 3 + # Need exactly 3 slots to prevent a lock collision + num_shm_slots = max(3, queue_size) self.shms = [ SharedMemory(create=True, size=self.frame_bytes) for _ in range(num_shm_slots) ] - # Unregister slots in the main process to eliminate leak warnings and KeyErrors cleanly - # from multiprocessing import resource_tracker - # for shm in self.shms: - # resource_tracker.unregister(shm._name, "shared_memory") - self.running_flag = Value("b", True) self.raw_frame_counter = Value("i", 0) self.latest_idx = Value("i", 0) # Tracks the newest complete frame index @@ -381,10 +363,13 @@ def __init__( # Create a shared cross-process condition lock variable self.frame_condition = Condition() + self.slot_available_event = mp.Event() + self.slot_available_event.set() # Default to unblocked state self.worker = Process( target=capture_shared_memory_worker, args=( + startup_event, self.source, shm_names, self.frame_shape, @@ -395,6 +380,8 @@ def __init__( self.frame_condition, self.buffer_occupancy, self.target_fps, + self.slot_available_event, + num_shm_slots, ), daemon=True, ) @@ -409,18 +396,54 @@ def __init__( "Background worker process failed to map the stream link." ) - # self.shared_array_view = np.ndarray(self.frame_shape, dtype=np.uint8, buffer=self.shms.buf) - # self.static_buffer_numpy = np.empty(self.frame_shape, dtype=np.uint8) - - # self.thread = threading.Thread(target=self._processing_loop, daemon=True) - # self.thread.start() - def read(self): - try: - wait_time = 0.1 if self.stopped else 2.0 - return self.frame_queue.get(timeout=wait_time) - except Exception: - return None, None, None + """ + Optimized Kernel-Native Condition Event queue fetcher. + Parks the consumer thread instantly without CPU thrashing or GIL locks, + waking up on hardware-driven signals from the producer process. + """ + # Escape check: Stream explicitly halted and queue empty + if self.stopped and len(self.frame_queue) == 0: + return False, None, None, None, None + + # # 2. Native Hardware Wait Boundary + # # If the queue is starved, drop the thread into an un-polled kernel block + # if len(self.frame_queue) == 0 and not self.stopped: + # with self.frame_condition: + # # Re-verify inside the lock to safely block multi-thread race patterns + # while len(self.frame_queue) == 0 and not self.stopped: + # # Increase watchdog timeout from 2.0s to 10.0s for local file testing + # timeout_sec = 2.0 if self.is_rtsp else 10.0 + + # # Thread blocks via OS futex without time-stepping drift or context jitter. + # # Wakes up immediately when the processing loop fires notify_all(). + # if not self.frame_condition.wait(timeout=timeout_sec): + # # Watchdog trigger: 2 seconds of zero frame activity indicates a dead stream + # return ( + # False, + # None, + # None, + # self.target_frames_passed, + # self.total_input_frames, + # ) + + # Lock-Free Pop Extraction Pass + if len(self.frame_queue) > 0: + try: + return self.frame_queue.popleft() + except IndexError: + pass # Multi-thread race fallback guard rail + + # Brief non-blocking yield if queue is momentarily empty + if not self.stopped: + time.sleep(0.001) + if len(self.frame_queue) > 0: + try: + return self.frame_queue.popleft() + except IndexError: + pass + + return False, None, None, self.target_frames_passed, self.total_input_frames def start(self): self.thread = threading.Thread(target=self._processing_loop, daemon=True) @@ -428,21 +451,208 @@ def start(self): return self def stop(self): + """Cleanly unregisters the locked memory mapping blocks from the OS page table.""" + if self.stopped: + return + self.stopped = True - if hasattr(self, "thread"): - self.thread.join(timeout=1.0) - for shm in self.shms: + + # Signal the worker process to exit its loop + if hasattr(self, "running_flag"): + self.running_flag.value = False + + if hasattr(self, "worker") and self.worker is not None: try: - shm.close() - shm.unlink() + if self.worker.is_alive(): + self.worker.terminate() + self.worker.join(timeout=0.5) + # Execute an OS-level SIGKILL fallback if process flags hang + if self.worker.is_alive() and getattr(self.worker, "pid", None): + os.kill(self.worker.pid, signal.SIGKILL) + self.worker.join() + except Exception: + pass + self.worker = None + + # Join active processing pools and thread handles safely + if hasattr(self, "frame_condition") and self.frame_condition is not None: + try: + with self.frame_condition: + self.frame_condition.notify_all() except Exception: pass + self.frame_condition = None + + if hasattr(self, "thread") and self.thread is not None: + try: + if self.thread.is_alive(): + self.thread.join(timeout=0.5) + except Exception: + pass + self.thread = None + + # 6. Set and unbind OS-level Event notification primitive file descriptor pipelines + if ( + hasattr(self, "slot_available_event") + and self.slot_available_event is not None + ): + try: + self.slot_available_event.set() + if ( + hasattr(self.slot_available_event, "_handle") + and self.slot_available_event._handle + ): + self.slot_available_event._handle.close() + except Exception: + pass + self.slot_available_event = None + + # 7. Drain and empty the frame buffer queue completely + if hasattr(self, "frame_queue") and self.frame_queue is not None: + try: + while len(self.frame_queue) > 0: + self.frame_queue.popleft() + except Exception: + pass + self.frame_queue = None + + if hasattr(self, "shms") and self.shms: + for shm_block in list(self.shms): + try: + if hasattr(shm_block, "buf") and shm_block.buf is not None: + shm_block.buf.release() + except Exception: + pass + try: + shm_block.close() + except Exception: + pass + try: + shm_block.unlink() + except Exception: + pass + self.shms.clear() if hasattr(self, "bridge_thread"): self.bridge_thread.join(timeout=1.0) - if hasattr(self, "worker"): - self.worker.join(timeout=1.0) + for primitive_attr in [ + "running_flag", + "buffer_occupancy", + "latest_idx", + "reader_idx", + "raw_frame_counter", + ]: + if hasattr(self, primitive_attr): + setattr(self, primitive_attr, None) + + self.clean_up_tensors_and_arrays() + + def clean_up_tensors_and_arrays(self): + main_app_logger.info( + "[READER CLEANUP] Safely stripping active runtime arrays ..." + ) + # Collect references safely using strict type checking + # This completely avoids pulling unmanaged proxy objects from the heap + all_live_objects = gc.get_objects() + + target_tensors = [] + target_arrays = [] + + for obj in all_live_objects: + try: + obj_type = type(obj) + if isinstance(obj, types.FrameType): + frame_info = inspect.getframeinfo(obj) + if ( + "openvino" in frame_info.filename + or "openvino.py" in frame_info.filename + ): + # Clear the frame's local variable dictionary to break circular references + obj.f_locals.clear() + + # Check for concrete types to prevent triggering proxy __getattr__ hooks + if obj_type is torch.Tensor: + target_tensors.append(obj) + elif obj_type is np.ndarray: + # Explicitly guard size checks to keep it completely stable + if obj.base is None and obj.ndim > 0: + target_arrays.append(obj) + except Exception: + pass + + # 3. Truncate discovered references in-place without triggering deletions + reclaimed_tensors = 0 + for tensor in target_tensors: + try: + # Truncate raw storage footprint safely + tensor.data = torch.empty(0, device=self.device_input) + reclaimed_tensors += 1 + except Exception: + pass + + reclaimed_arrays = 0 + for arr in target_arrays: + try: + # Shrink writeable numpy arrays down to 0 bytes safely + if arr.flags.writeable: + arr.resize((0,), refcheck=False) + reclaimed_arrays += 1 + except (ValueError, SystemError): + pass + + main_app_logger.info( + f"[READER CLEANUP] Reclaimed {reclaimed_tensors} tensors and {reclaimed_arrays} arrays safely." + ) + + # Clean local registers immediately + all_live_objects = None + target_tensors = None + target_arrays = None + gc.collect() + + def unlink_shared_memory(self, all_shm_keys): + for key in all_shm_keys: + val = getattr(self, key, None) + if val is None: + continue + for shm in list(val): + if shm is not None: + try: + # Drop direct memoryview trackers instantly + if hasattr(shm, "buf") and shm.buf is not None: + try: + shm.buf.release() + except Exception: + pass + + # Invalidate private mmap structures to drop pytest stack frame caches + if hasattr(shm, "_mmap") and shm._mmap is not None: + try: + shm._mmap = None + except Exception: + pass + + # try: + # shm.__class__.__del__ = lambda self: None + # except Exception: + # pass + + # # Unlink text descriptors out of the core tracker process + # shm_descriptor = shm._name if shm._name.startswith("/") else f"/{shm._name}" + # try: + # unregister(shm_descriptor, "shared_memory") + # except Exception: + # pass + + shm.close() + shm.unlink() + except Exception: + pass + try: + val.clear() + except Exception: + pass # Gets video details def get_fps_and_framecnt(self, cap, target_fps, clip_duration): @@ -450,7 +660,7 @@ def get_fps_and_framecnt(self, cap, target_fps, clip_duration): # print(f"in fps: {self.input_fps} target fps: {target_fps}") if self.input_fps == 0: # Case when FPS isn't available self.input_fps = manual_fps_calculation(cap, num_frames=10) - print(f"new in fps: {self.input_fps}") + main_app_logger.debug(f"new in fps: {self.input_fps}") self.numFrames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT)) if not self.is_rtsp: self.total_input_frames = self.numFrames @@ -466,8 +676,9 @@ def get_fps_and_framecnt(self, cap, target_fps, clip_duration): else self.input_fps ) + self.step_size = self.input_fps / self.target_fps if self.input_fps > 0 and self.target_fps > 0: - self.frame_skip = max(1, int(self.input_fps / self.target_fps)) + self.frame_skip = max(1, int(self.step_size)) else: self.frame_skip = 1 # self.skip_count = self.frame_skip - 1 @@ -490,10 +701,8 @@ def get_frameWH(self): [self.frame_height, self.frame_width] ) # expects hxw - new_sizeWH = (new_sizeHW[1], new_sizeHW[0]) - - self.width = new_sizeWH[0] - self.height = new_sizeWH[1] + self.width = new_sizeHW[1] + self.height = new_sizeHW[0] # Configure scaling for 8K-to-Model coordinate mapping self.resize_h, self.resize_w = [self.MODEL_H, self.MODEL_W] @@ -507,6 +716,7 @@ class CPUReader(BaseReader): def __init__( self, source, + startup_event=None, target_fps=BASE_PIPELINE_CONFIG.TARGET_FPS, clip_duration=BASE_PIPELINE_CONFIG.CLIP_DURATION, MODEL_W=BASE_PIPELINE_CONFIG.MODEL_W, @@ -522,6 +732,7 @@ def __init__( # self.total_d2h_time = 0.0 super().__init__( source, + startup_event=startup_event, target_fps=target_fps, clip_duration=clip_duration, MODEL_W=MODEL_W, @@ -531,7 +742,7 @@ def __init__( # self.MODEL_H = MODEL_H # self.MODEL_W = MODEL_W - self.device = "CPU" + self.device_index = "cpu" # self.shm = SharedMemory(create=True, size=self.frame_bytes) # self.running_flag = Value('b', True) @@ -555,6 +766,7 @@ def __init__( # self.thread = threading.Thread(target=self._processing_loop, daemon=True) # self.thread.start() + @torch.inference_mode() def _processing_loop(self): # target_fps = 15.0 # frame_num = 0.0 @@ -581,14 +793,15 @@ def _processing_loop(self): while ( self.latest_idx.value == last_processed_shm_idx and not self.stopped ): - if not self.frame_condition.wait(timeout=0.05): + if not self.frame_condition.wait(timeout=0.5): if ( not self.running_flag.value - and self.latest_idx.value == last_processed_shm_idx + # and self.latest_idx.value == last_processed_shm_idx ): self.stopped = True break - continue + # continue + # self.frame_condition.wait() if self.stopped: break @@ -598,6 +811,7 @@ def _processing_loop(self): # Signal the worker that a slot has cleared up losslessly --- self.buffer_occupancy.value = max(0, self.buffer_occupancy.value - 1) + # self.slot_available_event.set() # is_target_frame = (frame_num >= next_process_idx) # Reconstruct source frame position using step spacing ratio @@ -605,11 +819,16 @@ def _processing_loop(self): # self.total_input_frames = int( # self.target_frames_passed * getattr(self, "frame_skip", 1) # ) - if self.is_rtsp: - self.total_input_frames = int(self.raw_frame_counter.value) + # if self.is_rtsp: + + target_frames_passed = self.target_frames_passed + # total_input_frames = int( + # target_frames_passed * getattr(self, "frame_skip", 1) + # ) # int(self.raw_frame_counter.value) + total_input_frames = round(target_frames_passed * self.step_size) # Update counters inside target_fps space loop execution - self.target_frames_passed += 1 + self.total_input_frames = total_input_frames # if not is_target_frame: # continue @@ -635,13 +854,44 @@ def _processing_loop(self): ) self.total_shm_copy_time += time.perf_counter() - t_copy - if not self.is_rtsp or not self.frame_queue.full(): - t_queue_block = time.perf_counter() - # self.frame_queue.put((True, cpu_360p_frame)) - self.frame_queue.put( - (True, frame_view, self.target_frames_passed) - ) # self.static_buffer_numpy.copy())) - self.total_queue_wait_time += time.perf_counter() - t_queue_block + t_queue_block = time.perf_counter() + # if not self.is_rtsp or not self.frame_queue.full(): + # t_queue_block = time.perf_counter() + # # self.frame_queue.put((True, cpu_360p_frame)) + # self.frame_queue.put( + # (True, frame_view, target_frames_passed, total_input_frames), + # # timeout=1.0, + # ) # self.static_buffer_numpy.copy())) + # self.total_queue_wait_time += time.perf_counter() - t_queue_block + + if self.is_rtsp: + # If the consumer loop drops frames, instantly evict the oldest + # matrix view reference to keep frame processing real-time. + if len(self.frame_queue) >= self.frame_queue.maxlen: + try: + self.frame_queue.popleft() + except IndexError: + pass + self.frame_queue.append( + (True, frame_view, None, target_frames_passed, total_input_frames) + ) + else: + # Lossless tracking sequence for local testing files + # while len(self.frame_queue) >= self.frame_queue.maxlen and not self.stopped: + # time.sleep(0.001) + safe_cpu_copy = frame_view.copy() + self.frame_queue.append( + ( + True, + safe_cpu_copy, + None, + target_frames_passed, + total_input_frames, + ) + ) + + self.total_queue_wait_time += time.perf_counter() - t_queue_block + self.target_frames_passed += 1 # frame_num += 1.0 @@ -651,6 +901,7 @@ def _processing_loop(self): # if time_to_wait > 0: # time.sleep(time_to_wait) + # self.frame_queue.put((False, None, target_frames_passed, total_input_frames)) # self.frame_idx = frame_num # self.running_flag.value = False @@ -661,6 +912,7 @@ class GPUReader(BaseReader): def __init__( self, source, + startup_event=None, gpu_id=1, # 0, target_fps=BASE_PIPELINE_CONFIG.TARGET_FPS, clip_duration=BASE_PIPELINE_CONFIG.CLIP_DURATION, @@ -677,6 +929,7 @@ def __init__( # self.total_d2h_time = 0.0 super().__init__( source, + startup_event=startup_event, target_fps=target_fps, clip_duration=clip_duration, MODEL_W=MODEL_W, @@ -685,7 +938,7 @@ def __init__( ) self.gpu_id = gpu_id - self.device = torch.device(f"cuda:{gpu_id}") + self.device_index = torch.device(f"cuda:{gpu_id}") # self.shm = SharedMemory(create=True, size=self.frame_bytes) # self.running_flag = Value('b', True) @@ -706,6 +959,23 @@ def __init__( # self.shared_array_view = np.ndarray(self.frame_shape, dtype=np.uint8, buffer=self.shm.buf) # Reusable hardware space optimizations + + self._static_gpu_frame_buffer = torch.empty( + (self.frame_height, self.frame_width, 3), + dtype=torch.uint8, + device=self.device_index, + ) + self._flipped_static_gpu_frame_buffer = torch.empty_like( + self._static_gpu_frame_buffer + ) + # Pre-allocate a second buffer for the BGR conversion. + # This is our destination tensor. + self._bgr_gpu_frame_buffer = torch.empty( + (self.frame_height, self.frame_width, 3), + dtype=torch.uint8, + device=self.device_index, + ) + # self.static_buffer_tensor = torch.empty(self.frame_shape, dtype=torch.uint8, pin_memory=True) # self.static_buffer_numpy = self.static_buffer_tensor.numpy() # Reusable double-buffered hardware space optimizations @@ -715,9 +985,9 @@ def __init__( # ] # self.static_buffer_numpys = [t.numpy() for t in self.static_buffer_tensors] # self.buffer_selector = 0 # Alternates between 0 and 1 - self.upload_stream = torch.cuda.Stream(device=self.device) + self.upload_stream = torch.cuda.Stream(device=self.device_index) - self.download_stream = torch.cuda.Stream(device=self.device) + self.download_stream = torch.cuda.Stream(device=self.device_index) self.d2h_buffers = [ torch.empty((360, 640, 3), dtype=torch.uint8, pin_memory=True), torch.empty((360, 640, 3), dtype=torch.uint8, pin_memory=True), @@ -725,60 +995,92 @@ def __init__( self.d2h_numpys = [b.numpy() for b in self.d2h_buffers] self.d2h_selector = 0 - # Reusable hardware space optimizations using OS-level Page-Locking - try: - self.cudart = ctypes.CDLL("libcudart.so") # Linux - except OSError: - self.cudart = ctypes.CDLL("cudart64_120.dll") # Windows - self.pinned_views = [] - cudaHostRegisterPortable = 0x01 # Visible to all CUDA contexts - - # Permanently register and create zero-copy tensor views over all 3 SHM allocations for shm in self.shms: - # 1. Create a ctypes character array mapping directly onto the memoryview buffer - ctypes_array = (ctypes.c_char * self.frame_bytes).from_buffer(shm.buf) - - # 2. Extract the true virtual memory address pointer from the ctypes overlay - shm_ptr = ctypes.c_void_p(ctypes.addressof(ctypes_array)) - - # 3. Pin the raw memory chunk inside the OS page tracking tables - res = self.cudart.cudaHostRegister( - shm_ptr, self.frame_bytes, cudaHostRegisterPortable - ) - if res != 0: - raise RuntimeError(f"cudaHostRegister failed with status code: {res}") - - # 4. Create a high-speed zero-copy NumPy -> Torch wrapper view over that allocation shm_numpy = np.ndarray(self.frame_shape, dtype=np.uint8, buffer=shm.buf) shm_tensor = torch.from_numpy(shm_numpy) self.pinned_views.append(shm_tensor) + # # Reusable hardware space optimizations using OS-level Page-Locking + # try: + # self.cudart = ctypes.CDLL("libcudart.so") # Linux + # except OSError: + # try: + # self.cudart = ctypes.CDLL("libcudart.so.12") + # except OSError: + # self.cudart = ctypes.CDLL("cudart64_120.dll") - # self.thread = threading.Thread(target=self._processing_loop, daemon=True) - # self.thread.start() + # self.cudart.cudaHostRegister.argtypes = [ctypes.c_void_p, ctypes.c_size_t, ctypes.c_uint] + # self.cudart.cudaHostRegister.restype = ctypes.c_int - def _processing_loop(self): - # target_fps = 15.0 - # frame_num = 0.0 - # next_process_idx = 0.0 - # step_size = float(self.input_fps) / float(self.target_fps) - # # self.total_queue_wait_time = 0.0 + # self.cudart.cudaHostUnregister.argtypes = [ctypes.c_void_p] + # self.cudart.cudaHostUnregister.restype = ctypes.c_int - # # Base loop pacing on the native camera interval (e.g., 33.3ms for 30 FPS) - # inbound_frame_interval = 1.0 / float(self.input_fps) - last_processed_shm_idx = -1 - torch.cuda.synchronize(self.device) + # self.pinned_views = [] + # cudaHostRegisterPortable = 0x01 # Visible to all CUDA contexts - while not self.stopped: # and self.running_flag.value: - # loop_start = time.perf_counter() - # is_target_frame = (frame_num >= next_process_idx) + # # Permanently register and create zero-copy tensor views over all 3 SHM allocations + # for shm in self.shms: + # # 1. Create a ctypes character array mapping directly onto the memoryview buffer + # ctypes_array = (ctypes.c_char * self.frame_bytes).from_buffer(shm.buf) - # # Central timeline step tracking - # frame_num += 1.0 + # # 2. Extract the true virtual memory address pointer from the ctypes overlay + # shm_ptr = ctypes.c_void_p(ctypes.addressof(ctypes_array)) - # if not is_target_frame: - # continue + # # 3. Pin the raw memory chunk inside the OS page tracking tables + # res = self.cudart.cudaHostRegister( + # shm_ptr, self.frame_bytes, cudaHostRegisterPortable + # ) + # # if res != 0: + # if res == 712: + # # main_app_logger.warning( + # # f"[CUDA SHM] Address {hex(ctypes.addressof(ctypes_array))} is already page-locked. Reusing active pin safely." + # # ) + # main_app_logger.info( + # f"[CUDA RESTORE] Found stale page-lock at {hex(shm_ptr.value)}. Forcing reset..." + # ) + # # try: + # # # Load low-level driver to break the lazy process hold + # # # import ctypes + # # # cuda_driver = ctypes.CDLL("libcuda.so") #.6") + # # # cuda_driver.cuMemHostUnregister(shm_ptr) + # # # force_clear_driver_cuda_pin(shm_ptr.value) + # # try: + # # cuda_driver = ctypes.CDLL("libcuda.so.6") + # # except OSError: + # # cuda_driver = ctypes.CDLL("libcuda.so") + + # # # Break the registration using the low-level driver layout hook + # # cuda_driver.cuMemHostUnregister(shm_ptr) + # self.cudart.cudaHostUnregister(shm_ptr) + # # Re-register immediately within the new PyTorch runtime context + # res = self.cudart.cudaHostRegister( + # shm_ptr, self.frame_bytes, cudaHostRegisterPortable + # ) + # # except Exception as e: + # # main_app_logger.debug( + # # f"Driver pin restoration fallback skipped: {e}" + # # ) + # if res != 0 and res != 712: + # raise RuntimeError(f"cudaHostRegister failed with status code: {res}") + + # # 4. Create a high-speed zero-copy NumPy -> Torch wrapper view over that allocation + # # shm_numpy = np.ndarray(self.frame_shape, dtype=np.uint8, buffer=shm.buf) + # shm_numpy = np.frombuffer(shm._mmap, dtype=np.uint8).reshape( + # self.frame_shape + # ) + # shm_tensor = torch.from_numpy(shm_numpy) + # self.pinned_views.append(shm_tensor) + # self.thread = threading.Thread(target=self._processing_loop, daemon=True) + # self.thread.start() + + @torch.inference_mode() + def _processing_loop_v1(self): + last_processed_shm_idx = -1 + # torch.cuda.synchronize(self.device_index) + torch.cuda.synchronize() + + while not self.stopped: # and self.running_flag.value: with self.frame_condition: # Thread sleeps instantly until the background worker calls notify_all() # self.frame_condition.wait(timeout=1.0) @@ -786,14 +1088,15 @@ def _processing_loop(self): while ( self.latest_idx.value == last_processed_shm_idx and not self.stopped ): - if not self.frame_condition.wait(timeout=0.05): + if not self.frame_condition.wait(timeout=0.5): if ( not self.running_flag.value - and self.latest_idx.value == last_processed_shm_idx + # and self.latest_idx.value == last_processed_shm_idx ): self.stopped = True break - continue + # continue + # self.frame_condition.wait() if self.stopped: break @@ -801,71 +1104,47 @@ def _processing_loop(self): self.reader_idx.value = active_idx last_processed_shm_idx = active_idx - # Update counters inside target_fps space loop execution - self.target_frames_passed += 1 - - # Reconstruct source frame position using step spacing ratio - # if self.numFrames != 0: - # self.total_input_frames = int( - # self.target_frames_passed * getattr(self, "frame_skip", 1) - # ) - if self.is_rtsp: - self.total_input_frames = int(self.raw_frame_counter.value) - # Signal the worker that a slot has cleared up losslessly --- self.buffer_occupancy.value = max(0, self.buffer_occupancy.value - 1) + # self.slot_available_event.set() - # is_target_frame = (frame_num >= next_process_idx) - - # if not is_target_frame: - # continue + target_frames_passed = self.target_frames_passed + # total_input_frames = int( + # target_frames_passed * getattr(self, "frame_skip", 1) + # ) # int(self.raw_frame_counter.value) + total_input_frames = round(target_frames_passed * self.step_size) - # # Check if frame is a target frame before heavy operations - # # if frame_num >= next_process_idx: - # next_process_idx += step_size + # Update counters inside target_fps space loop execution + self.total_input_frames = total_input_frames t_copy = time.perf_counter() - # np.copyto(self.static_buffer_numpy, self.shared_array_view) - # Zero-Copy Pointer Swap: lock the latest completed buffer index - # active_idx = self.latest_idx.value - # self.reader_idx.value = active_idx - # last_processed_shm_idx = active_idx - - # # Signal the worker that a slot has cleared up losslessly --- - # self.buffer_occupancy.value = max(0, self.buffer_occupancy.value - 1) - - # Wrap an array view directly around the locked active SHM region - # active_shm = self.shms[active_idx] - # frame_view = np.ndarray(self.frame_shape, dtype=np.uint8, buffer=active_shm.buf) - - # Select the current active buffer slot - # buf_idx = self.buffer_selector - # current_numpy_buf = self.static_buffer_numpys[buf_idx] - # current_tensor_buf = self.static_buffer_tensors[buf_idx] - # np.copyto(current_numpy_buf, frame_view) current_tensor_view = self.pinned_views[active_idx] self.total_shm_copy_time += time.perf_counter() - t_copy - # if self.frame_queue.full() and self.is_rtsp: - # # If the consumer loop is dragging, discard this frame instantly - # # without allocating any memory or touching the PCIe bus. - # return - # ASYNCHRONOUS PCIe UPLOAD (Only runs for target frames) t_h2d = time.perf_counter() - # Isolate the PCIe upload onto its own dedicated side hardware stream - # with torch.cuda.stream(self.upload_stream): - # compute_tensor = self.static_buffer_tensor.to(self.device, non_blocking=True) - # Upload directly from the selected zero-copy host view area - # compute_tensor = torch.from_numpy(frame_view).to(self.device, non_blocking=True) - # compute_tensor = current_tensor_buf.to(self.device, non_blocking=True) - - # Transfer the raw [H, W, 3] uint8 tensor to VRAM via DMA copy - compute_tensor = current_tensor_view.to(self.device, non_blocking=True) - bgr_tensor = compute_tensor[:, :, [2, 1, 0]].contiguous() - # torch.cuda.synchronize(self.device) + self._static_gpu_frame_buffer.copy_(current_tensor_view, non_blocking=False) + + # 2. Native Channel Inversion View (RGB -> BGR) + # Instead of calling OpenCV, use standard tensor index slicing. + # This keeps the execution entirely in PyTorch's native C++ backend. + # bgr_view = self._static_gpu_frame_buffer[:, :, [2, 1, 0]] + + # 3. Fast Contiguity Restoration Block + # Rather than letting downstream handlers detect a non-contiguous stride + # layout (which causes major latency spikes), enforce memory linearity + # asynchronously inside the upload stream context here: + # bgr_tensor = bgr_view.contiguous() + # bgr_tensor = torch.flip(self._static_gpu_frame_buffer, dims=[2]).contiguous() + # torch.cuda.synchronize(self.device_index) + self._bgr_gpu_frame_buffer[:, :, 0] = self._static_gpu_frame_buffer[:, :, 2] + self._bgr_gpu_frame_buffer[:, :, 1] = self._static_gpu_frame_buffer[:, :, 1] + self._bgr_gpu_frame_buffer[:, :, 2] = self._static_gpu_frame_buffer[:, :, 0] + + # The final tensor to be sent is now the pre-allocated BGR buffer. + bgr_tensor = self._bgr_gpu_frame_buffer self.total_h2d_time += time.perf_counter() - t_h2d # self.buffer_selector = 1 - self.buffer_selector @@ -876,51 +1155,569 @@ def _processing_loop(self): current_event = torch.cuda.Event() current_event.record(self.upload_stream) # current_event.wait() - torch.cuda.current_stream().wait_event(current_event) + # --- + if self.is_rtsp: + if len(self.frame_queue) >= self.frame_queue.maxlen: + try: + # Pop the oldest item from the queue + stale_item = self.frame_queue.popleft() + # Extract its tracking event reference + stale_event = stale_item[2] + if stale_event: + # Clear the event reference without blocking the hot loop + del stale_event + except IndexError: + pass + self.frame_queue.append( + ( + True, + bgr_tensor, + current_event, + target_frames_passed, + total_input_frames, + ) + ) + + else: + # LOCAL Lossless Files: Check the previous frame's hardware event + # instead of blocking on the current frame's upload status. + if len(self.frame_queue) >= self.frame_queue.maxlen: + # Retrieve the oldest active item to check its status + oldest_frame_set = self.frame_queue[0] + oldest_event = oldest_frame_set[2] + + if oldest_event and not oldest_event.query(): + # Only wait if the hardware lane is completely saturated + # oldest_event.synchronize() + + # Yield thread execution priority cooperatively for a microscopic window + # to let the PCIe DMA engine finish transferring bytes smoothly + time.sleep(0.0005) + # 2. Asynchronous Watchdog Check + if not oldest_event.query(): + oldest_event.synchronize() # Hard fence fallback only when fully saturated + + # self.frame_queue.append( + # (True, bgr_tensor, current_event, target_frames_passed, total_input_frames) + # ) + with self.frame_condition: + self.frame_queue.append( + ( + True, + bgr_tensor, + current_event, + target_frames_passed, + total_input_frames, + ) + ) + self.frame_condition.notify_all() # Instantly wake up your main read lane! + + # --- - # self.frame_queue.put((True, cpu_360p_frame)) - self.frame_queue.put( - (True, bgr_tensor.detach(), self.target_frames_passed) - ) # .clone())) self.total_queue_wait_time += time.perf_counter() - t_queue_block + self.target_frames_passed += 1 + del bgr_tensor, current_tensor_view # bgr_view + + # @torch.inference_mode() + # def _processing_loop(self): + # last_processed_shm_idx = -1 + # # torch.cuda.synchronize(self.device_index) + # torch.cuda.synchronize() + + # while not self.stopped: # and self.running_flag.value: + # with self.frame_condition: + # # Thread sleeps instantly until the background worker calls notify_all() + # # self.frame_condition.wait(timeout=1.0) + # # Only wait if the background worker hasn't delivered a new index yet + # while ( + # self.latest_idx.value == last_processed_shm_idx and not self.stopped + # ): + # if not self.frame_condition.wait(timeout=0.5): + # if ( + # not self.running_flag.value + # # and self.latest_idx.value == last_processed_shm_idx + # ): + # self.stopped = True + # break + # # continue + # # self.frame_condition.wait() + # if self.stopped: + # break + + # active_idx = self.latest_idx.value + # self.reader_idx.value = active_idx + # last_processed_shm_idx = active_idx + + # # Signal the worker that a slot has cleared up losslessly --- + # self.buffer_occupancy.value = max(0, self.buffer_occupancy.value - 1) + # # self.slot_available_event.set() + + # target_frames_passed = self.target_frames_passed + # # total_input_frames = int( + # # target_frames_passed * getattr(self, "frame_skip", 1) + # # ) # int(self.raw_frame_counter.value) + # total_input_frames = round(target_frames_passed * self.step_size) + + # # Update counters inside target_fps space loop execution + # self.total_input_frames = total_input_frames + + # t_copy = time.perf_counter() + # # np.copyto(current_numpy_buf, frame_view) + # current_tensor_view = self.pinned_views[active_idx] + # self.total_shm_copy_time += time.perf_counter() - t_copy + + # # ASYNCHRONOUS PCIe UPLOAD (Only runs for target frames) + # t_h2d = time.perf_counter() + + # with torch.cuda.stream(self.upload_stream): + # self._static_gpu_frame_buffer.copy_(current_tensor_view, non_blocking=True) + + # # Record the hardware completion event directly + # current_event = torch.cuda.Event() + # current_event.record(self.upload_stream) + # self.total_h2d_time += time.perf_counter() - t_h2d + + # # self.buffer_selector = 1 - self.buffer_selector + + # # if not self.is_rtsp or not self.frame_queue.full(): + # t_queue_block = time.perf_counter() + # # Record an event on the stream and make the main thread wait for it asynchronously + # # current_event = torch.cuda.Event() + # # current_event.record(self.upload_stream) + # # current_event.wait() + # # --- + # if len(self.frame_queue) >= self.frame_queue.maxlen: + # try: + # self.frame_queue.popleft() + # except IndexError: + # pass + + # self.frame_queue.append( + # ( + # True, + # self._static_gpu_frame_buffer, + # current_event, + # target_frames_passed, + # total_input_frames, + # ) + # ) + + # # --- + + # self.total_queue_wait_time += time.perf_counter() - t_queue_block + # self.target_frames_passed += 1 + # del bgr_tensor, current_tensor_view # bgr_view + + @torch.inference_mode() + def _processing_loop(self): + """ + High-Throughput Asynchronous GPU Frame Ingestion Loop. - # frame_num += 1.0 - # self.frame_idx += 1 + Transfers decoded 8K BGR frames from shared memory into pre-allocated VRAM buffers + over a dedicated CUDA upload stream without blocking the CPU thread. + """ + last_processed_shm_idx = -1 - # Keep the reader thread aligned with target ingestion speeds - # elapsed = time.perf_counter() - loop_start - # time_to_wait = inbound_frame_interval - elapsed - # if time_to_wait > 0: - # time.sleep(time_to_wait) - # Explicitly delete frame variables to free their references - if "compute_tensor" in locals(): - del compute_tensor + # Pre-synchronize the upload stream before entering the hot loop + if hasattr(self, "upload_stream") and self.upload_stream is not None: + self.upload_stream.synchronize() + + while not self.stopped: + # PULL NEXT READY FRAME INDEX FROM BACKGROUND WORKER ----------------- + if hasattr(self, "frame_condition") and self.frame_condition is not None: + with self.frame_condition: + # Wait for the background reader process to deliver a new frame slot + while ( + self.latest_idx.value == last_processed_shm_idx + and not self.stopped + ): + if not self.frame_condition.wait(timeout=0.2): + if ( + not getattr(self, "running_flag", None) + or not self.running_flag.value + ): + self.stopped = True + break + if self.stopped: + break + + active_idx = self.latest_idx.value + self.reader_idx.value = active_idx + last_processed_shm_idx = active_idx + + # Decrement buffer occupancy atomically + if hasattr(self, "buffer_occupancy"): + self.buffer_occupancy.value = max(0, self.buffer_occupancy.value - 1) - # Force PyTorch's internal allocator to release cached segments back to the OS - # torch.cuda.empty_cache() - # torch.cuda.ipc_collect() + # Calculate physical vs. target frame indices + target_frames_passed = self.target_frames_passed + total_input_frames = round( + target_frames_passed * getattr(self, "step_size", 1.0) + ) + self.total_input_frames = total_input_frames - # self.frame_idx = frame_num - # self.running_flag.value = False + # 2. ZERO-COPY HOST TENSOR RETRIEVAL ----------------------------------- + current_tensor_view = self.pinned_views[active_idx] + + # 3. ASYNCHRONOUS PCIe UPLOAD TO GPU (VRAM) --------------------------- + t_h2d = time.perf_counter() + + # Execute DMA copy and hardware event record on the dedicated upload stream + with torch.cuda.stream(self.upload_stream): + # Asynchronous PCIe Host-to-Device transfer (Takes < 0.1ms CPU time) + self._static_gpu_frame_buffer.copy_( + current_tensor_view, non_blocking=True + ) + + # Fast Zero-Allocation Color Swap (BGR Device -> RGB Device) + # .flip(dims=[2]) creates a fast virtual view. + # .copy_() writes it contiguously into the pre-allocated RGB buffer. + self._flipped_static_gpu_frame_buffer.copy_( + self._static_gpu_frame_buffer.flip(dims=[2]), non_blocking=True + ) + + # Record hardware completion barrier on the upload stream + current_event = torch.cuda.Event() + current_event.record(self.upload_stream) + + self.total_h2d_time += time.perf_counter() - t_h2d + + # 4. LOCK-FREE THREAD-SAFE QUEUE INGESTION ----------------------------- + t_queue_block = time.perf_counter() + + # Evict oldest unread frame if queue is full to preserve real-time latency + # if len(self.frame_queue) >= self.frame_queue.maxlen: + # try: + # self.frame_queue.popleft() + # except IndexError: + # pass + + # # Push the VRAM buffer and hardware completion event to the consumer queue + # self.frame_queue.append( + # ( + # True, + # self._static_gpu_frame_buffer, + # current_event, + # target_frames_passed, + # total_input_frames, + # ) + # ) + + if getattr(self, "is_rtsp", False): + # Live RTSP: Evict oldest frame if consumer falls behind + if len(self.frame_queue) >= self.frame_queue.maxlen: + try: + self.frame_queue.popleft() + except IndexError: + pass + self.frame_queue.append( + ( + True, + self._flipped_static_gpu_frame_buffer, + current_event, + target_frames_passed, + total_input_frames, + ) + ) + else: + # Local Video File: Wait cooperatively so ZERO frames are lost + while ( + len(self.frame_queue) >= self.frame_queue.maxlen + and not self.stopped + ): + time.sleep(0.001) + + self.frame_queue.append( + ( + True, + self._flipped_static_gpu_frame_buffer, + current_event, + target_frames_passed, + total_input_frames, + ) + ) + + self.total_queue_wait_time += time.perf_counter() - t_queue_block + self.target_frames_passed += 1 + + # Release local pointer references immediately + del current_tensor_view def stop(self): - """Cleanly unregisters the locked memory mapping blocks from the OS page table.""" - if hasattr(self, "cudart") and hasattr(self, "shms"): - import ctypes + """GPU specialized cleaner layer. Unpins hardware tracking tables, flushes VRAM + + and synchronizes active side streams BEFORE parsing to the BaseReader. + """ + if self.stopped: + return + + self.stopped = True + + # Signal the worker process to exit its loop + if hasattr(self, "running_flag"): + self.running_flag.value = False + + # 1. Drive standalone GPU hardware unpinning while shm buffer mappings are valid + # if hasattr(self, "release_hardware_pinsv2"): + # self.release_hardware_pinsv2() + + # 2. Break active PyTorch tensor data reference vectors to drop allocator pin metrics + for tensor_attr in [ + "pinned_views", + "d2h_buffers", + "d2h_numpys", + "_static_gpu_frame_buffer", + "_bgr_gpu_frame_buffer", + ]: + if hasattr(self, tensor_attr): + setattr(self, tensor_attr, None) + + # 3. Synchronize and overwrite side hardware execution lanes + if hasattr(self, "upload_stream") and self.upload_stream is not None: + try: + self.upload_stream.synchronize() + except Exception: + pass + self.upload_stream = None + + if hasattr(self, "download_stream") and self.download_stream is not None: + try: + self.download_stream.synchronize() + except Exception: + pass + self.download_stream = None + + # 4. Dismantle low-level ctypes CDLL pointers to completely drop unmanaged contexts + # self.cudart = None + + # 5. Hand execution over to BaseReader to tear down shared primitives and worker structures + super().stop() + + def release_hardware_pins_v1(self): + if hasattr(self, "cudart") and getattr(self, "shms", None): + # import ctypes for shm in self.shms: - # 1. Safely bind ctypes to the underlying memory view structure - ctypes_array = (ctypes.c_char * self.frame_bytes).from_buffer(shm.buf) + try: + # Re-map the raw structural array pointer identity block + ctypes_array = (ctypes.c_char * self.frame_bytes).from_buffer( + shm.buf + ) + shm_ptr = ctypes.c_void_p(ctypes.addressof(ctypes_array)) + + # Force the CUDA device table driver to drop the OS memory pin + res = self.cudart.cudaHostUnregister(shm_ptr) + if res != 0: + pass # Ignore if already unpinned natively + except Exception: + pass + main_app_logger.info( + "\033[92m[CUDA UNPIN] Shared memory pages successfully released from hardware table.\033[0m" + ) - # 2. Extract the address pointer - shm_ptr = ctypes.c_void_p(ctypes.addressof(ctypes_array)) + def release_hardware_pinsv2(self): + """ + Reverses the CUDA host registration by mapping the exact memory locations + and force-unpins them before closing the underlying OS shared memory handles. + """ + # import ctypes + # import gc + # import sys - # 3. Unregister the address safely from the OS tables - self.cudart.cudaHostUnregister(shm_ptr) + # Localized stream filter to swallow intermediate garbage collection signals + original_stderr = sys.stderr + sys.stderr = ResourceTrackerFilter(original_stderr) + + try: + # 2. Drop active processing frame buffers and views to unlock reference paths + # if ( + # hasattr(self, "_static_gpu_frame_buffer") + # and self._static_gpu_frame_buffer is not None + # ): + # self._static_gpu_frame_buffer = None + + # if hasattr(self, "pinned_views") and self.pinned_views: + # for idx in range(len(self.pinned_views)): + # self.pinned_views[idx] = None + # self.pinned_views.clear() + + # # 3. Synchronize background streaming channels + # if hasattr(self, "upload_stream") and self.upload_stream is not None: + # try: + # self.upload_stream.synchronize() + # except Exception: + # pass + # self.upload_stream = None + + # 4. Iterate and forcefully unregister the exact memory allocation pointers + if hasattr(self, "cudart") and getattr(self, "shms", None): + for shm in list(self.shms): + try: + if hasattr(shm, "buf") and shm.buf is not None: + # Map the exact size layout matching line 969 to capture the real pointer + ctypes_array = ( + ctypes.c_char * self.frame_bytes + ).from_buffer(shm.buf) + shm_ptr = ctypes.c_void_p(ctypes.addressof(ctypes_array)) + + # Direct low-level Driver API fallback execution to wipe lazy driver context maps + # if hasattr(self, "force_clear_driver_cuda_pin"): + # self.force_clear_driver_cuda_pin(shm_ptr.value) + + # High-level Runtime API eviction + self.cudart.cudaHostUnregister(shm_ptr) + # if res == 0: + # main_app_logger.info( + # f"[CUDA UNPIN] Successfully unpinned address context: {hex(shm_ptr.value)}" + # ) + + # 5. Instantly close and unlink POSIX shared memory allocations to release locks + # shm.close() + # shm.unlink() + except Exception as e: + main_app_logger.debug( + f"Failed to cleanly unpin shared memory region: {e}" + ) + + # self.shms.clear() + + finally: + # 6. Flush native device pools completely + gc.collect() + if torch.cuda.is_available(): + torch.cuda.synchronize() + torch.cuda.empty_cache() + sys.stderr = original_stderr + # print( + # "\033[92m\n[CUDA UNPIN] Hardware tables fully cleared.\033[0m", + # flush=True, + # ) + + def release_hardware_pins(self): + """Forcefully purges child workers and cleanly unpins raw CUDA memory layers.""" + + # 1. FORCE-KILL THE BACKGROUND MULTIPROCESSING WORKER FIRST + # If left alive, it anchors the page lock inside the Linux kernel tables! + if hasattr(self, "worker") and self.worker is not None: + try: + if self.worker.is_alive(): + self.worker.terminate() + self.worker.join(timeout=0.1) + + # Hard kill fallback if the worker process ignores graceful signals + if self.worker.is_alive() and getattr(self.worker, "pid", None): + if self.worker.pid > 1: + # main_app_logger.info( + # f"[KILL] Evicting worker holding lock (PID: {self.worker.pid})" + # ) + try: + os.kill(self.worker.pid, signal.SIGKILL) + self.worker.join() + except ProcessLookupError: + pass # It died naturally right before the signal arrived + except Exception: + pass + self.worker = None + + # 2. Drop active PyTorch frame views to unlock storage layout references + if ( + hasattr(self, "_static_gpu_frame_buffer") + and self._static_gpu_frame_buffer is not None + ): + self._static_gpu_frame_buffer = None + + if hasattr(self, "pinned_views") and self.pinned_views: + for idx in range(len(self.pinned_views)): + self.pinned_views[idx] = None + self.pinned_views.clear() + + # Flush outstanding elements inside your streaming frame buffers queue + if hasattr(self, "frame_queue"): + try: + while len(self.frame_queue) > 0: + self.frame_queue.popleft() + except Exception: + pass + gc.collect() + + # 3. Safely unregister host pages via the exact allocation pointers + if hasattr(self, "cudart") and getattr(self, "shms", None): + for shm in list(self.shms): try: + # Reconstruct the exact pointer alignment mapping to clear the driver registration + ctypes_array = (ctypes.c_char * self.frame_bytes).from_buffer( + shm.buf + ) + shm_ptr = ctypes.c_void_p(ctypes.addressof(ctypes_array)) + + # Call high-speed unregister on the exact pointer value + self.cudart.cudaHostUnregister(shm_ptr) + + # Release internal mmap references safely before executing close() + if hasattr(shm, "buf") and shm.buf is not None: + try: + shm.buf.release() + except Exception: + pass + + if hasattr(shm, "_mmap") and shm._mmap is not None: + try: + shm._mmap = None + except Exception: + pass + + # Direct file descriptor removal and unlinking from /dev/shm shm.close() shm.unlink() except Exception: pass - super().stop() + self.shms.clear() + + # 4. Flush native memory pools completely back to Host OS + gc.collect() + if torch.cuda.is_available(): + torch.cuda.synchronize() + torch.cuda.empty_cache() + + +def force_clear_driver_cuda_pin(raw_address_int): + """ + Forcefully drops an unmanaged page-lock registration directly out of the + NVIDIA Driver API context using a raw virtual address integer pointer. + """ + if not raw_address_int: + return + + main_app_logger.info( + f"[HARDWARE FORCE-CLEAR] Evicting address {hex(raw_address_int)} from driver context..." + ) + + try: + # 1. Load the core low-level CUDA Driver API library (Linux fallback) + try: + cuda_driver = ctypes.CDLL("libcuda.so.6") + except OSError: + cuda_driver = ctypes.CDLL("libcuda.so") # Alternate system path fallback + + # 2. Reconstruct the raw void pointer from the integer key + void_ptr = ctypes.c_void_p(raw_address_int) + + # 3. Invoke cuMemHostUnregister directly to break the lazy driver lock + # Status code 0 indicates absolute success + status = cuda_driver.cuMemHostUnregister(void_ptr) + + if status == 0: + main_app_logger.info( + f" [SUCCESS] Address {hex(raw_address_int)} successfully purged from driver context." + ) + else: + # Code 101/713 typically means it was already lazily swept by an OS page update + main_app_logger.info( + f" [INFO] Driver returned status code {status} for address {hex(raw_address_int)}. Cleared." + ) + + except Exception as error: + main_app_logger.info( + f" [FAILED] Driver force-clear encountered an error: {error}" + ) diff --git a/fastapi/include/utils.py b/fastapi/include/utils.py index a379a23..f2e11a1 100644 --- a/fastapi/include/utils.py +++ b/fastapi/include/utils.py @@ -1,22 +1,35 @@ # Copyright (C) 2025 Intel Corporation +# ============================================================================== +# IMPORTS +import ctypes +import gc +import inspect +import logging import os import queue import subprocess +import sys +import threading import time import traceback +import tracemalloc +from collections import deque from dataclasses import dataclass from math import ceil +from multiprocessing import resource_tracker from pathlib import Path from random import randint import cupy -import cupyx.scipy -import cupyx.scipy.ndimage import cv2 import numpy as np import torch -import torch.nn.functional as F +from pydantic import BaseModel + +import vdms + +sys.path.insert(1, str(Path(__file__).parent.parent)) from include.default_configs import ( BKGD_SUB_INCLUDE_HISTORY, BKGD_SUB_INCLUDE_HISTORY_DILATE_KERNEL_SIZE, @@ -68,15 +81,123 @@ UDF_HOST_DEFAULT, UDF_PORT_DEFAULT, ) -from pydantic import BaseModel -import vdms +# ============================================================================== +# LOGGING +logging.basicConfig( + level=logging.INFO, + # format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", + format="%(asctime)s [%(levelname)s] %(name)s (%(filename)s:%(lineno)d) - %(message)s", + handlers=[logging.StreamHandler(sys.stdout)], +) + +main_app_logger = logging.getLogger(__name__) + +# ============================================================================== """ GENERAL DEFINITIONS/FUNCTIONS """ +def get_cpu_partition(num_ffmpeg_cores: int = 4): + """ + Partitions available container cores into FFmpeg cores and Main App cores. + """ + available_cores = sorted(list(os.sched_getaffinity(0))) + total_cores = len(available_cores) + + if total_cores <= num_ffmpeg_cores: + # Fallback if the container has <= 4 cores allocated + ffmpeg_cores = available_cores + main_app_cores = available_cores + else: + # Take the first 4 cores for FFmpeg, reserve the rest for the main app + ffmpeg_cores = available_cores[:num_ffmpeg_cores] + main_app_cores = available_cores[num_ffmpeg_cores:] + + return ffmpeg_cores, main_app_cores + + +def safe_unregister_shm(shm_name: str): + """ + Unregisters a shared memory block from Python's resource tracker + using both normalized and slash-prefixed formats. + """ + clean_name = shm_name.lstrip("/") + slash_name = f"/{clean_name}" + + for name in (clean_name, slash_name): + try: + resource_tracker.unregister(name, "shared_memory") + except (KeyError, ValueError, AttributeError, Exception): + pass + + +def release_shared_memory(list_of_shms): + for shm in list_of_shms: + if shm is not None: + try: + # Release buffer view if open + if hasattr(shm, "buf") and shm.buf is not None: + shm.buf.release() + except Exception: + pass + + try: + shm.close() + except Exception: + pass + + try: + shm.unlink() + except (FileNotFoundError, AttributeError, OSError): + pass + + # Clear the container list/collection in-place + if hasattr(list_of_shms, "clear"): + try: + list_of_shms.clear() + except Exception: + pass + + +def release_native_linux_heap(): + gc.collect() + try: + # Load the native C library bindings mapping standard glibc + libc = ctypes.CDLL("libc.so.6") + + # malloc_trim(0) forces glibc to completely pack and return all + # completely disconnected heap memory boundaries back to the kernel. + libc.malloc_trim(0) + # print( + # "[MALLOC_TRIM] Successfully flushed unmanaged C++ heap to OS.", flush=True + # ) + except Exception as e: + print( + f"[MALLOC_TRIM] Native system trim execution pass failed: {e}", flush=True + ) + + +def install_and_load_pip_package(package_name: str, attribute_name=None): + import importlib + + name = package_name.split("[")[0] + try: + # import py_package + module = importlib.import_module(name) + except ImportError: + print(f"{name} package not found. Installing ...") + subprocess.check_call([sys.executable, "-m", "pip", "install", package_name]) + module = importlib.import_module(name) + + if attribute_name: + return getattr(module, attribute_name) + + return module + + def get_freest_gpu(): # Queries free memory from nvidia-smi command = "nvidia-smi --query-gpu=memory.free --format=csv,nounits,noheader" @@ -111,12 +232,494 @@ def str2bool(in_val): return False +def global_frame_prefetch_worker_v1(instance): + """ + Asynchronous Threaded Staging Engine. + Leverages thread-level parallelism to interleave heavy I/O file latency + completely outside the primary model execution track. + """ + pool_maxsize = ( + instance.prefetch_queue.maxsize + if hasattr(instance.prefetch_queue, "maxsize") + else instance.prefetch_queue._maxsize + ) + + # This ensures no frames are read until the main loop is ready. + # if hasattr(instance, "start_processing_event"): + # instance.start_processing_event.wait() + + while instance.active and instance.prefetch_active: + try: + # if instance.prefetch_queue is None: + # instance.prefetch_active = False + # break + # 1. Capture time immediately before hardware decryption/extraction + decode_start_time = time.perf_counter() + + # Step 1: Overlap video decoding and frame I/O reads. + with instance.reader_lock: + payload = instance.reader.read() + + # if payload[1] is None: + # # print("[PREFETCH WORKER] Reader returned None, exiting.") + # # break + # time.sleep(0.005) # Sleep 5ms and retry + # continue + + ret, frame_8k, current_event, frame_num, abs_frame_num = payload + + # 2. Isolate raw decompression latency (completely independent of consumer queues) + true_read_latency_secs = time.perf_counter() - decode_start_time # * 1000.0 + + if not ret or frame_8k is None: + # # If RTSP, wait briefly to see if it's just a network delay. + # if instance.active and getattr(instance, "is_rtsp", True): + # time.sleep(0.005) + # continue + # else: + # print("[PREFETCH WORKER] End of stream or invalid frame, exiting.") + # break + + # Allow retries if the reader is still active and has not officially stopped + if instance.active and not getattr(instance.reader, "stopped", False): + time.sleep(0.005) + continue + else: + main_app_logger.info( + "[PREFETCH WORKER] End of stream detected, exiting." + ) + break + + if frame_num == 0: + main_app_logger.info( + f"[VERIFY - PRODUCER] Decoded Frame {frame_num} (abs: {abs_frame_num}) and writing to slot {frame_num % pool_maxsize}!" + ) + + # if ret is True and frame_8k is not None: + slot_idx = frame_num % pool_maxsize + + # if torch.is_tensor(frame_8k): + # safe_frame = frame_8k.clone() + # elif isinstance(frame_8k, np.ndarray): + # safe_frame = frame_8k.copy() + # else: + # safe_frame = frame_8k + + # Convert to tensor + # Make a safe copy of the raw frame data + # if isinstance(frame_8k, np.ndarray): + # safe_frame = frame_8k.copy() + # else: + # safe_frame = frame_8k.clone() if torch.is_tensor(frame_8k) else frame_8k + + # safe_frame = instance.shm_buffer_pool[slot_idx][0] + + # # 2. OVERWRITE IN-PLACE (ZERO ALLOCATIONS!) + # if isinstance(frame_8k, np.ndarray): + # safe_frame.copy_(torch.from_numpy(frame_8k)) + # else: + # safe_frame.copy_(frame_8k) + + # If frame_8k is already on the GPU (from GPUReader), use it directly! + if isinstance(frame_8k, np.ndarray): + # CPU fallback: copy to GPU input slot + instance.gpu_input[slot_idx].copy_( + torch.from_numpy(frame_8k), non_blocking=True + ) + safe_frame = instance.gpu_input[slot_idx] + else: + # Already on GPU: forward directly with zero extra transfers + safe_frame = frame_8k + + # safe_frame = frame_8k + # Explicitly destroy the original shared-memory views right here! + # del payload, frame_8k # , tensor_frame + # print(f"[PREFETCH WORKER] frame_num: {frame_num}\tabs_frame_num: {abs_frame_num}", flush=True) + + # Step 2: Directly write to array pool within the same CUDA context. + # 3. EXPAND POOL TUPLE: Append the true background latency value to the array matrix + instance.shm_buffer_pool[slot_idx] = ( + safe_frame, + current_event, + frame_num, + abs_frame_num, + true_read_latency_secs, # Decoupled payload metric channel + ) + # del payload, frame_8k + + if hasattr(instance, "queue_data_ready_event"): + instance.queue_data_ready_event.set() + + # Step 3: Fast notification down a standard thread-safe queue. + # Wakes up the consumer loop in microseconds via low-level OS variables. + try: + instance.prefetch_queue.put((True, slot_idx), block=True) + # except AttributeError: + # instance.prefetch_active = False + # break + except Exception: + pass + finally: + del payload, frame_8k + except Exception as e: + # Yield minimal execution slicing if an index collision occurs + # time.sleep(0.001) + # CRITICAL: Print the actual error instead of swallowing it. + print(f"[PREFETCH WORKER CRASH] An error occurred: {e}") + traceback.print_exc() + # Stop the loop on error to prevent silent failures. + raise + + # Pipeline breakdown tracker + # with instance.worker_tracking_lock: + # instance.active_workers_count -= 1 + # if instance.active_workers_count == 0: + # # instance.prefetch_queue.put((False, "END_OF_STREAM"), block=True) + # main_app_logger.info( + # "[PREFETCH WORKER] All workers finished. Sending END_OF_STREAM." + # ) + # if ( + # hasattr(instance, "prefetch_queue") + # and instance.prefetch_queue is not None + # ): + # try: + # instance.prefetch_queue.put( + # (False, "END_OF_STREAM"), block=True, timeout=1.0 + # ) + # except Exception: + # pass + lock_obj = getattr(instance, "worker_tracking_lock", None) + + if lock_obj is not None and hasattr(lock_obj, "__enter__"): + with lock_obj: + instance.active_workers_count -= 1 + is_last_worker = instance.active_workers_count == 0 + else: + # Fallback in case the main thread already destroyed the lock during shutdown + # (Safe to decrement directly since threads are joining anyway) + try: + instance.active_workers_count -= 1 + is_last_worker = instance.active_workers_count == 0 + except Exception: + is_last_worker = False + + # Send END_OF_STREAM if this is the last worker exiting + if is_last_worker: + main_app_logger.info( + "[PREFETCH WORKER] All workers finished. Sending END_OF_STREAM." + ) + if hasattr(instance, "prefetch_queue") and instance.prefetch_queue is not None: + try: + instance.prefetch_queue.put( + (False, "END_OF_STREAM"), block=True, timeout=1.0 + ) + except Exception: + pass + + +def analyze_tracemalloc_snapshot(): + """ + Take and analyze tracemalloc snapshot + """ + system_exclusions = [ + "importlib", + "runpy", + "pydev", + "typing", + "abc", + "contextlib", + "unittest", + "pytest", + ] + + main_app_logger.info("=" * 60) + # Take snapshot with tracking data enabled + snapshot = tracemalloc.take_snapshot() + tracemalloc.stop() + stats = snapshot.statistics("traceback") + + main_app_logger.info( + f"{'ALLOCATED SIZE':<15} | {'OBJECT TYPE':<20} | {'SOURCE LOCATION'}", + ) + main_app_logger.info("-" * 80) + + stat_cnt = 0 + for stat in stats: # [:10]: # Check the top 10 largest leaks + if stat_cnt >= 10: + break + + first_frame = stat.traceback[0] + source_info = f"{first_frame.filename.split('/')[-1]}:{first_frame.lineno}" + + if any(exc in source_info for exc in system_exclusions): + continue + + # Extract the trace block memory identity + obj_type_name = "Unknown / Raw C Block" + + # Query the raw trace details to extract live block structures + for trace in stat.traceback: + # We look for objects instantiated at this file/line in the heap + for obj in gc.get_objects(): + try: + # Cross-reference: does this object's line history match the stat line? + # Python doesn't save creation history on every object, so we inspect properties: + if torch.is_tensor(obj): + # Tensors are easily tracked if they have shapes or match your sizes + if ( + obj.is_cuda + and (obj.element_size() * obj.nelement()) == stat.size + ): + obj_type_name = f"torch.Tensor (Shape: {list(obj.shape)})" + break + elif inspect.isframe(obj): + obj_type_name = "Live Frame Context" + break + elif inspect.isfunction(obj) or inspect.ismethod(obj): + obj_type_name = f"Function ({obj.__name__})" + break + elif isinstance(obj, dict): + # Dictionary allocations match structure profiles + try: + # Guard checks against mutating async dictionary managers + if ( + sys.getsizeof(obj) == stat.size + or len(obj) == stat.count + ): + obj_type_name = "dict Namespace" + break + except Exception: + pass + except Exception: + pass + + obj = None + # Print the compiled breakdown + + main_app_logger.info( + f"{stat.size / 1024:<11.1f} KiB | {obj_type_name:<20} | {source_info}" + ) + stat_cnt += 1 + + +# from concurrent.futures import ThreadPoolExecutor + + +# def global_frame_prefetch_worker(instance): +# """GIL-free asynchronous staging engine utilizing a dedicated single-worker pool +# to execute raw C++ reads completely outside the primary interpreter track. +# """ +# pool_maxsize = ( +# instance.prefetch_queue.maxsize +# if hasattr(instance.prefetch_queue, "maxsize") +# else instance.prefetch_queue._maxsize +# ) + +# # A dedicated single-worker context specifically for C++ operations +# # with ThreadPoolExecutor(max_workers=1) as reader_executor: +# while instance.active and instance.prefetch_active: +# try: +# # 1. Capture time immediately before hardware decryption/extraction +# decode_start_time = time.perf_counter() + +# # Offload ONLY the unmanaged C++ read() call to the executor. +# # This drops the GIL instantly while the driver retrieves the frame bytes. +# # future = reader_executor.submit(instance.reader.read) +# # payload = ( +# # future.result() +# # ) # Blocking wait until the background C++ task completes + +# # Explicitly overwrite the internal future reference +# # tracking properties to break the C++ object data caching loop immediately +# # if hasattr(future, "_result"): +# # future._result = None # Breaks the structural reference hold layout +# # future = None # Drops local scope tracking handles + +# # Overlap video decoding and frame I/O reads natively. +# # The GIL is dropped directly inside the compiled C++ cv2.VideoCapture layer. +# with instance.reader_lock: +# payload = instance.reader.read() + +# # Isolate raw decompression latency (completely independent of consumer queues) +# true_read_latency_sec = ( +# time.perf_counter() - decode_start_time +# ) + +# if payload[0] is False: +# break + +# ret, frame_8k, current_event, frame_num, abs_frame_num = payload + + +# if ret is True and frame_8k is not None: +# slot_idx = frame_num % pool_maxsize +# if torch.is_tensor(frame_8k): +# safe_frame = frame_8k.clone() +# elif isinstance(frame_8k, np.ndarray): +# safe_frame = frame_8k.copy() +# else: +# safe_frame = frame_8k + +# # Explicitly destroy the original shared-memory views right here! +# del payload, frame_8k + +# print(f"[PREFETCH WORKER] frame_num: {frame_num}\tabs_frame_num: {abs_frame_num}", flush=True) +# # Directly write to array pool within the same CUDA context. +# # EXPAND POOL TUPLE: Append the true background latency value to the array matrix +# with instance.worker_tracking_lock: +# instance.shm_buffer_pool[slot_idx] = ( +# safe_frame, +# current_event, +# frame_num, +# abs_frame_num, +# true_read_latency_sec, # Decoupled payload metric channel +# ) + +# if hasattr(instance, "queue_data_ready_event"): +# instance.queue_data_ready_event.set() + +# # Step 3: Fast notification down a standard thread-safe queue. +# # Wakes up the consumer loop in microseconds via low-level OS variables. +# instance.prefetch_queue.put((True, slot_idx), block=True) +# else: +# # break +# time.sleep(0.001) +# continue +# except Exception: +# # Yield minimal execution slicing if an index collision occurs +# time.sleep(0.002) +# continue + +# # Pipeline breakdown tracker +# # with instance.worker_tracking_lock: +# # instance.active_workers_count -= 1 +# # if instance.active_workers_count == 0: +# # instance.prefetch_queue.put((False, "END_OF_STREAM"), block=True) + + +def global_frame_prefetch_worker_process( + active, # mp.Value flag + prefetch_active, # mp.Value flag + prefetch_queue, # mp.Queue mapping descriptor + reader_lock, # mp.Lock mutex channel + reader, # Picklable reader baseline layout + shm_buffer_pool, # Shared pointer memory pool array matrix + queue_data_ready_event, # Pass the shared multiprocessing Event channel + worker_tracking_lock, # Pass the shared multiprocessing Lock mutex + active_workers_count, # Pass the shared atomic integer context +): + """ + Asynchronous Threaded Staging Engine. + Leverages thread-level parallelism to interleave heavy I/O file latency + completely outside the primary model execution track. + """ + pool_maxsize = ( + prefetch_queue.maxsize + if hasattr(prefetch_queue, "maxsize") + else prefetch_queue._maxsize + ) + + try: + while active.value and prefetch_active.value: + try: + # 1. Capture time immediately before hardware decryption/extraction + decode_start_time = time.perf_counter() + + # Step 1: Overlap video decoding and frame I/O reads. + with reader_lock: + payload = reader.read() + + # 2. Isolate raw decompression latency (completely independent of consumer queues) + true_read_latency_ms = ( + time.perf_counter() - decode_start_time + ) * 1000.0 + + if payload is None: + break + + ret, frame_8k, current_event, frame_num, abs_frame_num = payload + + if ret is True and frame_8k is not None: + slot_idx = frame_num % pool_maxsize + + if torch.is_tensor(frame_8k): + safe_frame = frame_8k.clone() + elif isinstance(frame_8k, np.ndarray): + safe_frame = frame_8k.copy() + else: + safe_frame = frame_8k + + # Explicitly destroy the original shared-memory views right here! + del payload, frame_8k + + # Step 2: Directly write to array pool within the same CUDA context. + # 3. EXPAND POOL TUPLE: Append the true background latency value to the array matrix + shm_buffer_pool[slot_idx] = ( + safe_frame, + current_event, + frame_num, + abs_frame_num, + true_read_latency_ms, # Decoupled payload metric channel + ) + + queue_data_ready_event.set() + + prefetch_queue.put((True, slot_idx), block=True) + else: + break + except Exception: + # Yield minimal execution slicing if an index collision occurs + time.sleep(0.001) + + finally: + # Pipeline breakdown tracker + with worker_tracking_lock: + active_workers_count.value -= 1 + if active_workers_count.value == 0: + prefetch_queue.put((False, "END_OF_STREAM"), block=True) + + PROJECT_PATH = Path(__file__).parent.parent DEBUG_FLAG_DEFAULT = True if DEBUG_DEFAULT == "1" else False LOCKTIMEOUT_RETRIES = 5 +default_attr_keys = [ + "_is_stopped", + "_stop_lock", + "_testMethodName", + "abs_frame_num", + "active_workers_count", + "active", + "baseline_before_start", + "component_stats", + "config", + "crops_per_frame_list", + "device_input", + "device", + "disp_h", + "disp_w", + "duration_target", + "elapsed_display_time", + "frame_count_target", + "frame_count", + "max_target_frames", + "output_path", + "pcie_throughput_gbps", + "prefetch_active", + "reader", + "resize_h", + "resize_w", + "stat_fps", + "stat_frame_count", + "status", + "VIDEO_GT_DETAILS", + "video_output_name", + "vram_efficiency", + "worker_tracking_lock", +] + class PipelineConfig: def __init__(self, **kwargs): @@ -266,7 +869,9 @@ def _create_connection(self): def get_connection(self): # Borrow a connection (blocks if pool is empty) - return self.pool.get(block=True, timeout=10) + db = self.pool.get(block=True, timeout=10) + self.pool.task_done() + return db def return_connection(self, conn): # Put the connection back for reuse @@ -515,6 +1120,121 @@ def return_connection(self, conn): ) +PROPAGATION_KERNEL_CODE = r""" +extern "C" __global__ +void get_row_bounds_fused(const unsigned char* mask, int pitch, int w, int h, + int* x1, int* y1, int* x2, int* y2, int* num_labels) { + // Each thread tracks exactly one horizontal row across the frame canvas + int y = blockIdx.y * blockDim.y + threadIdx.y; + + if (y < h) { + bool row_has_motion = false; + int min_x = w; + int max_x = -1; + + // Perform a fast linear register sweep across the row (0 global atomics) + for (int x = 0; x < w; ++x) { + unsigned char pixel = mask[y * pitch + x]; + if (pixel > 0) { + row_has_motion = true; + if (x < min_x) min_x = x; + if (x > max_x) max_x = x; + } + } + + // If the row contains motion, commit the boundaries to global memory + if (row_has_motion) { + // Use an atomic index fetch to smoothly assign contiguous tracking labels + int label = atomicAdd(num_labels, 1); + + // Limit to our safe allocation pool ceiling to prevent memory overflows + if (label < 256) { + x1[label] = min_x; + y1[label] = y; + x2[label] = max_x + 1; + y2[label] = y + 1; + } + } + } +} +""" + + +def get_metadata_overlay( + display_frame, metadata_or_bbs, class_list, scale_display, disp_size, is_bgr=True +): + scale_display_x, scale_display_y = scale_display + disp_w, disp_h = disp_size + for frame_str, obj in metadata_or_bbs.items(): + bbox = obj["bbox"] + raw_x = bbox["x"] * scale_display_x + raw_y = bbox["y"] * scale_display_y + w = bbox["width"] * scale_display_x + h = bbox["height"] * scale_display_y + x = max(0, int(raw_x)) + y = max(0, int(raw_y)) + x2 = min(disp_w - 1, int(raw_x + w)) + y2 = min(disp_h - 1, int(raw_y + h)) + + class_name = bbox["object"] + class_id = class_list.index(class_name) if class_name in class_list else 0 + bb_color = get_detection_color(class_id, is_bgr=is_bgr) + + # print(f'{frame_str} xyxy: ', (x, y), (x2, y2), flush=True) + display_frame = cv2.rectangle(display_frame, (x, y), (x2, y2), bb_color, 2) + + if class_name != "": + confidence = bbox.get("object_det", {}).get("confidence", 0.0) + label = f"{class_name} {confidence:.2f}" + draw_label(display_frame, label, (x, y), color=bb_color, padding=5) + return display_frame + + +def get_bb_overlay( + display_frame, metadata_or_bbs, scale_display, disp_size, color=(0, 0, 255) +): + """ + Ultra-low latency canvas renderer. Optimized to preserve high FPS. + """ + # Instant escape route for blank inference sequences + if metadata_or_bbs is None or len(metadata_or_bbs) == 0: + return display_frame + + scale_display_x, scale_display_y = scale_display + disp_w, disp_h = disp_size + + # Direct Type Extraction: Handle specific incoming payloads instantly + if isinstance(metadata_or_bbs, list): + # Acknowledge your track array: Fast extraction of structural list layers + if isinstance(metadata_or_bbs[0], dict): + boxes = np.array([b["bbox"] for b in metadata_or_bbs], dtype=np.float32) + else: + boxes = np.array(metadata_or_bbs, dtype=np.float32) + elif isinstance(metadata_or_bbs, np.ndarray): + boxes = metadata_or_bbs + else: + # Fallback mechanism handles raw GPU traces securely if passed downstream + boxes = metadata_or_bbs.detach().cpu().numpy() + + # Pre-allocate coordinates in a single vectorized sweep + x1 = (boxes[:, 0] * scale_display_x).astype(np.int32) + y1 = (boxes[:, 1] * scale_display_y).astype(np.int32) + x2 = (boxes[:, 2] * scale_display_x).astype(np.int32) + y2 = (boxes[:, 3] * scale_display_y).astype(np.int32) + + # Perform low-level C++ drawing inside OpenCV (Zero typing penalties) + for i in range(len(boxes)): + # Clip bounding box corners safely within resolution bounds + rx1 = max(0, x1[i]) + ry1 = max(0, y1[i]) + rx2 = min(disp_w - 1, x2[i]) + ry2 = min(disp_h - 1, y2[i]) + + cv2.rectangle(display_frame, (rx1, ry1), (rx2, ry2), color, 2) + + return display_frame + + def tensor2opencv(frame_source, device_input, is_bgr=True, resize_h=640, resize_w=640): if torch.is_tensor(frame_source): # .contiguous() is CRITICAL here to fix the "shredded" look @@ -555,7 +1275,7 @@ def tensor2opencv(frame_source, device_input, is_bgr=True, resize_h=640, resize_ return img_cpu -def gpumat2cupy(gpu_mat): +def gpumat2cupyv1(gpu_mat): """Bridge OpenCV GpuMat to CuPy without copying data.""" # Get properties from GpuMat w, h = gpu_mat.size() @@ -594,6 +1314,28 @@ class Holder: return cupy.asarray(holder) +def gpumat2cupy(gpu_mat): + """ + Bridge OpenCV GpuMat to CuPy instantly without copying data or parsing dict envelopes. + """ + w, h = gpu_mat.size() + channels = 3 if gpu_mat.type() == cv2.CV_8UC3 else 1 + + if channels == 3: + shape = (h, w, 3) + strides = (gpu_mat.step, 3, 1) + else: + shape = (h, w) + strides = (gpu_mat.step, 1) + + # OPTIMIZATION: Construct a native CuPy array memory wrapper instantly over the raw C++ pointer. + # This completely bypasses the Python dictionary interpreter parsing and 'cupy.asarray' overhead. + mem = cupy.cuda.UnownedMemory(gpu_mat.cudaPtr(), gpu_mat.step * h, gpu_mat) + mptr = cupy.cuda.MemoryPointer(mem, 0) + + return cupy.ndarray(shape=shape, dtype=cupy.uint8, memptr=mptr, strides=strides) + + def torch2gpumat(tensor): """ Creates an OpenCV GpuMat pointing to the same memory as a PyTorch tensor. @@ -648,102 +1390,913 @@ def torch2gpumat(tensor): # Compile the kernel once get_bounds_kernel = cupy.RawKernel(BOUNDS_KERNEL_CODE, "get_bounds") +# BOUNDS_KERNEL_CODE = r""" +# extern "C" __global__ +# void get_bounds_pure(const int* labeled, int pitch_elements, int w, int h, int num_labels, +# int* x1, int* y1, int* x2, int* y2) { +# int x = blockIdx.x * blockDim.x + threadIdx.x; +# int y = blockIdx.y * blockDim.y + threadIdx.y; + +# if (x < w && y < h) { +# // Safe 32-bit element pitch extraction +# int label = labeled[y * pitch_elements + x]; + +# if (label > 0 && label <= num_labels) { +# atomicMin(&x1[label], x); +# atomicMin(&y1[label], y); +# atomicMax(&x2[label], x + 1); +# atomicMax(&y2[label], y + 1); +# } +# } +# } +# """ +# get_bounds_kernel = cupy.RawKernel(BOUNDS_KERNEL_CODE, "get_bounds_pure") + + +# def merge_boxes_gpuv1(raw_boxes, gap_limit=10, size_limit=1000): +# """ +# Refined Parallel Merger with Size Constraints. +# Prevents merges that would create boxes larger than size_limit. +# """ +# if raw_boxes.shape[0] <= 1: +# return raw_boxes + +# x1, y1, x2, y2 = raw_boxes.unbind(1) + +# # 1. Calculate pairwise gaps (Existing logic) +# h_gaps = torch.max( +# torch.zeros(1, device=raw_boxes.device), +# torch.max(x1.unsqueeze(0) - x2.unsqueeze(1), x1.unsqueeze(1) - x2.unsqueeze(0)), +# ) +# v_gaps = torch.max( +# torch.zeros(1, device=raw_boxes.device), +# torch.max(y1.unsqueeze(0) - y2.unsqueeze(1), y1.unsqueeze(1) - y2.unsqueeze(0)), +# ) + +# # 2. NEW: Calculate potential union dimensions for ALL pairs [N, N] +# # We find the min/max coordinates if box i and box j were merged +# union_x1 = torch.min(x1.unsqueeze(0), x1.unsqueeze(1)) +# union_y1 = torch.min(y1.unsqueeze(0), y1.unsqueeze(1)) +# union_x2 = torch.max(x2.unsqueeze(0), x2.unsqueeze(1)) +# union_y2 = torch.max(y2.unsqueeze(0), y2.unsqueeze(1)) + +# union_w = union_x2 - union_x1 +# union_h = union_y2 - union_y1 + +# # 3. ADJACENCY MASK: Must be close AND the result must be under the limit +# # This prevents the creation of massive "megaboxes" +# adj = ( +# (h_gaps < gap_limit) +# & (v_gaps < gap_limit) +# & (union_w < size_limit) +# & (union_h < size_limit) +# ) + +# # 4. Parallel Connected Components (Existing logic) +# components = torch.arange(raw_boxes.shape[0], device=raw_boxes.device) +# r = 3 +# for _ in range(r): +# components = torch.max(adj * components, dim=1).values + +# unique_ids = components.unique() +# merged = [] +# for i in unique_ids: +# mask = components == i +# merged.append( +# torch.cat( +# [raw_boxes[mask, :2].min(0).values, raw_boxes[mask, 2:].max(0).values] +# ) +# ) + +# return torch.stack(merged) + + +# last +def merge_boxes_gpu(raw_boxes, gap_limit=10, size_limit=1280, max_cached_elements=100): + """ + Refined Parallel Merger utilizing static function-attached scratchpads. + Maintains a 100% linear VRAM profile and eliminates dynamic allocations. + """ + if raw_boxes.shape[0] <= 1: + return raw_boxes -def merge_boxes_gpu(raw_boxes, gap_limit=10, size_limit=1000): + # 1. ROBUST CACHE CHECK: Verify shape dimension bounds to prevent 1D flat layout leakage + if ( + not hasattr(merge_boxes_gpu, "adj_matrix") + or merge_boxes_gpu.adj_matrix.ndim != 2 + ): + merge_boxes_gpu.adj_matrix = torch.zeros( + (max_cached_elements, max_cached_elements), + dtype=torch.bool, + device=raw_boxes.device, + ) + merge_boxes_gpu.components = torch.zeros( + (max_cached_elements,), dtype=torch.long, device=raw_boxes.device + ) + merge_boxes_gpu.scratch_out = torch.zeros( + (max_cached_elements, 4), dtype=torch.float32, device=raw_boxes.device + ) + + # Establish safe spatial clip windows depending on current frame tracking load + N = min(raw_boxes.shape[0], max_cached_elements) + + # 2. VECTORIZED ARITHMETIC WITH VIEWS: Completely replace unbind() and unsqueeze() list loops + x1 = raw_boxes[:N, 0] + y1 = raw_boxes[:N, 1] + x2 = raw_boxes[:N, 2] + y2 = raw_boxes[:N, 3] + + # Compute gaps smoothly using in-place operations over zero-copy memory layouts + h_gaps = torch.clamp( + torch.max(x1.view(N, 1) - x2.view(1, N), x1.view(1, N) - x2.view(N, 1)), min=0 + ) + v_gaps = torch.clamp( + torch.max(y1.view(N, 1) - y2.view(1, N), y1.view(1, N) - y2.view(N, 1)), min=0 + ) + + # Map target union envelopes natively + union_w = torch.max(x2.view(N, 1), x2.view(1, N)) - torch.min( + x1.view(N, 1), x1.view(1, N) + ) + union_h = torch.max(y2.view(N, 1), y2.view(1, N)) - torch.min( + y1.view(N, 1), y1.view(1, N) + ) + + # Overwrite adjacency bounds directly into the pre-allocated cache slice + adj = merge_boxes_gpu.adj_matrix[:N, :N] + adj.copy_( + (h_gaps < gap_limit) + & (v_gaps < gap_limit) + & (union_w < size_limit) + & (union_h < size_limit) + ) + + # 3. ACCELERATED CONNECTED COMPONENTS: Run pointer rotations in place + comp = merge_boxes_gpu.components[:N] + torch.arange(N, device=raw_boxes.device, out=comp) + + # Unified logical components compression step + for _ in range(3): + comp.copy_(torch.max(adj * comp, dim=1).values) + + # unique_ids = comp.unique() + # num_merged = unique_ids.shape[0] + + # # 4. STATIC MEMORY AGGREGATION: Eliminate the loops appending torch.cat() arrays + # out_buffer = merge_boxes_gpu.scratch_out[:num_merged] + + # for idx, i in enumerate(unique_ids): + # mask = comp == i + # boxes_subset = raw_boxes[:N][mask] + + # # Write structural outputs directly into our static memory block channels + # out_buffer[idx, 0] = boxes_subset[:, 0].min() + # out_buffer[idx, 1] = boxes_subset[:, 1].min() + # out_buffer[idx, 2] = boxes_subset[:, 2].max() + # out_buffer[idx, 3] = boxes_subset[:, 3].max() + + # # Return the clean floating-point tensor slice natively + # return out_buffer.clone() + + # 1. Initialize an allocation-free O(1) bitmask directly over device registers + # N is already our maximum candidate dimension cap mapped for this frame + valid_bitmask = torch.zeros((N,), dtype=torch.bool, device=raw_boxes.device) + + # 2. Flag every single active logical group ID index in parallel in a single CUDA command + valid_bitmask[comp] = True + + # 3. Pull unique indices instantly using a fast non-zero memory address pass + unique_ids = torch.nonzero(valid_bitmask).squeeze(1) + num_merged = unique_ids.shape[0] + + # 4. Map the aggregation workspace straight onto our persistent static cache slice + out_buffer = merge_boxes_gpu.scratch_out[:num_merged] + + # 5. Extract bounding coordinates cleanly without dynamic vector list loops + for idx, i in enumerate(unique_ids): + mask = comp == i + boxes_subset = raw_boxes[:N][mask] + + if boxes_subset.ndim == 1: + # Reshapes a [4] vector back into a valid [1, 4] 2D matrix canvas + boxes_subset = boxes_subset.view(1, -1) + + # Write structural outputs directly into our static memory block channels + out_buffer[idx, 0] = boxes_subset[:, 0].min() + out_buffer[idx, 1] = boxes_subset[:, 1].min() + out_buffer[idx, 2] = boxes_subset[:, 2].max() + out_buffer[idx, 3] = boxes_subset[:, 3].max() + + # Return the clean floating-point tensor slice natively + return out_buffer.clone() + + +def merge_boxes_gpu_8_25(boxes, gap_limit, size_limit=None, max_cached_elements=100): + """ + Optimized GPU box merging using a grid-based aggregation algorithm. + This avoids the O(n^2) complexity of pairwise distance calculations, making it + ideal for high-density scenarios with hundreds or thousands of boxes. + + Args: + boxes (torch.Tensor): A tensor of shape (N, 4) with boxes [x1, y1, x2, y2]. + gap_limit (float): The cell size for the grid. Boxes within the same + cell will be merged. + size_limit (float, optional): Not used in this version but kept for API compatibility. + max_cached_elements (int, optional): Not used but kept for API compatibility. + + Returns: + torch.Tensor: A tensor of shape (M, 4) with the merged boxes. """ - Refined Parallel Merger with Size Constraints. - Prevents merges that would create boxes larger than size_limit. + if boxes.shape[0] == 0: + return torch.empty((0, 4), device=boxes.device, dtype=boxes.dtype) + + # Assume a 640x640 coordinate space, as this is where the merging happens. + # If this changes, these values must be updated. + IMAGE_WIDTH = 640 + IMAGE_HEIGHT = 640 + + # --- Grid-Based Aggregation --- + + # 1. Calculate box centers + x_centers = (boxes[:, 0] + boxes[:, 2]) / 2.0 + y_centers = (boxes[:, 1] + boxes[:, 3]) / 2.0 + + # 2. Define the grid and assign each box to a grid cell ID + grid_w = int(IMAGE_WIDTH / gap_limit) + 1 + + # Assign a 1D grid cell index to each box + grid_x_indices = (x_centers / gap_limit).long() + grid_y_indices = (y_centers / gap_limit).long() + + # Combine 2D grid indices into a single 1D index for scatter_reduce + cell_indices = grid_y_indices * grid_w + grid_x_indices + num_cells = grid_w * (int(IMAGE_HEIGHT / gap_limit) + 1) + + # 3. Use scatter_reduce to merge boxes in each cell in parallel + # We need tensors to hold the min/max coordinates for each cell. + # Initialize `merged_x1` and `merged_y1` to a large value. + # Initialize `merged_x2` and `merged_y2` to a small value. + + merged_x1 = torch.full( + (num_cells,), float("inf"), device=boxes.device, dtype=boxes.dtype + ) + merged_y1 = torch.full( + (num_cells,), float("inf"), device=boxes.device, dtype=boxes.dtype + ) + merged_x2 = torch.full( + (num_cells,), float("-inf"), device=boxes.device, dtype=boxes.dtype + ) + merged_y2 = torch.full( + (num_cells,), float("-inf"), device=boxes.device, dtype=boxes.dtype + ) + + # Find the min x1 and y1 for all boxes in each cell + merged_x1.scatter_reduce_( + 0, cell_indices, boxes[:, 0], reduce="amin", include_self=False + ) + merged_y1.scatter_reduce_( + 0, cell_indices, boxes[:, 1], reduce="amin", include_self=False + ) + + # Find the max x2 and y2 for all boxes in each cell + merged_x2.scatter_reduce_( + 0, cell_indices, boxes[:, 2], reduce="amax", include_self=False + ) + merged_y2.scatter_reduce_( + 0, cell_indices, boxes[:, 3], reduce="amax", include_self=False + ) + + # 4. Filter out the empty cells to get the final merged boxes + # A cell is considered populated if its min value is not infinity. + valid_cells_mask = merged_x1 != float("inf") + + final_boxes = torch.stack( + [ + merged_x1[valid_cells_mask], + merged_y1[valid_cells_mask], + merged_x2[valid_cells_mask], + merged_y2[valid_cells_mask], + ], + dim=1, + ) + + # The grid-based approach might merge boxes that are in the same cell but + # not directly adjacent. A second pass on the much smaller set of merged + # boxes could be done, but for performance, this initial merge is often sufficient. + # For now, we return the direct result of the grid aggregation. + + return final_boxes + + +# last +def merge_boxes_gpu_v1( + raw_boxes, gap_limit=10, size_limit=1000, max_cached_elements=256 +): + """ + Refined Parallel Merger utilizing static function-attached scratchpads. + 100% loop-free vectorized tensor reduction matching original accuracy. """ if raw_boxes.shape[0] <= 1: return raw_boxes - x1, y1, x2, y2 = raw_boxes.unbind(1) + # 1. PERSISTENT WORKSPACE CACHE INITIALIZATION + if ( + not hasattr(merge_boxes_gpu, "adj_matrix") + or merge_boxes_gpu.adj_matrix.ndim != 2 + ): + merge_boxes_gpu.adj_matrix = torch.zeros( + (max_cached_elements, max_cached_elements), + dtype=torch.bool, + device=raw_boxes.device, + ) + merge_boxes_gpu.components = torch.zeros( + (max_cached_elements,), dtype=torch.long, device=raw_boxes.device + ) + merge_boxes_gpu.scratch_out = torch.zeros( + (max_cached_elements, 4), dtype=torch.float32, device=raw_boxes.device + ) + + N = min(raw_boxes.shape[0], max_cached_elements) + + # 2. VECTORIZED ARITHMETIC WITH VIEWS (Your exact matching geometry) + x1 = raw_boxes[:N, 0] + y1 = raw_boxes[:N, 1] + x2 = raw_boxes[:N, 2] + y2 = raw_boxes[:N, 3] - # 1. Calculate pairwise gaps (Existing logic) - h_gaps = torch.max( - torch.zeros(1, device=raw_boxes.device), - torch.max(x1.unsqueeze(0) - x2.unsqueeze(1), x1.unsqueeze(1) - x2.unsqueeze(0)), + h_gaps = torch.clamp( + torch.max(x1.view(N, 1) - x2.view(1, N), x1.view(1, N) - x2.view(N, 1)), min=0 ) - v_gaps = torch.max( - torch.zeros(1, device=raw_boxes.device), - torch.max(y1.unsqueeze(0) - y2.unsqueeze(1), y1.unsqueeze(1) - y2.unsqueeze(0)), + v_gaps = torch.clamp( + torch.max(y1.view(N, 1) - y2.view(1, N), y1.view(1, N) - y2.view(N, 1)), min=0 + ) + + union_w = torch.max(x2.view(N, 1), x2.view(1, N)) - torch.min( + x1.view(N, 1), x1.view(1, N) + ) + union_h = torch.max(y2.view(N, 1), y2.view(1, N)) - torch.min( + y1.view(N, 1), y1.view(1, N) + ) + + adj = merge_boxes_gpu.adj_matrix[:N, :N] + adj.copy_( + (h_gaps < gap_limit) + & (v_gaps < gap_limit) + & (union_w < size_limit) + & (union_h < size_limit) ) - # 2. NEW: Calculate potential union dimensions for ALL pairs [N, N] - # We find the min/max coordinates if box i and box j were merged - union_x1 = torch.min(x1.unsqueeze(0), x1.unsqueeze(1)) - union_y1 = torch.min(y1.unsqueeze(0), y1.unsqueeze(1)) - union_x2 = torch.max(x2.unsqueeze(0), x2.unsqueeze(1)) - union_y2 = torch.max(y2.unsqueeze(0), y2.unsqueeze(1)) + # 3. ACCELERATED CONNECTED COMPONENTS + comp = merge_boxes_gpu.components[:N] + torch.arange(N, device=raw_boxes.device, out=comp) + + # Label propagation iterations + for _ in range(3): + comp.copy_(torch.max(adj * comp, dim=1).values) + + # 4. 100% LOOP-FREE VECTORIZED REDUCTION (Replaces lines 102-115) + # Remap cluster assignments to continuous indices from 0 to M-1 + unique_ids, cluster_assignments = torch.unique(comp, return_inverse=True) + num_merged = unique_ids.shape[0] + + # Pre-size output buffer view slices + out_buffer = merge_boxes_gpu.scratch_out[:num_merged] + + # Vectorized min/max reduction using scatter_reduce + # We initialize extreme values to find true minimums and maximums + out_buffer[:, 0:2].fill_(float("inf")) + # out_buffer[:, 1].fill_(float("inf")) + out_buffer[:, 2:4].fill_(float("-inf")) + # out_buffer[:, 3].fill_(float("-inf")) + + # Parallel reduction via native C++ PyTorch backend kernels (0ms loop overhead) + out_buffer[:, 0].scatter_reduce_( + 0, cluster_assignments, x1, reduce="amin", include_self=False + ) + out_buffer[:, 1].scatter_reduce_( + 0, cluster_assignments, y1, reduce="amin", include_self=False + ) + out_buffer[:, 2].scatter_reduce_( + 0, cluster_assignments, x2, reduce="amax", include_self=False + ) + out_buffer[:, 3].scatter_reduce_( + 0, cluster_assignments, y2, reduce="amax", include_self=False + ) - union_w = union_x2 - union_x1 - union_h = union_y2 - union_y1 + # Enforce geometric size limits vectorially + widths = out_buffer[:, 2] - out_buffer[:, 0] + heights = out_buffer[:, 3] - out_buffer[:, 1] - # 3. ADJACENCY MASK: Must be close AND the result must be under the limit - # This prevents the creation of massive "megaboxes" - adj = ( + width_mask = widths > size_limit + height_mask = heights > size_limit + + out_buffer[width_mask, 2] = out_buffer[width_mask, 0] + size_limit + out_buffer[height_mask, 3] = out_buffer[height_mask, 1] + size_limit + + return out_buffer.clone() + + +def merge_boxes_gpu_v2( + raw_boxes, gap_limit=10, size_limit=1000, max_cached_elements=256 +): + """ + Refined Parallel Merger utilizing static function-attached scratchpads. + Maintains a 100% linear VRAM profile and eliminates dynamic allocations. + Uses fully vectorized 2D broadcasting to calculate merged bounding boxes + simultaneously on the GPU without sequential loops or CPU synchronization stalls. + """ + if raw_boxes.shape[0] <= 1: + return raw_boxes + + # 1. ROBUST CACHE CHECK: Verify shape dimension bounds to prevent 1D flat layout leakage + if ( + not hasattr(merge_boxes_gpu, "adj_matrix") + or merge_boxes_gpu.adj_matrix.ndim != 2 + ): + merge_boxes_gpu.adj_matrix = torch.zeros( + (max_cached_elements, max_cached_elements), + dtype=torch.bool, + device=raw_boxes.device, + ) + merge_boxes_gpu.components = torch.zeros( + (max_cached_elements,), dtype=torch.long, device=raw_boxes.device + ) + merge_boxes_gpu.scratch_out = torch.zeros( + (max_cached_elements, 4), dtype=torch.float32, device=raw_boxes.device + ) + + # Establish safe spatial clip windows depending on current frame tracking load + N = min(raw_boxes.shape[0], max_cached_elements) + + # 2. VECTORIZED ARITHMETIC WITH VIEWS: Completely replace unbind() and unsqueeze() list loops + x1 = raw_boxes[:N, 0] + y1 = raw_boxes[:N, 1] + x2 = raw_boxes[:N, 2] + y2 = raw_boxes[:N, 3] + + # Create spatial lookup grids via view broadcasting + x1_col, x1_row = x1.view(N, 1), x1.view(1, N) + y1_col, y1_row = y1.view(N, 1), y1.view(1, N) + x2_col, x2_row = x2.view(N, 1), x2.view(1, N) + y2_col, y2_row = y2.view(N, 1), y2.view(1, N) + + # Compute distance boundaries directly using hardware vector instructions + h_gaps = torch.clamp( + torch.maximum(x1_col, x1_row) - torch.minimum(x2_col, x2_row), min=0 + ) + v_gaps = torch.clamp( + torch.maximum(y1_col, y1_row) - torch.minimum(y2_col, y2_row), min=0 + ) + + # Map target union envelopes without generating intermediate subtraction tensors + union_w = torch.maximum(x2_col, x2_row) - torch.minimum(x1_col, x1_row) + union_h = torch.maximum(y2_col, y2_row) - torch.minimum(y1_col, y1_row) + + # Overwrite adjacency bounds directly into the pre-allocated cache slice + adj = merge_boxes_gpu.adj_matrix[:N, :N] + adj.copy_( (h_gaps < gap_limit) & (v_gaps < gap_limit) & (union_w < size_limit) & (union_h < size_limit) ) - # 4. Parallel Connected Components (Existing logic) - components = torch.arange(raw_boxes.shape[0], device=raw_boxes.device) - r = 3 - for _ in range(r): - components = torch.max(adj * components, dim=1).values + # 3. ACCELERATED CONNECTED COMPONENTS: Run pointer rotations in place + comp = merge_boxes_gpu.components[:N] + torch.arange(N, device=raw_boxes.device, out=comp) + + # Wrap the destination outputs into a fast component view format + comp_idx_scratch = torch.zeros(N, dtype=torch.long, device=raw_boxes.device) + output_tuple = (comp, comp_idx_scratch) + + # Unified logical components compression step + for _ in range(3): + torch.max(torch.where(adj, comp, 0), dim=1, out=output_tuple) + + # 4. VECTORIZED COMPONENT REDUCTION (ZERO-LOOP BRIDGING) + # Find the unique cluster assignments entirely on the GPU + unique_ids = comp.unique() + num_merged = unique_ids.shape[0] + + # Sub-slice our persistent function cache block instantly + out_buffer = merge_boxes_gpu.scratch_out[:num_merged] + boxes_subset = raw_boxes[:N] + + # Create a 2D broadcasted membership equality grid [Num_Clusters, N_Boxes] + # This evaluates cluster assignments for all boxes simultaneously on the GPU! + mask_grid = comp.unsqueeze(0) == unique_ids.view(-1, 1) + + # Mask out invalid bounding box entries by casting non-members to extreme float values. + # This guarantees unassigned boxes do not interfere with the parallel min/max reduction. + x1_masked = torch.where(mask_grid, boxes_subset[:, 0].unsqueeze(0), float("inf")) + y1_masked = torch.where(mask_grid, boxes_subset[:, 1].unsqueeze(0), float("inf")) + x2_masked = torch.where(mask_grid, boxes_subset[:, 2].unsqueeze(0), float("-inf")) + y2_masked = torch.where(mask_grid, boxes_subset[:, 3].unsqueeze(0), float("-inf")) + + # Execute single-pass parallel reductions across dim=1 (the boxes axis) + # Bypasses Python loop steps, CPU stalls, and unoptimized scatter commands entirely + out_buffer[:, 0] = x1_masked.min(dim=1).values + out_buffer[:, 1] = y1_masked.min(dim=1).values + out_buffer[:, 2] = x2_masked.max(dim=1).values + out_buffer[:, 3] = y2_masked.max(dim=1).values + + # Clean local tensor references inside the function namespace to protect VRAM scope + del ( + mask_grid, + comp_idx_scratch, + x1_masked, + y1_masked, + x2_masked, + y2_masked, + boxes_subset, + ) - unique_ids = components.unique() - merged = [] - for i in unique_ids: - mask = components == i - merged.append( - torch.cat( - [raw_boxes[mask, :2].min(0).values, raw_boxes[mask, 2:].max(0).values] + return out_buffer.clone() + + +def merge_boxes_gpu_v3( + raw_boxes, gap_limit=10, size_limit=640, max_cached_elements=1500 +): + """ + Optimized Parallel Merger for pixel-integer motion boxes. + Groups close boxes and dynamically expands all resulting blocks up to a uniform + size_limit square for optimal YOLO backbone processing. + + Args: + raw_boxes (torch.Tensor): Int or Float Tensor of shape [N, 4] -> [x1, y1, x2, y2] + gap_limit (int): Proximity merge trigger threshold in absolute pixels. + size_limit (int): Target square dimension (width & height) for YOLO input. + """ + if raw_boxes.shape[0] == 0: + return raw_boxes + + # Sizing metrics for center-out expansion + half_size = float(size_limit) / 2.0 + + # 1. DYNAMIC FRAME RESOLUTION DETECTION + # Automatically extracts frame limits from the highest observed coordinates in the batch + # to avoid hardcoding video resolution dimensions. + if raw_boxes.shape[0] > 0: + frame_w = int(torch.max(raw_boxes[:, 2]).item()) + frame_h = int(torch.max(raw_boxes[:, 3]).item()) + # Safe fallback buffer if tracking objects at the extreme top/left edges + frame_w = max(frame_w, 640) + frame_h = max(frame_h, 640) + else: + frame_w, frame_h = 1920, 1080 + + # Handle single box edge-case quickly to minimize path latency + if raw_boxes.shape[0] == 1: + merged_buffer = raw_boxes.clone().float() + num_merged = 1 + else: + # 2. ROBUST VRAM CACHE SEEDING + if ( + not hasattr(merge_boxes_gpu, "adj_matrix") + or merge_boxes_gpu.adj_matrix.ndim != 2 + ): + merge_boxes_gpu.adj_matrix = torch.zeros( + (max_cached_elements, max_cached_elements), + dtype=torch.bool, + device=raw_boxes.device, + ) + merge_boxes_gpu.components = torch.zeros( + (max_cached_elements,), dtype=torch.long, device=raw_boxes.device ) + merge_boxes_gpu.scratch_out = torch.zeros( + (max_cached_elements, 4), dtype=torch.float32, device=raw_boxes.device + ) + + N = min(raw_boxes.shape[0], max_cached_elements) + + # 3. PARALLEL GEOMETRIC GAP CALCULATIONS + x1 = raw_boxes[:N, 0] + y1 = raw_boxes[:N, 1] + x2 = raw_boxes[:N, 2] + y2 = raw_boxes[:N, 3] + + h_gaps = torch.clamp( + torch.max(x1.view(N, 1) - x2.view(1, N), x1.view(1, N) - x2.view(N, 1)), + min=0, + ) + v_gaps = torch.clamp( + torch.max(y1.view(N, 1) - y2.view(1, N), y1.view(1, N) - y2.view(N, 1)), + min=0, ) - return torch.stack(merged) + union_w = torch.max(x2.view(N, 1), x2.view(1, N)) - torch.min( + x1.view(N, 1), x1.view(1, N) + ) + union_h = torch.max(y2.view(N, 1), y2.view(1, N)) - torch.min( + y1.view(N, 1), y1.view(1, N) + ) + + # Vectorized generation of adjacency grid state properties + adj = merge_boxes_gpu.adj_matrix[:N, :N] + adj.copy_( + (h_gaps < gap_limit) + & (v_gaps < gap_limit) + & (union_w <= size_limit) + & (union_h <= size_limit) + ) + + # 4. CONNECTED COMPONENT DISCOVERY VIA GRAPH ITERATIONS + comp = merge_boxes_gpu.components[:N] + torch.arange(N, device=raw_boxes.device, out=comp) + + for _ in range(3): + comp.copy_(torch.max(adj * comp, dim=1).values) + + unique_ids = comp.unique() + num_merged = unique_ids.shape[0] + merged_buffer = merge_boxes_gpu.scratch_out[:num_merged] + + for idx, i in enumerate(unique_ids): + mask = comp == i + boxes_subset = raw_boxes[:N][mask] + + merged_buffer[idx, 0] = boxes_subset[:, 0].min() + merged_buffer[idx, 1] = boxes_subset[:, 1].min() + merged_buffer[idx, 2] = boxes_subset[:, 2].max() + merged_buffer[idx, 3] = boxes_subset[:, 3].max() + + # 5. SYMMETRIC CENTROID SQUARE EXPANSION + cx = (merged_buffer[:, 0] + merged_buffer[:, 2]) * 0.5 + cy = (merged_buffer[:, 1] + merged_buffer[:, 3]) * 0.5 + + ex1 = cx - half_size + ey1 = cy - half_size + ex2 = cx + half_size + ey2 = cy + half_size + + # 6. EDGE-COLLISION ANCHOR SHIFTING + # Instead of destructive clipping (which breaks squares), shift windows inward + # when they hit frame edges to guarantee your exact YOLO aspect ratio is maintained. + shift_left = torch.clamp(0.0 - ex1, min=0) + shift_right = torch.clamp(ex2 - frame_w, min=0) + ex1 += shift_left - shift_right + ex2 += shift_left - shift_right + + shift_top = torch.clamp(0.0 - ey1, min=0) + shift_bottom = torch.clamp(ey2 - frame_h, min=0) + ey1 += shift_top - shift_bottom + ey2 += shift_top - shift_bottom + + # 7. INTEGER FORMAT OUTPUT AND SECURE BOUNDARY BOUNDING + final_output = torch.zeros( + (num_merged, 4), dtype=torch.long, device=raw_boxes.device + ) + final_output[:, 0] = torch.clamp(ex1.round().long(), min=0, max=frame_w) + final_output[:, 1] = torch.clamp(ey1.round().long(), min=0, max=frame_h) + final_output[:, 2] = torch.clamp(ex2.round().long(), min=0, max=frame_w) + final_output[:, 3] = torch.clamp(ey2.round().long(), min=0, max=frame_h) + + return final_output -def merge_boxes_cpuv1(boxes, gap_limit=10): +def merge_boxes_gpu_v4( + raw_boxes, gap_limit=10, size_limit=1000, max_cached_elements=1500 +): """ - Greedy merge in 640x640 space to consolidate swarm fragments. - Input: List of [x1, y1, x2, y2] within [0, 640] + Refined Parallel Merger utilizing static function-attached scratchpads. + Maintains a 100% linear VRAM profile and eliminates dynamic allocations. """ - if not boxes: - return [] + if raw_boxes.shape[0] <= 1: + return raw_boxes - # O(N log N) sort by X for early exit optimization - boxes = sorted(boxes, key=lambda x: x[0]) - merged = [] + # ─── ADD THIS HIGH-THROUGHPUT CANDIDATE FILTER GUARD ────────────────── + # 1. Compute areas of all boxes instantly in parallel on the GPU + # widths = raw_boxes[:, 2] - raw_boxes[:, 0] + # heights = raw_boxes[:, 3] - raw_boxes[:, 1] + # areas = widths * heights + + # # 2. If the scene is overloaded, prioritize the top 400 largest macro regions + # # This prevents noise artifacts from blowing up the [N, N] grid layout! + # if raw_boxes.shape[0] > 400: + # _, top_indices = torch.topk(areas, k=400, sorted=False) + # raw_boxes = raw_boxes[top_indices] + # ────────────────────────────────────────────────────────────────────── + + # 1. ROBUST CACHE CHECK: Verify shape dimension bounds to prevent 1D flat layout leakage + if ( + not hasattr(merge_boxes_gpu, "adj_matrix") + or merge_boxes_gpu.adj_matrix.ndim != 2 + ): + merge_boxes_gpu.adj_matrix = torch.zeros( + (max_cached_elements, max_cached_elements), + dtype=torch.bool, + device=raw_boxes.device, + ) + merge_boxes_gpu.components = torch.zeros( + (max_cached_elements,), dtype=torch.long, device=raw_boxes.device + ) + merge_boxes_gpu.components_idx = torch.zeros( + (max_cached_elements,), dtype=torch.long, device=raw_boxes.device + ) + merge_boxes_gpu.scratch_out = torch.zeros( + (max_cached_elements, 4), dtype=torch.float32, device=raw_boxes.device + ) - while boxes: - curr = boxes.pop(0) - i = 0 - while i < len(boxes): - test = boxes[i] - # Early exit: horizontal gap exceeds limit - if test[0] - curr[2] > gap_limit: - break + # Establish safe spatial clip windows depending on current frame tracking load + N = min(raw_boxes.shape[0], max_cached_elements) + + # 2. VECTORIZED ARITHMETIC WITH VIEWS: Completely replace unbind() and unsqueeze() list loops + x1 = raw_boxes[:N, 0] + y1 = raw_boxes[:N, 1] + x2 = raw_boxes[:N, 2] + y2 = raw_boxes[:N, 3] + + # # Compute gaps smoothly using in-place operations over zero-copy memory layouts + # h_gaps = torch.clamp( + # torch.max(x1.view(N, 1) - x2.view(1, N), x1.view(1, N) - x2.view(N, 1)), min=0 + # ) + # v_gaps = torch.clamp( + # torch.max(y1.view(N, 1) - y2.view(1, N), y1.view(1, N) - y2.view(N, 1)), min=0 + # ) + + # # Map target union envelopes natively + # union_w = torch.max(x2.view(N, 1), x2.view(1, N)) - torch.min( + # x1.view(N, 1), x1.view(1, N) + # ) + # union_h = torch.max(y2.view(N, 1), y2.view(1, N)) - torch.min( + # y1.view(N, 1), y1.view(1, N) + # ) + x1_col, x1_row = x1.view(N, 1), x1.view(1, N) + y1_col, y1_row = y1.view(N, 1), y1.view(1, N) + x2_col, x2_row = x2.view(N, 1), x2.view(1, N) + y2_col, y2_row = y2.view(N, 1), y2.view(1, N) + + # Compute distance boundaries directly. + # torch.maximum/minimum maps to direct hardware vector instructions. + h_gaps = torch.clamp( + torch.maximum(x1_col, x1_row) - torch.minimum(x2_col, x2_row), min=0 + ) + v_gaps = torch.clamp( + torch.maximum(y1_col, y1_row) - torch.minimum(y2_col, y2_row), min=0 + ) - # Check vertical gap - y_dist = max(0, test[1] - curr[3], curr[3] - test[1]) - if y_dist <= gap_limit: - # Expand curr box to include test - curr = [ - min(curr[0], test[0]), - min(curr[1], test[1]), - max(curr[2], test[2]), - max(curr[3], test[3]), - ] - boxes.pop(i) - i = 0 # Re-check boundaries - else: - i += 1 - merged.append(curr) - return merged + # Map target union envelopes without generating intermediate subtraction tensors + union_w = torch.maximum(x2_col, x2_row) - torch.minimum(x1_col, x1_row) + union_h = torch.maximum(y2_col, y2_row) - torch.minimum(y1_col, y1_row) + + # Overwrite adjacency bounds directly into the pre-allocated cache slice + adj = merge_boxes_gpu.adj_matrix[:N, :N] + adj.copy_( + (h_gaps < gap_limit) + & (v_gaps < gap_limit) + & (union_w < size_limit) + & (union_h < size_limit) + ) + + # 3. ACCELERATED CONNECTED COMPONENTS: Run pointer rotations in place + comp = merge_boxes_gpu.components[:N] + # comp_idx = merge_boxes_gpu.components_idx[:N] + comp_idx_scratch = torch.zeros(N, dtype=torch.long, device=raw_boxes.device) + torch.arange(N, device=raw_boxes.device, out=comp) + + # Pack the destination outputs into the exact 2-tensor tuple expected by torch.max + output_tuple = (comp, comp_idx_scratch) + + # Unified logical components compression step + for _ in range(3): + # comp.copy_(torch.max(adj * comp, dim=1).values) + # Using a logical matrix view avoids any intermediate [N, N] expansions + torch.max(torch.where(adj, comp, 0), dim=1, out=output_tuple) + + # unique_ids = comp.unique() + # num_merged = unique_ids.shape[0] + + # # 4. STATIC MEMORY AGGREGATION: Eliminate the loops appending torch.cat() arrays + # out_buffer = merge_boxes_gpu.scratch_out[:num_merged] + + # for idx, i in enumerate(unique_ids): + # mask = comp == i + # boxes_subset = raw_boxes[:N][mask] + + # # Write structural outputs directly into our static memory block channels + # out_buffer[idx, 0] = boxes_subset[:, 0].min() + # out_buffer[idx, 1] = boxes_subset[:, 1].min() + # out_buffer[idx, 2] = boxes_subset[:, 2].max() + # out_buffer[idx, 3] = boxes_subset[:, 3].max() + + # # Return the clean floating-point tensor slice natively + # return out_buffer.clone() + + # 1. Map labels to a clean 0-indexed range without calling .unique() or syncing with the CPU + # torch.unique(..., return_inverse=True) handles the grouping array assembly entirely on the GPU + # _, inverse_indices = torch.unique(comp, return_inverse=True) + # num_merged = inverse_indices.max().item() + 1 # Minimal sync step + + # out_buffer = merge_boxes_gpu.scratch_out[:num_merged] + # boxes_subset = raw_boxes[:N] + + # # 2. Pre-fill scratchpad buffers with boundary initialization constants + # out_buffer[:, 0:2].fill_(float('inf')) + # out_buffer[:, 2:4].fill_(float('-inf')) + + # # 3. Use highly optimized CUDA scatter reduction handles to compute all mins/maxes at once + # # This completely eliminates your sequential Python "for idx, i in enumerate" loops! + # out_buffer[:, 0:2].scatter_reduce_(0, inverse_indices.view(-1, 1).expand(-1, 2), boxes_subset[:, 0:2], reduce="amin", include_self=False) + # out_buffer[:, 2:4].scatter_reduce_(0, inverse_indices.view(-1, 1).expand(-1, 2), boxes_subset[:, 2:4], reduce="amax", include_self=False) + + # return out_buffer.clone() + + # 1. Use maximum theoretical capacity boundaries directly (N candidates max) + # This completely skips calculating max item counts on the CPU host! + out_buffer = merge_boxes_gpu.scratch_out[:N] + boxes_subset = raw_boxes[:N] + + # 2. Reset our fixed scratchpad slice boundaries using parallel operations + out_buffer[:, 0:2].fill_(float("inf")) + out_buffer[:, 2:4].fill_(float("-inf")) + + # 3. Use 'comp' directly as your index axis mapping variable! + # Because 'comp' values fall within [0, N-1], they are already valid scatter addresses. + # This executes 100% asynchronously on the GPU without pausing the CPU thread. + out_buffer[:, 0:2].scatter_reduce_( + 0, + comp.view(-1, 1).expand(-1, 2), + boxes_subset[:, 0:2], + reduce="amin", + include_self=False, + ) + out_buffer[:, 2:4].scatter_reduce_( + 0, + comp.view(-1, 1).expand(-1, 2), + boxes_subset[:, 2:4], + reduce="amax", + include_self=False, + ) + + # 4. Filter out unwritten rows where the boundaries remain at infinity + # valid_mask = out_buffer[:, 0] != float('inf') + + # # return out_buffer[valid_mask].clone() + # # Extract the exact non-zero index mappings entirely on the GPU. + # # This prevents the CPU from forcing a data shape verification step! + # valid_indices = torch.nonzero(valid_mask).squeeze(1) + + # # Index with integers instead of booleans to drop line 1098 down to 0ms + # return out_buffer[valid_indices].clone() + + # 4. Filter out unwritten rows where the boundaries remain at infinity + valid_mask = out_buffer[:, 0] != float("inf") + + # Sort the boolean mask in descending order entirely on the GPU hardware. + # This automatically pushes all valid boxes (True/1) to the top of the matrix + # and leaves unwritten slots (False/0) at the bottom. + _, sort_indices = torch.sort(valid_mask.long(), descending=True, dim=0) + + # Rearrange the static out_buffer asynchronously without altering its shape [N, 4] + out_buffer_sorted = out_buffer[sort_indices] + + # Overwrite the remaining invalid infinity rows to safe zero-pads. + # This ensures downstream deep learning blocks don't encounter NaN errors. + invalid_rows_mask = ~valid_mask[sort_indices] + out_buffer_sorted[invalid_rows_mask] = 0.0 + + # Return the static-shaped [N, 4] tensor handle. + # Because N is already known by the CPU, line 1098 drops instantly to 0ms! + return out_buffer_sorted + + +# def merge_boxes_cpuv1(boxes, gap_limit=10): +# """ +# Greedy merge in 640x640 space to consolidate swarm fragments. +# Input: List of [x1, y1, x2, y2] within [0, 640] +# """ +# if not boxes: +# return [] + +# # O(N log N) sort by X for early exit optimization +# boxes = sorted(boxes, key=lambda x: x[0]) +# merged = [] + +# while boxes: +# curr = boxes.pop(0) +# i = 0 +# while i < len(boxes): +# test = boxes[i] +# # Early exit: horizontal gap exceeds limit +# if test[0] - curr[2] > gap_limit: +# break + +# # Check vertical gap +# y_dist = max(0, test[1] - curr[3], curr[3] - test[1]) +# if y_dist <= gap_limit: +# # Expand curr box to include test +# curr = [ +# min(curr[0], test[0]), +# min(curr[1], test[1]), +# max(curr[2], test[2]), +# max(curr[3], test[3]), +# ] +# boxes.pop(i) +# i = 0 # Re-check boundaries +# else: +# i += 1 +# merged.append(curr) +# return merged def merge_boxes_cpu(boxes, gap_limit=10, size_limit=800): @@ -809,135 +2362,136 @@ def merge_boxes_cpu(boxes, gap_limit=10, size_limit=800): return merged -def find_contours_gpu_equivalent( - mask_gpu_mat, stream=None, grid_size=16, limit_640=1000, max_boxes=100 -): - """ - ULTRA-OPTIMIZED: Grid-based Region Proposal. - Reduces N to prevent merger bottlenecks. Latency: <0.5ms. - """ - # 1. Zero-copy bridge: GpuMat -> CuPy -> Torch - mask_cp = gpumat2cupy(mask_gpu_mat) - mask_tensor = torch.as_tensor(mask_cp, device="cuda") - - # # 2. Downsample via Max Pooling (Acts as Denoise + Grouper) - # # A 32x32 grid on 640x640 creates a 20x20 matrix (400 cells max) - # pooled = F.max_pool2d( - # mask_tensor.unsqueeze(0).unsqueeze(0).float(), - # kernel_size=grid_size, - # stride=grid_size - # ).squeeze() - - # # 3. Get Indices of Motion - # indices = torch.nonzero(pooled > 0) - # A grid_size of 32 has 1,024 pixels. - # We require at least 5% (approx 50 pixels) to be white to trigger a ROI. - # This 'math' kills terrain shimmer but keeps solid drone blobs. - # density_threshold = (grid_size * grid_size) * 0.05 - - # Use torch.count_nonzero if using AvgPool, or stick to pooled with threshold - # Since 'pooled' from MaxPool is just the max value (0 or 255), - # we should use F.avg_pool2d instead to get a density map: - - density_map = F.avg_pool2d( - mask_tensor.unsqueeze(0).unsqueeze(0).float(), - kernel_size=grid_size, - stride=grid_size, - ).squeeze() - - # Define your sensitivity (e.g., 5% density) - # If a block is 5% full of 'white' (255) pixels, the average will be 12.75 - density_threshold = 2 # int((grid_size * grid_size) * 0.01) - - # 255 * 0.10 means the grid cell must be 10% white pixels - indices = torch.nonzero(density_map > density_threshold) - - # EARLY EXIT: No motion detected, return empty - if indices.shape[0] == 0: - return torch.empty((0, 4), device="cuda") - # 2. SORT BY DENSITY: Get values for each index - # We pull the density values for every 'hot' cell - densities = density_map[indices[:, 0], indices[:, 1]] - - # 3. Get the sort order (Descending: highest density first) - _, sort_order = torch.sort(densities, descending=True) - indices = indices[sort_order] - - # CAP N: If scene is too noisy, take top regions to save the merger - if indices.shape[0] > max_boxes: - indices = indices[:max_boxes] - - # 4. Map back to 640p Bounding Boxes - y1, x1 = indices[:, 0] * grid_size, indices[:, 1] * grid_size - y2, x2 = y1 + grid_size, x1 + grid_size - raw_boxes = torch.stack([x1, y1, x2, y2], dim=1).float() - - # 5. Merge adjacent grid blocks - # gap_limit=grid_size+2 ensures diagonal/nearby blocks connect - return merge_boxes_gpu(raw_boxes, gap_limit=grid_size * 2, size_limit=limit_640) - - -def find_contours_gpu_equivalentv1(mask_gpu_mat, stream=None, limit_640=None): - """ - GPU equivalent to cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) - Returns: torch.Tensor [N, 4] containing (x1, y1, x2, y2) in analysis space. - """ - # Bridge OpenCV GpuMat to CuPy (Zero-Copy) - w, h = mask_gpu_mat.size() - ptr = mask_gpu_mat.cudaPtr() - pitch_bytes = mask_gpu_mat.step - - mask_cp = cupy.ndarray( - (h, w), - dtype=cupy.uint8, - memptr=cupy.cuda.MemoryPointer( - cupy.cuda.UnownedMemory(ptr, pitch_bytes * h, mask_gpu_mat), 0 - ), - strides=(pitch_bytes, 1), - ) - - # Use the stream pointer if provided, otherwise default to 0 (Null Stream) - stream_ptr = stream.cudaPtr() if stream else 0 - - with cupy.cuda.ExternalStream(stream_ptr): - # Labeling (Equivalent to finding connected components) - # labeled is an int32 array where every 'blob' has a unique number - structure = cupy.array([[1, 1, 1], [1, 1, 1], [1, 1, 1]]) - labeled, num_labels = cupyx.scipy.ndimage.label(mask_cp, structure=structure) - - if num_labels == 0: - return torch.empty((0, 4), device="cuda") - - # Setup Bounding Box Buffers - x1 = cupy.full((num_labels + 1,), w, dtype=cupy.int32) - y1 = cupy.full((num_labels + 1,), h, dtype=cupy.int32) - x2 = cupy.full((num_labels + 1,), -1, dtype=cupy.int32) - y2 = cupy.full((num_labels + 1,), -1, dtype=cupy.int32) - - # Run the Bounds Kernel - # IMPORTANT: Use labeled.strides[0]//4 to get the pitch in elements - pitch_elements = labeled.strides[0] // 4 - tpb = (16, 16) - bpg = ((w + tpb[0] - 1) // tpb[0], (h + tpb[1] - 1) // tpb[1]) - - get_bounds_kernel( - bpg, tpb, (labeled, pitch_elements, w, h, num_labels, x1, y1, x2, y2) - ) - - # Stack and return as Torch Tensor for YOLO/Drawing - # We skip index 0 as it represents the background (black) - # boxes = torch.stack( - # [ - # torch.as_tensor(x1[1:], device="cuda"), - # torch.as_tensor(y1[1:], device="cuda"), - # torch.as_tensor(x2[1:], device="cuda"), - # torch.as_tensor(y2[1:], device="cuda"), - # ], - # dim=1, - # ).float() - boxes = cupy.column_stack((x1[1:], y1[1:], x2[1:], y2[1:])) - - return torch.as_tensor(boxes, device="cuda").float() +# def find_contours_gpu_equivalent_v1( +# mask_gpu_mat, stream=None, grid_size=16, limit_640=1000, max_boxes=100 +# ): +# """ +# ULTRA-OPTIMIZED: Grid-based Region Proposal. +# Reduces N to prevent merger bottlenecks. Latency: <0.5ms. +# """ +# # 1. Zero-copy bridge: GpuMat -> CuPy -> Torch +# mask_cp = gpumat2cupy(mask_gpu_mat) +# mask_tensor = torch.as_tensor(mask_cp, device="cuda") + +# # # 2. Downsample via Max Pooling (Acts as Denoise + Grouper) +# # # A 32x32 grid on 640x640 creates a 20x20 matrix (400 cells max) +# # pooled = F.max_pool2d( +# # mask_tensor.unsqueeze(0).unsqueeze(0).float(), +# # kernel_size=grid_size, +# # stride=grid_size +# # ).squeeze() + +# # # 3. Get Indices of Motion +# # indices = torch.nonzero(pooled > 0) +# # A grid_size of 32 has 1,024 pixels. +# # We require at least 5% (approx 50 pixels) to be white to trigger a ROI. +# # This 'math' kills terrain shimmer but keeps solid drone blobs. +# # density_threshold = (grid_size * grid_size) * 0.05 + +# # Use torch.count_nonzero if using AvgPool, or stick to pooled with threshold +# # Since 'pooled' from MaxPool is just the max value (0 or 255), +# # we should use F.avg_pool2d instead to get a density map: + +# density_map = F.avg_pool2d( +# mask_tensor.unsqueeze(0).unsqueeze(0).float(), +# kernel_size=grid_size, +# stride=grid_size, +# ).squeeze() + +# # Define your sensitivity (e.g., 5% density) +# # If a block is 5% full of 'white' (255) pixels, the average will be 12.75 +# density_threshold = 2 # int((grid_size * grid_size) * 0.01) + +# # 255 * 0.10 means the grid cell must be 10% white pixels +# indices = torch.nonzero(density_map > density_threshold) + +# # EARLY EXIT: No motion detected, return empty +# if indices.shape[0] == 0: +# return torch.empty((0, 4), device="cuda") +# # 2. SORT BY DENSITY: Get values for each index +# # We pull the density values for every 'hot' cell +# densities = density_map[indices[:, 0], indices[:, 1]] + +# # 3. Get the sort order (Descending: highest density first) +# _, sort_order = torch.sort(densities, descending=True) +# indices = indices[sort_order] + +# # CAP N: If scene is too noisy, take top regions to save the merger +# if indices.shape[0] > max_boxes: +# indices = indices[:max_boxes] + +# # 4. Map back to 640p Bounding Boxes +# y1, x1 = indices[:, 0] * grid_size, indices[:, 1] * grid_size +# y2, x2 = y1 + grid_size, x1 + grid_size +# raw_boxes = torch.stack([x1, y1, x2, y2], dim=1).float() + +# # 5. Merge adjacent grid blocks +# # gap_limit=grid_size+2 ensures diagonal/nearby blocks connect +# # del mask_cp, mask_tensor, density_map, densities, indices +# return merge_boxes_gpu(raw_boxes, gap_limit=grid_size * 2, size_limit=limit_640) + +# Better: moved to handlers.py +# def find_contours_gpu_equivalent(mask_gpu_mat, stream=None, limit_640=None): +# """ +# GPU equivalent to cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) +# Returns: torch.Tensor [N, 4] containing (x1, y1, x2, y2) in analysis space. +# """ +# # Bridge OpenCV GpuMat to CuPy (Zero-Copy) +# w, h = mask_gpu_mat.size() +# ptr = mask_gpu_mat.cudaPtr() +# pitch_bytes = mask_gpu_mat.step + +# mask_cp = cupy.ndarray( +# (h, w), +# dtype=cupy.uint8, +# memptr=cupy.cuda.MemoryPointer( +# cupy.cuda.UnownedMemory(ptr, pitch_bytes * h, mask_gpu_mat), 0 +# ), +# strides=(pitch_bytes, 1), +# ) + +# # Use the stream pointer if provided, otherwise default to 0 (Null Stream) +# stream_ptr = stream.cudaPtr() if stream else 0 + +# with cupy.cuda.ExternalStream(stream_ptr): +# # Labeling (Equivalent to finding connected components) +# # labeled is an int32 array where every 'blob' has a unique number +# structure = cupy.ones((3, 3), dtype=cupy.int32) +# labeled, num_labels = cupyx.scipy.ndimage.label(mask_cp, structure=structure) + +# if num_labels == 0: +# return torch.empty((0, 4), device="cuda") + +# # Setup Bounding Box Buffers +# x1 = cupy.full((num_labels + 1,), w, dtype=cupy.int32) +# y1 = cupy.full((num_labels + 1,), h, dtype=cupy.int32) +# x2 = cupy.full((num_labels + 1,), -1, dtype=cupy.int32) +# y2 = cupy.full((num_labels + 1,), -1, dtype=cupy.int32) + +# # Run the Bounds Kernel +# # IMPORTANT: Use labeled.strides[0]//4 to get the pitch in elements +# pitch_elements = labeled.strides[0] // 4 +# tpb = (16, 16) +# bpg = ((w + tpb[0] - 1) // tpb[0], (h + tpb[1] - 1) // tpb[1]) + +# get_bounds_kernel( +# bpg, tpb, (labeled, pitch_elements, w, h, num_labels, x1, y1, x2, y2) +# ) + +# # Stack and return as Torch Tensor for YOLO/Drawing +# # We skip index 0 as it represents the background (black) +# # boxes = torch.stack( +# # [ +# # torch.as_tensor(x1[1:], device="cuda"), +# # torch.as_tensor(y1[1:], device="cuda"), +# # torch.as_tensor(x2[1:], device="cuda"), +# # torch.as_tensor(y2[1:], device="cuda"), +# # ], +# # dim=1, +# # ).float() +# boxes = cupy.column_stack((x1[1:], y1[1:], x2[1:], y2[1:])) + +# return torch.as_tensor(boxes, device="cuda").float() def get_detection_color(index, is_bgr=False): @@ -1141,6 +2695,49 @@ def manual_fps_calculation(src, num_frames=10): return 0 +def scale_bbox( + bbox, origW, origH, targetW=7680, targetH=4320, in_format="xywh", out_format="xywh" +): + if in_format == "xywh": + x, y, w, h = bbox + x2 = x + w + y2 = y + h + else: + x, y, x2, y2 = bbox + + # Get scale factors + scale_x = targetW / origW + scale_y = targetH / origH + + # Translate bbox to target resolution + # x_target = max(0, min(int(round(x * scale_x)), targetW - 1)) + # y_target = max(0, min(int(round(y * scale_y)), targetH - 1)) + # w_target = min(targetW - x_target, int(round(w * scale_x))) + # h_target = min(targetH - y_target, int(round(h * scale_y))) + x_target = max(0, int(x * scale_x)) + y_target = max(0, int(y * scale_y)) + x2_target = min(targetW - 1, int(x2 * scale_x)) + y2_target = min(targetH - 1, int(y2 * scale_y)) + w_target = x2_target - x_target + h_target = y2_target - y_target + if out_format == "xywh": + return [x_target, y_target, w_target, h_target] + else: + return [x_target, y_target, x2_target, y2_target] + + +def scale_bbox_xywh(bbox, origW, origH, targetW=7680, targetH=4320): + return scale_bbox( + bbox, + origW, + origH, + targetW=targetW, + targetH=targetH, + in_format="xywh", + out_format="xywh", + ) + + def rgb_to_nv12_torch(rgb_tensor): """ Fast GPU conversion from RGB to NV12 using PyTorch. @@ -1448,46 +3045,60 @@ def merge_boxes_limit(boxes, dist_threshold=25, min_area=32, max_size=640): return boxes -def filter_contained_boxes(boxes, containment_thresh=0.90): - if len(boxes) < 2: - return boxes +# def filter_contained_boxes(boxes, containment_thresh=0.90): +# if len(boxes) < 2: +# return boxes - # Convert to NumPy for vectorized math - objs = np.array(boxes) - areas = (objs[:, 2] - objs[:, 0]) * (objs[:, 3] - objs[:, 1]) +# # Convert to NumPy for vectorized math +# objs = np.array(boxes) +# areas = (objs[:, 2] - objs[:, 0]) * (objs[:, 3] - objs[:, 1]) - # Sort by area descending - order = areas.argsort()[::-1] - objs = objs[order] - areas = areas[order] +# # Sort by area descending +# order = areas.argsort()[::-1] +# objs = objs[order] +# areas = areas[order] - keep = [] - idx_list = np.arange(len(objs)) +# keep = [] +# idx_list = np.arange(len(objs)) - while len(idx_list) > 0: - i = idx_list[0] - keep.append(objs[i].tolist()) - if len(idx_list) == 1: - break +# while len(idx_list) > 0: +# i = idx_list[0] +# keep.append(objs[i].tolist()) +# if len(idx_list) == 1: +# break + +# # Vectorized Intersection over Union (IoU) / Containment +# others = objs[idx_list[1:]] +# ix1 = np.maximum(objs[i, 0], others[:, 0]) +# iy1 = np.maximum(objs[i, 1], others[:, 1]) +# ix2 = np.minimum(objs[i, 2], others[:, 2]) +# iy2 = np.minimum(objs[i, 3], others[:, 3]) + +# iw = np.maximum(0, ix2 - ix1) +# ih = np.maximum(0, iy2 - iy1) +# inter_area = iw * ih + +# # Calculate how much 'others' are contained within 'i' +# containment = inter_area / areas[idx_list[1:]] + +# # Only keep boxes that are NOT mostly contained within the current box +# idx_list = idx_list[1:][containment < containment_thresh] - # Vectorized Intersection over Union (IoU) / Containment - others = objs[idx_list[1:]] - ix1 = np.maximum(objs[i, 0], others[:, 0]) - iy1 = np.maximum(objs[i, 1], others[:, 1]) - ix2 = np.minimum(objs[i, 2], others[:, 2]) - iy2 = np.minimum(objs[i, 3], others[:, 3]) +# return keep - iw = np.maximum(0, ix2 - ix1) - ih = np.maximum(0, iy2 - iy1) - inter_area = iw * ih - # Calculate how much 'others' are contained within 'i' - containment = inter_area / areas[idx_list[1:]] +class DummyProcess: + def start(self): + pass + + def join(self, timeout=None): + pass - # Only keep boxes that are NOT mostly contained within the current box - idx_list = idx_list[1:][containment < containment_thresh] + def is_alive(self): + return False - return keep + def close(self): + pass @dataclass @@ -1503,3 +3114,199 @@ class PipelineMapping: class StreamRequest(BaseModel): url: str name: str + + +class ResourceTrackerFilter: + def __init__(self, original_stderr): + self.stderr = original_stderr + self.buffer = "" + + def write(self, data): + self.buffer += data + # If background resource tracker signals bleed out during collection, suppress them + if ( + "resource_tracker.py" in self.buffer + or "KeyError:" in self.buffer + or "shm_ai_640" in self.buffer + or "cache[rtype].remove(name)" in self.buffer + ): + if "\n" in data: + self.buffer = "" + return + self.stderr.write(data) + self.buffer = "" + + def flush(self): + self.stderr.flush() + + +# ============================================================================== +# TRUE LOCK-FREE ASYNC VIDEO ENCODER WORKER +# ============================================================================== +class AsyncVideoWriter: + """Handles disk saving operations completely lock-free without thread-signaling overhead.""" + + def __init__(self, path, fourcc, fps, size): + self.writer = cv2.VideoWriter(path, fourcc, fps, size) + # Expand double buffer ring map to mitigate any underlying I/O bursts + self.buffer = deque(maxlen=int(fps)) + self.running = True + + # REMOVE SEVERE BOTTLENECK SIGNALS: + # self.frame_ready = threading.Event() <-- Deleted to clear lock.acquire thrashing! + + # Pre-allocate page-locked pinned host buffer allocations + self.host_staging_tensor = torch.empty( + (size[1], size[0], 3), dtype=torch.uint8, device="cpu" + ).pin_memory() + + self.thread = threading.Thread(target=self._write_loop, daemon=True) + self.thread.start() + + def _write_loop(self): + while self.running or self.buffer: + try: + # Natively poll the lock-free structure directly without forcing a kernel signal wait block + if not self.buffer: + # A crisp 2ms sleep keeps the CPU completely cool while preserving + # sub-millisecond thread scheduling wake-ups on low priority cores + time.sleep(0.005) + continue + + frame_payload = self.buffer.popleft() + if frame_payload is None: + break + + # --- UNTHROTTLED HARDWARE VIEW EXTRACTION --- + if torch.is_tensor(frame_payload): + if frame_payload.is_cuda: + self.host_staging_tensor.copy_(frame_payload, non_blocking=True) + + ctx_event = torch.cuda.Event() + ctx_event.record(torch.cuda.current_stream()) + ctx_event.synchronize() + numpy_frame = self.host_staging_tensor.numpy() + else: + numpy_frame = frame_payload.numpy() + else: + numpy_frame = np.asarray(frame_payload) + + self.writer.write(numpy_frame) + + except Exception as e: + main_app_logger.info( + f"[DISK-WRITER-ERROR] Asynchronous frame save failed: {e}", + ) + continue + + def write_frame(self, frame): + """Pure lock-free, zero-signal submission track. Fires under 1 microsecond!""" + if self.running: + # Overwrites elements atomically without triggering standard Python lockouts + self.buffer.append(frame) + # REMOVE: self.frame_ready.set() <-- GONE! CPU thread remains un-starved! + + def release(self): + """Secure drain release prevents early container dropouts.""" + if torch.cuda.is_available(): + torch.cuda.synchronize() + + self.running = False + self.buffer.append(None) + + if self.thread.is_alive(): + self.thread.join(timeout=5.0) + self.writer.release() + + +class AsyncDisplayVideoWriter: + """ + Lock-free single-element buffer optimized for 8K pipelines. + Eliminates queue.Queue lock contention to preserve strict target frame rates. + """ + + def __init__(self, target_fps, display_size, quality=60): + self.target_fps = float(target_fps) + self.disp_w, self.disp_h = display_size + self.quality = int(quality) + + # 1. 🔄 FIX: Use a lockless deque with maxlen=1 instead of queue.Queue + self.buffer = deque(maxlen=1) + self.running = True + self.handler = None + + self.thread = threading.Thread(target=self._write_loop, daemon=True) + self.thread.start() + + def set_handler_context(self, handler_instance): + self.handler = handler_instance + + def _write_loop(self): + encode_param = [int(cv2.IMWRITE_JPEG_QUALITY), self.quality] + + while self.running: + try: + # 2. 🔄 FIX: Non-blocking pop from the single-element buffer + if not self.buffer: + time.sleep(0.015) # 0.005) + continue + + display_frame, frame_num = self.buffer.popleft() + + if self.handler is None or not self.handler.active: + continue + + if ( + display_frame.shape[1] != self.disp_w + or display_frame.shape[0] != self.disp_h + ): + display_frame = cv2.resize( + display_frame, + (self.disp_w, self.disp_h), + interpolation=cv2.INTER_NEAREST, + ) + + ret, jpeg_buf = cv2.imencode(".jpg", display_frame, encode_param) + if not ret: + continue + + frame_bytes = jpeg_buf.tobytes() + frame_len = len(frame_bytes) + num_shms = len(self.handler.shms) + + write_idx = (self.handler.ready_buffer_idx.value + 1) % num_shms + + shm_block = self.handler.shms[write_idx] + shm_block.buf[:frame_len] = memoryview(frame_bytes) + + self.handler.shm_frame_lengths[write_idx] = frame_len + self.handler.ready_buffer_idx.value = write_idx + self.handler.shared_details["last_id"] = frame_num + self.handler.mp_last_id.value = frame_num + + if hasattr(self.handler, "loop") and self.handler.loop is not None: + self.handler.loop.call_soon_threadsafe( + self.handler.frame_ready_event.set + ) + else: + self.handler.frame_ready_event.set() + + except Exception as e: + main_app_logger.info( + f"[STREAM-ERROR] Lock-free frame streaming dropped: {e}" + ) + continue + + def write_frame(self, frame, frame_num): + """Thread-safe lock-free atomic submission track.""" + if self.running: + # 3. 🔄 FIX: Directly append to overwrite the old entry without thread locks + self.buffer.append((frame, frame_num)) + + def release(self): + self.running = False + + self.buffer.clear() + + if self.thread.is_alive(): + self.thread.join(timeout=0.5) diff --git a/fastapi/main.py b/fastapi/main.py index a1e30aa..0c14d9f 100644 --- a/fastapi/main.py +++ b/fastapi/main.py @@ -1,6 +1,13 @@ +# ============================================================================== +# SUPPRESS WARNINGS import warnings warnings.filterwarnings("ignore", message="The value of the smallest subnormal for") +warnings.filterwarnings( + "ignore", category=FutureWarning, message=".*reduce_op` is deprecated.*" +) + +# ============================================================================== import asyncio import json @@ -21,6 +28,8 @@ from fastapi.responses import StreamingResponse from fastapi.templating import Jinja2Templates +# ============================================================================== + MODEL_CLASSES_FILE = "/var/www/cache/model_classes.json" RUN_CONFIG = PipelineConfig( @@ -62,7 +71,7 @@ # Standardizes logs across the application and uvicorn server logging.basicConfig( level=logging.INFO, - format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", + format="%(asctime)s [%(levelname)s] %(name)s (%(filename)s:%(lineno)d) - %(message)s", handlers=[logging.StreamHandler(sys.stdout)], ) main_app_logger = logging.getLogger("fastapi_app") @@ -110,36 +119,58 @@ async def stream_video(data: StreamRequest, request: Request): dict: Status message and the updated list of active stream keys. """ url, name = data.url, data.name + + gc.collect() # Final garbage collection + if torch.cuda.is_available(): + torch.cuda.empty_cache() + + # async with request.app.state.stream_lock: active_streams = request.app.state.active_streams + if name in active_streams: + print(f"[STREAM_VIDEO]: Clearing old stream for {name}...") + active_streams[name].stop() + active_streams[name].stop_threads(["process_thread"]) + active_streams[name] = None + del active_streams[name] + # Only initialize if the stream isn't already being processed if name not in active_streams: - print(f"Starting background worker for {name}...") - - # Check if a global model instance should be passed to the handler - if RUN_CONFIG.SHARED_MODEL: - handler = VideoStreamHandler( - url, - name, - active_streams, - config=RUN_CONFIG, - model=app.state.model, - ) - else: - handler = VideoStreamHandler( - url, - name, - active_streams, - config=RUN_CONFIG, - ) - - # Start the background thread (OpenCV capture + AI inference) - handler.start() - - # Register the handler in the global state for cross-endpoint access - app.state.active_streams[name] = handler - - curr_keys = list(app.state.active_streams.keys()) + print(f"[STREAM_VIDEO]: Starting background worker for {name}...") + + try: + # Check if a global model instance should be passed to the handler + if RUN_CONFIG.SHARED_MODEL: + handler = VideoStreamHandler( + url, + name, + active_streams, + config=RUN_CONFIG, + model=app.state.model, + ) + else: + handler = VideoStreamHandler( + url, + name, + active_streams, + config=RUN_CONFIG, + ) + + # Start the background thread (OpenCV capture + AI inference) + handler.start() + print("[STREAM_VIDEO]: Worker running...") + + # Register the handler in the global state for cross-endpoint access + request.app.state.active_streams[name] = handler + except RuntimeError: + if "handler" in locals(): + del handler + gc.collect() + if torch.cuda.is_available(): + torch.cuda.empty_cache() + print("[STREAM_VIDEO]: Could not start stream. Try again...") + + curr_keys = list(request.app.state.active_streams.keys()) if RUN_CONFIG.DEBUG_FLAG: print( f"stream DEBUG VIEW | PID: {os.getpid()} | Looking for: {name} | Found Keys: {curr_keys}" @@ -174,24 +205,51 @@ async def frame_generator(streamer, request: Request): Yields frames only when the background worker signals a new frame is ready. Ensures strict chronological order using frame IDs. """ - shm_names = streamer.shared_details["shm_names"] - reader_shms = [mp.shared_memory.SharedMemory(name=n) for n in shm_names] + reader_shms = [] last_sent_id = -1 try: + shm_names = streamer.shared_details.get("shm_names", []) + reader_shms = [mp.shared_memory.SharedMemory(name=n) for n in shm_names] while streamer.active: # Stop the generator immediately if the browser tab is closed if await request.is_disconnected(): main_app_logger.info(f"Client disconnected from {name}") break - # Wait for the background thread to signal that AI processing is complete - await streamer.frame_ready_event.wait() + if getattr(streamer, "_is_stopped", False) or not streamer.active: + main_app_logger.info( + f"Video execution finished naturally for {name}. Closing stream." + ) + async with request.app.state.stream_lock: + app.state.active_streams.pop(name, None) + # active_streams.pop(name, None) + break + + try: + # Wait for the background thread to signal that AI processing is complete + await asyncio.wait_for( + streamer.frame_ready_event.wait(), timeout=2.0 + ) + except asyncio.TimeoutError: + # Check if stream died or reader stopped + if not streamer.active or getattr(streamer, "_is_stopped", False): + async with request.app.state.stream_lock: + app.state.active_streams.pop(name, None) + break + continue # streamer.frame_ready_event.clear() # Reset for the next frame # streamer.reader_busy.value = True # target_idx = streamer.ready_buffer_idx.value # streamer.reader_active_idx.value = target_idx + # if not streamer.active: + if getattr(streamer, "_is_stopped", False) or not streamer.active: + active_streams.pop(name, None) + streamer.stop_threads(["process_thread"]) + async with request.app.state.stream_lock: + app.state.active_streams.pop(name, None) + break # Frame Synchronization: ensure we don't send duplicate or out-of-order frames current_id = streamer.shared_details.get("last_id", -1) @@ -229,15 +287,32 @@ async def frame_generator(streamer, request: Request): + b"\r\n" ) last_sent_id = current_id - streamer.last_heartbeat = time.time() + streamer.last_heartbeat = time.perf_counter() # Yield control to the event loop to prevent blocking # streamer.frame_ready_event.clear() # Reset for the next frame await asyncio.sleep(0.001) except Exception as e: - main_app_logger.error(f"[EXCEPTION] Generator Error: {e}") - # finally: - # streamer.reader_busy.value = False # Safety unlock + # Check for standard client disconnections (Broken pipe / Connection reset) + if isinstance(e, OSError) and e.errno in (32, 104): + # main_app_logger.info(f"Stream client disconnected gracefully from {name}") + pass + else: + main_app_logger.error(f" [EXCEPTION] Generator Error: {e}") + finally: + # streamer.reader_busy.value = False # Safety unlock + for shm in reader_shms: + try: + shm.close() + shm = None + except Exception: + pass + reader_shms.clear() + # pass + + gc.collect() + if torch.cuda.is_available(): + torch.cuda.empty_cache() return StreamingResponse( frame_generator(streamer, request), @@ -283,7 +358,11 @@ async def dashboard_stats(request: Request): # Video Backlog: Frames waiting for Disk I/O video_backlog = ( - streamer.write_queue.qsize() if streamer.config.ENABLE_QUERYING else 0 + streamer.write_queue.qsize() + if streamer.config.ENABLE_QUERYING + and hasattr(streamer, "write_queue") + and hasattr(streamer.write_queue, "qsize") + else 0 ) # IO Backlog: Frames queued for disk storage (if enabled) @@ -301,7 +380,7 @@ async def dashboard_stats(request: Request): "fps": round(streamer.stat_fps, 1), "inputfps": round(streamer.input_fps, 1), "targetfps": round(streamer.target_fps, 1), - "is_streaming": streamer.active, + "is_streaming": getattr(streamer, "active", False), "clipper_backlog": clipper_backlog, "ai_backlog": ai_backlog, "video_backlog": video_backlog, @@ -323,6 +402,11 @@ async def get_status(request: Request): } +import gc + +import torch + + @app.post("/stop_stream/{name}") async def stop_stream(name: str, request: Request): """ @@ -330,14 +414,24 @@ async def stop_stream(name: str, request: Request): The blocking cleanup logic is offloaded to a separate thread to prevent API hang. """ # Immediately remove from the global state so polling/UI syncs instantly - streamer = request.app.state.active_streams.pop(name, None) + async with request.app.state.stream_lock: + streamer = request.app.state.active_streams.pop(name, None) if streamer: streamer.active = False # BACKGROUND CLEANUP: Fire-and-forget the heavy hardware teardown loop = asyncio.get_event_loop() - loop.run_in_executor(None, streamer.stop) + await loop.run_in_executor(None, streamer.stop) + # streamer.stop_threads(["process_thread"]) + + # Force CUDA driver to flush all residual stream contexts + if torch.cuda.is_available(): + torch.cuda.synchronize() + torch.cuda.empty_cache() + if hasattr(torch.cuda, "ipc_collect"): + torch.cuda.ipc_collect() + gc.collect() if streamer.config.DEBUG_FLAG: print(f"--- CLEANUP | Stream '{name}' stopped and removed. ---") @@ -366,6 +460,11 @@ async def stop_all_streams(request: Request): # Offload to executor to keep the API responsive loop = asyncio.get_event_loop() await loop.run_in_executor(None, streamer.stop) + streamer.stop_threads(["process_thread"]) + + gc.collect() + if torch.cuda.is_available(): + torch.cuda.empty_cache() return { "status": "success", @@ -452,7 +551,7 @@ async def get_model_classes(): return {"classes": classes} # Fallback structure matching your old format if no model is loaded - default_classes = ["class0"] + default_classes = ["drone"] return {"classes": default_classes} diff --git a/fastapi/nginx.conf b/fastapi/nginx.conf index debe316..5b5c2e0 100644 --- a/fastapi/nginx.conf +++ b/fastapi/nginx.conf @@ -18,7 +18,7 @@ http { proxy_set_header Connection "keep-alive"; # Absolute zero buffering - proxy_buffering off; # DISBALE Nginx buffering + proxy_buffering off; # DISABLE Nginx buffering proxy_request_buffering off; proxy_cache off; # Ensure no caching of the video tcp_nodelay on; diff --git a/fastapi/templates/index.html b/fastapi/templates/index.html index 2da2d9a..cc13603 100644 --- a/fastapi/templates/index.html +++ b/fastapi/templates/index.html @@ -146,7 +146,7 @@

Camera: {{ id }}

" const response = await fetch(self.location.origin + '/dashboard_stats'); " + " if (response.ok) { " + " const stats = await response.json(); " + - " const activeIds = Object.keys(stats); " + + " const activeIds = Object.keys(stats).filter(id => stats[id] && stats[id].is_streaming === true); " + " if (activeIds.length > 0) { " + " /* ACTIVE: Poll fast (1s) */ " + " currentDelay = 1000; " + @@ -163,7 +163,7 @@

Camera: {{ id }}

" timeoutId = setTimeout(fetchData, currentDelay); " + "} " + "self.onmessage = function(e) { " + - " if (e.data.action === 'start' || e.data.action === 'force') { " + + " if (e.data.action === 'start' || e.data.action === 'force' || e.data.action === 'resume') { " + " clearTimeout(timeoutId); " + // Cancel any pending slow poll " fetchData(); " + // Run immediately " } " + @@ -185,7 +185,7 @@

Camera: {{ id }}

document.querySelectorAll('.camera-card').forEach(card => { const id = card.id.replace('card-', ''); const streamStats = stats[id]; - if (!activeIds.includes(id) || (streamStats && streamStats.is_streaming === false)) { + if (!activeIds.includes(id) || !streamStats || (streamStats && streamStats.is_streaming === false)) { console.log("Removing dead stream:", id); card.remove(); } diff --git a/fastapi/tests/base_test.py b/fastapi/tests/base_test.py new file mode 100644 index 0000000..8b57cc0 --- /dev/null +++ b/fastapi/tests/base_test.py @@ -0,0 +1,3442 @@ +# ============================================================================== +# IMPORTS + +import gc +import inspect +import io +import os +import queue +import sys +import threading +import time +import traceback +import types +import zipfile +from pathlib import Path + +import cv2 +import matplotlib.pyplot as plt +import numpy as np +import torch + +# Retrieve repo packages +REPO_DIR = str(Path(__file__).parent.parent) +sys.path.insert(1, REPO_DIR) +from include.default_configs import TARGET_FPS +from include.handlers import ( + get_bb_overlay, +) +from include.utils import ( + AsyncVideoWriter, + default_attr_keys, + global_frame_prefetch_worker_v1, + install_and_load_pip_package, + release_native_linux_heap, + scale_bbox, + scale_bbox_xywh, +) + +gdown = install_and_load_pip_package("gdown", attribute_name=None) +objgraph = install_and_load_pip_package("objgraph", attribute_name=None) +target_width, target_height = 7680, 4320 # 8K +# torch.set_grad_enabled(False) + +# ============================================================================== +# LOGGING +import logging + +logging.basicConfig( + level=logging.INFO, + # format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", + format="%(asctime)s [%(levelname)s] %(name)s (%(filename)s:%(lineno)d) - %(message)s", + handlers=[logging.StreamHandler(sys.stdout)], +) + +logging.getLogger("libav").setLevel(logging.CRITICAL) +logging.getLogger("libav.hevc").setLevel(logging.CRITICAL) +main_app_logger = logging.getLogger(__name__) + +# ============================================================================== +# FUNCTIONS + + +# Download tracking (video) data and associated ground truth +def download_eval_data(video_name_list, target_fps=TARGET_FPS): + DATA_DIR = Path(__file__).parent / "eval_data" + DATA_DIR.mkdir(parents=True, exist_ok=True) + + # DOWNLOAD GT ZIP + VIDEO_GROUND_TRUTH_URL = ( + "https://drive.google.com/open?id=16PE3tBhT0lUGZLA8-zIRYvNUvxfhFZJq" + ) + VIDEO_GROUND_TRUTH_ZIP_PATH = str(DATA_DIR / "Anti-UAV-Tracking-V0GT.zip") + if not Path(VIDEO_GROUND_TRUTH_ZIP_PATH).exists(): + main_app_logger.info("Downloading ground truth zip file...") + gdown.download( + url=VIDEO_GROUND_TRUTH_URL, output=VIDEO_GROUND_TRUTH_ZIP_PATH, quiet=False + ) + + # GET GT BBOXES + # GT bbox: [x_min, y_min, w, h] + gt_boxes_dict = {} + with zipfile.ZipFile(VIDEO_GROUND_TRUTH_ZIP_PATH, "r") as gt_ref: + for gt_info in gt_ref.infolist(): + matched_vid = next( + ( + v + for v in video_name_list + if gt_info.filename.endswith(f"{v}_gt.txt") + ), + None, + ) + if matched_vid: + gt_bytes = gt_ref.read(gt_info.filename) + gt_stream = io.StringIO(gt_bytes.decode("utf-8")) + delimiter = "," if b"," in gt_bytes else None + gt_boxes_dict[matched_vid] = np.loadtxt( + gt_stream, delimiter=delimiter, dtype=np.int32 + ).tolist() + + # DOWNLOAD FRAME ZIP + VIDEO_SEQUENCE_URL = ( + "https://drive.google.com/open?id=1dlSPDggg6TRFMcC1jlYIJxxzUQS1mIh9" + ) + VIDEO_SEQUENCE_ZIP_PATH = str(DATA_DIR / "Anti-UAV-Tracking-V0.zip") + if not Path(VIDEO_SEQUENCE_ZIP_PATH).exists(): + main_app_logger.info("Downloading video sequence zip file...") + gdown.download( + url=VIDEO_SEQUENCE_URL, output=VIDEO_SEQUENCE_ZIP_PATH, quiet=False + ) + + # WRITE VIDEO AND GET VIDEO DETAILS + ALL_VIDEO_DETAILS = {} + # ALL_VIDEO_WRITERS = {} + # frame_counters = {v: 0 for v in video_name_list} + # Open Zip once, but process each video COMPLETELY one by one + with zipfile.ZipFile(VIDEO_SEQUENCE_ZIP_PATH, "r") as zip_ref: + # Pre-index all archive paths for ultra-fast matching + all_files = zip_ref.infolist() + + for video_name in video_name_list: + main_app_logger.info(f"Processing sequence: {video_name}...") + + # Filter and sort frames belonging strictly to the current video + video_img_infos = [ + info + for info in all_files + if info.filename.startswith(f"Anti-UAV-Tracking-V0/{video_name}/") + and info.filename.lower().endswith(".jpg") + ] + video_img_infos.sort(key=lambda x: x.filename) + + if not video_img_infos: + continue + + video_writer = None + frame_idx = 0 + + # Setup dictionary tracking structure + sample_outpath = DATA_DIR / video_img_infos[0].filename.replace( + "Anti-UAV-Tracking-V0", "Anti-UAV-Tracking-V0-8K" + ) + sample_outpath.parent.mkdir(parents=True, exist_ok=True) + + # BYPASS COMPUTE IF VIDEO EXISTS + target_mp4_path = sample_outpath.parent / f"{video_name}.mp4" + if target_mp4_path.exists(): + main_app_logger.info( + f"\t[SKIP] 8K target video {target_mp4_path.name} already compiled." + ) + + first_frame_info = video_img_infos[0] + img_bytes = zip_ref.read(first_frame_info.filename) + np_array = np.frombuffer(img_bytes, np.uint8) + img = cv2.imdecode(np_array, cv2.IMREAD_COLOR) + orig_height, orig_width, _ = img.shape if img is not None else (0, 0, 0) + + current_gt_boxes = gt_boxes_dict.get(video_name, []) + num_invalid = sum( + 1 for bbox in current_gt_boxes if bbox == [0, 0, 0, 0] + ) + num_valid = len(current_gt_boxes) - num_invalid + + scaled_gt_boxes = [] + for bbox in current_gt_boxes: + if bbox == [0, 0, 0, 0]: + scaled_gt_boxes.append([0, 0, 0, 0]) + else: + scaled_gt_boxes.append( + scale_bbox_xywh( + bbox, + orig_width, + orig_height, + targetW=target_width, + targetH=target_height, + ) + ) + + # Reconstruct the metadata payload so downstream tracking logic doesn't break + ALL_VIDEO_DETAILS[video_name] = { + "frame_dir": str(sample_outpath.parent), + "orig_height": orig_height, # Safe placeholder or pull from cache if variable + "orig_width": orig_width, + "target_height": target_height, + "target_width": target_width, + "sequence": [Path(info.filename).stem for info in video_img_infos], + "gt_bbox": scaled_gt_boxes, + "num_invalid_gt_bboxes": num_invalid, + "num_valid_gt_bboxes": num_valid, + } + num_frames = len(ALL_VIDEO_DETAILS[video_name]["sequence"]) + num_boxes = len(ALL_VIDEO_DETAILS[video_name]["gt_bbox"]) + num_invalid_boxes = ALL_VIDEO_DETAILS[video_name][ + "num_invalid_gt_bboxes" + ] + main_app_logger.info( + f"\t{video_name}: {num_frames} frames, {num_boxes} gt boxes ({num_invalid_boxes} out-of-view)" + ) + continue # Instantly advance to the next video name in the zip reference + + # Initialize detail log + ALL_VIDEO_DETAILS[video_name] = { + "frame_dir": str(sample_outpath.parent), + "orig_height": 0, + "orig_width": 0, + "target_height": target_height, + "target_width": target_width, + "sequence": [], + "gt_bbox": [], + "num_invalid_gt_bboxes": 0, + "num_valid_gt_bboxes": 0, + } + + for file_info in video_img_infos: + frame_id = Path(file_info.filename).stem + + # In-memory decompression + img_bytes = zip_ref.read(file_info.filename) + np_array = np.frombuffer(img_bytes, np.uint8) + img = cv2.imdecode(np_array, cv2.IMREAD_COLOR) + + if img is not None: + orig_height, orig_width, _ = img.shape + + # Update dimensions once per video segment + if frame_idx == 0: + ALL_VIDEO_DETAILS[video_name]["orig_height"] = orig_height + ALL_VIDEO_DETAILS[video_name]["orig_width"] = orig_width + + # Performance upscale to 8K + img_8K = cv2.resize( + img, + (target_width, target_height), + interpolation=cv2.INTER_LINEAR, # INTER_CUBIC, + ) + + # Initialize Video Writer sequentially if missing + if ( + video_writer is None + and not (sample_outpath.parent / f"{video_name}.mp4").exists() + ): + video_writer = AsyncVideoWriter( + str(sample_outpath.parent / f"{video_name}.mp4"), + cv2.VideoWriter_fourcc(*"avc1"), + target_fps, + (target_width, target_height), + ) + + # Synchronous frame pipeline updates + if video_writer is not None: + video_writer.write_frame(img_8K) + ALL_VIDEO_DETAILS[video_name]["sequence"].append(frame_id) + + # Bounding Box Sync + if video_name in gt_boxes_dict and frame_idx < len( + gt_boxes_dict[video_name] + ): + gt_bbox = gt_boxes_dict[video_name][frame_idx] + + if gt_bbox == [0, 0, 0, 0]: + x, y, w, h = [0, 0, 0, 0] + ALL_VIDEO_DETAILS[video_name]["num_invalid_gt_bboxes"] += 1 + else: + x, y, w, h = scale_bbox_xywh( + gt_bbox, + orig_width, + orig_height, + targetW=target_width, + targetH=target_height, + ) + ALL_VIDEO_DETAILS[video_name]["num_valid_gt_bboxes"] += 1 + + ALL_VIDEO_DETAILS[video_name]["gt_bbox"].append([x, y, w, h]) + + frame_idx += 1 + + # Close the writer IMMEDIATELY + if video_writer is not None: + video_writer.release() + + num_frames = len(ALL_VIDEO_DETAILS[video_name]["sequence"]) + num_boxes = len(ALL_VIDEO_DETAILS[video_name]["gt_bbox"]) + num_invalid_boxes = ALL_VIDEO_DETAILS[video_name]["num_invalid_gt_bboxes"] + main_app_logger.info( + f"\t{video_name}: {num_frames} frames, {num_boxes} gt boxes ({num_invalid_boxes} out-of-view)" + ) + + return ALL_VIDEO_DETAILS + + +# Print active CUDA tensors +def track_gpu_tensors(): + for obj in gc.get_objects(): + try: + if torch.is_tensor(obj) and obj.is_cuda: + tensor_candidate = obj + elif ( + hasattr(obj, "data") and torch.is_tensor(obj.data) and obj.data.is_cuda + ): + tensor_candidate = obj.data + else: + tensor_candidate = None + + if tensor_candidate is not None: # and tensor_candidate.is_cuda: + nelement = tensor_candidate.nelement() + cand_shape = list(tensor_candidate.shape) + cand_dtype = tensor_candidate.dtype + tensor_bytes = tensor_candidate.element_size() * nelement + # main_app_logger.info(f"Leaked Tensor -> Type: {type(obj)} | Size: {obj.size()} | Device: {obj.device}") + main_app_logger.info( + f" > Tensor | Device: {tensor_candidate.device} | Shape: {str(cand_shape):<18} | Dtype: {str(cand_dtype):<12} | Size: {tensor_bytes / 1024**2:6.2f} MB" + ) + except Exception: + pass + del obj + + +# Save FPS comparison chart +def fps_comparison_chart(chart_path, results, fps_key="Pipeline FPS (Video frames)"): + try: + # names = [r["Test Name"] for r in results] + # fps_values = [float(r[fps_key]) for r in results] + names = [] + fps_values = [] + + for r in results: + if isinstance(r, dict) and "Test Name" in r: + # Force casting to clean, unpinned Python native types + names.append(str(r["Test Name"])) + fps_values.append(float(r.get(fps_key, 0.0))) + + plt.figure(figsize=(10, 6)) + plt.grid(axis="y", linestyle="--", alpha=0.7, zorder=0) + + colors = ["#2ca02c" if "gpu" in n.lower() else "#1f77b4" for n in names] + bars = plt.bar(names, fps_values, color=colors, zorder=3) + plt.ylabel("Frames Per Second (FPS)") + plt.title(f"Performance Comparison: {chart_path.stem}") + plt.xticks(rotation=45) + + for bar in bars: + yval = bar.get_height() + plt.text( + bar.get_x() + bar.get_width() / 2, + yval + 1, + f"{yval:.1f}", + ha="center", + va="bottom", + ) + + if fps_values: + plt.ylim(0, max(fps_values) * 1.2) + + plt.tight_layout() + plt.savefig(str(chart_path)) + main_app_logger.info(f" Comparison chart saved to: {chart_path}") + except Exception: + main_app_logger.info("Skipping chart generation: error occurred.") + + +# ============================================================================== +# CLASSES +class BaseTest: + # PIPELINE FUNCTIONS -------------------------------------------- + @torch.inference_mode() + def pipeline_fn( + self, + device_frame, + overall_frame_num, + stat_start_time, + current_clip_id, + gt_boxes=None, + read_frame_only=False, + ): + current_clip_key = f"{self.name}_{current_clip_id:03d}.mp4" + current_clip_path = f"{self.config.SHARED_OUTPUT}/{current_clip_key}" + + metadata = {} + motion_detected = False + metrics = {"sf_time": 0, "roi_time": 0, "det_time": 0, "bbs": None} + + # Given input frame, get metadata and metrics + try: + if read_frame_only: + # Get frame, metadata and metrics + _, det_frame = self.processor.format_bbs_and_frame_4_detection( + [], device_frame + ) + + else: + # Run model on frame, get metadata and metrics + # with torch.inference_mode(): + metrics, metadata, det_frame, motion_detected = self.processor.run( + device_frame, + overall_frame_num, + frame_in_clip_count=self.frame_in_clip_count, + gt_boxes=None, + ) + + self.total_objects_detected += len(metadata.keys()) + + # Save results in video + self.frame2video( + det_frame, + overall_frame_num, + metadata, + getattr(self, "label_source", None), + stat_start_time, + gt_boxes=gt_boxes, + ) + + except Exception as e_detection: + traceback.print_exc() + main_app_logger.info(f"[DETECTION ERROR] Exception: {e_detection}") + # traceback.print_exc() + # if self.active: + # traceback.print_exc() + # main_app_logger.info(f"[DETECTION ERROR] Exception: {e_detection}") + # self.active = False + finally: + # del inf_data, bbs_full_res, device_frame, det_frame + if "det_frame" in locals(): + del det_frame + if "device_frame" in locals(): + del device_frame + # if "bbs_full_res" in locals(): + # del bbs_full_res + # if "inf_data" in locals(): + # del inf_data + + # del inf_data, bbs_full_res, device_frame, det_frame + + return metadata, metrics, motion_detected # Skip full detection pass + + def initialize_run_realtime_inference_v1( + self, read_frame_only, num_prefetch_workers + ): + # self.duration_target = 30 + # self.status = "RUNNING" + self.processor = self._setup_processor(read_frame_only) + + if hasattr(self, "processor") and hasattr(self.processor, "label_source"): + self.label_source = self.processor.label_source + # Setup empty list to track background futures natively + # self._active_inference_futures = [] + + if self.is_cuda and not hasattr(self, "sf_start") and self.config.TEST_MODE: + self.sf_start, self.sf_end = ( + torch.cuda.Event(enable_timing=True), + torch.cuda.Event(enable_timing=True), + ) + self.roi_start, self.roi_end = ( + torch.cuda.Event(enable_timing=True), + torch.cuda.Event(enable_timing=True), + ) + self.det_start, self.det_end = ( + torch.cuda.Event(enable_timing=True), + torch.cuda.Event(enable_timing=True), + ) + + if self.config.TEST_MODE: + self.component_stats = { + "sf": [], + "roi": [], + "det": [], + "dma_upload": [], # Track PCIe Transfer Latencies + "queue_blocked": [], # Track GIL Serialization stalls + "batch_sizes": [], # Track Smart Filtering density + "thread_backlog": [], # Track thread work pool backlog + } + self.crops_per_frame_list = [] + + # Bind active execution permanently to sub-stream BEFORE entering loop (Bypasses TLS Overhead) + # if self.device_input == "cuda" and torch.cuda.is_available(): + # torch.cuda.set_stream(self.inference_stream) + # if hasattr(self, "target_fps") and hasattr(self, "duration_target"): + # self.max_target_frames = int(self.duration_target * float(self.target_fps)) + # elif hasattr(self, "numFrames"): + # self.max_target_frames = self.numFrames + # else: + # self.max_target_frames = float("inf") + + if ( + hasattr(self, "numFrames") + and self.numFrames > 0 + and not getattr(self, "is_rtsp", False) + ): + # For local test files, compute total target frames from input video length + self.max_target_frames = int( + self.numFrames / getattr(self.reader, "step_size", 1.0) + ) + elif hasattr(self, "target_fps") and hasattr(self, "duration_target"): + self.max_target_frames = int(self.duration_target * float(self.target_fps)) + else: + self.max_target_frames = float("inf") + + # self.dynamic_limit = max(2, int(0.5 * self.target_fps)) + + # Initialize a thread-safe signaling handle at class setup (run_realtime_inference) + self.queue_data_ready_event = threading.Event() + + try: + for i in range(num_prefetch_workers): + # prefetch_thread = mp.Process( + prefetch_thread = threading.Thread( + target=lambda: global_frame_prefetch_worker_v1(self), + daemon=True, + # name=f"{self.name}_prefetch_{i}", + ) + prefetch_thread.start() + self.prefetch_threads.append(prefetch_thread) + except Exception as e: + main_app_logger.critical( + f"[{self.name}] Failed to start prefetch workers: {e}", exc_info=True + ) + traceback.print_exc() + raise + + @torch.inference_mode() + def run_realtime_inference_v1( + self, + sf_enabled=True, + profiler=None, + gt_enabled=False, + read_frame_only=False, + ): + self.status = "RUNNING" + + metrics = {} + all_metadata = {} + num_objs = 0 + total_pipeline_time_ms = 0.0 + total_read_time = 0.0 + total_queue_saturation = 0.0 + total_written_frames = 0 + total_sf_pipeline_time_ms = 0.0 + real_world_latency_ms = 0.0 + total_run_pipelinefn = 0 + total_frame_loop_latency = 0.0 + total_active_processing_overhead = 0.0 + queue_saturation_history = [] + consecutive_slow_frames = 0 + coverage_percentages = [] + + if gt_enabled and hasattr(self, "VIDEO_GT_DETAILS") and self.VIDEO_GT_DETAILS: + # VIDEO_GT_DETAILS = download_eval_data([self.name]) + gt_boxes = self.VIDEO_GT_DETAILS[self.name]["gt_bbox"] + gt_sequence = self.VIDEO_GT_DETAILS[self.name]["sequence"] + + self.initialize_run_realtime_inference( + read_frame_only, self.active_workers_count + ) + + self.stat_start_time = time.perf_counter() + pipeline_start_time = self.stat_start_time + last_loop_cycle_timestamp = self.stat_start_time + + missing_frame_cnt = 0 + max_retries = int(self.target_fps) + + # Release the master startup event at the last possible moment. + self.main_startup_event.set() + while ( + self.active # or not self.prefetch_queue.empty() + ): # and self.frame_count_target < self.max_target_frames: + if self.frame_count_target >= self.max_target_frames: + self.active = False + self.reader.running_flag.value = False + break + + stat_start_time = time.perf_counter() + try: + # FRAME RETRIEVAL --------------------------------------------- + try: + frame_start_time = time.perf_counter() + safe_frame, frame_details, should_continue = ( + self._get_frame_from_queue() + ) + + if not should_continue: + self.active = False # Signal loop termination + break + if safe_frame is None: + # Allow retries while prefetch workers are still active + if getattr(self, "prefetch_active", True) and not getattr( + self.reader, "stopped", False + ): + time.sleep(0.002) + continue + missing_frame_cnt += 1 + if missing_frame_cnt >= max_retries: + self.active = False + main_app_logger.info( + "Too many frames missing and workers done. Exiting..." + ) + break + continue # Skip to the next iteration if the frame is invalid + + # try: + # # ret, slot_idx = self.prefetch_queue.get(block=True, timeout=1.0) + # # ret, slot_idx = self.prefetch_queue.get(block=False) + # ret, slot_idx = self.prefetch_queue.get(block=True, timeout=1.0) + # self.prefetch_queue.task_done() + + # except queue.Empty: + # with self.worker_tracking_lock: + # if ( + # self.active_workers_count == 0 + # and self.prefetch_queue.empty() + # ): + # self.active = False + # break + # # If the queue is empty AND the prefetch workers are done, we can exit. + # if not self.active: + # break + # continue + + # # If self.stop() drops the queues, break out of the thread loop natively. + # except (OSError, ValueError, AssertionError): + # main_app_logger.info( + # "[PROCESS THREAD] Ingestion queue disconnected via stop() signal. Breaking loop." + # ) + # self.active = False + # break + + # if ret is False or slot_idx == "END_OF_STREAM": + # main_app_logger.info( + # "[PROCESS THREAD] End of video stream detected. Breaking loop naturally." + # ) + # self.active = False + # break + + # if not self.active: + # break + + # # if slot_idx == -1 or self.shm_buffer_pool[slot_idx] is None: + # # continue + # if ( + # slot_idx == -1 + # or not hasattr(self, "shm_buffer_pool") + # or self.shm_buffer_pool is None + # ): + # continue + # if ( + # slot_idx >= len(self.shm_buffer_pool) + # or self.shm_buffer_pool[slot_idx] is None + # ): + # continue + + # # Zero-Copy Reference Extraction straight out of the memory slot array + # ( + # raw_shm_frame, + # current_event, + # frame_num, + # abs_frame_num, + # true_read_latency_secs, + # ) = self.shm_buffer_pool[slot_idx] + + # if frame_num == 0: + # main_app_logger.info( + # f"[VERIFY - CONSUMER] Main loop is officially processing Frame {frame_num}!", + # ) + # # self.shm_buffer_pool[slot_idx] = None + + # reader_time = ( + # true_read_latency_secs # time.perf_counter() - frame_start_time + # ) + # total_read_time += reader_time + + # if "cuda" in str(self.device_input): + # safe_frame = self.gpu_input[slot_idx] + # # safe_frame = cpu_tensor.to(self.device_input, non_blocking=True) + # safe_frame.copy_(raw_shm_frame) + # # self.gpu_input[slot_idx].zero_() + # else: + # safe_frame = raw_shm_frame + + # # Record the PyTorch CUDA event on the current stream + # if current_event is not None and isinstance( + # current_event, torch.cuda.Event + # ): + # # This tells the GPU that the consumer is done reading this slot + # current_event.record(torch.cuda.current_stream()) + + # Originally 0-based but make 1-based + # frame_num += 1 + # abs_frame_num += 1 + total_read_time += frame_details["reader_time"] + missing_frame_cnt = 0 + + # Calculate the exact time gap between the last frame completion + # and the start of the next read. This accurately captures downstream GIL blocks. + cycle_gap = frame_start_time - last_loop_cycle_timestamp + # Subtract the actual read duration to isolate the thread stall time + true_serialization_stall = max( + 0.0, (cycle_gap - frame_details["reader_time"]) * 1000.0 + ) + self.component_stats["queue_blocked"].append( + true_serialization_stall + ) + + except queue.Empty: + if getattr(self.reader, "reconnect_failed", False): + self.active = False + break + if not self.active: + break # Exit on error if shutdown has been initiated + time.sleep(0.001) + continue + + # FRAME PROCESSING --------------------------------------------- + # stat_start_time = time.perf_counter() + # stat_start_time = self.stat_start_time + self.abs_frame_num = frame_details["abs_frame_num"] + calculated_clip_id = ( + frame_details["frame_num"] - 1 + ) // self.max_frames_per_clip + self.frame_count += 1 + self.frame_count_target += 1 + self.frame_in_clip_count += 1 + + # Real-Time Metric A: Track Queue Saturation Density Ratio + # current_q_size = self.reader.frame_queue.qsize() + saturation_ratio = ( + len(self.reader.frame_queue) / self.reader.frame_queue.maxlen + ) + total_queue_saturation += saturation_ratio + queue_saturation_history.append(saturation_ratio) + + # RUN PIPELINE_FN --------------------------------------------- + run_pipelinefn_start = time.perf_counter() + # self.frame_count_target += 1 + # self.frame_in_clip_count += 1 + + if gt_enabled: + target_boxes_array = self.get_frame_gt_boxes( + frame_details["abs_frame_num"], gt_sequence, gt_boxes + ) + + metadata_or_bbs, metrics, motion_detected = self.pipeline_fn( + safe_frame, + frame_details["frame_num"], + stat_start_time, + calculated_clip_id, + gt_boxes=target_boxes_array if gt_enabled else None, + read_frame_only=read_frame_only, + ) + + num_objs += len(metadata_or_bbs.keys()) + # if metadata_or_bbs is not None and isinstance(metadata_or_bbs, dict): + # all_metadata.update(metadata_or_bbs) + + total_written_frames += 1 + + # FRAME POST PROCESSING --------------------------------------------- + # Track Execution Boundaries + frame_end_time = time.perf_counter() + total_run_pipelinefn += frame_end_time - run_pipelinefn_start + last_loop_cycle_timestamp = frame_end_time + + # Calculate frame metrics + + # Real-Time Metric B: Frame Processing Latency Check + frame_loop_latency = (frame_end_time - frame_start_time) * 1000 # ms + total_frame_loop_latency += frame_loop_latency + + # Isolate active processing time (excluding the queue blocking read) + active_processing_overhead = frame_loop_latency - ( + frame_details["reader_time"] * 1000 + ) + total_active_processing_overhead += active_processing_overhead + + # RUNTIME TERMINAL WARNING ALERTS + if saturation_ratio >= 1.0 or active_processing_overhead > ( + 1000 / self.target_fps + ): + consecutive_slow_frames += 1 + if ( + consecutive_slow_frames % self.target_fps == 0 + ): # Throttle terminal spam + reader_time = frame_details["reader_time"] + main_app_logger.info( + f"\033[93m⚠️ [PERF WARNING] Main loop starving! Waiting on stream ingestion... " + f"Read Wait: {reader_time:.1f}ms | Other Wait: {active_processing_overhead:.1f}ms | Queue Fullness: {saturation_ratio * 100:.0f}%\033[0m" + ) + else: + consecutive_slow_frames = max(0, consecutive_slow_frames - 1) + # if self.device_input == "cuda" and torch.cuda.is_available(): + # torch.cuda.default_stream().synchronize() + + if gt_enabled and motion_detected: + self.update_eval_stats(metadata_or_bbs, target_boxes_array) + + if metrics != {}: + num_crops = len(metrics["bbs"]) if metrics["bbs"] is not None else 0 + self.crops_per_frame_list.append(num_crops) + + # Context-aware extraction of the newly proposed metrics + density = metrics.get( + "batch_density", 0 if self.config.sf_enabled else 1 + ) + self.component_stats["batch_sizes"].append(density) + + self.component_stats["sf"].append(metrics["sf_time"]) + # self.component_stats["roi"].append(metrics["roi_time"]) + self.component_stats["det"].append(metrics["det_time"]) + + # Calculate coverage OUTSIDE the timed block to prevent interference + if self.config.sf_enabled and metrics.get("bbs") is not None: + cov = self.calculate_unique_coverage(metrics["bbs"]) + if hasattr(cov, "item"): + coverage_percentages.append(float(cov.item())) + else: + coverage_percentages.append(float(cov)) + + # Explicitly delete frame variables to free their references + frame_8k = None + del frame_8k, safe_frame + if "metadata_or_bbs" in locals(): + del metadata_or_bbs + + if total_written_frames % (10 * self.target_fps) == 0: + # main_app_logger.info( + # f"Captured {total_written_frames}/{self.max_target_frames} frames..." + # ) + # Querying the cross-process property once every 5 seconds reduces proxy overhead to 0% + # if self.device_input == "cuda" and hasattr( + # self.reader, "total_h2d_time" + # ): + # avg_h2d = ( + # self.reader.total_h2d_time + # / max(1, total_written_frames + 1) + # ) * 1000.0 + # main_app_logger.info( + # f"Captured {total_written_frames}/{self.max_target_frames} frames... DMA Upload: {avg_h2d:.2f}ms" + # ) + # else: + main_app_logger.info( + f"Captured {total_written_frames}/{self.max_target_frames} frames..." + ) + + if self.frame_count % 100 == 0: + gc.collect() + + # Force PyTorch's internal allocator to release cached segments back to the OS + # if self.frame_count_target % (5 * self.target_fps) == 0: + # main_app_logger.info( + # f"Captured {self.frame_count_target}/{self.max_target_frames} frames..." + # ) + # torch.cuda.empty_cache() + # torch.cuda.ipc_collect() + + # Force a microscopic micro-yield if executing on CPU. + # This grants immediate execution priority back to the background cleaning thread, + # allowing the garbage collector to evict data from RAM instantly! + if self.device_input == "cpu": + time.sleep( + 0 + ) # .005) # 1ms yield breaks core processor starvation lock + + # END -> frame processing + except torch.cuda.OutOfMemoryError: + main_app_logger.info("!" * 70) + main_app_logger.info( + "[CRITICAL TEST CRASH] GPU MEMORY CEILING HIT INSIDE RUNNER LOOP!" + ) + main_app_logger.info( + "Freezing allocation history registers and writing diagnostic log..." + ) + main_app_logger.info("!" * 70) + + try: + snapshot_filename = ( + f"/tmp/test_vram_leak_profile_pid{os.getpid()}.pickle" + ) + torch.cuda.memory._dump_snapshot(snapshot_filename) + main_app_logger.info( + f"[PROFILER SUCCESSFUL] Snapshot profile written to: {snapshot_filename}" + ) + main_app_logger.info( + "--> Drag and drop this file directly into: https://pytorch.org" + ) + except Exception as dump_err: + main_app_logger.info( + f"Failed to record profile data snapshot: {dump_err}" + ) + + # Force safe system unlinking of background workers to clean up OS handles + self.active = False + if hasattr(self, "reader") and self.reader is not None: + self.reader.stop() + raise + + except Exception as e: + if not self.active or not getattr(self, "prefetch_active", True): + main_app_logger.info( + "[PROCESS THREAD] System shutdown detected during exception sweep. Exiting thread payload context." + ) + break + + main_app_logger.info( + f"[CRITICAL PIPELINE ERROR] Crash on frame: {repr(e)}" + ) + traceback.print_exc() + raise e # Let it break so you can see the exact line number! + + # END -> while self.active and self.frame_count_target < self.max_target_frames: + + # PIPELINE POST PROCESSING --------------------------------------------- + pipeline_end_time = time.perf_counter() + + real_world_latency_ms = float( + (pipeline_end_time - pipeline_start_time) * 1000.0 + ) + + total_sf_pipeline_time_ms = float( + sum(self.component_stats.get("sf", [0.0])) + + sum(self.component_stats.get("roi", [0.0])) + + sum(self.component_stats.get("det", [0.0])) + ) + total_pipeline_time_ms = float( + (pipeline_end_time - pipeline_start_time) * 1000.0 + ) + + self.async_writer.release() + + # Continuously sample the thread work pool backlog state mechanics + if hasattr(self, "executor") and self.executor is not None: + # Safely probe internal concurrent.futures work queue bounds + self.component_stats["thread_backlog"].append( + self.executor._work_queue.qsize() + ) + else: + self.component_stats["thread_backlog"].append(0) + + # CALCULATE PERFORMANCE METRICS --------------------------------------------- + main_app_logger.info( + f"Execution Finished. Total Output Frames Written: {self.frame_count_target}" + ) + + # Render your metrics dashboard table cleanly + if self.frame_count_target > 0: + avg_frame_loop_latency = total_frame_loop_latency / self.frame_count_target + self._finalize_benchmarks( + num_objs, + self.frame_count_target, # Reads the updated integer directly! + total_pipeline_time_ms, + real_world_latency_ms, + total_sf_pipeline_time_ms, + avg_frame_loop_latency, + coverage_percentages, + total_read_time, + total_queue_saturation, + queue_saturation_history, + computed_eval_metrics=self.evaluator.compute_final_metrics() + if hasattr(self, "evaluator") + else None + if gt_enabled + else None, + ) + else: + main_app_logger.info( + f"[SKIPPED SUMMARY] Only {self.frame_count_target} frames processed. " + ) + + # Force early hardware driver sweep before unbinding threads + if self.device_input == "cuda" and torch.cuda.is_available(): + torch.cuda.synchronize() + torch.cuda.empty_cache() + torch.cuda.ipc_collect() + + gc.collect() + + if profiler is not None: + profiler.stop() + + self.stop() + + def initialize_run_realtime_inference(self, read_frame_only, num_prefetch_workers): + self.processor = self._setup_processor(read_frame_only) + + if hasattr(self, "processor") and hasattr(self.processor, "label_source"): + self.label_source = self.processor.label_source + + if ( + hasattr(self, "numFrames") + and self.numFrames > 0 + and not getattr(self, "is_rtsp", False) + ): + # For local test files, compute total target frames from input video length + self.max_target_frames = int( + self.numFrames / getattr(self.reader, "step_size", 1.0) + ) + elif hasattr(self, "target_fps") and hasattr(self, "duration_target"): + self.max_target_frames = int(self.duration_target * float(self.target_fps)) + else: + self.max_target_frames = float("inf") + # ========================================================================= + # 🚀 PRE-ALLOCATED METRICS SCRATCHPAD (Zero Dynamic Allocations in Loop) + # ========================================================================= + cap = max( + 1000, + self.max_target_frames if self.max_target_frames != float("inf") else 10000, + ) + self._metric_sf_times = np.zeros(cap, dtype=np.float32) + self._metric_det_times = np.zeros(cap, dtype=np.float32) + self._metric_reader_times = np.zeros(cap, dtype=np.float32) + self._metric_queue_blocked = np.zeros(cap, dtype=np.float32) + self._metric_queue_saturations = np.zeros(cap, dtype=np.float32) + self._metric_crops_count = np.zeros(cap, dtype=np.int32) + self._metric_batch_densities = np.zeros(cap, dtype=np.int32) + self._metric_coverage_tensors = [] + # ============================ + + if self.is_cuda and not hasattr(self, "sf_start") and self.config.TEST_MODE: + self.sf_start, self.sf_end = ( + torch.cuda.Event(enable_timing=True), + torch.cuda.Event(enable_timing=True), + ) + self.roi_start, self.roi_end = ( + torch.cuda.Event(enable_timing=True), + torch.cuda.Event(enable_timing=True), + ) + self.det_start, self.det_end = ( + torch.cuda.Event(enable_timing=True), + torch.cuda.Event(enable_timing=True), + ) + + if self.config.TEST_MODE: + self.component_stats = { + "sf": [], + "roi": [], + "det": [], + "dma_upload": [], # Track PCIe Transfer Latencies + "queue_blocked": [], # Track GIL Serialization stalls + "batch_sizes": [], # Track Smart Filtering density + "thread_backlog": [], # Track thread work pool backlog + } + self.crops_per_frame_list = [] + + # Initialize a thread-safe signaling handle at class setup (run_realtime_inference) + self.queue_data_ready_event = threading.Event() + + try: + for i in range(num_prefetch_workers): + # prefetch_thread = mp.Process( + prefetch_thread = threading.Thread( + target=lambda: global_frame_prefetch_worker_v1(self), + daemon=True, + # name=f"{self.name}_prefetch_{i}", + ) + prefetch_thread.start() + self.prefetch_threads.append(prefetch_thread) + except Exception as e: + main_app_logger.critical( + f"[{self.name}] Failed to start prefetch workers: {e}", exc_info=True + ) + traceback.print_exc() + raise + + @torch.inference_mode() + def run_realtime_inference( + self, + sf_enabled=True, + profiler=None, + gt_enabled=False, + read_frame_only=False, + ): + self.status = "RUNNING" + self.initialize_run_realtime_inference( + read_frame_only, self.active_workers_count + ) + + gt_boxes = None + gt_sequence = None + if gt_enabled and hasattr(self, "VIDEO_GT_DETAILS") and self.VIDEO_GT_DETAILS: + gt_boxes = self.VIDEO_GT_DETAILS[self.name]["gt_bbox"] + gt_sequence = self.VIDEO_GT_DETAILS[self.name]["sequence"] + + self.stat_start_time = time.perf_counter() + pipeline_start_time = self.stat_start_time + last_loop_cycle_timestamp = self.stat_start_time + + missing_frame_cnt = 0 + max_retries = int(self.target_fps) + total_read_time = 0.0 + total_written_frames = 0 + total_queue_saturation = 0.0 + total_run_pipelinefn = 0.0 + total_frame_loop_latency = 0.0 + total_active_processing_overhead = 0.0 + consecutive_slow_frames = 0 + num_objs = 0 + queue_saturation_history = [] + coverage_percentages = [] + + # Release the master startup event + self.main_startup_event.set() + + while self.active: + if self.frame_count_target >= self.max_target_frames: + self.active = False + if hasattr(self.reader, "running_flag"): + self.reader.running_flag.value = False + break + + stat_start_time = time.perf_counter() + try: + # 1. FRAME RETRIEVAL ------------------------------------------ + frame_start_time = time.perf_counter() + safe_frame, frame_details, should_continue = ( + self._get_frame_from_queue() + ) + + if not should_continue: + self.active = False + break + + if safe_frame is None: + if getattr(self, "prefetch_active", True) and not getattr( + self.reader, "stopped", False + ): + time.sleep(0.001) + continue + missing_frame_cnt += 1 + if missing_frame_cnt >= max_retries: + self.active = False + main_app_logger.info( + "Too many frames missing and workers done. Exiting..." + ) + break + continue + + missing_frame_cnt = 0 + total_read_time += frame_details["reader_time"] + + # Downstream Serialization Pressure Tracking + cycle_gap = frame_start_time - last_loop_cycle_timestamp + true_serialization_stall = max( + 0.0, (cycle_gap - frame_details["reader_time"]) * 1000.0 + ) + self.component_stats["queue_blocked"].append(true_serialization_stall) + + # Frame counters and clipping indices + self.abs_frame_num = frame_details["abs_frame_num"] + calculated_clip_id = ( + frame_details["frame_num"] - 1 + ) // self.max_frames_per_clip + self.frame_count += 1 + self.frame_count_target += 1 + self.frame_in_clip_count += 1 + + # Queue Saturation Density Ratio Tracking + if ( + hasattr(self.reader, "frame_queue") + and self.reader.frame_queue.maxlen + ): + saturation_ratio = ( + len(self.reader.frame_queue) / self.reader.frame_queue.maxlen + ) + else: + saturation_ratio = 0.0 + total_queue_saturation += saturation_ratio + queue_saturation_history.append(saturation_ratio) + + # 2. RUN PIPELINE_FN ------------------------------------------ + run_pipelinefn_start = time.perf_counter() + + target_boxes_array = None + if gt_enabled: + target_boxes_array = self.get_frame_gt_boxes( + frame_details["abs_frame_num"], gt_sequence, gt_boxes + ) + + metadata_or_bbs, metrics, motion_detected = self.pipeline_fn( + safe_frame, + frame_details["frame_num"], + stat_start_time, + calculated_clip_id, + gt_boxes=target_boxes_array if gt_enabled else None, + read_frame_only=read_frame_only, + ) + + num_objs += len(metadata_or_bbs.keys()) + total_written_frames += 1 + + # 3. FRAME POST-PROCESSING & COMPONENT METRICS ---------------- + frame_end_time = time.perf_counter() + total_run_pipelinefn += frame_end_time - run_pipelinefn_start + last_loop_cycle_timestamp = frame_end_time + + frame_loop_latency = (frame_end_time - frame_start_time) * 1000.0 + total_frame_loop_latency += frame_loop_latency + + active_processing_overhead = frame_loop_latency - ( + frame_details["reader_time"] * 1000.0 + ) + total_active_processing_overhead += active_processing_overhead + + if gt_enabled and motion_detected: + self.update_eval_stats(metadata_or_bbs, target_boxes_array) + + if metrics != {}: + num_crops = ( + len(metrics["bbs"]) if metrics.get("bbs") is not None else 0 + ) + self.crops_per_frame_list.append(num_crops) + + density = metrics.get( + "batch_density", 0 if self.config.sf_enabled else 1 + ) + self.component_stats["batch_sizes"].append(density) + self.component_stats["sf"].append(metrics.get("sf_time", 0.0)) + self.component_stats["det"].append(metrics.get("det_time", 0.0)) + + # Asynchronous GPU coverage collection (NO per-frame GPU stall) + if self.config.sf_enabled and metrics.get("bbs") is not None: + # cov = self.calculate_unique_coverage(metrics["bbs"]) + # if hasattr(cov, "item"): + # coverage_percentages.append(float(cov.item())) + # else: + # coverage_percentages.append(float(cov)) + raw_bbs = metrics["bbs"] + coverage_percentages.append( + raw_bbs.clone() if torch.is_tensor(raw_bbs) else raw_bbs + ) + + # Clean temporary loop variables + del safe_frame + if "metadata_or_bbs" in locals(): + del metadata_or_bbs + + if total_written_frames % (10 * int(self.target_fps)) == 0: + main_app_logger.info( + f"Captured {total_written_frames}/{self.max_target_frames} frames..." + ) + + # if self.frame_count % 100 == 0: + # gc.collect() + + except Exception as e: + if not self.active or not getattr(self, "prefetch_active", True): + break + main_app_logger.info( + f"[CRITICAL PIPELINE ERROR] Crash on frame: {repr(e)}" + ) + traceback.print_exc() + raise e + + # ===================================================================== + # POST-LOOP BENCHMARK CALCULATIONS (Single Batch Reduction at Teardown) + # ===================================================================== + pipeline_end_time = time.perf_counter() + total_pipeline_ms = float((pipeline_end_time - pipeline_start_time) * 1000.0) + + if hasattr(self, "async_writer") and self.async_writer is not None: + self.async_writer.release() + + main_app_logger.info( + f"Execution Finished. Total Output Frames Written: {total_written_frames}" + ) + + computed_eval_metrics = None + if gt_enabled and hasattr(self, "evaluator"): + computed_eval_metrics = self.evaluator.compute_final_metrics() + + if hasattr(self.__class__, "benchmarks"): + print(f"SELF.__CLASS__.BENCHMARKS: {self.__class__.benchmarks}") + elif hasattr(self, "benchmarks"): + print(f"SELF.BENCHMARKS: {self.benchmarks}") + + self._finalize_benchmarks( + num_objs=num_objs, + total_written_frames=total_written_frames, + total_pipeline_ms=total_pipeline_ms, + real_world_latency_ms=total_pipeline_ms, + total_sf_pipeline_ms=float( + sum(self.component_stats.get("sf", [0.0])) + + sum(self.component_stats.get("det", [0.0])) + ), + frame_loop_latency_ms=total_frame_loop_latency + / max(1, total_written_frames), + coverage_percentages=coverage_percentages, + total_read_time=total_read_time, + total_queue_saturation=total_queue_saturation, + queue_saturation_history=queue_saturation_history, + computed_eval_metrics=computed_eval_metrics, + ) + + if self.device_input == "cuda" and torch.cuda.is_available(): + torch.cuda.synchronize() + torch.cuda.empty_cache() + if hasattr(torch.cuda, "ipc_collect"): + torch.cuda.ipc_collect() + + # gc.collect() + if profiler is not None: + profiler.stop() + + self.stop() + + # CLEANUP -------------------------------------------- + + def clean_up_tensors_and_arrays(self): + main_app_logger.info("[CLEANUP] Safely stripping active runtime arrays ...") + + # 1. Force disable tracking states to stop graph allocation recursion + # torch.set_grad_enabled(False) + + # if hasattr(torch, "jit") and hasattr(torch.jit, "_builtins"): + # if isinstance(torch.jit._builtins, dict): + # torch.jit._sbuiltins.clear() + # else: + # torch.jit._builtins = {} + + # 2. Collect references safely using strict type checking + # This completely avoids pulling unmanaged proxy objects from the heap + all_live_objects = gc.get_objects() + + target_tensors = [] + target_arrays = [] + + for obj in all_live_objects: + try: + obj_type = type(obj) + if isinstance(obj, types.FrameType): + frame_info = inspect.getframeinfo(obj) + if ( + "openvino" in frame_info.filename + or "openvino.py" in frame_info.filename + ): + # Clear the frame's local variable dictionary to break circular references + obj.f_locals.clear() + + # Check for concrete types to prevent triggering proxy __getattr__ hooks + if obj_type is torch.Tensor: + target_tensors.append(obj) + elif obj_type is np.ndarray: + # Explicitly guard size checks to keep it completely stable + if obj.base is None and obj.ndim > 0: + target_arrays.append(obj) + except Exception: + pass + + # 3. Truncate discovered references in-place without triggering deletions + reclaimed_tensors = 0 + for tensor in target_tensors: + try: + # Truncate raw storage footprint safely + tensor.data = torch.empty(0, device=self.device_input) + reclaimed_tensors += 1 + except Exception: + pass + + reclaimed_arrays = 0 + for arr in target_arrays: + try: + # Shrink writeable numpy arrays down to 0 bytes safely + if arr.flags.writeable: + arr.resize((0,), refcheck=False) + reclaimed_arrays += 1 + except (ValueError, SystemError): + pass + + main_app_logger.info( + f"[CLEANUP] Reclaimed {reclaimed_tensors} tensors and {reclaimed_arrays} arrays safely." + ) + + # Clean local registers immediately + all_live_objects = None + target_tensors = None + target_arrays = None + + # Clear out low-level traceback registries if active + # if hasattr(sys, "exc_info"): + if hasattr(sys, "exc_clear"): + sys.exc_clear() # if hasattr(sys, "exc_clear") else None + + # Walk up the execution frame tree and clear out f_locals references + try: + frame_cursor = inspect.currentframe() + while frame_cursor: + # Empty out active scopes to force unlinking of trapped closures + frame_cursor.f_locals.clear() + frame_cursor = frame_cursor.f_back + except Exception: + pass + finally: + # Prevent the frame cursor property itself from pinning the block + del frame_cursor + gc.collect() + + def execute_teardown(self): + if hasattr(self, "baseline_before_start"): + setattr(self, "baseline_before_start", None) + + if hasattr(self, "evaluator") and self.evaluator is not None: + try: + # If your evaluator class tracks raw coordinate arrays in a list/dict, + # force-clear them to allow Python to free up the unmanaged memory: + if hasattr(self.evaluator, "history"): + self.evaluator.history.clear() + if hasattr(self.evaluator, "all_predictions"): + self.evaluator.all_predictions.clear() + except Exception: + pass + self.evaluator = None + + if hasattr(self, "component_stats") and self.component_stats: + self.component_stats.clear() + + release_native_linux_heap() + + # main_app_logger.info( + # "[TEST HARNESS] Test Teardown complete. Releasing session cleanly.\n", + # , + # ) + + # HELPER FUNCTIONS -------------------------------------------- + def _finalize_benchmarks_v1( + self, + num_objs, + total_written_frames, + total_pipeline_ms, + real_world_latency_ms, + total_sf_pipeline_ms, + frame_loop_latency_ms, + coverage_percentages, + total_read_time, + total_queue_saturation, + queue_saturation_history, + computed_eval_metrics=None, + ): + """Aggregates metrics and adds them to the results list.""" + # num_objs = len(all_metadata.keys()) + sf_enabled = self.config.sf_enabled + stat_frame_count = self.stat_frame_count + stat_fps = self.stat_fps + total_frames = self.abs_frame_num # self.reader.total_input_frames + + h2d_label = ( + "Pinned H2D Transfer (PCIe DMA)" + if self.is_cuda + else "Data Preparation Overhead" + ) + # d2h_label = ( + # "D2H Transfer (PCIe Download)" + # if self.is_cuda + # else "Array Extraction Overhead" + # ) + + total_pipeline_s = total_pipeline_ms / 1000.0 # Full pipeline + + total_real_pipeline_s = ( + real_world_latency_ms / 1000.0 + ) # Pipeline until last frame sent to writer + real_est_fps = ( + self.frame_count_target / total_real_pipeline_s + if total_real_pipeline_s > 0 + else 0 + ) + + # if total_written_frames > 0: + duration_s = ( + total_frames / self.reader.input_fps if self.reader.input_fps > 0 else 0 + ) + out_duration_s = ( + total_written_frames / self.reader.target_fps + if self.reader.target_fps > 0 + else 0 + ) + # main_app_logger.info( + # f"Expected duration: {self.duration_target:.2f} stream_duration_s: {duration_s:.2f} output_duration_s: {out_duration_s:.2f}" + # ) + + h2d_display_label = f"Reader {h2d_label}:" + avg_reader_ms = (total_read_time / total_written_frames) * 1000 + # avg_resize_ms = (total_resize_time / total_written_frames)*1000 + # avg_write_ms = (total_disk_write_overhead / total_written_frames)*1000 + target_frame_fps = total_written_frames / total_pipeline_s + all_frame_fps = total_frames / total_pipeline_s + avg_copy_ms = (self.reader.total_shm_copy_time / total_written_frames) * 1000 + # avg_blocked_ms = ( + # self.reader.total_queue_wait_time / total_written_frames + # ) * 1000 + + # Avg Blocked MS tracks your downstream GIL blocks and serialization stalls + avg_blocked_ms = ( + sum(self.component_stats.get("queue_blocked", [0.0])) + / max(1, len(self.component_stats.get("queue_blocked", []))) + if self.component_stats.get("queue_blocked") + else 0.0 + ) + + avg_saturation = (total_queue_saturation / total_written_frames) * 100 + peak_saturation = ( + max(queue_saturation_history) * 100 if queue_saturation_history else 0 + ) + target_match_ratio = ( + total_written_frames / (total_pipeline_s * self.reader.target_fps) + ) * 100 + + frame_drop = max( + 0.0, + (1.0 - (total_written_frames / max(1, total_frames))) * 100.0, + ) + serial_pressure = (avg_blocked_ms / max(0.1, frame_loop_latency_ms)) * 100.0 + evac_vel = target_frame_fps / max(0.1, all_frame_fps) + + # Isolate the ratio of sequential loop stalls against full execution bounds + backpressure_index = (avg_blocked_ms / max(0.1, frame_loop_latency_ms)) * 100.0 + + if self.is_cuda: + avg_h2d_ms = (self.reader.total_h2d_time / total_written_frames) * 1000 + avg_prep_ms = 0.0 + else: + avg_prep_ms = (self.reader.total_h2d_time / total_written_frames) * 1000 + avg_h2d_ms = 0.0 + + # Calculate structural frame size payload in Gigabytes (H * W * Channels) + frame_size_gb = (self.reader.frame_height * self.reader.frame_width * 3) / ( + 1024**3 + ) + + # 1. Compute Peak H2D PCIe Throughput + avg_h2d_s = ( + ( + sum(self.component_stats["dma_upload"]) + / len(self.component_stats["dma_upload"]) + ) + / 1000.0 + if self.component_stats["dma_upload"] + else 0 + ) + if self.is_cuda and avg_h2d_s > 0.00001: + self.pcie_throughput_gbps = frame_size_gb / avg_h2d_s + else: + self.pcie_throughput_gbps = ( + 0.0 # Safe fallback baseline for non-PCIe pipelines (CPU) + ) + + # Calculate bus saturation relative to standard Gen4 x16 baseline ceilings (31.5 GB/s) + # Scale to an index percentage safely + pcie_bus_saturation = (self.pcie_throughput_gbps / 31.5) * 100.0 + + # 2. Extract PyTorch VRAM Fragmentation Delta Metrics + if self.is_cuda and torch.cuda.is_available(): + peak_alloc = torch.cuda.max_memory_allocated(0) / 1024**2 + peak_reserved = torch.cuda.max_memory_reserved(0) / 1024**2 + self.vram_efficiency = ( + (peak_alloc / peak_reserved * 100.0) if peak_reserved > 0 else 100.0 + ) + else: + self.vram_efficiency = ( + 0.0 # Clean zero baseline representation for CPU runs + ) + + # Calculate averages for component breakdowns + # avg_reader_ms = (total_read_time / total_frames) * 1000 + # avg_reader_ms = (total_read_time / self.frame_count_target) * 1000 + avg_sf = ( + sum(self.component_stats["sf"]) / len(self.component_stats["sf"]) + if self.component_stats["sf"] + else 0 + ) + avg_roi = ( + sum(self.component_stats["roi"]) / len(self.component_stats["roi"]) + if self.component_stats["roi"] + else 0 + ) + avg_det = ( + sum(self.component_stats["det"]) / len(self.component_stats["det"]) + if self.component_stats["det"] + else 0 + ) + + # Total Latency Sum (SF + ROI + DET) + det_latency_ms = avg_sf + avg_roi + avg_det + det_latency_s = det_latency_ms / 1000.0 + det_est_fps = (total_written_frames / det_latency_s) if det_latency_s > 0 else 0 + + # Track model workloads against preprocessing overheads (sf_time + roi_time) + preprocessing_overhead = avg_sf + avg_roi + model_cost_density = avg_det / max(0.1, preprocessing_overhead) + + loop_overhead = max( + 0.0, 100.0 - ((det_latency_ms / max(1.0, frame_loop_latency_ms)) * 100.0) + ) + # avg_cov = ( + # sum(coverage_percentages) / len(coverage_percentages) + # if coverage_percentages + # else (100.0 if not sf_enabled else 0) + # ) + # peak_cov = max(coverage_percentages) if coverage_percentages else 0.0 + + if coverage_percentages: + if torch.is_tensor(coverage_percentages[0]): + cov_stack = torch.stack(coverage_percentages) + avg_cov = cov_stack.mean().item() + peak_cov = cov_stack.max().item() + else: + avg_cov = sum(coverage_percentages) / len(coverage_percentages) + peak_cov = max(coverage_percentages) if coverage_percentages else 0.0 + else: + avg_cov = 100.0 if not sf_enabled else 0.0 + peak_cov = 0.0 + # If coverage_percentages contains un-synchronized GPU tensors, reduce them all at once! + # if coverage_percentages and isinstance(coverage_percentages[0], torch.Tensor): + # # Stack all frame elements into a single contiguous GPU tensor block + # coverage_tensor_stack = torch.stack(coverage_percentages) + + # # Calculate reductions fast on the device without stepping back onto the CPU + # avg_cov = torch.mean(coverage_tensor_stack).item() + # peak_cov = torch.max(coverage_tensor_stack).item() + + # # Safe fallback: Convert the tracking list back into plain floats for standard reporting + # coverage_percentages = coverage_tensor_stack.cpu().tolist() + # else: + # # Standard fallback if the script is running on a CPU target pass + # avg_cov = sum(coverage_percentages) / max(1, len(coverage_percentages)) + # peak_cov = max(coverage_percentages) if coverage_percentages else 0.0 + + avg_crops = ( + sum(self.crops_per_frame_list) / len(self.crops_per_frame_list) + if self.crops_per_frame_list + else 0 + ) + + # Calculate how often we hit a high-motion cap (e.g., 20 crops) + capped_frames = sum(1 for c in self.crops_per_frame_list if c >= 20) + cap_rate = ( + (capped_frames / len(self.crops_per_frame_list)) * 100 + if self.crops_per_frame_list + else 0 + ) + + # avg_queue = ( + # sum(self.component_stats["queue_blocked"]) + # / len(self.component_stats["queue_blocked"]) + # if self.component_stats["queue_blocked"] + # else 0 + # ) + # avg_batch = ( + # sum(self.component_stats["batch_sizes"]) + # / len(self.component_stats["batch_sizes"]) + # if self.component_stats["batch_sizes"] + # else 0 + # ) + + backlog_list = self.component_stats.get("thread_backlog", []) + avg_backlog = ( + sum(backlog_list) / len(backlog_list) if len(backlog_list) > 0 else 0.0 + ) + + main_app_logger.info( + "=" * 60, + ) + main_app_logger.info( + f" FULLY-OPTIMIZED ASYNC STAGE ({self.config.DEVICE}) PIPELINE BREAKDOWN " + ) + main_app_logger.info( + "=" * 60, + ) + main_app_logger.info( + f"Total Output Frames Written: {total_written_frames}", + ) + main_app_logger.info( + f"Total Pipeline Execution Time: {total_pipeline_s:.4f} seconds", + ) + main_app_logger.info( + f"Overall Processing Speed: {target_frame_fps:.2f} FPS", + ) + main_app_logger.info( + "=" * 60, + ) + main_app_logger.info( + "MAIN CONSUMER LOOP TIMELINE (SEQUENTIAL OVERHEAD):", + ) + main_app_logger.info( + f" 1. Shared Memory Copy to Host: {avg_copy_ms:6.2f} ms" + ) + main_app_logger.info( + f" 2. GIL / Downstream Queue Serialization Stalls: {avg_blocked_ms:6.2f} ms" + ) + main_app_logger.info( + f" 3. Pure Video Frame File-Ingestion Read: {avg_reader_ms:6.2f} ms" + ) + main_app_logger.info( + "=" * 60, + ) + main_app_logger.info( + "BACKGROUND INGESTION HEALTH (ASYNC METRICS):", + ) + main_app_logger.info( + f" A. Inbound Stream Decode Speed: {all_frame_fps:6.2f} FPS" + ) + main_app_logger.info( + f" B. {h2d_display_label:<42} {avg_h2d_ms:6.2f} ms", + ) + main_app_logger.info( + f" C. Consumer Queue Saturation Density: {avg_saturation:6.1f}%" + ) + main_app_logger.info( + f" D. Peak PCIe Upload Throughput: {self.pcie_throughput_gbps:6.2f} GB/s" + ) + main_app_logger.info( + f" E. Active Thread Pool Work Backlog: {avg_backlog:6.1f} tasks" + ) + main_app_logger.info( + f" F. VRAM Hardware Memory Efficiency (Cache): {self.vram_efficiency:6.1f}%" + ) + main_app_logger.info( + "=" * 60, + ) + + # EXPANDED PERFORMANCE INSIGHTS AND DIAGNOSTICS + main_app_logger.info("PIPELINE HEALTH & BEHAVIOR INSIGHTS:") + if avg_saturation > 80.0: + pipeline_status = "CHOKED" + main_app_logger.info( + f" • Status: \033[91m🔴 {pipeline_status}\033[0m (Downstream logic cannot keep up with inbound stream speed)" + ) + elif avg_saturation > 40.0: + pipeline_status = "BALANCED" + main_app_logger.info( + f" • Status: \033[93m🟡 {pipeline_status}\033[0m (Queue buffer is actively pacing consumer workloads)" + ) + else: + pipeline_status = "IDLE/LIGHT" + main_app_logger.info( + f" • Status: \033[92m🟢 {pipeline_status}\033[0m (Consumer loop finishes ahead of background ingestion clock)" + ) + + main_app_logger.info( + f" • Peak Queue Fullness Reached: {peak_saturation:.1f}%" + ) + # Calculate stream drop indicator + main_app_logger.info( + f" • Targeted Pacing Delivery Accuracy: {target_match_ratio:.1f}%" + ) + main_app_logger.info( + f" • Downstream Serialization Pressure Index: {serial_pressure}" + ) + main_app_logger.info( + f" • Core Queue Evacuation Velocity Rank: {evac_vel}", + ) + main_app_logger.info( + f" • Hardware Compute Backpressure Index: {backpressure_index:6.2f}%" + ) + main_app_logger.info( + f" • Preprocessing to Inference Cost Density: {model_cost_density:6.2f}x" + ) + main_app_logger.info( + f" • Physical PCIe Gen4 Bus Saturation Level: {pcie_bus_saturation:6.2f}%" + ) + main_app_logger.info( + "=" * 60, + ) + + result_dict = { + "Test Name": self._testMethodName, + "Detection Type": self.config.DETECTION_TYPE, + "Device": self.config.DEVICE, + "Smart Filtering": "Enabled" if sf_enabled else "Disabled", + "Video": self.source, # self.name? + "Video FPS": f"{self.reader.input_fps:.2f}", + "Video Original Duration (s)": f"{duration_s:.4f}", + "Video Frames": total_frames, + # TARGET OVERVIEW + "Target FPS": f"{self.reader.target_fps:.2f}", + "Output Duration (s)": f"{out_duration_s:.4f}", + "Output Frames": total_written_frames, + } + + if computed_eval_metrics: + result_dict.update( + { + # EVAL OVERVIEW + "Max_Recall_IoU_10": computed_eval_metrics["Max_Recall_IoU_10"], + "mAP_10": computed_eval_metrics["mAP_10"], + "mAP_50": computed_eval_metrics["mAP_50"], + "mAP_75": computed_eval_metrics["mAP_75"], + "mAP_10_95": computed_eval_metrics["mAP_10_95"], + "Precision_10": computed_eval_metrics["Precision_10"], + "Recall_10": computed_eval_metrics["Recall_10"], + "F1_Score_10": computed_eval_metrics["F1_Score_10"], + "Precision_50": computed_eval_metrics["Precision_50"], + "Recall_50": computed_eval_metrics["Recall_50"], + "F1_Score_50": computed_eval_metrics["F1_Score_50"], + } + ) + + result_dict.update( + { + # PIPELINE OVERVIEW + "Pipeline Latency (s)": f"{total_pipeline_s:.2f}", + "Pipeline FPS (Video frames)": f"{all_frame_fps:.2f}", + "Pipeline FPS (Target frames)": f"{target_frame_fps:.2f}", + "Real Pipeline Latency (s)": f"{total_real_pipeline_s:.2f}", + "Real Pipeline FPS (Target frames)": f"{real_est_fps:.2f}", + # MAIN CONSUMER LOOP TIMELINE (SEQUENTIAL OVERHEAD) + "Avg Frame Reading (ms)": f"{avg_reader_ms:.2f}", + # "Avg Resize (ms)": f"{avg_resize_ms:.2f}", + # "Avg Writer Async Handoff (ms)": f"{avg_write_ms:.2f}", + # BACKGROUND INGESTION HEALTH (ASYNC METRICS) + "Avg Host Copy (ms)": f"{avg_copy_ms:.2f}", + "Avg DMA Upload (ms)": f"{avg_h2d_ms:.2f}", + "Avg Data Prep Overhead (ms)": f"{avg_prep_ms:.2f}", + "Avg Queue Blocked (ms)": f"{avg_blocked_ms:.2f}", + "Avg Queue Saturation (%)": f"{avg_saturation:.2f}", + # Framework Overhead Leak Tracking (Measures loop time spent outside raw AI inference model blocks) + "Loop Overhead %": f"{loop_overhead:.2f}%", + # Inbound Stream Frame Drop Rate (Identifies if background threads are dropping packets due to I/O) + "Inbound Frame Drop %": f"{frame_drop:.2f}%", + # Serialization Pressure Index (Tracks what percentage of your frame time is lost to thread stalls) + "Serialization Pressure %": f"{serial_pressure:.2f}%", + # Queue Evacuation Velocity Coefficient (Values > 1.0 mean your consumer loop drains frames faster than ingestion) + "Evacuation Velocity": f"{evac_vel:.2f}x", + "Compute Backpressure Index": f"{backpressure_index:.2f}%", + "Model Cost Density Ratio": f"{model_cost_density:.2f}x", + "PCIe Bus Saturation %": f"{pcie_bus_saturation:.2f}%", + # PIPELINE HEALTH & BEHAVIOR INSIGHTS + "Pipeline Status": pipeline_status, + "Peak Queue Fullness (%)": f"{peak_saturation:.2f}", + "Targeted Pacing Delivery (%)": f"{target_match_ratio:.2f}", + # DETECTION PIPELINE (Should B NULL) + "SF/Detection Latency (s)": f"{det_latency_s:.2f}", + "SF/Detection FPS": f"{det_est_fps:.2f}", + "Avg SF (ms)": f"{avg_sf:.2f}", + "Avg ROI (ms)": f"{avg_roi:.2f}", + "Avg Obj. Detection (ms)": f"{avg_det:.2f}", + "Total Breakdown Sum (ms)": f"{det_latency_ms:.2f}", + "Avg Area Coverage %": f"{avg_cov:.2f}%", + "Peak Area Coverage %": f"{peak_cov:.2f}%", + "Avg Crops/Frame": f"{avg_crops:.1f}", + # "Frames w/o ROIs": self.no_roi_frame_cnt, + "Crop Cap Rate (>20)": f"{cap_rate:.1f}%", + "Objects Detected": num_objs, + # TIming to display frame (read to after send to render queue) + "Display Latency (s)": f"{self.elapsed_display_time:.2f}", + "Display Frames": stat_frame_count, + "Display FPS": f"{stat_fps:.2f}", + "PCIe Bandwidth Throughput (GB/s)": f"{self.pcie_throughput_gbps:.2f}", + "Avg Async Thread Pool Backlog": f"{sum(self.component_stats.get('thread_backlog', [0])) / len(self.component_stats.get('thread_backlog', [1])):.1f}", + "VRAM Allocation Efficiency (%)": f"{self.vram_efficiency:.1f}%", + } + ) + self.__class__.benchmarks.append(result_dict) + + main_app_logger.info( + f"[{self._testMethodName}] Pipeline Latency (s): {total_pipeline_s:.2f} sec" + ) + main_app_logger.info( + f"[{self._testMethodName}] Pipeline FPS (Target frames): {target_frame_fps:.2f} ({total_written_frames} frames)" + ) + main_app_logger.info( + f"[{self._testMethodName}] Pipeline FPS (Video frames): {all_frame_fps:.2f} ({total_frames} frames)" + ) + main_app_logger.info( + f"[{self._testMethodName}] SF/Detection FPS (Target frames): {det_est_fps:.2f} ({total_written_frames} frames)" + ) + main_app_logger.info( + f"[{self._testMethodName}] Display FPS: {stat_fps:.2f} ({stat_frame_count} frames)" + ) + + def _finalize_benchmarks( + self, + num_objs, + total_written_frames, + total_pipeline_ms, + real_world_latency_ms, + total_sf_pipeline_ms, + frame_loop_latency_ms, + coverage_percentages, + total_read_time, + total_queue_saturation, + queue_saturation_history, + computed_eval_metrics=None, + ): + """Aggregates metrics and adds them to the results list.""" + sf_enabled = self.config.sf_enabled + stat_frame_count = self.stat_frame_count + stat_fps = self.stat_fps + total_frames = self.abs_frame_num + + h2d_label = ( + "Pinned H2D Transfer (PCIe DMA)" + if self.is_cuda + else "Data Preparation Overhead" + ) + + total_pipeline_s = total_pipeline_ms / 1000.0 + total_real_pipeline_s = real_world_latency_ms / 1000.0 + real_est_fps = ( + self.frame_count_target / total_real_pipeline_s + if total_real_pipeline_s > 0 + else 0.0 + ) + + duration_s = ( + total_frames / self.reader.input_fps if self.reader.input_fps > 0 else 0.0 + ) + out_duration_s = ( + total_written_frames / self.reader.target_fps + if self.reader.target_fps > 0 + else 0.0 + ) + + h2d_display_label = f"Reader {h2d_label}:" + avg_reader_ms = ( + (total_read_time / total_written_frames) * 1000.0 + if total_written_frames > 0 + else 0.0 + ) + target_frame_fps = ( + total_written_frames / total_pipeline_s if total_pipeline_s > 0 else 0.0 + ) + all_frame_fps = total_frames / total_pipeline_s if total_pipeline_s > 0 else 0.0 + avg_copy_ms = ( + (self.reader.total_shm_copy_time / total_written_frames) * 1000.0 + if total_written_frames > 0 + else 0.0 + ) + + avg_blocked_ms = ( + sum(self.component_stats.get("queue_blocked", [0.0])) + / max(1, len(self.component_stats.get("queue_blocked", []))) + if self.component_stats.get("queue_blocked") + else 0.0 + ) + + avg_saturation = ( + (total_queue_saturation / total_written_frames) * 100.0 + if total_written_frames > 0 + else 0.0 + ) + peak_saturation = ( + max(queue_saturation_history) * 100.0 if queue_saturation_history else 0.0 + ) + target_match_ratio = ( + (total_written_frames / (total_pipeline_s * self.reader.target_fps)) * 100.0 + if (total_pipeline_s > 0 and self.reader.target_fps > 0) + else 0.0 + ) + + frame_drop = max( + 0.0, + (1.0 - (total_written_frames / max(1, total_frames))) * 100.0, + ) + serial_pressure = (avg_blocked_ms / max(0.1, frame_loop_latency_ms)) * 100.0 + evac_vel = target_frame_fps / max(0.1, all_frame_fps) + backpressure_index = (avg_blocked_ms / max(0.1, frame_loop_latency_ms)) * 100.0 + + if self.is_cuda: + avg_h2d_ms = ( + (self.reader.total_h2d_time / total_written_frames) * 1000.0 + if total_written_frames > 0 + else 0.0 + ) + avg_prep_ms = 0.0 + else: + avg_prep_ms = ( + (self.reader.total_h2d_time / total_written_frames) * 1000.0 + if total_written_frames > 0 + else 0.0 + ) + avg_h2d_ms = 0.0 + + frame_size_gb = (self.reader.frame_height * self.reader.frame_width * 3) / ( + 1024**3 + ) + + avg_h2d_s = ( + ( + sum(self.component_stats["dma_upload"]) + / len(self.component_stats["dma_upload"]) + ) + / 1000.0 + if self.component_stats.get("dma_upload") + else 0.0 + ) + if self.is_cuda and avg_h2d_s > 0.00001: + self.pcie_throughput_gbps = frame_size_gb / avg_h2d_s + else: + self.pcie_throughput_gbps = 0.0 + + pcie_bus_saturation = (self.pcie_throughput_gbps / 31.5) * 100.0 + + if self.is_cuda and torch.cuda.is_available(): + peak_alloc = torch.cuda.max_memory_allocated(0) / 1024**2 + peak_reserved = torch.cuda.max_memory_reserved(0) / 1024**2 + self.vram_efficiency = ( + (peak_alloc / peak_reserved * 100.0) if peak_reserved > 0 else 100.0 + ) + else: + self.vram_efficiency = 0.0 + + avg_sf = ( + sum(self.component_stats["sf"]) / len(self.component_stats["sf"]) + if self.component_stats.get("sf") + else 0.0 + ) + avg_roi = ( + sum(self.component_stats["roi"]) / len(self.component_stats["roi"]) + if self.component_stats.get("roi") + else 0.0 + ) + avg_det = ( + sum(self.component_stats["det"]) / len(self.component_stats["det"]) + if self.component_stats.get("det") + else 0.0 + ) + + det_latency_ms = avg_sf + avg_roi + avg_det + det_latency_s = det_latency_ms / 1000.0 + det_est_fps = ( + (total_written_frames / det_latency_s) if det_latency_s > 0 else 0.0 + ) + + preprocessing_overhead = avg_sf + avg_roi + model_cost_density = avg_det / max(0.1, preprocessing_overhead) + + loop_overhead = max( + 0.0, 100.0 - ((det_latency_ms / max(1.0, frame_loop_latency_ms)) * 100.0) + ) + + # Batch GPU Reduction for Coverage Tensors + if coverage_percentages: + cov_results = [] + for bbs in coverage_percentages: + if bbs is not None and len(bbs) > 0: + cov_results.append(self.calculate_unique_coverage(bbs)) + else: + cov_results.append(0.0) + + avg_cov = sum(cov_results) / max(1, len(cov_results)) + peak_cov = max(cov_results) + else: + avg_cov = 100.0 if not sf_enabled else 0.0 + peak_cov = 0.0 + + avg_crops = ( + sum(self.crops_per_frame_list) / len(self.crops_per_frame_list) + if self.crops_per_frame_list + else 0.0 + ) + + capped_frames = sum(1 for c in self.crops_per_frame_list if c >= 20) + cap_rate = ( + (capped_frames / len(self.crops_per_frame_list)) * 100.0 + if self.crops_per_frame_list + else 0.0 + ) + + backlog_list = self.component_stats.get("thread_backlog", []) + avg_backlog = ( + sum(backlog_list) / len(backlog_list) if len(backlog_list) > 0 else 0.0 + ) + + # Formatted Performance Breakdown Logging + main_app_logger.info("=" * 60) + main_app_logger.info( + f" FULLY-OPTIMIZED ASYNC STAGE ({self.config.DEVICE}) PIPELINE BREAKDOWN " + ) + main_app_logger.info("=" * 60) + main_app_logger.info(f"Total Output Frames Written: {total_written_frames}") + main_app_logger.info( + f"Total Pipeline Execution Time: {total_pipeline_s:.4f} seconds" + ) + main_app_logger.info( + f"Overall Processing Speed: {target_frame_fps:.2f} FPS" + ) + main_app_logger.info("=" * 60) + main_app_logger.info("MAIN CONSUMER LOOP TIMELINE (SEQUENTIAL OVERHEAD):") + main_app_logger.info( + f" 1. Shared Memory Copy to Host: {avg_copy_ms:6.2f} ms" + ) + main_app_logger.info( + f" 2. GIL / Downstream Queue Serialization Stalls: {avg_blocked_ms:6.2f} ms" + ) + main_app_logger.info( + f" 3. Pure Video Frame File-Ingestion Read: {avg_reader_ms:6.2f} ms" + ) + main_app_logger.info("=" * 60) + main_app_logger.info("BACKGROUND INGESTION HEALTH (ASYNC METRICS):") + main_app_logger.info( + f" A. Inbound Stream Decode Speed: {all_frame_fps:6.2f} FPS" + ) + main_app_logger.info(f" B. {h2d_display_label:<42} {avg_h2d_ms:6.2f} ms") + main_app_logger.info( + f" C. Consumer Queue Saturation Density: {avg_saturation:6.1f}%" + ) + main_app_logger.info( + f" D. Peak PCIe Upload Throughput: {self.pcie_throughput_gbps:6.2f} GB/s" + ) + main_app_logger.info( + f" E. Active Thread Pool Work Backlog: {avg_backlog:6.1f} tasks" + ) + main_app_logger.info( + f" F. VRAM Hardware Memory Efficiency (Cache): {self.vram_efficiency:6.1f}%" + ) + main_app_logger.info("=" * 60) + + main_app_logger.info("PIPELINE HEALTH & BEHAVIOR INSIGHTS:") + if avg_saturation > 80.0: + pipeline_status = "CHOKED" + main_app_logger.info( + f" • Status: \033[91m🔴 {pipeline_status}\033[0m (Downstream logic cannot keep up with inbound stream speed)" + ) + elif avg_saturation > 40.0: + pipeline_status = "BALANCED" + main_app_logger.info( + f" • Status: \033[93m🟡 {pipeline_status}\033[0m (Queue buffer is actively pacing consumer workloads)" + ) + else: + pipeline_status = "IDLE/LIGHT" + main_app_logger.info( + f" • Status: \033[92m🟢 {pipeline_status}\033[0m (Consumer loop finishes ahead of background ingestion clock)" + ) + + main_app_logger.info( + f" • Peak Queue Fullness Reached: {peak_saturation:.1f}%" + ) + main_app_logger.info( + f" • Targeted Pacing Delivery Accuracy: {target_match_ratio:.1f}%" + ) + main_app_logger.info( + f" • Downstream Serialization Pressure Index: {serial_pressure:.4f}" + ) + main_app_logger.info( + f" • Core Queue Evacuation Velocity Rank: {evac_vel:.4f}" + ) + main_app_logger.info( + f" • Hardware Compute Backpressure Index: {backpressure_index:6.2f}%" + ) + main_app_logger.info( + f" • Preprocessing to Inference Cost Density: {model_cost_density:6.2f}x" + ) + main_app_logger.info( + f" • Physical PCIe Gen4 Bus Saturation Level: {pcie_bus_saturation:6.2f}%" + ) + main_app_logger.info("=" * 60) + + result_dict = { + "Test Name": self._testMethodName, + "Detection Type": self.config.DETECTION_TYPE, + "Device": self.config.DEVICE, + "Smart Filtering": "Enabled" if sf_enabled else "Disabled", + "Video": self.source, + "Video FPS": f"{self.reader.input_fps:.2f}", + "Video Original Duration (s)": f"{duration_s:.4f}", + "Video Frames": total_frames, + "Target FPS": f"{self.reader.target_fps:.2f}", + "Output Duration (s)": f"{out_duration_s:.4f}", + "Output Frames": total_written_frames, + } + + if computed_eval_metrics: + result_dict.update( + { + "Max_Recall_IoU_10": computed_eval_metrics.get( + "Max_Recall_IoU_10", 0.0 + ), + "mAP_10": computed_eval_metrics.get("mAP_10", 0.0), + "mAP_50": computed_eval_metrics.get("mAP_50", 0.0), + "mAP_75": computed_eval_metrics.get("mAP_75", 0.0), + "mAP_10_95": computed_eval_metrics.get("mAP_10_95", 0.0), + "Precision_10": computed_eval_metrics.get("Precision_10", 0.0), + "Recall_10": computed_eval_metrics.get("Recall_10", 0.0), + "F1_Score_10": computed_eval_metrics.get("F1_Score_10", 0.0), + "Precision_50": computed_eval_metrics.get("Precision_50", 0.0), + "Recall_50": computed_eval_metrics.get("Recall_50", 0.0), + "F1_Score_50": computed_eval_metrics.get("F1_Score_50", 0.0), + } + ) + + result_dict.update( + { + "Pipeline Latency (s)": f"{total_pipeline_s:.2f}", + "Pipeline FPS (Video frames)": f"{all_frame_fps:.2f}", + "Pipeline FPS (Target frames)": f"{target_frame_fps:.2f}", + "Real Pipeline Latency (s)": f"{total_real_pipeline_s:.2f}", + "Real Pipeline FPS (Target frames)": f"{real_est_fps:.2f}", + "Avg Frame Reading (ms)": f"{avg_reader_ms:.2f}", + "Avg Host Copy (ms)": f"{avg_copy_ms:.2f}", + "Avg DMA Upload (ms)": f"{avg_h2d_ms:.2f}", + "Avg Data Prep Overhead (ms)": f"{avg_prep_ms:.2f}", + "Avg Queue Blocked (ms)": f"{avg_blocked_ms:.2f}", + "Avg Queue Saturation (%)": f"{avg_saturation:.2f}", + "Loop Overhead %": f"{loop_overhead:.2f}%", + "Inbound Frame Drop %": f"{frame_drop:.2f}%", + "Serialization Pressure %": f"{serial_pressure:.2f}%", + "Evacuation Velocity": f"{evac_vel:.2f}x", + "Compute Backpressure Index": f"{backpressure_index:.2f}%", + "Model Cost Density Ratio": f"{model_cost_density:.2f}x", + "PCIe Bus Saturation %": f"{pcie_bus_saturation:.2f}%", + "Pipeline Status": pipeline_status, + "Peak Queue Fullness (%)": f"{peak_saturation:.2f}", + "Targeted Pacing Delivery (%)": f"{target_match_ratio:.2f}", + "SF/Detection Latency (s)": f"{det_latency_s:.2f}", + "SF/Detection FPS": f"{det_est_fps:.2f}", + "Avg SF (ms)": f"{avg_sf:.2f}", + "Avg ROI (ms)": f"{avg_roi:.2f}", + "Avg Obj. Detection (ms)": f"{avg_det:.2f}", + "Total Breakdown Sum (ms)": f"{det_latency_ms:.2f}", + "Avg Area Coverage %": f"{avg_cov:.2f}%", + "Peak Area Coverage %": f"{peak_cov:.2f}%", + "Avg Crops/Frame": f"{avg_crops:.1f}", + "Crop Cap Rate (>20)": f"{cap_rate:.1f}%", + "Objects Detected": num_objs, + "Display Latency (s)": f"{self.elapsed_display_time:.2f}", + "Display Frames": stat_frame_count, + "Display FPS": f"{stat_fps:.2f}", + "PCIe Bandwidth Throughput (GB/s)": f"{self.pcie_throughput_gbps:.2f}", + "Avg Async Thread Pool Backlog": f"{sum(self.component_stats.get('thread_backlog', [0])) / max(1, len(self.component_stats.get('thread_backlog', [1]))):.1f}", + "VRAM Allocation Efficiency (%)": f"{self.vram_efficiency:.1f}%", + } + ) + self.__class__.benchmarks.append(result_dict) + + main_app_logger.info( + f"[{self._testMethodName}] Pipeline Latency (s): {total_pipeline_s:.2f} sec" + ) + main_app_logger.info( + f"[{self._testMethodName}] Pipeline FPS (Target frames): {target_frame_fps:.2f} ({total_written_frames} frames)" + ) + main_app_logger.info( + f"[{self._testMethodName}] Pipeline FPS (Video frames): {all_frame_fps:.2f} ({total_frames} frames)" + ) + main_app_logger.info( + f"[{self._testMethodName}] SF/Detection FPS (Target frames): {det_est_fps:.2f} ({total_written_frames} frames)" + ) + main_app_logger.info( + f"[{self._testMethodName}] Display FPS: {stat_fps:.2f} ({stat_frame_count} frames)" + ) + + def motion2metadata(self, merged, frame_count_target): + metadata = {} + if merged is not None and merged.size > 0: + # merged = merged / self.scales_tensor.cpu().numpy().reshape(-1, 4) + merged = merged.div(self.scales_tensor.view(-1, 4)) + + # Calculate area for each box: (xmax - xmin) * (ymax - ymin) + widths = merged[:, 2] - merged[:, 0] + heights = merged[:, 3] - merged[:, 1] + areas = widths * heights + max_area = np.max(areas) if np.max(areas) > 0 else 1.0 + + # Format motion results like detection results for evaluation + for i, bb in enumerate(merged): + disp_x, disp_y, disp_x2, disp_y2 = bb + disp_w = disp_x2 - disp_x + disp_h = disp_y2 - disp_y + + if disp_w > 2 and disp_h > 2: + obj_id = len(metadata) + # num_objs += 1 + framenum_str = f"{frame_count_target:04d}_{obj_id:04d}" + score = areas[i] / max_area + + metadata[framenum_str] = { + "frameId": int(frame_count_target), + "bbId": framenum_str, + "bbox": { + "x": int(disp_x), + "y": int(disp_y), + "height": int(disp_h), + "width": int(disp_w), + "object": "", + "object_det": { + "confidence": score, + "frameH": int(self.resize_h), + "frameW": int(self.resize_w), + }, + }, + } + + return metadata + + def calculate_unique_coverage_v1(self, merged_boxes, target_w=640, target_h=640): + """ + Pure Loopless Vectorized Coverage Engine. + Eliminates sequential Python loop slicing overhead via parallel hardware broadcast registers. + """ + if merged_boxes is None or len(merged_boxes) == 0: + return 0.0 + + target_device = self.device_input if hasattr(self, "device_input") else "cpu" + + if isinstance(merged_boxes, np.ndarray): + if merged_boxes.size == 0: + return 0.0 + boxes_tensor = torch.as_tensor( + merged_boxes, device=target_device, dtype=torch.float32 + ) + else: + if merged_boxes.shape[0] == 0: + return 0.0 + boxes_tensor = merged_boxes.to(device=target_device, dtype=torch.float32) + + # Vectorized scaling projection matrix + scale = torch.tensor( + [ + target_w / self.frame_width, + target_h / self.frame_height, + target_w / self.frame_width, + target_h / self.frame_height, + ], + device=target_device, + dtype=torch.float32, + ) + + coords = (boxes_tensor * scale).long() + coords[:, [0, 2]] = coords[:, [0, 2]].clamp(0, target_w) + coords[:, [1, 3]] = coords[:, [1, 3]].clamp(0, target_h) + + # Build parallel coordinate meshes on target hardware + # grid_y, grid_x = torch.meshgrid( + # torch.arange(target_h, device=target_device), + # torch.arange(target_w, device=target_device), + # indexing="ij" + # ) + + # Extract coordinate tracking vectors + x1 = coords[:, 0].unsqueeze(1).unsqueeze(2) + y1 = coords[:, 1].unsqueeze(1).unsqueeze(2) + x2 = coords[:, 2].unsqueeze(1).unsqueeze(2) + y2 = coords[:, 3].unsqueeze(1).unsqueeze(2) + + # Direct 3D array tensor broadcast reduction sum pass + # inside_mask = (grid_x >= x1_v) & (grid_x < x2_v) & (grid_y >= y1_v) & (grid_y < y2_v) + inside_boxes = ( + (self._cached_grid_x >= x1) + & (self._cached_grid_x < x2) + & (self._cached_grid_y >= y1) + & (self._cached_grid_y < y2) + ) + unique_mask = torch.any(inside_boxes, dim=0) + + coverage_percentage = ( + torch.sum(unique_mask).float().div(target_w * target_h).mul(100.0) + ) + return coverage_percentage.item() + + def calculate_unique_coverage(self, merged_boxes, target_w=640, target_h=640): + if merged_boxes is None or len(merged_boxes) == 0: + return None + + target_device = self.device_input if hasattr(self, "device_input") else "cpu" + + if isinstance(merged_boxes, np.ndarray): + if merged_boxes.size == 0: + return None + boxes_tensor = torch.as_tensor( + merged_boxes, device=target_device, dtype=torch.float32 + ) + else: + if merged_boxes.shape[0] == 0: + return None + boxes_tensor = merged_boxes.to(device=target_device, dtype=torch.float32) + + # Scale coordinates to target space + scale_x = target_w / self.frame_width + scale_y = target_h / self.frame_height + + x1 = (boxes_tensor[:, 0] * scale_x).clamp(0, target_w).long().view(-1, 1, 1) + y1 = (boxes_tensor[:, 1] * scale_y).clamp(0, target_h).long().view(-1, 1, 1) + x2 = (boxes_tensor[:, 2] * scale_x).clamp(0, target_w).long().view(-1, 1, 1) + y2 = (boxes_tensor[:, 3] * scale_y).clamp(0, target_h).long().view(-1, 1, 1) + + # 3D broadcast evaluation + inside_boxes = ( + (self._cached_grid_x >= x1) + & (self._cached_grid_x < x2) + & (self._cached_grid_y >= y1) + & (self._cached_grid_y < y2) + ) + unique_mask = torch.any(inside_boxes, dim=0) + + # Return the 0-dim GPU tensor directly without calling .item()! + return torch.sum(unique_mask).float().div(target_w * target_h).mul(100.0) + + def print_active_cpu_tensor_memory(self): + """ + CPU EQUIVALENT TO print_active_gpu_tensor_memory: + Scans the global Python garbage collection registries to locate, measure, + and map every single live PyTorch tensor actively residing on host RAM. + """ + + main_app_logger.info( + "=" * 60, + ) + main_app_logger.info( + "[RAM INVESTIGATOR] Scanning Active CPU Tensors with Sources:", + ) + main_app_logger.info( + f"{'ALLOCATED SIZE':<15} | {'TENSOR SHAPE':<25} | {'DATA TYPE':<15}" + ) + main_app_logger.info( + "-" * 80, + ) + + total_cpu_tensor_bytes = 0 + live_tensor_count = 0 + + # Force a shallow sweep to catch immediately orphaned pointers first + gc.collect() + + # Iterate over the entire active Python heap + for obj in gc.get_objects(): + try: + # Target only genuine PyTorch tensors residing on the host CPU + if torch.is_tensor(obj) and not obj.is_cuda and obj.nelement() > 0: + live_tensor_count += 1 + + # Calculate true memory footprint based on element size and count + element_size = obj.element_size() + num_elements = obj.nelement() + tensor_bytes = num_elements * element_size + total_cpu_tensor_bytes += tensor_bytes + + # Filter out tiny scalar metrics to keep logs focused on leaks (e.g., > 10 KB) + if tensor_bytes > 10240: + size_kb = tensor_bytes / 1024 + shape_str = str(list(obj.shape)) + dtype_str = str(obj.dtype).replace("torch.", "") + + main_app_logger.info( + f"{size_kb:>10.1f} KiB | {shape_str:<25} | {dtype_str:<15}" + ) + except Exception: + # Guard against objects being destroyed concurrently during the scan loop + pass + + total_cpu_tensor_mb = total_cpu_tensor_bytes / (1024 * 1024) + main_app_logger.info( + "-" * 80, + ) + main_app_logger.info( + f"Total Live CPU Tensor Count: {live_tensor_count}", + ) + main_app_logger.info( + f"Total Live CPU Tensor Memory: {total_cpu_tensor_mb:.2f} MB", + ) + main_app_logger.info( + "=" * 60, + ) + + # def print_active_gpu_tensor_memory(self): + # main_app_logger.info( + # "=" * 60, + # ) + # main_app_logger.info( + # "\033[95m[VRAM INVESTIGATOR] Scanning Active GPU Tensors with Sources:\033[0m" + # ) + + # # Capture the exact C++ memory registry structure + # try: + # raw_snapshot = torch.cuda.memory._snapshot() + # segments = raw_snapshot.get("segments", []) + # except Exception: + # segments = [] + # main_app_logger.info( + # "[WARN] Failed parsing native memory context snapshot.", + # ) + + # # Map raw block storage memory addresses straight to Python frames + # addr_to_source = {} + # for seg in segments: + # for block in seg.get("blocks", []): + # if block.get("state") == "active_allocated": + # addr = block.get("address") + # history = block.get("history", []) + # if history: + # # Inspect the deepest frame in the allocation stack + # frame = history[-1] + # filename = frame.get("filename", "Unknown") + # lineno = frame.get("line", 0) + # func_name = frame.get("name", "unknown_func") + # addr_to_source[addr] = f"{filename}:{lineno} ({func_name})" + + # # Scan the heap via GC and resolve actual backing storage layers + # leaked_tensors = [] + # total_detected_bytes = 0 + + # for obj in gc.get_objects(): + # try: + # if torch.is_tensor(obj) and obj.is_cuda: + # t_bytes = obj.element_size() * obj.nelement() + # total_detected_bytes += t_bytes + # if t_bytes > 0: + # leaked_tensors.append(obj) + # except Exception: + # pass + + # obj = None # Break tracking register references + + # for i, tensor in enumerate(leaked_tensors): + # t_bytes = tensor.element_size() * tensor.nelement() + + # # --- THE FIX: Extract the address of the underlying storage block --- + # try: + # if hasattr(tensor, "untyped_storage"): + # storage_addr = tensor.untyped_storage().data_ptr() + # elif hasattr(tensor, "storage") and tensor.storage(): + # storage_addr = tensor.storage().data_ptr() + # else: + # storage_addr = tensor.data_ptr() + # except Exception: + # storage_addr = tensor.data_ptr() + + # # Extract absolute code trace locations from our snapshot dictionary + # source_loc = addr_to_source.get( + # storage_addr, "Unknown Native C++ Allocation / Model Context" + # ) + + # main_app_logger.info( + # f" > Tensor {i:3d} | Shape: {str(list(tensor.shape)):<18} | " + # f"Size: {t_bytes / 1024**2:6.2f} MB | Source: \033[93m{source_loc}\033[0m" + # ) + + # del leaked_tensors + # main_app_logger.info( + # f"[VRAM INVESTIGATOR] Total Live Tensor Memory: {total_detected_bytes / 1024**2:.2f} MB" + # ) + # gc.collect() + # if ( + # torch.cuda.is_available() + # ): # self.device_input == "cuda" and torch.cuda.is_available(): + # torch.cuda.synchronize() + # torch.cuda.empty_cache() # Flush the pool BEFORE the guard snapshots it + + # def print_active_shared_memory(self): + # main_app_logger.info( + # "=" * 60, + # ) + # main_app_logger.info( + # "\033[96m[SHM INVESTIGATOR] Scanning Active OS Shared Memory Filesystem Tables:\033[0m" + # ) + # try: + # shm_dir = Path("/dev/shm") + # if shm_dir.exists(): + # # Extract and inventory all live POSIX memory segments allocated right now + # shm_files = [ + # f + # for f in shm_dir.iterdir() + # if f.is_file() + # and not f.name.startswith("sem.") + # and not f.name.startswith("psm") + # ] + # main_app_logger.info( + # f" > Discovered Live OS-Mapped Memory Nodes: {len(shm_files)}" + # ) + + # for f_path in shm_files: + # try: + # f_stat = f_path.stat() + # size_mb = f_stat.st_size / (1024 * 1024) + + # # Highlight the files using visual color anchors for scannability + # main_app_logger.info( + # f" ⚠️ \033[93m[ALIVE SHM NODE]\033[0m File: {f_path.name:<25} | Size: {size_mb:7.2f} MB" + # ) + # except Exception: + # pass + # else: + # main_app_logger.info( + # " [ERROR] /dev/shm runtime directory is inaccessible on this host context." + # ) + # except Exception as e: + # main_app_logger.info( + # f" [WARN] Kernel inspection execution pass failed: {e}" + # ) + + # # gc.collect() + # # if torch.cuda.is_available(): + # # torch.cuda.synchronize() + # # torch.cuda.empty_cache() # Flush the pool BEFORE the guard snapshots it + + # def calculate_leaked_memory( + # self, device, video_name, start_allocated, start_reserved + # ): + # _testMethodName = f"{video_name}_{device}" + # main_app_logger.info("=" * 60) + # max_allowed_leak = 1024 * 1024 # 1MB buffer allowance + # msg = "[LEAKAGE INVESTIGATOR] Scanning memory allocations:\n" + # if device == "gpu" and torch.cuda.is_available(): + # # torch.cuda.synchronize() + + # end_allocated = torch.cuda.memory_allocated(0) + # end_reserved = torch.cuda.memory_reserved(0) + + # leak_allocated = end_allocated - start_allocated + # leak_reserved = end_reserved - start_reserved + # # max_allowed_leak = 1024 * 1024 # 1MB buffer allowance + + # if leak_allocated > max_allowed_leak: + # msg += ( + # f"\n🔴 GPU Memory Leak Detected for {_testMethodName}!\n" + # f"Check for dangling references or missing 'del' statements\n\n" + # ) + # # else: + # # msg = "\n" + + # msg += ( + # f"\tPre-Setup Allocation: {start_allocated / 1024**2:.2f} MB\n" + # f"\tPost-Teardown Allocation: {end_allocated / 1024**2:.2f} MB\n" + # f"\tNet Leaked VRAM: {leak_allocated / 1024**2:.2f} MB\n" + # f"\tNet Leaked Reserved Blocks: {leak_reserved / 1024**2:.2f} MB" + # ) + + # # main_app_logger.info(msg, ) + # else: + # process = psutil.Process(os.getpid()) + # end_rss = process.memory_info().rss + + # # start_allocated and start_reserved must be populated with baseline RSS in each_test_setup + # leak_rss = end_rss - start_allocated + + # if leak_rss > max_allowed_leak: + # msg += ( + # f"\n🔴 CPU Memory Leak Detected for {_testMethodName}!\n" + # f"Check for dangling references or missing 'del' statements\n\n" + # ) + # # else: + # # msg = "\n" + + # msg += ( + # f" Pre-Setup Host RAM Allocation: {start_allocated / 1024**2:.2f} MB\n" + # ) + # msg += f" Post-Teardown Host RAM Allocation: {end_rss / 1024**2:.2f} MB\n" + # msg += f" Net Leaked Host System Memory: {leak_rss / 1024**2:.2f} MB" + # main_app_logger.info(msg) + # main_app_logger.info("=" * 60) + + # def diagnostic_profiler(self, device, video_name, start_allocated, start_reserved): + # _testMethodName = f"{video_name}_{device}" + # self.calculate_leaked_memory( + # device, video_name, start_allocated, start_reserved + # ) + + # # main_app_logger.info("=" * 60, ) + # # main_app_logger.info( + # # f"\n\033[95m[DIAGNOSTICS] Starting Automated Leak Analysis for {_testMethodName}...\033[0m", + # # , + # # ) + + # # 1. Run objgraph to inspect the Python object reference trees before clearing containers + # # try: + # # main_app_logger.info( + # # "\033[94m[DIAGNOSTICS] Python Object Registry Standings:\033[0m", + # # ) + # # objgraph.show_most_common_types(limit=10) + + # # Check if the metrics arrays are pinning references inside memory + # # for tracker_attr in ["all_preds", "all_targets"]: + # # if hasattr(self, tracker_attr): + # # tgt_list = getattr(self, tracker_attr) + # # if len(tgt_list) > 0: + # # graph_path = f"/tmp/backrefs_{tracker_attr}_{device}.png" + # # main_app_logger.info( + # # f"\033[93m[WARN] '{tracker_attr}' contains {len(tgt_list)} entries. Generating reference graph to: {graph_path}\033[0m" + # # ) + # # objgraph.show_backrefs( + # # [tgt_list], max_depth=3, filename=graph_path + # # ) + # # except ImportError: + # # main_app_logger.info( + # # "\033[91m[DIAGNOSTICS] 'objgraph' package missing. Skipping reference chain mapping. (pip install objgraph)\033[0m" + # # ) + + # # 2. Dump PyTorch Memory Snapshot before clearing VRAM caches + # if device == "gpu" and torch.cuda.is_available(): + # try: + # # snapshot_path = f"/tmp/vram_leak_profile_{self._testMethodName}.pickle" + # snapshot_path = self.output_path.replace(".mp4", "_vram_profile.html") + # torch.cuda.memory._dump_snapshot(snapshot_path) + # main_app_logger.info( + # f"\033[92m[DIAGNOSTICS] VRAM Snapshot Trace generated successfully: {snapshot_path}\033[0m" + # ) + # main_app_logger.info( + # "\033[92m--> Upload this file to https://pytorch.org to inspect leak allocation stacks.\033[0m" + # ) + + # with open(snapshot_path, "rb") as f: + # snapshot = pickle.load(f) + + # # Print an HTML visualization path map of the allocations + # html_timeline = memory_viz.trace_plot(snapshot) + # html_path = snapshot_path.replace(".pickle", ".html") + # with open(html_path, "w", encoding="utf-8") as f: + # f.write(html_timeline) + # except Exception as e: + # main_app_logger.info( + # f"\033[91m[DIAGNOSTICS] Failed to generate PyTorch memory snapshot: {e}\033[0m" + # ) + + # def assess_memory(self, device, video_name, start_allocated, start_reserved): + # gc.collect() + + # surviving_arrays = [ + # obj + # for obj in gc.get_objects() + # # if isinstance(obj, np.ndarray) and obj.size >= 1 #(1920 * 1080) + # if type(obj) is np.ndarray and obj.ndim > 0 + # ] + # analyze_tracemalloc_snapshot() + + # main_app_logger.info( + # f"[DIAGNOSTICS] Found {len(surviving_arrays)} uncollected large arrays alive in RAM filesystem." + # ) + + # for i, arr in enumerate(surviving_arrays): + # referrers = gc.get_referrers(arr) + # main_app_logger.info( + # f" > Array {i} | Shape: {arr.shape} | Pinned by {len(referrers)} references:" + # ) + # for ref in referrers: + # if isinstance(ref, dict): + # main_app_logger.info( + # f" - Dict Keys holding this array: {list(ref.keys())[:4]}" + # ) + # else: + # main_app_logger.info( + # f" - Variable holding object layout: {type(ref)}", + # ) + # # ─────────────────────────────────────── + + # # analyze_tracemalloc_snapshot() + + # if device == "gpu": + # self.print_active_gpu_tensor_memory() + # else: + # # --- CPU RAM PATH METRICS --- + # # main_app_logger.info("=" * 60, ) + # # main_app_logger.info("\n[RAM INVESTIGATOR] Scanning Host CPU Memory Standings:", ) + # # process = psutil.Process(os.getpid()) + # # current_rss = process.memory_info().rss / (1024 * 1024) # Host RAM in MB + # # main_app_logger.info(f" > Current Process Resident Set Size (RSS): {current_rss:.2f} MB", ) + # self.print_active_cpu_tensor_memory() + + # self.print_active_shared_memory() + + # # AUTOMATED DIAGNOSTIC PROFILING PHASE (TRIGGERED ON TEST TEARDOWN) + # self.diagnostic_profiler(device, video_name, start_allocated, start_reserved) + + def _print_gpu_mem(self): + if self.device_input == "cuda" and torch.cuda.is_available(): + # Memory currently used by tensors + allocated = torch.cuda.memory_allocated(0) / 1024**2 + # Total memory reserved by PyTorch (the "Pool") + reserved = torch.cuda.memory_reserved(0) / 1024**2 + main_app_logger.info(f"\tAllocated: {allocated:0.2f} MB") + main_app_logger.info(f"\tReserved: {reserved:0.2f} MB") + else: + main_app_logger.info("\tCUDA not available.") + + def get_frame_gt_boxes(self, abs_frame_num, gt_sequence, gt_boxes): + if abs_frame_num - 1 >= len(gt_sequence): + return np.empty((0, 4), dtype=np.float32) + + gt_seq = int(gt_sequence[abs_frame_num - 1]) + if gt_seq == abs_frame_num: + gt_b_xywh = gt_boxes[abs_frame_num - 1] + gt_b = [ + gt_b_xywh[0], + gt_b_xywh[1], + min(gt_b_xywh[0] + gt_b_xywh[2], target_width - 1), + min(gt_b_xywh[1] + gt_b_xywh[3], target_height - 1), + ] + # Force a 2D matrix shape layout of (1, 4) even for a single box + target_boxes_array = np.array([gt_b], dtype=np.float32).reshape(-1, 4) + # target_labels_array = np.array([0], dtype=np.int64) + else: + # gt_b = [0,0,0,0] + target_boxes_array = np.empty((0, 4), dtype=np.float32) + + return target_boxes_array + + def update_eval_stats(self, metadata_or_bbs, target_boxes_array): + """ + metadata_or_bbs: In 640 (resize) space + """ + + # gt_seq = int(gt_sequence[abs_frame_num - 1]) + # if gt_seq == abs_frame_num: + # gt_b_xywh = gt_boxes[abs_frame_num - 1] + # gt_b = [ + # gt_b_xywh[0], + # gt_b_xywh[1], + # min(gt_b_xywh[0] + gt_b_xywh[2], target_width - 1), + # min(gt_b_xywh[1] + gt_b_xywh[3], target_height - 1), + # ] + # # Force a 2D matrix shape layout of (1, 4) even for a single box + # target_boxes_array = np.array([gt_b], dtype=np.float32).reshape( + # -1, 4 + # ) + # # target_labels_array = np.array([0], dtype=np.int64) + # else: + # # gt_b = [0,0,0,0] + # target_boxes_array = np.empty((0, 4), dtype=np.float32) + # target_labels_array = np.empty((0,), dtype=np.int64) + + bbs = [] + scores = [] + labels = [] + if isinstance(metadata_or_bbs, dict): + for _, v in metadata_or_bbs.items(): + labels.append(0) + scores.append(float(v["bbox"]["object_det"]["confidence"])) + bbox = [ + v["bbox"]["x"], + v["bbox"]["y"], + v["bbox"]["width"], + v["bbox"]["height"], + ] + # x, y, w, h = scale_bbox_xywh( + # bbox, + # self.resize_w, + # self.resize_h, + # targetW=target_width, + # targetH=target_height, + # ) + # x2 = min(x + w, target_width - 1) + # y2 = min(y + h, target_height - 1) + + x, y, x2, y2 = scale_bbox( + bbox, + self.resize_w, + self.resize_h, + targetW=target_width, + targetH=target_height, + in_format="xywh", + out_format="xyxy", + ) + + bbs.append([x, y, x2, y2]) + else: + for bbox in metadata_or_bbs: + labels.append(0) + scores.append(0.9) + x, y, x2, y2 = scale_bbox( + bbox, + self.resize_w, + self.resize_h, + targetW=target_width, + targetH=target_height, + in_format="xyxy", + out_format="xyxy", + ) + bbs.append([x, y, x2, y2]) + + # Convert to array, then explicitly reshape to enforce the 2D constraint + pred_boxes_array = np.array(bbs, dtype=np.float32).reshape(-1, 4) + pred_scores_array = np.array(scores, dtype=np.float32) + # pred_labels_array = np.array(labels, dtype=np.int64) + # preds = { + # "boxes": pred_boxes_array, # Guaranteed to be (N, 4) even if N=0 + # "scores": pred_scores_array, + # "labels": pred_labels_array, + # } + # ] + # self.all_preds.append(preds) + # self.all_targets.append(targets) + # metric_engine.update(preds, targets) + self.evaluator.update_frame( + pred_boxes_array, pred_scores_array, target_boxes_array + ) + + del pred_boxes_array, pred_scores_array + + # COMPARE SNAPSHOTS -------------------------------------------- + def capture_state_snapshot(self): + """Captures a metadata-only registry mapping of all active keys and values.""" + snapshot = {} + for attr, val in list(self.__dict__.items()): + if val is None: + type_str = "NoneType" + details = None + else: + type_str = val.__class__.__name__ + + # Extract detailed allocation size/state contexts depending on type + if type_str == "Tensor": + details = f"shape={list(val.shape)}, device={val.device}, dtype={val.dtype}" + elif type_str == "ndarray": + details = f"shape={list(val.shape)}, dtype={val.dtype}" + elif type_str in ("list", "dict", "set", "tuple"): + try: + details = f"len={len(val)}" + except Exception: + details = "uncountable" + elif type_str in ("Thread", "Process", "DummyProcess"): + try: + details = f"alive={val.is_alive()}" + except Exception: + details = "unknown" + elif type_str in ("Lock", "_RLock"): + try: + details = f"locked={val.locked()}" + except Exception: + details = "unknown" + elif type_str == "Queue": + try: + details = f"approx_qsize={val.qsize()}" + except Exception: + details = "uncountable" + else: + # Capture values for strings, ints, bools, etc. + try: + details = ( + str(val)[:50] + if type_str in ("str", "int", "bool", "float") + else hex(id(val)) + ) + except Exception: + details = "unresolved_pointer" + + snapshot[attr] = {"type": type_str, "details": details} + return snapshot + + def print_lifecycle_delta( + self, + before_snapshot, + after_snapshot, + keys_to_skip=default_attr_keys, + return_keys=False, + ): + """Compares snapshots and outputs a precise list of elements that must be evicted.""" + main_app_logger.info("=" * 80) + main_app_logger.info( + " RESOURCE LIFECYCLE LIFESPAN ANALYSIS (BEFORE START vs AFTER STOP)" + ) + main_app_logger.info("=" * 80) + + # 1. New keys initialized during execution + new_keys = [ + key + for key in sorted( + list(set(after_snapshot.keys()) - set(before_snapshot.keys())) + ) + if key not in keys_to_skip + ] + + main_app_logger.info( + f"[+] NEW ARTIFACTS GENERATED DURING THE RUN ({len(new_keys)} keys found):" + ) + if new_keys: + for key in new_keys: + main_app_logger.info( + f" └─ {key} -> Type: {after_snapshot[key]['type']} ({after_snapshot[key]['details']})" + ) + main_app_logger.info( + " ⚠️ ACTION REQUIRED: Must be deleted or unlinked via delattr()." + ) + else: + main_app_logger.info( + " None! (No new top-level attributes were registered)." + ) + + # 2. Key values modified, grown, or mutated during execution + mutated_keys = [] + static_keys = [] + common_keys = set(before_snapshot.keys()) & set(after_snapshot.keys()) + for key in sorted(list(common_keys)): + if (key not in keys_to_skip) and ( + before_snapshot[key] != after_snapshot[key] + ): + if after_snapshot[key]["details"] not in [None, "len=0"]: + mutated_keys.append(key) + elif ( + (key not in keys_to_skip) + and (before_snapshot[key] == after_snapshot[key]) + and getattr(self, key).__class__.__name__ != "method" + ): + static_keys.append(key) + + main_app_logger.info( + f"[Δ] RETAINED KEYS MUTATED OR GROWN DURING THE RUN ({len(mutated_keys)} keys found):" + ) + if mutated_keys: + for key in mutated_keys: + b_meta = before_snapshot[key] + a_meta = after_snapshot[key] + main_app_logger.info(f" └─ {key}") + main_app_logger.info( + f" ├── Before Start: {b_meta['type']} ({b_meta['details']})" + ) + main_app_logger.info( + f" └── After Stop: {a_meta['type']} ({a_meta['details']})" + ) + main_app_logger.info( + " ⚠️ ACTION REQUIRED: Revert back to baseline state, call .clear(), or set to None." + ) + else: + main_app_logger.info( + " None! (All original tracking keys remained perfectly static)." + ) + + # main_app_logger.info(f"\n[Δ] RETAINED STATIC KEYS DURING THE RUN ({len(static_keys)} keys found):") + # if static_keys: + # for key in static_keys: + # b_meta = before_snapshot[key] + # main_app_logger.info(f" └─ {key}") + # main_app_logger.info(f" ├── Before Start: {b_meta['type']} ({b_meta['details']})") + # main_app_logger.info(f" ⚠️ ACTION REQUIRED: Possibly remove because it has not changed.") + main_app_logger.info("=" * 80) + + if return_keys: + # return new_keys, static_keys + return new_keys, mutated_keys, static_keys + + def stop_blueprint_executor(self, new_keys, mutated_keys): + """Dynamically creates a blueprint of all changes and liquidates them safely.""" + main_app_logger.info("=" * 80) + main_app_logger.info(" DYNAMIC TEARDOWN COMPILER & RESOURCE EVICTION ENGINE") + main_app_logger.info( + "=" * 80, + ) + + # keys_to_skip = [ + # "_is_stopped", + # "active", + # "status", + # "baseline_before_start", + # ] + + # 1. Identify dynamically added attributes (Must be destroyed / unlinked) + new_keys = set( + new_keys + ) # set(state_before_stop.keys()) - set(before_snapshot.keys()) + + # 2. Identify baseline attributes that grew or mutated (Must be reset) + mutated_keys = set(mutated_keys) + # mutated_keys = set() + # for key in (set(before_snapshot.keys()) & set(state_before_stop.keys())): + # if before_snapshot[key] != state_before_stop[key] and key not in keys_to_skip: + # mutated_keys.append(key) if isinstance(mutated_keys, list) else mutated_keys.add(key) + + # --- PHASE 1: TARGETED HARDWARE DEALLOCATIONS (ORDER SENSITIVE) --- + # First, handle background threads and OS processes before severing structural arrays + all_targeted_keys = ( + new_keys | mutated_keys + ) # [key for key in list(new_keys | mutated_keys)] # if key not in keys_to_skip] + + # A. Prioritize process and thread termination hooks + for key in list(all_targeted_keys): + val = getattr(self, key, None) + if val is None: + continue + type_name = val.__class__.__name__ + + if type_name in ("Thread", "Process", "DummyProcess"): + main_app_logger.info( + f" [RECONCILING] Terminating unmanaged runtime worker: {key}" + ) + # try: + # if hasattr(val, "is_alive") and val.is_alive(): + # if hasattr(val, "terminate"): val.terminate() + # val.join(timeout=0.5) + # except Exception: pass + self.stop_thread(val) + + elif type_name == "ThreadPoolExecutor": + main_app_logger.info( + f" [RECONCILING] Shutting down concurrent thread pool: {key}" + ) + try: + val.shutdown(wait=True, cancel_futures=True) + except Exception: + pass + + # B. Decouple IPC Multi-processing Queues next (Non-blocking) + for key in list(all_targeted_keys): + val = getattr(self, key, None) + if val is None: + continue + if val.__class__.__name__ == "Queue": + main_app_logger.info( + f" [RECONCILING] Draining and closing IPC channel: {key}" + ) + try: + while not val.empty(): + val.get_nowait() + except Exception: + pass + try: + val.close() + val.cancel_join_thread() + except Exception: + pass + + # C. Unmap Shared Memory nodes from /dev/shm + # for key in list(all_targeted_keys): + # val = getattr(self, key, None) + # if val is None: continue + # type_name = val.__class__.__name__ + # if "shm" in key.lower() or type_name in ("SharedMemory", "SharedMemoryManager"): + # main_app_logger.info(f" [RECONCILING] Unlinking OS Shared Memory layout node: {key}") + # if type_name == "list": + # for item in val: + # if item.__class__.__name__ == "tuple": + # for i in item: + # if i.__class__.__name__ == "Event": + # try: + # if hasattr(i, "_handle"): + # i._handle.close() + # except Exception: + # pass + # i = None + # else: + # i = None + + # try: + # if hasattr(item, "close"): + # item.close() + # item.unlink() + # else: + # item = None + # except Exception: + # # pass + # traceback.print_exc() + # elif item is not None: + # try: + # item.close() + # item.unlink() + # except Exception: + # # pass + # traceback.print_exc() + # else: + # try: + # val.close() + # val.unlink() + # except Exception: + # # pass + # traceback.print_exc() + + # --- PHASE 2: FLUSHING AND UNLINKING OBJECT REFERENCES --- + # Now that the background hardware loops are dead, scrub the attributes + for key in sorted(list(all_targeted_keys)): + val = getattr(self, key, None) + if val is None: + continue + type_name = val.__class__.__name__ + + # If it's a new attribute, wipe its internal space and erase it completely + if key in new_keys: + if type_name == "Tensor": + try: + val.data = torch.empty(0, device=val.device) + except Exception: + pass + elif isinstance(val, dict): + val.clear() + elif isinstance(val, list): + val.clear() + elif type_name == "GpuMat": + try: + val.release() + except Exception: + pass + + # Permanently strip the attribute from the object namespace + try: + delattr(self, key) + except AttributeError: + pass + + # If it was a mutated pre-existing baseline key, reset it to its origin baseline + elif key in mutated_keys: + if isinstance(val, (list, dict, set)): + try: + val.clear() + except Exception: + pass + # else: + # # Revert primitive counters or strings back to their exact original baseline state + # orig_type = before_snapshot[key]["type"] + elif isinstance(val, None): # orig_type == "NoneType": + setattr(self, key, None) + elif isinstance(val, int): # orig_type == "int": + setattr(self, key, 0) + elif isinstance(val, bool): # orig_type == "bool": + setattr(self, key, False) + elif isinstance(val, str): # orig_type == "str": + setattr(self, key, "") + + # --- PHASE 3: FINAL HOST HEAP FLUSH --- + # import gc + + gc.collect() + if torch.cuda.is_available(): + torch.cuda.synchronize() + torch.cuda.empty_cache() + + main_app_logger.info("=" * 80) + main_app_logger.info( + " [SUCCESS] Dynamic Blueprint Execution Complete. Clean state achieved." + ) + main_app_logger.info("=" * 80) + + # DEBUG FUNCTIONS -------------------------------------------- + def debug_save_mask(self, frame_source, frame_num, rois=None, gt_boxes=None): + debug_dir = self.result_dir / "debug_stages" / self._testMethodName / "mask" + debug_dir.mkdir(parents=True, exist_ok=True) + + save_path = ( + debug_dir / f"frame_{frame_num:04d}_mask.jpg" + ) # f"mask_{frame_num:04d}.jpg" + + # cv2.imwrite( + # # str(stage_debug_dir / f"frame_{f_num:04d}_stage6_threshold.jpg"), + # str(stage_debug_dir / f"frame_{self.frame_count_target:04d}_stagerois_merged.jpg"), + # display_frame, + # ) + + if frame_num > self.config.DEBUG_FRAME_LIMIT: + return + + # # Download or copy the data + # if hasattr(frame_source, "download"): + # img_cpu = frame_source.download() + # elif torch.is_tensor(frame_source): + # # .contiguous() fixes the horizontal "shredding"/static look + # temp = frame_source.squeeze(0) if frame_source.ndim == 4 else frame_source + # img_cpu = temp.permute(1, 2, 0).contiguous().cpu().numpy() + # else: + # # For numpy arrays (like your pinned memory), ensure memory is linear + # img_cpu = np.ascontiguousarray(frame_source) + + # # Fix Visibility (Normalization) + # # If float, scale to 0-255. If uint8, leave as is to avoid "neon" colors. + # if img_cpu.dtype != np.uint8: + # if img_cpu.max() <= 1.0: + # img_cpu = (img_cpu * 255).clip(0, 255).astype(np.uint8) + # else: + # img_cpu = img_cpu.astype(np.uint8) + + # Download/Copy the frame + if torch.is_tensor(frame_source): + # .contiguous() is CRITICAL here to fix the "shredded" look + temp = frame_source.squeeze(0) if frame_source.ndim == 4 else frame_source + # img_cpu = temp.permute(1, 2, 0).contiguous().cpu().numpy() + img_cpu = temp.contiguous().cpu().numpy() + img_cpu = cv2.cvtColor(img_cpu, cv2.COLOR_RGB2BGR) + elif hasattr(frame_source, "download"): + img_cpu = frame_source.download() + else: + img_cpu = np.ascontiguousarray(frame_source) + + # Fix Shape: restore spatial grid if flattened + if img_cpu.ndim == 3 and img_cpu.shape[0] == 1: + img_cpu = img_cpu.reshape((self.resize_h, self.resize_w, 3)) + + # Fix Visibility: ONLY multiply if it's actually floating point + # If uint8 is multiplied by 255, it wraps around and creates "neon" colors + if img_cpu.dtype != np.uint8: + if img_cpu.max() <= 1.0: + img_cpu = (img_cpu * 255).clip(0, 255).astype(np.uint8) + else: + img_cpu = img_cpu.astype(np.uint8) + + # Color Space: Standardize to BGR for imwrite + if len(img_cpu.shape) != 3: + img_cpu = cv2.cvtColor(img_cpu, cv2.COLOR_GRAY2BGR) + + h_img, w_img = img_cpu.shape[:2] + scale_x = float(w_img) / self.frame_width + scale_y = float(h_img) / self.frame_height + if gt_boxes is not None: + # Factor for converting 8K (original) bb dimensions to display dimensions + # disp_w, disp_h = inf_data["mask"].shape[:2] if hasattr(inf_data["mask"], "shape") else inf_data["mask"].size() + # scale_display_ox = disp_w / self.frame_width + # scale_display_oy = disp_h / self.frame_height + + img_cpu = get_bb_overlay( + img_cpu, + gt_boxes, + (scale_x, scale_y), + (w_img, h_img), + color=(0, 255, 0), # green + ) + + # Draw 8K Boxes (Scaled down) + if rois is not None and len(rois) > 0: + boxes = rois.cpu().tolist() if torch.is_tensor(rois) else rois + for box in boxes: + x1, y1, x2, y2 = [ + # int(box[0] * scale_x), + # int(box[1] * scale_y), + # int(box[2] * scale_x), + # int(box[3] * scale_y), + max(0, int(box[0] * scale_x)), + max(0, int(box[1] * scale_y)), + min(w_img - 1, int(box[2] * scale_x)), + min(h_img - 1, int(box[3] * scale_y)), + ] + cv2.rectangle(img_cpu, (x1, y1), (x2, y2), (0, 0, 255), 2) + + # Save to disk + cv2.imwrite(str(save_path), img_cpu) + + def debug_save_img_roi(self, frame_source, bbs_full_res, frame_num, gt_boxes=None): + debug_dir = self.result_dir / "debug_stages" / self._testMethodName / "img_roi" + debug_dir.mkdir(parents=True, exist_ok=True) + + # out_filename = str(debug_dir / f"analysis_{frame_num:04d}.jpg") + save_path = debug_dir / f"frame_{frame_num:04d}_analysis.jpg" + + if frame_num > self.config.DEBUG_FRAME_LIMIT: + return + + # Download/Copy the frame + if torch.is_tensor(frame_source): + # .contiguous() is CRITICAL here to fix the "shredded" look + temp = frame_source.squeeze(0) if frame_source.ndim == 4 else frame_source + img_cpu = temp.permute(1, 2, 0).contiguous().cpu().numpy() + elif hasattr(frame_source, "download"): + img_cpu = frame_source.download() + else: + img_cpu = np.ascontiguousarray(frame_source) + + # Fix Shape: restore spatial grid if flattened + if img_cpu.ndim == 3 and img_cpu.shape[0] == 1: + img_cpu = img_cpu.reshape((self.resize_h, self.resize_w, 3)) + + # Fix Visibility: ONLY multiply if it's actually floating point + # If uint8 is multiplied by 255, it wraps around and creates "neon" colors + if img_cpu.dtype != np.uint8: + if img_cpu.max() <= 1.0: + img_cpu = (img_cpu * 255).clip(0, 255).astype(np.uint8) + else: + img_cpu = img_cpu.astype(np.uint8) + + # Color Space: Standardize to BGR for imwrite + if len(img_cpu.shape) != 3: + img_cpu = cv2.cvtColor(img_cpu, cv2.COLOR_GRAY2BGR) + + # Draw 8K Boxes (Scaled down) + h_img, w_img = img_cpu.shape[:2] + scale_x = w_img / self.frame_width + scale_y = h_img / self.frame_height + + if gt_boxes is not None: + # Factor for converting 8K (original) bb dimensions to display dimensions + # disp_w, disp_h = inf_data["mask"].shape[:2] if hasattr(inf_data["mask"], "shape") else inf_data["mask"].size() + # scale_display_ox = disp_w / self.frame_width + # scale_display_oy = disp_h / self.frame_height + + img_cpu = get_bb_overlay( + img_cpu, + gt_boxes, + (scale_x, scale_y), + (w_img, h_img), + color=(0, 255, 0), # green + ) + + if bbs_full_res is not None: + boxes = ( + bbs_full_res.cpu().tolist() + if torch.is_tensor(bbs_full_res) + else bbs_full_res + ) + # Annotate Box to image shape + for box in boxes: + x1, y1, x2, y2 = [ + max(0, int(box[0] * scale_x)), + max(0, int(box[1] * scale_y)), + min(w_img - 1, int(box[2] * scale_x)), + min(h_img - 1, int(box[3] * scale_y)), + ] + img_cpu = cv2.rectangle(img_cpu, (x1, y1), (x2, y2), (0, 0, 255), 2) + + cv2.imwrite(str(save_path), img_cpu) + + def debug_save_crops(self, cropped_batch, frame_num): + """Saves the first 5 crops of a batch to the results directory.""" + debug_dir = self.result_dir / "debug_stages" / self._testMethodName / "crops" + # debug_dir = self.result_dir / "debug_stages" / self._testMethodName + debug_dir.mkdir(parents=True, exist_ok=True) + + # Only save for the first self.config.DEBUG_FRAME_LIMIT frames to avoid disk bloat + if frame_num > self.config.DEBUG_FRAME_LIMIT: + return + + for i, crop in enumerate(cropped_batch[: self.config.DEBUG_FRAME_LIMIT]): + # Convert GPU Tensor [C, H, W] -> NumPy [H, W, C] + if torch.is_tensor(crop): + # Reverse normalization (* 255) and permute to BGR + # img = (crop.squeeze(0).permute(1, 2, 0) * 255).byte().cpu().numpy() + temp = crop.squeeze(0) if crop.ndim == 4 else crop + # Flip the color channels from RGB to BGR before any extraction utilities run + # Flips only the first axis (channels) from [0, 1, 2] to [2, 1, 0] + temp = torch.flip(temp, dims=[0]) + img = temp.permute(1, 2, 0).contiguous().cpu().numpy() + # img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR) + else: + img = crop + + if img.dtype != np.uint8: + if img.max() <= 1.0: + img = (img * 255).clip(0, 255).astype(np.uint8) + else: + img = img.astype(np.uint8) + + cv2.imwrite(str(debug_dir / f"frame_{frame_num}_crop_{i}.jpg"), img) + + def debug_save_img(self, frame_source, frame_num): + debug_dir = self.result_dir / "debug_stages" / self._testMethodName / "img" + debug_dir.mkdir(parents=True, exist_ok=True) + + if frame_num > self.config.DEBUG_FRAME_LIMIT: + return + + # Download/Copy the frame + if torch.is_tensor(frame_source): + # .contiguous() is CRITICAL here to fix the "shredded" look + temp = frame_source.squeeze(0) if frame_source.ndim == 4 else frame_source + img_cpu = temp.permute(1, 2, 0).contiguous().cpu().numpy() + elif hasattr(frame_source, "download"): + img_cpu = frame_source.download() + else: + img_cpu = np.ascontiguousarray(frame_source) + + # Fix Shape: restore spatial grid if flattened + if img_cpu.ndim == 3 and img_cpu.shape[0] == 1: + img_cpu = img_cpu.reshape((self.resize_h, self.resize_w, 3)) + + # Fix Visibility: ONLY multiply if it's actually floating point + # If uint8 is multiplied by 255, it wraps around and creates "neon" colors + if img_cpu.dtype != np.uint8: + if img_cpu.max() <= 1.0: + img_cpu = (img_cpu * 255).clip(0, 255).astype(np.uint8) + else: + img_cpu = img_cpu.astype(np.uint8) + + # Color Space: Standardize to BGR for imwrite + if len(img_cpu.shape) == 3: + pass + else: + img_cpu = cv2.cvtColor(img_cpu, cv2.COLOR_GRAY2BGR) + + cv2.imwrite(str(debug_dir / f"analysis_{frame_num:04d}.jpg"), img_cpu) diff --git a/fastapi/tests/metrics.py b/fastapi/tests/metrics.py new file mode 100644 index 0000000..5963115 --- /dev/null +++ b/fastapi/tests/metrics.py @@ -0,0 +1,258 @@ +import torch + + +class DeviceAgnosticOnTheFlyEvaluator: + def __init__(self, device="cpu"): + # device will be "cpu" or "cuda" / "gpu" depending on what pytest passes + self.device = "cuda" if "gpu" in str(device).lower() else "cpu" + + iou_range = [0.10, 0.95] + self.num_steps = int(round(((iou_range[1] - iou_range[0]) / 0.05) + 1, 0)) + self.iou_thresholds = torch.linspace( + iou_range[0], iou_range[1], self.num_steps, device=self.device + ) + + self.global_scores = [] + self.global_matches = [] + self.total_gt_count = 0 + self.total_gt_hit_lenient = 0 # GT boxes hit by ANY prediction with IoU >= 0.10 + + @torch.inference_mode() + def update_frame(self, pred_boxes, pred_scores, gt_boxes): + """ + Accepts bounding boxes and scores as arrays or tensors. + Automatically migrates inputs to the targeted CPU or GPU sandbox backend. + """ + # Ensure all incoming payloads are safely handled as PyTorch tensors on the target device + pred_boxes = torch.as_tensor( + pred_boxes, dtype=torch.float32, device=self.device + ) + pred_scores = torch.as_tensor( + pred_scores, dtype=torch.float32, device=self.device + ) + gt_boxes = torch.as_tensor(gt_boxes, dtype=torch.float32, device=self.device) + + # Filter invalid ground truth placeholders (-1) + if gt_boxes.numel() > 0: + valid_mask = ~torch.all(gt_boxes == -1, dim=1) + gt_boxes = gt_boxes[valid_mask] + + num_gt_in_frame = gt_boxes.shape[0] + self.total_gt_count += num_gt_in_frame + if pred_boxes.shape[0] == 0: + return + + # Sort frame predictions by confidence score descending + pred_scores, sort_idx = torch.sort(pred_scores, descending=True) + pred_boxes = pred_boxes[sort_idx] + + # Allocate matching registers for this frame + frame_matches = torch.zeros( + (pred_boxes.shape[0], self.num_steps), dtype=torch.int32, device=self.device + ) + + if num_gt_in_frame > 0: + # Vectorized Broadcast IoU Calculation + preds_exp = pred_boxes.unsqueeze(1) # (N, 1, 4) + gts_exp = gt_boxes.unsqueeze(0) # (1, M, 4) + + x_min = torch.maximum(preds_exp[..., 0], gts_exp[..., 0]) + y_min = torch.maximum(preds_exp[..., 1], gts_exp[..., 1]) + x_max = torch.minimum(preds_exp[..., 2], gts_exp[..., 2]) + y_max = torch.minimum(preds_exp[..., 3], gts_exp[..., 3]) + + inter_area = torch.clamp(x_max - x_min, min=0) * torch.clamp( + y_max - y_min, min=0 + ) + pred_areas = (preds_exp[..., 2] - preds_exp[..., 0]) * ( + preds_exp[..., 3] - preds_exp[..., 1] + ) + gt_areas = (gts_exp[..., 2] - gts_exp[..., 0]) * ( + gts_exp[..., 3] - gts_exp[..., 1] + ) + union_area = pred_areas + gt_areas - inter_area + + iou_matrix = torch.where(union_area > 0, inter_area / union_area, 0.0) + + if iou_matrix.numel() > 0: + # Get the highest IoU any prediction achieved for each GT box + max_ious_per_gt, _ = torch.max(iou_matrix, dim=0) + # If a GT box was overlapped by at least 10%, consider it "found" + self.total_gt_hit_lenient += torch.sum(max_ious_per_gt >= 0.10).item() + + # Match targets per threshold layer + for th_idx, th in enumerate(self.iou_thresholds): + matched_gts = torch.zeros( + num_gt_in_frame, dtype=torch.bool, device=self.device + ) + for p_idx in range(pred_boxes.shape[0]): + row_ious = iou_matrix[p_idx] + # Mask out already matched ground truths + row_ious = torch.where(~matched_gts, row_ious, -1.0) + + best_iou, best_gt_idx = torch.max(row_ious, dim=0) + + if best_iou >= th and best_gt_idx != -1: + if row_ious[best_gt_idx] >= th: # Extra validation gate + frame_matches[p_idx, th_idx] = 1 + matched_gts[best_gt_idx] = True + + # Track only tiny matrix shards instead of bulky bounding box contexts + # self.global_scores.append(pred_scores) + # self.global_matches.append(frame_matches) + + # Force detach data fields completely out of the PyTorch hardware execution graph + # and cast down to standard CPU lists before storing them over long durations + if hasattr(pred_scores, "detach"): + scores_list = pred_scores.detach().cpu().tolist() + else: + scores_list = list(pred_scores) + + if hasattr(frame_matches, "detach"): + matches_list = frame_matches.detach().cpu().tolist() + else: + matches_list = list(frame_matches) + + # EXTEND to keep the list flat and completely avoid ragged dimensions + self.global_scores.extend(scores_list) + self.global_matches.extend(matches_list) + + del pred_scores, pred_boxes, gt_boxes + + @torch.inference_mode() + def compute_final_metrics(self): + """Processes final precision/recall curves natively on the configured hardware device.""" + if len(self.global_scores) == 0: + return { + "mAP_10": 0.0, + "mAP_50": 0.0, + "mAP_75": 0.0, + "mAP_10_95": 0.0, + "Precision_10": 0.0, + "Recall_10": 0.0, + "F1_Score_10": 0.0, + "Precision_50": 0.0, + "Recall_50": 0.0, + "F1_Score_50": 0.0, + "Max_Recall_IoU_10": 0.0, + } + + # Flatten list of partial tensors into global timeline matrices + # scores = torch.cat(self.global_scores, dim=0) + # matches = torch.cat(self.global_matches, dim=0) + + # Flatten list of pre-detached primitive layouts into clean standalone timeline tensors + scores = torch.tensor( + self.global_scores, dtype=torch.float32, device=self.device + ).view(-1) + matches = torch.tensor( + self.global_matches, dtype=torch.int32, device=self.device + ).view(-1, self.num_steps) + + # Global Sort across the whole timeline by confidence scores + _, global_sort_idx = torch.sort(scores, descending=True) + matches = matches[global_sort_idx] + + aps = [] + + # Track dictionary mapping for multi-threshold statistical processing + # Key: Threshold Value (float) -> Values: (Precision, Recall) + target_metrics = { + 0.10: {"precision": 0.0, "recall": 0.0}, + 0.50: {"precision": 0.0, "recall": 0.0}, + } + + for th_idx in range(self.num_steps): + current_th = float(f"{self.iou_thresholds[th_idx].item():.2f}") + + tp_cum = torch.cumsum(matches[:, th_idx], dim=0) + fp_cum = torch.cumsum(1 - matches[:, th_idx], dim=0) + + precisions = tp_cum / (tp_cum + fp_cum) + if self.total_gt_count > 0: + recalls = tp_cum / self.total_gt_count + else: + recalls = torch.zeros_like(tp_cum) + + # Vectorized 101-point COCO AP Interpolation Layout + mpre = torch.cat( + [ + torch.tensor([0.0], device=self.device), + precisions, + torch.tensor([0.0], device=self.device), + ] + ) + mrec = torch.cat( + [ + torch.tensor([0.0], device=self.device), + recalls, + torch.tensor([1.0], device=self.device), + ] + ) + + # Enforce strict decreasing precision monotonicity + mpre = torch.flip( + torch.cummax(torch.flip(mpre, dims=[0]), dim=0).values, dims=[0] + ) + + recall_thresholds = torch.linspace(0.0, 1.0, 101, device=self.device) + inds = torch.searchsorted(mrec, recall_thresholds, side="left") + inds = torch.clamp(inds, max=mpre.shape[0] - 1) + + ap = torch.sum(mpre[inds]) / 101.0 + aps.append(ap.item()) + + # if th_idx == 0: + # final_precision_10 = ( + # precisions[-1].item() if precisions.numel() > 0 else 0.0 + # ) + # final_recall_10 = recalls[-1].item() if recalls.numel() > 0 else 0.0 + + # Dynamically extract and assign metrics if threshold matches target + if current_th in target_metrics: + target_metrics[current_th]["precision"] = ( + precisions[-1].item() if precisions.numel() > 0 else 0.0 + ) + target_metrics[current_th]["recall"] = ( + recalls[-1].item() if recalls.numel() > 0 else 0.0 + ) + + # f1_10 = ( + # (2 * final_precision_10 * final_recall_10) + # / (final_precision_10 + final_recall_10) + # if (final_precision_10 + final_recall_10) > 0 + # else 0.0 + # ) + + # Calculate F1 Score harmonic balances + p10, r10 = target_metrics[0.10]["precision"], target_metrics[0.10]["recall"] + f1_10 = (2 * p10 * r10) / (p10 + r10) if (p10 + r10) > 0 else 0.0 + + p50, r50 = target_metrics[0.50]["precision"], target_metrics[0.50]["recall"] + f1_50 = (2 * p50 * r50) / (p50 + r50) if (p50 + r50) > 0 else 0.0 + + max_recall_10 = ( + (self.total_gt_hit_lenient / self.total_gt_count) + if self.total_gt_count > 0 + else 0.0 + ) + + # Robust close-approximation lookups bypassing basic Python indexing limitations + map10_idx = torch.argmin(torch.abs(self.iou_thresholds - 0.10)).item() + map50_idx = torch.argmin(torch.abs(self.iou_thresholds - 0.50)).item() + map75_idx = torch.argmin(torch.abs(self.iou_thresholds - 0.75)).item() + + return { + "mAP_10": aps[map10_idx], + "mAP_50": aps[map50_idx], # mAP at 0.50 IoU + "mAP_75": aps[map75_idx], # mAP at 0.75 IoU + "mAP_10_95": sum(aps) + / float(self.num_steps), # Averaged mAP over all 18 threshold layers + "Precision_10": p10, + "Recall_10": r10, + "F1_Score_10": f1_10, + "Precision_50": p50, + "Recall_50": r50, + "F1_Score_50": f1_50, + "Max_Recall_IoU_10": max_recall_10, + } diff --git a/fastapi/tests/test_detections.py b/fastapi/tests/test_detections.py index eec1120..28d2a47 100644 --- a/fastapi/tests/test_detections.py +++ b/fastapi/tests/test_detections.py @@ -1,39 +1,90 @@ +# ============================================================================== +# SUPPRESS WARNINGS +# import warnings + +import pytest + +# warnings.filterwarnings( +# "ignore", category=FutureWarning, message=".*reduce_op` is deprecated.*" +# ) + +pytestmark = [ + pytest.mark.filterwarnings( + "ignore:.*anyio:_pytest.warning_types.PytestAssertRewriteWarning" + ), + pytest.mark.filterwarnings( + "ignore:Context managers for TensorRT types are deprecated:DeprecationWarning" + ), + pytest.mark.filterwarnings( + "ignore:Exception ignored in.*SharedMemory.__del__:UserWarning" + ), + # Global message fallback pattern captures local execution frames + pytest.mark.filterwarnings("ignore:.*reduce_op.*:FutureWarning"), +] + +# ============================================================================== +# LOGGING +import logging +import os +import sys + +logging.basicConfig( + level=logging.INFO, + # format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", + format="%(asctime)s [%(levelname)s] %(name)s (%(filename)s:%(lineno)d) - %(message)s", + handlers=[logging.StreamHandler(sys.stdout)], +) + +# Suppress low-delay reference block warnings from OpenCV/PyAV/FFmpeg +# os.environ["OPENCV_FFMPEG_LOGLEVEL"] = "-8" +# os.environ["OPENCV_LOG_LEVEL"] = "OFF" +logging.getLogger("libav").setLevel(logging.CRITICAL) +logging.getLogger("libav.hevc").setLevel(logging.CRITICAL) +logging.getLogger("matplotlib").setLevel(logging.WARNING) +logging.getLogger("ultralytics").setLevel(logging.WARNING) +# logger = trt.Logger(trt.Logger.WARNING) +# trt.init_libnvinfer_plugins(logger, "") +main_app_logger = logging.getLogger(__name__) + +# ============================================================================== +# IMPORTS + +# os.environ["OMP_NUM_THREADS"] = "2" +# os.environ["MKL_NUM_THREADS"] = "2" +# os.environ["PYTORCH_ALLOC_CONF"] = "expandable_segments:True" +# try: +# torch.set_num_interop_threads(2) # 1) +# torch.set_num_threads(4) # 2) +# except RuntimeError: +# # Safe graceful fallback if a process-level fork duplicated context maps +# pass import argparse import asyncio import csv +import ctypes import faulthandler import gc +import multiprocessing as mp +import sys import threading import time import traceback - -faulthandler.enable() -import inspect -import logging -import multiprocessing as mp -import os -import queue -import sys -import types -from concurrent.futures import ThreadPoolExecutor +import tracemalloc from pathlib import Path import cv2 -import matplotlib.pyplot as plt -import numpy as np -import pytest -import tensorrt as trt +import psutil import torch -# # Force all PyTorch extension handles to compile and load BEFORE threads spawn -# if torch.cuda.is_available(): -# _ = torch.zeros(1).cuda() -# import torch._ops -# import torch.utils +# import torch -# Explicitly invoke any plotting or module style lookups early - -sys.path.insert(1, str(Path(__file__).parent.parent)) +# Retrieve repo packages +REPO_DIR = str(Path(__file__).parent.parent) +sys.path.insert(1, REPO_DIR) +from base_test import ( + BaseTest, + fps_comparison_chart, +) from include.default_configs import ( CUSTOM_MODEL_FLAG_DEFAULT, DEBUG_DEFAULT, @@ -41,85 +92,363 @@ THRESHOLD_VALUE, ) from include.handlers import ( - AsyncVideoWriter, - CPUStreamHandler, - DeviceBaseHandler, - GPUStreamHandler, - get_bb_overlay, - get_metadata_overlay, - log_to_logger, + get_test_handler, ) from include.utils import ( PipelineConfig, + ResourceTrackerFilter, + install_and_load_pip_package, + str2bool, ) +# objgraph = install_and_load_pip_package("objgraph", attribute_name=None) +# torch.set_grad_enabled(False) + +# ============================================================================== +# MONKEY PATCH +# Cache the hardware availability state globally. +# This prevents internal framework loops from triggering driver/NVML checks per frame. +# _cuda_available = torch.cuda.is_available() + + +# def _patched_is_available(): +# return _cuda_available + + +# torch.cuda.is_available = _patched_is_available + +# ============================================================================== +# SETUP +# Hooks directly into the OS kernel signals to force Python to print a full +# stack traceback right before it dies, allowing you to see which line of +# Python code caused the hard crash +faulthandler.enable() + try: # Retain standard spawn mode to prevent CUDA context driver deadlocks torch.multiprocessing.set_start_method("spawn", force=True) except RuntimeError: pass -logging.getLogger("matplotlib").setLevel(logging.WARNING) -logger = trt.Logger(trt.Logger.WARNING) -trt.init_libnvinfer_plugins(logger, "") - -DEBUG_FLAG_DEFAULT = True if DEBUG_DEFAULT == "1" else False -os.environ["OMP_NUM_THREADS"] = str(mp.cpu_count()) # "1" -os.environ["PYTORCH_ALLOC_CONF"] = "expandable_segments:True" force_export = False +# target_width, target_height = 7680, 4320 +STATE_CAPTURE = False + +# Force Python's multiprocessing layer to quiet tracking cleanup race conditions +os.environ["PYTHONWARNINGS"] = "ignore" +sys.warnoptions.append("ignore") + + +# ========================================================================= +# ISOLATED BACKGROUND WORKER +# ========================================================================= + + +def isolated_detection_worker(init_args, test_args, res_queue): + device = test_args["device"] + detection_type = test_args["detection_type"] + sf_enabled = test_args["sf_enabled"] + gt_enabled = test_args["gt_enabled"] + + if device == "gpu" and torch.cuda.is_available(): + torch.cuda.synchronize() + torch.cuda.ipc_collect() + torch.cuda.empty_cache() + gc.collect() + + # Establish an accurate post-initialization hardware baseline + if str2bool(os.getenv("ENABLE_PROFILING", "False")): + tracemalloc.start() -# Force OpenCV to run sequentially to prevent context-switching overhead -cv2.setNumThreads(0) # Forces OpenCV loops to run strictly sequentially + start_allocated, start_reserved = 0, 0 + if device == "gpu" and torch.cuda.is_available(): + torch.cuda.memory._record_memory_history( + enabled=True, + trace_alloc_max_entries=250000, + trace_alloc_record_context=True, + ) + + # This captures your baseline AFTER initialize_variables() is done + start_allocated = torch.cuda.memory_allocated(0) + start_reserved = torch.cuda.memory_reserved(0) + try: + cv2.cuda.setBufferPoolUsage(False) + except AttributeError: + pass + else: + gc.collect() + process = psutil.Process(os.getpid()) + start_allocated = ( + process.memory_info().rss + ) # Reuse start_allocated container for host memory baseline + start_reserved = 0 -def fps_comparison_chart(chart_path, results, fps_key="Pipeline FPS (Video frames)"): try: - names = [r["Test Name"] for r in results] - fps_values = [float(r[fps_key]) for r in results] - - plt.figure(figsize=(10, 6)) - plt.grid(axis="y", linestyle="--", alpha=0.7, zorder=0) - - colors = ["#2ca02c" if "gpu" in n.lower() else "#1f77b4" for n in names] - bars = plt.bar(names, fps_values, color=colors, zorder=3) - plt.ylabel("Frames Per Second (FPS)") - plt.title(f"Performance Comparison: {chart_path.stem}") - plt.xticks(rotation=45) - - for bar in bars: - yval = bar.get_height() - plt.text( - bar.get_x() + bar.get_width() / 2, - yval + 1, - f"{yval:.1f}", - ha="center", - va="bottom", + instance, _ = get_test_handler(TestDetections(), device) + + instance.source = init_args["source"] + instance.name = init_args["name"] + instance.result_dir = Path(init_args["result_dir"]) + instance.active_streams = init_args["active_streams"] + instance.__class__.benchmarks = init_args["benchmarks"] # Sandbox the metrics + + vid_dir = instance.result_dir / device + vid_dir.mkdir(parents=True, exist_ok=True) + os.environ["TEST_SUITE_RENDER_DIR"] = str(vid_dir) + + if instance.source.startswith("rtsp"): + short_name = "rtsp" + else: + short_name = Path(instance.source).stem + + # config definition + config = PipelineConfig( + SHARED_OUTPUT=str(instance.result_dir), # defined in context + CUSTOM_MODEL_FLAG=os.getenv("CUSTOM_MODEL_FLAG", CUSTOM_MODEL_FLAG_DEFAULT), + DEVICE=device.upper(), + OMIT_DETECTIONS_FLAG=True, + TEST_MODE=True, + DEBUG=os.getenv("DEBUG", DEBUG_DEFAULT), + DEBUG_FRAME_LIMIT=int(os.getenv("DEBUG_FRAME_LIMIT", 100)), + ENABLE_QUERYING=False, + MODEL_NAME=os.getenv("MODEL_NAME", MODEL_NAME_DEFAULT), + SMART_FILTERING_ENABLED=sf_enabled, + THRESHOLD_VALUE=int(os.getenv("THRESHOLD_VALUE", THRESHOLD_VALUE)), + DETECTION_TYPE=detection_type, + ) + + # INITIALIZE CLASS (mimic DeviceBaseHandler.__init__) ------------------------------ + instance.is_rtsp = str(instance.source).startswith("rtsp:/") + instance.active = True + instance.config = config + + # kwarg definition + instance._testMethodName = ( + f"sf_{detection_type}_{device}" + if sf_enabled + else f"yolo_{detection_type}_{device}" + ) + instance.video_output_name = f"{instance._testMethodName}_{short_name}.mp4" + + instance.loop = asyncio.get_event_loop() + instance.frame_ready_event = asyncio.Event() + instance._is_stopped = False + instance._stop_lock = threading.Lock() # Local lock for this instance + instance.main_startup_event = mp.Event() + + instance.device = instance.config.DEVICE + instance.device_input = instance.config.device_input + instance.disp_w, instance.disp_h = instance.config.DISPLAY_FRAME_SIZE + instance.resize_h, instance.resize_w = [ + instance.config.MODEL_H, + instance.config.MODEL_W, + ] + + instance.setup_reader( + instance.config.TARGET_FPS, + instance.config.CLIP_DURATION, + startup_event=instance.main_startup_event, + ) + instance.initialize_variables() + instance.setup_threads() + instance.last_heartbeat = time.perf_counter() + + if STATE_CAPTURE: + main_app_logger.info( + "[DIAGNOSTIC] Registering system state baseline layout..." ) + instance.baseline_before_start = instance.capture_state_snapshot() - if fps_values: - plt.ylim(0, max(fps_values) * 1.2) + def orig_fn(profiler): + return instance.run_realtime_inference( + sf_enabled=instance.config.sf_enabled, + profiler=profiler, + gt_enabled=gt_enabled, + ) - plt.tight_layout() - plt.savefig(str(chart_path)) - print(f" Comparison chart saved to: {chart_path}") - except Exception: - print("Skipping chart generation: error occurred.") + def profiler_fn(): + profiler = None + try: + if str2bool(os.getenv("ENABLE_PROFILING", "False")): + Profiler = install_and_load_pip_package( + "pyinstrument", attribute_name="Profiler" + ) + profiler = Profiler(interval=0.005) # 5ms sampling interval -class DummyProcess: - def start(self): - pass + # Telling the statistical sampler to skip recording exception blocks completely + # stops stack_sampler.py from ballooning RAM over long production runs. + if hasattr(profiler, "_sampler") and profiler._sampler: + profiler._sampler.trace_exceptions = False - def join(self, timeout=None): - pass + profiler.start() - def is_alive(self): - return False + orig_fn(profiler) - def close(self): - pass + if str2bool(os.getenv("ENABLE_PROFILING", "False")): + # 2. Redirect standard error to the filter trap right before report compilation + original_stderr = sys.stderr + sys.stderr = ResourceTrackerFilter(original_stderr) + try: + # Force standard stdout to flush out any lingering teardown messages + # BEFORE pyinstrument dumps its massive ASCII tree block. + sys.stdout.flush() + + # main_app_logger.info(profiler.output_text(color=True)) + # profiler.main_app_logger.info(color=True) + # prof_output = profiler.output_text(color=True) + # main_app_logger.info( + # f"\n=== LATENCY BREAKDOWN FOR {self.name} ({device}) ===\n{prof_output}\n", + # + # ) + + # Save a clean, interactive tree map for visual analysis + output_html_path = instance.output_path.replace( + ".mp4", "_profile.html" + ) + # output_html_path = f"/tmp/profile_{video_name}_{device}.html" + profiler.write_html(output_html_path) + main_app_logger.info( + f"[PROFILER] Performance tree map exported to {output_html_path}", + ) + finally: + sys.stderr = original_stderr + if "profiler" in locals(): + try: + # Force the Python interpreter to detach pyinstrument's sampling hooks + sys.setprofile(None) + + # Completely decouple internal statistical sessions to drop C-heap frames + if hasattr(profiler, "_last_session"): + profiler._last_session = None + if hasattr(profiler, "last_session"): + profiler.last_session = None + + # Forcibly clear out internal memoryview strings caching tree metrics + if ( + hasattr(profiler, "session") + and profiler.session is not None + ): + if hasattr(profiler.session, "frame_groups"): + profiler.session.frame_groups = None + if hasattr(profiler.session, "samples"): + profiler.session.samples = [] + + # Purge compiled tree metrics structures + profiler.session = None + del profiler + except Exception: + pass + + # Trigger an immediate native Linux heap compression pass + # This grabs the newly abandoned pyinstrument C-heap blocks and + # flushes them to the OS before the fixture assessment snapshot fires! + gc.collect() + try: + libc = ctypes.CDLL("libc.so.6") + libc.malloc_trim(0) + except Exception: + pass + + except Exception: + traceback.print_exc() + + if str2bool(os.getenv("ENABLE_PROFILING", "False")) and hasattr( + instance, "process_thread" + ): + # Re-initialize the thread context using our safe profile wrapper proxy + instance.process_thread = threading.Thread(target=profiler_fn, daemon=True) + + instance.VIDEO_GT_DETAILS = None + instance.duration_target = 30 + + instance.start() + + while instance.active or not instance._is_stopped: + time.sleep(0.25) + if getattr(instance, "status", None) == "DONE": + break + + if ( + hasattr(instance, "process_thread") + and instance.process_thread is not None + ): + if not instance.process_thread.is_alive(): + main_app_logger.info( + "[TEST HARNESS] Background worker exited. Breaking loop.", + ) + break + + instance.stop_threads(["process_thread"]) + + # Force early hardware driver sweep before unbinding threads + if instance.device_input == "cuda" and torch.cuda.is_available(): + torch.cuda.synchronize() + torch.cuda.empty_cache() + torch.cuda.ipc_collect() + + gc.collect() + + try: + if STATE_CAPTURE: + # --- CAPTURE STATE POINT B (Right before cleanup) --- + main_app_logger.info( + "[DIAGNOSTIC] Gathering active execution workspace layouts..." + ) + state_after_stop = instance.capture_state_snapshot() + + # 3. Print the granular delta analysis out to your terminal screen + new_keys_generated, mutated_keys, static_keys = ( + instance.print_lifecycle_delta( + instance.baseline_before_start, + state_after_stop, + return_keys=True, + ) + ) + # self.config.DEBUG_FLAG and + if len(new_keys_generated) > 0 or len(mutated_keys) > 0: + # Inform the blueprint engine to eliminate every difference found between Point A and B + instance.stop_blueprint_executor(new_keys_generated, mutated_keys) + except Exception: + traceback.print_exc() + + assert instance.status == "DONE" + + # TEARDOWN + instance.execute_teardown() + + if str2bool(os.getenv("ENABLE_PROFILING", "False")): + gc.collect() + if ( + device == "gpu" and torch.cuda.is_available() + ): # self.device_input == "cuda" and torch.cuda.is_available(): + torch.cuda.synchronize() + torch.cuda.empty_cache() + instance.assess_memory( + device, instance.name, start_allocated, start_reserved + ) + + if len(instance.__class__.benchmarks) > 0: + final_metrics = instance.__class__.benchmarks[-1] + res_queue.put({"status": "success", "metrics": final_metrics}) + else: + res_queue.put({"status": "error", "error": "No benchmarks generated."}) + + except Exception as e: + res_queue.put( + {"status": "error", "error": str(e), "traceback": traceback.format_exc()} + ) + res_queue.put( + {"status": "error", "error": str(e), "traceback": traceback.format_exc()} + ) + + +# ========================================================================= +# PYTEST TEST HARNESS +# ========================================================================= @pytest.fixture(scope="class") def setup_context(request): """Replaces setUpClass: Runs once per test class.""" @@ -128,11 +457,6 @@ def setup_context(request): main_path = test_dir.parent video_dir = main_path / "inputs" - request.cls._shared_model = None - request.cls._shared_model_path = None - request.cls._shared_model_device = None - request.cls._shared_model_sf_enabled = None - # model_name = os.getenv("MODEL_NAME", MODEL_NAME_DEFAULT) # Handler.__init__ (main items) request.cls.source = os.getenv("VIDEO_FILENAME", "anduril_swarm_8K.mp4") @@ -166,7 +490,7 @@ def setup_context(request): ) request.cls.csv_path = request.cls.result_dir / request.cls.csv_filename - request.cls.active = True + # request.cls.active = True request.cls.active_streams = {} # RUN ALL PARAMETERIZED TESTS ---------------------------------------- @@ -195,1750 +519,151 @@ def setup_context(request): else: row["Pipeline Speedup vs CPU"] = "Baseline (CPU)" - keys = results[0].keys() + if results: + # # Define video targets explicitly during collection + # video_names = [f"video{i:02d}" for i in range(1, 21)] + # ALL_VIDEO_GT_DETAILS = download_eval_data(video_names) - with open(str(request.cls.csv_path), "w", newline="") as f: - dict_writer = csv.DictWriter(f, fieldnames=keys) - dict_writer.writeheader() - dict_writer.writerows(results) + keys = results[0].keys() - print(f"\n[FINAL] Benchmarks saved to {request.cls.csv_path}") + with open(str(request.cls.csv_path), "w", newline="") as f: + dict_writer = csv.DictWriter(f, fieldnames=keys) + dict_writer.writeheader() + dict_writer.writerows(results) + main_app_logger.info(f"[FINAL] Benchmarks saved to {request.cls.csv_path}") - for r in results: - print( - f" > {r['Test Name']}: {r['Pipeline FPS (Video frames)']} FPS | {r['Pipeline FPS (Target frames)']} FPS | {r['Avg Frame Reading (ms)']} ms | Speedup: {r.get('Pipeline Speedup vs CPU', 'N/A')}" + main_app_logger.info("=" * 80) + main_app_logger.info( + f"{'Test Name':<25} | {'Pipeline FPS (Target)':<21} | {'Avg Frame Reading (ms)':<22} | {'Pipeline Speedup vs CPU':<15}", ) + main_app_logger.info("-" * 80) - chart_path = ( - request.cls.result_dir - / f"{request.cls.csv_filename.replace('.csv', '')}_pipelineFPS.png" - ) - fps_comparison_chart(chart_path, results, fps_key="Pipeline FPS (Video frames)") - - chart_path = ( - request.cls.result_dir - / f"{request.cls.csv_filename.replace('.csv', '')}_pipelineFPS_target.png" - ) - fps_comparison_chart( - chart_path, results, fps_key="Pipeline FPS (Target frames)" - ) - - chart_path = ( - request.cls.result_dir - / f"{request.cls.csv_filename.replace('.csv', '')}_sfdetectFPS_target.png" - ) - fps_comparison_chart(chart_path, results, fps_key="SF/Detection FPS") - - chart_path = ( - request.cls.result_dir - / f"{request.cls.csv_filename.replace('.csv', '')}_displayFPS_target.png" - ) - fps_comparison_chart(chart_path, results, fps_key="Display FPS") - - -@pytest.fixture(autouse=True) -def each_test_setup(request): - test_class_self = request.instance - if torch.cuda.is_available(): - torch.cuda.synchronize() - - device = request.node.callspec.params.get("device") - detection_type = request.node.callspec.params.get("detection_type") - sf_enabled = request.node.callspec.params.get("sf_enabled") - - if detection_type == "motion" and not sf_enabled: - pytest.skip( - "Pure YOLO mode is structurally invalid for detection_type 'motion'.\n" - ) - - test_class_self._testMethodName = ( - f"sf_{detection_type}_{device}" - if sf_enabled - else f"yolo_{detection_type}_{device}" - ) - - # video_output_name = f"{test_class_self._testMethodName}_detections_output.mp4" - vid_dir = test_class_self.result_dir / device - vid_dir.mkdir(parents=True, exist_ok=True) - - # Handler.__init__ (remaining items) - # 1. Re-initialize a fresh configuration object - test_class_self.config = PipelineConfig( - SHARED_OUTPUT=str(test_class_self.result_dir), - CUSTOM_MODEL_FLAG=os.getenv("CUSTOM_MODEL_FLAG", CUSTOM_MODEL_FLAG_DEFAULT), - DEVICE=device.upper(), - OMIT_DETECTIONS_FLAG=True, - TEST_MODE=True, - DEBUG=os.getenv("DEBUG", DEBUG_DEFAULT), - DEBUG_FRAME_LIMIT=int(os.getenv("DEBUG_FRAME_LIMIT", 100)), - ENABLE_QUERYING=False, - MODEL_NAME=os.getenv("MODEL_NAME", MODEL_NAME_DEFAULT), - SMART_FILTERING_ENABLED=sf_enabled, - THRESHOLD_VALUE=int(os.getenv("THRESHOLD_VALUE", THRESHOLD_VALUE)), - DETECTION_TYPE=detection_type, - ) - - # test_video_output_path = os.path.join(str(vid_dir), video_output_name) - os.environ["TEST_SUITE_RENDER_DIR"] = str(vid_dir) - # test_class_self.config.SHARED_OUTPUT = str(test_class_self.result_dir) - # test_class_self.disp_w, test_class_self.disp_h = (640, 360) - test_class_self.disp_w, test_class_self.disp_h = ( - test_class_self.config.DISPLAY_FRAME_SIZE - ) - - if device == "gpu": - # Allocate a permanent float32/float16 channel layout space directly on VRAM - test_class_self.static_gpu_360p = torch.empty( - (1, 3, test_class_self.disp_h, test_class_self.disp_w), - dtype=torch.float32, - device="cuda", - ) - test_class_self.static_gpu_byte_bchw = torch.empty( - (1, 3, test_class_self.disp_h, test_class_self.disp_w), - dtype=torch.uint8, - device="cuda", - ).contiguous() - - # Create two isolated tracking canvases to handle the ping-pong data stream - test_class_self.static_host_canvases = [ - np.zeros( - (test_class_self.disp_h, test_class_self.disp_w, 3), dtype=np.uint8 - ), - np.zeros( - (test_class_self.disp_h, test_class_self.disp_w, 3), dtype=np.uint8 - ), - ] - test_class_self.canvas_selector = 0 - - # Register BOTH buffers as page-locked memory - cv2.cuda.registerPageLocked(test_class_self.static_host_canvases[0]) - cv2.cuda.registerPageLocked(test_class_self.static_host_canvases[1]) - - # Reset core state machine properties before invoking any backend handlers - test_class_self.active = True - - test_class_self.loop = asyncio.get_event_loop() - test_class_self.frame_ready_event = asyncio.Event() - test_class_self._is_stopped = False - test_class_self._stop_lock = threading.Lock() # Local lock for this instance - test_class_self.mp_frame_ready_event = mp.Event() - # test_class_self.stat_start_time = time.perf_counter() # timing to display detection - - test_class_self.device = test_class_self.config.DEVICE - test_class_self.device_input = test_class_self.config.device_input - test_class_self.resize_h, test_class_self.resize_w = [ - test_class_self.config.MODEL_H, - test_class_self.config.MODEL_W, - ] - - # Resolve concrete handler class type - HandlerClass = GPUStreamHandler if device == "gpu" else CPUStreamHandler - HandlerClass.pipeline_fn = test_class_self.__class__.pipeline_fn - - # Dynamically re-bind backend methods to this execution instance - handler_classes = [HandlerClass, DeviceBaseHandler] - all_method_names = set() - - for cls in handler_classes: - for name, attr in inspect.getmembers(cls, predicate=inspect.isfunction): - all_method_names.add(name) - - for method_name in all_method_names: - source_obj = ( - HandlerClass if hasattr(HandlerClass, method_name) else DeviceBaseHandler - ) - if hasattr(source_obj, method_name): - raw_func = getattr(source_obj, method_name) - if ( - not hasattr(test_class_self.__class__, method_name) - or method_name == "pipeline_fn" - ): - setattr( - test_class_self, - method_name, - types.MethodType(raw_func, test_class_self), - ) - - # 3. FORCE NATIVE PIPELINE PROVISIONING - test_class_self.setup_reader( - test_class_self.config.TARGET_FPS, test_class_self.config.CLIP_DURATION - ) - test_class_self.initialize_variables() - test_class_self.setup_model(None) - test_class_self.prepare_pipeline() - - test_class_self.run_realtime_inference = types.MethodType( - test_class_self.__class__.run_realtime_inference, test_class_self - ) - - test_class_self.setup_threads() - - yield - - # Teardown logic - test_class_self.active = False - - # Fallback to production reader safety closure - if hasattr(test_class_self, "reader") and test_class_self.reader is not None: - try: - if hasattr(test_class_self.reader, "print_breakdown"): - test_class_self.reader.print_breakdown() - test_class_self.reader.stop() - except Exception: - pass - - if ( - hasattr(test_class_self, "stop_writer") - and test_class_self.stop_writer is not None - ): - try: - test_class_self.stop_writer.set() - except Exception: - pass - - # --- CRITICAL RE-ORDERED FLUSH GATE --- - # 1. First, block and wait for the video processing producer thread to completely finish - # reading all remaining frames from the input video file. - producer_thread_handle = getattr(test_class_self, "process_thread", None) - if producer_thread_handle is not None and producer_thread_handle.is_alive(): - producer_thread_handle.join(timeout=0.5) # 10.0) - - # 2. Block and wait for background asynchronous AI executor workers to finish inference tasks. - if hasattr(test_class_self, "executor") and test_class_self.executor: - test_class_self.executor.shutdown(wait=True) - - # 3. Allow the multiprocessing render queue to naturally empty its frames into the encoder pipe. - if ( - hasattr(test_class_self, "render_queue") - and test_class_self.render_queue is not None - ): - try: - # Loop safely until the render loop handles the last remaining frames - # while not test_class_self.render_queue.empty(): - # time.sleep(0.05) - - # Send a poison pill token ONLY after all threads have fully stopped putting data into it - # test_class_self.render_queue.put(None, timeout=1.0) - if ( - hasattr(test_class_self, "render_queue") - and test_class_self.render_queue is not None - ): - try: - # Forcefully clear the queue thread tracking matrices - test_class_self.render_queue.close() - test_class_self.render_queue.cancel_join_thread() - except Exception: - pass - except Exception: - pass - - # 4. Gracefully join the background FFmpeg process, avoiding premature kills - render_proc_handle = getattr(test_class_self, "render_proc", None) - if render_proc_handle is not None: - try: - if render_proc_handle.is_alive(): - # Grant up to 10 seconds for disk I/O synchronization - render_proc_handle.join(timeout=0.5) # 10.0) - - if render_proc_handle.is_alive(): - print( - "[WARN] Render worker hung during final flush. Forcing termination." + for r in results: + main_app_logger.info( + f"{r['Test Name']:<25} | {r['Pipeline FPS (Target frames)']:<21} | {r['Avg Frame Reading (ms)']:<22} | {r.get('Pipeline Speedup vs CPU', 'N/A'):<10}", ) - render_proc_handle.terminate() - render_proc_handle.join() - - render_proc_handle.close() - except Exception: - pass - setattr(test_class_self, "render_proc", None) - - # 4. Deep System Unlinking of Shared Memory Layers (Parent/Child safe) - # This loop uses direct reference mapping rather than guessing PIDs - for shm_pool_attr in ["ai_shms", "shms"]: - if hasattr(test_class_self, shm_pool_attr): - shm_pool = getattr(test_class_self, shm_pool_attr) - if shm_pool: - for shm_segment in list(shm_pool): - try: - shm_segment.close() - shm_segment.unlink() - except Exception: - pass - shm_pool.clear() - - # 5. Clean up the Sync Base Manager Process - if hasattr(test_class_self, "manager") and test_class_self.manager is not None: - try: - test_class_self.manager.shutdown() - except Exception: - pass - test_class_self.manager = None - - # CRITICAL FIX: Block and wait for the background producer thread to die - # BEFORE we delete the reader attribute from the namespace map. - producer_thread_handle = getattr(test_class_self, "process_thread", None) - if producer_thread_handle is not None and producer_thread_handle.is_alive(): - producer_thread_handle.join(timeout=5.0) - - # if hasattr(test_class_self, "ingest_ring") and test_class_self.ingest_ring: - # for mat in test_class_self.ingest_ring: - # try: - # cv2.cuda.unregisterPageLocked(mat) - # except Exception: - # pass - # test_class_self.ingest_ring.clear() - - # if hasattr(test_class_self, "pinned_matrices") and test_class_self.pinned_matrices: - # for active_mat in test_class_self.pinned_matrices: - # try: - # cv2.cuda.unregisterPageLocked(active_mat) - # except Exception: - # pass - # test_class_self.pinned_matrices.clear() - # if hasattr(test_class_self, "pinned_tensors"): - # test_class_self.pinned_tensors.clear() - # if hasattr(test_class_self, "ai_pinned_tensors"): - # test_class_self.ai_pinned_tensors.clear() - - try: - cv2.cuda.unregisterPageLocked(test_class_self.pinned_matrices) - except Exception: - pass - - # ADD THIS MECHANISM: - if hasattr(test_class_self, "static_host_canvas"): - try: - cv2.cuda.unregisterPageLocked(test_class_self.static_host_canvas) - except Exception: - pass - - if ( - not test_class_self.active - ): # Only execute this block during complete class teardown - if hasattr(test_class_self, "ingest_ring") and test_class_self.ingest_ring: - for mat in test_class_self.ingest_ring: - try: - cv2.cuda.unregisterPageLocked(mat) - except Exception: - pass - test_class_self.ingest_ring.clear() - - if ( - hasattr(test_class_self, "pinned_matrices") - and test_class_self.pinned_matrices - ): - for active_mat in test_class_self.pinned_matrices: - try: - cv2.cuda.unregisterPageLocked(active_mat) - except Exception: - pass - test_class_self.pinned_matrices.clear() - - # Now it is structurally safe to purge attributes without causing cross-thread collisions - keys_to_purge = [ - "reader", - "process_thread", - "inference_stream", - "bgs_stream", - "model", - "raw_input", - "ai_gpu_staging", - "ai_pinned_tensors", - "executor", - # "io_executor", - ] - for key in keys_to_purge: - if hasattr(test_class_self, key): - delattr(test_class_self, key) - - if ( - hasattr(test_class_self, "gpu_event_buffer") - and test_class_self.gpu_event_buffer - ): - test_class_self.gpu_event_buffer.clear() - if hasattr(test_class_self, "component_stats") and test_class_self.component_stats: - test_class_self.component_stats.clear() - - with torch.inference_mode(): - if torch.cuda.is_available(): - torch.cuda.synchronize() - if device == "gpu": - torch.cuda.memory._record_memory_history(enabled=False) - torch.cuda.empty_cache() - torch.cuda.ipc_collect() - - gc.collect() - time.sleep(0.2) - - -@pytest.mark.usefixtures("setup_context") -class TestSmartFilteringDetections: - # SETUP -------------------------------------------- - - @pytest.mark.parametrize("device", ["cpu", "gpu"]) - @pytest.mark.parametrize("sf_enabled", [True, False]) - @pytest.mark.parametrize("detection_type", ["motion", "object"]) - def test_detections(self, device, sf_enabled, detection_type): - """Unified test runner for all configurations.""" - # if detection_type == "motion" and not sf_enabled: - # pytest.skip( - # "Pure YOLO mode is structurally invalid for detection_type 'motion'.\n" - # ) - - self.duration_target = 30 - - # Trigger your clean overridden thread boot - self.start() - - print( - f"\n[TEST HARNESS] Execution Started. Monitoring variables natively for {self.duration_target}s...", - flush=True, - ) - # Explicit timer tracking allows background multiprocessing queues to stream uninhibited - # test_start_time = time.perf_counter() - - while self.active or not self._is_stopped: - # Check if our active benchmark validation timeline target has been fulfilled - # if (time.perf_counter() - test_start_time) >= float(self.duration_target) + 15.0: - # print("\n[TEST HARNESS] Targeted test runtime duration reached. Initiating clean multi-process flush...", flush=True) - # break - time.sleep(0.1) # Stay clear of the hot pipeline lane - - assert self.status == "DONE" - - def setup_threads(self): - """Overrides handlers.py to bind threads dynamically to the test instance.""" - self.setup_shared_memory() # Natively sets up Manager dictionary and buffers - - # Executor for Async YOLO tasks and FFmpeg re-encoding - self.executor = ThreadPoolExecutor(max_workers=self.config.MAX_WORKERS) - # self.clip_executor = ThreadPoolExecutor(max_workers=self.config.MAX_WORKERS) - - print( - f"sf_enabled: {self.config.sf_enabled}\tTEST_MODE: {self.config.TEST_MODE}", - flush=True, - ) - - # Open up looking-ahead buffer horizons to eliminate 8K queue backpressure stalls - self.signal_queue = mp.Queue(maxsize=128) # 10) - self.render_queue = mp.Queue(maxsize=256) # 64) - - test_dir = os.getenv( - "TEST_SUITE_RENDER_DIR", str(Path(self.config.SHARED_OUTPUT)) - ) - os.makedirs(test_dir, exist_ok=True) - - if self.source.startswith("rtsp"): - short_name = "rtsp" - else: - short_name = Path(self.source).stem - video_output_name = f"{self._testMethodName}_{short_name}.mp4" - out_path = os.path.join(test_dir, video_output_name) - self.output_path = ( - out_path # f"{self.config.SHARED_OUTPUT}/{short_name}_{self.device}.mp4" - ) - - # log_to_logger( - # f"[TEST MODE] Detection results saved to: {out_path}", level="info" - # ) - - # ===================================================================== - # DYNAMIC THREAD TARGET REDIRECTION - # ===================================================================== - # Lambda forces the background processing thread to evaluate your custom staging loop natively - self.process_thread = threading.Thread( - target=lambda: self.run_realtime_inference( - sf_enabled=self.config.sf_enabled - ), - daemon=True, - ) - # self.render_proc = mp.Process( # threading.Thread( - # target=rendering_worker, - # args=( - # self.render_queue, - # (self.disp_w, self.disp_h), - # self.output_path, - # self.target_fps, - # ), - # daemon=True, - # ) - # self.render_proc = threading.Thread(target=lambda: None, daemon=True) - # self.display_proc = threading.Thread(target=lambda: None, daemon=True) - self.render_proc = DummyProcess() - self.display_proc = DummyProcess() - - self.async_writer = AsyncVideoWriter( - self.output_path, - cv2.VideoWriter_fourcc(*"avc1"), - float(self.target_fps), - (self.disp_w, self.disp_h), - ) - # self.async_writer = None - log_to_logger( - f"[TEST MODE] Detection results saved to: {self.output_path}", level="info" - ) - - def start(self): - """ - Starts the decoupled ingestion and inference threads in the correct order. - """ - # PRE-SYNC: Ensure GPU is idle before timing starts - if self.device_input == "cuda": - if torch.cuda.is_available(): - torch.cuda.synchronize() - - # Start the hardware-decoupled reader first - self.reader.start() - - if self.config.ENABLE_QUERYING: - self._initialize_writer() - - # Small delay to allow the reader's deque to populate - time.sleep(0.1) + main_app_logger.info("=" * 125) - # Start the producer and consumer threads - if hasattr(self, "process_thread") and not self.process_thread.is_alive(): - self.process_thread.start() - - if not self.config.DISABLE_DETECTION: - self.render_proc.start() - - self.display_proc.start() - - if ( - self.config.ENABLE_QUERYING - and not self.config.TEST_MODE - and not self.metadata_thread.is_alive() - ): - self.metadata_thread.start() - - if self.config.ENABLE_QUERYING and not self.writer_thread.is_alive(): - self.writer_thread.start() - - return self - - def stop(self): - """Overrides handlers.py to flush thread objects safely without deadlocking.""" - with self._stop_lock: - if self._is_stopped: - return - - print( - f"\n[TEST HARNESS] Initiating rapid thread flush for {self.name}", - flush=True, + chart_path = ( + request.cls.result_dir + / f"{request.cls.csv_filename.replace('.csv', '')}_pipelineFPS.png" ) - self.active = False - - # 1. Rapidly clear the async video writer thread queue first - # if hasattr(self, "async_writer") and self.async_writer is not None: - # try: - # self.async_writer.release() - # except Exception: - # pass - - # ===================================================================== - # DECUPLED MULTI-PROCESS TEARDOWN LIFECYCLE SEQUENCE - # ===================================================================== - # 1. FIRST: Drain and synchronize your thread pool tasks so EVERY frame drops into the IPC queue - if hasattr(self, "display_pool") and self.display_pool is not None: - try: - if hasattr(self.display_pool, "_work_queue"): - backlog = self.display_pool._work_queue.qsize() - if backlog > 0: - print( - f"\n\033[94m[STAGE 1/4] Synchronizing display pool threads. Draining {backlog} background tasks...\033[0m", - flush=True, - ) - backlog_s = time.perf_counter() - while ( - self.display_pool._work_queue.qsize() > 0 - or len(self.reorder_staging_buffer) > 0 - ): - # Yield a brief slice to let worker threads complete downscaling - time.sleep(0.01) - backlog_e = time.perf_counter() - backlog_s - print(f"\t\033[94mTook {backlog_e} secs\033[0m", flush=True) - print( - "\033[92m[SUCCESS] All background image transformations completed cleanly.\033[0m", - flush=True, - ) - self.display_pool.shutdown(wait=True) - except Exception as e: - print( - f"[TEARDOWN ERROR] Thread pool synchronization failed: {e}", - flush=True, - ) - setattr(self, "display_pool", None) - - # 1. FIRST: Instantly dispatch the shutdown token so the worker process knows to flush entries - if hasattr(self, "render_queue") and self.render_queue is not None: - try: - print( - f"\n\033[94m[STAGE 1/3] Dispatching shutdown sentinel (None) to rendering process worker (Backlog: {self.render_queue.qsize()} frames)...\033[0m", - flush=True, - ) - # Delivering the poison pill immediately tells FFmpeg to drain remaining blocks sequentially - self.render_queue.put(None, timeout=2.0) - except Exception as queue_err: - print( - f"\033[91m[TEARDOWN ERROR] Failed staging shutdown token: {queue_err}\033[0m", - flush=True, - ) - - # 2. SECOND: Allow the background multiprocessing queue to empty outstanding items naturally - if hasattr(self, "render_queue") and self.render_queue is not None: - try: - print( - "\n\033[94m[STAGE 2/3] Finalizing file output. Draining remaining frames from IPC memory lane...\033[0m", - flush=True, - ) - t_drain = time.perf_counter() - # Wait up to 15 seconds for the worker process to pull every remaining matrix out of the pipe - while ( - not self.render_queue.empty() - and (time.perf_counter() - t_drain) < 15.0 - ): - time.sleep( - 0.01 - ) # Micro-yield grants immediate execution priority to the background process core - except Exception: - pass - - # 3. THIRD: Block the main thread safely and allow the detached process to finish disk I/O operations - if hasattr(self, "render_proc") and self.render_proc is not None: - try: - join_duration = 0.0 - if self.render_proc.is_alive(): - print( - "\033[94m[STAGE 2/2] Main thread blocking. Synchronizing hard drive file headers...\033[0m", - flush=True, - ) - t_join_start = time.perf_counter() - self.render_proc.join( - timeout=15.0 - ) # Safe timeout lets video containers finalize cleanly - join_duration = time.perf_counter() - t_join_start - else: - print( - "\033[94m[STAGE 2/2] Main thread clear...\033[0m", - flush=True, - ) - - if self.render_proc.is_alive(): - print( - "\n\033[91m[CRITICAL STALL] Render worker process hung on disk write! Forcing termination...\033[0m", - flush=True, - ) - self.render_proc.terminate() - self.render_proc.join() - else: - print( - f"\033[92m[FINAL] Video compilation finished cleanly! Hard drive commit took {join_duration:.2f} seconds.\033[0m", - flush=True, - ) - - expected_disk_path = Path(self.output_path) - if expected_disk_path.exists(): - size_mb = expected_disk_path.stat().st_size / (1024 * 1024) - print( - f"\033[92m[DISK VERIFIED] Destination asset compiled: {expected_disk_path.name} ({size_mb:.2f} MB)\033[0m\n", - flush=True, - ) - self.render_proc.close() - except Exception as proc_err: - print( - f"\033[91m[TEARDOWN ERROR] Failed closing background process container: {proc_err}\033[0m", - flush=True, - ) - setattr(self, "render_proc", None) - - # 4. FOURTH: Clean up remaining pipeline executors and queues safely - if hasattr(self, "render_queue") and self.render_queue is not None: - try: - self.render_queue.close() - self.render_queue.cancel_join_thread() - except Exception: - pass - setattr(self, "render_queue", None) - - if hasattr(self, "executor") and self.executor is not None: - try: - self.executor.shutdown(wait=True) - except Exception: - pass - setattr(self, "executor", None) - - self.status = "DONE" - self._is_stopped = True - print( - "[TEST HARNESS] Teardown complete. Releasing session cleanly.\n", - flush=True, - ) - - # HELPERS -------------------------------------------- - def _print_gpu_mem(self): - if torch.cuda.is_available(): - # Memory currently used by tensors - allocated = torch.cuda.memory_allocated(0) / 1024**2 - # Total memory reserved by PyTorch (the "Pool") - reserved = torch.cuda.memory_reserved(0) / 1024**2 - print(f"\tAllocated: {allocated:0.2f} MB") - print(f"\tReserved: {reserved:0.2f} MB") - else: - print("\tCUDA not available.") - - def calculate_unique_coverage(self, merged_boxes, target_w=640, target_h=640): - """ - TRUE LOOPLESS VECTORIZATION: Calculates combined bounding box pixel coverage - in a single GPU pass, completely avoiding CPU-GPU synchronization stalls. - """ - if merged_boxes is None or merged_boxes.shape[0] == 0: - return 0.0 - - scale = torch.tensor( - [ - target_w / self.frame_width, - target_h / self.frame_height, - target_w / self.frame_width, - target_h / self.frame_height, - ], - device=self.device_input, - ) - - coords = (merged_boxes * scale).long() - coords[:, [0, 2]] = coords[:, [0, 2]].clamp(0, target_w) - coords[:, [1, 3]] = coords[:, [1, 3]].clamp(0, target_h) - - x1 = coords[:, 0].view(-1, 1, 1) - y1 = coords[:, 1].view(-1, 1, 1) - x2 = coords[:, 2].view(-1, 1, 1) - y2 = coords[:, 3].view(-1, 1, 1) - - grid_y, grid_x = torch.meshgrid( - torch.arange(target_h, device=self.device_input), - torch.arange(target_w, device=self.device_input), - indexing="ij", - ) - - inside_boxes = (grid_x >= x1) & (grid_x < x2) & (grid_y >= y1) & (grid_y < y2) - unique_mask = torch.any(inside_boxes, dim=0) - - return (torch.sum(unique_mask).item() / (target_w * target_h)) * 100 - - def _finalize_benchmarks( - self, - num_objs, - total_written_frames, - total_pipeline_ms, - real_world_latency_ms, - total_sf_pipeline_ms, - frame_loop_latency_ms, - coverage_percentages, - total_read_time, - total_queue_saturation, - queue_saturation_history, - ): - """Aggregates metrics and adds them to the results list.""" - sf_enabled = self.config.sf_enabled - stat_frame_count = self.stat_frame_count - stat_fps = self.stat_fps - - h2d_label = ( - "Pinned H2D Transfer (PCIe DMA)" - if self.is_cuda - else "Data Preparation Overhead" - ) - # d2h_label = ( - # "D2H Transfer (PCIe Download)" - # if self.is_cuda - # else "Array Extraction Overhead" - # ) - - total_pipeline_s = total_pipeline_ms / 1000.0 # Full pipeline - - total_real_pipeline_s = ( - real_world_latency_ms / 1000.0 - ) # Pipeline until last frame sent to writer - real_est_fps = ( - self.frame_count_target / total_real_pipeline_s - if total_real_pipeline_s > 0 - else 0 - ) - - # if total_written_frames > 0: - duration_s = ( - self.reader.total_input_frames / self.reader.input_fps - if self.reader.input_fps > 0 - else 0 - ) - out_duration_s = ( - total_written_frames / self.reader.target_fps - if self.reader.target_fps > 0 - else 0 - ) - print( - f"Expected duration: {self.duration_target:.2f} stream_duration_s: {duration_s:.2f} output_duration_s: {out_duration_s:.2f}" - ) - - h2d_display_label = f"Reader {h2d_label}:" - avg_reader_ms = (total_read_time / total_written_frames) * 1000 - # avg_resize_ms = (total_resize_time / total_written_frames)*1000 - # avg_write_ms = (total_disk_write_overhead / total_written_frames)*1000 - target_frame_fps = total_written_frames / total_pipeline_s - all_frame_fps = self.reader.total_input_frames / total_pipeline_s - avg_copy_ms = (self.reader.total_shm_copy_time / total_written_frames) * 1000 - # avg_blocked_ms = ( - # self.reader.total_queue_wait_time / total_written_frames - # ) * 1000 - - # Avg Blocked MS tracks your downstream GIL blocks and serialization stalls - avg_blocked_ms = ( - sum(self.component_stats.get("queue_blocked", [0.0])) - / max(1, len(self.component_stats.get("queue_blocked", []))) - if self.component_stats.get("queue_blocked") - else 0.0 - ) - - avg_saturation = (total_queue_saturation / total_written_frames) * 100 - peak_saturation = ( - max(queue_saturation_history) * 100 if queue_saturation_history else 0 - ) - target_match_ratio = ( - total_written_frames / (total_pipeline_s * self.reader.target_fps) - ) * 100 - - frame_drop = max( - 0.0, - (1.0 - (total_written_frames / max(1, self.reader.total_input_frames))) - * 100.0, - ) - serial_pressure = (avg_blocked_ms / max(0.1, frame_loop_latency_ms)) * 100.0 - evac_vel = target_frame_fps / max(0.1, all_frame_fps) - - # Isolate the ratio of sequential loop stalls against full execution bounds - backpressure_index = (avg_blocked_ms / max(0.1, frame_loop_latency_ms)) * 100.0 - - if self.is_cuda: - avg_h2d_ms = (self.reader.total_h2d_time / total_written_frames) * 1000 - avg_prep_ms = 0.0 - else: - avg_prep_ms = (self.reader.total_h2d_time / total_written_frames) * 1000 - avg_h2d_ms = 0.0 - - # Calculate structural frame size payload in Gigabytes (H * W * Channels) - frame_size_gb = (self.reader.frame_height * self.reader.frame_width * 3) / ( - 1024**3 - ) - - # 1. Compute Peak H2D PCIe Throughput - avg_h2d_s = ( - ( - sum(self.component_stats["dma_upload"]) - / len(self.component_stats["dma_upload"]) - ) - / 1000.0 - if self.component_stats["dma_upload"] - else 0 - ) - if self.is_cuda and avg_h2d_s > 0.00001: - self.pcie_throughput_gbps = frame_size_gb / avg_h2d_s - else: - self.pcie_throughput_gbps = ( - 0.0 # Safe fallback baseline for non-PCIe pipelines (CPU) + fps_comparison_chart( + chart_path, results, fps_key="Pipeline FPS (Video frames)" ) - # Calculate bus saturation relative to standard Gen4 x16 baseline ceilings (31.5 GB/s) - # Scale to an index percentage safely - pcie_bus_saturation = (self.pcie_throughput_gbps / 31.5) * 100.0 - - # 2. Extract PyTorch VRAM Fragmentation Delta Metrics - if self.is_cuda and torch.cuda.is_available(): - peak_alloc = torch.cuda.max_memory_allocated(0) / 1024**2 - peak_reserved = torch.cuda.max_memory_reserved(0) / 1024**2 - self.vram_efficiency = ( - (peak_alloc / peak_reserved * 100.0) if peak_reserved > 0 else 100.0 + chart_path = ( + request.cls.result_dir + / f"{request.cls.csv_filename.replace('.csv', '')}_pipelineFPS_target.png" ) - else: - self.vram_efficiency = ( - 0.0 # Clean zero baseline representation for CPU runs + fps_comparison_chart( + chart_path, results, fps_key="Pipeline FPS (Target frames)" ) - # Calculate averages for component breakdowns - # avg_reader_ms = (total_read_time / self.reader.total_input_frames) * 1000 - # avg_reader_ms = (total_read_time / self.frame_count_target) * 1000 - avg_sf = ( - sum(self.component_stats["sf"]) / len(self.component_stats["sf"]) - if self.component_stats["sf"] - else 0 - ) - avg_roi = ( - sum(self.component_stats["roi"]) / len(self.component_stats["roi"]) - if self.component_stats["roi"] - else 0 - ) - avg_det = ( - sum(self.component_stats["det"]) / len(self.component_stats["det"]) - if self.component_stats["det"] - else 0 - ) - - # Total Latency Sum (SF + ROI + DET) - det_latency_ms = avg_sf + avg_roi + avg_det - det_latency_s = det_latency_ms / 1000.0 - det_est_fps = (total_written_frames / det_latency_s) if det_latency_s > 0 else 0 - - # Track model workloads against preprocessing overheads (sf_time + roi_time) - preprocessing_overhead = avg_sf + avg_roi - model_cost_density = avg_det / max(0.1, preprocessing_overhead) - - loop_overhead = max( - 0.0, 100.0 - ((det_latency_ms / max(1.0, frame_loop_latency_ms)) * 100.0) - ) - avg_cov = ( - sum(coverage_percentages) / len(coverage_percentages) - if coverage_percentages - else (100.0 if not sf_enabled else 0) - ) - - avg_crops = ( - sum(self.crops_per_frame_list) / len(self.crops_per_frame_list) - if self.crops_per_frame_list - else 0 - ) - - # Calculate how often we hit a high-motion cap (e.g., 20 crops) - capped_frames = sum(1 for c in self.crops_per_frame_list if c >= 20) - cap_rate = ( - (capped_frames / len(self.crops_per_frame_list)) * 100 - if self.crops_per_frame_list - else 0 - ) - - # avg_queue = ( - # sum(self.component_stats["queue_blocked"]) - # / len(self.component_stats["queue_blocked"]) - # if self.component_stats["queue_blocked"] - # else 0 - # ) - # avg_batch = ( - # sum(self.component_stats["batch_sizes"]) - # / len(self.component_stats["batch_sizes"]) - # if self.component_stats["batch_sizes"] - # else 0 - # ) - - backlog_list = self.component_stats.get("thread_backlog", []) - avg_backlog = ( - sum(backlog_list) / len(backlog_list) if len(backlog_list) > 0 else 0.0 - ) - - print("\n" + "=" * 60) - print( - f" FULLY-OPTIMIZED ASYNC STAGE ({self.config.DEVICE}) PIPELINE BREAKDOWN " - ) - print("=" * 60) - print(f"Total Output Frames Written: {total_written_frames}") - print(f"Total Pipeline Execution Time: {total_pipeline_s:.4f} seconds") - print(f"Overall Processing Speed: {target_frame_fps:.2f} FPS") - print("-" * 60) - print("MAIN CONSUMER LOOP TIMELINE (SEQUENTIAL OVERHEAD):") - print(f" 1. Shared Memory Copy to Host: {avg_copy_ms:6.2f} ms") - print( - f" 2. GIL / Downstream Queue Serialization Stalls: {avg_blocked_ms:6.2f} ms" - ) - print(f" 3. Pure Video Frame File-Ingestion Read: {avg_reader_ms:6.2f} ms") - print("-" * 60) - print("BACKGROUND INGESTION HEALTH (ASYNC METRICS):") - print( - f" A. Inbound Stream Decode Speed: {all_frame_fps:6.2f} FPS" - ) - print(f" B. {h2d_display_label:<42} {avg_h2d_ms:6.2f} ms") - print(f" C. Consumer Queue Saturation Density: {avg_saturation:6.1f}%") - print( - f" D. Peak PCIe Upload Throughput: {self.pcie_throughput_gbps:6.2f} GB/s" - ) - print( - f" E. Active Thread Pool Work Backlog: {avg_backlog:6.1f} tasks" - ) - print( - f" F. VRAM Hardware Memory Efficiency (Cache): {self.vram_efficiency:6.1f}%" - ) - print("-" * 60) - - # EXPANDED PERFORMANCE INSIGHTS AND DIAGNOSTICS - print("PIPELINE HEALTH & BEHAVIOR INSIGHTS:") - if avg_saturation > 80.0: - pipeline_status = "CHOKED" - print( - f" • Status: \033[91m🔴 {pipeline_status}\033[0m (Downstream logic cannot keep up with inbound stream speed)" - ) - elif avg_saturation > 40.0: - pipeline_status = "BALANCED" - print( - f" • Status: \033[93m🟡 {pipeline_status}\033[0m (Queue buffer is actively pacing consumer workloads)" + chart_path = ( + request.cls.result_dir + / f"{request.cls.csv_filename.replace('.csv', '')}_sfdetectFPS_target.png" ) - else: - pipeline_status = "IDLE/LIGHT" - print( - f" • Status: \033[92m🟢 {pipeline_status}\033[0m (Consumer loop finishes ahead of background ingestion clock)" - ) - - print(f" • Peak Queue Fullness Reached: {peak_saturation:.1f}%") - # Calculate stream drop indicator - print(f" • Targeted Pacing Delivery Accuracy: {target_match_ratio:.1f}%") - print(f" • Downstream Serialization Pressure Index: {serial_pressure}") - print(f" • Core Queue Evacuation Velocity Rank: {evac_vel}") - print( - f" • Hardware Compute Backpressure Index: {backpressure_index:6.2f}%" - ) - print( - f" • Preprocessing to Inference Cost Density: {model_cost_density:6.2f}x" - ) - print( - f" • Physical PCIe Gen4 Bus Saturation Level: {pcie_bus_saturation:6.2f}%" - ) - print("=" * 60) - - self.__class__.benchmarks.append( - { - "Test Name": self._testMethodName, - "Detection Type": self.config.DETECTION_TYPE, - "Device": self.config.DEVICE, - "Smart Filtering": "Enabled" if sf_enabled else "Disabled", - "Video": self.source, # self.name? - "Video FPS": f"{self.reader.input_fps:.2f}", - "Video Original Duration (s)": f"{duration_s:.4f}", - "Video Frames": self.reader.total_input_frames, - # PIPELINE OVERVIEW - "Target FPS": f"{self.reader.target_fps:.2f}", - "Output Duration (s)": f"{out_duration_s:.4f}", - "Output Frames": total_written_frames, - "Pipeline Latency (s)": f"{total_pipeline_s:.2f}", - "Pipeline FPS (Video frames)": f"{all_frame_fps:.2f}", - "Pipeline FPS (Target frames)": f"{target_frame_fps:.2f}", - "Real Pipeline Latency (s)": f"{total_real_pipeline_s:.2f}", - "Real Pipeline FPS (Target frames)": f"{real_est_fps:.2f}", - # MAIN CONSUMER LOOP TIMELINE (SEQUENTIAL OVERHEAD) - "Avg Frame Reading (ms)": f"{avg_reader_ms:.2f}", - # "Avg Resize (ms)": f"{avg_resize_ms:.2f}", - # "Avg Writer Async Handoff (ms)": f"{avg_write_ms:.2f}", - # BACKGROUND INGESTION HEALTH (ASYNC METRICS) - "Avg Host Copy (ms)": f"{avg_copy_ms:.2f}", - "Avg DMA Upload (ms)": f"{avg_h2d_ms:.2f}", - "Avg Data Prep Overhead (ms)": f"{avg_prep_ms:.2f}", - "Avg Queue Blocked (ms)": f"{avg_blocked_ms:.2f}", - "Avg Queue Saturation (%)": f"{avg_saturation:.2f}", - # Framework Overhead Leak Tracking (Measures loop time spent outside raw AI inference model blocks) - "Loop Overhead %": f"{loop_overhead:.2f}%", - # Inbound Stream Frame Drop Rate (Identifies if background threads are dropping packets due to I/O) - "Inbound Frame Drop %": f"{frame_drop:.2f}%", - # Serialization Pressure Index (Tracks what percentage of your frame time is lost to thread stalls) - "Serialization Pressure %": f"{serial_pressure:.2f}%", - # Queue Evacuation Velocity Coefficient (Values > 1.0 mean your consumer loop drains frames faster than ingestion) - "Evacuation Velocity": f"{evac_vel:.2f}x", - "Compute Backpressure Index": f"{backpressure_index:.2f}%", - "Model Cost Density Ratio": f"{model_cost_density:.2f}x", - "PCIe Bus Saturation %": f"{pcie_bus_saturation:.2f}%", - # PIPELINE HEALTH & BEHAVIOR INSIGHTS - "Pipeline Status": pipeline_status, - "Peak Queue Fullness (%)": f"{peak_saturation:.2f}", - "Targeted Pacing Delivery (%)": f"{target_match_ratio:.2f}", - # DETECTION PIPELINE (Should B NULL) - "SF/Detection Latency (s)": f"{det_latency_s:.2f}", - "SF/Detection FPS": f"{det_est_fps:.2f}", - "Avg SF (ms)": f"{avg_sf:.2f}", - "Avg ROI (ms)": f"{avg_roi:.2f}", - "Avg Obj. Detection (ms)": f"{avg_det:.2f}", - "Total Breakdown Sum (ms)": f"{det_latency_ms:.2f}", - "Avg Area Coverage %": f"{avg_cov:.2f}%", - "Avg Crops/Frame": f"{avg_crops:.1f}", - # "Frames w/o ROIs": self.no_roi_frame_cnt, - "Crop Cap Rate (>20)": f"{cap_rate:.1f}%", - "Objects Detected": num_objs, - # TIming to display frame (read to after send to render queue) - "Display Latency (s)": f"{self.elapsed_display_time:.2f}", - "Display Frames": stat_frame_count, - "Display FPS": f"{stat_fps:.2f}", - "PCIe Bandwidth Throughput (GB/s)": f"{self.pcie_throughput_gbps:.2f}", - "Avg Async Thread Pool Backlog": f"{sum(self.component_stats.get('thread_backlog', [0])) / len(self.component_stats.get('thread_backlog', [1])):.1f}", - "VRAM Allocation Efficiency (%)": f"{self.vram_efficiency:.1f}%", - } - ) - - print( - f"\n[{self._testMethodName}] Pipeline Latency (s): {total_pipeline_s:.2f} sec" - ) - print( - f"\n[{self._testMethodName}] Pipeline FPS (Target frames): {target_frame_fps:.2f} ({total_written_frames} frames)" - ) - print( - f"\n[{self._testMethodName}] Pipeline FPS (Video frames): {all_frame_fps:.2f} ({self.reader.total_input_frames} frames)" - ) - print( - f"\n[{self._testMethodName}] SF/Detection FPS (Target frames): {det_est_fps:.2f} ({total_written_frames} frames)" - ) - print( - f"\n[{self._testMethodName}] Display FPS: {stat_fps:.2f} ({stat_frame_count} frames)" - ) + fps_comparison_chart(chart_path, results, fps_key="SF/Detection FPS") - def frame2video( - self, - device_frame, - frameNum, - metadata_or_bbs, - class_list, - ): - scale_display_x = self.disp_w / 640 - scale_display_y = self.disp_h / 640 - - if self.device_input == "cuda" and torch.is_tensor(device_frame): - # 2. Fast Inline VRAM Downscaling into our static memory slot - # Reshape to (Batch, Channel, Height, Width) seamlessly without duplicating data - gpu_tensor = device_frame[None, :].permute(0, 3, 1, 2).float() - - resized_tensor = torch.nn.functional.interpolate( - gpu_tensor, - size=(self.disp_h, self.disp_w), - mode="nearest", + chart_path = ( + request.cls.result_dir + / f"{request.cls.csv_filename.replace('.csv', '')}_displayFPS_target.png" ) - - # CONVERTS TO CPU EARLIER (WORKS but lowers fps) - # hwc_byte_tensor = resized_tensor.squeeze(0).permute(1, 2, 0).byte() - # cpu_tensor = hwc_byte_tensor.cpu() - # bgr_contiguous = cpu_tensor.contiguous() - - # Using copy_() avoids creating any runtime allocations or memory-stride drift. - self.static_gpu_byte_bchw.copy_(resized_tensor.byte()) - - # Safely reshape the pre-allocated, locked GPU memory layout back to standard HWC array topology. - # Since the underlying array layout is strictly contiguous, this permute is guaranteed - # to be zero-copy on the GPU and free from memory race stalls. - bgr_contiguous = self.static_gpu_byte_bchw.squeeze(0).permute(1, 2, 0) - - # 1. Grab the current free pinned slot tracking variables from your reader - d2h_idx = self.reader.d2h_selector - pinned_tensor_buf = self.reader.d2h_buffers[d2h_idx] - - # c_idx = self.canvas_selector - # current_canvas = self.static_host_canvases[c_idx] - - # host_tensor_view = torch.as_tensor(current_canvas, device="cpu") - - # 3. Non-blocking asynchronous PCIe DMA Download directly into our page-locked canvas - with torch.cuda.stream(self.reader.download_stream): - # pinned_tensor = torch.from_numpy(current_canvas).cuda() - pinned_tensor_buf.copy_(bgr_contiguous, non_blocking=True) - - # Synchronize only the side download stream layout channel - self.reader.download_stream.synchronize() - - cpu_360p_frame = self.reader.d2h_numpys[d2h_idx] - - # 5. Non-Blocking Push straight to your background AsyncVideoWriter thread pool - # We pass a direct .copy() slice so the hot loop can instantly reuse the pinned ring buffer - display_frame = np.array(cpu_360p_frame, copy=True, order="C") - - if display_frame is not None and display_frame.shape[-1] == 3: - display_frame = cv2.cvtColor(display_frame, cv2.COLOR_RGB2BGR) - - # --- Draw Detection Overlays --- - if isinstance(metadata_or_bbs, dict): - # Object Mode (YOLO Structs) - display_frame = get_metadata_overlay( - display_frame, - metadata_or_bbs, - class_list, - (scale_display_x, scale_display_y), - (self.disp_w, self.disp_h), - is_bgr=True, - ) - - elif metadata_or_bbs is not None: - # # Motion / Smart Filtering Overlay Path - display_frame = get_bb_overlay( - display_frame, - metadata_or_bbs, - (scale_display_x, scale_display_y), - (self.disp_w, self.disp_h), - ) - - self.async_writer.write_frame(display_frame) - # self.canvas_selector = 1 - self.canvas_selector - self.reader.d2h_selector = 1 - self.reader.d2h_selector + fps_comparison_chart(chart_path, results, fps_key="Display FPS") else: - # Reusable baseline track for CPU execution mappings - display_frame = cv2.resize( - device_frame, - (self.disp_w, self.disp_h), - interpolation=cv2.INTER_NEAREST, + main_app_logger.info( + "[WARN] Benchmarking matrix empty. Skipping final CSV and chart exports." ) - # if metrics["bbs"] is not None: - # for box in metrics["bbs"]: - # cv2.rectangle(cpu_resized, (int(box[0]), int(box[1])), (int(box[2]), int(box[3])), (0, 255, 0), 2) - # --- Draw Detection Overlays --- - if isinstance(metadata_or_bbs, dict): - # Object Mode (YOLO Structs) - display_frame = get_metadata_overlay( - display_frame, - metadata_or_bbs, - class_list, - (scale_display_x, scale_display_y), - (self.disp_w, self.disp_h), - is_bgr=True, - ) - elif metadata_or_bbs is not None: - # # Motion / Smart Filtering Overlay Path - display_frame = get_bb_overlay( - display_frame, - metadata_or_bbs, - (scale_display_x, scale_display_y), - (self.disp_w, self.disp_h), - ) - self.async_writer.write_frame(display_frame) - # PIPELINE FUNCTIONS -------------------------------------------- - - def pipeline_fn(self, device_frame, overall_frame_num, stat_start_time): - num_objs = 0 - metrics = {"sf_time": 0, "roi_time": 0, "det_time": 0, "bbs": None} +@pytest.mark.usefixtures("setup_context") +class TestDetections(BaseTest): + """ + Pytest runner that spawns the isolated worker, waits for completion, + and merges the returned metrics into the main class for CSV/Chart generation. + """ - # Pre-allocate non-blocking event records to extract clean GPU timings - sf_start, sf_end = ( - torch.cuda.Event(enable_timing=True), - torch.cuda.Event(enable_timing=True), - ) - roi_start, roi_end = ( - torch.cuda.Event(enable_timing=True), - torch.cuda.Event(enable_timing=True), - ) - det_start, det_end = ( - torch.cuda.Event(enable_timing=True), - torch.cuda.Event(enable_timing=True), - ) + benchmarks = [] # Class-level attribute required by _finalize_benchmarks - if self.config.sf_enabled: - if self.device_input == "cuda": - sf_start.record(self.inference_stream) - bgs_input_frame = ( - device_frame.byte() - if torch.is_tensor(device_frame) - else device_frame - ) - inf_data = self.rbtd_full_gpu(bgs_input_frame) - sf_end.record(self.inference_stream) - else: - t_start = time.perf_counter() - inf_data = self.rbtd_full_cpu(device_frame) - metrics["sf_time"] = (time.perf_counter() - t_start) * 1000.0 - else: - inf_data = {} - inf_data["frameNum"] = self.frame_count_target - - # --- 2. FULL-RESOLUTION ROI EXTRACTION MAPS --- - bbs_full_res = None - if self.config.sf_enabled: - if self.device_input == "cuda": - roi_start.record(self.inference_stream) - bbs_full_res = self.get_gpu_rois( - inf_data["full_frame"], - self.frame_count_target, - inf_data["mask"], - ) - roi_end.record(self.inference_stream) - metrics["bbs"] = bbs_full_res - else: - t_start = time.perf_counter() - bbs_full_res = self.get_cpu_rois( - inf_data["full_frame"], - self.frame_count_target, - inf_data["mask"], - ) - metrics["roi_time"] = (time.perf_counter() - t_start) * 1000.0 - metrics["bbs"] = bbs_full_res - - if self.config.DEBUG_FLAG: - # if self.device_input == "cuda": - # # Isolate data capturing using an asynchronous memory clone operation - # # This safely copies data without dropping your multi-stream execution pipeline concurrency - # display_source = inf_data["mask"].clone().to("cpu", non_blocking=True) - # else: - display_source = inf_data["mask"] - # self.inference_stream.synchronize() - # display_source = inf_data["mask"] - self.debug_save_mask( - display_source, self.frame_count_target, rois=bbs_full_res - ) - - clean_bbs = [] - if self.config.sf_enabled and bbs_full_res is not None: - if torch.is_tensor(bbs_full_res): - clean_bbs = bbs_full_res.detach().cpu().numpy() - else: - clean_bbs = np.array(bbs_full_res) - - # If inline optimizations left the tensor in channels-first format (B, C, H, W), - # restore it to standard standard layout standard (H, W, C) so get_detections - # can decode bounding boxes accurately without corrupting weights. - det_frame = device_frame - # Cast float canvases back to standard unsigned byte tracking arrays - # so get_detections can safely run its internal float normalizations. - if torch.is_tensor(det_frame): - det_frame = det_frame.byte() - - if det_frame.ndim == 4: - det_frame = det_frame.squeeze(0).permute(1, 2, 0) - elif det_frame.shape[0] == 3: - det_frame = det_frame.permute(1, 2, 0) - - # --- 3. MODEL INFERENCE TIMING BLOCK --- - if self.device_input == "cuda": - det_start.record(self.inference_stream) - else: - t_start = time.perf_counter() - - metadata = {} - if self.config.DETECTION_TYPE != "motion": - # Pass directly or use a light NumPy view slice to protect the raw pointer - # det_frame = ( - # device_frame - # if not isinstance(device_frame, np.ndarray) - # else device_frame.view() - # ) - - merged = clean_bbs if self.config.sf_enabled else None - metadata, _ = self.get_detections( - det_frame, - self.frame_in_clip_count, - merged=merged, - thickness=self.config.THICKNESS, - device_input=self.config.device_input, + @pytest.mark.parametrize("device", ["gpu", "cpu"]) + @pytest.mark.parametrize("sf_enabled", [True, False]) + @pytest.mark.parametrize("detection_type", ["object", "motion"]) + def test_detections(self, device, sf_enabled, detection_type, gt_enabled=False): + if detection_type == "motion" and not sf_enabled: + pytest.skip( + "Pure YOLO mode is structurally invalid for detection_type 'motion'.\n" ) - num_objs = len(metadata.keys()) - else: - num_objs = len(clean_bbs) - metadata = clean_bbs - - if self.device_input == "cuda": - det_end.record(self.inference_stream) - # torch.cuda.synchronize() - self.inference_stream.synchronize() - - # Extract hardware timings smoothly without stalling mid-run - if self.config.sf_enabled: - metrics["sf_time"] = sf_start.elapsed_time(sf_end) - metrics["roi_time"] = roi_start.elapsed_time(roi_end) - metrics["det_time"] = det_start.elapsed_time(det_end) - metrics["bbs"] = bbs_full_res - metrics["batch_density"] = ( - len(clean_bbs) if clean_bbs is not None else 0 - ) - else: - # Full-frame YOLO baseline tracks the elapsed time from t_start on page 20, line 1273 - metrics["sf_time"] = 0.0 - metrics["roi_time"] = 0.0 - metrics["det_time"] = det_start.elapsed_time(det_end) - metrics["bbs"] = None - metrics["batch_density"] = 1 # 1 Full frame block - else: - # CPU Path Execution: Must use standard wall-clock timing loops to avoid CUDA Event errors - if self.config.sf_enabled: - # Timings for sf_time and roi_time are already gathered on CPU on page 19 line 1221 and page 20 line 1246 - metrics["det_time"] = (time.perf_counter() - t_start) * 1000.0 - metrics["bbs"] = bbs_full_res - metrics["batch_density"] = ( - len(clean_bbs) if clean_bbs is not None else 0 - ) - else: - metrics["sf_time"] = 0.0 - metrics["roi_time"] = 0.0 - metrics["det_time"] = (time.perf_counter() - t_start) * 1000.0 - metrics["bbs"] = None - metrics["batch_density"] = 1 - - data_to_draw = clean_bbs if self.config.DETECTION_TYPE == "motion" else metadata - - self.frame2video( - det_frame, - inf_data["frameNum"], - data_to_draw, - self.label_source, - ) + # Pull the values dynamically assigned by the setup_context fixture + init_args = { + "source": self.__class__.source, + "name": self.__class__.name, + "result_dir": str(self.__class__.result_dir), + "active_streams": {}, + "benchmarks": self.__class__.benchmarks, + } - self.update_frame(stat_start_time) - return num_objs, metrics # Skip full detection pass - - def run_realtime_inference(self, sf_enabled=True): - # self.duration_target = 30 - self.status = "RUNNING" - metrics = {} - num_objs = 0 - self.is_cuda = self.device.lower() == "gpu" and torch.cuda.is_available() - self.frame_count_target = 0 - self.next_process_idx = 0.0 - self.frame_in_clip_count = 0 - total_pipeline_time_ms = 0.0 - total_read_time = 0.0 - total_queue_saturation = 0.0 - # queue_saturation_history = [0.0] - total_written_frames = 0 - total_sf_pipeline_time_ms = 0.0 - real_world_latency_ms = 0.0 - - # queue_size = 4 - total_run_pipelinefn = 0 - # total_read_time = 0 - # total_resize_time = 0 - # total_written_frames = 0 - # total_disk_write_overhead = 0.0 - total_frame_loop_latency = 0.0 - total_active_processing_overhead = 0.0 - # total_queue_saturation = 0.0 - # total_queue_saturation = 0.0 - queue_saturation_history = [] - consecutive_slow_frames = 0 - # total_dropped_frames = 0 - - coverage_percentages = [] - self.component_stats = { - "sf": [], - "roi": [], - "det": [], - "dma_upload": [], # Track PCIe Transfer Latencies - "queue_blocked": [], # Track GIL Serialization stalls - "batch_sizes": [], # Track Smart Filtering density - "thread_backlog": [], # Track thread work pool backlog + test_args = { + "device": device, + "detection_type": detection_type, + "sf_enabled": sf_enabled, + "gt_enabled": gt_enabled, } - self.crops_per_frame_list = [] - self.step_size = ( - float(self.input_fps) / float(self.target_fps) - if hasattr(self, "target_fps") - else 1.0 - ) - self.max_target_frames = ( - int(self.duration_target * float(self.target_fps)) - if hasattr(self, "target_fps") - else float("inf") + main_app_logger.info( + f"\n{'=' * 60}\n" + f"[TEST HARNESS] Spawning isolated high-speed process for {self.__class__.name} (SF: {sf_enabled})...\n" + f"{'=' * 60}" ) - # self.start() - # time.sleep(0.1) - - # if self.source.startswith("rtsp"): - # short_name = "rtsp" - # else: - # short_name = Path(self.source).stem - # output_path= f"{self.config.SHARED_OUTPUT}/{short_name}_{self.device}.mp4" - # disp_wh = (self.disp_w, self.disp_h) - # async_writer = AsyncVideoWriter( - # self.output_path, - # cv2.VideoWriter_fourcc(*'avc1'), - # float(self.target_fps), - # (self.disp_w, self.disp_h) - # ) - - pipeline_start_time = time.perf_counter() - last_loop_cycle_timestamp = time.perf_counter() - - # try: - self.dynamic_limit = max(2, int(0.5 * self.target_fps)) - # last_frame_time = time.perf_counter() - while self.active and self.frame_count_target < self.max_target_frames: - try: - # FRAME RETRIEVAL --------------------------------------------- - try: - frame_start_time = time.perf_counter() - t_read = time.perf_counter() - # if self.active: - ret, frame_8k, frame_num = ( - self.reader.read() - ) # Successfully reads the 8K frame - - if not ret or frame_8k is None: - # Check if there are any remaining frames still buffered in flight inside the reader queue - # if hasattr(self.reader, 'frame_queue') and not self.reader.frame_queue.empty(): - # ret, frame_8k, frame_num = self.reader.read() - # if not ret or frame_8k is None: - # break - # else: - # break - if self.reader is None or ( - hasattr(self.reader, "stopped") and self.reader.stopped - ): - if self.device_input == "cuda": - torch.cuda.synchronize() - self.active = False - break - continue - - reader_time = time.perf_counter() - t_read - total_read_time += reader_time - - # Calculate the exact time gap between the last frame completion - # and the start of the next read. This accurately captures downstream GIL blocks. - cycle_gap = time.perf_counter() - last_loop_cycle_timestamp - # Subtract the actual read duration to isolate the thread stall time - true_serialization_stall = max( - 0.0, (cycle_gap - (time.perf_counter() - t_read)) * 1000.0 - ) - self.component_stats["queue_blocked"].append( - true_serialization_stall - ) + # Spawn a pristine Python process (identical to test_pipeline.py's stream_worker) + ctx = mp.get_context("spawn") + res_queue = ctx.Queue() - except queue.Empty: - if getattr(self.reader, "reconnect_failed", False): - self.active = False - break - time.sleep(0.002) - continue + worker_p = ctx.Process( + target=isolated_detection_worker, args=(init_args, test_args, res_queue) + ) - # print(f"frame_num: {frame_num}") + worker_p.start() + worker_p.join() # Block Pytest until the isolated pipeline finishes - self.stat_start_time = time.perf_counter() - self.frame_count += 1 - # is_target_frame = True + # Extract and merge results + if not res_queue.empty(): + result = res_queue.get() - # Real-Time Metric A: Track Queue Saturation Density Ratio - # current_q_size = self.reader.frame_queue.qsize() - saturation_ratio = ( - self.reader.frame_queue.qsize() / self.reader.frame_queue.maxsize + if result["status"] == "error": + pytest.fail( + f"Pipeline crashed in worker process:\n{result.get('error')}\n{result.get('traceback')}" ) - total_queue_saturation += saturation_ratio - queue_saturation_history.append(saturation_ratio) - - # RUN PIPELINE_FN --------------------------------------------- - run_pipelinefn_start = time.perf_counter() - self.frame_count_target += 1 - self.frame_in_clip_count += 1 - - if self.device_input == "cuda": - # Instantiate a lightweight hardware fence event object - curr_event = torch.cuda.Event(enable_timing=False) - # curr_event.record() - # Record the exact milestone on the default stream right after fetching the frame data - curr_event.record(torch.cuda.default_stream()) - self.inference_stream.wait_event(curr_event) - - with torch.cuda.stream(self.inference_stream): - nob, metrics = self.pipeline_fn( - frame_8k, - frame_num, - # is_target_frame, - self.stat_start_time, - ) - # torch.cuda.default_stream().synchronize() - # self.inference_stream.synchronize() - - # Extract PCIe DMA upload latency from your hardware background reader - if hasattr(self.reader, "total_h2d_time"): - avg_h2d_frame_ms = ( - self.reader.total_h2d_time - / max(1, total_written_frames + 1) - ) * 1000.0 - self.component_stats["dma_upload"].append(avg_h2d_frame_ms) - else: - nob, metrics = self.pipeline_fn( - frame_8k, - frame_num, - # is_target_frame, - self.stat_start_time, - ) - num_objs += nob - - total_written_frames += 1 - - # Real-Time Metric B: Frame Processing Latency Check - frame_loop_latency = ( - time.perf_counter() - frame_start_time - ) * 1000 # ms - total_frame_loop_latency += frame_loop_latency - - # Isolate active processing time (excluding the queue blocking read) - active_processing_overhead = frame_loop_latency - (reader_time * 1000) - total_active_processing_overhead += active_processing_overhead - - # RUNTIME TERMINAL WARNING ALERTS - if saturation_ratio >= 1.0 or active_processing_overhead > ( - 1000 / self.target_fps - ): - consecutive_slow_frames += 1 - if ( - consecutive_slow_frames % self.target_fps == 0 - ): # Throttle terminal spam - print( - f"\033[93m⚠️ [PERF WARNING] Main loop starving! Waiting on stream ingestion... " - f"Read Wait: {reader_time:.1f}ms | Other Wait: {active_processing_overhead:.1f}ms | Queue Fullness: {saturation_ratio * 100:.0f}%\033[0m" - ) - else: - consecutive_slow_frames = max(0, consecutive_slow_frames - 1) - - if total_written_frames % (5 * self.target_fps) == 0: - print( - f"Captured {total_written_frames}/{self.max_target_frames} frames..." - ) - - # WRAP-UP FRAME INSTANCE --------------------------------------------- - # if self.device_input == "cuda" and torch.cuda.is_available(): - # torch.cuda.default_stream().synchronize() - - total_run_pipelinefn += time.perf_counter() - run_pipelinefn_start - - # Explicitly delete frame variables to free their references - del frame_8k - - last_loop_cycle_timestamp = time.perf_counter() + else: + metrics = result["metrics"] - # Force PyTorch's internal allocator to release cached segments back to the OS - # if self.frame_count_target % (5 * self.target_fps) == 0: - # print( - # f"Captured {self.frame_count_target}/{self.max_target_frames} frames..." - # ) - # torch.cuda.empty_cache() - # torch.cuda.ipc_collect() + self.__class__.benchmarks.append(metrics) - except torch.cuda.OutOfMemoryError: - print("\n" + "!" * 70) - print( - "[CRITICAL TEST CRASH] GPU MEMORY CEILING HIT INSIDE RUNNER LOOP!" - ) - print( - "Freezing allocation history registers and writing diagnostic log..." + main_app_logger.info( + f"[TEST HARNESS] Worker returned successfully. Display FPS: {metrics.get('Display FPS')}" ) - print("!" * 70) - try: - import os - - snapshot_filename = ( - f"/tmp/test_vram_leak_profile_pid{os.getpid()}.pickle" - ) - torch.cuda.memory._dump_snapshot(snapshot_filename) - print( - f"[PROFILER SUCCESSFUL] Snapshot profile written to: {snapshot_filename}" - ) - print( - "--> Drag and drop this file directly into: https://pytorch.org" - ) - except Exception as dump_err: - print(f"Failed to record profile data snapshot: {dump_err}") - - # Force safe system unlinking of background workers to clean up OS handles - self.active = False - if hasattr(self, "reader") and self.reader is not None: - self.reader.stop() - raise - - except Exception: - traceback.print_exc() - - # POST FRAME PROCESSING --------------------------------------------- - pipeline_end_time = time.perf_counter() - - # Resolve the final execution window. If the stream ran to completion, - # use the operational end marker to avoid measuring downstream disk write bottlenecks. - final_end_marker = getattr(self, "pipeline_completion_timestamp", None) - if final_end_marker is None: - final_end_marker = time.perf_counter() - # self.pipeline_completion_timestamp = final_end_marker - - real_world_latency_ms = float((final_end_marker - pipeline_start_time) * 1000.0) - - total_sf_pipeline_time_ms = float( - sum(self.component_stats.get("sf", [0.0])) - + sum(self.component_stats.get("roi", [0.0])) - + sum(self.component_stats.get("det", [0.0])) - ) - total_pipeline_time_ms = float( - (pipeline_end_time - pipeline_start_time) * 1000.0 - ) - - # total_queue_saturation = sum( - # self.component_stats.get("batch_sizes", [0.0]) - # ) # Sample array profile proxy - - if metrics != {}: - num_crops = len(metrics["bbs"]) if metrics["bbs"] is not None else 0 - self.crops_per_frame_list.append(num_crops) - - # Context-aware extraction of the newly proposed metrics - density = metrics.get("batch_density", 0 if self.config.sf_enabled else 1) - self.component_stats["batch_sizes"].append(density) - - self.component_stats["sf"].append(metrics["sf_time"]) - self.component_stats["roi"].append(metrics["roi_time"]) - self.component_stats["det"].append(metrics["det_time"]) - - # Calculate coverage OUTSIDE the timed block to prevent interference - if self.config.sf_enabled and metrics.get("bbs") is not None: - cov = self.calculate_unique_coverage(metrics["bbs"]) - coverage_percentages.append(cov) - self.async_writer.release() - # Continuously sample the thread work pool backlog state mechanics - if hasattr(self, "executor") and self.executor is not None: - # Safely probe internal concurrent.futures work queue bounds - self.component_stats["thread_backlog"].append( - self.executor._work_queue.qsize() - ) - else: - self.component_stats["thread_backlog"].append(0) - - # Real-Time Metric B: Frame Processing Latency Check - # total_frame_loop_latency = (pipeline_end_time - frame_start_time) * 1000 # ms - - # Isolate active processing time (excluding the queue blocking read) - # total_active_processing_overhead = total_frame_loop_latency - total_read_time #(reader_time * 1000) - - # RUNTIME TERMINAL WARNING ALERTS - # if saturation_ratio >= 1.0 or active_processing_overhead > (1000 / self.target_fps): - # consecutive_slow_frames += 1 - # if consecutive_slow_frames % self.target_fps == 0: # Throttle terminal spam - # print( - # f"\033[93m⚠️ [PERF WARNING] Main loop starving! Waiting on stream ingestion... " - # f"Read Wait: {frame_loop_latency:.1f}ms | Queue Fullness: {saturation_ratio * 100:.0f}%\033[0m" - # ) - # else: - # consecutive_slow_frames = max(0, consecutive_slow_frames - 1) - - # CALCULATE PERFORMANCE METRICS --------------------------------------------- - print( - f"\nExecution Finished. Total Output Frames Written: {self.frame_count_target}" - ) - - # Render your metrics dashboard table cleanly - if self.frame_count_target > 0: - avg_frame_loop_latency = total_frame_loop_latency / self.frame_count_target - self._finalize_benchmarks( - num_objs, - self.frame_count_target, # Reads the updated integer directly! - total_pipeline_time_ms, - real_world_latency_ms, - total_sf_pipeline_time_ms, - avg_frame_loop_latency, - coverage_percentages, - total_read_time, - total_queue_saturation, - queue_saturation_history, - ) + # Basic functionality assertions + assert metrics is not None, "Metrics dictionary should not be None." + assert int(metrics.get("Output Frames", 0)) > 0, ( + "No frames were written to output." + ) else: - print( - f"[SKIPPED SUMMARY] Only {self.frame_count_target} frames processed. ", - flush=True, - ) - self.stop() - - -# MAIN ---------------------------------------- + pytest.fail("Worker process died unexpectedly without returning metrics.") +# ========================================================================= +# MAIN +# ========================================================================= def get_pytest_filter_expression(args): - print("\n" + "=" * 50) - print("TARGET SELECTION PREVIEW") - print("=" * 50) + main_app_logger.info("=" * 50) + main_app_logger.info("TARGET SELECTION PREVIEW") + main_app_logger.info("=" * 50) - filter_expression = "test_detections" + filter_expression = Path(__file__).stem # applied_subs = [] if args.sf_enabled is not None: @@ -1952,25 +677,19 @@ def get_pytest_filter_expression(args): # Target hardware context selection filter applies globally across all test cases if args.device.lower() != "all": - print(f" 💻 Hardware Context Constraint: {args.device.upper()}") + main_app_logger.info(f" 💻 Hardware Context Constraint: {args.device.upper()}") filter_expression = f"({filter_expression}) and {args.device.lower()}" else: - print(" 💻 Hardware Context Constraint: ALL AVAILABLE") + main_app_logger.info(" 💻 Hardware Context Constraint: ALL AVAILABLE") - print("=" * 50) - print(f"COMPILED PYTEST KEYWORD EXPRESSION:\n 👉 {filter_expression}") - print("=" * 50 + "\n") + main_app_logger.info("=" * 50) + main_app_logger.info(f"COMPILED PYTEST KEYWORD EXPRESSION: {filter_expression}") + main_app_logger.info("=" * 50) return filter_expression if __name__ == "__main__": - # Force all PyTorch extension handles to compile and load BEFORE threads spawn - if torch.cuda.is_available(): - _ = torch.zeros(1).cuda() - import torch._ops - import torch.utils - # TEST ARGUMENTS parser = argparse.ArgumentParser(description="Run Video Detection Pipeline Tests") parser.add_argument( @@ -1998,13 +717,6 @@ def get_pytest_filter_expression(args): ) # Filter tests - parser.add_argument( - "--type", - type=str, - choices=["object", "motion"], - dest="detection_type", - help="Filter by detection type (object or motion)", - ) parser.add_argument( "--device", type=str, @@ -2012,6 +724,13 @@ def get_pytest_filter_expression(args): choices=["cpu", "gpu", "all"], help="Filter by device (cpu or gpu)", ) + parser.add_argument( + "--type", + type=str, + choices=["object", "motion"], + dest="detection_type", + help="Filter by detection type (object or motion)", + ) parser.add_argument( "--sf", action="store_true", @@ -2019,6 +738,13 @@ def get_pytest_filter_expression(args): dest="sf_enabled", help="Filter by Smart Filtering", ) + parser.add_argument( + "--no-sf", + action="store_false", + default=None, + dest="sf_enabled", + help="Filter by Smart Filtering", + ) # DEBUGGING parser.add_argument( @@ -2034,6 +760,13 @@ def get_pytest_filter_expression(args): help="Number of frames used for debugging [Default: 100]", ) + # PROFILING + parser.add_argument( + "--profile", + action="store_true", + help="Enable profiling", + ) + args = parser.parse_args() # UPDATE ENVIRONMENTAL VARIABLES @@ -2042,6 +775,7 @@ def get_pytest_filter_expression(args): os.environ["MODEL_NAME"] = args.model_name os.environ["DEBUG"] = "1" if args.debug else "0" os.environ["DEBUG_FRAME_LIMIT"] = str(args.debug_frame_limit) + os.environ["ENABLE_PROFILING"] = "True" if args.profile else "False" # detection_type, device, sf_enabled filter_expression = get_pytest_filter_expression(args) @@ -2053,9 +787,16 @@ def get_pytest_filter_expression(args): "-s", "-v", # "--log-cli-level=DEBUG", + "-W", + "ignore:Exception ignored in.*SharedMemory.__del__:UserWarning", + # Target the exact module rewrite warning path inside the configuration framework + "-W", + "ignore:Module already imported so cannot be rewritten; anyio:_pytest.warning_types.PytestAssertRewriteWarning", + # Bypass Pytest's internal proxy + "--capture=no", __file__, ] - print(f"Launching tests for {args.source}") + # main_app_logger.info(f"Launching tests for {args.source}") sys.exit(pytest.main(pytest_args)) diff --git a/fastapi/tests/test_eval.py b/fastapi/tests/test_eval.py new file mode 100644 index 0000000..a23b241 --- /dev/null +++ b/fastapi/tests/test_eval.py @@ -0,0 +1,812 @@ +# ============================================================================== +# SUPPRESS WARNINGS +# import warnings + +import pytest + +# warnings.filterwarnings( +# "ignore", category=FutureWarning, message=".*reduce_op` is deprecated.*" +# ) + +pytestmark = [ + pytest.mark.filterwarnings( + "ignore:.*anyio:_pytest.warning_types.PytestAssertRewriteWarning" + ), + pytest.mark.filterwarnings( + "ignore:Context managers for TensorRT types are deprecated:DeprecationWarning" + ), + pytest.mark.filterwarnings( + "ignore:Exception ignored in.*SharedMemory.__del__:UserWarning" + ), + # Global message fallback pattern captures local execution frames + pytest.mark.filterwarnings("ignore:.*reduce_op.*:FutureWarning"), +] + +# ============================================================================== +# LOGGING +import logging +import os +import sys + +logging.basicConfig( + level=logging.INFO, + # format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", + format="%(asctime)s [%(levelname)s] %(name)s (%(filename)s:%(lineno)d) - %(message)s", + handlers=[logging.StreamHandler(sys.stdout)], +) + +# Suppress low-delay reference block warnings from OpenCV/PyAV/FFmpeg +# os.environ["OPENCV_FFMPEG_LOGLEVEL"] = "-8" +# os.environ["OPENCV_LOG_LEVEL"] = "OFF" +logging.getLogger("libav").setLevel(logging.CRITICAL) +logging.getLogger("libav.hevc").setLevel(logging.CRITICAL) +logging.getLogger("matplotlib").setLevel(logging.WARNING) +logging.getLogger("ultralytics").setLevel(logging.WARNING) +# logger = trt.Logger(trt.Logger.WARNING) +# trt.init_libnvinfer_plugins(logger, "") +main_app_logger = logging.getLogger(__name__) + +# ============================================================================== +# IMPORTS + +import argparse +import asyncio +import csv +import ctypes +import faulthandler +import gc +import multiprocessing as mp +import sys +import threading +import time +import traceback +import tracemalloc +from pathlib import Path + +import cv2 +import psutil +import torch + +# import torch + +# Retrieve repo packages +REPO_DIR = str(Path(__file__).parent.parent) +sys.path.insert(1, REPO_DIR) +from base_test import ( + BaseTest, + download_eval_data, + fps_comparison_chart, +) +from include.default_configs import ( + CUSTOM_MODEL_FLAG_DEFAULT, + DEBUG_DEFAULT, + MODEL_NAME_DEFAULT, + THRESHOLD_VALUE, +) +from include.handlers import ( + get_test_handler, +) +from include.utils import ( + PipelineConfig, + ResourceTrackerFilter, + install_and_load_pip_package, + str2bool, +) +from metrics import DeviceAgnosticOnTheFlyEvaluator + +gdown = install_and_load_pip_package("gdown", attribute_name=None) + + +# ============================================================================== +# SETUP +# Hooks directly into the OS kernel signals to force Python to print a full +# stack traceback right before it dies, allowing you to see which line of +# Python code caused the hard crash +faulthandler.enable() + +try: + # Retain standard spawn mode to prevent CUDA context driver deadlocks + torch.multiprocessing.set_start_method("spawn", force=True) +except RuntimeError: + pass + +force_export = False +# target_width, target_height = 7680, 4320 +STATE_CAPTURE = False + +# Force Python's multiprocessing layer to quiet tracking cleanup race conditions +os.environ["PYTHONWARNINGS"] = "ignore" +sys.warnoptions.append("ignore") + + +# ========================================================================= +# ISOLATED BACKGROUND WORKER +# ========================================================================= + + +def isolated_detection_worker(init_args, test_args, res_queue): + device = test_args["device"] + detection_type = test_args["detection_type"] + sf_enabled = test_args["sf_enabled"] + video_name = test_args["video_name"] + gt_enabled = test_args["gt_enabled"] + + if device == "gpu" and torch.cuda.is_available(): + torch.cuda.synchronize() + torch.cuda.ipc_collect() + torch.cuda.empty_cache() + gc.collect() + + # Establish an accurate post-initialization hardware baseline + if str2bool(os.getenv("ENABLE_PROFILING", "False")): + tracemalloc.start() + + start_allocated, start_reserved = 0, 0 + if device == "gpu" and torch.cuda.is_available(): + torch.cuda.memory._record_memory_history( + enabled=True, + trace_alloc_max_entries=250000, + trace_alloc_record_context=True, + ) + + # This captures your baseline AFTER initialize_variables() is done + start_allocated = torch.cuda.memory_allocated(0) + start_reserved = torch.cuda.memory_reserved(0) + + try: + cv2.cuda.setBufferPoolUsage(False) + except AttributeError: + pass + else: + gc.collect() + process = psutil.Process(os.getpid()) + start_allocated = ( + process.memory_info().rss + ) # Reuse start_allocated container for host memory baseline + start_reserved = 0 + + try: + instance, _ = get_test_handler(TestEvalSmartFilteringDetections(), device) + + test_dir = Path(__file__).parent + video_dir = test_dir / "eval_data/Anti-UAV-Tracking-V0-8K" + vid_source = video_dir / f"{video_name}/{video_name}.mp4" + + if not vid_source.exists(): + _ = download_eval_data([video_name]) + + instance.source = str(vid_source) + instance.name = vid_source.stem + instance.result_dir = Path(init_args["result_dir"]) + instance.active_streams = init_args["active_streams"] + instance.__class__.benchmarks = init_args["benchmarks"] # Sandbox the metrics + + vid_dir = instance.result_dir / device + vid_dir.mkdir(parents=True, exist_ok=True) + os.environ["TEST_SUITE_RENDER_DIR"] = str(vid_dir) + + # if instance.source.startswith("rtsp"): + # short_name = "rtsp" + # else: + # short_name = Path(instance.source).stem + + # config definition + config = PipelineConfig( + SHARED_OUTPUT=str(instance.result_dir), # defined in context + CUSTOM_MODEL_FLAG=os.getenv("CUSTOM_MODEL_FLAG", CUSTOM_MODEL_FLAG_DEFAULT), + DEVICE=device.upper(), + OMIT_DETECTIONS_FLAG=True, + TEST_MODE=True, + DEBUG=os.getenv("DEBUG", DEBUG_DEFAULT), + DEBUG_FRAME_LIMIT=int(os.getenv("DEBUG_FRAME_LIMIT", 100)), + ENABLE_QUERYING=False, + MODEL_NAME=os.getenv("MODEL_NAME", MODEL_NAME_DEFAULT), + SMART_FILTERING_ENABLED=sf_enabled, + THRESHOLD_VALUE=int(os.getenv("THRESHOLD_VALUE", THRESHOLD_VALUE)), + DETECTION_TYPE=detection_type, + ) + + # INITIALIZE CLASS (mimic DeviceBaseHandler.__init__) ------------------------------ + instance.evaluator = DeviceAgnosticOnTheFlyEvaluator(device=device) + + instance.is_rtsp = str(instance.source).startswith("rtsp:/") + instance.active = True + instance.config = config + + # kwarg definition + instance._testMethodName = ( + f"{video_name}_sf_{detection_type}_{device}" + if sf_enabled + else f"{video_name}_yolo_{detection_type}_{device}" + ) + instance.video_output_name = f"{instance._testMethodName}.mp4" + instance.gt_enabled = gt_enabled + + instance.loop = asyncio.get_event_loop() + instance.frame_ready_event = asyncio.Event() + instance._is_stopped = False + instance._stop_lock = threading.Lock() # Local lock for this instance + instance.main_startup_event = mp.Event() + + instance.device = instance.config.DEVICE + instance.device_input = instance.config.device_input + instance.disp_w, instance.disp_h = instance.config.DISPLAY_FRAME_SIZE + instance.resize_h, instance.resize_w = [ + instance.config.MODEL_H, + instance.config.MODEL_W, + ] + + instance.setup_reader( + instance.config.TARGET_FPS, + instance.config.CLIP_DURATION, + startup_event=instance.main_startup_event, + ) + instance.initialize_variables() + instance.setup_threads() + instance.last_heartbeat = time.perf_counter() + + if STATE_CAPTURE: + main_app_logger.info( + "[DIAGNOSTIC] Registering system state baseline layout..." + ) + instance.baseline_before_start = instance.capture_state_snapshot() + + def orig_fn(profiler): + return instance.run_realtime_inference( + sf_enabled=instance.config.sf_enabled, + profiler=profiler, + gt_enabled=gt_enabled, + ) + + def profiler_fn(): + profiler = None + try: + if str2bool(os.getenv("ENABLE_PROFILING", "False")): + Profiler = install_and_load_pip_package( + "pyinstrument", attribute_name="Profiler" + ) + + profiler = Profiler(interval=0.005) # 5ms sampling interval + + # Telling the statistical sampler to skip recording exception blocks completely + # stops stack_sampler.py from ballooning RAM over long production runs. + if hasattr(profiler, "_sampler") and profiler._sampler: + profiler._sampler.trace_exceptions = False + + profiler.start() + + orig_fn(profiler) + + if str2bool(os.getenv("ENABLE_PROFILING", "False")): + # 2. Redirect standard error to the filter trap right before report compilation + original_stderr = sys.stderr + sys.stderr = ResourceTrackerFilter(original_stderr) + + try: + # Force standard stdout to flush out any lingering teardown messages + # BEFORE pyinstrument dumps its massive ASCII tree block. + sys.stdout.flush() + + # main_app_logger.info(profiler.output_text(color=True)) + # profiler.main_app_logger.info(color=True) + # prof_output = profiler.output_text(color=True) + # main_app_logger.info( + # f"\n=== LATENCY BREAKDOWN FOR {self.name} ({device}) ===\n{prof_output}\n", + # + # ) + + # Save a clean, interactive tree map for visual analysis + output_html_path = instance.output_path.replace( + ".mp4", "_profile.html" + ) + # output_html_path = f"/tmp/profile_{video_name}_{device}.html" + profiler.write_html(output_html_path) + main_app_logger.info( + f"[PROFILER] Performance tree map exported to {output_html_path}", + ) + + finally: + sys.stderr = original_stderr + if "profiler" in locals(): + try: + # Force the Python interpreter to detach pyinstrument's sampling hooks + sys.setprofile(None) + + # Completely decouple internal statistical sessions to drop C-heap frames + if hasattr(profiler, "_last_session"): + profiler._last_session = None + if hasattr(profiler, "last_session"): + profiler.last_session = None + + # Forcibly clear out internal memoryview strings caching tree metrics + if ( + hasattr(profiler, "session") + and profiler.session is not None + ): + if hasattr(profiler.session, "frame_groups"): + profiler.session.frame_groups = None + if hasattr(profiler.session, "samples"): + profiler.session.samples = [] + + # Purge compiled tree metrics structures + profiler.session = None + del profiler + except Exception: + pass + + # Trigger an immediate native Linux heap compression pass + # This grabs the newly abandoned pyinstrument C-heap blocks and + # flushes them to the OS before the fixture assessment snapshot fires! + gc.collect() + try: + libc = ctypes.CDLL("libc.so.6") + libc.malloc_trim(0) + except Exception: + pass + + except Exception: + traceback.print_exc() + + if str2bool(os.getenv("ENABLE_PROFILING", "False")) and hasattr( + instance, "process_thread" + ): + # Re-initialize the thread context using our safe profile wrapper proxy + instance.process_thread = threading.Thread(target=profiler_fn, daemon=True) + + if gt_enabled: + instance.VIDEO_GT_DETAILS = download_eval_data([instance.name]) + else: + instance.VIDEO_GT_DETAILS = None + + instance.start() + + while instance.active or not instance._is_stopped: + time.sleep(0.25) + if getattr(instance, "status", None) == "DONE": + break + + if ( + hasattr(instance, "process_thread") + and instance.process_thread is not None + ): + if not instance.process_thread.is_alive(): + main_app_logger.info( + "[TEST HARNESS] Background worker exited. Breaking loop.", + ) + break + + instance.stop_threads(["process_thread"]) + + # Force early hardware driver sweep before unbinding threads + if instance.device_input == "cuda" and torch.cuda.is_available(): + torch.cuda.synchronize() + torch.cuda.empty_cache() + torch.cuda.ipc_collect() + + gc.collect() + + try: + if STATE_CAPTURE: + # --- CAPTURE STATE POINT B (Right before cleanup) --- + main_app_logger.info( + "[DIAGNOSTIC] Gathering active execution workspace layouts..." + ) + state_after_stop = instance.capture_state_snapshot() + + # 3. Print the granular delta analysis out to your terminal screen + new_keys_generated, mutated_keys, static_keys = ( + instance.print_lifecycle_delta( + instance.baseline_before_start, + state_after_stop, + return_keys=True, + ) + ) + # self.config.DEBUG_FLAG and + if len(new_keys_generated) > 0 or len(mutated_keys) > 0: + # Inform the blueprint engine to eliminate every difference found between Point A and B + instance.stop_blueprint_executor(new_keys_generated, mutated_keys) + except Exception: + traceback.print_exc() + + assert instance.status == "DONE" + + # TEARDOWN + instance.execute_teardown() + + if str2bool(os.getenv("ENABLE_PROFILING", "False")): + gc.collect() + if ( + device == "gpu" and torch.cuda.is_available() + ): # self.device_input == "cuda" and torch.cuda.is_available(): + torch.cuda.synchronize() + torch.cuda.empty_cache() + instance.assess_memory( + device, instance.name, start_allocated, start_reserved + ) + + if len(instance.__class__.benchmarks) > 0: + final_metrics = instance.__class__.benchmarks[-1] + res_queue.put({"status": "success", "metrics": final_metrics}) + else: + res_queue.put({"status": "error", "error": "No benchmarks generated."}) + + except Exception as e: + res_queue.put( + {"status": "error", "error": str(e), "traceback": traceback.format_exc()} + ) + res_queue.put( + {"status": "error", "error": str(e), "traceback": traceback.format_exc()} + ) + + +# ========================================================================= +# PYTEST TEST HARNESS +# ========================================================================= +def pytest_generate_tests(metafunc): + """ + Pytest Hook: Generates a complete cross-product matrix + of (video_name x device) dynamically during collection phase. + """ + if ( + "video_name" in metafunc.fixturenames + and "device" in metafunc.fixturenames + and "detection_type" in metafunc.fixturenames + and "sf_enabled" in metafunc.fixturenames + ): + # Define video targets explicitly during collection + video_names = [f"video{i:02d}" for i in range(9, 21)] + # video_names = ["video16", "video17", "video12"] # , "video18"] + # video_names = ["video17"] # DEBUG: worst perf + # video_names = ["video12"] # DEBUG: worst perf + # video_names = ["video09"] + + # Read device target filters passed from your CLI parser args block + # Falls back to both types if running globally via '--device all' + device_input = os.getenv("TEST_SUITE_DEVICE_FILTER", "all") + devices = ["cpu", "gpu"] if device_input == "all" else [device_input] + + type_input = os.getenv("TEST_SUITE_DETECTION_FILTER", "all") + detection_types = ["motion", "object"] if type_input == "all" else [type_input] + + sf_input = os.getenv("TEST_SUITE_SF_FILTER", "None") + sf_flags = [True, False] if sf_input == "None" else [str2bool(sf_input)] + + # Tell Pytest to create an individual test instance for each discovered name + metafunc.parametrize("device", devices) + metafunc.parametrize("sf_enabled", sf_flags) + metafunc.parametrize("detection_type", detection_types) + metafunc.parametrize("video_name", video_names) + + +@pytest.fixture(scope="class") +def setup_context(request): + """Replaces setUpClass: Runs once per test class.""" + current_test_filename = Path(__file__).stem + test_dir = Path(__file__).parent + + # model_name = os.getenv("MODEL_NAME", MODEL_NAME_DEFAULT) + # Handler.__init__ (main items) + request.cls.is_rtsp = False + + # model_name = os.getenv("MODEL_NAME", MODEL_NAME_DEFAULT) + request.cls.result_dir = test_dir / f"{current_test_filename}_drone_results" + request.cls.result_dir.mkdir(parents=True, exist_ok=True) + + # Benchmark statistics + request.cls.benchmarks = [] + request.cls.csv_filename = "drone_eval.csv" + request.cls.csv_path = request.cls.result_dir / request.cls.csv_filename + + # request.cls.active = True + request.cls.active_streams = {} + + # RUN ALL PARAMETERIZED TESTS ---------------------------------------- + yield + + # FINAL CSV EXPORT -------------------------------------------------- + if request.cls.benchmarks: + # Filter and exclude rows that were interrupted or failed initialization due to an early pytest skip + request.cls.benchmarks = [ + r for r in request.cls.benchmarks if r and "Test Name" in r + ] + results = request.cls.benchmarks + for row in results: + if "gpu" in row["Test Name"].lower(): + match_name = row["Test Name"].replace("gpu", "cpu") + cpu_row = next( + (r for r in results if r["Test Name"] == match_name), None + ) + if cpu_row: + gpu_fps = float(row["Pipeline FPS (Target frames)"]) + cpu_fps = float(cpu_row["Pipeline FPS (Target frames)"]) + speedup = (gpu_fps / cpu_fps) if cpu_fps > 0 else 0 + row["Pipeline Speedup vs CPU"] = f"{speedup:.2f}x" + else: + row["Pipeline Speedup vs CPU"] = "N/A" + else: + row["Pipeline Speedup vs CPU"] = "Baseline (CPU)" + + if results: + # # Define video targets explicitly during collection + # video_names = [f"video{i:02d}" for i in range(1, 21)] + # ALL_VIDEO_GT_DETAILS = download_eval_data(video_names) + + keys = results[0].keys() + + with open(str(request.cls.csv_path), "w", newline="") as f: + dict_writer = csv.DictWriter(f, fieldnames=keys) + dict_writer.writeheader() + dict_writer.writerows(results) + main_app_logger.info(f"[FINAL] Benchmarks saved to {request.cls.csv_path}") + + main_app_logger.info("=" * 125) + main_app_logger.info( + f"{'Test Name':<25} | {'mAP_10':<5} | {'mAP_10_95':<10} | {'Pipeline FPS (Target)':<21} | {'Avg Frame Reading (ms)':<22} | {'Pipeline Speedup vs CPU':<15}", + ) + main_app_logger.info("-" * 125) + + for r in results: + main_app_logger.info( + f"{r['Test Name']:<25} | {r['mAP_10']:0.4f} | {r['mAP_10_95']:0.4f} | {r['Pipeline FPS (Target frames)']:<21} | {r['Avg Frame Reading (ms)']:<22} | {r.get('Pipeline Speedup vs CPU', 'N/A'):<10}" + ) + main_app_logger.info("=" * 125) + + chart_path = ( + request.cls.result_dir + / f"{request.cls.csv_filename.replace('.csv', '')}_pipelineFPS.png" + ) + fps_comparison_chart( + chart_path, results, fps_key="Pipeline FPS (Video frames)" + ) + + chart_path = ( + request.cls.result_dir + / f"{request.cls.csv_filename.replace('.csv', '')}_pipelineFPS_target.png" + ) + fps_comparison_chart( + chart_path, results, fps_key="Pipeline FPS (Target frames)" + ) + + chart_path = ( + request.cls.result_dir + / f"{request.cls.csv_filename.replace('.csv', '')}_sfdetectFPS_target.png" + ) + fps_comparison_chart(chart_path, results, fps_key="SF/Detection FPS") + + chart_path = ( + request.cls.result_dir + / f"{request.cls.csv_filename.replace('.csv', '')}_displayFPS_target.png" + ) + fps_comparison_chart(chart_path, results, fps_key="Display FPS") + + else: + main_app_logger.info( + "[WARN] Benchmarking matrix empty. Skipping final CSV and chart exports." + ) + + +@pytest.mark.usefixtures("setup_context") +class TestEvalSmartFilteringDetections(BaseTest): + """ + Pytest runner that spawns the isolated worker, waits for completion, + and merges the returned metrics into the main class for CSV/Chart generation. + """ + + benchmarks = [] # Class-level attribute required by _finalize_benchmarks + + # @pytest.mark.parametrize("device", ["gpu", "cpu"]) + # @pytest.mark.parametrize("sf_enabled", [True, False]) + # @pytest.mark.parametrize("detection_type", ["object", "motion"]) + def test_eval( + self, device, detection_type, sf_enabled, video_name, gt_enabled=True + ): + if detection_type == "motion" and not sf_enabled: + pytest.skip( + "Pure YOLO mode is structurally invalid for detection_type 'motion'.\n" + ) + + # Pull the values dynamically assigned by the setup_context fixture + init_args = { + # "source": self.__class__.source, + # "name": self.__class__.name, + "result_dir": str(self.__class__.result_dir), + "active_streams": {}, + "benchmarks": self.__class__.benchmarks, + } + + test_args = { + "device": device, + "detection_type": detection_type, + "sf_enabled": sf_enabled, + "video_name": video_name, + "gt_enabled": gt_enabled, + } + + main_app_logger.info( + f"\n{'=' * 60}\n" + f"[TEST HARNESS] Spawning isolated high-speed process for {video_name} (SF: {sf_enabled})...\n" + f"{'=' * 60}" + ) + + # Spawn a pristine Python process (identical to test_pipeline.py's stream_worker) + ctx = mp.get_context("spawn") + res_queue = ctx.Queue() + + worker_p = ctx.Process( + target=isolated_detection_worker, args=(init_args, test_args, res_queue) + ) + + worker_p.start() + worker_p.join() # Block Pytest until the isolated pipeline finishes + + # Extract and merge results + if not res_queue.empty(): + result = res_queue.get() + + if result["status"] == "error": + pytest.fail( + f"Pipeline crashed in worker process:\n{result.get('error')}\n{result.get('traceback')}" + ) + else: + metrics = result["metrics"] + + self.__class__.benchmarks.append(metrics) + + main_app_logger.info( + f"[TEST HARNESS] Worker returned successfully. Display FPS: {metrics.get('Display FPS')}" + ) + + # Basic functionality assertions + assert metrics is not None, "Metrics dictionary should not be None." + assert int(metrics.get("Output Frames", 0)) > 0, ( + "No frames were written to output." + ) + else: + pytest.fail("Worker process died unexpectedly without returning metrics.") + + +# ========================================================================= +# MAIN +# ========================================================================= +def get_pytest_filter_expression(args): + main_app_logger.info("=" * 50) + main_app_logger.info("TARGET SELECTION PREVIEW") + main_app_logger.info("=" * 50) + + filter_expression = Path(__file__).stem + # applied_subs = [] + + if args.sf_enabled is not None: + # Target exact parameter tokens generated by pytest parametrization + sf_str = "-True-" if args.sf_enabled else "-False-" + filter_expression += f" and {sf_str}" + # applied_subs.append(f"sf_enabled={args.sf_enabled}") + + if args.detection_type: + filter_expression += f" and {args.detection_type}" + + # Target hardware context selection filter applies globally across all test cases + if args.device.lower() != "all": + main_app_logger.info(f" 💻 Hardware Context Constraint: {args.device.upper()}") + filter_expression = f"({filter_expression}) and {args.device.lower()}" + else: + main_app_logger.info(" 💻 Hardware Context Constraint: ALL AVAILABLE") + + main_app_logger.info("=" * 50) + main_app_logger.info(f"COMPILED PYTEST KEYWORD EXPRESSION: {filter_expression}") + main_app_logger.info("=" * 50) + + return filter_expression + + +if __name__ == "__main__": + # TEST ARGUMENTS + parser = argparse.ArgumentParser(description="Run Video Detection Pipeline Tests") + parser.add_argument( + "-s", + "--source", + type=str, + default="anduril_swarm_8K.mp4", + help="Video filename (located in /inputs)", + ) + + # MODEL TO USE + parser.add_argument( + "--no-custom", + action="store_false", + dest="custom_model_flag", + help="Enable if using Ultralytics YOLO model", + ) + parser.add_argument( + "-m", + "--model", + type=str, + default="drone_detection", + dest="model_name", + help="Name of model. Required if `--no-custom` is enabled. [Default: drone_detection]", + ) + + # Filter tests + parser.add_argument( + "--device", + type=str, + default="all", + choices=["cpu", "gpu", "all"], + help="Filter by device (cpu or gpu)", + ) + parser.add_argument( + "--type", + type=str, + choices=["object", "motion"], + dest="detection_type", + help="Filter by detection type (object or motion)", + ) + parser.add_argument( + "--sf", + action="store_true", + default=None, + dest="sf_enabled", + help="Filter by Smart Filtering", + ) + parser.add_argument( + "--no-sf", + action="store_false", + default=None, + dest="sf_enabled", + help="Filter by Smart Filtering", + ) + + # DEBUGGING + parser.add_argument( + "--debug", + action="store_true", + help="Enable debug message and save intermediate images for Smart Filtering tests", + ) + parser.add_argument( + "-n", + type=int, + default=100, + dest="debug_frame_limit", + help="Number of frames used for debugging [Default: 100]", + ) + + # PROFILING + parser.add_argument( + "--profile", + action="store_true", + help="Enable profiling", + ) + + args = parser.parse_args() + + # UPDATE ENVIRONMENTAL VARIABLES + os.environ["VIDEO_FILENAME"] = args.source + os.environ["CUSTOM_MODEL_FLAG"] = "True" if args.custom_model_flag else "False" + os.environ["MODEL_NAME"] = args.model_name + os.environ["DEBUG"] = "1" if args.debug else "0" + os.environ["DEBUG_FRAME_LIMIT"] = str(args.debug_frame_limit) + os.environ["ENABLE_PROFILING"] = "True" if args.profile else "False" + + # detection_type, device, sf_enabled + filter_expression = get_pytest_filter_expression(args) + + # PYTEST COMMAND + pytest_args = [ + "-k", + filter_expression, + "-s", + "-v", + # "--log-cli-level=DEBUG", + "-W", + "ignore:Exception ignored in.*SharedMemory.__del__:UserWarning", + # Target the exact module rewrite warning path inside the configuration framework + "-W", + "ignore:Module already imported so cannot be rewritten; anyio:_pytest.warning_types.PytestAssertRewriteWarning", + # Bypass Pytest's internal proxy + "--capture=no", + __file__, + ] + + # main_app_logger.info(f"Launching tests for {args.source}") + + sys.exit(pytest.main(pytest_args)) diff --git a/fastapi/tests/test_model.py b/fastapi/tests/test_model.py index ffdc3bd..08920de 100644 --- a/fastapi/tests/test_model.py +++ b/fastapi/tests/test_model.py @@ -1,49 +1,505 @@ +# ============================================================================== +# SUPPRESS WARNINGS +# import warnings + +import pytest + +# warnings.filterwarnings( +# "ignore", category=FutureWarning, message=".*reduce_op` is deprecated.*" +# ) + +pytestmark = [ + pytest.mark.filterwarnings( + "ignore:.*anyio:_pytest.warning_types.PytestAssertRewriteWarning" + ), + pytest.mark.filterwarnings( + "ignore:Context managers for TensorRT types are deprecated:DeprecationWarning" + ), + pytest.mark.filterwarnings( + "ignore:Exception ignored in.*SharedMemory.__del__:UserWarning" + ), + # Global message fallback pattern captures local execution frames + pytest.mark.filterwarnings("ignore:.*reduce_op.*:FutureWarning"), +] + +# ============================================================================== +# LOGGING +import logging +import os +import sys + +logging.basicConfig( + level=logging.INFO, + # format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", + format="%(asctime)s [%(levelname)s] %(name)s (%(filename)s:%(lineno)d) - %(message)s", + handlers=[logging.StreamHandler(sys.stdout)], +) + +# Suppress low-delay reference block warnings from OpenCV/PyAV/FFmpeg +# os.environ["OPENCV_FFMPEG_LOGLEVEL"] = "-8" +# os.environ["OPENCV_LOG_LEVEL"] = "OFF" +logging.getLogger("libav").setLevel(logging.CRITICAL) +logging.getLogger("libav.hevc").setLevel(logging.CRITICAL) +logging.getLogger("matplotlib").setLevel(logging.WARNING) +logging.getLogger("ultralytics").setLevel(logging.WARNING) +# logger = trt.Logger(trt.Logger.WARNING) +# trt.init_libnvinfer_plugins(logger, "") +main_app_logger = logging.getLogger(__name__) + +# ============================================================================== +# IMPORTS + +# os.environ["OMP_NUM_THREADS"] = "2" +# os.environ["MKL_NUM_THREADS"] = "2" +# os.environ["PYTORCH_ALLOC_CONF"] = "expandable_segments:True" +# try: +# torch.set_num_interop_threads(2) # 1) +# torch.set_num_threads(4) # 2) +# except RuntimeError: +# # Safe graceful fallback if a process-level fork duplicated context maps +# pass import argparse +import asyncio import csv +import faulthandler import gc -import inspect -import logging -import os +import multiprocessing as mp import sys +import threading import time -import types +import traceback +import tracemalloc from pathlib import Path -import pytest -import tensorrt as trt +import cv2 +import psutil import torch -sys.path.insert(1, str(Path(__file__).parent.parent)) +# import torch + +# Retrieve repo packages +REPO_DIR = str(Path(__file__).parent.parent) +sys.path.insert(1, REPO_DIR) +from base_test import ( + BaseTest, +) from include.default_configs import ( CUSTOM_MODEL_FLAG_DEFAULT, DEBUG_DEFAULT, MODEL_NAME_DEFAULT, THRESHOLD_VALUE, ) +from include.detectors import GeneralObjectDetector from include.handlers import ( - CPUStreamHandler, - DeviceBaseHandler, - GPUStreamHandler, + get_test_handler, +) +from include.utils import ( + PipelineConfig, + str2bool, ) -from include.models import get_model -from include.utils import PipelineConfig + +# objgraph = install_and_load_pip_package("objgraph", attribute_name=None) +# torch.set_grad_enabled(False) + +# ============================================================================== +# MONKEY PATCH +# Cache the hardware availability state globally. +# This prevents internal framework loops from triggering driver/NVML checks per frame. +# _cuda_available = torch.cuda.is_available() + + +# def _patched_is_available(): +# return _cuda_available + + +# torch.cuda.is_available = _patched_is_available + +# ============================================================================== +# SETUP +# Hooks directly into the OS kernel signals to force Python to print a full +# stack traceback right before it dies, allowing you to see which line of +# Python code caused the hard crash +faulthandler.enable() try: + # Retain standard spawn mode to prevent CUDA context driver deadlocks torch.multiprocessing.set_start_method("spawn", force=True) except RuntimeError: pass -logging.getLogger("matplotlib").setLevel(logging.WARNING) -logger = trt.Logger(trt.Logger.WARNING) -trt.init_libnvinfer_plugins(logger, "") +force_export = False +# target_width, target_height = 7680, 4320 +STATE_CAPTURE = False +# Force Python's multiprocessing layer to quiet tracking cleanup race conditions +os.environ["PYTHONWARNINGS"] = "ignore" +sys.warnoptions.append("ignore") -DEBUG_FLAG_DEFAULT = True if DEBUG_DEFAULT == "1" else False -os.environ["OMP_NUM_THREADS"] = "1" -force_export = False +# ========================================================================= +# ISOLATED BACKGROUND WORKER +# ========================================================================= + + +def isolated_detection_worker(init_args, test_args, res_queue): + device = test_args["device"] + detection_type = test_args["detection_type"] + sf_enabled = test_args["sf_enabled"] + # gt_enabled = test_args["gt_enabled"] + + if device == "gpu" and torch.cuda.is_available(): + torch.cuda.synchronize() + torch.cuda.ipc_collect() + torch.cuda.empty_cache() + gc.collect() + + # Establish an accurate post-initialization hardware baseline + if str2bool(os.getenv("ENABLE_PROFILING", "False")): + tracemalloc.start() + + start_allocated, start_reserved = 0, 0 + if device == "gpu" and torch.cuda.is_available(): + torch.cuda.memory._record_memory_history( + enabled=True, + trace_alloc_max_entries=250000, + trace_alloc_record_context=True, + ) + + # This captures your baseline AFTER initialize_variables() is done + start_allocated = torch.cuda.memory_allocated(0) + start_reserved = torch.cuda.memory_reserved(0) + + try: + cv2.cuda.setBufferPoolUsage(False) + except AttributeError: + pass + else: + gc.collect() + process = psutil.Process(os.getpid()) + start_allocated = ( + process.memory_info().rss + ) # Reuse start_allocated container for host memory baseline + start_reserved = 0 + + try: + instance, _ = get_test_handler(TestModel(), device) + + instance.source = init_args["source"] + instance.name = init_args["name"] + instance.result_dir = Path(init_args["result_dir"]) + instance.active_streams = init_args["active_streams"] + instance.__class__.benchmarks = init_args["benchmarks"] # Sandbox the metrics + + # vid_dir = instance.result_dir / device + # vid_dir.mkdir(parents=True, exist_ok=True) + # os.environ["TEST_SUITE_RENDER_DIR"] = str(vid_dir) + + # if instance.source.startswith("rtsp"): + # short_name = "rtsp" + # else: + # short_name = Path(instance.source).stem + + # config definition + model_name = os.getenv("MODEL_NAME", MODEL_NAME_DEFAULT) + config = PipelineConfig( + SHARED_OUTPUT=str(instance.result_dir), # defined in context + CUSTOM_MODEL_FLAG=os.getenv("CUSTOM_MODEL_FLAG", CUSTOM_MODEL_FLAG_DEFAULT), + DEVICE=device.upper(), + OMIT_DETECTIONS_FLAG=True, + TEST_MODE=True, + DEBUG=os.getenv("DEBUG", DEBUG_DEFAULT), + DEBUG_FRAME_LIMIT=int(os.getenv("DEBUG_FRAME_LIMIT", 100)), + ENABLE_QUERYING=False, + MODEL_NAME=model_name, + SMART_FILTERING_ENABLED=sf_enabled, + THRESHOLD_VALUE=int(os.getenv("THRESHOLD_VALUE", THRESHOLD_VALUE)), + DETECTION_TYPE=detection_type, + ) + + # INITIALIZE CLASS (mimic DeviceBaseHandler.__init__) ------------------------------ + instance.is_rtsp = str(instance.source).startswith("rtsp:/") + instance.active = True + instance.config = config + + # kwarg definition + instance._testMethodName = f"{model_name}_{detection_type}_{device}" + # instance.video_output_name = ( + # f"{instance._testMethodName}_{short_name}.mp4" + # ) + + instance.loop = asyncio.get_event_loop() + instance.frame_ready_event = asyncio.Event() + instance._is_stopped = False + instance._stop_lock = threading.Lock() # Local lock for this instance + instance.main_startup_event = mp.Event() + + instance.device = instance.config.DEVICE + instance.device_input = instance.config.device_input + instance.disp_w, instance.disp_h = instance.config.DISPLAY_FRAME_SIZE + instance.resize_h, instance.resize_w = [ + instance.config.MODEL_H, + instance.config.MODEL_W, + ] + + instance.setup_reader( + instance.config.TARGET_FPS, + instance.config.CLIP_DURATION, + startup_event=instance.main_startup_event, + ) + instance.initialize_variables() + instance.setup_threads() + instance.last_heartbeat = time.perf_counter() + + if STATE_CAPTURE: + main_app_logger.info( + "[DIAGNOSTIC] Registering system state baseline layout..." + ) + instance.baseline_before_start = instance.capture_state_snapshot() + + # def profiler_fn(): + # profiler = None + # try: + # if str2bool(os.getenv("ENABLE_PROFILING", "False")): + # Profiler = install_and_load_pip_package( + # "pyinstrument", attribute_name="Profiler" + # ) + + # profiler = Profiler(interval=0.005) # 5ms sampling interval + + # # Telling the statistical sampler to skip recording exception blocks completely + # # stops stack_sampler.py from ballooning RAM over long production runs. + # if hasattr(profiler, "_sampler") and profiler._sampler: + # profiler._sampler.trace_exceptions = False + + # profiler.start() + + # # orig_fn(profiler) + # instance.run_realtime_inference( + # sf_enabled=instance.config.sf_enabled, + # profiler=profiler, + # gt_enabled=gt_enabled, + # ) + + # if str2bool(os.getenv("ENABLE_PROFILING", "False")): + # # 2. Redirect standard error to the filter trap right before report compilation + # original_stderr = sys.stderr + # sys.stderr = ResourceTrackerFilter(original_stderr) + + # try: + # # Force standard stdout to flush out any lingering teardown messages + # # BEFORE pyinstrument dumps its massive ASCII tree block. + # sys.stdout.flush() + + # # main_app_logger.info(profiler.output_text(color=True)) + # # profiler.main_app_logger.info(color=True) + # # prof_output = profiler.output_text(color=True) + # # main_app_logger.info( + # # f"\n=== LATENCY BREAKDOWN FOR {self.name} ({device}) ===\n{prof_output}\n", + # # + # # ) + + # # Save a clean, interactive tree map for visual analysis + # output_html_path = instance.output_path.replace( + # ".mp4", "_profile.html" + # ) + # # output_html_path = f"/tmp/profile_{video_name}_{device}.html" + # profiler.write_html(output_html_path) + # main_app_logger.info( + # f"[PROFILER] Performance tree map exported to {output_html_path}", + # ) + + # finally: + # sys.stderr = original_stderr + # if "profiler" in locals(): + # try: + # # Force the Python interpreter to detach pyinstrument's sampling hooks + # sys.setprofile(None) + + # # Completely decouple internal statistical sessions to drop C-heap frames + # if hasattr(profiler, "_last_session"): + # profiler._last_session = None + # if hasattr(profiler, "last_session"): + # profiler.last_session = None + + # # Forcibly clear out internal memoryview strings caching tree metrics + # if ( + # hasattr(profiler, "session") + # and profiler.session is not None + # ): + # if hasattr(profiler.session, "frame_groups"): + # profiler.session.frame_groups = None + # if hasattr(profiler.session, "samples"): + # profiler.session.samples = [] + + # # Purge compiled tree metrics structures + # profiler.session = None + # del profiler + # except Exception: + # pass + + # # Trigger an immediate native Linux heap compression pass + # # This grabs the newly abandoned pyinstrument C-heap blocks and + # # flushes them to the OS before the fixture assessment snapshot fires! + # gc.collect() + # try: + # libc = ctypes.CDLL("libc.so.6") + # libc.malloc_trim(0) + # except Exception: + # pass + + # except Exception: + # traceback.print_exc() + + # if str2bool(os.getenv("ENABLE_PROFILING", "False")) and hasattr( + # instance, "process_thread" + # ): + # # Re-initialize the thread context using our safe profile wrapper proxy + # instance.process_thread = threading.Thread(target=profiler_fn, daemon=True) + + # instance.VIDEO_GT_DETAILS = None + # instance.duration_target = 30 + + # instance.start() + + # while instance.active or not instance._is_stopped: + # time.sleep(0.25) + # if getattr(instance, "status", None) == "DONE": + # break + + # if hasattr(instance, "process_thread") and instance.process_thread is not None: + # if not instance.process_thread.is_alive(): + # main_app_logger.info( + # "[TEST HARNESS] Background worker exited. Breaking loop.", + # ) + # break + + # instance.stop_threads(["process_thread"]) + + # Run the actual model loader + instance.processor = GeneralObjectDetector( + instance.config, + device=instance.device_input, + timer_enabled=False, + resize_hw=(instance.resize_h, instance.resize_w), + frame_hw=(instance.frame_height, instance.frame_width), + target_fps=instance.target_fps, + result_dir=instance.result_dir, + run_name=instance._testMethodName, + debug_frame_limit=-1, + ) + + total_session_start = time.perf_counter() + + print("Running model...", flush=True) + results = instance.processor.model.predict( + source=instance.source, + imgsz=(instance.frame_height, instance.frame_width), + batch=1, + device=instance.config.device_input, + stream=any(x in instance.source for x in [".mp4", "rtsp"]), + conf=instance.config.DETECTION_THRESHOLD, + iou=instance.config.IOU_THRESHOLD, + show=False, + save=True, + project=str(instance.config.SHARED_OUTPUT), + name="predict_results", + exist_ok=True, # overwrite if folder exists + data={ + "names": { + i: name for i, name in enumerate(instance.processor.label_source) + } + }, + ) + + frame_cnt = 0 + total_model_preprocess = 0.0 + total_model_inference = 0.0 + total_model_postprocess = 0.0 + for result in results: + frame_cnt += 1 + # Each iteration computes and yields the next frame's latency + total_model_preprocess += result.speed.get("preprocess", 0.0) + total_model_inference += result.speed.get("inference", 0.0) + total_model_postprocess += result.speed.get("postprocess", 0.0) + + # Capture the true real-world duration across all operational processing layers + real_world_latency_ms = (time.perf_counter() - total_session_start) * 1000 + + print("Summarizing run...", flush=True) + instance._finalize_benchmarks( + real_world_latency_ms, + frame_cnt, + total_model_preprocess, + total_model_inference, + total_model_postprocess, + ) + instance.stop() + + # Force early hardware driver sweep before unbinding threads + if instance.device_input == "cuda" and torch.cuda.is_available(): + torch.cuda.synchronize() + torch.cuda.empty_cache() + torch.cuda.ipc_collect() + + gc.collect() + + try: + if STATE_CAPTURE: + # --- CAPTURE STATE POINT B (Right before cleanup) --- + main_app_logger.info( + "[DIAGNOSTIC] Gathering active execution workspace layouts..." + ) + state_after_stop = instance.capture_state_snapshot() + + # 3. Print the granular delta analysis out to your terminal screen + new_keys_generated, mutated_keys, static_keys = ( + instance.print_lifecycle_delta( + instance.baseline_before_start, + state_after_stop, + return_keys=True, + ) + ) + # self.config.DEBUG_FLAG and + if len(new_keys_generated) > 0 or len(mutated_keys) > 0: + # Inform the blueprint engine to eliminate every difference found between Point A and B + instance.stop_blueprint_executor(new_keys_generated, mutated_keys) + except Exception: + traceback.print_exc() + + assert instance.status == "DONE" + + # TEARDOWN + instance.execute_teardown() + + if str2bool(os.getenv("ENABLE_PROFILING", "False")): + gc.collect() + if ( + device == "gpu" and torch.cuda.is_available() + ): # self.device_input == "cuda" and torch.cuda.is_available(): + torch.cuda.synchronize() + torch.cuda.empty_cache() + instance.assess_memory( + device, instance.name, start_allocated, start_reserved + ) + + if len(instance.__class__.benchmarks) > 0: + final_metrics = instance.__class__.benchmarks[-1] + res_queue.put({"status": "success", "metrics": final_metrics}) + else: + res_queue.put({"status": "error", "error": "No benchmarks generated."}) + + except Exception as e: + res_queue.put( + {"status": "error", "error": str(e), "traceback": traceback.format_exc()} + ) + res_queue.put( + {"status": "error", "error": str(e), "traceback": traceback.format_exc()} + ) +# ========================================================================= +# PYTEST TEST HARNESS +# ========================================================================= @pytest.fixture(scope="class") def setup_context(request): """Replaces setUpClass: Runs once per test class.""" @@ -53,11 +509,6 @@ def setup_context(request): main_path = test_dir.parent video_dir = main_path / "inputs" - request.cls._shared_model = None - request.cls._shared_model_path = None - request.cls._shared_model_device = None - request.cls._shared_model_sf_enabled = None - request.cls.source = os.getenv("VIDEO_FILENAME", "anduril_swarm_8K.mp4") is_rtsp = "rtsp://" in request.cls.source if not is_rtsp: @@ -76,7 +527,6 @@ def setup_context(request): request.cls.name = "rtsp" request.cls.is_rtsp = True - # Add any shared state to the class model_name = os.getenv("MODEL_NAME", MODEL_NAME_DEFAULT) request.cls.result_dir = test_dir / f"{current_test_filename}_results/{model_name}" request.cls.result_dir.mkdir(parents=True, exist_ok=True) @@ -87,7 +537,7 @@ def setup_context(request): request.cls.csv_path = request.cls.result_dir / request.cls.csv_filename # Initialize class vars - request.cls.active = True + # request.cls.active = True request.cls.active_streams = {} # RUN ALL PARAMETERIZED TESTS ---------------------------------------- @@ -95,254 +545,99 @@ def setup_context(request): # FINAL CSV EXPORT -------------------------------------------------- if request.cls.benchmarks: + # Filter and exclude rows that were interrupted or failed initialization due to an early pytest skip + request.cls.benchmarks = [ + r for r in request.cls.benchmarks if r and "Test Name" in r + ] results = request.cls.benchmarks - keys = results[0].keys() - - with open(str(request.cls.csv_path), "w", newline="") as f: - dict_writer = csv.DictWriter(f, fieldnames=keys) - dict_writer.writeheader() - dict_writer.writerows(results) + if results: + keys = results[0].keys() - print(f"\n[FINAL] Benchmarks saved to {request.cls.csv_filename}", flush=True) + with open(str(request.cls.csv_path), "w", newline="") as f: + dict_writer = csv.DictWriter(f, fieldnames=keys) + dict_writer.writeheader() + dict_writer.writerows(results) + print( + f"\n[FINAL] Benchmarks saved to {request.cls.csv_filename}", flush=True + ) -@pytest.fixture(autouse=True) -def each_test_setup(request): - test_class_self = request.instance - if torch.cuda.is_available(): - torch.cuda.synchronize() - - device = request.node.callspec.params.get("device") - os.environ["DEVICE"] = device - detection_type = "object" # request.node.callspec.params.get("detection_type") - sf_enabled = False # request.node.callspec.params.get("sf_enabled") - model_name = os.getenv("MODEL_NAME", MODEL_NAME_DEFAULT) - test_class_self._testMethodName = f"{model_name}_{detection_type}_{device}" - - render_dir = test_class_self.result_dir / f"{device}" - render_dir.mkdir(exist_ok=True) - - test_class_self.config = PipelineConfig( - # GENERAL - SHARED_OUTPUT=render_dir, # os.getenv("SHARED_OUTPUT",SHARED_OUTPUT_DEFAULT), - CUSTOM_MODEL_FLAG=os.getenv("CUSTOM_MODEL_FLAG", CUSTOM_MODEL_FLAG_DEFAULT), - DEVICE=device.upper(), - OMIT_DETECTIONS_FLAG=True, - TEST_MODE=False, - DEBUG=os.getenv("DEBUG", DEBUG_DEFAULT), - DEBUG_FRAME_LIMIT=os.getenv("DEBUG_FRAME_LIMIT", 100), - # VIDEO WRITER - # CLIP_DURATION=None, - # VDMS - ENABLE_QUERYING=False, - DBHOST="0.0.0.0", - DBPORT=55555, - # MODEL - MODEL_NAME=model_name, - # MODEL_H=360, - # PIPELINE - SMART_FILTERING_ENABLED=sf_enabled, - THRESHOLD_VALUE=int(os.getenv("THRESHOLD_VALUE", THRESHOLD_VALUE)), - # VISUALIZATION - DETECTION_TYPE=detection_type, - ) +@pytest.mark.usefixtures("setup_context") +class TestModel(BaseTest): + """ + Pytest runner that spawns the isolated worker, waits for completion, + and merges the returned metrics into the main class for CSV/Chart generation. + """ - test_class_self.device = test_class_self.config.DEVICE - test_class_self.device_input = test_class_self.config.device_input - test_class_self.resize_h, test_class_self.resize_w = [ - test_class_self.config.MODEL_H, - test_class_self.config.MODEL_W, - ] + benchmarks = [] # Class-level attribute required by _finalize_benchmarks - # Resolve concrete handler class type - HandlerClass = GPUStreamHandler if device == "gpu" else CPUStreamHandler - # HandlerClass.pipeline_fn = test_class_self.__class__.pipeline_fn + @pytest.mark.parametrize("device", ["gpu", "cpu"]) + def test_model(self, device): + # Pull the values dynamically assigned by the setup_context fixture + init_args = { + "source": self.__class__.source, + "name": self.__class__.name, + "result_dir": str(self.__class__.result_dir), + "active_streams": {}, + "benchmarks": self.__class__.benchmarks, + } - # Dynamically re-bind backend methods to this execution instance - handler_classes = [HandlerClass, DeviceBaseHandler] - all_method_names = set() + os.environ["DEVICE"] = device + detection_type = "object" # request.node.callspec.params.get("detection_type") + sf_enabled = False # request.node.callspec.params.get("sf_enabled") + gt_enabled = False - for cls in handler_classes: - for name, attr in inspect.getmembers(cls, predicate=inspect.isfunction): - all_method_names.add(name) + test_args = { + "device": device, + "detection_type": detection_type, + "sf_enabled": sf_enabled, + "gt_enabled": gt_enabled, + } - for method_name in all_method_names: - source_obj = ( - HandlerClass if hasattr(HandlerClass, method_name) else DeviceBaseHandler + main_app_logger.info( + f"\n{'=' * 60}\n" + f"[TEST HARNESS] Spawning isolated high-speed process for {self.__class__.name} (SF: {sf_enabled})...\n" + f"{'=' * 60}" ) - if hasattr(source_obj, method_name): - raw_func = getattr(source_obj, method_name) - if ( - not hasattr(test_class_self.__class__, method_name) - or method_name == "pipeline_fn" - ): - setattr( - test_class_self, - method_name, - types.MethodType(raw_func, test_class_self), - ) - - # 3. FORCE NATIVE PIPELINE PROVISIONING - test_class_self.setup_reader( - test_class_self.config.TARGET_FPS, test_class_self.config.CLIP_DURATION - ) - test_class_self.initialize_variables() - test_class_self.setup_model(None) - test_class_self.prepare_pipeline() - - # test_class_self.run _realtime_inference = types.MethodType( - # test_class_self.__class__.run_realtime_inference, test_class_self - # ) - - test_class_self.setup_threads() - - # RUN PARAMETERIZED TEST ---------------------------------------- - yield - - # tearDown LOGIC -------------------------------------------------- - print( - f"\n--- [TearDown] Memory Before Cleanup ({test_class_self._testMethodName}) ---" - ) - - # test_class_self.stop() - - # Nullify the model reference to trigger automatic cleanup - if hasattr(test_class_self, "model") and test_class_self.model is not None: - # Check if it's an Ultralytics model with a predictor - predictor = getattr(test_class_self.model, "predictor", None) - if predictor is not None: - try: - predictor.results = [] - except AttributeError: - pass - del test_class_self.model - test_class_self.model = None - # Clear the singleton references to force a reload - TestModelDetections._shared_model = None - TestModelDetections._shared_model_path = None - TestModelDetections._shared_model_device = None + # Spawn a pristine Python process (identical to test_pipeline.py's stream_worker) + ctx = mp.get_context("spawn") + res_queue = ctx.Queue() - # Force Python to run destructors NOW while streams are still alive - gc.collect() - if torch.cuda.is_available(): - torch.cuda.synchronize() # Final sync to clear event queue - torch.cuda.empty_cache() - torch.cuda.ipc_collect() # Critical for shared memory cleanup - time.sleep(0.2) - - -@pytest.mark.usefixtures("setup_context") -class TestModelDetections: - # SETUP -------------------------------------------- - - @pytest.mark.parametrize( - "device", - [ - ("cpu"), - ("gpu"), - ], - ) - def test_model(self, device): - """Unified test runner for all configurations.""" - - # Run the actual model loader - self.get_model_by_device(device, sf_enabled=self.config.sf_enabled) - - total_session_start = time.perf_counter() - - results = self.model.predict( - source=self.source, - imgsz=(self.frame_height, self.frame_width), - batch=1, - device=self.config.device_input, - stream=True, - conf=self.config.DETECTION_THRESHOLD, - iou=self.config.IOU_THRESHOLD, - show=False, - save=True, - project=str(self.config.SHARED_OUTPUT), - name="predict_results", - exist_ok=True, # overwrite if folder exists - data={"names": {i: name for i, name in enumerate(self.label_source)}}, + worker_p = ctx.Process( + target=isolated_detection_worker, args=(init_args, test_args, res_queue) ) - frame_cnt = 0 - total_model_preprocess = 0.0 - total_model_inference = 0.0 - total_model_postprocess = 0.0 - for result in results: - frame_cnt += 1 - # Each iteration computes and yields the next frame's latency - total_model_preprocess += result.speed.get("preprocess", 0.0) - total_model_inference += result.speed.get("inference", 0.0) - total_model_postprocess += result.speed.get("postprocess", 0.0) + worker_p.start() + worker_p.join() # Block Pytest until the isolated pipeline finishes - # Capture the true real-world duration across all operational processing layers - real_world_latency_ms = (time.perf_counter() - total_session_start) * 1000 + # Extract and merge results + if not res_queue.empty(): + result = res_queue.get() - self._finalize_benchmarks( - real_world_latency_ms, - frame_cnt, - total_model_preprocess, - total_model_inference, - total_model_postprocess, - ) + if result["status"] == "error": + pytest.fail( + f"Pipeline crashed in worker process:\n{result.get('error')}\n{result.get('traceback')}" + ) + else: + metrics = result["metrics"] - # HELPERS -------------------------------------------- - def get_model_by_device(self, device, sf_enabled=False): - """Singleton loader: only loads if device changes or model is missing.""" - if ( - sf_enabled - and (self.frame_width * self.frame_height) - <= self.config.SMART_FILTERING_PIXEL_CONSTRAINT - ): - sf_enabled = False - - if ( - TestModelDetections._shared_model is not None - and TestModelDetections._shared_model_device == device - and TestModelDetections._shared_model_sf_enabled == sf_enabled - ): - self.model = TestModelDetections._shared_model - self.model_path = TestModelDetections._shared_model_path - return - - run_platform_name = "engine" if "cuda" in self.device_input else "openvino" - - if self.config.CUSTOM_MODEL_FLAG: - dir_path = "/home/resources/models/ultralytics/custom_models" - else: - dir_path = f"/home/resources/models/ultralytics/{self.config.MODEL_NAME}/{self.config.MODEL_PRECISION}" - - ( - TestModelDetections._shared_model, - TestModelDetections._shared_model_path, - self.label_source, - ) = get_model( - Path(dir_path), - self.config.MODEL_NAME, - run_platform_name, - self.device_input, - batch=self.config.MODEL_MAX_BATCH_SIZE, - force_export=force_export, - sf_enabled=sf_enabled, - model_h=self.resize_h, - model_w=self.resize_w, - ) + self.__class__.benchmarks.append(metrics) - TestModelDetections._shared_model_device = device - TestModelDetections._shared_model_sf_enabled = sf_enabled - self.model = TestModelDetections._shared_model - # self.model.half() - self.model_path = TestModelDetections._shared_model_path + main_app_logger.info( + f"[TEST HARNESS] Worker returned successfully. Model Est. FPS: {metrics.get('Model Est. FPS')}" + ) - W, H = self.resize_w, self.resize_h - if not sf_enabled: - W, H = self.frame_width, self.frame_height - self.model_warmup(H, W) + # Basic functionality assertions + assert metrics is not None, "Metrics dictionary should not be None." + assert int(metrics.get("Frames Processed", 0)) > 0, ( + "No frames were written to output." + ) + else: + pytest.fail("Worker process died unexpectedly without returning metrics.") + # HELPERS -------------------------------------------- def _finalize_benchmarks( self, real_world_latency_ms, @@ -391,271 +686,24 @@ def _finalize_benchmarks( def setup_threads(self): """Overrides handlers.py to bind threads dynamically to the test instance.""" pass - # self.setup_shared_memory() # Natively sets up Manager dictionary and buffers - - # # Executor for Async YOLO tasks and FFmpeg re-encoding - # self.executor = ThreadPoolExecutor(max_workers=self.config.MAX_WORKERS) - # # self.clip_executor = ThreadPoolExecutor(max_workers=self.config.MAX_WORKERS) - - # print( - # f"sf_enabled: {self.config.sf_enabled}\tTEST_MODE: {self.config.TEST_MODE}", - # flush=True, - # ) - - # # Open up looking-ahead buffer horizons to eliminate 8K queue backpressure stalls - # self.signal_queue = mp.Queue(maxsize=128) # 10) - # self.render_queue = mp.Queue(maxsize=256) # 64) - - # test_dir = os.getenv( - # "TEST_SUITE_RENDER_DIR", str(Path(self.config.SHARED_OUTPUT)) - # ) - # os.makedirs(test_dir, exist_ok=True) - - # if self.source.startswith("rtsp"): - # short_name = "rtsp" - # else: - # short_name = Path(self.source).stem - # video_output_name = f"{self._testMethodName}_{short_name}_{self.device}.mp4" - # out_path = os.path.join(test_dir, video_output_name) - # self.output_path = ( - # out_path # f"{self.config.SHARED_OUTPUT}/{short_name}_{self.device}.mp4" - # ) - - # log_to_logger( - # f"[TEST MODE] Detection results saved to: {out_path}", level="info" - # ) - - # # ===================================================================== - # # DYNAMIC THREAD TARGET REDIRECTION - # # ===================================================================== - # # Lambda forces the background processing thread to evaluate your custom staging loop natively - # self.process_thread = threading.Thread( - # target=lambda: self.run_realtime_inference( - # sf_enabled=self.config.sf_enabled - # ), - # daemon=True, - # ) - # # self.render_proc = mp.Process( # threading.Thread( - # # target=rendering_worker, - # # args=( - # # self.render_queue, - # # (self.disp_w, self.disp_h), - # # self.output_path, - # # self.target_fps, - # # ), - # # daemon=True, - # # ) - # # self.render_proc = threading.Thread(target=lambda: None, daemon=True) - # # self.display_proc = threading.Thread(target=lambda: None, daemon=True) - # self.render_proc = DummyProcess() - # self.display_proc = DummyProcess() - - # self.async_writer = AsyncVideoWriter( - # self.output_path, - # cv2.VideoWriter_fourcc(*"avc1"), - # float(self.target_fps), - # (self.disp_w, self.disp_h), - # ) - # # self.async_writer = None def start(self): """ Starts the decoupled ingestion and inference threads in the correct order. """ # PRE-SYNC: Ensure GPU is idle before timing starts - if self.device_input == "cuda": - if torch.cuda.is_available(): - torch.cuda.synchronize() + if self.device_input == "cuda" and torch.cuda.is_available(): + torch.cuda.synchronize() # Start the hardware-decoupled reader first - self.reader.start() - - # if self.config.ENABLE_QUERYING: - # self._initialize_writer() - - # # Small delay to allow the reader's deque to populate - # time.sleep(0.1) - - # # Start the producer and consumer threads - # if hasattr(self, "process_thread") and not self.process_thread.is_alive(): - # self.process_thread.start() - - # if not self.config.DISABLE_DETECTION: - # self.render_proc.start() - - # self.display_proc.start() - - # if ( - # self.config.ENABLE_QUERYING - # and not self.config.TEST_MODE - # and not self.metadata_thread.is_alive() - # ): - # self.metadata_thread.start() - - # if self.config.ENABLE_QUERYING and not self.writer_thread.is_alive(): - # self.writer_thread.start() + # self.reader.start() return self - def stop(self): - """Overrides handlers.py to flush thread objects safely without deadlocking.""" - with self._stop_lock: - if self._is_stopped: - return - - print( - f"\n[TEST HARNESS] Initiating rapid thread flush for {self.name}", - flush=True, - ) - self.active = False - - # 1. Rapidly clear the async video writer thread queue first - # if hasattr(self, "async_writer") and self.async_writer is not None: - # try: - # self.async_writer.release() - # except Exception: - # pass - - # ===================================================================== - # DECUPLED MULTI-PROCESS TEARDOWN LIFECYCLE SEQUENCE - # ===================================================================== - # 1. FIRST: Drain and synchronize your thread pool tasks so EVERY frame drops into the IPC queue - if hasattr(self, "display_pool") and self.display_pool is not None: - try: - if hasattr(self.display_pool, "_work_queue"): - backlog = self.display_pool._work_queue.qsize() - if backlog > 0: - print( - f"\n\033[94m[STAGE 1/4] Synchronizing display pool threads. Draining {backlog} background tasks...\033[0m", - flush=True, - ) - backlog_s = time.perf_counter() - while ( - self.display_pool._work_queue.qsize() > 0 - or len(self.reorder_staging_buffer) > 0 - ): - # Yield a brief slice to let worker threads complete downscaling - time.sleep(0.01) - backlog_e = time.perf_counter() - backlog_s - print(f"\t\033[94mTook {backlog_e} secs\033[0m", flush=True) - print( - "\033[92m[SUCCESS] All background image transformations completed cleanly.\033[0m", - flush=True, - ) - self.display_pool.shutdown(wait=True) - except Exception as e: - print( - f"[TEARDOWN ERROR] Thread pool synchronization failed: {e}", - flush=True, - ) - setattr(self, "display_pool", None) - - # 1. FIRST: Instantly dispatch the shutdown token so the worker process knows to flush entries - if hasattr(self, "render_queue") and self.render_queue is not None: - try: - print( - f"\n\033[94m[STAGE 1/3] Dispatching shutdown sentinel (None) to rendering process worker (Backlog: {self.render_queue.qsize()} frames)...\033[0m", - flush=True, - ) - # Delivering the poison pill immediately tells FFmpeg to drain remaining blocks sequentially - self.render_queue.put(None, timeout=2.0) - except Exception as queue_err: - print( - f"\033[91m[TEARDOWN ERROR] Failed staging shutdown token: {queue_err}\033[0m", - flush=True, - ) - - # 2. SECOND: Allow the background multiprocessing queue to empty outstanding items naturally - if hasattr(self, "render_queue") and self.render_queue is not None: - try: - print( - "\n\033[94m[STAGE 2/3] Finalizing file output. Draining remaining frames from IPC memory lane...\033[0m", - flush=True, - ) - t_drain = time.perf_counter() - # Wait up to 15 seconds for the worker process to pull every remaining matrix out of the pipe - while ( - not self.render_queue.empty() - and (time.perf_counter() - t_drain) < 15.0 - ): - time.sleep( - 0.01 - ) # Micro-yield grants immediate execution priority to the background process core - except Exception: - pass - - # 3. THIRD: Block the main thread safely and allow the detached process to finish disk I/O operations - if hasattr(self, "render_proc") and self.render_proc is not None: - try: - join_duration = 0.0 - if self.render_proc.is_alive(): - print( - "\033[94m[STAGE 2/2] Main thread blocking. Synchronizing hard drive file headers...\033[0m", - flush=True, - ) - t_join_start = time.perf_counter() - self.render_proc.join( - timeout=15.0 - ) # Safe timeout lets video containers finalize cleanly - join_duration = time.perf_counter() - t_join_start - else: - print( - "\033[94m[STAGE 2/2] Main thread clear...\033[0m", - flush=True, - ) - - if self.render_proc.is_alive(): - print( - "\n\033[91m[CRITICAL STALL] Render worker process hung on disk write! Forcing termination...\033[0m", - flush=True, - ) - self.render_proc.terminate() - self.render_proc.join() - else: - print( - f"\033[92m[FINAL] Video compilation finished cleanly! Hard drive commit took {join_duration:.2f} seconds.\033[0m", - flush=True, - ) - - expected_disk_path = Path(self.output_path) - if expected_disk_path.exists(): - size_mb = expected_disk_path.stat().st_size / (1024 * 1024) - print( - f"\033[92m[DISK VERIFIED] Destination asset compiled: {expected_disk_path.name} ({size_mb:.2f} MB)\033[0m\n", - flush=True, - ) - self.render_proc.close() - except Exception as proc_err: - print( - f"\033[91m[TEARDOWN ERROR] Failed closing background process container: {proc_err}\033[0m", - flush=True, - ) - setattr(self, "render_proc", None) - - # 4. FOURTH: Clean up remaining pipeline executors and queues safely - if hasattr(self, "render_queue") and self.render_queue is not None: - try: - self.render_queue.close() - self.render_queue.cancel_join_thread() - except Exception: - pass - setattr(self, "render_queue", None) - - if hasattr(self, "executor") and self.executor is not None: - try: - self.executor.shutdown(wait=True) - except Exception: - pass - setattr(self, "executor", None) - - self.status = "DONE" - self._is_stopped = True - print( - "[TEST HARNESS] Teardown complete. Releasing session cleanly.\n", - flush=True, - ) - +# ========================================================================= +# MAIN +# ========================================================================= if __name__ == "__main__": # TEST ARGUMENTS parser = argparse.ArgumentParser(description="Run Video Detection Pipeline Tests") @@ -684,40 +732,12 @@ def stop(self): ) # Filter tests - # parser.add_argument( - # "--type", - # type=str, - # choices=["object", "motion"], - # dest="detection_type", - # help="Filter by detection type (object or motion)", - # ) parser.add_argument( "--device", type=str, choices=["cpu", "gpu"], help="Filter by device (cpu or gpu)", ) - # parser.add_argument( - # "--sf", - # action="store_true", - # default=None, - # dest="sf_enabled", - # help="Filter by Smart Filtering", - # ) - - # # DEBUGGING - # parser.add_argument( - # "--debug", - # action="store_true", - # help="Enable debug message and save intermediate images for Smart Filtering tests", - # ) - # parser.add_argument( - # "-n", - # type=int, - # default=100, - # dest="debug_frame_limit", - # help="Number of frames used for debugging [Default: 100]", - # ) args = parser.parse_args() @@ -742,6 +762,8 @@ def stop(self): "-s", "-v", "--log-cli-level=DEBUG", + "-W", + "ignore::_pytest.warning_types.PytestAssertRewriteWarning", __file__, ] # -s -v --log-cli-level=DEBUG if run_args: diff --git a/fastapi/tests/test_pipeline.py b/fastapi/tests/test_pipeline.py index 32ad892..15ffbe7 100644 --- a/fastapi/tests/test_pipeline.py +++ b/fastapi/tests/test_pipeline.py @@ -1,15 +1,79 @@ +# ============================================================================== +# SUPPRESS WARNINGS +# import warnings + +import pytest + +# warnings.filterwarnings( +# "ignore", category=FutureWarning, message=".*reduce_op` is deprecated.*" +# ) + +pytestmark = [ + pytest.mark.filterwarnings( + "ignore:.*anyio:_pytest.warning_types.PytestAssertRewriteWarning" + ), + pytest.mark.filterwarnings( + "ignore:Context managers for TensorRT types are deprecated:DeprecationWarning" + ), + pytest.mark.filterwarnings( + "ignore:Exception ignored in.*SharedMemory.__del__:UserWarning" + ), + # Global message fallback pattern captures local execution frames + pytest.mark.filterwarnings("ignore:.*reduce_op.*:FutureWarning"), +] + +# ============================================================================== +# LOGGING +import logging +import os +import sys + +logging.basicConfig( + level=logging.INFO, + # format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", + format="%(asctime)s [%(levelname)s] %(name)s (%(filename)s:%(lineno)d) - %(message)s", + handlers=[logging.StreamHandler(sys.stdout)], +) +# Suppress low-delay reference block warnings from OpenCV/PyAV/FFmpeg +# os.environ["OPENCV_FFMPEG_LOGLEVEL"] = "-8" +# os.environ["OPENCV_LOG_LEVEL"] = "OFF" +logging.getLogger("libav").setLevel(logging.CRITICAL) +logging.getLogger("libav.hevc").setLevel(logging.CRITICAL) +logging.getLogger("matplotlib").setLevel(logging.WARNING) +logging.getLogger("ultralytics").setLevel(logging.WARNING) +# logger = trt.Logger(trt.Logger.WARNING) +# trt.init_libnvinfer_plugins(logger, "") +main_app_logger = logging.getLogger(__name__) + +# ============================================================================== +# IMPORTS + +# os.environ["OMP_NUM_THREADS"] = "2" +# os.environ["MKL_NUM_THREADS"] = "2" +# os.environ["PYTORCH_ALLOC_CONF"] = "expandable_segments:True" +# try: +# torch.set_num_interop_threads(2) # 1) +# torch.set_num_threads(4) # 2) +# except RuntimeError: +# # Safe graceful fallback if a process-level fork duplicated context maps +# pass import argparse import csv +import ctypes +import faulthandler import gc +import inspect import logging import multiprocessing -import os import sys +import threading import time import traceback +import tracemalloc from datetime import datetime from pathlib import Path +import cv2 import psutil import pytest import torch @@ -21,52 +85,67 @@ MODEL_NAME_DEFAULT, THRESHOLD_VALUE, ) - -# Import the exact core handlers to replace duplicate script code -# from include.handlers import BASE_PIPELINE_CONFIG +from include.handlers import ( + CPUStreamHandler, + GPUStreamHandler, + log_to_logger, +) from include.utils import ( PipelineConfig, + ResourceTrackerFilter, + install_and_load_pip_package, + str2bool, ) +# torch.set_grad_enabled(False) + +# ============================================================================== +# MONKEY PATCH +# Cache the hardware availability state globally. +# This prevents internal framework loops from triggering driver/NVML checks per frame. +# _cuda_available = torch.cuda.is_available() + + +# def _patched_is_available(): +# return _cuda_available + + +# torch.cuda.is_available = _patched_is_available + +# ============================================================================== +# SETUP +# Hooks directly into the OS kernel signals to force Python to print a full +# stack traceback right before it dies, allowing you to see which line of +# Python code caused the hard crash +faulthandler.enable() + try: + # Retain standard spawn mode to prevent CUDA context driver deadlocks torch.multiprocessing.set_start_method("spawn", force=True) except RuntimeError: pass +force_export = False +target_width, target_height = 7680, 4320 +STATE_CAPTURE = False -logging.basicConfig( - level=logging.INFO, - format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", - handlers=[logging.StreamHandler(sys.stdout)], -) -# Suppress low-delay reference block warnings from OpenCV -os.environ["OPENCV_LOG_LEVEL"] = "OFF" - -main_app_logger = logging.getLogger(__name__) - - -def log_to_logger(message, level="info"): - try: - if level.lower() == "debug": - main_app_logger.debug(message) - elif level.lower() == "warning": - main_app_logger.warning(message) - else: - main_app_logger.info(message) - except Exception: - pass +# Force Python's multiprocessing layer to quiet tracking cleanup race conditions +os.environ["PYTHONWARNINGS"] = "ignore" +sys.warnoptions.append("ignore") +# ============================================================================== +# TEST SETUP / FUNCTIONS @pytest.fixture(scope="class") def setup_context(request): - """Orchestrates test directories and configuration schemas.""" + """Replaces setUpClass: Runs once per test class.""" current_test_filename = Path(__file__).stem test_dir = Path(__file__).parent main_path = test_dir.parent video_dir = main_path / "inputs" # Resolve source from CLI/Environment parameters - request.cls.source = os.getenv("STREAM_SOURCE", "anduril_swarm_8K.mp4") + request.cls.source = os.getenv("VIDEO_FILENAME", "anduril_swarm_8K.mp4") is_rtsp = "rtsp://" in request.cls.source if not is_rtsp: VIDEO_FILENAME = request.cls.source @@ -79,8 +158,10 @@ def setup_context(request): assert vid_source.exists() request.cls.source = str(vid_source) request.cls.name = vid_source.stem + request.cls.is_rtsp = False else: request.cls.name = "rtsp" + request.cls.is_rtsp = True request.cls.test_duration_mins = float(os.getenv("TEST_DURATION_MINS", 1.0)) model_name = os.getenv("MODEL_NAME", MODEL_NAME_DEFAULT) @@ -88,15 +169,16 @@ def setup_context(request): request.cls.result_dir.mkdir(parents=True, exist_ok=True) request.cls.benchmarks = [] - if is_rtsp: - request.cls.csv_filename = "pipeline_benchmarks_rtsp.csv" - else: - vid_shortname = Path(request.cls.source).stem - request.cls.csv_filename = f"pipeline_benchmarks_{vid_shortname}.csv" + request.cls.csv_filename = f"pipeline_benchmarks_{request.cls.name}.csv" request.cls.csv_path = request.cls.result_dir / request.cls.csv_filename + # request.cls.active = True + request.cls.active_streams = {} + + # RUN ALL PARAMETERIZED TESTS ---------------------------------------- yield + # FINAL CSV EXPORT -------------------------------------------------- if request.cls.benchmarks: ordered_headers = [ "timestamp", @@ -117,6 +199,7 @@ def setup_context(request): "total_frames_ingested", "total_target_frames_processed", "total_objects_detected", + "avg_detections_per_frame", "frames_dropped_or_skipped", "dropped_frame_sequences", "average_read_latency_ms", @@ -132,7 +215,8 @@ def setup_context(request): ] # keys = {k for r in request.cls.benchmarks for k in r.keys()} keys = [] - for r in request.cls.benchmarks: + results = request.cls.benchmarks + for r in results: for k in r.keys(): keys.append(k) sorted_keys = [] @@ -140,28 +224,46 @@ def setup_context(request): if c in keys: sorted_keys.append(c) with open(str(request.cls.csv_path), "w", newline="") as f: - writer = csv.DictWriter(f, fieldnames=list(sorted_keys)) - writer.writeheader() - writer.writerows(request.cls.benchmarks) - print(f"\n[FINAL] Telemetry saved to: {request.cls.csv_path}", flush=True) + dict_writer = csv.DictWriter(f, fieldnames=list(sorted_keys)) + dict_writer.writeheader() + dict_writer.writerows(results) + main_app_logger.info(f"[FINAL] Telemetry saved to {request.cls.csv_path}") @pytest.fixture(autouse=True) def each_test_setup(request): - if torch.cuda.is_available(): - torch.cuda.synchronize() - device = request.node.callspec.params.get("device") os.environ["DEVICE"] = device - yield + # Enforces a brief structural pause between execution sequences. + # This ensures old CUDA streams and file pointers are fully reclaimed by the OS + # before the next stage begins allocation. + with torch.inference_mode(): + if device == "gpu" and torch.cuda.is_available(): + torch.cuda.synchronize() + torch.cuda.ipc_collect() + torch.cuda.empty_cache() + gc.collect() + + # Introduce a 250ms sub-slice delay to give Linux background + # resource tracking daemons time to complete unlinking procedures smoothly. + # time.sleep(0.25) + # RUN PARAMETERIZED TEST ---------------------------------------- + try: + yield + + except Exception as e: + traceback.print_exc() + main_app_logger.info(f"[TEST] Error: {e}") + + # Evict the device cache pool entirely gc.collect() - if torch.cuda.is_available(): - torch.cuda.synchronize() - torch.cuda.empty_cache() - torch.cuda.ipc_collect() - time.sleep(0.2) + with torch.inference_mode(): + if device == "gpu" and torch.cuda.is_available(): + torch.cuda.synchronize() + torch.cuda.empty_cache() + torch.cuda.memory._record_memory_history(enabled=False) def stream_worker( @@ -186,6 +288,8 @@ def stream_worker( os.environ["OPENCV_LOG_LEVEL"] = "OFF" os.environ["OPENCV_VIDEOIO_DEBUG"] = "0" os.environ["FFMPEG_LOG_LEVEL"] = "quiet" + + # Initialize test test_duration_secs = test_duration_mins * 60 metrics = { "timestamp": datetime.now().strftime("%Y-%m-%d %H:%M:%S"), @@ -220,12 +324,12 @@ def stream_worker( "total_frames_ingested": 0, "total_target_frames_processed": 0, "total_objects_detected": 0, + "avg_detections_per_frame": 0, "detection_type": detection_type, "smart_filter_active": sf_enabled, "status": "INIT", } - loop_start = time.perf_counter() process = psutil.Process(os.getpid()) cpu_samples, ram_samples, vram_samples = [], [], [] prefetch_backlog_samples = [] @@ -236,7 +340,7 @@ def stream_worker( CUSTOM_MODEL_FLAG=os.getenv( "CUSTOM_MODEL_FLAG", CUSTOM_MODEL_FLAG_DEFAULT ), # True, - DEVICE="GPU" if device_type.lower() == "gpu" else "CPU", + DEVICE=device_type.upper(), OMIT_DETECTIONS_FLAG=True, TEST_MODE=True, DEBUG=os.getenv("DEBUG", DEBUG_DEFAULT), @@ -272,41 +376,206 @@ def mock_connect(self, host, port): vdms.vdms.connect = mock_connect - from include.handlers import CPUStreamHandler, GPUStreamHandler - if device_type.lower() == "gpu": HandlerClass = GPUStreamHandler else: HandlerClass = CPUStreamHandler - print("\t[STREAM_WORKER] Starting ...") + # Establish an accurate post-initialization hardware baseline + if str2bool(os.getenv("ENABLE_PROFILING", "False")): + tracemalloc.start() + + start_allocated, start_reserved = 0, 0 + if device_type.lower() and torch.cuda.is_available(): + torch.cuda.memory._record_memory_history( + enabled=True, + trace_alloc_max_entries=250000, + trace_alloc_record_context=True, + ) + + # This captures your baseline AFTER initialize_variables() is done + start_allocated = torch.cuda.memory_allocated(0) + start_reserved = torch.cuda.memory_reserved(0) + + try: + cv2.cuda.setBufferPoolUsage(False) + except AttributeError: + pass + else: + gc.collect() + process = psutil.Process(os.getpid()) + start_allocated = ( + process.memory_info().rss + ) # Reuse start_allocated container for host memory baseline + start_reserved = 0 + log_to_logger("[STREAM_WORKER] Starting ...", level="info") last_sample = time.perf_counter() + loop_start = last_sample handler = None # Explicit initializing tracking state pointer 🚀 try: - # Let handlers.py completely manage the reader, threads, ring buffers, and FFMPEG process + # Get Handler and start handler = HandlerClass( source=source, name=source_name, active_streams={}, config=config - ) - handler.start() - - while (time.perf_counter() - loop_start) < test_duration_secs: - if not handler.active: - break - - curr_time = time.perf_counter() - if (curr_time - last_sample) >= 0.5: - cpu_samples.append(psutil.cpu_percent(interval=0)) - ram_samples.append(process.memory_info().rss / (1024 * 1024)) - if device_type.lower() == "gpu" and torch.cuda.is_available(): - vram_free, vram_total = torch.cuda.mem_get_info() - vram_samples.append((vram_total - vram_free) / (1024 * 1024)) - if getattr(handler, "prefetch_queue", None) is not None: - current_backlog = handler.prefetch_queue.qsize() - prefetch_backlog_samples.append(current_backlog) - last_sample = curr_time - time.sleep(0.2) # 0.01 + ) # .start() + + def profiler_fn(): + profiler = None + try: + if str2bool(os.getenv("ENABLE_PROFILING", "False")): + Profiler = install_and_load_pip_package( + "pyinstrument", attribute_name="Profiler" + ) + + profiler = Profiler(interval=0.005) # 5ms sampling interval + + # Telling the statistical sampler to skip recording exception blocks completely + # stops stack_sampler.py from ballooning RAM over long production runs. + if hasattr(profiler, "_sampler") and profiler._sampler: + profiler._sampler.trace_exceptions = False + + profiler.start() + + # orig_fn(profiler) + handler.run_realtime_inference( + sf_enabled=handler.config.sf_enabled, + profiler=profiler, + ) + + if str2bool(os.getenv("ENABLE_PROFILING", "False")): + # 2. Redirect standard error to the filter trap right before report compilation + original_stderr = sys.stderr + sys.stderr = ResourceTrackerFilter(original_stderr) + + try: + # Force standard stdout to flush out any lingering teardown messages + # BEFORE pyinstrument dumps its massive ASCII tree block. + sys.stdout.flush() + + # main_app_logger.info(profiler.output_text(color=True)) + # profiler.main_app_logger.info(color=True) + # prof_output = profiler.output_text(color=True) + # main_app_logger.info( + # f"\n=== LATENCY BREAKDOWN FOR {self.name} ({device}) ===\n{prof_output}\n", + # + # ) + + # Save a clean, interactive tree map for visual analysis + output_html_path = handler.output_path.replace( + ".mp4", "_profile.html" + ) + # output_html_path = f"/tmp/profile_{video_name}_{device}.html" + profiler.write_html(output_html_path) + main_app_logger.info( + f"[PROFILER] Performance tree map exported to {output_html_path}", + ) + + finally: + sys.stderr = original_stderr + if "profiler" in locals(): + try: + # Force the Python interpreter to detach pyinstrument's sampling hooks + sys.setprofile(None) + + # Completely decouple internal statistical sessions to drop C-heap frames + if hasattr(profiler, "_last_session"): + profiler._last_session = None + if hasattr(profiler, "last_session"): + profiler.last_session = None + + # Forcibly clear out internal memoryview strings caching tree metrics + if ( + hasattr(profiler, "session") + and profiler.session is not None + ): + if hasattr(profiler.session, "frame_groups"): + profiler.session.frame_groups = None + if hasattr(profiler.session, "samples"): + profiler.session.samples = [] + + # Purge compiled tree metrics structures + profiler.session = None + del profiler + except Exception: + pass + + # Trigger an immediate native Linux heap compression pass + # This grabs the newly abandoned pyinstrument C-heap blocks and + # flushes them to the OS before the fixture assessment snapshot fires! + gc.collect() + try: + libc = ctypes.CDLL("libc.so.6") + libc.malloc_trim(0) + except Exception: + pass + + except Exception: + traceback.print_exc() + + if str2bool(os.getenv("ENABLE_PROFILING", "False")) and hasattr( + handler, "process_thread" + ): + # Re-initialize the thread context using our safe profile wrapper proxy + handler.process_thread = threading.Thread(target=profiler_fn, daemon=True) + + try: + handler.start() + + exited = False + loop_start = time.perf_counter() + while (time.perf_counter() - loop_start) < test_duration_secs: + time.sleep(0.25) + if handler._is_stopped: # not handler.active: + exited = True + break + if getattr(handler, "status", None) == "DONE": + exited = True + break + + if ( + hasattr(handler, "process_thread") + and handler.process_thread is not None + ): + if not handler.process_thread.is_alive(): + main_app_logger.info( + "[TEST HARNESS] Background worker exited. Breaking loop.", + ) + break + + # if ( + # hasattr(handler, "process_thread") + # and handler.process_thread is not None + # ): + # if not handler.process_thread.is_alive(): + # main_app_logger.info( + # "[TEST HARNESS] Background worker exited. Breaking loop.", + # ) + # break + + curr_time = time.perf_counter() + if (curr_time - last_sample) >= 0.5: + cpu_samples.append(psutil.cpu_percent(interval=0)) + ram_samples.append(process.memory_info().rss / (1024 * 1024)) + if device_type.lower() == "gpu" and torch.cuda.is_available(): + vram_free, vram_total = torch.cuda.mem_get_info() + vram_samples.append((vram_total - vram_free) / (1024 * 1024)) + if getattr(handler, "prefetch_queue", None) is not None: + current_backlog = handler.prefetch_queue.qsize() + prefetch_backlog_samples.append(current_backlog) + last_sample = curr_time + time.sleep(0.001) # 0.01 + + handler.stop_threads(["process_thread"]) + # Cleanup active thread worker contexts safely if they exist + if handler is not None and getattr(handler, "active", False) and not exited: + try: + handler.stop() + except Exception: + pass + except Exception as loop_e: + # traceback.print_exc() + main_app_logger.info(f"[LOOP ERROR]: {loop_e}") # Safely capture performance values out of production thread states actual_duration = time.perf_counter() - loop_start @@ -327,7 +596,7 @@ def mock_connect(self, host, port): ) # Total target slices saved/evaluated metrics["total_objects_detected"] = handler.total_objects_detected - metrics["total_frames_read"] = getattr(handler, "frame_count", 0) + metrics["total_frames_read"] = handler.abs_frame_num metrics["smart_filter_active"] = sf_enabled metrics["device"] = device_type @@ -352,11 +621,17 @@ def mock_connect(self, host, port): 1 if getattr(r, "use_cpu_decode_fallback", False) else 0 ) # if not str(handler.source).startswith("rtsp://"): - metrics["video_duration"] = ( - round(r.total_input_frames / metrics["hardware_video_fps"], 2) - if metrics["hardware_video_fps"] > 0 - else 0.0 - ) + # metrics["video_duration"] = ( + # round(r.total_input_frames / metrics["hardware_video_fps"], 2) + # if metrics["hardware_video_fps"] > 0 + # else 0.0 + # ) + + metrics["video_duration"] = ( + round(handler.abs_frame_num / metrics["hardware_video_fps"], 2) + if metrics["hardware_video_fps"] > 0 + else 0.0 + ) h_telemetry = getattr(handler, "telemetry", {}) io_latencies = h_telemetry.get("ram_disk_io_write_ms", []) @@ -381,6 +656,12 @@ def mock_connect(self, host, port): else 0.0 ) + metrics["avg_detections_per_frame"] = ( + metrics["total_objects_detected"] / metrics["total_target_frames_processed"] + ) + + main_app_logger.info(metrics) + except Exception as err: is_expected_fail = ( "Scenario_1" in test_name @@ -391,6 +672,7 @@ def mock_connect(self, host, port): "could not open/connect", "failed to initialize stream reader endpoint", "stream reader initialization failure", + "opencv videocapture failed to open", "timed out", ] ) @@ -408,6 +690,7 @@ def mock_connect(self, host, port): level="warning", ) metrics["status"] = f"CRASHED: {type(err).__name__}" + finally: # Calculate system baseline averages across the sample tracking matrices safely if cpu_samples: @@ -428,12 +711,12 @@ def mock_connect(self, host, port): sum(prefetch_backlog_samples) / len(prefetch_backlog_samples), 2 ) - # Cleanup active thread worker contexts safely if they exist - if handler is not None and getattr(handler, "active", False): - try: - handler.stop() - except Exception: - pass + # # Cleanup active thread worker contexts safely if they exist + # if handler is not None and getattr(handler, "active", False) and not exited: + # try: + # handler.stop() + # except Exception: + # pass # Provide a 200ms cool-down window for OpenVINO/PyTorch C++ worker threads # to finish their internal teardown before Python destroys the process space. @@ -450,11 +733,18 @@ def mock_connect(self, host, port): result_queue.put(metrics) + if str2bool(os.getenv("ENABLE_PROFILING", "False")): + handler.assess_memory( + handler.config.DEVICE.lower(), + handler.name, + start_allocated, + start_reserved, + ) # Absolute kill switch safely reclaims orphaned third-party threads # at the kernel level without crashing the parent pytest framework time.sleep(0.1) # os._exit(0) - print("\t[STREAM_WORKER] Processing complete. Exiting...") + log_to_logger("[STREAM_WORKER] Processing complete. Exiting...", level="info") @pytest.mark.usefixtures("setup_context") @@ -467,12 +757,11 @@ def test_scenario_1_invalid_rtsp(self, device): run_clipper = False time_limit_m = round(self.test_duration_mins, 1) - print( + main_app_logger.info( f"\n========================================\n" f"RUNNING TEST: {test_name} | Device: {device.upper()}\n" f"Source Destination: {bad_uri}\n" f"========================================", - flush=True, ) # Execute production workflow in completely isolated spawned sandbox @@ -493,9 +782,11 @@ def test_scenario_1_invalid_rtsp(self, device): ), ) worker_p.start() - print("[SCENARIO 1] Started processing ...") + main_app_logger.info("[SCENARIO 1] Started processing ...") worker_p.join() # timeout=2.0) - print(f"[SCENARIO 1] Stopped cleanly with exit code: {worker_p.exitcode}") + main_app_logger.info( + f"[SCENARIO 1] Stopped cleanly with exit code: {worker_p.exitcode}" + ) if worker_p.is_alive(): worker_p.terminate() @@ -504,7 +795,7 @@ def test_scenario_1_invalid_rtsp(self, device): test_metrics = res_queue.get() self.__class__.benchmarks.append(test_metrics) - print(f"Test Status Result: {test_metrics.get('status')}\n", flush=True) + main_app_logger.info(f"Test Status Result: {test_metrics.get('status')}") # Explicitly tear down queue thread pools to prevent resource tracking leaks try: @@ -521,12 +812,11 @@ def test_scenario_2_longevity_throughput(self, device): test_name = "Scenario_2_Longevity_Throughput_Evaluation" run_clipper = False - print( + main_app_logger.info( f"\n========================================\n" f"RUNNING TEST: {test_name} | Device: {device.upper()}\n" f"Source Destination: {self.source}\n" f"========================================", - flush=True, ) # Execute production workflow in completely isolated spawned sandbox @@ -547,9 +837,11 @@ def test_scenario_2_longevity_throughput(self, device): ), ) worker_p.start() - print("[SCENARIO 2] Started processing ...") + main_app_logger.info("[SCENARIO 2] Started processing ...") worker_p.join() - print(f"[SCENARIO 2] Stopped cleanly with exit code: {worker_p.exitcode}") + main_app_logger.info( + f"[SCENARIO 2] Stopped cleanly with exit code: {worker_p.exitcode}" + ) if worker_p.is_alive(): worker_p.terminate() @@ -557,7 +849,7 @@ def test_scenario_2_longevity_throughput(self, device): test_metrics = res_queue.get() self.__class__.benchmarks.append(test_metrics) - print(f"Test Status Result: {test_metrics.get('status')}\n", flush=True) + main_app_logger.info(f"Test Status Result: {test_metrics.get('status')}") # Explicitly tear down queue thread pools to prevent resource tracking leaks try: @@ -575,12 +867,11 @@ def test_scenario_3_video_clipper(self, device): # test_name = "Scenario_3_Clip_Generation_Evaluation" run_clipper = True - print( + main_app_logger.info( f"\n========================================\n" f"RUNNING TEST: {test_name} | Device: {device.upper()}\n" f"Source Destination: {self.source}\n" f"========================================", - flush=True, ) render_dir = self.result_dir / f"{self.name}/scenario3_{device}" render_dir.mkdir(parents=True, exist_ok=True) @@ -604,9 +895,11 @@ def test_scenario_3_video_clipper(self, device): ), ) worker_p.start() - print("[SCENARIO 3] Started processing ...") + main_app_logger.info("[SCENARIO 3] Started processing ...") worker_p.join() - print(f"[SCENARIO 3] Stopped cleanly with exit code: {worker_p.exitcode}") + main_app_logger.info( + f"[SCENARIO 3] Stopped cleanly with exit code: {worker_p.exitcode}" + ) if worker_p.is_alive(): worker_p.terminate() @@ -614,7 +907,7 @@ def test_scenario_3_video_clipper(self, device): test_metrics = res_queue.get() self.__class__.benchmarks.append(test_metrics) - print(f"Test Status Result: {test_metrics.get('status')}\n", flush=True) + main_app_logger.info(f"Test Status Result: {test_metrics.get('status')}") # Explicitly tear down queue thread pools to prevent resource tracking leaks try: @@ -635,12 +928,11 @@ def test_scenario_4_detection_and_clipper(self, device, sf_enabled, detection_ty run_clipper = True disable_detection = False - print( + main_app_logger.info( f"\n========================================\n" f"RUNNING TEST: {test_name} | Device: {device.upper()} | SF: {sf_enabled}\n" f"Source Name: {self.name} | Destination: {self.source}\n" f"========================================", - flush=True, ) render_dir = ( self.result_dir @@ -670,9 +962,11 @@ def test_scenario_4_detection_and_clipper(self, device, sf_enabled, detection_ty ), ) worker_p.start() - print("[SCENARIO 4] Started processing ...") + main_app_logger.info("[SCENARIO 4] Started processing ...") worker_p.join() - print(f"[SCENARIO 4] Stopped cleanly with exit code: {worker_p.exitcode}") + main_app_logger.info( + f"[SCENARIO 4] Stopped cleanly with exit code: {worker_p.exitcode}" + ) if worker_p.is_alive(): worker_p.terminate() @@ -681,11 +975,10 @@ def test_scenario_4_detection_and_clipper(self, device, sf_enabled, detection_ty test_metrics = res_queue.get() self.__class__.benchmarks.append(test_metrics) if disable_detection: - print(f"Test Status Result: {test_metrics.get('status')}\n", flush=True) + main_app_logger.info(f"Test Status Result: {test_metrics.get('status')}") else: - print( - f"Test Status Result: {test_metrics.get('status')} w/ {test_metrics.get('total_objects_detected')} detections\n", - flush=True, + main_app_logger.info( + f"Test Status Result: {test_metrics.get('status')} w/ {test_metrics.get('total_objects_detected')} detections", ) # Explicitly tear down queue thread pools to prevent resource tracking leaks @@ -699,8 +992,6 @@ def test_scenario_4_detection_and_clipper(self, device, sf_enabled, detection_ty def get_available_scenarios(): - import inspect - available_scenarios = set() for attr_name, _ in inspect.getmembers( TestHybridStreamHandlers, predicate=inspect.isfunction @@ -723,13 +1014,15 @@ def get_pytest_filter_expression(args, sorted_scenarios): target_scenarios = args.scenario if args.scenario else sorted_scenarios scenario_clauses = [] - print("\n" + "=" * 50) - print("TARGET SELECTION PREVIEW") - print("=" * 50) + main_app_logger.info("=" * 50) + main_app_logger.info("TARGET SELECTION PREVIEW") + main_app_logger.info("=" * 50) for num in target_scenarios: if num in basic_ids: - print(f" 🔹 Scenario {num}: Standard routing (ignoring sub-filters)") + main_app_logger.info( + f" 🔹 Scenario {num}: Standard routing (ignoring sub-filters)" + ) scenario_clauses.append(f"scenario_{num}") else: clause = f"scenario_{num}" @@ -748,14 +1041,18 @@ def get_pytest_filter_expression(args, sorted_scenarios): if applied_subs: applied_subs_str = ", ".join(applied_subs) sub_msg = f" with sub-filters: {applied_subs_str}" - print(f" ⚙️ Scenario {num}: Active compilation{sub_msg}") + main_app_logger.info( + f" ⚙️ Scenario {num}: Active compilation{sub_msg}" + ) else: sub_msg = ( f" with sub-filters: {', '.join(applied_subs)}" if applied_subs else "" ) - print(f" 🔹 Scenario {num}: Standard routing (ignoring sub-filters)") + main_app_logger.info( + f" 🔹 Scenario {num}: Standard routing (ignoring sub-filters)" + ) scenario_clauses.append(f"({clause})") # Safely join scenarios together with 'or' so they can execute side-by-side @@ -764,14 +1061,14 @@ def get_pytest_filter_expression(args, sorted_scenarios): # Target hardware context selection filter applies globally across all test cases if args.device.lower() != "all": - print(f" 💻 Hardware Context Constraint: {args.device.upper()}") + main_app_logger.info(f" 💻 Hardware Context Constraint: {args.device.upper()}") filter_expression = f"({filter_expression}) and {args.device.lower()}" else: - print(" 💻 Hardware Context Constraint: ALL AVAILABLE") + main_app_logger.info(" 💻 Hardware Context Constraint: ALL AVAILABLE") - print("=" * 50) - print(f"COMPILED PYTEST KEYWORD EXPRESSION:\n 👉 {filter_expression}") - print("=" * 50 + "\n") + main_app_logger.info("=" * 50) + main_app_logger.info(f"COMPILED PYTEST KEYWORD EXPRESSION: {filter_expression}") + main_app_logger.info("=" * 50) return filter_expression @@ -859,13 +1156,22 @@ def get_pytest_filter_expression(args, sorted_scenarios): # dest="debug_frame_limit", # help="Number of frames used for debugging [Default: 100]", # ) + + # PROFILING + parser.add_argument( + "--profile", + action="store_true", + help="Enable profiling", + ) + args = parser.parse_args() - os.environ["STREAM_SOURCE"] = args.source + os.environ["VIDEO_FILENAME"] = args.source os.environ["TEST_DURATION_MINS"] = str(args.duration) os.environ["CUSTOM_MODEL_FLAG"] = "True" if args.custom_model_flag else "False" os.environ["MODEL_NAME"] = args.model_name os.environ["DEBUG"] = "1" if args.debug else "0" + os.environ["ENABLE_PROFILING"] = "True" if args.profile else "False" # filter_expression = "test_scenario_4_detection_and_clipper" # filter_expression = "test_scenario_3_video_clipper" @@ -879,11 +1185,12 @@ def get_pytest_filter_expression(args, sorted_scenarios): "-s", "-v", "--log-cli-level=DEBUG", + "-W", + "ignore::_pytest.warning_types.PytestAssertRewriteWarning", __file__, ] - print( + main_app_logger.info( f"Launching decoupled testing suite configurations for destination targets: {args.source}", - flush=True, ) sys.exit(pytest.main(pytest_args)) diff --git a/fastapi/tests/test_readers.py b/fastapi/tests/test_readers.py index 6730162..7961d19 100644 --- a/fastapi/tests/test_readers.py +++ b/fastapi/tests/test_readers.py @@ -1,39 +1,90 @@ +# ============================================================================== +# SUPPRESS WARNINGS +# import warnings + +import pytest + +# warnings.filterwarnings( +# "ignore", category=FutureWarning, message=".*reduce_op` is deprecated.*" +# ) + +pytestmark = [ + pytest.mark.filterwarnings( + "ignore:.*anyio:_pytest.warning_types.PytestAssertRewriteWarning" + ), + pytest.mark.filterwarnings( + "ignore:Context managers for TensorRT types are deprecated:DeprecationWarning" + ), + pytest.mark.filterwarnings( + "ignore:Exception ignored in.*SharedMemory.__del__:UserWarning" + ), + # Global message fallback pattern captures local execution frames + pytest.mark.filterwarnings("ignore:.*reduce_op.*:FutureWarning"), +] + +# ============================================================================== +# LOGGING +import logging +import os +import sys + +logging.basicConfig( + level=logging.INFO, + # format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", + format="%(asctime)s [%(levelname)s] %(name)s (%(filename)s:%(lineno)d) - %(message)s", + handlers=[logging.StreamHandler(sys.stdout)], +) + +# Suppress low-delay reference block warnings from OpenCV/PyAV/FFmpeg +# os.environ["OPENCV_FFMPEG_LOGLEVEL"] = "-8" +# os.environ["OPENCV_LOG_LEVEL"] = "OFF" +logging.getLogger("libav").setLevel(logging.CRITICAL) +logging.getLogger("libav.hevc").setLevel(logging.CRITICAL) +logging.getLogger("matplotlib").setLevel(logging.WARNING) +logging.getLogger("ultralytics").setLevel(logging.WARNING) +# logger = trt.Logger(trt.Logger.WARNING) +# trt.init_libnvinfer_plugins(logger, "") +main_app_logger = logging.getLogger(__name__) + +# ============================================================================== +# IMPORTS + +# os.environ["OMP_NUM_THREADS"] = "2" +# os.environ["MKL_NUM_THREADS"] = "2" +# os.environ["PYTORCH_ALLOC_CONF"] = "expandable_segments:True" +# try: +# torch.set_num_interop_threads(2) # 1) +# torch.set_num_threads(4) # 2) +# except RuntimeError: +# # Safe graceful fallback if a process-level fork duplicated context maps +# pass import argparse import asyncio import csv +import ctypes import faulthandler import gc +import multiprocessing as mp +import sys import threading import time import traceback - -faulthandler.enable() -import inspect -import logging -import multiprocessing as mp -import os -import queue -import sys -import types -from concurrent.futures import ThreadPoolExecutor +import tracemalloc from pathlib import Path import cv2 -import matplotlib.pyplot as plt -import numpy as np -import pytest -import tensorrt as trt +import psutil import torch -# # Force all PyTorch extension handles to compile and load BEFORE threads spawn -# if torch.cuda.is_available(): -# _ = torch.zeros(1).cuda() -# import torch._ops -# import torch.utils - -# Explicitly invoke any plotting or module style lookups early +# import torch -sys.path.insert(1, str(Path(__file__).parent.parent)) +# Retrieve repo packages +REPO_DIR = str(Path(__file__).parent.parent) +sys.path.insert(1, REPO_DIR) +from base_test import ( + BaseTest, + fps_comparison_chart, +) from include.default_configs import ( CUSTOM_MODEL_FLAG_DEFAULT, DEBUG_DEFAULT, @@ -41,83 +92,360 @@ THRESHOLD_VALUE, ) from include.handlers import ( - AsyncVideoWriter, - CPUStreamHandler, - DeviceBaseHandler, - GPUStreamHandler, - log_to_logger, + get_test_handler, ) from include.utils import ( PipelineConfig, + ResourceTrackerFilter, + install_and_load_pip_package, + str2bool, ) +# objgraph = install_and_load_pip_package("objgraph", attribute_name=None) +# torch.set_grad_enabled(False) + +# ============================================================================== +# MONKEY PATCH +# Cache the hardware availability state globally. +# This prevents internal framework loops from triggering driver/NVML checks per frame. +# _cuda_available = torch.cuda.is_available() + + +# def _patched_is_available(): +# return _cuda_available + + +# torch.cuda.is_available = _patched_is_available + +# ============================================================================== +# SETUP +# Hooks directly into the OS kernel signals to force Python to print a full +# stack traceback right before it dies, allowing you to see which line of +# Python code caused the hard crash +faulthandler.enable() + try: # Retain standard spawn mode to prevent CUDA context driver deadlocks torch.multiprocessing.set_start_method("spawn", force=True) except RuntimeError: pass -logging.getLogger("matplotlib").setLevel(logging.WARNING) -logger = trt.Logger(trt.Logger.WARNING) -trt.init_libnvinfer_plugins(logger, "") - -DEBUG_FLAG_DEFAULT = True if DEBUG_DEFAULT == "1" else False -os.environ["OMP_NUM_THREADS"] = str(mp.cpu_count()) # "1" -os.environ["PYTORCH_ALLOC_CONF"] = "expandable_segments:True" force_export = False +# target_width, target_height = 7680, 4320 +STATE_CAPTURE = False + +# Force Python's multiprocessing layer to quiet tracking cleanup race conditions +os.environ["PYTHONWARNINGS"] = "ignore" +sys.warnoptions.append("ignore") + -# Force OpenCV to run sequentially to prevent context-switching overhead -cv2.setNumThreads(0) # Forces OpenCV loops to run strictly sequentially +# ========================================================================= +# ISOLATED BACKGROUND WORKER +# ========================================================================= -def fps_comparison_chart(chart_path, results, fps_key="Pipeline FPS (Video frames)"): +def isolated_detection_worker(init_args, test_args, res_queue): + device = test_args["device"] + detection_type = test_args["detection_type"] + sf_enabled = test_args["sf_enabled"] + gt_enabled = test_args["gt_enabled"] + + if device == "gpu" and torch.cuda.is_available(): + torch.cuda.synchronize() + torch.cuda.ipc_collect() + torch.cuda.empty_cache() + gc.collect() + + # Establish an accurate post-initialization hardware baseline + if str2bool(os.getenv("ENABLE_PROFILING", "False")): + tracemalloc.start() + + start_allocated, start_reserved = 0, 0 + if device == "gpu" and torch.cuda.is_available(): + torch.cuda.memory._record_memory_history( + enabled=True, + trace_alloc_max_entries=250000, + trace_alloc_record_context=True, + ) + + # This captures your baseline AFTER initialize_variables() is done + start_allocated = torch.cuda.memory_allocated(0) + start_reserved = torch.cuda.memory_reserved(0) + + try: + cv2.cuda.setBufferPoolUsage(False) + except AttributeError: + pass + else: + gc.collect() + process = psutil.Process(os.getpid()) + start_allocated = ( + process.memory_info().rss + ) # Reuse start_allocated container for host memory baseline + start_reserved = 0 + try: - names = [r["Test Name"] for r in results] - fps_values = [float(r[fps_key]) for r in results] - - plt.figure(figsize=(10, 6)) - plt.grid(axis="y", linestyle="--", alpha=0.7, zorder=0) - - colors = ["#2ca02c" if "gpu" in n.lower() else "#1f77b4" for n in names] - bars = plt.bar(names, fps_values, color=colors, zorder=3) - plt.ylabel("Frames Per Second (FPS)") - plt.title(f"Performance Comparison: {chart_path.stem}") - plt.xticks(rotation=45) - - for bar in bars: - yval = bar.get_height() - plt.text( - bar.get_x() + bar.get_width() / 2, - yval + 1, - f"{yval:.1f}", - ha="center", - va="bottom", + instance, _ = get_test_handler(TestReader(), device) + + instance.source = init_args["source"] + instance.name = init_args["name"] + instance.result_dir = Path(init_args["result_dir"]) + instance.active_streams = init_args["active_streams"] + instance.read_frame_only = init_args["read_frame_only"] + instance.__class__.benchmarks = init_args["benchmarks"] # Sandbox the metrics + + vid_dir = instance.result_dir / device + vid_dir.mkdir(parents=True, exist_ok=True) + os.environ["TEST_SUITE_RENDER_DIR"] = str(vid_dir) + + # config definition + config = PipelineConfig( + SHARED_OUTPUT=str(instance.result_dir), + CUSTOM_MODEL_FLAG=os.getenv("CUSTOM_MODEL_FLAG", CUSTOM_MODEL_FLAG_DEFAULT), + DEVICE=device.upper(), + OMIT_DETECTIONS_FLAG=True, + TEST_MODE=True, + DEBUG=os.getenv("DEBUG", DEBUG_DEFAULT), + DEBUG_FRAME_LIMIT=int(os.getenv("DEBUG_FRAME_LIMIT", 100)), + ENABLE_QUERYING=False, + MODEL_NAME=os.getenv("MODEL_NAME", MODEL_NAME_DEFAULT), + SMART_FILTERING_ENABLED=sf_enabled, + THRESHOLD_VALUE=int(os.getenv("THRESHOLD_VALUE", THRESHOLD_VALUE)), + DETECTION_TYPE=detection_type, + ) + + # INITIALIZE CLASS (mimic DeviceBaseHandler.__init__) ------------------------------ + instance.is_rtsp = str(instance.source).startswith("rtsp:/") + instance.active = True + instance.config = config + + # kwarg definition + instance._testMethodName = f"{device.upper()}Reader" + # instance.video_output_name = ( + # f"{instance._testMethodName}_{short_name}.mp4" + # ) + + instance.loop = asyncio.get_event_loop() + instance.frame_ready_event = asyncio.Event() + instance._is_stopped = False + instance._stop_lock = threading.Lock() # Local lock for this instance + instance.main_startup_event = mp.Event() + + instance.device = instance.config.DEVICE + instance.device_input = instance.config.device_input + instance.disp_w, instance.disp_h = instance.config.DISPLAY_FRAME_SIZE + instance.resize_h, instance.resize_w = [ + instance.config.MODEL_H, + instance.config.MODEL_W, + ] + + instance.setup_reader( + instance.config.TARGET_FPS, + instance.config.CLIP_DURATION, + startup_event=instance.main_startup_event, + ) + instance.initialize_variables() + instance.setup_threads() + instance.last_heartbeat = time.perf_counter() + + if STATE_CAPTURE: + main_app_logger.info( + "[DIAGNOSTIC] Registering system state baseline layout..." + ) + instance.baseline_before_start = instance.capture_state_snapshot() + + def orig_fn(profiler): + return instance.run_realtime_inference( + sf_enabled=instance.config.sf_enabled, + profiler=profiler, + read_frame_only=instance.read_frame_only + if hasattr(instance, "read_frame_only") + else False, + gt_enabled=gt_enabled, ) - if fps_values: - plt.ylim(0, max(fps_values) * 1.2) + def profiler_fn(): + profiler = None + try: + if str2bool(os.getenv("ENABLE_PROFILING", "False")): + Profiler = install_and_load_pip_package( + "pyinstrument", attribute_name="Profiler" + ) + + profiler = Profiler(interval=0.005) # 5ms sampling interval + + # Telling the statistical sampler to skip recording exception blocks completely + # stops stack_sampler.py from ballooning RAM over long production runs. + if hasattr(profiler, "_sampler") and profiler._sampler: + profiler._sampler.trace_exceptions = False + + profiler.start() + + orig_fn(profiler) + + if str2bool(os.getenv("ENABLE_PROFILING", "False")): + # 2. Redirect standard error to the filter trap right before report compilation + original_stderr = sys.stderr + sys.stderr = ResourceTrackerFilter(original_stderr) + + try: + # Force standard stdout to flush out any lingering teardown messages + # BEFORE pyinstrument dumps its massive ASCII tree block. + sys.stdout.flush() + + # main_app_logger.info(profiler.output_text(color=True)) + # profiler.main_app_logger.info(color=True) + # prof_output = profiler.output_text(color=True) + # main_app_logger.info( + # f"\n=== LATENCY BREAKDOWN FOR {self.name} ({device}) ===\n{prof_output}\n", + # + # ) + + # Save a clean, interactive tree map for visual analysis + output_html_path = instance.output_path.replace( + ".mp4", "_profile.html" + ) + # output_html_path = f"/tmp/profile_{video_name}_{device}.html" + profiler.write_html(output_html_path) + main_app_logger.info( + f"[PROFILER] Performance tree map exported to {output_html_path}", + ) + + finally: + sys.stderr = original_stderr + if "profiler" in locals(): + try: + # Force the Python interpreter to detach pyinstrument's sampling hooks + sys.setprofile(None) + + # Completely decouple internal statistical sessions to drop C-heap frames + if hasattr(profiler, "_last_session"): + profiler._last_session = None + if hasattr(profiler, "last_session"): + profiler.last_session = None + + # Forcibly clear out internal memoryview strings caching tree metrics + if ( + hasattr(profiler, "session") + and profiler.session is not None + ): + if hasattr(profiler.session, "frame_groups"): + profiler.session.frame_groups = None + if hasattr(profiler.session, "samples"): + profiler.session.samples = [] + + # Purge compiled tree metrics structures + profiler.session = None + del profiler + except Exception: + pass + + # Trigger an immediate native Linux heap compression pass + # This grabs the newly abandoned pyinstrument C-heap blocks and + # flushes them to the OS before the fixture assessment snapshot fires! + gc.collect() + try: + libc = ctypes.CDLL("libc.so.6") + libc.malloc_trim(0) + except Exception: + pass - plt.tight_layout() - plt.savefig(str(chart_path)) - print(f" Comparison chart saved to: {chart_path}") - except Exception: - print("Skipping chart generation: error occurred.") + except Exception: + traceback.print_exc() + + if str2bool(os.getenv("ENABLE_PROFILING", "False")) and hasattr( + instance, "process_thread" + ): + # Re-initialize the thread context using our safe profile wrapper proxy + instance.process_thread = threading.Thread(target=profiler_fn, daemon=True) + + instance.VIDEO_GT_DETAILS = None + instance.duration_target = 30 + + instance.start() + + while instance.active or not instance._is_stopped: + time.sleep(0.25) + if getattr(instance, "status", None) == "DONE": + break + + if ( + hasattr(instance, "process_thread") + and instance.process_thread is not None + ): + if not instance.process_thread.is_alive(): + main_app_logger.info( + "[TEST HARNESS] Background worker exited. Breaking loop.", + ) + break + + instance.stop_threads(["process_thread"]) + + # Force early hardware driver sweep before unbinding threads + if instance.device_input == "cuda" and torch.cuda.is_available(): + torch.cuda.synchronize() + torch.cuda.empty_cache() + torch.cuda.ipc_collect() + + gc.collect() + + try: + if STATE_CAPTURE: + # --- CAPTURE STATE POINT B (Right before cleanup) --- + main_app_logger.info( + "[DIAGNOSTIC] Gathering active execution workspace layouts..." + ) + state_after_stop = instance.capture_state_snapshot() + + # 3. Print the granular delta analysis out to your terminal screen + new_keys_generated, mutated_keys, static_keys = ( + instance.print_lifecycle_delta( + instance.baseline_before_start, + state_after_stop, + return_keys=True, + ) + ) + # self.config.DEBUG_FLAG and + if len(new_keys_generated) > 0 or len(mutated_keys) > 0: + # Inform the blueprint engine to eliminate every difference found between Point A and B + instance.stop_blueprint_executor(new_keys_generated, mutated_keys) + except Exception: + traceback.print_exc() + assert instance.status == "DONE" -class DummyProcess: - def start(self): - pass + # TEARDOWN + instance.execute_teardown() - def join(self, timeout=None): - pass + if str2bool(os.getenv("ENABLE_PROFILING", "False")): + gc.collect() + if ( + device == "gpu" and torch.cuda.is_available() + ): # self.device_input == "cuda" and torch.cuda.is_available(): + torch.cuda.synchronize() + torch.cuda.empty_cache() + instance.assess_memory( + device, instance.name, start_allocated, start_reserved + ) - def is_alive(self): - return False + if len(instance.__class__.benchmarks) > 0: + final_metrics = instance.__class__.benchmarks[-1] + res_queue.put({"status": "success", "metrics": final_metrics}) + else: + res_queue.put({"status": "error", "error": "No benchmarks generated."}) - def close(self): - pass + except Exception as e: + res_queue.put( + {"status": "error", "error": str(e), "traceback": traceback.format_exc()} + ) + res_queue.put( + {"status": "error", "error": str(e), "traceback": traceback.format_exc()} + ) +# ========================================================================= +# PYTEST TEST HARNESS +# ========================================================================= @pytest.fixture(scope="class") def setup_context(request): """Replaces setUpClass: Runs once per test class.""" @@ -126,10 +454,7 @@ def setup_context(request): main_path = test_dir.parent video_dir = main_path / "inputs" - request.cls._shared_model = None - request.cls._shared_model_path = None - request.cls._shared_model_device = None - request.cls._shared_model_sf_enabled = None + request.cls.read_frame_only = True # model_name = os.getenv("MODEL_NAME", MODEL_NAME_DEFAULT) # Handler.__init__ (main items) @@ -151,22 +476,26 @@ def setup_context(request): request.cls.name = "rtsp" request.cls.is_rtsp = True # request.cls.test_duration_mins = float(os.getenv("TEST_DURATION_MINS", 0.25)) + request.cls.result_dir = ( test_dir / f"{current_test_filename}_results" # /{model_name}" / request.cls.name ) request.cls.result_dir.mkdir(parents=True, exist_ok=True) + + # Benchmark statistics request.cls.benchmarks = [] request.cls.csv_filename = f"reader_benchmarks_{request.cls.name}.csv" request.cls.csv_path = request.cls.result_dir / request.cls.csv_filename - request.cls.active = True + # request.cls.active = True request.cls.active_streams = {} + # RUN ALL PARAMETERIZED TESTS ---------------------------------------- yield - # Summarize Benchmarks + # FINAL CSV EXPORT -------------------------------------------------- if request.cls.benchmarks: # Filter and exclude rows that were interrupted or failed initialization due to an early pytest skip request.cls.benchmarks = [ @@ -195,12 +524,19 @@ def setup_context(request): dict_writer.writeheader() dict_writer.writerows(results) - print(f"\n[FINAL] Benchmarks saved to {request.cls.csv_path}") + main_app_logger.info(f"[FINAL] Benchmarks saved to {request.cls.csv_path}") + + main_app_logger.info("=" * 80) + main_app_logger.info( + f"{'Test Name':<25} | {'Pipeline FPS (Target)':<21} | {'Avg Frame Reading (ms)':<22} | {'Pipeline Speedup vs CPU':<15}", + ) + main_app_logger.info("-" * 80) for r in results: - print( - f" > {r['Test Name']}: {r['Pipeline FPS (Video frames)']} FPS | {r['Pipeline FPS (Target frames)']} FPS | {r['Avg Frame Reading (ms)']} ms | Speedup: {r.get('Pipeline Speedup vs CPU', 'N/A')}" + main_app_logger.info( + f"{r['Test Name']:<25} | {r['Pipeline FPS (Target frames)']:<21} | {r['Avg Frame Reading (ms)']:<22} | {r.get('Pipeline Speedup vs CPU', 'N/A'):<10}", ) + main_app_logger.info("=" * 125) chart_path = ( request.cls.result_dir @@ -217,1843 +553,90 @@ def setup_context(request): ) -@pytest.fixture(autouse=True) -def each_test_setup(request): - test_class_self = request.instance - if torch.cuda.is_available(): - torch.cuda.synchronize() - - device = request.node.callspec.params.get("device") - # detection_type = request.node.callspec.params.get("detection_type") - # sf_enabled = request.node.callspec.params.get("sf_enabled") - - test_class_self._testMethodName = f"{device.upper()}Reader" - - # video_output_name = f"{test_class_self._testMethodName}_detections_output.mp4" - vid_dir = test_class_self.result_dir / device - vid_dir.mkdir(parents=True, exist_ok=True) - - # Handler.__init__ (remaining items) - # 1. Re-initialize a fresh configuration object - test_class_self.config = PipelineConfig( - CUSTOM_MODEL_FLAG=os.getenv("CUSTOM_MODEL_FLAG", CUSTOM_MODEL_FLAG_DEFAULT), - DEVICE=device.upper(), - OMIT_DETECTIONS_FLAG=True, - TEST_MODE=True, - DEBUG=os.getenv("DEBUG", DEBUG_DEFAULT), - DEBUG_FRAME_LIMIT=int(os.getenv("DEBUG_FRAME_LIMIT", 100)), - ENABLE_QUERYING=False, - MODEL_NAME=os.getenv("MODEL_NAME", MODEL_NAME_DEFAULT), - # SMART_FILTERING_ENABLED=sf_enabled, - THRESHOLD_VALUE=int(os.getenv("THRESHOLD_VALUE", THRESHOLD_VALUE)), - # DETECTION_TYPE=detection_type, - ) - - # test_video_output_path = os.path.join(str(vid_dir), video_output_name) - os.environ["TEST_SUITE_RENDER_DIR"] = str(vid_dir) - test_class_self.config.SHARED_OUTPUT = str(test_class_self.result_dir) - test_class_self.disp_w, test_class_self.disp_h = (640, 360) - - if device == "gpu": - # Allocate a permanent float32/float16 channel layout space directly on VRAM - test_class_self.static_gpu_360p = torch.empty( - (1, 3, test_class_self.disp_h, test_class_self.disp_w), - dtype=torch.float32, - device="cuda", - ) - test_class_self.static_gpu_byte_bchw = torch.empty( - (1, 3, test_class_self.disp_h, test_class_self.disp_w), - dtype=torch.uint8, - device="cuda", - ).contiguous() - # Fast reusable canvas tensor matching your writer width/height payload bounds - # test_class_self.static_host_canvas = np.zeros((test_class_self.disp_h, test_class_self.disp_w, 3), dtype=np.uint8) - # Register the memory block as page-locked (pinned) to max out PCIe DMA bandwidth - # cv2.cuda.registerPageLocked(test_class_self.static_host_canvas) - - # Create two isolated tracking canvases to handle the ping-pong data stream - test_class_self.static_host_canvases = [ - np.zeros( - (test_class_self.disp_h, test_class_self.disp_w, 3), dtype=np.uint8 - ), - np.zeros( - (test_class_self.disp_h, test_class_self.disp_w, 3), dtype=np.uint8 - ), - ] - test_class_self.canvas_selector = 0 - - # Register BOTH buffers as page-locked memory - cv2.cuda.registerPageLocked(test_class_self.static_host_canvases[0]) - cv2.cuda.registerPageLocked(test_class_self.static_host_canvases[1]) - - # Reset core state machine properties before invoking any backend handlers - test_class_self.active = True - # test_class_self._is_stopped = False - - # Replaces the standard class dictionary with an active inter-process proxy container layout. - # This ensures child worker processes can write memory back to the parent process. - # if not hasattr(test_class_self.__class__, "_managed_sync_ctx"): - # test_class_self.__class__._managed_sync_ctx = mp.Manager() - - # test_class_self.__class__._shared_bench_metrics = test_class_self.__class__._managed_sync_ctx.dict({ - # "num_objs": 0, - # "total_written_frames": 0, - # "total_pipeline_ms": 0.0, - # "real_world_latency_ms": 0.0, - # "total_sf_pipeline_time_ms": 0.0, - # "total_read_time": 0.0, - # "total_queue_saturation": 0.0, - # "queue_saturation_history": [0.0] - # }) - - test_class_self.loop = asyncio.get_event_loop() - test_class_self.frame_ready_event = asyncio.Event() - test_class_self._is_stopped = False - test_class_self._stop_lock = threading.Lock() # Local lock for this instance - test_class_self.mp_frame_ready_event = mp.Event() - # test_class_self.stat_start_time = time.perf_counter() # timing to display detection - - test_class_self.device = test_class_self.config.DEVICE - test_class_self.device_input = test_class_self.config.device_input - test_class_self.resize_h, test_class_self.resize_w = [ - test_class_self.config.MODEL_H, - test_class_self.config.MODEL_W, - ] - - # Resolve concrete handler class type - HandlerClass = GPUStreamHandler if device == "gpu" else CPUStreamHandler - HandlerClass.pipeline_fn = test_class_self.__class__.pipeline_fn - - # Dynamically re-bind backend methods to this execution instance - handler_classes = [HandlerClass, DeviceBaseHandler] - all_method_names = set() - - for cls in handler_classes: - for name, attr in inspect.getmembers(cls, predicate=inspect.isfunction): - all_method_names.add(name) - - for method_name in all_method_names: - source_obj = ( - HandlerClass if hasattr(HandlerClass, method_name) else DeviceBaseHandler - ) - if hasattr(source_obj, method_name): - raw_func = getattr(source_obj, method_name) - if ( - not hasattr(test_class_self.__class__, method_name) - or method_name == "pipeline_fn" - ): - setattr( - test_class_self, - method_name, - types.MethodType(raw_func, test_class_self), - ) - # Force the background thread-pool launcher to run your modified staging loop - # setattr( - # test_class_self, - # "run_realtime_inference", - # types.MethodType(test_class_self.__class__.run_realtime_inference, test_class_self) - # ) - - # 3. FORCE NATIVE PIPELINE PROVISIONING - test_class_self.setup_reader( - test_class_self.config.TARGET_FPS, test_class_self.config.CLIP_DURATION - ) - test_class_self.initialize_variables() - test_class_self.setup_model(None) - test_class_self.prepare_pipeline() - - test_class_self.run_realtime_inference = types.MethodType( - test_class_self.__class__.run_realtime_inference, test_class_self - ) - # This guarantees that when handlers.py spawns background execution threads, - # it is forced to execute your modified staging test loop method. - # HandlerClass.run_realtime_inference = test_class_self.__class__.run_realtime_inference - # DeviceBaseHandler.run_realtime_inference = test_class_self.__class__.run_realtime_inference - - test_class_self.setup_threads() - - # # Reset runtime loop state properties - # test_class_self.render_queue = None - # test_class_self.next_process_idx = 0.0 - # test_class_self.frame_in_clip_count = 0 - # test_class_self.frame_count = 0 - # test_class_self.elapsed_display_time = 0.0 - # test_class_self.no_roi_frame_cnt = 0 - - # test_class_self.component_stats = { - # "sf": [], - # "roi": [], - # "det": [], - # "dma_upload": [], - # "queue_blocked": [], - # "batch_sizes": [], - # "thread_backlog": [] - # } - # test_class_self.crops_per_frame_list = [] - - # test_class_self.is_cuda = test_class_self.device.lower() == "gpu" and torch.cuda.is_available() - # # test_class_self.frame_count_target = mp.Value("i", 0) # test_class_self.frame_count_target = 0 - # test_class_self.frame_count_target = 0 - # test_class_self.next_process_idx = 0.0 - # test_class_self.frame_in_clip_count = 0 - - # if hasattr(test_class_self, "setup_threads"): - # test_class_self.setup_threads() - - # shared_event_buffer = {"sf": [], "roi": [], "det": []} - # test_class_self.gpu_event_buffer = shared_event_buffer - - # if torch.cuda.is_available(): - # torch.cuda.empty_cache() - # torch.cuda.ipc_collect() - # torch.cuda.reset_peak_memory_stats(0) - - # if device == "gpu" and torch.cuda.is_available(): - # print("\n[PROFILER] Initializing isolated PyTorch VRAM allocation history map...") - # try: - # # Modern PyTorch API signature format - # torch.cuda.memory._record_memory_history( - # enabled=True, - # max_entries=200000 # Sets the buffer queue size limits - # ) - # except TypeError: - # # Fallback baseline if your specific environment only allows a basic toggle switch - # torch.cuda.memory._record_memory_history(enabled=True) - - # # Force eager initialization of hidden packages to avoid dynamic lookups in the hot path - # import dataclasses - # import importlib - # import torch.nn.functional as F - # from ultralytics.cfg import get_cfg - # import pyparsing - # import matplotlib - # import matplotlib.rcsetup - # import anyio - # import anyio._core._fileio - # import numpy.core.overrides - # import numpy.lib.function_base - # import asyncio.base_events - # import sre_parse - # import logging - - # # Dummy execution pass to fully resolve internal lazy properties and populate sys.modules caches - # try: - # _ = get_cfg() - # except Exception: - # pass - - yield - - # Teardown logic - test_class_self.active = False - - # # Force immediate structural flush of the asynchronous display thread pool before memory unlinking - # if hasattr(test_class_self, "display_pool") and test_class_self.display_pool is not None: - # try: - # # wait=True guarantees every single remaining background 8K layout operation - # # finishes processing and flushes into the rendering_worker before the clock stops - # test_class_self.display_pool.shutdown(wait=True) - # except Exception: - # pass - # if hasattr(test_class_self, "display_ring_buffer"): - # delattr(test_class_self, "display_ring_buffer") - # delattr(test_class_self, "display_pool") - - # Fallback to production reader safety closure - if hasattr(test_class_self, "reader") and test_class_self.reader is not None: - try: - if hasattr(test_class_self.reader, "print_breakdown"): - test_class_self.reader.print_breakdown() - test_class_self.reader.stop() - except Exception: - pass - - if ( - hasattr(test_class_self, "stop_writer") - and test_class_self.stop_writer is not None - ): - try: - test_class_self.stop_writer.set() - except Exception: - pass - - # --- CRITICAL RE-ORDERED FLUSH GATE --- - # 1. First, block and wait for the video processing producer thread to completely finish - # reading all remaining frames from the input video file. - producer_thread_handle = getattr(test_class_self, "process_thread", None) - if producer_thread_handle is not None and producer_thread_handle.is_alive(): - producer_thread_handle.join(timeout=0.5) # 10.0) - - # 2. Block and wait for background asynchronous AI executor workers to finish inference tasks. - if hasattr(test_class_self, "executor") and test_class_self.executor: - test_class_self.executor.shutdown(wait=True) - - # 3. Allow the multiprocessing render queue to naturally empty its frames into the encoder pipe. - if ( - hasattr(test_class_self, "render_queue") - and test_class_self.render_queue is not None - ): - try: - # Loop safely until the render loop handles the last remaining frames - # while not test_class_self.render_queue.empty(): - # time.sleep(0.05) - - # Send a poison pill token ONLY after all threads have fully stopped putting data into it - # test_class_self.render_queue.put(None, timeout=1.0) - if ( - hasattr(test_class_self, "render_queue") - and test_class_self.render_queue is not None - ): - try: - # Forcefully clear the queue thread tracking matrices - test_class_self.render_queue.close() - test_class_self.render_queue.cancel_join_thread() - except Exception: - pass - except Exception: - pass - - # 4. Gracefully join the background FFmpeg process, avoiding premature kills - render_proc_handle = getattr(test_class_self, "render_proc", None) - if render_proc_handle is not None: - try: - if render_proc_handle.is_alive(): - # Grant up to 10 seconds for disk I/O synchronization - render_proc_handle.join(timeout=0.5) # 10.0) - - if render_proc_handle.is_alive(): - print( - "[WARN] Render worker hung during final flush. Forcing termination." - ) - render_proc_handle.terminate() - render_proc_handle.join() - - render_proc_handle.close() - except Exception: - pass - setattr(test_class_self, "render_proc", None) - - # 4. Deep System Unlinking of Shared Memory Layers (Parent/Child safe) - # This loop uses direct reference mapping rather than guessing PIDs - for shm_pool_attr in ["ai_shms", "shms"]: - if hasattr(test_class_self, shm_pool_attr): - shm_pool = getattr(test_class_self, shm_pool_attr) - if shm_pool: - for shm_segment in list(shm_pool): - try: - shm_segment.close() - shm_segment.unlink() - except Exception: - pass - shm_pool.clear() - - # 5. Clean up the Sync Base Manager Process - if hasattr(test_class_self, "manager") and test_class_self.manager is not None: - try: - test_class_self.manager.shutdown() - except Exception: - pass - test_class_self.manager = None - - # CRITICAL FIX: Block and wait for the background producer thread to die - # BEFORE we delete the reader attribute from the namespace map. - producer_thread_handle = getattr(test_class_self, "process_thread", None) - if producer_thread_handle is not None and producer_thread_handle.is_alive(): - producer_thread_handle.join(timeout=5.0) - - # if hasattr(test_class_self, "ingest_ring") and test_class_self.ingest_ring: - # for mat in test_class_self.ingest_ring: - # try: - # cv2.cuda.unregisterPageLocked(mat) - # except Exception: - # pass - # test_class_self.ingest_ring.clear() - - # if hasattr(test_class_self, "pinned_matrices") and test_class_self.pinned_matrices: - # for active_mat in test_class_self.pinned_matrices: - # try: - # cv2.cuda.unregisterPageLocked(active_mat) - # except Exception: - # pass - # test_class_self.pinned_matrices.clear() - # if hasattr(test_class_self, "pinned_tensors"): - # test_class_self.pinned_tensors.clear() - # if hasattr(test_class_self, "ai_pinned_tensors"): - # test_class_self.ai_pinned_tensors.clear() - - try: - cv2.cuda.unregisterPageLocked(test_class_self.pinned_matrices) - except Exception: - pass - - # ADD THIS MECHANISM: - if hasattr(test_class_self, "static_host_canvas"): - try: - cv2.cuda.unregisterPageLocked(test_class_self.static_host_canvas) - except Exception: - pass - - if ( - not test_class_self.active - ): # Only execute this block during complete class teardown - if hasattr(test_class_self, "ingest_ring") and test_class_self.ingest_ring: - for mat in test_class_self.ingest_ring: - try: - cv2.cuda.unregisterPageLocked(mat) - except Exception: - pass - test_class_self.ingest_ring.clear() - - if ( - hasattr(test_class_self, "pinned_matrices") - and test_class_self.pinned_matrices - ): - for active_mat in test_class_self.pinned_matrices: - try: - cv2.cuda.unregisterPageLocked(active_mat) - except Exception: - pass - test_class_self.pinned_matrices.clear() - - # Now it is structurally safe to purge attributes without causing cross-thread collisions - keys_to_purge = [ - "reader", - "process_thread", - "inference_stream", - "bgs_stream", - "model", - "raw_input", - "ai_gpu_staging", - "ai_pinned_tensors", - "executor", - # "io_executor", - ] - for key in keys_to_purge: - if hasattr(test_class_self, key): - delattr(test_class_self, key) - - if ( - hasattr(test_class_self, "gpu_event_buffer") - and test_class_self.gpu_event_buffer - ): - test_class_self.gpu_event_buffer.clear() - if hasattr(test_class_self, "component_stats") and test_class_self.component_stats: - test_class_self.component_stats.clear() - - with torch.inference_mode(): - if torch.cuda.is_available(): - torch.cuda.synchronize() - if device == "gpu": - torch.cuda.memory._record_memory_history(enabled=False) - torch.cuda.empty_cache() - torch.cuda.ipc_collect() - - gc.collect() - time.sleep(0.2) - - @pytest.mark.usefixtures("setup_context") -class TestReader: - # SETUP -------------------------------------------- - - @pytest.mark.parametrize("device", ["cpu", "gpu"]) - def test_device_reader(self, device): - """Unified test runner for all configurations.""" - self.duration_target = 30 - - # Trigger your clean overridden thread boot - self.start() - - print( - f"\n[TEST HARNESS] Execution Started. Monitoring variables natively for {self.duration_target}s..." - ) - # test_start_time = time.perf_counter() - # target_wait_frames = ( - # int(self.duration_target * float(self.target_fps)) - # if hasattr(self, "target_fps") - # else 450 - # ) - - # --- WATCH NATIVE VARIABLES LIVE --- - # while not self._is_stopped: - # time.sleep(0.1) - - # Explicit timer tracking allows background multiprocessing queues to stream uninhibited - # test_start_time = time.perf_counter() +class TestReader(BaseTest): + """ + Pytest runner that spawns the isolated worker, waits for completion, + and merges the returned metrics into the main class for CSV/Chart generation. + """ - while self.active or not self._is_stopped: - # Check if our active benchmark validation timeline target has been fulfilled - # if (time.perf_counter() - test_start_time) >= float(self.duration_target) + 15.0: - # print("\n[TEST HARNESS] Targeted test runtime duration reached. Initiating clean multi-process flush...", flush=True) - # break - time.sleep(0.1) # Stay clear of the hot pipeline lane + benchmarks = [] # Class-level attribute required by _finalize_benchmarks - # Natively initiate the multi-process writer teardown - # self.stop() - - assert self.status == "DONE" - - def setup_threads(self): - """Overrides handlers.py to bind threads dynamically to the test instance.""" - self.setup_shared_memory() # Natively sets up Manager dictionary and buffers - - # Executor for Async YOLO tasks and FFmpeg re-encoding - self.executor = ThreadPoolExecutor(max_workers=self.config.MAX_WORKERS) - # self.clip_executor = ThreadPoolExecutor(max_workers=self.config.MAX_WORKERS) - - print( - f"sf_enabled: {self.config.sf_enabled}\tTEST_MODE: {self.config.TEST_MODE}", - flush=True, - ) - - # Open up looking-ahead buffer horizons to eliminate 8K queue backpressure stalls - self.signal_queue = mp.Queue(maxsize=128) # 10) - self.render_queue = mp.Queue(maxsize=256) # 64) - - test_dir = os.getenv( - "TEST_SUITE_RENDER_DIR", str(Path(self.config.SHARED_OUTPUT)) - ) - os.makedirs(test_dir, exist_ok=True) - - if self.source.startswith("rtsp"): - short_name = "rtsp" - else: - short_name = Path(self.source).stem - video_output_name = f"{self._testMethodName}_{short_name}.mp4" - out_path = os.path.join(test_dir, video_output_name) - self.output_path = ( - out_path # f"{self.config.SHARED_OUTPUT}/{short_name}_{self.device}.mp4" - ) - - log_to_logger( - f"[TEST MODE] Detection results saved to: {out_path}", level="info" - ) - - # ===================================================================== - # DYNAMIC THREAD TARGET REDIRECTION - # ===================================================================== - # Lambda forces the background processing thread to evaluate your custom staging loop natively - self.process_thread = threading.Thread( - target=lambda: self.run_realtime_inference( - sf_enabled=self.config.sf_enabled - ), - daemon=True, - ) - # self.render_proc = mp.Process( # threading.Thread( - # target=rendering_worker, - # args=( - # self.render_queue, - # (self.disp_w, self.disp_h), - # self.output_path, - # self.target_fps, - # ), - # daemon=True, - # ) - # self.render_proc = threading.Thread(target=lambda: None, daemon=True) - # self.display_proc = threading.Thread(target=lambda: None, daemon=True) - self.render_proc = DummyProcess() - self.display_proc = DummyProcess() - - self.async_writer = AsyncVideoWriter( - self.output_path, - cv2.VideoWriter_fourcc(*"avc1"), - float(self.target_fps), - (self.disp_w, self.disp_h), - ) - # self.async_writer = None - - def start(self): - """ - Starts the decoupled ingestion and inference threads in the correct order. - """ - # PRE-SYNC: Ensure GPU is idle before timing starts - if self.device_input == "cuda": - if torch.cuda.is_available(): - torch.cuda.synchronize() - - # Start the hardware-decoupled reader first - self.reader.start() - - if self.config.ENABLE_QUERYING: - self._initialize_writer() - - # Small delay to allow the reader's deque to populate - time.sleep(0.1) - - # Start the producer and consumer threads - if hasattr(self, "process_thread") and not self.process_thread.is_alive(): - self.process_thread.start() - - # If running on the CPU track, block the main test thread briefly until the CPU - # has successfully populated the first few frames into the render queue. - # This completely prevents the FFmpeg rendering worker from starving and skipping - # the initial 3-4 seconds of video. - # if getattr(self, "device_input", "cpu") == "cpu": - # print("[INIT] Waiting for CPU to prime the render queue...") - # timeout_counter = 0 - # # Wait until at least 5 frames are buffered in the queue or 10 seconds pass - # while self.render_queue.qsize() < 5 and timeout_counter < 100: - # time.sleep(0.1) - # timeout_counter += 1 - # print( - # f"[INIT] Render queue primed with {self.render_queue.qsize()} frames. Launching worker." - # ) - - if not self.config.DISABLE_DETECTION: - self.render_proc.start() - - self.display_proc.start() - - if ( - self.config.ENABLE_QUERYING - and not self.config.TEST_MODE - and not self.metadata_thread.is_alive() - ): - self.metadata_thread.start() - - if self.config.ENABLE_QUERYING and not self.writer_thread.is_alive(): - self.writer_thread.start() - - return self - - def stop(self): - """Overrides handlers.py to flush thread objects safely without deadlocking.""" - with self._stop_lock: - if self._is_stopped: - return - - print( - f"\n[TEST HARNESS] Initiating rapid thread flush for {self.name}", - flush=True, - ) - self.active = False - - # 1. Rapidly clear the async video writer thread queue first - # if hasattr(self, "async_writer") and self.async_writer is not None: - # try: - # self.async_writer.release() - # except Exception: - # pass - - # ===================================================================== - # DECUPLED MULTI-PROCESS TEARDOWN LIFECYCLE SEQUENCE - # ===================================================================== - # 1. FIRST: Drain and synchronize your thread pool tasks so EVERY frame drops into the IPC queue - if hasattr(self, "display_pool") and self.display_pool is not None: - try: - if hasattr(self.display_pool, "_work_queue"): - backlog = self.display_pool._work_queue.qsize() - if backlog > 0: - print( - f"\n\033[94m[STAGE 1/4] Synchronizing display pool threads. Draining {backlog} background tasks...\033[0m", - flush=True, - ) - backlog_s = time.perf_counter() - while ( - self.display_pool._work_queue.qsize() > 0 - or len(self.reorder_staging_buffer) > 0 - ): - # Yield a brief slice to let worker threads complete downscaling - time.sleep(0.01) - backlog_e = time.perf_counter() - backlog_s - print(f"\t\033[94mTook {backlog_e} secs\033[0m", flush=True) - print( - "\033[92m[SUCCESS] All background image transformations completed cleanly.\033[0m", - flush=True, - ) - self.display_pool.shutdown(wait=True) - except Exception as e: - print( - f"[TEARDOWN ERROR] Thread pool synchronization failed: {e}", - flush=True, - ) - setattr(self, "display_pool", None) - - # 2. SECOND: Now that every single frame is safely sitting in the render_queue, dispatch the poison pill - # if hasattr(self, "render_queue") and self.render_queue is not None: - # try: - # print(f"\033[94m[STAGE 2/4] Dispatching shutdown sentinel (None) to rendering process worker (Backlog: {self.render_queue.qsize()} frames)...\033[0m", flush=True) - # self.render_queue.put(None, timeout=2.0) - # except Exception as queue_err: - # print(f"\033[91m[TEARDOWN ERROR] Failed staging shutdown token: {queue_err}\033[0m", flush=True) - - # # 3. THIRD: Block the main thread safely and allow the detached process to write everything to disk - # if hasattr(self, "render_proc") and self.render_proc is not None: - # try: - # if self.render_proc.is_alive(): - # print(f"\033[94m[STAGE 3/4] Main thread blocking. Waiting for hardware disk I/O synchronization...\033[0m", flush=True) - # t_join_start = time.perf_counter() - # self.render_proc.join(timeout=30.0) # Increase timeout to ensure all 248 frames save - # join_duration = time.perf_counter() - t_join_start - - # if self.render_proc.is_alive(): - # print("\n\033[91m[CRITICAL STALL] Render worker process hung on disk write! Forcing termination...\033[0m", flush=True) - # self.render_proc.terminate() - # self.render_proc.join() - # else: - # print(f"\033[92m[FINAL] Video compilation finished cleanly! Hard drive commit took {join_duration:.2f} seconds.\033[0m", flush=True) - - # if hasattr(self, "source"): - # expected_disk_path = Path(self.output_path) - # if expected_disk_path.exists(): - # size_mb = expected_disk_path.stat().st_size / (1024 * 1024) - # print(f"\033[92m[DISK VERIFIED] Destination asset compiled: {expected_disk_path.name} ({size_mb:.2f} MB)\033[0m\n", flush=True) - # self.render_proc.close() - # except Exception as proc_err: - # print(f"\033[91m[TEARDOWN ERROR] Failed closing background process container: {proc_err}\033[0m", flush=True) - # setattr(self, "render_proc", None) - - # 2. SECOND: Deliver a poison pill sentinel token to tell FFmpeg to flush its internal buffers - # ===================================================================== - # MULTI-PROCESS TEARDOWN LIFECYCLE SEQUENCE (DECOUPLED FLUSH) - # ===================================================================== - # 1. FIRST: Instantly dispatch the shutdown token so the worker process knows to flush entries - if hasattr(self, "render_queue") and self.render_queue is not None: - try: - print( - f"\n\033[94m[STAGE 1/3] Dispatching shutdown sentinel (None) to rendering process worker (Backlog: {self.render_queue.qsize()} frames)...\033[0m", - flush=True, - ) - # Delivering the poison pill immediately tells FFmpeg to drain remaining blocks sequentially - self.render_queue.put(None, timeout=2.0) - except Exception as queue_err: - print( - f"\033[91m[TEARDOWN ERROR] Failed staging shutdown token: {queue_err}\033[0m", - flush=True, - ) - - # 2. SECOND: Allow the background multiprocessing queue to empty outstanding items naturally - if hasattr(self, "render_queue") and self.render_queue is not None: - try: - print( - "\n\033[94m[STAGE 2/3] Finalizing file output. Draining remaining frames from IPC memory lane...\033[0m", - flush=True, - ) - t_drain = time.perf_counter() - # Wait up to 15 seconds for the worker process to pull every remaining matrix out of the pipe - while ( - not self.render_queue.empty() - and (time.perf_counter() - t_drain) < 15.0 - ): - time.sleep( - 0.01 - ) # Micro-yield grants immediate execution priority to the background process core - except Exception: - pass - - # 3. THIRD: Block the main thread safely and allow the detached process to finish disk I/O operations - if hasattr(self, "render_proc") and self.render_proc is not None: - try: - join_duration = 0.0 - if self.render_proc.is_alive(): - print( - "\033[94m[STAGE 2/2] Main thread blocking. Synchronizing hard drive file headers...\033[0m", - flush=True, - ) - t_join_start = time.perf_counter() - self.render_proc.join( - timeout=15.0 - ) # Safe timeout lets video containers finalize cleanly - join_duration = time.perf_counter() - t_join_start - - if self.render_proc.is_alive(): - print( - "\n\033[91m[CRITICAL STALL] Render worker process hung on disk write! Forcing termination...\033[0m", - flush=True, - ) - self.render_proc.terminate() - self.render_proc.join() - else: - print( - f"\033[92m[FINAL] Video compilation finished cleanly! Hard drive commit took {join_duration:.2f} seconds.\033[0m", - flush=True, - ) - - expected_disk_path = Path(self.output_path) - if expected_disk_path.exists(): - size_mb = expected_disk_path.stat().st_size / (1024 * 1024) - print( - f"\033[92m[DISK VERIFIED] Destination asset compiled: {expected_disk_path.name} ({size_mb:.2f} MB)\033[0m\n", - flush=True, - ) - self.render_proc.close() - except Exception as proc_err: - print( - f"\033[91m[TEARDOWN ERROR] Failed closing background process container: {proc_err}\033[0m", - flush=True, - ) - setattr(self, "render_proc", None) - - # 4. FOURTH: Clean up remaining pipeline executors and queues safely - if hasattr(self, "render_queue") and self.render_queue is not None: - try: - self.render_queue.close() - self.render_queue.cancel_join_thread() - except Exception: - pass - setattr(self, "render_queue", None) - - if hasattr(self, "executor") and self.executor is not None: - try: - self.executor.shutdown(wait=True) - except Exception: - pass - setattr(self, "executor", None) - - self.status = "DONE" - self._is_stopped = True - print( - "[TEST HARNESS] Teardown complete. Releasing session cleanly.\n", - flush=True, - ) - - # # 2. De-couple the multiprocessing queues without holding internal worker joins - # for q_attr in ["signal_queue"]: #, "render_queue"]: - # if hasattr(self, q_attr): - # q = getattr(self, q_attr) - # if q is not None: - # try: - # q.close() - # q.cancel_join_thread() - # except Exception: - # pass - # setattr(self, q_attr, None) - # if hasattr(self, "render_queue") and self.render_queue is not None: - # try: - # print(f"[TEST HARNESS] Finalizing file output. Waiting for {self.render_queue.qsize()} frames to commit...") - # while not self.render_queue.empty(): - # time.sleep(0.05) - # # Send the shutdown token to tell FFmpeg/OpenCV to save container indexes - # self.render_queue.put(None, timeout=2.0) - # except Exception: - # pass - - # # 3. Stop the shared-memory zero-copy background reader workers safely - # if hasattr(self, "reader") and self.reader is not None: - # try: - # if hasattr(self.reader, "running_flag"): - # self.reader.running_flag.value = False - # if hasattr(self.reader, "stopped"): - # self.reader.stopped = True - # self.reader.stop() - # except Exception: - # pass - - # # 4. Fast non-blocking thread pool shutdown prevents joining active loops indefinitely - # if hasattr(self, "executor") and self.executor is not None: - # try: - # # wait=False closes the pool interface instantly without stalling the CPU core! - # self.executor.shutdown(wait=True) #False) - # except Exception: - # pass - # setattr(self, "executor", None) - - # # FIX: Shut down the display layout pool to guarantee all frame tasks reach the writer queue - # if hasattr(self, "display_pool") and self.display_pool is not None: - # try: - # # wait=True forces the main thread to wait until async_display_task cycles finish execution - # self.display_pool.shutdown(wait=True) - # except Exception: - # pass - # setattr(self, "display_pool", None) - - # # 5. Clean up loose GPU stream handles - # if hasattr(self, "inference_stream") and self.inference_stream is not None: - # if torch.cuda.is_available(): - # try: - # self.inference_stream.synchronize() - # except Exception: - # pass - - # if hasattr(self, "async_writer") and self.async_writer is not None: - # try: - # self.async_writer.release() - # except Exception: - # pass - # setattr(self, "async_writer", None) - - # if hasattr(self, "render_proc") and self.render_proc is not None: - # try: - # if self.render_proc.is_alive(): - # self.render_proc.join(timeout=10.0) - # if self.render_proc.is_alive(): - # print("[WARN] Render worker hung during final flush. Forcing termination.") - # self.render_proc.terminate() - # self.render_proc.join() - # self.render_proc.close() - # except Exception: - # pass - # setattr(self, "render_proc", None) - - # self.status = "DONE" - # self._is_stopped = True - - # print(f"\n[TEST HARNESS] Teardown complete. Releasing session cleanly.", flush=True) - - # HELPERS -------------------------------------------- - def _print_gpu_mem(self): - if torch.cuda.is_available(): - # Memory currently used by tensors - allocated = torch.cuda.memory_allocated(0) / 1024**2 - # Total memory reserved by PyTorch (the "Pool") - reserved = torch.cuda.memory_reserved(0) / 1024**2 - print(f"\tAllocated: {allocated:0.2f} MB") - print(f"\tReserved: {reserved:0.2f} MB") - else: - print("\tCUDA not available.") - - def _finalize_benchmarks( - self, - num_objs, - total_written_frames, - total_pipeline_ms, - real_world_latency_ms, - total_sf_pipeline_ms, - total_read_time, - total_queue_saturation, - queue_saturation_history, - ): - """Aggregates metrics and adds them to the results list.""" - # sf_enabled = self.config.sf_enabled - stat_frame_count = self.stat_frame_count - stat_fps = self.stat_fps - - h2d_label = ( - "Pinned H2D Transfer (PCIe DMA)" - if self.is_cuda - else "Data Preparation Overhead" - ) - # d2h_label = ( - # "D2H Transfer (PCIe Download)" - # if self.is_cuda - # else "Array Extraction Overhead" - # ) - - total_pipeline_s = total_pipeline_ms / 1000.0 # Full pipeline - total_real_pipeline_s = ( - real_world_latency_ms / 1000.0 - ) # Pipeline until last frame sent to writer - real_est_fps = ( - self.frame_count_target / total_real_pipeline_s - if total_real_pipeline_s > 0 - else 0 - ) - - # det_latency_s = ( - # total_sf_pipeline_ms / 1000.0 - # ) # Just SF/Detection pipeline (sf + roi_ det) - # det_est_fps = ( - # self.frame_count_target / det_latency_s if det_latency_s > 0 else 0 - # ) - - # if total_written_frames > 0: - duration_s = ( - self.reader.total_input_frames / self.reader.input_fps - if self.reader.input_fps > 0 - else 0 - ) - out_duration_s = ( - total_written_frames / self.reader.target_fps - if self.reader.target_fps > 0 - else 0 - ) - print( - f"Expected duration: {self.duration_target:.2f} stream_duration_s: {duration_s:.2f} output_duration_s: {out_duration_s:.2f}" - ) - - h2d_display_label = f"Reader {h2d_label}:" - avg_reader_ms = (total_read_time / total_written_frames) * 1000 - # avg_resize_ms = (total_resize_time / total_written_frames)*1000 - # avg_write_ms = (total_disk_write_overhead / total_written_frames)*1000 - target_frame_fps = total_written_frames / total_pipeline_s - all_frame_fps = self.reader.total_input_frames / total_pipeline_s - avg_copy_ms = (self.reader.total_shm_copy_time / total_written_frames) * 1000 - avg_blocked_ms = ( - self.reader.total_queue_wait_time / total_written_frames - ) * 1000 - - avg_saturation = (total_queue_saturation / total_written_frames) * 100 - peak_saturation = ( - max(queue_saturation_history) * 100 if queue_saturation_history else 0 - ) - target_match_ratio = ( - total_written_frames / (total_pipeline_s * self.reader.target_fps) - ) * 100 - if self.is_cuda: - avg_h2d_ms = (self.reader.total_h2d_time / total_written_frames) * 1000 - avg_prep_ms = 0.0 - else: - avg_prep_ms = (self.reader.total_h2d_time / total_written_frames) * 1000 - avg_h2d_ms = 0.0 - - # Calculate structural frame size payload in Gigabytes (H * W * Channels) - frame_size_gb = (self.reader.frame_height * self.reader.frame_width * 3) / ( - 1024**3 - ) - - # 1. Compute Peak H2D PCIe Throughput - avg_h2d_s = ( - ( - sum(self.component_stats["dma_upload"]) - / len(self.component_stats["dma_upload"]) - ) - / 1000.0 - if self.component_stats["dma_upload"] - else 0 - ) - if self.is_cuda and avg_h2d_s > 0.00001: - self.pcie_throughput_gbps = frame_size_gb / avg_h2d_s - else: - self.pcie_throughput_gbps = ( - 0.0 # Safe fallback baseline for non-PCIe pipelines (CPU) - ) - - # 2. Extract PyTorch VRAM Fragmentation Delta Metrics - if self.is_cuda and torch.cuda.is_available(): - peak_alloc = torch.cuda.max_memory_allocated(0) / 1024**2 - peak_reserved = torch.cuda.max_memory_reserved(0) / 1024**2 - self.vram_efficiency = ( - (peak_alloc / peak_reserved * 100.0) if peak_reserved > 0 else 100.0 - ) - else: - self.vram_efficiency = ( - 0.0 # Clean zero baseline representation for CPU runs - ) - - # Calculate averages for component breakdowns - # avg_reader_ms = (total_read_time / self.reader.total_input_frames) * 1000 - # avg_reader_ms = (total_read_time / self.frame_count_target) * 1000 - avg_sf = ( - sum(self.component_stats["sf"]) / len(self.component_stats["sf"]) - if self.component_stats["sf"] - else 0 - ) - avg_roi = ( - sum(self.component_stats["roi"]) / len(self.component_stats["roi"]) - if self.component_stats["roi"] - else 0 - ) - avg_det = ( - sum(self.component_stats["det"]) / len(self.component_stats["det"]) - if self.component_stats["det"] - else 0 - ) - - avg_crops = ( - sum(self.crops_per_frame_list) / len(self.crops_per_frame_list) - if self.crops_per_frame_list - else 0 - ) - - # Total Latency Sum (SF + ROI + DET) - # total_sum = avg_sf + avg_roi + avg_det - det_latency_ms = avg_sf + avg_roi + avg_det - det_latency_s = det_latency_ms / 1000.0 - det_est_fps = (total_written_frames / det_latency_s) if det_latency_s > 0 else 0 - - # Calculate how often we hit a high-motion cap (e.g., 20 crops) - capped_frames = sum(1 for c in self.crops_per_frame_list if c >= 20) - cap_rate = ( - (capped_frames / len(self.crops_per_frame_list)) * 100 - if self.crops_per_frame_list - else 0 - ) + @pytest.mark.parametrize("device", ["gpu", "cpu"]) + def test_device_reader(self, device): + # Pull the values dynamically assigned by the setup_context fixture + init_args = { + "source": self.__class__.source, + "name": self.__class__.name, + "result_dir": str(self.__class__.result_dir), + "active_streams": {}, + "benchmarks": self.__class__.benchmarks, + "read_frame_only": self.__class__.read_frame_only, + } - # avg_queue = ( - # sum(self.component_stats["queue_blocked"]) - # / len(self.component_stats["queue_blocked"]) - # if self.component_stats["queue_blocked"] - # else 0 - # ) - # avg_batch = ( - # sum(self.component_stats["batch_sizes"]) - # / len(self.component_stats["batch_sizes"]) - # if self.component_stats["batch_sizes"] - # else 0 - # ) + detection_type = "object" # request.node.callspec.params.get("detection_type") + sf_enabled = False # request.node.callspec.params.get("sf_enabled") + gt_enabled = False - backlog_list = self.component_stats.get("thread_backlog", []) - avg_backlog = ( - sum(backlog_list) / len(backlog_list) if len(backlog_list) > 0 else 0.0 - ) + test_args = { + "device": device, + "detection_type": detection_type, + "sf_enabled": sf_enabled, + "gt_enabled": gt_enabled, + } - print("\n" + "=" * 60) - print( - f" FULLY-OPTIMIZED ASYNC STAGE ({self.config.DEVICE}) PIPELINE BREAKDOWN " - ) - print("=" * 60) - print(f"Total Output Frames Written: {total_written_frames}") - print(f"Total Pipeline Execution Time: {total_pipeline_s:.4f} seconds") - print(f"Overall Processing Speed: {target_frame_fps:.2f} FPS") - print("-" * 60) - print("MAIN CONSUMER LOOP TIMELINE (SEQUENTIAL OVERHEAD):") - print(f" 1. Read Frame from Queue: {avg_reader_ms:6.2f} ms") - # print(f" 2. Image Resize Time (360p Transformation): {avg_resize_ms:6.2f} ms") - # print(f" 3. Disk Writer Queue Hand-off (Async): {avg_write_ms:6.2f} ms") - print("-" * 60) - print("BACKGROUND INGESTION HEALTH (ASYNC METRICS):") - print(f" A. Inbound Stream Capture Speed: {all_frame_fps:6.2f} FPS") - print(f" B. Host RAM Array Copy (100MB Memcpy): {avg_copy_ms:6.2f} ms") - print(f" C. {h2d_display_label:<42} {avg_h2d_ms:6.2f} ms") - print(f" D. Reader Thread Queue Blocked Time: {avg_blocked_ms:6.2f} ms") - print(f" E. Consumer Queue Saturation Density: {avg_saturation:6.1f}%") - print( - f" F. Peak PCIe Upload Throughput: {self.pcie_throughput_gbps:6.2f} GB/s" + main_app_logger.info( + f"\n{'=' * 60}\n" + f"[TEST HARNESS] Spawning isolated high-speed process for {self.__class__.name} (SF: {sf_enabled})...\n" + f"{'=' * 60}" ) - print(f" G. Active Worker Thread Backlog: {avg_backlog:6.1f} tasks") - print(f" H. VRAM Memory Efficiency (Cache): {self.vram_efficiency:6.1f}%") - print("-" * 60) - - # EXPANDED PERFORMANCE INSIGHTS AND DIAGNOSTICS - print("PIPELINE HEALTH & BEHAVIOR INSIGHTS:") - if avg_saturation > 80.0: - pipeline_status = "CHOKED" - print( - f" • Status: \033[91m🔴 {pipeline_status}\033[0m (Downstream logic cannot keep up with inbound stream speed)" - ) - elif avg_saturation > 40.0: - pipeline_status = "BALANCED" - print( - f" • Status: \033[93m🟡 {pipeline_status}\033[0m (Queue buffer is actively pacing consumer workloads)" - ) - else: - pipeline_status = "IDLE/LIGHT" - print( - f" • Status: \033[92m🟢 {pipeline_status}\033[0m (Consumer loop finishes ahead of background ingestion clock)" - ) - print(f" • Peak Queue Fullness Reached: {peak_saturation:.1f}%") - # Calculate stream drop indicator - print(f" • Targeted Pacing Delivery Accuracy: {target_match_ratio:.1f}%") - print("=" * 60) - - self.__class__.benchmarks.append( - { - "Test Name": self._testMethodName, - # "Detection Type": self.config.DETECTION_TYPE, - "Device": self.config.DEVICE, - # "Smart Filtering": "Enabled" if sf_enabled else "Disabled", - "Video": self.source, # self.name? - "Video FPS": f"{self.reader.input_fps:.2f}", - "Video Original Duration (s)": f"{duration_s:.4f}", - "Video Frames": self.reader.total_input_frames, - # PIPELINE OVERVIEW - "Target FPS": f"{self.reader.target_fps:.2f}", - "Output Duration (s)": f"{out_duration_s:.4f}", - "Output Frames": total_written_frames, - "Pipeline Latency (s)": f"{total_pipeline_s:.2f}", - "Pipeline FPS (Video frames)": f"{all_frame_fps:.2f}", - "Pipeline FPS (Target frames)": f"{target_frame_fps:.2f}", - "Real Pipeline Latency (s)": f"{total_real_pipeline_s:.2f}", - "Real Pipeline FPS (Target frames)": f"{real_est_fps:.2f}", - # MAIN CONSUMER LOOP TIMELINE (SEQUENTIAL OVERHEAD) - "Avg Frame Reading (ms)": f"{avg_reader_ms:.2f}", - # "Avg Resize (ms)": f"{avg_resize_ms:.2f}", - # "Avg Writer Async Handoff (ms)": f"{avg_write_ms:.2f}", - # BACKGROUND INGESTION HEALTH (ASYNC METRICS) - "Avg Host Copy (ms)": f"{avg_copy_ms:.2f}", - "Avg DMA Upload (ms)": f"{avg_h2d_ms:.2f}", - "Avg Data Prep Overhead (ms)": f"{avg_prep_ms:.2f}", - "Avg Queue Blocked (ms)": f"{avg_blocked_ms:.2f}", - "Avg Queue Saturation (%)": f"{avg_saturation:.2f}", - # PIPELINE HEALTH & BEHAVIOR INSIGHTS - "Pipeline Status": pipeline_status, - "Peak Queue Fullness (%)": f"{peak_saturation:.2f}", - "Targeted Pacing Delivery (%)": f"{target_match_ratio:.2f}", - # DETECTION PIPELINE (Should B NULL) - "SF/Detection Latency (s)": f"{det_latency_s:.2f}", - "SF/Detection FPS": f"{det_est_fps:.2f}", - "Avg SF (ms)": f"{avg_sf:.2f}", - "Avg ROI (ms)": f"{avg_roi:.2f}", - "Avg Obj. Detection (ms)": f"{avg_det:.2f}", - "Total Breakdown Sum (ms)": f"{det_latency_ms:.2f}", - "Avg Crops/Frame": f"{avg_crops:.1f}", - # "Frames w/o ROIs": self.no_roi_frame_cnt, - "Crop Cap Rate (>20)": f"{cap_rate:.1f}%", - "Objects Detected": num_objs, - # TIming to display frame (read to after send to render queue) - "Display Latency (s)": f"{self.elapsed_display_time:.2f}", - "Display Frames": stat_frame_count, - "Display FPS": f"{stat_fps:.2f}", - "PCIe Bandwidth Throughput (GB/s)": f"{self.pcie_throughput_gbps:.2f}", - "Avg Async Thread Pool Backlog": f"{sum(self.component_stats.get('thread_backlog', [0])) / len(self.component_stats.get('thread_backlog', [1])):.1f}", - "VRAM Allocation Efficiency (%)": f"{self.vram_efficiency:.1f}%", - } - ) + # Spawn a pristine Python process (identical to test_pipeline.py's stream_worker) + ctx = mp.get_context("spawn") + res_queue = ctx.Queue() - print( - f"\n[{self._testMethodName}] Pipeline Latency (s): {total_pipeline_s:.2f} sec" - ) - print( - f"\n[{self._testMethodName}] Pipeline FPS (Target frames): {target_frame_fps:.2f} ({total_written_frames} frames)" - ) - print( - f"\n[{self._testMethodName}] Pipeline FPS (Video frames): {all_frame_fps:.2f} ({self.reader.total_input_frames} frames)" - ) - print( - f"\n[{self._testMethodName}] SF/Detection FPS (Target frames): {det_est_fps:.2f} ({total_written_frames} frames)" - ) - print( - f"\n[{self._testMethodName}] Display FPS: {stat_fps:.2f} ({stat_frame_count} frames)" + worker_p = ctx.Process( + target=isolated_detection_worker, args=(init_args, test_args, res_queue) ) - def _finalize_benchmarksv2( - self, - total_written_frames, - total_pipeline_time, - total_read_time, - total_resize_time, - total_disk_write_overhead, - total_queue_saturation, - queue_saturation_history, - ): - """Aggregates metrics and adds them to the results list.""" - h2d_label = ( - "Pinned H2D Transfer (PCIe DMA)" - if self.is_cuda - else "Data Preparation Overhead" - ) - # d2h_label = ( - # "D2H Transfer (PCIe Download)" - # if self.is_cuda - # else "Array Extraction Overhead" - # ) + worker_p.start() + worker_p.join() # Block Pytest until the isolated pipeline finishes - if total_written_frames > 0: - duration_s = ( - self.reader.total_input_frames / self.reader.input_fps - if self.reader.input_fps > 0 - else 0 - ) - out_duration_s = ( - total_written_frames / self.reader.target_fps - if self.reader.target_fps > 0 - else 0 - ) - print( - f"Expected duration: {self.duration_target} stream_duration_s: {int(duration_s)} output_duration_s: {int(out_duration_s)}" - ) - h2d_display_label = f"Reader {h2d_label}:" - avg_reader_ms = (total_read_time / total_written_frames) * 1000 - avg_resize_ms = (total_resize_time / total_written_frames) * 1000 - avg_write_ms = (total_disk_write_overhead / total_written_frames) * 1000 - target_frame_fps = total_written_frames / total_pipeline_time - all_frame_fps = self.reader.total_input_frames / total_pipeline_time - avg_copy_ms = ( - self.reader.total_shm_copy_time / total_written_frames - ) * 1000 - - avg_blocked_ms = ( - self.reader.total_queue_wait_time / total_written_frames - ) * 1000 - avg_saturation = (total_queue_saturation / total_written_frames) * 100 - peak_saturation = ( - max(queue_saturation_history) * 100 if queue_saturation_history else 0 - ) - target_match_ratio = ( - total_written_frames / (total_pipeline_time * self.reader.target_fps) - ) * 100 - if self.is_cuda: - avg_h2d_ms = (self.reader.total_h2d_time / total_written_frames) * 1000 - avg_prep_ms = 0.0 - else: - avg_prep_ms = (self.reader.total_h2d_time / total_written_frames) * 1000 - avg_h2d_ms = 0.0 + # Extract and merge results + if not res_queue.empty(): + result = res_queue.get() - print("\n" + "=" * 60) - print( - f" FULLY-OPTIMIZED ASYNC STAGE ({self.config.DEVICE}) PIPELINE BREAKDOWN " - ) - print("=" * 60) - print(f"Total Output Frames Written: {total_written_frames}") - print(f"Total Pipeline Execution Time: {total_pipeline_time:.4f} seconds") - print(f"Overall Processing Speed: {target_frame_fps:.2f} FPS") - print("-" * 60) - print("MAIN CONSUMER LOOP TIMELINE (SEQUENTIAL OVERHEAD):") - print( - f" 1. Read Frame from Queue: {avg_reader_ms:6.2f} ms" - ) - print( - f" 2. Image Resize Time (360p Transformation): {avg_resize_ms:6.2f} ms" - ) - print( - f" 3. Disk Writer Queue Hand-off (Async): {avg_write_ms:6.2f} ms" - ) - print("-" * 60) - print("BACKGROUND INGESTION HEALTH (ASYNC METRICS):") - print( - f" A. Inbound Stream Capture Speed: {all_frame_fps:6.2f} FPS" - ) - print( - f" B. Host RAM Array Copy (100MB Memcpy): {avg_copy_ms:6.2f} ms" - ) - print(f" C. {h2d_display_label:<42} {avg_h2d_ms:6.2f} ms") - print( - f" D. Reader Thread Queue Blocked Time: {avg_blocked_ms:6.2f} ms" - ) - print( - f" E. Consumer Queue Saturation Density: {avg_saturation:6.1f}%" - ) - print("-" * 60) - - # EXPANDED PERFORMANCE INSIGHTS AND DIAGNOSTICS - print("PIPELINE HEALTH & BEHAVIOR INSIGHTS:") - if avg_saturation > 80.0: - pipeline_status = "CHOKED" - print( - f" • Status: \033[91m🔴 {pipeline_status}\033[0m (Downstream logic cannot keep up with inbound stream speed)" - ) - elif avg_saturation > 40.0: - pipeline_status = "BALANCED" - print( - f" • Status: \033[93m🟡 {pipeline_status}\033[0m (Queue buffer is actively pacing consumer workloads)" + if result["status"] == "error": + pytest.fail( + f"Pipeline crashed in worker process:\n{result.get('error')}\n{result.get('traceback')}" ) else: - pipeline_status = "IDLE/LIGHT" - print( - f" • Status: \033[92m🟢 {pipeline_status}\033[0m (Consumer loop finishes ahead of background ingestion clock)" - ) - - print( - f" • Peak Queue Fullness Reached: {peak_saturation:.1f}%" - ) - # Calculate stream drop indicator - print( - f" • Targeted Pacing Delivery Accuracy: {target_match_ratio:.1f}%" - ) - print("=" * 60) - - self.__class__.benchmarks.append( - { - "Test Name": self._testMethodName, - # "Detection Type": self.config.DETECTION_TYPE, - "Device": self.config.DEVICE, - # "Smart Filtering": "Enabled" if sf_enabled else "Disabled", - "Video": self.source, # self.name? - "Video FPS": f"{self.reader.input_fps:.2f}", - "Video Duration (s)": f"{duration_s:.4f}", - "Video Frames": self.reader.total_input_frames, - # PIPELINE OVERVIEW - "Target FPS": f"{self.reader.target_fps:.2f}", - "Output Frames": total_written_frames, - "Pipeline Latency (s)": f"{total_pipeline_time:.2f}", - "Pipeline FPS (Video frames)": f"{all_frame_fps:.2f}", - "Pipeline FPS (Target frames)": f"{target_frame_fps:.2f}", - # MAIN CONSUMER LOOP TIMELINE (SEQUENTIAL OVERHEAD) - "Avg Frame Reading (ms)": f"{avg_reader_ms:.2f}", - "Avg Resize (ms)": f"{avg_resize_ms:.2f}", - "Avg Writer Async Handoff (ms)": f"{avg_write_ms:.2f}", - # BACKGROUND INGESTION HEALTH (ASYNC METRICS) - "Avg Host Copy (ms)": f"{avg_copy_ms:.2f}", - "Avg DMA Upload (ms)": f"{avg_h2d_ms:.2f}", - "Avg Data Prep Overhead (ms)": f"{avg_prep_ms:.2f}", - "Avg Queue Blocked (ms)": f"{avg_blocked_ms:.2f}", - "Avg Queue Saturation (%)": f"{avg_saturation:.2f}", - # PIPELINE HEALTH & BEHAVIOR INSIGHTS - "Pipeline Status": pipeline_status, - "Peak Queue Fullness (%)": f"{peak_saturation:.2f}", - "Targeted Pacing Delivery (%)": f"{target_match_ratio:.2f}", - } - ) - - print( - f"\n[{self._testMethodName}] Pipeline Latency (s): {total_pipeline_time:.2f} sec" - ) - print( - f"\n[{self._testMethodName}] Pipeline FPS (Target frames): {target_frame_fps:.2f} ({total_written_frames} frames)" - ) - print( - f"\n[{self._testMethodName}] Pipeline FPS (Video frames): {all_frame_fps:.2f} ({self.reader.total_input_frames} frames)" - ) - - # TESTS -------------------------------------------- - - def pipeline_fn( - self, device_frame, overall_frame_num, is_target_frame, stat_start_time - ): - num_objs = 0 - metrics = {"sf_time": 0, "roi_time": 0, "det_time": 0, "bbs": None} - - # TODO: Add Function to write frames sized to (disp_w, disp_h) efficiently - if self.device_input == "cuda" and torch.is_tensor(device_frame): - # 2. Fast Inline VRAM Downscaling into our static memory slot - # Reshape to (Batch, Channel, Height, Width) seamlessly without duplicating data - gpu_tensor = device_frame[None, :].permute(0, 3, 1, 2).float() - - resized_tensor = torch.nn.functional.interpolate( - gpu_tensor, - size=(360, 640), - mode="nearest", - ) - - # CONVERTS TO CPU EARLIER (WORKS but lowers fps) - # hwc_byte_tensor = resized_tensor.squeeze(0).permute(1, 2, 0).byte() - # cpu_tensor = hwc_byte_tensor.cpu() - # bgr_contiguous = cpu_tensor.contiguous() + metrics = result["metrics"] - # Using copy_() avoids creating any runtime allocations or memory-stride drift. - self.static_gpu_byte_bchw.copy_(resized_tensor.byte()) + self.__class__.benchmarks.append(metrics) - # Safely reshape the pre-allocated, locked GPU memory layout back to standard HWC array topology. - # Since the underlying array layout is strictly contiguous, this permute is guaranteed - # to be zero-copy on the GPU and free from memory race stalls. - bgr_contiguous = self.static_gpu_byte_bchw.squeeze(0).permute(1, 2, 0) - - # 1. Grab the current free pinned slot tracking variables from your reader - d2h_idx = self.reader.d2h_selector - pinned_tensor_buf = self.reader.d2h_buffers[d2h_idx] - - # c_idx = self.canvas_selector - # current_canvas = self.static_host_canvases[c_idx] - - # host_tensor_view = torch.as_tensor(current_canvas, device="cpu") - - # 3. Non-blocking asynchronous PCIe DMA Download directly into our page-locked canvas - with torch.cuda.stream(self.reader.download_stream): - # pinned_tensor = torch.from_numpy(current_canvas).cuda() - pinned_tensor_buf.copy_(bgr_contiguous, non_blocking=True) - - # Synchronize only the side download stream layout channel - self.reader.download_stream.synchronize() - - cpu_360p_frame = self.reader.d2h_numpys[d2h_idx] - - # 4. Fast Metadata Rendering via OpenCV - # if metrics["bbs"] is not None and len(metrics["bbs"]) > 0: - # for box in metrics["bbs"]: - # # Coordinates must match your 360p scaled target context map - # x1, y1, x2, y2 = int(box[0]), int(box[1]), int(box[2]), int(box[3]) - # cv2.rectangle(current_canvas, (x1, y1), (x2, y2), (0, 255, 0), 2) - # cv2.putText(current_canvas, str(box[4]), (x1, y1 - 10), - # cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 1) - - # 5. Non-Blocking Push straight to your background AsyncVideoWriter thread pool - # We pass a direct .copy() slice so the hot loop can instantly reuse the pinned ring buffer - safe_disk_frame = np.array(cpu_360p_frame, copy=True, order="C") - self.async_writer.write_frame(safe_disk_frame) - # self.canvas_selector = 1 - self.canvas_selector - self.reader.d2h_selector = 1 - self.reader.d2h_selector - - else: - # Reusable baseline track for CPU execution mappings - cpu_resized = cv2.resize( - device_frame, (640, 360), interpolation=cv2.INTER_NEAREST - ) - if metrics["bbs"] is not None: - for box in metrics["bbs"]: - cv2.rectangle( - cpu_resized, - (int(box[0]), int(box[1])), - (int(box[2]), int(box[3])), - (0, 255, 0), - 2, - ) - self.async_writer.write_frame(cpu_resized) - - self.update_frame(stat_start_time) - return num_objs, metrics # Skip full detection pass - - def run_realtime_inference(self, sf_enabled=True): - # self.duration_target = 30 - self.status = "RUNNING" - metrics = {} - num_objs = 0 - self.is_cuda = self.device.lower() == "gpu" and torch.cuda.is_available() - self.frame_count_target = 0 - self.next_process_idx = 0.0 - self.frame_in_clip_count = 0 - total_pipeline_time_ms = 0.0 - total_read_time = 0.0 - total_queue_saturation = 0.0 - # queue_saturation_history = [0.0] - total_written_frames = 0 - total_sf_pipeline_time_ms = 0.0 - real_world_latency_ms = 0.0 - - # queue_size = 4 - total_run_pipelinefn = 0 - # total_read_time = 0 - # total_resize_time = 0 - # total_written_frames = 0 - # total_disk_write_overhead = 0.0 - total_frame_loop_latency = 0.0 - total_active_processing_overhead = 0.0 - # total_queue_saturation = 0.0 - # total_queue_saturation = 0.0 - queue_saturation_history = [] - consecutive_slow_frames = 0 - # total_dropped_frames = 0 - - # coverage_percentages = [] - self.component_stats = { - "sf": [], - "roi": [], - "det": [], - "dma_upload": [], # Track PCIe Transfer Latencies - "queue_blocked": [], # Track GIL Serialization stalls - "batch_sizes": [], # Track Smart Filtering density - "thread_backlog": [], # Track thread work pool backlog - } - self.crops_per_frame_list = [] - - self.step_size = ( - float(self.input_fps) / float(self.target_fps) - if hasattr(self, "target_fps") - else 1.0 - ) - self.max_target_frames = ( - int(self.duration_target * float(self.target_fps)) - if hasattr(self, "target_fps") - else float("inf") - ) - - # self.start() - # time.sleep(0.1) - - # if self.source.startswith("rtsp"): - # short_name = "rtsp" - # else: - # short_name = Path(self.source).stem - # output_path= f"{self.config.SHARED_OUTPUT}/{short_name}_{self.device}.mp4" - # disp_wh = (640, 360) - # async_writer = AsyncVideoWriter( - # self.output_path, - # cv2.VideoWriter_fourcc(*'avc1'), - # float(self.target_fps), - # (self.disp_w, self.disp_h) - # ) - - pipeline_start_time = time.perf_counter() - - # try: - self.dynamic_limit = max(2, int(0.5 * self.target_fps)) - # last_frame_time = time.perf_counter() - while self.active and self.frame_count_target < self.max_target_frames: - try: - # FRAME RETRIEVAL --------------------------------------------- - try: - # device_frame, frame_num = self.reader.read() - # Utilize a clean OS kernel-level block to completely eliminate GIL thrashing - # frame_8k, frame_num = None, None - frame_start_time = time.perf_counter() - t_read = time.perf_counter() - # if self.active: - ret, frame_8k, frame_num = ( - self.reader.read() - ) # Successfully reads the 8K frame - if not ret or frame_8k is None: - # Check if there are any remaining frames still buffered in flight inside the reader queue - # if hasattr(self.reader, 'frame_queue') and not self.reader.frame_queue.empty(): - # ret, frame_8k, frame_num = self.reader.read() - # if not ret or frame_8k is None: - # break - # else: - # break - if self.reader is None or ( - hasattr(self.reader, "stopped") and self.reader.stopped - ): - if self.device_input == "cuda": - torch.cuda.synchronize() - self.active = False - break - continue - - reader_time = time.perf_counter() - t_read - total_read_time += reader_time - except queue.Empty: - if getattr(self.reader, "reconnect_failed", False): - self.active = False - break - time.sleep(0.002) - continue - - # print(f"frame_num: {frame_num}") - - self.stat_start_time = time.perf_counter() - self.frame_count += 1 - is_target_frame = True - - if torch.is_tensor(frame_8k): - if frame_8k.device.type != "cuda": - # Standard functional cross-stream synchronization barrier - # self.reader.upload_stream.wait_stream( - # torch.cuda.current_stream() - # ) - # frame_8k = frame_8k.to("cuda:0", non_blocking=True) - torch.cuda.current_stream().wait_stream( - self.reader.upload_stream - ) - - # Real-Time Metric A: Track Queue Saturation Density Ratio - # current_q_size = self.reader.frame_queue.qsize() - saturation_ratio = ( - self.reader.frame_queue.qsize() / self.reader.frame_queue.maxsize + main_app_logger.info( + f"[TEST HARNESS] Worker returned successfully. Display FPS: {metrics.get('Display FPS')}" ) - total_queue_saturation += saturation_ratio - queue_saturation_history.append(saturation_ratio) - - # RUN PIPELINE_FN --------------------------------------------- - run_pipelinefn_start = time.perf_counter() - self.frame_count_target += 1 - self.frame_in_clip_count += 1 - - if self.device_input == "cuda": - # Instantiate a lightweight hardware fence event object - curr_event = torch.cuda.Event(enable_timing=False) - # curr_event.record() - # Record the exact milestone on the default stream right after fetching the frame data - curr_event.record(torch.cuda.default_stream()) - self.inference_stream.wait_event(curr_event) - - with torch.cuda.stream(self.inference_stream): - nob, metrics = self.pipeline_fn( - frame_8k, - frame_num, - is_target_frame, - self.stat_start_time, - ) - # torch.cuda.default_stream().synchronize() - # self.inference_stream.synchronize() - else: - nob, metrics = self.pipeline_fn( - frame_8k, - frame_num, - is_target_frame, - self.stat_start_time, - ) - num_objs += nob - - total_written_frames += 1 - - # Real-Time Metric B: Frame Processing Latency Check - frame_loop_latency = ( - time.perf_counter() - frame_start_time - ) * 1000 # ms - total_frame_loop_latency += frame_loop_latency - - # Isolate active processing time (excluding the queue blocking read) - active_processing_overhead = frame_loop_latency - (reader_time * 1000) - total_active_processing_overhead += active_processing_overhead - - # RUNTIME TERMINAL WARNING ALERTS - if saturation_ratio >= 1.0 or active_processing_overhead > ( - 1000 / self.target_fps - ): - consecutive_slow_frames += 1 - if ( - consecutive_slow_frames % self.target_fps == 0 - ): # Throttle terminal spam - print( - f"\033[93m⚠️ [PERF WARNING] Main loop starving! Waiting on stream ingestion... " - f"Read Wait: {frame_loop_latency:.1f}ms | Queue Fullness: {saturation_ratio * 100:.0f}%\033[0m" - ) - else: - consecutive_slow_frames = max(0, consecutive_slow_frames - 1) - - if total_written_frames % (5 * self.target_fps) == 0: - print( - f"Captured {total_written_frames}/{self.max_target_frames} frames..." - ) - - # WRAP-UP FRAME INSTANCE --------------------------------------------- - # if self.device_input == "cuda" and torch.cuda.is_available(): - # torch.cuda.default_stream().synchronize() - total_run_pipelinefn += time.perf_counter() - run_pipelinefn_start - - # Explicitly delete frame variables to free their references - del frame_8k - - # Force PyTorch's internal allocator to release cached segments back to the OS - # if self.frame_count_target % (5 * self.target_fps) == 0: - # print( - # f"Captured {self.frame_count_target}/{self.max_target_frames} frames..." - # ) - # torch.cuda.empty_cache() - # torch.cuda.ipc_collect() - - except torch.cuda.OutOfMemoryError: - print("\n" + "!" * 70) - print( - "[CRITICAL TEST CRASH] GPU MEMORY CEILING HIT INSIDE RUNNER LOOP!" + # Basic functionality assertions + assert metrics is not None, "Metrics dictionary should not be None." + assert int(metrics.get("Output Frames", 0)) > 0, ( + "No frames were written to output." ) - print( - "Freezing allocation history registers and writing diagnostic log..." - ) - print("!" * 70) - - try: - import os - - snapshot_filename = ( - f"/tmp/test_vram_leak_profile_pid{os.getpid()}.pickle" - ) - torch.cuda.memory._dump_snapshot(snapshot_filename) - print( - f"[PROFILER SUCCESSFUL] Snapshot profile written to: {snapshot_filename}" - ) - print( - "--> Drag and drop this file directly into: https://pytorch.org" - ) - except Exception as dump_err: - print(f"Failed to record profile data snapshot: {dump_err}") - - # Force safe system unlinking of background workers to clean up OS handles - self.active = False - if hasattr(self, "reader") and self.reader is not None: - self.reader.stop() - raise - - except Exception: - traceback.print_exc() - - # POST FRAME PROCESSING --------------------------------------------- - pipeline_end_time = time.perf_counter() - - # Resolve the final execution window. If the stream ran to completion, - # use the operational end marker to avoid measuring downstream disk write bottlenecks. - final_end_marker = getattr(self, "pipeline_completion_timestamp", None) - if final_end_marker is None: - final_end_marker = time.perf_counter() - # self.pipeline_completion_timestamp = final_end_marker - - real_world_latency_ms = float((final_end_marker - pipeline_start_time) * 1000.0) - - total_sf_pipeline_time_ms = float( - sum(self.component_stats.get("sf", [0.0])) - + sum(self.component_stats.get("roi", [0.0])) - + sum(self.component_stats.get("det", [0.0])) - ) - total_pipeline_time_ms = float( - (pipeline_end_time - pipeline_start_time) * 1000.0 - ) - - # total_read_time = ( - # sum(self.component_stats.get("queue_blocked", [0.0])) / 1000.0 - # if self.component_stats.get("queue_blocked") - # else 0.0 - # ) - total_queue_saturation = sum( - self.component_stats.get("batch_sizes", [0.0]) - ) # Sample array profile proxy - - if metrics != {}: - num_crops = len(metrics["bbs"]) if metrics["bbs"] is not None else 0 - self.crops_per_frame_list.append(num_crops) - - # Context-aware extraction of the newly proposed metrics - density = metrics.get("batch_density", 0 if self.config.sf_enabled else 1) - self.component_stats["batch_sizes"].append(density) - - self.component_stats["sf"].append(metrics["sf_time"]) - self.component_stats["roi"].append(metrics["roi_time"]) - self.component_stats["det"].append(metrics["det_time"]) - - self.async_writer.release() - # Continuously sample the thread work pool backlog state mechanics - if hasattr(self, "executor") and self.executor is not None: - # Safely probe internal concurrent.futures work queue bounds - self.component_stats["thread_backlog"].append( - self.executor._work_queue.qsize() - ) else: - self.component_stats["thread_backlog"].append(0) - - # Real-Time Metric B: Frame Processing Latency Check - # frame_loop_latency = (pipeline_end_time - frame_start_time) * 1000 # ms - - # # Isolate active processing time (excluding the queue blocking read) - # active_processing_overhead = frame_loop_latency - (reader_time * 1000) - - # # RUNTIME TERMINAL WARNING ALERTS - # if saturation_ratio >= 1.0 or active_processing_overhead > ( - # 1000 / self.target_fps - # ): - # consecutive_slow_frames += 1 - # if consecutive_slow_frames % self.target_fps == 0: # Throttle terminal spam - # print( - # f"\033[93m⚠️ [PERF WARNING] Main loop starving! Waiting on stream ingestion... " - # f"Read Wait: {frame_loop_latency:.1f}ms | Queue Fullness: {saturation_ratio * 100:.0f}%\033[0m" - # ) - # else: - # consecutive_slow_frames = max(0, consecutive_slow_frames - 1) - - # CALCULATE PERFORMANCE METRICS --------------------------------------------- - print( - f"\nExecution Finished. Total Output Frames Written: {self.frame_count_target}" - ) - - # Render your metrics dashboard table cleanly - self._finalize_benchmarks( - num_objs, - self.frame_count_target, # Reads the updated integer directly! - total_pipeline_time_ms, - real_world_latency_ms, - total_sf_pipeline_time_ms, - total_read_time, - total_queue_saturation, - queue_saturation_history, - ) - self.stop() - - -# MAIN ---------------------------------------- -# def pytest_runtest_logreport(report): -# """Intercepts teardown to ensure benchmarks write to disk BEFORE 'PASSED' prints.""" -# if report.when == "teardown" and report.status == "passed": -# from test_readers import TestReader # Safe local class lookup - -# # Guarantee stop lifecycle finishes completely before reporting opens -# if hasattr(TestReader, "active") and TestReader.active: -# TestReader.stop() - -# if hasattr(TestReader, "benchmarks") and TestReader.benchmarks: -# TestReader.benchmarks = [r for r in TestReader.benchmarks if r and "Test Name" in r] -# results = TestReader.benchmarks -# if not results: -# return - -# # Compute relative speedup modifiers vs CPU baseline -# for row in results: -# if "GPU" in row["Test Name"]: -# match_name = row["Test Name"].replace("GPU", "CPU") -# cpu_row = next((r for r in results if r["Test Name"] == match_name), None) -# if cpu_row: -# speedup = float(row["Pipeline FPS (Target frames)"]) / float(cpu_row["Pipeline FPS (Target frames)"]) -# row["Pipeline Speedup vs CPU"] = f"{speedup:.2f}x" -# else: -# row["Pipeline Speedup vs CPU"] = "N/A" -# else: -# row["Pipeline Speedup vs CPU"] = "Baseline (CPU)" - -# # Bulk write results back to your CSV asset file -# if hasattr(TestReader, "csv_path") and TestReader.csv_path: -# with open(str(TestReader.csv_path), "w", newline="") as f: -# keys = results[0].keys() -# writer = csv.DictWriter(f, fieldnames=keys) -# writer.writeheader() -# writer.writerows(results) -# print(f"\n[FINAL] Benchmarks saved to {TestReader.csv_path}") - -# for r in results: -# print(f" > {r['Test Name']}: {r['Pipeline FPS (Video frames)']} FPS | {r['Pipeline FPS (Target frames)']} FPS | Speedup: {r.get('Pipeline Speedup vs CPU', 'N/A')}") - -# # Export comparison chart figures cleanly -# if hasattr(TestReader, "result_dir") and hasattr(TestReader, "csv_filename"): -# from test_readers import fps_comparison_chart -# chart_path_video = TestReader.result_dir / f"{TestReader.csv_filename.replace('.csv', '')}_pipelineFPS.png" -# fps_comparison_chart(chart_path_video, results, fps_key="Pipeline FPS (Video frames)") - -# chart_path_target = TestReader.result_dir / f"{TestReader.csv_filename.replace('.csv', '')}_pipelineFPS_target.png" -# fps_comparison_chart(chart_path_target, results, fps_key="Pipeline FPS (Target frames)") + pytest.fail("Worker process died unexpectedly without returning metrics.") +# ========================================================================= +# MAIN +# ========================================================================= def get_pytest_filter_expression(args): - print("\n" + "=" * 50) - print("TARGET SELECTION PREVIEW") - print("=" * 50) + main_app_logger.info("\n" + "=" * 50) + main_app_logger.info("TARGET SELECTION PREVIEW") + main_app_logger.info("=" * 50) - filter_expression = "test_device_reader" + filter_expression = Path(__file__).stem # applied_subs = [] if args.sf_enabled is not None: @@ -2067,24 +650,26 @@ def get_pytest_filter_expression(args): # Target hardware context selection filter applies globally across all test cases if args.device.lower() != "all": - print(f" 💻 Hardware Context Constraint: {args.device.upper()}") + main_app_logger.info(f" 💻 Hardware Context Constraint: {args.device.upper()}") filter_expression = f"({filter_expression}) and {args.device.lower()}" else: - print(" 💻 Hardware Context Constraint: ALL AVAILABLE") + main_app_logger.info(" 💻 Hardware Context Constraint: ALL AVAILABLE") - print("=" * 50) - print(f"COMPILED PYTEST KEYWORD EXPRESSION:\n 👉 {filter_expression}") - print("=" * 50 + "\n") + main_app_logger.info("=" * 50) + main_app_logger.info( + f"COMPILED PYTEST KEYWORD EXPRESSION:\n 👉 {filter_expression}" + ) + main_app_logger.info("=" * 50 + "\n") return filter_expression if __name__ == "__main__": # Force all PyTorch extension handles to compile and load BEFORE threads spawn - if torch.cuda.is_available(): - _ = torch.zeros(1).cuda() - import torch._ops - import torch.utils + # if torch.cuda.is_available(): + # _ = torch.zeros(1).cuda() + # import torch._ops + # import torch.utils # TEST ARGUMENTS parser = argparse.ArgumentParser(description="Run Video Detection Pipeline Tests") @@ -2149,6 +734,13 @@ def get_pytest_filter_expression(args): help="Number of frames used for debugging [Default: 100]", ) + # PROFILING + parser.add_argument( + "--profile", + action="store_true", + help="Enable profiling", + ) + args = parser.parse_args() # UPDATE ENVIRONMENTAL VARIABLES @@ -2157,6 +749,7 @@ def get_pytest_filter_expression(args): os.environ["MODEL_NAME"] = args.model_name os.environ["DEBUG"] = "1" if args.debug else "0" os.environ["DEBUG_FRAME_LIMIT"] = str(args.debug_frame_limit) + os.environ["ENABLE_PROFILING"] = "True" if args.profile else "False" # detection_type, device, sf_enabled filter_expression = get_pytest_filter_expression(args) @@ -2168,9 +761,14 @@ def get_pytest_filter_expression(args): "-s", "-v", # "--log-cli-level=DEBUG", + "-W", + "ignore:Exception ignored in.*SharedMemory.__del__:UserWarning", + # Target the exact module rewrite warning path inside the configuration framework + "-W", + "ignore:Module already imported so cannot be rewritten; anyio:_pytest.warning_types.PytestAssertRewriteWarning", __file__, ] - print(f"Launching tests for {args.source}") + # main_app_logger.info(f"Launching tests for {args.source}") sys.exit(pytest.main(pytest_args)) From fdcbc8fde3354095e8453e3ca8b6fe9bae9f3294 Mon Sep 17 00:00:00 2001 From: "Lacewell, Chaunte W" Date: Wed, 9 Sep 2026 11:26:07 -0700 Subject: [PATCH 04/19] Remove unused code (front end, vdms, udf, and cpu). The pipeline only supports GPU for realtime and querying capability is disabled Signed-off-by: Lacewell, Chaunte W --- .devcontainer/devcontainer.json | 3 ++ deployment/docker-swarm/docker-compose.yml.m4 | 3 -- deployment/docker-swarm/video.m4 | 3 -- doc/finetune.md | 2 +- doc/pipeline.md | 1 - fastapi/.vscode/launch.json | 44 +++---------------- fastapi/tests/base_test.py | 4 +- fastapi/tests/test_detections.py | 15 ++++--- fastapi/tests/test_eval.py | 15 ++++--- fastapi/tests/test_model.py | 13 +++--- fastapi/tests/test_pipeline.py | 15 ++++--- fastapi/tests/test_readers.py | 15 ++++--- start_app.sh | 14 +----- stop_app.sh | 2 - 14 files changed, 55 insertions(+), 94 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 7c6e073..8bc23d7 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -40,10 +40,13 @@ // "-p", "8011:8000", // "--rm", // "--gpus", "all", + "--restart", "unless-stopped", "--ipc=host", "--name", "pipeline_dev", "--cap-add=SYS_NICE", "--shm-size=8gb", + "--memory=16g", // Limits container RAM consumption ceiling + "--memory-swap=16g", // Prevents toxic swap disk compilation leaks "--network=host" // Ensures runtime matches the host network ], //, "--privileged", "--shm-size=2gb"], diff --git a/deployment/docker-swarm/docker-compose.yml.m4 b/deployment/docker-swarm/docker-compose.yml.m4 index 2e8e8cb..6f22152 100644 --- a/deployment/docker-swarm/docker-compose.yml.m4 +++ b/deployment/docker-swarm/docker-compose.yml.m4 @@ -1,9 +1,6 @@ services: -include(frontend.m4) -include(udf.m4) -include(vdms.m4) include(video.m4) include(secret.m4) include(network.m4) diff --git a/deployment/docker-swarm/video.m4 b/deployment/docker-swarm/video.m4 index 1596d2e..5caca10 100644 --- a/deployment/docker-swarm/video.m4 +++ b/deployment/docker-swarm/video.m4 @@ -101,7 +101,4 @@ define(`PROFILE_GPU', `runtime: nvidia networks: - appnet restart: always - depends_on: - - udf-service - - vdms-service ifelse(ifdef(`GPU', `yes'), `yes', PROFILE_GPU, PROFILE_DEFAULT) diff --git a/doc/finetune.md b/doc/finetune.md index 7d73a12..379bd46 100644 --- a/doc/finetune.md +++ b/doc/finetune.md @@ -26,7 +26,7 @@ Feel free to modify these parameters based on your hardware limitations such as ## Finetune Script The finetune script is used to run training, validation, and also test on a provided video (optional). To make deployment easy, we provide a Dockerfile which has the ideal environment and allow the script to run with deployment. -The script has a few adjustible arguments, so feel free to modify the call in next section as needed. +The script has a few adjustable arguments, so feel free to modify the call in next section as needed. ```bash # Runs default arguments python finetune.py diff --git a/doc/pipeline.md b/doc/pipeline.md index 6ddd8a6..e9b5e94 100644 --- a/doc/pipeline.md +++ b/doc/pipeline.md @@ -347,4 +347,3 @@ Or add the necessary flag to stop the application and prune containers: ./stop.sh –p ``` - diff --git a/fastapi/.vscode/launch.json b/fastapi/.vscode/launch.json index 1f9faee..96f4eb1 100644 --- a/fastapi/.vscode/launch.json +++ b/fastapi/.vscode/launch.json @@ -5,7 +5,7 @@ "version": "0.2.0", "configurations": [ { - // Test the model for both CPU and GPU on provided RTSP URL or video file + // Test the model on provided RTSP URL or video file "name": "Eval Pipeline", "type": "debugpy", "request": "launch", @@ -17,11 +17,10 @@ "subProcess": false, "args": [ "--type", "object", - "--device", "gpu" ] }, { - // Test the model for both CPU and GPU on provided RTSP URL or video file + // Test the model on provided RTSP URL or video file "name": "Test Model", "type": "debugpy", "request": "launch", @@ -35,11 +34,10 @@ // VIDEOS EXPECTED TO BE rstp url OR IN inputs/ or /watch_dir // "--source", "rtsp://:/", // "--source", ".mp4", - "--device", "gpu" ] }, { - // Independently test the stream readers for both CPU and GPU on provided RTSP URL or video file + // Independently test the stream readers on provided RTSP URL or video file "name": "Test Readers (Independent)", "type": "debugpy", "request": "launch", @@ -53,7 +51,6 @@ // VIDEOS EXPECTED TO BE rstp url OR IN inputs/ or /watch_dir // "--source", "rtsp://:/", // "--source", ".mp4" - "--device", "gpu" ] }, { @@ -73,8 +70,7 @@ "args": [ // VIDEOS EXPECTED TO BE rstp url OR IN inputs/ or /watch_dir // "--source", "rtsp://:/", - // "--source", ".mp4" - "--device", "gpu", + // "--source", ".mp4", "--type", "object" ] }, @@ -96,11 +92,9 @@ // AVAILABLE SCENARIO PARAMS // Use --scenario to specify tests by number (1 - 4) - // 1 - 3: --device (cpu or gpu) - // 4: --device, --sf, --type (object or motion) + // 4: --sf, --type (object or motion) "--duration", "1", - "--device", "gpu", "--type", "object" ] }, @@ -121,36 +115,12 @@ // "--source", ".mp4", // SF SCENARIO PARAMS - // 4: --device, --sf, --type (object or motion) + // 4: --sf, --type (object or motion) "--scenario", "4", "--sf", "--type", "object", "--duration", "1", - "--device", "gpu" - ] - }, - { - // Test Smart Filtering within pipeline to display the ROIs - "name": "Test Pipeline: Scenario 3", - "type": "debugpy", - "request": "launch", - "program": "${workspaceFolder}/tests/test_pipeline.py", - "cwd": "${workspaceFolder}/tests", - "python": "/opt/venv/bin/python", - "console": "integratedTerminal", - "subProcess": false, - "justMyCode": false, - "args": [ - // VIDEOS EXPECTED TO BE rstp url OR IN inputs/ or /watch_dir - // "--source", "rtsp://:/", - // "--source", ".mp4", - - "--scenario", "3", - "--type", "object", - - "--duration", "1", - "--device", "gpu" ] }, { @@ -159,6 +129,6 @@ "request": "launch", "program": "${file}", "console": "integratedTerminal" - }, + } ] } diff --git a/fastapi/tests/base_test.py b/fastapi/tests/base_test.py index 8b57cc0..067a9be 100644 --- a/fastapi/tests/base_test.py +++ b/fastapi/tests/base_test.py @@ -36,7 +36,6 @@ scale_bbox_xywh, ) -gdown = install_and_load_pip_package("gdown", attribute_name=None) objgraph = install_and_load_pip_package("objgraph", attribute_name=None) target_width, target_height = 7680, 4320 # 8K # torch.set_grad_enabled(False) @@ -65,6 +64,9 @@ def download_eval_data(video_name_list, target_fps=TARGET_FPS): DATA_DIR = Path(__file__).parent / "eval_data" DATA_DIR.mkdir(parents=True, exist_ok=True) + if "gdown" not in sys.modules: + gdown = install_and_load_pip_package("gdown", attribute_name=None) + # DOWNLOAD GT ZIP VIDEO_GROUND_TRUTH_URL = ( "https://drive.google.com/open?id=16PE3tBhT0lUGZLA8-zIRYvNUvxfhFZJq" diff --git a/fastapi/tests/test_detections.py b/fastapi/tests/test_detections.py index 28d2a47..5f0f36e 100644 --- a/fastapi/tests/test_detections.py +++ b/fastapi/tests/test_detections.py @@ -717,13 +717,13 @@ def get_pytest_filter_expression(args): ) # Filter tests - parser.add_argument( - "--device", - type=str, - default="all", - choices=["cpu", "gpu", "all"], - help="Filter by device (cpu or gpu)", - ) + # parser.add_argument( + # "--device", + # type=str, + # default="all", + # choices=["cpu", "gpu", "all"], + # help="Filter by device (cpu or gpu)", + # ) parser.add_argument( "--type", type=str, @@ -768,6 +768,7 @@ def get_pytest_filter_expression(args): ) args = parser.parse_args() + args.device = "gpu" # UPDATE ENVIRONMENTAL VARIABLES os.environ["VIDEO_FILENAME"] = args.source diff --git a/fastapi/tests/test_eval.py b/fastapi/tests/test_eval.py index a23b241..1eb01b3 100644 --- a/fastapi/tests/test_eval.py +++ b/fastapi/tests/test_eval.py @@ -727,13 +727,13 @@ def get_pytest_filter_expression(args): ) # Filter tests - parser.add_argument( - "--device", - type=str, - default="all", - choices=["cpu", "gpu", "all"], - help="Filter by device (cpu or gpu)", - ) + # parser.add_argument( + # "--device", + # type=str, + # default="all", + # choices=["cpu", "gpu", "all"], + # help="Filter by device (cpu or gpu)", + # ) parser.add_argument( "--type", type=str, @@ -778,6 +778,7 @@ def get_pytest_filter_expression(args): ) args = parser.parse_args() + args.device = "gpu" # UPDATE ENVIRONMENTAL VARIABLES os.environ["VIDEO_FILENAME"] = args.source diff --git a/fastapi/tests/test_model.py b/fastapi/tests/test_model.py index 08920de..2f34da2 100644 --- a/fastapi/tests/test_model.py +++ b/fastapi/tests/test_model.py @@ -732,14 +732,15 @@ def start(self): ) # Filter tests - parser.add_argument( - "--device", - type=str, - choices=["cpu", "gpu"], - help="Filter by device (cpu or gpu)", - ) + # parser.add_argument( + # "--device", + # type=str, + # choices=["cpu", "gpu"], + # help="Filter by device (cpu or gpu)", + # ) args = parser.parse_args() + args.device = "gpu" # UPDATE ENVIRONMENTAL VARIABLES os.environ["VIDEO_FILENAME"] = args.source diff --git a/fastapi/tests/test_pipeline.py b/fastapi/tests/test_pipeline.py index 15ffbe7..d5a5192 100644 --- a/fastapi/tests/test_pipeline.py +++ b/fastapi/tests/test_pipeline.py @@ -1128,13 +1128,13 @@ def get_pytest_filter_expression(args, sorted_scenarios): dest="detection_type", help="Filter by detection type (object or motion)", ) - parser.add_argument( - "--device", - type=str, - default="all", - choices=["cpu", "gpu", "all"], - help="Target hardware context selection filter.", - ) + # parser.add_argument( + # "--device", + # type=str, + # default="all", + # choices=["cpu", "gpu", "all"], + # help="Target hardware context selection filter.", + # ) parser.add_argument( "--sf", action="store_true", @@ -1165,6 +1165,7 @@ def get_pytest_filter_expression(args, sorted_scenarios): ) args = parser.parse_args() + args.device = "gpu" os.environ["VIDEO_FILENAME"] = args.source os.environ["TEST_DURATION_MINS"] = str(args.duration) diff --git a/fastapi/tests/test_readers.py b/fastapi/tests/test_readers.py index 7961d19..6358752 100644 --- a/fastapi/tests/test_readers.py +++ b/fastapi/tests/test_readers.py @@ -705,13 +705,13 @@ def get_pytest_filter_expression(args): dest="detection_type", help="Filter by detection type (object or motion)", ) - parser.add_argument( - "--device", - type=str, - default="all", - choices=["cpu", "gpu", "all"], - help="Filter by device (cpu or gpu)", - ) + # parser.add_argument( + # "--device", + # type=str, + # default="all", + # choices=["cpu", "gpu", "all"], + # help="Filter by device (cpu or gpu)", + # ) parser.add_argument( "--sf", action="store_true", @@ -742,6 +742,7 @@ def get_pytest_filter_expression(args): ) args = parser.parse_args() + args.device = "gpu" # UPDATE ENVIRONMENTAL VARIABLES os.environ["VIDEO_FILENAME"] = args.source diff --git a/start_app.sh b/start_app.sh index a8b6a0a..956987c 100755 --- a/start_app.sh +++ b/start_app.sh @@ -6,10 +6,10 @@ INGESTION="object" #,face" EXP_TYPE=compose DEBUG="0" -DEVICE="CPU" +DEVICE="GPU" DOCKER_TAR="0" RESIZE_FLAG="False" -OMIT_DETECTIONS_FLAG="False" +OMIT_DETECTIONS_FLAG="True" MODEL_NAME="" DIR=$(dirname $(readlink -f "$0")) @@ -53,13 +53,8 @@ script_usage() Options: -h optional Print this help message -d or --debug optional Flag to enable debug messages - -e or --device optional Device for inference (CPU, GPU) [Default: CPU] - -i or --ingestion optional Ingestion type (object, face) [Default: "object,face"] -l or --tars optional Flag to load docker images instead of building from Dockerfiles -m or --model optional Custom YOLO model name (.pt). If not provided model YOLO11n is used. - -o or --omit-det optional By default, object detections are printed. To omit printing detections to screen, enable flag. - -t or --type optional Deployment method (compose) [Default: compose] - -z or --resize optional Flag to resize video to model input size EOF } @@ -69,12 +64,7 @@ while true; do -h) script_usage; exit 0 ;; -d | --debug) shift; DEBUG="1" ;; -l | --tars) shift; DOCKER_TAR="1" ;; - -e | --device) shift; DEVICE=$1; shift ;; - -i | --ingestion) shift; INGESTION=$1; shift ;; -m | --model) shift; MODEL_NAME=$1; shift ;; - -t | --type) shift; EXP_TYPE="$1"; shift ;; - -z | --resize) shift; RESIZE_FLAG="True" ;; - -o | --omit-det) shift; OMIT_DETECTIONS_FLAG="True" ;; --) shift; break ;; *) script_usage; exit 0 ;; esac diff --git a/stop_app.sh b/stop_app.sh index deb3e94..fadbe84 100755 --- a/stop_app.sh +++ b/stop_app.sh @@ -34,7 +34,6 @@ script_usage() Options: -h optional Print this help message - -t or --type optional Deployment method (compose) [Default: compose] -p or --prune optional Flag to prune docker builder EOF @@ -43,7 +42,6 @@ EOF while true; do case "$1" in -h) script_usage; exit 0 ;; - -t | --type) shift; EXP_TYPE="$1"; shift ;; -p | --prune) shift; DOCKER_PRUNE="1" ;; --) shift; break ;; *) script_usage; exit 0 ;; From 0c1826fe657f689adbc8df47c4e45f84f185e22b Mon Sep 17 00:00:00 2001 From: "Lacewell, Chaunte W" Date: Thu, 2 Jul 2026 15:56:45 -0700 Subject: [PATCH 05/19] July demo code: refactored reader, updated dependencies, updated tests Signed-off-by: Lacewell, Chaunte W --- .devcontainer/Dockerfile | 4 +- .github/assets/fastapi/requirements.in | 8 +- .github/assets/finetune/requirements.in | 9 +- fastapi/.vscode/launch.json | 30 +- fastapi/Dockerfile | 4 +- fastapi/include/default_configs.py | 5 +- fastapi/include/handlers.py | 4459 ++++++++++++++--------- fastapi/include/models.py | 68 +- fastapi/include/readers.py | 1566 ++++---- fastapi/include/utils.py | 374 +- fastapi/main.py | 46 +- fastapi/tests/test_detections.py | 2827 +++++++------- fastapi/tests/test_model.py | 2 +- fastapi/tests/test_pipeline.py | 29 +- fastapi/tests/test_readers.py | 2203 +++++++++++ finetune/Dockerfile | 4 +- 16 files changed, 7594 insertions(+), 4044 deletions(-) create mode 100644 fastapi/tests/test_readers.py diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 8ae30d8..fe197ed 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -53,10 +53,10 @@ RUN apt-get update && \ RUN python3 -m venv ${VIRTUAL_ENV} && \ ${VIRTUAL_ENV}/bin/pip install --no-cache-dir \ - "pip==26.0.1" \ + "pip==26.1.2" \ "torch==2.10.0" \ "torchvision==0.25.0" \ - "numpy==1.26.0" + "numpy==1.26.4" # OPENCV W/ CUDA SUPPORT ENV PYTHON_VERSION=3.10 diff --git a/.github/assets/fastapi/requirements.in b/.github/assets/fastapi/requirements.in index d7c5f92..46074b5 100644 --- a/.github/assets/fastapi/requirements.in +++ b/.github/assets/fastapi/requirements.in @@ -15,10 +15,10 @@ protobuf>=5.29.6,<6 # For VDMS pynvvideocodec>=2.1.0 pytest>=9.0.3 requests>=2.33.0 -tensorrt_cu12==10.14.1.48.post1 -torch==2.10.0 -torchvision==0.25.0 -ultralytics>=8.4.8 +tensorrt_cu12>=10.14.1.48.post1 +torch>=2.10.0 +torchvision>=0.25.0 +ultralytics>=8.4.34 uvicorn>=0.42.0 vdms>=0.0.23 wheel>=0.46.3 diff --git a/.github/assets/finetune/requirements.in b/.github/assets/finetune/requirements.in index 0e3d576..fa2843f 100644 --- a/.github/assets/finetune/requirements.in +++ b/.github/assets/finetune/requirements.in @@ -8,12 +8,13 @@ onnxruntime-gpu>=1.23.2 onnxslim>=0.1.82 pip>=26.1 requests>=2.33.0 -tensorrt_cu12==10.14.1.48.post1 -torch==2.10.0 -torchvision==0.25.0 -ultralytics>=8.4.8 +tensorrt_cu12>=10.14.1.48.post1 +torch>=2.10.0 +torchvision>=0.25.0 +ultralytics>=8.4.34 idna>=3.15 pillow>=12.2.0 +protobuf>=5.29.6,<6 # For VDMS urllib3>=2.7.0 diff --git a/fastapi/.vscode/launch.json b/fastapi/.vscode/launch.json index 5ea2550..d69153c 100644 --- a/fastapi/.vscode/launch.json +++ b/fastapi/.vscode/launch.json @@ -4,6 +4,21 @@ // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ + { + "name": "Python Debugger: test_detections", + "type": "debugpy", + "request": "launch", + "program": "${workspaceFolder}/tests/test_detections.py", + "cwd": "${workspaceFolder}/tests", + "console": "integratedTerminal", + "justMyCode": false, + "subProcess": false, + "args": [ + "--type", "object", + // "--source", ".mp4", + // "-m", "yolo11n", "--no-custom", + ] + }, { "name": "Python Debugger: Pipeline", "type": "debugpy", @@ -60,20 +75,5 @@ // "--source", ".mp4", ] }, - { - "name": "Python Debugger: test_detections", - "type": "debugpy", - "request": "launch", - "program": "${workspaceFolder}/tests/test_detections.py", - "cwd": "${workspaceFolder}/tests", - "console": "integratedTerminal", - "justMyCode": false, - "subProcess": false, - "args": [ - "--type", "object", - // "--source", ".mp4", - // "-m", "yolo11n", "--no-custom", - ] - } ] } diff --git a/fastapi/Dockerfile b/fastapi/Dockerfile index a771678..a0d81c0 100644 --- a/fastapi/Dockerfile +++ b/fastapi/Dockerfile @@ -53,10 +53,10 @@ RUN apt-get update && \ RUN python3 -m venv ${VIRTUAL_ENV} && \ ${VIRTUAL_ENV}/bin/pip install --no-cache-dir \ - "pip==26.0.1" \ + "pip==26.1.2" \ "torch==2.10.0" \ "torchvision==0.25.0" \ - "numpy==1.26.0" + "numpy==1.26.4" # OPENCV W/ CUDA SUPPORT ENV PYTHON_VERSION=3.10 diff --git a/fastapi/include/default_configs.py b/fastapi/include/default_configs.py index 9046094..94cc90d 100644 --- a/fastapi/include/default_configs.py +++ b/fastapi/include/default_configs.py @@ -24,6 +24,7 @@ # MODEL DETECTION_THRESHOLD_DEFAULT = 0.25 +IOU_THRESHOLD_DEFAULT = 0.7 DYNAMIC_FLAG_DEFAULT = True HALF_FLAG_DEFAULT = True MAX_DETECTIONS = 100 @@ -36,7 +37,7 @@ # SMART FILTERING (RESIZE, BKGD SUB, THRESHOLD, DILATE) # Enable if resolution > 2K 1920x1080 SMART_FILTERING_PIXEL_CONSTRAINT = 1920 * 1080 -BKGD_SUB_INCLUDE_HISTORY = False # True, False +BKGD_SUB_INCLUDE_HISTORY = True # True, False BKGD_SUB_INCLUDE_HISTORY_DILATE_KERNEL_SIZE = 15 # 21 #15 BKGD_SUB_INCLUDE_HISTORY_METHOD = "or" # "and", or BKGD_SUB_INCLUDE_HISTORY_TEMPORAL_SIZE = 3 @@ -48,7 +49,7 @@ RESIZE_FLAG_DEFAULT = False ROI_BB_FULL_RES_PADDING = int(0.02 * MODEL_W) # 10, ~13 ROI_CONTAINMENT_THRESH = 0.95 -ROI_DISTANCE_THRESH_RATIO = 0.05 +ROI_DISTANCE_THRESH_RATIO = 0.05 # 0.10 #.15 # 0.05 ROI_MAX_RELATIVE_SIZE_RATIO = 1 # 1 # 0.8 ROI_MERGE_SIZE_LIMIT = MODEL_W * 1.25 ROI_MIN_AREA_RATIO = 0.01 diff --git a/fastapi/include/handlers.py b/fastapi/include/handlers.py index 9188bcc..53e2783 100644 --- a/fastapi/include/handlers.py +++ b/fastapi/include/handlers.py @@ -72,14 +72,15 @@ def log_to_logger(message, level="info"): # ----- PIPELINE CONFIGURATION ----- -os.environ["PYTORCH_ALLOC_CONF"] = "expandable_segments:True" -# Force OpenCV to use a single thread for its operations. -# This prevents internal OpenCV threads from "racing" against AI logic. -# cv2.setNumThreads(1) - # Force OpenCV to run sequentially to prevent context-switching overhead -# cv2.setNumThreads(0) -cv2.setNumThreads(os.cpu_count() or 4) +cv2.setNumThreads(0) # Forces OpenCV loops to run strictly sequentially +# cv2.setNumThreads(os.cpu_count() or 4) +torch.set_num_threads(1) +torch.set_num_interop_threads(1) +# os.environ["OMP_NUM_THREADS"] = "1" +os.environ["MKL_NUM_THREADS"] = "1" +os.environ["OMP_NUM_THREADS"] = str(mp.cpu_count()) # "1" +os.environ["PYTORCH_ALLOC_CONF"] = "expandable_segments:True" from include.utils import ( @@ -89,9 +90,636 @@ def log_to_logger(message, level="info"): get_detection_color, get_display_frame_in_bytes, metadata2vdms_with_retry, - tensor2opencv, + # AsyncVideoWriter, + # AsyncDisplayWriter, ) + +class AsyncVideoWriter: + """Handles disk saving operations asynchronously on a background thread.""" + + def __init__(self, path, fourcc, fps, size): + self.writer = cv2.VideoWriter(path, fourcc, fps, size) + self.queue = queue.Queue() + self.running = True + self.thread = threading.Thread(target=self._write_loop, daemon=True) + self.thread.start() + + def _write_loop(self): + while self.running or not self.queue.empty(): + try: + frame = self.queue.get(timeout=0.05) + if frame is None: + break + self.writer.write(frame) + self.queue.task_done() + except queue.Empty: + continue + + def write_frame(self, frame): + self.queue.put(frame) + + def release(self): + self.running = False + self.thread.join() + self.writer.release() + + +class AsyncDisplayWriter: + """ + Ultra-efficient frame-delivery client for live web streaming. + Pipes annotated BGR numpy matrices directly into matching Linux + POSIX Shared Memory allocation slots to prevent thread context-switching. + """ + + def __init__(self, target_fps, display_size, quality=60): + self.target_fps = float(target_fps) + self.disp_w, self.disp_h = display_size + self.quality = int(quality) + + # Ingestion pipeline constructs + self.queue = queue.Queue(maxsize=10) + self.running = True + + # State indicators requested by the FastAPI handler endpoints + self.handler = None + + def start_worker(self): + self.thread = threading.Thread(target=self._write_loop, daemon=True) + self.thread.start() + + def set_handler_context(self, handler_instance): + """Binds the active handler resource structures to secure index barriers.""" + self.handler = handler_instance + + def _write_loop(self): + encode_param = [int(cv2.IMWRITE_JPEG_QUALITY), self.quality] + print( + f"[DISPLAY-DEBUG] Background writer thread active for: {self.handler.name if self.handler else 'None'}", + flush=True, + ) + + while self.running or not self.queue.empty(): + try: + item = self.queue.get(timeout=0.05) + if item is None: + break + + display_frame, frame_num = item + + if self.handler is None: + print( + f"[DISPLAY-WARN] Missing handler context on Frame #{frame_num}", + flush=True, + ) + self.queue.task_done() + continue + + # --- TRACKING DIAGNOSTIC ASSERTION --- + current_last_id = ( + self.handler.mp_last_id.value + ) # self.handler.shared_details.get("last_id", -1) + if frame_num <= current_last_id: + print( + f"[DISPLAY-DROP] Skipping Frame #{frame_num} because it is older or equal to last_id ({current_last_id})", + flush=True, + ) + self.queue.task_done() # 🔄 CRITICAL: Prevent queue thread starvation + continue + + frame_bytes = get_display_frame_in_bytes( + display_frame, + display_size=(self.disp_w, self.disp_h), + quality=self.quality, + return_bytes=True, + ) + + if not frame_bytes: + print( + f"[DISPLAY-ERROR] Compression failed on Frame #{frame_num}", + flush=True, + ) + self.queue.task_done() + continue + + frame_len = len(frame_bytes) + num_shms = len(self.handler.shms) + + forbidden_idx = [ + self.handler.ready_buffer_idx.value, + self.handler.reader_active_idx.value, + ] + available_idx = [i for i in range(num_shms) if i not in forbidden_idx] + + if not available_idx: + write_idx = (self.handler.ready_buffer_idx.value + 1) % num_shms + else: + write_idx = available_idx[0] + + # Zero-copy memory map transaction + shm_block = self.handler.shms[write_idx] + shm_block.buf[:frame_len] = frame_bytes # memoryview(frame_bytes) + + # Secure metrics tracking parameters + self.handler.shm_frame_lengths[write_idx] = frame_len + self.handler.ready_buffer_idx.value = write_idx + # self.handler.shared_details["last_id"] = frame_num + self.handler.mp_last_id.value = frame_num + + # Signal FastAPI async engine handles safely + # if hasattr(self.handler, "loop") and self.handler.loop is not None: + # self.handler.loop.call_soon_threadsafe(self.handler.frame_ready_event.set) + # else: + # self.handler.frame_ready_event.set() + self.handler.mp_frame_ready_flag.value = True + + self.queue.task_done() + + except queue.Empty: + continue + except Exception as e: + print(f"[DISPLAY-FATAL-ERROR] Execution crashed: {e}", flush=True) + traceback.print_exc() + if "item" in locals(): + self.queue.task_done() + continue + + # def _write_loopv2(self): + # encode_param = [int(cv2.IMWRITE_JPEG_QUALITY), self.quality] + # while self.running or not self.queue.empty(): + # try: + # item = self.queue.get(timeout=0.05) + # if item is None: + # break + # display_frame, frame_num = item + # # self.writer.write(frame) + # # Compress to highly packable, network-ready JPEG byte streams + # # ret, jpeg_buf = cv2.imencode('.jpg', display_frame, encode_param) + # # if not ret: + # # self.queue.task_done() + # # continue + # if self.handler is None: # or not self.handler.active: + # self.queue.task_done() + # continue + + # if frame_num > self.handler.shared_details["last_id"]: + # frame_bytes = get_display_frame_in_bytes( + # display_frame, + # display_size=(self.disp_w, self.disp_h), + # quality=self.quality, + # return_bytes=True, + # ) + # if not frame_bytes: + # self.queue.task_done() + # continue + + # # frame_bytes = jpeg_buf.tobytes() + # frame_len = len(frame_bytes) + # num_shms = len(self.handler.shms) + + # # Locate alternative ring memory locations away from browser client read operations + # forbidden_idx = [self.handler.ready_buffer_idx.value, self.handler.reader_active_idx.value] + # available_idx = [i for i in range(num_shms) if i not in forbidden_idx] + + # if not available_idx: + # # Fallback to structural ring increments if locks collide + # write_idx = (self.handler.ready_buffer_idx.value + 1) % num_shms + # else: + # write_idx = available_idx[0] + + # # Direct zero-copy commit straight to volatile RAM mappings + # shm_block = self.handler.shms[write_idx] + # shm_block.buf[:frame_len] = memoryview(frame_bytes) + + # # Update pipeline sync trackers across worker contexts + # self.handler.shm_frame_lengths[write_idx] = frame_len + # self.handler.ready_buffer_idx.value = write_idx + + # # Assign atomic sequence token identifiers safely + # self.handler.shared_details["last_id"] = frame_num + + # # Fire threading synchronization barriers to release blocked generator loops + # # self.handler.frame_ready_event.set() + # if hasattr(self.handler, "loop") and self.handler.loop is not None: + # self.handler.loop.call_soon_threadsafe(self.handler.frame_ready_event.set) + # else: + # # Fallback guard if the frame context hasn't registered a loop hook yet + # self.handler.frame_ready_event.set() + + # self.queue.task_done() + # except queue.Empty: + # continue + # except Exception as e: + # print(f"[ASYNC-DISPLAY-ERROR] Silent pool worker drop: {e}") + # traceback.print_exc() + # continue + + # def _write_loopv1(self): + # """Background daemon consumer that compresses matrices directly to /dev/shm.""" + # # Performance parameters to maintain strict BT.709 encoding constraints + # encode_param = [int(cv2.IMWRITE_JPEG_QUALITY), self.quality] + + # while self.running or not self.queue.empty(): + # try: + # item = self.queue.get(timeout=0.05) + # if item is None: + # break + + # display_frame, frame_num = item + # if self.handler is None or not self.handler.active: + # self.queue.task_done() + # continue + + # # Ensure image sizes perfectly correspond with standard API expectations + # if display_frame.shape[1] != self.disp_w or display_frame.shape[0] != self.disp_h: + # display_frame = cv2.resize(display_frame, (self.disp_w, self.disp_h), interpolation=cv2.INTER_NEAREST) + + # # Compress to highly packable, network-ready JPEG byte streams + # ret, jpeg_buf = cv2.imencode('.jpg', display_frame, encode_param) + # if not ret: + # self.queue.task_done() + # continue + + # frame_bytes = jpeg_buf.tobytes() + # frame_len = len(frame_bytes) + # num_shms = len(self.handler.shms) + + # # Locate alternative ring memory locations away from browser client read operations + # forbidden_idx = [self.handler.ready_buffer_idx.value, self.handler.reader_active_idx.value] + # available_idx = [i for i in range(num_shms) if i not in forbidden_idx] + + # if not available_idx: + # # Fallback to structural ring increments if locks collide + # write_idx = (self.handler.ready_buffer_idx.value + 1) % num_shms + # else: + # write_idx = available_idx[0] + + # # Direct zero-copy commit straight to volatile RAM mappings + # shm_block = self.handler.shms[write_idx] + # shm_block.buf[:frame_len] = frame_bytes + + # # Update pipeline sync trackers across worker contexts + # self.handler.shm_frame_lengths[write_idx] = frame_len + # self.handler.ready_buffer_idx.value = write_idx + + # # Assign atomic sequence token identifiers safely + # self.handler.shared_details["last_id"] = frame_num + + # # Fire threading synchronization barriers to release blocked generator loops + # # self.handler.frame_ready_event.set() + # if hasattr(self.handler, "loop") and self.handler.loop is not None: + # self.handler.loop.call_soon_threadsafe(self.handler.frame_ready_event.set) + # else: + # # Fallback guard if the frame context hasn't registered a loop hook yet + # self.handler.frame_ready_event.set() + + # self.queue.task_done() + # except queue.Empty: + # continue + # except Exception as e: + # print(f"[ASYNC-DISPLAY-ERROR] Failed streaming injection: {e}") + # continue + + def write_frame(self, display_frame, frame_num): + """Thread-safe entry hook to stash processed canvas items into the workspace.""" + # if not self.active: + # return + # try: + # # Drop structural allocations under pressure if the worker falls behind + # self.queue.put_nowait((display_frame, frame_num)) + # except queue.Full: + # pass + self.queue.put((display_frame, frame_num)) + + def release(self): + """Terminates internal consumers gracefully to ensure process convergence.""" + # self.active = False + self.running = False + self.queue.put(None) + if self.thread.is_alive(): + self.thread.join(timeout=1.0) + + +# class AsyncDisplayVideoWriter: +# """ +# Modified streaming writer based on AsyncVideoWriter layout. +# Sequentially pipes annotated matrices directly into Linux POSIX +# Shared Memory allocations without frame drop filters. +# """ +# def __init__(self, target_fps, display_size, quality=60): +# self.target_fps = float(target_fps) +# self.disp_w, self.disp_h = display_size +# self.quality = int(quality) + +# # Ingestion pipeline constructs mirroring AsyncVideoWriter +# self.queue = queue.Queue(maxsize=2) +# self.running = True +# self.handler = None + +# # Start the sequential background thread +# self.thread = threading.Thread(target=self._write_loop, daemon=True) +# self.thread.start() + +# def set_handler_context(self, handler_instance): +# """Binds the parent handler resource structures.""" +# self.handler = handler_instance + +# def _write_loop(self): +# encode_param = [int(cv2.IMWRITE_JPEG_QUALITY), self.quality] + +# while self.running: # or not self.queue.empty(): +# try: +# item = self.queue.get(timeout=0.05) +# if item is None: +# break + +# display_frame, frame_num = item +# if self.handler is None or not self.handler.active: +# self.queue.task_done() +# continue + +# # Ensure image matches standard spatial expectations layout safely +# if display_frame.shape[1] != self.disp_w or display_frame.shape[0] != self.disp_h: +# display_frame = cv2.resize( +# display_frame, (self.disp_w, self.disp_h), interpolation=cv2.INTER_NEAREST +# ) + +# # Compress to network-ready JPEG byte streams +# ret, jpeg_buf = cv2.imencode('.jpg', display_frame, encode_param) +# if not ret: +# self.queue.task_done() +# continue + +# frame_bytes = jpeg_buf.tobytes() +# frame_len = len(frame_bytes) +# num_shms = len(self.handler.shms) + +# # Sequential Ring Buffer Allocation Step +# write_idx = (self.handler.ready_buffer_idx.value + 1) % num_shms + +# # Commit straight to the volatile shared RAM mapping +# shm_block = self.handler.shms[write_idx] +# shm_block.buf[:frame_len] = memoryview(frame_bytes) + +# # Update lengths and index pointers first so the reader has data +# self.handler.shm_frame_lengths[write_idx] = frame_len +# self.handler.ready_buffer_idx.value = write_idx +# self.handler.mp_last_id.value = frame_num + +# # Flip the shared IPC flag to wake up the FastAPI generator +# self.handler.mp_frame_ready_flag.value = True + +# self.queue.task_done() + +# # if self.queue.empty(): +# # self.handler.mp_frame_ready_flag.value = False +# except queue.Empty: +# continue +# except Exception as e: +# print(f"[STREAM-WRITER-ERROR] Failed streaming injection: {e}") +# if 'item' in locals(): +# self.queue.task_done() +# continue + +# # def write_frame(self, frame, frame_num): +# # """Appends frames to the background delivery thread queue.""" +# # if self.running: +# # self.queue.put((frame, frame_num)) + +# # def release(self): +# # """Gracefully terminates and joins the background thread loop.""" +# # self.running = False +# # self.queue.put(None) +# # if self.thread.is_alive(): +# # self.thread.join() + +# def write_frame(self, frame, frame_num): +# """Thread-safe lossy queue ingestion.""" +# if not self.running: +# return +# try: +# # 2. 🔄 FIX: Use non-blocking insertions to prevent ThreadPool starvation +# self.queue.put_nowait((frame, frame_num)) +# except queue.Full: +# try: +# # Evict the old, stale frame to ensure real-time rendering continuity +# self.queue.get_nowait() +# self.queue.task_done() +# self.queue.put_nowait((frame, frame_num)) +# except Exception: +# pass + +# def release(self): +# self.running = False +# try: +# while not self.queue.empty(): +# self.queue.get_nowait() +# self.queue.task_done() +# except Exception: +# pass +# self.queue.put(None) + +# class AsyncDisplayVideoWriter: +# """ +# Lock-free sequential frame streaming bridge optimized for 8K pipelines. +# Directly targets the reverted FastAPI main.py frame_generator loop structures. +# """ +# def __init__(self, target_fps, display_size, quality=60): +# self.target_fps = float(target_fps) +# self.disp_w, self.disp_h = display_size +# self.quality = int(quality) + +# # Enforce a tight bounded queue to eliminate memory leaks and thread pool starvation +# self.queue = queue.Queue(maxsize=1) +# self.running = True +# self.handler = None + +# self.thread = threading.Thread(target=self._write_loop, daemon=True) +# self.thread.start() + +# def set_handler_context(self, handler_instance): +# """Binds the stream handler context to pass parameters across memory spaces.""" +# self.handler = handler_instance + +# def _write_loop(self): +# encode_param = [int(cv2.IMWRITE_JPEG_QUALITY), self.quality] + +# while self.running: +# try: +# # Controlled timeout prevents zombie threads during service re-engineering +# item = self.queue.get(timeout=0.02) +# if item is None: +# break + +# display_frame, frame_num = item +# if self.handler is None or not self.handler.active: +# self.queue.task_done() +# continue + +# # Enforce spatial aspect resolution constraints +# if display_frame.shape[1] != self.disp_w or display_frame.shape[0] != self.disp_h: +# display_frame = cv2.resize( +# display_frame, (self.disp_w, self.disp_h), interpolation=cv2.INTER_NEAREST +# ) + +# # Compress matrix to network-ready JPEGs +# ret, jpeg_buf = cv2.imencode('.jpg', display_frame, encode_param) +# if not ret: +# self.queue.task_done() +# continue + +# frame_bytes = jpeg_buf.tobytes() +# frame_len = len(frame_bytes) +# num_shms = len(self.handler.shms) + +# # Lockless round-robin step selection across the pre-allocated POSIX buffers +# write_idx = (self.handler.ready_buffer_idx.value + 1) % num_shms + +# # Commit bytes directly into volatile Linux shared RAM (/dev/shm) +# shm_block = self.handler.shms[write_idx] +# shm_block.buf[:frame_len] = memoryview(frame_bytes) + +# # --- ATOMIC METRICS UPDATES ALIGNED WITH REVERTED main.py --- +# self.handler.shm_frame_lengths[write_idx] = frame_len +# self.handler.ready_buffer_idx.value = write_idx + +# # Synchronize the Manager dict proxy that main.py parses on line 197! +# self.handler.shared_details["last_id"] = frame_num +# self.handler.mp_last_id.value = frame_num + +# # Thread-safely fire the asyncio.Event to wake up the web generator loop +# if hasattr(self.handler, "loop") and self.handler.loop is not None: +# self.handler.loop.call_soon_threadsafe(self.handler.frame_ready_event.set) +# else: +# self.handler.frame_ready_event.set() + +# self.queue.task_done() +# except queue.Empty: +# continue +# except Exception as e: +# print(f"[STREAM-WRITER-ERROR] Frame streaming execution failed: {e}", flush=True) +# if 'item' in locals(): +# self.queue.task_done() +# continue + +# def write_frame(self, frame, frame_num): +# """Appends frames to the background delivery thread using non-blocking evictions.""" +# if not self.running: +# return +# try: +# self.queue.put_nowait((frame, frame_num)) +# except queue.Full: +# try: +# # Evict the old, stale frame slot to prioritize fresh real-time matrices +# self.queue.get_nowait() +# self.queue.task_done() +# self.queue.put_nowait((frame, frame_num)) +# except Exception: +# pass + +# def release(self): +# """Gracefully drains workers and joins the tracking daemon loops.""" +# self.running = False +# try: +# while not self.queue.empty(): +# self.queue.get_nowait() +# self.queue.task_done() +# except Exception: +# pass +# self.queue.put(None) + + +class AsyncDisplayVideoWriter: + """ + Lock-free single-element buffer optimized for 8K pipelines. + Eliminates queue.Queue lock contention to preserve strict target frame rates. + """ + + def __init__(self, target_fps, display_size, quality=60): + self.target_fps = float(target_fps) + self.disp_w, self.disp_h = display_size + self.quality = int(quality) + + # 1. 🔄 FIX: Use a lockless deque with maxlen=1 instead of queue.Queue + self.buffer = deque(maxlen=1) + self.running = True + self.handler = None + + self.thread = threading.Thread(target=self._write_loop, daemon=True) + self.thread.start() + + def set_handler_context(self, handler_instance): + self.handler = handler_instance + + def _write_loop(self): + encode_param = [int(cv2.IMWRITE_JPEG_QUALITY), self.quality] + + while self.running: + try: + # 2. 🔄 FIX: Non-blocking pop from the single-element buffer + if not self.buffer: + time.sleep(0.005) + continue + + display_frame, frame_num = self.buffer.popleft() + + if self.handler is None or not self.handler.active: + continue + + if ( + display_frame.shape[1] != self.disp_w + or display_frame.shape[0] != self.disp_h + ): + display_frame = cv2.resize( + display_frame, + (self.disp_w, self.disp_h), + interpolation=cv2.INTER_NEAREST, + ) + + ret, jpeg_buf = cv2.imencode(".jpg", display_frame, encode_param) + if not ret: + continue + + frame_bytes = jpeg_buf.tobytes() + frame_len = len(frame_bytes) + num_shms = len(self.handler.shms) + + write_idx = (self.handler.ready_buffer_idx.value + 1) % num_shms + + shm_block = self.handler.shms[write_idx] + shm_block.buf[:frame_len] = memoryview(frame_bytes) + + self.handler.shm_frame_lengths[write_idx] = frame_len + self.handler.ready_buffer_idx.value = write_idx + self.handler.shared_details["last_id"] = frame_num + self.handler.mp_last_id.value = frame_num + + if hasattr(self.handler, "loop") and self.handler.loop is not None: + self.handler.loop.call_soon_threadsafe( + self.handler.frame_ready_event.set + ) + else: + self.handler.frame_ready_event.set() + + except Exception as e: + print( + f"[STREAM-ERROR] Lock-free frame streaming dropped: {e}", flush=True + ) + continue + + def write_frame(self, frame, frame_num): + """Thread-safe lock-free atomic submission track.""" + if self.running: + # 3. 🔄 FIX: Directly append to overwrite the old entry without thread locks + self.buffer.append((frame, frame_num)) + + def release(self): + self.running = False + self.buffer.clear() + if self.thread.is_alive(): + self.thread.join(timeout=0.5) + + BASE_PIPELINE_CONFIG = PipelineConfig( SHARED_MODEL=os.getenv("SHARED_MODEL", False), ENABLE_QUERYING=os.getenv("ENABLE_QUERYING", ENABLE_QUERYING_DEFAULT), @@ -125,6 +753,8 @@ def log_to_logger(message, level="info"): # {"clip_name": {"video": bool, "meta": bool}} clip_completion_tracker = {} +PADDING_PX = 10 + # ----- FASTAPI APPLICATION STARTUP/SHUTDOWN ----- # The lifespan parameter handles startup and shutdown @@ -147,11 +777,11 @@ async def auto_cleanup_janitor(app): if streamer.config.ENABLE_QUERYING else 0 ) - io_backlog = ( - streamer.io_executor._work_queue.qsize() - if hasattr(streamer, "io_executor") - else 0 - ) + # io_backlog = ( + # streamer.io_executor._work_queue.qsize() + # if hasattr(streamer, "io_executor") + # else 0 + # ) # Check if the stream is marked inactive OR timed out # streamer.active should be False when the video source ends @@ -160,11 +790,11 @@ async def auto_cleanup_janitor(app): should_remove = False if not streamer.active and ( - ai_backlog == 0 and video_backlog == 0 and io_backlog == 0 + ai_backlog == 0 and video_backlog == 0 # and io_backlog == 0 ): should_remove = True # Video ended naturally elif is_stale and ( - ai_backlog == 0 and video_backlog == 0 and io_backlog == 0 + ai_backlog == 0 and video_backlog == 0 # io_backlog == 0 ): should_remove = True # Browser tab closed/Network lost elif now - streamer.last_heartbeat > 90: @@ -177,18 +807,6 @@ async def auto_cleanup_janitor(app): streamer.stop() app.state.active_streams.pop(name, None) - # --- Synchronization Data Purge --- - # if BASE_PIPELINE_CONFIG.ENABLE_QUERYING: - # # Remove trackers older than 5 minutes (300s) - # stale_keys = [ - # k - # for k, v in clip_completion_tracker.items() - # if (now - v.get("start", now)) > 300 - # ] - # for k in stale_keys: - # clip_completion_tracker.pop(k, None) - # all_metadata.pop(k, None) - @asynccontextmanager async def lifespan(app: FastAPI): @@ -215,7 +833,7 @@ async def lifespan(app: FastAPI): _ = app.state.model(dummy_input, verbose=False) del dummy_input - torch.cuda.empty_cache() + # torch.cuda.empty_cache() print("Shared model warmup and VRAM purge complete.") janitor_task = asyncio.create_task(auto_cleanup_janitor(app)) @@ -245,12 +863,6 @@ def nv12_to_rgb_torch( """ with torch.no_grad(): if is_h264_8k: - # 8K Path: Expects planar data [C, H, W] - # y: [1, H, W], uv: [1, H, W] (already resized or needs upsampling) - # y = nv12_tensor[0:1, :, :].half() - # # If your 8K source has separate U and V, adjust indices [1:2] and [2:3] - # u = nv12_tensor[1:2, :, :].half() - # v = nv12_tensor[2:3, :, :].half() # Fallback if interleaved # 8K Planar Path: Map the channels directly y = nv12_tensor[0:1, :, :].half() u = nv12_tensor[1:2, :, :].half() @@ -335,6 +947,10 @@ def send_metadata( try: queue_details = send_metadata_queue.get() if queue_details is None: + print( + "[METADATA-DEBUG D-pill] Poison pill received. Terminating send_metadata thread loops cleanly.", + flush=True, + ) break # # (clip_key, clip_filename, width, height, clip_metadata) = queue_details @@ -343,6 +959,9 @@ def send_metadata( clip_metadata = all_metadata.pop(clip_key, None) if clip_metadata: + main_app_logger.info( + f"sending 2 vdms: {clip_key} with {len(clip_metadata)} items." + ) success = metadata2vdms_with_retry( clip_key, clip_filename, @@ -389,6 +1008,7 @@ def send_metadata( except Exception as e: # pass print(f"[EXCEPTION] Exception occurred in send_metadata: {e}") + traceback.print_exc() # ----- STREAM HANDLERS ----- @@ -425,125 +1045,129 @@ def scale_clusters_to_8k(merged_640, frame_w=7680, frame_h=4320): return final_rois -def rendering_worker( - queue, - shared_details, - ready_idx, - reader_active_idx, - frame_lengths, - signal_queue, - display_size, - quality, -): - disp_w, disp_h = display_size - # Attach to both buffers - shm_names = shared_details["shm_names"] - worker_shms = [mp.shared_memory.SharedMemory(name=n) for n in shm_names] - num_shms = len(shm_names) - - # Get shm - # shm_name = shared_details.get("shm_name") - # try: - # shm = mp.shared_memory.SharedMemory(name=shm_name) - # except Exception as e: - # print(f"[WORKER] SHM attach failed: {e}", flush=True) - # return - - try: - while True: - item = queue.get() - if item is None: # Sentinel value to stop the worker - break - - # frame is display size - # metadata in resized res - display_frame, frameNum, metadata_or_bbs, class_list = item - - # display_size = (self.resize_h, self.resize_w) - # display_frame = cv2.resize(frame, display_size, interpolation=cv2.INTER_NEAREST) - - scale_display_x = disp_w / 640 - scale_display_y = disp_h / 640 - - if isinstance(metadata_or_bbs, dict): - # Case: Object Detection - display_frame = get_metadata_overlay( - display_frame, - metadata_or_bbs, - class_list, - (scale_display_x, scale_display_y), - (disp_w, disp_h), - ) - - elif metadata_or_bbs is not None: - # Case: Motion Detections Only (SF Path) - display_frame = get_bb_overlay( - display_frame, - metadata_or_bbs, - (scale_display_x, scale_display_y), - (disp_w, disp_h), - ) - - # writer.write(display_frame) - if frameNum > shared_details["last_id"]: # self.last_delivered_frame_id: - frame_bytes = get_display_frame_in_bytes( - display_frame, - display_size=display_size, - quality=quality, - return_bytes=True, - ) - if frame_bytes: - # THE HARD GUARD: If the reader is currently touching RAM, skip this write. - # This prevents the '1-minute' scramble by ensuring zero memory overlap. - # if signal_queue.full(): - # continue - frame_len = len(frame_bytes) - - forbidden_idx = [ready_idx.value, reader_active_idx.value] - available_idx = [ - i for i in range(num_shms) if i not in forbidden_idx - ] - - if not available_idx: - continue - - # Write to the buffer that is NOT currently 'ready' - # write_idx = (shared_details["buffer_idx"] + 1) % 2 - # write_idx = 1 if ready_idx.value == 0 else 0 - # current_ready = ready_idx.value - # write_idx = (current_ready + 1) % 3 - write_idx = available_idx[0] - shm = worker_shms[write_idx] - - # Zero-copy write to RAM - shm.buf[:frame_len] = frame_bytes - - frame_lengths[write_idx] = frame_len - # shared_details["buffer_idx"] = write_idx - ready_idx.value = write_idx - shared_details["last_id"] = frameNum - # self.last_frame_id = frameNum - # self.last_heartbeat = time.time() - # Signal the FastAPI generator that a new frame is ready - # self.loop.call_soon_threadsafe(self.frame_ready_event.set) - # self.mp_frame_ready_event.set() - # try: - # signal_queue.put_nowait(True) - # except Exception: - # pass - signal_queue.put(True) - - # END While - - except Exception as e: - print(f"[EXCEPTION] Error while rendering display: {e}") - finally: - for s in worker_shms: - s.close() +# def rendering_worker( +# queue, +# shared_details, +# ready_idx, +# reader_active_idx, +# frame_lengths, +# signal_queue, +# display_size, +# quality, +# ): +# disp_w, disp_h = display_size +# # Attach to both buffers +# shm_names = shared_details["shm_names"] +# worker_shms = [mp.shared_memory.SharedMemory(name=n) for n in shm_names] +# num_shms = len(shm_names) + +# try: +# while True: +# print("[FASTAPI-TRACE D] rendering_worker child process waiting on queue.get()...", flush=True) +# item = queue.get() +# if item is None: # Sentinel value to stop the worker +# break + +# # frame is display size +# # metadata in resized res +# display_frame, frameNum, metadata_or_bbs, class_list = item +# print(f"[FASTAPI-TRACE E] rendering_worker child dequeued Frame #{frameNum}.", flush=True) +# scale_display_x = disp_w / 640 +# scale_display_y = disp_h / 640 + +# if isinstance(metadata_or_bbs, dict): +# # Case: Object Detection +# display_frame = get_metadata_overlay( +# display_frame, +# metadata_or_bbs, +# class_list, +# (scale_display_x, scale_display_y), +# (disp_w, disp_h), +# ) + +# elif metadata_or_bbs is not None: +# # Case: Motion Detections Only (SF Path) +# display_frame = get_bb_overlay( +# display_frame, +# metadata_or_bbs, +# (scale_display_x, scale_display_y), +# (disp_w, disp_h), +# ) + +# # writer.write(display_frame) +# if frameNum > shared_details["last_id"]: # self.last_delivered_frame_id: +# frame_bytes = get_display_frame_in_bytes( +# display_frame, +# display_size=display_size, +# quality=quality, +# return_bytes=True, +# ) +# if frame_bytes: +# # THE HARD GUARD: If the reader is currently touching RAM, skip this write. +# # This prevents the '1-minute' scramble by ensuring zero memory overlap. +# # if signal_queue.full(): +# # continue +# frame_len = len(frame_bytes) + +# forbidden_idx = [ready_idx.value, reader_active_idx.value] +# available_idx = [ +# i for i in range(num_shms) if i not in forbidden_idx +# ] + +# # if not available_idx: +# # continue + +# # # Write to the buffer that is NOT currently 'ready' +# # # write_idx = (shared_details["buffer_idx"] + 1) % 2 +# # # write_idx = 1 if ready_idx.value == 0 else 0 +# # # current_ready = ready_idx.value +# # # write_idx = (current_ready + 1) % 3 +# # write_idx = available_idx[0] + +# if not available_idx: +# # Instead of skipping completely and freezing, force a fallback +# # to the next standard ring channel +# write_idx = (ready_idx.value + 1) % num_shms +# else: +# write_idx = available_idx[0] + +# shm = worker_shms[write_idx] + +# # Zero-copy write to RAM +# shm.buf[:frame_len] = frame_bytes + +# frame_lengths[write_idx] = frame_len +# # shared_details["buffer_idx"] = write_idx +# ready_idx.value = write_idx +# # shared_details["last_id"] = frameNum +# # self.last_frame_id = frameNum +# # self.last_heartbeat = time.time() +# # Signal the FastAPI generator that a new frame is ready +# # self.loop.call_soon_threadsafe(self.frame_ready_event.set) +# # self.mp_frame_ready_event.set() +# # try: +# # signal_queue.put_nowait(True) +# # except Exception: +# # pass +# # signal_queue.put(True) +# try: +# print(f"[FASTAPI-TRACE F] Frame #{frameNum} written to SHM slot {write_idx} ({frame_len} bytes). Signaling parent...", flush=True) +# signal_queue.put_nowait((True, frameNum)) +# except queue.Full: +# print(f"[FASTAPI-TRACE WARN] signal_queue full on Frame #{frameNum}", flush=True) +# # pass # If the web app is slightly behind, do not freeze the child process! + +# # END While + +# except Exception as e: +# print(f"[EXCEPTION] Error while rendering display: {e}") +# finally: +# for s in worker_shms: +# s.close() def get_metadata_overlay( - display_frame, metadata_or_bbs, class_list, scale_display, disp_size + display_frame, metadata_or_bbs, class_list, scale_display, disp_size, is_bgr=True ): scale_display_x, scale_display_y = scale_display disp_w, disp_h = disp_size @@ -558,10 +1182,12 @@ def get_metadata_overlay( class_id = class_list.index(class_name) if class_name in class_list else 0 confidence = bbox.get("object_det", {}).get("confidence", 0.0) - bb_color = get_detection_color(class_id, is_bgr=True) + bb_color = get_detection_color(class_id, is_bgr=is_bgr) label = f"{class_name} {confidence:.2f}" - cv2.rectangle(display_frame, (x, y), (x + w, y + h), bb_color, 2) + display_frame = cv2.rectangle( + display_frame, (x, y), (x + w, y + h), bb_color, 2 + ) draw_label(display_frame, label, (x, y), color=bb_color, padding=5) return display_frame @@ -594,6 +1220,10 @@ def test_rendering_worker(queue, display_size, out_path, target_fps): ffmpeg_cmd = [ "ffmpeg", "-y", + "-probesize", + "32", + "-analyzeduration", + "0", "-f", "rawvideo", "-pix_fmt", @@ -629,7 +1259,7 @@ def test_rendering_worker(queue, display_size, out_path, target_fps): break display_frame, frameNum, metadata_or_bbs, class_list = item - display_frame = np.ascontiguousarray(display_frame) + # display_frame = np.ascontiguousarray(display_frame) scale_display_x = disp_w / 640 scale_display_y = disp_h / 640 @@ -674,6 +1304,7 @@ def __init__( self.is_rtsp = str(self.source).startswith("rtsp:/") self.active = True self.active_streams = active_streams + self.config = config configstr = "\n".join( [f"\t{k}: {v}" for k, v in config.__dict__.items() if not k.startswith("_")] @@ -682,8 +1313,9 @@ def __init__( self.loop = asyncio.get_event_loop() self.frame_ready_event = asyncio.Event() - self._is_stopped = False # 🛡️ Shutdown guard - self._stop_lock = threading.Lock() # 🔒 Local lock for this instance + # self.frame_ready_event = threading.Event() + self._is_stopped = False + self._stop_lock = threading.Lock() # Local lock for this instance self.mp_frame_ready_event = mp.Event() # From global @@ -745,6 +1377,9 @@ def setup_model(self, provided_model, force_export=False): model_w=self.resize_w, ) + if run_platform_name == "openvino": + self.model.predictor.args.embed = False + if not self.config.sf_enabled: self.model_warmup(self.frame_height, self.frame_width) else: @@ -756,18 +1391,6 @@ def setup_model(self, provided_model, force_export=False): # self.label_source.append(v) def initialize_variables(self): - # self.input_fps = self.reader.input_fps - # self.target_fps = self.reader.target_fps - # self.step_size = self.input_fps / self.target_fps - # self.frame_skip = self.reader.frame_skip - # self.max_frames_per_clip = self.reader.max_frames_per_clip - # self.frame_interval = self.reader.frame_interval - # self.frame_width = self.reader.frame_width - # self.frame_height = self.reader.frame_height - # self.numFrames = self.reader.numFrames - # self.duration_s = self.numFrames / self.input_fps - # self.expected_num_frames = int(self.duration_s * self.target_fps) - # self.get_frameWH() # 1. HARD GUARD: Capture reader values and ensure the connection is active self.input_fps = self.reader.input_fps self.target_fps = self.reader.target_fps @@ -808,9 +1431,13 @@ def initialize_variables(self): self.config.ROI_DISTANCE_THRESH_RATIO * self.frame_width, self.config.ROI_DISTANCE_THRESH_RATIO * self.frame_height, ) - self.dist_thresh_640 = max( - self.config.ROI_DISTANCE_THRESH_RATIO * self.resize_w, - self.config.ROI_DISTANCE_THRESH_RATIO * self.resize_h, + multiplier = 2.0 if self.device_input == "cpu" else 1.0 + self.dist_thresh_640 = ( + max( + self.config.ROI_DISTANCE_THRESH_RATIO * self.resize_w, + self.config.ROI_DISTANCE_THRESH_RATIO * self.resize_h, + ) + * multiplier ) # 0.05 * self.resize_w self.scales_tensor = torch.tensor( [self.scale_x, self.scale_y, self.scale_x, self.scale_y], @@ -838,10 +1465,10 @@ def initialize_variables(self): # self.video_writer = None self.ffmpeg_proc = None # Replaces cv2.VideoWriter completely # self.fourcc = cv2.VideoWriter_fourcc(*"mp4v") # avc1, mp4v - self.clip_id = 0 + # self.clip_id = 0 # self.clip_filename = "" self.clip_filename_pattern = f"{self.config.SHARED_OUTPUT}/{self.name}_%03d.mp4" - self.clip_key = f"{self.name}_000.mp4" + # self.clip_key = f"{self.name}_000.mp4" # self.tmp_file = "" self.frame_in_clip_count = 0 @@ -863,6 +1490,21 @@ def initialize_variables(self): self.pinned_matrices = [] self.pinned_tensors = [] + self.ingest_ring_depth = 4 + self.ingest_ring_idx = 0 + self.ingest_ring = [] + + for _ in range(self.ingest_ring_depth): + # Match the exact dimensions of the 8K reader output + mat = np.zeros((self.frame_height, self.frame_width, 3), dtype=np.uint8) + try: + cv2.cuda.registerPageLocked( + mat + ) # Page-lock for ultra-fast DMA transfers + except Exception: + pass + self.ingest_ring.append(mat) + # Pre-allocate a 4-slot ring buffer for raw 8K BGR frames self.ai_ring_depth = 4 self.ai_ring_idx = 0 @@ -873,16 +1515,18 @@ def initialize_variables(self): self.ai_shms = [] self.ai_shm_names = [] self.ai_pinned_tensors = [] # Explicit property initialization 🚀 - + init_timestamp = int(time.time_ns()) for i in range(self.ai_ring_depth): - name = f"shm_ai_640_{self.name}_{i}_{os.getpid()}" + name = f"shm_ai_640_{self.name}_{i}_{os.getpid()}_{init_timestamp}" try: # Attempt to attach to a lingering zombie segment old_shm = shared_memory.SharedMemory(name=name) old_shm.close() old_shm.unlink() # Permanently destroys the old OS block handle - main_app_logger.warning(f"Cleaned up residual zombie shared memory block: {name}") + main_app_logger.warning( + f"Cleaned up residual zombie shared memory block: {name}" + ) except FileNotFoundError: pass # Block doesn't exist, safe to proceed normal initialization @@ -973,24 +1617,30 @@ def setup_reader(self, target_fps, clip_duration): # TODO: Further investigate GPU path, bkgd subtraction sensitive to artifacts self.gpu_id = 0 + is_rtsp_stream = str(self.source).startswith( + ("rtsp://", "rtmp://", "http://", "https://") + ) + determined_queue_size = ( + 4 if is_rtsp_stream else 2 + ) # (0 if self.config.TEST_MODE else 2) if self.device_input == "cuda": # and not self.is_rtsp: - from include.readers import GPUHybridReader + from include.readers import GPUReader - self.reader = GPUHybridReader( + self.reader = GPUReader( source=self.source, target_fps=target_fps, clip_duration=clip_duration, - gpu_id=self.gpu_id, - queue_size=0 if self.config.TEST_MODE else 2, + gpu_id=0, # self.gpu_id, + queue_size=determined_queue_size, ) else: - from include.readers import CPUHybridReader + from include.readers import CPUReader - self.reader = CPUHybridReader( + self.reader = CPUReader( source=self.source, target_fps=target_fps, clip_duration=clip_duration, - queue_size=0 if self.config.TEST_MODE else 2, + queue_size=determined_queue_size, ) def prepare_pipeline(self): @@ -1001,6 +1651,41 @@ def prepare_pipeline(self): else: self.prepare_cpu_pipeline() + # AUTOMATED BACKSUB WARMUP GATE + # Priming the Gaussian mixture model before the pipeline loop kicks off + if getattr(self.config, "SMART_FILTERING_ENABLED", False): + video_source = getattr(self, "source", None) + if video_source and os.path.exists(video_source): + print(f"[INIT] Warming up background subtractor using: {video_source}") + warmup_cap = cv2.VideoCapture(video_source) + + # 20 to 30 frames are optimal to prime the baseline history grid + for _ in range(30): + ret, raw_frame = warmup_cap.read() + if not ret: + break + + # Downscale the warmup frames to match your active pipeline resolution rules + resized_warmup = cv2.resize( + raw_frame, + (self.resize_w, self.resize_h), + interpolation=cv2.INTER_NEAREST, + ) + + # Force a highly aggressive learning rate (e.g., 0.1) during initialization + # to lock down the background model quickly, avoiding delayed frame processing. + if self.device_input == "cuda": + # If you use a GPU-bound background subtractor + self.bgs_cuda.apply( + resized_warmup, learningRate=self.lr, stream=self.bgs_stream + ) + else: + # Standard CPU track fallback + self.bgs.apply(resized_warmup, learningRate=self.lr) + + warmup_cap.release() + print("[INIT] Background subtractor warm up complete. GMM initialized.") + def setup_threads(self): # Shared 10MB memory for display self.setup_shared_memory() @@ -1014,76 +1699,80 @@ def setup_threads(self): flush=True, ) + self.signal_queue = mp.Queue(maxsize=32) # 1) + self.render_queue = mp.Queue(maxsize=5) + # Producer: Handles acquisition and AI metadata logs + # self.process_thread = threading.Thread( + # target=self.run_realtime_inference, + # args=(self.config.sf_enabled,), + # daemon=True, + # ) self.process_thread = threading.Thread( - target=self.run_realtime_inference, - args=(self.config.sf_enabled,), + target=lambda: self.run_realtime_inference( + sf_enabled=self.config.sf_enabled + ), daemon=True, ) - self.signal_queue = mp.Queue(maxsize=1) - self.render_queue = mp.Queue(maxsize=5) - if self.config.TEST_MODE: test_dir = os.getenv( "TEST_SUITE_RENDER_DIR", str(Path(self.config.SHARED_OUTPUT)) ) os.makedirs(test_dir, exist_ok=True) + out_path = os.path.join(test_dir, f"{self.name}_detections_output.mp4") + self.output_path = out_path log_to_logger( f"[TEST MODE] Detection results saved to: {out_path}", level="info" ) - self.render_proc = threading.Thread( - target=test_rendering_worker, - args=( - self.render_queue, - (self.disp_w, self.disp_h), - out_path, - self.target_fps, - ), - daemon=True, + + self.async_writer = AsyncVideoWriter( + self.output_path, + cv2.VideoWriter_fourcc(*"avc1"), # avc1, mp4v + float(self.target_fps), + (self.disp_w, self.disp_h), ) + # self.render_proc = threading.Thread( + # target=test_rendering_worker, + # args=( + # self.render_queue, + # (self.disp_w, self.disp_h), + # out_path, + # self.target_fps, + # ), + # daemon=True, + # ) + # Dummy target alignment to prevent execution signature exceptions + self.render_proc = threading.Thread(target=lambda: None, daemon=True) self.display_proc = threading.Thread(target=lambda: None, daemon=True) else: - self.render_proc = mp.Process( - target=rendering_worker, - args=( - self.render_queue, - self.shared_details, - self.ready_buffer_idx, - self.reader_active_idx, - self.shm_frame_lengths, - self.signal_queue, - (self.disp_w, self.disp_h), - self.config.DISPLAY_FRAME_QUALITY, - ), + self.async_writer = AsyncDisplayVideoWriter( + float(self.target_fps), + (self.disp_w, self.disp_h), + quality=int(self.config.DISPLAY_FRAME_QUALITY), ) + self.async_writer.set_handler_context(self) + # self.async_writer.start_worker() + try: + self.loop = asyncio.get_running_loop() + except RuntimeError: + try: + self.loop = asyncio.get_event_loop() + except RuntimeError: + self.loop = None # Headless fallback context - def display_signal_sync(): - while self.active: - # Wait for signal - # if self.mp_frame_ready_event.wait(timeout=1.0): - # self.mp_frame_ready_event.clear() - try: - _ = self.signal_queue.get(timeout=1.0) - # print(f"[DEBUG]: Signal received in FastAPI process for {self.name}", flush=True) - # Wake FastAPI async loop in main thread - self.loop.call_soon_threadsafe(self.frame_ready_event.set) - except queue.Empty: - continue - - self.display_proc = threading.Thread( - target=display_signal_sync, daemon=True - ) + self.render_proc = threading.Thread(target=lambda: None, daemon=True) + self.display_proc = threading.Thread(target=lambda: None, daemon=True) if self.config.ENABLE_QUERYING: # NEW: Dedicated I/O pool for Disk/GPU transfers (Higher worker count for 8K) - self.io_executor = ThreadPoolExecutor(max_workers=8) + # self.io_executor = ThreadPoolExecutor(max_workers=8) # Dedicated FFmpeg pool so re-encoding doesn't slow down live AI - self.ffmpeg_executor = ThreadPoolExecutor(max_workers=2) + # self.ffmpeg_executor = ThreadPoolExecutor(max_workers=2) if not self.config.TEST_MODE: # Sends metadata to VDMS @@ -1121,10 +1810,14 @@ def setup_shared_memory(self): self.ready_buffer_idx = mp.Value("i", 0) self.reader_active_idx = mp.Value("i", -1) self.shm_frame_lengths = mp.Array("i", [0 for _ in range(num_shms)]) + self.mp_last_id = mp.Value("i", -1) + self.mp_frame_ready_flag = mp.Value("b", False) + + display_timestamp = int(time.time_ns()) for idx in range(num_shms): # self.shm = mp.shared_memory.SharedMemory(create=True, size=10*1024*1024) - shm_name = f"shm_{self.name}_{idx}_{os.getpid()}" + shm_name = f"shm_{self.name}_{idx}_{os.getpid()}_{display_timestamp}" # print(f"[DEBUG]: Setting up SHM {shm_name}", flush=True) try: shm = mp.shared_memory.SharedMemory( @@ -1139,6 +1832,9 @@ def setup_shared_memory(self): self.shms.append(shm) shm_names.append(shm_name) + self.signal_queue = self.manager.Queue(maxsize=32) + self.render_queue = self.manager.Queue(maxsize=5) + self.shared_details = self.manager.dict() self.shared_details["shm_names"] = shm_names # self.shared_details["buffer_idx"] = 0 @@ -1157,11 +1853,6 @@ def start(self): # Start the hardware-decoupled reader first self.reader.start() - if not self.config.DISABLE_DETECTION: - self.render_proc.start() - - self.display_proc.start() - if self.config.ENABLE_QUERYING: self._initialize_writer() @@ -1172,6 +1863,26 @@ def start(self): if hasattr(self, "process_thread") and not self.process_thread.is_alive(): self.process_thread.start() + # If running on the CPU track, block the main test thread briefly until the CPU + # has successfully populated the first few frames into the render queue. + # This completely prevents the FFmpeg rendering worker from starving and skipping + # the initial 3-4 seconds of video. + # if getattr(self, "device_input", "cpu") == "cpu": + # print("[INIT] Waiting for CPU to prime the render queue...") + # timeout_counter = 0 + # # Wait until at least 5 frames are buffered in the queue or 10 seconds pass + # while self.render_queue.qsize() < 5 and timeout_counter < 100: + # time.sleep(0.1) + # timeout_counter += 1 + # print( + # f"[INIT] Render queue primed with {self.render_queue.qsize()} frames. Launching worker." + # ) + + if not self.config.DISABLE_DETECTION: + self.render_proc.start() + + self.display_proc.start() + if ( self.config.ENABLE_QUERYING and not self.config.TEST_MODE @@ -1184,264 +1895,537 @@ def start(self): return self - def stop(self): - """ - Comprehensive resource release. Safely drains the frame pipelines, - forces a graceful FFmpeg flush to prevent 'moov atom' index corruption, - and cleanly unlinks shared memory layers. - """ - with self._stop_lock: - if self._is_stopped: - return # Already stopped by another thread + # def stopv1(self): + # """ + # Comprehensive resource release. Safely drains the frame pipelines, + # forces a graceful FFmpeg flush to prevent 'moov atom' index corruption, + # and cleanly unlinks shared memory layers. + # """ + # with self._stop_lock: + # if self._is_stopped: + # return # Already stopped by another thread + + # # 1. Instantly pull out of active dashboards to stop inbound traffic + # if self.name in self.active_streams: + # self.active_streams.pop(self.name, None) + + # self.active = False + # print( + # f"[STOP] Initiating graceful flush shutdown for {self.name}", + # flush=True, + # ) - # 1. Instantly pull out of active dashboards to stop inbound traffic - if self.name in self.active_streams: - self.active_streams.pop(self.name, None) + # # 2. Trigger your event handler flags + # if hasattr(self, "stop_writer") and self.stop_writer is not None: + # try: + # self.stop_writer.set() + # except Exception: + # pass + + # # 3. PHASE 1: UNBLOCK CONSUMER CORES (Poison Pill Deliveries First) + # if hasattr(self, "write_queue") and self.write_queue is not None: + # try: + # # Clear out pending frame backlogs to speed up shutdown execution + # while not self.write_queue.empty(): + # try: + # self.write_queue.get_nowait() + # except Exception: + # break + # # Dispatch clean poison pill token to release the consumer thread + # self.write_queue.put(None) + # except Exception: + # pass + + # # if hasattr(self, "render_queue") and self.render_queue is not None: + # # try: + # # # while not self.render_queue.empty(): + # # # try: + # # # self.render_queue.get_nowait() + # # # except Exception: + # # # break + # # # self.render_queue.put_nowait(None) + # # while not self.render_queue.empty(): + # # time.sleep( + # # 0.01 + # # ) # Give the disk writer room to catch up cleanly + + # # # Deliver the poison pill token ONLY after the queue is empty + # # self.render_queue.put(None, timeout=2.0) + # # except Exception: + # # pass + + # if hasattr(self, "render_queue") and self.render_queue is not None: + # try: + # # --- THE DEFINITIVE UNBLOCKING FIX --- + # # Drop any lingering items aggressively instead of sleeping infinitely + # # on an empty queue check that never clears. + # while not self.render_queue.empty(): + # try: + # self.render_queue.get_nowait() + # except Exception: + # break + + # # Immediately push the poison pill sentinel to terminate the worker safely + # self.render_queue.put_nowait(None) + # except Exception: + # pass + + # # 4. PHASE 2: GRACEFUL FFmpeg DEFLATION GATE (Bypasses Moov Issues) + # if hasattr(self, "ffmpeg_proc") and self.ffmpeg_proc is not None: + # try: + # print( + # "[STOP] Closing video pipeline write handles to flush metadata...", + # flush=True, + # ) + # if self.ffmpeg_proc.stdin: + # self.ffmpeg_proc.stdin.close() # Safely alerts FFmpeg to finalize files - self.active = False - print( - f"[STOP] Initiating graceful flush shutdown for {self.name}", + # if self.ffmpeg_proc.stderr: + # self.ffmpeg_proc.stderr.close() # Instantly forces readline() to return None and exits thread safely + + # # Grant a soft 5-second window for storage layer disk synchronization + # self.ffmpeg_proc.wait(timeout=5.0) + # print( + # " [STOP] FFmpeg closed cleanly with valid indexing atoms.", + # flush=True, + # ) + # except subprocess.TimeoutExpired: + # print( + # " [STOP-WARN] Video flush timed out. Forcing hard termination.", + # flush=True, + # ) + # try: + # self.ffmpeg_proc.kill() + # except Exception: + # pass + # except Exception as io_err: + # print( + # f" [STOP-WARN] Error during streaming flush: {io_err}", + # flush=True, + # ) + # finally: + # self.ffmpeg_proc = None + # self.video_writer = None + + # # 5. PHASE 3: SHUTDOWN MULTIPROCESSING DAEMONS + # for proc_attr in ["render_proc", "ai_proc"]: + # proc = getattr(self, proc_attr, None) + # if proc is not None: + # try: + # if proc.is_alive(): + # proc.terminate() + # proc.join(timeout=0.5) + # proc.close() + # except Exception: + # pass + # setattr(self, proc_attr, None) + + # # 6. PHASE 4: FINAL SEGMENT EVALUATION CONVERGENCE + # try: + # final_clip_key = f"{self.name}_{self.clip_id:03d}.mp4" + # final_clip_path = f"{self.config.SHARED_OUTPUT}/{final_clip_key}" + + # # Check if the final truncated or partial segment actually exists before dispatching + # if ( + # os.path.exists(final_clip_path) + # and os.path.getsize(final_clip_path) > 0 + # ): + # print( + # f" [STOP-FLUSH] Registering finalized terminal clip: {final_clip_key}", + # flush=True, + # ) + # global clip_completion_tracker + # if final_clip_key not in clip_completion_tracker: + # clip_completion_tracker[final_clip_key] = { + # "video": False, + # "meta": False, + # "start_time": time.time(), + # } + + # clip_completion_tracker[final_clip_key]["video"] = True + # clip_completion_tracker[final_clip_key]["meta"] = True + # self._evaluate_barrier_and_dispatch( + # final_clip_key, final_clip_path, self.resize_w, self.resize_h + # ) + # except Exception as final_flush_err: + # print( + # f" [STOP-WARN] Final segment tracking layer bypass failed: {final_flush_err}", + # flush=True, + # ) + + # # 8. PHASE 6: UNMAP HARDWARE MEMORY OBJECTS + # if hasattr(self, "shared_details"): + # try: + # # Force-close the internal lock primitive hidden inside the Manager dict proxy + # if hasattr(self.shared_details, "_ctx") and hasattr( + # self.shared_details._ctx, "RLock" + # ): + # lock = self.shared_details._ctx.RLock() + # if hasattr(lock, "_semlock"): + # lock._semlock._close() + # self.shared_details.clear() + # except Exception: + # pass + # del self.shared_details + + # if ( + # hasattr(self, "mp_frame_ready_event") + # and self.mp_frame_ready_event is not None + # ): + # try: + # # mp.Event allocates an internal ctx.Cond / ctx.Lock boundary pair + # if hasattr(self.mp_frame_ready_event, "_cond"): + # cond = self.mp_frame_ready_event._cond + # if hasattr(cond, "_lock") and hasattr(cond._lock, "_semlock"): + # cond._lock._semlock._close() + # except Exception: + # pass + # self.mp_frame_ready_event = None + + # for q_attr in ["signal_queue", "render_queue"]: + # if hasattr(self, q_attr): + # q = getattr(self, q_attr) + # if q is not None: + # try: + # # 1. Flush and break down standard background worker threads safely + # q.close() + # q.join_thread() + + # # 2. CRITICAL: Force-close the hidden POSIX lock primitives to clear resource_tracker limits + # if hasattr(q, "_rlock") and q._rlock is not None: + # if hasattr(q._rlock, "_semlock"): + # q._rlock._semlock._close() + + # if hasattr(q, "_writer") and q._writer is not None: + # if hasattr(q._writer, "_semlock"): + # q._writer._semlock._close() + # except Exception: + # pass + # setattr(self, q_attr, None) + + # for primitive_attr in [ + # "ready_buffer_idx", + # "reader_active_idx", + # "shm_frame_lengths", + # ]: + # if hasattr(self, primitive_attr): + # obj = getattr(self, primitive_attr) + # if obj is not None and hasattr(obj, "get_lock"): + # try: + # # Grab the hidden lower-level POSIX context lock map + # lock = obj.get_lock() + # # If the lock handle is bound to an active system descriptor, release it + # if hasattr(lock, "_semlock"): + # lock._semlock._close() # Forces immediate unlinking at the OS level + # except Exception: + # pass + # setattr(self, primitive_attr, None) + + # if hasattr(self, "manager") and self.manager is not None: + # try: + # self.manager.shutdown() + # except Exception: + # pass + # self.manager = None + + # if hasattr(self, "pinned_matrices") and self.pinned_matrices: + # for active_mat in self.pinned_matrices: + # try: + # cv2.cuda.unregisterPageLocked(active_mat) + # except Exception: + # pass + # self.pinned_matrices.clear() + # self.pinned_tensors.clear() + + # # FIXED: Explicitly clear the high-speed AI tensor staging array allocations + # if hasattr(self, "ai_pinned_tensors") and self.ai_pinned_tensors: + # self.ai_pinned_tensors.clear() + + # if hasattr(self, "ai_shms") and self.ai_shms: + # for shm in self.ai_shms: + # try: + # shm.close() + # shm.unlink() + # except Exception: + # pass + # self.ai_shms.clear() + # if hasattr(self, "ai_shm_names") and self.ai_shm_names: + # self.ai_shm_names.clear() + + # if hasattr(self, "shms") and self.shms: + # for shm in self.shms: + # shm.close() + # try: + # shm.unlink() + # except FileNotFoundError: + # pass + # self.shms.clear() + # if ( + # hasattr(self, "shared_details") + # and "shm_names" in self.shared_details + # ): + # try: + # self.shared_details.pop("shm_names", None) + # except Exception: + # pass + + # if hasattr(self, "cap") and self.cap is not None: + # self.cap.release() + # self.cap = None + + # for pool_name in [ + # "executor", + # # "io_executor", + # "clip_executor", + # # "ffmpeg_executor", + # ]: + # if hasattr(self, pool_name) and getattr(self, pool_name) is not None: + # try: + # getattr(self, pool_name).shutdown(wait=True) + # except Exception: + # pass + # setattr(self, pool_name, None) + + # # self.reader = None + # self._is_stopped = True + # print(f" [STOP] {self.name} pipeline resources fully released.", flush=True) + + def stop(self): + """Overrides handlers.py to flush thread objects safely without deadlocking.""" + with self._stop_lock: + if self._is_stopped: + return + + print( + f"\n[PIPELINE-TEARDOWN] Initiating graceful thread drainage for {self.name}", flush=True, ) + self.active = False + time.sleep(0.05) - # 2. Trigger your event handler flags - if hasattr(self, "stop_writer") and self.stop_writer is not None: + # 1. Rapidly clear the async video writer thread queue first + if hasattr(self, "async_writer") and self.async_writer is not None: try: - self.stop_writer.set() + self.async_writer.release() except Exception: - pass + traceback.print_exc() - # 3. PHASE 1: UNBLOCK CONSUMER CORES (Poison Pill Deliveries First) - if hasattr(self, "write_queue") and self.write_queue is not None: - try: - # Clear out pending frame backlogs to speed up shutdown execution - while not self.write_queue.empty(): - try: - self.write_queue.get_nowait() - except Exception: - break - # Dispatch clean poison pill token to release the consumer thread - self.write_queue.put(None) - except Exception: - pass + # Instantly pull out of active dashboards to stop inbound traffic + if self.name in self.active_streams: + self.active_streams.pop(self.name, None) - if hasattr(self, "render_queue") and self.render_queue is not None: - try: - while not self.render_queue.empty(): - try: - self.render_queue.get_nowait() - except Exception: - break - self.render_queue.put_nowait(None) - except Exception: - pass + if not self.config.TEST_MODE: + if hasattr(self, "send_metadata_queue"): + local_send_metadata_queue = self.send_metadata_queue + else: + global send_metadata_queue + local_send_metadata_queue = send_metadata_queue + if local_send_metadata_queue is not None: + try: + # 1. Wait for any in-flight ThreadPoolExecutor inference workers + # to finish submitting final frame maps to all_metadata + if hasattr(self, "executor") and self.executor is not None: + while self.get_executor_backlog() > 0: + time.sleep(0.01) - # 4. PHASE 2: GRACEFUL FFmpeg DEFLATION GATE (Bypasses Moov Issues) - if hasattr(self, "ffmpeg_proc") and self.ffmpeg_proc is not None: + backlog_count = local_send_metadata_queue.qsize() + print( + f"[TEARDOWN] send_metadata_queue has {backlog_count} pending uploads. Delivering poison pill sentinel...", + flush=True, + ) + + # 2. Push the explicit sentinel None token to tell the consumer loop to close + local_send_metadata_queue.put(None) + + # 3. CRITICAL BRIDGING BLOCK: If the thread is active and alive, + # block the main process context to let it completely empty the queue + if ( + hasattr(self, "metadata_thread") + and self.metadata_thread is not None + ): + if self.metadata_thread.is_alive(): + # Force the main thread to join until the consumer hits the sentinel and exits + self.metadata_thread.join(timeout=2.0) + + if self.metadata_thread.is_alive(): + print( + "[TEARDOWN-WARN] Metadata database thread hung on socket lock. Bypassing safely to prevent deadlock.", + flush=True, + ) + else: + print( + "[TEARDOWN] Metadata database thread exited cleanly.", + flush=True, + ) + + except Exception as teardown_err: + print( + f"[TEARDOWN WARN] Metadata drainage exception: {teardown_err}", + flush=True, + ) + + # ===================================================================== + # DECUPLED MULTI-PROCESS TEARDOWN LIFECYCLE SEQUENCE + # ===================================================================== + # 1. FIRST: Drain and synchronize your thread pool tasks so EVERY frame drops into the IPC queue + if hasattr(self, "display_pool") and self.display_pool is not None: try: + if hasattr(self.display_pool, "_work_queue"): + backlog = self.display_pool._work_queue.qsize() + if backlog > 0: + print( + f"\n\033[94m[STAGE 1/4] Synchronizing display pool threads. Draining {backlog} background tasks...\033[0m", + flush=True, + ) + backlog_s = time.perf_counter() + while ( + self.display_pool._work_queue.qsize() > 0 + or len(self.reorder_staging_buffer) > 0 + ): + # Yield a brief slice to let worker threads complete downscaling + time.sleep(0.01) + backlog_e = time.perf_counter() - backlog_s + print(f"\t\033[94mTook {backlog_e} secs\033[0m", flush=True) print( - "[STOP] Closing video pipeline write handles to flush metadata...", + "\033[92m[SUCCESS] All background image transformations completed cleanly.\033[0m", flush=True, ) - if self.ffmpeg_proc.stdin: - self.ffmpeg_proc.stdin.close() # Safely alerts FFmpeg to finalize files - - if self.ffmpeg_proc.stderr: - self.ffmpeg_proc.stderr.close() # Instantly forces readline() to return None and exits thread safely + self.display_pool.shutdown(wait=True) + except Exception as e: + print( + f"[TEARDOWN ERROR] Thread pool synchronization failed: {e}", + flush=True, + ) + setattr(self, "display_pool", None) - # Grant a soft 5-second window for storage layer disk synchronization - self.ffmpeg_proc.wait(timeout=5.0) + # 1. FIRST: Instantly dispatch the shutdown token so the worker process knows to flush entries + if hasattr(self, "render_queue") and self.render_queue is not None: + try: print( - " [STOP] FFmpeg closed cleanly with valid indexing atoms.", + f"\n\033[94m[STAGE 1/3] Dispatching shutdown sentinel (None) to rendering process worker (Backlog: {self.render_queue.qsize()} frames)...\033[0m", flush=True, ) - except subprocess.TimeoutExpired: + # Delivering the poison pill immediately tells FFmpeg to drain remaining blocks sequentially + self.render_queue.put(None, timeout=2.0) + except Exception as queue_err: print( - " [STOP-WARN] Video flush timed out. Forcing hard termination.", + f"\033[91m[TEARDOWN ERROR] Failed staging shutdown token: {queue_err}\033[0m", flush=True, ) - try: - self.ffmpeg_proc.kill() - except Exception: - pass - except Exception as io_err: + + # 2. SECOND: Allow the background multiprocessing queue to empty outstanding items naturally + if hasattr(self, "render_queue") and self.render_queue is not None: + try: print( - f" [STOP-WARN] Error during streaming flush: {io_err}", + "\n\033[94m[STAGE 2/3] Finalizing file output. Draining remaining frames from IPC memory lane...\033[0m", flush=True, ) - finally: - self.ffmpeg_proc = None - self.video_writer = None + t_drain = time.perf_counter() + # Wait up to 15 seconds for the worker process to pull every remaining matrix out of the pipe + while ( + not self.render_queue.empty() + and (time.perf_counter() - t_drain) < 15.0 + ): + time.sleep( + 0.01 + ) # Micro-yield grants immediate execution priority to the background process core + except Exception: + pass - # 5. PHASE 3: SHUTDOWN MULTIPROCESSING DAEMONS - for proc_attr in ["render_proc", "ai_proc"]: - proc = getattr(self, proc_attr, None) - if proc is not None: - try: - if proc.is_alive(): - proc.terminate() - proc.join(timeout=0.5) - proc.close() - except Exception: - pass - setattr(self, proc_attr, None) + # 3. THIRD: Block the main thread safely and allow the detached process to finish disk I/O operations + if hasattr(self, "render_proc") and self.render_proc is not None: + try: + join_duration = 0.0 + if self.render_proc.is_alive(): + print( + "\033[94m[STAGE 2/2] Main thread blocking. Synchronizing hard drive file headers...\033[0m", + flush=True, + ) + t_join_start = time.perf_counter() + self.render_proc.join( + timeout=15.0 + ) # Safe timeout lets video containers finalize cleanly + join_duration = time.perf_counter() - t_join_start + else: + print( + "\033[94m[STAGE 2/2] Main thread clear...\033[0m", + flush=True, + ) - # 6. PHASE 4: FINAL SEGMENT EVALUATION CONVERGENCE - try: - final_clip_key = f"{self.name}_{self.clip_id:03d}.mp4" - final_clip_path = f"{self.config.SHARED_OUTPUT}/{final_clip_key}" + if self.render_proc.is_alive(): + print( + "\n\033[91m[CRITICAL STALL] Render worker process hung on disk write! Forcing termination...\033[0m", + flush=True, + ) + self.render_proc.terminate() + self.render_proc.join() + else: + print( + f"\033[92m[FINAL] Video compilation finished cleanly! Hard drive commit took {join_duration:.2f} seconds.\033[0m", + flush=True, + ) - # Check if the final truncated or partial segment actually exists before dispatching - if ( - os.path.exists(final_clip_path) - and os.path.getsize(final_clip_path) > 0 - ): + # self.render_proc.close() + except Exception as proc_err: print( - f" [STOP-FLUSH] Registering finalized terminal clip: {final_clip_key}", + f"\033[91m[TEARDOWN ERROR] Failed closing background process container: {proc_err}\033[0m", flush=True, ) - global clip_completion_tracker - if final_clip_key not in clip_completion_tracker: - clip_completion_tracker[final_clip_key] = { - "video": False, - "meta": False, - "start_time": time.time(), - } - - clip_completion_tracker[final_clip_key]["video"] = True - clip_completion_tracker[final_clip_key]["meta"] = True - self._evaluate_barrier_and_dispatch( - final_clip_key, final_clip_path, self.resize_w, self.resize_h - ) - except Exception as final_flush_err: - print( - f" [STOP-WARN] Final segment tracking layer bypass failed: {final_flush_err}", - flush=True, - ) + setattr(self, "render_proc", None) - # 8. PHASE 6: UNMAP HARDWARE MEMORY OBJECTS - if hasattr(self, "shared_details"): + render_proc_handle = getattr(self, "render_proc", None) + if render_proc_handle is not None: try: - # Force-close the internal lock primitive hidden inside the Manager dict proxy - if hasattr(self.shared_details, "_ctx") and hasattr( - self.shared_details._ctx, "RLock" - ): - lock = self.shared_details._ctx.RLock() - if hasattr(lock, "_semlock"): - lock._semlock._close() - self.shared_details.clear() - except Exception: - pass - del self.shared_details + # 1. Check if it is a Process vs Thread + if hasattr(render_proc_handle, "terminate"): + # Production/Multiprocessing fallback path + if render_proc_handle.is_alive(): + render_proc_handle.terminate() + render_proc_handle.join() + render_proc_handle.close() + else: + # Thread-Safe Path: Standard background threading handles + # do not require manual termination or descriptor closure hooks. + if render_proc_handle.is_alive(): + render_proc_handle.join(timeout=0.2) - if ( - hasattr(self, "mp_frame_ready_event") - and self.mp_frame_ready_event is not None - ): + print( + "\033[92m[SUCCESS] Background rendering thread container released cleanly.\033[0m", + flush=True, + ) + except Exception as e: + print( + f"[TEARDOWN WARN] Safely ignoring lingering thread reference handles: {e}", + flush=True, + ) + finally: + setattr(self, "render_proc", None) + + # 4. FOURTH: Clean up remaining pipeline executors and queues safely + if hasattr(self, "render_queue") and self.render_queue is not None: try: - # mp.Event allocates an internal ctx.Cond / ctx.Lock boundary pair - if hasattr(self.mp_frame_ready_event, "_cond"): - cond = self.mp_frame_ready_event._cond - if hasattr(cond, "_lock") and hasattr(cond._lock, "_semlock"): - cond._lock._semlock._close() + self.render_queue.close() + self.render_queue.cancel_join_thread() except Exception: pass - self.mp_frame_ready_event = None + setattr(self, "render_queue", None) - for q_attr in ["signal_queue", "render_queue"]: - if hasattr(self, q_attr): - q = getattr(self, q_attr) - if q is not None: - try: - # 1. Flush and break down standard background worker threads safely - q.close() - q.join_thread() - - # 2. CRITICAL: Force-close the hidden POSIX lock primitives to clear resource_tracker limits - if hasattr(q, "_rlock") and q._rlock is not None: - if hasattr(q._rlock, "_semlock"): - q._rlock._semlock._close() - - if hasattr(q, "_writer") and q._writer is not None: - if hasattr(q._writer, "_semlock"): - q._writer._semlock._close() - except Exception: - pass - setattr(self, q_attr, None) - - for primitive_attr in [ - "ready_buffer_idx", - "reader_active_idx", - "shm_frame_lengths", - ]: - if hasattr(self, primitive_attr): - obj = getattr(self, primitive_attr) - if obj is not None and hasattr(obj, "get_lock"): - try: - # Grab the hidden lower-level POSIX context lock map - lock = obj.get_lock() - # If the lock handle is bound to an active system descriptor, release it - if hasattr(lock, "_semlock"): - lock._semlock._close() # Forces immediate unlinking at the OS level - except Exception: - pass - setattr(self, primitive_attr, None) + # if hasattr(self, "async_writer") and self.async_writer is not None: + # self.async_writer.release() - if hasattr(self, "manager") and self.manager is not None: + if hasattr(self, "executor") and self.executor is not None: try: - self.manager.shutdown() + self.executor.shutdown(wait=True) except Exception: pass - self.manager = None + setattr(self, "executor", None) - if hasattr(self, "pinned_matrices") and self.pinned_matrices: - for active_mat in self.pinned_matrices: - try: - cv2.cuda.unregisterPageLocked(active_mat) - except Exception: - pass - self.pinned_matrices.clear() - self.pinned_tensors.clear() - - if hasattr(self, "ai_shms") and self.ai_shms: - for shm in self.ai_shms: - try: - shm.close() - shm.unlink() - except Exception: - pass - self.ai_shms.clear() - self.ai_shm_names.clear() - - if hasattr(self, "shms") and self.shms: - for shm in self.shms: - shm.close() - try: - shm.unlink() - except FileNotFoundError: - pass - self.shms.clear() - - if hasattr(self, "cap") and self.cap is not None: - self.cap.release() - self.cap = None - - for pool_name in [ - "executor", - "io_executor", - "clip_executor", - "ffmpeg_executor", - ]: - if hasattr(self, pool_name) and getattr(self, pool_name) is not None: - try: - getattr(self, pool_name).shutdown(wait=True) - except Exception: - pass - setattr(self, pool_name, None) - - self.reader = None + self.status = "DONE" self._is_stopped = True - print(f" [STOP] {self.name} pipeline resources fully released.", flush=True) + print( + "[TEST HARNESS] Teardown complete. Releasing session cleanly.\n", + flush=True, + ) def model_warmup(self, H=640, W=640): H, W = int(H), int(W) @@ -1459,22 +2443,45 @@ def model_warmup(self, H=640, W=640): device_input=self.device_input, stream=STREAM_ARG, ) + if i == 0 and hasattr(self.model, "predictor") and self.model.predictor: + self.cached_predictor = self.model.predictor # Force GPU to finish before returning if self.device_input == "cuda": torch.cuda.synchronize() + # Pin a lightweight tensor to prevent downstream empty_cache() calls + # from destroying the compiled model weight layouts in memory + self.__persistent_vram_lock = torch.zeros((1,), device=self.device_input) + print(f"Warmup complete for {self.name}", flush=True) def get_executor_backlog(self): """Returns the number of tasks currently waiting in the thread pool queue.""" # access the internal queue of the executor - return self.executor._work_queue.qsize() + # return self.executor._work_queue.qsize() + if getattr(self, "executor", None) is None: + return 0 + try: + # Handle standard ThreadPoolExecutor and custom queue wrappers cleanly + if hasattr(self.executor, "_work_queue"): + return self.executor._work_queue.qsize() + return 0 + except Exception: + return 0 def get_clip_executor_backlog(self): """Returns the number of tasks currently waiting in the thread pool queue.""" # access the internal queue of the clip_executor - return self.clip_executor._work_queue.qsize() + # return self.clip_executor._work_queue.qsize() + if getattr(self, "clip_executor", None) is None: + return 0 + try: + if hasattr(self.clip_executor, "_work_queue"): + return self.clip_executor._work_queue.qsize() + return 0 + except Exception: + return 0 def check_disk_usage(self, path, min_gb=0.5): """Returns True if there is at least min_gb available at path.""" @@ -1511,6 +2518,9 @@ def get_frameWH(self): self.scale_y = self.frame_height / self.config.MODEL_H def update_frame(self, stat_start_time): + if self.device_input == "cuda": + torch.cuda.synchronize() + self.stat_frame_count += 1 self.elapsed_display_time += time.perf_counter() - stat_start_time # if elapsed > 0.5: @@ -1581,136 +2591,59 @@ def run_model( # F.pad for 4D tensor (B, C, H, W) uses (left, right, top, bottom) frame = F.pad(frame, (0, pad_w, 0, pad_h), value=0) - results = self.model.predict( - frame, - imgsz=imgsz, - batch=batch, - device=device_input, - verbose=False, - stream=stream, - conf=self.config.DETECTION_THRESHOLD, - max_det=self.config.MAX_DETECTIONS, - rect=True, # False, # - ) - return results - - # def _encode_and_signal(self, data, frame_num): - # """Worker task for JPEG encoding. Optimized for zero-copy GPU transfers.""" - # if data is None: - # return - - # if isinstance(data, cv2.cuda.GpuMat): - # # GPU PATH: Use existing 8K GPU pointer. Resize on GPU (Instant) 🏎️ - # cv2.cuda.resize( - # data, - # (self.disp_w, self.disp_h), - # stream=self.encode_stream, - # dst=self.gpu_display_frame, - # ) - # # Only download the small (640x360) frame, not the 8K frame! - # display_frame = self.gpu_display_frame.download(self.encode_stream) - # else: - # # CPU PATH: Resize and force memory contiguity for faster encoding - # display_frame = cv2.resize( - # data, (self.disp_w, self.disp_h), interpolation=cv2.INTER_NEAREST - # ) - # display_frame = np.ascontiguousarray(display_frame) - - # # Drop quality to 35. This reduces the bytes FastAPI has to push to the browser. - # # success, buffer = cv2.imencode( - # # ".jpg", display_frame, [cv2.IMWRITE_JPEG_QUALITY, 35] - # # ) - - # # if success: - # # self.latest_processed_frame = buffer.tobytes() - # # self.last_delivered_frame_id = frame_num - # # self.last_heartbeat = time.time() - # # # Non-blocking signal to FastAPI - # # self.loop.call_soon_threadsafe(self.frame_ready_event.set) - - # # Run the high-overhead JPEG compression block within a non-blocking background thread worker - # def _async_compress_task(img_mat, f_idx): - # success, buffer = cv2.imencode(".jpg", img_mat, [cv2.IMWRITE_JPEG_QUALITY, 35]) - # if success and self.active: - # self.latest_processed_frame = buffer.tobytes() - # self.last_delivered_frame_id = f_idx - # self.last_heartbeat = time.time() - # # Safely wake up the FastAPI async loop on the main process thread - # self.loop.call_soon_threadsafe(self.frame_ready_event.set) - - # # Submit directly to your background I/O pool to unblock the inference stream - # self.io_executor.submit(_async_compress_task, display_frame, frame_num) - - def _encode_and_signal(self, data, frame_num): - """ - Asynchronously processes display outputs by offloading high-overhead - JPEG compression tasks directly onto the background I/O pool. - """ - if data is None: - return - - # Check the backlog of your I/O task queue to prevent memory leaks - if hasattr(self, "io_executor") and self.io_executor._work_queue.qsize() > 4: - return # Skip displaying this frame to preserve CPU performance + # with torch.inference_mode(): + # torch.set_num_threads(1) + # results = self.model.predict( + # frame, + # imgsz=imgsz, + # batch=batch, + # device=device_input, + # verbose=False, + # stream=stream, + # conf=self.config.DETECTION_THRESHOLD, + # max_det=self.config.MAX_DETECTIONS, + # rect=(batch == 1), # False, # + # ) + # return results + with torch.inference_mode(): + if device_input == "cpu": + # --- SAFE HIGH-SPEED FRAMEWORK INGESTION GATE --- + # If input is an NCHW PyTorch tensor or transposed array view, + # decode it back into a standard list of un-transposed [H, W, C] uint8 + # image frames before handing it over to the predictor engine. + if isinstance(frame, torch.Tensor): + # Convert NCHW tensor back to standard NHWC layout standard + np_frames = frame.detach().cpu().permute(0, 2, 3, 1).numpy() + # Rescale back to uint8 pixel range + np_frames = (np_frames * 255.0).astype(np.uint8) + # Unpack the batch array dimensions into a standard list of standalone images + # ingestion_source = [np.ascontiguousarray(img) for img in np_frames] + np_frames_aligned = np.copy(np_frames, order="C") + ingestion_source = list(np_frames_aligned) + else: + ingestion_source = frame + else: + ingestion_source = frame - def _async_render_and_compress(frame_data, f_num): - if isinstance(frame_data, cv2.cuda.GpuMat): - # GPU Path: Perform hardware-accelerated resizing inside VRAM - cv2.cuda.resize( - frame_data, - (self.disp_w, self.disp_h), - stream=self.encode_stream, - dst=self.gpu_display_frame, - ) - display_frame = self.gpu_display_frame.download(self.encode_stream) + if getattr(self, "cached_predictor", None) is not None: + results = self.cached_predictor(frame) else: - # CPU Path: Perform rapid array transformations - display_frame = cv2.resize( - frame_data, - (self.disp_w, self.disp_h), - interpolation=cv2.INTER_NEAREST, + # Execute prediction using the safe public API path. + # Passing raw standard [H, W, C] frame matrices handles all sigmoid bounding box + # decoders and confidence multipliers natively, correcting the top-left clumping bug. + results = self.model.predict( + ingestion_source, + imgsz=imgsz, + batch=batch, + device=device_input, + verbose=False, + stream=stream, + conf=self.config.DETECTION_THRESHOLD, + max_det=self.config.MAX_DETECTIONS, + rect=(batch == 1), + profile=False, # Disable interior torch.cuda.synchronize() gates completely! ) - - display_frame = np.ascontiguousarray(display_frame) - success, buffer = cv2.imencode( - ".jpg", display_frame, [cv2.IMWRITE_JPEG_QUALITY, 35] - ) - - if success and self.active: - self.latest_processed_frame = buffer.tobytes() - self.last_delivered_frame_id = f_num - self.last_heartbeat = time.time() - # Non-blocking signal to wake up the FastAPI event loop - self.loop.call_soon_threadsafe(self.frame_ready_event.set) - - # Offload the processing overhead entirely from the inference thread pool - self.io_executor.submit(_async_render_and_compress, data, frame_num) - - def update_ui_fallback(self, frame, frame_num): - # If backlog is very high, drop JPEG quality to 25 to clear the 'pause' faster - backlog = self.get_executor_backlog() - adaptive_quality = ( - 20 - if backlog > (self.dynamic_limit * 2) - else self.config.DISPLAY_FRAME_QUALITY - ) - - # FALLBACK: If AI is busy, worker thread encodes raw frame for the UI. - # This offloads the 40ms CPU cost from the main Producer loop. - display_frame = cv2.resize( - frame, (self.disp_w, self.disp_h), interpolation=cv2.INTER_NEAREST - ) - _, buffer = cv2.imencode( - ".jpg", display_frame, [cv2.IMWRITE_JPEG_QUALITY, adaptive_quality] - ) - - # print(f"DEFAULT DISP frameNum/last_frame_id {frame_num} self.last_delivered_frame_id: {self.last_delivered_frame_id}", flush=True) #\n\tframe_bytes: {frame_bytes}", flush=True) - self.latest_processed_frame = buffer.tobytes() - self.last_delivered_frame_id = frame_num - self.last_frame_id = frame_num - self.last_heartbeat = time.time() - # Signal the FastAPI generator that a new frame is ready - self.loop.call_soon_threadsafe(self.frame_ready_event.set) + return results def _check_shm_safety(self, threshold_percent=90): """ @@ -1747,111 +2680,6 @@ def _check_shm_safety(self, threshold_percent=90): except Exception as e: print(f"[EXCEPTION] Could not purge {clip}: {e}") - # def run_realtime_inference(self, sf_enabled): - # """Producer: Maintains the target FPS and updates clip IDs.""" - # # Calculate a dynamic limit: tolerate 0.5 seconds of lag. - # # If target_fps is 15, the limit is 7. If target_fps is 30, the limit is 15. - # self.dynamic_limit = max(2, int(0.5 * self.target_fps)) - # last_frame_time = time.perf_counter() - # while self.active: - # # --- FRAME RETRIEVAL --- - # try: - # device_frame, frame_num = self.reader.read() - # if device_frame is None: - # if self.reader.stopped: - # self.active = False - - # clip_filename = f"{self.config.SHARED_OUTPUT}/{self.name}_{self.clip_id:03d}.mp4" - # clip_key = Path(clip_filename).name - # global send_metadata_queue, all_metadata - # if clip_key in all_metadata: - # # Signal to process metadata for previous cli - # if ( - # "send_metadata_queue" in globals() - # or "send_metadata_queue" in locals() - # ): - # try: - # send_metadata_queue.put( - # (clip_filename, self.resize_w, self.resize_h) - # ) - # except Exception as queue_err: - # print( - # f"[CLIPPER-WARN] Metadata queue push skipped or unallocated: {queue_err}", - # flush=True, - # ) - # break - # continue - # except queue.Empty: - # if getattr(self.reader, "reconnect_failed", False): - # self.active = False - # break - # time.sleep(0.002) - # continue - - # # Keep 8K frame on GPU (Skip CPU conversion for non-target frames) - # # if self.device_input == "cuda" and not self.reader.is_h264_8k: - # # with torch.cuda.stream(self.ingest_stream): - # # device_frame = nv12_to_rgb_torch( - # # device_frame, self.frame_height, self.frame_width# , is_bgr=False - # # ) - # # self.ingest_stream.synchronize() - - # # if device_frame is not None: - # self.frame_count += 1 - # is_target_frame = float(frame_num) >= self.next_process_idx - - # # Determine if this frame should be AI or Raw based on backlog - # # But ALWAYS submit to the executor to maintain frame order. - # backlog = self.get_executor_backlog() - - # while backlog > 4 and self.active: - # time.sleep(0.005) - # backlog = self.get_executor_backlog() - - # def wrapped_fn(*args): - # if self.device_input == "cuda": - # with torch.cuda.stream(self.inference_stream): - # dev_frame, f_num, target_flag = args - # # FIX: Explicitly crop out any hardware padding columns horizontally - # # and rows vertically before forcing linear memory contiguity. - # if dev_frame.ndim >= 2: - # h_raw, w_raw = dev_frame.shape[-2:] - # if w_raw != self.frame_width or h_raw != self.frame_height: - # dev_frame = dev_frame[..., :self.frame_height, :self.frame_width] - - # isolated_frame = dev_frame.clone().contiguous() - # self.pipeline_fn(isolated_frame, f_num, target_flag) - # else: - # self.pipeline_fn(*args) - - # # Handoff to AI and Writer - # if self.active: - # self.executor.submit( - # # pipeline_fn, - # wrapped_fn, - # device_frame, - # frame_num, - # is_target_frame, - # ) - - # # --- PRECISE CLOCK SYNC --- - # # This prevents the producer from "lapping" the consumer - # # and building that jumpy backlog in the first place. - # elapsed = time.perf_counter() - last_frame_time - # if elapsed < self.frame_interval: - # # time.sleep(self.frame_interval - elapsed) - # # Subtract a small epsilon (0.001) for OS scheduling overhead - # # sleep_duration = self.frame_interval - elapsed - 0.0025 - # # if sleep_duration > 0.001: - # # time.sleep(sleep_duration) - # time.sleep(max(0, self.frame_interval - elapsed - 0.0015)) - # last_frame_time = time.perf_counter() - - # # self.update_frame() - # self.last_heartbeat = time.time() - - # self.stop() - def run_realtime_inference(self, sf_enabled): """Producer: Maintains the target FPS and updates clip IDs.""" # Calculate a dynamic limit: tolerate 0.5 seconds of lag. @@ -1859,37 +2687,122 @@ def run_realtime_inference(self, sf_enabled): self.dynamic_limit = max(2, int(0.5 * self.target_fps)) last_frame_time = time.perf_counter() while self.active: - # --- FRAME RETRIEVAL --- try: - device_frame, frame_num = self.reader.read() - if device_frame is None: - if self.reader is None or ( - hasattr(self.reader, "stopped") and self.reader.stopped - ): + # FRAME RETRIEVAL --------------------------------------------- + try: + ret, frame_8k, frame_num = self.reader.read() + if not ret or frame_8k is None: + print( + "[CLIPPER-TARGET] End of video file source detected. Initiating graceful shutdown.", + flush=True, + ) + # if self.reader is None or ( + # hasattr(self.reader, "stopped") and self.reader.stopped + # ): if self.device_input == "cuda": torch.cuda.synchronize() - self.active = False - clip_filename = f"{self.config.SHARED_OUTPUT}/{self.name}_{self.clip_id:03d}.mp4" - clip_key = Path(clip_filename).name - global send_metadata_queue, all_metadata - if clip_key in all_metadata: - # Signal to process metadata for previous cli - if ( - "send_metadata_queue" in globals() - or "send_metadata_queue" in locals() - ): - try: - send_metadata_queue.put( - (clip_filename, self.resize_w, self.resize_h) - ) - except Exception as queue_err: - print( - f"[CLIPPER-WARN] Metadata queue push skipped or unallocated: {queue_err}", - flush=True, - ) + if hasattr(self, "executor") and self.executor is not None: + while self.get_executor_backlog() > 0: + time.sleep(0.01) + + # Instead of only processing the active clip_id, loop through every clip + # listed in all_metadata to ensure nothing is dropped at shutdown. + global all_metadata, clip_completion_tracker + active_tracked_keys = list(all_metadata.keys()) + + for target_clip_key in active_tracked_keys: + # Reconstruct the explicit path structure for each target clip segment + target_clip_filename = ( + f"{self.config.SHARED_OUTPUT}/{target_clip_key}" + ) + + if target_clip_key not in clip_completion_tracker: + clip_completion_tracker[target_clip_key] = { + "video": False, + "meta": False, + "start_time": time.time(), + } + + # Mark tracking convergence fields to True concurrently + clip_completion_tracker[target_clip_key]["video"] = True + clip_completion_tracker[target_clip_key]["meta"] = True + + print( + f" [CLIPPER-TARGET] Finalizing terminal sync barrier for: {target_clip_key}", + flush=True, + ) + + # Safely delegate the queue pushing directly to your validation handler + self._evaluate_barrier_and_dispatch( + target_clip_key, + target_clip_filename, + self.resize_w, + self.resize_h, + ) + + # clip_id = (self.frame_count - 1) // self.max_frames_per_clip + # clip_filename = f"{self.config.SHARED_OUTPUT}/{self.name}_{clip_id:03d}.mp4" + # clip_key = Path(clip_filename).name + # global clip_completion_tracker + # if "clip_completion_tracker" in globals() or "clip_completion_tracker" in locals(): + # if clip_key not in clip_completion_tracker: + # clip_completion_tracker[clip_key] = { + # "video": False, + # "meta": False, + # "start_time": time.time(), + # } + # # Force both verification boundaries to True concurrently + # clip_completion_tracker[clip_key]["video"] = True + # clip_completion_tracker[clip_key]["meta"] = True + + # print( + # f" [BARRIER-SEAL] All metadata extracted for {clip_key}. Evaluating convergence...", + # flush=True, + # ) + # self._evaluate_barrier_and_dispatch( + # clip_key, + # clip_filename, + # self.resize_w, + # self.resize_h, + # ) + + # global send_metadata_queue, all_metadata + # if clip_key in all_metadata: + # # Signal to process metadata for previous cli + # if ( + # "send_metadata_queue" in globals() + # or "send_metadata_queue" in locals() + # ): + # try: + # send_metadata_queue.put( + # ( + # clip_filename, + # self.resize_w, + # self.resize_h, + # ) + # ) + # except Exception as queue_err: + # print( + # f"[CLIPPER-WARN] Metadata queue push skipped or unallocated: {queue_err}", + # flush=True, + # ) + + self.active = False + break + # continue + # if torch.is_tensor(device_frame): + # # Tell the main thread's stream to wait for the upload stream's completion + # torch.cuda.current_stream().wait_stream(self.reader.upload_stream) + except queue.Empty: + if getattr(self.reader, "reconnect_failed", False): + self.active = False break + time.sleep(0.002) continue + except Exception: + traceback.print_exc() + except queue.Empty: if getattr(self.reader, "reconnect_failed", False): self.active = False @@ -1897,23 +2810,31 @@ def run_realtime_inference(self, sf_enabled): time.sleep(0.002) continue - self.stat_start_time = time.perf_counter() # timing to display detection - - # Keep 8K frame on GPU (Skip CPU conversion for non-target frames) - # if self.device_input == "cuda" and not self.reader.is_h264_8k: - # with torch.cuda.stream(self.ingest_stream): - # device_frame = nv12_to_rgb_torch( - # device_frame, self.frame_height, self.frame_width# , is_bgr=False - # ) - # self.ingest_stream.synchronize() - - # if device_frame is not None: + calculated_clip_id = (frame_num - 1) // self.max_frames_per_clip + # self.clip_id = calculated_clip_id + # print(f"frame_num: {frame_num} calculated_clip_id: {calculated_clip_id}", flush=True) + stat_start_time = time.perf_counter() # timing to display detection self.frame_count += 1 - is_target_frame = float(frame_num) >= self.next_process_idx - # if not self.config.sf_enabled or abs(float(self.input_fps) - float(self.target_fps)) < 0.01: - # is_target_frame = True + self.frame_count_target += 1 + self.frame_in_clip_count += 1 + # is_target_frame = True # float(frame_num) >= self.next_process_idx + + # # Create a dedicated memory surface immediately on the Producer line. + # # This isolates the VRAM grid before the reader can overwrite it. + # if self.device_input == "cuda" and torch.is_tensor(device_frame): + # isolated_device_frame = device_frame.clone().contiguous() + # elif isinstance(device_frame, np.ndarray): + # # isolated_device_frame = device_frame.copy() + # # Zero-copy memory map assignment directly into the dedicated ingestion slot + # self.ingest_ring[self.ingest_ring_idx][:] = device_frame + # isolated_device_frame = self.ingest_ring[self.ingest_ring_idx] + + # # Safely step to the next slot in the ring buffer + # self.ingest_ring_idx = ( + # self.ingest_ring_idx + 1 + # ) % self.ingest_ring_depth # else: - # is_target_frame = float(frame_num) >= self.next_process_idx + # isolated_device_frame = device_frame # Determine if this frame should be AI or Raw based on backlog # But ALWAYS submit to the executor to maintain frame order. @@ -1926,47 +2847,57 @@ def run_realtime_inference(self, sf_enabled): def wrapped_fn(*args): if self.device_input == "cuda": # Ensure the worker thread switches to your targeted pipeline execution timeline - torch.cuda.set_stream(self.inference_stream) - dev_frame, f_num, target_flag, stat_start_time = args - isolated_device_frame = ( - dev_frame.clone() - if torch.is_tensor(dev_frame) - else dev_frame.copy() - ) - - self.pipeline_fn( - isolated_device_frame, f_num, target_flag, stat_start_time - ) + # torch.cuda.set_stream(self.inference_stream) + # dev_frame, f_num, target_flag, stat_start_time = args + dev_frame, f_num, start_time, clip_id = args + # isolated_device_frame = ( + # dev_frame.clone() + # if torch.is_tensor(dev_frame) + # else dev_frame.copy() + # ) + # isolated_device_frame = dev_frame + + with torch.cuda.stream(self.inference_stream): + self.pipeline_fn(dev_frame, f_num, start_time, clip_id) # Force a non-blocking device barrier to ensure operations have fully hit VRAM # before releasing the thread context - self.inference_stream.synchronize() + # self.inference_stream.synchronize() + # Force the device to catch up before dropping thread scope references + # self.inference_stream.synchronize() + + # Explicitly drop the variable frames from the localized stack frame + # if "isolated_device_frame" in locals(): + # del isolated_device_frame + # if "dev_frame" in locals(): + # del dev_frame else: - dev_frame, f_num, target_flag, stat_start_time = args - isolated_device_frame = ( - dev_frame.clone() - if torch.is_tensor(dev_frame) - else dev_frame.copy() - ) - self.pipeline_fn( - isolated_device_frame, f_num, target_flag, stat_start_time - ) - - if is_target_frame: # timing to display detection - self.next_process_idx += self.step_size - # Handoff to AI and Writer - # if self.active: - # Clone the tensor buffer immediately on the producer thread - # to prevent upstream overwrite races by the next reader iteration. - # isolated_device_frame = device_frame.clone() if torch.is_tensor(device_frame) else device_frame.copy() - self.executor.submit( - # pipeline_fn, - wrapped_fn, - device_frame, - frame_num, - is_target_frame, - self.stat_start_time, - ) + # dev_frame, f_num, target_flag, stat_start_time = args + dev_frame, f_num, start_time, clip_id = args + # isolated_device_frame = ( + # dev_frame.clone() + # if torch.is_tensor(dev_frame) + # else dev_frame.copy() + # ) + # isolated_device_frame = dev_frame + self.pipeline_fn(dev_frame, f_num, start_time, clip_id) + + # if is_target_frame: # timing to display detection + # self.next_process_idx += self.step_size + # Handoff to AI and Writer + # if self.active: + # Clone the tensor buffer immediately on the producer thread + # to prevent upstream overwrite races by the next reader iteration. + # isolated_device_frame = device_frame.clone() if torch.is_tensor(device_frame) else device_frame.copy() + self.executor.submit( + # pipeline_fn, + wrapped_fn, + frame_8k, + self.frame_count, + # is_target_frame, + stat_start_time, + calculated_clip_id, + ) # else: # # Process background execution context for skipped frames # self.pipeline_fn(device_frame, frame_num, is_target_frame) @@ -1986,7 +2917,7 @@ def wrapped_fn(*args): time.sleep(sleep_duration) last_frame_time = time.perf_counter() - # self.update_frame() + self.update_frame(stat_start_time) self.last_heartbeat = time.time() self.stop() @@ -2030,247 +2961,6 @@ def filter_contained_boxes(self, boxes, overlap_thresh=0.9): to_remove = (ioa > overlap_thresh) & larger_mask & ~diag return boxes[~to_remove.any(dim=1)] - # def get_detections( - # self, - # frame_raw, # BGR - # frameNum, # Added to metadata, should be frames in clip - # merged=None, - # thickness=2, - # device_input="cuda", - # ): - # metadata = {} - # try: - # # H, W = frame_raw.shape[:2] # Unpack once - # # FIX: Get H/W correctly for both Numpy [H, W, C] and Tensor [C, H, W] - # if torch.is_tensor(frame_raw): - # H, W = frame_raw.shape[-2:] # Gets last two dims - # else: - # H, W = frame_raw.shape[:2] - - # if merged is None: - # if torch.is_tensor(frame_raw): - # # Swap channels (-3 is the C dim) and normalize - # frame_input = ( - # # frame_raw.float() / 255.0 - # frame_raw.flip(-3).float() / 255.0 - # ) - # if frame_input.ndim == 3: - # frame_input = frame_input.unsqueeze(0) - # else: - # frame_input = frame_raw - - # # Run Inference (Keep stream=False as it is stable) - # results = self.run_model( - # frame_input, # Should be RGB - # imgsz=(H, W), - # batch=1, - # device_input=device_input, - # stream=False, - # ) - # else: - # cropped_batch = [] - # cropped_coords = [] - # # PREPARE CROPS (Path-specific Optimization) - # if device_input == "cuda" and torch.is_tensor(frame_raw): - # # GPU PATH: Zero-copy slicing + Hardware Interpolation - # for box in merged: - # x1, y1, x2, y2 = [int(val) for val in box] - # cropped_coords.append((x1, y1)) - # crop = frame_raw[:, y1:y2, x1:x2].unsqueeze(0) - # # crop_float = crop.float() / 255.0 - # crop_float = crop.flip(-3).float() / 255.0 - # # F.interpolate on A6000 handles 100+ crops in ~2ms - # crop_resized = F.interpolate( - # crop_float, - # size=(self.resize_h, self.resize_w), - # mode="bilinear", - # align_corners=False, - # ) - # cropped_batch.append(crop_resized.to(torch.half)) - - # # Consolidate into 4D Tensor for Parallel Hardware Batching - # input_data = ( - # torch.cat(cropped_batch, dim=0) if cropped_batch else None - # ) - # else: - # # CPU PATH: OpenCV Batching - # foi_cpu = ( - # frame_raw.permute(1, 2, 0).byte().cpu().numpy() - # if torch.is_tensor(frame_raw) - # else frame_raw - # ) - # for box in merged: - # x1, y1, x2, y2 = [int(val) for val in box] - # cropped_coords.append((x1, y1)) - # crop = foi_cpu[y1:y2, x1:x2] - # # Batching on CPU still needs resized inputs - # crop_resized = cv2.resize( - # crop, - # (self.resize_w, self.resize_h), - # interpolation=cv2.INTER_NEAREST, - # ) - # cropped_batch.append(crop_resized) - - # input_data = ( - # cropped_batch # List of arrays for OpenVINO/CPU batching - # ) - - # if cropped_batch == []: - # print("[DEBUG] Early exit: cropped_batch is empty", flush=True) - # return metadata, None - - # # if self.config.DEBUG_FLAG: - # # self.debug_save_crops(cropped_batch, frameNum) - - # # CHUNKED BATCH INFERENCE - # # Process in chunks of MODEL_MAX_BATCH_SIZE to stay within TensorRT/OpenVINO profile limits - # results = [] - # for i in range(0, len(input_data), self.config.MODEL_MAX_BATCH_SIZE): - # chunk = input_data[i : i + self.config.MODEL_MAX_BATCH_SIZE] - # chunk_results = self.run_model( - # chunk, # Should be RGB - # imgsz=(self.resize_h, self.resize_w), - # batch=len(chunk), - # device_input=device_input, - # stream=False, # stream=False is critical - # ) - # results.extend(list(chunk_results)) - - # # Process results and draw 8K-space overlays - # # Display scales for the final 640x640 stretched output - # num_objs = 0 - # scale_display_x = self.resize_w / W # 640 / 8192 - # scale_display_y = self.resize_h / H # 640 / 4608 - # for ridx, r in enumerate(list(results)): - # if r.boxes is None or len(r.boxes) == 0: - # continue - - # # Determine the ROI expansion ratio for this specific crop - # if merged is not None: - # x1_8k, y1_8k, x2_8k, y2_8k = merged[ridx] - # off_x, off_y = x1_8k, y1_8k - # # Ratio: How many 8K pixels does one inference pixel represent? - # roi_ratio_x = (x2_8k - x1_8k) / self.resize_w - # roi_ratio_y = (y2_8k - y1_8k) / self.resize_h - - # else: - # off_x, off_y = 0, 0 - # roi_ratio_x, roi_ratio_y = 1.0, 1.0 - - # # Move to CPU in one bulk operation per crop - # boxes = r.boxes.xyxy.cpu().numpy() - # clss = r.boxes.cls.cpu().numpy().astype(int) - # confs = r.boxes.conf.cpu().numpy() - - # for j in range(len(boxes)): - # num_objs += 1 - - # bx1, by1, bx2, by2 = boxes[j] - # # abs_x1, abs_y1 = off_x + bx1, off_y + by1 - # # abs_x2, abs_y2 = off_x + bx2, off_y + by2 - - # # # Map to absolute 8K pixels (Scale crop-coords to 8K then add offset) - # # abs_x1 = off_x + (bx1 * roi_ratio_x) - # # abs_y1 = off_y + (by1 * roi_ratio_y) - # # abs_x2 = off_x + (bx2 * roi_ratio_x) - # # abs_y2 = off_y + (by2 * roi_ratio_y) - - # # Map to absolute 8K pixels - # abs_x1 = off_x + (bx1 * roi_ratio_x) - # abs_y1 = off_y + (by1 * roi_ratio_y) - # abs_x2 = off_x + (bx2 * roi_ratio_x) - # abs_y2 = off_y + (by2 * roi_ratio_y) - - # # Map to 640x640 Display pixels (Apply the non-uniform stretch) - # # disp_x = int(abs_x1 * scale_display_x) - # # disp_y = int(abs_y1 * scale_display_y) - # # disp_w = int((abs_x2 - abs_x1) * scale_display_x) - # # disp_h = int((abs_y2 - abs_y1) * scale_display_y) - # disp_x = abs_x1 * scale_display_x - # disp_y = abs_y1 * scale_display_y - # disp_w = (abs_x2 - abs_x1) * scale_display_x - # disp_h = (abs_y2 - abs_y1) * scale_display_y - - # class_id = clss[j] - # class_name = self.label_source[class_id] - # confidence = confs[j] - - # if not self.config.OMIT_DETECTIONS_FLAG: - # timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S.%f")[:-3] - # print( - # # f"[OBJECT DETECTION] {class_name} detected in frame {frameNum} (Total detected: {current_cnt})", - # f"[{timestamp}] {self.name} DETECTION on Frame {frameNum}: {class_name} detected", - # flush=True, - # ) - - # # if not self.config.TEST_MODE: - # # bb_color = get_detection_color(class_id, is_bgr=True) - - # # foi = cv2.rectangle( - # # foi, - # # (abs_x1, abs_y1), - # # (abs_x2, abs_y2), - # # bb_color, - # # thickness, - # # ) - # # label = f"{class_name} {confidence:.2f}" - # # draw_label(foi, label, (abs_x1, abs_y1), color=bb_color, padding=5) - - # # height = min(abs_y2, H) - max(0, abs_y1) - # # width = min(abs_x2, W) - max(0, abs_x1) - - # # Resized - # object_res = [ - # int(disp_x), # int(abs_x1 * scale_x), - # int(disp_y), # int(abs_y1 * scale_y), - # int(disp_h), # int(height * scale_y), - # int(disp_w), # int(width * scale_x), - # class_name, - # confidence, - # int(self.resize_h), - # int(self.resize_w), - # ] - - # framenum_str = f"{frameNum:04d}_{j:04d}" - # # if self.config.DEBUG_FLAG: - # # meta_str = ",".join([str(o) for o in object_res + [framenum_str]]) - # # print(f"[{self.name} METADATA],{meta_str}", flush=True) - - # # Full Res - # metadata[framenum_str] = { - # "frameId": int(frameNum), - # "bbId": framenum_str, - # "bbox": { - # "x": int(object_res[0]), - # "y": int(object_res[1]), - # "height": int(object_res[2]), - # "width": int(object_res[3]), - # "object": str(object_res[4]), - # "object_det": { - # "confidence": float(object_res[5]), - # "frameH": int(object_res[6]), - # "frameW": int(object_res[7]), - # }, - # }, - # } - # except Exception as e: - # print(f"[GET_DETECTION] Exception: {e}\n{traceback.print_exc()}") - # num_objs = len(metadata.keys()) - - # if self.config.DEBUG_FLAG: - # log_to_logger(f"[DEBUG] get_detections returned {num_objs} detections", level="debug") - # return metadata, None - - # # # Queue frame for display (reduce quality for 8K bandwidth) - # # frame_bytes = get_display_frame_in_bytes( - # # foi, - # # display_size=(self.disp_w, self.disp_h), - # # quality=self.config.DISPLAY_FRAME_QUALITY, - # # return_bytes=True, - # # ) - - # # return metadata, frame_bytes - def get_gpu_rois_by_area(self, mask, max_candidates=100): # Extract true spatial constraints straight from the active mask object footprint if torch.is_tensor(mask): @@ -2312,6 +3002,30 @@ def get_gpu_rois_by_area(self, mask, max_candidates=100): else: raw_boxes = torch.as_tensor(boxes_gpu, device=self.device_input).float() + if raw_boxes is not None and len(raw_boxes) > 0: + PADDING_PX = 5 + # Assumes merged_boxes_tensor is a 2D tensor of shape [N, 4] containing [x1, y1, x2, y2] + # Create a matching subtraction/addition padding mask tensor + # Subtract from x1, y1 (indices 0, 1) and add to x2, y2 (indices 2, 3) + padding_mask = torch.tensor( + [-PADDING_PX, -PADDING_PX, PADDING_PX, PADDING_PX], + device=raw_boxes.device, + dtype=raw_boxes.dtype, + ) + + # Apply padding to all bounding boxes concurrently via broad-vector math + padded_tensor = raw_boxes + padding_mask + + # Guard rails: Clamp boundaries in-place to stay safely within the 8K master frame + # Indices 0 and 2 are X coordinates bounded by frame width; 1 and 3 are Y coordinates bounded by frame height + padded_tensor[:, 0].clamp_(min=0, max=self.resize_w) + padded_tensor[:, 1].clamp_(min=0, max=self.resize_h) + padded_tensor[:, 2].clamp_(min=0, max=self.resize_w) + padded_tensor[:, 3].clamp_(min=0, max=self.resize_h) + + # Re-assign back to your pipeline's tracking variable + raw_boxes = padded_tensor + # Vectorized Pre-Filter (Removes noise blobs before merging) w = raw_boxes[:, 2] - raw_boxes[:, 0] h = raw_boxes[:, 3] - raw_boxes[:, 1] @@ -2328,25 +3042,6 @@ def get_gpu_rois_by_area(self, mask, max_candidates=100): raw_boxes = raw_boxes[indices] return raw_boxes - # def get_gpu_rois(self, frame, frameNum, mask): - # raw_boxes = self.get_gpu_rois_by_area(mask) - - # if raw_boxes.shape[0] < 1: - # return torch.empty((0, 4), device=self.device_input) - - # if raw_boxes.shape[0] > 1: - # raw_boxes = merge_boxes_gpu(raw_boxes, gap_limit=self.dist_thresh_640) - - # clean_640p = self.filter_contained_boxes( - # raw_boxes, overlap_thresh=self.config.ROI_CONTAINMENT_THRESH - # ) - - # if clean_640p.shape[0] < 1: - # return torch.empty((0, 4), device=self.device_input) - - # # Scale to 8K space - # return clean_640p * self.scales_tensor - def get_cpu_rois(self, frame, frameNum, mask): contours, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) raw_boxes_xywh = [ @@ -2354,13 +3049,26 @@ def get_cpu_rois(self, frame, frameNum, mask): for c in contours if cv2.contourArea(c) > self.min_contour_area ] - raw_boxes = [[x, y, x + w, y + h] for x, y, w, h in raw_boxes_xywh] + + raw_boxes = [ + [ + max(0, int(x) - PADDING_PX), + max(0, int(y) - PADDING_PX), + min(self.resize_w, int(x + w) + PADDING_PX), + min(self.resize_h, int(y + h) + PADDING_PX), + ] + for x, y, w, h in raw_boxes_xywh + ] + # raw_boxes = [[x, y, x + w, y + h] for x, y, w, h in raw_boxes_xywh] if len(raw_boxes) < 1: return torch.empty((0, 4), device=self.device_input) if len(raw_boxes) > 1: - raw_boxes = merge_boxes_cpu(raw_boxes, gap_limit=self.dist_thresh_640) + limit_640 = (640 * 2.0) / self.scale_x + raw_boxes = merge_boxes_cpu( + raw_boxes, gap_limit=self.dist_thresh_640, size_limit=limit_640 + ) raw_boxes_640p = torch.tensor(raw_boxes, device=self.device_input).float() @@ -2389,6 +3097,7 @@ def get_detections( """ metadata = {} is_cuda = device_input == "cuda" + num_objs = 0 # ===================================================================== # 🚀 PATH 1: FULL RESOLUTION TRACK (sf_enabled = False) @@ -2421,7 +3130,7 @@ def get_detections( frame = frame.to( device_input, dtype=torch.float16, non_blocking=True ) - frame.div_(255.0) # Safe in-place float normalization + frame.mul_(1.0 / 255.0) # Safe in-place float normalization else: frame = frame.to(device_input, non_blocking=True) @@ -2482,6 +3191,7 @@ def get_detections( ] obj_id = len(metadata) + num_objs += 1 framenum_str = f"{frame_id:04d}_{obj_id:04d}" metadata[framenum_str] = { "frameId": int(frame_id), @@ -2499,174 +3209,22 @@ def get_detections( }, }, } + + if "boxes" in locals(): + del boxes + if "results" in locals(): + del results + del frame - return metadata, None + return metadata, num_objs - # ===================================================================== - # 📦 PATH 2: SMART FILTER ROIs TRACK (sf_enabled = True) - # ===================================================================== - # else: - # roi_patches = [] - # patch_coordinates = [] - # max_batch_size = getattr(self.config, "MODEL_MAX_BATCH_SIZE", 4) - - # # 1. Image Canvas Matrix Pre-processing Isolation Gauges - # if is_cuda and isinstance(frame, torch.Tensor): - # src_tensor = frame.squeeze(0) if frame.ndim == 4 else frame - # if src_tensor.shape[-1] == 3: - # src_tensor = src_tensor.permute(2, 0, 1) # Force [C, H, W] - # src_h, src_w = src_tensor.shape[-2:] - # else: - # # Host fallback tracking pointers - # src_tensor = np.asarray(frame) - # src_h, src_w = src_tensor.shape[:2] - - # # 2. Extract and Standarize Regions of Interest (ROIs) - # for box in merged: - # x1, y1, x2, y2 = map(int, box) - # x1, y1 = max(0, x1), max(0, y1) - # x2, y2 = min(src_w, x2), min(src_h, y2) - - # if (x2 - x1) < 8 or (y2 - y1) < 8: - # continue # Filter out noise slices - - # if is_cuda and isinstance(src_tensor, torch.Tensor): - # with torch.no_grad(): - # crop = src_tensor[:, y1:y2, x1:x2] - # # Bilinear scale interpolation pass on GPU hardware to achieve uniform dimensions - # if crop.shape[-2:] != (self.resize_h, self.resize_w): - # crop = F.interpolate( - # crop.unsqueeze(0).float(), - # size=(self.resize_h, self.resize_w), - # mode="bilinear", - # align_corners=False, - # ).squeeze(0) - # roi_patches.append(crop) - # else: - # # CPU Path: Crop and resize via OpenCV linear interpolation - # crop = src_tensor[y1:y2, x1:x2] - # if crop.shape[:2] != (self.resize_h, self.resize_w): - # crop = cv2.resize( - # crop, - # (self.resize_w, self.resize_h), - # interpolation=cv2.INTER_LINEAR, - # ) - # roi_patches.append(crop) - - # patch_coordinates.append((x1, y1, x2 - x1, y2 - y1)) - - # if not roi_patches: - # return metadata, None - - # # 3. Process Patches via Multi-Cam Inference Batch Factory - # results_pool = [] - # for i in range(0, len(roi_patches), max_batch_size): - # batch_slices = roi_patches[i : i + max_batch_size] - # current_batch_len = len(batch_slices) - - # if is_cuda and isinstance(batch_slices[0], torch.Tensor): - # with torch.inference_mode(): - # # Stack patches into a balanced [N, C, MODEL_H, MODEL_W] tensor matrix array - # inference_batch = torch.stack(batch_slices).to( - # device_input, dtype=torch.float16, non_blocking=True - # ) - # inference_batch.div_( - # 255.0 - # ) # Normalize directly in VRAM page boundaries - - # batch_res = self.run_model( - # inference_batch, - # imgsz=(self.resize_h, self.resize_w), - # batch=current_batch_len, - # device_input=device_input, - # stream=STREAM_ARG, - # ) - # results_pool.extend(batch_res) - # del inference_batch - # else: - # # CPU Path Processing Pass Stack - # with torch.inference_mode(): - # # Standardize NumPy array layouts into single host batch matrix block layouts - # np_batch = np.stack(batch_slices).astype(np.float32) / 255.0 - # inference_batch = ( - # torch.from_numpy(np_batch) - # .permute(0, 3, 1, 2) - # .to(device_input) - # ) - - # batch_res = self.run_model( - # inference_batch, - # imgsz=(self.resize_h, self.resize_w), - # batch=current_batch_len, - # device_input=device_input, - # stream=STREAM_ARG, - # ) - # results_pool.extend(batch_res) - # del inference_batch - - # # 4. Map Patch Bounding Boxes back onto the Global 8K Frame Coordinates Map - # scale_display_x = self.resize_w / self.frame_width # 640 / 8192 - # scale_display_y = self.resize_h / self.frame_height # 640 / 4608 - # for idx, res in enumerate(results_pool): - # ox, oy, o_width, o_height = patch_coordinates[idx] - # if res.boxes is not None: - # for b_box in res.boxes: - # lx1, ly1, lx2, ly2 = b_box.xyxy[0].cpu().tolist() - # cls_id = int(b_box.cls[0].cpu().item()) - # confidence = float(b_box.conf[0].cpu().item()) - # class_name = self.label_source[cls_id] - # # confidence = confs[j] - - # # Map relative coordinates proportionally to the original 8K ROI slice layout - # global_x1 = ox + (lx1 * (o_width / float(self.resize_w))) - # global_y1 = oy + (ly1 * (o_height / float(self.resize_h))) - # global_x2 = ox + (lx2 * (o_width / float(self.resize_w))) - # global_y2 = oy + (ly2 * (o_height / float(self.resize_h))) - # disp_x = global_x1 * scale_display_x - # disp_y = global_y1 * scale_display_y - # disp_w = (global_x2 - global_x1) * scale_display_x - # disp_h = (global_y2 - global_y1) * scale_display_y - - # if disp_w > 0 and disp_h > 0: - # # Resized - # object_res = [ - # int(disp_x), # int(abs_x1 * scale_x), - # int(disp_y), # int(abs_y1 * scale_y), - # int(disp_h), # int(height * scale_y), - # int(disp_w), # int(width * scale_x), - # class_name, - # confidence, - # int(self.resize_h), - # int(self.resize_w), - # ] - - # obj_id = len(metadata) - # framenum_str = f"{frame_id:04d}_{obj_id:04d}" - # metadata[framenum_str] = { - # "frameId": int(frame_id), - # "bbId": framenum_str, - # "bbox": { - # "x": int(object_res[0]), - # "y": int(object_res[1]), - # "height": int(object_res[2]), - # "width": int(object_res[3]), - # "object": str(object_res[4]), - # "object_det": { - # "confidence": float(object_res[5]), - # "frameH": int(object_res[6]), - # "frameW": int(object_res[7]), - # }, - # }, - # } - - # return metadata, None # ===================================================================== # PATH 2: SMART FILTER ROIs TRACK (sf_enabled = True) -> PADDED ASPECT PRESERVING 📦 # ===================================================================== else: roi_patches = [] patch_coordinates = [] - max_batch_size = getattr(self.config, "MODEL_MAX_BATCH_SIZE", 4) + max_batch_size = getattr(self.config, "MODEL_MAX_BATCH_SIZE", 64) # 1. Canvas Matrix Pre-processing Isolation if is_cuda and isinstance(frame, torch.Tensor): @@ -2732,11 +3290,13 @@ def get_detections( nw, nh = max(1, int(box_w * scale)), max(1, int(box_h * scale)) crop_resized = cv2.resize( - crop, (nw, nh), interpolation=cv2.INTER_LINEAR + crop, (nw, nh), interpolation=cv2.INTER_NEAREST ) # Center-pad the array block with zeros (black) - padded_canvas = np.zeros((th, tw, 3), dtype=np.uint8) + # padded_canvas = np.zeros((th, tw, 3), dtype=np.uint8) + padded_canvas = np.empty((th, tw, 3), dtype=np.uint8) + padded_canvas.fill(0) dx = (tw - nw) // 2 dy = (th - nh) // 2 padded_canvas[dy : dy + nh, dx : dx + nw] = crop_resized @@ -2746,7 +3306,7 @@ def get_detections( patch_coordinates.append((x1, y1, box_w, box_h, scale, dx, dy)) if not roi_patches: - return metadata, None + return {}, 0 # 3. Process Patches via Multi-Cam Inference Batch Factory results_pool = [] @@ -2760,7 +3320,7 @@ def get_detections( inference_batch = torch.stack(batch_slices).to( device_input, dtype=torch.float16, non_blocking=True ) - inference_batch.div_(255.0) # In-place GPU normalization + inference_batch.mul_(1.0 / 255.0) # In-place GPU normalization batch_res = self.run_model( inference_batch, @@ -2773,11 +3333,49 @@ def get_detections( del inference_batch else: with torch.inference_mode(): - np_batch = np.stack(batch_slices).astype(np.float32) / 255.0 - inference_batch = ( - torch.from_numpy(np_batch) - .permute(0, 3, 1, 2) - .to(device_input) + # np_batch = np.stack(batch_slices, dtype=np.float32) #.astype(np.float32) / 255.0 + # Pre-allocate the complete batch block surface memory up front: + th, tw = self.resize_h, self.resize_w + current_batch_len = len(batch_slices) + # np_batch = np.zeros((current_chunk_len, th, tw, 3), dtype=np.float32) + + # Stack the list of [H, W, C] patches into a 4D array [B, H, W, C] + np_batch_uint8 = np.stack(batch_slices) + + # Transpose from NHWC [B, H, W, C] to NCHW [B, C, H, W] natively in NumPy + np_batch_nchw = np.transpose(np_batch_uint8, (0, 3, 1, 2)) + + # Cast to float32 and normalize concurrently using contiguous memory layout + # np_batch_contiguous = np.ascontiguousarray(np_batch_nchw, dtype=np.float32) + # np_batch_contiguous *= (1.0 / 255.0) + + # 1. Stack the list of [H, W, C] patches into a 4D array [B, H, W, C] + np_batch_uint8 = np.stack(batch_slices) + + # 2. Transpose from NHWC [B, H, W, C] to NCHW [B, C, H, W] natively in NumPy + # np_batch_nchw = np.transpose(np_batch_uint8, (0, 3, 1, 2)) + + # # 3. Cast to float32 and normalize concurrently using an in-place pointer + # np_batch_float = np_batch_nchw.astype(np.float32) + # np_batch_float *= 1.0 / 255.0 + + # # --- CRITICAL MEMORY ALIGNMENT LOCK --- + # # Force the contiguous memory layer allocation AFTER all mathematical manipulations are complete. + # # This ensures the underlying C-memory arrays are perfectly packed and sequential, allowing + # # OpenVINO to run zero-copy pointer lookups and bypassing the 48.13ms serialization overhead. + # np_batch_aligned = np.ascontiguousarray(np_batch_float) + + # # 4. Expose the memory-aligned array directly to PyTorch as a host tensor view + # inference_batch = torch.from_numpy(np_batch_aligned).to( + # device_input + # ) + + np_batch_ready = np.ascontiguousarray(np_batch_uint8) + np_batch_nchw = np.transpose(np_batch_ready, (0, 3, 1, 2)) + np_batch_float = np_batch_nchw.astype(np.float32) + np_batch_float *= 1.0 / 255.0 + inference_batch = torch.from_numpy(np_batch_float).to( + device_input ) batch_res = self.run_model( @@ -2790,11 +3388,18 @@ def get_detections( results_pool.extend(batch_res) del inference_batch + # ===================================================================== + # UNIFIED STREAM BARRIER: Sync ONCE after all hardware tasks are queued + # ===================================================================== + if is_cuda and hasattr(self, "inference_stream"): + self.inference_stream.synchronize() + # 4. Map Patch Bounding Boxes back onto the Global 8K Frame Coordinates Map scale_display_x = tw / float(self.frame_width) scale_display_y = th / float(self.frame_height) for idx, res in enumerate(results_pool): + # Calculate the exact matching absolute global coordinate array slot index ox, oy, o_width, o_height, scale_f, pad_x, pad_y = patch_coordinates[ idx ] @@ -2838,6 +3443,7 @@ def get_detections( int(tw), ] obj_id = len(metadata) + num_objs += 1 framenum_str = f"{frame_id:04d}_{obj_id:04d}" metadata[framenum_str] = { "frameId": int(frame_id), @@ -2855,71 +3461,25 @@ def get_detections( }, }, } - return metadata, None - - # def get_gpu_rois_by_area(self, mask, max_candidates=25): #, limit_640=640*2): #max_candidates=100, limit_640=100): - # # Get raw boxes from mask (Direct VRAM bridge) - # boxes_gpu = find_contours_gpu_equivalent( - # mask, - # stream=self.bgs_stream, - # grid_size=32, - # limit_640=640*2, - # max_boxes=100, #250, - # ) # max_candidates) - - # if boxes_gpu is None or len(boxes_gpu) == 0: - # return torch.empty((0, 4), device=self.device_input) - - # # Wrap existing GPU memory as a float tensor (Zero Copy) - # raw_boxes = torch.as_tensor(boxes_gpu, device=self.device_input).float() - - # # Vectorized Pre-Filter (Removes noise blobs before merging) - # w = raw_boxes[:, 2] - raw_boxes[:, 0] - # h = raw_boxes[:, 3] - raw_boxes[:, 1] - # mask_filter = ( - # (w * h > self.min_contour_area) & (w < self.resize_w) & (h < self.resize_h) - # ) - # raw_boxes = raw_boxes[mask_filter] - - # # keep_idx = [] - # # for i in range(raw_boxes.shape[0]): - # # # 1. Convert to Python integers and calculate width/height - # # x1, y1, x2, y2 = [int(v.item()) for v in raw_boxes[i]] - # # w, h = x2 - x1, y2 - y1 - - # # if w <= 0 or h <= 0: - # # continue - - # # try: - # # # 2. Correct GpuMat ROI constructor: cv2.cuda.GpuMat(parent, (x, y, w, h)) - # # roi_mask = cv2.cuda.GpuMat(mask, (x1, y1, w, h)) - - # # # 3. Density check (white pixels / area) - # # # If density < 5%, it's likely the sparse terrain noise from your image - # # if (cv2.cuda.countNonZero(roi_mask) / (w * h)) > 0.01: - # # keep_idx.append(i) - # # except Exception: - # # # Skips boxes that might be slightly out of mask bounds - # # continue - - # # raw_boxes = raw_boxes[keep_idx] if keep_idx else torch.empty((0, 4), device=self.device_input) - - # # Prevents N^2 distance matrix from exploding during high noise - # if raw_boxes.shape[0] > max_candidates: - # # Prioritize the largest blobs (most likely to be drones) - # areas = (raw_boxes[:, 2] - raw_boxes[:, 0]) * ( - # raw_boxes[:, 3] - raw_boxes[:, 1] - # ) - # _, indices = torch.topk(areas, max_candidates) - # raw_boxes = raw_boxes[indices] - # return raw_boxes + + if "results_pool" in locals(): + del results_pool + if "roi_patches" in locals(): + roi_patches.clear() + del roi_patches + + del frame + del src_tensor + return metadata, num_objs def get_gpu_rois(self, frame, frameNum, mask): # If more than 20% of the screen is moving, don't bother with crops # if current_coverage > 0.6: # return torch.tensor([[0, 0, self.frame_width, self.frame_height]], device=self.device_input) - limit_640 = 640 * 2 # 40 # self.config.ROI_MERGE_SIZE_LIMIT / self.scale_x + limit_640 = ( + 640 * 2.0 + ) / self.scale_x # 40 # self.config.ROI_MERGE_SIZE_LIMIT / self.scale_x raw_boxes = self.get_gpu_rois_by_area( mask, max_candidates=50 ) # , limit_640=limit_640) @@ -2959,230 +3519,635 @@ def get_gpu_rois(self, frame, frameNum, mask): # # clean_640p[:, 2] += padding # # clean_640p[:, 3] += padding - # # 2. Re-merge the padded boxes (connects nearby drones into one clean crop) - # clean_640p = merge_boxes_gpu( - # clean_640p, - # gap_limit=self.dist_thresh_640, - # size_limit=limit_640, # self.config.ROI_MERGE_SIZE_LIMIT / self.scale_x, - # ) + # # 2. Re-merge the padded boxes (connects nearby drones into one clean crop) + # clean_640p = merge_boxes_gpu( + # clean_640p, + # gap_limit=self.dist_thresh_640, + # size_limit=limit_640, # self.config.ROI_MERGE_SIZE_LIMIT / self.scale_x, + # ) + + # # Scale to 8K and clamp + # clean_full = clean_640p * self.scales_tensor + # # clean_full[:, [0, 2]] = clean_full[:, [0, 2]].clamp(0, self.frame_width) + # # clean_full[:, [1, 3]] = clean_full[:, [1, 3]].clamp(0, self.frame_height) + # return clean_full + + xmin = clean_640p[:, 0] + ymin = clean_640p[:, 1] + # w = clean_640p[:, 2] + # h = clean_640p[:, 3] + # xmax = xmin + w + # ymax = ymin + h + xmax = clean_640p[:, 2] + ymax = clean_640p[:, 3] + + # Stack into standard format layout [xmin, ymin, xmax, ymax] + standard_boxes = torch.stack([xmin, ymin, xmax, ymax], dim=1) + + # 4. Scale to absolute 8K workspace dimensions accurately + return standard_boxes * self.scales_tensor + + def get_gpu_roisv2(self, frame, frameNum, mask): + # 1. MORPHOLOGICAL NOISE CLEANUP (Crucial for the hillside) + # Apply an in-place GPU Opening filter to dissolve the tiny white spots + # while keeping the larger, dense drone clusters perfectly intact. + if isinstance(mask, cv2.cuda.GpuMat): + # 3x3 or 5x5 Ellipse/Rect kernel eliminates high-frequency noise + kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3)) + morph_filter = cv2.cuda.createMorphologyFilter( + cv2.MORPH_OPEN, mask.type(), kernel + ) + clean_mask = morph_filter.apply(mask) + else: + kernel = np.ones((3, 3), np.uint8) + clean_mask = cv2.morphologyEx(mask, cv2.MORPH_OPEN, kernel) + + # 2. Extract raw candidate boxes using the clean mask matrix surface + limit_640 = (640 * 2.0) / self.scale_x + raw_boxes = self.get_gpu_rois_by_area( + clean_mask, max_candidates=100 + ) # Increased limit to 100 + + if raw_boxes.shape[0] < 1: + return torch.empty((0, 4), device=self.device_input) + + if raw_boxes.shape[0] > 1: + raw_boxes = merge_boxes_gpu( + raw_boxes, + gap_limit=self.dist_thresh_640, + size_limit=limit_640, + ) + + clean_640p = self.filter_contained_boxes( + raw_boxes, overlap_thresh=self.config.ROI_CONTAINMENT_THRESH + ) + + if clean_640p.shape[0] < 1: + return torch.empty((0, 4), device=self.device_input) + + # 3. CORRECT [X, Y, W, H] TO [X1, Y1, X2, y2] MATH + # Map the original width and height parameters back to endpoint coordinates + xmin = clean_640p[:, 0] + ymin = clean_640p[:, 1] + w = clean_640p[:, 2] + h = clean_640p[:, 3] + + xmax = xmin + w + ymax = ymin + h + + # Pack into full master coordinate system arrays + standard_boxes = torch.stack([xmin, ymin, xmax, ymax], dim=1) + + # 4. Project coordinates back to 8K master canvas space accurately + return standard_boxes * self.scales_tensor + + def get_gpu_roisv3(self, frame, frameNum, mask): + # 1. Extract raw candidate boxes from the mask (Already [x1, y1, x2, y2]) + limit_640 = (640 * 2.0) / self.scale_x + raw_boxes = self.get_gpu_rois_by_area(mask, max_candidates=50) + + if raw_boxes.shape[0] < 1: + return torch.empty((0, 4), device=self.device_input) + + # 2. Merge overlapping fragments directly on the GPU + if raw_boxes.shape[0] > 1: + raw_boxes = merge_boxes_gpu( + raw_boxes, + gap_limit=self.dist_thresh_640, + size_limit=limit_640, + ) + + # 3. Filter out containment or noise artifacts + clean_640p = self.filter_contained_boxes( + raw_boxes, overlap_thresh=self.config.ROI_CONTAINMENT_THRESH + ) + + if clean_640p.shape[0] < 1: + return torch.empty((0, 4), device=self.device_input) + + # 4. Direct 8K Space Scaling Matrix Multiplication + # Matches the clean CPU architecture on Page 31, Line 2050 + return clean_640p * self.scales_tensor + + def frame2video( + self, + device_frame, + frameNum, + metadata_or_bbs, + class_list, + # metrics, + ): + scale_display_x = self.disp_w / 640 + scale_display_y = self.disp_h / 640 + try: + if self.device_input == "cuda" and torch.is_tensor(device_frame): + # 2. Fast Inline VRAM Downscaling into our static memory slot + # Reshape to (Batch, Channel, Height, Width) seamlessly without duplicating data + gpu_tensor = device_frame[None, :].permute(0, 3, 1, 2).float() + + resized_tensor = torch.nn.functional.interpolate( + gpu_tensor, + size=(self.disp_h, self.disp_w), + mode="nearest", + ) + + # CONVERTS TO CPU EARLIER (WORKS but lowers fps) + # hwc_byte_tensor = resized_tensor.squeeze(0).permute(1, 2, 0).byte() + # cpu_tensor = hwc_byte_tensor.cpu() + # bgr_contiguous = cpu_tensor.contiguous() + + # Using copy_() avoids creating any runtime allocations or memory-stride drift. + self.static_gpu_byte_bchw.copy_(resized_tensor.byte()) + + # Safely reshape the pre-allocated, locked GPU memory layout back to standard HWC array topology. + # Since the underlying array layout is strictly contiguous, this permute is guaranteed + # to be zero-copy on the GPU and free from memory race stalls. + bgr_contiguous = self.static_gpu_byte_bchw.squeeze(0).permute(1, 2, 0) + + # 1. Grab the current free pinned slot tracking variables from your reader + d2h_idx = self.reader.d2h_selector + pinned_tensor_buf = self.reader.d2h_buffers[d2h_idx] + + # c_idx = self.canvas_selector + # current_canvas = self.static_host_canvases[c_idx] + + # host_tensor_view = torch.as_tensor(current_canvas, device="cpu") + + # 3. Non-blocking asynchronous PCIe DMA Download directly into our page-locked canvas + with torch.cuda.stream(self.reader.download_stream): + # pinned_tensor = torch.from_numpy(current_canvas).cuda() + pinned_tensor_buf.copy_(bgr_contiguous, non_blocking=True) + + # Synchronize only the side download stream layout channel + self.reader.download_stream.synchronize() + + cpu_360p_frame = self.reader.d2h_numpys[d2h_idx] + + # 5. Non-Blocking Push straight to your background AsyncVideoWriter thread pool + # We pass a direct .copy() slice so the hot loop can instantly reuse the pinned ring buffer + display_frame = np.array(cpu_360p_frame, copy=True, order="C") + + if display_frame is not None and display_frame.shape[-1] == 3: + display_frame = cv2.cvtColor(display_frame, cv2.COLOR_RGB2BGR) + + # --- Draw Detection Overlays --- + if isinstance(metadata_or_bbs, dict): + # Object Mode (YOLO Structs) + display_frame = get_metadata_overlay( + display_frame, + metadata_or_bbs, + class_list, + (scale_display_x, scale_display_y), + (self.disp_w, self.disp_h), + is_bgr=True, + ) + + elif metadata_or_bbs is not None: + # # Motion / Smart Filtering Overlay Path + display_frame = get_bb_overlay( + display_frame, + metadata_or_bbs, + (scale_display_x, scale_display_y), + (self.disp_w, self.disp_h), + ) + + self.async_writer.write_frame(display_frame) + # self.canvas_selector = 1 - self.canvas_selector + self.reader.d2h_selector = 1 - self.reader.d2h_selector + + else: + # Reusable baseline track for CPU execution mappings + display_frame = cv2.resize( + device_frame, + (self.disp_w, self.disp_h), + interpolation=cv2.INTER_NEAREST, + ) + # if metrics["bbs"] is not None: + # for box in metrics["bbs"]: + # cv2.rectangle(cpu_resized, (int(box[0]), int(box[1])), (int(box[2]), int(box[3])), (0, 255, 0), 2) + # --- Draw Detection Overlays --- + if isinstance(metadata_or_bbs, dict): + # Object Mode (YOLO Structs) + display_frame = get_metadata_overlay( + display_frame, + metadata_or_bbs, + class_list, + (scale_display_x, scale_display_y), + (self.disp_w, self.disp_h), + is_bgr=True, + ) + + elif metadata_or_bbs is not None: + # # Motion / Smart Filtering Overlay Path + display_frame = get_bb_overlay( + display_frame, + metadata_or_bbs, + (scale_display_x, scale_display_y), + (self.disp_w, self.disp_h), + ) + self.async_writer.write_frame(display_frame) + except Exception: + traceback.print_exc() + return + + def frame2output(self, device_frame, frame_num, metadata_or_bbs, class_list): + """ + Renders drone detection bounding boxes onto the canvas + before dispatching to the live UI shared memory stream. + """ + if not self.active: + return + scale_display_x = self.disp_w / 640 + scale_display_y = self.disp_h / 640 + try: + if self.device_input == "cuda" and torch.is_tensor(device_frame): + # 2. Fast Inline VRAM Downscaling into our static memory slot + # Reshape to (Batch, Channel, Height, Width) seamlessly without duplicating data + gpu_tensor = device_frame[None, :].permute(0, 3, 1, 2).float() + + resized_tensor = torch.nn.functional.interpolate( + gpu_tensor, + size=(self.disp_h, self.disp_w), + mode="nearest", + ) + + # CONVERTS TO CPU EARLIER (WORKS but lowers fps) + # hwc_byte_tensor = resized_tensor.squeeze(0).permute(1, 2, 0).byte() + # cpu_tensor = hwc_byte_tensor.cpu() + # bgr_contiguous = cpu_tensor.contiguous() + + # Using copy_() avoids creating any runtime allocations or memory-stride drift. + self.static_gpu_byte_bchw.copy_(resized_tensor.byte()) + + # Safely reshape the pre-allocated, locked GPU memory layout back to standard HWC array topology. + # Since the underlying array layout is strictly contiguous, this permute is guaranteed + # to be zero-copy on the GPU and free from memory race stalls. + bgr_contiguous = self.static_gpu_byte_bchw.squeeze(0).permute(1, 2, 0) + + # 1. Grab the current free pinned slot tracking variables from your reader + d2h_idx = self.reader.d2h_selector + pinned_tensor_buf = self.reader.d2h_buffers[d2h_idx] + + # c_idx = self.canvas_selector + # current_canvas = self.static_host_canvases[c_idx] + + # host_tensor_view = torch.as_tensor(current_canvas, device="cpu") + + # 3. Non-blocking asynchronous PCIe DMA Download directly into our page-locked canvas + with torch.cuda.stream(self.reader.download_stream): + # pinned_tensor = torch.from_numpy(current_canvas).cuda() + pinned_tensor_buf.copy_(bgr_contiguous, non_blocking=True) + + # Synchronize only the side download stream layout channel + self.reader.download_stream.synchronize() + + cpu_360p_frame = self.reader.d2h_numpys[d2h_idx] + + # 5. Non-Blocking Push straight to your background AsyncVideoWriter thread pool + # We pass a direct .copy() slice so the hot loop can instantly reuse the pinned ring buffer + display_frame = np.array(cpu_360p_frame, copy=True, order="C") + + if display_frame is not None and display_frame.shape[-1] == 3: + display_frame = cv2.cvtColor(display_frame, cv2.COLOR_RGB2BGR) + + # --- Draw Detection Overlays --- + if isinstance(metadata_or_bbs, dict): + # Object Mode (YOLO Structs) + display_frame = get_metadata_overlay( + display_frame, + metadata_or_bbs, + class_list, + (scale_display_x, scale_display_y), + (self.disp_w, self.disp_h), + is_bgr=True, + ) + + elif metadata_or_bbs is not None: + # # Motion / Smart Filtering Overlay Path + display_frame = get_bb_overlay( + display_frame, + metadata_or_bbs, + (scale_display_x, scale_display_y), + (self.disp_w, self.disp_h), + ) + + self.async_writer.write_frame(display_frame, frame_num) + # self.canvas_selector = 1 - self.canvas_selector + self.reader.d2h_selector = 1 - self.reader.d2h_selector + + else: + # Reusable baseline track for CPU execution mappings + display_frame = cv2.resize( + device_frame, + (self.disp_w, self.disp_h), + interpolation=cv2.INTER_NEAREST, + ) + # if metrics["bbs"] is not None: + # for box in metrics["bbs"]: + # cv2.rectangle(cpu_resized, (int(box[0]), int(box[1])), (int(box[2]), int(box[3])), (0, 255, 0), 2) + # --- Draw Detection Overlays --- + if isinstance(metadata_or_bbs, dict): + # Object Mode (YOLO Structs) + display_frame = get_metadata_overlay( + display_frame, + metadata_or_bbs, + class_list, + (scale_display_x, scale_display_y), + (self.disp_w, self.disp_h), + is_bgr=True, + ) + + elif metadata_or_bbs is not None: + # # Motion / Smart Filtering Overlay Path + display_frame = get_bb_overlay( + display_frame, + metadata_or_bbs, + (scale_display_x, scale_display_y), + (self.disp_w, self.disp_h), + ) + self.async_writer.write_frame(display_frame, frame_num) + except Exception: + traceback.print_exc() + # return + + def frame2outputv3(self, display_frame, frame_num, metadata=None, class_list=None): + """Processes and delivers operational live-mode matrices safely down to POSIX shared memory slots.""" + + # Ensure memory formats are fully detached from internal VRAM contexts + if hasattr(display_frame, "is_cuda") and display_frame.is_cuda: + display_frame = display_frame.cpu().numpy() + elif isinstance(display_frame, torch.Tensor): + display_frame = display_frame.detach().cpu().numpy() + + # 🔄 FIX: Invert colors from RGB to structural BGR layout to resolve the blue tint + try: + display_frame = cv2.cvtColor(display_frame, cv2.COLOR_RGB2BGR) + except Exception: + pass # Safety fallback guard if the tensor layout was already BGR format + + if hasattr(display_frame, "copy"): + clean_canvas = display_frame.copy() + else: + clean_canvas = np.ascontiguousarray(display_frame) + + if hasattr(self, "async_writer") and self.async_writer is not None: + self.async_writer.write_frame(clean_canvas, frame_num) + + def frame2outputv2( + self, + device_frame, + frameNum, + metadata_or_bbs, + class_list, + metrics, + ): + scale_display_x = self.disp_w / 640 + scale_display_y = self.disp_h / 640 + + if self.device_input == "cuda" and torch.is_tensor(device_frame): + # 2. Fast Inline VRAM Downscaling into our static memory slot + # Reshape to (Batch, Channel, Height, Width) seamlessly without duplicating data + gpu_tensor = device_frame[None, :].permute(0, 3, 1, 2).float() + + resized_tensor = torch.nn.functional.interpolate( + gpu_tensor, + size=(self.disp_h, self.disp_w), + mode="nearest", + ) + + # CONVERTS TO CPU EARLIER (WORKS but lowers fps) + # hwc_byte_tensor = resized_tensor.squeeze(0).permute(1, 2, 0).byte() + # cpu_tensor = hwc_byte_tensor.cpu() + # bgr_contiguous = cpu_tensor.contiguous() + + # Using copy_() avoids creating any runtime allocations or memory-stride drift. + self.static_gpu_byte_bchw.copy_(resized_tensor.byte()) + + # Safely reshape the pre-allocated, locked GPU memory layout back to standard HWC array topology. + # Since the underlying array layout is strictly contiguous, this permute is guaranteed + # to be zero-copy on the GPU and free from memory race stalls. + bgr_contiguous = self.static_gpu_byte_bchw.squeeze(0).permute(1, 2, 0) + + # 1. Grab the current free pinned slot tracking variables from your reader + d2h_idx = self.reader.d2h_selector + pinned_tensor_buf = self.reader.d2h_buffers[d2h_idx] + + # c_idx = self.canvas_selector + # current_canvas = self.static_host_canvases[c_idx] + + # host_tensor_view = torch.as_tensor(current_canvas, device="cpu") + + # 3. Non-blocking asynchronous PCIe DMA Download directly into our page-locked canvas + with torch.cuda.stream(self.reader.download_stream): + # pinned_tensor = torch.from_numpy(current_canvas).cuda() + pinned_tensor_buf.copy_(bgr_contiguous, non_blocking=True) + + # Synchronize only the side download stream layout channel + self.reader.download_stream.synchronize() + + cpu_360p_frame = self.reader.d2h_numpys[d2h_idx] + + # 5. Non-Blocking Push straight to your background AsyncVideoWriter thread pool + # We pass a direct .copy() slice so the hot loop can instantly reuse the pinned ring buffer + display_frame = np.array(cpu_360p_frame, copy=True, order="C") + + if display_frame is not None and display_frame.shape[-1] == 3: + display_frame = cv2.cvtColor(display_frame, cv2.COLOR_RGB2BGR) + + # --- Draw Detection Overlays --- + if isinstance(metadata_or_bbs, dict): + # Object Mode (YOLO Structs) + display_frame = get_metadata_overlay( + display_frame, + metadata_or_bbs, + class_list, + (scale_display_x, scale_display_y), + (self.disp_w, self.disp_h), + is_bgr=True, + ) + + elif metadata_or_bbs is not None: + # # Motion / Smart Filtering Overlay Path + display_frame = get_bb_overlay( + display_frame, + metadata_or_bbs, + (scale_display_x, scale_display_y), + (self.disp_w, self.disp_h), + ) + if hasattr(display_frame, "copy"): + clean_canvas = display_frame.copy() + else: + clean_canvas = np.ascontiguousarray(display_frame) + self.async_writer.write_frame(clean_canvas, frameNum) + # self.canvas_selector = 1 - self.canvas_selector + self.reader.d2h_selector = 1 - self.reader.d2h_selector + + else: + # Reusable baseline track for CPU execution mappings + display_frame = cv2.resize( + device_frame, + (self.disp_w, self.disp_h), + interpolation=cv2.INTER_NEAREST, + ) + # if metrics["bbs"] is not None: + # for box in metrics["bbs"]: + # cv2.rectangle(cpu_resized, (int(box[0]), int(box[1])), (int(box[2]), int(box[3])), (0, 255, 0), 2) + # --- Draw Detection Overlays --- + if isinstance(metadata_or_bbs, dict): + # Object Mode (YOLO Structs) + display_frame = get_metadata_overlay( + display_frame, + metadata_or_bbs, + class_list, + (scale_display_x, scale_display_y), + (self.disp_w, self.disp_h), + is_bgr=True, + ) + + elif metadata_or_bbs is not None: + # # Motion / Smart Filtering Overlay Path + display_frame = get_bb_overlay( + display_frame, + metadata_or_bbs, + (scale_display_x, scale_display_y), + (self.disp_w, self.disp_h), + ) + self.async_writer.write_frame(display_frame, frameNum) - # # Scale to 8K and clamp - # clean_full = clean_640p * self.scales_tensor - # # clean_full[:, [0, 2]] = clean_full[:, [0, 2]].clamp(0, self.frame_width) - # # clean_full[:, [1, 3]] = clean_full[:, [1, 3]].clamp(0, self.frame_height) - # return clean_full + return - xmin = clean_640p[:, 0] - ymin = clean_640p[:, 1] - w = clean_640p[:, 2] - h = clean_640p[:, 3] + def frame2outputv1( + self, + device_frame, + frameNum, + data_to_draw, + class_list, + ): + # scale_display_x = self.disp_w / 640 + # scale_display_y = self.disp_h / 640 - xmax = xmin + w - ymax = ymin + h + if self.device_input == "cuda" and torch.is_tensor(device_frame): + # 2. Fast Inline VRAM Downscaling into our static memory slot + # Reshape to (Batch, Channel, Height, Width) seamlessly without duplicating data + gpu_tensor = device_frame[None, :].permute(0, 3, 1, 2).float() - # Stack into standard format layout [xmin, ymin, xmax, ymax] - standard_boxes = torch.stack([xmin, ymin, xmax, ymax], dim=1) + resized_tensor = torch.nn.functional.interpolate( + gpu_tensor, + size=(self.disp_h, self.disp_w), + mode="nearest", + ) - # 4. Scale to absolute 8K workspace dimensions accurately - return standard_boxes * self.scales_tensor + # CONVERTS TO CPU EARLIER (WORKS but lowers fps) + # hwc_byte_tensor = resized_tensor.squeeze(0).permute(1, 2, 0).byte() + # cpu_tensor = hwc_byte_tensor.cpu() + # bgr_contiguous = cpu_tensor.contiguous() - # def pipeline_fn(self, device_frame, overall_frame_num, is_target_frame): - # # ─── LAZY CUDA STREAM INITIALIZATION FOR PROCESS ISOLATION ─── - # # Ensures streams are bound directly to the active executing process memory space - # if getattr(self, "device_input", "cpu") == "cuda": - # if not hasattr(self, "stream") or self.stream is None: - # self.stream = cv2.cuda.Stream() - # if not hasattr(self, "bgs_stream") or self.bgs_stream is None: - # self.bgs_stream = cv2.cuda.Stream() - # # ───────────────────────────────────────────────────────────── - - # global all_metadata - # current_clip_id = self.clip_id - # current_clip_key = f"{self.name}_{current_clip_id:03d}.mp4" - # current_clip_path = f"{self.config.SHARED_OUTPUT}/{current_clip_key}" - # # --- MOTION MASK GENERATION GATE --- - # if self.config.sf_enabled: - # if self.device_input == "cuda": - # inf_data = self.rbtd_full_gpu(device_frame) - # torch.cuda.current_stream().synchronize() - # if isinstance(inf_data, dict) and "mask" in inf_data: - # if torch.is_tensor(inf_data["mask"]): - # inf_data["mask"] = inf_data["mask"].contiguous() - # else: - # inf_data = self.rbtd_full_cpu(device_frame) - # else: - # inf_data = {} - - # # --- PIPELINE AT TARGET RATE --- - # if not is_target_frame: - # return - - # # if is_target_frame: - # self.next_process_idx += self.step_size - # self.frame_count_target += 1 # 1-indexed - # self.frame_in_clip_count += 1 - # inf_data["frameNum"] = self.frame_count_target - - # # --- CLIP GENERATION --- - # if self.config.ENABLE_QUERYING: - # if self.config.DEBUG_FLAG and ( - # self.frame_in_clip_count % 15 == 0 or self.frame_in_clip_count == 1 - # ): - # print( - # f"[CLIPPER] Frame progress tracking index: {self.frame_in_clip_count}/{self.max_frames_per_clip} (Overall Frame: {overall_frame_num})", - # flush=True, - # ) + # Using copy_() avoids creating any runtime allocations or memory-stride drift. + self.static_gpu_byte_bchw.copy_(resized_tensor.byte()) - # self.prep_frame_for_video(device_frame, overall_frame_num) + # Safely reshape the pre-allocated, locked GPU memory layout back to standard HWC array topology. + # Since the underlying array layout is strictly contiguous, this permute is guaranteed + # to be zero-copy on the GPU and free from memory race stalls. + bgr_contiguous = self.static_gpu_byte_bchw.squeeze(0).permute(1, 2, 0) - # if self.frame_in_clip_count > self.max_frames_per_clip: - # global clip_completion_tracker - # if current_clip_key not in clip_completion_tracker: - # clip_completion_tracker[current_clip_key] = { - # "video": False, - # "meta": False, - # "start_time": time.time(), - # } + # 1. Grab the current free pinned slot tracking variables from your reader + d2h_idx = self.reader.d2h_selector + pinned_tensor_buf = self.reader.d2h_buffers[d2h_idx] - # clip_completion_tracker[current_clip_key]["meta"] = True - # print( - # f" [BARRIER-SEAL] All metadata extracted for {current_clip_key}. Evaluating convergence...", - # flush=True, - # ) - # self._evaluate_barrier_and_dispatch( - # current_clip_key, - # current_clip_path, - # self.resize_w, - # self.resize_h, - # ) + # c_idx = self.canvas_selector + # current_canvas = self.static_host_canvases[c_idx] - # self.start_new_clip() - - # if not self.config.DISABLE_DETECTION: - # # --- FULL-RESOLUTION ROI EXTRACTION MAPS --- - # bbs_full_res = None - # if self.config.sf_enabled: - # if self.device_input == "cuda": - # bbs_full_res = self.get_gpu_rois( - # inf_data["full_frame"], - # self.frame_count_target, - # inf_data["mask"], - # ) - # else: - # bbs_full_res = self.get_cpu_rois( - # inf_data["full_frame"], - # self.frame_count_target, - # inf_data["mask"], - # ) + # host_tensor_view = torch.as_tensor(current_canvas, device="cpu") - # # Isolate raw coordinate matrices out of device graphs to prevent exit race conditions - # # clean_bbs = [] - # # if self.config.sf_enabled and bbs_full_res is not None: - # # if torch.is_tensor(bbs_full_res): - # # clean_bbs = bbs_full_res.detach().cpu().tolist() - # # elif isinstance(bbs_full_res, list): - # # clean_bbs = [ - # # b.detach().cpu().tolist() if torch.is_tensor(b) else b - # # for b in bbs_full_res - # # ] - # # else: - # # clean_bbs = bbs_full_res - # clean_bbs = [] - # if self.config.sf_enabled and bbs_full_res is not None: - # if torch.is_tensor(bbs_full_res): - # clean_bbs = bbs_full_res.detach().cpu().numpy() - # else: - # clean_bbs = np.array(bbs_full_res) - - # # print(f"[DEBUG] {current_clip_key}: {len(clean_bbs)} ROIs detected!") - - # if self.config.DETECTION_TYPE != "motion": - # # Object Mode: Run YOLO and prepare metadata - # det_frame = ( - # inf_data["full_frame"] - # if "full_frame" in inf_data - # else device_frame - # ) # RGB - # merged = clean_bbs if self.config.sf_enabled else None - # # num_bbs = 0 if merged is None else len(clean_bbs) - # # print(f"[DEBUG] {current_clip_key} 'merged' num bbs: {num_bbs}") - # metadata, _ = self.get_detections( - # det_frame, - # self.frame_in_clip_count, # self.frame_count_target, - # merged=merged, - # thickness=self.config.THICKNESS, - # device_input=self.config.device_input, - # ) - # if self.config.DEBUG_FLAG: - # meta_keys = ", ".join(list(metadata.keys())) - # print( - # f"[DEBUG] {current_clip_key} metadata keys: {meta_keys}", - # flush=True, - # ) - # if current_clip_key not in all_metadata: - # all_metadata[current_clip_key] = {"object": {}, "face": {}} + # 3. Non-blocking asynchronous PCIe DMA Download directly into our page-locked canvas + with torch.cuda.stream(self.reader.download_stream): + # pinned_tensor = torch.from_numpy(current_canvas).cuda() + pinned_tensor_buf.copy_(bgr_contiguous, non_blocking=True) - # all_metadata[current_clip_key]["object"].update(metadata) - # # data_to_draw = metadata + # Synchronize only the side download stream layout channel + self.reader.download_stream.synchronize() - # # print(f"Sending to queue", flush=True) + cpu_360p_frame = self.reader.d2h_numpys[d2h_idx] + print( + f"[FASTAPI-TRACE A] Frame #{frameNum} downloaded from GPU. Shape: {cpu_360p_frame.shape if cpu_360p_frame is not None else 'NONE'}", + flush=True, + ) + # Explicitly update shared state indicators so main.py can map the buffer + self.ready_buffer_idx.value = d2h_idx + # self.shared_details["last_id"] = frameNum - # display_source = ( - # inf_data["full_frame"] - # if (inf_data and "full_frame" in inf_data) - # else device_frame - # ) + # 5. Non-Blocking Push straight to your background AsyncVideoWriter thread pool + # We pass a direct .copy() slice so the hot loop can instantly reuse the pinned ring buffer + display_frame = np.array(cpu_360p_frame, copy=True, order="C") - # if self.device_input == "cuda": - # gpu_resized = F.interpolate( - # display_source.unsqueeze(0).float(), - # size=(self.disp_h, self.disp_w), - # mode="bilinear", - # align_corners=False, - # ).squeeze(0).contiguous() - # disp_frame = np.copy( - # tensor2opencv( - # gpu_resized, self.config.device_input, is_bgr=True - # ) - # ) - # else: - # cpu_resized = cv2.resize(device_frame, (self.disp_w, self.disp_h)) - # disp_frame = np.copy( - # tensor2opencv( - # cpu_resized, self.config.device_input, is_bgr=True - # ) - # ) + if display_frame is not None and display_frame.shape[-1] == 3: + display_frame = cv2.cvtColor(display_frame, cv2.COLOR_RGB2BGR) - # data_to_draw = ( - # clean_bbs if self.config.DETECTION_TYPE == "motion" else metadata - # ) + self.reader.d2h_selector = 1 - self.reader.d2h_selector - # # PUSH FRAME UNCONDITIONALLY: Ensures the test encoder gets raw frame tokens - # try: - # self.render_queue.put_nowait( # put( - # ( - # disp_frame, - # inf_data["frameNum"], - # data_to_draw, - # self.label_source, - # ) - # ) - # except queue.Full: - # pass + else: + display_frame = cv2.resize( + device_frame, + (self.disp_w, self.disp_h), + interpolation=cv2.INTER_NEAREST, + ) + # disp_frame = np.copy( + # tensor2opencv(cpu_resized, self.config.device_input, is_bgr=True) + # ) - # self.update_frame() + # PUSH FRAME UNCONDITIONALLY: Ensures the test encoder gets raw frame tokens + try: + if ( + hasattr(self, "render_queue") + and getattr(self, "render_queue", None) is not None + # and not self.render_queue.full() + ): + print( + f"[FASTAPI-TRACE B] Frame #{frameNum} pushing to render_queue. Current Q Size: {self.render_queue.qsize()}", + flush=True, + ) + self.render_queue.put_nowait( # put( put_nowait + ( + display_frame, + frameNum, + data_to_draw, + class_list, + ) + ) + print( + f"[FASTAPI-TRACE C] Frame #{frameNum} successfully enqueued into render_queue.", + flush=True, + ) + if hasattr(self, "signal_queue") and self.signal_queue is not None: + try: + # Non-blocking push to unstick main.py + self.signal_queue.put_nowait((True, frameNum)) + except queue.Full: + pass + except queue.Full: + pass def pipeline_fn( - self, device_frame, overall_frame_num, is_target_frame, stat_start_time + self, + device_frame, + overall_frame_num, + # is_target_frame, + stat_start_time, + current_clip_id, ): global all_metadata - current_clip_id = self.clip_id + # current_clip_id = self.clip_id current_clip_key = f"{self.name}_{current_clip_id:03d}.mp4" current_clip_path = f"{self.config.SHARED_OUTPUT}/{current_clip_key}" # --- MOTION MASK GENERATION GATE --- if self.config.sf_enabled: if self.device_input == "cuda": - inf_data = self.rbtd_full_gpu(device_frame) + bgs_input_frame = ( + device_frame.byte() + if torch.is_tensor(device_frame) + else device_frame + ) + inf_data = self.rbtd_full_gpu(bgs_input_frame) # torch.cuda.current_stream().synchronize() # if isinstance(inf_data, dict) and "mask" in inf_data: # if torch.is_tensor(inf_data["mask"]): @@ -3194,14 +4159,14 @@ def pipeline_fn( inf_data = {} # --- PIPELINE AT TARGET RATE --- - if not is_target_frame: - return + # if not is_target_frame: + # return # if is_target_frame: # self.next_process_idx += self.step_size - self.frame_count_target += 1 # 1-indexed - self.frame_in_clip_count += 1 - inf_data["frameNum"] = self.frame_count_target + # self.frame_count_target += 1 # 1-indexed + # self.frame_in_clip_count += 1 + inf_data["frameNum"] = overall_frame_num # self.frame_count_target # --- CLIP GENERATION --- if self.config.ENABLE_QUERYING: @@ -3236,7 +4201,7 @@ def pipeline_fn( self.resize_h, ) - self.start_new_clip() + self.start_new_clip(current_clip_id) if not self.config.DISABLE_DETECTION: # --- FULL-RESOLUTION ROI EXTRACTION MAPS --- @@ -3245,13 +4210,13 @@ def pipeline_fn( if self.device_input == "cuda": bbs_full_res = self.get_gpu_rois( inf_data["full_frame"], - self.frame_count_target, + inf_data["frameNum"], inf_data["mask"], ) else: bbs_full_res = self.get_cpu_rois( inf_data["full_frame"], - self.frame_count_target, + inf_data["frameNum"], inf_data["mask"], ) @@ -3263,29 +4228,46 @@ def pipeline_fn( else: clean_bbs = np.array(bbs_full_res) + # If inline optimizations left the tensor in channels-first format (B, C, H, W), + # restore it to standard standard layout standard (H, W, C) so get_detections + # can decode bounding boxes accurately without corrupting weights. + det_frame = device_frame + # Cast float canvases back to standard unsigned byte tracking arrays + # so get_detections can safely run its internal float normalizations. + if torch.is_tensor(det_frame): + det_frame = det_frame.byte() + + if det_frame.ndim == 4: + det_frame = det_frame.squeeze(0).permute(1, 2, 0) + elif det_frame.shape[0] == 3: + det_frame = det_frame.permute(1, 2, 0) + # print(f"[DEBUG] {current_clip_key}: {len(clean_bbs)} ROIs detected!") if self.config.DETECTION_TYPE != "motion": - # Object Mode: Run YOLO and prepare metadata - if "full_frame" in inf_data: - det_frame = inf_data["full_frame"] - else: - det_frame = ( - device_frame.clone() - if torch.is_tensor(device_frame) - else device_frame.copy() - ) + # # Object Mode: Run YOLO and prepare metadata + # if "full_frame" in inf_data: + # det_frame = inf_data["full_frame"] + # else: + # det_frame = ( + # device_frame.clone() + # if torch.is_tensor(device_frame) + # else device_frame.copy() + # ) merged = clean_bbs if self.config.sf_enabled else None # num_bbs = 0 if merged is None else len(clean_bbs) # print(f"[DEBUG] {current_clip_key} 'merged' num bbs: {num_bbs}") - metadata, _ = self.get_detections( + metadata, num_objs = self.get_detections( det_frame, self.frame_in_clip_count, # self.frame_count_target, merged=merged, thickness=self.config.THICKNESS, device_input=self.config.device_input, ) + + # num_objs = len(list(metadata.keys())) + self.total_objects_detected += num_objs if self.config.DEBUG_FLAG: meta_keys = ", ".join(list(metadata.keys())) print( @@ -3297,61 +4279,42 @@ def pipeline_fn( all_metadata[current_clip_key]["object"].update(metadata) # data_to_draw = metadata + # if self.config.DEBUG_FLAG or + if overall_frame_num % 50 == 0: + print( + f"[METADATA-DEBUG A] Logged tracking structures for Frame #{overall_frame_num} into dictionary key: {current_clip_key}. Number detections: {self.total_objects_detected} (+{num_objs})", + flush=True, + ) # print(f"Sending to queue", flush=True) - display_source = ( - inf_data["full_frame"] - if (inf_data and "full_frame" in inf_data) - else device_frame - ) - if self.device_input == "cuda": - gpu_resized = ( - F.interpolate( - display_source.unsqueeze(0).float(), - size=(self.disp_h, self.disp_w), - mode="bilinear", - align_corners=False, - ) - .squeeze(0) - .contiguous() - ) - disp_frame = np.copy( - tensor2opencv(gpu_resized, self.config.device_input, is_bgr=True) - ) - else: - cpu_resized = cv2.resize(device_frame, (self.disp_w, self.disp_h)) - disp_frame = np.copy( - tensor2opencv(cpu_resized, self.config.device_input, is_bgr=True) - ) + # torch.cuda.synchronize() + self.inference_stream.synchronize() data_to_draw = ( clean_bbs if self.config.DETECTION_TYPE == "motion" else metadata ) - # PUSH FRAME UNCONDITIONALLY: Ensures the test encoder gets raw frame tokens - try: - if ( - hasattr(self, "render_queue") - and getattr(self, "render_queue", None) is not None - # and not self.render_queue.full() - ): - self.render_queue.put( # put( put_nowait - ( - disp_frame, - inf_data["frameNum"], - data_to_draw, - self.label_source, - ) - ) - except queue.Full: - pass + if self.config.TEST_MODE: + self.frame2video( + det_frame, + inf_data["frameNum"], + data_to_draw, + self.label_source, + ) + else: + self.frame2output( + det_frame, + inf_data["frameNum"], + data_to_draw, + self.label_source, + ) - self.update_frame(stat_start_time) + # self.update_frame(stat_start_time) # VIDEO CLIPPING - def start_new_clip(self): + def start_new_clip(self, clip_id): """ Seals the current AI tracking state layout and safely moves the instance metadata references to the next sequential file block segment index. @@ -3359,7 +4322,7 @@ def start_new_clip(self): global clip_completion_tracker, all_metadata # Capture context pointers prior to counter mutation steps - old_clip_id = self.clip_id + old_clip_id = clip_id # self.clip_id old_clip_key = f"{self.name}_{old_clip_id:03d}.mp4" # old_clip_path = f"{self.config.SHARED_OUTPUT}/{old_clip_key}" @@ -3378,7 +4341,7 @@ def start_new_clip(self): # self._evaluate_barrier_and_dispatch(old_clip_key, old_clip_path, self.resize_w, self.resize_h) # Mutate tracker instance metrics parameters for the upcoming segment chunk window - self.clip_id += 1 + # self.clip_id += 1 self.frame_in_clip_count = 1 self._check_shm_safety(threshold_percent=90) @@ -3458,6 +4421,12 @@ def _async_clipper_worker(self, device_frame, frame_num): ).squeeze(0) gpu_final = gpu_resized.clamp(0, 255).to(torch.uint8) + + # If the tensor shape follows PyTorch's standard format (Channels, Height, Width), + # we reverse the channel order [0, 1, 2] to [2, 1, 0] (RGB -> BGR) + if gpu_final.ndim == 3 and gpu_final.shape[0] == 3: + gpu_final = gpu_final[[2, 1, 0], :, :] + gpu_contiguous = gpu_final.permute(1, 2, 0).contiguous() active_tensor = self.pinned_tensors[self.gpu_ring_idx] @@ -3480,7 +4449,7 @@ def _async_clipper_worker(self, device_frame, frame_num): device_frame, (self.resize_w, self.resize_h), dst=active_matrix, - interpolation=cv2.INTER_LINEAR, + interpolation=cv2.INTER_NEAREST, ) self.write_queue.put( @@ -3523,9 +4492,13 @@ def _initialize_writer(self): "-i", "-", "-c:v", - "libx264", #"mpeg4", # Or "libx264" if you prefer H.264 - "-crf","23", - "-f","mpegts","-movflags","faststart", + "libx264", # "mpeg4", # Or "libx264" if you prefer H.264 + "-crf", + "23", + "-f", + "mpegts", + "-movflags", + "faststart", "-force_key_frames", f"expr:gte(t,n_forced*{clip_duration})", "-f", @@ -3566,10 +4539,10 @@ def _initialize_writer(self): ) # Fire memory loop monitor - self.log_parser_thread = threading.Thread( - target=self._ffmpeg_log_parser_loop, daemon=True - ) - self.log_parser_thread.start() + # self.log_parser_thread = threading.Thread( + # target=self._ffmpeg_log_parser_loop, daemon=True + # ) + # self.log_parser_thread.start() log_to_logger( f"Persistent native-segmenting FFmpeg writer spawned for stream: {self.name}", @@ -3958,6 +4931,29 @@ def allocate_gpu(self): # Create a dedicated background stream for encoding tasks self.encode_stream = cv2.cuda.Stream() + # Allocate a permanent float32/float16 channel layout space directly on VRAM + self.static_gpu_360p = torch.empty( + (1, 3, self.disp_h, self.disp_w), + dtype=torch.float32, + device="cuda", + ) + self.static_gpu_byte_bchw = torch.empty( + (1, 3, self.disp_h, self.disp_w), + dtype=torch.uint8, + device="cuda", + ).contiguous() + + # Create two isolated tracking canvases to handle the ping-pong data stream + self.static_host_canvases = [ + np.zeros((self.disp_h, self.disp_w, 3), dtype=np.uint8), + np.zeros((self.disp_h, self.disp_w, 3), dtype=np.uint8), + ] + self.canvas_selector = 0 + + # Register BOTH buffers as page-locked memory + cv2.cuda.registerPageLocked(self.static_host_canvases[0]) + cv2.cuda.registerPageLocked(self.static_host_canvases[1]) + def prepare_gpu_pipeline(self): self.operation_device_map = PipelineMapping( resize_device="gpu", @@ -4116,7 +5112,7 @@ def cleanup_gpu(self): if torch.cuda.is_available(): torch.cuda.empty_cache() - def apply_background_subtraction_gpu( + def apply_background_subtraction_gpuv1( self, include_history=True, method="and", stream=None ): stream = stream if isinstance(stream, cv2.cuda.Stream) else self.stream @@ -4171,6 +5167,67 @@ def apply_background_subtraction_gpu( # self.fgMask, self.prev_bkgd, stream=stream # ) + def apply_background_subtraction_gpu( + self, motion_input, include_history=True, method="and", stream=None + ): + stream = stream if isinstance(stream, cv2.cuda.Stream) else self.stream + raw_mask = self.backSub.apply( + motion_input, + 0.005, # float(self.lr), + stream=stream, + ) + + if include_history: + # If this is the first run, clone the mask instead of ANDing with an empty/white buffer + # if len(self.mask_history) < 1: + # self.prev_bkgd.setTo(255, stream) # Clear the initial white buffer + self.prev_bkgd.setTo(0, stream=self.bgs_stream) + for m in list(self.mask_history): + # Dilate the historical mask on GPU + dilated = self.dilate_filter_for_enhanced_mask.apply(m, stream=stream) + + if method == "or": + # Bitwise OR on GPU + cv2.cuda.bitwise_or( + self.prev_bkgd, dilated, self.prev_bkgd, stream=stream + ) + else: + # Bitwise AND on GPU + cv2.cuda.bitwise_and( + self.prev_bkgd, dilated, self.prev_bkgd, stream=stream + ) + + self.mask_history.append(raw_mask.clone()) + raw_mask = cv2.cuda.bitwise_or( + raw_mask, self.prev_bkgd, stream=self.bgs_stream + ) + return raw_mask + + # min_val, max_val, _, _ = cv2.cuda.minMaxLoc(self.prev_bkgd) + # if max_val != min_val and max_val > 0: + # # bitor = cv2.cuda.bitwise_or( + # # self.fgMask, self.prev_bkgd, stream=stream + # # ) + # # bitand = cv2.cuda.bitwise_and( + # # self.fgMask, self.prev_bkgd, stream=stream + # # ) + # # not_bitand = cv2.cuda.bitwise_not(self.prev_bkgd, stream=stream) + # # self.fgMask = cv2.cuda.subtract(self.fgMask, bitand, stream=stream) + # self.fgMask = cv2.cuda.bitwise_or( + # self.fgMask, self.prev_bkgd, stream=stream + # ) + # # self.fgMask = cv2.cuda.bitwise_or( + # # self.fgMask, self.mask_history[-2], stream=stream + # # ) + # # if method == "or": + # # self.fgMask = cv2.cuda.bitwise_and( + # # self.fgMask, self.prev_bkgd, stream=stream + # # ) + # # else: + # # self.fgMask = cv2.cuda.bitwise_or( + # # self.fgMask, self.prev_bkgd, stream=stream + # # ) + def rbtd_full_gpuv1(self, frame): """ GPU-Accelerated Motion Detection Pipeline (Producer). @@ -4224,69 +5281,6 @@ def rbtd_full_gpuv1(self, frame): stream=self.bgs_stream, ) - # self.bgs_stream.waitForCompletion() - # Clean up the motion mask using Thresholding and Morphology (Dilation) - # cv2.cuda.threshold( - # self.fgMask, - # self.config.THRESHOLD_VALUE, - # 255, - # cv2.THRESH_BINARY, - # dst=self.gpu_threshold_dst_frame, - # stream=self.bgs_stream, - # ) - # self.dilate_filter.apply( - # self.gpu_threshold_dst_frame, dst=self.labels_gpu, stream=self.bgs_stream - # ) - - # return { - # # "frameNum": frameNum, # overall frame - # "mask": self.labels_gpu, # GpuMat pointer to cleaned mask - # # "full_frame": frame, # Kept for high-res cropping - # "full_frame": frame, # current_gpu_frame, - # } - - # if self.config.ENABLE_QUERYING and self.video_writer: # and not self.video_queue.full(): - # self.pinned_downloaded_resizedframe_np = self.resized_frame.download(stream) - # # self.resized_frame.download(self.stream, self.pinned_downloaded_resizedframe_np) - # # self.video_writer.write(self.pinned_downloaded_resizedframe_np) - # self.write_queue.put(self.pinned_downloaded_resizedframe_np.copy()) - - # if ( - # (self.debug_range[0] * self.target_fps) - # <= self.frame_count - # <= (self.debug_range[1] * self.target_fps) - # ): - # mask_cpu = self.fgMask.download() # fgMask is a GpuMat from the backend - # mask_path = f"{self.out_imgdir}/mask_frame_{self.frame_count}.png" - # cv2.imwrite(mask_path, mask_cpu) - # print(f"[DEBUG] Saved BGS Mask: {mask_path}") - - # -------------- - # NOISE FILTERING: Median Blur (Kills pixel noise) - # if not hasattr(self, 'median_filter'): - # self.median_filter = cv2.cuda.createMedianFilter(cv2.CV_8UC1, 5) - - # # Syntax: apply(src, dst, stream) - # self.median_filter.apply(self.fgMask, self.fgMask, self.bgs_stream) - - # # MORPHOLOGY: Erode then Dilate (Opening) - # if not hasattr(self, 'erode_filter'): - # # 3x3 kernel is sufficient when combined with a median filter - # kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3)) - - # # In OpenCV 4.x, use createMorphologyFilter for both Erode and Dilate - # self.erode_filter = cv2.cuda.createMorphologyFilter(cv2.MORPH_ERODE, cv2.CV_8UC1, kernel) - # self.dilate_filter = cv2.cuda.createMorphologyFilter(cv2.MORPH_DILATE, cv2.CV_8UC1, kernel) - - # # Shave off noise (Erode) - # self.erode_filter.apply(self.fgMask, self.fgMask, self.bgs_stream) - - # # Restore object size (Dilate) - # self.dilate_filter.apply(self.fgMask, self.fgMask, self.bgs_stream) - - # return {"mask": self.fgMask, "full_frame": frame} - # -------------- - # Clean up the motion mask using Thresholding and Morphology (Dilation) # Fused Cleanup (Threshold + Dilate) # This replaces: cv2.cuda.threshold AND cv2.cuda.dilate @@ -4347,25 +5341,40 @@ def rbtd_full_gpuv1(self, frame): def rbtd_full_gpu(self, device_frame): """ - Asynchronously handles downsampling, conversion, background subtraction, and morphology - by reshaping PyTorch CUDA Tensors to interleaved layouts before mapping to GpuMat. + Asynchronously handles downsampling, conversion, background subtraction, and + morphology while writing out intermediate files for stage-by-stage debugging. """ - # 1. BRIDGE THE PYTORCH TO OPENCV VRAM GAP (ZERO-COPY & INTERLEAVED) - if torch.is_tensor(device_frame): - # Reshape tensor to channel-last layout [H, W, C] to completely prevent the 3x3 grid tiling artifact - interleaved_frame = device_frame.permute(1, 2, 0).contiguous() + if self.config.DEBUG_FLAG: + # Create a dedicated directory structure for this stage's debug snapshots + stage_debug_dir = self.result_dir / "debug_stages" / self._testMethodName + stage_debug_dir.mkdir(parents=True, exist_ok=True) + f_num = self.frame_count_target - h_raw, w_raw, ch = interleaved_frame.shape - cuda_mem_ptr = interleaved_frame.data_ptr() + # 1. BRIDGE THE PYTORCH TO OPENCV VRAM GAP (ZERO-COPY & STRIDE-ALIGNED) + if torch.is_tensor(device_frame): + h_raw, w_raw, ch = device_frame.shape + cuda_mem_ptr = device_frame.data_ptr() cv_type = cv2.CV_8UC3 if ch == 3 else cv2.CV_8UC1 + # Explicitly pass structural step row pitch to avoid memory tearing artifacts + row_step_bytes = device_frame.stride()[0] * device_frame.element_size() src_gpu_mat = cv2.cuda.createGpuMatFromCudaMemory( - h_raw, w_raw, cv_type, cuda_mem_ptr + h_raw, w_raw, cv_type, cuda_mem_ptr, step=row_step_bytes ) else: src_gpu_mat = device_frame ch = src_gpu_mat.channels() + # [STAGE 1 DEBUG] Save incoming source frame immediately after GpuMat mapping + if self.config.DEBUG_FLAG and f_num <= self.config.DEBUG_FRAME_LIMIT: + src_cpu = src_gpu_mat.download() + # If the source is in RGB, flip channels to BGR so cv2.imwrite saves true colors + if ch == 3: + src_cpu = cv2.cvtColor(src_cpu, cv2.COLOR_RGB2BGR) + cv2.imwrite( + str(stage_debug_dir / f"frame_{f_num:04d}_stage1_src.jpg"), src_cpu + ) + # 2. INSTANTIATE GPUMAT CONTROLLERS WITH STRIDED LAYOUT HEADERS recycled_resize_mat = cv2.cuda.GpuMat( self.resize_h, self.resize_w, cv2.CV_8UC3 if ch == 3 else cv2.CV_8UC1 @@ -4380,12 +5389,25 @@ def rbtd_full_gpu(self, device_frame): src_gpu_mat, dst=recycled_resize_mat, dsize=(self.resize_w, self.resize_h), - interpolation=cv2.INTER_LINEAR, + interpolation=cv2.INTER_NEAREST, stream=self.bgs_stream, ) + # [STAGE 2 DEBUG] Check Downsampled Frame + if self.config.DEBUG_FLAG and f_num <= self.config.DEBUG_FRAME_LIMIT: + self.bgs_stream.waitForCompletion() # Synchronize stream briefly to download safely + resize_cpu = recycled_resize_mat.download() + if ch == 3: + resize_cpu = cv2.cvtColor(resize_cpu, cv2.COLOR_RGB2BGR) + cv2.imwrite( + str(stage_debug_dir / f"frame_{f_num:04d}_stage2_resize.jpg"), + resize_cpu, + ) + # 4. COLOR LAYOUT CORRECTION (COLLAPSE CHANNELS SAFELY) if recycled_resize_mat.channels() == 3: + # NOTE: If your input tensor is RGB, use COLOR_RGB2GRAY. + # If it's already converted to BGR inside your framework handlers, keep COLOR_BGR2GRAY. cv2.cuda.cvtColor( recycled_resize_mat, cv2.COLOR_BGR2GRAY, @@ -4396,45 +5418,66 @@ def rbtd_full_gpu(self, device_frame): else: motion_input = recycled_resize_mat - # 4. EXECUTE SEGMENTATION METRICS - raw_mask = self.backSub.apply( + # [STAGE 3 DEBUG] Check Grayscale Input going into Background Subtractor + if self.config.DEBUG_FLAG and f_num <= self.config.DEBUG_FRAME_LIMIT: + self.bgs_stream.waitForCompletion() + gray_cpu = motion_input.download() + cv2.imwrite( + str(stage_debug_dir / f"frame_{f_num:04d}_stage3_gray.jpg"), gray_cpu + ) + + # 5. EXECUTE BACKGROUND SUBTRACTION + # raw_mask = self.backSub.apply( + # motion_input, + # 0.005, # float(self.lr) + # stream=self.bgs_stream, + # ) + + raw_mask = self.apply_background_subtraction_gpu( motion_input, - 0.005, # float(self.lr), + include_history=self.config.BKGD_SUB_INCLUDE_HISTORY, + method=self.config.BKGD_SUB_INCLUDE_HISTORY_METHOD, stream=self.bgs_stream, ) - include_history = self.config.BKGD_SUB_INCLUDE_HISTORY - method = self.config.BKGD_SUB_INCLUDE_HISTORY_METHOD - if include_history: - # If this is the first run, clone the mask instead of ANDing with an empty/white buffer - # if len(self.mask_history) < 1: - # self.prev_bkgd.setTo(255, stream) # Clear the initial white buffer - - for m in list(self.mask_history): - # Dilate the historical mask on GPU - dilated = self.dilate_filter_for_enhanced_mask.apply( - m, stream=self.bgs_stream - ) - - if method == "or": - # Bitwise OR on GPU - cv2.cuda.bitwise_or( - self.prev_bkgd, dilated, self.prev_bkgd, stream=self.bgs_stream - ) - else: - # Bitwise AND on GPU - cv2.cuda.bitwise_and( - self.prev_bkgd, dilated, self.prev_bkgd, stream=self.bgs_stream - ) + # [STAGE 4 DEBUG] Check Raw Output directly from Subtractor Kernel + # if self.config.DEBUG_FLAG and f_num <= self.config.DEBUG_FRAME_LIMIT: + # self.bgs_stream.waitForCompletion() + # raw_mask_cpu = raw_mask.download() + # cv2.imwrite(str(stage_debug_dir / f"frame_{f_num:04d}_stage4_raw_mask.jpg"), raw_mask_cpu) + + # 6. MASK HISTORY ACCUMULATION LIFECYCLE + # include_history = self.config.BKGD_SUB_INCLUDE_HISTORY + # method = self.config.BKGD_SUB_INCLUDE_HISTORY_METHOD + # if include_history: + # self.prev_bkgd.setTo(0, stream=self.bgs_stream) + # for m in list(self.mask_history): + # dilated = self.dilate_filter_for_enhanced_mask.apply( + # m, stream=self.bgs_stream + # ) + # if method == "or": + # cv2.cuda.bitwise_or( + # self.prev_bkgd, dilated, self.prev_bkgd, stream=self.bgs_stream + # ) + # else: + # cv2.cuda.bitwise_and( + # self.prev_bkgd, dilated, self.prev_bkgd, stream=self.bgs_stream + # ) - self.mask_history.append(raw_mask.clone()) + # self.mask_history.append(raw_mask.clone()) + # raw_mask = cv2.cuda.bitwise_or( + # raw_mask, self.prev_bkgd, stream=self.bgs_stream + # ) - min_val, max_val, _, _ = cv2.cuda.minMaxLoc(self.prev_bkgd) - if max_val != min_val and max_val > 0: - raw_mask = cv2.cuda.bitwise_or( - raw_mask, self.prev_bkgd, stream=self.bgs_stream - ) + # [STAGE 5 DEBUG] Check Mask after History ORing/ANDing steps + if self.config.DEBUG_FLAG and f_num <= self.config.DEBUG_FRAME_LIMIT: + self.bgs_stream.waitForCompletion() + hist_mask_cpu = raw_mask.download() + cv2.imwrite( + str(stage_debug_dir / f"frame_{f_num:04d}_stage5_history_mask.jpg"), + hist_mask_cpu, + ) - # 5. MORPHOLOGICAL TRANSFORMATIONS BINARY FILTERS + # 7. MORPHOLOGICAL TRANSFORMATIONS & BINARY FILTERS cv2.cuda.threshold( raw_mask, self.config.THRESHOLD_VALUE, @@ -4444,27 +5487,35 @@ def rbtd_full_gpu(self, device_frame): stream=self.bgs_stream, ) - # cv2.cuda.dilate( - # thresh_mask, - # clean_mask, - # self.dilate_kernel, - # stream=self.bgs_stream - # ) + # [STAGE 6 DEBUG] Check Binary Threshold Output + if self.config.DEBUG_FLAG and f_num <= self.config.DEBUG_FRAME_LIMIT: + self.bgs_stream.waitForCompletion() + thresh_cpu = thresh_mask.download() + cv2.imwrite( + str(stage_debug_dir / f"frame_{f_num:04d}_stage6_threshold.jpg"), + thresh_cpu, + ) + self.dilate_filter.apply(thresh_mask, clean_mask, self.bgs_stream) - # 6. ENFORCE INDEPENDENT WORKSPACE MEMORY VIEWS - # Allocate an isolated output mask surface container + # 8. ENFORCE INDEPENDENT WORKSPACE MEMORY VIEWS isolated_kernel_mask = cv2.cuda.GpuMat( self.resize_h, self.resize_w, cv2.CV_8UC1 ) clean_mask.copyTo(dst=isolated_kernel_mask, stream=self.bgs_stream) - # return isolated_kernel_mask - # self.bgs_stream.waitForCompletion() + # [STAGE 7 DEBUG] Check Final Dilated Output Mask + if self.config.DEBUG_FLAG and f_num <= self.config.DEBUG_FRAME_LIMIT: + self.bgs_stream.waitForCompletion() + final_mask_cpu = isolated_kernel_mask.download() + cv2.imwrite( + str(stage_debug_dir / f"frame_{f_num:04d}_stage7_final_mask.jpg"), + final_mask_cpu, + ) return { - "mask": isolated_kernel_mask, # GpuMat pointer to cleaned mask - "full_frame": device_frame, # current_gpu_frame, + "mask": isolated_kernel_mask, + "full_frame": device_frame, } def findContours_gpu(self, mask, method="fused"): @@ -4621,7 +5672,7 @@ def cleanup_cpu(self): if hasattr(self, "mask_history"): self.mask_history.clear() - def apply_background_subtraction_cpu(self, include_history=True, method="and"): + def apply_background_subtraction_cpuv1(self, include_history=True, method="and"): self.fgMask = self.backSub.apply( self.cpu_resized_frame, learningRate=float(self.lr) ) @@ -4653,7 +5704,43 @@ def apply_background_subtraction_cpu(self, include_history=True, method="and"): combined_mask_bool = (self.fgMask > 0) | (self.prev_bkgd > 0) self.fgMask = combined_mask_bool.astype(np.uint8) * 255 - def rbtd_full_cpu(self, frame): + def apply_background_subtraction_cpu( + self, motion_input, include_history=True, method="and" + ): + raw_mask = self.backSub.apply( + motion_input, learningRate=self.config.BKGD_SUB_MOG2_LR + ) + + if include_history: + # If this is the first run, clone the mask instead of ANDing with an empty/white buffer + # if len(self.mask_history) < 1: + # self.prev_bkgd.setTo(0, stream) # Clear the initial white buffer + self.prev_bkgd = np.zeros((self.resize_h, self.resize_w), dtype="uint8") + for m in list(self.mask_history): + # Dilate the historical mask on CPU + dilated = cv2.dilate( + m, self.dilate_kernel_for_enhanced_mask, iterations=1 + ) + + if method == "or": + # Bitwise OR on CPU + cv2.bitwise_or(self.prev_bkgd, dilated, dst=self.prev_bkgd) + else: + # Bitwise AND on CPU + cv2.bitwise_and(self.prev_bkgd, dilated, dst=self.prev_bkgd) + + self.mask_history.append(raw_mask.copy()) + + # if ( + # self.prev_bkgd.max() != self.prev_bkgd.min() + # and self.prev_bkgd.max() > 0 + # ): + # combined_mask_bool = (self.fgMask > 0) | (self.prev_bkgd > 0) + # self.fgMask = combined_mask_bool.astype(np.uint8) * 255 + raw_mask = cv2.bitwise_or(raw_mask, self.prev_bkgd) + return raw_mask + + def rbtd_full_cpuv1(self, frame): """ CPU-Based Motion Detection Pipeline (Producer). @@ -4712,3 +5799,97 @@ def rbtd_full_cpu(self, frame): "mask": mask, "full_frame": frame, # Kept for high-res cropping } + + # def rbtd_full_cpu(self, frame): + # # --- PHASE 1: NATIVE CACHE-PINNED RESIZE --- + # # Fetch the exact background resolution constraints natively required by your config + # # We assume self.resize_w and self.resize_h reflect your locked tracking target dimensions + # target_w, target_h = self.resize_w, self.resize_h + + # # Safe Multi-Threaded Canvas Initialization Guard: + # # Dynamically instantiate the static persistent memory matrices on the first frame pass. + # # This completely stops the Python heap engine from allocating new arrays on subsequent frames. + # if not hasattr(self, "_pinned_small_frame") or self._pinned_small_frame.shape[ + # :2 + # ] != (target_h, target_w): + # self._pinned_small_frame = np.zeros((target_h, target_w, 3), dtype=np.uint8) + # self._pinned_fg_mask = np.zeros((target_h, target_w), dtype=np.uint8) + # self._pinned_dilated_mask = np.zeros((target_h, target_w), dtype=np.uint8) + # self._pinned_global_mask = np.zeros(frame.shape[:2], dtype=np.uint8) + + # # Force a zero-allocation resize into our pre-allocated, sequential cache-line matrix buffer + # cv2.resize( + # frame, + # (target_w, target_h), + # dst=self._pinned_small_frame, + # interpolation=cv2.INTER_NEAREST, + # ) + + # # --- PHASE 2: STRIPPED SINGLE-THREAD BACKGROUND ARITHMETIC --- + # # Run background subtraction straight into our static memory address lane + # # We pass your configured learning rate (BKGD_SUB_MOG2_LR) to lock the temporal parameters + # self._pinned_fg_mask = self.backSub.apply( + # self._pinned_small_frame, + # # dst=self._pinned_fg_mask, + # learningRate=self.config.BKGD_SUB_MOG2_LR, + # ) + + # # Execute morphology dilation inline within our zero-allocation ring workspace [PDF: 0.1.18] + # cv2.dilate( + # self._pinned_fg_mask, + # self.dilate_kernel, + # dst=self._pinned_dilated_mask, + # iterations=1, + # ) + + # return {"full_frame": frame, "mask": self._pinned_dilated_mask} + + def rbtd_full_cpu(self, frame): + # --- PHASE 1: NATIVE CACHE-PINNED RESIZE --- + # Fetch the exact background resolution constraints natively required by your config + # We assume self.resize_w and self.resize_h reflect your locked tracking target dimensions + target_w, target_h = self.resize_w, self.resize_h + + # Safe Multi-Threaded Canvas Initialization Guard: + # Dynamically instantiate the static persistent memory matrices on the first frame pass. + # This completely stops the Python heap engine from allocating new arrays on subsequent frames. + if not hasattr(self, "_pinned_small_frame") or self._pinned_small_frame.shape[ + :2 + ] != (target_h, target_w): + self._pinned_small_frame = np.zeros((target_h, target_w, 3), dtype=np.uint8) + self._pinned_fg_mask = np.zeros((target_h, target_w), dtype=np.uint8) + self._pinned_dilated_mask = np.zeros((target_h, target_w), dtype=np.uint8) + self._pinned_global_mask = np.zeros(frame.shape[:2], dtype=np.uint8) + + # Force a zero-allocation resize into our pre-allocated, sequential cache-line matrix buffer + cv2.resize( + frame, + (target_w, target_h), + dst=self._pinned_small_frame, + interpolation=cv2.INTER_NEAREST, + ) + + # --- PHASE 2: STRIPPED SINGLE-THREAD BACKGROUND ARITHMETIC --- + # Run background subtraction straight into our static memory address lane + # We pass your configured learning rate (BKGD_SUB_MOG2_LR) to lock the temporal parameters + # self._pinned_fg_mask = self.backSub.apply( + # self._pinned_small_frame, + # # dst=self._pinned_fg_mask, + # learningRate=self.config.BKGD_SUB_MOG2_LR, + # ) + + self._pinned_fg_mask = self.apply_background_subtraction_cpu( + self._pinned_small_frame, + include_history=self.config.BKGD_SUB_INCLUDE_HISTORY, + method=self.config.BKGD_SUB_INCLUDE_HISTORY_METHOD, + ) + + # Execute morphology dilation inline within our zero-allocation ring workspace [PDF: 0.1.18] + cv2.dilate( + self._pinned_fg_mask, + self.dilate_kernel, + dst=self._pinned_dilated_mask, + iterations=1, + ) + + return {"full_frame": frame, "mask": self._pinned_dilated_mask} diff --git a/fastapi/include/models.py b/fastapi/include/models.py index e9dc452..a20792c 100644 --- a/fastapi/include/models.py +++ b/fastapi/include/models.py @@ -83,9 +83,9 @@ def get_model( ): final_model_path = f"{model_dir}/{model_name}.pt" pt_detection_model = YOLO(final_model_path, verbose=False, task="detect") - label_source = [] - for k, v in pt_detection_model.names.items(): - label_source.append(v) + + # Secure the master label source dictionary reference from the raw baseline weights + master_names_dict = pt_detection_model.names if run_platform == "openvino": final_model_path = f"{model_dir}/{model_name}_openvino_model/" @@ -96,7 +96,7 @@ def get_model( dynamic=dynamic_flag, device=device_input, # batch=batch, - data={"names": pt_detection_model.names}, + data={"names": master_names_dict}, ) object_detection_model = YOLO( @@ -105,13 +105,50 @@ def get_model( task="detect", ) - # det_ov_model = core.read_model(final_model_path+"yolo11n.xml") - # ov_config = {hints.performance_mode: hints.PerformanceMode.LATENCY} - # if device == "GPU": - # ov_config["GPU_DISABLE_WINOGRAD_CONVOLUTION"] = "YES" - # compiled_model = core.compile_model(det_ov_model, device, ov_config) + import numpy as np + import openvino as ov + import openvino.preprocess as wp + from openvino import properties + + core = ov.Core() + det_ov_model = core.read_model(final_model_path + f"{model_name}.xml") + + # --- ULTRA-FAST HIGH-SPEED C++ GRAPH INJECTION --- + # We tell the OpenVINO compiler graph to apply the layout shift + # and normalization layers natively in C++ before returning data to Python + ppp = wp.PrePostProcessor(det_ov_model) + + # Inject an implicit transposition rule directly onto the output layer node + # This shifts shapes from [1, 5, 8400] -> [1, 8400, 5] automatically in memory + output = ppp.output(0) + output.tensor().set_layout(ov.Layout("NCW")) + output.model().set_layout(ov.Layout("NWC")) + + # Build the modifications back into the primary model reference structure + det_ov_model = ppp.build() + + ov_config = { + # properties.hint.performance_mode(): properties.hint.PerformanceMode.THROUGHPUT, + properties.hint.performance_mode(): properties.hint.PerformanceMode.LATENCY, + properties.streams.num(): 1, # Set strictly to 1 to prevent thread thrashing #2, + properties.inference_num_threads(): os.cpu_count() or 4, + } + compiled_model = core.compile_model( + det_ov_model, device_input.upper(), ov_config + ) + dummy_canvas = np.zeros((model_h, model_w, 3), dtype=np.uint8) + _ = object_detection_model.predict(dummy_canvas, verbose=False, save=False) # object_detection_model.predictor.model.ov_compiled_model = compiled_model + if ( + hasattr(object_detection_model, "predictor") + and object_detection_model.predictor is not None + ): + # Re-map the raw execution backend instance to utilize the multi-stream parameters + object_detection_model.predictor.model.backend.ov_compiled_model = ( + compiled_model + ) + elif run_platform == "engine": final_model_path = f"{model_dir}/{model_name}.engine" onnx_model_path = f"{model_dir}/{model_name}.onnx" @@ -159,7 +196,7 @@ def get_model( dynamic=True, device=device_input, simplify=True, - data={"names": pt_detection_model.names}, + data={"names": master_names_dict}, ) if hasattr(pt_detection_model.model, "stride"): @@ -174,7 +211,7 @@ def get_model( metadata={ "stride": max_stride, "task": "detect", - "names": pt_detection_model.names, + "names": master_names_dict, }, ) @@ -200,7 +237,7 @@ def get_model( device=device_input, simplify=True, batch=batch, - data={"names": pt_detection_model.names}, + data={"names": master_names_dict}, ) object_detection_model = YOLO(final_model_path, verbose=False, task="detect") @@ -215,6 +252,13 @@ def get_model( else: raise ValueError(f"[!] Model for {run_platform} is not implemented.") + # --- SAFELY COMPILING FINAL DEFINITIVE LABELS LIST --- + # Interrogate the runtime model instance dictionary first; fallback directly to master reference maps + current_names = ( + getattr(object_detection_model, "names", master_names_dict) or master_names_dict + ) + label_source = [current_names[i] for i in sorted(current_names.keys())] + return object_detection_model, final_model_path, label_source diff --git a/fastapi/include/readers.py b/fastapi/include/readers.py index 8494b08..dc89d23 100644 --- a/fastapi/include/readers.py +++ b/fastapi/include/readers.py @@ -5,17 +5,15 @@ import sys import threading import time -import traceback +from multiprocessing import Process, Value +from multiprocessing.shared_memory import SharedMemory import av import cv2 import numpy as np import torch -import torch.nn.functional as F from ultralytics.utils.checks import check_imgsz -# from fastapi import FastAPI - # ----- SETUP LOGGING ----- logging.basicConfig( level=logging.INFO, @@ -32,19 +30,10 @@ main_app_logger = logging.getLogger(__name__) - # ----- PIPELINE CONFIGURATION ----- os.environ["PYTORCH_ALLOC_CONF"] = "expandable_segments:True" -# Force OpenCV to use a single thread for its operations. -# This prevents internal OpenCV threads from "racing" against AI logic. -# cv2.setNumThreads(1) - -# Force OpenCV to run sequentially to prevent context-switching overhead cv2.setNumThreads(0) -# DEVICE = os.getenv("DEVICE", "CPU") -# device_input = DEVICE.lower() if DEVICE == "CPU" else "cuda" - from include.default_configs import ENABLE_QUERYING_DEFAULT from include.utils import PipelineConfig, manual_fps_calculation, str2bool @@ -58,7 +47,6 @@ INGESTION=os.getenv("INGESTION", "object"), MODEL_NAME=os.getenv("MODEL_NAME", "yolo11n"), OMIT_DETECTIONS_FLAG=str2bool(os.getenv("OMIT_DETECTIONS_FLAG", False)), - # RESIZE_FLAG=str2bool(os.getenv("RESIZE_FLAG", False)), SHARED_MODEL=os.getenv("SHARED_MODEL", False), SHARED_OUTPUT=os.getenv("SHARED_OUTPUT", "/var/www/mp4"), TEST_MODE=str2bool(os.getenv("TEST_MODE", False)), @@ -67,59 +55,203 @@ UDF_PORT=5011, ) -# Placeholder for dynamic import for PyNvVideoCodec (GPU package) -nvc = None +# def capture_shared_memory_worker(source_input, shm_name, frame_shape, running_flag): +# """Isolated background process bypassing the GIL to update raw uncompressed RAM.""" +# if str(source_input).lower().startswith("rtsp://"): +# os.environ["OPENCV_FFMPEG_CAPTURE_OPTIONS"] = "rtsp_transport;tcp;buffer_size;15728640;threads;16" +# elif "OPENCV_FFMPEG_CAPTURE_OPTIONS" in os.environ: +# del os.environ["OPENCV_FFMPEG_CAPTURE_OPTIONS"] + +# cap = cv2.VideoCapture(source_input, cv2.CAP_FFMPEG) +# if not cap.isOpened(): +# running_flag.value = False +# return + +# existing_shm = SharedMemory(name=shm_name) +# shared_array = np.ndarray(frame_shape, dtype=np.uint8, buffer=existing_shm.buf) + +# try: +# while running_flag.value: +# ret, frame = cap.read() +# if not ret or frame is None: +# running_flag.value = False +# break +# shared_array[:] = frame[:] +# except Exception: +# running_flag.value = False +# finally: +# cap.release() +# existing_shm.close() +import sys -# ----- VIDEO READERS ----- -class BaseReader: - def __init__( - self, - source, - target_fps=BASE_PIPELINE_CONFIG.TARGET_FPS, - clip_duration=BASE_PIPELINE_CONFIG.CLIP_DURATION, - queue_size=2, - ): - self.source = source - self.is_rtsp = str(self.source).startswith("rtsp://") - self.frame_idx = 0 - self.frame_queue = queue.Queue(maxsize=queue_size) # 2) # 5 - self.stopped = False - self.reconnect_failed = False - self.init_error = None - self.target_fps = ( - float(target_fps) if target_fps not in [None, 0] else target_fps +# Self-contained worker script executed in an isolated process shell to prevent global CUDA import pollution +# WORKER_SCRIPT = """ +# import os +# import sys +# import cv2 +# import numpy as np +# from multiprocessing.shared_memory import SharedMemory +# source_input = sys.argv[1] +# shm_name = sys.argv[2] +# h, w, c = map(int, sys.argv[3].split(',')) +# frame_shape = (h, w, c) +# retry_cnt = 0 +# max_retries = 5 +# cap = None +# if str(source_input).lower().startswith("rtsp://"): +# os.environ["OPENCV_FFMPEG_CAPTURE_OPTIONS"] = "rtsp_transport;tcp;buffer_size;15728640;threads;16" +# while retry_cnt < max_retries: +# cap = cv2.VideoCapture(source_input, cv2.CAP_FFMPEG) +# if cap.isOpened(): +# break +# retry_cnt += 1 +# # Exit immediately if it's a local file path layout to save CPU cycles +# if not str(source_input).lower().startswith("rtsp://"): +# break +# wait_time = retry_cnt * 2 +# # Standard string stdout message to pass back to the tracking shell logs +# print(f"RTSP background channel pending... Retry ({retry_cnt}/{max_retries}) in {wait_time}s.") +# import time +# time.sleep(wait_time) +# if cap is None or not cap.isOpened(): +# import sys +# sys.exit(1) +# try: +# shm = SharedMemory(name=shm_name) +# shared_array = np.ndarray(frame_shape, dtype=np.uint8, buffer=shm.buf) +# # Read continuously until stdin is closed by the parent process +# while sys.stdin.read(1) == '1': +# ret, frame = cap.read() +# if not ret or frame is None: +# break +# shared_array[:] = frame[:] +# except Exception: +# pass +# finally: +# cap.release() +# """ +from multiprocessing import Condition + + +def capture_shared_memory_worker( + source_input, + shm_names, + frame_shape, + running_flag, + raw_frame_counter, + latest_idx, + reader_idx, + frame_condition, + buffer_occupancy, + target_fps, +): + """Isolated background process using triple-buffering pointer rotation to eliminate memcpy.""" + if str(source_input).lower().startswith("rtsp://"): + os.environ["OPENCV_FFMPEG_CAPTURE_OPTIONS"] = ( + "rtsp_transport;tcp;buffer_size;33554432;threads;32;max_delay;500000" ) - self.clip_duration = ( - float(clip_duration) if clip_duration not in [None, 0] else clip_duration + # "rtsp_transport;tcp;buffer_size;52428800;fifo_size;500000;max_delay;100000;stimeout;2000000" + # "rtsp_transport;tcp;buffer_size;15728640;threads;16" + elif "OPENCV_FFMPEG_CAPTURE_OPTIONS" in os.environ: + del os.environ["OPENCV_FFMPEG_CAPTURE_OPTIONS"] + + retry_cnt = 0 + max_retries = 5 + cap = None + is_rtsp_stream = str(source_input).lower().startswith("rtsp://") + + while retry_cnt < max_retries: + cap = cv2.VideoCapture( + source_input, + cv2.CAP_FFMPEG, + [cv2.CAP_PROP_HW_ACCELERATION, cv2.VIDEO_ACCELERATION_ANY], ) + if cap.isOpened(): + break - def start(self): - threading.Thread(target=self.stream_frames, daemon=True).start() - return self + retry_cnt += 1 + if not is_rtsp_stream or retry_cnt >= max_retries: + main_app_logger.error( + f"Critical: Could not open/connect to video resource: {source_input}" + ) + running_flag.value = False + return - def stop(self): - """Cleanly stop the reader and release resources.""" - self.stopped = True - self.release() + wait_time = retry_cnt * 2 + main_app_logger.warning( + f"RTSP process connection pending... Retry ({retry_cnt}/{max_retries}) in {wait_time} seconds." + ) + time.sleep(wait_time) + + # existing_shm = SharedMemory(name=shm_name) + # shared_array = np.ndarray(frame_shape, dtype=np.uint8, buffer=existing_shm.buf) + # Map all 3 shared memory regions simultaneously + shm_blocks = [SharedMemory(name=name) for name in shm_names] + # from multiprocessing import resource_tracker + # for shm in shm_blocks: + # resource_tracker.unregister(shm._name, "shared_memory") + arrays = [ + np.ndarray(frame_shape, dtype=np.uint8, buffer=shm.buf) for shm in shm_blocks + ] + + write_idx = 0 + worker_frame_num = 0.0 + worker_next_process_idx = 0.0 + native_fps = cap.get(cv2.CAP_PROP_FPS) + step_size = float(native_fps) / float(target_fps) + + try: + while running_flag.value: + # 1. Check if this frame is a targeted frame before running heavy decode operations + is_target_frame = worker_frame_num >= worker_next_process_idx + worker_frame_num += 1.0 + + if not is_target_frame: + # Fast metadata-only skip: Zero heavy decode compute or CPU/GPU overhead + if not cap.grab(): + running_flag.value = False + break + continue + + ret, frame = cap.read() + if not ret or frame is None: + running_flag.value = False + break + + worker_next_process_idx += step_size + + # Prevent local files from overwriting unread ring buffer slots --- + if not str(source_input).lower().startswith("rtsp://"): + while buffer_occupancy.value >= 2 and running_flag.value: + pass + + # Dynamic Ring Buffer Selection: Identify free block + curr_latest = latest_idx.value + curr_reader = reader_idx.value + for idx in (0, 1, 2): + if idx != curr_latest and idx != curr_reader: + write_idx = idx + break - def read(self): - try: - # If the reader is stopped, don't wait a full second; - # check immediately to speed up the "Draining" phase. - wait_time = 0.1 if self.stopped else 2.0 - return self.frame_queue.get(timeout=wait_time) - except Exception: - return None, None + arrays[write_idx][:] = frame[:] + # Notify waiting processing loops without any polling latency + with frame_condition: + latest_idx.value = write_idx + raw_frame_counter.value += 1 + buffer_occupancy.value += 1 + frame_condition.notify_all() # Wake up all waiting reader threads instantly! -class CPUHybridReader(BaseReader): - """ - Decouples frame acquisition from processing. - Uses a background thread to ingest frames into a small deque, - preventing OpenCV buffer lag. - """ + except Exception: + running_flag.value = False + finally: + cap.release() + for shm in shm_blocks: + shm.close() + +class BaseReader: def __init__( self, source, @@ -128,77 +260,72 @@ def __init__( MODEL_W=BASE_PIPELINE_CONFIG.MODEL_W, MODEL_H=BASE_PIPELINE_CONFIG.MODEL_H, queue_size=2, - # as_tensor=False, ): - super().__init__( - source, - target_fps=target_fps, - clip_duration=clip_duration, - queue_size=queue_size, - ) - # self.as_tensor = as_tensor - target_fps, clip_duration = (self.target_fps, self.clip_duration) - # options = ( - # {"rtsp_transport": "tcp", "stimeout": "5000000"} - # if str(self.source).startswith("rtsp") - # else {} - # ) + self.source = source + self.is_rtsp = str(self.source).startswith("rtsp://") + self.frame_queue = queue.Queue(maxsize=queue_size) + self.stopped = False + self.total_input_frames = 0 # Increments by step size (Physical frames) + self.target_frames_passed = 0 # Increments sequentially (Target space frames) + # self.frame_idx = 0.0 + self.total_shm_copy_time = 0.0 + self.total_h2d_time = 0.0 + self.total_gpu_resize_time = 0.0 + self.total_d2h_time = 0.0 + self.total_queue_wait_time = 0.0 self.MODEL_H = MODEL_H self.MODEL_W = MODEL_W - self.device = "CPU" # Global from include.utils - self.target_frame_idx = 0 - self.cap = None + self.target_fps = ( + float(target_fps) if target_fps not in [None, 0] else target_fps + ) + self.clip_duration = ( + float(clip_duration) if clip_duration not in [None, 0] else clip_duration + ) + + probe_cap = None max_retries = 5 retry_cnt = 0 connected = False + # while probe_retry < max_retries: + # probe_cap = cv2.VideoCapture(self.source, cv2.CAP_FFMPEG) + # if probe_cap.isOpened(): + # break + # probe_retry += 1 + # if not self.is_rtsp: + # break + # wait_time = probe_retry * 2 + # main_app_logger.warning( + # f"Connection pending... Retry ({probe_retry}/{max_retries}) in {wait_time} seconds." + # ) + # time.sleep(wait_time) + while not connected and not self.stopped: try: - # Clean up stale capture descriptors safely to clear sockets - if self.cap is not None: - try: - self.cap.release() - except Exception: - pass - self.cap = None - - # Safely intercept capture context extraction layers - # Note: We pass self.source instead of recreating string evaluations - if not isinstance(self.source, cv2.VideoCapture): - params = [cv2.CAP_PROP_N_THREADS, 1] - test_cap = cv2.VideoCapture( - str(self.source), cv2.CAP_FFMPEG, params=params - ) - else: - test_cap = self.source - - if test_cap and test_cap.isOpened(): - # Validate that we can extract safe telemetry properties + probe_cap = cv2.VideoCapture(self.source, cv2.CAP_FFMPEG) + if probe_cap.isOpened(): self.get_fps_and_framecnt( - test_cap, self.target_fps, self.clip_duration + probe_cap, self.target_fps, self.clip_duration ) - self.frame_width = int(test_cap.get(cv2.CAP_PROP_FRAME_WIDTH)) - self.frame_height = int(test_cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) - self.numFrames = int(test_cap.get(cv2.CAP_PROP_FRAME_COUNT)) + self.frame_width = int(probe_cap.get(cv2.CAP_PROP_FRAME_WIDTH)) + self.frame_height = int(probe_cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) + self.numFrames = int(probe_cap.get(cv2.CAP_PROP_FRAME_COUNT)) if self.input_fps <= 0 or self.frame_width <= 0: raise RuntimeError( "VideoCapture opened but returned invalid stream properties." ) - - self.cap = test_cap self.get_frameWH() connected = True + probe_cap.release() else: raise RuntimeError( "OpenCV VideoCapture failed to open target URI resource context." ) - except Exception as e: retry_cnt += 1 self.init_error = str(e) - # Exit if local file resource or retry count exceeded if not self.is_rtsp or retry_cnt >= max_retries: main_app_logger.error( @@ -208,56 +335,125 @@ def __init__( self.stopped = True # Halt and exit the server immediately raise RuntimeError( - f"Critical CPU stream reader initialization failure: {self.init_error}" + f"Critical stream reader initialization failure: {self.init_error}" ) return wait_time = retry_cnt * 2 main_app_logger.warning( - f"CPU connection pending... Retry ({retry_cnt}/{max_retries}) in {wait_time} seconds." + f"Connection pending... Retry ({retry_cnt}/{max_retries}) in {wait_time} seconds." ) time.sleep(wait_time) - # self.cap = self._create_capture(target_fps, clip_duration) - self.cap.set(cv2.CAP_PROP_BUFFERSIZE, 1) # Force low latency - self.cap.set(cv2.CAP_PROP_HW_ACCELERATION, cv2.VIDEO_ACCELERATION_ANY) + # if probe_cap is None or not probe_cap.isOpened(): + # self.reconnect_failed = True + # self.stopped = True + # raise RuntimeError(f"OpenCV failed to open target resource: {self.source}") - # self.frame_queue = deque(maxlen=5) # Keep queue small to stay "real-time" - # self.frame_queue = queue.Queue(maxsize=5) - # self.stopped = False - # self.device = "CPU" # Global from include.utils - # self.frame_idx = 0 - # self.target_frame_idx = 0 - # self.frame_queue = queue.Queue(maxsize=30) - - def _create_capture(self, target_fps, clip_duration): - """Creates a VideoCapture with stable RTSP options.""" - # if not isinstance(self.source, cv2.VideoCapture): - # self.source = str(self.source) - # params = [cv2.CAP_PROP_N_THREADS, 1] - # cap = cv2.VideoCapture(self.source, cv2.CAP_FFMPEG, params=params) - # else: - # cap = self.source - # self.get_fps_and_framecnt(cap, target_fps, clip_duration) - # self.frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) - # self.frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) - # self.numFrames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT)) + # self.get_fps_and_framecnt(probe_cap, self.target_fps, self.clip_duration) + # self.frame_width = int(probe_cap.get(cv2.CAP_PROP_FRAME_WIDTH)) + # self.frame_height = int(probe_cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) + # self.numFrames = int(probe_cap.get(cv2.CAP_PROP_FRAME_COUNT)) # self.get_frameWH() - # return cap + # probe_cap.release() + + self.frame_shape = (self.frame_height, self.frame_width, 3) + self.frame_bytes = self.frame_width * self.frame_height * 3 + + num_shm_slots = 3 + self.shms = [ + SharedMemory(create=True, size=self.frame_bytes) + for _ in range(num_shm_slots) + ] + + # Unregister slots in the main process to eliminate leak warnings and KeyErrors cleanly + # from multiprocessing import resource_tracker + # for shm in self.shms: + # resource_tracker.unregister(shm._name, "shared_memory") + + self.running_flag = Value("b", True) + self.raw_frame_counter = Value("i", 0) + self.latest_idx = Value("i", 0) # Tracks the newest complete frame index + self.reader_idx = Value("i", -1) # Locks the frame currently being processed + shm_names = [shm.name for shm in self.shms] + # atomic counter to track unread slot density --- + self.buffer_occupancy = Value("i", 0) + + # Create a shared cross-process condition lock variable + self.frame_condition = Condition() + + self.worker = Process( + target=capture_shared_memory_worker, + args=( + self.source, + shm_names, + self.frame_shape, + self.running_flag, + self.raw_frame_counter, + self.latest_idx, + self.reader_idx, + self.frame_condition, + self.buffer_occupancy, + self.target_fps, + ), + daemon=True, + ) + self.worker.start() + time.sleep(2.5 if self.is_rtsp else 0.05) + + if not self.running_flag.value: + for shm in self.shms: + shm.close() + shm.unlink() + raise RuntimeError( + "Background worker process failed to map the stream link." + ) + + # self.shared_array_view = np.ndarray(self.frame_shape, dtype=np.uint8, buffer=self.shms.buf) + # self.static_buffer_numpy = np.empty(self.frame_shape, dtype=np.uint8) + + # self.thread = threading.Thread(target=self._processing_loop, daemon=True) + # self.thread.start() + + def read(self): + try: + wait_time = 0.1 if self.stopped else 2.0 + return self.frame_queue.get(timeout=wait_time) + except Exception: + return None, None, None + + def start(self): + self.thread = threading.Thread(target=self._processing_loop, daemon=True) + self.thread.start() + return self + + def stop(self): + self.stopped = True + if hasattr(self, "thread"): + self.thread.join(timeout=1.0) + for shm in self.shms: + try: + shm.close() + shm.unlink() + except Exception: + pass + + if hasattr(self, "bridge_thread"): + self.bridge_thread.join(timeout=1.0) - if isinstance(self.source, cv2.VideoCapture): - return self.source - params = [cv2.CAP_PROP_N_THREADS, 1] - return cv2.VideoCapture(str(self.source), cv2.CAP_FFMPEG, params=params) + if hasattr(self, "worker"): + self.worker.join(timeout=1.0) # Gets video details def get_fps_and_framecnt(self, cap, target_fps, clip_duration): - self.input_fps = int(cap.get(cv2.CAP_PROP_FPS)) # hardware fps + self.input_fps = cap.get(cv2.CAP_PROP_FPS) # hardware fps # print(f"in fps: {self.input_fps} target fps: {target_fps}") if self.input_fps == 0: # Case when FPS isn't available self.input_fps = manual_fps_calculation(cap, num_frames=10) print(f"new in fps: {self.input_fps}") - + self.numFrames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT)) + if not self.is_rtsp: + self.total_input_frames = self.numFrames # If the stream can't connect, stop immediately instead of calculating. if self.input_fps <= 0: raise RuntimeError( @@ -304,773 +500,427 @@ def get_frameWH(self): self.scale_x = self.frame_width / self.MODEL_W self.scale_y = self.frame_height / self.MODEL_H - def stream_frames(self): - """ - Continuously grabs frames. Throttles local files to maintain - the target FPS and manages RTSP reconnections. - """ - is_rtsp = str(self.source).startswith("rtsp") - max_retries = 5 - retry_cnt = 0 - - while not self.stopped: - try: - if self.cap is None or not self.cap.isOpened(): - if not is_rtsp: - self.stopped = True - break - try: - # Logic to recreate the VideoCapture - # self.cap = self._create_capture( - # self.target_fps, self.clip_duration - # ) - # self.cap.set(cv2.CAP_PROP_BUFFERSIZE, 1) - params = [cv2.CAP_PROP_N_THREADS, 1] - self.cap = cv2.VideoCapture( - str(self.source), cv2.CAP_FFMPEG, params=params - ) - self.cap.set(cv2.CAP_PROP_BUFFERSIZE, 1) - retry_cnt = 0 - except Exception: - retry_cnt += 1 - if retry_cnt >= max_retries: - self.stopped = True - break - - wait_time = retry_cnt * 2 - main_app_logger.warning( - f"CPU reconnect failed. Retry {retry_cnt} in {wait_time}s" - ) - time.sleep(wait_time) - continue - - # Fully decode this frame - ret, frame = self.cap.read() - if not ret: - if not is_rtsp: - self.stopped = True - break - - # If a live stream returns No Frame, don't just die—trigger a reconnect - main_app_logger.warning("No frame received. Attempting reconnect.") - if self.cap: - self.cap.release() - self.cap = None - continue - - # if self.as_tensor: - # frame_tensor = torch.from_numpy(frame) - - # # 3. Push to GPU memory immediately - # # non_blocking=True speeds up the host-to-device transfer - # frame_tensor = frame_tensor.to("cuda", non_blocking=True) - # # 4. Rearrange dimensions to PyTorch format: [H, W, C] -> [C, H, W] - # # .permute() changes layout; .float() converts uint8 to float32 for interpolation - # frame_tensor = frame_tensor.permute(2, 0, 1).float() - - # # 5. Add Batch dimension: [C, H, W] -> [1, C, H, W] - # frame_tensor = frame_tensor.unsqueeze(0) - - # # 6. Normalize pixel values to [0.0, 1.0] if required by your model - # frame = frame_tensor / 255.0 - - # self.frame_queue.put((frame, self.frame_idx)) - try: - self.frame_queue.put((frame, self.frame_idx), timeout=1.0) - except queue.Full: - try: - # Non-blocking pop to gracefully evict the oldest stale frame token - self.frame_queue.get_nowait() - except queue.Empty: - pass - self.frame_queue.put((frame, self.frame_idx)) - self.target_frame_idx += 1 - self.frame_idx += 1 - except Exception as e: - main_app_logger.error(f"CPU Reader error: {e}") - time.sleep(1) - - def release(self): - print("Closing HybridReader...") - self.stopped = True - - time.sleep(0.2) - if self.cap is not None and self.cap.isOpened(): - self.cap.release() - - -class GPUHybridReader(BaseReader): - """ - Encapsulates a Zero-Copy 8K video pipeline. - Bridges PyAV (Demuxing) and NVDEC (Hardware Decoding) directly to PyTorch. - """ +class CPUReader(BaseReader): + """Asynchronous CPU frame reader and processor utilizing AVX2 optimized OpenCV routines.""" def __init__( self, source, - gpu_id=0, target_fps=BASE_PIPELINE_CONFIG.TARGET_FPS, clip_duration=BASE_PIPELINE_CONFIG.CLIP_DURATION, MODEL_W=BASE_PIPELINE_CONFIG.MODEL_W, MODEL_H=BASE_PIPELINE_CONFIG.MODEL_H, queue_size=2, ): - global nvc + # self.source_input = source_input + # self.frame_queue = queue.Queue(maxsize=30) + # self.stopped = False + # self.total_shm_copy_time = 0.0 + # self.total_h2d_time = 0.0 + # self.total_gpu_resize_time = 0.0 + # self.total_d2h_time = 0.0 super().__init__( source, target_fps=target_fps, clip_duration=clip_duration, + MODEL_W=MODEL_W, + MODEL_H=MODEL_H, queue_size=queue_size, ) - if "PyNvVideoCodec" not in sys.modules: - try: - import PyNvVideoCodec as nvc + # self.MODEL_H = MODEL_H + # self.MODEL_W = MODEL_W + self.device = "CPU" - globals()["nvc"] = nvc + # self.shm = SharedMemory(create=True, size=self.frame_bytes) + # self.running_flag = Value('b', True) - except ImportError: - raise ImportError( - "GPUHybridReader requires PyNvVideoCodec. Please install." - ) - - self.gpu_id = gpu_id - self.container = None - self.nv_dec = None - self.bsf = None - - # --- Initialize CUDA Context & Bridge --- - torch.cuda.set_device(self.gpu_id) - torch.cuda.init() - _ = torch.zeros(1).cuda() # Force context creation - - # self.is_opened = self.open(target_fps, clip_duration) - self.cuda_lib = ctypes.CDLL("libcuda.so.1") - ctx = ctypes.c_void_p() - self.cuda_lib.cuCtxGetCurrent(ctypes.byref(ctx)) - self.cuda_ctx_handle = ctx.value if ctx.value is not None else 0 - - self.cuda_lib.cuCtxSetCurrent(ctypes.c_void_p(self.cuda_ctx_handle)) - target_fps, clip_duration = (self.target_fps, self.clip_duration) - self.av_options = ( - { - # "rtsp_transport": "tcp", - # "stimeout": "2000000", # 2s - # "probesize": "10000000", # "32000000", # 32MB for 8K - # "analyzeduration": "5000000", - # "buffer_size": "10240000", # 10MB socket buffer - "rtsp_transport": "tcp", - "stimeout": "2000000", - "timeout": "2000000", - "rw_timeout": "2000000", - "err_detect": "explode", - "flags": "discardcorrupt", - "probesize": "32000000", - "analyzeduration": "32000000", - } - if str(self.source).startswith("rtsp") - else {} - ) - - # try: - # self.container = av.open( - # self.source, - # options={ - # **self.av_options, - # "err_detect": "ignore_err", # Don't stop demuxing on minor packet errors - # "flags": "low_delay", # Reduce internal buffering - # }, + # self.worker = Process( + # target=capture_shared_memory_worker, + # args=(self.source_input, self.shm.name, self.frame_shape, self.running_flag), + # daemon=True # ) - # self.container.streams.video[0].thread_type = 'AUTO' - # streams = self.container.streams.get(video=0) - # self.stream = streams[0] if isinstance(streams, list) else streams + # # self.worker.start() + # time.sleep(2.5) # Warm up wait window + + # if not self.running_flag.value: + # self.shm.close() + # self.shm.unlink() + # raise RuntimeError("Background worker process failed to map the stream link.") + + # self.shared_array_view = np.ndarray(self.frame_shape, dtype=np.uint8, buffer=self.shm.buf) + self.static_buffer_numpy = np.empty(self.frame_shape, dtype=np.uint8) + + # self.thread = threading.Thread(target=self._processing_loop, daemon=True) + # self.thread.start() + + def _processing_loop(self): + # target_fps = 15.0 + # frame_num = 0.0 + # next_process_idx = 0.0 + # step_size = float(self.input_fps) / float(self.target_fps) + # # self.total_queue_wait_time = 0.0 + + # # Base loop pacing on the native camera interval (e.g., 33.3ms for 30 FPS) + # inbound_frame_interval = 1.0 / float(self.input_fps) + last_processed_shm_idx = -1 + while not self.stopped: # and self.running_flag.value: + # loop_start = time.perf_counter() + # is_target_frame = (frame_num >= next_process_idx) + + # frame_num += 1.0 + + # if not is_target_frame: + # continue + + with self.frame_condition: + # Thread sleeps instantly until the background worker calls notify_all() + # self.frame_condition.wait(timeout=1.0) + # Only wait if the background worker hasn't delivered a new index yet + while ( + self.latest_idx.value == last_processed_shm_idx and not self.stopped + ): + if not self.frame_condition.wait(timeout=0.05): + if ( + not self.running_flag.value + and self.latest_idx.value == last_processed_shm_idx + ): + self.stopped = True + break + continue + if self.stopped: + break - self.get_stream() + active_idx = self.latest_idx.value + self.reader_idx.value = active_idx + last_processed_shm_idx = active_idx + + # Signal the worker that a slot has cleared up losslessly --- + self.buffer_occupancy.value = max(0, self.buffer_occupancy.value - 1) + + # is_target_frame = (frame_num >= next_process_idx) + # Reconstruct source frame position using step spacing ratio + # if self.numFrames != 0: + # self.total_input_frames = int( + # self.target_frames_passed * getattr(self, "frame_skip", 1) + # ) + if self.is_rtsp: + self.total_input_frames = int(self.raw_frame_counter.value) + + # Update counters inside target_fps space loop execution + self.target_frames_passed += 1 + + # if not is_target_frame: + # continue + + # # Check if frame is a target frame before heavy operations + # # if frame_num >= next_process_idx: + # next_process_idx += step_size + + t_copy = time.perf_counter() + # np.copyto(self.static_buffer_numpy, self.shared_array_view) + # Zero-Copy Pointer Swap: lock the latest completed buffer index + # active_idx = self.latest_idx.value + # self.reader_idx.value = active_idx + # last_processed_shm_idx = active_idx + + # # Signal the worker that a slot has cleared up losslessly --- + # self.buffer_occupancy.value = max(0, self.buffer_occupancy.value - 1) + + # Wrap an array view directly around the locked active SHM region + active_shm = self.shms[active_idx] + frame_view = np.ndarray( + self.frame_shape, dtype=np.uint8, buffer=active_shm.buf + ) + self.total_shm_copy_time += time.perf_counter() - t_copy - # Map Codec - codec_map = {"hevc": nvc.cudaVideoCodec.HEVC, "h264": nvc.cudaVideoCodec.H264} - self.nvc_codec = codec_map.get( - self.stream.codec_context.name, nvc.cudaVideoCodec.HEVC - ) + if not self.is_rtsp or not self.frame_queue.full(): + t_queue_block = time.perf_counter() + # self.frame_queue.put((True, cpu_360p_frame)) + self.frame_queue.put( + (True, frame_view, self.target_frames_passed) + ) # self.static_buffer_numpy.copy())) + self.total_queue_wait_time += time.perf_counter() - t_queue_block - # self.stream_width = self.stream.width - # self.stream_height = self.stream.height + # frame_num += 1.0 - self.frame_width = self.true_width - self.frame_height = self.true_height + # Keep the reader thread aligned with target ingestion speeds + # elapsed = time.perf_counter() - loop_start + # time_to_wait = inbound_frame_interval - elapsed + # if time_to_wait > 0: + # time.sleep(time_to_wait) - self.input_fps = self.metadata_fps + # self.frame_idx = frame_num + # self.running_flag.value = False - self.target_fps = ( - target_fps - if target_fps not in [None, 0] and self.input_fps > target_fps - else self.input_fps - ) - if self.input_fps > 0 and self.target_fps > 0: - self.frame_skip = max(1, int(self.input_fps / self.target_fps)) - else: - self.frame_skip = 1 - self.max_frames_per_clip = ( - None - if clip_duration is None - else int(self.target_fps * float(clip_duration)) - ) - self.frame_interval = 1.0 / self.target_fps - self.numFrames = self.total_frames +class GPUReader(BaseReader): + """Asynchronous GPU frame reader leveraging Pinned Host Memory and PyTorch CUDA tensors.""" - self.raw_input = torch.empty( - (self.frame_height, self.frame_width, 3), dtype=torch.uint8, device="cuda" + def __init__( + self, + source, + gpu_id=1, # 0, + target_fps=BASE_PIPELINE_CONFIG.TARGET_FPS, + clip_duration=BASE_PIPELINE_CONFIG.CLIP_DURATION, + MODEL_W=BASE_PIPELINE_CONFIG.MODEL_W, + MODEL_H=BASE_PIPELINE_CONFIG.MODEL_H, + queue_size=2, + ): + # self.source_input = source_input + # self.frame_queue = queue.Queue(maxsize=30) + # self.stopped = False + # self.total_shm_copy_time = 0.0 + # self.total_h2d_time = 0.0 + # self.total_gpu_resize_time = 0.0 + # self.total_d2h_time = 0.0 + super().__init__( + source, + target_fps=target_fps, + clip_duration=clip_duration, + MODEL_W=MODEL_W, + MODEL_H=MODEL_H, + queue_size=queue_size, ) - self.sync_locked = True - def get_stream(self): - max_retries = 5 - retry_cnt = 0 - connected = False - is_rtsp = str(self.source).startswith("rtsp") - - while not connected: - try: - self.container = av.open( - self.source, - options={ - **self.av_options, - "err_detect": "ignore_err", # Don't stop demuxing on minor packet errors - "flags": "low_delay", # Reduce internal buffering - }, - ) - self.container.streams.video[0].thread_type = "AUTO" - streams = self.container.streams.get(video=0) - self.stream = streams[0] if isinstance(streams, list) else streams + self.gpu_id = gpu_id + self.device = torch.device(f"cuda:{gpu_id}") - if self.stream: - self.stream_width = self.stream.width - self.stream_height = self.stream.height - connected = True + # self.shm = SharedMemory(create=True, size=self.frame_bytes) + # self.running_flag = Value('b', True) - except Exception as e: - retry_cnt += 1 - self.init_error = str(e) + # self.worker = Process( + # target=capture_shared_memory_worker, + # args=(self.source_input, self.shm.name, self.frame_shape, self.running_flag), + # daemon=True + # ) + # self.worker.start() + # time.sleep(2.5) # Warm up wait window + + # if not self.running_flag.value: + # self.shm.close() + # self.shm.unlink() + # raise RuntimeError("Background worker process failed to map the stream link.") + + # self.shared_array_view = np.ndarray(self.frame_shape, dtype=np.uint8, buffer=self.shm.buf) + + # Reusable hardware space optimizations + # self.static_buffer_tensor = torch.empty(self.frame_shape, dtype=torch.uint8, pin_memory=True) + # self.static_buffer_numpy = self.static_buffer_tensor.numpy() + # Reusable double-buffered hardware space optimizations + # self.static_buffer_tensors = [ + # torch.empty(self.frame_shape, dtype=torch.uint8, pin_memory=True), + # torch.empty(self.frame_shape, dtype=torch.uint8, pin_memory=True) + # ] + # self.static_buffer_numpys = [t.numpy() for t in self.static_buffer_tensors] + # self.buffer_selector = 0 # Alternates between 0 and 1 + self.upload_stream = torch.cuda.Stream(device=self.device) + + self.download_stream = torch.cuda.Stream(device=self.device) + self.d2h_buffers = [ + torch.empty((360, 640, 3), dtype=torch.uint8, pin_memory=True), + torch.empty((360, 640, 3), dtype=torch.uint8, pin_memory=True), + ] + self.d2h_numpys = [b.numpy() for b in self.d2h_buffers] + self.d2h_selector = 0 + + # Reusable hardware space optimizations using OS-level Page-Locking + try: + self.cudart = ctypes.CDLL("libcudart.so") # Linux + except OSError: + self.cudart = ctypes.CDLL("cudart64_120.dll") # Windows - if not is_rtsp or retry_cnt >= max_retries: - main_app_logger.error( - f"Critical: Could not open/connect to {self.source}" - ) - self.reconnect_failed = True - self.stopped = True - # Halt and exit the server immediately - raise RuntimeError( - f"Critical GPU stream reader initialization failure: {self.init_error}" - ) - return + self.pinned_views = [] + cudaHostRegisterPortable = 0x01 # Visible to all CUDA contexts - wait_time = retry_cnt * 2 - main_app_logger.warning( - f"GPU connection pending... Retry ({retry_cnt}/{max_retries}) in {wait_time} seconds." - ) - time.sleep(wait_time) + # Permanently register and create zero-copy tensor views over all 3 SHM allocations + for shm in self.shms: + # 1. Create a ctypes character array mapping directly onto the memoryview buffer + ctypes_array = (ctypes.c_char * self.frame_bytes).from_buffer(shm.buf) - def stream_frames(self): - """ - Universal background thread for 8K video. - - RTSP: Reconnects automatically if the stream drops. - - Files: Processes until EOF and then stops cleanly. - """ - is_rtsp = str(self.source).startswith("rtsp") - max_retries = 5 - retry_cnt = 0 + # 2. Extract the true virtual memory address pointer from the ctypes overlay + shm_ptr = ctypes.c_void_p(ctypes.addressof(ctypes_array)) - # The outer while loop allows RTSP to recover from network hiccups - while not self.stopped: - try: - # Ensure the container and decoder are active - # For RTSP, if the demuxer loop below exits, we re-verify the connection here - if self.container is None: - try: - self.container = av.open( - self.source, - options={ - **self.av_options, - "err_detect": "explode", # Don't stop demuxing on minor packet errors - "flags": "low_delay", # Reduce internal buffering - }, - ) - retry_cnt = 0 - except Exception as e: - retry_cnt += 1 - if retry_cnt >= max_retries: - # Catch the 404 and stop the thread instead of retrying - main_app_logger.info( - f"Stream {self.source} ended or not found. Closing reader." - ) + # 3. Pin the raw memory chunk inside the OS page tracking tables + res = self.cudart.cudaHostRegister( + shm_ptr, self.frame_bytes, cudaHostRegisterPortable + ) + if res != 0: + raise RuntimeError(f"cudaHostRegister failed with status code: {res}") + + # 4. Create a high-speed zero-copy NumPy -> Torch wrapper view over that allocation + shm_numpy = np.ndarray(self.frame_shape, dtype=np.uint8, buffer=shm.buf) + shm_tensor = torch.from_numpy(shm_numpy) + self.pinned_views.append(shm_tensor) + + # self.thread = threading.Thread(target=self._processing_loop, daemon=True) + # self.thread.start() + + def _processing_loop(self): + # target_fps = 15.0 + # frame_num = 0.0 + # next_process_idx = 0.0 + # step_size = float(self.input_fps) / float(self.target_fps) + # # self.total_queue_wait_time = 0.0 + + # # Base loop pacing on the native camera interval (e.g., 33.3ms for 30 FPS) + # inbound_frame_interval = 1.0 / float(self.input_fps) + last_processed_shm_idx = -1 + torch.cuda.synchronize(self.device) + + while not self.stopped: # and self.running_flag.value: + # loop_start = time.perf_counter() + # is_target_frame = (frame_num >= next_process_idx) + + # # Central timeline step tracking + # frame_num += 1.0 + + # if not is_target_frame: + # continue + + with self.frame_condition: + # Thread sleeps instantly until the background worker calls notify_all() + # self.frame_condition.wait(timeout=1.0) + # Only wait if the background worker hasn't delivered a new index yet + while ( + self.latest_idx.value == last_processed_shm_idx and not self.stopped + ): + if not self.frame_condition.wait(timeout=0.05): + if ( + not self.running_flag.value + and self.latest_idx.value == last_processed_shm_idx + ): self.stopped = True break - wait_time = retry_cnt * 2 - main_app_logger.warning( - f"Connection failed ({e}). Retry {retry_cnt}/{max_retries} in {wait_time}s..." - ) - time.sleep(wait_time) continue - - streams = self.container.streams.get(video=0) - self.stream = streams[0] if isinstance(streams, list) else streams - - # INITIALIZE DECODER if missing (Fixes the NoneType Error) - if self.nv_dec is None: - # Sync with PyTorch - self.cuda_lib.cuCtxSetCurrent(ctypes.c_void_p(self.cuda_ctx_handle)) - torch_stream = torch.cuda.current_stream().cuda_stream - - # Detect Codec - codec_map = { - "hevc": nvc.cudaVideoCodec.HEVC, - "h264": nvc.cudaVideoCodec.H264, - } - nvc_codec = codec_map.get( - self.stream.codec_context.name, nvc.cudaVideoCodec.HEVC - ) - - # Professional cards often support 8K HEVC but are capped at 4K for H.264 - if nvc_codec == nvc.cudaVideoCodec.HEVC: - # Use 8K limits for HEVC - hw_max_w, hw_max_h = 8192, 4320 - else: - # Safely default to 4K limits for H.264 and other codecs - hw_max_w, hw_max_h = 4096, 4096 - - # Ensure max dimensions are at least as large as current stream - hw_max_w = max(hw_max_w, self.stream_width) - hw_max_h = max(hw_max_h, self.stream_height) - - # Determine if the library build supports Ultra Low Latency enums. - try: - latency_mode = nvc.DisplayDecodeLatencyType.ULTRA_LOW_LATENCY - except AttributeError: - latency_mode = nvc.DisplayDecodeLatencyType.NATIVE - - self.nv_dec = nvc.CreateDecoder( - gpuid=self.gpu_id, - codec=nvc_codec, - cudacontext=int(self.cuda_ctx_handle), - cudastream=int(torch_stream), - usedevicememory=1, - maxwidth=hw_max_w, # Force 8K profile support - maxheight=hw_max_h, - latency=latency_mode, - ) - - # Re-initialize BitStream Filter for this session - bsf_map = {"hevc": "hevc_mp4toannexb", "h264": "h264_mp4toannexb"} - bsf_name = bsf_map.get(self.stream.codec_context.name) - local_bsf = ( - av.BitStreamFilterContext(bsf_name, self.stream) - if bsf_name - else None - ) - - target_fps, clip_duration = (self.target_fps, self.clip_duration) - self.stream_width = self.stream.width - self.stream_height = self.stream.height - self.frame_width = self.true_width - self.frame_height = self.true_height - self.input_fps = self.metadata_fps - self.target_fps = ( - target_fps - if target_fps not in [None, 0] and self.input_fps > target_fps - else self.input_fps - ) - if self.input_fps > 0 and self.target_fps > 0: - self.frame_skip = max(1, int(self.input_fps / self.target_fps)) - else: - self.frame_skip = 1 - self.max_frames_per_clip = ( - None - if clip_duration is None - else int(self.target_fps * float(clip_duration)) - ) - self.frame_interval = 1.0 / self.target_fps - self.numFrames = self.total_frames - - self.is_h264_8k = ( - self.stream.codec_context.name == "h264" - and self.stream_width > 4096 - ) - - # --- PATH A: H.264 8K CPU Fallback --- - if self.is_h264_8k: - print( - f"[INFO] Starting CPU-Decode Fallback for {self.source}", - flush=True, - ) - for frame in self.container.decode(video=0): - # if self.stopped: - # break - - # img_array = frame.to_ndarray(format="rgb24") - img_array = frame.to_ndarray(format="bgr24") - # gpu_tensor = ( - # torch.from_numpy(img_array).to("cuda").permute(2, 0, 1) - # ) - self.raw_input.copy_(torch.from_numpy(img_array)) - gpu_tensor = self.raw_input.permute(2, 0, 1) - - # CRITICAL FIX: Break the shared buffer pointer! - # Clones the frame to a private memory block before queueing it. - safe_frame = gpu_tensor.clone().contiguous() - - self.frame_queue.put((safe_frame, self.frame_idx)) - self.frame_idx += 1 - - # if not is_rtsp and self.frame_idx >= 500: - # break # File test limit - - # --- PATH B: HEVC Hardware Acceleration (15 FPS Path) --- - else: - print( - f"[INFO] Starting HW-Accelerated Pump for {self.source}", - flush=True, - ) - # Create an explicit stream packet extractor to isolate bitstream errors - packet_iterator = self.container.demux(self.stream) - - while not self.stopped: - try: - packet = next(packet_iterator) - except (ValueError, OSError, StopIteration): - break - - # Check for corruption/validity safely - is_broken = packet.size == 0 or packet.dts is None - # is_broken = ( - # is_broken - # or getattr(packet, "corrupt", False) - # or getattr(packet, "is_corrupt", False) - # ) - - if is_broken: - # main_app_logger.warning("[WARNING] Corrupt packet detected. Locking sync.") - # self.sync_locked = True - continue - - # ─── OPTIMIZED HARDWARE SYNCHRONIZATION BARRIER ────────────────── - if self.sync_locked: - # Rely explicitly on PyAV header flag definitions instead of packet.size - if getattr(packet, "is_keyframe", False): - main_app_logger.info( - "[SYNC] Valid hardware keyframe intercepted. Unlocking decoder track." - ) - self.sync_locked = False - else: - # Drop incomplete frames to prevent hardware canvas corruption - continue - # ───────────────────────────────────────────────────────────────── - # if self.stopped: - # break - if packet.size == 0 or packet.dts is None: - continue - - # Apply Annex B filter - filtered_packets = ( - local_bsf.filter(packet) if local_bsf else [packet] - ) - - for filtered_packet in filtered_packets: - if self.sync_locked: - continue - - if filtered_packet.size < 10: - continue - - pkt_bytes = bytes(filtered_packet) - # Extract raw memory address from the numpy tuple - ptr_info = np.frombuffer( - pkt_bytes, dtype=np.uint8 - ).__array_interface__["data"] - addr = ( - ptr_info[0] - if isinstance(ptr_info, (tuple, list)) - else ptr_info - ) - nvc_packet = nvc.PacketData() - nvc_packet.bsl_data = int(addr) - nvc_packet.bsl = filtered_packet.size - - try: - for decoded_frame in self.nv_dec.Decode(nvc_packet): - try: - # Zero-Copy Bridge: Hardware Surface -> PyTorch Tensor - gpu_tensor = torch.from_dlpack(decoded_frame) - # 2. CONVERSION: Turn NV12 [YUV] into BGR immediately - converted_bgr = self.nv12_to_bgr_reader( - gpu_tensor - ) - - # CRITICAL FIX: Force a brand-new, isolated memory block allocation - # on the GPU so the decoder cannot overwrite this frame's pixels - # while downstream threads are analyzing the mask. - safe_frame = converted_bgr.clone().contiguous() - - while not self.stopped: - try: - self.frame_queue.put( - ( - safe_frame, - self.frame_idx, - ), - timeout=0.1, - ) - break - except queue.Full: - try: - self.frame_queue.get_nowait() - except queue.Empty: - pass - torch.cuda.current_stream().synchronize() - self.frame_idx += 1 - except ( - av.FFmpegError, - av.InvalidDataError, - RuntimeError, - ) as decode_fault: - main_app_logger.warning( - f"Isolating corrupt video packet fragment: {decode_fault}" - ) - if hasattr(decoded_frame, "Unlock"): - decoded_frame.Unlock() - continue - finally: - # Immediate VRAM Cleanup - if "gpu_tensor" in locals(): - del gpu_tensor - if hasattr(decoded_frame, "Unlock"): - decoded_frame.Unlock() - del decoded_frame - - except Exception as e: - self.sync_locked = True - if any(c in str(e) for c in ["700", "208"]): - self.nv_dec = None - break - # if not is_rtsp and self.frame_idx >= 500: - # break # File test limit - - # --- UNIVERSAL EXIT LOGIC --- - if not is_rtsp: - print( - f"[DEBUG] Reached End of File: {self.source}. Exiting thread.", - flush=True, - ) - self.stopped = True + if self.stopped: break - else: - # If we reach here and it's RTSP, the demuxer stopped yielding - print( - "[WARNING] RTSP glitch detected. Closing container and retrying...", - flush=True, - ) - if self.container: - # Explicitly flush streams before closing - for s in self.container.streams: - s.codec_context.flush_buffers() - self.container.close() - self.container = None - - if local_bsf: - try: - local_bsf.filter(None) - except Exception: - pass - - # Force close the C++ decoder context layer before resetting the pointer - if self.nv_dec is not None: - try: - if hasattr(self.nv_dec, "Close"): - self.nv_dec.Close() - except Exception: - pass - del self.nv_dec - - torch.cuda.synchronize() - torch.cuda.empty_cache() - self.nv_dec = None - while not self.frame_queue.empty(): - try: - self.frame_queue.get_nowait() - except Exception: - break - time.sleep(0.5) # Wait before reconnection attempt - except Exception as e: - print(f"[EXCEPTION] Reader Thread Failure: {e}", flush=True) - traceback.print_exc() - if not is_rtsp: - self.stopped = True - break + active_idx = self.latest_idx.value + self.reader_idx.value = active_idx + last_processed_shm_idx = active_idx + + # Update counters inside target_fps space loop execution + self.target_frames_passed += 1 + + # Reconstruct source frame position using step spacing ratio + # if self.numFrames != 0: + # self.total_input_frames = int( + # self.target_frames_passed * getattr(self, "frame_skip", 1) + # ) + if self.is_rtsp: + self.total_input_frames = int(self.raw_frame_counter.value) + + # Signal the worker that a slot has cleared up losslessly --- + self.buffer_occupancy.value = max(0, self.buffer_occupancy.value - 1) + + # is_target_frame = (frame_num >= next_process_idx) + + # if not is_target_frame: + # continue + + # # Check if frame is a target frame before heavy operations + # # if frame_num >= next_process_idx: + # next_process_idx += step_size + + t_copy = time.perf_counter() + # np.copyto(self.static_buffer_numpy, self.shared_array_view) + # Zero-Copy Pointer Swap: lock the latest completed buffer index + # active_idx = self.latest_idx.value + # self.reader_idx.value = active_idx + # last_processed_shm_idx = active_idx + + # # Signal the worker that a slot has cleared up losslessly --- + # self.buffer_occupancy.value = max(0, self.buffer_occupancy.value - 1) + + # Wrap an array view directly around the locked active SHM region + # active_shm = self.shms[active_idx] + # frame_view = np.ndarray(self.frame_shape, dtype=np.uint8, buffer=active_shm.buf) + + # Select the current active buffer slot + # buf_idx = self.buffer_selector + # current_numpy_buf = self.static_buffer_numpys[buf_idx] + # current_tensor_buf = self.static_buffer_tensors[buf_idx] + + # np.copyto(current_numpy_buf, frame_view) + current_tensor_view = self.pinned_views[active_idx] + self.total_shm_copy_time += time.perf_counter() - t_copy + + # if self.frame_queue.full() and self.is_rtsp: + # # If the consumer loop is dragging, discard this frame instantly + # # without allocating any memory or touching the PCIe bus. + # return + + # ASYNCHRONOUS PCIe UPLOAD (Only runs for target frames) + t_h2d = time.perf_counter() + + # Isolate the PCIe upload onto its own dedicated side hardware stream + # with torch.cuda.stream(self.upload_stream): + # compute_tensor = self.static_buffer_tensor.to(self.device, non_blocking=True) + # Upload directly from the selected zero-copy host view area + # compute_tensor = torch.from_numpy(frame_view).to(self.device, non_blocking=True) + # compute_tensor = current_tensor_buf.to(self.device, non_blocking=True) + + # Transfer the raw [H, W, 3] uint8 tensor to VRAM via DMA copy + compute_tensor = current_tensor_view.to(self.device, non_blocking=True) + bgr_tensor = compute_tensor[:, :, [2, 1, 0]].contiguous() + # torch.cuda.synchronize(self.device) + self.total_h2d_time += time.perf_counter() - t_h2d + + # self.buffer_selector = 1 - self.buffer_selector + + # if not self.is_rtsp or not self.frame_queue.full(): + t_queue_block = time.perf_counter() + # Record an event on the stream and make the main thread wait for it asynchronously + current_event = torch.cuda.Event() + current_event.record(self.upload_stream) + # current_event.wait() + torch.cuda.current_stream().wait_event(current_event) + + # self.frame_queue.put((True, cpu_360p_frame)) + self.frame_queue.put( + (True, bgr_tensor.detach(), self.target_frames_passed) + ) # .clone())) + self.total_queue_wait_time += time.perf_counter() - t_queue_block + + # frame_num += 1.0 + # self.frame_idx += 1 + + # Keep the reader thread aligned with target ingestion speeds + # elapsed = time.perf_counter() - loop_start + # time_to_wait = inbound_frame_interval - elapsed + # if time_to_wait > 0: + # time.sleep(time_to_wait) + # Explicitly delete frame variables to free their references + if "compute_tensor" in locals(): + del compute_tensor + + # Force PyTorch's internal allocator to release cached segments back to the OS + # torch.cuda.empty_cache() + # torch.cuda.ipc_collect() + + # self.frame_idx = frame_num + # self.running_flag.value = False - self.sync_locked = True - if self.nv_dec is not None: - try: - # Force a hardware surface close step to release hardware rings instantly - if hasattr(self.nv_dec, "Close"): - self.nv_dec.Close() - except Exception: - pass - del self.nv_dec - - # Force CUDA to synchronize and clear driver error state flags safely - torch.cuda.synchronize() - torch.cuda.empty_cache() - self.nv_dec = None - time.sleep(1.0) # Backoff for RTSP reconnection + def stop(self): + """Cleanly unregisters the locked memory mapping blocks from the OS page table.""" + if hasattr(self, "cudart") and hasattr(self, "shms"): + import ctypes - self.stopped = True + for shm in self.shms: + # 1. Safely bind ctypes to the underlying memory view structure + ctypes_array = (ctypes.c_char * self.frame_bytes).from_buffer(shm.buf) - def release(self): - """Safely flushes the decoder and closes the connection.""" - print("Closing HybridReader...") - self.stopped = True # Signal thread to stop - time.sleep(0.5) + # 2. Extract the address pointer + shm_ptr = ctypes.c_void_p(ctypes.addressof(ctypes_array)) - if self.nv_dec and self.frame_idx > 0: - try: - self.nv_dec.Decode(nvc.PacketData()) # Flush - del self.nv_dec - self.nv_dec = None - except Exception: - pass - if self.container: - self.container.close() - self.container = None - - # def nv12_to_bgr_reader(self, nv12_tensor): # , h, w, is_8k=False): - # """Internal reader helper to convert raw hardware surfaces to BGR.""" - # h, w = self.frame_height, self.frame_width - # is_8k = self.is_h264_8k - # with torch.no_grad(): - # if is_8k: - # # 8K Path: Extract and unzipper interleaved UV - # y = nv12_tensor[0:1, :, :].half() - # uv_raw = nv12_tensor[1:2, :, :].half() - # u = uv_raw[:, :, 0::2] - # v = uv_raw[:, :, 1::2] - # u = F.interpolate(u.unsqueeze(0), size=(h, w), mode="nearest").squeeze( - # 0 - # ) - # v = F.interpolate(v.unsqueeze(0), size=(h, w), mode="nearest").squeeze( - # 0 - # ) - # else: - # # Standard NV12 Path - # y = nv12_tensor[:h, :w].unsqueeze(0).half() - - # uv = ( - # nv12_tensor[h:, :w] - # .reshape(h // 2, w // 2, 2) - # .permute(2, 0, 1) - # .unsqueeze(0) - # .half() - # ) - # uv_up = F.interpolate(uv, size=(h, w), mode="nearest") - # u, v = uv_up[0, 0:1, :, :], uv_up[0, 1:2, :, :] - - # # BT.709 Math (Natural Color) - # y = (y - 16.0) * 1.164 - # u, v = u - 128.0, v - 128.0 - - # r = y + 1.793 * v - # g = y - 0.213 * u - 0.533 * v - # b = y + 2.112 * u - - # # Stack as BGR [B, G, R] for OpenCV/Browser compatibility - # return torch.cat([b, g, r], dim=0).clamp(0, 255).to(torch.uint8) - - def nv12_to_bgr_reader(self, nv12_tensor): - """Internal reader helper to convert raw hardware surfaces to BGR.""" - h, w = self.frame_height, self.frame_width - is_8k = self.is_h264_8k - - # EXTRACT TRUE STRIDE: Get the actual hardware allocation width - # which includes the hidden byte-alignment padding columns. - stride_w = nv12_tensor.shape[1] - - with torch.no_grad(): - if is_8k: - # 8K Path: Slice using stride_w, then strip padding out cleanly - y = nv12_tensor[0:1, :, :stride_w].half() - uv_raw = nv12_tensor[1:2, :, :stride_w].half() - u = uv_raw[:, :, 0::2] - v = uv_raw[:, :, 1::2] - u = F.interpolate(u.unsqueeze(0), size=(h, w), mode="nearest").squeeze( - 0 - ) - v = F.interpolate(v.unsqueeze(0), size=(h, w), mode="nearest").squeeze( - 0 - ) - else: - # Standard NV12 Path - # 1. Slice using the full hardware stride_w to preserve vertical row boundaries - y_padded = nv12_tensor[:h, :stride_w].half() - uv_padded = nv12_tensor[h:, :stride_w].half() - - # 2. Crop out the hardware padding columns horizontally to get clean spatial grids - y = y_padded[:, :w].unsqueeze(0) - - uv = ( - uv_padded[:, :w] - .reshape(h // 2, w // 2, 2) - .permute(2, 0, 1) - .unsqueeze(0) - ) - uv_up = F.interpolate(uv, size=(h, w), mode="nearest") - u, v = uv_up[0, 0:1, :, :], uv_up[0, 1:2, :, :] - - # BT.709 Math (Natural Color) - y = (y - 16.0) * 1.164 - u, v = u - 128.0, v - 128.0 - - r = y + 1.793 * v - g = y - 0.213 * u - 0.533 * v - b = y + 2.112 * u - - # Stack as BGR [B, G, R] - out_tensor = torch.cat([b, g, r], dim=0).clamp(0, 255).to(torch.uint8) - - # CRITICAL PIECE: Force memory to be completely linear and sequentially packed - # before it enters the queue or gets sliced by the sub-frame window pipeline - return out_tensor.contiguous() - - @property - def true_height(self): - """ - Returns the logical video height. - Handles cases where metadata might report the 1.5x NV12 buffer height. - """ - # if self.nv_dec: - # return int(self.nv_dec.Height()) # Get from decoder instead of stream - # return int(self.stream.height) # / 1.5) - return self.stream.height if self.stream else 0 - - @property - def true_width(self): - # if self.nv_dec: - # return self.nv_dec.Width() - # return self.stream.width - return self.stream.width if self.stream else 0 - - @property - def metadata_fps(self): - """Returns the FPS defined in the video metadata/header.""" - if self.stream and self.stream.average_rate: - return float(self.stream.average_rate) - return 0.0 - - @property - def total_frames(self): - """Returns the total number of frames defined in the file metadata.""" - if self.stream: - # Check nb_frames first - if self.stream.frames > 0: - return self.stream.frames - return 0 # Returns 0 for live streams or files with missing metadata + # 3. Unregister the address safely from the OS tables + self.cudart.cudaHostUnregister(shm_ptr) + + try: + shm.close() + shm.unlink() + except Exception: + pass + super().stop() diff --git a/fastapi/include/utils.py b/fastapi/include/utils.py index 0cae055..f843766 100644 --- a/fastapi/include/utils.py +++ b/fastapi/include/utils.py @@ -3,6 +3,7 @@ import os import queue import subprocess +import threading import time import traceback from dataclasses import dataclass @@ -40,6 +41,7 @@ DISPLAY_FRAME_SIZE, ENABLE_QUERYING_DEFAULT, INGESTION_DEFAULT, + IOU_THRESHOLD_DEFAULT, MAX_DETECTIONS, MAX_WORKERS, MODEL_H, @@ -159,6 +161,7 @@ def __init__(self, **kwargs): self.DETECTION_THRESHOLD = float( kwargs.get("DETECTION_THRESHOLD", DETECTION_THRESHOLD_DEFAULT) ) + self.IOU_THRESHOLD = float(kwargs.get("IOU_THRESHOLD", IOU_THRESHOLD_DEFAULT)) self.MAX_DETECTIONS = int(kwargs.get("MAX_DETECTIONS", MAX_DETECTIONS)) self.MODEL_H = int(kwargs.get("MODEL_H", MODEL_H)) self.MODEL_W = int(kwargs.get("MODEL_W", MODEL_W)) @@ -271,6 +274,264 @@ def return_connection(self, conn): self.pool.put(conn) +class AsyncVideoWriter: + """Handles disk saving operations asynchronously on a background thread.""" + + def __init__(self, path, fourcc, fps, size): + self.writer = cv2.VideoWriter(path, fourcc, fps, size) + self.queue = queue.Queue() + self.running = True + self.thread = threading.Thread(target=self._write_loop, daemon=True) + self.thread.start() + + def _write_loop(self): + while self.running or not self.queue.empty(): + try: + frame = self.queue.get(timeout=0.05) + if frame is None: + break + self.writer.write(frame) + self.queue.task_done() + except queue.Empty: + continue + + def write_frame(self, frame): + self.queue.put(frame) + + def release(self): + self.running = False + self.thread.join() + self.writer.release() + + +# class AsyncDisplayWriterv1: +# """Handles disk saving operations asynchronously on a background thread.""" + +# def __init__(self, path, fourcc, fps, size): +# self.writer = cv2.VideoWriter(path, fourcc, fps, size) +# self.queue = queue.Queue() +# self.running = True +# self.thread = threading.Thread(target=self._write_loop, daemon=True) +# self.thread.start() + +# def _write_loop(self): +# while self.running or not self.queue.empty(): +# try: +# frame = self.queue.get(timeout=0.05) +# self.writer.write(frame) +# self.queue.task_done() +# except queue.Empty: +# continue + +# def write_frame(self, frame): +# self.queue.put(frame) + +# def release(self): +# self.running = False +# self.thread.join() +# self.writer.release() + + +class AsyncDisplayWriter: + """ + Ultra-efficient frame-delivery client for live web streaming. + Pipes annotated BGR numpy matrices directly into matching Linux + POSIX Shared Memory allocation slots to prevent thread context-switching. + """ + + def __init__(self, target_fps, display_size, quality=60): + self.target_fps = float(target_fps) + self.disp_w, self.disp_h = display_size + self.quality = int(quality) + + # Ingestion pipeline constructs + self.queue = queue.Queue(maxsize=10) + self.running = True + + # State indicators requested by the FastAPI handler endpoints + self.handler = None + self.thread = threading.Thread(target=self._write_loop, daemon=True) + self.thread.start() + + def set_handler_context(self, handler_instance): + """Binds the active handler resource structures to secure index barriers.""" + self.handler = handler_instance + + def _write_loop(self): + # encode_param = [int(cv2.IMWRITE_JPEG_QUALITY), self.quality] + while self.running or not self.queue.empty(): + try: + item = self.queue.get(timeout=0.05) + if item is None: + break + display_frame, frame_num = item + # self.writer.write(frame) + # Compress to highly packable, network-ready JPEG byte streams + # ret, jpeg_buf = cv2.imencode('.jpg', display_frame, encode_param) + # if not ret: + # self.queue.task_done() + # continue + if self.handler is None: # or not self.handler.active: + self.queue.task_done() + continue + + if frame_num > self.handler.shared_details["last_id"]: + frame_bytes = get_display_frame_in_bytes( + display_frame, + display_size=(self.disp_w, self.disp_h), + quality=self.quality, + return_bytes=True, + ) + if not frame_bytes: + self.queue.task_done() + continue + + # frame_bytes = jpeg_buf.tobytes() + frame_len = len(frame_bytes) + num_shms = len(self.handler.shms) + + # Locate alternative ring memory locations away from browser client read operations + forbidden_idx = [ + self.handler.ready_buffer_idx.value, + self.handler.reader_active_idx.value, + ] + available_idx = [ + i for i in range(num_shms) if i not in forbidden_idx + ] + + if not available_idx: + # Fallback to structural ring increments if locks collide + write_idx = (self.handler.ready_buffer_idx.value + 1) % num_shms + else: + write_idx = available_idx[0] + + # Direct zero-copy commit straight to volatile RAM mappings + shm_block = self.handler.shms[write_idx] + shm_block.buf[:frame_len] = memoryview(frame_bytes) + + # Update pipeline sync trackers across worker contexts + self.handler.shm_frame_lengths[write_idx] = frame_len + self.handler.ready_buffer_idx.value = write_idx + + # Assign atomic sequence token identifiers safely + self.handler.shared_details["last_id"] = frame_num + + # Fire threading synchronization barriers to release blocked generator loops + # self.handler.frame_ready_event.set() + if hasattr(self.handler, "loop") and self.handler.loop is not None: + self.handler.loop.call_soon_threadsafe( + self.handler.frame_ready_event.set + ) + else: + # Fallback guard if the frame context hasn't registered a loop hook yet + self.handler.frame_ready_event.set() + + self.queue.task_done() + except queue.Empty: + continue + except Exception as e: + print(f"[ASYNC-DISPLAY-ERROR] Silent pool worker drop: {e}") + traceback.print_exc() + continue + + def _write_loopv1(self): + """Background daemon consumer that compresses matrices directly to /dev/shm.""" + # Performance parameters to maintain strict BT.709 encoding constraints + encode_param = [int(cv2.IMWRITE_JPEG_QUALITY), self.quality] + + while self.running or not self.queue.empty(): + try: + item = self.queue.get(timeout=0.05) + if item is None: + break + + display_frame, frame_num = item + if self.handler is None or not self.handler.active: + self.queue.task_done() + continue + + # Ensure image sizes perfectly correspond with standard API expectations + if ( + display_frame.shape[1] != self.disp_w + or display_frame.shape[0] != self.disp_h + ): + display_frame = cv2.resize( + display_frame, + (self.disp_w, self.disp_h), + interpolation=cv2.INTER_NEAREST, + ) + + # Compress to highly packable, network-ready JPEG byte streams + ret, jpeg_buf = cv2.imencode(".jpg", display_frame, encode_param) + if not ret: + self.queue.task_done() + continue + + frame_bytes = jpeg_buf.tobytes() + frame_len = len(frame_bytes) + num_shms = len(self.handler.shms) + + # Locate alternative ring memory locations away from browser client read operations + forbidden_idx = [ + self.handler.ready_buffer_idx.value, + self.handler.reader_active_idx.value, + ] + available_idx = [i for i in range(num_shms) if i not in forbidden_idx] + + if not available_idx: + # Fallback to structural ring increments if locks collide + write_idx = (self.handler.ready_buffer_idx.value + 1) % num_shms + else: + write_idx = available_idx[0] + + # Direct zero-copy commit straight to volatile RAM mappings + shm_block = self.handler.shms[write_idx] + shm_block.buf[:frame_len] = frame_bytes + + # Update pipeline sync trackers across worker contexts + self.handler.shm_frame_lengths[write_idx] = frame_len + self.handler.ready_buffer_idx.value = write_idx + + # Assign atomic sequence token identifiers safely + self.handler.shared_details["last_id"] = frame_num + + # Fire threading synchronization barriers to release blocked generator loops + # self.handler.frame_ready_event.set() + if hasattr(self.handler, "loop") and self.handler.loop is not None: + self.handler.loop.call_soon_threadsafe( + self.handler.frame_ready_event.set + ) + else: + # Fallback guard if the frame context hasn't registered a loop hook yet + self.handler.frame_ready_event.set() + + self.queue.task_done() + except queue.Empty: + continue + except Exception as e: + print(f"[ASYNC-DISPLAY-ERROR] Failed streaming injection: {e}") + continue + + def write_frame(self, display_frame, frame_num): + """Thread-safe entry hook to stash processed canvas items into the workspace.""" + # if not self.active: + # return + # try: + # # Drop structural allocations under pressure if the worker falls behind + # self.queue.put_nowait((display_frame, frame_num)) + # except queue.Full: + # pass + self.queue.put((display_frame, frame_num)) + + def release(self): + """Terminates internal consumers gracefully to ensure process convergence.""" + # self.active = False + self.running = False + self.queue.put(None) + if self.thread.is_alive(): + self.thread.join(timeout=1.0) + + ERR_KEYWORDS = [ "timeout", "null search iterator", @@ -705,7 +966,7 @@ def merge_boxes_gpu(raw_boxes, gap_limit=10, size_limit=1000): return torch.stack(merged) -def merge_boxes_cpu(boxes, gap_limit=10): +def merge_boxes_cpuv1(boxes, gap_limit=10): """ Greedy merge in 640x640 space to consolidate swarm fragments. Input: List of [x1, y1, x2, y2] within [0, 640] @@ -744,6 +1005,69 @@ def merge_boxes_cpu(boxes, gap_limit=10): return merged +def merge_boxes_cpu(boxes, gap_limit=10, size_limit=800): + """ + Greedy merge in 640x640 space to consolidate swarm fragments. + Preserves original boxes larger than size_limit, merging others where possible. + Input: List of [x1, y1, x2, y2] within [0, 640] + """ + if not boxes: + return [] + + # O(N log N) sort by X for early exit optimization + boxes = sorted(boxes, key=lambda x: x[0]) + merged = [] + + while boxes: + curr = boxes.pop(0) + + # --- PRESERVE OVERSIZED CROPS --- + # If the current bounding box is already larger than the size limit, + # skip merging it with anything else and save it directly to the output pool. + if (curr[2] - curr[0]) > size_limit or (curr[3] - curr[1]) > size_limit: + merged.append(curr) + continue + + i = 0 + while i < len(boxes): + test = boxes[i] + + # If the test candidate box is already larger than the size limit, + # do not attempt to merge it into the current tracking cluster. + if (test[2] - test[0]) > size_limit or (test[3] - test[1]) > size_limit: + i += 1 + continue + + # Early exit: horizontal gap exceeds limit + if test[0] - curr[2] > gap_limit: + break + + # Check vertical gap + y_dist = max(0, test[1] - curr[3], curr[3] - test[1]) + if y_dist <= gap_limit: + # Calculate proposed expanded dimensions if merged + new_x1 = min(curr[0], test[0]) + new_y1 = min(curr[1], test[1]) + new_x2 = max(curr[2], test[2]) + new_y2 = max(curr[3], test[3]) + + # --- BOUNDARY EXPANSION GUARD --- + # Reject the merge if combining these small boxes would push + # the resulting macro patch past the maximum allowed size limit. + if (new_x2 - new_x1) > size_limit or (new_y2 - new_y1) > size_limit: + i += 1 + continue + + # Expand current tracking box safely + curr = [new_x1, new_y1, new_x2, new_y2] + boxes.pop(i) + i = 0 # Re-check updated boundaries against remaining boxes + else: + i += 1 + merged.append(curr) + return merged + + def find_contours_gpu_equivalent( mask_gpu_mat, stream=None, grid_size=16, limit_640=1000, max_boxes=100 ): @@ -812,7 +1136,7 @@ def find_contours_gpu_equivalent( return merge_boxes_gpu(raw_boxes, gap_limit=grid_size * 2, size_limit=limit_640) -def find_contours_gpu_equivalentv1(mask_gpu_mat, stream=None): +def find_contours_gpu_equivalentv1(mask_gpu_mat, stream=None, limit_640=None): """ GPU equivalent to cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) Returns: torch.Tensor [N, 4] containing (x1, y1, x2, y2) in analysis space. @@ -977,7 +1301,7 @@ def format_df_value(value): return value -def get_display_frame_in_bytes( +def get_display_frame_in_bytesv1( foi, display_size=(960, 540), quality=50, return_bytes=True, device="CPU" ): # Expects BGR H, W = foi.shape[:2] @@ -1003,6 +1327,50 @@ def get_display_frame_in_bytes( return frame_bytes +def get_display_frame_in_bytes( + foi, display_size=(960, 540), quality=50, return_bytes=True, device="CPU" +): + """ + Safely formats and compresses video frames for browser distribution. + Accepts packed BGR array layouts directly. + """ + if foi is None: + return None + + # Defensive Guard: If a raw PyTorch CUDA tensor accidentally leaks into this + # context path, instantly bring it down safely to a standard contiguous numpy array + if torch.is_tensor(foi): + if foi.is_cuda: + foi = foi.detach().cpu() + foi = foi.numpy() + + # CRITICAL SIZING FIX: Explicitly parse display_size as (Width, Height) + # to perfectly match OpenCV's internal spatial coordinate expectations + target_w, target_h = display_size + current_h, current_w = foi.shape[:2] + + # Check matching structural criteria correctly + if current_h == target_h and current_w == target_w: + display_frame = foi + else: + # Resize safely without slipping strides or inverting height/width constraints + display_frame = cv2.resize( + foi, (target_w, target_h), interpolation=cv2.INTER_NEAREST + ) + + # Encode to crisp, valid JPEG compression matrices + ret, buffer = cv2.imencode( + ".jpg", display_frame, [int(cv2.IMWRITE_JPEG_QUALITY), quality] + ) + + if ret and return_bytes: + return buffer.tobytes() + elif ret: + return buffer + + return None + + # Manual FPS calculation if OpenCV reports 0 def manual_fps_calculation(src, num_frames=10): if isinstance(src, cv2.VideoCapture): diff --git a/fastapi/main.py b/fastapi/main.py index 3a02e75..a1e30aa 100644 --- a/fastapi/main.py +++ b/fastapi/main.py @@ -186,7 +186,7 @@ async def frame_generator(streamer, request: Request): # Wait for the background thread to signal that AI processing is complete await streamer.frame_ready_event.wait() - streamer.frame_ready_event.clear() # Reset for the next frame + # streamer.frame_ready_event.clear() # Reset for the next frame # streamer.reader_busy.value = True # target_idx = streamer.ready_buffer_idx.value @@ -197,7 +197,7 @@ async def frame_generator(streamer, request: Request): current_id = streamer.shared_details.get("last_id", -1) if current_id > last_sent_id: ready_idx = streamer.ready_buffer_idx.value - streamer.reader_active_idx.value = ready_idx + # streamer.reader_active_idx.value = ready_idx frame_len = streamer.shm_frame_lengths[ready_idx] if frame_len > 0: @@ -205,30 +205,34 @@ async def frame_generator(streamer, request: Request): # shm_name = shm_names[ready_idx] # print(f"DEBUG: Displaying SHM {shm_name}") # frame_bytes = streamer.latest_processed_frame - try: - frame_bytes = bytes(reader_shms[ready_idx].buf[:frame_len]) - finally: - streamer.reader_active_idx.value = -1 - last_sent_id = current_id - streamer.last_heartbeat = time.time() + # try: + frame_bytes = bytes(reader_shms[ready_idx].buf[:frame_len]) + # finally: + # streamer.reader_active_idx.value = -1 + # last_sent_id = current_id + # streamer.last_heartbeat = time.time() # streamer.reader_busy.value = False + streamer.frame_ready_event.clear() # Multipart JPEG delivery with explicit Content-Length for stability - yield ( - b"--frame\r\n" - b"Content-Type: image/jpeg\r\n" - b"Content-Length: " - + str(len(frame_bytes)).encode() - + b"\r\n\r\n" - # b"Content-Length: " - # + str(len(frame_bytes)).encode() - # + b"\r\n\r\n" - + frame_bytes - + b"\r\n" - ) - # last_sent_id = current_id + if len(frame_bytes) > 0: + yield ( + b"--frame\r\n" + b"Content-Type: image/jpeg\r\n" + b"Content-Length: " + + str(len(frame_bytes)).encode() + + b"\r\n\r\n" + # b"Content-Length: " + # + str(len(frame_bytes)).encode() + # + b"\r\n\r\n" + + frame_bytes + + b"\r\n" + ) + last_sent_id = current_id + streamer.last_heartbeat = time.time() # Yield control to the event loop to prevent blocking + # streamer.frame_ready_event.clear() # Reset for the next frame await asyncio.sleep(0.001) except Exception as e: main_app_logger.error(f"[EXCEPTION] Generator Error: {e}") diff --git a/fastapi/tests/test_detections.py b/fastapi/tests/test_detections.py index 6cac5b9..271a15a 100644 --- a/fastapi/tests/test_detections.py +++ b/fastapi/tests/test_detections.py @@ -1,12 +1,21 @@ import argparse +import asyncio import csv +import faulthandler import gc +import threading +import time +import traceback + +faulthandler.enable() +import inspect import logging import multiprocessing as mp import os +import queue import sys -import threading -import time +import types +from concurrent.futures import ThreadPoolExecutor from pathlib import Path import cv2 @@ -15,7 +24,14 @@ import pytest import tensorrt as trt import torch -import torch.nn.functional as F + +# # Force all PyTorch extension handles to compile and load BEFORE threads spawn +# if torch.cuda.is_available(): +# _ = torch.zeros(1).cuda() +# import torch._ops +# import torch.utils + +# Explicitly invoke any plotting or module style lookups early sys.path.insert(1, str(Path(__file__).parent.parent)) from include.default_configs import ( @@ -28,15 +44,16 @@ CPUStreamHandler, DeviceBaseHandler, GPUStreamHandler, + get_bb_overlay, + get_metadata_overlay, log_to_logger, ) -from include.handlers import test_rendering_worker as rendering_worker from include.utils import ( PipelineConfig, - tensor2opencv, ) try: + # Retain standard spawn mode to prevent CUDA context driver deadlocks torch.multiprocessing.set_start_method("spawn", force=True) except RuntimeError: pass @@ -46,52 +63,12 @@ trt.init_libnvinfer_plugins(logger, "") DEBUG_FLAG_DEFAULT = True if DEBUG_DEFAULT == "1" else False -os.environ["OMP_NUM_THREADS"] = "1" +os.environ["OMP_NUM_THREADS"] = str(mp.cpu_count()) # "1" os.environ["PYTORCH_ALLOC_CONF"] = "expandable_segments:True" force_export = False - -# def render_display_worker(queue, output_path, fps, size): -# """Background process that draws labels and writes to video.""" -# fourcc = cv2.VideoWriter_fourcc(*"avc1") -# writer = cv2.VideoWriter(output_path, fourcc, fps, size) - -# if not writer.isOpened(): -# print(f" [ERROR] VideoWriter failed to open: {output_path}") -# return - -# while True: -# item = queue.get() -# if item is None: -# break - -# display_frame, metadata_or_bbs, class_list = item -# if (display_frame.shape[1], display_frame.shape[0]) != size: -# display_frame = cv2.resize(display_frame, size) - -# if isinstance(metadata_or_bbs, dict): -# for _, obj in metadata_or_bbs.items(): -# bbox = obj["bbox"] -# x, y, w, h = bbox["x"], bbox["y"], bbox["width"], bbox["height"] -# class_name = bbox["object"] -# class_id = class_list.index(class_name) if class_name in class_list else 0 -# confidence = bbox["object_det"]["confidence"] - -# bb_color = get_detection_color(class_id, is_bgr=True) -# label = f"{class_name} {confidence:.2f}" - -# cv2.rectangle(display_frame, (x, y), (x + w, y + h), bb_color, 2) -# draw_label(display_frame, label, (x, y), color=bb_color, padding=5) -# elif metadata_or_bbs is not None: -# for box in metadata_or_bbs: -# if torch.is_tensor(box): -# box = box.tolist() -# x1, y1, x2, y2 = map(int, box) -# cv2.rectangle(display_frame, (x1, y1), (x2, y2), (0, 0, 225), 2) - -# writer.write(display_frame) - -# writer.release() +# Force OpenCV to run sequentially to prevent context-switching overhead +cv2.setNumThreads(0) # Forces OpenCV loops to run strictly sequentially def fps_comparison_chart(chart_path, results, fps_key="Pipeline FPS (Video frames)"): @@ -128,6 +105,48 @@ def fps_comparison_chart(chart_path, results, fps_key="Pipeline FPS (Video frame print("Skipping chart generation: error occurred.") +class AsyncVideoWriter: + """Handles disk saving operations asynchronously on a background thread.""" + + def __init__(self, path, fourcc, fps, size): + self.writer = cv2.VideoWriter(path, fourcc, fps, size) + self.queue = queue.Queue() + self.running = True + self.thread = threading.Thread(target=self._write_loop, daemon=True) + self.thread.start() + + def _write_loop(self): + while self.running or not self.queue.empty(): + try: + frame = self.queue.get(timeout=0.05) + self.writer.write(frame) + self.queue.task_done() + except queue.Empty: + continue + + def write_frame(self, frame): + self.queue.put(frame) + + def release(self): + self.running = False + self.thread.join() + self.writer.release() + + +class DummyProcess: + def start(self): + pass + + def join(self, timeout=None): + pass + + def is_alive(self): + return False + + def close(self): + pass + + @pytest.fixture(scope="class") def setup_context(request): """Replaces setUpClass: Runs once per test class.""" @@ -136,36 +155,49 @@ def setup_context(request): main_path = test_dir.parent video_dir = main_path / "inputs" - VIDEO_FILENAME = os.getenv("VIDEO_FILENAME", "anduril_swarm_8K.mp4") - if video_dir.exists(): - request.cls.video_path = video_dir / VIDEO_FILENAME + request.cls._shared_model = None + request.cls._shared_model_path = None + request.cls._shared_model_device = None + request.cls._shared_model_sf_enabled = None + + # model_name = os.getenv("MODEL_NAME", MODEL_NAME_DEFAULT) + # Handler.__init__ (main items) + request.cls.source = os.getenv("VIDEO_FILENAME", "anduril_swarm_8K.mp4") + is_rtsp = "rtsp://" in request.cls.source + if not is_rtsp: + VIDEO_FILENAME = request.cls.source + if video_dir.exists(): + vid_source = video_dir / VIDEO_FILENAME + else: + video_dir = Path("/watch_dir") + vid_source = video_dir / VIDEO_FILENAME + + assert vid_source.exists() + request.cls.source = str(vid_source) + request.cls.name = vid_source.stem + request.cls.is_rtsp = False else: - video_dir = Path("/watch_dir") - request.cls.video_path = video_dir / VIDEO_FILENAME + request.cls.name = "rtsp" + request.cls.is_rtsp = True + # request.cls.test_duration_mins = float(os.getenv("TEST_DURATION_MINS", 0.25)) model_name = os.getenv("MODEL_NAME", MODEL_NAME_DEFAULT) request.cls.result_dir = ( - test_dir - / f"{current_test_filename}_results/{model_name}" - / request.cls.video_path.stem + test_dir / f"{current_test_filename}_results/{model_name}" / request.cls.name ) request.cls.result_dir.mkdir(parents=True, exist_ok=True) request.cls.benchmarks = [] request.cls.csv_filename = ( - f"pipeline_benchmarks_{model_name}_{request.cls.video_path.stem}.csv" + f"pipeline_benchmarks_{model_name}_{request.cls.name}.csv" ) + request.cls.csv_path = request.cls.result_dir / request.cls.csv_filename - request.cls.name = request.cls.video_path.stem - request.cls.source = str(request.cls.video_path) request.cls.active = True request.cls.active_streams = {} - request.cls._shared_model = None - request.cls._shared_model_path = None - request.cls._shared_model_device = None - request.cls._shared_model_sf_enabled = None yield + # Summarize Benchmarks if request.cls.benchmarks: # Filter and exclude rows that were interrupted or failed initialization due to an early pytest skip request.cls.benchmarks = [ @@ -179,8 +211,8 @@ def setup_context(request): (r for r in results if r["Test Name"] == match_name), None ) if cpu_row: - gpu_fps = float(row["Pipeline FPS (Video frames)"]) - cpu_fps = float(cpu_row["Pipeline FPS (Video frames)"]) + gpu_fps = float(row["Pipeline FPS (Target frames)"]) + cpu_fps = float(cpu_row["Pipeline FPS (Target frames)"]) speedup = (gpu_fps / cpu_fps) if cpu_fps > 0 else 0 row["Pipeline Speedup vs CPU"] = f"{speedup:.2f}x" else: @@ -189,28 +221,18 @@ def setup_context(request): row["Pipeline Speedup vs CPU"] = "Baseline (CPU)" keys = results[0].keys() - with open( - str(request.cls.result_dir / request.cls.csv_filename), "w", newline="" - ) as f: + with open(str(request.cls.csv_path), "w", newline="") as f: dict_writer = csv.DictWriter(f, fieldnames=keys) dict_writer.writeheader() dict_writer.writerows(results) - print(f"\n[FINAL] Benchmarks saved to {request.cls.csv_filename}") + print(f"\n[FINAL] Benchmarks saved to {request.cls.csv_path}") for r in results: print( - f" > {r['Test Name']}: {r['Pipeline FPS (Video frames)']} FPS | {r['Pipeline FPS (Target frames)']} FPS | {r['sf+roi+det FPS (Target frames)']} FPS | {r['Display FPS']} FPS | Speedup: {r.get('Pipeline Speedup vs CPU', 'N/A')}" + f" > {r['Test Name']}: {r['Pipeline FPS (Video frames)']} FPS | {r['Pipeline FPS (Target frames)']} FPS | {r['Avg Frame Reading (ms)']} ms | Speedup: {r.get('Pipeline Speedup vs CPU', 'N/A')}" ) - chart_path = ( - request.cls.result_dir - / f"{request.cls.csv_filename.replace('.csv', '')}_sfFPS.png" - ) - fps_comparison_chart( - chart_path, results, fps_key="sf+roi+det FPS (Video frames)" - ) - chart_path = ( request.cls.result_dir / f"{request.cls.csv_filename.replace('.csv', '')}_pipelineFPS.png" @@ -219,19 +241,17 @@ def setup_context(request): chart_path = ( request.cls.result_dir - / f"{request.cls.csv_filename.replace('.csv', '')}_sfFPS_target.png" + / f"{request.cls.csv_filename.replace('.csv', '')}_pipelineFPS_target.png" ) fps_comparison_chart( - chart_path, results, fps_key="sf+roi+det FPS (Target frames)" + chart_path, results, fps_key="Pipeline FPS (Target frames)" ) chart_path = ( request.cls.result_dir - / f"{request.cls.csv_filename.replace('.csv', '')}_pipelineFPS_target.png" - ) - fps_comparison_chart( - chart_path, results, fps_key="Pipeline FPS (Target frames)" + / f"{request.cls.csv_filename.replace('.csv', '')}_sfdetectFPS_target.png" ) + fps_comparison_chart(chart_path, results, fps_key="SF/Detection FPS") chart_path = ( request.cls.result_dir @@ -256,6 +276,11 @@ def each_test_setup(request): else f"yolo_{detection_type}_{device}" ) + # video_output_name = f"{test_class_self._testMethodName}_detections_output.mp4" + vid_dir = test_class_self.result_dir / "results" + vid_dir.mkdir(parents=True, exist_ok=True) + + # Handler.__init__ (remaining items) # 1. Re-initialize a fresh configuration object test_class_self.config = PipelineConfig( CUSTOM_MODEL_FLAG=os.getenv("CUSTOM_MODEL_FLAG", CUSTOM_MODEL_FLAG_DEFAULT), @@ -271,22 +296,50 @@ def each_test_setup(request): DETECTION_TYPE=detection_type, ) - # video_output_name = f"{test_class_self._testMethodName}_detections_output.mp4" - vid_dir = test_class_self.result_dir / "results" - vid_dir.mkdir(parents=True, exist_ok=True) # test_video_output_path = os.path.join(str(vid_dir), video_output_name) os.environ["TEST_SUITE_RENDER_DIR"] = str(vid_dir) test_class_self.config.SHARED_OUTPUT = str(test_class_self.result_dir) + # test_class_self.disp_w, test_class_self.disp_h = (640, 360) + test_class_self.disp_w, test_class_self.disp_h = ( + test_class_self.config.DISPLAY_FRAME_SIZE + ) + + if device == "gpu": + # Allocate a permanent float32/float16 channel layout space directly on VRAM + test_class_self.static_gpu_360p = torch.empty( + (1, 3, test_class_self.disp_h, test_class_self.disp_w), + dtype=torch.float32, + device="cuda", + ) + test_class_self.static_gpu_byte_bchw = torch.empty( + (1, 3, test_class_self.disp_h, test_class_self.disp_w), + dtype=torch.uint8, + device="cuda", + ).contiguous() + + # Create two isolated tracking canvases to handle the ping-pong data stream + test_class_self.static_host_canvases = [ + np.zeros( + (test_class_self.disp_h, test_class_self.disp_w, 3), dtype=np.uint8 + ), + np.zeros( + (test_class_self.disp_h, test_class_self.disp_w, 3), dtype=np.uint8 + ), + ] + test_class_self.canvas_selector = 0 + + # Register BOTH buffers as page-locked memory + cv2.cuda.registerPageLocked(test_class_self.static_host_canvases[0]) + cv2.cuda.registerPageLocked(test_class_self.static_host_canvases[1]) # Reset core state machine properties before invoking any backend handlers test_class_self.active = True - test_class_self._is_stopped = False - - # FIXING ATTRIBUTEERRORS: Explicitly provision primitives before method re-binding - import threading - import time - test_class_self._stop_lock = threading.Lock() + test_class_self.loop = asyncio.get_event_loop() + test_class_self.frame_ready_event = asyncio.Event() + test_class_self._is_stopped = False + test_class_self._stop_lock = threading.Lock() # Local lock for this instance + test_class_self.mp_frame_ready_event = mp.Event() # test_class_self.stat_start_time = time.perf_counter() # timing to display detection test_class_self.device = test_class_self.config.DEVICE @@ -300,10 +353,7 @@ def each_test_setup(request): HandlerClass = GPUStreamHandler if device == "gpu" else CPUStreamHandler HandlerClass.pipeline_fn = test_class_self.__class__.pipeline_fn - # 2. Dynamically re-bind backend methods to this execution instance - import inspect - import types - + # Dynamically re-bind backend methods to this execution instance handler_classes = [HandlerClass, DeviceBaseHandler] all_method_names = set() @@ -327,19 +377,6 @@ def each_test_setup(request): types.MethodType(raw_func, test_class_self), ) - # FIXING FILEEXISTSERRORS: Proactively clear lingering POSIX layout blocks in /dev/shm - from multiprocessing import shared_memory - - for i in range(4): # Matches your self.ai_ring_depth footprint - stale_shm_name = f"shm_ai_640_{test_class_self.name}_{i}_{os.getpid()}" - try: - # Force link onto lingering handle and unlink it instantly from the OS map - lingering_shm = shared_memory.SharedMemory(name=stale_shm_name) - lingering_shm.close() - lingering_shm.unlink() - except FileNotFoundError: - pass - # 3. FORCE NATIVE PIPELINE PROVISIONING test_class_self.setup_reader( test_class_self.config.TARGET_FPS, test_class_self.config.CLIP_DURATION @@ -348,50 +385,112 @@ def each_test_setup(request): test_class_self.setup_model(None) test_class_self.prepare_pipeline() - # Reset runtime loop state properties - test_class_self.render_queue = None - test_class_self.frame_count_target = 0 - test_class_self.next_process_idx = 0.0 - test_class_self.frame_in_clip_count = 0 - test_class_self.frame_count = 0 - test_class_self.elapsed_display_time = 0.0 - - if hasattr(test_class_self, "setup_threads"): - test_class_self.setup_threads() - - shared_event_buffer = {"sf": [], "roi": [], "det": []} - test_class_self.gpu_event_buffer = shared_event_buffer + test_class_self.run_realtime_inference = types.MethodType( + test_class_self.__class__.run_realtime_inference, test_class_self + ) - if torch.cuda.is_available(): - torch.cuda.empty_cache() - torch.cuda.ipc_collect() + test_class_self.setup_threads() yield # Teardown logic + test_class_self.active = False + + # Fallback to production reader safety closure + if hasattr(test_class_self, "reader") and test_class_self.reader is not None: + try: + if hasattr(test_class_self.reader, "print_breakdown"): + test_class_self.reader.print_breakdown() + test_class_self.reader.stop() + except Exception: + pass + + if ( + hasattr(test_class_self, "stop_writer") + and test_class_self.stop_writer is not None + ): + try: + test_class_self.stop_writer.set() + except Exception: + pass + + # --- CRITICAL RE-ORDERED FLUSH GATE --- + # 1. First, block and wait for the video processing producer thread to completely finish + # reading all remaining frames from the input video file. + producer_thread_handle = getattr(test_class_self, "process_thread", None) + if producer_thread_handle is not None and producer_thread_handle.is_alive(): + producer_thread_handle.join(timeout=0.5) # 10.0) + + # 2. Block and wait for background asynchronous AI executor workers to finish inference tasks. + if hasattr(test_class_self, "executor") and test_class_self.executor: + test_class_self.executor.shutdown(wait=True) + + # 3. Allow the multiprocessing render queue to naturally empty its frames into the encoder pipe. if ( hasattr(test_class_self, "render_queue") and test_class_self.render_queue is not None ): try: - test_class_self.render_queue.put(None) + # Loop safely until the render loop handles the last remaining frames + # while not test_class_self.render_queue.empty(): + # time.sleep(0.05) + + # Send a poison pill token ONLY after all threads have fully stopped putting data into it + # test_class_self.render_queue.put(None, timeout=1.0) + if ( + hasattr(test_class_self, "render_queue") + and test_class_self.render_queue is not None + ): + try: + # Forcefully clear the queue thread tracking matrices + test_class_self.render_queue.close() + test_class_self.render_queue.cancel_join_thread() + except Exception: + pass except Exception: pass + # 4. Gracefully join the background FFmpeg process, avoiding premature kills render_proc_handle = getattr(test_class_self, "render_proc", None) - if render_proc_handle is not None and render_proc_handle._started.is_set(): - test_class_self.render_proc.join(timeout=10.0) + if render_proc_handle is not None: + try: + if render_proc_handle.is_alive(): + # Grant up to 10 seconds for disk I/O synchronization + render_proc_handle.join(timeout=0.5) # 10.0) - # Signal the state machine to drop out of loops safely - test_class_self.active = False - if hasattr(test_class_self, "reader") and test_class_self.reader is not None: + if render_proc_handle.is_alive(): + print( + "[WARN] Render worker hung during final flush. Forcing termination." + ) + render_proc_handle.terminate() + render_proc_handle.join() + + render_proc_handle.close() + except Exception: + pass + setattr(test_class_self, "render_proc", None) + + # 4. Deep System Unlinking of Shared Memory Layers (Parent/Child safe) + # This loop uses direct reference mapping rather than guessing PIDs + for shm_pool_attr in ["ai_shms", "shms"]: + if hasattr(test_class_self, shm_pool_attr): + shm_pool = getattr(test_class_self, shm_pool_attr) + if shm_pool: + for shm_segment in list(shm_pool): + try: + shm_segment.close() + shm_segment.unlink() + except Exception: + pass + shm_pool.clear() + + # 5. Clean up the Sync Base Manager Process + if hasattr(test_class_self, "manager") and test_class_self.manager is not None: try: - test_class_self.reader.stop() + test_class_self.manager.shutdown() except Exception: pass - - # Execute custom release blocks - test_class_self.stop() + test_class_self.manager = None # CRITICAL FIX: Block and wait for the background producer thread to die # BEFORE we delete the reader attribute from the namespace map. @@ -399,6 +498,60 @@ def each_test_setup(request): if producer_thread_handle is not None and producer_thread_handle.is_alive(): producer_thread_handle.join(timeout=5.0) + # if hasattr(test_class_self, "ingest_ring") and test_class_self.ingest_ring: + # for mat in test_class_self.ingest_ring: + # try: + # cv2.cuda.unregisterPageLocked(mat) + # except Exception: + # pass + # test_class_self.ingest_ring.clear() + + # if hasattr(test_class_self, "pinned_matrices") and test_class_self.pinned_matrices: + # for active_mat in test_class_self.pinned_matrices: + # try: + # cv2.cuda.unregisterPageLocked(active_mat) + # except Exception: + # pass + # test_class_self.pinned_matrices.clear() + # if hasattr(test_class_self, "pinned_tensors"): + # test_class_self.pinned_tensors.clear() + # if hasattr(test_class_self, "ai_pinned_tensors"): + # test_class_self.ai_pinned_tensors.clear() + + try: + cv2.cuda.unregisterPageLocked(test_class_self.pinned_matrices) + except Exception: + pass + + # ADD THIS MECHANISM: + if hasattr(test_class_self, "static_host_canvas"): + try: + cv2.cuda.unregisterPageLocked(test_class_self.static_host_canvas) + except Exception: + pass + + if ( + not test_class_self.active + ): # Only execute this block during complete class teardown + if hasattr(test_class_self, "ingest_ring") and test_class_self.ingest_ring: + for mat in test_class_self.ingest_ring: + try: + cv2.cuda.unregisterPageLocked(mat) + except Exception: + pass + test_class_self.ingest_ring.clear() + + if ( + hasattr(test_class_self, "pinned_matrices") + and test_class_self.pinned_matrices + ): + for active_mat in test_class_self.pinned_matrices: + try: + cv2.cuda.unregisterPageLocked(active_mat) + except Exception: + pass + test_class_self.pinned_matrices.clear() + # Now it is structurally safe to purge attributes without causing cross-thread collisions keys_to_purge = [ "reader", @@ -410,7 +563,7 @@ def each_test_setup(request): "ai_gpu_staging", "ai_pinned_tensors", "executor", - "io_executor", + # "io_executor", ] for key in keys_to_purge: if hasattr(test_class_self, key): @@ -427,6 +580,8 @@ def each_test_setup(request): with torch.inference_mode(): if torch.cuda.is_available(): torch.cuda.synchronize() + if device == "gpu": + torch.cuda.memory._record_memory_history(enabled=False) torch.cuda.empty_cache() torch.cuda.ipc_collect() @@ -436,39 +591,45 @@ def each_test_setup(request): @pytest.mark.usefixtures("setup_context") class TestSmartFilteringDetections: - # class TestSmartFilteringDetections(DeviceBaseHandler): - # """ - # Unified testing harness. - # By inheriting from DeviceBaseHandler, 'self' functions as both - # the pytest telemetry harness and the live stream execution runner. - # """ - # # Overriding __init__ to prevent standard initialization collisions with pytest - # def __init__(self, *args, **kwargs): - # pass # SETUP -------------------------------------------- @pytest.mark.parametrize("device", ["cpu", "gpu"]) @pytest.mark.parametrize("sf_enabled", [True, False]) @pytest.mark.parametrize("detection_type", ["motion", "object"]) - def test_detections(self, detection_type, device, sf_enabled): + def test_detections(self, device, sf_enabled, detection_type): """Unified test runner for all configurations.""" if detection_type == "motion" and not sf_enabled: pytest.skip( "Pure YOLO mode is structurally invalid for detection_type 'motion'." ) - # Run the actual model loader - # self.get_model_by_device(device, sf_enabled=self.config.sf_enabled) + self.duration_target = 30 + + # Trigger your clean overridden thread boot + self.start() + + print( + f"\n[TEST HARNESS] Execution Started. Monitoring variables natively for {self.duration_target}s...", + flush=True, + ) + # Explicit timer tracking allows background multiprocessing queues to stream uninhibited + # test_start_time = time.perf_counter() - # Execute - self.run_pipeline() # pipeline_fn) + while self.active or not self._is_stopped: + # Check if our active benchmark validation timeline target has been fulfilled + # if (time.perf_counter() - test_start_time) >= float(self.duration_target) + 15.0: + # print("\n[TEST HARNESS] Targeted test runtime duration reached. Initiating clean multi-process flush...", flush=True) + # break + time.sleep(0.1) # Stay clear of the hot pipeline lane + + assert self.status == "DONE" def setup_threads(self): - # Shared 10MB memory for display - self.setup_shared_memory() + """Overrides handlers.py to bind threads dynamically to the test instance.""" + self.setup_shared_memory() # Natively sets up Manager dictionary and buffers # Executor for Async YOLO tasks and FFmpeg re-encoding - # self.executor = ThreadPoolExecutor(max_workers=self.config.MAX_WORKERS) + self.executor = ThreadPoolExecutor(max_workers=self.config.MAX_WORKERS) # self.clip_executor = ThreadPoolExecutor(max_workers=self.config.MAX_WORKERS) print( @@ -476,102 +637,258 @@ def setup_threads(self): flush=True, ) - # Producer: Handles acquisition and AI metadata logs - # self.process_thread = threading.Thread( - # target=self.run_pipeline, - # daemon=True, - # ) - - self.signal_queue = mp.Queue(maxsize=1) - self.render_queue = mp.Queue(maxsize=5) + # Open up looking-ahead buffer horizons to eliminate 8K queue backpressure stalls + self.signal_queue = mp.Queue(maxsize=128) # 10) + self.render_queue = mp.Queue(maxsize=256) # 64) - # if self.config.TEST_MODE: test_dir = os.getenv( "TEST_SUITE_RENDER_DIR", str(Path(self.config.SHARED_OUTPUT)) ) os.makedirs(test_dir, exist_ok=True) - video_output_name = f"{self._testMethodName}_detections_output.mp4" + if self.source.startswith("rtsp"): + short_name = "rtsp" + else: + short_name = Path(self.source).stem + video_output_name = f"{self._testMethodName}_{short_name}_{self.device}.mp4" out_path = os.path.join(test_dir, video_output_name) + self.output_path = ( + out_path # f"{self.config.SHARED_OUTPUT}/{short_name}_{self.device}.mp4" + ) log_to_logger( f"[TEST MODE] Detection results saved to: {out_path}", level="info" ) - self.render_proc = threading.Thread( - target=rendering_worker, - args=( - self.render_queue, - (self.disp_w, self.disp_h), - out_path, - self.target_fps, + + # ===================================================================== + # DYNAMIC THREAD TARGET REDIRECTION + # ===================================================================== + # Lambda forces the background processing thread to evaluate your custom staging loop natively + self.process_thread = threading.Thread( + target=lambda: self.run_realtime_inference( + sf_enabled=self.config.sf_enabled ), daemon=True, ) + # self.render_proc = mp.Process( # threading.Thread( + # target=rendering_worker, + # args=( + # self.render_queue, + # (self.disp_w, self.disp_h), + # self.output_path, + # self.target_fps, + # ), + # daemon=True, + # ) + # self.render_proc = threading.Thread(target=lambda: None, daemon=True) + # self.display_proc = threading.Thread(target=lambda: None, daemon=True) + self.render_proc = DummyProcess() + self.display_proc = DummyProcess() + + self.async_writer = AsyncVideoWriter( + self.output_path, + cv2.VideoWriter_fourcc(*"avc1"), + float(self.target_fps), + (self.disp_w, self.disp_h), + ) + # self.async_writer = None - # Dummy target alignment to prevent execution signature exceptions - self.display_proc = threading.Thread(target=lambda: None, daemon=True) - # else: - # self.render_proc = mp.Process( - # target=rendering_worker, - # args=( - # self.render_queue, - # self.shared_details, - # self.ready_buffer_idx, - # self.reader_active_idx, - # self.shm_frame_lengths, - # self.signal_queue, - # (self.disp_w, self.disp_h), - # self.config.DISPLAY_FRAME_QUALITY, - # ), - # ) - - # def display_signal_sync(): - # while self.active: - # # Wait for signal - # # if self.mp_frame_ready_event.wait(timeout=1.0): - # # self.mp_frame_ready_event.clear() - # try: - # _ = self.signal_queue.get(timeout=1.0) - # # print(f"[DEBUG]: Signal received in FastAPI process for {self.name}", flush=True) - # # Wake FastAPI async loop in main thread - # self.loop.call_soon_threadsafe(self.frame_ready_event.set) - # except queue.Empty: - # continue - - # self.display_proc = threading.Thread( - # target=display_signal_sync, daemon=True - # ) - - # if self.config.ENABLE_QUERYING: - # # NEW: Dedicated I/O pool for Disk/GPU transfers (Higher worker count for 8K) - # self.io_executor = ThreadPoolExecutor(max_workers=8) - - # # Dedicated FFmpeg pool so re-encoding doesn't slow down live AI - # self.ffmpeg_executor = ThreadPoolExecutor(max_workers=2) - - # if not self.config.TEST_MODE: - # # Sends metadata to VDMS - # self.metadata_thread = threading.Thread( - # target=send_metadata, - # args=( - # VDMSPool(self.config.DBHOST, self.config.DBPORT, size=10), - # self.config.DEBUG_FLAG, - # self.config.INGESTION, - # self.config.TEST_MODE, - # self.config.UDF_HOST, - # self.config.UDF_PORT, - # self.config.DBHOST, - # self.config.DBPORT, - # ), - # daemon=True, - # ) + def start(self): + """ + Starts the decoupled ingestion and inference threads in the correct order. + """ + # PRE-SYNC: Ensure GPU is idle before timing starts + if self.device_input == "cuda": + if torch.cuda.is_available(): + torch.cuda.synchronize() + + # Start the hardware-decoupled reader first + self.reader.start() + + if self.config.ENABLE_QUERYING: + self._initialize_writer() + + # Small delay to allow the reader's deque to populate + time.sleep(0.1) + + # Start the producer and consumer threads + if hasattr(self, "process_thread") and not self.process_thread.is_alive(): + self.process_thread.start() - # # Consumer: Handles GPU-to-CPU download and Disk I/O (Writing resized frames to RAM disk) - # self.writer_thread = threading.Thread( - # target=self.video_writer_core_loop, - # args=(self.stop_writer,), - # daemon=True, - # ) + if not self.config.DISABLE_DETECTION: + self.render_proc.start() + + self.display_proc.start() + + if ( + self.config.ENABLE_QUERYING + and not self.config.TEST_MODE + and not self.metadata_thread.is_alive() + ): + self.metadata_thread.start() + + if self.config.ENABLE_QUERYING and not self.writer_thread.is_alive(): + self.writer_thread.start() + + return self + + def stop(self): + """Overrides handlers.py to flush thread objects safely without deadlocking.""" + with self._stop_lock: + if self._is_stopped: + return + + print( + f"\n[TEST HARNESS] Initiating rapid thread flush for {self.name}", + flush=True, + ) + self.active = False + + # 1. Rapidly clear the async video writer thread queue first + # if hasattr(self, "async_writer") and self.async_writer is not None: + # try: + # self.async_writer.release() + # except Exception: + # pass + + # ===================================================================== + # DECUPLED MULTI-PROCESS TEARDOWN LIFECYCLE SEQUENCE + # ===================================================================== + # 1. FIRST: Drain and synchronize your thread pool tasks so EVERY frame drops into the IPC queue + if hasattr(self, "display_pool") and self.display_pool is not None: + try: + if hasattr(self.display_pool, "_work_queue"): + backlog = self.display_pool._work_queue.qsize() + if backlog > 0: + print( + f"\n\033[94m[STAGE 1/4] Synchronizing display pool threads. Draining {backlog} background tasks...\033[0m", + flush=True, + ) + backlog_s = time.perf_counter() + while ( + self.display_pool._work_queue.qsize() > 0 + or len(self.reorder_staging_buffer) > 0 + ): + # Yield a brief slice to let worker threads complete downscaling + time.sleep(0.01) + backlog_e = time.perf_counter() - backlog_s + print(f"\t\033[94mTook {backlog_e} secs\033[0m", flush=True) + print( + "\033[92m[SUCCESS] All background image transformations completed cleanly.\033[0m", + flush=True, + ) + self.display_pool.shutdown(wait=True) + except Exception as e: + print( + f"[TEARDOWN ERROR] Thread pool synchronization failed: {e}", + flush=True, + ) + setattr(self, "display_pool", None) + + # 1. FIRST: Instantly dispatch the shutdown token so the worker process knows to flush entries + if hasattr(self, "render_queue") and self.render_queue is not None: + try: + print( + f"\n\033[94m[STAGE 1/3] Dispatching shutdown sentinel (None) to rendering process worker (Backlog: {self.render_queue.qsize()} frames)...\033[0m", + flush=True, + ) + # Delivering the poison pill immediately tells FFmpeg to drain remaining blocks sequentially + self.render_queue.put(None, timeout=2.0) + except Exception as queue_err: + print( + f"\033[91m[TEARDOWN ERROR] Failed staging shutdown token: {queue_err}\033[0m", + flush=True, + ) + + # 2. SECOND: Allow the background multiprocessing queue to empty outstanding items naturally + if hasattr(self, "render_queue") and self.render_queue is not None: + try: + print( + "\n\033[94m[STAGE 2/3] Finalizing file output. Draining remaining frames from IPC memory lane...\033[0m", + flush=True, + ) + t_drain = time.perf_counter() + # Wait up to 15 seconds for the worker process to pull every remaining matrix out of the pipe + while ( + not self.render_queue.empty() + and (time.perf_counter() - t_drain) < 15.0 + ): + time.sleep( + 0.01 + ) # Micro-yield grants immediate execution priority to the background process core + except Exception: + pass + + # 3. THIRD: Block the main thread safely and allow the detached process to finish disk I/O operations + if hasattr(self, "render_proc") and self.render_proc is not None: + try: + join_duration = 0.0 + if self.render_proc.is_alive(): + print( + "\033[94m[STAGE 2/2] Main thread blocking. Synchronizing hard drive file headers...\033[0m", + flush=True, + ) + t_join_start = time.perf_counter() + self.render_proc.join( + timeout=15.0 + ) # Safe timeout lets video containers finalize cleanly + join_duration = time.perf_counter() - t_join_start + else: + print( + "\033[94m[STAGE 2/2] Main thread clear...\033[0m", + flush=True, + ) + + if self.render_proc.is_alive(): + print( + "\n\033[91m[CRITICAL STALL] Render worker process hung on disk write! Forcing termination...\033[0m", + flush=True, + ) + self.render_proc.terminate() + self.render_proc.join() + else: + print( + f"\033[92m[FINAL] Video compilation finished cleanly! Hard drive commit took {join_duration:.2f} seconds.\033[0m", + flush=True, + ) + + expected_disk_path = Path(self.output_path) + if expected_disk_path.exists(): + size_mb = expected_disk_path.stat().st_size / (1024 * 1024) + print( + f"\033[92m[DISK VERIFIED] Destination asset compiled: {expected_disk_path.name} ({size_mb:.2f} MB)\033[0m\n", + flush=True, + ) + self.render_proc.close() + except Exception as proc_err: + print( + f"\033[91m[TEARDOWN ERROR] Failed closing background process container: {proc_err}\033[0m", + flush=True, + ) + setattr(self, "render_proc", None) + + # 4. FOURTH: Clean up remaining pipeline executors and queues safely + if hasattr(self, "render_queue") and self.render_queue is not None: + try: + self.render_queue.close() + self.render_queue.cancel_join_thread() + except Exception: + pass + setattr(self, "render_queue", None) + + if hasattr(self, "executor") and self.executor is not None: + try: + self.executor.shutdown(wait=True) + except Exception: + pass + setattr(self, "executor", None) + + self.status = "DONE" + self._is_stopped = True + print( + "[TEST HARNESS] Teardown complete. Releasing session cleanly.\n", + flush=True, + ) # HELPERS -------------------------------------------- def _print_gpu_mem(self): @@ -585,106 +902,6 @@ def _print_gpu_mem(self): else: print("\tCUDA not available.") - # def get_model_by_device(self, device, sf_enabled=False): - # """Singleton loader: only loads if device changes or model is missing.""" - # if ( - # sf_enabled - # and (self.frame_width * self.frame_height) - # <= self.config.SMART_FILTERING_PIXEL_CONSTRAINT - # ): - # sf_enabled = False - - # if ( - # TestSmartFilteringDetections._shared_model is not None - # and TestSmartFilteringDetections._shared_model_device == device - # and TestSmartFilteringDetections._shared_model_sf_enabled == sf_enabled - # ): - # self.model = TestSmartFilteringDetections._shared_model - # self.model_path = TestSmartFilteringDetections._shared_model_path - # return - - # run_platform_name = "engine" if "cuda" in self.device_input else "openvino" - - # if self.config.CUSTOM_MODEL_FLAG: - # dir_path = "/home/resources/models/ultralytics/custom_models" - # else: - # dir_path = f"/home/resources/models/ultralytics/{self.config.MODEL_NAME}/{self.config.MODEL_PRECISION}" - - # ( - # TestSmartFilteringDetections._shared_model, - # TestSmartFilteringDetections._shared_model_path, - # self.label_source, - # ) = get_model( - # # model_run_key, model_run_config, export=False - # Path(dir_path), - # self.config.MODEL_NAME, - # run_platform_name, - # self.device_input, - # batch=self.config.MODEL_MAX_BATCH_SIZE, - # force_export=force_export, - # sf_enabled=sf_enabled, - # model_h=self.resize_h, - # model_w=self.resize_w, - # ) - # TestSmartFilteringDetections._shared_model_device = device - # TestSmartFilteringDetections._shared_model_sf_enabled = sf_enabled - # self.model = TestSmartFilteringDetections._shared_model - # # self.model.half() - # self.model_path = TestSmartFilteringDetections._shared_model_path - - # W, H = self.resize_w, self.resize_h - # if not sf_enabled: - # W, H = self.frame_width, self.frame_height - # self.model_warmup(H, W) - # # self.pipeline_handler.model = self.model - # # self.pipeline_handler.model_warmup(H, W) - - # def calculate_unique_coverage(self, merged_boxes, target_w=640, target_h=640): - # """ - # FULLY VECTORIZED: Calculate pixel coverage without Python loops. - # Works for any number of boxes (1 to 1000+) with near-zero overhead. - # """ - # if merged_boxes is None or merged_boxes.shape[0] == 0: - # return 0.0 - - # # 1. Scaling (Vectorized) - # # merged_boxes is [N, 4] -> [x1, y1, x2, y2] in 8K space - # scale = torch.tensor( - # [ - # target_w / self.frame_width, - # target_h / self.frame_height, - # target_w / self.frame_width, - # target_h / self.frame_height, - # ], - # device=self.device_input, - # ) - - # # Scale and clamp all boxes at once on the GPU - # coords = (merged_boxes * scale).long() - # coords[:, [0, 2]] = coords[:, [0, 2]].clamp(0, target_w) - # coords[:, [1, 3]] = coords[:, [1, 3]].clamp(0, target_h) - - # # 2. Vectorized Mask Filling - # # We create a 1D representation of the 640x640 mask for fast indexing - # mask = torch.zeros( - # target_h * target_w, device=self.device_input, dtype=torch.uint8 - # ) - - # # For each box, we generate a range of indices and fill them. - # # Note: For small N (drones), a loop is okay, but for 'Swarm' noise, - # # we use this broadcasted approach: - # for i in range(coords.shape[0]): - # x1, y1, x2, y2 = coords[i] - # # Generate row indices for this box - # rows = torch.arange(y1, y2, device=self.device_input).view(-1, 1) - # # Calculate mask indices: (y * width) + x - # # This fills a horizontal slice of the mask in one GPU operation - # indices = (rows * target_w) + torch.arange(x1, x2, device=self.device_input) - # mask[indices] = 1 - - # # 3. Final Sum (GPU Reduction) - # return (torch.sum(mask).item() / (target_w * target_h)) * 100 - def calculate_unique_coverage(self, merged_boxes, target_w=640, target_h=640): """ TRUE LOOPLESS VECTORIZATION: Calculates combined bounding box pixel coverage @@ -725,28 +942,145 @@ def calculate_unique_coverage(self, merged_boxes, target_w=640, target_h=640): def _finalize_benchmarks( self, - # n_frames, num_objs, + total_written_frames, total_pipeline_ms, real_world_latency_ms, + total_sf_pipeline_ms, + frame_loop_latency_ms, coverage_percentages, - sf_enabled, - stat_frame_count, - stat_fps, + total_read_time, + total_queue_saturation, + queue_saturation_history, ): """Aggregates metrics and adds them to the results list.""" - latency_s = total_pipeline_ms / 1000.0 # Just pipeline (sf + roi_ det) - est_fps = self.frame_count / latency_s if latency_s > 0 else 0 - est_fps_processed = self.frame_count_target / latency_s if latency_s > 0 else 0 - duration_s = self.frame_count / self.input_fps if self.input_fps > 0 else 0 - - real_latency_s = real_world_latency_ms / 1000.0 - real_est_fps = self.frame_count / real_latency_s if real_latency_s > 0 else 0 - real_est_fps_processed = ( - self.frame_count_target / real_latency_s if real_latency_s > 0 else 0 + sf_enabled = self.config.sf_enabled + stat_frame_count = self.stat_frame_count + stat_fps = self.stat_fps + + h2d_label = ( + "Pinned H2D Transfer (PCIe DMA)" + if self.is_cuda + else "Data Preparation Overhead" + ) + # d2h_label = ( + # "D2H Transfer (PCIe Download)" + # if self.is_cuda + # else "Array Extraction Overhead" + # ) + + total_pipeline_s = total_pipeline_ms / 1000.0 # Full pipeline + + total_real_pipeline_s = ( + real_world_latency_ms / 1000.0 + ) # Pipeline until last frame sent to writer + real_est_fps = ( + self.frame_count_target / total_real_pipeline_s + if total_real_pipeline_s > 0 + else 0 + ) + + # if total_written_frames > 0: + duration_s = ( + self.reader.total_input_frames / self.reader.input_fps + if self.reader.input_fps > 0 + else 0 + ) + out_duration_s = ( + total_written_frames / self.reader.target_fps + if self.reader.target_fps > 0 + else 0 + ) + print( + f"Expected duration: {self.duration_target:.2f} stream_duration_s: {duration_s:.2f} output_duration_s: {out_duration_s:.2f}" + ) + + h2d_display_label = f"Reader {h2d_label}:" + avg_reader_ms = (total_read_time / total_written_frames) * 1000 + # avg_resize_ms = (total_resize_time / total_written_frames)*1000 + # avg_write_ms = (total_disk_write_overhead / total_written_frames)*1000 + target_frame_fps = total_written_frames / total_pipeline_s + all_frame_fps = self.reader.total_input_frames / total_pipeline_s + avg_copy_ms = (self.reader.total_shm_copy_time / total_written_frames) * 1000 + # avg_blocked_ms = ( + # self.reader.total_queue_wait_time / total_written_frames + # ) * 1000 + + # Avg Blocked MS tracks your downstream GIL blocks and serialization stalls + avg_blocked_ms = ( + sum(self.component_stats.get("queue_blocked", [0.0])) + / max(1, len(self.component_stats.get("queue_blocked", []))) + if self.component_stats.get("queue_blocked") + else 0.0 + ) + + avg_saturation = (total_queue_saturation / total_written_frames) * 100 + peak_saturation = ( + max(queue_saturation_history) * 100 if queue_saturation_history else 0 + ) + target_match_ratio = ( + total_written_frames / (total_pipeline_s * self.reader.target_fps) + ) * 100 + + frame_drop = max( + 0.0, + (1.0 - (total_written_frames / max(1, self.reader.total_input_frames))) + * 100.0, + ) + serial_pressure = (avg_blocked_ms / max(0.1, frame_loop_latency_ms)) * 100.0 + evac_vel = target_frame_fps / max(0.1, all_frame_fps) + + # Isolate the ratio of sequential loop stalls against full execution bounds + backpressure_index = (avg_blocked_ms / max(0.1, frame_loop_latency_ms)) * 100.0 + + if self.is_cuda: + avg_h2d_ms = (self.reader.total_h2d_time / total_written_frames) * 1000 + avg_prep_ms = 0.0 + else: + avg_prep_ms = (self.reader.total_h2d_time / total_written_frames) * 1000 + avg_h2d_ms = 0.0 + + # Calculate structural frame size payload in Gigabytes (H * W * Channels) + frame_size_gb = (self.reader.frame_height * self.reader.frame_width * 3) / ( + 1024**3 + ) + + # 1. Compute Peak H2D PCIe Throughput + avg_h2d_s = ( + ( + sum(self.component_stats["dma_upload"]) + / len(self.component_stats["dma_upload"]) + ) + / 1000.0 + if self.component_stats["dma_upload"] + else 0 ) + if self.is_cuda and avg_h2d_s > 0.00001: + self.pcie_throughput_gbps = frame_size_gb / avg_h2d_s + else: + self.pcie_throughput_gbps = ( + 0.0 # Safe fallback baseline for non-PCIe pipelines (CPU) + ) + + # Calculate bus saturation relative to standard Gen4 x16 baseline ceilings (31.5 GB/s) + # Scale to an index percentage safely + pcie_bus_saturation = (self.pcie_throughput_gbps / 31.5) * 100.0 + + # 2. Extract PyTorch VRAM Fragmentation Delta Metrics + if self.is_cuda and torch.cuda.is_available(): + peak_alloc = torch.cuda.max_memory_allocated(0) / 1024**2 + peak_reserved = torch.cuda.max_memory_reserved(0) / 1024**2 + self.vram_efficiency = ( + (peak_alloc / peak_reserved * 100.0) if peak_reserved > 0 else 100.0 + ) + else: + self.vram_efficiency = ( + 0.0 # Clean zero baseline representation for CPU runs + ) # Calculate averages for component breakdowns + # avg_reader_ms = (total_read_time / self.reader.total_input_frames) * 1000 + # avg_reader_ms = (total_read_time / self.frame_count_target) * 1000 avg_sf = ( sum(self.component_stats["sf"]) / len(self.component_stats["sf"]) if self.component_stats["sf"] @@ -762,6 +1096,19 @@ def _finalize_benchmarks( if self.component_stats["det"] else 0 ) + + # Total Latency Sum (SF + ROI + DET) + det_latency_ms = avg_sf + avg_roi + avg_det + det_latency_s = det_latency_ms / 1000.0 + det_est_fps = (total_written_frames / det_latency_s) if det_latency_s > 0 else 0 + + # Track model workloads against preprocessing overheads (sf_time + roi_time) + preprocessing_overhead = avg_sf + avg_roi + model_cost_density = avg_det / max(0.1, preprocessing_overhead) + + loop_overhead = max( + 0.0, 100.0 - ((det_latency_ms / max(1.0, frame_loop_latency_ms)) * 100.0) + ) avg_cov = ( sum(coverage_percentages) / len(coverage_percentages) if coverage_percentages @@ -774,9 +1121,6 @@ def _finalize_benchmarks( else 0 ) - # Total Latency Sum (SF + ROI + DET) - total_sum = avg_sf + avg_roi + avg_det - # Calculate how often we hit a high-motion cap (e.g., 20 crops) capped_frames = sum(1 for c in self.crops_per_frame_list if c >= 20) cap_rate = ( @@ -785,718 +1129,293 @@ def _finalize_benchmarks( else 0 ) + # avg_queue = ( + # sum(self.component_stats["queue_blocked"]) + # / len(self.component_stats["queue_blocked"]) + # if self.component_stats["queue_blocked"] + # else 0 + # ) + # avg_batch = ( + # sum(self.component_stats["batch_sizes"]) + # / len(self.component_stats["batch_sizes"]) + # if self.component_stats["batch_sizes"] + # else 0 + # ) + + backlog_list = self.component_stats.get("thread_backlog", []) + avg_backlog = ( + sum(backlog_list) / len(backlog_list) if len(backlog_list) > 0 else 0.0 + ) + + print("\n" + "=" * 60) + print( + f" FULLY-OPTIMIZED ASYNC STAGE ({self.config.DEVICE}) PIPELINE BREAKDOWN " + ) + print("=" * 60) + print(f"Total Output Frames Written: {total_written_frames}") + print(f"Total Pipeline Execution Time: {total_pipeline_s:.4f} seconds") + print(f"Overall Processing Speed: {target_frame_fps:.2f} FPS") + print("-" * 60) + print("MAIN CONSUMER LOOP TIMELINE (SEQUENTIAL OVERHEAD):") + print(f" 1. Shared Memory Copy to Host: {avg_copy_ms:6.2f} ms") + print( + f" 2. GIL / Downstream Queue Serialization Stalls: {avg_blocked_ms:6.2f} ms" + ) + print(f" 3. Pure Video Frame File-Ingestion Read: {avg_reader_ms:6.2f} ms") + print("-" * 60) + print("BACKGROUND INGESTION HEALTH (ASYNC METRICS):") + print( + f" A. Inbound Stream Decode Speed: {all_frame_fps:6.2f} FPS" + ) + print(f" B. {h2d_display_label:<42} {avg_h2d_ms:6.2f} ms") + print(f" C. Consumer Queue Saturation Density: {avg_saturation:6.1f}%") + print( + f" D. Peak PCIe Upload Throughput: {self.pcie_throughput_gbps:6.2f} GB/s" + ) + print( + f" E. Active Thread Pool Work Backlog: {avg_backlog:6.1f} tasks" + ) + print( + f" F. VRAM Hardware Memory Efficiency (Cache): {self.vram_efficiency:6.1f}%" + ) + print("-" * 60) + + # EXPANDED PERFORMANCE INSIGHTS AND DIAGNOSTICS + print("PIPELINE HEALTH & BEHAVIOR INSIGHTS:") + if avg_saturation > 80.0: + pipeline_status = "CHOKED" + print( + f" • Status: \033[91m🔴 {pipeline_status}\033[0m (Downstream logic cannot keep up with inbound stream speed)" + ) + elif avg_saturation > 40.0: + pipeline_status = "BALANCED" + print( + f" • Status: \033[93m🟡 {pipeline_status}\033[0m (Queue buffer is actively pacing consumer workloads)" + ) + else: + pipeline_status = "IDLE/LIGHT" + print( + f" • Status: \033[92m🟢 {pipeline_status}\033[0m (Consumer loop finishes ahead of background ingestion clock)" + ) + + print(f" • Peak Queue Fullness Reached: {peak_saturation:.1f}%") + # Calculate stream drop indicator + print(f" • Targeted Pacing Delivery Accuracy: {target_match_ratio:.1f}%") + print(f" • Downstream Serialization Pressure Index: {serial_pressure}") + print(f" • Core Queue Evacuation Velocity Rank: {evac_vel}") + print( + f" • Hardware Compute Backpressure Index: {backpressure_index:6.2f}%" + ) + print( + f" • Preprocessing to Inference Cost Density: {model_cost_density:6.2f}x" + ) + print( + f" • Physical PCIe Gen4 Bus Saturation Level: {pcie_bus_saturation:6.2f}%" + ) + print("=" * 60) + self.__class__.benchmarks.append( { "Test Name": self._testMethodName, "Detection Type": self.config.DETECTION_TYPE, - "Device": self.device, + "Device": self.config.DEVICE, "Smart Filtering": "Enabled" if sf_enabled else "Disabled", - "Video": self.video_path.name, # self.name? - "Video FPS": f"{self.input_fps:.2f}", - "Video Duration (s)": f"{duration_s:.4f}", - "Video Frames": self.frame_count, - "Target Frames": self.frame_count_target, - "Pipeline Latency (s)": f"{real_latency_s:.2f}", - "Display Latency (s)": f"{self.elapsed_display_time:.2f}", - "sf+roi+det Latency (s)": f"{latency_s:.2f}", - # Includes time by HW decoder (reader) and preparing output video - "Pipeline FPS (Video frames)": f"{real_est_fps:.2f}", - "Pipeline FPS (Target frames)": f"{real_est_fps_processed:.2f}", - # TIming to display frame (read to after send to render queue) - "Display Frames": stat_frame_count, - "Display FPS": f"{stat_fps:.2f}", - # Only sf + roi + det - "sf+roi+det FPS (Video frames)": f"{est_fps:.2f}", - "sf+roi+det FPS (Target frames)": f"{est_fps_processed:.2f}", + "Video": self.source, # self.name? + "Video FPS": f"{self.reader.input_fps:.2f}", + "Video Original Duration (s)": f"{duration_s:.4f}", + "Video Frames": self.reader.total_input_frames, + # PIPELINE OVERVIEW + "Target FPS": f"{self.reader.target_fps:.2f}", + "Output Duration (s)": f"{out_duration_s:.4f}", + "Output Frames": total_written_frames, + "Pipeline Latency (s)": f"{total_pipeline_s:.2f}", + "Pipeline FPS (Video frames)": f"{all_frame_fps:.2f}", + "Pipeline FPS (Target frames)": f"{target_frame_fps:.2f}", + "Real Pipeline Latency (s)": f"{total_real_pipeline_s:.2f}", + "Real Pipeline FPS (Target frames)": f"{real_est_fps:.2f}", + # MAIN CONSUMER LOOP TIMELINE (SEQUENTIAL OVERHEAD) + "Avg Frame Reading (ms)": f"{avg_reader_ms:.2f}", + # "Avg Resize (ms)": f"{avg_resize_ms:.2f}", + # "Avg Writer Async Handoff (ms)": f"{avg_write_ms:.2f}", + # BACKGROUND INGESTION HEALTH (ASYNC METRICS) + "Avg Host Copy (ms)": f"{avg_copy_ms:.2f}", + "Avg DMA Upload (ms)": f"{avg_h2d_ms:.2f}", + "Avg Data Prep Overhead (ms)": f"{avg_prep_ms:.2f}", + "Avg Queue Blocked (ms)": f"{avg_blocked_ms:.2f}", + "Avg Queue Saturation (%)": f"{avg_saturation:.2f}", + # Framework Overhead Leak Tracking (Measures loop time spent outside raw AI inference model blocks) + "Loop Overhead %": f"{loop_overhead:.2f}%", + # Inbound Stream Frame Drop Rate (Identifies if background threads are dropping packets due to I/O) + "Inbound Frame Drop %": f"{frame_drop:.2f}%", + # Serialization Pressure Index (Tracks what percentage of your frame time is lost to thread stalls) + "Serialization Pressure %": f"{serial_pressure:.2f}%", + # Queue Evacuation Velocity Coefficient (Values > 1.0 mean your consumer loop drains frames faster than ingestion) + "Evacuation Velocity": f"{evac_vel:.2f}x", + "Compute Backpressure Index": f"{backpressure_index:.2f}%", + "Model Cost Density Ratio": f"{model_cost_density:.2f}x", + "PCIe Bus Saturation %": f"{pcie_bus_saturation:.2f}%", + # PIPELINE HEALTH & BEHAVIOR INSIGHTS + "Pipeline Status": pipeline_status, + "Peak Queue Fullness (%)": f"{peak_saturation:.2f}", + "Targeted Pacing Delivery (%)": f"{target_match_ratio:.2f}", + # DETECTION PIPELINE (Should B NULL) + "SF/Detection Latency (s)": f"{det_latency_s:.2f}", + "SF/Detection FPS": f"{det_est_fps:.2f}", "Avg SF (ms)": f"{avg_sf:.2f}", "Avg ROI (ms)": f"{avg_roi:.2f}", "Avg Obj. Detection (ms)": f"{avg_det:.2f}", - "Total Breakdown Sum (ms)": f"{total_sum:.2f}", + "Total Breakdown Sum (ms)": f"{det_latency_ms:.2f}", "Avg Area Coverage %": f"{avg_cov:.2f}%", "Avg Crops/Frame": f"{avg_crops:.1f}", + # "Frames w/o ROIs": self.no_roi_frame_cnt, "Crop Cap Rate (>20)": f"{cap_rate:.1f}%", "Objects Detected": num_objs, + # TIming to display frame (read to after send to render queue) + "Display Latency (s)": f"{self.elapsed_display_time:.2f}", + "Display Frames": stat_frame_count, + "Display FPS": f"{stat_fps:.2f}", + "PCIe Bandwidth Throughput (GB/s)": f"{self.pcie_throughput_gbps:.2f}", + "Avg Async Thread Pool Backlog": f"{sum(self.component_stats.get('thread_backlog', [0])) / len(self.component_stats.get('thread_backlog', [1])):.1f}", + "VRAM Allocation Efficiency (%)": f"{self.vram_efficiency:.1f}%", } ) - print(f"\n[{self._testMethodName}] Latency: {latency_s:.2f} sec") print( - f"\n[{self._testMethodName}] Pipeline FPS (Target frames): {real_est_fps_processed:.2f} ({self.frame_count_target} frames)" + f"\n[{self._testMethodName}] Pipeline Latency (s): {total_pipeline_s:.2f} sec" ) print( - f"\n[{self._testMethodName}] sf+roi+det FPS (Target frames): {est_fps_processed:.2f} ({self.frame_count_target} frames)" + f"\n[{self._testMethodName}] Pipeline FPS (Target frames): {target_frame_fps:.2f} ({total_written_frames} frames)" ) print( - f"\n[{self._testMethodName}] Display FPS (Target frames): {stat_fps:.2f} ({stat_frame_count} frames)" + f"\n[{self._testMethodName}] Pipeline FPS (Video frames): {all_frame_fps:.2f} ({self.reader.total_input_frames} frames)" ) - - # def tensor2opencv_gpu(self, frame_tensor): - # """ - # GPU-native equivalent of tensor2opencv. - # Fixes the '3x3 ghosting' and 'ValueError' at 30+ FPS. - # """ - # # 1. Handle Batch Dimension: (1, 3, 640, 640) -> (3, 640, 640) - # temp = frame_tensor.squeeze(0) if frame_tensor.ndim == 4 else frame_tensor - - # # 2. Fix Layout & Shape: (3, 640, 640) -> (640, 640, 3) - # # contiguous() physically rearranges pixels in VRAM to interleave colors. - # # reshape() ensures we never see the (1, 409600, 3) shape again. - # gpu_hwc = temp.permute(1, 2, 0).reshape(640, 640, 3).contiguous() - - # # 3. Visibility Fix: Scale floats (0.0-1.0) to bytes (0-255) on GPU - # if gpu_hwc.dtype != torch.uint8: - # gpu_hwc = (gpu_hwc * 255).clamp(0, 255).byte() - - # # 4. Color Space Fix: RGB -> BGR (Matches OpenCV) - # gpu_bgr = gpu_hwc.flip(-1).contiguous() - - # # 5. Bridge to CuPy (Zero-Copy) - # cp_frame = cp.from_dlpack(torch.utils.dlpack.to_dlpack(gpu_bgr)) - - # # 6. Select Double-Buffer from Pool - # target_buf_cpu = self.pinned_pool_np[self.pool_idx] - # target_buf_gpu = self.cp_pool[self.pool_idx] - # self.pool_idx = (self.pool_idx + 1) % 2 - - # if not hasattr(self, "transfer_stream"): - # self.transfer_stream = cp.cuda.Stream(non_blocking=True) - - # with self.transfer_stream: - # # cp.copyto is more robust for pinned memory than target[:] - # cp.copyto(target_buf_gpu, cp_frame) - # # Download into the pinned CPU RAM - # target_buf_gpu.get(out=target_buf_cpu) - - # # 7. Mandatory Sync: Wait for the DMA transfer to hit RAM - # self.transfer_stream.synchronize() - - # # Return a snapshot copy so the worker has private memory for 30 FPS - # return target_buf_cpu.copy() - - # DEBUG FUNCTIONS -------------------------------------------- - def debug_save_mask(self, frame_source, frame_num, rois=None): - debug_dir = self.result_dir / "debug_mask" / self._testMethodName - debug_dir.mkdir(parents=True, exist_ok=True) - - if frame_num > self.config.DEBUG_FRAME_LIMIT: - return - - # Download or copy the data - if hasattr(frame_source, "download"): - img_cpu = frame_source.download() - elif torch.is_tensor(frame_source): - # .contiguous() fixes the horizontal "shredding"/static look - temp = frame_source.squeeze(0) if frame_source.ndim == 4 else frame_source - # img_cpu = temp.permute(1, 2, 0).contiguous().cpu().numpy() - if temp.ndim == 1: - temp = temp.view(self.resize_h, self.resize_w) - - if temp.ndim == 3: - img_cpu = temp.permute(1, 2, 0).contiguous().cpu().numpy() - else: - img_cpu = temp.contiguous().cpu().numpy() - else: - # For numpy arrays (like your pinned memory), ensure memory is linear - img_cpu = np.ascontiguousarray(frame_source) - - # Fix Visibility (Normalization) - # If float, scale to 0-255. If uint8, leave as is to avoid "neon" colors. - if img_cpu.dtype != np.uint8: - if img_cpu.max() <= 1.0: - img_cpu = (img_cpu * 255).clip(0, 255).astype(np.uint8) - else: - img_cpu = img_cpu.astype(np.uint8) - - # Handle Color Space - # OpenCV imwrite expects BGR. If 3-channel (RGB), swap. If 1-channel, save as-is. - if len(img_cpu.shape) == 3: - # img_cpu = cv2.cvtColor(img_cpu, cv2.COLOR_RGB2BGR) - pass - else: - img_cpu = cv2.cvtColor(img_cpu, cv2.COLOR_GRAY2BGR) - - # Draw 8K Boxes (Scaled down) - if rois is not None: - h_img, w_img = img_cpu.shape[:2] - scale_x = float(w_img) / self.frame_width - scale_y = float(h_img) / self.frame_height - boxes = rois.cpu().tolist() if torch.is_tensor(rois) else rois - for box in boxes: - x1, y1, x2, y2 = [ - int(box[0] * scale_x), - int(box[1] * scale_y), - int(box[2] * scale_x), - int(box[3] * scale_y), - ] - cv2.rectangle(img_cpu, (x1, y1), (x2, y2), (0, 0, 255), 2) - - # Save to disk - save_path = debug_dir / f"mask_{frame_num:04d}.jpg" - cv2.imwrite(str(save_path), img_cpu) - - def debug_save_img_roi(self, frame_source, bbs_full_res, frame_num): - debug_dir = self.result_dir / "debug_analysis" / self._testMethodName - debug_dir.mkdir(parents=True, exist_ok=True) - - if frame_num > self.config.DEBUG_FRAME_LIMIT: - return - - # Download/Copy the frame - if torch.is_tensor(frame_source): - # .contiguous() is CRITICAL here to fix the "shredded" look - temp = frame_source.squeeze(0) if frame_source.ndim == 4 else frame_source - img_cpu = temp.permute(1, 2, 0).contiguous().cpu().numpy() - elif hasattr(frame_source, "download"): - img_cpu = frame_source.download() - else: - img_cpu = np.ascontiguousarray(frame_source) - - # Fix Shape: restore spatial grid if flattened - if img_cpu.ndim == 3 and img_cpu.shape[0] == 1: - img_cpu = img_cpu.reshape((self.resize_h, self.resize_w, 3)) - - # Fix Visibility: ONLY multiply if it's actually floating point - # If uint8 is multiplied by 255, it wraps around and creates "neon" colors - if img_cpu.dtype != np.uint8: - if img_cpu.max() <= 1.0: - img_cpu = (img_cpu * 255).clip(0, 255).astype(np.uint8) - else: - img_cpu = img_cpu.astype(np.uint8) - - # Color Space: Standardize to BGR for imwrite - if len(img_cpu.shape) != 3: - img_cpu = cv2.cvtColor(img_cpu, cv2.COLOR_GRAY2BGR) - - # Draw 8K Boxes (Scaled down) - h_img, w_img = img_cpu.shape[:2] - scale_x = w_img / self.frame_width - scale_y = h_img / self.frame_height - - if bbs_full_res is not None: - boxes = ( - bbs_full_res.cpu().tolist() - if torch.is_tensor(bbs_full_res) - else bbs_full_res - ) - for box in boxes: - x1, y1, x2, y2 = [ - int(box[0] * scale_x), - int(box[1] * scale_y), - int(box[2] * scale_x), - int(box[3] * scale_y), - ] - cv2.rectangle(img_cpu, (x1, y1), (x2, y2), (0, 0, 255), 2) - - cv2.imwrite(str(debug_dir / f"analysis_{frame_num:04d}.jpg"), img_cpu) - - def debug_save_crops(self, cropped_batch, frame_num): - """Saves the first 5 crops of a batch to the results directory.""" - debug_dir = self.result_dir / "debug_crops" / self._testMethodName - debug_dir.mkdir(parents=True, exist_ok=True) - - # Only save for the first self.config.DEBUG_FRAME_LIMIT frames to avoid disk bloat - if frame_num > self.config.DEBUG_FRAME_LIMIT: - return - - for i, crop in enumerate(cropped_batch[: self.config.DEBUG_FRAME_LIMIT]): - # Convert GPU Tensor [C, H, W] -> NumPy [H, W, C] - if torch.is_tensor(crop): - # Reverse normalization (* 255) and permute to BGR - img = (crop.squeeze(0).permute(1, 2, 0) * 255).byte().cpu().numpy() - else: - img = crop - - cv2.imwrite(str(debug_dir / f"frame_{frame_num}_crop_{i}.jpg"), img) - - def debug_save_img(self, frame_source, frame_num): - debug_dir = self.result_dir / "debug_test" / self._testMethodName - debug_dir.mkdir(parents=True, exist_ok=True) - - if frame_num > self.config.DEBUG_FRAME_LIMIT: - return - - # Download/Copy the frame - if torch.is_tensor(frame_source): - # .contiguous() is CRITICAL here to fix the "shredded" look - temp = frame_source.squeeze(0) if frame_source.ndim == 4 else frame_source - img_cpu = temp.permute(1, 2, 0).contiguous().cpu().numpy() - elif hasattr(frame_source, "download"): - img_cpu = frame_source.download() - else: - img_cpu = np.ascontiguousarray(frame_source) - - # Fix Shape: restore spatial grid if flattened - if img_cpu.ndim == 3 and img_cpu.shape[0] == 1: - img_cpu = img_cpu.reshape((self.resize_h, self.resize_w, 3)) - - # Fix Visibility: ONLY multiply if it's actually floating point - # If uint8 is multiplied by 255, it wraps around and creates "neon" colors - if img_cpu.dtype != np.uint8: - if img_cpu.max() <= 1.0: - img_cpu = (img_cpu * 255).clip(0, 255).astype(np.uint8) - else: - img_cpu = img_cpu.astype(np.uint8) - - # Color Space: Standardize to BGR for imwrite - if len(img_cpu.shape) == 3: - pass - else: - img_cpu = cv2.cvtColor(img_cpu, cv2.COLOR_GRAY2BGR) - - cv2.imwrite(str(debug_dir / f"analysis_{frame_num:04d}.jpg"), img_cpu) - - # # FRAME PROCESSORS -------------------------------------------- - # def run_pipeline(self): #, pipeline_fn): - # # n_frames = 0 - # num_objs = 0 - # self.frame_count_target = 0 - # self.next_process_idx = 0.0 - # self.frame_in_clip_count = 0 - # total_pipeline_time_ms = 0.0 # Track pure latency - # coverage_percentages = [] - # self.component_stats = {"sf": [], "roi": [], "det": []} - # self.gpu_event_buffer = {"sf": [], "roi": [], "det": []} - # self.crops_per_frame_list = [] - - # # PRE-SYNC: Ensure GPU is idle before timing starts - # # if self.device_input == "cuda": - # # # Pre-allocate CUDA events for isolated GPU timing - # # # start_event = torch.cuda.Event(enable_timing=True) - # # # end_event = torch.cuda.Event(enable_timing=True) - - # # if torch.cuda.is_available(): - # # torch.cuda.synchronize() - - # self.start() - # time.sleep(0.1) - - # # start_time = time.perf_counter() - # total_session_start = time.perf_counter() - - # while self.active: # and n_frames < 10*self.fps: - # # ret, frame = self.cap.read() - # device_frame, frame_num = self.reader.read() - # if device_frame is None: - # if self.reader.stopped: - # self.active = False - # break - # continue - - # # n_frames += 1 - # self.frame_count += 1 - # is_target_frame = float(frame_num) >= self.next_process_idx - # nob = 0 - - # # if self.device_input == "cuda": - # # # start_eve nt.record() - # # nob, metrics = self.pipeline_fn(device_frame, frame_num, is_target_frame) - # # # end_event.record() - # # # torch.cuda.synchronize() - # # # total_pipeline_time_ms += start_event.elapsed_time(end_event) - # # else: - # # start_t = time.perf_counter() - # if self.device_input == "cuda": - # # Record the reader's current layout availability milestone - # curr_event = torch.cuda.Event() - # curr_event.record() - - # # Instruct the isolated inference stream to wait for this specific frame context - # self.inference_stream.wait_event(curr_event) - # with torch.cuda.stream(self.inference_stream): - # nob, metrics = self.pipeline_fn(device_frame, frame_num, is_target_frame) - # # self.inference_stream.synchronize() - - # else: - # nob, metrics = self.pipeline_fn(device_frame, frame_num, is_target_frame) - # # total_pipeline_time_ms += (time.perf_counter() - start_t) * 1000 - - # num_objs += nob - - # if is_target_frame and metrics != {}: - # num_crops = len(metrics["bbs"]) if metrics["bbs"] is not None else 0 - # self.crops_per_frame_list.append(num_crops) - - # # self.component_stats["roi"].append(metrics["roi_time"]) - - # # if self.device_input != "cuda": - # if metrics.get("sf_time"): - # self.component_stats["sf"].append(metrics["sf_time"]) - # if metrics.get("det_time"): - # self.component_stats["det"].append(metrics["det_time"]) - # if metrics.get("roi_time"): - # self.component_stats["roi"].append(metrics["roi_time"]) - - # # Calculate coverage OUTSIDE the timed block to prevent interference - # if self.config.sf_enabled and metrics.get("bbs") is not None: - # cov = self.calculate_unique_coverage(metrics["bbs"]) - # coverage_percentages.append(cov) - - # # POST-SYNC: Ensure all GPU tasks finished before timing ends - # if self.device_input == "cuda": - # torch.cuda.synchronize() - - # # ACTUAL speed including all overhead - # real_world_latency_ms = (time.perf_counter() - total_session_start) * 1000 - - # # if self.device_input == "cuda": - # # # Move GPU event timings into component_stats lists - # # for key in ["sf", "det", "roi"]: - # # for start, end in self.gpu_event_buffer[key]: - # # self.component_stats[key].append(start.elapsed_time(end)) - - # # Calculate Pure processing latency - # # This excludes: Reader, Tensor2OpenCV, Queueing, and Video Writing - # total_pipeline_time_ms = ( - # sum(self.component_stats["sf"]) - # + sum(self.component_stats["roi"]) - # + sum(self.component_stats["det"]) - # ) - - # # assert num_objs > 0 - # if num_objs == 0: - # print(f" [WARNING] No objects detected for {self._testMethodName}") - - # self._finalize_benchmarks( - # self.frame_count, - # num_objs, - # total_pipeline_time_ms, - # real_world_latency_ms, - # coverage_percentages, - # self.config.sf_enabled, - # self.stat_frame_count, - # self.stat_fps, - # ) - - def run_pipeline(self): - num_objs = 0 - self.frame_count_target = 0 - self.next_process_idx = 0.0 - self.frame_in_clip_count = 0 - total_pipeline_time_ms = 0.0 - coverage_percentages = [] - self.component_stats = {"sf": [], "roi": [], "det": []} - self.crops_per_frame_list = [] - - self.step_size = ( - float(self.input_fps) / float(self.target_fps) - if hasattr(self, "target_fps") - else 1.0 + print( + f"\n[{self._testMethodName}] SF/Detection FPS (Target frames): {det_est_fps:.2f} ({total_written_frames} frames)" + ) + print( + f"\n[{self._testMethodName}] Display FPS: {stat_fps:.2f} ({stat_frame_count} frames)" ) - self.start() - time.sleep(0.1) + def frame2video( + self, + device_frame, + frameNum, + metadata_or_bbs, + class_list, + ): + scale_display_x = self.disp_w / 640 + scale_display_y = self.disp_h / 640 + + if self.device_input == "cuda" and torch.is_tensor(device_frame): + # 2. Fast Inline VRAM Downscaling into our static memory slot + # Reshape to (Batch, Channel, Height, Width) seamlessly without duplicating data + gpu_tensor = device_frame[None, :].permute(0, 3, 1, 2).float() + + resized_tensor = torch.nn.functional.interpolate( + gpu_tensor, + size=(self.disp_h, self.disp_w), + mode="nearest", + ) - total_session_start = time.perf_counter() + # CONVERTS TO CPU EARLIER (WORKS but lowers fps) + # hwc_byte_tensor = resized_tensor.squeeze(0).permute(1, 2, 0).byte() + # cpu_tensor = hwc_byte_tensor.cpu() + # bgr_contiguous = cpu_tensor.contiguous() - while self.active: - # 1. CAPTURE COMPLETE CYCLE OVERHEAD - # t_cycle_start = time.perf_counter() + # Using copy_() avoids creating any runtime allocations or memory-stride drift. + self.static_gpu_byte_bchw.copy_(resized_tensor.byte()) - device_frame, frame_num = self.reader.read() - if device_frame is None: - if self.reader is None or ( - hasattr(self.reader, "stopped") and self.reader.stopped - ): - # --- CRITICAL PIPELINE DRAIN START --- - print( - "[INFO] Reader reached EOF. Draining asynchronous workers and VRAM queues..." - ) + # Safely reshape the pre-allocated, locked GPU memory layout back to standard HWC array topology. + # Since the underlying array layout is strictly contiguous, this permute is guaranteed + # to be zero-copy on the GPU and free from memory race stalls. + bgr_contiguous = self.static_gpu_byte_bchw.squeeze(0).permute(1, 2, 0) - # 1. Thread Pool Flush: Force the CPU thread to block here until - # every single background pipeline task in the executor finishes. - if hasattr(self, "executor") and self.executor: - self.executor.shutdown(wait=True) + # 1. Grab the current free pinned slot tracking variables from your reader + d2h_idx = self.reader.d2h_selector + pinned_tensor_buf = self.reader.d2h_buffers[d2h_idx] - # 2. Render Queue Flush: If you utilize an asynchronous video frame - # saving worker thread, wait for its queue tasks to bottom out. - if hasattr(self, "render_queue") and self.render_queue: - while not self.render_queue.empty(): - time.sleep(0.01) + # c_idx = self.canvas_selector + # current_canvas = self.static_host_canvases[c_idx] - # 3. GPU Hardware Flush: Force the GPU to completely finish - # all remaining background subtraction, crops, and YOLO operations. - if self.device_input == "cuda": - torch.cuda.synchronize() + # host_tensor_view = torch.as_tensor(current_canvas, device="cpu") - self.active = False - break - continue + # 3. Non-blocking asynchronous PCIe DMA Download directly into our page-locked canvas + with torch.cuda.stream(self.reader.download_stream): + # pinned_tensor = torch.from_numpy(current_canvas).cuda() + pinned_tensor_buf.copy_(bgr_contiguous, non_blocking=True) - self.stat_start_time = time.perf_counter() # timing to display detection - self.frame_count += 1 - # is_target_frame = float(frame_num) >= self.next_process_idx - # CRITICAL CADENCE DRIFT FIX: If input FPS equals target FPS, or if Smart Filtering - # is disabled (YOLO baseline), force is_target_frame to ALWAYS be True. - # This completely bypasses floating-point accumulation drift errors. - if ( - not self.config.sf_enabled - or abs(float(self.input_fps) - float(self.target_fps)) < 0.01 - ): - is_target_frame = True - else: - is_target_frame = float(frame_num) >= self.next_process_idx + # Synchronize only the side download stream layout channel + self.reader.download_stream.synchronize() - # 2. DISPATCH WORKLOADS ASYNCHRONOUSLY - metrics = {} - if is_target_frame: - self.next_process_idx += self.step_size + cpu_360p_frame = self.reader.d2h_numpys[d2h_idx] - if self.device_input == "cuda": - # Instantiate a lightweight hardware fence event object - curr_event = torch.cuda.Event(enable_timing=False) - # curr_event.record() - # Record the exact milestone on the default stream right after fetching the frame data - curr_event.record(torch.cuda.default_stream()) - self.inference_stream.wait_event(curr_event) - with torch.cuda.stream(self.inference_stream): - # 1. Isolate the incoming image buffer canvas - isolated_device_frame = ( - device_frame.clone() - if torch.is_tensor(device_frame) - else device_frame.copy() - ) + # 5. Non-Blocking Push straight to your background AsyncVideoWriter thread pool + # We pass a direct .copy() slice so the hot loop can instantly reuse the pinned ring buffer + display_frame = np.array(cpu_360p_frame, copy=True, order="C") - # 2. RUN BACKGROUND SUBTRACTION IMMEDIATELY ON THE PRODUCER TIMELINE - # This guarantees that the mask matches this exact frame_num before threads overlap! - nob, metrics = self.pipeline_fn( - isolated_device_frame, - frame_num, - is_target_frame, - self.stat_start_time, - ) - else: - # 1. Isolate the incoming image buffer canvas - isolated_device_frame = ( - device_frame.clone() - if torch.is_tensor(device_frame) - else device_frame.copy() - ) + if display_frame is not None and display_frame.shape[-1] == 3: + display_frame = cv2.cvtColor(display_frame, cv2.COLOR_RGB2BGR) - # 2. RUN BACKGROUND SUBTRACTION IMMEDIATELY ON THE PRODUCER TIMELINE - # This guarantees that the mask matches this exact frame_num b - nob, metrics = self.pipeline_fn( - isolated_device_frame, - frame_num, - is_target_frame, - self.stat_start_time, - ) + # --- Draw Detection Overlays --- + if isinstance(metadata_or_bbs, dict): + # Object Mode (YOLO Structs) + display_frame = get_metadata_overlay( + display_frame, + metadata_or_bbs, + class_list, + (scale_display_x, scale_display_y), + (self.disp_w, self.disp_h), + is_bgr=True, + ) - num_objs += nob - # else: - # # Process background execution context for skipped frames - # nob, metrics = self.pipeline_fn( - # device_frame, frame_num, is_target_frame, self.stat_start_time - # ) - - # 3. ENFORCE UNIFIED HARDWARE TIMING BARRIER - # if self.device_input == "cuda": - # torch.cuda.synchronize() - - # t_cycle_end = time.perf_counter() - # cycle_total_ms = (t_cycle_end - t_cycle_start) * 1000.0 - - # 4. ALLOCATE ALL TRACKING TIMINGS ACCURATELY - # if is_target_frame: - if metrics != {}: - num_crops = len(metrics["bbs"]) if metrics["bbs"] is not None else 0 - self.crops_per_frame_list.append(num_crops) - - if self.config.sf_enabled: - self.component_stats["sf"].append(metrics["sf_time"]) - self.component_stats["roi"].append(metrics["roi_time"]) - else: - # Full-frame YOLO baseline accounts for total data movement cycle - # self.component_stats["det"].append(cycle_total_ms) - self.component_stats["sf"].append(0.0) - self.component_stats["roi"].append(0.0) - - self.component_stats["det"].append(metrics["det_time"]) - - if self.config.sf_enabled and metrics.get("bbs") is not None: - cov = self.calculate_unique_coverage(metrics["bbs"]) - coverage_percentages.append(cov) - # else: - # # CRITICAL METRICS FIX: If Smart Filtering runs on a skipped frame, - # # its mask generation overhead MUST be captured and tracked! - # if self.config.sf_enabled and metrics != {}: - # self.component_stats["sf"].append(metrics["sf_time"]) + elif metadata_or_bbs is not None: + # # Motion / Smart Filtering Overlay Path + display_frame = get_bb_overlay( + display_frame, + metadata_or_bbs, + (scale_display_x, scale_display_y), + (self.disp_w, self.disp_h), + ) - if self.device_input == "cuda": - torch.cuda.synchronize() + self.async_writer.write_frame(display_frame) + # self.canvas_selector = 1 - self.canvas_selector + self.reader.d2h_selector = 1 - self.reader.d2h_selector - real_world_latency_ms = (time.perf_counter() - total_session_start) * 1000.0 + else: + # Reusable baseline track for CPU execution mappings + display_frame = cv2.resize( + device_frame, + (self.disp_w, self.disp_h), + interpolation=cv2.INTER_NEAREST, + ) + # if metrics["bbs"] is not None: + # for box in metrics["bbs"]: + # cv2.rectangle(cpu_resized, (int(box[0]), int(box[1])), (int(box[2]), int(box[3])), (0, 255, 0), 2) + # --- Draw Detection Overlays --- + if isinstance(metadata_or_bbs, dict): + # Object Mode (YOLO Structs) + display_frame = get_metadata_overlay( + display_frame, + metadata_or_bbs, + class_list, + (scale_display_x, scale_display_y), + (self.disp_w, self.disp_h), + is_bgr=True, + ) - total_pipeline_time_ms = ( - sum(self.component_stats["sf"]) - + sum(self.component_stats["roi"]) - + sum(self.component_stats["det"]) - ) + elif metadata_or_bbs is not None: + # # Motion / Smart Filtering Overlay Path + display_frame = get_bb_overlay( + display_frame, + metadata_or_bbs, + (scale_display_x, scale_display_y), + (self.disp_w, self.disp_h), + ) + self.async_writer.write_frame(display_frame) - if num_objs == 0: - print(f" [WARNING] No objects detected for {self._testMethodName}") - - self._finalize_benchmarks( - # self.frame_count, - num_objs, - total_pipeline_time_ms, - real_world_latency_ms, - coverage_percentages, - self.config.sf_enabled, - self.stat_frame_count, - self.stat_fps, - ) + # PIPELINE FUNCTIONS -------------------------------------------- - # # TESTS -------------------------------------------- - # def pipeline_fn(self, device_frame, overall_frame_num, is_target_frame): - # num_objs = 0 - # metrics = {"sf_time": 0, "roi_time": 0, "det_time": 0, "bbs": None} - - # # Initialize timing event handle pairs - # sf_start, sf_end = torch.cuda.Event(enable_timing=True), torch.cuda.Event(enable_timing=True) - # roi_start, roi_end = torch.cuda.Event(enable_timing=True), torch.cuda.Event(enable_timing=True) - # det_start, det_end = torch.cuda.Event(enable_timing=True), torch.cuda.Event(enable_timing=True) - - # # --- 1. MOTION MASK GENERATION GATE --- - # if self.config.sf_enabled: - # if self.device_input == "cuda": - # sf_start.record(self.inference_stream) - # inf_data = self.rbtd_full_gpu(device_frame) - # sf_end.record(self.inference_stream) - # else: - # t_start = time.perf_counter() - # inf_data = self.rbtd_full_cpu(device_frame) - # metrics["sf_time"] = (time.perf_counter() - t_start) * 1000.0 - # else: - # inf_data = {} - - # # --- PIPELINE AT TARGET RATE --- - # if not is_target_frame: - # # If skipping, pull outstanding execution records immediately - # if self.device_input == "cuda" and self.config.sf_enabled: - # self.inference_stream.synchronize() - # metrics["sf_time"] = sf_start.elapsed_time(sf_end) - # return num_objs, metrics - - # self.next_process_idx += self.step_size - # self.frame_count_target += 1 - # self.frame_in_clip_count += 1 - # inf_data["frameNum"] = self.frame_count_target - - # # --- 2. FULL-RESOLUTION ROI EXTRACTION MAPS --- - # bbs_full_res = None - # if self.config.sf_enabled: - # if self.device_input == "cuda": - # roi_start.record(self.inference_stream) - # bbs_full_res = self.get_gpu_rois( - # inf_data["full_frame"], - # self.frame_count_target, - # inf_data["mask"], - # ) - # roi_end.record(self.inference_stream) - # metrics["bbs"] = bbs_full_res - # else: - # t_start = time.perf_counter() - # bbs_full_res = self.get_cpu_rois( - # inf_data["full_frame"], - # self.frame_count_target, - # inf_data["mask"], - # ) - # metrics["roi_time"] = (time.perf_counter() - t_start) * 1000.0 - # metrics["bbs"] = bbs_full_res - - # if self.config.DEBUG_FLAG: - # if self.device_input == "cuda": - # torch.cuda.stream(self.inference_stream) - # torch.cuda.synchronize() - # display_source = inf_data["mask"] - # self.debug_save_mask( - # display_source, self.frame_count_target, rois=bbs_full_res - # ) - - # clean_bbs = [] - # if self.config.sf_enabled and bbs_full_res is not None: - # if torch.is_tensor(bbs_full_res): - # clean_bbs = bbs_full_res.detach().cpu().numpy() - # else: - # clean_bbs = np.array(bbs_full_res) - - # # --- 3. MODEL INFERENCE TIMING BLOCK --- - # if self.device_input == "cuda": - # det_start.record(self.inference_stream) - # else: - # t_start = time.perf_counter() - - # if self.config.DETECTION_TYPE != "motion": - # det_frame = inf_data["full_frame"] if "full_frame" in inf_data else device_frame - # merged = clean_bbs if self.config.sf_enabled else None - # metadata, _ = self.get_detections( - # det_frame, - # self.frame_in_clip_count, - # merged=merged, - # thickness=self.config.THICKNESS, - # device_input=self.config.device_input, - # ) - # num_objs = len(metadata.keys()) - # else: - # num_objs = len(clean_bbs) - # metadata = clean_bbs - - # if self.device_input == "cuda": - # det_end.record(self.inference_stream) - - # # CRITICAL PERFORMANCE SYNCHRONIZATION POINT: - # # We execute a single stream synchronization barrier here at the end of the entire loop. - # # This allows the GPU kernels to run overlapped and fully concurrently! - # self.inference_stream.synchronize() - - # # Unpack hardware timings efficiently - # if self.config.sf_enabled: - # metrics["sf_time"] = sf_start.elapsed_time(sf_end) - # metrics["roi_time"] = roi_start.elapsed_time(roi_end) - # metrics["det_time"] = det_start.elapsed_time(det_end) - # metrics["bbs"] = bbs_full_res - # else: - # metrics["det_time"] = (time.perf_counter() - t_start) * 1000.0 - - # # --- 4. RENDER WORKER PREPARATION --- - # display_source = inf_data["full_frame"] if (inf_data and "full_frame" in inf_data) else device_frame - - # if self.device_input == "cuda": - # gpu_resized = F.interpolate( - # display_source.unsqueeze(0).float(), - # size=(self.disp_h, self.disp_w), - # mode="bilinear", - # align_corners=False, - # ).squeeze(0).contiguous() - # disp_frame = np.copy(tensor2opencv(gpu_resized, self.config.device_input, is_bgr=True)) - # else: - # cpu_resized = cv2.resize(device_frame, (self.disp_w, self.disp_h)) - # disp_frame = np.copy(tensor2opencv(cpu_resized, self.config.device_input, is_bgr=True)) - - # data_to_draw = clean_bbs if self.config.DETECTION_TYPE == "motion" else metadata - - # try: - # if hasattr(self, "render_queue") and getattr(self, "render_queue", None) is not None and not self.render_queue.full(): - # self.render_queue.put( - # ( - # disp_frame, - # inf_data["frameNum"] if "frameNum" in inf_data else self.frame_count_target, - # data_to_draw, - # self.label_source, - # ) - # ) - # if self.config.DEBUG_FLAG: - # self.debug_save_img(disp_frame, self.frame_count_target) - # self.debug_save_img_roi(disp_frame, bbs_full_res, self.frame_count_target) - # except queue.Full: - # pass - - # self.update_frame() - # return num_objs, metrics - - def pipeline_fn( - self, device_frame, overall_frame_num, is_target_frame, stat_start_time - ): + def pipeline_fn(self, device_frame, overall_frame_num, stat_start_time): num_objs = 0 metrics = {"sf_time": 0, "roi_time": 0, "det_time": 0, "bbs": None} @@ -1514,11 +1433,15 @@ def pipeline_fn( torch.cuda.Event(enable_timing=True), ) - # --- 1. MOTION MASK GENERATION GATE --- if self.config.sf_enabled: if self.device_input == "cuda": sf_start.record(self.inference_stream) - inf_data = self.rbtd_full_gpu(device_frame) + bgs_input_frame = ( + device_frame.byte() + if torch.is_tensor(device_frame) + else device_frame + ) + inf_data = self.rbtd_full_gpu(bgs_input_frame) sf_end.record(self.inference_stream) else: t_start = time.perf_counter() @@ -1526,17 +1449,6 @@ def pipeline_fn( metrics["sf_time"] = (time.perf_counter() - t_start) * 1000.0 else: inf_data = {} - - # --- PIPELINE AT TARGET RATE --- - if not is_target_frame: - # Safe, non-blocking timing extraction for skipped frames - if self.device_input == "cuda" and self.config.sf_enabled: - torch.cuda.synchronize() - metrics["sf_time"] = sf_start.elapsed_time(sf_end) - return num_objs, metrics - - self.frame_count_target += 1 - self.frame_in_clip_count += 1 inf_data["frameNum"] = self.frame_count_target # --- 2. FULL-RESOLUTION ROI EXTRACTION MAPS --- @@ -1581,25 +1493,34 @@ def pipeline_fn( else: clean_bbs = np.array(bbs_full_res) + # If inline optimizations left the tensor in channels-first format (B, C, H, W), + # restore it to standard standard layout standard (H, W, C) so get_detections + # can decode bounding boxes accurately without corrupting weights. + det_frame = device_frame + # Cast float canvases back to standard unsigned byte tracking arrays + # so get_detections can safely run its internal float normalizations. + if torch.is_tensor(det_frame): + det_frame = det_frame.byte() + + if det_frame.ndim == 4: + det_frame = det_frame.squeeze(0).permute(1, 2, 0) + elif det_frame.shape[0] == 3: + det_frame = det_frame.permute(1, 2, 0) + # --- 3. MODEL INFERENCE TIMING BLOCK --- if self.device_input == "cuda": det_start.record(self.inference_stream) else: t_start = time.perf_counter() + metadata = {} if self.config.DETECTION_TYPE != "motion": + # Pass directly or use a light NumPy view slice to protect the raw pointer # det_frame = ( - # inf_data["full_frame"] if "full_frame" in inf_data else device_frame + # device_frame + # if not isinstance(device_frame, np.ndarray) + # else device_frame.view() # ) - # Isolate your image buffer array view to prevent upstream reader pointer races - if "full_frame" in inf_data: - det_frame = inf_data["full_frame"] - else: - det_frame = ( - device_frame.clone() - if torch.is_tensor(device_frame) - else device_frame.copy() - ) merged = clean_bbs if self.config.sf_enabled else None metadata, _ = self.get_detections( @@ -1616,445 +1537,415 @@ def pipeline_fn( if self.device_input == "cuda": det_end.record(self.inference_stream) - - torch.cuda.synchronize() + # torch.cuda.synchronize() + self.inference_stream.synchronize() # Extract hardware timings smoothly without stalling mid-run if self.config.sf_enabled: metrics["sf_time"] = sf_start.elapsed_time(sf_end) metrics["roi_time"] = roi_start.elapsed_time(roi_end) - metrics["det_time"] = det_start.elapsed_time(det_end) - metrics["bbs"] = bbs_full_res + metrics["det_time"] = det_start.elapsed_time(det_end) + metrics["bbs"] = bbs_full_res + metrics["batch_density"] = ( + len(clean_bbs) if clean_bbs is not None else 0 + ) + else: + # Full-frame YOLO baseline tracks the elapsed time from t_start on page 20, line 1273 + metrics["sf_time"] = 0.0 + metrics["roi_time"] = 0.0 + metrics["det_time"] = det_start.elapsed_time(det_end) + metrics["bbs"] = None + metrics["batch_density"] = 1 # 1 Full frame block + else: - metrics["det_time"] = (time.perf_counter() - t_start) * 1000.0 + # CPU Path Execution: Must use standard wall-clock timing loops to avoid CUDA Event errors + if self.config.sf_enabled: + # Timings for sf_time and roi_time are already gathered on CPU on page 19 line 1221 and page 20 line 1246 + metrics["det_time"] = (time.perf_counter() - t_start) * 1000.0 + metrics["bbs"] = bbs_full_res + metrics["batch_density"] = ( + len(clean_bbs) if clean_bbs is not None else 0 + ) + else: + metrics["sf_time"] = 0.0 + metrics["roi_time"] = 0.0 + metrics["det_time"] = (time.perf_counter() - t_start) * 1000.0 + metrics["bbs"] = None + metrics["batch_density"] = 1 + + data_to_draw = clean_bbs if self.config.DETECTION_TYPE == "motion" else metadata - # --- 4. RENDER WORKER PREPARATION --- - display_source = ( - inf_data["full_frame"] - if (inf_data and "full_frame" in inf_data) - else device_frame + self.frame2video( + det_frame, + inf_data["frameNum"], + data_to_draw, + self.label_source, ) - if self.device_input == "cuda": - gpu_resized = ( - F.interpolate( - display_source.unsqueeze(0).float(), - size=(self.disp_h, self.disp_w), - mode="bilinear", - align_corners=False, + self.update_frame(stat_start_time) + return num_objs, metrics # Skip full detection pass + + def run_realtime_inference(self, sf_enabled=True): + # self.duration_target = 30 + self.status = "RUNNING" + metrics = {} + num_objs = 0 + self.is_cuda = self.device.lower() == "gpu" and torch.cuda.is_available() + self.frame_count_target = 0 + self.next_process_idx = 0.0 + self.frame_in_clip_count = 0 + total_pipeline_time_ms = 0.0 + total_read_time = 0.0 + total_queue_saturation = 0.0 + # queue_saturation_history = [0.0] + total_written_frames = 0 + total_sf_pipeline_time_ms = 0.0 + real_world_latency_ms = 0.0 + + # queue_size = 4 + total_run_pipelinefn = 0 + # total_read_time = 0 + # total_resize_time = 0 + # total_written_frames = 0 + # total_disk_write_overhead = 0.0 + total_frame_loop_latency = 0.0 + total_active_processing_overhead = 0.0 + # total_queue_saturation = 0.0 + # total_queue_saturation = 0.0 + queue_saturation_history = [] + consecutive_slow_frames = 0 + # total_dropped_frames = 0 + + coverage_percentages = [] + self.component_stats = { + "sf": [], + "roi": [], + "det": [], + "dma_upload": [], # Track PCIe Transfer Latencies + "queue_blocked": [], # Track GIL Serialization stalls + "batch_sizes": [], # Track Smart Filtering density + "thread_backlog": [], # Track thread work pool backlog + } + self.crops_per_frame_list = [] + + self.step_size = ( + float(self.input_fps) / float(self.target_fps) + if hasattr(self, "target_fps") + else 1.0 + ) + self.max_target_frames = ( + int(self.duration_target * float(self.target_fps)) + if hasattr(self, "target_fps") + else float("inf") + ) + + # self.start() + # time.sleep(0.1) + + # if self.source.startswith("rtsp"): + # short_name = "rtsp" + # else: + # short_name = Path(self.source).stem + # output_path= f"{self.config.SHARED_OUTPUT}/{short_name}_{self.device}.mp4" + # disp_wh = (self.disp_w, self.disp_h) + # async_writer = AsyncVideoWriter( + # self.output_path, + # cv2.VideoWriter_fourcc(*'avc1'), + # float(self.target_fps), + # (self.disp_w, self.disp_h) + # ) + + pipeline_start_time = time.perf_counter() + last_loop_cycle_timestamp = time.perf_counter() + + # try: + self.dynamic_limit = max(2, int(0.5 * self.target_fps)) + # last_frame_time = time.perf_counter() + while self.active and self.frame_count_target < self.max_target_frames: + try: + # FRAME RETRIEVAL --------------------------------------------- + try: + frame_start_time = time.perf_counter() + t_read = time.perf_counter() + # if self.active: + ret, frame_8k, frame_num = ( + self.reader.read() + ) # Successfully reads the 8K frame + + if not ret or frame_8k is None: + # Check if there are any remaining frames still buffered in flight inside the reader queue + # if hasattr(self.reader, 'frame_queue') and not self.reader.frame_queue.empty(): + # ret, frame_8k, frame_num = self.reader.read() + # if not ret or frame_8k is None: + # break + # else: + # break + if self.reader is None or ( + hasattr(self.reader, "stopped") and self.reader.stopped + ): + if self.device_input == "cuda": + torch.cuda.synchronize() + self.active = False + break + continue + + reader_time = time.perf_counter() - t_read + total_read_time += reader_time + + # Calculate the exact time gap between the last frame completion + # and the start of the next read. This accurately captures downstream GIL blocks. + cycle_gap = time.perf_counter() - last_loop_cycle_timestamp + # Subtract the actual read duration to isolate the thread stall time + true_serialization_stall = max( + 0.0, (cycle_gap - (time.perf_counter() - t_read)) * 1000.0 + ) + self.component_stats["queue_blocked"].append( + true_serialization_stall + ) + + except queue.Empty: + if getattr(self.reader, "reconnect_failed", False): + self.active = False + break + time.sleep(0.002) + continue + + # print(f"frame_num: {frame_num}") + + self.stat_start_time = time.perf_counter() + self.frame_count += 1 + # is_target_frame = True + + # Real-Time Metric A: Track Queue Saturation Density Ratio + # current_q_size = self.reader.frame_queue.qsize() + saturation_ratio = ( + self.reader.frame_queue.qsize() / self.reader.frame_queue.maxsize ) - .squeeze(0) - .contiguous() - ) - disp_frame = np.copy( - tensor2opencv(gpu_resized, self.config.device_input, is_bgr=True) + total_queue_saturation += saturation_ratio + queue_saturation_history.append(saturation_ratio) + + # RUN PIPELINE_FN --------------------------------------------- + run_pipelinefn_start = time.perf_counter() + self.frame_count_target += 1 + self.frame_in_clip_count += 1 + + if self.device_input == "cuda": + # Instantiate a lightweight hardware fence event object + curr_event = torch.cuda.Event(enable_timing=False) + # curr_event.record() + # Record the exact milestone on the default stream right after fetching the frame data + curr_event.record(torch.cuda.default_stream()) + self.inference_stream.wait_event(curr_event) + + with torch.cuda.stream(self.inference_stream): + nob, metrics = self.pipeline_fn( + frame_8k, + frame_num, + # is_target_frame, + self.stat_start_time, + ) + # torch.cuda.default_stream().synchronize() + # self.inference_stream.synchronize() + + # Extract PCIe DMA upload latency from your hardware background reader + if hasattr(self.reader, "total_h2d_time"): + avg_h2d_frame_ms = ( + self.reader.total_h2d_time + / max(1, total_written_frames + 1) + ) * 1000.0 + self.component_stats["dma_upload"].append(avg_h2d_frame_ms) + else: + nob, metrics = self.pipeline_fn( + frame_8k, + frame_num, + # is_target_frame, + self.stat_start_time, + ) + num_objs += nob + + total_written_frames += 1 + + # Real-Time Metric B: Frame Processing Latency Check + frame_loop_latency = ( + time.perf_counter() - frame_start_time + ) * 1000 # ms + total_frame_loop_latency += frame_loop_latency + + # Isolate active processing time (excluding the queue blocking read) + active_processing_overhead = frame_loop_latency - (reader_time * 1000) + total_active_processing_overhead += active_processing_overhead + + # RUNTIME TERMINAL WARNING ALERTS + if saturation_ratio >= 1.0 or active_processing_overhead > ( + 1000 / self.target_fps + ): + consecutive_slow_frames += 1 + if ( + consecutive_slow_frames % self.target_fps == 0 + ): # Throttle terminal spam + print( + f"\033[93m⚠️ [PERF WARNING] Main loop starving! Waiting on stream ingestion... " + f"Read Wait: {reader_time:.1f}ms | Other Wait: {active_processing_overhead:.1f}ms | Queue Fullness: {saturation_ratio * 100:.0f}%\033[0m" + ) + else: + consecutive_slow_frames = max(0, consecutive_slow_frames - 1) + + if total_written_frames % (5 * self.target_fps) == 0: + print( + f"Captured {total_written_frames}/{self.max_target_frames} frames..." + ) + + # WRAP-UP FRAME INSTANCE --------------------------------------------- + # if self.device_input == "cuda" and torch.cuda.is_available(): + # torch.cuda.default_stream().synchronize() + + total_run_pipelinefn += time.perf_counter() - run_pipelinefn_start + + # Explicitly delete frame variables to free their references + del frame_8k + + last_loop_cycle_timestamp = time.perf_counter() + + # Force PyTorch's internal allocator to release cached segments back to the OS + # if self.frame_count_target % (5 * self.target_fps) == 0: + # print( + # f"Captured {self.frame_count_target}/{self.max_target_frames} frames..." + # ) + # torch.cuda.empty_cache() + # torch.cuda.ipc_collect() + + except torch.cuda.OutOfMemoryError: + print("\n" + "!" * 70) + print( + "[CRITICAL TEST CRASH] GPU MEMORY CEILING HIT INSIDE RUNNER LOOP!" + ) + print( + "Freezing allocation history registers and writing diagnostic log..." + ) + print("!" * 70) + + try: + import os + + snapshot_filename = ( + f"/tmp/test_vram_leak_profile_pid{os.getpid()}.pickle" + ) + torch.cuda.memory._dump_snapshot(snapshot_filename) + print( + f"[PROFILER SUCCESSFUL] Snapshot profile written to: {snapshot_filename}" + ) + print( + "--> Drag and drop this file directly into: https://pytorch.org" + ) + except Exception as dump_err: + print(f"Failed to record profile data snapshot: {dump_err}") + + # Force safe system unlinking of background workers to clean up OS handles + self.active = False + if hasattr(self, "reader") and self.reader is not None: + self.reader.stop() + raise + + except Exception: + traceback.print_exc() + + # POST FRAME PROCESSING --------------------------------------------- + pipeline_end_time = time.perf_counter() + + # Resolve the final execution window. If the stream ran to completion, + # use the operational end marker to avoid measuring downstream disk write bottlenecks. + final_end_marker = getattr(self, "pipeline_completion_timestamp", None) + if final_end_marker is None: + final_end_marker = time.perf_counter() + # self.pipeline_completion_timestamp = final_end_marker + + real_world_latency_ms = float((final_end_marker - pipeline_start_time) * 1000.0) + + total_sf_pipeline_time_ms = float( + sum(self.component_stats.get("sf", [0.0])) + + sum(self.component_stats.get("roi", [0.0])) + + sum(self.component_stats.get("det", [0.0])) + ) + total_pipeline_time_ms = float( + (pipeline_end_time - pipeline_start_time) * 1000.0 + ) + + # total_queue_saturation = sum( + # self.component_stats.get("batch_sizes", [0.0]) + # ) # Sample array profile proxy + + if metrics != {}: + num_crops = len(metrics["bbs"]) if metrics["bbs"] is not None else 0 + self.crops_per_frame_list.append(num_crops) + + # Context-aware extraction of the newly proposed metrics + density = metrics.get("batch_density", 0 if self.config.sf_enabled else 1) + self.component_stats["batch_sizes"].append(density) + + self.component_stats["sf"].append(metrics["sf_time"]) + self.component_stats["roi"].append(metrics["roi_time"]) + self.component_stats["det"].append(metrics["det_time"]) + + # Calculate coverage OUTSIDE the timed block to prevent interference + if self.config.sf_enabled and metrics.get("bbs") is not None: + cov = self.calculate_unique_coverage(metrics["bbs"]) + coverage_percentages.append(cov) + self.async_writer.release() + # Continuously sample the thread work pool backlog state mechanics + if hasattr(self, "executor") and self.executor is not None: + # Safely probe internal concurrent.futures work queue bounds + self.component_stats["thread_backlog"].append( + self.executor._work_queue.qsize() ) else: - cpu_resized = cv2.resize(device_frame, (self.disp_w, self.disp_h)) - disp_frame = np.copy( - tensor2opencv(cpu_resized, self.config.device_input, is_bgr=True) - ) + self.component_stats["thread_backlog"].append(0) - data_to_draw = clean_bbs if self.config.DETECTION_TYPE == "motion" else metadata + # Real-Time Metric B: Frame Processing Latency Check + # total_frame_loop_latency = (pipeline_end_time - frame_start_time) * 1000 # ms - # try: - # if ( - # hasattr(self, "render_queue") - # and getattr(self, "render_queue", None) is not None - # and not self.render_queue.full() - # ): - # self.render_queue.put( - # ( - # disp_frame, - # inf_data["frameNum"] - # if "frameNum" in inf_data - # else self.frame_count_target, - # data_to_draw, - # self.label_source, - # ) - # ) - # if self.config.DEBUG_FLAG: - # self.debug_save_img(disp_frame, self.frame_count_target) - # self.debug_save_img_roi( - # disp_frame, bbs_full_res, self.frame_count_target + # Isolate active processing time (excluding the queue blocking read) + # total_active_processing_overhead = total_frame_loop_latency - total_read_time #(reader_time * 1000) + + # RUNTIME TERMINAL WARNING ALERTS + # if saturation_ratio >= 1.0 or active_processing_overhead > (1000 / self.target_fps): + # consecutive_slow_frames += 1 + # if consecutive_slow_frames % self.target_fps == 0: # Throttle terminal spam + # print( + # f"\033[93m⚠️ [PERF WARNING] Main loop starving! Waiting on stream ingestion... " + # f"Read Wait: {frame_loop_latency:.1f}ms | Queue Fullness: {saturation_ratio * 100:.0f}%\033[0m" # ) - # except queue.Full: - # pass + # else: + # consecutive_slow_frames = max(0, consecutive_slow_frames - 1) - if ( - hasattr(self, "render_queue") - and getattr(self, "render_queue", None) is not None - ): - self.render_queue.put( - ( - disp_frame, - inf_data["frameNum"] - if "frameNum" in inf_data - else self.frame_count_target, - data_to_draw, - self.label_source, - ) + # CALCULATE PERFORMANCE METRICS --------------------------------------------- + print( + f"\nExecution Finished. Total Output Frames Written: {self.frame_count_target}" + ) + + # Render your metrics dashboard table cleanly + if self.frame_count_target > 0: + avg_frame_loop_latency = total_frame_loop_latency / self.frame_count_target + self._finalize_benchmarks( + num_objs, + self.frame_count_target, # Reads the updated integer directly! + total_pipeline_time_ms, + real_world_latency_ms, + total_sf_pipeline_time_ms, + avg_frame_loop_latency, + coverage_percentages, + total_read_time, + total_queue_saturation, + queue_saturation_history, ) - if self.config.DEBUG_FLAG: - self.debug_save_img(disp_frame, self.frame_count_target) - self.debug_save_img_roi(disp_frame, bbs_full_res, self.frame_count_target) + else: + print( + f"[SKIPPED SUMMARY] Only {self.frame_count_target} frames processed. ", + flush=True, + ) + self.stop() - self.update_frame(stat_start_time) - return num_objs, metrics - - # def sf_cpu_pipeline_fn(self, device_frame, overall_frame_num, is_target_frame): - # num_objs = 0 - # metrics = {"sf_time": 0, "roi_time": 0, "det_time": 0, "bbs": None} - - # # Smart Filtering (Resize / Background Subtraction / Threshold / Dilate) - # t_start = time.perf_counter() - # inf_data = self.rbtd_full_cpu(device_frame) - # metrics["sf_time"] = (time.perf_counter() - t_start) * 1000 - - # # Only keep frames for TARGET_FPS - # # Videos are written for target frames only - # if is_target_frame: - # self.next_process_idx += self.step_size - # self.frame_count_target += 1 # 1-indexed - - # if not inf_data or inf_data["mask"] is None: - # return num_objs, metrics - - # metadata = {} - # bbs_to_send = [] - # data_to_draw = [] - # if inf_data: - # inf_data["frameNum"] = self.frame_count_target - - # # Get ROIs - # t_start = time.perf_counter() - # bbs_full_res = self.get_cpu_rois( - # inf_data["full_frame"], - # self.frame_count_target, - # inf_data["mask"], - # ) - # metrics["roi_time"] = (time.perf_counter() - t_start) * 1000 - # metrics["bbs"] = bbs_full_res - - # if self.config.DEBUG_FLAG: - # display_source = inf_data["mask"] - # self.debug_save_mask( - # display_source, self.frame_count_target, rois=bbs_full_res - # ) - - # if bbs_full_res is not None and len(bbs_full_res) == 0: - # return num_objs, metrics - - # # if self.config.DEBUG_FLAG or self.config.DETECTION_TYPE == "motion": - # # display_source = ( - # # inf_data["full_frame"] - # # if (inf_data and "full_frame" in inf_data) - # # else device_frame - # # ) - # # cpu_resized = cv2.resize( - # # display_source, - # # (self.resize_w, self.resize_h), - # # interpolation=cv2.INTER_NEAREST, - # # ) - - # t_start = time.perf_counter() - # if self.config.DETECTION_TYPE == "motion": - # # Motion Mode: Prepare boxes for drawing - # if ( - # bbs_full_res is not None - # and bbs_full_res.ndim == 2 - # and bbs_full_res.size(0) > 0 - # ): - # scaled_resized_bbs = bbs_full_res / self.scales_tensor - # bbs_to_send = scaled_resized_bbs.cpu().tolist() - # else: - # bbs_to_send = [] - - # data_to_draw = bbs_to_send - # num_objs = len(bbs_full_res) - # else: - # # Object Mode: Run YOLO and prepare metadata - # det_frame = inf_data["full_frame"] if inf_data else device_frame - # metadata, _ = self.get_detections( - # det_frame, - # self.frame_count_target, # Frame used in metadata - # merged=bbs_full_res, - # thickness=self.config.THICKNESS, - # device_input=self.config.device_input, - # ) - # data_to_draw = metadata - # num_objs = len(metadata.keys()) - - # metrics["det_time"] = (time.perf_counter() - t_start) * 1000 - - # # --- OFFLOAD TO QUEUE (Run for EVERY target frame) --- - # if not self.config.TEST_MODE: - # display_source = ( - # inf_data["full_frame"] - # if (inf_data and "full_frame" in inf_data) - # else device_frame - # ) - # cpu_resized = cv2.resize(display_source, (self.resize_w, self.resize_h)) - # display_frame = tensor2opencv( - # cpu_resized, self.config.device_input, is_bgr=True - # ) - # self.render_queue.put((display_frame, data_to_draw, self.label_source)) - - # if self.config.DEBUG_FLAG: - # cpu_resized = cv2.resize( - # display_source, (self.resize_w, self.resize_h) - # ) - # self.debug_save_img(cpu_resized, self.frame_count_target) - # self.debug_save_img_roi( - # cpu_resized, bbs_full_res, self.frame_count_target - # ) - - # return num_objs, metrics - - # def sf_gpu_pipeline_fn(self, device_frame, overall_frame_num, is_target_frame): - # num_objs = 0 - # metrics = {"sf_time": 0, "roi_time": 0, "det_time": 0, "bbs": None} - - # # Smart Filtering (Resize / Background Subtraction / Threshold / Dilate) - # sf_start, sf_end = ( - # torch.cuda.Event(enable_timing=True), - # torch.cuda.Event(enable_timing=True), - # ) - # sf_start.record() - # inf_data = self.rbtd_full_gpu(device_frame) - # sf_end.record() - # self.gpu_event_buffer["sf"].append((sf_start, sf_end)) - - # # Only keep frames for TARGET_FPS - # # Videos are written for target frames only - # if is_target_frame: - # self.next_process_idx += self.step_size - # self.frame_count_target += 1 # 1-indexed - - # if not inf_data or inf_data["mask"] is None: - # return num_objs, metrics - - # metadata = {} - # bbs_to_send = [] - # data_to_draw = [] - # if inf_data: - # inf_data["frameNum"] = self.frame_count_target - - # # Get ROIs - # # time.perf_counter accurate since called self.bgs_stream.waitForCompletion() - # # t_start = time.perf_counter() - # roi_start = torch.cuda.Event(enable_timing=True) - # roi_end = torch.cuda.Event(enable_timing=True) - # roi_start.record() - # bbs_full_res = self.get_gpu_rois( - # inf_data["full_frame"], - # self.frame_count_target, - # inf_data["mask"], - # ) - # # metrics["roi_time"] = (time.perf_counter() - t_start) * 1000 - # # self.gpu_event_buffer["roi"].append((roi_start, roi_end)) - # roi_end.record() - # self.gpu_event_buffer["roi"].append((roi_start, roi_end)) - # metrics["bbs"] = bbs_full_res - - # if self.config.DEBUG_FLAG: - # self.bgs_stream.waitForCompletion() - # display_source = inf_data["mask"] - # self.debug_save_mask( - # display_source, self.frame_count_target, rois=bbs_full_res - # ) - - # if bbs_full_res is not None and len(bbs_full_res) == 0: - # return num_objs, metrics - - # det_start, det_end = ( - # torch.cuda.Event(enable_timing=True), - # torch.cuda.Event(enable_timing=True), - # ) - # det_start.record() - # if self.config.DETECTION_TYPE == "motion": - # # Motion Mode: Prepare boxes for drawing - # if ( - # bbs_full_res is not None - # and bbs_full_res.ndim == 2 - # and bbs_full_res.size(0) > 0 - # ): - # scaled_resized_bbs = bbs_full_res / self.scales_tensor - # bbs_to_send = scaled_resized_bbs.detach().cpu().tolist() - # else: - # bbs_to_send = [] - # data_to_draw = bbs_to_send - # num_objs = len(bbs_to_send) - # else: - # # Object Mode: Run YOLO and prepare metadata - # det_frame = ( - # inf_data["full_frame"] if inf_data else device_frame - # ) # RGB - # metadata, _ = self.get_detections( - # det_frame, - # self.frame_count_target, - # merged=bbs_full_res, - # thickness=self.config.THICKNESS, - # device_input=self.config.device_input, - # ) - # data_to_draw = metadata - # num_objs = len(metadata.keys()) - - # det_end.record() - # self.gpu_event_buffer["det"].append((det_start, det_end)) - - # # --- OFFLOAD TO QUEUE (Run for EVERY target frame) --- - # if not self.config.TEST_MODE: - # display_source = ( - # inf_data["full_frame"] - # if (inf_data and "full_frame" in inf_data) - # else device_frame - # ) # RGB - # gpu_resized = F.interpolate( - # display_source.unsqueeze(0).half(), - # size=(self.resize_h, self.resize_w), - # mode="bilinear", - # align_corners=False, - # ).squeeze(0) - # display_frame = tensor2opencv( - # gpu_resized, self.config.device_input, is_bgr=True - # ) - # # display_frame = self.tensor2opencv_gpu(gpu_resized) - # self.render_queue.put((display_frame, data_to_draw, self.label_source)) - - # if self.config.DEBUG_FLAG: - # gpu_resized = F.interpolate( - # display_source.unsqueeze(0).float(), - # size=(self.resize_h, self.resize_w), - # mode="bilinear", - # align_corners=False, - # ) # RGB - # self.debug_save_img(gpu_resized, self.frame_count_target) - # self.debug_save_img_roi( - # gpu_resized, bbs_full_res, self.frame_count_target - # ) - - # # Async metrics stay at 0 for fairness; collected at the end of the video - # metrics["sf_time"] = 0 - # metrics["roi_time"] = 0 - # metrics["det_time"] = 0 - # return num_objs, metrics - - # def yolo_cpu_pipeline_fn(self, device_frame, overall_frame_num, is_target_frame): - # num_objs = 0 - # metadata = {} - # metrics = {"sf_time": 0, "roi_time": 0, "det_time": 0, "bbs": None} - - # # Only keep frames for TARGET_FPS - # if is_target_frame: - # self.next_process_idx += self.step_size - # self.frame_count_target += 1 # 1-indexed - - # # Get detection at original resolution (No SF) - # t_start = time.perf_counter() - # metadata, _ = self.get_detections( - # device_frame, - # self.frame_count_target, - # thickness=self.config.THICKNESS, - # device_input=self.config.device_input, - # ) - # num_objs = len(metadata.keys()) - # metrics["det_time"] = (time.perf_counter() - t_start) * 1000 - - # if not self.config.TEST_MODE: - # cpu_resized = cv2.resize(device_frame, (self.resize_w, self.resize_h)) - # display_frame = tensor2opencv( - # cpu_resized, self.config.device_input, is_bgr=True - # ) - # self.render_queue.put((display_frame, metadata, self.label_source)) - - # return num_objs, metrics - - # def yolo_gpu_pipeline_fn(self, frame_raw, overall_frame_num, is_target_frame): - # num_objs = 0 - # metadata = {} - # metrics = {"sf_time": 0, "roi_time": 0, "det_time": 0, "bbs": None} - - # # Only keep frames for TARGET_FPS - # if is_target_frame: - # self.next_process_idx += self.step_size - # self.frame_count_target += 1 # 1-indexed - - # # Get detection at original resolution (No SF) - # det_start, det_end = ( - # torch.cuda.Event(enable_timing=True), - # torch.cuda.Event(enable_timing=True), - # ) - # det_start.record() - # metadata, _ = self.get_detections( - # frame_raw, - # self.frame_count_target, - # thickness=self.config.THICKNESS, - # device_input=self.config.device_input, - # ) - # num_objs = len(metadata.keys()) - # det_end.record() - # self.gpu_event_buffer["det"].append((det_start, det_end)) - - # # --- OFFLOAD TO QUEUE (Run for EVERY target frame) --- - # if not self.config.TEST_MODE: - # gpu_resized = F.interpolate( - # frame_raw.unsqueeze(0).half(), - # size=(self.resize_h, self.resize_w), - # mode="bilinear", - # align_corners=False, - # ).squeeze(0) - # display_frame = tensor2opencv( - # gpu_resized, self.config.device_input, is_bgr=True - # ) - # # display_frame = self.tensor2opencv_gpu(gpu_resized) - # self.render_queue.put((display_frame, metadata, self.label_source)) - - # # Async metrics stay at 0 for fairness; collected at the end of the video - # metrics["sf_time"] = 0 - # metrics["det_time"] = 0 - # return num_objs, metrics - - -# INHERIT METHODS FROM HANDLERS ----------------------------------------------------------------- -# TestSmartFilteringDetections.setup_reader = DeviceBaseHandler.setup_reader -# TestSmartFilteringDetections.get_frameWH = DeviceBaseHandler.get_frameWH -# TestSmartFilteringDetections.initialize_variables = ( -# DeviceBaseHandler.initialize_variables -# ) -# TestSmartFilteringDetections.filter_contained_boxes = ( -# DeviceBaseHandler.filter_contained_boxes -# ) -# TestSmartFilteringDetections.get_detections = DeviceBaseHandler.get_detections -# TestSmartFilteringDetections.prepare_pipeline = DeviceBaseHandler.prepare_pipeline -# TestSmartFilteringDetections.get_gpu_rois_by_area = ( -# DeviceBaseHandler.get_gpu_rois_by_area -# ) -# TestSmartFilteringDetections.get_gpu_rois = DeviceBaseHandler.get_gpu_rois -# TestSmartFilteringDetections.get_cpu_rois = DeviceBaseHandler.get_cpu_rois -# TestSmartFilteringDetections.run_model = DeviceBaseHandler.run_model -# TestSmartFilteringDetections.model_warmup = DeviceBaseHandler.model_warmup - -# # TestSmartFilteringDetections.cleanup_gpu = GPUStreamHandler.cleanup_gpu -# # TestSmartFilteringDetections.rbtd_full_gpu = GPUStreamHandler.rbtd_full_gpu -# # TestSmartFilteringDetections.prepare_gpu_pipeline = ( -# # GPUStreamHandler.prepare_gpu_pipeline -# # ) -# # TestSmartFilteringDetections.allocate_gpu = GPUStreamHandler.allocate_gpu -# TestSmartFilteringDetections.gpu_warmup = GPUStreamHandler.gpu_warmup -# TestSmartFilteringDetections.apply_background_subtraction_gpu = ( -# GPUStreamHandler.apply_background_subtraction_gpu -# ) - -# TestSmartFilteringDetections.cleanup_cpu = CPUStreamHandler.cleanup_cpu -# # TestSmartFilteringDetections.rbtd_full_cpu = CPUStreamHandler.rbtd_full_cpu -# # TestSmartFilteringDetections.prepare_cpu_pipeline = ( -# # CPUStreamHandler.prepare_cpu_pipeline -# # ) -# # TestSmartFilteringDetections.allocate_cpu = CPUStreamHandler.allocate_cpu -# TestSmartFilteringDetections.apply_background_subtraction_cpu = ( -# CPUStreamHandler.apply_background_subtraction_cpu -# ) + +# MAIN ---------------------------------------- def get_pytest_filter_expression(args): @@ -2089,6 +1980,12 @@ def get_pytest_filter_expression(args): if __name__ == "__main__": + # Force all PyTorch extension handles to compile and load BEFORE threads spawn + if torch.cuda.is_available(): + _ = torch.zeros(1).cuda() + import torch._ops + import torch.utils + # TEST ARGUMENTS parser = argparse.ArgumentParser(description="Run Video Detection Pipeline Tests") parser.add_argument( diff --git a/fastapi/tests/test_model.py b/fastapi/tests/test_model.py index c2710fd..efd8428 100644 --- a/fastapi/tests/test_model.py +++ b/fastapi/tests/test_model.py @@ -206,7 +206,7 @@ def test_pipeline(self, device): results = self.model.predict( source=self.source, conf=self.config.DETECTION_THRESHOLD, - # iou=self.config.IOU_THRESHOLD, + iou=self.config.IOU_THRESHOLD, show=False, imgsz=(self.frame_height, self.frame_width), save=True, diff --git a/fastapi/tests/test_pipeline.py b/fastapi/tests/test_pipeline.py index fb924dd..1735e4c 100644 --- a/fastapi/tests/test_pipeline.py +++ b/fastapi/tests/test_pipeline.py @@ -81,7 +81,7 @@ def setup_context(request): request.cls.name = vid_source.stem else: request.cls.name = "rtsp" - request.cls.test_duration_mins = float(os.getenv("TEST_DURATION_MINS", 2.0)) + request.cls.test_duration_mins = float(os.getenv("TEST_DURATION_MINS", 1.0)) request.cls.result_dir = test_dir / f"{current_test_filename}_results" request.cls.result_dir.mkdir(parents=True, exist_ok=True) @@ -303,7 +303,7 @@ def mock_connect(self, host, port): current_backlog = handler.prefetch_queue.qsize() prefetch_backlog_samples.append(current_backlog) last_sample = curr_time - time.sleep(0.01) + time.sleep(0.2) # 0.01 # Safely capture performance values out of production thread states actual_duration = time.perf_counter() - loop_start @@ -348,12 +348,12 @@ def mock_connect(self, host, port): metrics["fallback_engine_triggered"] = ( 1 if getattr(r, "use_cpu_decode_fallback", False) else 0 ) - if not str(handler.source).startswith("rtsp://"): - metrics["video_duration"] = ( - round(r.numFrames / metrics["hardware_video_fps"], 2) - if metrics["hardware_video_fps"] > 0 - else 0.0 - ) + # if not str(handler.source).startswith("rtsp://"): + metrics["video_duration"] = ( + round(r.total_input_frames / metrics["hardware_video_fps"], 2) + if metrics["hardware_video_fps"] > 0 + else 0.0 + ) h_telemetry = getattr(handler, "telemetry", {}) io_latencies = h_telemetry.get("ram_disk_io_write_ms", []) @@ -489,10 +489,11 @@ def test_scenario_1_invalid_rtsp(self, device): ), ) worker_p.start() - worker_p.join() + worker_p.join(timeout=2.0) if worker_p.is_alive(): worker_p.terminate() + worker_p.join() # Ensure kernel resource tracking fully unlinks worker_p.close() # Reclaims underlying OS file descriptors immediately test_metrics = res_queue.get() @@ -575,7 +576,7 @@ def test_scenario_3_video_clipper(self, device): ) render_dir = self.result_dir / f"{self.name}/scenario3_{device}" render_dir.mkdir(parents=True, exist_ok=True) - test_duration_mins = 1.0 + # test_duration_mins = 1.0 # Execute production workflow in completely isolated spawned sandbox ctx = multiprocessing.get_context("spawn") @@ -589,7 +590,7 @@ def test_scenario_3_video_clipper(self, device): self.name, render_dir, device, - test_duration_mins, + self.test_duration_mins, res_queue, run_clipper, ), @@ -636,7 +637,7 @@ def test_scenario_4_detection_and_clipper(self, device, sf_enabled, detection_ty / f"{self.name}/scenario4_{device}/{detection_type}_{mode_str}" ) render_dir.mkdir(parents=True, exist_ok=True) - test_duration_mins = 1.0 + # test_duration_mins = 1.0 # Execute production workflow in completely isolated spawned sandbox ctx = multiprocessing.get_context("spawn") @@ -650,7 +651,7 @@ def test_scenario_4_detection_and_clipper(self, device, sf_enabled, detection_ty self.name, render_dir, device, - test_duration_mins, + self.test_duration_mins, res_queue, run_clipper, disable_detection, @@ -774,7 +775,7 @@ def get_pytest_filter_expression(args, sorted_scenarios): "-d", "--duration", type=float, - default=2.0, + default=1.0, help="Test duration in minutes.", ) parser.add_argument( diff --git a/fastapi/tests/test_readers.py b/fastapi/tests/test_readers.py new file mode 100644 index 0000000..51a13c0 --- /dev/null +++ b/fastapi/tests/test_readers.py @@ -0,0 +1,2203 @@ +import argparse +import asyncio +import csv +import faulthandler +import gc +import threading +import time +import traceback + +faulthandler.enable() +import inspect +import logging +import multiprocessing as mp +import os +import queue +import sys +import types +from concurrent.futures import ThreadPoolExecutor +from pathlib import Path + +import cv2 +import matplotlib.pyplot as plt +import numpy as np +import pytest +import tensorrt as trt +import torch + +# # Force all PyTorch extension handles to compile and load BEFORE threads spawn +# if torch.cuda.is_available(): +# _ = torch.zeros(1).cuda() +# import torch._ops +# import torch.utils + +# Explicitly invoke any plotting or module style lookups early + +sys.path.insert(1, str(Path(__file__).parent.parent)) +from include.default_configs import ( + CUSTOM_MODEL_FLAG_DEFAULT, + DEBUG_DEFAULT, + MODEL_NAME_DEFAULT, + THRESHOLD_VALUE, +) +from include.handlers import ( + CPUStreamHandler, + DeviceBaseHandler, + GPUStreamHandler, + log_to_logger, +) +from include.utils import ( + PipelineConfig, +) + +try: + # Retain standard spawn mode to prevent CUDA context driver deadlocks + torch.multiprocessing.set_start_method("spawn", force=True) +except RuntimeError: + pass + +logging.getLogger("matplotlib").setLevel(logging.WARNING) +logger = trt.Logger(trt.Logger.WARNING) +trt.init_libnvinfer_plugins(logger, "") + +DEBUG_FLAG_DEFAULT = True if DEBUG_DEFAULT == "1" else False +os.environ["OMP_NUM_THREADS"] = str(mp.cpu_count()) # "1" +os.environ["PYTORCH_ALLOC_CONF"] = "expandable_segments:True" +force_export = False + +# Force OpenCV to run sequentially to prevent context-switching overhead +cv2.setNumThreads(0) # Forces OpenCV loops to run strictly sequentially + + +def fps_comparison_chart(chart_path, results, fps_key="Pipeline FPS (Video frames)"): + try: + names = [r["Test Name"] for r in results] + fps_values = [float(r[fps_key]) for r in results] + + plt.figure(figsize=(10, 6)) + plt.grid(axis="y", linestyle="--", alpha=0.7, zorder=0) + + colors = ["#2ca02c" if "gpu" in n.lower() else "#1f77b4" for n in names] + bars = plt.bar(names, fps_values, color=colors, zorder=3) + plt.ylabel("Frames Per Second (FPS)") + plt.title(f"Performance Comparison: {chart_path.stem}") + plt.xticks(rotation=45) + + for bar in bars: + yval = bar.get_height() + plt.text( + bar.get_x() + bar.get_width() / 2, + yval + 1, + f"{yval:.1f}", + ha="center", + va="bottom", + ) + + if fps_values: + plt.ylim(0, max(fps_values) * 1.2) + + plt.tight_layout() + plt.savefig(str(chart_path)) + print(f" Comparison chart saved to: {chart_path}") + except Exception: + print("Skipping chart generation: error occurred.") + + +class AsyncVideoWriter: + """Handles disk saving operations asynchronously on a background thread.""" + + def __init__(self, path, fourcc, fps, size): + self.writer = cv2.VideoWriter(path, fourcc, fps, size) + self.queue = queue.Queue() + self.running = True + self.thread = threading.Thread(target=self._write_loop, daemon=True) + self.thread.start() + + def _write_loop(self): + while self.running or not self.queue.empty(): + try: + frame = self.queue.get(timeout=0.05) + self.writer.write(frame) + self.queue.task_done() + except queue.Empty: + continue + + def write_frame(self, frame): + self.queue.put(frame) + + def release(self): + self.running = False + self.thread.join() + self.writer.release() + + +class DummyProcess: + def start(self): + pass + + def join(self, timeout=None): + pass + + def is_alive(self): + return False + + def close(self): + pass + + +@pytest.fixture(scope="class") +def setup_context(request): + """Replaces setUpClass: Runs once per test class.""" + current_test_filename = Path(__file__).stem + test_dir = Path(__file__).parent + main_path = test_dir.parent + video_dir = main_path / "inputs" + + request.cls._shared_model = None + request.cls._shared_model_path = None + request.cls._shared_model_device = None + request.cls._shared_model_sf_enabled = None + + # model_name = os.getenv("MODEL_NAME", MODEL_NAME_DEFAULT) + # Handler.__init__ (main items) + request.cls.source = os.getenv("VIDEO_FILENAME", "anduril_swarm_8K.mp4") + is_rtsp = "rtsp://" in request.cls.source + if not is_rtsp: + VIDEO_FILENAME = request.cls.source + if video_dir.exists(): + vid_source = video_dir / VIDEO_FILENAME + else: + video_dir = Path("/watch_dir") + vid_source = video_dir / VIDEO_FILENAME + + assert vid_source.exists() + request.cls.source = str(vid_source) + request.cls.name = vid_source.stem + request.cls.is_rtsp = False + else: + request.cls.name = "rtsp" + request.cls.is_rtsp = True + # request.cls.test_duration_mins = float(os.getenv("TEST_DURATION_MINS", 0.25)) + request.cls.result_dir = ( + test_dir + / f"{current_test_filename}_results" # /{model_name}" + / request.cls.name + ) + request.cls.result_dir.mkdir(parents=True, exist_ok=True) + request.cls.benchmarks = [] + request.cls.csv_filename = f"pipeline_benchmarks_{request.cls.name}.csv" + request.cls.csv_path = request.cls.result_dir / request.cls.csv_filename + + request.cls.active = True + request.cls.active_streams = {} + + yield + + # Summarize Benchmarks + if request.cls.benchmarks: + # Filter and exclude rows that were interrupted or failed initialization due to an early pytest skip + request.cls.benchmarks = [ + r for r in request.cls.benchmarks if r and "Test Name" in r + ] + results = request.cls.benchmarks + for row in results: + if "GPU" in row["Test Name"]: + match_name = row["Test Name"].replace("GPU", "CPU") + cpu_row = next( + (r for r in results if r["Test Name"] == match_name), None + ) + if cpu_row: + gpu_fps = float(row["Pipeline FPS (Target frames)"]) + cpu_fps = float(cpu_row["Pipeline FPS (Target frames)"]) + speedup = (gpu_fps / cpu_fps) if cpu_fps > 0 else 0 + row["Pipeline Speedup vs CPU"] = f"{speedup:.2f}x" + else: + row["Pipeline Speedup vs CPU"] = "N/A" + else: + row["Pipeline Speedup vs CPU"] = "Baseline (CPU)" + + keys = results[0].keys() + with open(str(request.cls.csv_path), "w", newline="") as f: + dict_writer = csv.DictWriter(f, fieldnames=keys) + dict_writer.writeheader() + dict_writer.writerows(results) + + print(f"\n[FINAL] Benchmarks saved to {request.cls.csv_path}") + + for r in results: + print( + f" > {r['Test Name']}: {r['Pipeline FPS (Video frames)']} FPS | {r['Pipeline FPS (Target frames)']} FPS | {r['Avg Frame Reading (ms)']} ms | Speedup: {r.get('Pipeline Speedup vs CPU', 'N/A')}" + ) + + chart_path = ( + request.cls.result_dir + / f"{request.cls.csv_filename.replace('.csv', '')}_pipelineFPS.png" + ) + fps_comparison_chart(chart_path, results, fps_key="Pipeline FPS (Video frames)") + + chart_path = ( + request.cls.result_dir + / f"{request.cls.csv_filename.replace('.csv', '')}_pipelineFPS_target.png" + ) + fps_comparison_chart( + chart_path, results, fps_key="Pipeline FPS (Target frames)" + ) + + +@pytest.fixture(autouse=True) +def each_test_setup(request): + test_class_self = request.instance + if torch.cuda.is_available(): + torch.cuda.synchronize() + + device = request.node.callspec.params.get("device") + # detection_type = request.node.callspec.params.get("detection_type") + # sf_enabled = request.node.callspec.params.get("sf_enabled") + + test_class_self._testMethodName = f"{device.upper()}Reader" + + # video_output_name = f"{test_class_self._testMethodName}_detections_output.mp4" + vid_dir = test_class_self.result_dir / "results" + vid_dir.mkdir(parents=True, exist_ok=True) + + # Handler.__init__ (remaining items) + # 1. Re-initialize a fresh configuration object + test_class_self.config = PipelineConfig( + CUSTOM_MODEL_FLAG=os.getenv("CUSTOM_MODEL_FLAG", CUSTOM_MODEL_FLAG_DEFAULT), + DEVICE=device.upper(), + OMIT_DETECTIONS_FLAG=True, + TEST_MODE=True, + DEBUG=os.getenv("DEBUG", DEBUG_DEFAULT), + DEBUG_FRAME_LIMIT=int(os.getenv("DEBUG_FRAME_LIMIT", 100)), + ENABLE_QUERYING=False, + MODEL_NAME=os.getenv("MODEL_NAME", MODEL_NAME_DEFAULT), + # SMART_FILTERING_ENABLED=sf_enabled, + THRESHOLD_VALUE=int(os.getenv("THRESHOLD_VALUE", THRESHOLD_VALUE)), + # DETECTION_TYPE=detection_type, + ) + + # test_video_output_path = os.path.join(str(vid_dir), video_output_name) + os.environ["TEST_SUITE_RENDER_DIR"] = str(vid_dir) + test_class_self.config.SHARED_OUTPUT = str(test_class_self.result_dir) + test_class_self.disp_w, test_class_self.disp_h = (640, 360) + + if device == "gpu": + # Allocate a permanent float32/float16 channel layout space directly on VRAM + test_class_self.static_gpu_360p = torch.empty( + (1, 3, test_class_self.disp_h, test_class_self.disp_w), + dtype=torch.float32, + device="cuda", + ) + test_class_self.static_gpu_byte_bchw = torch.empty( + (1, 3, test_class_self.disp_h, test_class_self.disp_w), + dtype=torch.uint8, + device="cuda", + ).contiguous() + # Fast reusable canvas tensor matching your writer width/height payload bounds + # test_class_self.static_host_canvas = np.zeros((test_class_self.disp_h, test_class_self.disp_w, 3), dtype=np.uint8) + # Register the memory block as page-locked (pinned) to max out PCIe DMA bandwidth + # cv2.cuda.registerPageLocked(test_class_self.static_host_canvas) + + # Create two isolated tracking canvases to handle the ping-pong data stream + test_class_self.static_host_canvases = [ + np.zeros( + (test_class_self.disp_h, test_class_self.disp_w, 3), dtype=np.uint8 + ), + np.zeros( + (test_class_self.disp_h, test_class_self.disp_w, 3), dtype=np.uint8 + ), + ] + test_class_self.canvas_selector = 0 + + # Register BOTH buffers as page-locked memory + cv2.cuda.registerPageLocked(test_class_self.static_host_canvases[0]) + cv2.cuda.registerPageLocked(test_class_self.static_host_canvases[1]) + + # Reset core state machine properties before invoking any backend handlers + test_class_self.active = True + # test_class_self._is_stopped = False + + # Replaces the standard class dictionary with an active inter-process proxy container layout. + # This ensures child worker processes can write memory back to the parent process. + # if not hasattr(test_class_self.__class__, "_managed_sync_ctx"): + # test_class_self.__class__._managed_sync_ctx = mp.Manager() + + # test_class_self.__class__._shared_bench_metrics = test_class_self.__class__._managed_sync_ctx.dict({ + # "num_objs": 0, + # "total_written_frames": 0, + # "total_pipeline_ms": 0.0, + # "real_world_latency_ms": 0.0, + # "total_sf_pipeline_time_ms": 0.0, + # "total_read_time": 0.0, + # "total_queue_saturation": 0.0, + # "queue_saturation_history": [0.0] + # }) + + test_class_self.loop = asyncio.get_event_loop() + test_class_self.frame_ready_event = asyncio.Event() + test_class_self._is_stopped = False + test_class_self._stop_lock = threading.Lock() # Local lock for this instance + test_class_self.mp_frame_ready_event = mp.Event() + # test_class_self.stat_start_time = time.perf_counter() # timing to display detection + + test_class_self.device = test_class_self.config.DEVICE + test_class_self.device_input = test_class_self.config.device_input + test_class_self.resize_h, test_class_self.resize_w = [ + test_class_self.config.MODEL_H, + test_class_self.config.MODEL_W, + ] + + # Resolve concrete handler class type + HandlerClass = GPUStreamHandler if device == "gpu" else CPUStreamHandler + HandlerClass.pipeline_fn = test_class_self.__class__.pipeline_fn + + # Dynamically re-bind backend methods to this execution instance + handler_classes = [HandlerClass, DeviceBaseHandler] + all_method_names = set() + + for cls in handler_classes: + for name, attr in inspect.getmembers(cls, predicate=inspect.isfunction): + all_method_names.add(name) + + for method_name in all_method_names: + source_obj = ( + HandlerClass if hasattr(HandlerClass, method_name) else DeviceBaseHandler + ) + if hasattr(source_obj, method_name): + raw_func = getattr(source_obj, method_name) + if ( + not hasattr(test_class_self.__class__, method_name) + or method_name == "pipeline_fn" + ): + setattr( + test_class_self, + method_name, + types.MethodType(raw_func, test_class_self), + ) + # Force the background thread-pool launcher to run your modified staging loop + # setattr( + # test_class_self, + # "run_realtime_inference", + # types.MethodType(test_class_self.__class__.run_realtime_inference, test_class_self) + # ) + + # 3. FORCE NATIVE PIPELINE PROVISIONING + test_class_self.setup_reader( + test_class_self.config.TARGET_FPS, test_class_self.config.CLIP_DURATION + ) + test_class_self.initialize_variables() + test_class_self.setup_model(None) + test_class_self.prepare_pipeline() + + test_class_self.run_realtime_inference = types.MethodType( + test_class_self.__class__.run_realtime_inference, test_class_self + ) + # This guarantees that when handlers.py spawns background execution threads, + # it is forced to execute your modified staging test loop method. + # HandlerClass.run_realtime_inference = test_class_self.__class__.run_realtime_inference + # DeviceBaseHandler.run_realtime_inference = test_class_self.__class__.run_realtime_inference + + test_class_self.setup_threads() + + # # Reset runtime loop state properties + # test_class_self.render_queue = None + # test_class_self.next_process_idx = 0.0 + # test_class_self.frame_in_clip_count = 0 + # test_class_self.frame_count = 0 + # test_class_self.elapsed_display_time = 0.0 + # test_class_self.no_roi_frame_cnt = 0 + + # test_class_self.component_stats = { + # "sf": [], + # "roi": [], + # "det": [], + # "dma_upload": [], + # "queue_blocked": [], + # "batch_sizes": [], + # "thread_backlog": [] + # } + # test_class_self.crops_per_frame_list = [] + + # test_class_self.is_cuda = test_class_self.device.lower() == "gpu" and torch.cuda.is_available() + # # test_class_self.frame_count_target = mp.Value("i", 0) # test_class_self.frame_count_target = 0 + # test_class_self.frame_count_target = 0 + # test_class_self.next_process_idx = 0.0 + # test_class_self.frame_in_clip_count = 0 + + # if hasattr(test_class_self, "setup_threads"): + # test_class_self.setup_threads() + + # shared_event_buffer = {"sf": [], "roi": [], "det": []} + # test_class_self.gpu_event_buffer = shared_event_buffer + + # if torch.cuda.is_available(): + # torch.cuda.empty_cache() + # torch.cuda.ipc_collect() + # torch.cuda.reset_peak_memory_stats(0) + + # if device == "gpu" and torch.cuda.is_available(): + # print("\n[PROFILER] Initializing isolated PyTorch VRAM allocation history map...") + # try: + # # Modern PyTorch API signature format + # torch.cuda.memory._record_memory_history( + # enabled=True, + # max_entries=200000 # Sets the buffer queue size limits + # ) + # except TypeError: + # # Fallback baseline if your specific environment only allows a basic toggle switch + # torch.cuda.memory._record_memory_history(enabled=True) + + # # Force eager initialization of hidden packages to avoid dynamic lookups in the hot path + # import dataclasses + # import importlib + # import torch.nn.functional as F + # from ultralytics.cfg import get_cfg + # import pyparsing + # import matplotlib + # import matplotlib.rcsetup + # import anyio + # import anyio._core._fileio + # import numpy.core.overrides + # import numpy.lib.function_base + # import asyncio.base_events + # import sre_parse + # import logging + + # # Dummy execution pass to fully resolve internal lazy properties and populate sys.modules caches + # try: + # _ = get_cfg() + # except Exception: + # pass + + yield + + # Teardown logic + test_class_self.active = False + + # # Force immediate structural flush of the asynchronous display thread pool before memory unlinking + # if hasattr(test_class_self, "display_pool") and test_class_self.display_pool is not None: + # try: + # # wait=True guarantees every single remaining background 8K layout operation + # # finishes processing and flushes into the rendering_worker before the clock stops + # test_class_self.display_pool.shutdown(wait=True) + # except Exception: + # pass + # if hasattr(test_class_self, "display_ring_buffer"): + # delattr(test_class_self, "display_ring_buffer") + # delattr(test_class_self, "display_pool") + + # Fallback to production reader safety closure + if hasattr(test_class_self, "reader") and test_class_self.reader is not None: + try: + if hasattr(test_class_self.reader, "print_breakdown"): + test_class_self.reader.print_breakdown() + test_class_self.reader.stop() + except Exception: + pass + + if ( + hasattr(test_class_self, "stop_writer") + and test_class_self.stop_writer is not None + ): + try: + test_class_self.stop_writer.set() + except Exception: + pass + + # --- CRITICAL RE-ORDERED FLUSH GATE --- + # 1. First, block and wait for the video processing producer thread to completely finish + # reading all remaining frames from the input video file. + producer_thread_handle = getattr(test_class_self, "process_thread", None) + if producer_thread_handle is not None and producer_thread_handle.is_alive(): + producer_thread_handle.join(timeout=0.5) # 10.0) + + # 2. Block and wait for background asynchronous AI executor workers to finish inference tasks. + if hasattr(test_class_self, "executor") and test_class_self.executor: + test_class_self.executor.shutdown(wait=True) + + # 3. Allow the multiprocessing render queue to naturally empty its frames into the encoder pipe. + if ( + hasattr(test_class_self, "render_queue") + and test_class_self.render_queue is not None + ): + try: + # Loop safely until the render loop handles the last remaining frames + # while not test_class_self.render_queue.empty(): + # time.sleep(0.05) + + # Send a poison pill token ONLY after all threads have fully stopped putting data into it + # test_class_self.render_queue.put(None, timeout=1.0) + if ( + hasattr(test_class_self, "render_queue") + and test_class_self.render_queue is not None + ): + try: + # Forcefully clear the queue thread tracking matrices + test_class_self.render_queue.close() + test_class_self.render_queue.cancel_join_thread() + except Exception: + pass + except Exception: + pass + + # 4. Gracefully join the background FFmpeg process, avoiding premature kills + render_proc_handle = getattr(test_class_self, "render_proc", None) + if render_proc_handle is not None: + try: + if render_proc_handle.is_alive(): + # Grant up to 10 seconds for disk I/O synchronization + render_proc_handle.join(timeout=0.5) # 10.0) + + if render_proc_handle.is_alive(): + print( + "[WARN] Render worker hung during final flush. Forcing termination." + ) + render_proc_handle.terminate() + render_proc_handle.join() + + render_proc_handle.close() + except Exception: + pass + setattr(test_class_self, "render_proc", None) + + # 4. Deep System Unlinking of Shared Memory Layers (Parent/Child safe) + # This loop uses direct reference mapping rather than guessing PIDs + for shm_pool_attr in ["ai_shms", "shms"]: + if hasattr(test_class_self, shm_pool_attr): + shm_pool = getattr(test_class_self, shm_pool_attr) + if shm_pool: + for shm_segment in list(shm_pool): + try: + shm_segment.close() + shm_segment.unlink() + except Exception: + pass + shm_pool.clear() + + # 5. Clean up the Sync Base Manager Process + if hasattr(test_class_self, "manager") and test_class_self.manager is not None: + try: + test_class_self.manager.shutdown() + except Exception: + pass + test_class_self.manager = None + + # CRITICAL FIX: Block and wait for the background producer thread to die + # BEFORE we delete the reader attribute from the namespace map. + producer_thread_handle = getattr(test_class_self, "process_thread", None) + if producer_thread_handle is not None and producer_thread_handle.is_alive(): + producer_thread_handle.join(timeout=5.0) + + # if hasattr(test_class_self, "ingest_ring") and test_class_self.ingest_ring: + # for mat in test_class_self.ingest_ring: + # try: + # cv2.cuda.unregisterPageLocked(mat) + # except Exception: + # pass + # test_class_self.ingest_ring.clear() + + # if hasattr(test_class_self, "pinned_matrices") and test_class_self.pinned_matrices: + # for active_mat in test_class_self.pinned_matrices: + # try: + # cv2.cuda.unregisterPageLocked(active_mat) + # except Exception: + # pass + # test_class_self.pinned_matrices.clear() + # if hasattr(test_class_self, "pinned_tensors"): + # test_class_self.pinned_tensors.clear() + # if hasattr(test_class_self, "ai_pinned_tensors"): + # test_class_self.ai_pinned_tensors.clear() + + try: + cv2.cuda.unregisterPageLocked(test_class_self.pinned_matrices) + except Exception: + pass + + # ADD THIS MECHANISM: + if hasattr(test_class_self, "static_host_canvas"): + try: + cv2.cuda.unregisterPageLocked(test_class_self.static_host_canvas) + except Exception: + pass + + if ( + not test_class_self.active + ): # Only execute this block during complete class teardown + if hasattr(test_class_self, "ingest_ring") and test_class_self.ingest_ring: + for mat in test_class_self.ingest_ring: + try: + cv2.cuda.unregisterPageLocked(mat) + except Exception: + pass + test_class_self.ingest_ring.clear() + + if ( + hasattr(test_class_self, "pinned_matrices") + and test_class_self.pinned_matrices + ): + for active_mat in test_class_self.pinned_matrices: + try: + cv2.cuda.unregisterPageLocked(active_mat) + except Exception: + pass + test_class_self.pinned_matrices.clear() + + # Now it is structurally safe to purge attributes without causing cross-thread collisions + keys_to_purge = [ + "reader", + "process_thread", + "inference_stream", + "bgs_stream", + "model", + "raw_input", + "ai_gpu_staging", + "ai_pinned_tensors", + "executor", + # "io_executor", + ] + for key in keys_to_purge: + if hasattr(test_class_self, key): + delattr(test_class_self, key) + + if ( + hasattr(test_class_self, "gpu_event_buffer") + and test_class_self.gpu_event_buffer + ): + test_class_self.gpu_event_buffer.clear() + if hasattr(test_class_self, "component_stats") and test_class_self.component_stats: + test_class_self.component_stats.clear() + + with torch.inference_mode(): + if torch.cuda.is_available(): + torch.cuda.synchronize() + if device == "gpu": + torch.cuda.memory._record_memory_history(enabled=False) + torch.cuda.empty_cache() + torch.cuda.ipc_collect() + + gc.collect() + time.sleep(0.2) + + +@pytest.mark.usefixtures("setup_context") +class TestReader: + # SETUP -------------------------------------------- + + @pytest.mark.parametrize("device", ["cpu", "gpu"]) + def test_device_reader(self, device): + """Unified test runner for all configurations.""" + self.duration_target = 30 + + # Trigger your clean overridden thread boot + self.start() + + print( + f"\n[TEST HARNESS] Execution Started. Monitoring variables natively for {self.duration_target}s..." + ) + # test_start_time = time.perf_counter() + # target_wait_frames = ( + # int(self.duration_target * float(self.target_fps)) + # if hasattr(self, "target_fps") + # else 450 + # ) + + # --- WATCH NATIVE VARIABLES LIVE --- + # while not self._is_stopped: + # time.sleep(0.1) + + # Explicit timer tracking allows background multiprocessing queues to stream uninhibited + # test_start_time = time.perf_counter() + + while self.active or not self._is_stopped: + # Check if our active benchmark validation timeline target has been fulfilled + # if (time.perf_counter() - test_start_time) >= float(self.duration_target) + 15.0: + # print("\n[TEST HARNESS] Targeted test runtime duration reached. Initiating clean multi-process flush...", flush=True) + # break + time.sleep(0.1) # Stay clear of the hot pipeline lane + + # Natively initiate the multi-process writer teardown + # self.stop() + + assert self.status == "DONE" + + def setup_threads(self): + """Overrides handlers.py to bind threads dynamically to the test instance.""" + self.setup_shared_memory() # Natively sets up Manager dictionary and buffers + + # Executor for Async YOLO tasks and FFmpeg re-encoding + self.executor = ThreadPoolExecutor(max_workers=self.config.MAX_WORKERS) + # self.clip_executor = ThreadPoolExecutor(max_workers=self.config.MAX_WORKERS) + + print( + f"sf_enabled: {self.config.sf_enabled}\tTEST_MODE: {self.config.TEST_MODE}", + flush=True, + ) + + # Open up looking-ahead buffer horizons to eliminate 8K queue backpressure stalls + self.signal_queue = mp.Queue(maxsize=128) # 10) + self.render_queue = mp.Queue(maxsize=256) # 64) + + test_dir = os.getenv( + "TEST_SUITE_RENDER_DIR", str(Path(self.config.SHARED_OUTPUT)) + ) + os.makedirs(test_dir, exist_ok=True) + + if self.source.startswith("rtsp"): + short_name = "rtsp" + else: + short_name = Path(self.source).stem + video_output_name = f"{self._testMethodName}_{short_name}_{self.device}.mp4" + out_path = os.path.join(test_dir, video_output_name) + self.output_path = ( + out_path # f"{self.config.SHARED_OUTPUT}/{short_name}_{self.device}.mp4" + ) + + log_to_logger( + f"[TEST MODE] Detection results saved to: {out_path}", level="info" + ) + + # ===================================================================== + # DYNAMIC THREAD TARGET REDIRECTION + # ===================================================================== + # Lambda forces the background processing thread to evaluate your custom staging loop natively + self.process_thread = threading.Thread( + target=lambda: self.run_realtime_inference( + sf_enabled=self.config.sf_enabled + ), + daemon=True, + ) + # self.render_proc = mp.Process( # threading.Thread( + # target=rendering_worker, + # args=( + # self.render_queue, + # (self.disp_w, self.disp_h), + # self.output_path, + # self.target_fps, + # ), + # daemon=True, + # ) + # self.render_proc = threading.Thread(target=lambda: None, daemon=True) + # self.display_proc = threading.Thread(target=lambda: None, daemon=True) + self.render_proc = DummyProcess() + self.display_proc = DummyProcess() + + self.async_writer = AsyncVideoWriter( + self.output_path, + cv2.VideoWriter_fourcc(*"avc1"), + float(self.target_fps), + (self.disp_w, self.disp_h), + ) + # self.async_writer = None + + def start(self): + """ + Starts the decoupled ingestion and inference threads in the correct order. + """ + # PRE-SYNC: Ensure GPU is idle before timing starts + if self.device_input == "cuda": + if torch.cuda.is_available(): + torch.cuda.synchronize() + + # Start the hardware-decoupled reader first + self.reader.start() + + if self.config.ENABLE_QUERYING: + self._initialize_writer() + + # Small delay to allow the reader's deque to populate + time.sleep(0.1) + + # Start the producer and consumer threads + if hasattr(self, "process_thread") and not self.process_thread.is_alive(): + self.process_thread.start() + + # If running on the CPU track, block the main test thread briefly until the CPU + # has successfully populated the first few frames into the render queue. + # This completely prevents the FFmpeg rendering worker from starving and skipping + # the initial 3-4 seconds of video. + # if getattr(self, "device_input", "cpu") == "cpu": + # print("[INIT] Waiting for CPU to prime the render queue...") + # timeout_counter = 0 + # # Wait until at least 5 frames are buffered in the queue or 10 seconds pass + # while self.render_queue.qsize() < 5 and timeout_counter < 100: + # time.sleep(0.1) + # timeout_counter += 1 + # print( + # f"[INIT] Render queue primed with {self.render_queue.qsize()} frames. Launching worker." + # ) + + if not self.config.DISABLE_DETECTION: + self.render_proc.start() + + self.display_proc.start() + + if ( + self.config.ENABLE_QUERYING + and not self.config.TEST_MODE + and not self.metadata_thread.is_alive() + ): + self.metadata_thread.start() + + if self.config.ENABLE_QUERYING and not self.writer_thread.is_alive(): + self.writer_thread.start() + + return self + + def stop(self): + """Overrides handlers.py to flush thread objects safely without deadlocking.""" + with self._stop_lock: + if self._is_stopped: + return + + print( + f"\n[TEST HARNESS] Initiating rapid thread flush for {self.name}", + flush=True, + ) + self.active = False + + # 1. Rapidly clear the async video writer thread queue first + # if hasattr(self, "async_writer") and self.async_writer is not None: + # try: + # self.async_writer.release() + # except Exception: + # pass + + # ===================================================================== + # DECUPLED MULTI-PROCESS TEARDOWN LIFECYCLE SEQUENCE + # ===================================================================== + # 1. FIRST: Drain and synchronize your thread pool tasks so EVERY frame drops into the IPC queue + if hasattr(self, "display_pool") and self.display_pool is not None: + try: + if hasattr(self.display_pool, "_work_queue"): + backlog = self.display_pool._work_queue.qsize() + if backlog > 0: + print( + f"\n\033[94m[STAGE 1/4] Synchronizing display pool threads. Draining {backlog} background tasks...\033[0m", + flush=True, + ) + backlog_s = time.perf_counter() + while ( + self.display_pool._work_queue.qsize() > 0 + or len(self.reorder_staging_buffer) > 0 + ): + # Yield a brief slice to let worker threads complete downscaling + time.sleep(0.01) + backlog_e = time.perf_counter() - backlog_s + print(f"\t\033[94mTook {backlog_e} secs\033[0m", flush=True) + print( + "\033[92m[SUCCESS] All background image transformations completed cleanly.\033[0m", + flush=True, + ) + self.display_pool.shutdown(wait=True) + except Exception as e: + print( + f"[TEARDOWN ERROR] Thread pool synchronization failed: {e}", + flush=True, + ) + setattr(self, "display_pool", None) + + # 2. SECOND: Now that every single frame is safely sitting in the render_queue, dispatch the poison pill + # if hasattr(self, "render_queue") and self.render_queue is not None: + # try: + # print(f"\033[94m[STAGE 2/4] Dispatching shutdown sentinel (None) to rendering process worker (Backlog: {self.render_queue.qsize()} frames)...\033[0m", flush=True) + # self.render_queue.put(None, timeout=2.0) + # except Exception as queue_err: + # print(f"\033[91m[TEARDOWN ERROR] Failed staging shutdown token: {queue_err}\033[0m", flush=True) + + # # 3. THIRD: Block the main thread safely and allow the detached process to write everything to disk + # if hasattr(self, "render_proc") and self.render_proc is not None: + # try: + # if self.render_proc.is_alive(): + # print(f"\033[94m[STAGE 3/4] Main thread blocking. Waiting for hardware disk I/O synchronization...\033[0m", flush=True) + # t_join_start = time.perf_counter() + # self.render_proc.join(timeout=30.0) # Increase timeout to ensure all 248 frames save + # join_duration = time.perf_counter() - t_join_start + + # if self.render_proc.is_alive(): + # print("\n\033[91m[CRITICAL STALL] Render worker process hung on disk write! Forcing termination...\033[0m", flush=True) + # self.render_proc.terminate() + # self.render_proc.join() + # else: + # print(f"\033[92m[FINAL] Video compilation finished cleanly! Hard drive commit took {join_duration:.2f} seconds.\033[0m", flush=True) + + # if hasattr(self, "source"): + # expected_disk_path = Path(self.output_path) + # if expected_disk_path.exists(): + # size_mb = expected_disk_path.stat().st_size / (1024 * 1024) + # print(f"\033[92m[DISK VERIFIED] Destination asset compiled: {expected_disk_path.name} ({size_mb:.2f} MB)\033[0m\n", flush=True) + # self.render_proc.close() + # except Exception as proc_err: + # print(f"\033[91m[TEARDOWN ERROR] Failed closing background process container: {proc_err}\033[0m", flush=True) + # setattr(self, "render_proc", None) + + # 2. SECOND: Deliver a poison pill sentinel token to tell FFmpeg to flush its internal buffers + # ===================================================================== + # MULTI-PROCESS TEARDOWN LIFECYCLE SEQUENCE (DECOUPLED FLUSH) + # ===================================================================== + # 1. FIRST: Instantly dispatch the shutdown token so the worker process knows to flush entries + if hasattr(self, "render_queue") and self.render_queue is not None: + try: + print( + f"\n\033[94m[STAGE 1/3] Dispatching shutdown sentinel (None) to rendering process worker (Backlog: {self.render_queue.qsize()} frames)...\033[0m", + flush=True, + ) + # Delivering the poison pill immediately tells FFmpeg to drain remaining blocks sequentially + self.render_queue.put(None, timeout=2.0) + except Exception as queue_err: + print( + f"\033[91m[TEARDOWN ERROR] Failed staging shutdown token: {queue_err}\033[0m", + flush=True, + ) + + # 2. SECOND: Allow the background multiprocessing queue to empty outstanding items naturally + if hasattr(self, "render_queue") and self.render_queue is not None: + try: + print( + "\n\033[94m[STAGE 2/3] Finalizing file output. Draining remaining frames from IPC memory lane...\033[0m", + flush=True, + ) + t_drain = time.perf_counter() + # Wait up to 15 seconds for the worker process to pull every remaining matrix out of the pipe + while ( + not self.render_queue.empty() + and (time.perf_counter() - t_drain) < 15.0 + ): + time.sleep( + 0.01 + ) # Micro-yield grants immediate execution priority to the background process core + except Exception: + pass + + # 3. THIRD: Block the main thread safely and allow the detached process to finish disk I/O operations + if hasattr(self, "render_proc") and self.render_proc is not None: + try: + join_duration = 0.0 + if self.render_proc.is_alive(): + print( + "\033[94m[STAGE 2/2] Main thread blocking. Synchronizing hard drive file headers...\033[0m", + flush=True, + ) + t_join_start = time.perf_counter() + self.render_proc.join( + timeout=15.0 + ) # Safe timeout lets video containers finalize cleanly + join_duration = time.perf_counter() - t_join_start + + if self.render_proc.is_alive(): + print( + "\n\033[91m[CRITICAL STALL] Render worker process hung on disk write! Forcing termination...\033[0m", + flush=True, + ) + self.render_proc.terminate() + self.render_proc.join() + else: + print( + f"\033[92m[FINAL] Video compilation finished cleanly! Hard drive commit took {join_duration:.2f} seconds.\033[0m", + flush=True, + ) + + expected_disk_path = Path(self.output_path) + if expected_disk_path.exists(): + size_mb = expected_disk_path.stat().st_size / (1024 * 1024) + print( + f"\033[92m[DISK VERIFIED] Destination asset compiled: {expected_disk_path.name} ({size_mb:.2f} MB)\033[0m\n", + flush=True, + ) + self.render_proc.close() + except Exception as proc_err: + print( + f"\033[91m[TEARDOWN ERROR] Failed closing background process container: {proc_err}\033[0m", + flush=True, + ) + setattr(self, "render_proc", None) + + # 4. FOURTH: Clean up remaining pipeline executors and queues safely + if hasattr(self, "render_queue") and self.render_queue is not None: + try: + self.render_queue.close() + self.render_queue.cancel_join_thread() + except Exception: + pass + setattr(self, "render_queue", None) + + if hasattr(self, "executor") and self.executor is not None: + try: + self.executor.shutdown(wait=True) + except Exception: + pass + setattr(self, "executor", None) + + self.status = "DONE" + self._is_stopped = True + print( + "[TEST HARNESS] Teardown complete. Releasing session cleanly.\n", + flush=True, + ) + + # # 2. De-couple the multiprocessing queues without holding internal worker joins + # for q_attr in ["signal_queue"]: #, "render_queue"]: + # if hasattr(self, q_attr): + # q = getattr(self, q_attr) + # if q is not None: + # try: + # q.close() + # q.cancel_join_thread() + # except Exception: + # pass + # setattr(self, q_attr, None) + # if hasattr(self, "render_queue") and self.render_queue is not None: + # try: + # print(f"[TEST HARNESS] Finalizing file output. Waiting for {self.render_queue.qsize()} frames to commit...") + # while not self.render_queue.empty(): + # time.sleep(0.05) + # # Send the shutdown token to tell FFmpeg/OpenCV to save container indexes + # self.render_queue.put(None, timeout=2.0) + # except Exception: + # pass + + # # 3. Stop the shared-memory zero-copy background reader workers safely + # if hasattr(self, "reader") and self.reader is not None: + # try: + # if hasattr(self.reader, "running_flag"): + # self.reader.running_flag.value = False + # if hasattr(self.reader, "stopped"): + # self.reader.stopped = True + # self.reader.stop() + # except Exception: + # pass + + # # 4. Fast non-blocking thread pool shutdown prevents joining active loops indefinitely + # if hasattr(self, "executor") and self.executor is not None: + # try: + # # wait=False closes the pool interface instantly without stalling the CPU core! + # self.executor.shutdown(wait=True) #False) + # except Exception: + # pass + # setattr(self, "executor", None) + + # # FIX: Shut down the display layout pool to guarantee all frame tasks reach the writer queue + # if hasattr(self, "display_pool") and self.display_pool is not None: + # try: + # # wait=True forces the main thread to wait until async_display_task cycles finish execution + # self.display_pool.shutdown(wait=True) + # except Exception: + # pass + # setattr(self, "display_pool", None) + + # # 5. Clean up loose GPU stream handles + # if hasattr(self, "inference_stream") and self.inference_stream is not None: + # if torch.cuda.is_available(): + # try: + # self.inference_stream.synchronize() + # except Exception: + # pass + + # if hasattr(self, "async_writer") and self.async_writer is not None: + # try: + # self.async_writer.release() + # except Exception: + # pass + # setattr(self, "async_writer", None) + + # if hasattr(self, "render_proc") and self.render_proc is not None: + # try: + # if self.render_proc.is_alive(): + # self.render_proc.join(timeout=10.0) + # if self.render_proc.is_alive(): + # print("[WARN] Render worker hung during final flush. Forcing termination.") + # self.render_proc.terminate() + # self.render_proc.join() + # self.render_proc.close() + # except Exception: + # pass + # setattr(self, "render_proc", None) + + # self.status = "DONE" + # self._is_stopped = True + + # print(f"\n[TEST HARNESS] Teardown complete. Releasing session cleanly.", flush=True) + + # HELPERS -------------------------------------------- + def _print_gpu_mem(self): + if torch.cuda.is_available(): + # Memory currently used by tensors + allocated = torch.cuda.memory_allocated(0) / 1024**2 + # Total memory reserved by PyTorch (the "Pool") + reserved = torch.cuda.memory_reserved(0) / 1024**2 + print(f"\tAllocated: {allocated:0.2f} MB") + print(f"\tReserved: {reserved:0.2f} MB") + else: + print("\tCUDA not available.") + + def _finalize_benchmarks( + self, + num_objs, + total_written_frames, + total_pipeline_ms, + real_world_latency_ms, + total_sf_pipeline_ms, + total_read_time, + total_queue_saturation, + queue_saturation_history, + ): + """Aggregates metrics and adds them to the results list.""" + # sf_enabled = self.config.sf_enabled + stat_frame_count = self.stat_frame_count + stat_fps = self.stat_fps + + h2d_label = ( + "Pinned H2D Transfer (PCIe DMA)" + if self.is_cuda + else "Data Preparation Overhead" + ) + # d2h_label = ( + # "D2H Transfer (PCIe Download)" + # if self.is_cuda + # else "Array Extraction Overhead" + # ) + + total_pipeline_s = total_pipeline_ms / 1000.0 # Full pipeline + total_real_pipeline_s = ( + real_world_latency_ms / 1000.0 + ) # Pipeline until last frame sent to writer + real_est_fps = ( + self.frame_count_target / total_real_pipeline_s + if total_real_pipeline_s > 0 + else 0 + ) + + # det_latency_s = ( + # total_sf_pipeline_ms / 1000.0 + # ) # Just SF/Detection pipeline (sf + roi_ det) + # det_est_fps = ( + # self.frame_count_target / det_latency_s if det_latency_s > 0 else 0 + # ) + + # if total_written_frames > 0: + duration_s = ( + self.reader.total_input_frames / self.reader.input_fps + if self.reader.input_fps > 0 + else 0 + ) + out_duration_s = ( + total_written_frames / self.reader.target_fps + if self.reader.target_fps > 0 + else 0 + ) + print( + f"Expected duration: {self.duration_target:.2f} stream_duration_s: {duration_s:.2f} output_duration_s: {out_duration_s:.2f}" + ) + + h2d_display_label = f"Reader {h2d_label}:" + avg_reader_ms = (total_read_time / total_written_frames) * 1000 + # avg_resize_ms = (total_resize_time / total_written_frames)*1000 + # avg_write_ms = (total_disk_write_overhead / total_written_frames)*1000 + target_frame_fps = total_written_frames / total_pipeline_s + all_frame_fps = self.reader.total_input_frames / total_pipeline_s + avg_copy_ms = (self.reader.total_shm_copy_time / total_written_frames) * 1000 + avg_blocked_ms = ( + self.reader.total_queue_wait_time / total_written_frames + ) * 1000 + + avg_saturation = (total_queue_saturation / total_written_frames) * 100 + peak_saturation = ( + max(queue_saturation_history) * 100 if queue_saturation_history else 0 + ) + target_match_ratio = ( + total_written_frames / (total_pipeline_s * self.reader.target_fps) + ) * 100 + if self.is_cuda: + avg_h2d_ms = (self.reader.total_h2d_time / total_written_frames) * 1000 + avg_prep_ms = 0.0 + else: + avg_prep_ms = (self.reader.total_h2d_time / total_written_frames) * 1000 + avg_h2d_ms = 0.0 + + # Calculate structural frame size payload in Gigabytes (H * W * Channels) + frame_size_gb = (self.reader.frame_height * self.reader.frame_width * 3) / ( + 1024**3 + ) + + # 1. Compute Peak H2D PCIe Throughput + avg_h2d_s = ( + ( + sum(self.component_stats["dma_upload"]) + / len(self.component_stats["dma_upload"]) + ) + / 1000.0 + if self.component_stats["dma_upload"] + else 0 + ) + if self.is_cuda and avg_h2d_s > 0.00001: + self.pcie_throughput_gbps = frame_size_gb / avg_h2d_s + else: + self.pcie_throughput_gbps = ( + 0.0 # Safe fallback baseline for non-PCIe pipelines (CPU) + ) + + # 2. Extract PyTorch VRAM Fragmentation Delta Metrics + if self.is_cuda and torch.cuda.is_available(): + peak_alloc = torch.cuda.max_memory_allocated(0) / 1024**2 + peak_reserved = torch.cuda.max_memory_reserved(0) / 1024**2 + self.vram_efficiency = ( + (peak_alloc / peak_reserved * 100.0) if peak_reserved > 0 else 100.0 + ) + else: + self.vram_efficiency = ( + 0.0 # Clean zero baseline representation for CPU runs + ) + + # Calculate averages for component breakdowns + # avg_reader_ms = (total_read_time / self.reader.total_input_frames) * 1000 + # avg_reader_ms = (total_read_time / self.frame_count_target) * 1000 + avg_sf = ( + sum(self.component_stats["sf"]) / len(self.component_stats["sf"]) + if self.component_stats["sf"] + else 0 + ) + avg_roi = ( + sum(self.component_stats["roi"]) / len(self.component_stats["roi"]) + if self.component_stats["roi"] + else 0 + ) + avg_det = ( + sum(self.component_stats["det"]) / len(self.component_stats["det"]) + if self.component_stats["det"] + else 0 + ) + + avg_crops = ( + sum(self.crops_per_frame_list) / len(self.crops_per_frame_list) + if self.crops_per_frame_list + else 0 + ) + + # Total Latency Sum (SF + ROI + DET) + # total_sum = avg_sf + avg_roi + avg_det + det_latency_ms = avg_sf + avg_roi + avg_det + det_latency_s = det_latency_ms / 1000.0 + det_est_fps = (total_written_frames / det_latency_s) if det_latency_s > 0 else 0 + + # Calculate how often we hit a high-motion cap (e.g., 20 crops) + capped_frames = sum(1 for c in self.crops_per_frame_list if c >= 20) + cap_rate = ( + (capped_frames / len(self.crops_per_frame_list)) * 100 + if self.crops_per_frame_list + else 0 + ) + + # avg_queue = ( + # sum(self.component_stats["queue_blocked"]) + # / len(self.component_stats["queue_blocked"]) + # if self.component_stats["queue_blocked"] + # else 0 + # ) + # avg_batch = ( + # sum(self.component_stats["batch_sizes"]) + # / len(self.component_stats["batch_sizes"]) + # if self.component_stats["batch_sizes"] + # else 0 + # ) + + backlog_list = self.component_stats.get("thread_backlog", []) + avg_backlog = ( + sum(backlog_list) / len(backlog_list) if len(backlog_list) > 0 else 0.0 + ) + + print("\n" + "=" * 60) + print( + f" FULLY-OPTIMIZED ASYNC STAGE ({self.config.DEVICE}) PIPELINE BREAKDOWN " + ) + print("=" * 60) + print(f"Total Output Frames Written: {total_written_frames}") + print(f"Total Pipeline Execution Time: {total_pipeline_s:.4f} seconds") + print(f"Overall Processing Speed: {target_frame_fps:.2f} FPS") + print("-" * 60) + print("MAIN CONSUMER LOOP TIMELINE (SEQUENTIAL OVERHEAD):") + print(f" 1. Read Frame from Queue: {avg_reader_ms:6.2f} ms") + # print(f" 2. Image Resize Time (360p Transformation): {avg_resize_ms:6.2f} ms") + # print(f" 3. Disk Writer Queue Hand-off (Async): {avg_write_ms:6.2f} ms") + print("-" * 60) + print("BACKGROUND INGESTION HEALTH (ASYNC METRICS):") + print(f" A. Inbound Stream Capture Speed: {all_frame_fps:6.2f} FPS") + print(f" B. Host RAM Array Copy (100MB Memcpy): {avg_copy_ms:6.2f} ms") + print(f" C. {h2d_display_label:<42} {avg_h2d_ms:6.2f} ms") + print(f" D. Reader Thread Queue Blocked Time: {avg_blocked_ms:6.2f} ms") + print(f" E. Consumer Queue Saturation Density: {avg_saturation:6.1f}%") + print( + f" F. Peak PCIe Upload Throughput: {self.pcie_throughput_gbps:6.2f} GB/s" + ) + print(f" G. Active Worker Thread Backlog: {avg_backlog:6.1f} tasks") + print(f" H. VRAM Memory Efficiency (Cache): {self.vram_efficiency:6.1f}%") + print("-" * 60) + + # EXPANDED PERFORMANCE INSIGHTS AND DIAGNOSTICS + print("PIPELINE HEALTH & BEHAVIOR INSIGHTS:") + if avg_saturation > 80.0: + pipeline_status = "CHOKED" + print( + f" • Status: \033[91m🔴 {pipeline_status}\033[0m (Downstream logic cannot keep up with inbound stream speed)" + ) + elif avg_saturation > 40.0: + pipeline_status = "BALANCED" + print( + f" • Status: \033[93m🟡 {pipeline_status}\033[0m (Queue buffer is actively pacing consumer workloads)" + ) + else: + pipeline_status = "IDLE/LIGHT" + print( + f" • Status: \033[92m🟢 {pipeline_status}\033[0m (Consumer loop finishes ahead of background ingestion clock)" + ) + + print(f" • Peak Queue Fullness Reached: {peak_saturation:.1f}%") + # Calculate stream drop indicator + print(f" • Targeted Pacing Delivery Accuracy: {target_match_ratio:.1f}%") + print("=" * 60) + + self.__class__.benchmarks.append( + { + "Test Name": self._testMethodName, + # "Detection Type": self.config.DETECTION_TYPE, + "Device": self.config.DEVICE, + # "Smart Filtering": "Enabled" if sf_enabled else "Disabled", + "Video": self.source, # self.name? + "Video FPS": f"{self.reader.input_fps:.2f}", + "Video Original Duration (s)": f"{duration_s:.4f}", + "Video Frames": self.reader.total_input_frames, + # PIPELINE OVERVIEW + "Target FPS": f"{self.reader.target_fps:.2f}", + "Output Duration (s)": f"{out_duration_s:.4f}", + "Output Frames": total_written_frames, + "Pipeline Latency (s)": f"{total_pipeline_s:.2f}", + "Pipeline FPS (Video frames)": f"{all_frame_fps:.2f}", + "Pipeline FPS (Target frames)": f"{target_frame_fps:.2f}", + "Real Pipeline Latency (s)": f"{total_real_pipeline_s:.2f}", + "Real Pipeline FPS (Target frames)": f"{real_est_fps:.2f}", + # MAIN CONSUMER LOOP TIMELINE (SEQUENTIAL OVERHEAD) + "Avg Frame Reading (ms)": f"{avg_reader_ms:.2f}", + # "Avg Resize (ms)": f"{avg_resize_ms:.2f}", + # "Avg Writer Async Handoff (ms)": f"{avg_write_ms:.2f}", + # BACKGROUND INGESTION HEALTH (ASYNC METRICS) + "Avg Host Copy (ms)": f"{avg_copy_ms:.2f}", + "Avg DMA Upload (ms)": f"{avg_h2d_ms:.2f}", + "Avg Data Prep Overhead (ms)": f"{avg_prep_ms:.2f}", + "Avg Queue Blocked (ms)": f"{avg_blocked_ms:.2f}", + "Avg Queue Saturation (%)": f"{avg_saturation:.2f}", + # PIPELINE HEALTH & BEHAVIOR INSIGHTS + "Pipeline Status": pipeline_status, + "Peak Queue Fullness (%)": f"{peak_saturation:.2f}", + "Targeted Pacing Delivery (%)": f"{target_match_ratio:.2f}", + # DETECTION PIPELINE (Should B NULL) + "SF/Detection Latency (s)": f"{det_latency_s:.2f}", + "SF/Detection FPS": f"{det_est_fps:.2f}", + "Avg SF (ms)": f"{avg_sf:.2f}", + "Avg ROI (ms)": f"{avg_roi:.2f}", + "Avg Obj. Detection (ms)": f"{avg_det:.2f}", + "Total Breakdown Sum (ms)": f"{det_latency_ms:.2f}", + "Avg Crops/Frame": f"{avg_crops:.1f}", + # "Frames w/o ROIs": self.no_roi_frame_cnt, + "Crop Cap Rate (>20)": f"{cap_rate:.1f}%", + "Objects Detected": num_objs, + # TIming to display frame (read to after send to render queue) + "Display Latency (s)": f"{self.elapsed_display_time:.2f}", + "Display Frames": stat_frame_count, + "Display FPS": f"{stat_fps:.2f}", + "PCIe Bandwidth Throughput (GB/s)": f"{self.pcie_throughput_gbps:.2f}", + "Avg Async Thread Pool Backlog": f"{sum(self.component_stats.get('thread_backlog', [0])) / len(self.component_stats.get('thread_backlog', [1])):.1f}", + "VRAM Allocation Efficiency (%)": f"{self.vram_efficiency:.1f}%", + } + ) + + print( + f"\n[{self._testMethodName}] Pipeline Latency (s): {total_pipeline_s:.2f} sec" + ) + print( + f"\n[{self._testMethodName}] Pipeline FPS (Target frames): {target_frame_fps:.2f} ({total_written_frames} frames)" + ) + print( + f"\n[{self._testMethodName}] Pipeline FPS (Video frames): {all_frame_fps:.2f} ({self.reader.total_input_frames} frames)" + ) + print( + f"\n[{self._testMethodName}] SF/Detection FPS (Target frames): {det_est_fps:.2f} ({total_written_frames} frames)" + ) + print( + f"\n[{self._testMethodName}] Display FPS: {stat_fps:.2f} ({stat_frame_count} frames)" + ) + + def _finalize_benchmarksv2( + self, + total_written_frames, + total_pipeline_time, + total_read_time, + total_resize_time, + total_disk_write_overhead, + total_queue_saturation, + queue_saturation_history, + ): + """Aggregates metrics and adds them to the results list.""" + h2d_label = ( + "Pinned H2D Transfer (PCIe DMA)" + if self.is_cuda + else "Data Preparation Overhead" + ) + # d2h_label = ( + # "D2H Transfer (PCIe Download)" + # if self.is_cuda + # else "Array Extraction Overhead" + # ) + + if total_written_frames > 0: + duration_s = ( + self.reader.total_input_frames / self.reader.input_fps + if self.reader.input_fps > 0 + else 0 + ) + out_duration_s = ( + total_written_frames / self.reader.target_fps + if self.reader.target_fps > 0 + else 0 + ) + print( + f"Expected duration: {self.duration_target} stream_duration_s: {int(duration_s)} output_duration_s: {int(out_duration_s)}" + ) + h2d_display_label = f"Reader {h2d_label}:" + avg_reader_ms = (total_read_time / total_written_frames) * 1000 + avg_resize_ms = (total_resize_time / total_written_frames) * 1000 + avg_write_ms = (total_disk_write_overhead / total_written_frames) * 1000 + target_frame_fps = total_written_frames / total_pipeline_time + all_frame_fps = self.reader.total_input_frames / total_pipeline_time + avg_copy_ms = ( + self.reader.total_shm_copy_time / total_written_frames + ) * 1000 + + avg_blocked_ms = ( + self.reader.total_queue_wait_time / total_written_frames + ) * 1000 + avg_saturation = (total_queue_saturation / total_written_frames) * 100 + peak_saturation = ( + max(queue_saturation_history) * 100 if queue_saturation_history else 0 + ) + target_match_ratio = ( + total_written_frames / (total_pipeline_time * self.reader.target_fps) + ) * 100 + if self.is_cuda: + avg_h2d_ms = (self.reader.total_h2d_time / total_written_frames) * 1000 + avg_prep_ms = 0.0 + else: + avg_prep_ms = (self.reader.total_h2d_time / total_written_frames) * 1000 + avg_h2d_ms = 0.0 + + print("\n" + "=" * 60) + print( + f" FULLY-OPTIMIZED ASYNC STAGE ({self.config.DEVICE}) PIPELINE BREAKDOWN " + ) + print("=" * 60) + print(f"Total Output Frames Written: {total_written_frames}") + print(f"Total Pipeline Execution Time: {total_pipeline_time:.4f} seconds") + print(f"Overall Processing Speed: {target_frame_fps:.2f} FPS") + print("-" * 60) + print("MAIN CONSUMER LOOP TIMELINE (SEQUENTIAL OVERHEAD):") + print( + f" 1. Read Frame from Queue: {avg_reader_ms:6.2f} ms" + ) + print( + f" 2. Image Resize Time (360p Transformation): {avg_resize_ms:6.2f} ms" + ) + print( + f" 3. Disk Writer Queue Hand-off (Async): {avg_write_ms:6.2f} ms" + ) + print("-" * 60) + print("BACKGROUND INGESTION HEALTH (ASYNC METRICS):") + print( + f" A. Inbound Stream Capture Speed: {all_frame_fps:6.2f} FPS" + ) + print( + f" B. Host RAM Array Copy (100MB Memcpy): {avg_copy_ms:6.2f} ms" + ) + print(f" C. {h2d_display_label:<42} {avg_h2d_ms:6.2f} ms") + print( + f" D. Reader Thread Queue Blocked Time: {avg_blocked_ms:6.2f} ms" + ) + print( + f" E. Consumer Queue Saturation Density: {avg_saturation:6.1f}%" + ) + print("-" * 60) + + # EXPANDED PERFORMANCE INSIGHTS AND DIAGNOSTICS + print("PIPELINE HEALTH & BEHAVIOR INSIGHTS:") + if avg_saturation > 80.0: + pipeline_status = "CHOKED" + print( + f" • Status: \033[91m🔴 {pipeline_status}\033[0m (Downstream logic cannot keep up with inbound stream speed)" + ) + elif avg_saturation > 40.0: + pipeline_status = "BALANCED" + print( + f" • Status: \033[93m🟡 {pipeline_status}\033[0m (Queue buffer is actively pacing consumer workloads)" + ) + else: + pipeline_status = "IDLE/LIGHT" + print( + f" • Status: \033[92m🟢 {pipeline_status}\033[0m (Consumer loop finishes ahead of background ingestion clock)" + ) + + print( + f" • Peak Queue Fullness Reached: {peak_saturation:.1f}%" + ) + # Calculate stream drop indicator + print( + f" • Targeted Pacing Delivery Accuracy: {target_match_ratio:.1f}%" + ) + print("=" * 60) + + self.__class__.benchmarks.append( + { + "Test Name": self._testMethodName, + # "Detection Type": self.config.DETECTION_TYPE, + "Device": self.config.DEVICE, + # "Smart Filtering": "Enabled" if sf_enabled else "Disabled", + "Video": self.source, # self.name? + "Video FPS": f"{self.reader.input_fps:.2f}", + "Video Duration (s)": f"{duration_s:.4f}", + "Video Frames": self.reader.total_input_frames, + # PIPELINE OVERVIEW + "Target FPS": f"{self.reader.target_fps:.2f}", + "Output Frames": total_written_frames, + "Pipeline Latency (s)": f"{total_pipeline_time:.2f}", + "Pipeline FPS (Video frames)": f"{all_frame_fps:.2f}", + "Pipeline FPS (Target frames)": f"{target_frame_fps:.2f}", + # MAIN CONSUMER LOOP TIMELINE (SEQUENTIAL OVERHEAD) + "Avg Frame Reading (ms)": f"{avg_reader_ms:.2f}", + "Avg Resize (ms)": f"{avg_resize_ms:.2f}", + "Avg Writer Async Handoff (ms)": f"{avg_write_ms:.2f}", + # BACKGROUND INGESTION HEALTH (ASYNC METRICS) + "Avg Host Copy (ms)": f"{avg_copy_ms:.2f}", + "Avg DMA Upload (ms)": f"{avg_h2d_ms:.2f}", + "Avg Data Prep Overhead (ms)": f"{avg_prep_ms:.2f}", + "Avg Queue Blocked (ms)": f"{avg_blocked_ms:.2f}", + "Avg Queue Saturation (%)": f"{avg_saturation:.2f}", + # PIPELINE HEALTH & BEHAVIOR INSIGHTS + "Pipeline Status": pipeline_status, + "Peak Queue Fullness (%)": f"{peak_saturation:.2f}", + "Targeted Pacing Delivery (%)": f"{target_match_ratio:.2f}", + } + ) + + print( + f"\n[{self._testMethodName}] Pipeline Latency (s): {total_pipeline_time:.2f} sec" + ) + print( + f"\n[{self._testMethodName}] Pipeline FPS (Target frames): {target_frame_fps:.2f} ({total_written_frames} frames)" + ) + print( + f"\n[{self._testMethodName}] Pipeline FPS (Video frames): {all_frame_fps:.2f} ({self.reader.total_input_frames} frames)" + ) + + # TESTS -------------------------------------------- + + def pipeline_fn( + self, device_frame, overall_frame_num, is_target_frame, stat_start_time + ): + num_objs = 0 + metrics = {"sf_time": 0, "roi_time": 0, "det_time": 0, "bbs": None} + + # TODO: Add Function to write frames sized to (disp_w, disp_h) efficiently + if self.device_input == "cuda" and torch.is_tensor(device_frame): + # 2. Fast Inline VRAM Downscaling into our static memory slot + # Reshape to (Batch, Channel, Height, Width) seamlessly without duplicating data + gpu_tensor = device_frame[None, :].permute(0, 3, 1, 2).float() + + resized_tensor = torch.nn.functional.interpolate( + gpu_tensor, + size=(360, 640), + mode="nearest", + ) + + # CONVERTS TO CPU EARLIER (WORKS but lowers fps) + # hwc_byte_tensor = resized_tensor.squeeze(0).permute(1, 2, 0).byte() + # cpu_tensor = hwc_byte_tensor.cpu() + # bgr_contiguous = cpu_tensor.contiguous() + + # Using copy_() avoids creating any runtime allocations or memory-stride drift. + self.static_gpu_byte_bchw.copy_(resized_tensor.byte()) + + # Safely reshape the pre-allocated, locked GPU memory layout back to standard HWC array topology. + # Since the underlying array layout is strictly contiguous, this permute is guaranteed + # to be zero-copy on the GPU and free from memory race stalls. + bgr_contiguous = self.static_gpu_byte_bchw.squeeze(0).permute(1, 2, 0) + + # 1. Grab the current free pinned slot tracking variables from your reader + d2h_idx = self.reader.d2h_selector + pinned_tensor_buf = self.reader.d2h_buffers[d2h_idx] + + # c_idx = self.canvas_selector + # current_canvas = self.static_host_canvases[c_idx] + + # host_tensor_view = torch.as_tensor(current_canvas, device="cpu") + + # 3. Non-blocking asynchronous PCIe DMA Download directly into our page-locked canvas + with torch.cuda.stream(self.reader.download_stream): + # pinned_tensor = torch.from_numpy(current_canvas).cuda() + pinned_tensor_buf.copy_(bgr_contiguous, non_blocking=True) + + # Synchronize only the side download stream layout channel + self.reader.download_stream.synchronize() + + cpu_360p_frame = self.reader.d2h_numpys[d2h_idx] + + # 4. Fast Metadata Rendering via OpenCV + # if metrics["bbs"] is not None and len(metrics["bbs"]) > 0: + # for box in metrics["bbs"]: + # # Coordinates must match your 360p scaled target context map + # x1, y1, x2, y2 = int(box[0]), int(box[1]), int(box[2]), int(box[3]) + # cv2.rectangle(current_canvas, (x1, y1), (x2, y2), (0, 255, 0), 2) + # cv2.putText(current_canvas, str(box[4]), (x1, y1 - 10), + # cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 1) + + # 5. Non-Blocking Push straight to your background AsyncVideoWriter thread pool + # We pass a direct .copy() slice so the hot loop can instantly reuse the pinned ring buffer + safe_disk_frame = np.array(cpu_360p_frame, copy=True, order="C") + self.async_writer.write_frame(safe_disk_frame) + # self.canvas_selector = 1 - self.canvas_selector + self.reader.d2h_selector = 1 - self.reader.d2h_selector + + else: + # Reusable baseline track for CPU execution mappings + cpu_resized = cv2.resize( + device_frame, (640, 360), interpolation=cv2.INTER_NEAREST + ) + if metrics["bbs"] is not None: + for box in metrics["bbs"]: + cv2.rectangle( + cpu_resized, + (int(box[0]), int(box[1])), + (int(box[2]), int(box[3])), + (0, 255, 0), + 2, + ) + self.async_writer.write_frame(cpu_resized) + + self.update_frame(stat_start_time) + return num_objs, metrics # Skip full detection pass + + def run_realtime_inference(self, sf_enabled=True): + # self.duration_target = 30 + self.status = "RUNNING" + metrics = {} + num_objs = 0 + self.is_cuda = self.device.lower() == "gpu" and torch.cuda.is_available() + self.frame_count_target = 0 + self.next_process_idx = 0.0 + self.frame_in_clip_count = 0 + total_pipeline_time_ms = 0.0 + total_read_time = 0.0 + total_queue_saturation = 0.0 + # queue_saturation_history = [0.0] + total_written_frames = 0 + total_sf_pipeline_time_ms = 0.0 + real_world_latency_ms = 0.0 + + # queue_size = 4 + total_run_pipelinefn = 0 + # total_read_time = 0 + # total_resize_time = 0 + # total_written_frames = 0 + # total_disk_write_overhead = 0.0 + total_frame_loop_latency = 0.0 + total_active_processing_overhead = 0.0 + # total_queue_saturation = 0.0 + # total_queue_saturation = 0.0 + queue_saturation_history = [] + consecutive_slow_frames = 0 + # total_dropped_frames = 0 + + # coverage_percentages = [] + self.component_stats = { + "sf": [], + "roi": [], + "det": [], + "dma_upload": [], # Track PCIe Transfer Latencies + "queue_blocked": [], # Track GIL Serialization stalls + "batch_sizes": [], # Track Smart Filtering density + "thread_backlog": [], # Track thread work pool backlog + } + self.crops_per_frame_list = [] + + self.step_size = ( + float(self.input_fps) / float(self.target_fps) + if hasattr(self, "target_fps") + else 1.0 + ) + self.max_target_frames = ( + int(self.duration_target * float(self.target_fps)) + if hasattr(self, "target_fps") + else float("inf") + ) + + # self.start() + # time.sleep(0.1) + + # if self.source.startswith("rtsp"): + # short_name = "rtsp" + # else: + # short_name = Path(self.source).stem + # output_path= f"{self.config.SHARED_OUTPUT}/{short_name}_{self.device}.mp4" + # disp_wh = (640, 360) + # async_writer = AsyncVideoWriter( + # self.output_path, + # cv2.VideoWriter_fourcc(*'avc1'), + # float(self.target_fps), + # (self.disp_w, self.disp_h) + # ) + + pipeline_start_time = time.perf_counter() + + # try: + self.dynamic_limit = max(2, int(0.5 * self.target_fps)) + # last_frame_time = time.perf_counter() + while self.active and self.frame_count_target < self.max_target_frames: + try: + # FRAME RETRIEVAL --------------------------------------------- + try: + # device_frame, frame_num = self.reader.read() + # Utilize a clean OS kernel-level block to completely eliminate GIL thrashing + # frame_8k, frame_num = None, None + frame_start_time = time.perf_counter() + t_read = time.perf_counter() + # if self.active: + ret, frame_8k, frame_num = ( + self.reader.read() + ) # Successfully reads the 8K frame + if not ret or frame_8k is None: + # Check if there are any remaining frames still buffered in flight inside the reader queue + # if hasattr(self.reader, 'frame_queue') and not self.reader.frame_queue.empty(): + # ret, frame_8k, frame_num = self.reader.read() + # if not ret or frame_8k is None: + # break + # else: + # break + if self.reader is None or ( + hasattr(self.reader, "stopped") and self.reader.stopped + ): + if self.device_input == "cuda": + torch.cuda.synchronize() + self.active = False + break + continue + + reader_time = time.perf_counter() - t_read + total_read_time += reader_time + except queue.Empty: + if getattr(self.reader, "reconnect_failed", False): + self.active = False + break + time.sleep(0.002) + continue + + # print(f"frame_num: {frame_num}") + + self.stat_start_time = time.perf_counter() + self.frame_count += 1 + is_target_frame = True + + if torch.is_tensor(frame_8k): + if frame_8k.device.type != "cuda": + # Standard functional cross-stream synchronization barrier + # self.reader.upload_stream.wait_stream( + # torch.cuda.current_stream() + # ) + # frame_8k = frame_8k.to("cuda:0", non_blocking=True) + torch.cuda.current_stream().wait_stream( + self.reader.upload_stream + ) + + # Real-Time Metric A: Track Queue Saturation Density Ratio + # current_q_size = self.reader.frame_queue.qsize() + saturation_ratio = ( + self.reader.frame_queue.qsize() / self.reader.frame_queue.maxsize + ) + total_queue_saturation += saturation_ratio + queue_saturation_history.append(saturation_ratio) + + # RUN PIPELINE_FN --------------------------------------------- + run_pipelinefn_start = time.perf_counter() + self.frame_count_target += 1 + self.frame_in_clip_count += 1 + + if self.device_input == "cuda": + # Instantiate a lightweight hardware fence event object + curr_event = torch.cuda.Event(enable_timing=False) + # curr_event.record() + # Record the exact milestone on the default stream right after fetching the frame data + curr_event.record(torch.cuda.default_stream()) + self.inference_stream.wait_event(curr_event) + + with torch.cuda.stream(self.inference_stream): + nob, metrics = self.pipeline_fn( + frame_8k, + frame_num, + is_target_frame, + self.stat_start_time, + ) + # torch.cuda.default_stream().synchronize() + # self.inference_stream.synchronize() + else: + nob, metrics = self.pipeline_fn( + frame_8k, + frame_num, + is_target_frame, + self.stat_start_time, + ) + num_objs += nob + + total_written_frames += 1 + + # Real-Time Metric B: Frame Processing Latency Check + frame_loop_latency = ( + time.perf_counter() - frame_start_time + ) * 1000 # ms + total_frame_loop_latency += frame_loop_latency + + # Isolate active processing time (excluding the queue blocking read) + active_processing_overhead = frame_loop_latency - (reader_time * 1000) + total_active_processing_overhead += active_processing_overhead + + # RUNTIME TERMINAL WARNING ALERTS + if saturation_ratio >= 1.0 or active_processing_overhead > ( + 1000 / self.target_fps + ): + consecutive_slow_frames += 1 + if ( + consecutive_slow_frames % self.target_fps == 0 + ): # Throttle terminal spam + print( + f"\033[93m⚠️ [PERF WARNING] Main loop starving! Waiting on stream ingestion... " + f"Read Wait: {frame_loop_latency:.1f}ms | Queue Fullness: {saturation_ratio * 100:.0f}%\033[0m" + ) + else: + consecutive_slow_frames = max(0, consecutive_slow_frames - 1) + + if total_written_frames % (5 * self.target_fps) == 0: + print( + f"Captured {total_written_frames}/{self.max_target_frames} frames..." + ) + + # WRAP-UP FRAME INSTANCE --------------------------------------------- + # if self.device_input == "cuda" and torch.cuda.is_available(): + # torch.cuda.default_stream().synchronize() + + total_run_pipelinefn += time.perf_counter() - run_pipelinefn_start + + # Explicitly delete frame variables to free their references + del frame_8k + + # Force PyTorch's internal allocator to release cached segments back to the OS + # if self.frame_count_target % (5 * self.target_fps) == 0: + # print( + # f"Captured {self.frame_count_target}/{self.max_target_frames} frames..." + # ) + # torch.cuda.empty_cache() + # torch.cuda.ipc_collect() + + except torch.cuda.OutOfMemoryError: + print("\n" + "!" * 70) + print( + "[CRITICAL TEST CRASH] GPU MEMORY CEILING HIT INSIDE RUNNER LOOP!" + ) + print( + "Freezing allocation history registers and writing diagnostic log..." + ) + print("!" * 70) + + try: + import os + + snapshot_filename = ( + f"/tmp/test_vram_leak_profile_pid{os.getpid()}.pickle" + ) + torch.cuda.memory._dump_snapshot(snapshot_filename) + print( + f"[PROFILER SUCCESSFUL] Snapshot profile written to: {snapshot_filename}" + ) + print( + "--> Drag and drop this file directly into: https://pytorch.org" + ) + except Exception as dump_err: + print(f"Failed to record profile data snapshot: {dump_err}") + + # Force safe system unlinking of background workers to clean up OS handles + self.active = False + if hasattr(self, "reader") and self.reader is not None: + self.reader.stop() + raise + + except Exception: + traceback.print_exc() + + # POST FRAME PROCESSING --------------------------------------------- + pipeline_end_time = time.perf_counter() + + # Resolve the final execution window. If the stream ran to completion, + # use the operational end marker to avoid measuring downstream disk write bottlenecks. + final_end_marker = getattr(self, "pipeline_completion_timestamp", None) + if final_end_marker is None: + final_end_marker = time.perf_counter() + # self.pipeline_completion_timestamp = final_end_marker + + real_world_latency_ms = float((final_end_marker - pipeline_start_time) * 1000.0) + + total_sf_pipeline_time_ms = float( + sum(self.component_stats.get("sf", [0.0])) + + sum(self.component_stats.get("roi", [0.0])) + + sum(self.component_stats.get("det", [0.0])) + ) + total_pipeline_time_ms = float( + (pipeline_end_time - pipeline_start_time) * 1000.0 + ) + + # total_read_time = ( + # sum(self.component_stats.get("queue_blocked", [0.0])) / 1000.0 + # if self.component_stats.get("queue_blocked") + # else 0.0 + # ) + total_queue_saturation = sum( + self.component_stats.get("batch_sizes", [0.0]) + ) # Sample array profile proxy + + if metrics != {}: + num_crops = len(metrics["bbs"]) if metrics["bbs"] is not None else 0 + self.crops_per_frame_list.append(num_crops) + + # Context-aware extraction of the newly proposed metrics + density = metrics.get("batch_density", 0 if self.config.sf_enabled else 1) + self.component_stats["batch_sizes"].append(density) + + self.component_stats["sf"].append(metrics["sf_time"]) + self.component_stats["roi"].append(metrics["roi_time"]) + self.component_stats["det"].append(metrics["det_time"]) + + self.async_writer.release() + # Continuously sample the thread work pool backlog state mechanics + if hasattr(self, "executor") and self.executor is not None: + # Safely probe internal concurrent.futures work queue bounds + self.component_stats["thread_backlog"].append( + self.executor._work_queue.qsize() + ) + else: + self.component_stats["thread_backlog"].append(0) + + # Real-Time Metric B: Frame Processing Latency Check + # frame_loop_latency = (pipeline_end_time - frame_start_time) * 1000 # ms + + # # Isolate active processing time (excluding the queue blocking read) + # active_processing_overhead = frame_loop_latency - (reader_time * 1000) + + # # RUNTIME TERMINAL WARNING ALERTS + # if saturation_ratio >= 1.0 or active_processing_overhead > ( + # 1000 / self.target_fps + # ): + # consecutive_slow_frames += 1 + # if consecutive_slow_frames % self.target_fps == 0: # Throttle terminal spam + # print( + # f"\033[93m⚠️ [PERF WARNING] Main loop starving! Waiting on stream ingestion... " + # f"Read Wait: {frame_loop_latency:.1f}ms | Queue Fullness: {saturation_ratio * 100:.0f}%\033[0m" + # ) + # else: + # consecutive_slow_frames = max(0, consecutive_slow_frames - 1) + + # CALCULATE PERFORMANCE METRICS --------------------------------------------- + print( + f"\nExecution Finished. Total Output Frames Written: {self.frame_count_target}" + ) + + # Render your metrics dashboard table cleanly + self._finalize_benchmarks( + num_objs, + self.frame_count_target, # Reads the updated integer directly! + total_pipeline_time_ms, + real_world_latency_ms, + total_sf_pipeline_time_ms, + total_read_time, + total_queue_saturation, + queue_saturation_history, + ) + self.stop() + + +# MAIN ---------------------------------------- +# def pytest_runtest_logreport(report): +# """Intercepts teardown to ensure benchmarks write to disk BEFORE 'PASSED' prints.""" +# if report.when == "teardown" and report.status == "passed": +# from test_readers import TestReader # Safe local class lookup + +# # Guarantee stop lifecycle finishes completely before reporting opens +# if hasattr(TestReader, "active") and TestReader.active: +# TestReader.stop() + +# if hasattr(TestReader, "benchmarks") and TestReader.benchmarks: +# TestReader.benchmarks = [r for r in TestReader.benchmarks if r and "Test Name" in r] +# results = TestReader.benchmarks +# if not results: +# return + +# # Compute relative speedup modifiers vs CPU baseline +# for row in results: +# if "GPU" in row["Test Name"]: +# match_name = row["Test Name"].replace("GPU", "CPU") +# cpu_row = next((r for r in results if r["Test Name"] == match_name), None) +# if cpu_row: +# speedup = float(row["Pipeline FPS (Target frames)"]) / float(cpu_row["Pipeline FPS (Target frames)"]) +# row["Pipeline Speedup vs CPU"] = f"{speedup:.2f}x" +# else: +# row["Pipeline Speedup vs CPU"] = "N/A" +# else: +# row["Pipeline Speedup vs CPU"] = "Baseline (CPU)" + +# # Bulk write results back to your CSV asset file +# if hasattr(TestReader, "csv_path") and TestReader.csv_path: +# with open(str(TestReader.csv_path), "w", newline="") as f: +# keys = results[0].keys() +# writer = csv.DictWriter(f, fieldnames=keys) +# writer.writeheader() +# writer.writerows(results) +# print(f"\n[FINAL] Benchmarks saved to {TestReader.csv_path}") + +# for r in results: +# print(f" > {r['Test Name']}: {r['Pipeline FPS (Video frames)']} FPS | {r['Pipeline FPS (Target frames)']} FPS | Speedup: {r.get('Pipeline Speedup vs CPU', 'N/A')}") + +# # Export comparison chart figures cleanly +# if hasattr(TestReader, "result_dir") and hasattr(TestReader, "csv_filename"): +# from test_readers import fps_comparison_chart +# chart_path_video = TestReader.result_dir / f"{TestReader.csv_filename.replace('.csv', '')}_pipelineFPS.png" +# fps_comparison_chart(chart_path_video, results, fps_key="Pipeline FPS (Video frames)") + +# chart_path_target = TestReader.result_dir / f"{TestReader.csv_filename.replace('.csv', '')}_pipelineFPS_target.png" +# fps_comparison_chart(chart_path_target, results, fps_key="Pipeline FPS (Target frames)") + + +def get_pytest_filter_expression(args): + print("\n" + "=" * 50) + print("TARGET SELECTION PREVIEW") + print("=" * 50) + + filter_expression = "test_device_reader" + # applied_subs = [] + + if args.sf_enabled is not None: + # Target exact parameter tokens generated by pytest parametrization + sf_str = "-True-" if args.sf_enabled else "-False-" + filter_expression += f" and {sf_str}" + # applied_subs.append(f"sf_enabled={args.sf_enabled}") + + if args.detection_type: + filter_expression += f" and {args.detection_type}" + + # Target hardware context selection filter applies globally across all test cases + if args.device.lower() != "all": + print(f" 💻 Hardware Context Constraint: {args.device.upper()}") + filter_expression = f"({filter_expression}) and {args.device.lower()}" + else: + print(" 💻 Hardware Context Constraint: ALL AVAILABLE") + + print("=" * 50) + print(f"COMPILED PYTEST KEYWORD EXPRESSION:\n 👉 {filter_expression}") + print("=" * 50 + "\n") + + return filter_expression + + +if __name__ == "__main__": + # Force all PyTorch extension handles to compile and load BEFORE threads spawn + if torch.cuda.is_available(): + _ = torch.zeros(1).cuda() + import torch._ops + import torch.utils + + # TEST ARGUMENTS + parser = argparse.ArgumentParser(description="Run Video Detection Pipeline Tests") + parser.add_argument( + "-s", + "--source", + type=str, + default="anduril_swarm_8K.mp4", + help="Video filename (located in /inputs)", + ) + + # MODEL TO USE + parser.add_argument( + "--no-custom", + action="store_false", + dest="custom_model_flag", + help="Enable if using Ultralytics YOLO model", + ) + parser.add_argument( + "-m", + "--model", + type=str, + default="drone_detection", + dest="model_name", + help="Name of model. Required if `--no-custom` is enabled. [Default: drone_detection]", + ) + + # Filter tests + parser.add_argument( + "--type", + type=str, + choices=["object", "motion"], + dest="detection_type", + help="Filter by detection type (object or motion)", + ) + parser.add_argument( + "--device", + type=str, + default="all", + choices=["cpu", "gpu", "all"], + help="Filter by device (cpu or gpu)", + ) + parser.add_argument( + "--sf", + action="store_true", + default=None, + dest="sf_enabled", + help="Filter by Smart Filtering", + ) + + # DEBUGGING + parser.add_argument( + "--debug", + action="store_true", + help="Enable debug message and save intermediate images for Smart Filtering tests", + ) + parser.add_argument( + "-n", + type=int, + default=100, + dest="debug_frame_limit", + help="Number of frames used for debugging [Default: 100]", + ) + + args = parser.parse_args() + + # UPDATE ENVIRONMENTAL VARIABLES + os.environ["VIDEO_FILENAME"] = args.source + os.environ["CUSTOM_MODEL_FLAG"] = "True" if args.custom_model_flag else "False" + os.environ["MODEL_NAME"] = args.model_name + os.environ["DEBUG"] = "1" if args.debug else "0" + os.environ["DEBUG_FRAME_LIMIT"] = str(args.debug_frame_limit) + + # detection_type, device, sf_enabled + filter_expression = get_pytest_filter_expression(args) + + # PYTEST COMMAND + pytest_args = [ + "-k", + filter_expression, + "-s", + "-v", + # "--log-cli-level=DEBUG", + __file__, + ] + + print(f"Launching tests for {args.source}") + + sys.exit(pytest.main(pytest_args)) diff --git a/finetune/Dockerfile b/finetune/Dockerfile index e093a7b..4c5d15b 100644 --- a/finetune/Dockerfile +++ b/finetune/Dockerfile @@ -44,10 +44,10 @@ RUN apt-get update && \ # hadolint ignore=DL3013 RUN python3 -m venv ${VIRTUAL_ENV} && \ ${VIRTUAL_ENV}/bin/pip install --no-cache-dir \ - "pip==26.0.1" \ + "pip==26.1.2" \ "torch==2.10.0" \ "torchvision==0.25.0" \ - "numpy==1.26.0" + "numpy==1.26.4" ENV DEVICE="GPU" From 2e2729eaca8fc1b9b4d918e0460dbc45a170b27e Mon Sep 17 00:00:00 2001 From: "Lacewell, Chaunte W" Date: Wed, 15 Jul 2026 17:15:36 -0700 Subject: [PATCH 06/19] [Docs] Update pipeline.md; [Fastapi] clean launch.json, handlers.py, and utils.py. Also cleaned tests and test result structure Signed-off-by: Lacewell, Chaunte W --- .devcontainer/devcontainer.json | 17 +- doc/pipeline.md | 78 ++- fastapi/.vscode/launch.json | 79 ++- fastapi/include/handlers.py | 924 +++---------------------------- fastapi/include/utils.py | 259 --------- fastapi/tests/test_detections.py | 67 +-- fastapi/tests/test_model.py | 413 ++++++++++++-- fastapi/tests/test_pipeline.py | 46 +- fastapi/tests/test_readers.py | 35 +- 9 files changed, 631 insertions(+), 1287 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index b44624a..79e0d9c 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -28,7 +28,16 @@ "no_proxy" : "${localEnv:no_proxy}", }, - "runArgs" : [ "--rm", "--gpus", "all", "--ipc=host", "--name", "pipeline_dev", "-p", "8011:8000","--cap-add=SYS_NICE", "--shm-size=8gb"], //, "--net=host", "--privileged", "--shm-size=2gb"], + "runArgs" : [ + "--rm", + "--gpus", "all", + "--ipc=host", + "--name", "pipeline_dev", + "-p", "8011:8000", + "--cap-add=SYS_NICE", + "--shm-size=8gb" + ], + //, "--net=host", "--privileged", "--shm-size=2gb"], "postStartCommand": "apt-get update -o Acquire::Check-Date=false -y && apt-get install -y gdb sudo && cp -rp /workspace/app/*.md /app/ && cp -rp /workspace/app/.vscode /app/ && cp -rp /workspace/app/.gitignore /app/ && cp -rp /workspace/app/.github /app/", // "postAttachCommand": "sudo chown -R ${localEnv:USER} /workspaces", @@ -51,7 +60,7 @@ }, "workspaceFolder": "/home", - "workspaceMount": "source=./,target=/workspace/app,type=bind,consistency=cached", + "workspaceMount": "source=${localWorkspaceFolder},target=/workspace/app,type=bind,consistency=cached", // For training only // "mounts": [ @@ -60,8 +69,8 @@ // For fastapi "mounts": [ - "source=./inputs,target=/watch_dir,type=bind", - "source=./fastapi,target=/home,type=bind" + "source=${localWorkspaceFolder}/inputs,target=/watch_dir,type=bind", + "source=${localWorkspaceFolder}/fastapi,target=/home,type=bind" // "source=./fastapi/resources,target=/home/resources,type=bind", // "source=./fastapi/tests,target=/home/tests,type=bind" ], diff --git a/doc/pipeline.md b/doc/pipeline.md index 4236c11..6ddd8a6 100644 --- a/doc/pipeline.md +++ b/doc/pipeline.md @@ -2,7 +2,7 @@ This pipeline focuses on real-time processing of high-resolution (8K) video for object detection. Currently, real-time processing of high-resolution (HR) frames is not possible as large compute power is needed which are typically beyond any HW capabilities. -There are techniques such as image tiling or resolution reduction, but these workarounds compromisr detail integrity, diminish inference throughput, and can make rendering real-time processing of HR feeds infeasible within HW boundaries. +There are techniques such as image tiling or resolution reduction, but these workarounds compromise detail integrity, diminish inference throughput, and can make rendering real-time processing of HR feeds infeasible within HW boundaries. HR video streams typically achieve higher accuracy in object detection, therefore, a technique to reduce compute on HR videos is needed. To solve this issue, we created a Smart Filtering Pipeline to significantly reduce pixel processing (compute) by *automatically* identifying the regions of interest (ROIs) which is then forwarded to the detection model. @@ -15,7 +15,7 @@ To solve this issue, we created a Smart Filtering Pipeline to significantly redu ## Smart Filtering Pipeline The Smart Filtering (SF) is a portion of the pipeline which filters HR videos for ROIs which are used in the detection phase instead of processing the entire frame. This helps reduce the compute while maintaining detection accuracy. -In smart filtering, we use motion to help identify ROIs, which is ideal for surviellence and applications such as the test use-case, drone detection, with stationary cameras. +In smart filtering, we use motion to help identify ROIs, which is ideal for surveillance and applications such as the test use-case, drone detection, with stationary cameras. Keep in mind, if camera is NOT stationary, some background movement may be captured as foreground objects due to background subtraction algorithm.
@@ -25,8 +25,8 @@ Keep in mind, if camera is NOT stationary, some background movement may be captu The current filtering pipeline includes the following steps: 1. **Resize:** Resize full resolution (HR) frame to smaller size for less computation. 1. **Background Subtraction:** Use resized image to obtain mask of foreground objects using background subtraction. With background subtraction, there is an option to include the masks of previous frames which is enabled by default for 3 previous frames. -1. **Threshold:** Apply thresholding to mask generated by previous step -1. **Clean Mask:** Dilate the thresholded frame for easier detection of ROIs. +1. **Threshold:** Apply threshold to mask generated by previous step +1. **Clean Mask:** Dilate the threshold frame for easier detection of ROIs. 1. **Identify Region of Interests (ROIs):** Retrieve contours from dilated mask 1. Filter contours by defined minimum contour area and obtain ROIs in full resolution coordinates. 1. Sort ROIs by area (largest to smallest) @@ -119,6 +119,8 @@ For testing other components, please see [Testing Pipeline Components](#testing- #### VSCode If using VSCode, the provided `.vscode` directory is already mounted in the above command which includes `launch.json` for debugging. You can use the provided DevContainer or use the docker extension to connect to the `lcc_fastapi:stream` container by clicking `Attach Visual Studio Code`. +The DevContainer assumes GPU availability. +If your system does NOT support GPU, check [devcontainer.json](/.devcontainer/devcontainer.json) and make sure within the `runArgs` section, `"--gpus", "all"` is commented out. Once connected, it will install VSCode in the container. If you receive an error regarding permissions during installation, you must modify the remote user. To allow permission for the installation, open the `Command Pallette` and select `Dev Containers: Open Attached Container Configuration File`. @@ -142,11 +144,11 @@ Edit the file as follows: ### Optimization Areas -For the smart filtering pipeline, the following are potential areas for optimizations. +For the Smart Filtering pipeline, the following are potential areas for optimizations. | Category | Variable | Default | Description | | ---------------------- | ------------------------------------ | ----------- |------------ | -| Smart Filtering | SMART_FILTERING_PIXEL_CONSTRAINT | 1920 * 1080 | Smart filtering is enabled if vidoe is larger than 2K. YOLO models typicaly can efficiently process lower resolution without overloading resources. | +| Smart Filtering | SMART_FILTERING_PIXEL_CONSTRAINT | 1920 * 1080 | Smart filtering is enabled if video is larger than 2K. YOLO models typically can efficiently process lower resolution without overloading resources. | | Background Subtraction | BKGD_SUB_INCLUDE_HISTORY | True | Include temporal history with mask generation. True: dilate masks in history and combine into single current mask via `method`. The final background model mask is generated using the union of combined mask (if true) and current background mask. | | Background Subtraction | BKGD_SUB_INCLUDE_HISTORY_DILATE_KERNEL_SIZE | 15 x 15 | Kernel used to dilate temporal masks if `BKGD_SUB_INCLUDE_HISTORY` is True. | | Background Subtraction | BKGD_SUB_INCLUDE_HISTORY_METHOD | or | Method used to combine mask history. Specify `and` or `or`. | @@ -156,7 +158,7 @@ For the smart filtering pipeline, the following are potential areas for optimiza | Background Subtraction | BKGD_SUB_MOG2_LR | 1 / BKGD_SUB_MOG2_HISTORY | Learning rate to use for background model | | Background Subtraction | BKGD_SUB_MOG2_VARTHRESHOLD | 10 | The Mahalanobis distance threshold to decide whether a pixel is foreground or background. Higher value (Lower sensitivity): This reduces "salt and pepper" noise and ignores small fluctuations, but you might lose the edges of your actual objects (making bounding boxes smaller/fragmented). Lower value (Higher sensitivity): You’ll catch every tiny movement, but you’ll get a lot of noise from compression artifacts or camera sensor grain. | | Threshold | THRESHOLD_VALUE | 127 | The threshold value used to classify pixel intensities. | -| Clean Mask | DILATE_KERNEL_SIZE | 5 x 5 | Kernel used to dilate mask AFTER thresholding is performed. | +| Clean Mask | DILATE_KERNEL_SIZE | 5 x 5 | Kernel used to dilate mask AFTER threshold is applied. | | Identify ROIs | ROI_BB_FULL_RES_PADDING | MODEL_W * .02 | Padding to add to ROIs to make sure detection captures full box. | | Identify ROIs | ROI_CONTAINMENT_THRESH | 0.95 | Input argument to filter_contained_boxes used for removing smaller contained ROIs. Current value is 0.9 (90%). | | Identify ROIs | ROI_DISTANCE_THRESH_RATIO | 0.05 | Input argument to merge ROIs is distance less than this parameter. | @@ -192,15 +194,17 @@ Here we provide details on each available test. | Component | Test File | Description | | --------- | --------- | ----------- | -| Detection Model | [test_model.py](/fastapi/tests/test_model.py) | Test the model for both CPU and GPU on provided RTSP URL or video file | -| Smart Filtering | [test_detections.py](/fastapi/tests/test_detections.py) | This test independently evaluates the detection pipeline (with and without Smart Filtering) only and does not include video clip generation or sending metadata to database for querying. | -| Stream Reader | [test_pipeline.py](/fastapi/tests/test_pipeline.py) | Scenario 1 tests the behavior of Readers when provided an invalid RTSP url.
Scenario 2 reads the RTSP url or video file for a specified duration or until it ends. | +| Model | [test_model.py](/fastapi/tests/test_model.py) | Test the model for both CPU and GPU on provided RTSP URL or video file | +| Stream Readers | [test_readers.py](/fastapi/tests/test_readers.py) | Independently test the stream readers for both CPU and GPU on provided RTSP URL or video file | +| Smart Filtering | [test_detections.py](/fastapi/tests/test_detections.py) | Independently test the detection pipeline (with and without Smart Filtering) only. Test does not include video clip generation or sending metadata to database for querying. | +| Stream Readers | [test_pipeline.py](/fastapi/tests/test_pipeline.py) | Scenario 1 tests the behavior of Readers when provided an invalid RTSP url.
Scenario 2 reads the RTSP url or video file for a specified duration or until it ends. | | Video Clip Generation | [test_pipeline.py](/fastapi/tests/test_pipeline.py) | Scenario 3 mimics the clip generation within the pipeline. | | Smart Filtering | [test_pipeline.py](/fastapi/tests/test_pipeline.py) | Scenario 4 tests the entire pipeline and saves output video of results. | -### Test Models +### Test Model This test reads the `SOURCE` from `./inputs` (the local directory or `/watch_dir` if in container), or RTSP server, and creates a video with overlaid detection results for both GPU and CPU model. +Results are located in `test_model_results/{MODEL_NAME}`. ```bash python test_models.py -s "${SOURCE}" ``` @@ -216,20 +220,36 @@ The arguments available for this test are as follows: | -s SOURCE,
--source SOURCE | anduril_swarm_8K.mp4 | Video filename (located in /inputs) or RTSP target stream endpoint | | --no-custom | - | Enable if using Ultralytics YOLO model | | -m MODEL_NAME,
--model MODEL_NAME | drone_detection | Name of model. Required if `--no-custom` is enabled. | -| --type {object,motion} | None | Filter by detection type (object or motion) | | --device {cpu,gpu} | None | Filter by device (cpu or gpu) |
+### Test Readers +This test reads the `SOURCE` from `./inputs` (the local directory or `/watch_dir` if in container), or RTSP server, and creates a video with overlaid detection results for both GPU and CPU model. +Results are located in `test_readers_results/{SOURCE_NAME}`. +```bash +python test_readers.py -s "${SOURCE}" +``` + +The arguments available for this test are as follows: +| Argument | Default | Description | +| -------- | ------- | ----------- | +| -s SOURCE,
--source SOURCE | anduril_swarm_8K.mp4 | Video filename (located in ./inputs) | +| --device {cpu,gpu,all} | all | Filter by target hardware. | +| --debug | False | Enable debug message | +
+ + ### Test Detections This test reads the `SOURCE` from `./inputs`, and evaluates the detection pipeline only. +Results are located in `test_detections_results/{MODEL_NAME}/{SOURCE_NAME}`. To run the detection test, use the following: ```bash python test_detections.py --source "${SOURCE}" ``` -You also have control on which scenario, model, etc. to use during testinh. +You also have control on which scenario, model, etc. to use during testing. The arguments available are as follows: | Argument | Default | Description | | -------- | ------- | ----------- | @@ -246,13 +266,14 @@ The arguments available are as follows: ### Test Pipeline This test reads the `SOURCE` from `./inputs` or RTSP server, and uses the stream readers to perform multiple scenarios. +Results are located in `test_pipeline_results/{MODEL_NAME}/{SOURCE_NAME}`. To run the full pipeline test, use the following: ```bash python test_pipeline.py --source "${SOURCE}" ``` -You also have control on which scenario, model, etc. to use during testinh. +You also have control on which scenario, model, etc. to use during testing. The arguments available are as follows: | Argument | Default | Description | | -------- | ------- | ----------- | @@ -269,7 +290,7 @@ The arguments available are as follows:
#### Scenario 1: Invalid RTSP URL -Scenario 1 is a simple test to verify the pipeline ends if an invalid input is provided. For this test, an invalie RTSP url is provided, there are 5 retry attempts, and after a failed connection, the test ends. By default, the test iterates over available devices ("cpu" and "gpu"). +Scenario 1 is a simple test to verify the pipeline ends if an invalid input is provided. For this test, an invalid RTSP url is provided, there are 5 retry attempts, and after a failed connection, the test ends. By default, the test iterates over available devices ("cpu" and "gpu"). #### Scenario 2: Stability & Throughput @@ -279,34 +300,51 @@ Scenario 2 evaluates the stability and throughput of the readers by continuously #### Scenario 3: Video Clip Generation Scenario 3 evaluates the video clip generation process in the pipeline. In the pipeline, we segment the input video into 10 sec clips for easy retrieval and playback associated with results in the query UI. By default, the test iterates over available devices ("cpu" and "gpu"). -The resulting video clips generated from this test are located in `test_pipeline_results/scenario3_*`. +The resulting video clips generated from this test are located in `test_pipeline_results/{MODEL_NAME}/{SOURCE_NAME}/scenario3_{DEVICE}`. #### Scenario 4: Pipeline (Without Sending Metadata) Scenario 4 mimics the entire pipeline excluding sending the generated metadata to VDMS. By default, the test iterates over available devices ("cpu" and "gpu"), detection type ("object" or "motion"), and with and without SF. -The resulting video clips and the detection results are located in `test_pipeline_results/scenario4_*`. +The resulting video clips and the detection results are located in `test_pipeline_results/{MODEL_NAME}/{SOURCE_NAME}/scenario4_{DEVICE}`. In the case of testing the Smart Filtering pipeline, to display the ROIs, you can use the following, which will test for both gpu and cpu. ```bash -python test_pipeline.py --scenario 4 --source "${SOURCE}" --type motion +python test_pipeline.py --source "${SOURCE}" --scenario 4 --sf --type motion ``` ## Pipeline Deployment +All components for this application are dockerize. +Scripts are also provided to make deployment easier. ### Deployment +[Optional] To make sure there aren't any running containers for this application, run the following which stops the application and prunes containers: +```bash ./stop.sh –p +``` + +To start the application, run the following for GPU: +```bash ./start_app.sh –e GPU –o –m drone_detection +``` ### Visualization: View live detection -GOTO: http://:30077/ +To view the live detections, open a browser for host system and goto `http://:30077` ### Query: View Page to Query Videos -GOTO: http://:30007/ +To query videos, open a browser for host system and goto `http://:30007`. ### Shutdown +To shutdown this application, run the following: +```bash +./stop.sh +``` + +Or add the necessary flag to stop the application and prune containers: +```bash ./stop.sh –p +``` diff --git a/fastapi/.vscode/launch.json b/fastapi/.vscode/launch.json index d69153c..bf0e18c 100644 --- a/fastapi/.vscode/launch.json +++ b/fastapi/.vscode/launch.json @@ -5,75 +5,106 @@ "version": "0.2.0", "configurations": [ { - "name": "Python Debugger: test_detections", + // Test the model for both CPU and GPU on provided RTSP URL or video file + "name": "Test Model", "type": "debugpy", "request": "launch", - "program": "${workspaceFolder}/tests/test_detections.py", + "program": "${workspaceFolder}/tests/test_model.py", "cwd": "${workspaceFolder}/tests", + "python": "/opt/venv/bin/python", "console": "integratedTerminal", "justMyCode": false, "subProcess": false, "args": [ - "--type", "object", + // VIDEOS EXPECTED TO BE rstp url OR IN inputs/ or /watch_dir + // "--source", "rtsp://:/", // "--source", ".mp4", - // "-m", "yolo11n", "--no-custom", + ] }, { - "name": "Python Debugger: Pipeline", + // Independently test the stream readers for both CPU and GPU on provided RTSP URL or video file + "name": "Test Readers (Independent)", "type": "debugpy", "request": "launch", - "program": "${workspaceFolder}/tests/test_pipeline.py", + "program": "${workspaceFolder}/tests/test_readers.py", + "cwd": "${workspaceFolder}/tests", + "python": "/opt/venv/bin/python", "console": "integratedTerminal", - "subProcess": false, "justMyCode": false, + "subProcess": false, "args": [ - "--duration", "2", - - // AVAILABLE SCENARIO PARAMS - // Use --scenario to specify tests by number (1 - 4) - // 1 - 3: --device (cpu or gpu) - // 4: --device, --sf, --type (object or motion) - // VIDEOS EXPECTED TO BE rstp url OR IN inputs/ or /watch_dir // "--source", "rtsp://:/", - // "--source", ".mp4", + // "--source", ".mp4" + ] }, - { - "name": "Python Debugger: Model", + // Independently test the detection pipeline (with and without Smart Filtering) only + "name": "Test Detections (Independent)", "type": "debugpy", "request": "launch", - "program": "${workspaceFolder}/tests/test_model.py", + "program": "${workspaceFolder}/tests/test_detections.py", "cwd": "${workspaceFolder}/tests", + "python": "/opt/venv/bin/python", "console": "integratedTerminal", "justMyCode": false, "subProcess": false, "args": [ // VIDEOS EXPECTED TO BE rstp url OR IN inputs/ or /watch_dir + // "--source", "rtsp://:/", + // "--source", ".mp4" + + ] + }, + { + // Test pipeline with various scenarios + "name": "Test Pipeline", + "type": "debugpy", + "request": "launch", + "program": "${workspaceFolder}/tests/test_pipeline.py", + "cwd": "${workspaceFolder}/tests", + "python": "/opt/venv/bin/python", + "console": "integratedTerminal", + "subProcess": false, + "justMyCode": false, + "args": [ + // VIDEOS EXPECTED TO BE rstp url OR IN inputs/ or /watch_dir + // "--source", "rtsp://:/", // "--source", ".mp4", + + // AVAILABLE SCENARIO PARAMS + // Use --scenario to specify tests by number (1 - 4) + // 1 - 3: --device (cpu or gpu) + // 4: --device, --sf, --type (object or motion) + + "--duration", "1", + ] }, { - "name": "Python Debugger: Smart filtering", + // Test Smart Filtering within pipeline to display the ROIs + "name": "Test Pipeline: Smart filtering Only", "type": "debugpy", "request": "launch", "program": "${workspaceFolder}/tests/test_pipeline.py", + "cwd": "${workspaceFolder}/tests", + "python": "/opt/venv/bin/python", "console": "integratedTerminal", "subProcess": false, "justMyCode": false, "args": [ + // VIDEOS EXPECTED TO BE rstp url OR IN inputs/ or /watch_dir + // "--source", "rtsp://:/", + // "--source", ".mp4", + // SF SCENARIO PARAMS // 4: --device, --sf, --type (object or motion) "--scenario", "4", "--sf", "--type", "motion", - - // VIDEOS EXPECTED TO BE rstp url OR IN inputs/ or /watch_dir - // "--source", "rtsp://:/", - // "--source", ".mp4", ] - }, + } ] } diff --git a/fastapi/include/handlers.py b/fastapi/include/handlers.py index 53e2783..fce0edc 100644 --- a/fastapi/include/handlers.py +++ b/fastapi/include/handlers.py @@ -88,10 +88,7 @@ def log_to_logger(message, level="info"): PipelineMapping, draw_label, get_detection_color, - get_display_frame_in_bytes, metadata2vdms_with_retry, - # AsyncVideoWriter, - # AsyncDisplayWriter, ) @@ -125,510 +122,6 @@ def release(self): self.writer.release() -class AsyncDisplayWriter: - """ - Ultra-efficient frame-delivery client for live web streaming. - Pipes annotated BGR numpy matrices directly into matching Linux - POSIX Shared Memory allocation slots to prevent thread context-switching. - """ - - def __init__(self, target_fps, display_size, quality=60): - self.target_fps = float(target_fps) - self.disp_w, self.disp_h = display_size - self.quality = int(quality) - - # Ingestion pipeline constructs - self.queue = queue.Queue(maxsize=10) - self.running = True - - # State indicators requested by the FastAPI handler endpoints - self.handler = None - - def start_worker(self): - self.thread = threading.Thread(target=self._write_loop, daemon=True) - self.thread.start() - - def set_handler_context(self, handler_instance): - """Binds the active handler resource structures to secure index barriers.""" - self.handler = handler_instance - - def _write_loop(self): - encode_param = [int(cv2.IMWRITE_JPEG_QUALITY), self.quality] - print( - f"[DISPLAY-DEBUG] Background writer thread active for: {self.handler.name if self.handler else 'None'}", - flush=True, - ) - - while self.running or not self.queue.empty(): - try: - item = self.queue.get(timeout=0.05) - if item is None: - break - - display_frame, frame_num = item - - if self.handler is None: - print( - f"[DISPLAY-WARN] Missing handler context on Frame #{frame_num}", - flush=True, - ) - self.queue.task_done() - continue - - # --- TRACKING DIAGNOSTIC ASSERTION --- - current_last_id = ( - self.handler.mp_last_id.value - ) # self.handler.shared_details.get("last_id", -1) - if frame_num <= current_last_id: - print( - f"[DISPLAY-DROP] Skipping Frame #{frame_num} because it is older or equal to last_id ({current_last_id})", - flush=True, - ) - self.queue.task_done() # 🔄 CRITICAL: Prevent queue thread starvation - continue - - frame_bytes = get_display_frame_in_bytes( - display_frame, - display_size=(self.disp_w, self.disp_h), - quality=self.quality, - return_bytes=True, - ) - - if not frame_bytes: - print( - f"[DISPLAY-ERROR] Compression failed on Frame #{frame_num}", - flush=True, - ) - self.queue.task_done() - continue - - frame_len = len(frame_bytes) - num_shms = len(self.handler.shms) - - forbidden_idx = [ - self.handler.ready_buffer_idx.value, - self.handler.reader_active_idx.value, - ] - available_idx = [i for i in range(num_shms) if i not in forbidden_idx] - - if not available_idx: - write_idx = (self.handler.ready_buffer_idx.value + 1) % num_shms - else: - write_idx = available_idx[0] - - # Zero-copy memory map transaction - shm_block = self.handler.shms[write_idx] - shm_block.buf[:frame_len] = frame_bytes # memoryview(frame_bytes) - - # Secure metrics tracking parameters - self.handler.shm_frame_lengths[write_idx] = frame_len - self.handler.ready_buffer_idx.value = write_idx - # self.handler.shared_details["last_id"] = frame_num - self.handler.mp_last_id.value = frame_num - - # Signal FastAPI async engine handles safely - # if hasattr(self.handler, "loop") and self.handler.loop is not None: - # self.handler.loop.call_soon_threadsafe(self.handler.frame_ready_event.set) - # else: - # self.handler.frame_ready_event.set() - self.handler.mp_frame_ready_flag.value = True - - self.queue.task_done() - - except queue.Empty: - continue - except Exception as e: - print(f"[DISPLAY-FATAL-ERROR] Execution crashed: {e}", flush=True) - traceback.print_exc() - if "item" in locals(): - self.queue.task_done() - continue - - # def _write_loopv2(self): - # encode_param = [int(cv2.IMWRITE_JPEG_QUALITY), self.quality] - # while self.running or not self.queue.empty(): - # try: - # item = self.queue.get(timeout=0.05) - # if item is None: - # break - # display_frame, frame_num = item - # # self.writer.write(frame) - # # Compress to highly packable, network-ready JPEG byte streams - # # ret, jpeg_buf = cv2.imencode('.jpg', display_frame, encode_param) - # # if not ret: - # # self.queue.task_done() - # # continue - # if self.handler is None: # or not self.handler.active: - # self.queue.task_done() - # continue - - # if frame_num > self.handler.shared_details["last_id"]: - # frame_bytes = get_display_frame_in_bytes( - # display_frame, - # display_size=(self.disp_w, self.disp_h), - # quality=self.quality, - # return_bytes=True, - # ) - # if not frame_bytes: - # self.queue.task_done() - # continue - - # # frame_bytes = jpeg_buf.tobytes() - # frame_len = len(frame_bytes) - # num_shms = len(self.handler.shms) - - # # Locate alternative ring memory locations away from browser client read operations - # forbidden_idx = [self.handler.ready_buffer_idx.value, self.handler.reader_active_idx.value] - # available_idx = [i for i in range(num_shms) if i not in forbidden_idx] - - # if not available_idx: - # # Fallback to structural ring increments if locks collide - # write_idx = (self.handler.ready_buffer_idx.value + 1) % num_shms - # else: - # write_idx = available_idx[0] - - # # Direct zero-copy commit straight to volatile RAM mappings - # shm_block = self.handler.shms[write_idx] - # shm_block.buf[:frame_len] = memoryview(frame_bytes) - - # # Update pipeline sync trackers across worker contexts - # self.handler.shm_frame_lengths[write_idx] = frame_len - # self.handler.ready_buffer_idx.value = write_idx - - # # Assign atomic sequence token identifiers safely - # self.handler.shared_details["last_id"] = frame_num - - # # Fire threading synchronization barriers to release blocked generator loops - # # self.handler.frame_ready_event.set() - # if hasattr(self.handler, "loop") and self.handler.loop is not None: - # self.handler.loop.call_soon_threadsafe(self.handler.frame_ready_event.set) - # else: - # # Fallback guard if the frame context hasn't registered a loop hook yet - # self.handler.frame_ready_event.set() - - # self.queue.task_done() - # except queue.Empty: - # continue - # except Exception as e: - # print(f"[ASYNC-DISPLAY-ERROR] Silent pool worker drop: {e}") - # traceback.print_exc() - # continue - - # def _write_loopv1(self): - # """Background daemon consumer that compresses matrices directly to /dev/shm.""" - # # Performance parameters to maintain strict BT.709 encoding constraints - # encode_param = [int(cv2.IMWRITE_JPEG_QUALITY), self.quality] - - # while self.running or not self.queue.empty(): - # try: - # item = self.queue.get(timeout=0.05) - # if item is None: - # break - - # display_frame, frame_num = item - # if self.handler is None or not self.handler.active: - # self.queue.task_done() - # continue - - # # Ensure image sizes perfectly correspond with standard API expectations - # if display_frame.shape[1] != self.disp_w or display_frame.shape[0] != self.disp_h: - # display_frame = cv2.resize(display_frame, (self.disp_w, self.disp_h), interpolation=cv2.INTER_NEAREST) - - # # Compress to highly packable, network-ready JPEG byte streams - # ret, jpeg_buf = cv2.imencode('.jpg', display_frame, encode_param) - # if not ret: - # self.queue.task_done() - # continue - - # frame_bytes = jpeg_buf.tobytes() - # frame_len = len(frame_bytes) - # num_shms = len(self.handler.shms) - - # # Locate alternative ring memory locations away from browser client read operations - # forbidden_idx = [self.handler.ready_buffer_idx.value, self.handler.reader_active_idx.value] - # available_idx = [i for i in range(num_shms) if i not in forbidden_idx] - - # if not available_idx: - # # Fallback to structural ring increments if locks collide - # write_idx = (self.handler.ready_buffer_idx.value + 1) % num_shms - # else: - # write_idx = available_idx[0] - - # # Direct zero-copy commit straight to volatile RAM mappings - # shm_block = self.handler.shms[write_idx] - # shm_block.buf[:frame_len] = frame_bytes - - # # Update pipeline sync trackers across worker contexts - # self.handler.shm_frame_lengths[write_idx] = frame_len - # self.handler.ready_buffer_idx.value = write_idx - - # # Assign atomic sequence token identifiers safely - # self.handler.shared_details["last_id"] = frame_num - - # # Fire threading synchronization barriers to release blocked generator loops - # # self.handler.frame_ready_event.set() - # if hasattr(self.handler, "loop") and self.handler.loop is not None: - # self.handler.loop.call_soon_threadsafe(self.handler.frame_ready_event.set) - # else: - # # Fallback guard if the frame context hasn't registered a loop hook yet - # self.handler.frame_ready_event.set() - - # self.queue.task_done() - # except queue.Empty: - # continue - # except Exception as e: - # print(f"[ASYNC-DISPLAY-ERROR] Failed streaming injection: {e}") - # continue - - def write_frame(self, display_frame, frame_num): - """Thread-safe entry hook to stash processed canvas items into the workspace.""" - # if not self.active: - # return - # try: - # # Drop structural allocations under pressure if the worker falls behind - # self.queue.put_nowait((display_frame, frame_num)) - # except queue.Full: - # pass - self.queue.put((display_frame, frame_num)) - - def release(self): - """Terminates internal consumers gracefully to ensure process convergence.""" - # self.active = False - self.running = False - self.queue.put(None) - if self.thread.is_alive(): - self.thread.join(timeout=1.0) - - -# class AsyncDisplayVideoWriter: -# """ -# Modified streaming writer based on AsyncVideoWriter layout. -# Sequentially pipes annotated matrices directly into Linux POSIX -# Shared Memory allocations without frame drop filters. -# """ -# def __init__(self, target_fps, display_size, quality=60): -# self.target_fps = float(target_fps) -# self.disp_w, self.disp_h = display_size -# self.quality = int(quality) - -# # Ingestion pipeline constructs mirroring AsyncVideoWriter -# self.queue = queue.Queue(maxsize=2) -# self.running = True -# self.handler = None - -# # Start the sequential background thread -# self.thread = threading.Thread(target=self._write_loop, daemon=True) -# self.thread.start() - -# def set_handler_context(self, handler_instance): -# """Binds the parent handler resource structures.""" -# self.handler = handler_instance - -# def _write_loop(self): -# encode_param = [int(cv2.IMWRITE_JPEG_QUALITY), self.quality] - -# while self.running: # or not self.queue.empty(): -# try: -# item = self.queue.get(timeout=0.05) -# if item is None: -# break - -# display_frame, frame_num = item -# if self.handler is None or not self.handler.active: -# self.queue.task_done() -# continue - -# # Ensure image matches standard spatial expectations layout safely -# if display_frame.shape[1] != self.disp_w or display_frame.shape[0] != self.disp_h: -# display_frame = cv2.resize( -# display_frame, (self.disp_w, self.disp_h), interpolation=cv2.INTER_NEAREST -# ) - -# # Compress to network-ready JPEG byte streams -# ret, jpeg_buf = cv2.imencode('.jpg', display_frame, encode_param) -# if not ret: -# self.queue.task_done() -# continue - -# frame_bytes = jpeg_buf.tobytes() -# frame_len = len(frame_bytes) -# num_shms = len(self.handler.shms) - -# # Sequential Ring Buffer Allocation Step -# write_idx = (self.handler.ready_buffer_idx.value + 1) % num_shms - -# # Commit straight to the volatile shared RAM mapping -# shm_block = self.handler.shms[write_idx] -# shm_block.buf[:frame_len] = memoryview(frame_bytes) - -# # Update lengths and index pointers first so the reader has data -# self.handler.shm_frame_lengths[write_idx] = frame_len -# self.handler.ready_buffer_idx.value = write_idx -# self.handler.mp_last_id.value = frame_num - -# # Flip the shared IPC flag to wake up the FastAPI generator -# self.handler.mp_frame_ready_flag.value = True - -# self.queue.task_done() - -# # if self.queue.empty(): -# # self.handler.mp_frame_ready_flag.value = False -# except queue.Empty: -# continue -# except Exception as e: -# print(f"[STREAM-WRITER-ERROR] Failed streaming injection: {e}") -# if 'item' in locals(): -# self.queue.task_done() -# continue - -# # def write_frame(self, frame, frame_num): -# # """Appends frames to the background delivery thread queue.""" -# # if self.running: -# # self.queue.put((frame, frame_num)) - -# # def release(self): -# # """Gracefully terminates and joins the background thread loop.""" -# # self.running = False -# # self.queue.put(None) -# # if self.thread.is_alive(): -# # self.thread.join() - -# def write_frame(self, frame, frame_num): -# """Thread-safe lossy queue ingestion.""" -# if not self.running: -# return -# try: -# # 2. 🔄 FIX: Use non-blocking insertions to prevent ThreadPool starvation -# self.queue.put_nowait((frame, frame_num)) -# except queue.Full: -# try: -# # Evict the old, stale frame to ensure real-time rendering continuity -# self.queue.get_nowait() -# self.queue.task_done() -# self.queue.put_nowait((frame, frame_num)) -# except Exception: -# pass - -# def release(self): -# self.running = False -# try: -# while not self.queue.empty(): -# self.queue.get_nowait() -# self.queue.task_done() -# except Exception: -# pass -# self.queue.put(None) - -# class AsyncDisplayVideoWriter: -# """ -# Lock-free sequential frame streaming bridge optimized for 8K pipelines. -# Directly targets the reverted FastAPI main.py frame_generator loop structures. -# """ -# def __init__(self, target_fps, display_size, quality=60): -# self.target_fps = float(target_fps) -# self.disp_w, self.disp_h = display_size -# self.quality = int(quality) - -# # Enforce a tight bounded queue to eliminate memory leaks and thread pool starvation -# self.queue = queue.Queue(maxsize=1) -# self.running = True -# self.handler = None - -# self.thread = threading.Thread(target=self._write_loop, daemon=True) -# self.thread.start() - -# def set_handler_context(self, handler_instance): -# """Binds the stream handler context to pass parameters across memory spaces.""" -# self.handler = handler_instance - -# def _write_loop(self): -# encode_param = [int(cv2.IMWRITE_JPEG_QUALITY), self.quality] - -# while self.running: -# try: -# # Controlled timeout prevents zombie threads during service re-engineering -# item = self.queue.get(timeout=0.02) -# if item is None: -# break - -# display_frame, frame_num = item -# if self.handler is None or not self.handler.active: -# self.queue.task_done() -# continue - -# # Enforce spatial aspect resolution constraints -# if display_frame.shape[1] != self.disp_w or display_frame.shape[0] != self.disp_h: -# display_frame = cv2.resize( -# display_frame, (self.disp_w, self.disp_h), interpolation=cv2.INTER_NEAREST -# ) - -# # Compress matrix to network-ready JPEGs -# ret, jpeg_buf = cv2.imencode('.jpg', display_frame, encode_param) -# if not ret: -# self.queue.task_done() -# continue - -# frame_bytes = jpeg_buf.tobytes() -# frame_len = len(frame_bytes) -# num_shms = len(self.handler.shms) - -# # Lockless round-robin step selection across the pre-allocated POSIX buffers -# write_idx = (self.handler.ready_buffer_idx.value + 1) % num_shms - -# # Commit bytes directly into volatile Linux shared RAM (/dev/shm) -# shm_block = self.handler.shms[write_idx] -# shm_block.buf[:frame_len] = memoryview(frame_bytes) - -# # --- ATOMIC METRICS UPDATES ALIGNED WITH REVERTED main.py --- -# self.handler.shm_frame_lengths[write_idx] = frame_len -# self.handler.ready_buffer_idx.value = write_idx - -# # Synchronize the Manager dict proxy that main.py parses on line 197! -# self.handler.shared_details["last_id"] = frame_num -# self.handler.mp_last_id.value = frame_num - -# # Thread-safely fire the asyncio.Event to wake up the web generator loop -# if hasattr(self.handler, "loop") and self.handler.loop is not None: -# self.handler.loop.call_soon_threadsafe(self.handler.frame_ready_event.set) -# else: -# self.handler.frame_ready_event.set() - -# self.queue.task_done() -# except queue.Empty: -# continue -# except Exception as e: -# print(f"[STREAM-WRITER-ERROR] Frame streaming execution failed: {e}", flush=True) -# if 'item' in locals(): -# self.queue.task_done() -# continue - -# def write_frame(self, frame, frame_num): -# """Appends frames to the background delivery thread using non-blocking evictions.""" -# if not self.running: -# return -# try: -# self.queue.put_nowait((frame, frame_num)) -# except queue.Full: -# try: -# # Evict the old, stale frame slot to prioritize fresh real-time matrices -# self.queue.get_nowait() -# self.queue.task_done() -# self.queue.put_nowait((frame, frame_num)) -# except Exception: -# pass - -# def release(self): -# """Gracefully drains workers and joins the tracking daemon loops.""" -# self.running = False -# try: -# while not self.queue.empty(): -# self.queue.get_nowait() -# self.queue.task_done() -# except Exception: -# pass -# self.queue.put(None) - - class AsyncDisplayVideoWriter: """ Lock-free single-element buffer optimized for 8K pipelines. @@ -1209,90 +702,90 @@ def get_bb_overlay(display_frame, metadata_or_bbs, scale_display, disp_size): return display_frame -def test_rendering_worker(queue, display_size, out_path, target_fps): - """ - Ultra-efficient video saver for TEST_MODE. - Pipes raw BGR frames directly into an internal FFmpeg engine subshell. - """ - disp_w, disp_h = display_size - - # Construct optimized MPEG-4 parameters to match main pipeline architecture - ffmpeg_cmd = [ - "ffmpeg", - "-y", - "-probesize", - "32", - "-analyzeduration", - "0", - "-f", - "rawvideo", - "-pix_fmt", - "bgr24", - "-s", - f"{disp_w}x{disp_h}", - "-r", - str(int(target_fps)), - "-i", - "-", - "-c:v", - "libx264", - "-crf", - "23", - # "-c:v", "mpeg4", # Or "libx264" if you prefer H.264 - # "-qscale:v", "4", # Quality scale (use -crf 23 if using libx264) - str(out_path), - ] - - # Spawn background daemon process - proc = subprocess.Popen( - ffmpeg_cmd, - stdin=subprocess.PIPE, - stdout=subprocess.DEVNULL, - stderr=subprocess.DEVNULL, - bufsize=10**7, - ) +# def test_rendering_worker(queue, display_size, out_path, target_fps): +# """ +# Ultra-efficient video saver for TEST_MODE. +# Pipes raw BGR frames directly into an internal FFmpeg engine subshell. +# """ +# disp_w, disp_h = display_size - try: - while True: - item = queue.get() - if item is None: # Sentinel value to drain and close the process - break +# # Construct optimized MPEG-4 parameters to match main pipeline architecture +# ffmpeg_cmd = [ +# "ffmpeg", +# "-y", +# "-probesize", +# "32", +# "-analyzeduration", +# "0", +# "-f", +# "rawvideo", +# "-pix_fmt", +# "bgr24", +# "-s", +# f"{disp_w}x{disp_h}", +# "-r", +# str(int(target_fps)), +# "-i", +# "-", +# "-c:v", +# "libx264", +# "-crf", +# "23", +# # "-c:v", "mpeg4", # Or "libx264" if you prefer H.264 +# # "-qscale:v", "4", # Quality scale (use -crf 23 if using libx264) +# str(out_path), +# ] + +# # Spawn background daemon process +# proc = subprocess.Popen( +# ffmpeg_cmd, +# stdin=subprocess.PIPE, +# stdout=subprocess.DEVNULL, +# stderr=subprocess.DEVNULL, +# bufsize=10**7, +# ) - display_frame, frameNum, metadata_or_bbs, class_list = item - # display_frame = np.ascontiguousarray(display_frame) - scale_display_x = disp_w / 640 - scale_display_y = disp_h / 640 - - # --- Draw Detection Overlays --- - if isinstance(metadata_or_bbs, dict): - # Object Mode (YOLO Structs) - display_frame = get_metadata_overlay( - display_frame, - metadata_or_bbs, - class_list, - (scale_display_x, scale_display_y), - (disp_w, disp_h), - ) +# try: +# while True: +# item = queue.get() +# if item is None: # Sentinel value to drain and close the process +# break - elif metadata_or_bbs is not None: - # # Motion / Smart Filtering Overlay Path - display_frame = get_bb_overlay( - display_frame, - metadata_or_bbs, - (scale_display_x, scale_display_y), - (disp_w, disp_h), - ) +# display_frame, frameNum, metadata_or_bbs, class_list = item +# # display_frame = np.ascontiguousarray(display_frame) +# scale_display_x = disp_w / 640 +# scale_display_y = disp_h / 640 + +# # --- Draw Detection Overlays --- +# if isinstance(metadata_or_bbs, dict): +# # Object Mode (YOLO Structs) +# display_frame = get_metadata_overlay( +# display_frame, +# metadata_or_bbs, +# class_list, +# (scale_display_x, scale_display_y), +# (disp_w, disp_h), +# ) + +# elif metadata_or_bbs is not None: +# # # Motion / Smart Filtering Overlay Path +# display_frame = get_bb_overlay( +# display_frame, +# metadata_or_bbs, +# (scale_display_x, scale_display_y), +# (disp_w, disp_h), +# ) - # Pipe continuous raw contiguous memory block directly into kernel filesystem handles - proc.stdin.write(np.ascontiguousarray(display_frame).tobytes()) - # queue.task_done() +# # Pipe continuous raw contiguous memory block directly into kernel filesystem handles +# proc.stdin.write(np.ascontiguousarray(display_frame).tobytes()) +# # queue.task_done() - except Exception as e: - print(f"[TEST-WORKER-EXCEPTION] Video compilation error: {e}") - finally: - if proc.stdin: - proc.stdin.close() - proc.wait() +# except Exception as e: +# print(f"[TEST-WORKER-EXCEPTION] Video compilation error: {e}") +# finally: +# if proc.stdin: +# proc.stdin.close() +# proc.wait() class DeviceBaseHandler: @@ -2423,7 +1916,7 @@ def stop(self): self.status = "DONE" self._is_stopped = True print( - "[TEST HARNESS] Teardown complete. Releasing session cleanly.\n", + "[STOPPING] Teardown complete. Releasing session cleanly.\n", flush=True, ) @@ -3870,263 +3363,6 @@ def frame2output(self, device_frame, frame_num, metadata_or_bbs, class_list): traceback.print_exc() # return - def frame2outputv3(self, display_frame, frame_num, metadata=None, class_list=None): - """Processes and delivers operational live-mode matrices safely down to POSIX shared memory slots.""" - - # Ensure memory formats are fully detached from internal VRAM contexts - if hasattr(display_frame, "is_cuda") and display_frame.is_cuda: - display_frame = display_frame.cpu().numpy() - elif isinstance(display_frame, torch.Tensor): - display_frame = display_frame.detach().cpu().numpy() - - # 🔄 FIX: Invert colors from RGB to structural BGR layout to resolve the blue tint - try: - display_frame = cv2.cvtColor(display_frame, cv2.COLOR_RGB2BGR) - except Exception: - pass # Safety fallback guard if the tensor layout was already BGR format - - if hasattr(display_frame, "copy"): - clean_canvas = display_frame.copy() - else: - clean_canvas = np.ascontiguousarray(display_frame) - - if hasattr(self, "async_writer") and self.async_writer is not None: - self.async_writer.write_frame(clean_canvas, frame_num) - - def frame2outputv2( - self, - device_frame, - frameNum, - metadata_or_bbs, - class_list, - metrics, - ): - scale_display_x = self.disp_w / 640 - scale_display_y = self.disp_h / 640 - - if self.device_input == "cuda" and torch.is_tensor(device_frame): - # 2. Fast Inline VRAM Downscaling into our static memory slot - # Reshape to (Batch, Channel, Height, Width) seamlessly without duplicating data - gpu_tensor = device_frame[None, :].permute(0, 3, 1, 2).float() - - resized_tensor = torch.nn.functional.interpolate( - gpu_tensor, - size=(self.disp_h, self.disp_w), - mode="nearest", - ) - - # CONVERTS TO CPU EARLIER (WORKS but lowers fps) - # hwc_byte_tensor = resized_tensor.squeeze(0).permute(1, 2, 0).byte() - # cpu_tensor = hwc_byte_tensor.cpu() - # bgr_contiguous = cpu_tensor.contiguous() - - # Using copy_() avoids creating any runtime allocations or memory-stride drift. - self.static_gpu_byte_bchw.copy_(resized_tensor.byte()) - - # Safely reshape the pre-allocated, locked GPU memory layout back to standard HWC array topology. - # Since the underlying array layout is strictly contiguous, this permute is guaranteed - # to be zero-copy on the GPU and free from memory race stalls. - bgr_contiguous = self.static_gpu_byte_bchw.squeeze(0).permute(1, 2, 0) - - # 1. Grab the current free pinned slot tracking variables from your reader - d2h_idx = self.reader.d2h_selector - pinned_tensor_buf = self.reader.d2h_buffers[d2h_idx] - - # c_idx = self.canvas_selector - # current_canvas = self.static_host_canvases[c_idx] - - # host_tensor_view = torch.as_tensor(current_canvas, device="cpu") - - # 3. Non-blocking asynchronous PCIe DMA Download directly into our page-locked canvas - with torch.cuda.stream(self.reader.download_stream): - # pinned_tensor = torch.from_numpy(current_canvas).cuda() - pinned_tensor_buf.copy_(bgr_contiguous, non_blocking=True) - - # Synchronize only the side download stream layout channel - self.reader.download_stream.synchronize() - - cpu_360p_frame = self.reader.d2h_numpys[d2h_idx] - - # 5. Non-Blocking Push straight to your background AsyncVideoWriter thread pool - # We pass a direct .copy() slice so the hot loop can instantly reuse the pinned ring buffer - display_frame = np.array(cpu_360p_frame, copy=True, order="C") - - if display_frame is not None and display_frame.shape[-1] == 3: - display_frame = cv2.cvtColor(display_frame, cv2.COLOR_RGB2BGR) - - # --- Draw Detection Overlays --- - if isinstance(metadata_or_bbs, dict): - # Object Mode (YOLO Structs) - display_frame = get_metadata_overlay( - display_frame, - metadata_or_bbs, - class_list, - (scale_display_x, scale_display_y), - (self.disp_w, self.disp_h), - is_bgr=True, - ) - - elif metadata_or_bbs is not None: - # # Motion / Smart Filtering Overlay Path - display_frame = get_bb_overlay( - display_frame, - metadata_or_bbs, - (scale_display_x, scale_display_y), - (self.disp_w, self.disp_h), - ) - if hasattr(display_frame, "copy"): - clean_canvas = display_frame.copy() - else: - clean_canvas = np.ascontiguousarray(display_frame) - self.async_writer.write_frame(clean_canvas, frameNum) - # self.canvas_selector = 1 - self.canvas_selector - self.reader.d2h_selector = 1 - self.reader.d2h_selector - - else: - # Reusable baseline track for CPU execution mappings - display_frame = cv2.resize( - device_frame, - (self.disp_w, self.disp_h), - interpolation=cv2.INTER_NEAREST, - ) - # if metrics["bbs"] is not None: - # for box in metrics["bbs"]: - # cv2.rectangle(cpu_resized, (int(box[0]), int(box[1])), (int(box[2]), int(box[3])), (0, 255, 0), 2) - # --- Draw Detection Overlays --- - if isinstance(metadata_or_bbs, dict): - # Object Mode (YOLO Structs) - display_frame = get_metadata_overlay( - display_frame, - metadata_or_bbs, - class_list, - (scale_display_x, scale_display_y), - (self.disp_w, self.disp_h), - is_bgr=True, - ) - - elif metadata_or_bbs is not None: - # # Motion / Smart Filtering Overlay Path - display_frame = get_bb_overlay( - display_frame, - metadata_or_bbs, - (scale_display_x, scale_display_y), - (self.disp_w, self.disp_h), - ) - self.async_writer.write_frame(display_frame, frameNum) - - return - - def frame2outputv1( - self, - device_frame, - frameNum, - data_to_draw, - class_list, - ): - # scale_display_x = self.disp_w / 640 - # scale_display_y = self.disp_h / 640 - - if self.device_input == "cuda" and torch.is_tensor(device_frame): - # 2. Fast Inline VRAM Downscaling into our static memory slot - # Reshape to (Batch, Channel, Height, Width) seamlessly without duplicating data - gpu_tensor = device_frame[None, :].permute(0, 3, 1, 2).float() - - resized_tensor = torch.nn.functional.interpolate( - gpu_tensor, - size=(self.disp_h, self.disp_w), - mode="nearest", - ) - - # CONVERTS TO CPU EARLIER (WORKS but lowers fps) - # hwc_byte_tensor = resized_tensor.squeeze(0).permute(1, 2, 0).byte() - # cpu_tensor = hwc_byte_tensor.cpu() - # bgr_contiguous = cpu_tensor.contiguous() - - # Using copy_() avoids creating any runtime allocations or memory-stride drift. - self.static_gpu_byte_bchw.copy_(resized_tensor.byte()) - - # Safely reshape the pre-allocated, locked GPU memory layout back to standard HWC array topology. - # Since the underlying array layout is strictly contiguous, this permute is guaranteed - # to be zero-copy on the GPU and free from memory race stalls. - bgr_contiguous = self.static_gpu_byte_bchw.squeeze(0).permute(1, 2, 0) - - # 1. Grab the current free pinned slot tracking variables from your reader - d2h_idx = self.reader.d2h_selector - pinned_tensor_buf = self.reader.d2h_buffers[d2h_idx] - - # c_idx = self.canvas_selector - # current_canvas = self.static_host_canvases[c_idx] - - # host_tensor_view = torch.as_tensor(current_canvas, device="cpu") - - # 3. Non-blocking asynchronous PCIe DMA Download directly into our page-locked canvas - with torch.cuda.stream(self.reader.download_stream): - # pinned_tensor = torch.from_numpy(current_canvas).cuda() - pinned_tensor_buf.copy_(bgr_contiguous, non_blocking=True) - - # Synchronize only the side download stream layout channel - self.reader.download_stream.synchronize() - - cpu_360p_frame = self.reader.d2h_numpys[d2h_idx] - print( - f"[FASTAPI-TRACE A] Frame #{frameNum} downloaded from GPU. Shape: {cpu_360p_frame.shape if cpu_360p_frame is not None else 'NONE'}", - flush=True, - ) - # Explicitly update shared state indicators so main.py can map the buffer - self.ready_buffer_idx.value = d2h_idx - # self.shared_details["last_id"] = frameNum - - # 5. Non-Blocking Push straight to your background AsyncVideoWriter thread pool - # We pass a direct .copy() slice so the hot loop can instantly reuse the pinned ring buffer - display_frame = np.array(cpu_360p_frame, copy=True, order="C") - - if display_frame is not None and display_frame.shape[-1] == 3: - display_frame = cv2.cvtColor(display_frame, cv2.COLOR_RGB2BGR) - - self.reader.d2h_selector = 1 - self.reader.d2h_selector - - else: - display_frame = cv2.resize( - device_frame, - (self.disp_w, self.disp_h), - interpolation=cv2.INTER_NEAREST, - ) - # disp_frame = np.copy( - # tensor2opencv(cpu_resized, self.config.device_input, is_bgr=True) - # ) - - # PUSH FRAME UNCONDITIONALLY: Ensures the test encoder gets raw frame tokens - try: - if ( - hasattr(self, "render_queue") - and getattr(self, "render_queue", None) is not None - # and not self.render_queue.full() - ): - print( - f"[FASTAPI-TRACE B] Frame #{frameNum} pushing to render_queue. Current Q Size: {self.render_queue.qsize()}", - flush=True, - ) - self.render_queue.put_nowait( # put( put_nowait - ( - display_frame, - frameNum, - data_to_draw, - class_list, - ) - ) - print( - f"[FASTAPI-TRACE C] Frame #{frameNum} successfully enqueued into render_queue.", - flush=True, - ) - if hasattr(self, "signal_queue") and self.signal_queue is not None: - try: - # Non-blocking push to unstick main.py - self.signal_queue.put_nowait((True, frameNum)) - except queue.Full: - pass - except queue.Full: - pass - def pipeline_fn( self, device_frame, diff --git a/fastapi/include/utils.py b/fastapi/include/utils.py index f843766..a379a23 100644 --- a/fastapi/include/utils.py +++ b/fastapi/include/utils.py @@ -3,7 +3,6 @@ import os import queue import subprocess -import threading import time import traceback from dataclasses import dataclass @@ -274,264 +273,6 @@ def return_connection(self, conn): self.pool.put(conn) -class AsyncVideoWriter: - """Handles disk saving operations asynchronously on a background thread.""" - - def __init__(self, path, fourcc, fps, size): - self.writer = cv2.VideoWriter(path, fourcc, fps, size) - self.queue = queue.Queue() - self.running = True - self.thread = threading.Thread(target=self._write_loop, daemon=True) - self.thread.start() - - def _write_loop(self): - while self.running or not self.queue.empty(): - try: - frame = self.queue.get(timeout=0.05) - if frame is None: - break - self.writer.write(frame) - self.queue.task_done() - except queue.Empty: - continue - - def write_frame(self, frame): - self.queue.put(frame) - - def release(self): - self.running = False - self.thread.join() - self.writer.release() - - -# class AsyncDisplayWriterv1: -# """Handles disk saving operations asynchronously on a background thread.""" - -# def __init__(self, path, fourcc, fps, size): -# self.writer = cv2.VideoWriter(path, fourcc, fps, size) -# self.queue = queue.Queue() -# self.running = True -# self.thread = threading.Thread(target=self._write_loop, daemon=True) -# self.thread.start() - -# def _write_loop(self): -# while self.running or not self.queue.empty(): -# try: -# frame = self.queue.get(timeout=0.05) -# self.writer.write(frame) -# self.queue.task_done() -# except queue.Empty: -# continue - -# def write_frame(self, frame): -# self.queue.put(frame) - -# def release(self): -# self.running = False -# self.thread.join() -# self.writer.release() - - -class AsyncDisplayWriter: - """ - Ultra-efficient frame-delivery client for live web streaming. - Pipes annotated BGR numpy matrices directly into matching Linux - POSIX Shared Memory allocation slots to prevent thread context-switching. - """ - - def __init__(self, target_fps, display_size, quality=60): - self.target_fps = float(target_fps) - self.disp_w, self.disp_h = display_size - self.quality = int(quality) - - # Ingestion pipeline constructs - self.queue = queue.Queue(maxsize=10) - self.running = True - - # State indicators requested by the FastAPI handler endpoints - self.handler = None - self.thread = threading.Thread(target=self._write_loop, daemon=True) - self.thread.start() - - def set_handler_context(self, handler_instance): - """Binds the active handler resource structures to secure index barriers.""" - self.handler = handler_instance - - def _write_loop(self): - # encode_param = [int(cv2.IMWRITE_JPEG_QUALITY), self.quality] - while self.running or not self.queue.empty(): - try: - item = self.queue.get(timeout=0.05) - if item is None: - break - display_frame, frame_num = item - # self.writer.write(frame) - # Compress to highly packable, network-ready JPEG byte streams - # ret, jpeg_buf = cv2.imencode('.jpg', display_frame, encode_param) - # if not ret: - # self.queue.task_done() - # continue - if self.handler is None: # or not self.handler.active: - self.queue.task_done() - continue - - if frame_num > self.handler.shared_details["last_id"]: - frame_bytes = get_display_frame_in_bytes( - display_frame, - display_size=(self.disp_w, self.disp_h), - quality=self.quality, - return_bytes=True, - ) - if not frame_bytes: - self.queue.task_done() - continue - - # frame_bytes = jpeg_buf.tobytes() - frame_len = len(frame_bytes) - num_shms = len(self.handler.shms) - - # Locate alternative ring memory locations away from browser client read operations - forbidden_idx = [ - self.handler.ready_buffer_idx.value, - self.handler.reader_active_idx.value, - ] - available_idx = [ - i for i in range(num_shms) if i not in forbidden_idx - ] - - if not available_idx: - # Fallback to structural ring increments if locks collide - write_idx = (self.handler.ready_buffer_idx.value + 1) % num_shms - else: - write_idx = available_idx[0] - - # Direct zero-copy commit straight to volatile RAM mappings - shm_block = self.handler.shms[write_idx] - shm_block.buf[:frame_len] = memoryview(frame_bytes) - - # Update pipeline sync trackers across worker contexts - self.handler.shm_frame_lengths[write_idx] = frame_len - self.handler.ready_buffer_idx.value = write_idx - - # Assign atomic sequence token identifiers safely - self.handler.shared_details["last_id"] = frame_num - - # Fire threading synchronization barriers to release blocked generator loops - # self.handler.frame_ready_event.set() - if hasattr(self.handler, "loop") and self.handler.loop is not None: - self.handler.loop.call_soon_threadsafe( - self.handler.frame_ready_event.set - ) - else: - # Fallback guard if the frame context hasn't registered a loop hook yet - self.handler.frame_ready_event.set() - - self.queue.task_done() - except queue.Empty: - continue - except Exception as e: - print(f"[ASYNC-DISPLAY-ERROR] Silent pool worker drop: {e}") - traceback.print_exc() - continue - - def _write_loopv1(self): - """Background daemon consumer that compresses matrices directly to /dev/shm.""" - # Performance parameters to maintain strict BT.709 encoding constraints - encode_param = [int(cv2.IMWRITE_JPEG_QUALITY), self.quality] - - while self.running or not self.queue.empty(): - try: - item = self.queue.get(timeout=0.05) - if item is None: - break - - display_frame, frame_num = item - if self.handler is None or not self.handler.active: - self.queue.task_done() - continue - - # Ensure image sizes perfectly correspond with standard API expectations - if ( - display_frame.shape[1] != self.disp_w - or display_frame.shape[0] != self.disp_h - ): - display_frame = cv2.resize( - display_frame, - (self.disp_w, self.disp_h), - interpolation=cv2.INTER_NEAREST, - ) - - # Compress to highly packable, network-ready JPEG byte streams - ret, jpeg_buf = cv2.imencode(".jpg", display_frame, encode_param) - if not ret: - self.queue.task_done() - continue - - frame_bytes = jpeg_buf.tobytes() - frame_len = len(frame_bytes) - num_shms = len(self.handler.shms) - - # Locate alternative ring memory locations away from browser client read operations - forbidden_idx = [ - self.handler.ready_buffer_idx.value, - self.handler.reader_active_idx.value, - ] - available_idx = [i for i in range(num_shms) if i not in forbidden_idx] - - if not available_idx: - # Fallback to structural ring increments if locks collide - write_idx = (self.handler.ready_buffer_idx.value + 1) % num_shms - else: - write_idx = available_idx[0] - - # Direct zero-copy commit straight to volatile RAM mappings - shm_block = self.handler.shms[write_idx] - shm_block.buf[:frame_len] = frame_bytes - - # Update pipeline sync trackers across worker contexts - self.handler.shm_frame_lengths[write_idx] = frame_len - self.handler.ready_buffer_idx.value = write_idx - - # Assign atomic sequence token identifiers safely - self.handler.shared_details["last_id"] = frame_num - - # Fire threading synchronization barriers to release blocked generator loops - # self.handler.frame_ready_event.set() - if hasattr(self.handler, "loop") and self.handler.loop is not None: - self.handler.loop.call_soon_threadsafe( - self.handler.frame_ready_event.set - ) - else: - # Fallback guard if the frame context hasn't registered a loop hook yet - self.handler.frame_ready_event.set() - - self.queue.task_done() - except queue.Empty: - continue - except Exception as e: - print(f"[ASYNC-DISPLAY-ERROR] Failed streaming injection: {e}") - continue - - def write_frame(self, display_frame, frame_num): - """Thread-safe entry hook to stash processed canvas items into the workspace.""" - # if not self.active: - # return - # try: - # # Drop structural allocations under pressure if the worker falls behind - # self.queue.put_nowait((display_frame, frame_num)) - # except queue.Full: - # pass - self.queue.put((display_frame, frame_num)) - - def release(self): - """Terminates internal consumers gracefully to ensure process convergence.""" - # self.active = False - self.running = False - self.queue.put(None) - if self.thread.is_alive(): - self.thread.join(timeout=1.0) - - ERR_KEYWORDS = [ "timeout", "null search iterator", diff --git a/fastapi/tests/test_detections.py b/fastapi/tests/test_detections.py index 271a15a..eec1120 100644 --- a/fastapi/tests/test_detections.py +++ b/fastapi/tests/test_detections.py @@ -41,6 +41,7 @@ THRESHOLD_VALUE, ) from include.handlers import ( + AsyncVideoWriter, CPUStreamHandler, DeviceBaseHandler, GPUStreamHandler, @@ -105,34 +106,6 @@ def fps_comparison_chart(chart_path, results, fps_key="Pipeline FPS (Video frame print("Skipping chart generation: error occurred.") -class AsyncVideoWriter: - """Handles disk saving operations asynchronously on a background thread.""" - - def __init__(self, path, fourcc, fps, size): - self.writer = cv2.VideoWriter(path, fourcc, fps, size) - self.queue = queue.Queue() - self.running = True - self.thread = threading.Thread(target=self._write_loop, daemon=True) - self.thread.start() - - def _write_loop(self): - while self.running or not self.queue.empty(): - try: - frame = self.queue.get(timeout=0.05) - self.writer.write(frame) - self.queue.task_done() - except queue.Empty: - continue - - def write_frame(self, frame): - self.queue.put(frame) - - def release(self): - self.running = False - self.thread.join() - self.writer.release() - - class DummyProcess: def start(self): pass @@ -179,25 +152,27 @@ def setup_context(request): else: request.cls.name = "rtsp" request.cls.is_rtsp = True - # request.cls.test_duration_mins = float(os.getenv("TEST_DURATION_MINS", 0.25)) model_name = os.getenv("MODEL_NAME", MODEL_NAME_DEFAULT) request.cls.result_dir = ( test_dir / f"{current_test_filename}_results/{model_name}" / request.cls.name ) request.cls.result_dir.mkdir(parents=True, exist_ok=True) + + # Benchmark statistics request.cls.benchmarks = [] request.cls.csv_filename = ( - f"pipeline_benchmarks_{model_name}_{request.cls.name}.csv" + f"detections_benchmarks_{model_name}_{request.cls.name}.csv" ) request.cls.csv_path = request.cls.result_dir / request.cls.csv_filename request.cls.active = True request.cls.active_streams = {} + # RUN ALL PARAMETERIZED TESTS ---------------------------------------- yield - # Summarize Benchmarks + # FINAL CSV EXPORT -------------------------------------------------- if request.cls.benchmarks: # Filter and exclude rows that were interrupted or failed initialization due to an early pytest skip request.cls.benchmarks = [ @@ -221,6 +196,7 @@ def setup_context(request): row["Pipeline Speedup vs CPU"] = "Baseline (CPU)" keys = results[0].keys() + with open(str(request.cls.csv_path), "w", newline="") as f: dict_writer = csv.DictWriter(f, fieldnames=keys) dict_writer.writeheader() @@ -270,6 +246,11 @@ def each_test_setup(request): detection_type = request.node.callspec.params.get("detection_type") sf_enabled = request.node.callspec.params.get("sf_enabled") + if detection_type == "motion" and not sf_enabled: + pytest.skip( + "Pure YOLO mode is structurally invalid for detection_type 'motion'.\n" + ) + test_class_self._testMethodName = ( f"sf_{detection_type}_{device}" if sf_enabled @@ -277,12 +258,13 @@ def each_test_setup(request): ) # video_output_name = f"{test_class_self._testMethodName}_detections_output.mp4" - vid_dir = test_class_self.result_dir / "results" + vid_dir = test_class_self.result_dir / device vid_dir.mkdir(parents=True, exist_ok=True) # Handler.__init__ (remaining items) # 1. Re-initialize a fresh configuration object test_class_self.config = PipelineConfig( + SHARED_OUTPUT=str(test_class_self.result_dir), CUSTOM_MODEL_FLAG=os.getenv("CUSTOM_MODEL_FLAG", CUSTOM_MODEL_FLAG_DEFAULT), DEVICE=device.upper(), OMIT_DETECTIONS_FLAG=True, @@ -298,7 +280,7 @@ def each_test_setup(request): # test_video_output_path = os.path.join(str(vid_dir), video_output_name) os.environ["TEST_SUITE_RENDER_DIR"] = str(vid_dir) - test_class_self.config.SHARED_OUTPUT = str(test_class_self.result_dir) + # test_class_self.config.SHARED_OUTPUT = str(test_class_self.result_dir) # test_class_self.disp_w, test_class_self.disp_h = (640, 360) test_class_self.disp_w, test_class_self.disp_h = ( test_class_self.config.DISPLAY_FRAME_SIZE @@ -598,10 +580,10 @@ class TestSmartFilteringDetections: @pytest.mark.parametrize("detection_type", ["motion", "object"]) def test_detections(self, device, sf_enabled, detection_type): """Unified test runner for all configurations.""" - if detection_type == "motion" and not sf_enabled: - pytest.skip( - "Pure YOLO mode is structurally invalid for detection_type 'motion'." - ) + # if detection_type == "motion" and not sf_enabled: + # pytest.skip( + # "Pure YOLO mode is structurally invalid for detection_type 'motion'.\n" + # ) self.duration_target = 30 @@ -650,15 +632,15 @@ def setup_threads(self): short_name = "rtsp" else: short_name = Path(self.source).stem - video_output_name = f"{self._testMethodName}_{short_name}_{self.device}.mp4" + video_output_name = f"{self._testMethodName}_{short_name}.mp4" out_path = os.path.join(test_dir, video_output_name) self.output_path = ( out_path # f"{self.config.SHARED_OUTPUT}/{short_name}_{self.device}.mp4" ) - log_to_logger( - f"[TEST MODE] Detection results saved to: {out_path}", level="info" - ) + # log_to_logger( + # f"[TEST MODE] Detection results saved to: {out_path}", level="info" + # ) # ===================================================================== # DYNAMIC THREAD TARGET REDIRECTION @@ -692,6 +674,9 @@ def setup_threads(self): (self.disp_w, self.disp_h), ) # self.async_writer = None + log_to_logger( + f"[TEST MODE] Detection results saved to: {self.output_path}", level="info" + ) def start(self): """ diff --git a/fastapi/tests/test_model.py b/fastapi/tests/test_model.py index efd8428..ffdc3bd 100644 --- a/fastapi/tests/test_model.py +++ b/fastapi/tests/test_model.py @@ -1,10 +1,12 @@ import argparse import csv import gc +import inspect import logging import os import sys import time +import types from pathlib import Path import pytest @@ -18,7 +20,11 @@ MODEL_NAME_DEFAULT, THRESHOLD_VALUE, ) -from include.handlers import DeviceBaseHandler +from include.handlers import ( + CPUStreamHandler, + DeviceBaseHandler, + GPUStreamHandler, +) from include.models import get_model from include.utils import PipelineConfig @@ -47,37 +53,42 @@ def setup_context(request): main_path = test_dir.parent video_dir = main_path / "inputs" - VIDEO_FILENAME = os.getenv("VIDEO_FILENAME", "anduril_swarm_8K.mp4") - if video_dir.exists(): - request.cls.video_path = video_dir / VIDEO_FILENAME + request.cls._shared_model = None + request.cls._shared_model_path = None + request.cls._shared_model_device = None + request.cls._shared_model_sf_enabled = None + + request.cls.source = os.getenv("VIDEO_FILENAME", "anduril_swarm_8K.mp4") + is_rtsp = "rtsp://" in request.cls.source + if not is_rtsp: + VIDEO_FILENAME = request.cls.source + if video_dir.exists(): + vid_source = video_dir / VIDEO_FILENAME + else: + video_dir = Path("/watch_dir") + vid_source = video_dir / VIDEO_FILENAME + + assert vid_source.exists() + request.cls.source = str(vid_source) + request.cls.name = vid_source.stem + request.cls.is_rtsp = False else: - video_dir = Path("/watch_dir") - request.cls.video_path = video_dir / VIDEO_FILENAME + request.cls.name = "rtsp" + request.cls.is_rtsp = True # Add any shared state to the class model_name = os.getenv("MODEL_NAME", MODEL_NAME_DEFAULT) - request.cls.result_dir = ( - test_dir / f"{current_test_filename}_results/{request.cls.video_path.stem}" - ) + request.cls.result_dir = test_dir / f"{current_test_filename}_results/{model_name}" request.cls.result_dir.mkdir(parents=True, exist_ok=True) # Benchmark statistics request.cls.benchmarks = [] - request.cls.csv_filename = ( - f"model_benchmarks_{model_name}_{request.cls.video_path.stem}.csv" - ) + request.cls.csv_filename = f"model_benchmarks_{request.cls.name}.csv" request.cls.csv_path = request.cls.result_dir / request.cls.csv_filename # Initialize class vars - request.cls.name = request.cls.video_path.stem - request.cls.source = str(request.cls.video_path) - request.cls.is_rtsp = str(request.cls.source).startswith("rtsp:/") request.cls.active = True request.cls.active_streams = {} - request.cls._shared_model = None - request.cls._shared_model_path = None - request.cls._shared_model_device = None - request.cls._shared_model_sf_enabled = None # RUN ALL PARAMETERIZED TESTS ---------------------------------------- yield @@ -98,8 +109,6 @@ def setup_context(request): @pytest.fixture(autouse=True) def each_test_setup(request): test_class_self = request.instance - - # setUp LOGIC -------------------------------------------------- if torch.cuda.is_available(): torch.cuda.synchronize() @@ -107,17 +116,17 @@ def each_test_setup(request): os.environ["DEVICE"] = device detection_type = "object" # request.node.callspec.params.get("detection_type") sf_enabled = False # request.node.callspec.params.get("sf_enabled") + model_name = os.getenv("MODEL_NAME", MODEL_NAME_DEFAULT) test_class_self._testMethodName = f"{model_name}_{detection_type}_{device}" - render_dir = test_class_self.result_dir / f"{test_class_self._testMethodName}" + render_dir = test_class_self.result_dir / f"{device}" render_dir.mkdir(exist_ok=True) + test_class_self.config = PipelineConfig( # GENERAL SHARED_OUTPUT=render_dir, # os.getenv("SHARED_OUTPUT",SHARED_OUTPUT_DEFAULT), - CUSTOM_MODEL_FLAG=os.getenv( - "CUSTOM_MODEL_FLAG", CUSTOM_MODEL_FLAG_DEFAULT - ), # True, + CUSTOM_MODEL_FLAG=os.getenv("CUSTOM_MODEL_FLAG", CUSTOM_MODEL_FLAG_DEFAULT), DEVICE=device.upper(), OMIT_DETECTIONS_FLAG=True, TEST_MODE=False, @@ -146,9 +155,47 @@ def each_test_setup(request): test_class_self.config.MODEL_W, ] + # Resolve concrete handler class type + HandlerClass = GPUStreamHandler if device == "gpu" else CPUStreamHandler + # HandlerClass.pipeline_fn = test_class_self.__class__.pipeline_fn + + # Dynamically re-bind backend methods to this execution instance + handler_classes = [HandlerClass, DeviceBaseHandler] + all_method_names = set() + + for cls in handler_classes: + for name, attr in inspect.getmembers(cls, predicate=inspect.isfunction): + all_method_names.add(name) + + for method_name in all_method_names: + source_obj = ( + HandlerClass if hasattr(HandlerClass, method_name) else DeviceBaseHandler + ) + if hasattr(source_obj, method_name): + raw_func = getattr(source_obj, method_name) + if ( + not hasattr(test_class_self.__class__, method_name) + or method_name == "pipeline_fn" + ): + setattr( + test_class_self, + method_name, + types.MethodType(raw_func, test_class_self), + ) + + # 3. FORCE NATIVE PIPELINE PROVISIONING test_class_self.setup_reader( test_class_self.config.TARGET_FPS, test_class_self.config.CLIP_DURATION ) + test_class_self.initialize_variables() + test_class_self.setup_model(None) + test_class_self.prepare_pipeline() + + # test_class_self.run _realtime_inference = types.MethodType( + # test_class_self.__class__.run_realtime_inference, test_class_self + # ) + + test_class_self.setup_threads() # RUN PARAMETERIZED TEST ---------------------------------------- yield @@ -158,6 +205,8 @@ def each_test_setup(request): f"\n--- [TearDown] Memory Before Cleanup ({test_class_self._testMethodName}) ---" ) + # test_class_self.stop() + # Nullify the model reference to trigger automatic cleanup if hasattr(test_class_self, "model") and test_class_self.model is not None: # Check if it's an Ultralytics model with a predictor @@ -171,9 +220,9 @@ def each_test_setup(request): test_class_self.model = None # Clear the singleton references to force a reload - TestSmartFilteringDetections._shared_model = None - TestSmartFilteringDetections._shared_model_path = None - TestSmartFilteringDetections._shared_model_device = None + TestModelDetections._shared_model = None + TestModelDetections._shared_model_path = None + TestModelDetections._shared_model_device = None # Force Python to run destructors NOW while streams are still alive gc.collect() @@ -185,7 +234,7 @@ def each_test_setup(request): @pytest.mark.usefixtures("setup_context") -class TestSmartFilteringDetections: +class TestModelDetections: # SETUP -------------------------------------------- @pytest.mark.parametrize( @@ -195,7 +244,7 @@ class TestSmartFilteringDetections: ("gpu"), ], ) - def test_pipeline(self, device): + def test_model(self, device): """Unified test runner for all configurations.""" # Run the actual model loader @@ -205,15 +254,17 @@ def test_pipeline(self, device): results = self.model.predict( source=self.source, + imgsz=(self.frame_height, self.frame_width), + batch=1, + device=self.config.device_input, + stream=True, conf=self.config.DETECTION_THRESHOLD, iou=self.config.IOU_THRESHOLD, show=False, - imgsz=(self.frame_height, self.frame_width), save=True, project=str(self.config.SHARED_OUTPUT), - name=f"pred_{self._testMethodName}_output_video", + name="predict_results", exist_ok=True, # overwrite if folder exists - stream=True, data={"names": {i: name for i, name in enumerate(self.label_source)}}, ) @@ -250,12 +301,12 @@ def get_model_by_device(self, device, sf_enabled=False): sf_enabled = False if ( - TestSmartFilteringDetections._shared_model is not None - and TestSmartFilteringDetections._shared_model_device == device - and TestSmartFilteringDetections._shared_model_sf_enabled == sf_enabled + TestModelDetections._shared_model is not None + and TestModelDetections._shared_model_device == device + and TestModelDetections._shared_model_sf_enabled == sf_enabled ): - self.model = TestSmartFilteringDetections._shared_model - self.model_path = TestSmartFilteringDetections._shared_model_path + self.model = TestModelDetections._shared_model + self.model_path = TestModelDetections._shared_model_path return run_platform_name = "engine" if "cuda" in self.device_input else "openvino" @@ -266,8 +317,8 @@ def get_model_by_device(self, device, sf_enabled=False): dir_path = f"/home/resources/models/ultralytics/{self.config.MODEL_NAME}/{self.config.MODEL_PRECISION}" ( - TestSmartFilteringDetections._shared_model, - TestSmartFilteringDetections._shared_model_path, + TestModelDetections._shared_model, + TestModelDetections._shared_model_path, self.label_source, ) = get_model( Path(dir_path), @@ -281,11 +332,11 @@ def get_model_by_device(self, device, sf_enabled=False): model_w=self.resize_w, ) - TestSmartFilteringDetections._shared_model_device = device - TestSmartFilteringDetections._shared_model_sf_enabled = sf_enabled - self.model = TestSmartFilteringDetections._shared_model + TestModelDetections._shared_model_device = device + TestModelDetections._shared_model_sf_enabled = sf_enabled + self.model = TestModelDetections._shared_model # self.model.half() - self.model_path = TestSmartFilteringDetections._shared_model_path + self.model_path = TestModelDetections._shared_model_path W, H = self.resize_w, self.resize_h if not sf_enabled: @@ -317,7 +368,7 @@ def _finalize_benchmarks( "Detection Type": self.config.DETECTION_TYPE, "Device": self.device, "Smart Filtering": "Enabled" if self.config.sf_enabled else "Disabled", - "Video": self.video_path.name, + "Video": self.name, "Video Duration (s)": f"{duration_s:.4f}", "Video FPS": f"{self.input_fps:.2f}", "Pipeline Latency (s)": f"{real_latency_s:.2f}", @@ -337,12 +388,272 @@ def _finalize_benchmarks( f"\n[{self._testMethodName}] Model Est. FPS: {model_fps:.2f} ({n_frames} frames)" ) - -# INHERIT METHODS FROM HANDLERS ----------------------------------------------------------------- -TestSmartFilteringDetections.setup_reader = DeviceBaseHandler.setup_reader -TestSmartFilteringDetections.get_frameWH = DeviceBaseHandler.get_frameWH -TestSmartFilteringDetections.run_model = DeviceBaseHandler.run_model -TestSmartFilteringDetections.model_warmup = DeviceBaseHandler.model_warmup + def setup_threads(self): + """Overrides handlers.py to bind threads dynamically to the test instance.""" + pass + # self.setup_shared_memory() # Natively sets up Manager dictionary and buffers + + # # Executor for Async YOLO tasks and FFmpeg re-encoding + # self.executor = ThreadPoolExecutor(max_workers=self.config.MAX_WORKERS) + # # self.clip_executor = ThreadPoolExecutor(max_workers=self.config.MAX_WORKERS) + + # print( + # f"sf_enabled: {self.config.sf_enabled}\tTEST_MODE: {self.config.TEST_MODE}", + # flush=True, + # ) + + # # Open up looking-ahead buffer horizons to eliminate 8K queue backpressure stalls + # self.signal_queue = mp.Queue(maxsize=128) # 10) + # self.render_queue = mp.Queue(maxsize=256) # 64) + + # test_dir = os.getenv( + # "TEST_SUITE_RENDER_DIR", str(Path(self.config.SHARED_OUTPUT)) + # ) + # os.makedirs(test_dir, exist_ok=True) + + # if self.source.startswith("rtsp"): + # short_name = "rtsp" + # else: + # short_name = Path(self.source).stem + # video_output_name = f"{self._testMethodName}_{short_name}_{self.device}.mp4" + # out_path = os.path.join(test_dir, video_output_name) + # self.output_path = ( + # out_path # f"{self.config.SHARED_OUTPUT}/{short_name}_{self.device}.mp4" + # ) + + # log_to_logger( + # f"[TEST MODE] Detection results saved to: {out_path}", level="info" + # ) + + # # ===================================================================== + # # DYNAMIC THREAD TARGET REDIRECTION + # # ===================================================================== + # # Lambda forces the background processing thread to evaluate your custom staging loop natively + # self.process_thread = threading.Thread( + # target=lambda: self.run_realtime_inference( + # sf_enabled=self.config.sf_enabled + # ), + # daemon=True, + # ) + # # self.render_proc = mp.Process( # threading.Thread( + # # target=rendering_worker, + # # args=( + # # self.render_queue, + # # (self.disp_w, self.disp_h), + # # self.output_path, + # # self.target_fps, + # # ), + # # daemon=True, + # # ) + # # self.render_proc = threading.Thread(target=lambda: None, daemon=True) + # # self.display_proc = threading.Thread(target=lambda: None, daemon=True) + # self.render_proc = DummyProcess() + # self.display_proc = DummyProcess() + + # self.async_writer = AsyncVideoWriter( + # self.output_path, + # cv2.VideoWriter_fourcc(*"avc1"), + # float(self.target_fps), + # (self.disp_w, self.disp_h), + # ) + # # self.async_writer = None + + def start(self): + """ + Starts the decoupled ingestion and inference threads in the correct order. + """ + # PRE-SYNC: Ensure GPU is idle before timing starts + if self.device_input == "cuda": + if torch.cuda.is_available(): + torch.cuda.synchronize() + + # Start the hardware-decoupled reader first + self.reader.start() + + # if self.config.ENABLE_QUERYING: + # self._initialize_writer() + + # # Small delay to allow the reader's deque to populate + # time.sleep(0.1) + + # # Start the producer and consumer threads + # if hasattr(self, "process_thread") and not self.process_thread.is_alive(): + # self.process_thread.start() + + # if not self.config.DISABLE_DETECTION: + # self.render_proc.start() + + # self.display_proc.start() + + # if ( + # self.config.ENABLE_QUERYING + # and not self.config.TEST_MODE + # and not self.metadata_thread.is_alive() + # ): + # self.metadata_thread.start() + + # if self.config.ENABLE_QUERYING and not self.writer_thread.is_alive(): + # self.writer_thread.start() + + return self + + def stop(self): + """Overrides handlers.py to flush thread objects safely without deadlocking.""" + with self._stop_lock: + if self._is_stopped: + return + + print( + f"\n[TEST HARNESS] Initiating rapid thread flush for {self.name}", + flush=True, + ) + self.active = False + + # 1. Rapidly clear the async video writer thread queue first + # if hasattr(self, "async_writer") and self.async_writer is not None: + # try: + # self.async_writer.release() + # except Exception: + # pass + + # ===================================================================== + # DECUPLED MULTI-PROCESS TEARDOWN LIFECYCLE SEQUENCE + # ===================================================================== + # 1. FIRST: Drain and synchronize your thread pool tasks so EVERY frame drops into the IPC queue + if hasattr(self, "display_pool") and self.display_pool is not None: + try: + if hasattr(self.display_pool, "_work_queue"): + backlog = self.display_pool._work_queue.qsize() + if backlog > 0: + print( + f"\n\033[94m[STAGE 1/4] Synchronizing display pool threads. Draining {backlog} background tasks...\033[0m", + flush=True, + ) + backlog_s = time.perf_counter() + while ( + self.display_pool._work_queue.qsize() > 0 + or len(self.reorder_staging_buffer) > 0 + ): + # Yield a brief slice to let worker threads complete downscaling + time.sleep(0.01) + backlog_e = time.perf_counter() - backlog_s + print(f"\t\033[94mTook {backlog_e} secs\033[0m", flush=True) + print( + "\033[92m[SUCCESS] All background image transformations completed cleanly.\033[0m", + flush=True, + ) + self.display_pool.shutdown(wait=True) + except Exception as e: + print( + f"[TEARDOWN ERROR] Thread pool synchronization failed: {e}", + flush=True, + ) + setattr(self, "display_pool", None) + + # 1. FIRST: Instantly dispatch the shutdown token so the worker process knows to flush entries + if hasattr(self, "render_queue") and self.render_queue is not None: + try: + print( + f"\n\033[94m[STAGE 1/3] Dispatching shutdown sentinel (None) to rendering process worker (Backlog: {self.render_queue.qsize()} frames)...\033[0m", + flush=True, + ) + # Delivering the poison pill immediately tells FFmpeg to drain remaining blocks sequentially + self.render_queue.put(None, timeout=2.0) + except Exception as queue_err: + print( + f"\033[91m[TEARDOWN ERROR] Failed staging shutdown token: {queue_err}\033[0m", + flush=True, + ) + + # 2. SECOND: Allow the background multiprocessing queue to empty outstanding items naturally + if hasattr(self, "render_queue") and self.render_queue is not None: + try: + print( + "\n\033[94m[STAGE 2/3] Finalizing file output. Draining remaining frames from IPC memory lane...\033[0m", + flush=True, + ) + t_drain = time.perf_counter() + # Wait up to 15 seconds for the worker process to pull every remaining matrix out of the pipe + while ( + not self.render_queue.empty() + and (time.perf_counter() - t_drain) < 15.0 + ): + time.sleep( + 0.01 + ) # Micro-yield grants immediate execution priority to the background process core + except Exception: + pass + + # 3. THIRD: Block the main thread safely and allow the detached process to finish disk I/O operations + if hasattr(self, "render_proc") and self.render_proc is not None: + try: + join_duration = 0.0 + if self.render_proc.is_alive(): + print( + "\033[94m[STAGE 2/2] Main thread blocking. Synchronizing hard drive file headers...\033[0m", + flush=True, + ) + t_join_start = time.perf_counter() + self.render_proc.join( + timeout=15.0 + ) # Safe timeout lets video containers finalize cleanly + join_duration = time.perf_counter() - t_join_start + else: + print( + "\033[94m[STAGE 2/2] Main thread clear...\033[0m", + flush=True, + ) + + if self.render_proc.is_alive(): + print( + "\n\033[91m[CRITICAL STALL] Render worker process hung on disk write! Forcing termination...\033[0m", + flush=True, + ) + self.render_proc.terminate() + self.render_proc.join() + else: + print( + f"\033[92m[FINAL] Video compilation finished cleanly! Hard drive commit took {join_duration:.2f} seconds.\033[0m", + flush=True, + ) + + expected_disk_path = Path(self.output_path) + if expected_disk_path.exists(): + size_mb = expected_disk_path.stat().st_size / (1024 * 1024) + print( + f"\033[92m[DISK VERIFIED] Destination asset compiled: {expected_disk_path.name} ({size_mb:.2f} MB)\033[0m\n", + flush=True, + ) + self.render_proc.close() + except Exception as proc_err: + print( + f"\033[91m[TEARDOWN ERROR] Failed closing background process container: {proc_err}\033[0m", + flush=True, + ) + setattr(self, "render_proc", None) + + # 4. FOURTH: Clean up remaining pipeline executors and queues safely + if hasattr(self, "render_queue") and self.render_queue is not None: + try: + self.render_queue.close() + self.render_queue.cancel_join_thread() + except Exception: + pass + setattr(self, "render_queue", None) + + if hasattr(self, "executor") and self.executor is not None: + try: + self.executor.shutdown(wait=True) + except Exception: + pass + setattr(self, "executor", None) + + self.status = "DONE" + self._is_stopped = True + print( + "[TEST HARNESS] Teardown complete. Releasing session cleanly.\n", + flush=True, + ) if __name__ == "__main__": diff --git a/fastapi/tests/test_pipeline.py b/fastapi/tests/test_pipeline.py index 1735e4c..32ad892 100644 --- a/fastapi/tests/test_pipeline.py +++ b/fastapi/tests/test_pipeline.py @@ -83,15 +83,16 @@ def setup_context(request): request.cls.name = "rtsp" request.cls.test_duration_mins = float(os.getenv("TEST_DURATION_MINS", 1.0)) - request.cls.result_dir = test_dir / f"{current_test_filename}_results" + model_name = os.getenv("MODEL_NAME", MODEL_NAME_DEFAULT) + request.cls.result_dir = test_dir / f"{current_test_filename}_results" / model_name request.cls.result_dir.mkdir(parents=True, exist_ok=True) request.cls.benchmarks = [] if is_rtsp: - request.cls.csv_filename = "reader_perf_results_rtsp.csv" + request.cls.csv_filename = "pipeline_benchmarks_rtsp.csv" else: vid_shortname = Path(request.cls.source).stem - request.cls.csv_filename = f"reader_perf_results_{vid_shortname}.csv" + request.cls.csv_filename = f"pipeline_benchmarks_{vid_shortname}.csv" request.cls.csv_path = request.cls.result_dir / request.cls.csv_filename yield @@ -259,9 +260,9 @@ def stream_worker( if out_dir: if "Scenario_4_" in test_name: - result_dir = out_dir / "results" - result_dir.mkdir(parents=True, exist_ok=True) - os.environ["TEST_SUITE_RENDER_DIR"] = str(result_dir) + # result_dir = out_dir / "results" + # result_dir.mkdir(parents=True, exist_ok=True) + os.environ["TEST_SUITE_RENDER_DIR"] = str(out_dir) config.SHARED_OUTPUT = str(out_dir) import vdms @@ -278,6 +279,8 @@ def mock_connect(self, host, port): else: HandlerClass = CPUStreamHandler + print("\t[STREAM_WORKER] Starting ...") + last_sample = time.perf_counter() handler = None # Explicit initializing tracking state pointer 🚀 @@ -450,7 +453,8 @@ def mock_connect(self, host, port): # Absolute kill switch safely reclaims orphaned third-party threads # at the kernel level without crashing the parent pytest framework time.sleep(0.1) - os._exit(0) + # os._exit(0) + print("\t[STREAM_WORKER] Processing complete. Exiting...") @pytest.mark.usefixtures("setup_context") @@ -489,7 +493,9 @@ def test_scenario_1_invalid_rtsp(self, device): ), ) worker_p.start() - worker_p.join(timeout=2.0) + print("[SCENARIO 1] Started processing ...") + worker_p.join() # timeout=2.0) + print(f"[SCENARIO 1] Stopped cleanly with exit code: {worker_p.exitcode}") if worker_p.is_alive(): worker_p.terminate() @@ -541,7 +547,9 @@ def test_scenario_2_longevity_throughput(self, device): ), ) worker_p.start() + print("[SCENARIO 2] Started processing ...") worker_p.join() + print(f"[SCENARIO 2] Stopped cleanly with exit code: {worker_p.exitcode}") if worker_p.is_alive(): worker_p.terminate() @@ -596,7 +604,9 @@ def test_scenario_3_video_clipper(self, device): ), ) worker_p.start() + print("[SCENARIO 3] Started processing ...") worker_p.join() + print(f"[SCENARIO 3] Stopped cleanly with exit code: {worker_p.exitcode}") if worker_p.is_alive(): worker_p.terminate() @@ -660,7 +670,9 @@ def test_scenario_4_detection_and_clipper(self, device, sf_enabled, detection_ty ), ) worker_p.start() + print("[SCENARIO 4] Started processing ...") worker_p.join() + print(f"[SCENARIO 4] Stopped cleanly with exit code: {worker_p.exitcode}") if worker_p.is_alive(): worker_p.terminate() @@ -733,14 +745,22 @@ def get_pytest_filter_expression(args, sorted_scenarios): clause += f" and {args.detection_type}" applied_subs.append(f"type={args.detection_type}") - sub_msg = ( - f" with sub-filters: {', '.join(applied_subs)}" if applied_subs else "" - ) - print(f" ⚙️ Scenario {num}: Active compilation{sub_msg}") + if applied_subs: + applied_subs_str = ", ".join(applied_subs) + sub_msg = f" with sub-filters: {applied_subs_str}" + print(f" ⚙️ Scenario {num}: Active compilation{sub_msg}") + else: + sub_msg = ( + f" with sub-filters: {', '.join(applied_subs)}" + if applied_subs + else "" + ) + print(f" 🔹 Scenario {num}: Standard routing (ignoring sub-filters)") scenario_clauses.append(f"({clause})") # Safely join scenarios together with 'or' so they can execute side-by-side - filter_expression = f"test_scenario_ and ({' or '.join(scenario_clauses)})" + scenario_clauses_str = " or ".join(scenario_clauses) + filter_expression = f"test_scenario_ and ({scenario_clauses_str})" # Target hardware context selection filter applies globally across all test cases if args.device.lower() != "all": diff --git a/fastapi/tests/test_readers.py b/fastapi/tests/test_readers.py index 51a13c0..6730162 100644 --- a/fastapi/tests/test_readers.py +++ b/fastapi/tests/test_readers.py @@ -41,6 +41,7 @@ THRESHOLD_VALUE, ) from include.handlers import ( + AsyncVideoWriter, CPUStreamHandler, DeviceBaseHandler, GPUStreamHandler, @@ -103,34 +104,6 @@ def fps_comparison_chart(chart_path, results, fps_key="Pipeline FPS (Video frame print("Skipping chart generation: error occurred.") -class AsyncVideoWriter: - """Handles disk saving operations asynchronously on a background thread.""" - - def __init__(self, path, fourcc, fps, size): - self.writer = cv2.VideoWriter(path, fourcc, fps, size) - self.queue = queue.Queue() - self.running = True - self.thread = threading.Thread(target=self._write_loop, daemon=True) - self.thread.start() - - def _write_loop(self): - while self.running or not self.queue.empty(): - try: - frame = self.queue.get(timeout=0.05) - self.writer.write(frame) - self.queue.task_done() - except queue.Empty: - continue - - def write_frame(self, frame): - self.queue.put(frame) - - def release(self): - self.running = False - self.thread.join() - self.writer.release() - - class DummyProcess: def start(self): pass @@ -185,7 +158,7 @@ def setup_context(request): ) request.cls.result_dir.mkdir(parents=True, exist_ok=True) request.cls.benchmarks = [] - request.cls.csv_filename = f"pipeline_benchmarks_{request.cls.name}.csv" + request.cls.csv_filename = f"reader_benchmarks_{request.cls.name}.csv" request.cls.csv_path = request.cls.result_dir / request.cls.csv_filename request.cls.active = True @@ -257,7 +230,7 @@ def each_test_setup(request): test_class_self._testMethodName = f"{device.upper()}Reader" # video_output_name = f"{test_class_self._testMethodName}_detections_output.mp4" - vid_dir = test_class_self.result_dir / "results" + vid_dir = test_class_self.result_dir / device vid_dir.mkdir(parents=True, exist_ok=True) # Handler.__init__ (remaining items) @@ -746,7 +719,7 @@ def setup_threads(self): short_name = "rtsp" else: short_name = Path(self.source).stem - video_output_name = f"{self._testMethodName}_{short_name}_{self.device}.mp4" + video_output_name = f"{self._testMethodName}_{short_name}.mp4" out_path = os.path.join(test_dir, video_output_name) self.output_path = ( out_path # f"{self.config.SHARED_OUTPUT}/{short_name}_{self.device}.mp4" From e656a9b1d1e3125b48cfc09601187bad2f2288ba Mon Sep 17 00:00:00 2001 From: "Lacewell, Chaunte W" Date: Mon, 31 Aug 2026 02:40:56 -0700 Subject: [PATCH 07/19] Code updates for AUG demo; Includes updated tests Signed-off-by: Lacewell, Chaunte W --- .codespell-ignore | 16 + .devcontainer/Dockerfile | 84 +- .devcontainer/devcontainer.json | 42 +- .gitignore | 4 +- .pre-commit-config.yaml | 26 +- .vscode/extensions.json | 9 + .vscode/settings.json | 26 + README.md | 5 + doc/DATASETS.md | 25 + fastapi/.vscode/launch.json | 68 +- fastapi/.vscode/settings.json | 7 + fastapi/entrypoint.sh | 4 + fastapi/include/__init__.py | 78 + fastapi/include/default_configs.py | 15 +- fastapi/include/detectors.py | 4362 ++++++++++++++++ fastapi/include/handlers.py | 7713 +++++++++++++--------------- fastapi/include/models.py | 6 +- fastapi/include/readers.py | 1339 ++++- fastapi/include/utils.py | 2275 +++++++- fastapi/main.py | 179 +- fastapi/nginx.conf | 2 +- fastapi/templates/index.html | 6 +- fastapi/tests/base_test.py | 3442 +++++++++++++ fastapi/tests/metrics.py | 258 + fastapi/tests/test_detections.py | 2341 ++------- fastapi/tests/test_eval.py | 812 +++ fastapi/tests/test_model.py | 1088 ++-- fastapi/tests/test_pipeline.py | 553 +- fastapi/tests/test_readers.py | 2406 ++------- 29 files changed, 18044 insertions(+), 9147 deletions(-) create mode 100644 .codespell-ignore create mode 100644 .vscode/extensions.json create mode 100644 .vscode/settings.json create mode 100644 doc/DATASETS.md create mode 100644 fastapi/.vscode/settings.json create mode 100644 fastapi/include/__init__.py create mode 100644 fastapi/include/detectors.py create mode 100644 fastapi/tests/base_test.py create mode 100644 fastapi/tests/metrics.py create mode 100644 fastapi/tests/test_eval.py diff --git a/.codespell-ignore b/.codespell-ignore new file mode 100644 index 0000000..02a0a85 --- /dev/null +++ b/.codespell-ignore @@ -0,0 +1,16 @@ +anduril +bkgd +codespell +cuda +detectshadows +esbenp +fastapi +finetune +imgs +imgsz +lanczos +rstp +tensorrt +varthreshold +venv +yolov diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index fe197ed..b1503fb 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -42,13 +42,15 @@ RUN apt-get update && \ gfortran && \ # Install necessary CUDA packages curl -fsSL https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb -o /tmp/cuda-keyring.deb && \ - dpkg -i /tmp/cuda-keyring.deb && rm /tmp/cuda-keyring.deb && \ - apt-get update && \ + dpkg -i /tmp/cuda-keyring.deb && rm /tmp/cuda-keyring.deb + +ARG CUDA_MAJOR_VERSION=12 +ARG CUDA_MINOR_VERSION=8 + +RUN apt-get update && \ apt-get install -y -q --no-install-recommends \ - cuda-toolkit-12-4 \ - libcudnn9-dev-cuda-12 \ - libnpp-dev-12-4 \ - && \ + cuda-toolkit-${CUDA_MAJOR_VERSION}-${CUDA_MINOR_VERSION} \ + libcudnn9-dev-cuda-${CUDA_MAJOR_VERSION} && \ rm -rf /var/lib/apt/lists/* && apt-get clean RUN python3 -m venv ${VIRTUAL_ENV} && \ @@ -58,6 +60,10 @@ RUN python3 -m venv ${VIRTUAL_ENV} && \ "torchvision==0.25.0" \ "numpy==1.26.4" +# Ensure paths capture the version dynamically +ENV PATH="/usr/local/cuda/bin:${PATH}" +ENV LD_LIBRARY_PATH="/usr/local/cuda/lib64:${LD_LIBRARY_PATH}" + # OPENCV W/ CUDA SUPPORT ENV PYTHON_VERSION=3.10 ENV OPENCV_VERSION="4.11.0" @@ -74,6 +80,7 @@ RUN git clone --branch ${OPENCV_VERSION} --depth 1 https://github.com/opencv/ope WORKDIR ${DEPENDENCY_DIR}/opencv/build RUN ln -s /usr/include/x86_64-linux-gnu/cudnn*.h /usr/local/cuda/include/ && \ ln -s /usr/lib/x86_64-linux-gnu/libcudnn*.so* /usr/local/cuda/lib64/ + RUN cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX="${VIRTUAL_ENV}" \ -D OPENCV_EXTRA_MODULES_PATH="${DEPENDENCY_DIR}/opencv_contrib/modules" \ @@ -84,7 +91,7 @@ RUN cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D WITH_TBB=ON \ -D WITH_V4L=ON \ -D OPENCV_DNN_CUDA=ON \ - -D CUDA_ARCH_BIN=70,75,80,86,89,90 \ + -D CUDA_ARCH_BIN=80,86,89,90 \ -D CUDA_FAST_MATH=ON \ -D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda \ -D CUDNN_INCLUDE_DIR=/usr/include/x86_64-linux-gnu \ @@ -93,8 +100,8 @@ RUN cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D BUILD_opencv_cudaarithm=ON \ -D BUILD_opencv_cudafilters=ON \ -D BUILD_opencv_cudacodec=ON \ - -D WITH_NVCUVID=ON \ - -D WITH_NVCUVENC=ON \ + -D WITH_NVCUVID=OFF \ + -D WITH_NVCUVENC=OFF \ -D WITH_VAAPI=ON \ -D WITH_FFMPEG=ON \ -D BUILD_opencv_python3=ON \ @@ -108,12 +115,13 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] RUN mkdir -p /tmp/cv2_deps && \ PY_CV2_SO=$(find "${VIRTUAL_ENV}" -name "cv2*.so" | head -n 1) && \ ldd "${PY_CV2_SO}" | grep "=> /" | awk '{print $3}' | xargs -I '{}' cp -v '{}' /tmp/cv2_deps/ && \ - cp -v /usr/local/cuda/lib64/libnpp*.so* /tmp/cv2_deps/ && \ - cp -v /usr/local/cuda/lib64/libcudart.so* /tmp/cv2_deps/ && \ - cp -P /usr/local/cuda/lib64/libnvrtc.so* /tmp/cv2_deps/ && \ + # FIX: Robust fallback copying to grab NPP/CUDA libs regardless of whether they land in /usr/local or system path channels + (cp -v /usr/local/cuda/lib64/libnpp*.so* /tmp/cv2_deps/ || cp -v /usr/lib/x86_64-linux-gnu/libnpp*.so* /tmp/cv2_deps/) && \ + (cp -v /usr/local/cuda/lib64/libcudart.so* /tmp/cv2_deps/ || cp -v /usr/lib/x86_64-linux-gnu/libcudart.so* /tmp/cv2_deps/) && \ + (cp -P /usr/local/cuda/lib64/libnvrtc.so* /tmp/cv2_deps/ || cp -P /usr/lib/x86_64-linux-gnu/libnvrtc.so* /tmp/cv2_deps/) && \ + (cp -v /usr/local/cuda/lib64/libcublas*.so* /tmp/cv2_deps/ || cp -v /usr/lib/x86_64-linux-gnu/libcublas*.so* /tmp/cv2_deps/) && \ cp -v /usr/lib/x86_64-linux-gnu/libnvidia-encode.so* /tmp/cv2_deps/ || true - # Clean up RUN rm -rf ${DEPENDENCY_DIR} @@ -121,44 +129,53 @@ RUN rm -rf ${DEPENDENCY_DIR} FROM openvisualcloud/xeon-ubuntu2204-media-nginx:23.1@sha256:d19eb597dc210134063803630ae2ea1ec84dfd4189138f59551e2f5ed047284a ARG DEBIAN_FRONTEND=noninteractive +ARG CUDA_MAJOR_VERSION=12 +ARG CUDA_MINOR_VERSION=8 ENV VIRTUAL_ENV=/opt/venv ENV PATH="$VIRTUAL_ENV/bin:/usr/local/cuda/bin:${PATH}" # Install Runtime Libraries, FFmpeg/VA-API headers, and cuDNN # Includes libva and ffmpeg libraries required for HEVC decoding # hadolint ignore=DL3008 -RUN apt-get update && apt-get install -y --no-install-recommends \ - ca-certificates \ - curl \ - python3 \ - libgl1 \ - libglib2.0-0 \ - libtbb12 \ - # Critical for Hardware Decoding (HEVC) - libva2 \ - libva-drm2 \ - libva-x11-2 \ - libavcodec58 \ - libavformat58 \ - libswscale5 \ - libv4l-0 && \ +RUN apt-get update && \ + apt-get install -y --no-install-recommends \ + ca-certificates \ + curl \ + python3 \ + libgl1 \ + libglib2.0-0 \ + libtbb12 \ + # Critical for Hardware Decoding (HEVC) + libva2 \ + libva-drm2 \ + libva-x11-2 \ + libavcodec58 \ + libavformat58 \ + libswscale5 \ + libv4l-0 && \ # Install necessary CUDA packages curl -fsSL https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb -o /tmp/cuda-keyring.deb && \ - dpkg -i /tmp/cuda-keyring.deb && rm /tmp/cuda-keyring.deb && \ + dpkg -i /tmp/cuda-keyring.deb && rm /tmp/cuda-keyring.deb && \ apt-get update && \ - apt-get install -y -q --no-install-recommends libcudnn9-cuda-12 \ + apt-get install -y -q --no-install-recommends \ + libcudnn9-cuda-${CUDA_MAJOR_VERSION} \ libavcodec-dev \ libavformat-dev \ - libavutil-dev nvidia-cuda-dev && \ + libavutil-dev \ + cuda-nvcc-${CUDA_MAJOR_VERSION}-${CUDA_MINOR_VERSION} && \ rm -rf /var/lib/apt/lists/* # Copy the entire pre-compiled virtual environment from the build stage COPY --from=build ${VIRTUAL_ENV} ${VIRTUAL_ENV} -# Copy NPP (NVIDIA Performance Primitives) libs - Required for OpenCV CUDA -# COPY --from=build /usr/local/cuda/lib64/libnpp*.so* /usr/local/cuda/lib64/ + # Copy additional required CUDA math/parallel libs RUN mkdir -p /usr/local/cuda/lib64 COPY --from=build /tmp/cv2_deps/* /usr/local/cuda/lib64/ + +# Tells the host engine to expose all GPUs and utility binaries (like nvidia-smi) +ENV NVIDIA_VISIBLE_DEVICES=all +# FIX: Cleaned duplicate line later in file to ensure capabilities are consistently initialized +ENV NVIDIA_DRIVER_CAPABILITIES=compute,utility,video ENV LD_LIBRARY_PATH="/usr/local/cuda/lib64:${VIRTUAL_ENV}/lib:${LD_LIBRARY_PATH}" RUN ldconfig @@ -168,7 +185,6 @@ ENV DEVICE="${DEVICE}" # Set the working directory in the container WORKDIR /home COPY requirements.txt /home/ -ENV NVIDIA_DRIVER_CAPABILITIES=all # RUN pip3 install --no-cache-dir "pytest>=9.0.3" && \ # pip3 install --no-cache-dir --require-hashes -r /home/requirements.CPU.txt --index-url https://download.pytorch.org/whl/cpu --extra-index-url https://pypi.org/simple && \ diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 79e0d9c..7c6e073 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -2,13 +2,10 @@ // README at: https://github.com/devcontainers/templates/tree/main/src/debian { "name": "Pipeline Dev", - // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile - // "image": "mcr.microsoft.com/devcontainers/base:bullseye" + "build": { // Path is relative to the devcontainer.json file. "dockerfile" : "Dockerfile", - // "context" : "..", - // "dockerfile" : "../fastapi/Dockerfile", "context" : "../fastapi", "args":{ "HTTP_PROXY" : "${localEnv:HTTP_PROXY}", @@ -16,30 +13,47 @@ "HTTPS_PROXY" : "${localEnv:HTTPS_PROXY}", "https_proxy" : "${localEnv:https_proxy}", "NO_PROXY" : "${localEnv:NO_PROXY}", - "no_proxy" : "${localEnv:no_proxy}", - } + "no_proxy" : "${localEnv:no_proxy}" + }, + // Forces the build phase to use the host network to fix any Ubuntu timeout + "options": [ + "--network=host" + ] }, + "containerEnv" : { "HTTP_PROXY" : "${localEnv:HTTP_PROXY}", "http_proxy" : "${localEnv:http_proxy}", "HTTPS_PROXY" : "${localEnv:HTTPS_PROXY}", "https_proxy" : "${localEnv:https_proxy}", "NO_PROXY" : "${localEnv:NO_PROXY}", - "no_proxy" : "${localEnv:no_proxy}", + "no_proxy" : "${localEnv:no_proxy}" }, + // Native, modern way to pass GPUs to the Dev Container + // VS Code will automatically append the --gpus all flag if detected + "hostRequirements": { + "gpu": "optional" + }, + "runArgs" : [ - "--rm", - "--gpus", "all", + // "-p", "8011:8000", + // "--rm", + // "--gpus", "all", "--ipc=host", "--name", "pipeline_dev", - "-p", "8011:8000", "--cap-add=SYS_NICE", - "--shm-size=8gb" + "--shm-size=8gb", + "--network=host" // Ensures runtime matches the host network ], - //, "--net=host", "--privileged", "--shm-size=2gb"], + //, "--privileged", "--shm-size=2gb"], + + // Forwarding ports cleanly via VS Code spec instead of raw "-p" + // "forwardPorts": [], + "overrideCommand": true, - "postStartCommand": "apt-get update -o Acquire::Check-Date=false -y && apt-get install -y gdb sudo && cp -rp /workspace/app/*.md /app/ && cp -rp /workspace/app/.vscode /app/ && cp -rp /workspace/app/.gitignore /app/ && cp -rp /workspace/app/.github /app/", + "postStartCommand": "apt-get update -o Acquire::Check-Date=false -y && apt-get install -y gdb sudo", + // && cp -rp /workspace/app/*.md /home/ && cp -rp /workspace/app/.vscode /home/ && cp -rp /workspace/app/.gitignore /home/ && cp -rp /workspace/app/.github /home/", // "postAttachCommand": "sudo chown -R ${localEnv:USER} /workspaces", // Features to add to the dev container. More info: https://containers.dev/features. @@ -71,8 +85,6 @@ "mounts": [ "source=${localWorkspaceFolder}/inputs,target=/watch_dir,type=bind", "source=${localWorkspaceFolder}/fastapi,target=/home,type=bind" - // "source=./fastapi/resources,target=/home/resources,type=bind", - // "source=./fastapi/tests,target=/home/tests,type=bind" ], // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root. diff --git a/.gitignore b/.gitignore index 0a718e2..41cfe6f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,15 +1,17 @@ .venv* -.vscode *.log **/__pycache__/ **/_* +**/* copy* **/DockerImageTars/ build/* fastapi/resources/models/intel fastapi/resources/models/ultralytics +fastapi/tests/*_data/ fastapi/tests/*_results* fastapi/tests/*_test_imgs fastapi/tests/*.mp4 +fastapi/tests/run_test_*.* finetune/.env finetune/app/*-Results inputs/camera_config.yaml diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index e5dca08..243fb6f 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -20,12 +20,20 @@ repos: - id: mixed-line-ending args: ["--fix=auto"] - id: trailing-whitespace - - repo: https://github.com/pre-commit/mirrors-clang-format - rev: v19.1.7 - hooks: - - id: clang-format - types: [c, c++] - args: [ - "--style=Google", - "-i" - ] + - repo: https://github.com/pre-commit/mirrors-clang-format + rev: v19.1.7 + hooks: + - id: clang-format + types: [c, c++] + args: [ + "--style=Google", + "-i" + ] + - repo: https://github.com/codespell-project/codespell + rev: v2.4.1 + hooks: + - id: codespell + args: [ + --ignore-words=.codespell-ignore, + --skip="./build,./.git,./.devcontainer/Dockerfile" + ] diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..d38ebc5 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,9 @@ +{ + "recommendations": [ + "kevinrose.vsc-python-indent", + "mechatroner.rainbow-csv", + "ms-python.debugpy", + "ms-vscode-remote.remote-containers", + "streetsidesoftware.code-spell-checker", + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..241d119 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,26 @@ +{ + "cSpell.ignorePaths": [ + "./build/**", + "./.git/**", + "./.devcontainer/Dockerfile", + "./deployment/Dockerfiles/**", + "./frontend/html/**" + ], + "cSpell.dictionaryDefinitions": [ + { + "name": "codespell-file", + "path": "${workspaceRoot}/.codespell-ignore", + "description": "Forcing cspell to read the codespell file" + } + ], + "cSpell.dictionaries": [ + "codespell-file" + ], + "cSpell.words": [ + "bchw", + "callspec", + "fourcc", + "gbps", + "rbtd" + ] +} \ No newline at end of file diff --git a/README.md b/README.md index 5228d7b..61df77f 100644 --- a/README.md +++ b/README.md @@ -23,6 +23,11 @@ This sample is powered by the following software stacks:
+## Datasets & Attributions +This project utilizes third-party open datasets. Please see our [Data Attributions](docs/DATASETS.md) for full licensing, copyright details, and citation parameters. +
+ + ## Install Prerequisites: - **Time Zone**: Check that the timezone setting of your host machine is correctly configured. Timezone is used during build. diff --git a/doc/DATASETS.md b/doc/DATASETS.md new file mode 100644 index 0000000..9e4ae55 --- /dev/null +++ b/doc/DATASETS.md @@ -0,0 +1,25 @@ +# Dataset and Third-Party Media Attributions + +This repository utilizes external datasets and media for training/demo purposes, without storing the actual files. + +--- + +## 1. SynDroneVision Dataset +* **Source:** [Zenodo (Record 13360116)](https://zenodo.org/records/13360116) +* **License:** [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode.en) +* **Citation:** See DOI [10.1109/WACV61041.2025.00742](https://doi.org/10.1109/WACV61041.2025.00742) (Lenhard et al., WACV 2025). +* **Usage:** External data for fine-tuning model for drone detection. + +--- + +## 2. Sample Drone Video (`anduril_swarm.mp4`) +* **Source:** [droneforge/yolov11-UAV-finetune](https://github.com/droneforge/yolov11-UAV-finetune/blob/main/anduril_swarm.mp4) +* **Usage:** External sample video for pipeline demonstration. + +--- + +## 3. DUT Anti-UAV Dataset +* **Source:** [wangdongdut/DUT-Anti-UAV](https://github.com/wangdongdut/DUT-Anti-UAV) +* **License:** [Apache License 2.0](https://github.com/wangdongdut/DUT-Anti-UAV/blob/master/LICENSE) +* **Citation:** See DOI [10.48550/arXiv.2205.10851](https://doi.org/10.48550/arXiv.2205.10851) (Zhao et al., IEEE T-ITS 2022). +* **Usage:** External sample video dataset for pipeline validation/demonstration. diff --git a/fastapi/.vscode/launch.json b/fastapi/.vscode/launch.json index bf0e18c..1f9faee 100644 --- a/fastapi/.vscode/launch.json +++ b/fastapi/.vscode/launch.json @@ -4,6 +4,22 @@ // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ + { + // Test the model for both CPU and GPU on provided RTSP URL or video file + "name": "Eval Pipeline", + "type": "debugpy", + "request": "launch", + "program": "${workspaceFolder}/tests/test_eval.py", + "cwd": "${workspaceFolder}/tests", + "python": "/opt/venv/bin/python", + "console": "integratedTerminal", + "justMyCode": false, + "subProcess": false, + "args": [ + "--type", "object", + "--device", "gpu" + ] + }, { // Test the model for both CPU and GPU on provided RTSP URL or video file "name": "Test Model", @@ -19,7 +35,7 @@ // VIDEOS EXPECTED TO BE rstp url OR IN inputs/ or /watch_dir // "--source", "rtsp://:/", // "--source", ".mp4", - + "--device", "gpu" ] }, { @@ -37,7 +53,7 @@ // VIDEOS EXPECTED TO BE rstp url OR IN inputs/ or /watch_dir // "--source", "rtsp://:/", // "--source", ".mp4" - + "--device", "gpu" ] }, { @@ -51,11 +67,15 @@ "console": "integratedTerminal", "justMyCode": false, "subProcess": false, + "env":{ + "PYTHONTRACEMALLOC":"20", + }, "args": [ // VIDEOS EXPECTED TO BE rstp url OR IN inputs/ or /watch_dir // "--source", "rtsp://:/", // "--source", ".mp4" - + "--device", "gpu", + "--type", "object" ] }, { @@ -80,12 +100,13 @@ // 4: --device, --sf, --type (object or motion) "--duration", "1", - + "--device", "gpu", + "--type", "object" ] }, { // Test Smart Filtering within pipeline to display the ROIs - "name": "Test Pipeline: Smart filtering Only", + "name": "Test Pipeline: Smart filtering Only (Scenario 4)", "type": "debugpy", "request": "launch", "program": "${workspaceFolder}/tests/test_pipeline.py", @@ -103,8 +124,41 @@ // 4: --device, --sf, --type (object or motion) "--scenario", "4", "--sf", - "--type", "motion", + "--type", "object", + + "--duration", "1", + "--device", "gpu" + ] + }, + { + // Test Smart Filtering within pipeline to display the ROIs + "name": "Test Pipeline: Scenario 3", + "type": "debugpy", + "request": "launch", + "program": "${workspaceFolder}/tests/test_pipeline.py", + "cwd": "${workspaceFolder}/tests", + "python": "/opt/venv/bin/python", + "console": "integratedTerminal", + "subProcess": false, + "justMyCode": false, + "args": [ + // VIDEOS EXPECTED TO BE rstp url OR IN inputs/ or /watch_dir + // "--source", "rtsp://:/", + // "--source", ".mp4", + + "--scenario", "3", + "--type", "object", + + "--duration", "1", + "--device", "gpu" ] - } + }, + { + "name": "Python Debugger: Current File", + "type": "debugpy", + "request": "launch", + "program": "${file}", + "console": "integratedTerminal" + }, ] } diff --git a/fastapi/.vscode/settings.json b/fastapi/.vscode/settings.json new file mode 100644 index 0000000..9b38853 --- /dev/null +++ b/fastapi/.vscode/settings.json @@ -0,0 +1,7 @@ +{ + "python.testing.pytestArgs": [ + "tests" + ], + "python.testing.unittestEnabled": false, + "python.testing.pytestEnabled": true +} \ No newline at end of file diff --git a/fastapi/entrypoint.sh b/fastapi/entrypoint.sh index 850f4a3..694b55c 100644 --- a/fastapi/entrypoint.sh +++ b/fastapi/entrypoint.sh @@ -1,6 +1,10 @@ #!/bin/bash set -e +echo "Sweeping stale shared memory segments from previous runs..." +# Delete only Python-specific shared memory blocks to avoid messing up other host processes +rm -f /dev/shm/psm_* + # Run the download script using container env vars echo "Starting model download..." python /home/include/models.py -o /var/www/cache/model_classes.json diff --git a/fastapi/include/__init__.py b/fastapi/include/__init__.py new file mode 100644 index 0000000..c57681f --- /dev/null +++ b/fastapi/include/__init__.py @@ -0,0 +1,78 @@ +import os +import warnings +from multiprocessing import resource_tracker + +import torch + +# ============================================================================== +# SUPPRESS WARNINGS + +# warnings.filterwarnings( +# "ignore", category=FutureWarning, message=".*reduce_op` is deprecated.*" +# ) +warnings.filterwarnings("ignore", category=FutureWarning) +warnings.filterwarnings("ignore", category=DeprecationWarning) +warnings.filterwarnings("ignore", category=UserWarning, module="torch.distributed") +warnings.filterwarnings("ignore", message=".*reduce_op.*") +warnings.filterwarnings("ignore", message=".*expandable_segments.*") + +# ============================================================================== +# MONKEY PATCH + + +def _patch_resource_tracker_for_shm(): + """ + Prevents Python's resource_tracker from tracking shared memory segments. + Eliminates BPO-39959 / Issue #82300 KeyError crashes. + """ + _orig_register = resource_tracker.register + _orig_unregister = resource_tracker.unregister + + def _safe_register(name, rtype): + if rtype == "shared_memory": + return # Do not register shared memory with tracker daemon + return _orig_register(name, rtype) + + def _safe_unregister(name, rtype): + if rtype == "shared_memory": + return # Do not send unregister signals for shared memory + return _orig_unregister(name, rtype) + + resource_tracker.register = _safe_register + resource_tracker.unregister = _safe_unregister + + +_patch_resource_tracker_for_shm() + + +# Cache the hardware availability state globally. +# This prevents internal framework loops from triggering driver/NVML checks per frame. +_cuda_available = torch.cuda.is_available() + + +def _patched_is_available(): + return _cuda_available + + +torch.cuda.is_available = _patched_is_available + +# ============================================================================== +# ENVIRONMENT + +os.environ["OMP_NUM_THREADS"] = "4" # "4" #"2" +os.environ["MKL_NUM_THREADS"] = "2" +os.environ["PYTORCH_ALLOC_CONF"] = "expandable_segments:True" + +# Suppress low-delay reference block warnings from OpenCV/PyAV/FFmpeg +os.environ["OPENCV_FFMPEG_LOGLEVEL"] = "-8" +os.environ["OPENCV_LOG_LEVEL"] = "OFF" + +try: + torch.set_num_interop_threads(1) + torch.set_num_threads(2) +except RuntimeError: + # Safe graceful fallback if a process-level fork duplicated context maps + pass + +# Force disable tracking states to stop graph allocation recursion +torch.set_grad_enabled(False) diff --git a/fastapi/include/default_configs.py b/fastapi/include/default_configs.py index 94cc90d..41b4fba 100644 --- a/fastapi/include/default_configs.py +++ b/fastapi/include/default_configs.py @@ -3,7 +3,7 @@ CUSTOM_MODEL_FLAG_DEFAULT = False DEBUG_DEFAULT = "0" DEVICE_DEFAULT = "CPU" -MAX_WORKERS = 4 # 6 +MAX_WORKERS = 4 # 4 # 6 OMIT_DETECTIONS_FLAG_DEFAULT = False SHARED_OUTPUT_DEFAULT = "/var/www/mp4" TEST_MODE_DEFAULT = False @@ -12,19 +12,19 @@ # VIDEO WRITER CLIP_DURATION_DEFAULT = 10 -TARGET_FPS = 15 +TARGET_FPS = 15.0 # VDMS DBHOST_DEFAULT = "vdms-service" DBPORT_DEFAULT = 55555 -ENABLE_QUERYING_DEFAULT = True # False, True +ENABLE_QUERYING_DEFAULT = False # False, True INGESTION_DEFAULT = "object" # object,face UDF_HOST_DEFAULT = "udf-service" UDF_PORT_DEFAULT = 5011 # MODEL -DETECTION_THRESHOLD_DEFAULT = 0.25 -IOU_THRESHOLD_DEFAULT = 0.7 +DETECTION_THRESHOLD_DEFAULT = 0.1 # 0.25 +IOU_THRESHOLD_DEFAULT = 0.1 # 0.7 DYNAMIC_FLAG_DEFAULT = True HALF_FLAG_DEFAULT = True MAX_DETECTIONS = 100 @@ -37,14 +37,15 @@ # SMART FILTERING (RESIZE, BKGD SUB, THRESHOLD, DILATE) # Enable if resolution > 2K 1920x1080 SMART_FILTERING_PIXEL_CONSTRAINT = 1920 * 1080 -BKGD_SUB_INCLUDE_HISTORY = True # True, False +SMART_FILTERING_WARMUP = False # True, False +BKGD_SUB_INCLUDE_HISTORY = False # True, False BKGD_SUB_INCLUDE_HISTORY_DILATE_KERNEL_SIZE = 15 # 21 #15 BKGD_SUB_INCLUDE_HISTORY_METHOD = "or" # "and", or BKGD_SUB_INCLUDE_HISTORY_TEMPORAL_SIZE = 3 BKGD_SUB_MOG2_DETECTSHADOWS = False BKGD_SUB_MOG2_HISTORY = int(2 * TARGET_FPS) BKGD_SUB_MOG2_LR = 1 / BKGD_SUB_MOG2_HISTORY # 0.002 # 1 / BKGD_SUB_MOG2_HISTORY -BKGD_SUB_MOG2_VARTHRESHOLD = 10 +BKGD_SUB_MOG2_VARTHRESHOLD = 50 # 30 # 20 #10 DILATE_KERNEL_SIZE = 5 # (3, 3) RESIZE_FLAG_DEFAULT = False ROI_BB_FULL_RES_PADDING = int(0.02 * MODEL_W) # 10, ~13 diff --git a/fastapi/include/detectors.py b/fastapi/include/detectors.py new file mode 100644 index 0000000..2a93006 --- /dev/null +++ b/fastapi/include/detectors.py @@ -0,0 +1,4362 @@ +# ============================================================================== +# LOGGING + +import logging +import sys + +logging.basicConfig( + level=logging.INFO, + # format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", + format="%(asctime)s [%(levelname)s] %(name)s (%(filename)s:%(lineno)d) - %(message)s", + handlers=[logging.StreamHandler(sys.stdout)], +) + +main_app_logger = logging.getLogger(__name__) + + +# ============================================================================== +# IMPORTS + +import time +import traceback +from collections import deque +from pathlib import Path + +import cupy +import cupyx.scipy +import cupyx.scipy.ndimage +import cv2 +import numpy as np +import torch +import torch.nn.functional as F +from ultralytics.engine.results import Boxes, Results +from ultralytics.utils.nms import non_max_suppression + +sys.path.insert(1, str(Path(__file__).parent.parent)) +from include.models import get_model +from include.utils import ( + get_bb_overlay, + get_bounds_kernel, + merge_boxes_gpu, +) + +# ============================================================================== +# CONFIGURATIONS +STREAM_ARG = False +PADDING_SCALE = 0.5 + + +class BaseObjectDetector: + def __init__( + self, + config, + device="cuda", + timer_enabled=True, + resize_hw=(640, 640), + frame_hw=(4320, 7680), + target_fps=15.0, + result_dir="/tmp", + run_name=None, + debug_frame_limit=-1, + **kwargs, + ): # , label_source=["drone"] + self.device_input = device + self.timer_enabled = timer_enabled + self.config = config + self.target_fps = target_fps + self.resize_h, self.resize_w = int(resize_hw[0]), int(resize_hw[1]) + self.frame_height, self.frame_width = int(frame_hw[0]), int(frame_hw[1]) + # self.label_source = label_source + self.compiled_no_grad_gate = torch.no_grad() + + if run_name is None: + run_type = "sf" if self.config.sf_enabled else "yolo" + det_type = self.config.DETECTION_TYPE + device_name = self.config.DEVICE.lower() + run_name = f"{run_type}_{det_type}_{device_name}" + self._testMethodName = run_name + + self.result_dir = result_dir + # self.debug_frame_limit = debug_frame_limit + self.debug_frame_limit = ( + debug_frame_limit + if self.config.DEBUG_FLAG and debug_frame_limit > -1 + else -1 + ) + + provided_model = kwargs.get("model") + self.setup_model(provided_model) + self.initialize() + + def model_warmup(self, H=640, W=640): + H, W = int(H), int(W) + # Move the dummy input creation inside a no_grad block + with self.compiled_no_grad_gate: + # main_app_logger.info(f"Starting warmup for {self.name}...") + dummy_input = torch.zeros((1, 3, H, W)).to(self.device_input) + + # Perform iterations directly on the main thread + for i in range(5): + dummy_result = self.run_model( + dummy_input, + imgsz=(H, W), + batch=1, + device_input=self.device_input, + stream=STREAM_ARG, + ) + # if i == 0 and hasattr(self.model, "predictor") and self.model.predictor: + # self.cached_predictor = self.model.predictor + # self.cached_predictor.profile = False + + del dummy_input, dummy_result + + if hasattr(self.model, "predictor") and self.model.predictor is not None: + predictor = self.model.predictor + + # Disable the internal framework statistics stopwatch loops + # This wipes out the trailing 2.3ms context synchronization gates completely! + predictor.stride = 32 + predictor.profile = False + + # CRITICAL OPTIMIZATION: Tell the post-processor to skip input image array compilation. + # This completely satisfies the internal checks, bypassing convert_torch2numpy_batch + # and dropping your 17.99ms PCIe bus device-to-host download stall down to 0 ms. + predictor.save_dir = None + predictor.args.visualize = False + predictor.args.show = False + predictor.args.save = False + self.cached_predictor = predictor + + # Force GPU to finish before returning + # if self.device_input == "cuda": + # torch.cuda.synchronize() + + # Pin a lightweight tensor to prevent downstream empty_cache() calls + # from destroying the compiled model weight layouts in memory + self.__persistent_vram_lock = torch.zeros((1,), device=self.device_input) + + main_app_logger.info("Warmup complete") + + def setup_model(self, provided_model, force_export=False): + if ( + self.frame_width * self.frame_height + ) <= self.config.SMART_FILTERING_PIXEL_CONSTRAINT: + if "_noSF" not in self.config.model_path: + oldpath = Path(self.config.model_path) + old_modelname = self.config.MODEL_NAME + self.config.MODEL_NAME = f"{old_modelname}_noSF" + new_model_name = oldpath.name.replace( + old_modelname, self.config.MODEL_NAME + ) + self.config.model_path = str(oldpath.parent / new_model_name) + + if provided_model is not None and not isinstance(provided_model, str): + self.model = provided_model + self.label_source = [v for k, v in self.model.names.items()] + self.label_source_dict = self.model.names + else: + run_platform_name = "engine" if "cuda" in self.device_input else "openvino" + self.model, _, self.label_source = get_model( + Path(self.config.model_path).parent, + self.config.MODEL_NAME.replace("_noSF", ""), + run_platform_name, + self.device_input, + batch=self.config.MODEL_MAX_BATCH_SIZE, + force_export=force_export, + sf_enabled=self.config.sf_enabled, + model_h=self.resize_h, + model_w=self.resize_w, + ) + self.label_source_dict = self.model.names + + # if run_platform_name == "openvino": + # self.model.predictor.args.embed = False + + # Warmup Model + if not self.config.sf_enabled: + self.model_warmup(self.frame_height, self.frame_width) + else: + self.model_warmup(self.resize_h, self.resize_w) + + def run_model( + self, + frame, + imgsz=(640, 640), + batch=1, + device_input="cuda", + stream=False, + ): + if ( + isinstance(frame, torch.Tensor) + # and device_input == "cuda" + # and getattr(self, "cached_predictor", None) is not None + ): + if frame.dtype == torch.uint8: + # Use standard out-of-place division to prevent byte truncation errors + frame = frame.to(dtype=torch.float32).mul(1.0 / 255.0) + else: + # If it's already a float tensor array block, in-place scaling is safe + frame = frame.mul_(1.0 / 255.0) + raw_module = None + + if hasattr(self, "cached_predictor") and self.cached_predictor is not None: + raw_module = self.cached_predictor.model + + with torch.inference_mode(): + # Establish your pipeline invariant: + # frame = [B,C,H,W], uint8, CUDA, [0,255]. + # if frame.dtype == torch.uint8: + # dtype = ( + # torch.float16 + # if getattr(raw_module, "fp16", False) + # else torch.float32 + # ) + # frame = frame.to(dtype=dtype).mul_(1.0 / 255.0) + # elif not frame.is_floating_point(): + # frame = frame.float() + + if raw_module is not None: + # start = torch.cuda.Event(enable_timing=True) + # end = torch.cuda.Event(enable_timing=True) + + # start.record() + # If input is guaranteed 640x640, don't pad here. + raw_output = raw_module(frame) + # end.record() + # torch.cuda.synchronize() + # inference_ms = start.elapsed_time(end) + + # start.record() + decoded_results = non_max_suppression( + prediction=raw_output, + conf_thres=self.config.DETECTION_THRESHOLD, + iou_thres=self.config.IOU_THRESHOLD, + max_det=self.config.MAX_DETECTIONS, + classes=None, + ) + # end.record() + # torch.cuda.synchronize() + # nms_ms = start.elapsed_time(end) + + # main_app_logger.info(f"Inference: {inference_ms:.3f} ms") + # main_app_logger.info(f"NMS: {nms_ms:.3f} ms") + + results = [] + dummy_img = np.empty( + (1, 1, 3), + dtype=np.uint8, + ) + + for pred in decoded_results: + if pred is None or pred.shape[0] == 0: + pred = torch.empty( + (0, 6), + dtype=frame.dtype, + device=frame.device, + ) + + pre_calculated_boxes = Boxes( + pred, + imgsz, + ) + + # Construct a conforming container using native VRAM references + res = Results( + orig_img=dummy_img, + path="", + names=self.label_source_dict, + boxes=None, # Bypasses internal allocation thrashing! # pred, + ) + res.boxes = pre_calculated_boxes + results.append(res) + + del decoded_results, raw_output + return results + + # Fallback to normal Ultralytics path. + with torch.inference_mode(): + if getattr(self, "cached_predictor", None) is not None: + return self.cached_predictor(frame) + else: + static_img_h = int(imgsz[0]) # Maps explicitly to your fixed 640 target + static_img_w = int(imgsz[1]) + return self.model.predict( + frame, + imgsz=(static_img_h, static_img_w), + batch=batch, + device=device_input, + verbose=False, + stream=stream, + conf=self.config.DETECTION_THRESHOLD, + iou=self.config.IOU_THRESHOLD, + max_det=self.config.MAX_DETECTIONS, + rect=(batch == 1), + profile=False, + ) + + def format_bbs_and_frame_4_detection_v1(self, bbs_full_res, device_frame): + clean_bbs = [] + + if self.config.sf_enabled and bbs_full_res is not None: + if torch.is_tensor(bbs_full_res): + # Check hardware registry constraints dynamically + if bbs_full_res.is_cuda: + # 🚀 GPU Target: Stage non-blocking fast copy into page-locked host memory + # via PCIe DMA background channels to completely bypass lock-stalls + # pinned_host_tensor = bbs_full_res.detach()#.to( + # # device="cpu", + # # non_blocking=True, + # # memory_format=torch.contiguous_format, + # # ) + # clean_bbs = pinned_host_tensor.numpy() + + # Moving the data to the host via non_blocking=True allows the PCIe + # DMA engine to handle the transfer, freeing up your CPU thread context! + cpu_tensor = bbs_full_res.detach().to( + device="cpu", non_blocking=True + ) + + # Extract the numpy array safely without triggering a global stream sync fence + clean_bbs = cpu_tensor.numpy() + else: + # 🚀 CPU Target: Direct view mapping without triggering device-transfer hooks + clean_bbs = bbs_full_res.detach().numpy() + else: + clean_bbs = np.array(bbs_full_res) + + # Layout tracking adjustments (Universal compatibility layer) + det_frame = device_frame + if torch.is_tensor(det_frame): + det_frame = det_frame.contiguous() # byte() + + if det_frame.ndim == 4: + det_frame = det_frame.squeeze(0).permute(1, 2, 0) + elif det_frame.shape == 3: + det_frame = det_frame.permute(1, 2, 0) + + merged = clean_bbs if self.config.sf_enabled else None + + return merged, det_frame + + def format_bbs_and_frame_4_detection(self, bbs_full_res, device_frame): + clean_bbs = bbs_full_res if self.config.sf_enabled else None + + # if self.config.sf_enabled and bbs_full_res is not None: + # if torch.is_tensor(bbs_full_res): + # # Check hardware registry constraints dynamically + # if bbs_full_res.is_cuda: + # # 🚀 GPU Target: Stage non-blocking fast copy into page-locked host memory + # # via PCIe DMA background channels to completely bypass lock-stalls + # # pinned_host_tensor = bbs_full_res.detach()#.to( + # # # device="cpu", + # # # non_blocking=True, + # # # memory_format=torch.contiguous_format, + # # # ) + # # clean_bbs = pinned_host_tensor.numpy() + + # # Moving the data to the host via non_blocking=True allows the PCIe + # # DMA engine to handle the transfer, freeing up your CPU thread context! + # cpu_tensor = bbs_full_res.detach().to(device="cpu", non_blocking=True) + + # # Extract the numpy array safely without triggering a global stream sync fence + # clean_bbs = cpu_tensor.numpy() + # else: + # # 🚀 CPU Target: Direct view mapping without triggering device-transfer hooks + # clean_bbs = bbs_full_res.detach().numpy() + # else: + # clean_bbs = np.array(bbs_full_res) + + # Layout tracking adjustments (Universal compatibility layer) + det_frame = device_frame + if torch.is_tensor(det_frame): + # det_frame = det_frame.contiguous() #byte() + + if det_frame.ndim == 4: + det_frame = det_frame.squeeze(0) # .permute(1, 2, 0) + # elif det_frame.shape == 3: + # det_frame = det_frame.permute(1, 2, 0) + + if not det_frame.is_contiguous(): + det_frame = det_frame.contiguous() + + return clean_bbs, det_frame + + def motion2metadata(self, merged, frame_count_target): + metadata = {} + if merged is not None and merged.shape[0] > 0: + # merged = merged / self.scales_tensor.cpu().numpy().reshape(-1, 4) + merged = merged.div(self.scales_tensor.view(-1, 4)) + + # Calculate area for each box: (xmax - xmin) * (ymax - ymin) + widths = merged[:, 2] - merged[:, 0] + heights = merged[:, 3] - merged[:, 1] + areas = widths * heights + # max_area = np.max(areas) if np.max(areas) > 0 else 1.0 + + if torch.is_tensor(areas): + # Use native PyTorch reduction math if areas is a device tensor block + raw_max = torch.max(areas).item() if areas.numel() > 0 else 0.0 + max_area = raw_max if raw_max > 0 else 1.0 + else: + # Fallback standard array parsing logic for host NumPy sequences + raw_max = np.max(areas) if len(areas) > 0 else 0.0 + max_area = raw_max if raw_max > 0 else 1.0 + + # Format motion results like detection results for evaluation + for i, bb in enumerate(merged): + disp_x, disp_y, disp_x2, disp_y2 = bb + disp_w = disp_x2 - disp_x + disp_h = disp_y2 - disp_y + + if disp_w > 2 and disp_h > 2: + obj_id = len(metadata) + # num_objs += 1 + framenum_str = f"{frame_count_target:04d}_{obj_id:04d}" + score = areas[i] / max_area + + metadata[framenum_str] = { + "frameId": int(frame_count_target), + "bbId": framenum_str, + "bbox": { + "x": int(disp_x), + "y": int(disp_y), + "height": int(disp_h), + "width": int(disp_w), + "object": "", + "object_det": { + "confidence": score, + "frameH": int(self.resize_h), + "frameW": int(self.resize_w), + }, + }, + } + + return metadata + + def initialize(self): + self.device = self.config.DEVICE + self.device_input = self.config.device_input + self.disp_w, self.disp_h = self.config.DISPLAY_FRAME_SIZE + self.resize_h, self.resize_w = [self.config.MODEL_H, self.config.MODEL_W] + # self.fixed_inference_batch = torch.empty( + # ( + # self.config.MODEL_MAX_BATCH_SIZE, + # 3, + # self.config.MODEL_H, + # self.config.MODEL_W, + # ), + # dtype=torch.half, + # device=self.device_input, + # ) + + # DEBUG FUNCTIONS -------------------------------------------- + def debug_save_mask(self, frame_source, frame_num, rois=None, gt_boxes=None): + debug_dir = self.result_dir / "debug_stages" / self._testMethodName / "mask" + debug_dir.mkdir(parents=True, exist_ok=True) + + save_path = ( + debug_dir / f"frame_{frame_num:04d}_mask.jpg" + ) # f"mask_{frame_num:04d}.jpg" + + # cv2.imwrite( + # # str(stage_debug_dir / f"frame_{f_num:04d}_stage6_threshold.jpg"), + # str(stage_debug_dir / f"frame_{self.frame_count_target:04d}_stagerois_merged.jpg"), + # display_frame, + # ) + + if frame_num > self.config.DEBUG_FRAME_LIMIT: + return + + # # Download or copy the data + # if hasattr(frame_source, "download"): + # img_cpu = frame_source.download() + # elif torch.is_tensor(frame_source): + # # .contiguous() fixes the horizontal "shredding"/static look + # temp = frame_source.squeeze(0) if frame_source.ndim == 4 else frame_source + # img_cpu = temp.permute(1, 2, 0).contiguous().cpu().numpy() + # else: + # # For numpy arrays (like your pinned memory), ensure memory is linear + # img_cpu = np.ascontiguousarray(frame_source) + + # # Fix Visibility (Normalization) + # # If float, scale to 0-255. If uint8, leave as is to avoid "neon" colors. + # if img_cpu.dtype != np.uint8: + # if img_cpu.max() <= 1.0: + # img_cpu = (img_cpu * 255).clip(0, 255).astype(np.uint8) + # else: + # img_cpu = img_cpu.astype(np.uint8) + + # Download/Copy the frame + if torch.is_tensor(frame_source): + # .contiguous() is CRITICAL here to fix the "shredded" look + temp = frame_source.squeeze(0) if frame_source.ndim == 4 else frame_source + # img_cpu = temp.permute(1, 2, 0).contiguous().cpu().numpy() + img_cpu = temp.contiguous().cpu().numpy() + img_cpu = cv2.cvtColor(img_cpu, cv2.COLOR_RGB2BGR) + elif hasattr(frame_source, "download"): + img_cpu = frame_source.download() + else: + img_cpu = np.ascontiguousarray(frame_source) + + # Fix Shape: restore spatial grid if flattened + if img_cpu.ndim == 3 and img_cpu.shape[0] == 1: + img_cpu = img_cpu.reshape((self.resize_h, self.resize_w, 3)) + + # Fix Visibility: ONLY multiply if it's actually floating point + # If uint8 is multiplied by 255, it wraps around and creates "neon" colors + if img_cpu.dtype != np.uint8: + if img_cpu.max() <= 1.0: + img_cpu = (img_cpu * 255).clip(0, 255).astype(np.uint8) + else: + img_cpu = img_cpu.astype(np.uint8) + + # Color Space: Standardize to BGR for imwrite + if len(img_cpu.shape) != 3: + img_cpu = cv2.cvtColor(img_cpu, cv2.COLOR_GRAY2BGR) + + h_img, w_img = img_cpu.shape[:2] + scale_x = float(w_img) / self.frame_width + scale_y = float(h_img) / self.frame_height + if gt_boxes is not None: + # Factor for converting 8K (original) bb dimensions to display dimensions + # disp_w, disp_h = inf_data["mask"].shape[:2] if hasattr(inf_data["mask"], "shape") else inf_data["mask"].size() + # scale_display_ox = disp_w / self.frame_width + # scale_display_oy = disp_h / self.frame_height + + img_cpu = get_bb_overlay( + img_cpu, + gt_boxes, + (scale_x, scale_y), + (w_img, h_img), + color=(0, 255, 0), # green + ) + + # Draw 8K Boxes (Scaled down) + if rois is not None and len(rois) > 0: + boxes = rois.cpu().tolist() if torch.is_tensor(rois) else rois + for box in boxes: + x1, y1, x2, y2 = [ + # int(box[0] * scale_x), + # int(box[1] * scale_y), + # int(box[2] * scale_x), + # int(box[3] * scale_y), + max(0, int(box[0] * scale_x)), + max(0, int(box[1] * scale_y)), + min(w_img - 1, int(box[2] * scale_x)), + min(h_img - 1, int(box[3] * scale_y)), + ] + cv2.rectangle(img_cpu, (x1, y1), (x2, y2), (0, 0, 255), 2) + + # Save to disk + cv2.imwrite(str(save_path), img_cpu) + del img_cpu + + def debug_save_img_roi(self, frame_source, bbs_full_res, frame_num, gt_boxes=None): + debug_dir = self.result_dir / "debug_stages" / self._testMethodName / "img_roi" + debug_dir.mkdir(parents=True, exist_ok=True) + + # out_filename = str(debug_dir / f"analysis_{frame_num:04d}.jpg") + save_path = debug_dir / f"frame_{frame_num:04d}_analysis.jpg" + + if frame_num > self.config.DEBUG_FRAME_LIMIT: + return + + # Download/Copy the frame + if torch.is_tensor(frame_source): + # .contiguous() is CRITICAL here to fix the "shredded" look + temp = frame_source.squeeze(0) if frame_source.ndim == 4 else frame_source + img_cpu = temp.permute(1, 2, 0).contiguous().cpu().numpy() + elif hasattr(frame_source, "download"): + img_cpu = frame_source.download() + else: + img_cpu = np.ascontiguousarray(frame_source) + + # Fix Shape: restore spatial grid if flattened + if img_cpu.ndim == 3 and img_cpu.shape[0] == 1: + img_cpu = img_cpu.reshape((self.resize_h, self.resize_w, 3)) + + # Fix Visibility: ONLY multiply if it's actually floating point + # If uint8 is multiplied by 255, it wraps around and creates "neon" colors + if img_cpu.dtype != np.uint8: + if img_cpu.max() <= 1.0: + img_cpu = (img_cpu * 255).clip(0, 255).astype(np.uint8) + else: + img_cpu = img_cpu.astype(np.uint8) + + # Color Space: Standardize to BGR for imwrite + if len(img_cpu.shape) != 3: + img_cpu = cv2.cvtColor(img_cpu, cv2.COLOR_GRAY2BGR) + + # Draw 8K Boxes (Scaled down) + h_img, w_img = img_cpu.shape[:2] + scale_x = w_img / self.frame_width + scale_y = h_img / self.frame_height + + if gt_boxes is not None: + # Factor for converting 8K (original) bb dimensions to display dimensions + # disp_w, disp_h = inf_data["mask"].shape[:2] if hasattr(inf_data["mask"], "shape") else inf_data["mask"].size() + # scale_display_ox = disp_w / self.frame_width + # scale_display_oy = disp_h / self.frame_height + + img_cpu = get_bb_overlay( + img_cpu, + gt_boxes, + (scale_x, scale_y), + (w_img, h_img), + color=(0, 255, 0), # green + ) + + if bbs_full_res is not None: + boxes = ( + bbs_full_res.cpu().tolist() + if torch.is_tensor(bbs_full_res) + else bbs_full_res + ) + # Annotate Box to image shape + for box in boxes: + x1, y1, x2, y2 = [ + max(0, int(box[0] * scale_x)), + max(0, int(box[1] * scale_y)), + min(w_img - 1, int(box[2] * scale_x)), + min(h_img - 1, int(box[3] * scale_y)), + ] + img_cpu = cv2.rectangle(img_cpu, (x1, y1), (x2, y2), (0, 0, 255), 2) + + cv2.imwrite(str(save_path), img_cpu) + del img_cpu + + def debug_save_crops(self, cropped_batch, frame_num): + """Saves the first 5 crops of a batch to the results directory.""" + debug_dir = self.result_dir / "debug_stages" / self._testMethodName / "crops" + # debug_dir = self.result_dir / "debug_stages" / self._testMethodName + debug_dir.mkdir(parents=True, exist_ok=True) + + # Only save for the first self.config.DEBUG_FRAME_LIMIT frames to avoid disk bloat + if frame_num > self.config.DEBUG_FRAME_LIMIT: + return + + for i, crop in enumerate(cropped_batch[: self.config.DEBUG_FRAME_LIMIT]): + # Convert GPU Tensor [C, H, W] -> NumPy [H, W, C] + if torch.is_tensor(crop): + # Reverse normalization (* 255) and permute to BGR + # img = (crop.squeeze(0).permute(1, 2, 0) * 255).byte().cpu().numpy() + temp = crop.squeeze(0) if crop.ndim == 4 else crop + # Flip the color channels from RGB to BGR before any extraction utilities run + # Flips only the first axis (channels) from [0, 1, 2] to [2, 1, 0] + temp = torch.flip(temp, dims=[0]) + img = temp.permute(1, 2, 0).contiguous().cpu().numpy() + # img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR) + else: + img = crop + + if img.dtype != np.uint8: + if img.max() <= 1.0: + img = (img * 255).clip(0, 255).astype(np.uint8) + else: + img = img.astype(np.uint8) + + cv2.imwrite(str(debug_dir / f"frame_{frame_num}_crop_{i}.jpg"), img) + + del img + + def debug_save_img(self, frame_source, frame_num): + debug_dir = self.result_dir / "debug_stages" / self._testMethodName / "img" + debug_dir.mkdir(parents=True, exist_ok=True) + + if frame_num > self.config.DEBUG_FRAME_LIMIT: + return + + # Download/Copy the frame + if torch.is_tensor(frame_source): + # .contiguous() is CRITICAL here to fix the "shredded" look + temp = frame_source.squeeze(0) if frame_source.ndim == 4 else frame_source + img_cpu = temp.permute(1, 2, 0).contiguous().cpu().numpy() + elif hasattr(frame_source, "download"): + img_cpu = frame_source.download() + else: + img_cpu = np.ascontiguousarray(frame_source) + + # Fix Shape: restore spatial grid if flattened + if img_cpu.ndim == 3 and img_cpu.shape[0] == 1: + img_cpu = img_cpu.reshape((self.resize_h, self.resize_w, 3)) + + # Fix Visibility: ONLY multiply if it's actually floating point + # If uint8 is multiplied by 255, it wraps around and creates "neon" colors + if img_cpu.dtype != np.uint8: + if img_cpu.max() <= 1.0: + img_cpu = (img_cpu * 255).clip(0, 255).astype(np.uint8) + else: + img_cpu = img_cpu.astype(np.uint8) + + # Color Space: Standardize to BGR for imwrite + if len(img_cpu.shape) == 3: + pass + else: + img_cpu = cv2.cvtColor(img_cpu, cv2.COLOR_GRAY2BGR) + + cv2.imwrite(str(debug_dir / f"analysis_{frame_num:04d}.jpg"), img_cpu) + del img_cpu + + +class GeneralObjectDetector(BaseObjectDetector): + def initialize(self): + super().initialize() + + if self.device_input == "cuda": + self.gpu_id = 0 + self.device_index = f"cuda:{self.gpu_id}" + self.inference_stream = torch.cuda.Stream() + + self.gpu_float_staging = torch.empty( + (1, 3, self.frame_height, self.frame_width), + dtype=torch.float16, + device=self.device_index, + ) + + if self.timer_enabled: + self.det_start, self.det_end = ( + torch.cuda.Event(enable_timing=True), + torch.cuda.Event(enable_timing=True), + ) + else: + self.device_index = "cpu" + + def run( + self, device_frame, overall_frame_num, frame_in_clip_count=0, gt_boxes=None + ): + if self.config.DETECTION_TYPE == "motion": + main_app_logger.info( + "[SKIP] Invalid type (motion) for GeneralObjectDetector!" + ) + return + + metrics = { + "sf_time": 0, + "roi_time": 0, + "det_time": 0, + "bbs": None, + "batch_density": 1, + } + inf_data = {} + bbs_full_res = None + motion_detected = True # Uses all frames for evaluation + inf_data["frameNum"] = overall_frame_num + + # Format BBs for Detection + merged, det_frame = self.format_bbs_and_frame_4_detection( + bbs_full_res, device_frame + ) + + try: + if ( + self.config.DEBUG_FLAG + and overall_frame_num <= self.config.DEBUG_FRAME_LIMIT + ): + self.debug_save_mask( + det_frame, overall_frame_num, rois=merged, gt_boxes=gt_boxes + ) + + if not self.config.DISABLE_DETECTION: + # --- 3. MODEL INFERENCE TIMING BLOCK --- + if self.device_input == "cuda" and self.timer_enabled: + self.det_start.record(self.inference_stream) + elif self.timer_enabled: + t_start = time.perf_counter() + + metadata, _ = self.get_detections( + det_frame, + frame_in_clip_count, + device_input=self.config.device_input, + ) + + # num_objs = len(metadata.keys()) + + if self.device_input == "cuda" and self.timer_enabled: + self.det_end.record(self.inference_stream) + # self.inference_stream.synchronize() + + # Lock-free check: wait for event completion without blocking the CPU GIL + while not self.det_end.query(): + # Yield GIL to let file-writers and thread-pools work + time.sleep(0.001) + # self.det_end.synchronize() + # Leverages the hardware driver scheduler without thread polling overhead + # if hasattr(self, "inference_stream"): + # self.inference_stream.synchronize() + + # Full-frame YOLO baseline tracks the elapsed time from t_start on page 20, line 1273 + metrics["det_time"] = self.det_start.elapsed_time(self.det_end) + + elif self.timer_enabled: + # CPU Path Execution: Must use standard wall-clock timing loops to avoid CUDA Event errors + metrics["det_time"] = (time.perf_counter() - t_start) * 1000.0 + + except Exception: + traceback.print_exc() + finally: + del merged, bbs_full_res + return metrics, metadata, det_frame, motion_detected + + @torch.inference_mode() + def get_detections(self, frame, frame_id, device_input="cuda"): + metadata = {} + num_objs = 0 + + with torch.inference_mode(): + if isinstance(frame, torch.Tensor): + if frame.ndim == 3 and frame.shape[-1] == 3: + with self.compiled_no_grad_gate: + # 1. Transform from [4320, 7680, 3] to [3, 4320, 7680] + # 2. Unsqueeze(0) converts it to the required [1, 3, 4320, 7680] shape format + frame_inference = ( + frame.permute(2, 0, 1).contiguous().unsqueeze(0) + ) + else: + frame_inference = frame.contiguous() + else: + frame_inference = frame + + H, W = frame_inference.shape[-2:] + target_imgsz = (int(H), int(W)) + scale_display_x = self.resize_w / W # 640 / 8192 + scale_display_y = self.resize_h / H # 640 / 4608 + results = self.run_model( + frame_inference, + imgsz=target_imgsz, + batch=1, + device_input=device_input, + stream=STREAM_ARG, + ) + + # Extract full resolution detections + if results and len(results) > 0: + boxes = results[0].boxes + if boxes is not None and len(boxes) > 0: + # OPTIMIZATION: Download coordinates as a unified batch array block to drop PCIe latency + batch_coords = boxes.xywh.cpu().numpy() + batch_cls = boxes.cls.cpu().numpy().astype(np.int32) + batch_conf = boxes.conf.cpu().numpy() + # for idx, box in enumerate(boxes): + # # coords = box.xywh[0].cpu().tolist() # [x_center, y_center, width, height] + # # cls_id = int(box.cls[0].cpu().item()) + # # conf = float(box.conf[0].cpu().item()) + # coords = ( + # box.xywh.cpu().squeeze().tolist() + # ) # Converts [x_center, y_center, w, h] safely + # cls_id = int(box.cls.cpu().item()) + # class_name = self.label_source[cls_id] + # confidence = float(box.conf.cpu().item()) + for idx in range(len(batch_coords)): + coords = batch_coords[idx] + cls_id = batch_cls[idx] + class_name = self.label_source[cls_id] + confidence = float(batch_conf[idx]) + + # Guard against un-squeezed structural lists + if isinstance(coords[0], list): + coords = coords[0] + + # Convert center bounds coordinates back to upper-left origin layout standard + # and scale to 640x640 + disp_x = (coords[0] - (coords[2] / 2.0)) * scale_display_x + disp_y = (coords[1] - (coords[3] / 2.0)) * scale_display_y + disp_w = coords[2] * scale_display_x + disp_h = coords[3] * scale_display_y + + # ---------------------------------- + # TODO: Need function, same for SF and non-SF + if disp_w > 2 and disp_h > 2: + # Resized + object_res = [ + int(disp_x), # int(abs_x1 * scale_x), + int(disp_y), # int(abs_y1 * scale_y), + int(disp_h), # int(height * scale_y), + int(disp_w), # int(width * scale_x), + class_name, + confidence, + int(self.resize_h), + int(self.resize_w), + ] + + obj_id = len(metadata) + num_objs += 1 + framenum_str = f"{frame_id:04d}_{obj_id:04d}" + metadata[framenum_str] = { + "frameId": int(frame_id), + "bbId": framenum_str, + "bbox": { + "x": int(object_res[0]), + "y": int(object_res[1]), + "height": int(object_res[2]), + "width": int(object_res[3]), + "object": str(object_res[4]), + "object_det": { + "confidence": float(object_res[5]), + "frameH": int(object_res[6]), + "frameW": int(object_res[7]), + }, + }, + } + # ---------------------------------- + + if "boxes" in locals(): + del boxes + if "results" in locals(): + del results + + del frame, frame_inference + if "cuda" in device_input: + torch.cuda.empty_cache() + return metadata, num_objs + + +# Create a dummy object representing the interface +class GPUHolder: + def __init__(self, interface): + self.__cuda_array_interface__ = interface + + +class SmartFilteringObjectDetector(BaseObjectDetector): + def initialize(self): + super().initialize() + + self.scale_x = self.frame_width / self.resize_w + self.scale_y = self.frame_height / self.resize_h + + self.min_roi_w = int(self.config.ROI_MIN_AREA_RATIO * self.resize_w) + self.min_roi_h = int(self.config.ROI_MIN_AREA_RATIO * self.resize_h) + self.max_roi_w = int(self.resize_w * self.config.ROI_MAX_RELATIVE_SIZE_RATIO) + self.max_roi_h = int(self.resize_h * self.config.ROI_MAX_RELATIVE_SIZE_RATIO) + self.max_cached_elements = 100 + # Pre-allocate a single static tensor to hold the non-zero indices. + # For a 640x640 mask, there are at most 409,600 pixels. + # This pre-allocates a static ~3.2MB buffer in VRAM once. + self.coords_scratchpad = torch.empty( + (self.config.MODEL_H * self.config.MODEL_W, 2), + dtype=torch.long, + device="cuda", + ) + + # Pre-allocate a static box container for up to 100 candidate ROIs + # Sized [100, 4] for [x1, y1, x2, y2] + self.static_boxes_out = torch.empty( + (self.max_cached_elements, 4), dtype=torch.float32, device="cuda" + ) + + # Default Kernels + self.dilate_kernel = cv2.getStructuringElement( + cv2.MORPH_ELLIPSE, + # cv2.MORPH_RECT, + (self.config.DILATE_KERNEL_SIZE, self.config.DILATE_KERNEL_SIZE), + ) + # self.dilate_kernel_for_enhanced_mask = np.ones((15,15), np.uint8) # 5, 5) (21, 21) + self.dilate_kernel_for_enhanced_mask = cv2.getStructuringElement( + cv2.MORPH_ELLIPSE, + # cv2.MORPH_RECT, + ( + self.config.BKGD_SUB_INCLUDE_HISTORY_DILATE_KERNEL_SIZE, + self.config.BKGD_SUB_INCLUDE_HISTORY_DILATE_KERNEL_SIZE, + ), + ) + + # Determine minimum contour size relative to frame resolution + self.min_contour_area = int((self.min_roi_h) * (self.min_roi_h)) # 207 + + self.dist_thresh_8k = max( + self.config.ROI_DISTANCE_THRESH_RATIO * self.frame_width, + self.config.ROI_DISTANCE_THRESH_RATIO * self.frame_height, + ) + multiplier = 2.0 if self.device_input == "cpu" else 1.0 + self.dist_thresh_640 = ( + max( + self.config.ROI_DISTANCE_THRESH_RATIO * self.resize_w, + self.config.ROI_DISTANCE_THRESH_RATIO * self.resize_h, + ) + * multiplier + ) # 0.05 * self.resize_w + + if not hasattr(self, "static_canvas_scratch"): + self.static_canvas_scratch = torch.full( + (640, 640, 3), + fill_value=114, + dtype=torch.uint8, + device=self.device_input, + ) + if self.device_input == "cuda": + self.init_gpu_pipeline() + else: + self.init_cpu_pipeline() + + self.scales_tensor = torch.tensor( + [self.scale_x, self.scale_y, self.scale_x, self.scale_y], + device=self.device_index, + ) + + self.fixed_inference_batch = torch.empty( + ( + self.config.MODEL_MAX_BATCH_SIZE, + 3, + self.config.MODEL_H, + self.config.MODEL_W, + ), + dtype=torch.half, + device=self.device_input, + ) + + def run( + self, device_frame, overall_frame_num, frame_in_clip_count=0, gt_boxes=None + ): + if self.device_input == "cuda": + return self.run_gpu_pipeline( + device_frame, overall_frame_num, frame_in_clip_count + ) + else: + return self.run_cpu_pipeline( + device_frame, overall_frame_num, frame_in_clip_count + ) + + # v1 + # def get_detections_v1( + # self, frame, frame_id, device_input="cuda", merged=None, thickness=2 + # ): + # metadata = {} + # if merged is None or len(merged) == 0: + # return metadata, 0 + + # is_cuda = device_input == "cuda" + # num_objs = 0 + + # # FIX 1: Pre-cache class property values onto local function registers + # # Bypasses repeated slow overhead parsing blocks inside the hot box-loop + # max_batch_size = getattr(self.config, "MODEL_MAX_BATCH_SIZE", 64) + # target_crop_size = self.config.MODEL_W + # resize_w_factor = self.resize_w / self.frame_width + # resize_h_factor = self.resize_h / self.frame_height + # resize_h_int = int(self.resize_h) + # resize_w_int = int(self.resize_w) + + # if is_cuda and isinstance(frame, torch.Tensor): + # src_tensor = frame.squeeze(0) if frame.ndim == 4 else frame + # if src_tensor.shape[-1] == 3: + # src_tensor = src_tensor.permute(2, 0, 1) + # src_h, src_w = src_tensor.shape[-2:] + # else: + # src_tensor = np.asarray(frame) + # if src_tensor.ndim == 4: + # src_tensor = src_tensor[0] + # src_h, src_w = src_tensor.shape[:2] + + # results_pool = [] + # patch_coordinates = [] + # patch_idx = 0 + + # # ----------------------------------------------------------------- + # # STEP 1: VECTORIZED SWEEP & DIRECT-WRITE MATRIX POOL + # # ----------------------------------------------------------------- + # roi_patches = [] + # for box in merged: + # if patch_idx >= max_batch_size: + # break + + # # FIX 2: Bypassing hasattr() check loop hooks entirely + # # Directly extract standard bounding elements as fast local scalars + # box_data = box.tolist() if hasattr(box, "tolist") else box + # x1_raw, y1_raw, x2_raw, y2_raw = ( + # box_data[0], + # box_data[1], + # box_data[2], + # box_data[3], + # ) + + # w_raw = x2_raw - x1_raw + # h_raw = y2_raw - y1_raw + # cx = (x1_raw + x2_raw) * 0.5 + # cy = (y1_raw + y2_raw) * 0.5 + + # w_cushioned = w_raw + (target_crop_size * 0.1) + # h_cushioned = h_raw + (target_crop_size * 0.1) + + # crop_w = max(w_cushioned, target_crop_size) + # crop_h = max(h_cushioned, target_crop_size) + + # x1 = cx - (crop_w / 2.0) + # y1 = cy - (crop_h / 2.0) + # x2 = cx + (crop_w / 2.0) + # y2 = cy + (crop_h / 2.0) + + # shift_left = max(0.0, 0.0 - x1) + # shift_right = max(0.0, x2 - src_w) + # x1 += shift_left - shift_right + # x2 += shift_left - shift_right + + # shift_top = max(0.0, 0.0 - y1) + # shift_bottom = max(0.0, y2 - src_h) + # y1 += shift_top - shift_bottom + # y2 += shift_top - shift_bottom + + # x1, y1 = max(0, int(x1)), max(0, int(y1)) + # x2, y2 = min(src_w, int(x2)), min(src_h, int(y2)) + + # box_w, box_h = x2 - x1, y2 - y1 + # if box_w < 8 or box_h < 8: + # continue + + # scale = min(target_crop_size / box_w, target_crop_size / box_h) + # nw, nh = int(max(1, box_w * scale)), int(max(1, box_h * scale)) + # dx = (target_crop_size - nw) // 2 + # dy = (target_crop_size - nh) // 2 + + # if is_cuda and isinstance(src_tensor, torch.Tensor): + # # with torch.no_grad(): + # crop = src_tensor[:, y1:y2, x1:x2] + # crop_resized = F.interpolate( + # crop.unsqueeze(0), + # size=(nh, nw), + # mode="nearest", + # ).squeeze(0) + + # self.fixed_inference_batch[patch_idx].fill_(114.0) + # self.fixed_inference_batch[patch_idx][ + # :, dy : dy + nh, dx : dx + nw + # ].copy_(crop_resized, non_blocking=True) + + # else: + # crop = src_tensor[y1:y2, x1:x2] + # crop_resized = cv2.resize( + # crop, (nw, nh), interpolation=cv2.INTER_NEAREST + # ) + # padded_canvas = np.empty( + # (target_crop_size, target_crop_size, 3), dtype=np.uint8 + # ) + # padded_canvas.fill(114) + # padded_canvas[dy : dy + nh, dx : dx + nw] = crop_resized + + # self.fixed_inference_batch[patch_idx].copy_( + # torch.from_numpy(padded_canvas).permute(2, 0, 1), non_blocking=True + # ) + + # if self.debug_frame_limit > -1: + # roi_patches.append(self.fixed_inference_batch[patch_idx]) + # patch_coordinates.append((x1, y1, box_w, box_h, scale, dx, dy)) + # patch_idx += 1 + + # if patch_idx == 0: + # return {}, 0 + + # if ( + # self.debug_frame_limit > -1 + # ): # and self.config.DEBUG_FLAG and hasattr(self, "debug_save_crops") and len(roi_patches) > 0: + # self.debug_save_crops(roi_patches, frame_id) + # roi_patches = [] + + # # ----------------------------------------------------------------- + # # STEP 2: INSTANT NON-BLOCKING SUB-SLICE MODEL INGESTION + # # ----------------------------------------------------------------- + # # with torch.inference_mode(): + # inference_batch = self.fixed_inference_batch[:patch_idx].clone() + # batch_res = self.run_model( + # inference_batch, + # imgsz=(target_crop_size, target_crop_size), + # batch=patch_idx, + # device_input=device_input, + # stream=STREAM_ARG, + # ) + # results_pool.extend(batch_res) + + # if is_cuda and hasattr(self, "inference_stream"): + # self.inference_stream.synchronize() + # # ----------------------------------------------------------------- + # # OPTIMIZED STEP 3: TRUE BATCHED DEVICE HANDOFF (0ms LOCKS) + # # ----------------------------------------------------------------- + # main_xyxy_list = [] + # main_cls_list = [] + # main_conf_list = [] + # patch_mapping_indices = [] + + # # 1. Asynchronously collect the raw VRAM references from the model pool + # for idx, res in enumerate(results_pool): + # if res.boxes is not None and len(res.boxes) > 0: + # # Gather underlying torch.Tensor GPU pointer segments straight out of memory + # main_xyxy_list.append(res.boxes.data[:, 0:4]) + # main_cls_list.append(res.boxes.data[:, 5]) + # main_conf_list.append(res.boxes.data[:, 4]) + # # Track how many objects belong to this patch index to map them back later + # patch_mapping_indices.append((idx, len(res.boxes))) + + # if len(main_xyxy_list) == 0: + # return {}, 0 + + # # if len(main_xyxy_list) > 0: + # # with torch.inference_mode(): + # # 2. Vectorized GPU Concatenation + # # Stacks independent slices into uniform, single-pass matrices entirely on the GPU + # all_main_xyxy = torch.cat(main_xyxy_list, dim=0) + # all_main_clss = torch.cat(main_cls_list, dim=0) + # all_main_confs = torch.cat(main_conf_list, dim=0) + + # num_detected = int(all_main_xyxy.shape[0]) + # num_clss = int(all_main_clss.shape[0]) + # num_confs = int(all_main_confs.shape[0]) + + # if is_cuda: + # # Perform fast, non-blocking asynchronous streaming transfers across the PCIe bus + # self.pinned_cpu_xyxy[:num_detected].copy_(all_main_xyxy, non_blocking=True) + # cuda_int_clss = all_main_clss.to(torch.int32) + # self.pinned_cpu_clss[:num_clss].copy_(cuda_int_clss, non_blocking=True) + # self.pinned_cpu_confs[:num_confs].copy_(all_main_confs, non_blocking=True) + + # # Synchronize ONLY the specific inference stream handle right before reading on host + # # self.inference_stream.synchronize() + # if not hasattr(self, "_dma_fence_event"): + # self._dma_fence_event = torch.cuda.Event() + # self._dma_fence_event.record(self.inference_stream) + # self._dma_fence_event.synchronize() + + # all_cpu_xyxy = self.pinned_cpu_xyxy[:num_detected].numpy() + # all_cpu_clss = self.pinned_cpu_clss[:num_clss].numpy().flatten() + # all_cpu_confs = self.pinned_cpu_confs[:num_confs].numpy().flatten() + # else: + # all_cpu_xyxy = all_main_xyxy.cpu().numpy() + # all_cpu_clss = all_main_clss.cpu().numpy().astype(np.int32).flatten() + # all_cpu_confs = all_main_confs.cpu().numpy().flatten() + + # # Global tracking increment initialization + # global_box_ptr = 0 + # total_available_boxes = len(all_cpu_clss) + + # # 4. Map detections back to global metadata layout space using our scalar index pointers + # for idx, num_boxes in patch_mapping_indices: + # ox1, oy1, box_w, box_h, scale, dx, dy = patch_coordinates[idx] + + # for _ in range(num_boxes): + # if global_box_ptr >= total_available_boxes: + # break + + # lx1, ly1, lx2, ly2 = all_cpu_xyxy[global_box_ptr] + # class_id = int(all_cpu_clss[global_box_ptr]) + # # if class_id < len(self.label_source): + # try: + # if class_id >= 0 and class_id < len(self.label_source): + # class_name = self.label_source[class_id] + # else: + # class_name = "unknown" + # except Exception: + # traceback.print_exc() + + # confidence = float(all_cpu_confs[global_box_ptr]) + + # lx1_unpadded = lx1 - dx + # ly1_unpadded = ly1 - dy + # lx2_unpadded = lx2 - dx + # ly2_unpadded = ly2 - dy + + # global_x1 = ox1 + (lx1_unpadded / scale) + # global_y1 = oy1 + (ly1_unpadded / scale) + # global_x2 = ox1 + (lx2_unpadded / scale) + # global_y2 = oy1 + (ly2_unpadded / scale) + + # disp_x = int(global_x1 * resize_w_factor) + # disp_y = int(global_y1 * resize_h_factor) + # disp_x2 = int(global_x2 * resize_w_factor) + # disp_y2 = int(global_y2 * resize_h_factor) + + # disp_w = disp_x2 - disp_x + # disp_h = disp_y2 - disp_y + + # if disp_w > 2 and disp_h > 2 and class_name != "unknown": + # num_objs += 1 + # obj_id = num_objs - 1 + # framenum_str = f"{frame_id:04d}_{obj_id:04d}" + # metadata[framenum_str] = { + # "frameId": int(frame_id), + # "bbId": framenum_str, + # "bbox": { + # "x": disp_x, + # "y": disp_y, + # "height": disp_h, + # "width": disp_w, + # "object": class_name, + # "object_det": { + # "confidence": confidence, + # "frameH": resize_h_int, + # "frameW": resize_w_int, + # }, + # }, + # } + + # global_box_ptr += 1 + + # # Clean local tensor references to protect unmanaged memory scopes + # crop = None + # del ( + # crop, + # patch_coordinates, + # results_pool, + # main_xyxy_list, + # main_cls_list, + # main_conf_list, + # ) + # return metadata, num_objs + + # v2 + @torch.inference_mode() + def get_detections_v2( + self, frame, frame_id, device_input="cuda", merged=None, thickness=2 + ): + metadata = {} + if merged is None or len(merged) == 0: + return metadata, 0 + + num_boxes = merged.shape[0] + if num_boxes == 0: + return {}, 0 + + target_h, target_w = (self.config.MODEL_H, self.config.MODEL_W) + + # ========================================================================= + # STEP 1: VECTORIZED MATH FOR CUSHION & LETTERBOX PADDING + # ========================================================================= + + # 1a. Apply 10% Cushion to original boxes + cushion = target_w * 0.1 + + x1_t = (merged[:, 0] - cushion).clamp(min=0) + y1_t = (merged[:, 1] - cushion).clamp(min=0) + x2_t = (merged[:, 2] + cushion).clamp(max=self.frame_width) + y2_t = (merged[:, 3] + cushion).clamp(max=self.frame_height) + + # 1b. Calculate scaled dimensions to fit within target size (preserving aspect ratio) + box_w = (x2_t - x1_t).clamp(min=1) + box_h = (y2_t - y1_t).clamp(min=1) + + scale = torch.min(target_w / box_w, target_h / box_h) + + new_w = (box_w * scale).int() + new_h = (box_h * scale).int() + + pad_x = (target_w - new_w) // 2 + pad_y = (target_h - new_h) // 2 + + # ========================================================================= + # STEP 2: HIGH-SPEED CROPPING & RESIZING LOOP + # ========================================================================= + + # Ensure frame is CHW and float for F.interpolate + if frame.dim() == 3: + if frame.shape[2] == 3: + frame_chw = frame.permute(2, 0, 1).float() + else: + frame_chw = frame.float() + elif frame.dim() == 4: + frame_chw = frame.squeeze(0).float() + if frame_chw.shape[2] == 3: + frame_chw = frame_chw.permute(2, 0, 1) + else: + frame_chw = frame.float() + + # Determine correct gray padding value (114 for 0-255 range, 114/255 for 0-1 range) + gray_val = ( + 114.0 / 255.0 + if getattr(self, "normalize", False) or frame_chw.max() <= 1.0 + else 114.0 + ) + + padded_batch = torch.full( + (num_boxes, 3, target_h, target_w), + gray_val, + device=frame.device, + dtype=torch.float32, + ) + + # CRITICAL PERFORMANCE FIX: Extract tensors to fast Python lists + # This prevents the loop from halting to sync CPU/GPU on every single slice iteration + x1_c = x1_t.int().tolist() + y1_c = y1_t.int().tolist() + x2_c = x2_t.int().tolist() + y2_c = y2_t.int().tolist() + nw_c = new_w.tolist() + nh_c = new_h.tolist() + px_c = pad_x.tolist() + py_c = pad_y.tolist() + + for i in range(num_boxes): + # 1. Slice cushioned box + crop = frame_chw[:, y1_c[i] : y2_c[i], x1_c[i] : x2_c[i]].unsqueeze(0) + + # 2. Resize maintaining aspect ratio exactly once + crop_resized = F.interpolate( + crop, size=(nh_c[i], nw_c[i]), mode="bilinear", align_corners=False + ) + + # 3. Paste into the center of the padded gray canvas + padded_batch[ + i, :, py_c[i] : py_c[i] + nh_c[i], px_c[i] : px_c[i] + nw_c[i] + ] = crop_resized.squeeze(0) + + self.fixed_inference_batch[:num_boxes] = padded_batch.to( + self.fixed_inference_batch.dtype + ) + + # ========================================================================= + # STEP 3: MODEL INFERENCE + # ========================================================================= + batch_res = self.run_model( + self.fixed_inference_batch[:num_boxes], + imgsz=(target_h, target_w), + batch=num_boxes, + device_input=device_input, + stream=STREAM_ARG, + ) + + # ========================================================================= + # STEP 4: BATCHED COORDINATE TRANSLATION + # ========================================================================= + all_detections = [] + detection_to_crop_map = [] + + for i, res in enumerate(batch_res): + if res.boxes is not None and len(res.boxes) > 0: + all_detections.append(res.boxes.data) + detection_to_crop_map.extend([i] * len(res.boxes)) + + if not all_detections: + return {}, 0 + + all_detections_tensor = torch.cat(all_detections, dim=0) + detection_to_crop_map = torch.tensor( + detection_to_crop_map, device=merged.device, dtype=torch.long + ) + + # Coordinates are local to the 640x640 padded input + local_boxes = all_detections_tensor[:, :4] + + # Get the mapping variables for each specific detection + scale_map = scale[detection_to_crop_map] + pad_x_map = pad_x[detection_to_crop_map] + pad_y_map = pad_y[detection_to_crop_map] + orig_x1_map = x1_t[detection_to_crop_map] + orig_y1_map = y1_t[detection_to_crop_map] + + # 4a. Remove padding offset and rescale to original cushioned crop dimensions + unpadded_x1 = (local_boxes[:, 0] - pad_x_map) / scale_map + unpadded_y1 = (local_boxes[:, 1] - pad_y_map) / scale_map + unpadded_x2 = (local_boxes[:, 2] - pad_x_map) / scale_map + unpadded_y2 = (local_boxes[:, 3] - pad_y_map) / scale_map + + # 4b. Add original cushioned crop's top-left corner to get global 8K coordinates + global_x1 = unpadded_x1 + orig_x1_map + global_y1 = unpadded_y1 + orig_y1_map + global_x2 = unpadded_x2 + orig_x1_map + global_y2 = unpadded_y2 + orig_y1_map + + # 4c. Scale from 8K to 640x640 metadata space + meta_scale_x = self.resize_w / self.frame_width + meta_scale_y = self.resize_h / self.frame_height + + meta_x1 = global_x1 * meta_scale_x + meta_y1 = global_y1 * meta_scale_y + meta_x2 = global_x2 * meta_scale_x + meta_y2 = global_y2 * meta_scale_y + + # ========================================================================= + # STEP 5: METADATA FORMATTING + # ========================================================================= + all_confs = all_detections_tensor[:, 4].cpu().numpy() + all_cls_ids = all_detections_tensor[:, 5].cpu().numpy().astype(int) + meta_boxes_cpu = ( + torch.stack([meta_x1, meta_y1, meta_x2, meta_y2], dim=1).cpu().numpy() + ) + + num_objs = 0 + for i in range(len(all_detections_tensor)): + class_id = all_cls_ids[i] + if class_id < 0 or class_id >= len(self.label_source): + continue + + disp_x, disp_y, disp_x2, disp_y2 = meta_boxes_cpu[i] + disp_w = disp_x2 - disp_x + disp_h = disp_y2 - disp_y + + if disp_w > 2 and disp_h > 2: + num_objs += 1 + obj_id = num_objs - 1 + framenum_str = f"{int(frame_id):04d}_{obj_id:04d}" + metadata[framenum_str] = { + "frameId": int(frame_id), + "bbId": framenum_str, + "bbox": { + "x": int(disp_x), + "y": int(disp_y), + "height": int(disp_h), + "width": int(disp_w), + "object": self.label_source[class_id], + "object_det": { + "confidence": float(all_confs[i]), + "frameH": int(self.resize_h), + "frameW": int(self.resize_w), + }, + }, + } + + del all_detections_tensor + return metadata, num_objs + + # v3 - reduce memory footprint + @torch.inference_mode() + def get_detections( + self, frame, frame_id, device_input="cuda", merged=None, thickness=2 + ): + metadata = {} + if merged is None or len(merged) == 0: + return metadata, 0 + + num_boxes = merged.shape[0] + if num_boxes == 0: + return {}, 0 + + target_h, target_w = (self.config.MODEL_H, self.config.MODEL_W) + + # ========================================================================= + # STEP 1: VECTORIZED MATH FOR CUSHION & LETTERBOX PADDING + # ========================================================================= + + # 1a. Apply 10% Cushion to original boxes + cushion = target_w * 0.1 + + x1_t = (merged[:, 0] - cushion).clamp(min=0).detach().cpu() + y1_t = (merged[:, 1] - cushion).clamp(min=0).detach().cpu() + x2_t = (merged[:, 2] + cushion).clamp(max=self.frame_width).detach().cpu() + y2_t = (merged[:, 3] + cushion).clamp(max=self.frame_height).detach().cpu() + + # 1b. Calculate scaled dimensions to fit within target size (preserving aspect ratio) + box_w = (x2_t - x1_t).clamp(min=1).detach().cpu() + box_h = (y2_t - y1_t).clamp(min=1).detach().cpu() + + scale = torch.min(target_w / box_w, target_h / box_h).detach().cpu() + + new_w = (box_w * scale).int() + new_h = (box_h * scale).int() + + pad_x = (target_w - new_w) // 2 + pad_y = (target_h - new_h) // 2 + + # ========================================================================= + # STEP 2: HIGH-SPEED CROPPING & RESIZING LOOP + # ========================================================================= + + # Ensure frame is CHW and float for F.interpolate + if frame.dim() == 3: + if frame.shape[2] == 3: + # frame_chw = frame.permute(2, 0, 1).float() + # Permute is just a "view" metadata change (0ms, 0 VRAM allocation) + permuted_view = frame.permute(2, 0, 1) + + # Copy and cast directly into our pre-allocated static float buffer in-place! + # This allocates 0 MB of new memory! + self.gpu_float_staging.copy_(permuted_view, non_blocking=True) + + # Now divide by 255.0 in-place to normalize (reuses the exact same float32 memory) + frame_chw = self.gpu_float_staging[0] # .div_(255.0) + else: + frame_chw = frame.float() + elif frame.dim() == 4: + frame_chw = frame.squeeze(0).float() + if frame_chw.shape[2] == 3: + frame_chw = frame_chw.permute(2, 0, 1) + else: + frame_chw = frame.float() + + # Determine correct gray padding value (114 for 0-255 range, 114/255 for 0-1 range) + gray_val = ( + 114.0 / 255.0 + if getattr(self, "normalize", False) or frame_chw.max() <= 1.0 + else 114.0 + ) + + # padded_batch = torch.full( + # (num_boxes, 3, target_h, target_w), + # gray_val, + # device=frame.device, + # dtype=torch.float32, + # ) + + # CRITICAL PERFORMANCE FIX: Extract tensors to fast Python lists + # This prevents the loop from halting to sync CPU/GPU on every single slice iteration + x1_c = x1_t.int().tolist() + y1_c = y1_t.int().tolist() + x2_c = x2_t.int().tolist() + y2_c = y2_t.int().tolist() + nw_c = new_w.tolist() + nh_c = new_h.tolist() + px_c = pad_x.tolist() + py_c = pad_y.tolist() + + for i in range(num_boxes): + # 1. Slice cushioned box + crop = frame_chw[:, y1_c[i] : y2_c[i], x1_c[i] : x2_c[i]].unsqueeze(0) + + # 2. Resize maintaining aspect ratio exactly once + crop_resized = F.interpolate( + crop, size=(nh_c[i], nw_c[i]), mode="bilinear", align_corners=False + ) + + # 3. Paste into the center of the padded gray canvas + # padded_batch[ + # i, :, py_c[i] : py_c[i] + nh_c[i], px_c[i] : px_c[i] + nw_c[i] + # ] = crop_resized.squeeze(0) + self.fixed_inference_batch[ + i, :, py_c[i] : py_c[i] + nh_c[i], px_c[i] : px_c[i] + nw_c[i] + ] = crop_resized.squeeze(0) + + # self.fixed_inference_batch[:num_boxes] = padded_batch.to( + # self.fixed_inference_batch.dtype + # ) + + # ========================================================================= + # STEP 3: MODEL INFERENCE + # ========================================================================= + + # ========================================================================= + # STEP 4: BATCHED COORDINATE TRANSLATION + # ========================================================================= + # all_detections = [] + # detection_to_crop_map = [] + num_objs = 0 + meta_scale_x = self.resize_w / self.frame_width + meta_scale_y = self.resize_h / self.frame_height + + with torch.no_grad(): + batch_res = self.run_model( + self.fixed_inference_batch[:num_boxes], + imgsz=(target_h, target_w), + batch=num_boxes, + device_input=device_input, + stream=STREAM_ARG, + ) + + for i, res in enumerate(batch_res): + if res.boxes is None or len(res.boxes) == 0: + del res + continue + + # Move data to CPU immediately to free VRAM + local_boxes = res.boxes.data.detach().cpu() + + # Get the mapping variables for each specific detection + scale_map = scale[i] + pad_x_map = pad_x[i] + pad_y_map = pad_y[i] + orig_x1_map = x1_t[i] + orig_y1_map = y1_t[i] + + # 4a. Remove padding offset and rescale to original cushioned crop dimensions + unpadded_x1 = (local_boxes[:, 0] - pad_x_map) / scale_map + unpadded_y1 = (local_boxes[:, 1] - pad_y_map) / scale_map + unpadded_x2 = (local_boxes[:, 2] - pad_x_map) / scale_map + unpadded_y2 = (local_boxes[:, 3] - pad_y_map) / scale_map + + # 4b. Add original cushioned crop's top-left corner to get global 8K coordinates + global_x1 = unpadded_x1 + orig_x1_map + global_y1 = unpadded_y1 + orig_y1_map + # global_x2 = unpadded_x2 + orig_x1_map + # global_y2 = unpadded_y2 + orig_y1_map + + # 4c. Scale from 8K to 640x640 metadata space + meta_x1 = global_x1 * meta_scale_x + meta_y1 = global_y1 * meta_scale_y + # meta_x2 = global_x2 * meta_scale_x + # meta_y2 = global_y2 * meta_scale_y + meta_w = (unpadded_x2 - unpadded_x1) * meta_scale_x + meta_h = (unpadded_y2 - unpadded_y1) * meta_scale_y + + # ========================================================================= + # STEP 5: METADATA FORMATTING + # ========================================================================= + # Format metadata + for j in range(len(local_boxes)): + if meta_w[j] > 2 and meta_h[j] > 2: + class_id = int(local_boxes[j, 5]) + if 0 <= class_id < len(self.label_source): + framenum_str = f"{int(frame_id):04d}_{num_objs:04d}" + metadata[framenum_str] = { + "frameId": int(frame_id), + "bbId": framenum_str, + "bbox": { + "x": int(meta_x1[j]), + "y": int(meta_y1[j]), + "height": int(meta_h[j]), + "width": int(meta_w[j]), + "object": self.label_source[class_id], + "object_det": { + "confidence": float(local_boxes[j, 4]), + "frameH": int(self.resize_h), + "frameW": int(self.resize_w), + }, + }, + } + num_objs += 1 + + # Explicitly delete tensors to free memory inside the loop + del res, local_boxes + + del batch_res + self.fixed_inference_batch.fill_(gray_val) + + if "cuda" in device_input: + torch.cuda.empty_cache() + return metadata, num_objs + + # GPU ------------------------------------------------ + + def init_gpu_pipeline(self): + self.gpu_id = 0 + self.inference_stream = torch.cuda.Stream() + + if self.timer_enabled: + self.sf_start, self.sf_end = ( + torch.cuda.Event(enable_timing=True), + torch.cuda.Event(enable_timing=True), + ) + self.roi_start, self.roi_end = ( + torch.cuda.Event(enable_timing=True), + torch.cuda.Event(enable_timing=True), + ) + self.det_start, self.det_end = ( + torch.cuda.Event(enable_timing=True), + torch.cuda.Event(enable_timing=True), + ) + + # --- START: FUSED KERNEL COMPILATION --- + # This CUDA C++ kernel fuses a 3x3 Box Blur and a binary threshold (value: 50). + # A fused dilation is very complex; we apply it separately for correctness. + # This still reduces 3 kernel launches (Blur, Thresh, Dilate) to 2 (Fused, Dilate). + fused_blur_thresh_kernel_code = r""" + extern "C" __global__ + void fused_blur_thresh(const unsigned char* src, unsigned char* dst, int width, int height, int src_step, int dst_step) { + int x = blockIdx.x * blockDim.x + threadIdx.x; + int y = blockIdx.y * blockDim.y + threadIdx.y; + + if (x >= width || y >= height) return; + + // 1. Fused 3x3 Box Blur + float sum = 0.0f; + int count = 0; + for (int dy = -1; dy <= 1; ++dy) { + for (int dx = -1; dx <= 1; ++dx) { + int nx = x + dx; + int ny = y + dy; + if (nx >= 0 && nx < width && ny >= 0 && ny < height) { + sum += src[ny * src_step + nx]; + count++; + } + } + } + float blurred_val = sum / count; + + // 2. Fused Threshold + unsigned char output_val = (blurred_val > 50.0f) ? 255 : 0; + + // Write the final result + dst[y * dst_step + x] = output_val; + } + """ + self.fused_blur_thresh_kernel = cupy.RawKernel( + fused_blur_thresh_kernel_code, "fused_blur_thresh" + ) + + # This CUDA C++ kernel fuses a 3x3 Box Blur, a binary threshold (50), and a 3x3 Dilation. + # fused_3_in_1_kernel_code = r''' + # #define TILE_DIM 16 + # #define BLOCK_DIM 16 + + # extern "C" __global__ + # void fused_btd(const unsigned char* src, unsigned char* dst, int width, int height, int src_step, int dst_step) { + + # // Shared memory for the source tile and the intermediate thresholded tile + # __shared__ unsigned char s_src_tile[TILE_DIM + 2][TILE_DIM + 2]; + # __shared__ unsigned char s_thresh_tile[TILE_DIM][TILE_DIM]; + + # int tx = threadIdx.x; + # int ty = threadIdx.y; + # int gx = blockIdx.x * TILE_DIM + tx; + # int gy = blockIdx.y * TILE_DIM + ty; + + # // Load source data into shared memory (including a 1-pixel halo) + # for (int i = ty; i < TILE_DIM + 2; i += BLOCK_DIM) { + # for (int j = tx; j < TILE_DIM + 2; j += BLOCK_DIM) { + # int load_x = gx - 1 + j; + # int load_y = gy - 1 + i; + # if (load_x >= 0 && load_x < width && load_y >= 0 && load_y < height) { + # s_src_tile[i][j] = src[load_y * src_step + load_x]; + # } else { + # s_src_tile[i][j] = 0; + # } + # } + # } + # __syncthreads(); + + # // --- 1. Fused Blur & Threshold --- + # if (tx < TILE_DIM && ty < TILE_DIM) { + # float sum = 0.0f; + # for (int dy = 0; dy <= 2; ++dy) { + # for (int dx = 0; dx <= 2; ++dx) { + # sum += s_src_tile[ty + dy][tx + dx]; + # } + # } + # float blurred_val = sum / 9.0f; + # s_thresh_tile[ty][tx] = (blurred_val > 50.0f) ? 255 : 0; + # } + # __syncthreads(); + + # // --- 2. Fused Dilation --- + # if (tx < TILE_DIM && ty < TILE_DIM && gx < width && gy < height) { + # unsigned char max_val = 0; + # for (int dy = -1; dy <= 1; ++dy) { + # for (int dx = -1; dx <= 1; ++dx) { + # int check_x = tx + dx; + # int check_y = ty + dy; + # if (check_x >= 0 && check_x < TILE_DIM && check_y >= 0 && check_y < TILE_DIM) { + # if (s_thresh_tile[check_y][check_x] > max_val) { + # max_val = s_thresh_tile[check_y][check_x]; + # } + # } + # } + # } + # dst[gy * dst_step + gx] = max_val; + # } + # } + # ''' + + # fused_3_in_1_kernel_code = r''' + # extern "C" __global__ + # void fused_btd(const unsigned char* src, unsigned char* dst, int width, int height, int src_step, int dst_step) { + # int x = blockIdx.x * blockDim.x + threadIdx.x; + # int y = blockIdx.y * blockDim.y + threadIdx.y; + + # if (x >= width || y >= height) return; + + # // --- STEP 1 & 2: 3x3 NEIGHBORHOOD BLUR & THRESHOLD --- + # // We compute the thresholded values of the local 3x3 neighborhood on the fly + # unsigned char local_thresh[3][3]; + + # for (int dy = -1; dy <= 1; ++dy) { + # for (int dx = -1; dx <= 1; ++dx) { + # int nx = x + dx; + # int ny = y + dy; + + # // Clamp coordinates to image edges safely + # nx = (nx < 0) ? 0 : ((nx >= width) ? width - 1 : nx); + # ny = (ny < 0) ? 0 : ((ny >= height) ? height - 1 : ny); + + # // Compute blur for coordinate (nx, ny) + # float sum = 0.0f; + # int count = 0; + # for (int k_dy = -1; k_dy <= 1; ++k_dy) { + # for (int k_dx = -1; k_dx <= 1; ++k_dx) { + # int k_nx = nx + k_dx; + # int k_ny = ny + k_dy; + + # k_nx = (k_nx < 0) ? 0 : ((k_nx >= width) ? width - 1 : k_nx); + # k_ny = (k_ny < 0) ? 0 : ((k_ny >= height) ? height - 1 : k_ny); + + # sum += src[k_ny * src_step + k_nx]; + # count++; + # } + # } + # float blurred_val = sum / (float)count; + + # // Threshold instantly + # local_thresh[dy + 1][dx + 1] = (blurred_val > 50.0f) ? 255 : 0; + # } + # } + + # // --- STEP 3: DILATE ON THRESHOLDED RESULTS --- + # unsigned char max_val = 0; + # for (int dy = 0; dy < 3; ++dy) { + # for (int dx = 0; dx < 3; ++dx) { + # if (local_thresh[dy][dx] > max_val) { + # max_val = local_thresh[dy][dx]; + # } + # } + # } + + # // Write the final dilate value safely to global memory + # dst[y * dst_step + x] = max_val; + # } + # ''' + fused_3_in_1_kernel_code = r""" + extern "C" __global__ + void fused_btd(const unsigned char* src, unsigned char* dst, int width, int height, int src_step, int dst_step) { + int x = blockIdx.x * blockDim.x + threadIdx.x; + int y = blockIdx.y * blockDim.y + threadIdx.y; + + if (x >= width || y >= height) return; + + // --- STEP 1 & 2: 17x17 BLUR & THRESHOLD --- + // 5x5 local neighborhood for the Dilation phase + unsigned char local_thresh[5][5]; + + // 5x5 Dilation radius (dy, dx from -2 to 2) + for (int dy = -2; dy <= 2; ++dy) { + for (int dx = -2; dx <= 2; ++dx) { + int nx = x + dx; + int ny = y + dy; + + // Clamp coordinates to image edges safely + nx = (nx < 0) ? 0 : ((nx >= width) ? width - 1 : nx); + ny = (ny < 0) ? 0 : ((ny >= height) ? height - 1 : ny); + + // 5x5 Blur radius (k_dy, k_dx from -8 to 8 (for 17x17)) + float sum = 0.0f; + int count = 0; + for (int k_dy = -2; k_dy <= 2; ++k_dy) { + for (int k_dx = -8; k_dx <= 8; ++k_dx) { + int k_nx = nx + k_dx; + int k_ny = ny + k_dy; + + k_nx = (k_nx < 0) ? 0 : ((k_nx >= width) ? width - 1 : k_nx); + k_ny = (k_ny < 0) ? 0 : ((k_ny >= height) ? height - 1 : k_ny); + + sum += src[k_ny * src_step + k_nx]; + count++; + } + } + float blurred_val = sum / (float)count; + + // Threshold instantly (offset dx, dy by +2 to fit in 0-4 array indices) + local_thresh[dy + 2][dx + 2] = (blurred_val > 50.0f) ? 255 : 0; + } + } + + // --- STEP 3: 5x5 DILATE ON THRESHOLDED RESULTS --- + unsigned char max_val = 0; + for (int dy = 0; dy < 5; ++dy) { + for (int dx = 0; dx < 5; ++dx) { + if (local_thresh[dy][dx] > max_val) { + max_val = local_thresh[dy][dx]; + } + } + } + + // Write the final dilate value safely to global memory + dst[y * dst_step + x] = max_val; + } + """ + + self.fused_3_in_1_kernel = cupy.RawKernel(fused_3_in_1_kernel_code, "fused_btd") + # --- END: FUSED KERNEL COMPILATION --- + + self.prepare_gpu_pipeline() + + def allocate_gpu(self): + """ + Allocates persistent GpuMat buffers and CUDA streams to + enable zero-copy GPU processing. + """ + self.device_index = f"cuda:{self.gpu_id}" + + # Safely extract the primitive compiled C++ function pointer out of CuPy's RawKernel + if hasattr(get_bounds_kernel, "kernel"): + self._raw_bounds_function = get_bounds_kernel.kernel + else: + # Fallback handle if utilizing an alternate CuPy execution wrapper mapping + self._raw_bounds_function = get_bounds_kernel + + ksize = (17, 17) + self._cuda_gaussian_filter = cv2.cuda.createGaussianFilter( + srcType=cv2.CV_8UC1, dstType=cv2.CV_8UC1, ksize=ksize, sigma1=0 + ) + + self.recycled_resize_mat = cv2.cuda.GpuMat( + self.resize_h, self.resize_w, cv2.CV_8UC3 + ) + # Pre-allocate double buffers for resizing + # self.recycled_resize_mat_A = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_8UC3) + # self.recycled_resize_mat_B = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_8UC3) + + # Track which buffer is active + self.use_buffer_A = True + + self.raw_mask = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_8UC1) + self.thresh_mask = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_8UC1) + self.clean_mask = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_8UC1) + self.d_blurred = cv2.cuda.GpuMat(self.clean_mask.size(), cv2.CV_8UC1) + + # Compile the kernel once at startup + # self._row_bounds_function = cupy.RawKernel(PROPAGATION_KERNEL_CODE, "get_row_bounds_fused") + + # self.fixed_inference_batch = torch.empty( + # ( + # self.config.MODEL_MAX_BATCH_SIZE, + # 3, + # self.config.MODEL_H, + # self.config.MODEL_W, + # ), + # dtype=torch.half, + # device="cuda", + # ) + + # self.gpu_float_staging = None + + self.gpu_float_staging = torch.empty( + (1, 3, self.frame_height, self.frame_width), + dtype=torch.float16, + device=self.device_index, + ) + # self.stream = cv2.cuda.Stream() + # self.ingest_stream = torch.cuda.Stream() + # self.inference_stream = torch.cuda.Stream() + self.bgs_stream = cv2.cuda.Stream() + # self.gpu_fullres_frame = cv2.cuda.GpuMat( + # self.frame_height, self.frame_width, cv2.CV_8UC3 + # ) + # self.resized_gpumat = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_8UC3) + # self.resized_frame = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_8UC3) + # self.resized_frame.setTo(0, self.bgs_stream) + # self.fgMask = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_8UC1) + self.prev_bkgd = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_8UC1) + if self.config.BKGD_SUB_INCLUDE_HISTORY_METHOD == "and": + self.prev_bkgd.setTo((1,)) + else: + self.prev_bkgd.setTo((0,)) + self.mask_history = deque( + maxlen=self.config.BKGD_SUB_INCLUDE_HISTORY_TEMPORAL_SIZE + ) + self.mask_history.append(self.prev_bkgd) + + self.gpu_threshold_dst_frame = cv2.cuda.GpuMat( + self.resize_h, self.resize_w, cv2.CV_8UC1 + ) + self.gpu_morphed_frame = cv2.cuda.GpuMat( + self.resize_h, self.resize_w, cv2.CV_8UC1 + ) + + self.upload_stream = cv2.cuda.Stream() + self.upload_event = cv2.cuda.Event() + + # self.queue_capacity = int(2 * self.target_fps) # 60 + self.num_buffers = int(2 * self.target_fps) # self.queue_capacity + 5 + self.gpu_buffer_pool = [ + cv2.cuda.GpuMat(self.frame_height, self.frame_width, cv2.CV_8UC3) + for _ in range(self.num_buffers) + ] + self.buffer_idx = 0 + + self.frame_buffer_pool = [ + torch.empty( + (3, self.frame_height, self.frame_width), + dtype=torch.uint8, + device="cuda", + ) + for _ in range(2) + ] + self.pool_idx = 0 + + # Create a matching pool of pinned host memory for the 8K frames + # self.host_buffer_pool = [ + # cv2.cuda.HostMem(self.frame_height, self.frame_width, cv2.CV_8UC3) + # for _ in range(self.num_buffers) + # ] + + # Create continuous buffers to prevent stride artifacts during 8K downloads + self.pinned_downloaded_resizedframe_np = cv2.cuda.createContinuous( + self.resize_h, self.resize_w, cv2.CV_8UC3 + ) + self.pinned_downloaded_frame_np = cv2.cuda.createContinuous( + self.resize_h, self.resize_w, cv2.CV_8UC1 + ) + cv2.cuda.createContinuous( + self.resize_h, self.resize_w, cv2.CV_8UC1, self.gpu_threshold_dst_frame + ) + cv2.cuda.createContinuous( + self.resize_h, self.resize_w, cv2.CV_8UC1, self.gpu_morphed_frame + ) + + # This prevents the AI thread from overwriting the encoder's data. + self.gpu_encoder_8k_buf = cv2.cuda.createContinuous( + self.frame_height, self.frame_width, cv2.CV_8UC3 + ) + + # Continuous allocation prevents stride/padding artifacts + self.gpu_display_frame = cv2.cuda.createContinuous( + self.disp_h, self.disp_w, cv2.CV_8UC3 + ) + + # Create a dedicated background stream for encoding tasks + self.encode_stream = cv2.cuda.Stream() + + # Allocate a permanent float32/float16 channel layout space directly on VRAM + # self.static_gpu_360p = torch.empty( + # (1, 3, self.disp_h, self.disp_w), + # dtype=torch.float32, + # device="cuda", + # ) + # self.static_gpu_byte_bchw = torch.empty( + # (1, 3, self.disp_h, self.disp_w), + # dtype=torch.uint8, + # device="cuda", + # ).contiguous() + + # Allocates a fixed memory space directly accessible by your GPU DMA engine + self.pinned_cpu_xyxy = torch.empty( + (self.config.MAX_DETECTIONS, 4), dtype=torch.float32, device="cpu" + ).pin_memory() + self.pinned_cpu_clss = torch.empty( + (self.config.MAX_DETECTIONS,), dtype=torch.int32, device="cpu" + ).pin_memory() + self.pinned_cpu_confs = torch.empty( + (self.config.MAX_DETECTIONS,), dtype=torch.float32, device="cpu" + ).pin_memory() + + self.cupy_structure = cupy.ones((3, 3), dtype=cupy.int32) # , order="C") + self._max_labels = 1024 # Cap maximum tracking elements per frame + # Pre-allocate static, persistent workspace array caches straight in VRAM + self._x1_pool = cupy.zeros((self._max_labels,), dtype=cupy.int32) + self._y1_pool = cupy.zeros((self._max_labels,), dtype=cupy.int32) + self._x2_pool = cupy.zeros((self._max_labels,), dtype=cupy.int32) + self._y2_pool = cupy.zeros((self._max_labels,), dtype=cupy.int32) + + # Pre-allocate the labeled output tensor space to avoid internal allocation churn + # Match your target resized canvas dimensions (e.g., 640x640) + self._labeled_scratch = cupy.empty( + (self.resize_h, self.resize_w), dtype=cupy.int32, order="C" + ) + + # Create two isolated tracking canvases to handle the ping-pong data stream + # self.static_host_canvases = [ + # np.zeros((self.disp_h, self.disp_w, 3), dtype=np.uint8), + # np.zeros((self.disp_h, self.disp_w, 3), dtype=np.uint8), + # ] + # self.canvas_selector = 0 + + # # Register BOTH buffers as page-locked memory + # cv2.cuda.registerPageLocked(self.static_host_canvases[0]) + # cv2.cuda.registerPageLocked(self.static_host_canvases[1]) + + def prepare_gpu_pipeline(self): + self.allocate_gpu() + + # Subtraction + # self.backSub_lock = threading.Lock() + # history = int(2 * self.target_fps) # 300 # int(5 * self.target_fps) + self.lr = self.config.BKGD_SUB_MOG2_LR # 1 / history + self.backSub = cv2.cuda.createBackgroundSubtractorMOG2( + history=self.config.BKGD_SUB_MOG2_HISTORY, # Clear ghosts of fast drones in ~2 seconds (2*fps) + varThreshold=int( + self.config.BKGD_SUB_MOG2_VARTHRESHOLD # 1.15 + ), # High threshold to ignore "shimmer" and compression noise # default 16 + # varThreshold=50, #self.config.BKGD_SUB_MOG2_VARTHRESHOLD, # High threshold to ignore "shimmer" and compression noise # default 16 + # CUDA implementation of MOG2 often requires a higher varThreshold to achieve the same "cleanliness" as the CPU (15-20%) + detectShadows=self.config.BKGD_SUB_MOG2_DETECTSHADOWS, # default True + ) + self.opencv_bgs_output = cv2.cuda.GpuMat( + self.resize_h, self.resize_w, cv2.CV_8UC1 + ) + self.opencv_bgs_dilate_output = cv2.cuda.GpuMat( + self.resize_h, self.resize_w, cv2.CV_8UC1 + ) + + # Force the GPU to match the CPU's background criteria limits + # self.backSub.setBackgroundRatio(0.05) # Standardize background matching speed + # self.backSub.setComplexityReductionThreshold(0.05) # Drop unstable low-variance noise regions + # self.backSub.setVarMin(4.0) # High-pass filter to erase micro-vibrations + + self.dilate_filter = cv2.cuda.createMorphologyFilter( + cv2.MORPH_DILATE, cv2.CV_8U, self.dilate_kernel + ) + self.dilate_filter_for_enhanced_mask = cv2.cuda.createMorphologyFilter( + cv2.MORPH_DILATE, cv2.CV_8UC1, self.dilate_kernel_for_enhanced_mask + ) + # # self.morph_kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5, 5)) + # self.morph_kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5)) + # self.morph_filter = cv2.cuda.createMorphologyFilter( + # cv2.MORPH_DILATE, cv2.CV_8UC1, self.morph_kernel + # ) + # self.labels_gpu = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_32S) + # self.labels_gpu = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_8U) + # self.labels_gpu.setTo(0, self.bgs_stream) + + def gpu_warmup(self): + """ + Comprehensive, non-blocking GPU warmup harness. + Pre-compiles CuPy Scipy labeling kernels, box-merging logic, + and TensorRT engine profiles without disk writing side effects. + """ + # import cv2 + # import torch + + self.warmup_stream = cv2.cuda.Stream() + + h, w = self.resize_h, self.resize_w + + # 1. Standard OpenCV CUDA Pre-processing Compilation + gpu_warmup_input_frame = cv2.cuda_GpuMat(h, w, cv2.CV_8U) + if gpu_warmup_input_frame is not None: + gpu_warmup_input_frame.setTo(255) + gpu_warmup_frame = cv2.cuda_GpuMat(h, w, cv2.CV_8U) + + cv2.cuda.resize( + gpu_warmup_input_frame, + (w, h), + stream=self.warmup_stream, + dst=gpu_warmup_frame, + interpolation=cv2.INTER_NEAREST, + ) + + gpu_threshold_dst_frame = cv2.cuda_GpuMat(h, w, cv2.CV_8U) + cv2.cuda.threshold( + gpu_warmup_frame, + self.config.THRESHOLD_VALUE, + self.config.THRESHOLD_MAX_VALUE, + cv2.THRESH_BINARY, + gpu_threshold_dst_frame, + self.warmup_stream, + ) + + gpu_morphed_frame = cv2.cuda_GpuMat(h, w, cv2.CV_8U) + self.dilate_filter.apply( + gpu_threshold_dst_frame, gpu_morphed_frame, self.warmup_stream + ) + active_stream_ptr = ( + self.bgs_stream.cudaPtr() if hasattr(self, "bgs_stream") else 0 + ) + self.warmup_stream.waitForCompletion() + + mock_mask = cupy.zeros((640, 640), dtype=cupy.uint8) + mock_mask[100:150, 100:150] = 1 # Draw a dummy blob + # mock_scratch = cupy.empty((640, 640), dtype=cupy.int32) + # mock_structure = cupy.ones((3, 3), dtype=cupy.int32) + + # Invoke once to trigger NVRTC compilation and cache the binary module to disk + # cupyx.scipy.ndimage.label(mock_mask, structure=self.cupy_structure, output=mock_scratch) + with cupy.cuda.ExternalStream(active_stream_ptr): + cupyx.scipy.ndimage.label( + mock_mask, structure=self.cupy_structure, output=self._labeled_scratch + ) + # cupy.cuda.stream.get_current_stream().synchronize() + cupy.cuda.ExternalStream(active_stream_ptr).synchronize() + main_app_logger.info("[WARMUP] CuPy SciPy Labeling kernels fully cached.") + + # 🚀 2. PIPELINE EXTENSION: Pre-allocate static canvas memories if missing + # if not hasattr(self, "static_canvas_scratch"): + # self.static_canvas_scratch = torch.full( + # (640, 640, 3), fill_value=114, dtype=torch.uint8, device="cuda" + # ) + + # 🚀 3. PIPELINE EXTENSION: Pre-compile AI Model and Box reduction pipelines + # Capture the original debug configuration state + original_debug_flag = getattr(self.config, "DEBUG_FLAG", False) + + try: + # Force the debug flag off during warmup loop to completely block debug_save_crops + self.config.DEBUG_FLAG = False + + # Construct a synthetic 8K model input canvas block on the GPU device + # Adjust dimensions if your raw source video maps differently than [8192, 8192, 3] + synthetic_8k_tensor = torch.zeros( + (self.frame_height, self.frame_width, 3), + dtype=torch.uint8, + device="cuda", + ) + + # Create a standard mock overlapping region block to exercise merge_boxes_gpu + # Shapes: [N, 4] -> format (x1, y1, x2, y2) + mock_overlapping_boxes = torch.tensor( + [ + [100.0, 100.0, 250.0, 250.0], + [102.0, 101.0, 248.0, 252.0], # Overlapping twin bounding box + [500.0, 500.0, 640.0, 640.0], + ], + dtype=torch.float32, + device="cuda", + ) + + # Run exactly 3 dummy steps to guarantee CuPy Scipy features and TensorRT allocations cache + main_app_logger.info( + "[WARMUP] Priming algorithm pipeline layers asynchronously..." + ) + for _ in range(3): + with torch.inference_mode(): + # Feed through the master detection utility function directly + # _, _ = self.get_detections_with_smart_filtering( + # frame=synthetic_8k_tensor, + # frame_id=0, + # device_input="cuda", + # merged=mock_overlapping_boxes, + # ) + self.get_detections( + frame=synthetic_8k_tensor, + frame_id=0, + device_input="cuda", + merged=mock_overlapping_boxes + if self.config.sf_enabled + else None, + ) + + # Hard fence sync to secure compilation layers across active CUDA contexts + # torch.cuda.synchronize() + main_app_logger.info( + "[WARMUP] Complete. All pipeline pathways completely compiled." + ) + + finally: + # Safely restore your original testing workflow debug constraints + self.config.DEBUG_FLAG = original_debug_flag + + # Release resources + del synthetic_8k_tensor, mock_overlapping_boxes + del ( + gpu_warmup_input_frame, + gpu_warmup_frame, + gpu_threshold_dst_frame, + gpu_morphed_frame, + ) + if hasattr(self, "warmup_stream"): + delattr(self, "warmup_stream") + + torch.cuda.empty_cache() + + def cleanup_gpu_v1(self): + """ + Explicitly releases all GPU-allocated memory to prevent + VRAM leaks in 8K concurrent streams. + """ + # Iterate through class attributes to explicitly release VRAM. + for attr_name in list(self.__dict__.keys()): + attr_value = getattr(self, attr_name) + + # Check if the attribute is a GpuMat + if isinstance(attr_value, cv2.cuda.GpuMat): + # 🏎️ Force the NVIDIA driver to deallocate this specific memory segment + attr_value.release() + setattr(self, attr_name, None) + main_app_logger.info(f"✅ Released GpuMat: {attr_name}") + + # if hasattr(self, "gpu_fullres_frame") and self.gpu_fullres_frame is not None: + # try: + # self.gpu_fullres_frame.release() + # except Exception: + # self.gpu_fullres_frame = None + + if hasattr(self, "gpu_morphed_frame") and self.gpu_morphed_frame is not None: + try: + self.gpu_morphed_frame.release() + except Exception: + self.gpu_morphed_frame = None + + # if hasattr(self, "labels_gpu") and self.labels_gpu is not None: + # try: + # self.labels_gpu.release() + # except Exception: + # self.labels_gpu = None + + if hasattr(self, "gpu_encoder_8k_buf") and self.gpu_encoder_8k_buf is not None: + try: + self.gpu_encoder_8k_buf.release() + except Exception: + self.gpu_encoder_8k_buf = None + + if hasattr(self, "gpu_display_frame") and self.gpu_display_frame is not None: + try: + self.gpu_display_frame.release() + except Exception: + self.gpu_display_frame = None + + if hasattr(self, "gpu_crop_batch"): + for mat in self.gpu_crop_batch: + if isinstance(mat, cv2.cuda.GpuMat): + mat.release() + self.gpu_crop_batch = [] + + # if hasattr(self, "stream"): + # self.stream.waitForCompletion() + + self.pinned_downloaded_resizedframe_np = None + self.gpu_threshold_dst_frame = None + self.gpu_morphed_frame = None + self.pinned_downloaded_frame_np = None + + # Handle specific buffers (like your Ping-Pong lists) + # if hasattr(self, "encode_buffers"): + # self.encode_buffers.clear() + + # Clear the BGS history + if hasattr(self, "mask_history"): + self.mask_history.clear() + + # Optional: Final flush of the CUDA caching allocator + if torch.cuda.is_available(): + torch.cuda.empty_cache() + + def apply_background_subtraction_gpu( + self, gpu_frame, include_history=True, method="and", stream=None + ): + stream = stream if isinstance(stream, cv2.cuda.Stream) else self.bgs_stream + + # raw_mask = self.backSub.apply( + # gpu_frame, + # # motion_input, + # float(self.lr), # 0.005, # float(self.lr), + # stream=stream, + # ) + self.backSub.apply( + image=gpu_frame, + fgmask=self.opencv_bgs_output, + learningRate=float(self.lr), + stream=stream, + ) + raw_mask = self.opencv_bgs_output + + if include_history: + # if self.config.BKGD_SUB_INCLUDE_HISTORY_METHOD == "and": + # self.prev_bkgd.setTo((1,)) + # else: + # self.prev_bkgd.setTo((0,)) + # If the deque is full, pop the oldest GpuMat and explicitly release it. + if len(self.mask_history) >= self.mask_history.maxlen: + old_mask = self.mask_history.popleft() + if old_mask is not None: + # It releases the VRAM held by the oldest mask. + old_mask.release() + + for m in list(self.mask_history): + # Dilate the historical mask on GPU + # dilated = self.dilate_filter_for_enhanced_mask.apply(m, stream=stream) + self.dilate_filter_for_enhanced_mask.apply( + src=m, dst=self.opencv_bgs_dilate_output, stream=stream + ) + + if method == "or": + # Bitwise OR on GPU + cv2.cuda.bitwise_or( + self.prev_bkgd, + self.opencv_bgs_dilate_output, + self.prev_bkgd, + stream=stream, + ) + else: + # Bitwise AND on GPU + cv2.cuda.bitwise_and( + self.prev_bkgd, + self.opencv_bgs_dilate_output, + self.prev_bkgd, + stream=stream, + ) + + self.mask_history.append(raw_mask.clone()) # .clone() + + raw_mask = cv2.cuda.bitwise_or( + raw_mask, self.prev_bkgd, stream=self.bgs_stream + ) + return raw_mask + + def get_sf_gpu_rois_v1( + self, device_frame, overall_frame_num, max_candidates=100, limit_640=1280 + ): + debug_frame_limit = self.debug_frame_limit + + if overall_frame_num <= debug_frame_limit: + stage_debug_dir = ( + self.result_dir / "debug_stages" / self._testMethodName / "roi_stages" + ) + stage_debug_dir.mkdir(parents=True, exist_ok=True) + + # 2. BRIDGE THE PYTORCH TO OPENCV VRAM GAP + if torch.is_tensor(device_frame): + h_raw, w_raw, ch = device_frame.shape + cuda_mem_ptr = device_frame.data_ptr() + cv_type = cv2.CV_8UC3 if ch == 3 else cv2.CV_8UC1 + row_step_bytes = device_frame.stride()[0] * device_frame.element_size() + src_gpu_mat = cv2.cuda.createGpuMatFromCudaMemory( + h_raw, w_raw, cv_type, cuda_mem_ptr, step=row_step_bytes + ) + else: + src_gpu_mat = device_frame + ch = src_gpu_mat.channels() + + if overall_frame_num <= debug_frame_limit: + src_cpu = src_gpu_mat.download() + if ch == 3: + src_cpu = cv2.cvtColor(src_cpu, cv2.COLOR_RGB2BGR) + cv2.imwrite( + str(stage_debug_dir / f"frame_{overall_frame_num:04d}_stage1_src.jpg"), + src_cpu, + ) + + # 3. STRIDED LAYOUT INITIALIZATION + # if not hasattr(self, "raw_mask"): + # self.recycled_resize_mat = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_8UC3 if ch == 3 else cv2.CV_8UC1) + # self.raw_mask = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_8UC1) + # self.thresh_mask = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_8UC1) + # self.clean_mask = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_8UC1) + # self.d_blurred = cv2.cuda.GpuMat(self.clean_mask.size(), cv2.CV_8UC1) + + # 4. RUN ASYNCHRONOUS DOWN-SAMPLING GATE + cv2.cuda.resize( + src_gpu_mat, + dst=self.recycled_resize_mat, + dsize=(self.resize_w, self.resize_h), + interpolation=cv2.INTER_NEAREST, + stream=self.bgs_stream, + ) + + if overall_frame_num <= debug_frame_limit: + self.bgs_stream.waitForCompletion() + resize_cpu = self.recycled_resize_mat.download() + if ch == 3: + resize_cpu = cv2.cvtColor(resize_cpu, cv2.COLOR_RGB2BGR) + cv2.imwrite( + str( + stage_debug_dir / f"frame_{overall_frame_num:04d}_stage2_resize.jpg" + ), + resize_cpu, + ) + + # 5. BACKGROUND SUBTRACTION & FILTERING + self.raw_mask = self.apply_background_subtraction_gpu( + self.recycled_resize_mat, + include_history=self.config.BKGD_SUB_INCLUDE_HISTORY, + method=self.config.BKGD_SUB_INCLUDE_HISTORY_METHOD, + stream=self.bgs_stream, + ) + + if overall_frame_num <= debug_frame_limit: + self.bgs_stream.waitForCompletion() + cv2.imwrite( + str( + stage_debug_dir + / f"frame_{overall_frame_num:04d}_stage5_history_mask.jpg" + ), + self.raw_mask.download(), + ) + + self._cuda_gaussian_filter.apply( + self.raw_mask, self.d_blurred, stream=self.bgs_stream + ) + + if overall_frame_num <= debug_frame_limit: + self.bgs_stream.waitForCompletion() + cv2.imwrite( + str( + stage_debug_dir / f"frame_{overall_frame_num:04d}_stage5b_blur.jpg" + ), + self.d_blurred.download(), + ) + + cv2.cuda.threshold( + self.d_blurred, + 50, + self.config.THRESHOLD_MAX_VALUE, + cv2.THRESH_BINARY, + self.thresh_mask, + stream=self.bgs_stream, + ) + + if overall_frame_num <= debug_frame_limit: + self.bgs_stream.waitForCompletion() + cv2.imwrite( + str( + stage_debug_dir + / f"frame_{overall_frame_num:04d}_stage6_threshold.jpg" + ), + self.thresh_mask.download(), + ) + + self.dilate_filter.apply(self.thresh_mask, self.clean_mask, self.bgs_stream) + + # [STAGE 7 DEBUG] Check Final Dilated Output Mask + if overall_frame_num <= debug_frame_limit: + self.bgs_stream.waitForCompletion() + cv2.imwrite( + str( + stage_debug_dir + / f"frame_{overall_frame_num:04d}_stage8_final_dilatemask.jpg" + ), + self.clean_mask.download(), + ) + + # inf_data = { + # "mask": self.clean_mask, + # "full_frame": device_frame, + # "frameNum": overall_frame_num, + # } + # start = torch.cuda.Event(enable_timing=True) + # end = torch.cuda.Event(enable_timing=True) + + # 6. REGION OF INTEREST ANALYSIS + limit_8K = 1280 + limit_640 = limit_8K / self.scale_x + # start.record() + raw_boxes = self.get_gpu_rois_by_area( + overall_frame_num, self.clean_mask, max_candidates=50, limit_640=limit_640 + ) + # end.record() + # torch.cuda.synchronize() + # gpu_rois_by_area_ms = start.elapsed_time(end) + + if raw_boxes.shape[0] < 1: + return torch.empty((0, 4), device=self.device_input) + + raw_boxes = self.gpu_roi_padding(raw_boxes, method="uniform") + # start.record() + clean_640p = merge_boxes_gpu( + raw_boxes, + gap_limit=self.dist_thresh_640, + size_limit=limit_640, + max_cached_elements=self.max_cached_elements, + ) + # end.record() + # torch.cuda.synchronize() + # merge_ms = start.elapsed_time(end) + + # main_app_logger.info(f"gpu_rois_by_area: {gpu_rois_by_area_ms:.3f} ms") + # main_app_logger.info(f"merge_boxes_gpu: {merge_ms:.3f} ms") + + if clean_640p.shape[0] < 1: + return torch.empty((0, 4), device=self.device_input) + + clean_640p[:, 0].clamp_(min=0, max=self.resize_w - 1) + clean_640p[:, 1].clamp_(min=0, max=self.resize_h - 1) + clean_640p[:, 2].clamp_(min=0, max=self.resize_w - 1) + clean_640p[:, 3].clamp_(min=0, max=self.resize_h - 1) + + # OPTIMIZATION: IN-PLACE RESCALING + # Avoid slicing arrays out sequentially into individual variables (xmin, ymin...) + # Construct and scale standard boxes directly to prevent memory allocation chattering. + standard_boxes = torch.stack( + [clean_640p[:, 0], clean_640p[:, 1], clean_640p[:, 2], clean_640p[:, 3]], + dim=1, + ) + + # if standard_boxes is None or standard_boxes.shape[0] == 0: + # return torch.empty((0, 4), device=self.device_input, dtype=torch.float32) + + # Multiply inplace and avoid manual `del` garbage sweeps to maintain maximum throughput + bbs_full_res = (standard_boxes * self.scales_tensor).detach() + return bbs_full_res + + # def get_sf_gpu_rois_v2( + # self, device_frame, overall_frame_num, max_candidates=100, limit_640=1280 + # ): + # debug_frame_limit = self.debug_frame_limit + + # if overall_frame_num <= debug_frame_limit: + # stage_debug_dir = ( + # self.result_dir / "debug_stages" / self._testMethodName / "roi_stages" + # ) + # stage_debug_dir.mkdir(parents=True, exist_ok=True) + + # # 2. BRIDGE THE PYTORCH TO OPENCV VRAM GAP + # if torch.is_tensor(device_frame): + # h_raw, w_raw, ch = device_frame.shape + # cuda_mem_ptr = device_frame.data_ptr() + # cv_type = cv2.CV_8UC3 if ch == 3 else cv2.CV_8UC1 + # row_step_bytes = device_frame.stride()[0] * device_frame.element_size() + # src_gpu_mat = cv2.cuda.createGpuMatFromCudaMemory( + # h_raw, w_raw, cv_type, cuda_mem_ptr, step=row_step_bytes + # ) + # else: + # src_gpu_mat = device_frame + # ch = src_gpu_mat.channels() + + # if overall_frame_num <= debug_frame_limit: + # src_cpu = src_gpu_mat.download() + # if ch == 3: + # src_cpu = cv2.cvtColor(src_cpu, cv2.COLOR_RGB2BGR) + # cv2.imwrite( + # str(stage_debug_dir / f"frame_{overall_frame_num:04d}_stage1_src.jpg"), + # src_cpu, + # ) + # del src_cpu + + # # 3. STRIDED LAYOUT INITIALIZATION + # # if not hasattr(self, "raw_mask"): + # # self.recycled_resize_mat = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_8UC3 if ch == 3 else cv2.CV_8UC1) + # # self.raw_mask = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_8UC1) + # # self.thresh_mask = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_8UC1) + # # self.clean_mask = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_8UC1) + # # self.d_blurred = cv2.cuda.GpuMat(self.clean_mask.size(), cv2.CV_8UC1) + + # # 4. RUN ASYNCHRONOUS DOWN-SAMPLING GATE + # cv2.cuda.resize( + # src_gpu_mat, + # dst=self.recycled_resize_mat, + # dsize=(self.resize_w, self.resize_h), + # interpolation=cv2.INTER_NEAREST, + # stream=self.bgs_stream, + # ) + # isolated_resize_mat = self.recycled_resize_mat.clone() + + # if overall_frame_num <= debug_frame_limit: + # self.bgs_stream.waitForCompletion() + # resize_cpu = self.recycled_resize_mat.download() + # if ch == 3: + # resize_cpu = cv2.cvtColor(resize_cpu, cv2.COLOR_RGB2BGR) + # cv2.imwrite( + # str( + # stage_debug_dir / f"frame_{overall_frame_num:04d}_stage2_resize.jpg" + # ), + # resize_cpu, + # ) + + # # 5. BACKGROUND SUBTRACTION & FILTERING + # self.raw_mask = self.apply_background_subtraction_gpu( + # isolated_resize_mat, # self.recycled_resize_mat, + # include_history=self.config.BKGD_SUB_INCLUDE_HISTORY, + # method=self.config.BKGD_SUB_INCLUDE_HISTORY_METHOD, + # stream=self.bgs_stream, + # ) + + # if overall_frame_num <= debug_frame_limit: + # self.bgs_stream.waitForCompletion() + # cv2.imwrite( + # str( + # stage_debug_dir + # / f"frame_{overall_frame_num:04d}_stage5_history_mask.jpg" + # ), + # self.raw_mask.download(), + # ) + + # # self._cuda_gaussian_filter.apply( + # # self.raw_mask, self.d_blurred, stream=self.bgs_stream + # # ) + # # cv2.cuda.threshold( + # # self.d_blurred, + # # 50, + # # self.config.THRESHOLD_MAX_VALUE, + # # cv2.THRESH_BINARY, + # # self.thresh_mask, + # # stream=self.bgs_stream, + # # ) + + # # self.dilate_filter.apply(self.thresh_mask, self.clean_mask, self.bgs_stream) + # # --- START: FUSED KERNEL EXECUTION --- + # # We bridge raw_mask and clean_mask to CuPy arrays (zero-copy) + # height, width = self.raw_mask.size() + + # raw_mask_cp = cupy.ndarray( + # shape=(height, width), + # dtype=cupy.uint8, + # memptr=cupy.cuda.MemoryPointer( + # cupy.cuda.UnownedMemory( + # self.raw_mask.cudaPtr(), self.raw_mask.step * height, self.raw_mask + # ), + # 0, + # ), + # strides=(self.raw_mask.step, 1), + # ) + + # clean_mask_cp = cupy.ndarray( + # shape=(height, width), + # dtype=cupy.uint8, + # memptr=cupy.cuda.MemoryPointer( + # cupy.cuda.UnownedMemory( + # self.clean_mask.cudaPtr(), + # self.clean_mask.step * height, + # self.clean_mask, + # ), + # 0, + # ), + # strides=(self.clean_mask.step, 1), + # ) + + # # 3. Launch the Fused CUDA Kernel! + # # Grid/Block sizes optimized for RTX A6000 architecture + # block_dim = 16 + # grid_size = ( + # (width + block_dim - 1) // block_dim, + # (height + block_dim - 1) // block_dim, + # ) + # block_size = (block_dim, block_dim) + + # # --- START: FUSED KERNEL EXECUTION --- + # # Get the underlying CUDA stream pointer from the OpenCV stream + # # self.cupy_bgs_stream = cupy.cuda.ExternalStream(self.bgs_stream.cudaPtr()) + # # self.fused_blur_thresh_kernel( + # # grid_size, + # # block_size, + # # ( + # # self.raw_mask.cudaPtr(), # const unsigned char* src + # # self.thresh_mask.cudaPtr(), # unsigned char* dst + # # width, # int width + # # height, # int height + # # self.raw_mask.step, # int src_step + # # self.thresh_mask.step # int dst_step + # # ), + # # stream=self.cupy_bgs_stream + # # ) + # # self.dilate_filter.apply(self.thresh_mask, self.clean_mask, self.bgs_stream) + + # # --- END: FUSED KERNEL EXECUTION --- + + # # --- START: 3-in-1 FUSED KERNEL EXECUTION --- + + # # 2. Wait for OpenCV BGS stream to finish before CuPy takes over + # # self.bgs_stream.waitForCompletion() + # self.cupy_bgs_stream = cupy.cuda.ExternalStream(self.bgs_stream.cudaPtr()) + + # # 4. Launch the single fused kernel on CuPy's default stream + # self.fused_3_in_1_kernel( + # grid_size, + # block_size, + # ( + # raw_mask_cp, # src + # clean_mask_cp, # dst + # width, + # height, + # self.raw_mask.step, + # self.clean_mask.step, + # ), + # stream=self.cupy_bgs_stream, + # ) + + # # 5. Ensure CuPy kernel is finished before proceeding + # # import cupy as cp + # # cupy.cuda.Stream.null.synchronize() + # # --- END: FUSED KERNEL EXECUTION --- + + # # [STAGE 7 DEBUG] Check Final Dilated Output Mask + # # if overall_frame_num <= debug_frame_limit: + # # self.bgs_stream.waitForCompletion() + # # cv2.imwrite( + # # str( + # # stage_debug_dir + # # / f"frame_{overall_frame_num:04d}_stage8_final_dilatemask.jpg" + # # ), + # # self.clean_mask.download(), + # # ) + + # # inf_data = { + # # "mask": self.clean_mask, + # # "full_frame": device_frame, + # # "frameNum": overall_frame_num, + # # } + # # start = torch.cuda.Event(enable_timing=True) + # # end = torch.cuda.Event(enable_timing=True) + + # # 6. REGION OF INTEREST ANALYSIS + # limit_8K = 1280 + # limit_640 = limit_8K / self.scale_x + # # start.record() + # raw_boxes = self.get_gpu_rois_by_area( + # overall_frame_num, self.clean_mask, max_candidates=50, limit_640=limit_640 + # ) + # # end.record() + # # torch.cuda.synchronize() + # # gpu_rois_by_area_ms = start.elapsed_time(end) + + # if raw_boxes.shape[0] < 1: + # return torch.empty((0, 4), device=self.device_input) + + # raw_boxes = self.gpu_roi_padding(raw_boxes, method="uniform") + # # start.record() + # clean_640p = merge_boxes_gpu( + # raw_boxes, + # gap_limit=self.dist_thresh_640, + # size_limit=limit_640, + # max_cached_elements=self.max_cached_elements, + # ) + # # end.record() + # # torch.cuda.synchronize() + # # merge_ms = start.elapsed_time(end) + + # # main_app_logger.info(f"gpu_rois_by_area: {gpu_rois_by_area_ms:.3f} ms") + # # main_app_logger.info(f"merge_boxes_gpu: {merge_ms:.3f} ms") + + # if clean_640p.shape[0] < 1: + # return torch.empty((0, 4), device=self.device_input) + + # clean_640p[:, 0].clamp_(min=0, max=self.resize_w - 1) + # clean_640p[:, 1].clamp_(min=0, max=self.resize_h - 1) + # clean_640p[:, 2].clamp_(min=0, max=self.resize_w - 1) + # clean_640p[:, 3].clamp_(min=0, max=self.resize_h - 1) + + # # OPTIMIZATION: IN-PLACE RESCALING + # # Avoid slicing arrays out sequentially into individual variables (xmin, ymin...) + # # Construct and scale standard boxes directly to prevent memory allocation chattering. + # standard_boxes = torch.stack( + # [clean_640p[:, 0], clean_640p[:, 1], clean_640p[:, 2], clean_640p[:, 3]], + # dim=1, + # ) + + # # if standard_boxes is None or standard_boxes.shape[0] == 0: + # # return torch.empty((0, 4), device=self.device_input, dtype=torch.float32) + + # # Multiply inplace and avoid manual `del` garbage sweeps to maintain maximum throughput + # bbs_full_res = (standard_boxes * self.scales_tensor).detach() + # return bbs_full_res + + # v3: reduce memory footprint + def get_sf_gpu_rois( + self, device_frame, overall_frame_num, max_candidates=100, limit_640=1280 + ): + cupy.get_default_memory_pool().free_all_blocks() + height, width = self.raw_mask.size() + + raw_mask_cp = cupy.ndarray( + shape=(height, width), + dtype=cupy.uint8, + memptr=cupy.cuda.MemoryPointer( + cupy.cuda.UnownedMemory( + self.raw_mask.cudaPtr(), + self.raw_mask.step * height, + self.raw_mask, + ), + 0, + ), + strides=(self.raw_mask.step, 1), + ) + + clean_mask_cp = cupy.ndarray( + shape=(height, width), + dtype=cupy.uint8, + memptr=cupy.cuda.MemoryPointer( + cupy.cuda.UnownedMemory( + self.clean_mask.cudaPtr(), + self.clean_mask.step * height, + self.clean_mask, + ), + 0, + ), + strides=(self.clean_mask.step, 1), + ) + try: + debug_frame_limit = self.debug_frame_limit + + if overall_frame_num <= debug_frame_limit: + stage_debug_dir = ( + self.result_dir + / "debug_stages" + / self._testMethodName + / "roi_stages" + ) + stage_debug_dir.mkdir(parents=True, exist_ok=True) + + # 2. BRIDGE THE PYTORCH TO OPENCV VRAM GAP + if torch.is_tensor(device_frame): + h_raw, w_raw, ch = device_frame.shape + cuda_mem_ptr = device_frame.data_ptr() + cv_type = cv2.CV_8UC3 if ch == 3 else cv2.CV_8UC1 + row_step_bytes = device_frame.stride()[0] * device_frame.element_size() + src_gpu_mat = cv2.cuda.createGpuMatFromCudaMemory( + h_raw, w_raw, cv_type, cuda_mem_ptr, step=row_step_bytes + ) + else: + src_gpu_mat = device_frame + ch = src_gpu_mat.channels() + + if overall_frame_num <= debug_frame_limit: + src_cpu = src_gpu_mat.download() + if ch == 3: + src_cpu = cv2.cvtColor(src_cpu, cv2.COLOR_RGB2BGR) + cv2.imwrite( + str( + stage_debug_dir + / f"frame_{overall_frame_num:04d}_stage1_src.jpg" + ), + src_cpu, + ) + del src_cpu + + # 1. Swap active buffers (Double Buffering) + # This gives us a 100% thread-safe copy without allocating a single byte of new VRAM! + # if self.use_buffer_A: + # active_resize_mat = self.recycled_resize_mat_A + # self.use_buffer_A = False + # else: + # active_resize_mat = self.recycled_resize_mat_B + # self.use_buffer_A = True + + # 4. RUN ASYNCHRONOUS DOWN-SAMPLING GATE + cv2.cuda.resize( + src_gpu_mat, + dst=self.recycled_resize_mat, # active_resize_mat, + dsize=(self.resize_w, self.resize_h), + interpolation=cv2.INTER_NEAREST, + stream=self.bgs_stream, + ) + # isolated_resize_mat = self.recycled_resize_mat.clone() + + if overall_frame_num <= debug_frame_limit: + self.bgs_stream.waitForCompletion() + resize_cpu = self.recycled_resize_mat.download() + if ch == 3: + resize_cpu = cv2.cvtColor(resize_cpu, cv2.COLOR_RGB2BGR) + cv2.imwrite( + str( + stage_debug_dir + / f"frame_{overall_frame_num:04d}_stage2_resize.jpg" + ), + resize_cpu, + ) + del resize_cpu + + # 5. BACKGROUND SUBTRACTION & FILTERING + self.raw_mask = self.apply_background_subtraction_gpu( + self.recycled_resize_mat, + include_history=self.config.BKGD_SUB_INCLUDE_HISTORY, + method=self.config.BKGD_SUB_INCLUDE_HISTORY_METHOD, + stream=self.bgs_stream, + ) + + if overall_frame_num <= debug_frame_limit: + self.bgs_stream.waitForCompletion() + cv2.imwrite( + str( + stage_debug_dir + / f"frame_{overall_frame_num:04d}_stage5_history_mask.jpg" + ), + self.raw_mask.download(), + ) + + # --- START: FUSED KERNEL EXECUTION --- + # We bridge raw_mask and clean_mask to CuPy arrays (zero-copy) + # height, width = self.raw_mask.size() + + # raw_mask_cp = cupy.ndarray( + # shape=(height, width), + # dtype=cupy.uint8, + # memptr=cupy.cuda.MemoryPointer( + # cupy.cuda.UnownedMemory( + # self.raw_mask.cudaPtr(), + # self.raw_mask.step * height, + # self.raw_mask, + # ), + # 0, + # ), + # strides=(self.raw_mask.step, 1), + # ) + + # clean_mask_cp = cupy.ndarray( + # shape=(height, width), + # dtype=cupy.uint8, + # memptr=cupy.cuda.MemoryPointer( + # cupy.cuda.UnownedMemory( + # self.clean_mask.cudaPtr(), + # self.clean_mask.step * height, + # self.clean_mask, + # ), + # 0, + # ), + # strides=(self.clean_mask.step, 1), + # ) + + # 3. Launch the Fused CUDA Kernel! + # Grid/Block sizes optimized for RTX A6000 architecture + block_dim = 16 + grid_size = ( + (width + block_dim - 1) // block_dim, + (height + block_dim - 1) // block_dim, + ) + block_size = (block_dim, block_dim) + + # 2. Wait for OpenCV BGS stream to finish before CuPy takes over + # self.bgs_stream.waitForCompletion() + self.cupy_bgs_stream = cupy.cuda.ExternalStream(self.bgs_stream.cudaPtr()) + + # 4. Launch the single fused kernel on CuPy's default stream + self.fused_3_in_1_kernel( + grid_size, + block_size, + ( + raw_mask_cp, # src + clean_mask_cp, # dst + width, + height, + self.raw_mask.step, + self.clean_mask.step, + ), + stream=self.cupy_bgs_stream, + ) + + # 6. REGION OF INTEREST ANALYSIS + limit_8K = 1280 + limit_640 = limit_8K / self.scale_x + # start.record() + raw_boxes = self.get_gpu_rois_by_area( + overall_frame_num, + self.clean_mask, + max_candidates=50, + limit_640=limit_640, + ) + # end.record() + # torch.cuda.synchronize() + # gpu_rois_by_area_ms = start.elapsed_time(end) + + if raw_boxes.shape[0] < 1: + return torch.empty((0, 4), device=self.device_input) + + raw_boxes = self.gpu_roi_padding(raw_boxes, method="uniform") + # start.record() + clean_640p = merge_boxes_gpu( + raw_boxes, + gap_limit=self.dist_thresh_640, + size_limit=limit_640, + max_cached_elements=self.max_cached_elements, + ) + # end.record() + # torch.cuda.synchronize() + # merge_ms = start.elapsed_time(end) + + # main_app_logger.info(f"gpu_rois_by_area: {gpu_rois_by_area_ms:.3f} ms") + # main_app_logger.info(f"merge_boxes_gpu: {merge_ms:.3f} ms") + + if clean_640p.shape[0] < 1: + return torch.empty((0, 4), device=self.device_input) + + clean_640p[:, 0].clamp_(min=0, max=self.resize_w - 1) + clean_640p[:, 1].clamp_(min=0, max=self.resize_h - 1) + clean_640p[:, 2].clamp_(min=0, max=self.resize_w - 1) + clean_640p[:, 3].clamp_(min=0, max=self.resize_h - 1) + + # OPTIMIZATION: IN-PLACE RESCALING + # Avoid slicing arrays out sequentially into individual variables (xmin, ymin...) + # Construct and scale standard boxes directly to prevent memory allocation chattering. + # standard_boxes = torch.stack( + # [ + # clean_640p[:, 0], + # clean_640p[:, 1], + # clean_640p[:, 2], + # clean_640p[:, 3], + # ], + # dim=1, + # ) + bbs_full_res = ( + torch.stack( + [ + clean_640p[:, 0], + clean_640p[:, 1], + clean_640p[:, 2], + clean_640p[:, 3], + ], + dim=1, + ) + * self.scales_tensor + ).detach() + + # if standard_boxes is None or standard_boxes.shape[0] == 0: + # return torch.empty((0, 4), device=self.device_input, dtype=torch.float32) + + # Multiply inplace and avoid manual `del` garbage sweeps to maintain maximum throughput + # bbs_full_res = (standard_boxes * self.scales_tensor).detach() + finally: + # 2. Release temporary OpenCV GpuMats. Using 'in locals()' is safer. + if "raw_mask_cp" in locals(): + del raw_mask_cp + if "clean_mask_cp" in locals(): + del clean_mask_cp + if "src_gpu_mat" in locals(): + del src_gpu_mat + # if "isolated_resize_mat" in locals(): + # del isolated_resize_mat + + del device_frame + + if "raw_boxes" in locals(): + del raw_boxes + if "clean_640p" in locals(): + del clean_640p + + # 3. Force CuPy to release all unused memory back to the system. + # This is the most critical step for preventing inter-library OOM errors. + cupy.get_default_memory_pool().free_all_blocks() + return bbs_full_res + + def run_gpu_pipeline( + self, device_frame, overall_frame_num, frame_in_clip_count=0, gt_boxes=None + ): + metrics = {"sf_time": 0, "roi_time": 0, "det_time": 0, "bbs": None} + metadata = {} + + # Get ROIs + if self.timer_enabled: + self.sf_start.record(self.inference_stream) + + bgs_input_frame = ( + device_frame.byte() if torch.is_tensor(device_frame) else device_frame + ) + bbs_full_res = self.get_sf_gpu_rois(bgs_input_frame, overall_frame_num) + + if self.timer_enabled: + self.sf_end.record(self.inference_stream) + + # metrics["bbs"] = bbs_full_res + # Detach the matrix coordinates cleanly out of the tracking graph immediately + if bbs_full_res is not None: + if torch.is_tensor(bbs_full_res): + metrics["bbs"] = bbs_full_res.detach().cpu().numpy() + elif isinstance(bbs_full_res, np.ndarray): + metrics["bbs"] = bbs_full_res + else: + metrics["bbs"] = np.empty((0, 4), dtype=np.float32) + + merged, det_frame = self.format_bbs_and_frame_4_detection( + bbs_full_res, device_frame + ) + motion_detected = len(merged) > 0 if merged is not None else False + metrics["batch_density"] = len(merged) if merged is not None else 0 + + if ( + self.config.DEBUG_FLAG + and overall_frame_num <= self.config.DEBUG_FRAME_LIMIT + ): + self.debug_save_mask( + det_frame, overall_frame_num, rois=merged, gt_boxes=gt_boxes + ) + + if not self.config.DISABLE_DETECTION: + # --- 3. MODEL INFERENCE TIMING BLOCK --- + if self.device_input == "cuda" and self.timer_enabled: + self.det_start.record(self.inference_stream) + # elif self.timer_enabled: + # t_start = time.perf_counter() + + # Get Detection Metadata + if self.config.DETECTION_TYPE != "motion": # Object detection + metadata, _ = self.get_detections( + det_frame, + frame_in_clip_count, + merged=merged, + thickness=self.config.THICKNESS, + device_input=self.config.device_input, + ) + # num_objs = len(metadata.keys()) + else: # Motion: Smart filtering results + # 8k bb to 640 + metadata = self.motion2metadata(merged, frame_in_clip_count) + + if self.device_input == "cuda" and self.timer_enabled: + self.det_end.record(self.inference_stream) + # self.inference_stream.synchronize() + + # Lock-free check: wait for event completion without blocking the CPU GIL + while not self.det_end.query(): + # Yield GIL to let file-writers and thread-pools work + time.sleep(0.001) + # self.det_end.synchronize() + + # Full-frame YOLO baseline tracks the elapsed time from t_start on page 20, line 1273 + metrics["sf_time"] = self.sf_start.elapsed_time(self.sf_end) + metrics["det_time"] = self.det_start.elapsed_time(self.det_end) + elif self.device_input == "cuda" and self.timer_enabled: + metrics["sf_time"] = self.sf_start.elapsed_time(self.sf_end) + + # elif self.timer_enabled: + # # CPU Path Execution: Must use standard wall-clock timing loops to avoid CUDA Event errors + # metrics["det_time"] = (time.perf_counter() - t_start) * 1000.0 + + del merged, bbs_full_res + return metrics, metadata, det_frame, motion_detected + + # v1 + def find_contours_gpu_equivalent(self, mask_gpu_mat, stream=None, limit_640=None): + """ + Refactored allocation-free GPU bounding box contour extraction tree. + Bypasses dynamic VRAM creation paths entirely. + """ + + # start = torch.cuda.Event(enable_timing=True) + # end = torch.cuda.Event(enable_timing=True) + w, h = mask_gpu_mat.size() + ptr = mask_gpu_mat.cudaPtr() + pitch_bytes = mask_gpu_mat.step + + mask_cp = cupy.ndarray( + (h, w), + dtype=cupy.uint8, + memptr=cupy.cuda.MemoryPointer( + cupy.cuda.UnownedMemory(ptr, pitch_bytes * h, mask_gpu_mat), 0 + ), + strides=(pitch_bytes, 1), + ) + + stream_ptr = stream.cudaPtr() if stream else 0 + + with cupy.cuda.ExternalStream(stream_ptr): + if ( + not hasattr(self, "_labeled_scratch") + or self._labeled_scratch.shape != (h, w) + or not self._labeled_scratch.flags.c_contiguous + ): + # Explicitly force order='C' (Row-Major Linear Stride alignment) at initialization. + # This completely eliminates internal syncdetect regular expression matching stutters! + self._labeled_scratch = cupy.empty((h, w), dtype=cupy.int32, order="C") + + # start = cupy.cuda.Event() + # end = cupy.cuda.Event() + # start.record() + # 2. FAST IN-PLACE LABELING + # Because output is guaranteed to be a linear memory layout, SciPy processes it with zero device syncs + # TODO: Custom CUDA kernel to replace b/c label algorithm is costly + num_labels = cupyx.scipy.ndimage.label( + mask_cp, structure=self.cupy_structure, output=self._labeled_scratch + ) + # end.record() + # end.synchronize() + # ms = cupy.cuda.get_elapsed_time(start, end) + # main_app_logger.info(f"cupyx label: {ms:.3f} ms") + + if num_labels == 0: + return torch.empty((0, 4), device="cuda") + + # Prevent array overflows if features spike abnormally + safe_labels = min(num_labels + 1, self._max_labels) + + # Quick, specialized in-place fills over our persistent pools (0 loop churn) + self._x1_pool[:safe_labels].fill(w) + self._y1_pool[:safe_labels].fill(h) + self._x2_pool[:safe_labels].fill(-1) + self._y2_pool[:safe_labels].fill(-1) + + # self._x1_pool[:safe_labels] = w + # self._y1_pool[:safe_labels] = h + # self._x2_pool[:safe_labels] = -1 + # self._y2_pool[:safe_labels] = -1 + + # Extract references for your custom kernel execution map + pitch_elements = self._labeled_scratch.strides[0] // 4 + + tpb = (16, 16, 1) + bpg = ((w + tpb[0] - 1) // tpb[0], (h + tpb[1] - 1) // tpb[1], 1) + + # 3. DIRECT DRIVER FUNCTION CALL (Maintains your accurate get_bounds logic) + self._raw_bounds_function( + bpg, + tpb, + ( + self._labeled_scratch.data.ptr, # const int* labeled + pitch_elements, # int pitch + w, # int w + h, # int h + num_labels, # int num_labels + self._x1_pool[:safe_labels].data.ptr, # int* x1 + self._y1_pool[:safe_labels].data.ptr, # int* y1 + self._x2_pool[:safe_labels].data.ptr, # int* x2 + self._y2_pool[:safe_labels].data.ptr, # int* y2 + ), + ) + + # 4. ELIMINATE COLUMN_STACK ALLOCATION OVERHEAD (Replaces lines 91-105) + # Your previous code allocated memory on the heap every frame via cupy.column_stack. + # Instead, map the pre-allocated pool buffers directly into contiguous PyTorch tensor views! + x1_t = torch.as_tensor(self._x1_pool[1:safe_labels], device="cuda") + y1_t = torch.as_tensor(self._y1_pool[1:safe_labels], device="cuda") + x2_t = torch.as_tensor(self._x2_pool[1:safe_labels], device="cuda") + y2_t = torch.as_tensor(self._y2_pool[1:safe_labels], device="cuda") + + # Stack tensors natively using unified memory views without copies or host syncs + return torch.stack((x1_t, y1_t, x2_t, y2_t), dim=1).float() + + # def find_contours_gpu_equivalent_v3(self, clean_mask, stream=None, limit_640=1280): + # """ + # Extremely fast, zero-allocation GPU boundary extraction. + # Bypasses OpenCV's costly contour allocations entirely. + # """ + # # Convert the OpenCV GpuMat directly to a PyTorch GPU Tensor view (Zero-Copy) + # # This does not allocate any new VRAM! + # # mask_tensor = torch.as_tensor( + # # clean_mask, + # # device="cuda" + # # ) + # height, width = clean_mask.size() + + # # 1. Grab the raw C++ VRAM pointer from the OpenCV GpuMat + # # and wrap it in a CuPy array without copying the data + # mask_cp = cupy.ndarray( + # shape=(height, width), + # dtype=cupy.uint8, + # memptr=cupy.cuda.MemoryPointer( + # cupy.cuda.UnownedMemory( + # clean_mask.cudaPtr(), + # clean_mask.step * height, + # clean_mask + # ), + # 0 + # ), + # strides=(clean_mask.step, 1) + # ) + # mask_tensor = from_dlpack(mask_cp.toDlpack()) + + # # 1. Extract the coordinates of all active motion pixels (Non-zero coordinates) + # # We write directly into our pre-allocated coordinates scratchpad using a view + # nz = torch.nonzero(mask_tensor, out=self.coords_scratchpad) + + # if nz.shape[0] == 0: + # return torch.empty((0, 4), dtype=torch.float32, device="cuda") + + # # 2. Extract boundaries using vectorized Min/Max operations + # # This completely avoids creating temporary contour objects! + # y_coords = nz[:, 0] + # x_coords = nz[:, 1] + + # # Find the global min/max coordinates of the motion region + # x1 = x_coords.min() + # y1 = y_coords.min() + # x2 = x_coords.max() + # y2 = y_coords.max() + + # # 3. Write directly to our pre-allocated static output box + # self.static_boxes_out[0, 0] = x1 + # self.static_boxes_out[0, 1] = y1 + # self.static_boxes_out[0, 2] = x2 + # self.static_boxes_out[0, 3] = y2 + + # # Return a view of the active boxes (Zero new allocations) + # return self.static_boxes_out[:1] + + # def find_contours_gpu_equivalent_v2(self, mask_gpu_mat, stream=None, limit_640=None): + # """ + # Replaces the CuPy version with a 100% PyTorch-native implementation. + # This completely eliminates CuPy-PyTorch context-switching overhead + # and utilizes parallel GPU reduction via scatter_reduce. + # """ + # # We manually construct the __cuda_array_interface__ to share GPU memory pointers + # # without any host-device copies. + + # # 1. Gather GpuMat metadata + # height, width = mask_gpu_mat.size() + # gpu_ptr = mask_gpu_mat.cudaPtr() + # step = mask_gpu_mat.step # Number of bytes per row (stride) + + # # Instantly wrap the pointer into a PyTorch GPU Tensor (0 ms latency!) + # holder = GPUHolder({ + # 'shape': (height, width), + # 'typestr': '|u1', # OpenCV's CV_8UC1 is equivalent to uint8 + # 'data': (gpu_ptr, False), # Pointer address, Read-only=False + # 'strides': (step, 1), + # 'version': 3 + # }) + # mask_tensor = torch.as_tensor(holder, device=self.device_input) + # # ========================================================================= + + # # 2. Convert mask to boolean for segmentation + # binary_mask = mask_tensor > 0 + + # # 3. Use OpenCV's highly optimized CPU CC labeling (faster than CuPy for small labels/warmups) + # # Or if OpenCV's CUDA CC labeling is available, dispatch there. + # # This gives a fast, reliable label grid. + # num_labels, labels = cv2.connectedComponents( + # binary_mask.cpu().numpy().astype(np.uint8), + # connectivity=8 + # ) + + # # If there are only background pixels, return an empty coordinate tensor + # if num_labels <= 1: + # return torch.empty((0, 4), device=self.device_input, dtype=torch.float32) + + # # 4. Push label grid back to the active GPU + # labels_gpu = torch.as_tensor(labels, device=self.device_input) + + # # 5. Pre-allocate coordinate bounds tensors on the GPU + # # We use standard 32-bit integers to keep memory operations light + # max_val = torch.iinfo(torch.int32).max + # x1 = torch.full((num_labels,), max_val, device=self.device_input, dtype=torch.int32) + # y1 = torch.full((num_labels,), max_val, device=self.device_input, dtype=torch.int32) + # x2 = torch.full((num_labels,), -1, device=self.device_input, dtype=torch.int32) + # y2 = torch.full((num_labels,), -1, device=self.device_input, dtype=torch.int32) + + # # 6. Extract raw indices of all active foreground pixels on GPU + # # This keeps the coordinates completely in memory + # y_coords, x_coords = torch.nonzero(labels_gpu, as_tuple=True) + # label_vals = labels_gpu[y_coords, x_coords] + + # # 7. Perform high-speed parallel GPU reductions to find min/max coordinates + # # 'amin' and 'amax' are computed concurrently across all threads + # x1.scatter_reduce_(0, label_vals, x_coords.int(), reduce="amin", include_self=False) + # y1.scatter_reduce_(0, label_vals, y_coords.int(), reduce="amin", include_self=False) + # x2.scatter_reduce_(0, label_vals, x_coords.int(), reduce="amax", include_self=False) + # y2.scatter_reduce_(0, label_vals, y_coords.int(), reduce="amax", include_self=False) + + # # 8. Stack bounds and discard index 0 (which represents the background) + # # Returns shape: (N, 4) -> [x1, y1, x2, y2] matching your downstream merge_boxes format + # boxes = torch.stack((x1[1:], y1[1:], x2[1:], y2[1:]), dim=1).float() + + # return boxes + + # def find_contours_gpu_equivalent_v3(self, mask_gpu_mat, stream=None, limit_640=None): + # """ + # 100% GPU-native connected components labeling. + # Combines CuPy labeling with PyTorch-native vectorized bounding box reduction. + # """ + # # import cupy + # # import cupyx.scipy.ndimage + # # import torch + + # # 1. Zero-copy bridge from OpenCV GpuMat to CuPy array on the GPU + # height, width = mask_gpu_mat.size() + + # mask_cp = cupy.ndarray( + # shape=(height, width), + # dtype=cupy.uint8, + # memptr=cupy.cuda.MemoryPointer( + # cupy.cuda.UnownedMemory(mask_gpu_mat.cudaPtr(), mask_gpu_mat.step * height, mask_gpu_mat), 0 + # ), + # strides=(mask_gpu_mat.step, 1) + # ) + + # # 2. Perform high-speed connected components labeling on GPU using CuPy + # structure = cupy.ones((3, 3), dtype=cupy.int32) + # labeled_mask, num_labels = cupyx.scipy.ndimage.label(mask_cp > 0, structure=structure) + + # if num_labels == 0: + # return torch.empty((0, 4), device=self.device_input, dtype=torch.float32) + + # # ========================================================================= + # # 3. Zero-copy bridge from labeled CuPy array to PyTorch GPU Tensor + # # ========================================================================= + # # Since labeled_mask is a CuPy array, we can access its __cuda_array_interface__ + # # to expose the memory block directly to PyTorch without any copies! + # labels_gpu = torch.as_tensor(labeled_mask, device=self.device_input) + + # # 4. Pre-allocate coordinate bounds tensors on the GPU + # max_val = torch.iinfo(torch.int32).max + # x1 = torch.full((num_labels + 1,), max_val, device=self.device_input, dtype=torch.int32) + # y1 = torch.full((num_labels + 1,), max_val, device=self.device_input, dtype=torch.int32) + # x2 = torch.full((num_labels + 1,), -1, device=self.device_input, dtype=torch.int32) + # y2 = torch.full((num_labels + 1,), -1, device=self.device_input, dtype=torch.int32) + + # # 5. Extract raw indices of all active foreground pixels on the GPU + # y_coords, x_coords = torch.nonzero(labels_gpu, as_tuple=True) + # label_vals = labels_gpu[y_coords, x_coords].long() # Cast to long for indexing + + # # 6. Parallel GPU reduction to find bounding coordinates for all labels at once + # x1.scatter_reduce_(0, label_vals, x_coords.int(), reduce="amin", include_self=False) + # y1.scatter_reduce_(0, label_vals, y_coords.int(), reduce="amin", include_self=False) + # x2.scatter_reduce_(0, label_vals, x_coords.int(), reduce="amax", include_self=False) + # y2.scatter_reduce_(0, label_vals, y_coords.int(), reduce="amax", include_self=False) + + # # 7. Stack bounds, skipping index 0 (the background label) + # # Returns shape: (N, 4) -> [x1, y1, x2, y2] + # boxes = torch.stack((x1[1:], y1[1:], x2[1:], y2[1:]), dim=1).float() + + # return boxes + + def get_gpu_rois_by_area(self, frameNum, mask, max_candidates=100, limit_640=1280): + # Extract true spatial constraints straight from the active mask object footprint + if torch.is_tensor(mask): + mask_h, mask_w = mask.shape[-2:] + elif isinstance(mask, cv2.cuda.GpuMat): + # cv2.cuda.GpuMat.size() returns a tuple of (width, height) standard formatting + mask_w, mask_h = mask.size() + else: + mask_h, mask_w = mask.shape[:2] + + # This prevents find_contours_gpu_equivalent from mutating the mask variables used by other threads. + if isinstance(mask, cv2.cuda.GpuMat): + # .clone() allocates a new C++ memory surface and forces full continuity + isolated_kernel_mask = mask # .clone() + elif torch.is_tensor(mask): + isolated_kernel_mask = mask # .clone().contiguous() + else: + isolated_kernel_mask = mask # .copy() + + # Get raw boxes from mask (Direct VRAM bridge) + boxes_gpu = self.find_contours_gpu_equivalent( + isolated_kernel_mask, + stream=self.bgs_stream, + limit_640=limit_640, # 640*1.5, + ) + + # --- FIX: ELIMINATE STREAM RACE --- + if boxes_gpu is None or len(boxes_gpu) == 0: + return torch.empty((0, 4), device=self.device_input) + + # if len(boxes_gpu) > max_candidates: # Adjust threshold based on target max objects + # # Prioritize or slice to prevent merge_boxes_gpu from thrashing scatter_reduce_ + # boxes_gpu = boxes_gpu[:max_candidates] + + # Wrap existing GPU memory as a float tensor (Zero Copy) + raw_boxes = torch.as_tensor(boxes_gpu, device=self.device_input).float() + # if self.device_input == "cuda": + # # Wrap the native device handle and IMMEDIATELY append .clone() + # # This allocates a brand new, physically isolated VRAM block to secure the bounding boxes + # raw_boxes = ( + # torch.as_tensor(boxes_gpu, device=self.device_input).float().clone() + # ) + # else: + # raw_boxes = torch.as_tensor(boxes_gpu, device=self.device_input).float() + + if raw_boxes is not None and len(raw_boxes) > 0: + # Vectorized Pre-Filter (Removes noise blobs before merging) + w = raw_boxes[:, 2] - raw_boxes[:, 0] + h = raw_boxes[:, 3] - raw_boxes[:, 1] + # mask_filter = (w > 2) & (h > 2) & (w * h > self.min_contour_area) & (w < mask_w) & (h < mask_h) + mask_filter = ( + (w <= self.max_roi_w) + & (h <= self.max_roi_h) + & (w >= self.min_roi_w) + & (h >= self.min_roi_h) + ) + # Ensure both structures match dimensions along the indexing axis + # if raw_boxes.shape[0] == mask_filter.shape[0] and raw_boxes.shape[0] > 0: + # raw_boxes = raw_boxes[mask_filter] + # else: + # # Short-circuit directly to an empty tensor if shapes don't match or are 0 + # raw_boxes = torch.empty((0, 4), device=self.device_input, dtype=torch.float32) + if raw_boxes.shape[0] > 0: + raw_boxes = raw_boxes[mask_filter] + + # Guard rails: Clamp boundaries in-place to stay safely within the 8K master frame + # Indices 0 and 2 are X coordinates bounded by frame width; 1 and 3 are Y coordinates bounded by frame height + raw_boxes[:, 0].clamp_(min=0, max=self.resize_w - 1) + raw_boxes[:, 1].clamp_(min=0, max=self.resize_h - 1) + raw_boxes[:, 2].clamp_(min=0, max=self.resize_w - 1) + raw_boxes[:, 3].clamp_(min=0, max=self.resize_h - 1) + + # Re-assign back to your pipeline's tracking variable + # raw_boxes = padded_tensor + + # Prevents N^2 distance matrix from exploding during high noise + # if raw_boxes.shape[0] > max_candidates: + # # Prioritize the largest blobs (most likely to be drones) + # areas = (raw_boxes[:, 2] - raw_boxes[:, 0]) * ( + # raw_boxes[:, 3] - raw_boxes[:, 1] + # ) + # flat_areas = areas.view(-1) + # _, indices = torch.topk( + # flat_areas, k=min(max_candidates, flat_areas.shape[0]), dim=-1 + # ) + # # _, indices = torch.topk(areas, max_candidates) + # raw_boxes = raw_boxes[indices] + num_boxes = raw_boxes.shape[0] + if num_boxes > max_candidates: + areas = (raw_boxes[:, 2] - raw_boxes[:, 0]) * ( + raw_boxes[:, 3] - raw_boxes[:, 1] + ) + _, indices = torch.topk(areas, k=max_candidates, dim=0) + raw_boxes = raw_boxes[indices] + return raw_boxes + + def gpu_roi_padding(self, raw_boxes, method="uniform"): + """ + raw_boxes: in resize space (640) + """ + + if method == "uniform": + # pad using scale factor + widths = raw_boxes[:, 2] - raw_boxes[:, 0] + heights = raw_boxes[:, 3] - raw_boxes[:, 1] + # pad_w = widths * (PADDING_SCALE / 2.0) + # pad_h = heights * (PADDING_SCALE / 2.0) + # Add a minimum 3px clamp to ensure tiny objects don't lose their margins + pad_w = torch.clamp(widths * (PADDING_SCALE / 2.0), min=3.0) + pad_h = torch.clamp(heights * (PADDING_SCALE / 2.0), min=3.0) + padding_mask = torch.stack([-pad_w, -pad_h, pad_w, pad_h], dim=1) + + # Apply padding to all bounding boxes concurrently via broad-vector math + raw_boxes = raw_boxes + padding_mask + elif method == "modelsize": + # extend box up to MODEL size + # if box is larger, keep as-is + scaley_8Kto640 = self.config.MODEL_H / self.frame_height + scalex_8Kto640 = self.config.MODEL_W / self.frame_width + model_w_640 = int(self.config.MODEL_W * scalex_8Kto640) + model_h_640 = int(self.config.MODEL_H * scaley_8Kto640) + + widths = raw_boxes[:, 2] - raw_boxes[:, 0] + heights = raw_boxes[:, 3] - raw_boxes[:, 1] + # if (widths,heights) == (model_w_640,model_h_640) or widths > model_w_640 or heights > model_h_640: + # pass # Keep as is + # else: + x_centers = (raw_boxes[:, 0] + raw_boxes[:, 2]) / 2.0 + y_centers = (raw_boxes[:, 1] + raw_boxes[:, 3]) / 2.0 + + # Determine target dimensions (clamp to target size if smaller) + new_widths = torch.clamp(widths, min=model_w_640) + new_heights = torch.clamp(heights, min=model_h_640) + + # Calculate new coordinates from the centers + new_x1 = x_centers - (new_widths / 2.0) + new_y1 = y_centers - (new_heights / 2.0) + new_x2 = x_centers + (new_widths / 2.0) + new_y2 = y_centers + (new_heights / 2.0) + + # 4. Stack into a tensor matching raw_boxes shape + raw_boxes = torch.stack([new_x1, new_y1, new_x2, new_y2], dim=1) + elif method == "pixel": + # pad using scale factor + # widths = raw_boxes[:, 2] - raw_boxes[:, 0] + # heights = raw_boxes[:, 3] - raw_boxes[:, 1] + # # pad_w = widths * (PADDING_SCALE / 2.0) + # # pad_h = heights * (PADDING_SCALE / 2.0) + # Add a minimum 3px clamp to ensure tiny objects don't lose their margins + # padding_mask = torch.stack([-PADDING_PX, -PADDING_PX, PADDING_PX, PADDING_PX], dim=1) + + # Apply padding to all bounding boxes concurrently via broad-vector math + # raw_boxes = raw_boxes + padding_mask + # padding = 5 # self.config.ROI_BB_FULL_RES_PADDING / self.scale_x + padding_scale = 0.01 + raw_boxes[:, 0] -= int(padding_scale * self.frame_width) + raw_boxes[:, 1] -= int(padding_scale * self.frame_height) + raw_boxes[:, 2] += int(padding_scale * self.frame_width) + raw_boxes[:, 3] += int(padding_scale * self.frame_height) + + return raw_boxes + + def filter_contained_boxes(self, boxes, overlap_thresh=0.9, max_elements=2000): + """ + True Zero-Copy Anchor Filter. Eliminates torch.stack stream synchronization + stalls by utilizing a pre-allocated boolean tracking register map. + Supports both CPU and GPU execution profiles natively. + """ + if boxes.shape[0] <= 1: + return boxes + + # 1. Extract dimensions safely using vectorized layout views + x1, y1, x2, y2 = boxes[:, 0], boxes[:, 1], boxes[:, 2], boxes[:, 3] + w = (x2 - x1).clamp(min=0) + h = (y2 - y1).clamp(min=0) + areas = w * h + + valid_mask = ( + (w < self.max_roi_w) + & (h < self.max_roi_h) + & (w >= self.min_roi_w) + & (h >= self.min_roi_h) + ) + boxes = boxes[valid_mask] + areas = areas[valid_mask] + + N = boxes.shape[0] + if N <= 1: + return boxes + + # 2. Sort structural metrics into our pre-allocated scratch index register + order = self._filter_order_scratch[:N] + torch.argsort(areas, stable=False, dim=0, descending=True, out=order) + + # 🚀 REPLACEMENT: Use an in-place boolean tracking mask instead of a Python list + # to collect survival flags without triggering heap fragmentation or synchronization locks. + if ( + not hasattr(self, "_filter_survival_mask") + or self._filter_survival_mask.shape[0] < max_elements + ): + self._filter_survival_mask = torch.zeros( + (max_elements,), dtype=torch.bool, device=boxes.device + ) + + survival_mask = self._filter_survival_mask[:N].zero_() + + # 3. User-Space Evaluation Loop + while order.numel() > 0: + i = order[0] + survival_mask[i] = ( + True # Mark this anchor index as verified on-device instantly + ) + + if order.numel() == 1: + break + + order_tail = order[1:] + num_tail = order_tail.numel() + + # Enforce static VRAM outputs using target 'out=' parameter parameters + torch.max( + boxes[i, 0], + boxes[order_tail, 0], + out=self._filter_scratch_x1[:num_tail], + ) + torch.max( + boxes[i, 1], + boxes[order_tail, 1], + out=self._filter_scratch_y1[:num_tail], + ) + torch.min( + boxes[i, 2], + boxes[order_tail, 2], + out=self._filter_scratch_x2[:num_tail], + ) + torch.min( + boxes[i, 3], + boxes[order_tail, 3], + out=self._filter_scratch_y2[:num_tail], + ) + + inter_w = ( + self._filter_scratch_x2[:num_tail] - self._filter_scratch_x1[:num_tail] + ).clamp_(min=0) + inter_h = ( + self._filter_scratch_y2[:num_tail] - self._filter_scratch_y1[:num_tail] + ).clamp_(min=0) + inter_area = inter_w * inter_h + + torch.div( + inter_area, + (areas[order_tail] + 1e-6), + out=self._filter_scratch_ioa[:num_tail], + ) + + mask = self._filter_scratch_keep[:num_tail] + torch.le(self._filter_scratch_ioa[:num_tail], overlap_thresh, out=mask) + + # Advance tracking window slice cleanly to the filtered child nodes + order = order_tail[mask] + + # 🚀 REPLACEMENT: Slice the original tensor layout with the boolean mask directly. + # This keeps the execution pipeline loopless and avoids cross-hardware synchronization stalls. + return boxes[survival_mask] + + def cpu_roi_padding(self, coords_xywh, method="uniform"): + """ + raw_boxes: in resize space (640) + """ + + if method == "uniform": + # pad using scale factor + widths = coords_xywh[:, 2] + heights = coords_xywh[:, 3] + # pad_w = widths * (PADDING_SCALE / 2.0) + # pad_h = heights * (PADDING_SCALE / 2.0) + # Add a minimum 3px clamp to ensure tiny objects don't lose their margins + pad_w = torch.clamp(widths * (PADDING_SCALE / 2.0), min=3.0) + pad_h = torch.clamp(heights * (PADDING_SCALE / 2.0), min=3.0) + # padding_mask = torch.stack([-pad_w, -pad_h, pad_w, pad_h], dim=1) + + x1 = coords_xywh[:, 0] - pad_w + y1 = coords_xywh[:, 1] - pad_h + x2 = (coords_xywh[:, 0] + widths) + pad_w + y2 = (coords_xywh[:, 1] + heights) + pad_h + raw_boxes = torch.stack([x1, y1, x2, y2], dim=1) + + elif method == "modelsize": + # extend box up to MODEL size + # if box is larger, keep as-is + scaley_8Kto640 = self.config.MODEL_H / self.frame_height + scalex_8Kto640 = self.config.MODEL_W / self.frame_width + model_w_640 = int(self.config.MODEL_W * scalex_8Kto640) + model_h_640 = int(self.config.MODEL_H * scaley_8Kto640) + + widths = coords_xywh[:, 2] + heights = coords_xywh[:, 3] + # if (widths,heights) == (model_w_640,model_h_640) or widths > model_w_640 or heights > model_h_640: + # pass # Keep as is + # else: + x_centers = (coords_xywh[:, 0] + widths) / 2.0 + y_centers = (coords_xywh[:, 1] + heights) / 2.0 + + # Determine target dimensions (clamp to target size if smaller) + new_widths = torch.clamp(widths, min=model_w_640) + new_heights = torch.clamp(heights, min=model_h_640) + + # Calculate new coordinates from the centers + new_x1 = x_centers - (new_widths / 2.0) + new_y1 = y_centers - (new_heights / 2.0) + new_x2 = x_centers + (new_widths / 2.0) + new_y2 = y_centers + (new_heights / 2.0) + + # 4. Stack into a tensor matching raw_boxes shape + raw_boxes = torch.stack([new_x1, new_y1, new_x2, new_y2], dim=1) + + elif method == "pixel": + # pad using scale factor + # widths = raw_boxes[:, 2] - raw_boxes[:, 0] + # heights = raw_boxes[:, 3] - raw_boxes[:, 1] + # # pad_w = widths * (PADDING_SCALE / 2.0) + # # pad_h = heights * (PADDING_SCALE / 2.0) + # Add a minimum 3px clamp to ensure tiny objects don't lose their margins + # padding_mask = torch.stack([-PADDING_PX, -PADDING_PX, PADDING_PX, PADDING_PX], dim=1) + + # Apply padding to all bounding boxes concurrently via broad-vector math + # raw_boxes = raw_boxes + padding_mask + # padding = 5 # self.config.ROI_BB_FULL_RES_PADDING / self.scale_x + padding_scale = 0.01 + widths = coords_xywh[:, 2] + heights = coords_xywh[:, 3] + pad_w = int(padding_scale * self.frame_width) + pad_h = int(padding_scale * self.frame_height) + # raw_boxes[:, 2] += int(padding_scale * self.frame_width) + # raw_boxes[:, 3] += int(padding_scale * self.frame_height) + + x1 = coords_xywh[:, 0] - pad_w + y1 = coords_xywh[:, 1] - pad_h + x2 = (coords_xywh[:, 0] + widths) + pad_w + y2 = (coords_xywh[:, 1] + heights) + pad_h + raw_boxes = torch.stack([x1, y1, x2, y2], dim=1) + + # Clean vectorized boundary clamping on host CPU memory + raw_boxes[:, 0].clamp_(min=0, max=self.resize_w - 1) + raw_boxes[:, 1].clamp_(min=0, max=self.resize_h - 1) + raw_boxes[:, 2].clamp_(min=0, max=self.resize_w - 1) + raw_boxes[:, 3].clamp_(min=0, max=self.resize_h - 1) + + return raw_boxes + + # CPU ------------------------------------------------ + def init_cpu_pipeline(self): + self.prepare_cpu_pipeline() + + def allocate_cpu(self): + self.device_index = "cpu" + if not hasattr( + self, "_pinned_small_frame" + ): # or self._pinned_small_frame.shape[:2] != (self.resize_h, self.resize_w): + self._pinned_small_frame = np.zeros( + (self.resize_h, self.resize_w, 3), dtype=np.uint8 + ) + self._pinned_fg_mask = np.zeros( + (self.resize_h, self.resize_w), dtype=np.uint8 + ) + self._pinned_blurred_mask = np.zeros( + (self.resize_h, self.resize_w), dtype=np.uint8 + ) + self._pinned_threshold_mask = np.zeros( + (self.resize_h, self.resize_w), dtype=np.uint8 + ) + self._pinned_dilated_mask = np.zeros( + (self.resize_h, self.resize_w), dtype=np.uint8 + ) + + # Existing order and boolean validation maps + self._filter_scratch_keep = torch.zeros( + (self.max_cached_elements,), dtype=torch.bool, device=self.device_input + ) + self._filter_order_scratch = torch.zeros( + (self.max_cached_elements,), dtype=torch.long, device=self.device_input + ) + + # Persistent coordinate layers to absorb inner-loop tensor evaluations safely + self._filter_scratch_x1 = torch.zeros( + (self.max_cached_elements,), dtype=torch.float32, device=self.device_input + ) + self._filter_scratch_y1 = torch.zeros( + (self.max_cached_elements,), dtype=torch.float32, device=self.device_input + ) + self._filter_scratch_x2 = torch.zeros( + (self.max_cached_elements,), dtype=torch.float32, device=self.device_input + ) + self._filter_scratch_y2 = torch.zeros( + (self.max_cached_elements,), dtype=torch.float32, device=self.device_input + ) + self._filter_scratch_ioa = torch.zeros( + (self.max_cached_elements,), dtype=torch.float32, device=self.device_input + ) + + # pass + self.resized_frame = np.zeros((3, self.resize_h, self.resize_w), dtype="uint8") + # cv2.cuda.createContinuous( + # self.resize_h, self.resize_w, cv2.CV_8UC3 + # ) + + self.fgMask = np.zeros( + (self.resize_h, self.resize_w), dtype="uint8" + ) # For resize + + if self.config.BKGD_SUB_INCLUDE_HISTORY_METHOD == "and": + self.prev_bkgd = np.ones( + (self.resize_h, self.resize_w), dtype="uint8" + ) # * 255 + else: + self.prev_bkgd = np.zeros((self.resize_h, self.resize_w), dtype="uint8") + + # self.prev_bkgd = np.ones((self.resize_h, self.resize_w), dtype="uint8") * 255 + + self.mask_history = deque( + maxlen=self.config.BKGD_SUB_INCLUDE_HISTORY_TEMPORAL_SIZE + ) + self.mask_history.append(self.prev_bkgd) + + def prepare_cpu_pipeline(self): # , method="mog2"): + self.allocate_cpu() + + # Subtraction + self.lr = self.config.BKGD_SUB_MOG2_LR + self.backSub = cv2.createBackgroundSubtractorMOG2( + history=self.config.BKGD_SUB_MOG2_HISTORY, # Clear ghosts of fast drones in ~2 seconds (2*fps) + varThreshold=self.config.BKGD_SUB_MOG2_VARTHRESHOLD, # High threshold to ignore "shimmer" and compression noise # default 16 + detectShadows=self.config.BKGD_SUB_MOG2_DETECTSHADOWS, # default True + ) + # else: + # raise ValueError(f"Provided method ({method}) is not available.") + + def cleanup_cpu_v1(self): + """ + Purges large 8K NumPy buffers and CPU-based AI resources. + """ + self._pinned_small_frame = None + self._pinned_fg_mask = None + self._pinned_blurred_mask = None + self._pinned_threshold_mask = None + self._pinned_dilated_mask = None + + # Nullify specific class references to allow Garbage Collection + self.executor = None + self.clip_executor = None + self.reader = None + self.latest_processed_frame = None + + # Clear the Ping-Pong buffers (up to 200MB of RAM) + # if hasattr(self, "encode_buffers"): + # self.encode_buffers.clear() + + # Explicitly nullify large arrays to trigger Garbage Collection + self.resized_frame = None + self.fgMask = None + self.prev_bkgd = None + + # Clear the BGS history + if hasattr(self, "mask_history"): + self.mask_history.clear() + + def apply_background_subtraction_cpu( + self, motion_input, include_history=True, method="and" + ): + raw_mask = self.backSub.apply( + motion_input, learningRate=self.config.BKGD_SUB_MOG2_LR + ) + + if include_history: + # self.prev_bkgd = np.zeros((self.resize_h, self.resize_w), dtype="uint8") + + for m in list(self.mask_history): + # Dilate the historical mask on CPU + dilated = cv2.dilate( + m, self.dilate_kernel_for_enhanced_mask, iterations=1 + ) + + if method == "or": + # Bitwise OR on CPU + cv2.bitwise_or(self.prev_bkgd, dilated, dst=self.prev_bkgd) + else: + # Bitwise AND on CPU + cv2.bitwise_and(self.prev_bkgd, dilated, dst=self.prev_bkgd) + + self.mask_history.append(raw_mask) # .copy()) + + # if ( + # self.prev_bkgd.max() != self.prev_bkgd.min() + # and self.prev_bkgd.max() > 0 + # ): + # combined_mask_bool = (self.fgMask > 0) | (self.prev_bkgd > 0) + # self.fgMask = combined_mask_bool.astype(np.uint8) * 255 + raw_mask = cv2.bitwise_or(raw_mask, self.prev_bkgd) + return raw_mask + + def get_sf_cpu_rois( + self, device_frame, overall_frame_num, max_candidates=100, limit_640=1280 + ): + # is_debug = self.config.DEBUG_FLAG + # test_mode = self.config.TEST_MODE + debug_frame_limit = ( + self.debug_frame_limit + if self.config.DEBUG_FLAG and self.debug_frame_limit > -1 + else -1 + ) + + if overall_frame_num <= debug_frame_limit: + stage_debug_dir = ( + self.result_dir / "debug_stages" / self._testMethodName / "roi_stages" + ) + stage_debug_dir.mkdir(parents=True, exist_ok=True) + # f_num = overall_frame_num + + if overall_frame_num <= debug_frame_limit: + cv2.imwrite( + str(stage_debug_dir / f"frame_{overall_frame_num:04d}_stage1_src.jpg"), + device_frame, + ) + + # target_w, target_h = self.resize_w, self.resize_h + + # Force a zero-allocation resize into our pre-allocated, sequential cache-line matrix buffer + cv2.resize( + device_frame, + (self.resize_w, self.resize_h), + dst=self._pinned_small_frame, + interpolation=cv2.INTER_NEAREST, + ) + # [STAGE 2 DEBUG] Check Downsampled Frame + if overall_frame_num <= debug_frame_limit: + cv2.imwrite( + str( + stage_debug_dir / f"frame_{overall_frame_num:04d}_stage2_resize.jpg" + ), + self._pinned_small_frame, + ) + + # --- PHASE 2: STRIPPED SINGLE-THREAD BACKGROUND ARITHMETIC --- + # Run background subtraction straight into our static memory address lane + # We pass your configured learning rate (BKGD_SUB_MOG2_LR) to lock the temporal parameters + # self._pinned_fg_mask = self.backSub.apply( + # self._pinned_small_frame, + # # dst=self._pinned_fg_mask, + # learningRate=self.config.BKGD_SUB_MOG2_LR, + # ) + + self._pinned_fg_mask = self.apply_background_subtraction_cpu( + self._pinned_small_frame, + include_history=self.config.BKGD_SUB_INCLUDE_HISTORY, + method=self.config.BKGD_SUB_INCLUDE_HISTORY_METHOD, + ) + + # [STAGE 5 DEBUG] Check Mask after History ORing/ANDing steps + if overall_frame_num <= debug_frame_limit: + cv2.imwrite( + str( + stage_debug_dir + / f"frame_{overall_frame_num:04d}_stage5_history_mask.jpg" + ), + self._pinned_fg_mask, + ) + + # d_blurred = cv2.cuda.GpuMat(raw_mask.size(), cv2.CV_8UC1) + # self._cuda_gaussian_filter.apply(raw_mask, d_blurred, stream=self.bgs_stream) + ksize = (17, 17) + self._pinned_blurred_mask = cv2.GaussianBlur(self._pinned_fg_mask, ksize, 0) + + # [STAGE 6 DEBUG] + if overall_frame_num <= debug_frame_limit: + cv2.imwrite( + str( + stage_debug_dir / f"frame_{overall_frame_num:04d}_stage5b_blur.jpg" + ), + # str(stage_debug_dir / f"frame_{overall_frame_num:04d}_stage6_thresh_final_mask.jpg"), + self._pinned_blurred_mask, + ) + + # 7. MORPHOLOGICAL TRANSFORMATIONS & BINARY FILTERS + _, self._pinned_threshold_mask = cv2.threshold( + self._pinned_blurred_mask, + 50, # self.config.THRESHOLD_VALUE, + self.config.THRESHOLD_MAX_VALUE, + cv2.THRESH_BINARY, + ) + + # [STAGE 6 DEBUG] Check Binary Threshold Output + if overall_frame_num <= debug_frame_limit: + cv2.imwrite( + str( + stage_debug_dir + / f"frame_{overall_frame_num:04d}_stage6_threshold.jpg" + ), + # str(stage_debug_dir / f"frame_{overall_frame_num:04d}_stage6_thresh_final_mask.jpg"), + self._pinned_threshold_mask, + ) + + # Execute morphology dilation inline within our zero-allocation ring workspace [PDF: 0.1.18] + cv2.dilate( + self._pinned_threshold_mask, + self.dilate_kernel, + dst=self._pinned_dilated_mask, + iterations=1, + ) + # [STAGE 7 DEBUG] Check Final Dilated Output Mask + if overall_frame_num <= debug_frame_limit: + cv2.imwrite( + str( + stage_debug_dir + / f"frame_{overall_frame_num:04d}_stage8_final_dilatemask.jpg" + ), + self._pinned_dilated_mask, + ) + + # inf_data = {"full_frame": frame, "mask": self._pinned_dilated_mask} + + # REGION OF INTEREST ANALYSIS + # get cpu rois by area + contours, _ = cv2.findContours( + self._pinned_dilated_mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE + ) + raw_boxes = [ + list(cv2.boundingRect(c)) + for c in contours + if cv2.contourArea(c) > self.min_contour_area + ] + + if len(raw_boxes) < 1: + return torch.empty((0, 4), device=self.device_input) + + if len(raw_boxes) > max_candidates: + raw_boxes.sort(key=lambda b: b[2] * b[3], reverse=True) + raw_boxes = raw_boxes[:max_candidates] + + with self.compiled_no_grad_gate: + # coords_xywh = np.array(raw_boxes_xywh, dtype=np.float32) + coords_xywh = torch.tensor( + raw_boxes, dtype=torch.float32, device=self.device_input + ) + + raw_boxes = self.cpu_roi_padding(coords_xywh, method="uniform") + + clean_640p = self.filter_contained_boxes( + raw_boxes, overlap_thresh=self.config.ROI_CONTAINMENT_THRESH + ) + + if clean_640p.shape[0] < 1: + # del raw_boxes_640p, clean_640p, raw_boxes_xywh # , raw_boxes + return torch.empty((0, 4), device=self.device_input) + + # Scale to 8K space + # Sever the PyTorch graph graph entirely by detaching and casting to a standard numpy block + bbs_full_res = (clean_640p * self.scales_tensor).detach() # .clone() + + # Explicitly clear the intermediate tensor tensors to drop heap allocations to 0 + # del raw_boxes_640p, clean_640p, raw_boxes_xywh, scaled_output # , raw_boxes + + return bbs_full_res + + def run_cpu_pipeline( + self, device_frame, overall_frame_num, frame_in_clip_count=0, gt_boxes=None + ): + metrics = {"sf_time": 0, "roi_time": 0, "det_time": 0, "bbs": None} + + # Get ROIs + if self.timer_enabled: + t_start = time.perf_counter() + + bbs_full_res = self.get_sf_cpu_rois(device_frame, overall_frame_num) + + if self.timer_enabled: + metrics["sf_time"] = (time.perf_counter() - t_start) * 1000.0 + + # metrics["bbs"] = bbs_full_res + if bbs_full_res is not None: + if torch.is_tensor(bbs_full_res): + metrics["bbs"] = bbs_full_res.detach().cpu().numpy() + elif isinstance(bbs_full_res, np.ndarray): + metrics["bbs"] = bbs_full_res + else: + metrics["bbs"] = np.empty((0, 4), dtype=np.float32) + + merged, det_frame = self.format_bbs_and_frame_4_detection( + bbs_full_res, device_frame + ) + motion_detected = len(merged) > 0 if merged is not None else False + metrics["batch_density"] = len(merged) if merged is not None else 0 + + if ( + self.config.DEBUG_FLAG + and overall_frame_num <= self.config.DEBUG_FRAME_LIMIT + ): + self.debug_save_mask( + det_frame, overall_frame_num, rois=merged, gt_boxes=gt_boxes + ) + + if not self.config.DISABLE_DETECTION: + # --- 3. MODEL INFERENCE TIMING BLOCK --- + if self.timer_enabled: + t_start = time.perf_counter() + + # Get Detection Metadata + if self.config.DETECTION_TYPE != "motion": # Object detection + metadata, _ = self.get_detections( + det_frame, + frame_in_clip_count, + merged=merged, + thickness=self.config.THICKNESS, + device_input=self.config.device_input, + ) + # num_objs = len(metadata.keys()) + else: # Motion: Smart filtering results + # 8k bb to 640 + metadata = self.motion2metadata(merged, self.frame_count_target) + + if self.timer_enabled: + metrics["det_time"] = (time.perf_counter() - t_start) * 1000.0 + + del merged, bbs_full_res + return metrics, metadata, det_frame, motion_detected + + def cleanup_gpu(self): + """ + Explicitly releases all GPU-allocated memory, persistent tensors, + and pinned cross-hardware streams to prevent VRAM leaks. + """ + main_app_logger.info("[CLEANUP] Starting comprehensive GPU resource purge...") + + # 1. Clear the persistent VRAM lock tensor to allow full layout collection + if hasattr(self, "_BaseObjectDetector__persistent_vram_lock"): + self._BaseObjectDetector__persistent_vram_lock = None + + # 2. Iterate through and explicitly release all primitive OpenCV GpuMat layers + for attr_name in list(self.__dict__.keys()): + attr_value = getattr(self, attr_name) + if isinstance(attr_value, cv2.cuda.GpuMat): + attr_value.release() + setattr(self, attr_name, None) + main_app_logger.info(f" [x] Released GpuMat: {attr_name}") + + # 3. Explicitly nullify persistent PyTorch Tensors on GPU/CPU + tensor_attributes = [ + "fixed_inference_batch", + "gpu_float_staging", + "scales_tensor", + "pinned_cpu_xyxy", + "pinned_cpu_clss", + "pinned_cpu_confs", + "static_canvas_scratch", + "_labeled_scratch", + "_filter_survival_mask", + "_filter_scratch_keep", + "_filter_order_scratch", + "_filter_scratch_x1", + "_filter_scratch_y1", + "_filter_scratch_x2", + "_filter_scratch_y2", + "_filter_scratch_ioa", + ] + for attr in tensor_attributes: + if hasattr(self, attr): + setattr(self, attr, None) + + # 4. Flush pre-allocated lists and buffer collections + if hasattr(self, "gpu_buffer_pool"): + for mat in self.gpu_buffer_pool: + if isinstance(mat, cv2.cuda.GpuMat): + mat.release() + self.gpu_buffer_pool = [] + + if hasattr(self, "frame_buffer_pool"): + self.frame_buffer_pool = [] + + if hasattr(self, "mask_history"): + self.mask_history.clear() + + # 5. Nullify models and framework engines to drop context weights + self.model = None + self.cached_predictor = None + self.compiled_no_grad_gate = None + if hasattr(self, "_raw_bounds_function"): + self._raw_bounds_function = None + + # 6. Final unified hardware fence synchronization and allocator sweep + if torch.cuda.is_available(): + torch.cuda.synchronize() + torch.cuda.empty_cache() + main_app_logger.info( + "[CLEANUP] GPU resource tracking layers completely isolated." + ) + + def cleanup_cpu(self): + """ + Purges large 8K NumPy buffers and host-side tracking structures. + """ + main_app_logger.info("[CLEANUP] Purging host CPU variables...") + + cpu_buffers = [ + "_pinned_small_frame", + "_pinned_fg_mask", + "_pinned_blurred_mask", + "_pinned_threshold_mask", + "_pinned_dilated_mask", + "resized_frame", + "fgMask", + "prev_bkgd", + ] + for attr in cpu_buffers: + if hasattr(self, attr): + setattr(self, attr, None) + + if hasattr(self, "mask_history"): + self.mask_history.clear() + + # Clean background web workers and thread pool contexts safely + self.executor = None + self.clip_executor = None + self.reader = None + self.latest_processed_frame = None + + # Explicitly run standard garbage collection to drop unreferenced heap layers + import gc + + gc.collect() + main_app_logger.info("[CLEANUP] Host CPU workspace successfully cleared.") diff --git a/fastapi/include/handlers.py b/fastapi/include/handlers.py index fce0edc..f95cd43 100644 --- a/fastapi/include/handlers.py +++ b/fastapi/include/handlers.py @@ -1,9 +1,13 @@ +# ============================================================================== +# IMPORTS import asyncio import gc +import inspect import json import logging import multiprocessing as mp import os +import pickle import queue import shutil import subprocess @@ -11,19 +15,17 @@ import threading import time import traceback -from collections import deque +import types from concurrent.futures import ThreadPoolExecutor from contextlib import asynccontextmanager from datetime import datetime -from multiprocessing import shared_memory from pathlib import Path -import cupy -import cupyx.scipy -import cupyx.scipy.ndimage import cv2 import numpy as np +import psutil import torch +import torch.cuda._memory_viz as memory_viz import torch.nn.functional as F from ultralytics import YOLO from ultralytics.utils.checks import check_imgsz @@ -32,34 +34,73 @@ sys.path.insert(1, str(Path(__file__).parent.parent)) from include.default_configs import ENABLE_QUERYING_DEFAULT -from include.models import get_model +from include.detectors import GeneralObjectDetector, SmartFilteringObjectDetector from include.utils import ( - BOUNDS_KERNEL, - DETECTION_ACCEL_KERNEL, + AsyncDisplayVideoWriter, + AsyncVideoWriter, + DummyProcess, + PipelineConfig, VDMSPool, - find_contours_gpu_equivalent, - merge_boxes_cpu, - merge_boxes_gpu, + # safe_unregister_shm, + analyze_tracemalloc_snapshot, + default_attr_keys, + get_bb_overlay, + get_metadata_overlay, + # find_contours_gpu_equivalent, + global_frame_prefetch_worker_v1, + metadata2vdms_with_retry, + release_native_linux_heap, + release_shared_memory, ) -# ----- SETUP LOGGING ----- +# Force OpenCV to run sequentially to prevent context-switching overhead +cv2.setNumThreads(0) # Forces OpenCV loops to run strictly sequentially + +# ============================================================================== +# LOGGING logging.basicConfig( level=logging.INFO, - format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", + # format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", + format="%(asctime)s [%(levelname)s] %(name)s (%(filename)s:%(lineno)d) - %(message)s", handlers=[logging.StreamHandler(sys.stdout)], ) # Suppress low-delay reference block warnings from OpenCV/PyAV/FFmpeg -os.environ["OPENCV_FFMPEG_LOGLEVEL"] = "-8" -os.environ["OPENCV_LOG_LEVEL"] = "OFF" +# os.environ["OPENCV_FFMPEG_LOGLEVEL"] = "-8" +# os.environ["OPENCV_LOG_LEVEL"] = "OFF" logging.getLogger("libav").setLevel(logging.CRITICAL) logging.getLogger("libav.hevc").setLevel(logging.CRITICAL) - main_app_logger = logging.getLogger(__name__) + +# ============================================================================== +# FUNCTIONS + STREAM_ARG = False +# PADDING_PX = 5 #25 +PADDING_SCALE = 0.5 # 0.2 #3 #0.05 # 0.045 # 0.05 +BASE_PIPELINE_CONFIG = PipelineConfig( + SHARED_MODEL=os.getenv("SHARED_MODEL", False), + ENABLE_QUERYING=os.getenv("ENABLE_QUERYING", ENABLE_QUERYING_DEFAULT), +) +os.environ["OPENCV_FFMPEG_CAPTURE_OPTIONS"] = ( + "rtsp_transport;tcp;hwaccel;cuda;threads;auto;low_delay;1;probesize;5000000" +) + +ffmpeg_cores = "4,5,6,7" # Manually define cores + +# ----- GLOBAL VARIABLES ----- +all_metadata = {} + +# Queue for metadata being sent to vdms +send_metadata_queue = queue.Queue() + +# Tracks if both components are finished: +# {"clip_name": {"video": bool, "meta": bool}} +clip_completion_tracker = {} def log_to_logger(message, level="info"): + """Safely logs a message to the main application logger.""" try: if level.lower() == "debug": main_app_logger.debug(message) @@ -71,187 +112,143 @@ def log_to_logger(message, level="info"): pass -# ----- PIPELINE CONFIGURATION ----- -# Force OpenCV to run sequentially to prevent context-switching overhead -cv2.setNumThreads(0) # Forces OpenCV loops to run strictly sequentially -# cv2.setNumThreads(os.cpu_count() or 4) -torch.set_num_threads(1) -torch.set_num_interop_threads(1) -# os.environ["OMP_NUM_THREADS"] = "1" -os.environ["MKL_NUM_THREADS"] = "1" -os.environ["OMP_NUM_THREADS"] = str(mp.cpu_count()) # "1" -os.environ["PYTORCH_ALLOC_CONF"] = "expandable_segments:True" - - -from include.utils import ( - PipelineConfig, - PipelineMapping, - draw_label, - get_detection_color, - metadata2vdms_with_retry, -) - - -class AsyncVideoWriter: - """Handles disk saving operations asynchronously on a background thread.""" - - def __init__(self, path, fourcc, fps, size): - self.writer = cv2.VideoWriter(path, fourcc, fps, size) - self.queue = queue.Queue() - self.running = True - self.thread = threading.Thread(target=self._write_loop, daemon=True) - self.thread.start() - - def _write_loop(self): - while self.running or not self.queue.empty(): - try: - frame = self.queue.get(timeout=0.05) - if frame is None: - break - self.writer.write(frame) - self.queue.task_done() - except queue.Empty: - continue - - def write_frame(self, frame): - self.queue.put(frame) - - def release(self): - self.running = False - self.thread.join() - self.writer.release() +from multiprocessing.shared_memory import SharedMemory -class AsyncDisplayVideoWriter: +def video_writer_core_loop( + write_queue, + segment_pattern, + fps, + width, + height, + clip_duration, + shm_names, + frame_bytes, +): """ - Lock-free single-element buffer optimized for 8K pipelines. - Eliminates queue.Queue lock contention to preserve strict target frame rates. + Original core loop, now running in an isolated process. + It manages its own FFmpeg pipe and reads frames from the multiprocessing queue. """ + # 1. Move your existing FFmpeg command creation here + # (Adapt these arguments if your original segment command differed slightly) + # command = [ + # 'ffmpeg', '-y', + # '-f', 'rawvideo', '-vcodec', 'rawvideo', + # '-s', f'{width}x{height}', '-pix_fmt', 'bgr24', '-r', str(fps), + # '-i', '-', + # '-c:v', 'libx264', '-preset', 'ultrafast', '-crf', '28', + # '-f', 'segment', '-segment_time', '60', '-reset_timestamps', '1', + # segment_pattern + # ] + # clip_duration = int(self.config.CLIP_DURATION) + # Attach to the existing shared memory blocks + shm_blocks = [SharedMemory(name=name) for name in shm_names] + + frame_buffers = [ + np.ndarray((height, width, 3), dtype=np.uint8, buffer=shm.buf) + for shm in shm_blocks + ] + # Example: Get the CPU core count and reserve the last few for FFmpeg + # core_count = os.cpu_count() + # ffmpeg_cores = "4,5,6,7" # Manually define cores + command = [ + "taskset", + "-c", + ffmpeg_cores, + "ffmpeg", + "-y", + "-f", + "rawvideo", + "-pix_fmt", + "bgr24", + "-s", + f"{width}x{height}", + "-r", + str(fps), + "-i", + "-", + "-c:v", + "libx264", # "mpeg4", # Or "libx264" if you prefer H.264 + "-crf", + "23", + "-f", + "mpegts", + "-movflags", + "faststart", + "-force_key_frames", + f"expr:gte(t,n_forced*{clip_duration})", + "-f", + "segment", + "-segment_time", + f"{clip_duration}", + "-reset_timestamps", + "1", + "-segment_format", + "mp4", + # CRITICAL: Force fragmented headers so every chunk has a valid moov atom instantly + "-segment_format_options", + "movflags=frag_keyframe+empty_moov+default_base_moof", + segment_pattern, + ] + + # 2. Start the FFmpeg pipe INSIDE the process + video_writer = subprocess.Popen( + command, stdin=subprocess.PIPE, stderr=subprocess.DEVNULL + ) - def __init__(self, target_fps, display_size, quality=60): - self.target_fps = float(target_fps) - self.disp_w, self.disp_h = display_size - self.quality = int(quality) - - # 1. 🔄 FIX: Use a lockless deque with maxlen=1 instead of queue.Queue - self.buffer = deque(maxlen=1) - self.running = True - self.handler = None - - self.thread = threading.Thread(target=self._write_loop, daemon=True) - self.thread.start() - - def set_handler_context(self, handler_instance): - self.handler = handler_instance - - def _write_loop(self): - encode_param = [int(cv2.IMWRITE_JPEG_QUALITY), self.quality] - - while self.running: - try: - # 2. 🔄 FIX: Non-blocking pop from the single-element buffer - if not self.buffer: - time.sleep(0.005) - continue - - display_frame, frame_num = self.buffer.popleft() - - if self.handler is None or not self.handler.active: - continue - - if ( - display_frame.shape[1] != self.disp_w - or display_frame.shape[0] != self.disp_h - ): - display_frame = cv2.resize( - display_frame, - (self.disp_w, self.disp_h), - interpolation=cv2.INTER_NEAREST, - ) - - ret, jpeg_buf = cv2.imencode(".jpg", display_frame, encode_param) - if not ret: - continue - - frame_bytes = jpeg_buf.tobytes() - frame_len = len(frame_bytes) - num_shms = len(self.handler.shms) - - write_idx = (self.handler.ready_buffer_idx.value + 1) % num_shms - - shm_block = self.handler.shms[write_idx] - shm_block.buf[:frame_len] = memoryview(frame_bytes) - - self.handler.shm_frame_lengths[write_idx] = frame_len - self.handler.ready_buffer_idx.value = write_idx - self.handler.shared_details["last_id"] = frame_num - self.handler.mp_last_id.value = frame_num - - if hasattr(self.handler, "loop") and self.handler.loop is not None: - self.handler.loop.call_soon_threadsafe( - self.handler.frame_ready_event.set - ) - else: - self.handler.frame_ready_event.set() - - except Exception as e: - print( - f"[STREAM-ERROR] Lock-free frame streaming dropped: {e}", flush=True - ) - continue - - def write_frame(self, frame, frame_num): - """Thread-safe lock-free atomic submission track.""" - if self.running: - # 3. 🔄 FIX: Directly append to overwrite the old entry without thread locks - self.buffer.append((frame, frame_num)) - - def release(self): - self.running = False - self.buffer.clear() - if self.thread.is_alive(): - self.thread.join(timeout=0.5) - - -BASE_PIPELINE_CONFIG = PipelineConfig( - SHARED_MODEL=os.getenv("SHARED_MODEL", False), - ENABLE_QUERYING=os.getenv("ENABLE_QUERYING", ENABLE_QUERYING_DEFAULT), -) - - -# Optimizes RTSP ingestion with hardware acceleration and low-delay flags -os.environ["OPENCV_FFMPEG_CAPTURE_OPTIONS"] = ( - "rtsp_transport;tcp|hwaccel;cuda|threads;auto|low_delay;1|probesize;5000000" - # "rtsp_transport;tcp|hwaccel;cuda|threads;1|probesize;32|analyzeduration;0" - # "rtsp_transport;tcp|hwaccel;cuda|threads;2|probesize;32|analyzeduration;0" - # "rtsp_transport;tcp|hwaccel;cuda|threads;2|probesize;32|analyzeduration;0" - # "rtsp_transport;tcp|hwaccel;cuda|threads;4|probesize;5000000|analyzeduration;5000000" - # "rtsp_transport;udp|hwaccel;cuda|threads;8|stimeout;5000000|listen_timeout;5000" -) - - -# ----- GLOBAL VARIABLES ----- -# ENABLE_QUERYING = os.getenv("ENABLE_QUERYING", ENABLE_QUERYING_DEFAULT) -# if BASE_PIPELINE_CONFIG.ENABLE_QUERYING: -# Tracks all metadata -all_metadata = {} - -# Tracks clip_filename once video re-encoded -# video_ready_list = {} - -# Queue for metadata being sent to vdms -send_metadata_queue = queue.Queue() + try: + # while True: + # # 3. Read the frame array directly from the queue + # frame = write_queue.get() + + # # Poison pill to stop the process cleanly + # if frame is None: + # break + + # # ================================================================= + # # 🛠️ SAFE BYTE EXTRACTION + # # ================================================================= + # if torch.is_tensor(frame): + # # Move to CPU, convert to NumPy, and get bytes + # raw_bytes = frame.detach().cpu().numpy().tobytes() + # elif isinstance(frame, np.ndarray): + # raw_bytes = frame.tobytes() + # else: + # raw_bytes = bytes(frame) # Fallback for raw byte strings + # # ================================================================= + + # # Write the raw bytes to the FFmpeg pipe + # video_writer.stdin.write(raw_bytes) + + # # Help garbage collection in the isolated process + # del frame, raw_bytes + while True: + # Get the SLOT INDEX from the queue (not the full frame) + slot_idx = write_queue.get() + if slot_idx is None: + break -# Tracks if both components are finished: -# {"clip_name": {"video": bool, "meta": bool}} -clip_completion_tracker = {} + # 3. Access the frame directly from the shared memory buffer + frame = frame_buffers[slot_idx] + video_writer.stdin.write(frame.tobytes()) -PADDING_PX = 10 + except Exception as e: + logging.error(f"[VIDEO WRITER] Loop exception: {e}") + finally: + video_writer.stdin.close() + video_writer.wait() + # Clean up process-local attachments + for shm in shm_blocks: + shm.close() # ----- FASTAPI APPLICATION STARTUP/SHUTDOWN ----- # The lifespan parameter handles startup and shutdown async def auto_cleanup_janitor(app): + """ + A background task that runs periodically to find and clean up stale or inactive streams. + This acts as a safety net to prevent resource leaks from streams that do not terminate correctly. + """ while True: await asyncio.sleep(10) now = time.time() @@ -262,47 +259,92 @@ async def auto_cleanup_janitor(app): for name, streamer in list(app.state.active_streams.items()): # streamer = app.state.active_streams.get(name) if not streamer: + app.state.active_streams.pop(name, None) continue - ai_backlog = streamer.get_executor_backlog() - video_backlog = ( - streamer.write_queue.qsize() - if streamer.config.ENABLE_QUERYING - else 0 - ) - # io_backlog = ( - # streamer.io_executor._work_queue.qsize() - # if hasattr(streamer, "io_executor") - # else 0 - # ) - - # Check if the stream is marked inactive OR timed out - # streamer.active should be False when the video source ends - is_stale = now - streamer.last_heartbeat > 30 - - should_remove = False - - if not streamer.active and ( - ai_backlog == 0 and video_backlog == 0 # and io_backlog == 0 - ): - should_remove = True # Video ended naturally - elif is_stale and ( - ai_backlog == 0 and video_backlog == 0 # io_backlog == 0 - ): - should_remove = True # Browser tab closed/Network lost - elif now - streamer.last_heartbeat > 90: - should_remove = True # Hard timeout for hung processes + # If the stream handler marked itself inactive or stopped + # if getattr(streamer, "_is_stopped", False) or not getattr(streamer, "active", True): + # main_app_logger.info(f"JANITOR: Removing dead stream {name}") + # app.state.active_streams.pop(name, None) + # if not streamer._is_stopped: + # loop = asyncio.get_event_loop() + # loop.run_in_executor(None, streamer.stop) + # continue + + if hasattr( + streamer, "last_heartbeat" + ): # and (getattr(streamer, "active", False) == "RUNNING"): + # # Inactivity heartbeat check (e.g., 5 seconds with no new frames) + # if now - getattr(streamer, "last_heartbeat", now) > 15.0: + # main_app_logger.info(f"JANITOR: Stream {name} timed out. Evicting.") + # app.state.active_streams.pop(name, None) + # if not streamer._is_stopped: + # loop = asyncio.get_event_loop() + # loop.run_in_executor(None, streamer.stop) + # continue + + ai_backlog = streamer.get_executor_backlog() + video_backlog = ( + streamer.write_queue.qsize() + if streamer.config.ENABLE_QUERYING + else 0 + ) + # io_backlog = ( + # streamer.io_executor._work_queue.qsize() + # if hasattr(streamer, "io_executor") + # else 0 + # ) - if should_remove: - async with app.state.stream_lock: - if BASE_PIPELINE_CONFIG.DEBUG == "1": - print(f"CLEANUP: Removing {name} from active_streams") - streamer.stop() - app.state.active_streams.pop(name, None) + # Check if the stream is marked inactive OR timed out + # streamer.active should be False when the video source ends + is_stale = now - streamer.last_heartbeat > 30 # No activity for 30s + is_hung = ( + now - streamer.last_heartbeat > 90 + ) # Hard timeout after 90s + + should_remove = False + reason = "" + + # Conditions to remove stream + if streamer._is_stopped: + should_remove, reason = True, "Handler already stopped" + elif not streamer.active and ( + ai_backlog == 0 and video_backlog == 0 # and io_backlog == 0 + ): + should_remove, reason = True, "Video ended naturally" + elif is_stale and ( + ai_backlog == 0 and video_backlog == 0 # io_backlog == 0 + ): + should_remove, reason = True, "Browser tab closed/Network lost" + elif is_hung: + should_remove, reason = True, "Hard timeout for hung processes" + + if should_remove: + async with app.state.stream_lock: + if BASE_PIPELINE_CONFIG.DEBUG == "1": + main_app_logger.info( + f"CLEANUP: Removing {name} from active_streams: {reason}" + ) + try: + if not streamer._is_stopped: + streamer.stop() + streamer.stop_threads(["process_thread"]) + app.state.active_streams.pop(name, None) + finally: + del streamer + + gc.collect() # Final garbage collection + if torch.cuda.is_available(): + torch.cuda.empty_cache() @asynccontextmanager async def lifespan(app: FastAPI): + """ + Manages FastAPI startup and shutdown lifecycle. + Guarantees release on shutdown. + """ + # --- STARTUP --- if not hasattr(app.state, "classes"): app.state.classes = None @@ -312,27 +354,31 @@ async def lifespan(app: FastAPI): app.state.status = "Ready" app.state.stream_lock = asyncio.Lock() + + # Warmup shared model (if configured) if BASE_PIPELINE_CONFIG.SHARED_MODEL: app.state.model = YOLO( BASE_PIPELINE_CONFIG.model_path, verbose=False, task="detect" ) device_input = "cuda" if BASE_PIPELINE_CONFIG.DEVICE == "GPU" else "cpu" - print("Starting shared model warmup...") - dummy_input = torch.zeros( - (1, 3, BASE_PIPELINE_CONFIG.MODEL_H, BASE_PIPELINE_CONFIG.MODEL_W) - ).to(device_input) - for _ in range(20): - _ = app.state.model(dummy_input, verbose=False) - - del dummy_input - # torch.cuda.empty_cache() - print("Shared model warmup and VRAM purge complete.") + main_app_logger.info("Starting shared model warmup...") + try: + dummy_input = torch.zeros( + (1, 3, BASE_PIPELINE_CONFIG.MODEL_H, BASE_PIPELINE_CONFIG.MODEL_W) + ).to(device_input) + for _ in range(5): + _ = app.state.model(dummy_input, verbose=False) + finally: + del dummy_input + if "cuda" in device_input: + torch.cuda.empty_cache() + main_app_logger.info("Shared model warmup and VRAM purge complete.") janitor_task = asyncio.create_task(auto_cleanup_janitor(app)) if BASE_PIPELINE_CONFIG.DEBUG == "1": - print(f"--- APP STARTUP | PID: {os.getpid()} | STATE READY ---") + main_app_logger.info(f"--- APP STARTUP | PID: {os.getpid()} | STATE READY ---") yield @@ -340,79 +386,24 @@ async def lifespan(app: FastAPI): janitor_task.cancel() async with app.state.stream_lock: for name, streamer in list(app.state.active_streams.items()): - print(f"Shutting down stream: {name}") + main_app_logger.info(f"Shutting down stream: {name}") streamer.stop() # Custom stop method defined below + streamer.stop_threads(["process_thread"]) app.state.active_streams.pop(name, None) - app.state.status = "Stopped" - - -# ----- INGESTION FUNCTIONS ----- -def nv12_to_rgb_torch( - nv12_tensor, h, w, is_h264_8k=False, out_buffer=None, is_bgr=True -): - """ - Highly optimized NV12/YUV to RGB/BGR conversion. - Fixes the 'Blue Frame' by applying proper YUV-to-RGB matrix math. - """ - with torch.no_grad(): - if is_h264_8k: - # 8K Planar Path: Map the channels directly - y = nv12_tensor[0:1, :, :].half() - u = nv12_tensor[1:2, :, :].half() - v = nv12_tensor[2:3, :, :].half() # Use the 3rd channel! - - # No column slicing (0::2) needed if it's already planar. - # But we must ensure U and V match Y dimensions if they were subsampled. - if u.shape[-1] != w or u.shape[-2] != h: - u = F.interpolate(u.unsqueeze(0), size=(h, w), mode="bilinear").squeeze( - 0 - ) - v = F.interpolate(v.unsqueeze(0), size=(h, w), mode="bilinear").squeeze( - 0 - ) - else: - # Standard NV12 Path: Image is [H*1.5, W] - y = nv12_tensor[:h, :w].unsqueeze(0).half() - uv = ( - nv12_tensor[h:, :w] - .reshape(h // 2, w // 2, 2) - .permute(2, 0, 1) - .unsqueeze(0) - .half() - ) - # Upsample Chroma (4:2:0 -> 4:4:4) - uv_up = F.interpolate(uv, size=(h, w), mode="nearest") - u = uv_up[0, 0:1, :, :] - v = uv_up[0, 1:2, :, :] - - # --- YUV to RGB Conversion Math (BT.709) --- - # 1. Normalize Luma and center Chroma - y = (y - 16.0) * 1.164 - u = u - 128.0 - v = v - 128.0 - - # 2. Matrix Multiplication (Coefficients for natural color) - r = y + 1.793 * v - g = y - 0.213 * u - 0.533 * v - b = y + 2.112 * u - - # 3. Stack into final order - if is_bgr: - colored_img = torch.cat([b, g, r], dim=0) - else: - colored_img = torch.cat([r, g, b], dim=0) - - # 4. Final Clamp and Format - colored_img.clamp_(0, 255) - output = colored_img.to(torch.uint8) + del streamer - if out_buffer is not None: - out_buffer.copy_(output) - return out_buffer + # Clear all application state + app.state.active_streams.clear() + if hasattr(app.state, "model"): + del app.state.model - return output + gc.collect() # Final garbage collection + if torch.cuda.is_available(): + torch.cuda.empty_cache() + app.state.status = "Stopped" +# ----- INGESTION FUNCTIONS ----- def send_metadata( VDMS_POOL=None, DEBUG_FLAG=BASE_PIPELINE_CONFIG.DEBUG_FLAG, @@ -436,13 +427,17 @@ def send_metadata( clip_key = "" width = 0 height = 0 + while True: + queue_details = None + clip_metadata = None + try: queue_details = send_metadata_queue.get() + # send_metadata_queue.task_done() if queue_details is None: - print( + main_app_logger.info( "[METADATA-DEBUG D-pill] Poison pill received. Terminating send_metadata thread loops cleanly.", - flush=True, ) break @@ -492,7 +487,6 @@ def send_metadata( f" [CRITICAL] Permanent VDMS failure. Data saved to: {error_path}" ) - send_metadata_queue.task_done() else: main_app_logger.error( f" [MISSING] Metadata for {clip_key} was lost before upload!" @@ -500,292 +494,109 @@ def send_metadata( except Exception as e: # pass - print(f"[EXCEPTION] Exception occurred in send_metadata: {e}") + main_app_logger.info( + f"[EXCEPTION] Exception occurred in send_metadata: {e}" + ) traceback.print_exc() + finally: + if "queue_details" in locals(): + del queue_details + if "clip_metadata" in locals(): + del clip_metadata + send_metadata_queue.task_done() + + +_KNOWN_HANDLER_METHODS = {} + + +def get_known_handler_methods(handler_class): + if handler_class not in _KNOWN_HANDLER_METHODS: + handler_methods = {} + for cls in [handler_class, DeviceBaseHandler]: + for name, attr in inspect.getmembers(cls, predicate=inspect.isfunction): + handler_methods[name] = attr + _KNOWN_HANDLER_METHODS[handler_class] = handler_methods + return _KNOWN_HANDLER_METHODS[handler_class] + + +def standalone_writer_process(write_queue, fps, width, height, output_path): + """Runs completely isolated from the GIL and main AI loop.""" + # 1. Initialize FFmpeg INSIDE the new process + command = [ + "ffmpeg", + "-y", + "-f", + "rawvideo", + "-vcodec", + "rawvideo", + "-s", + f"{width}x{height}", + "-pix_fmt", + "bgr24", + "-r", + str(fps), + "-i", + "-", + "-c:v", + "libx264", + "-preset", + "ultrafast", + "-crf", + "28", + "-pix_fmt", + "yuv420p", + output_path, + ] + + writer = subprocess.Popen(command, stdin=subprocess.PIPE, stderr=subprocess.DEVNULL) + try: + while True: + frame_data = write_queue.get() + if frame_data is None: # Poison pill to stop + break -# ----- STREAM HANDLERS ----- -def scale_clusters_to_8k(merged_640, frame_w=7680, frame_h=4320): - # Ratios for 8K projection - scale_x = frame_w / 640.0 - scale_y = frame_h / 640.0 - final_rois = [] - - for box in merged_640: - # Calculate centroid in 640p space - cx_640 = (box[0] + box[2]) / 2.0 - cy_640 = (box[1] + box[3]) / 2.0 - - # Map to 8K space with float precision to avoid offset drift - cx_8k = cx_640 * scale_x - cy_8k = cy_640 * scale_y - - # Center the 640x640 YOLO crop at the 8K centroid - half = 320 - nx1 = max(0, int(cx_8k - half)) - ny1 = max(0, int(cy_8k - half)) - nx2 = min(frame_w, nx1 + 640) - ny2 = min(frame_h, ny1 + 640) - - # Shift back if clamped at 8K boundaries - if nx2 == frame_w: - nx1 = max(0, frame_w - 640) - if ny2 == frame_h: - ny1 = max(0, frame_h - 640) - - final_rois.append([nx1, ny1, nx1 + 640, ny1 + 640]) - - return final_rois - - -# def rendering_worker( -# queue, -# shared_details, -# ready_idx, -# reader_active_idx, -# frame_lengths, -# signal_queue, -# display_size, -# quality, -# ): -# disp_w, disp_h = display_size -# # Attach to both buffers -# shm_names = shared_details["shm_names"] -# worker_shms = [mp.shared_memory.SharedMemory(name=n) for n in shm_names] -# num_shms = len(shm_names) - -# try: -# while True: -# print("[FASTAPI-TRACE D] rendering_worker child process waiting on queue.get()...", flush=True) -# item = queue.get() -# if item is None: # Sentinel value to stop the worker -# break - -# # frame is display size -# # metadata in resized res -# display_frame, frameNum, metadata_or_bbs, class_list = item -# print(f"[FASTAPI-TRACE E] rendering_worker child dequeued Frame #{frameNum}.", flush=True) -# scale_display_x = disp_w / 640 -# scale_display_y = disp_h / 640 - -# if isinstance(metadata_or_bbs, dict): -# # Case: Object Detection -# display_frame = get_metadata_overlay( -# display_frame, -# metadata_or_bbs, -# class_list, -# (scale_display_x, scale_display_y), -# (disp_w, disp_h), -# ) - -# elif metadata_or_bbs is not None: -# # Case: Motion Detections Only (SF Path) -# display_frame = get_bb_overlay( -# display_frame, -# metadata_or_bbs, -# (scale_display_x, scale_display_y), -# (disp_w, disp_h), -# ) - -# # writer.write(display_frame) -# if frameNum > shared_details["last_id"]: # self.last_delivered_frame_id: -# frame_bytes = get_display_frame_in_bytes( -# display_frame, -# display_size=display_size, -# quality=quality, -# return_bytes=True, -# ) -# if frame_bytes: -# # THE HARD GUARD: If the reader is currently touching RAM, skip this write. -# # This prevents the '1-minute' scramble by ensuring zero memory overlap. -# # if signal_queue.full(): -# # continue -# frame_len = len(frame_bytes) - -# forbidden_idx = [ready_idx.value, reader_active_idx.value] -# available_idx = [ -# i for i in range(num_shms) if i not in forbidden_idx -# ] - -# # if not available_idx: -# # continue - -# # # Write to the buffer that is NOT currently 'ready' -# # # write_idx = (shared_details["buffer_idx"] + 1) % 2 -# # # write_idx = 1 if ready_idx.value == 0 else 0 -# # # current_ready = ready_idx.value -# # # write_idx = (current_ready + 1) % 3 -# # write_idx = available_idx[0] - -# if not available_idx: -# # Instead of skipping completely and freezing, force a fallback -# # to the next standard ring channel -# write_idx = (ready_idx.value + 1) % num_shms -# else: -# write_idx = available_idx[0] - -# shm = worker_shms[write_idx] - -# # Zero-copy write to RAM -# shm.buf[:frame_len] = frame_bytes - -# frame_lengths[write_idx] = frame_len -# # shared_details["buffer_idx"] = write_idx -# ready_idx.value = write_idx -# # shared_details["last_id"] = frameNum -# # self.last_frame_id = frameNum -# # self.last_heartbeat = time.time() -# # Signal the FastAPI generator that a new frame is ready -# # self.loop.call_soon_threadsafe(self.frame_ready_event.set) -# # self.mp_frame_ready_event.set() -# # try: -# # signal_queue.put_nowait(True) -# # except Exception: -# # pass -# # signal_queue.put(True) -# try: -# print(f"[FASTAPI-TRACE F] Frame #{frameNum} written to SHM slot {write_idx} ({frame_len} bytes). Signaling parent...", flush=True) -# signal_queue.put_nowait((True, frameNum)) -# except queue.Full: -# print(f"[FASTAPI-TRACE WARN] signal_queue full on Frame #{frameNum}", flush=True) -# # pass # If the web app is slightly behind, do not freeze the child process! - -# # END While - -# except Exception as e: -# print(f"[EXCEPTION] Error while rendering display: {e}") -# finally: -# for s in worker_shms: -# s.close() - - -def get_metadata_overlay( - display_frame, metadata_or_bbs, class_list, scale_display, disp_size, is_bgr=True -): - scale_display_x, scale_display_y = scale_display - disp_w, disp_h = disp_size - for _, obj in metadata_or_bbs.items(): - bbox = obj["bbox"] - x = max(0, int(bbox["x"] * scale_display_x)) - y = max(0, int(bbox["y"] * scale_display_y)) - w = min(disp_w, int(bbox["width"] * scale_display_x)) - h = min(disp_h, int(bbox["height"] * scale_display_y)) - - class_name = bbox["object"] - class_id = class_list.index(class_name) if class_name in class_list else 0 - confidence = bbox.get("object_det", {}).get("confidence", 0.0) - - bb_color = get_detection_color(class_id, is_bgr=is_bgr) - label = f"{class_name} {confidence:.2f}" - - display_frame = cv2.rectangle( - display_frame, (x, y), (x + w, y + h), bb_color, 2 - ) - draw_label(display_frame, label, (x, y), color=bb_color, padding=5) - return display_frame + # Write the raw bytes directly to FFmpeg + writer.stdin.write(frame_data.tobytes()) + except Exception as e: + logging.error(f"[WRITER PROCESS] Error: {e}") + finally: + writer.stdin.close() + writer.wait() -def get_bb_overlay(display_frame, metadata_or_bbs, scale_display, disp_size): - scale_display_x, scale_display_y = scale_display - disp_w, disp_h = disp_size - for box in metadata_or_bbs: - if torch.is_tensor(box): - x1, y1, x2, y2 = box.to(torch.int).cpu().tolist() - else: - x1, y1, x2, y2 = map(int, box) - - x1 = max(0, int(x1 * scale_display_x)) - y1 = max(0, int(y1 * scale_display_y)) - x2 = min(disp_w, int(x2 * scale_display_x)) - y2 = min(disp_h, int(y2 * scale_display_y)) - display_frame = cv2.rectangle(display_frame, (x1, y1), (x2, y2), (0, 0, 255), 2) - return display_frame - - -# def test_rendering_worker(queue, display_size, out_path, target_fps): -# """ -# Ultra-efficient video saver for TEST_MODE. -# Pipes raw BGR frames directly into an internal FFmpeg engine subshell. -# """ -# disp_w, disp_h = display_size - -# # Construct optimized MPEG-4 parameters to match main pipeline architecture -# ffmpeg_cmd = [ -# "ffmpeg", -# "-y", -# "-probesize", -# "32", -# "-analyzeduration", -# "0", -# "-f", -# "rawvideo", -# "-pix_fmt", -# "bgr24", -# "-s", -# f"{disp_w}x{disp_h}", -# "-r", -# str(int(target_fps)), -# "-i", -# "-", -# "-c:v", -# "libx264", -# "-crf", -# "23", -# # "-c:v", "mpeg4", # Or "libx264" if you prefer H.264 -# # "-qscale:v", "4", # Quality scale (use -crf 23 if using libx264) -# str(out_path), -# ] - -# # Spawn background daemon process -# proc = subprocess.Popen( -# ffmpeg_cmd, -# stdin=subprocess.PIPE, -# stdout=subprocess.DEVNULL, -# stderr=subprocess.DEVNULL, -# bufsize=10**7, -# ) - -# try: -# while True: -# item = queue.get() -# if item is None: # Sentinel value to drain and close the process -# break - -# display_frame, frameNum, metadata_or_bbs, class_list = item -# # display_frame = np.ascontiguousarray(display_frame) -# scale_display_x = disp_w / 640 -# scale_display_y = disp_h / 640 - -# # --- Draw Detection Overlays --- -# if isinstance(metadata_or_bbs, dict): -# # Object Mode (YOLO Structs) -# display_frame = get_metadata_overlay( -# display_frame, -# metadata_or_bbs, -# class_list, -# (scale_display_x, scale_display_y), -# (disp_w, disp_h), -# ) - -# elif metadata_or_bbs is not None: -# # # Motion / Smart Filtering Overlay Path -# display_frame = get_bb_overlay( -# display_frame, -# metadata_or_bbs, -# (scale_display_x, scale_display_y), -# (disp_w, disp_h), -# ) - -# # Pipe continuous raw contiguous memory block directly into kernel filesystem handles -# proc.stdin.write(np.ascontiguousarray(display_frame).tobytes()) -# # queue.task_done() - -# except Exception as e: -# print(f"[TEST-WORKER-EXCEPTION] Video compilation error: {e}") -# finally: -# if proc.stdin: -# proc.stdin.close() -# proc.wait() + +# ----- STREAM HANDLERS ----- +def get_test_handler(test_class_self, device): # Resolve concrete handler class type + HandlerClass = GPUStreamHandler if device == "gpu" else CPUStreamHandler + # HandlerClass.pipeline_fn = test_class_self.__class__.pipeline_fn + + # Dynamically re-bind backend methods to this execution instance + handler_classes = [HandlerClass, DeviceBaseHandler] + handler_methods = get_known_handler_methods(HandlerClass) + for method_name, method_func in handler_methods.items(): + if method_name in ["pipeline_fn", "config"]: # "run_realtime_inference" + continue + + if not hasattr(test_class_self.__class__, method_name): + setattr( + test_class_self, + method_name, + types.MethodType(method_func, test_class_self), + ) + + orig_methods = list( + sorted( + set( + [ + k + for h in handler_classes + [test_class_self] + for k in h.__dict__.keys() + ] + ) + ) + ) + return test_class_self, orig_methods class DeviceBaseHandler: @@ -797,428 +608,494 @@ def __init__( self.is_rtsp = str(self.source).startswith("rtsp:/") self.active = True self.active_streams = active_streams - self.config = config + + sf_name = "SF" if config.sf_enabled else "noSF" + self._testMethodName = kwargs.get( + "run_name", + f"{name}_{sf_name}_{config.DETECTION_TYPE.lower()}_{config.DEVICE.lower()}", + ) + configstr = "\n".join( [f"\t{k}: {v}" for k, v in config.__dict__.items() if not k.startswith("_")] ) - log_to_logger(f"PipelineConfig: \n{configstr}\n", level="info") + main_app_logger.info(f"PipelineConfig: \n{configstr}\n") self.loop = asyncio.get_event_loop() self.frame_ready_event = asyncio.Event() - # self.frame_ready_event = threading.Event() self._is_stopped = False self._stop_lock = threading.Lock() # Local lock for this instance - self.mp_frame_ready_event = mp.Event() + self.main_startup_event = mp.Event() # From global self.device = self.config.DEVICE self.device_input = self.config.device_input - # self.disp_w, self.disp_h = self.config.DISPLAY_FRAME_SIZE + self.disp_w, self.disp_h = self.config.DISPLAY_FRAME_SIZE self.resize_h, self.resize_w = [self.config.MODEL_H, self.config.MODEL_W] - self.setup_reader(self.config.TARGET_FPS, self.config.CLIP_DURATION) + self.setup_reader( + self.config.TARGET_FPS, + self.config.CLIP_DURATION, + startup_event=self.main_startup_event, + ) # Kwargs # clip_duration = kwargs.get("clip_duration", CLIP_DURATION) self.initialize_variables() - provided_model = kwargs.get("model") - self.setup_model(provided_model) - - self.prepare_pipeline() + # Should be started before calling setup_threads + # if hasattr(self.reader, "worker") and not self.reader.worker.is_alive(): + # self.reader.worker.start() # Start dedicated inference thread and timers # self.stat_start_time = time.perf_counter() # timing to display frame - self.last_heartbeat = time.time() self.setup_threads() + self.last_heartbeat = time.perf_counter() - def setup_model(self, provided_model, force_export=False): - if ( - self.frame_width * self.frame_height - ) <= self.config.SMART_FILTERING_PIXEL_CONSTRAINT: - if "_noSF" not in self.config.model_path: - oldpath = Path(self.config.model_path) - old_modelname = self.config.MODEL_NAME - self.config.MODEL_NAME = f"{old_modelname}_noSF" - new_model_name = oldpath.name.replace( - old_modelname, self.config.MODEL_NAME - ) - self.config.model_path = str(oldpath.parent / new_model_name) + def start(self): + """ + Starts the decoupled ingestion and inference threads in the correct order. + """ + # PRE-SYNC: Ensure GPU is idle before timing starts + if self.device_input == "cuda" and torch.cuda.is_available(): + torch.cuda.synchronize() - if provided_model is not None and not isinstance(provided_model, str): - self.model = provided_model - self.label_source = [v for k, v in self.model.names.items()] - else: - # if isinstance(provided_model, str) or provided_model is None: - # if Path(self.config.model_path).exists(): - # self.model = YOLO(self.config.model_path, verbose=False, task="detect") - # self.label_source = [] - # for k, v in self.model.names.items(): - # self.label_source.append(v) - # else: - run_platform_name = "engine" if "cuda" in self.device_input else "openvino" - self.model, _, self.label_source = get_model( - Path(self.config.model_path).parent, - self.config.MODEL_NAME.replace("_noSF", ""), - run_platform_name, - self.device_input, - batch=self.config.MODEL_MAX_BATCH_SIZE, - force_export=force_export, - sf_enabled=self.config.sf_enabled, - model_h=self.resize_h, - model_w=self.resize_w, - ) + main_app_logger.info(f"[START {self.name}] Starting Threads ...") - if run_platform_name == "openvino": - self.model.predictor.args.embed = False + # Start the hardware-decoupled reader first + self.reader.start() - if not self.config.sf_enabled: - self.model_warmup(self.frame_height, self.frame_width) - else: - self.model_warmup(self.resize_h, self.resize_w) - # else: - # self.model = provided_model - # self.label_source = [] - # for k, v in self.model.names.items(): - # self.label_source.append(v) + # if self.config.ENABLE_QUERYING: + # self._initialize_writer() - def initialize_variables(self): - # 1. HARD GUARD: Capture reader values and ensure the connection is active - self.input_fps = self.reader.input_fps - self.target_fps = self.reader.target_fps - self.frame_width = self.reader.frame_width - self.frame_height = self.reader.frame_height - self.numFrames = self.reader.numFrames + # Small delay to allow the reader's deque to populate + time.sleep(0.1) - if self.input_fps <= 0 or self.frame_width <= 0 or self.frame_height <= 0: - main_app_logger.error( - f"[{self.name}] Stream handler fast-fail triggered. Destination " - f"unreachable or invalid ({self.source}). Terminating pipeline configuration." - ) - # Instantly stop background threads to prevent zombie process leakage - if hasattr(self, "reader") and self.reader is not None: - self.reader.stop() + # Start the producer and consumer threads + if hasattr(self, "process_thread") and not self.process_thread.is_alive(): + self.process_thread.start() - raise RuntimeError( - f"Failed to initialize stream reader endpoint: {self.source}" - ) + if not self.config.DISABLE_DETECTION: + if hasattr(self, "render_proc") and hasattr(self.render_proc, "start"): + self.render_proc.start() - # 2. Proceed with calculation mechanics safely only if values are healthy - self.step_size = self.input_fps / self.target_fps - self.frame_skip = self.reader.frame_skip - self.max_frames_per_clip = self.reader.max_frames_per_clip - self.frame_interval = self.reader.frame_interval + if hasattr(self, "display_proc") and hasattr(self.display_proc, "start"): + self.display_proc.start() - self.duration_s = self.numFrames / self.input_fps - self.expected_num_frames = int(self.duration_s * self.target_fps) - self.get_frameWH() + if ( + self.config.ENABLE_QUERYING + and not self.config.TEST_MODE + and not self.metadata_thread.is_alive() + ): + self.metadata_thread.start() - # Determine minimum contour size relative to frame resolution - self.min_contour_area = int( - (self.config.ROI_MIN_AREA_RATIO * self.resize_w) - * (self.config.ROI_MIN_AREA_RATIO * self.resize_h) - ) # 207 - - self.dist_thresh_8k = max( - self.config.ROI_DISTANCE_THRESH_RATIO * self.frame_width, - self.config.ROI_DISTANCE_THRESH_RATIO * self.frame_height, - ) - multiplier = 2.0 if self.device_input == "cpu" else 1.0 - self.dist_thresh_640 = ( - max( - self.config.ROI_DISTANCE_THRESH_RATIO * self.resize_w, - self.config.ROI_DISTANCE_THRESH_RATIO * self.resize_h, - ) - * multiplier - ) # 0.05 * self.resize_w - self.scales_tensor = torch.tensor( - [self.scale_x, self.scale_y, self.scale_x, self.scale_y], - # device="cpu", - device=self.device_input, - ) + if self.config.ENABLE_QUERYING and not self.writer_process.is_alive(): + self.writer_process.start() - self.disp_w, self.disp_h = self.config.DISPLAY_FRAME_SIZE + self.last_heartbeat = time.perf_counter() + return self - # Performance Tracking - self.elapsed_display_time = 0.0 - self.frame_count = 0 # Frame count for videos - self.frame_count_target = 0 - self.last_delivered_frame_id = -1 # Track what was actually sent - self.last_frame_id = 0 - self.latest_processed_frame = None - self.next_process_idx = 0.0 - self.stat_fps = 0 - self.stat_frame_count = 0 - self.total_objects_detected = 0 + def stop(self): + """ + A robust, sequential shutdown process that gracefully terminates all threads + and releases all resources without race conditions, especially for live streams. + """ + # Force the GPU to finish all active kernels, copy operations, + # and event processing across all streams. + # This guarantees no async operations are holding the memory locked! + if "cuda" in str(self.device_input) and torch.cuda.is_available(): + # main_app_logger.info(f"[STOP {self.name}] Synchronizing all CUDA streams...") + torch.cuda.synchronize(self.device_input) + + # Use a lock to prevent this complex function from being called by multiple threads at once. + with self._stop_lock: + if getattr(self, "_is_stopped", False): + return - self.writer_done = True + main_app_logger.info( + f"[STOP {self.name}] Initiating orderly shutdown sequence..." + ) - # Video Clipping - # self.video_writer = None - self.ffmpeg_proc = None # Replaces cv2.VideoWriter completely - # self.fourcc = cv2.VideoWriter_fourcc(*"mp4v") # avc1, mp4v - # self.clip_id = 0 - # self.clip_filename = "" - self.clip_filename_pattern = f"{self.config.SHARED_OUTPUT}/{self.name}_%03d.mp4" - # self.clip_key = f"{self.name}_000.mp4" - # self.tmp_file = "" - self.frame_in_clip_count = 0 + if hasattr(self, "write_queue") and hasattr(self, "writer_process"): + try: + self.write_queue.put( + None, timeout=1.0 + ) # The poison pill for the process + except (queue.Full, AttributeError): + pass - if self.config.ENABLE_QUERYING: - # Thread-safe queue for the resized frames (640x640) - # maxlen=300 allows for a 20-second buffer in case of extreme disk lag - # Non-blocking queue for frames and control signals - self.write_queue = queue.Queue(maxsize=300) - if not self.config.TEST_MODE: - self.send_metadata_queue = queue.Queue() - self.writer_done = False - self.stop_writer = threading.Event() if self.config.ENABLE_QUERYING else None + # Signal all active loops to stop accepting new work. + self.active = False + self.prefetch_active = False - # --- PRE-ALLOCATED ZERO-COPY HARDWARE RING WORKSPACE --- - self.ring_depth = 4 # 8 - self.gpu_ring_idx = 0 - self.cpu_ring_idx = 0 - - self.pinned_matrices = [] - self.pinned_tensors = [] - - self.ingest_ring_depth = 4 - self.ingest_ring_idx = 0 - self.ingest_ring = [] + if hasattr(self, "active_streams") and isinstance( + self.active_streams, dict + ): + self.active_streams.pop(self.name, None) - for _ in range(self.ingest_ring_depth): - # Match the exact dimensions of the 8K reader output - mat = np.zeros((self.frame_height, self.frame_width, 3), dtype=np.uint8) - try: - cv2.cuda.registerPageLocked( - mat - ) # Page-lock for ultra-fast DMA transfers - except Exception: - pass - self.ingest_ring.append(mat) - - # Pre-allocate a 4-slot ring buffer for raw 8K BGR frames - self.ai_ring_depth = 4 - self.ai_ring_idx = 0 - self.frame_stride_bytes = ( - self.resize_w * self.resize_h * 3 - ) # ~99.5 MB per frame - - self.ai_shms = [] - self.ai_shm_names = [] - self.ai_pinned_tensors = [] # Explicit property initialization 🚀 - init_timestamp = int(time.time_ns()) - for i in range(self.ai_ring_depth): - name = f"shm_ai_640_{self.name}_{i}_{os.getpid()}_{init_timestamp}" + # Wake up any FastAPI async streaming generators waiting on frame_ready_event + if ( + hasattr(self, "frame_ready_event") + and self.frame_ready_event is not None + ): + try: + if hasattr(self, "loop") and self.loop and self.loop.is_running(): + self.loop.call_soon_threadsafe(self.frame_ready_event.set) + else: + self.frame_ready_event.set() + except Exception: + pass - try: - # Attempt to attach to a lingering zombie segment - old_shm = shared_memory.SharedMemory(name=name) - old_shm.close() - old_shm.unlink() # Permanently destroys the old OS block handle - main_app_logger.warning( - f"Cleaned up residual zombie shared memory block: {name}" - ) - except FileNotFoundError: - pass # Block doesn't exist, safe to proceed normal initialization + main_app_logger.info(f"[STOP {self.name}] Stopping writer event...") + self.set_stop_writer_event(remove=False) - shm = shared_memory.SharedMemory( - name=name, create=True, size=self.frame_stride_bytes + # Shut down the worker pools. wait=True is crucial. + # This blocks until all background tasks have finished. + main_app_logger.info( + f"[STOP {self.name}] Shutting down worker executors..." ) - self.ai_shms.append(shm) - self.ai_shm_names.append(name) + self.stop_executors(["clip_executor", "executor"]) - # Map a zero-copy lockless numpy array view straight onto the memory block - view = np.ndarray( - (self.resize_h, self.resize_w, 3), dtype=np.uint8, buffer=shm.buf + # Join all other background threads. + main_app_logger.info( + f"[STOP {self.name}] Joining all background threads..." + ) + self.stop_threads( + [ + "process_thread", + "writer_process", + "metadata_thread", + "display_proc", + "render_proc", + ] ) + # if ( + # hasattr(self, "writer_process") and self.writer_process.is_alive() + # ): # actually a process + # self.writer_process.join(timeout=3.0) + # if self.writer_process.is_alive(): + # self.writer_process.terminate() + self.unregister_pinned_cuda_data() + buffer_pools = [ + "shm_buffer_pool", + "gpu_input", + "clipper_shm_np_views", + "pinned_matrices", + "pinned_tensors", + ] + self.clear_buffer_pools(buffer_pools) - # Page-lock the host buffer window to maximize PCIe bus transfer bandwidth - try: - cv2.cuda.registerPageLocked(view) - except Exception: - pass + if hasattr(self, "reader") and self.reader is not None: + if hasattr(self.reader, "pinned_views"): + self.reader.pinned_views = [] + if hasattr(self.reader, "_static_gpu_frame_buffer"): + self.reader._static_gpu_frame_buffer = None - # Expose a direct matching PyTorch host tensor map to secure high-speed uploads - self.ai_pinned_tensors.append(torch.from_numpy(view)) + if hasattr(self, "reader") and self.reader is not None: + main_app_logger.info(f"[STOP {self.name}] Stopping reader process...") + self.reader.stop() + main_app_logger.info(f"[STOP {self.name}] Reader process stopped.") - # Pre-allocate a 4D FP16 GPU staging canvas to maximize Tensor Core performance - # if self.device_input == "cuda": - # self.ai_gpu_staging = torch.empty( - # (1, 3, self.frame_height, self.frame_width), - # dtype=torch.float16, - # device=f"cuda:{self.gpu_id}", - # ) - # self.preview_gpu_staging = torch.empty( - # (1, 3, self.frame_height, self.frame_width), - # dtype=torch.float16, - # device=f"cuda:{self.gpu_id}", - # ) + if hasattr(self, "prefetch_threads") and self.prefetch_threads: + main_app_logger.info(f"[STOP {self.name}] Stopping prefetch threads...") + for val in self.prefetch_threads: + self.stop_thread(val) + self.prefetch_threads.clear() + # delattr(self, "prefetch_threads") - # Pre-allocate 640x640 workspace footprint across CPU and GPU spaces - for _ in range(self.ring_depth): - mat = np.zeros((self.resize_h, self.resize_w, 3), dtype=np.uint8) - try: - cv2.cuda.registerPageLocked(mat) - except cv2.error: - pass - self.pinned_matrices.append(mat) - self.pinned_tensors.append(torch.from_numpy(mat)) - # Isolate CUDA tasks using a dedicated stream and independent hardware completion barriers - self.processing_stream = ( - torch.cuda.Stream() if self.device_input == "cuda" else None - ) - # Pre-allocated hardware events guarantee completely non-blocking stream isolation - self.slot_events = ( - [torch.cuda.Event() for _ in range(8)] - if self.device_input == "cuda" - else None - ) + if hasattr(self, "async_writer") and self.async_writer is not None: + main_app_logger.info(f"[STOP {self.name}] Releasing writer...") + try: + self.async_writer.release() + except Exception: + pass + setattr(self, "async_writer", None) + + # Clear the buffer that holds direct pointers to the shared memory. + # This is the most critical step to release the "exported pointers". + # buffer_pools = ["shm_buffer_pool", "gpu_input"] + # buffer_pools = [ + # "shm_buffer_pool", + # "gpu_input", + # "clipper_shm_np_views", + # "pinned_matrices", + # "pinned_tensors", + # ] + # self.clear_buffer_pools(buffer_pools) + # if hasattr(self, "shm_buffer_pool") and self.shm_buffer_pool is not None: + # main_app_logger.info( + # f"[STOP {self.name}] Clearing shared memory buffer pool to release pointers..." + # ) + # for i in range(len(self.shm_buffer_pool)): + # self.shm_buffer_pool[i] = None + # # self.shm_buffer_pool = None - self.gpu_float_staging = None - if self.device_input == "cuda": - self.gpu_float_staging = torch.empty( - (1, 3, self.frame_height, self.frame_width), - dtype=torch.float16, - device=f"cuda:{self.gpu_id}", + # if hasattr(self, "gpu_input") and self.gpu_input is not None: + # # main_app_logger.info( + # # f"[STOP {self.name}] Clearing shared memory buffer pool to release pointers..." + # # ) + # for i in range(len(self.gpu_input)): + # self.gpu_input[i] = None + # self.gpu_input = None + # # self.gpu_input.clear() + + # Force instant garbage collection to drop Python buffer exports from memoryview + gc.collect() + if "cuda" in str(self.device_input) and torch.cuda.is_available(): + torch.cuda.empty_cache() + + shm_names = [ + "clipper_shm_blocks", + "reader.shms", + "shms", + ] + main_app_logger.info(f"[STOP {self.name}] Clearing shared memory...") + self.clear_shared_memory_list(shm_names) + + # if hasattr(self, "clipper_shm_blocks"): + # for shm in self.clipper_shm_blocks: + # shm.close() + # shm.unlink() # This removes the file from /dev/shm + + # shms_to_close = [] # self.shms + # if hasattr(self, "reader") and self.reader is not None: + # main_app_logger.info( + # f"[STOP {self.name}] Calling reader.stop() to clean up worker process..." + # ) + # self.reader.stop() + # if hasattr(self.reader, "shms"): + # shms_to_close += self.reader.shms + # self.reader = None + + # if hasattr(sys, "exc_info"): + # # This clears the three-element tuple (type, value, traceback) + # exc_info = sys.exc_info() + # if exc_info[2] is not None: # Check if a traceback object exists + # traceback.clear_frames(exc_info[2]) + # # For older python versions, or as an extra measure + # if hasattr(sys, "exc_clear"): + # sys.exc_clear() + + # gc.collect() + # if "cuda" in str(self.device_input) and torch.cuda.is_available(): + # torch.cuda.empty_cache() + # if hasattr(torch.cuda, "ipc_collect"): + # torch.cuda.ipc_collect() + + # if shms_to_close: + # main_app_logger.info(f"[STOP {self.name}] Closing OS shared memory files...") + # for shm in shms_to_close: + # try: + # shm.close() + # shm.unlink() + # except Exception: + # pass + # shms_to_close.clear() + + # ========================================================================= + # 🕵️‍♂️ ADVANCED REFERENCE INVESTIGATOR + # ========================================================================= + # import gc + # import inspect + + main_app_logger.info("\n" + "=" * 80) + main_app_logger.info( + "🕵️‍♂️ [STOP INVESTIGATION] Scanning for active pointers to SharedMemory blocks..." + ) + # main_app_logger.info("=" * 80) + + # if hasattr(self, "reader") and hasattr(self.reader, "shms"): + # for idx, shm in enumerate(self.reader.shms): + # main_app_logger.info(f"\n[SHM BLOCK {idx}] Name: {shm.name}") + + # # Create a function to recursively find the ultimate owner + # def find_owner(obj, depth=0): + # if depth > 5: # Safety limit to prevent infinite recursion + # return + + # referrers = gc.get_referrers(obj) + # for ref in referrers: + # # Ignore the current function's local variables + # if ref is referrers or ref is locals(): + # continue + + # ref_type_name = type(ref).__name__ + + # # If we find a class instance, we found the owner! + # if hasattr(ref, "__dict__"): + # # Check if it's a class instance and not just a dict + # if not isinstance(ref, (dict, list, tuple, set)): + # for k, v in ref.__dict__.items(): + # if v is obj: + # main_app_logger.info( + # f"{' ' * depth}└── Found Owner: Class <{type(ref).__name__}> holds reference in attribute '{k}'" + # ) + + # # If the referrer is a list or tuple, recurse deeper + # elif isinstance(ref, (list, tuple)): + # main_app_logger.info( + # f"{' ' * depth}└── Held by container: <{ref_type_name}> of len {len(ref)}" + # ) + # find_owner(ref, depth + 1) + + # find_owner(shm) + # main_app_logger.info("=" * 80 + "\n") + # ========================================================================= + + # 8. Clean up any remaining handler resources like queues and events. + main_app_logger.info(f"[STOP {self.name}] Cleaning up final resources...") + self.stop_sync_manager() + self.drain_and_close_queues( + ["signal_queue", "render_queue", "prefetch_queue", "write_queue"] ) - # Default Kernels - self.dilate_kernel = cv2.getStructuringElement( - cv2.MORPH_ELLIPSE, - # cv2.MORPH_RECT, - (self.config.DILATE_KERNEL_SIZE, self.config.DILATE_KERNEL_SIZE), - ) - # self.dilate_kernel_for_enhanced_mask = np.ones((15,15), np.uint8) # 5, 5) (21, 21) - self.dilate_kernel_for_enhanced_mask = cv2.getStructuringElement( - cv2.MORPH_ELLIPSE, - # cv2.MORPH_RECT, - ( - self.config.BKGD_SUB_INCLUDE_HISTORY_DILATE_KERNEL_SIZE, - self.config.BKGD_SUB_INCLUDE_HISTORY_DILATE_KERNEL_SIZE, - ), - ) - - def setup_reader(self, target_fps, clip_duration): - # if hasattr(self, "reader"): - # del self.reader - - # Add a tiny sleep or garbage collect to ensure the GPU handle is released - gc.collect() - torch.cuda.empty_cache() # Clear any remaining context + remove_attrs = [ + "_cached_grid_x", + "_cached_grid_y", + "ffmpeg_proc", + "frame_in_clip_count", + "latest_processed_frame", + "mp_frame_ready_flag", + "mp_last_id", + "processing_stream", + "reader_active_idx", + "ready_buffer_idx", + "render_queue_backlog_counter", + "render_queue_counter", + "shm_frame_lengths", + "stat_start_time", + "write_queue_backlog_counter", + "write_queue_counter", + "static_gpu_360p", + "static_gpu_byte_bchw", + "gpu_float_staging", + "pinned_matrices", + "pinned_tensors", + ] + main_app_logger.info(f"[STOP {self.name}] Removing attributes...") + self.remove_scalar_attributes(remove_attrs) + + # self.stop_events() + events = [ + "frame_ready_event", + "queue_data_ready_event", + "_d2h_fence", + "det_end", + "det_start", + "frame_ready_event", + "main_startup_event", + "queue_data_ready_event", + "reader_lock", + "roi_end", + "roi_start", + "sf_end", + "sf_start", + "worker_tracking_lock", + ] + main_app_logger.info(f"[STOP {self.name}] Stopping events...") + self.stop_events(events, keys_to_skip_deletion=default_attr_keys) + + if hasattr(self, "slot_events") and self.slot_events is not None: + main_app_logger.info(f"[STOP {self.name}] Stopping slot events...") + # Grab local reference and immediately nullify instance attribute + events_to_clean = self.slot_events + self.slot_events = None + if events_to_clean is not None: + for ev in list(events_to_clean): + try: + if isinstance(ev, torch.cuda.Event): + # Force internal driver handle release + del ev + except Exception: + pass + # self.slot_events = None - # TODO: Further investigate GPU path, bkgd subtraction sensitive to artifacts - self.gpu_id = 0 - is_rtsp_stream = str(self.source).startswith( - ("rtsp://", "rtmp://", "http://", "https://") - ) - determined_queue_size = ( - 4 if is_rtsp_stream else 2 - ) # (0 if self.config.TEST_MODE else 2) - if self.device_input == "cuda": # and not self.is_rtsp: - from include.readers import GPUReader + if getattr(self, "processor", None): + delattr(self, "processor") - self.reader = GPUReader( - source=self.source, - target_fps=target_fps, - clip_duration=clip_duration, - gpu_id=0, # self.gpu_id, - queue_size=determined_queue_size, - ) - else: - from include.readers import CPUReader + if getattr(self, "evaluator", None): + delattr(self, "evaluator") - self.reader = CPUReader( - source=self.source, - target_fps=target_fps, - clip_duration=clip_duration, - queue_size=determined_queue_size, - ) + # self.pinned_matrices.clear() + # self.pinned_tensors.clear() - def prepare_pipeline(self): - if self.device_input == "cuda": - self.prepare_gpu_pipeline() - if len(self.active_streams) == 0: - self.gpu_warmup() - else: - self.prepare_cpu_pipeline() - - # AUTOMATED BACKSUB WARMUP GATE - # Priming the Gaussian mixture model before the pipeline loop kicks off - if getattr(self.config, "SMART_FILTERING_ENABLED", False): - video_source = getattr(self, "source", None) - if video_source and os.path.exists(video_source): - print(f"[INIT] Warming up background subtractor using: {video_source}") - warmup_cap = cv2.VideoCapture(video_source) - - # 20 to 30 frames are optimal to prime the baseline history grid - for _ in range(30): - ret, raw_frame = warmup_cap.read() - if not ret: - break + self.clean_up_tensors_and_arrays() - # Downscale the warmup frames to match your active pipeline resolution rules - resized_warmup = cv2.resize( - raw_frame, - (self.resize_w, self.resize_h), - interpolation=cv2.INTER_NEAREST, - ) + release_native_linux_heap() - # Force a highly aggressive learning rate (e.g., 0.1) during initialization - # to lock down the background model quickly, avoiding delayed frame processing. - if self.device_input == "cuda": - # If you use a GPU-bound background subtractor - self.bgs_cuda.apply( - resized_warmup, learningRate=self.lr, stream=self.bgs_stream - ) - else: - # Standard CPU track fallback - self.bgs.apply(resized_warmup, learningRate=self.lr) + gc.collect() + if "cuda" in self.device_input and torch.cuda.is_available(): + torch.cuda.empty_cache() + if hasattr(torch.cuda, "ipc_collect"): + torch.cuda.ipc_collect() - warmup_cap.release() - print("[INIT] Background subtractor warm up complete. GMM initialized.") + # with self._stop_lock: + self._is_stopped = True + self.status = "DONE" + self.active_streams.pop(self.name, None) + main_app_logger.info(f"[STOP {self.name}] Shutdown complete.") def setup_threads(self): - # Shared 10MB memory for display - self.setup_shared_memory() + """Overrides handlers.py to bind threads dynamically to the test instance.""" + + self._cached_grid_y, self._cached_grid_x = torch.meshgrid( + torch.arange( + self.resize_h, device=self.device_input + ), # Match target tracking resolution + torch.arange(self.resize_w, device=self.device_input), + indexing="ij", + ) + + self.setup_shared_memory() # Natively sets up Manager dictionary and buffers # Executor for Async YOLO tasks and FFmpeg re-encoding self.executor = ThreadPoolExecutor(max_workers=self.config.MAX_WORKERS) + self.clip_executor = ThreadPoolExecutor(max_workers=self.config.MAX_WORKERS) - print( + main_app_logger.info( f"sf_enabled: {self.config.sf_enabled}\tTEST_MODE: {self.config.TEST_MODE}", - flush=True, ) - self.signal_queue = mp.Queue(maxsize=32) # 1) - self.render_queue = mp.Queue(maxsize=5) - - # Producer: Handles acquisition and AI metadata logs - # self.process_thread = threading.Thread( - # target=self.run_realtime_inference, - # args=(self.config.sf_enabled,), - # daemon=True, - # ) self.process_thread = threading.Thread( - target=lambda: self.run_realtime_inference( - sf_enabled=self.config.sf_enabled - ), + target=self.run_realtime_inference, + kwargs={ + "sf_enabled": self.config.sf_enabled, + "gt_enabled": getattr(self, "gt_enabled", False), + }, daemon=True, ) + # # Open up looking-ahead buffer horizons to eliminate 8K queue backpressure stalls + # self.render_queue_maxsize = 16 # 4 + # self.render_queue = queue.Queue(maxsize=self.render_queue_maxsize) + + # self.signal_queue_maxsize = 32 # 8 + # self.signal_queue = queue.Queue(maxsize=self.signal_queue_maxsize) + if self.config.TEST_MODE: test_dir = os.getenv( "TEST_SUITE_RENDER_DIR", str(Path(self.config.SHARED_OUTPUT)) ) os.makedirs(test_dir, exist_ok=True) - out_path = os.path.join(test_dir, f"{self.name}_detections_output.mp4") - self.output_path = out_path - log_to_logger( - f"[TEST MODE] Detection results saved to: {out_path}", level="info" - ) + if hasattr(self, "video_output_name"): + video_output_name = self.video_output_name + else: + if self.source.startswith("rtsp"): + short_name = "rtsp" + else: + short_name = Path(self.source).stem + video_output_name = f"{self._testMethodName}_{short_name}.mp4" + + self.output_path = os.path.join(test_dir, video_output_name) + # self.output_path = os.path.join( + # test_dir, f"{self.name}_detections_output.mp4" + # ) + # log_to_logger( + # f"[TEST MODE] Detection results saved to: {self.output_path}", + # level="info", + # ) self.async_writer = AsyncVideoWriter( self.output_path, @@ -1227,20 +1104,14 @@ def setup_threads(self): (self.disp_w, self.disp_h), ) - # self.render_proc = threading.Thread( - # target=test_rendering_worker, - # args=( - # self.render_queue, - # (self.disp_w, self.disp_h), - # out_path, - # self.target_fps, - # ), - # daemon=True, - # ) - # Dummy target alignment to prevent execution signature exceptions - self.render_proc = threading.Thread(target=lambda: None, daemon=True) - self.display_proc = threading.Thread(target=lambda: None, daemon=True) + # self.render_proc = threading.Thread(target=lambda: None, daemon=True) + # self.display_proc = threading.Thread(target=lambda: None, daemon=True) + # self.render_proc = DummyProcess() + # self.display_proc = DummyProcess() + log_to_logger( + f"[TEST MODE] Results saved to: {self.output_path}", level="info" + ) else: self.async_writer = AsyncDisplayVideoWriter( float(self.target_fps), @@ -1257,9 +1128,6 @@ def setup_threads(self): except RuntimeError: self.loop = None # Headless fallback context - self.render_proc = threading.Thread(target=lambda: None, daemon=True) - self.display_proc = threading.Thread(target=lambda: None, daemon=True) - if self.config.ENABLE_QUERYING: # NEW: Dedicated I/O pool for Disk/GPU transfers (Higher worker count for 8K) # self.io_executor = ThreadPoolExecutor(max_workers=8) @@ -1285,670 +1153,2077 @@ def setup_threads(self): ) # Consumer: Handles GPU-to-CPU download and Disk I/O (Writing resized frames to RAM disk) - self.writer_thread = threading.Thread( - target=self.video_writer_core_loop, - args=(self.stop_writer,), - daemon=True, - ) - - def setup_shared_memory(self): - self.manager = mp.Manager() + # self.writer_process = threading.Thread( + # target=self.video_writer_core_loop, + # args=(self.stop_writer,), + # daemon=True, + # ) - self.shms = [] - shm_names = [] - num_shms = 3 + # self.render_proc = threading.Thread(target=lambda: None, daemon=True) + # self.display_proc = threading.Thread(target=lambda: None, daemon=True) + # self.render_proc = DummyProcess() + # self.display_proc = DummyProcess() - # Shared Integer to track which buffer is "Ready" for the UI - # 'i' for integer, initialized to 0 - self.ready_buffer_idx = mp.Value("i", 0) - self.reader_active_idx = mp.Value("i", -1) - self.shm_frame_lengths = mp.Array("i", [0 for _ in range(num_shms)]) - self.mp_last_id = mp.Value("i", -1) - self.mp_frame_ready_flag = mp.Value("b", False) + def initialize_variables(self): + self.prefetch_threads = [] + # Track active worker threads atomically to protect end-of-stream drainage + num_prefetch_workers = 4 if self.device_input == "cpu" else 3 + self.active_workers_count = num_prefetch_workers + self.worker_tracking_lock = threading.Lock() - display_timestamp = int(time.time_ns()) + # Override the atomic tracking count to match our active pool allocation + with self.worker_tracking_lock: + self.active_workers_count = num_prefetch_workers - for idx in range(num_shms): - # self.shm = mp.shared_memory.SharedMemory(create=True, size=10*1024*1024) - shm_name = f"shm_{self.name}_{idx}_{os.getpid()}_{display_timestamp}" - # print(f"[DEBUG]: Setting up SHM {shm_name}", flush=True) - try: - shm = mp.shared_memory.SharedMemory( - name=shm_name, create=True, size=10 * 1024 * 1024 - ) - except FileExistsError: - # Attach to existing memory - shm = mp.shared_memory.SharedMemory(name=shm_name) - except Exception as e: - main_app_logger.error(f"Failed to initialize shared memory: {e}") - raise - self.shms.append(shm) - shm_names.append(shm_name) + # self.initialize_run_realtime_inference(read_frame_only, num_prefetch_workers) - self.signal_queue = self.manager.Queue(maxsize=32) - self.render_queue = self.manager.Queue(maxsize=5) + # 1. HARD GUARD: Capture reader values and ensure the connection is active + if not hasattr(self, "result_dir"): + self.result_dir = self.config.SHARED_OUTPUT + self.device_index = f"cuda:{self.gpu_id}" if self.device_input else "cpu" + self.input_fps = self.reader.input_fps + self.target_fps = self.reader.target_fps + self.frame_width = self.reader.frame_width + self.frame_height = self.reader.frame_height + self.numFrames = self.reader.numFrames + # self.min_roi_w = int(self.config.ROI_MIN_AREA_RATIO * self.resize_w) + # self.min_roi_h = int(self.config.ROI_MIN_AREA_RATIO * self.resize_h) + # self.max_roi_w = int(self.resize_w * self.config.ROI_MAX_RELATIVE_SIZE_RATIO) + # self.max_roi_h = int(self.resize_h * self.config.ROI_MAX_RELATIVE_SIZE_RATIO) + # self.max_cached_elements = 100 - self.shared_details = self.manager.dict() - self.shared_details["shm_names"] = shm_names - # self.shared_details["buffer_idx"] = 0 - # self.shared_details["frame_length"] = [0 for _ in range(num_shms)] - self.shared_details["last_id"] = -1 + if self.input_fps <= 0 or self.frame_width <= 0 or self.frame_height <= 0: + main_app_logger.error( + f"[{self.name}] Stream handler fast-fail triggered. Destination " + f"unreachable or invalid ({self.source}). Terminating pipeline configuration." + ) + # Instantly stop background threads to prevent zombie process leakage + if hasattr(self, "reader") and self.reader is not None: + self.reader.stop() - def start(self): - """ - Starts the decoupled ingestion and inference threads in the correct order. - """ - # PRE-SYNC: Ensure GPU is idle before timing starts - if self.device_input == "cuda": - if torch.cuda.is_available(): - torch.cuda.synchronize() + raise RuntimeError( + f"Failed to initialize stream reader endpoint: {self.source}" + ) - # Start the hardware-decoupled reader first - self.reader.start() + # 2. Proceed with calculation mechanics safely only if values are healthy + self.step_size = ( + float(self.input_fps) / float(self.target_fps) + if hasattr(self, "target_fps") + else 1.0 + ) + self.frame_skip = self.reader.frame_skip + self.max_frames_per_clip = self.reader.max_frames_per_clip + self.frame_interval = self.reader.frame_interval - if self.config.ENABLE_QUERYING: - self._initialize_writer() + self.duration_s = self.numFrames / self.input_fps + self.expected_num_frames = int(self.duration_s * self.target_fps) + self.get_frameWH() - # Small delay to allow the reader's deque to populate - time.sleep(0.1) + # Determine minimum contour size relative to frame resolution + # self.min_contour_area = int( + # (self.min_roi_h) + # * (self.min_roi_h) + # ) # 207 + + # self.dist_thresh_8k = max( + # self.config.ROI_DISTANCE_THRESH_RATIO * self.frame_width, + # self.config.ROI_DISTANCE_THRESH_RATIO * self.frame_height, + # ) + # multiplier = 2.0 if self.device_input == "cpu" else 1.0 + # self.dist_thresh_640 = ( + # max( + # self.config.ROI_DISTANCE_THRESH_RATIO * self.resize_w, + # self.config.ROI_DISTANCE_THRESH_RATIO * self.resize_h, + # ) + # * multiplier + # ) # 0.05 * self.resize_w + # self.scales_tensor = torch.tensor( + # [self.scale_x, self.scale_y, self.scale_x, self.scale_y], + # # device="cpu", + # device=self.device_input, + # ) - # Start the producer and consumer threads - if hasattr(self, "process_thread") and not self.process_thread.is_alive(): - self.process_thread.start() + # self.disp_w, self.disp_h = self.config.DISPLAY_FRAME_SIZE - # If running on the CPU track, block the main test thread briefly until the CPU - # has successfully populated the first few frames into the render queue. - # This completely prevents the FFmpeg rendering worker from starving and skipping - # the initial 3-4 seconds of video. - # if getattr(self, "device_input", "cpu") == "cpu": - # print("[INIT] Waiting for CPU to prime the render queue...") - # timeout_counter = 0 - # # Wait until at least 5 frames are buffered in the queue or 10 seconds pass - # while self.render_queue.qsize() < 5 and timeout_counter < 100: - # time.sleep(0.1) - # timeout_counter += 1 - # print( - # f"[INIT] Render queue primed with {self.render_queue.qsize()} frames. Launching worker." - # ) + # Performance Tracking + self.elapsed_display_time = 0.0 + self.frame_count = 0 # Frame count for videos + self.frame_count_target = 0 + self.last_delivered_frame_id = -1 # Track what was actually sent + self.last_frame_id = 0 + self.latest_processed_frame = None + self.next_process_idx = 0.0 + self.stat_fps = 0 + self.stat_frame_count = 0 + self.abs_frame_num = 0 + self.total_objects_detected = 0 + self.is_cuda = self.device.lower() == "gpu" and torch.cuda.is_available() + self.frame_in_clip_count = 0 - if not self.config.DISABLE_DETECTION: - self.render_proc.start() + self.writer_done = True - self.display_proc.start() + # Video Clipping + # self.video_writer = None + self.ffmpeg_proc = None # Replaces cv2.VideoWriter completely + # self.fourcc = cv2.VideoWriter_fourcc(*"mp4v") # avc1, mp4v + # self.clip_id = 0 + # self.clip_filename = "" + self.clip_filename_pattern = f"{self.config.SHARED_OUTPUT}/{self.name}_%03d.mp4" + # self.clip_key = f"{self.name}_000.mp4" + # self.tmp_file = "" + # self.frame_in_clip_count = 0 - if ( - self.config.ENABLE_QUERYING - and not self.config.TEST_MODE - and not self.metadata_thread.is_alive() - ): - self.metadata_thread.start() + if self.config.ENABLE_QUERYING: + self.gpu_float_staging = torch.empty( + (1, 3, self.frame_height, self.frame_width), + dtype=torch.float16, + device=self.device_index, + ) + # Thread-safe queue for the resized frames (640x640) + # maxlen=300 allows for a 20-second buffer in case of extreme disk lag + # Non-blocking queue for frames and control signals + # self.write_queue = queue.Queue(maxsize=int(self.target_fps)) # 300) + + # self.write_queue = queue.Queue( + # maxsize=int(self.target_fps / 2) + # if self.device_input == "cpu" + # else int(self.target_fps / 2) + # ) # 300) + + # Define the depth of your shared memory ring buffer. 16 is a safe number. + self.clipper_ring_depth = 16 + self.clipper_shm_frame_bytes = self.config.MODEL_W * self.config.MODEL_H * 3 + + # Create the shared memory blocks + self.clipper_shm_blocks = [ + SharedMemory(create=True, size=self.clipper_shm_frame_bytes) + for _ in range(self.clipper_ring_depth) + ] - if self.config.ENABLE_QUERYING and not self.writer_thread.is_alive(): - self.writer_thread.start() + # Get the names to pass to the new process + self.clipper_shm_names = [shm.name for shm in self.clipper_shm_blocks] - return self + # Create NumPy array views that the main process will use to write data + self.clipper_shm_np_views = [ + np.ndarray( + (self.config.MODEL_H, self.config.MODEL_W, 3), + dtype=np.uint8, + buffer=shm.buf, + ) + for shm in self.clipper_shm_blocks + ] - # def stopv1(self): - # """ - # Comprehensive resource release. Safely drains the frame pipelines, - # forces a graceful FFmpeg flush to prevent 'moov atom' index corruption, - # and cleanly unlinks shared memory layers. - # """ - # with self._stop_lock: - # if self._is_stopped: - # return # Already stopped by another thread - - # # 1. Instantly pull out of active dashboards to stop inbound traffic - # if self.name in self.active_streams: - # self.active_streams.pop(self.name, None) - - # self.active = False - # print( - # f"[STOP] Initiating graceful flush shutdown for {self.name}", - # flush=True, - # ) + # An atomic, thread-safe counter to track the next available slot + self.clipper_ring_idx = mp.Value("i", 0) + self.clipper_idx_lock = ( + mp.Lock() + ) # Lock to prevent race conditions when getting an index - # # 2. Trigger your event handler flags - # if hasattr(self, "stop_writer") and self.stop_writer is not None: - # try: - # self.stop_writer.set() - # except Exception: - # pass + self.write_queue = mp.Queue(maxsize=self.clipper_ring_depth * 2) + # if ( + # not hasattr(self, "writer_process") + # or self.writer_process is None + # or not self.writer_process.is_alive() + # ): + # main_app_logger.info( + # " [CLIPPER-INIT] Target worker runtime thread is offline. Provisioning core consumer loop thread...", + # ) + self.writer_process = mp.Process( + target=video_writer_core_loop, + args=( + self.write_queue, + self.clip_filename_pattern, + self.target_fps, + self.config.MODEL_W, + self.config.MODEL_H, + int(self.config.CLIP_DURATION), + # Pass the shared memory details to the new process + self.clipper_shm_names, + self.clipper_shm_frame_bytes, + ), + daemon=True, + ) + # self.writer_process.start() + if not self.config.TEST_MODE: + self.send_metadata_queue = queue.Queue() + self.writer_done = False + self.stop_writer = threading.Event() if self.config.ENABLE_QUERYING else None - # # 3. PHASE 1: UNBLOCK CONSUMER CORES (Poison Pill Deliveries First) - # if hasattr(self, "write_queue") and self.write_queue is not None: - # try: - # # Clear out pending frame backlogs to speed up shutdown execution - # while not self.write_queue.empty(): - # try: - # self.write_queue.get_nowait() - # except Exception: - # break - # # Dispatch clean poison pill token to release the consumer thread - # self.write_queue.put(None) - # except Exception: - # pass + # self._cached_grid_y, self._cached_grid_x = torch.meshgrid( + # torch.arange( + # self.resize_h, device=self.device_input + # ), # Match target tracking resolution + # torch.arange(self.resize_w, device=self.device_input), + # indexing="ij", + # ) - # # if hasattr(self, "render_queue") and self.render_queue is not None: - # # try: - # # # while not self.render_queue.empty(): - # # # try: - # # # self.render_queue.get_nowait() - # # # except Exception: - # # # break - # # # self.render_queue.put_nowait(None) - # # while not self.render_queue.empty(): - # # time.sleep( - # # 0.01 - # # ) # Give the disk writer room to catch up cleanly - - # # # Deliver the poison pill token ONLY after the queue is empty - # # self.render_queue.put(None, timeout=2.0) - # # except Exception: - # # pass - - # if hasattr(self, "render_queue") and self.render_queue is not None: - # try: - # # --- THE DEFINITIVE UNBLOCKING FIX --- - # # Drop any lingering items aggressively instead of sleeping infinitely - # # on an empty queue check that never clears. - # while not self.render_queue.empty(): - # try: - # self.render_queue.get_nowait() - # except Exception: - # break - - # # Immediately push the poison pill sentinel to terminate the worker safely - # self.render_queue.put_nowait(None) - # except Exception: - # pass + # self.fixed_inference_batch = torch.empty( + # (self.config.MODEL_MAX_BATCH_SIZE, 3, self.config.MODEL_H, self.config.MODEL_W), + # dtype=torch.half, + # device=self.device_input, + # ) + # Create a deep look-ahead queue buffer that consumes near 0 RAM + # because it only holds reference pointers to your 6 SHM slots! + # if self.is_rtsp: + # prefetch_maxsize = 10 + prefetch_maxsize = 5 # use 4 or 5; 10 risk memlock + # else: + # prefetch_maxsize = ( + # 128 if self.device_input != "cpu" else int(self.target_fps) + # ) + + self.prefetch_queue = queue.Queue( + maxsize=prefetch_maxsize, + ) + # self.prefetch_queue = mp.Queue(maxsize=128) + # Initialize a thread-safe signaling handle at class setup (run_realtime_inference) + self.queue_data_ready_event = threading.Event() + maxsize = ( + self.prefetch_queue.maxsize + if hasattr(self.prefetch_queue, "maxsize") + else self.prefetch_queue._maxsize + ) + # self.shm_buffer_pool = [None] * maxsize + try: + self.shm_buffer_pool = [ + # ( + # torch.empty( + # (self.frame_height, self.frame_width, 3), dtype=torch.uint8 + # ).pin_memory(), + # None, # event + # 0, # frame_num + # 0, # abs_frame_num + # 0.0, # read_latency + # ) + None + for _ in range(maxsize) + ] + except Exception as e_: + traceback.print_exc() + main_app_logger.info(f"[INITIALIZATION ERROR] Error occurred: {e_}") + self.gpu_input = [ + torch.empty( + (self.frame_height, self.frame_width, 3), + device=self.device_input, + dtype=torch.uint8, + ) # .pin_memory() + for _ in range(maxsize) + ] + + self.prefetch_active = True + + self.prefetch_threads = [] + + # self.shm_buffer_pool = [None] * maxsize + # self.shm_buffer_pool = mp.Manager().list([None] * maxsize) + # global_shared_pool = mp.Manager().list([None] * maxsize) + # self.shm_buffer_pool = global_shared_pool + + # Track active worker threads atomically to protect end-of-stream drainage + num_prefetch_workers = 1 # 4 if self.device_input == "cpu" else 3 + self.active_workers_count = num_prefetch_workers + self.worker_tracking_lock = threading.RLock() + # self.obj_counter_l-ock = threading.Lock() + + # Offload the pre-fetch layer straight to a daemon thread context + # prefetch_thread = threading.Thread(target=frame_prefetch_worker, daemon=True) + # prefetch_thread.start() + # num_prefetch_workers = 1 if self.device_input == "cpu" else 3 + # num_prefetch_workers = 3 + + # Override the atomic tracking count to match our active pool allocation + with self.worker_tracking_lock: + self.active_workers_count = num_prefetch_workers + + # This guarantees frames are read from self.reader sequentially + # and stay perfectly in order, while letting workers decode in parallel! + self.reader_lock = threading.RLock() + + # --- PRE-ALLOCATED ZERO-COPY HARDWARE RING WORKSPACE --- + self.ring_depth = 4 # 8 # _async_clipper_worker + self.gpu_ring_idx = 0 # _async_clipper_worker + self.cpu_ring_idx = 0 # _async_clipper_worker + + self.pinned_matrices = [] # _async_clipper_worker, video_writer_core_loop (CPU) + if self.device_input == "cuda": + self.pinned_tensors = [] # _async_clipper_worker + + self.static_gpu_byte_bchw = torch.empty( + (1, 3, self.disp_h, self.disp_w), + dtype=torch.uint8, + device="cuda", + ).contiguous() + + # Pre-allocate 640x640 workspace footprint across CPU and GPU spaces + for _ in range( + self.ring_depth + ): # _async_clipper_worker, video_writer_core_loop + mat = np.zeros((self.resize_h, self.resize_w, 3), dtype=np.uint8) + if self.device_input == "cuda": + try: + cv2.cuda.registerPageLocked(mat) + except cv2.error: + pass + self.pinned_tensors.append(torch.from_numpy(mat)) + + self.pinned_matrices.append(mat) + + # self.init_pipeline_shared_memory() + + # if self.device_input == "cuda" and not hasattr(self, "_cuda_gaussian_filter"): + # # Large block blur to dissolve high-frequency single-pixel speckles + # # ksize=(15, 15) + # # ksize=(11, 11) + # ksize = (17, 17) + # self._cuda_gaussian_filter = cv2.cuda.createGaussianFilter( + # srcType=cv2.CV_8UC1, dstType=cv2.CV_8UC1, ksize=ksize, sigma1=0 + # ) + + # if not hasattr(self, "_filter_scratch_keep"): + # # Existing order and boolean validation maps + # self._filter_scratch_keep = torch.zeros( + # (self.max_cached_elements,), dtype=torch.bool, device=self.device_input + # ) + # self._filter_order_scratch = torch.zeros( + # (self.max_cached_elements,), dtype=torch.long, device=self.device_input + # ) + + # # Persistent coordinate layers to absorb inner-loop tensor evaluations safely + # self._filter_scratch_x1 = torch.zeros( + # (self.max_cached_elements,), dtype=torch.float32, device=self.device_input + # ) + # self._filter_scratch_y1 = torch.zeros( + # (self.max_cached_elements,), dtype=torch.float32, device=self.device_input + # ) + # self._filter_scratch_x2 = torch.zeros( + # (self.max_cached_elements,), dtype=torch.float32, device=self.device_input + # ) + # self._filter_scratch_y2 = torch.zeros( + # (self.max_cached_elements,), dtype=torch.float32, device=self.device_input + # ) + # self._filter_scratch_ioa = torch.zeros( + # (self.max_cached_elements,), dtype=torch.float32, device=self.device_input + # ) + + # Isolate CUDA tasks using a dedicated stream and independent hardware completion barriers + self.processing_stream = ( + torch.cuda.Stream() if self.device_input == "cuda" else None + ) + + # Cache the context manager instance persistently + self.compiled_no_grad_gate = torch.no_grad() + + # Pre-allocated hardware events guarantee completely non-blocking stream isolation + self.slot_events = ( + [torch.cuda.Event() for _ in range(8)] + if self.device_input == "cuda" + else None + ) + + # Allocate a permanent float32/float16 channel layout space directly on VRAM + if self.device_input == "cuda": + self.static_gpu_360p = torch.empty( + (1, 3, self.disp_h, self.disp_w), + dtype=torch.float32, + device=self.device_input, + ) + self.static_gpu_byte_bchw = torch.empty( + (1, 3, self.disp_h, self.disp_w), + dtype=torch.uint8, + device=self.device_input, + ).contiguous() + + def setup_reader(self, target_fps, clip_duration, startup_event=None): + # if hasattr(self, "reader"): + # del self.reader + + self.gpu_id = 0 + + # try: + determined_queue_size = ( + # 4 if self.is_rtsp else 2 # (0 if self.config.TEST_MODE else 2) + # 4 if self.is_rtsp else 8 + 4 # max: 5 + ) + if self.device_input == "cuda": # and not self.is_rtsp: + # Add a tiny sleep or garbage collect to ensure the GPU handle is released + # gc.collect() + # torch.cuda.empty_cache() # Clear any remaining context + + from include.readers import GPUReader + + self.reader = GPUReader( + source=self.source, + startup_event=startup_event, + target_fps=target_fps, + clip_duration=clip_duration, + gpu_id=0, # self.gpu_id, + queue_size=determined_queue_size, + ) + else: + from include.readers import CPUReader + + self.reader = CPUReader( + source=self.source, + startup_event=startup_event, + target_fps=target_fps, + clip_duration=clip_duration, + queue_size=determined_queue_size, + ) + # except Exception as e: + # self.reader = None + # raise ValueError(f"Stream reader initialization failure: {e}") + + def setup_shared_memory(self): + self.manager = mp.Manager() + + self.shms = [] + shm_names = [] + num_shms = 3 + + # Shared Integer to track which buffer is "Ready" for the UI + # 'i' for integer, initialized to 0 + self.ready_buffer_idx = mp.Value("i", 0) + self.reader_active_idx = mp.Value("i", -1) + self.shm_frame_lengths = mp.Array("i", [0 for _ in range(num_shms)]) + self.mp_last_id = mp.Value("i", -1) + self.mp_frame_ready_flag = mp.Value("b", False) + + # --- HIGH-SPEED ATOMIC TELEMETRY BACKLOG REGISTERS --- + self.render_queue_backlog_counter = mp.Value("i", 0) + self.write_queue_backlog_counter = mp.Value("i", 0) + + display_timestamp = int(time.time_ns()) + + for idx in range(num_shms): + # self.shm = mp.shared_memory.SharedMemory(create=True, size=10*1024*1024) + shm_name = f"shm_{self.name}_{idx}_{os.getpid()}_{display_timestamp}" + if shm_name not in shm_names: + try: + SharedMemory(name=shm_name).unlink() + except FileNotFoundError: + pass + # main_app_logger.info(f"[DEBUG]: Setting up SHM {shm_name}") + try: + shm = SharedMemory( + name=shm_name, create=True, size=10 * 1024 * 1024 + ) + # safe_unregister_shm(shm.name) + except FileExistsError: + # Attach to existing memory + shm = SharedMemory(name=shm_name) + # safe_unregister_shm(shm.name) + except Exception as e: + main_app_logger.error(f"Failed to initialize shared memory: {e}") + raise + self.shms.append(shm) + shm_names.append(shm_name) + + # try: + # unregister(shm._name, "shared_memory") + # # main_app_logger.info(f"[HANDLER] Successfully unregistered {shm.name} from Resource Tracker.") + # except Exception: + # pass + + self.signal_queue = self.manager.Queue(maxsize=32) + self.render_queue = self.manager.Queue(maxsize=10) # old-5 + + self.shared_details = self.manager.dict() + self.shared_details["shm_names"] = shm_names + # self.shared_details["buffer_idx"] = 0 + # self.shared_details["frame_length"] = [0 for _ in range(num_shms)] + self.shared_details["last_id"] = -1 + + # PIPELINE FUNCTIONS -------------------------------------------- + + def update_frame(self, stat_start_time): + # if self.device_input == "cuda": + # torch.cuda.synchronize() + + self.stat_frame_count += 1 + self.elapsed_display_time += time.perf_counter() - stat_start_time + # self.elapsed_display_time = time.perf_counter() - stat_start_time + # if elapsed > 0.5: + self.stat_fps = round(self.stat_frame_count / self.elapsed_display_time, 1) + + @torch.inference_mode() + def pipeline_fn( + self, + device_frame, + overall_frame_num, + stat_start_time, + current_clip_id, + gt_boxes=None, + read_frame_only=False, + ): + global all_metadata + current_clip_key = f"{self.name}_{current_clip_id:03d}.mp4" + current_clip_path = f"{self.config.SHARED_OUTPUT}/{current_clip_key}" + + metadata = {} + motion_detected = False + metrics = {"sf_time": 0, "roi_time": 0, "det_time": 0, "bbs": None} + + # Given input frame, get metadata and metrics + try: + if read_frame_only: + # Get frame, metadata and metrics + _, det_frame = self.processor.format_bbs_and_frame_4_detection( + [], device_frame + ) + + else: + # --- CLIP GENERATION --- + if self.config.ENABLE_QUERYING: + if ( + self.config.DEBUG_FLAG + and hasattr(self, "max_frames_per_clip") + and ( + self.frame_in_clip_count % 15 == 0 + or self.frame_in_clip_count == 1 + ) + ): + main_app_logger.info( + f"[CLIPPER] Frame progress tracking index: {self.frame_in_clip_count}/{self.max_frames_per_clip} (Overall Frame: {overall_frame_num})" + ) + + self.prep_frame_for_video(device_frame, overall_frame_num) + + if self.frame_in_clip_count > self.max_frames_per_clip: + global clip_completion_tracker + if current_clip_key not in clip_completion_tracker: + clip_completion_tracker[current_clip_key] = { + "video": False, + "meta": False, + "start_time": time.time(), + } + + clip_completion_tracker[current_clip_key]["meta"] = True + # main_app_logger.info( + # f" [BARRIER-SEAL] All metadata extracted for {current_clip_key}. Evaluating convergence...", + # + # ) + self._evaluate_barrier_and_dispatch( + current_clip_key, + current_clip_path, + self.resize_w, + self.resize_h, + ) + + self.start_new_clip(current_clip_id) + + # Run model on frame, get metadata and metrics + with torch.inference_mode(): + metrics, metadata, det_frame, motion_detected = self.processor.run( + device_frame, + overall_frame_num, + frame_in_clip_count=self.frame_in_clip_count, + gt_boxes=None, + ) + + num_objs = len(metadata.keys()) + self.total_objects_detected += num_objs + + if self.config.DEBUG_FLAG: + meta_keys = ", ".join(list(metadata.keys())) + main_app_logger.info( + f"[DEBUG] {current_clip_key} metadata keys: {meta_keys}", + ) + + if num_objs > 0: + if current_clip_key not in all_metadata: + all_metadata[current_clip_key] = {"object": {}, "face": {}} + + all_metadata[current_clip_key]["object"].update(metadata) + + # data_to_draw = metadata + if self.config.DEBUG_FLAG and overall_frame_num % 50 == 0: + main_app_logger.info( + f"[METADATA-DEBUG A] Logged tracking structures for Frame #{overall_frame_num} into dictionary key: {current_clip_key}. Number detections: {self.total_objects_detected}", + ) + + if self.config.TEST_MODE: + self.frame2video( + det_frame, + overall_frame_num, + metadata, + getattr(self, "label_source", None), + stat_start_time, + ) + else: + self.frame2output( + det_frame, + overall_frame_num, + metadata, + self.label_source, + stat_start_time, + ) + + # with self.obj_counter_lock: + # self.num_objs += len(metadata.keys()) + # except (TypeError, IndexError): + # # App is shutting down and processor/reader not available + # self.active = False + + except Exception as e_detection: + # traceback.print_exc() + # if self.active: + traceback.print_exc() + main_app_logger.info(f"[DETECTION ERROR] Exception: {e_detection}") + # self.active = False + + finally: + # del inf_data, bbs_full_res, device_frame, det_frame + if "det_frame" in locals(): + del det_frame + if "device_frame" in locals(): + del device_frame + # if "bbs_full_res" in locals(): + # del bbs_full_res + # if "inf_data" in locals(): + # del inf_data + + return metadata, metrics # Skip full detection pass + + def initialize_run_realtime_inference(self, read_frame_only, num_prefetch_workers): + # self.duration_target = 30 + # self.status = "RUNNING" + self.processor = self._setup_processor(read_frame_only) + + if hasattr(self, "processor") and hasattr(self.processor, "label_source"): + self.label_source = self.processor.label_source + # Setup empty list to track background futures natively + # self._active_inference_futures = [] + + if self.is_cuda and not hasattr(self, "sf_start") and self.config.TEST_MODE: + self.sf_start, self.sf_end = ( + torch.cuda.Event(enable_timing=True), + torch.cuda.Event(enable_timing=True), + ) + self.roi_start, self.roi_end = ( + torch.cuda.Event(enable_timing=True), + torch.cuda.Event(enable_timing=True), + ) + self.det_start, self.det_end = ( + torch.cuda.Event(enable_timing=True), + torch.cuda.Event(enable_timing=True), + ) + + if self.config.TEST_MODE: + self.component_stats = { + "sf": [], + "roi": [], + "det": [], + "dma_upload": [], # Track PCIe Transfer Latencies + "queue_blocked": [], # Track GIL Serialization stalls + "batch_sizes": [], # Track Smart Filtering density + "thread_backlog": [], # Track thread work pool backlog + } + self.crops_per_frame_list = [] + + # Bind active execution permanently to sub-stream BEFORE entering loop (Bypasses TLS Overhead) + # if self.device_input == "cuda" and torch.cuda.is_available(): + # torch.cuda.set_stream(self.inference_stream) + if hasattr(self, "target_fps") and hasattr(self, "duration_target"): + self.max_target_frames = int(self.duration_target * float(self.target_fps)) + elif hasattr(self, "numFrames"): + self.max_target_frames = self.numFrames + else: + self.max_target_frames = float("inf") + + # self.dynamic_limit = max(2, int(0.5 * self.target_fps)) + + # Initialize a thread-safe signaling handle at class setup (run_realtime_inference) + self.queue_data_ready_event = threading.Event() + + try: + for _ in range(num_prefetch_workers): + # prefetch_thread = mp.Process( + prefetch_thread = threading.Thread( + target=lambda: global_frame_prefetch_worker_v1(self), + daemon=True, + ) + prefetch_thread.start() + self.prefetch_threads.append(prefetch_thread) + except Exception as e: + main_app_logger.critical( + f"[{self.name}] Failed to start prefetch workers: {e}", exc_info=True + ) + traceback.print_exc() + raise + + @torch.inference_mode() + def run_realtime_inference( + self, + sf_enabled=True, + profiler=None, + gt_enabled=False, + read_frame_only=False, + ): + self.status = "RUNNING" + + self.initialize_run_realtime_inference( + read_frame_only, self.active_workers_count + ) + + self.stat_start_time = time.perf_counter() + # pipeline_start_time = self.stat_start_time + # last_loop_cycle_timestamp = self.stat_start_time + + missing_frame_cnt = 0 + max_retries = int(self.target_fps) + # Release the master startup event at the last possible moment. + self.main_startup_event.set() + while ( + self.active # or not self.prefetch_queue.empty() + ): # and self.frame_count_target < self.max_target_frames: + stat_start_time = time.perf_counter() + try: + # FRAME RETRIEVAL --------------------------------------------- + try: + safe_frame, frame_details, should_continue = ( + self._get_frame_from_queue() + ) + + if not should_continue: + self.active = False # Signal loop termination + break + if safe_frame is None: # and self.is_rtsp: + missing_frame_cnt += 1 + + if missing_frame_cnt >= max_retries: + self.active = False # Signal loop termination + main_app_logger.info("Too many frames missing. Exiting ...") + break + continue # Skip to the next iteration if the frame is invalid + + # try: + # # ret, slot_idx = self.prefetch_queue.get(block=True, timeout=1.0) + # # ret, slot_idx = self.prefetch_queue.get(block=False) + # ret, slot_idx = self.prefetch_queue.get(block=True, timeout=1.0) + # self.prefetch_queue.task_done() + + # except queue.Empty: + # with self.worker_tracking_lock: + # if ( + # self.active_workers_count == 0 + # and self.prefetch_queue.empty() + # ): + # self.active = False + # break + # # If the queue is empty AND the prefetch workers are done, we can exit. + # if not self.active: + # break + # continue + + # # If self.stop() drops the queues, break out of the thread loop natively. + # except (OSError, ValueError, AssertionError): + # main_app_logger.info( + # "[PROCESS THREAD] Ingestion queue disconnected via stop() signal. Breaking loop." + # ) + # self.active = False + # break + + # if ret is False or slot_idx == "END_OF_STREAM": + # main_app_logger.info( + # "[PROCESS THREAD] End of video stream detected. Breaking loop naturally." + # ) + # self.active = False + # break + + # if not self.active: + # break + + # # if slot_idx == -1 or self.shm_buffer_pool[slot_idx] is None: + # # continue + # if ( + # slot_idx == -1 + # or not hasattr(self, "shm_buffer_pool") + # or self.shm_buffer_pool is None + # ): + # continue + # if ( + # slot_idx >= len(self.shm_buffer_pool) + # or self.shm_buffer_pool[slot_idx] is None + # ): + # continue + + # # Zero-Copy Reference Extraction straight out of the memory slot array + # ( + # raw_shm_frame, + # current_event, + # frame_num, + # abs_frame_num, + # true_read_latency_secs, + # ) = self.shm_buffer_pool[slot_idx] + + # if frame_num == 0: + # main_app_logger.info( + # f"[VERIFY - CONSUMER] Main loop is officially processing Frame {frame_num}!", + # ) + + # if "cuda" in str(self.device_input): + # safe_frame = self.gpu_input[slot_idx] + # # safe_frame = cpu_tensor.to(self.device_input, non_blocking=True) + # safe_frame.copy_(raw_shm_frame) + # # self.gpu_input[slot_idx].zero_() + # else: + # safe_frame = raw_shm_frame + + # # Record the PyTorch CUDA event on the current stream + # if current_event is not None and isinstance( + # current_event, torch.cuda.Event + # ): + # # This tells the GPU that the consumer is done reading this slot + # current_event.record(torch.cuda.current_stream()) + + # # Originally 0-based but make 1-based + # frame_num += 1 + # abs_frame_num += 1 + # self.abs_frame_num = abs_frame_num + missing_frame_cnt = 0 + + except queue.Empty: + if getattr(self.reader, "reconnect_failed", False): + self.active = False + break + if not self.active: + break # Exit on error if shutdown has been initiated + time.sleep(0.001) + continue + + # FRAME PROCESSING --------------------------------------------- + # stat_start_time = self.stat_start_time + self.abs_frame_num = frame_details["abs_frame_num"] + calculated_clip_id = ( + frame_details["frame_num"] - 1 + ) // self.max_frames_per_clip + self.frame_count += 1 + self.frame_count_target += 1 + self.frame_in_clip_count += 1 + + # RUN PIPELINE_FN --------------------------------------------- + # run_pipelinefn_start = time.perf_counter() + # self.frame_count_target += 1 + # self.frame_in_clip_count += 1 + + # if gt_enabled: + # target_boxes_array = self.get_frame_gt_boxes( + # abs_frame_num, gt_sequence, gt_boxes + # ) + + metadata_or_bbs, metrics = self.pipeline_fn( + safe_frame, + frame_details["frame_num"], + stat_start_time, + calculated_clip_id, + read_frame_only=read_frame_only, + ) + + # # FRAME POST PROCESSING --------------------------------------------- + + # Explicitly delete frame variables to free their references + frame_8k = None + del frame_8k, safe_frame + if "metadata_or_bbs" in locals(): + del metadata_or_bbs + + if self.frame_count % 100 == 0: + gc.collect() + + # Force a microscopic micro-yield if executing on CPU. + # This grants immediate execution priority back to the background cleaning thread, + # allowing the garbage collector to evict data from RAM instantly! + if self.device_input == "cpu": + time.sleep( + 0 + ) # .005) # 1ms yield breaks core processor starvation lock + + # END -> frame processing + except torch.cuda.OutOfMemoryError: + main_app_logger.info("!" * 70) + main_app_logger.info( + "[CRITICAL TEST CRASH] GPU MEMORY CEILING HIT INSIDE RUNNER LOOP!" + ) + main_app_logger.info( + "Freezing allocation history registers and writing diagnostic log..." + ) + main_app_logger.info("!" * 70) + + try: + snapshot_filename = ( + f"/tmp/test_vram_leak_profile_pid{os.getpid()}.pickle" + ) + torch.cuda.memory._dump_snapshot(snapshot_filename) + main_app_logger.info( + f"[PROFILER SUCCESSFUL] Snapshot profile written to: {snapshot_filename}" + ) + main_app_logger.info( + "--> Drag and drop this file directly into: https://pytorch.org" + ) + except Exception as dump_err: + main_app_logger.info( + f"Failed to record profile data snapshot: {dump_err}" + ) + + # Force safe system unlinking of background workers to clean up OS handles + self.active = False + if hasattr(self, "reader") and self.reader is not None: + self.reader.stop() + raise + + except Exception as e: + if not self.active or not getattr(self, "prefetch_active", True): + main_app_logger.info( + "[PROCESS THREAD] System shutdown detected during exception sweep. Exiting thread payload context." + ) + break + + main_app_logger.info( + f"[CRITICAL PIPELINE ERROR] Crash on frame: {repr(e)}" + ) + traceback.print_exc() + raise e # Let it break so you can see the exact line number! + + # END -> while self.active and self.frame_count_target < self.max_target_frames: + + # PIPELINE POST PROCESSING --------------------------------------------- + # ) + + self.async_writer.release() + + # CALCULATE PERFORMANCE METRICS --------------------------------------------- + main_app_logger.info( + f"Execution Finished. Total Output Frames Written: {self.frame_count_target}" + ) + + # Force early hardware driver sweep before unbinding threads + if self.device_input == "cuda" and torch.cuda.is_available(): + torch.cuda.synchronize() + torch.cuda.empty_cache() + torch.cuda.ipc_collect() + + gc.collect() + + if profiler is not None: + profiler.stop() + + self.stop() + + def get_overlay( + self, + display_frame, + metadata_or_bbs, + class_list, + scale_display_x, + scale_display_y, + color=(0, 0, 255), + ): + if isinstance(metadata_or_bbs, dict): + detached_bbs = { + k: (v.detach() if torch.is_tensor(v) else v) + for k, v in metadata_or_bbs.items() + } + # Object Mode (YOLO Structs) + display_frame = get_metadata_overlay( + display_frame, + detached_bbs, + class_list, + (scale_display_x, scale_display_y), + (self.disp_w, self.disp_h), + is_bgr=True, + ) + + elif metadata_or_bbs is not None: + # # Motion / Smart Filtering Overlay Path + display_frame = get_bb_overlay( + display_frame, + metadata_or_bbs, + (scale_display_x, scale_display_y), + (self.disp_w, self.disp_h), + color=color, + ) + + return display_frame + + def _get_frame_from_queue(self): + """ + Retrieves the next available frame data from the shared memory prefetch queue. + + This helper encapsulates the logic for handling an empty queue, stream termination + signals, and invalid data slots, making the main processing loop cleaner. + + Returns: + A tuple containing: + - (torch.Tensor or None): The frame tensor if successful, otherwise None. + - (dict or None): A dictionary with frame metadata (frame_num, event), or None. + - (bool): A flag indicating if the processing loop should continue. + """ + try: + # Block for a short timeout to wait for a frame + ret, slot_idx = self.prefetch_queue.get(block=True, timeout=1.0) + self.prefetch_queue.task_done() + except queue.Empty: + # If the queue is empty, check if workers are still active before deciding to exit. + with self.worker_tracking_lock: + if self.active_workers_count == 0 and self.prefetch_queue.empty(): + main_app_logger.info( + "[HELPER] Prefetch queue is empty and all workers are done. Signaling stop." + ) + return None, None, False # Stop + return None, None, True # Continue waiting + except (OSError, ValueError): + # The queue was likely closed by self.stop(), signal to exit. + main_app_logger.info("[HELPER] Prefetch queue was closed. Signaling stop.") + return None, None, False # Stop + + # Check for end-of-stream signal or invalid data + if not ret or slot_idx == "END_OF_STREAM": + main_app_logger.info("[HELPER] Received end-of-stream signal.") + return None, None, False # Stop + + if ( + slot_idx == -1 + or not hasattr(self, "shm_buffer_pool") + or self.shm_buffer_pool is None + or slot_idx >= len(self.shm_buffer_pool) + or self.shm_buffer_pool[slot_idx] is None + ): + return None, None, True # Continue, skip this invalid slot + + # --- Zero-Copy Reference Extraction --- + ( + raw_shm_frame, + current_event, + frame_num, + abs_frame_num, + true_read_latency_secs, + ) = self.shm_buffer_pool[slot_idx] + # self.shm_buffer_pool[slot_idx] = None # Immediately clear the slot + + if frame_num == 0: + main_app_logger.info( + f"[VERIFY - CONSUMER] Main loop is officially processing Frame {frame_num}!", + ) + + # Convert numpy array from shared memory to a torch tensor + # cpu_tensor = torch.from_numpy(raw_shm_frame) if isinstance(raw_shm_frame, np.ndarray) else raw_shm_frame + + # # Move to the correct device (GPU or CPU) + # if "cuda" in str(self.device_input): + # safe_frame = cpu_tensor.to(self.device_input, non_blocking=True) + # else: + # safe_frame = cpu_tensor + + # if "cuda" in str(self.device_input): + # safe_frame = self.gpu_input[slot_idx] + # # safe_frame = cpu_tensor.to(self.device_input, non_blocking=True) + # safe_frame.copy_(raw_shm_frame) + # # self.gpu_input[slot_idx].zero_() + # else: + safe_frame = raw_shm_frame + + # Record the CUDA event to signal that the consumer is done with this slot + if current_event and isinstance(current_event, torch.cuda.Event): + current_event.record(torch.cuda.current_stream()) + + frame_details = { + "frame_num": frame_num + 1, + "abs_frame_num": abs_frame_num + 1, + "event": current_event, + "reader_time": true_read_latency_secs, + } + + # Explicitly delete intermediate tensors + del raw_shm_frame + + return safe_frame, frame_details, True + + def _setup_processor(self, read_frame_only): + """ + Selects and initializes the appropriate object detector based on the configuration. + + This helper encapsulates the logic for creating the AI model (`processor`), + handling potential initialization errors gracefully. + + Args: + read_frame_only (bool): If True, no processor is initialized as frames are only being read. + + Returns: + An initialized detector instance (e.g., SmartFilteringObjectDetector) or None. + """ + # If we are only reading frames, no AI model is needed. + # if read_frame_only: + # return None + + # Determine the correct detector class based on the smart filtering configuration. + DetectorClass = ( + SmartFilteringObjectDetector + if self.config.sf_enabled + else GeneralObjectDetector + ) + detector_name = DetectorClass.__name__ + main_app_logger.info(f"[{self.name}] Initializing processor: {detector_name}") + + try: + # Common configuration for all detectors. + debug_frame_limit = ( + self.config.DEBUG_FRAME_LIMIT if self.config.DEBUG_FLAG else -1 + ) + + processor = DetectorClass( + config=self.config, + device=self.device_input, + timer_enabled=True, + resize_hw=(self.resize_h, self.resize_w), + frame_hw=(self.frame_height, self.frame_width), + target_fps=self.target_fps, + result_dir=self.result_dir, + run_name=self._testMethodName, + debug_frame_limit=debug_frame_limit, + ) + return processor + except Exception as e: + # If the model fails to load, log the error and halt the pipeline. + main_app_logger.critical( + f"[{self.name}] CRITICAL: Failed to initialize AI processor '{detector_name}'. Error: {e}", + exc_info=True, + ) + # Propagate the error to stop the handler from starting. + raise + + def frame2video( + self, + device_frame, + frameNum, + metadata_or_bbs, + class_list, + stat_start_time, + gt_boxes=None, + ): + """ + Frame is formated and added to video + metadata_or_bbs: Expected to be in resize dimensions (640x640) + """ + + # Factor for converting 640 bb dimensions to display dimensions + scale_display_x = self.disp_w / self.resize_w # 640 + scale_display_y = self.disp_h / self.resize_h # 640 + + if self.device_input == "cuda": # and torch.is_tensor(device_frame): + with torch.inference_mode(): + # 2. Fast Inline VRAM Downscaling into our static memory slot + # Reshape to (Batch, Channel, Height, Width) seamlessly without duplicating data + gpu_tensor = device_frame[None].permute(0, 3, 1, 2) + + resized_tensor = torch.nn.functional.interpolate( + gpu_tensor, + size=(self.disp_h, self.disp_w), + mode="nearest", + ) + + # Using copy_() avoids creating any runtime allocations or memory-stride drift. + self.static_gpu_byte_bchw.copy_(resized_tensor) + + # Safely reshape the pre-allocated, locked GPU memory layout back to standard HWC array topology. + # Since the underlying array layout is strictly contiguous, this permute is guaranteed + # to be zero-copy on the GPU and free from memory race stalls. + bgr_contiguous = self.static_gpu_byte_bchw.squeeze(0).permute(1, 2, 0) + + # 1. Grab the current free pinned slot tracking variables from your reader + d2h_idx = self.reader.d2h_selector + pinned_tensor_buf = self.reader.d2h_buffers[d2h_idx] + + # # Synchronize only the side download stream layout channel + # self.reader.download_stream.synchronize() + # Initialize a static download sync event on setup_context if not present + # if not hasattr(self, "_d2h_fence"): + # self._d2h_fence = torch.cuda.Event() + + with torch.cuda.stream(self.reader.download_stream): + pinned_tensor_buf.copy_( + bgr_contiguous, + non_blocking=True, + ) + # self._d2h_fence.record() + + # self._d2h_fence.synchronize() + + cpu_360p_frame = self.reader.d2h_numpys[d2h_idx] + + # 5. Non-Blocking Push straight to your background AsyncVideoWriter thread pool + # We pass a direct .copy() slice so the hot loop can instantly reuse the pinned ring buffer + # display_frame = np.array(cpu_360p_frame, copy=True, order="C") + display_frame = np.asarray(cpu_360p_frame, order="C") + if display_frame.shape[-1] == 3: + display_frame = cv2.cvtColor(display_frame, cv2.COLOR_RGB2BGR) + + # --- Draw Detection Overlays --- + if gt_boxes is not None: + # Factor for converting 8K (original) bb dimensions to display dimensions + scale_display_ox = self.disp_w / self.frame_width + scale_display_oy = self.disp_h / self.frame_height + + display_frame = self.get_overlay( + display_frame, + gt_boxes, + None, + scale_display_ox, + scale_display_oy, + color=(0, 255, 0), + ) + + display_frame = self.get_overlay( + display_frame, + metadata_or_bbs, + class_list, + scale_display_x, + scale_display_y, + ) + + self.async_writer.write_frame(display_frame) + self.update_frame(stat_start_time) + # self.canvas_selector = 1 - self.canvas_selector + self.reader.d2h_selector = 1 - self.reader.d2h_selector + + if ( + self.config.DEBUG_FLAG + and self.config.TEST_MODE + and frameNum <= self.config.DEBUG_FRAME_LIMIT + ): + stage_debug_dir = ( + self.result_dir / "debug_stages" / self._testMethodName / "display" + ) + stage_debug_dir.mkdir(parents=True, exist_ok=True) + cv2.imwrite( + # str(stage_debug_dir / f"frame_{f_num:04d}_stage6_threshold.jpg"), + str(stage_debug_dir / f"frame_{frameNum:04d}_final_frame.jpg"), + display_frame, + ) + + else: # CPU + # Reusable baseline track for CPU execution mappings + display_frame = cv2.resize( + device_frame, + (self.disp_w, self.disp_h), + interpolation=cv2.INTER_NEAREST, + ) + + # --- Draw Detection Overlays --- + if gt_boxes is not None: + # Factor for converting 8K (original) bb dimensions to display dimensions + scale_display_ox = self.disp_w / self.frame_width + scale_display_oy = self.disp_h / self.frame_height + + display_frame = self.get_overlay( + display_frame, + gt_boxes, + None, + scale_display_ox, + scale_display_oy, + color=(0, 255, 0), + ) + + display_frame = self.get_overlay( + display_frame, + metadata_or_bbs, + class_list, + scale_display_x, + scale_display_y, + ) + self.async_writer.write_frame(display_frame) + self.update_frame(stat_start_time) + + # if "display_frame" in locals(): + # del display_frame + # if "metadata_or_bbs" in locals(): + # del metadata_or_bbs + + def frame2output( + self, device_frame, frame_num, metadata_or_bbs, class_list, stat_start_time + ): + """ + Renders drone detection bounding boxes onto the canvas + before dispatching to the live UI shared memory stream. + """ + if not self.active: + return + + # Factor for converting 640 bb dimensions to display dimensions + scale_display_x = self.disp_w / self.resize_w # 640 + scale_display_y = self.disp_h / self.resize_h # 640 + + try: + if self.device_input == "cuda": # and torch.is_tensor(device_frame): + with torch.inference_mode(): + # main_app_logger.info(f"device_frame.shape: {device_frame.shape}") + # main_app_logger.info(f"\tdevice_frame[None, :].shape: {device_frame[None, :].shape}") + # 2. Fast Inline VRAM Downscaling into our static memory slot + # Reshape to (Batch, Channel, Height, Width) seamlessly without duplicating data + gpu_tensor = device_frame[None, :].permute(0, 3, 1, 2).float() + + resized_tensor = torch.nn.functional.interpolate( + gpu_tensor, + size=(self.disp_h, self.disp_w), + mode="nearest", + ) + + # CONVERTS TO CPU EARLIER (WORKS but lowers fps) + # hwc_byte_tensor = resized_tensor.squeeze(0).permute(1, 2, 0).byte() + # cpu_tensor = hwc_byte_tensor.cpu() + # bgr_contiguous = cpu_tensor.contiguous() + + # Using copy_() avoids creating any runtime allocations or memory-stride drift. + self.static_gpu_byte_bchw.copy_(resized_tensor.byte()) + + # Safely reshape the pre-allocated, locked GPU memory layout back to standard HWC array topology. + # Since the underlying array layout is strictly contiguous, this permute is guaranteed + # to be zero-copy on the GPU and free from memory race stalls. + bgr_contiguous = self.static_gpu_byte_bchw.squeeze(0).permute(1, 2, 0) + + # 1. Grab the current free pinned slot tracking variables from your reader + d2h_idx = self.reader.d2h_selector + pinned_tensor_buf = self.reader.d2h_buffers[d2h_idx] + + # c_idx = self.canvas_selector + # current_canvas = self.static_host_canvases[c_idx] + + # host_tensor_view = torch.as_tensor(current_canvas, device="cpu") + + # 3. Non-blocking asynchronous PCIe DMA Download directly into our page-locked canvas + # with torch.cuda.stream(self.reader.download_stream): + # if ( + # hasattr(self.reader, "download_stream") + # and self.reader.download_stream is not None + # ): + # torch.cuda.set_stream(self.reader.download_stream) + # pinned_tensor = torch.from_numpy(current_canvas).cuda() + pinned_tensor_buf.copy_(bgr_contiguous, non_blocking=True) + + # Synchronize only the side download stream layout channel + # self.reader.download_stream.synchronize() + + cpu_360p_frame = self.reader.d2h_numpys[d2h_idx] + + # 5. Non-Blocking Push straight to your background AsyncVideoWriter thread pool + # We pass a direct .copy() slice so the hot loop can instantly reuse the pinned ring buffer + display_frame = np.array(cpu_360p_frame, copy=True, order="C") + if display_frame is not None and display_frame.shape[-1] == 3: + display_frame = cv2.cvtColor(display_frame, cv2.COLOR_RGB2BGR) - # # 4. PHASE 2: GRACEFUL FFmpeg DEFLATION GATE (Bypasses Moov Issues) - # if hasattr(self, "ffmpeg_proc") and self.ffmpeg_proc is not None: - # try: - # print( - # "[STOP] Closing video pipeline write handles to flush metadata...", - # flush=True, - # ) - # if self.ffmpeg_proc.stdin: - # self.ffmpeg_proc.stdin.close() # Safely alerts FFmpeg to finalize files + # --- Draw Detection Overlays --- + display_frame = self.get_overlay( + display_frame, + metadata_or_bbs, + class_list, + scale_display_x, + scale_display_y, + ) - # if self.ffmpeg_proc.stderr: - # self.ffmpeg_proc.stderr.close() # Instantly forces readline() to return None and exits thread safely + self.async_writer.write_frame(display_frame, frame_num) + self.update_frame(stat_start_time) + # self.canvas_selector = 1 - self.canvas_selector + self.reader.d2h_selector = 1 - self.reader.d2h_selector - # # Grant a soft 5-second window for storage layer disk synchronization - # self.ffmpeg_proc.wait(timeout=5.0) - # print( - # " [STOP] FFmpeg closed cleanly with valid indexing atoms.", - # flush=True, - # ) - # except subprocess.TimeoutExpired: - # print( - # " [STOP-WARN] Video flush timed out. Forcing hard termination.", - # flush=True, - # ) - # try: - # self.ffmpeg_proc.kill() - # except Exception: - # pass - # except Exception as io_err: - # print( - # f" [STOP-WARN] Error during streaming flush: {io_err}", - # flush=True, - # ) - # finally: - # self.ffmpeg_proc = None - # self.video_writer = None - - # # 5. PHASE 3: SHUTDOWN MULTIPROCESSING DAEMONS - # for proc_attr in ["render_proc", "ai_proc"]: - # proc = getattr(self, proc_attr, None) - # if proc is not None: - # try: - # if proc.is_alive(): - # proc.terminate() - # proc.join(timeout=0.5) - # proc.close() - # except Exception: - # pass - # setattr(self, proc_attr, None) - - # # 6. PHASE 4: FINAL SEGMENT EVALUATION CONVERGENCE - # try: - # final_clip_key = f"{self.name}_{self.clip_id:03d}.mp4" - # final_clip_path = f"{self.config.SHARED_OUTPUT}/{final_clip_key}" - - # # Check if the final truncated or partial segment actually exists before dispatching - # if ( - # os.path.exists(final_clip_path) - # and os.path.getsize(final_clip_path) > 0 - # ): - # print( - # f" [STOP-FLUSH] Registering finalized terminal clip: {final_clip_key}", - # flush=True, - # ) - # global clip_completion_tracker - # if final_clip_key not in clip_completion_tracker: - # clip_completion_tracker[final_clip_key] = { - # "video": False, - # "meta": False, - # "start_time": time.time(), - # } - - # clip_completion_tracker[final_clip_key]["video"] = True - # clip_completion_tracker[final_clip_key]["meta"] = True - # self._evaluate_barrier_and_dispatch( - # final_clip_key, final_clip_path, self.resize_w, self.resize_h - # ) - # except Exception as final_flush_err: - # print( - # f" [STOP-WARN] Final segment tracking layer bypass failed: {final_flush_err}", - # flush=True, - # ) - - # # 8. PHASE 6: UNMAP HARDWARE MEMORY OBJECTS - # if hasattr(self, "shared_details"): - # try: - # # Force-close the internal lock primitive hidden inside the Manager dict proxy - # if hasattr(self.shared_details, "_ctx") and hasattr( - # self.shared_details._ctx, "RLock" - # ): - # lock = self.shared_details._ctx.RLock() - # if hasattr(lock, "_semlock"): - # lock._semlock._close() - # self.shared_details.clear() - # except Exception: - # pass - # del self.shared_details + else: + # Reusable baseline track for CPU execution mappings + display_frame = cv2.resize( + device_frame, + (self.disp_w, self.disp_h), + interpolation=cv2.INTER_NEAREST, + ) - # if ( - # hasattr(self, "mp_frame_ready_event") - # and self.mp_frame_ready_event is not None - # ): - # try: - # # mp.Event allocates an internal ctx.Cond / ctx.Lock boundary pair - # if hasattr(self.mp_frame_ready_event, "_cond"): - # cond = self.mp_frame_ready_event._cond - # if hasattr(cond, "_lock") and hasattr(cond._lock, "_semlock"): - # cond._lock._semlock._close() - # except Exception: - # pass - # self.mp_frame_ready_event = None - - # for q_attr in ["signal_queue", "render_queue"]: - # if hasattr(self, q_attr): - # q = getattr(self, q_attr) - # if q is not None: - # try: - # # 1. Flush and break down standard background worker threads safely - # q.close() - # q.join_thread() - - # # 2. CRITICAL: Force-close the hidden POSIX lock primitives to clear resource_tracker limits - # if hasattr(q, "_rlock") and q._rlock is not None: - # if hasattr(q._rlock, "_semlock"): - # q._rlock._semlock._close() - - # if hasattr(q, "_writer") and q._writer is not None: - # if hasattr(q._writer, "_semlock"): - # q._writer._semlock._close() - # except Exception: - # pass - # setattr(self, q_attr, None) - - # for primitive_attr in [ - # "ready_buffer_idx", - # "reader_active_idx", - # "shm_frame_lengths", - # ]: - # if hasattr(self, primitive_attr): - # obj = getattr(self, primitive_attr) - # if obj is not None and hasattr(obj, "get_lock"): - # try: - # # Grab the hidden lower-level POSIX context lock map - # lock = obj.get_lock() - # # If the lock handle is bound to an active system descriptor, release it - # if hasattr(lock, "_semlock"): - # lock._semlock._close() # Forces immediate unlinking at the OS level - # except Exception: - # pass - # setattr(self, primitive_attr, None) - - # if hasattr(self, "manager") and self.manager is not None: - # try: - # self.manager.shutdown() - # except Exception: - # pass - # self.manager = None + # --- Draw Detection Overlays --- + display_frame = self.get_overlay( + display_frame, + metadata_or_bbs, + class_list, + scale_display_x, + scale_display_y, + ) + self.async_writer.write_frame(display_frame, frame_num) + self.update_frame(stat_start_time) - # if hasattr(self, "pinned_matrices") and self.pinned_matrices: - # for active_mat in self.pinned_matrices: - # try: - # cv2.cuda.unregisterPageLocked(active_mat) - # except Exception: - # pass - # self.pinned_matrices.clear() - # self.pinned_tensors.clear() - - # # FIXED: Explicitly clear the high-speed AI tensor staging array allocations - # if hasattr(self, "ai_pinned_tensors") and self.ai_pinned_tensors: - # self.ai_pinned_tensors.clear() - - # if hasattr(self, "ai_shms") and self.ai_shms: - # for shm in self.ai_shms: - # try: - # shm.close() - # shm.unlink() - # except Exception: - # pass - # self.ai_shms.clear() - # if hasattr(self, "ai_shm_names") and self.ai_shm_names: - # self.ai_shm_names.clear() - - # if hasattr(self, "shms") and self.shms: - # for shm in self.shms: - # shm.close() - # try: - # shm.unlink() - # except FileNotFoundError: - # pass - # self.shms.clear() - # if ( - # hasattr(self, "shared_details") - # and "shm_names" in self.shared_details - # ): - # try: - # self.shared_details.pop("shm_names", None) - # except Exception: - # pass - - # if hasattr(self, "cap") and self.cap is not None: - # self.cap.release() - # self.cap = None - - # for pool_name in [ - # "executor", - # # "io_executor", - # "clip_executor", - # # "ffmpeg_executor", - # ]: - # if hasattr(self, pool_name) and getattr(self, pool_name) is not None: - # try: - # getattr(self, pool_name).shutdown(wait=True) - # except Exception: - # pass - # setattr(self, pool_name, None) + except Exception: + traceback.print_exc() + # return - # # self.reader = None - # self._is_stopped = True - # print(f" [STOP] {self.name} pipeline resources fully released.", flush=True) + if "display_frame" in locals(): + del display_frame + if "metadata_or_bbs" in locals(): + del metadata_or_bbs - def stop(self): - """Overrides handlers.py to flush thread objects safely without deadlocking.""" - with self._stop_lock: - if self._is_stopped: - return + # CLEANUP -------------------------------------------- - print( - f"\n[PIPELINE-TEARDOWN] Initiating graceful thread drainage for {self.name}", - flush=True, - ) - self.active = False - time.sleep(0.05) + def clean_up_tensors_and_arrays_v1(self): + main_app_logger.info("[CLEANUP] Safely stripping active runtime arrays ...") - # 1. Rapidly clear the async video writer thread queue first - if hasattr(self, "async_writer") and self.async_writer is not None: + # 1. Force disable tracking states to stop graph allocation recursion + # torch.set_grad_enabled(False) + + # if hasattr(torch, "jit") and hasattr(torch.jit, "_builtins"): + # if isinstance(torch.jit._builtins, dict): + # torch.jit._sbuiltins.clear() + # else: + # torch.jit._builtins = {} + + # 2. Collect references safely using strict type checking + # This completely avoids pulling unmanaged proxy objects from the heap + all_live_objects = gc.get_objects() + + target_tensors = [] + target_arrays = [] + + for obj in all_live_objects: + try: + obj_type = type(obj) + if isinstance(obj, types.FrameType): + frame_info = inspect.getframeinfo(obj) + if ( + "openvino" in frame_info.filename + or "openvino.py" in frame_info.filename + ): + # Clear the frame's local variable dictionary to break circular references + obj.f_locals.clear() + + # Check for concrete types to prevent triggering proxy __getattr__ hooks + if obj_type is torch.Tensor: + target_tensors.append(obj) + elif obj_type is np.ndarray: + # Explicitly guard size checks to keep it completely stable + if obj.base is None and obj.ndim > 0: + target_arrays.append(obj) + except Exception: + traceback.print_exc() + + # 3. Truncate discovered references in-place without triggering deletions + reclaimed_tensors = 0 + for tensor in target_tensors: + try: + # Truncate raw storage footprint safely + tensor.data = torch.empty(0, device=self.device_input) + reclaimed_tensors += 1 + except Exception: + traceback.print_exc() + + reclaimed_arrays = 0 + for arr in target_arrays: + try: + # Shrink writeable numpy arrays down to 0 bytes safely + if arr.flags.writeable: + arr.resize((0,), refcheck=False) + reclaimed_arrays += 1 + except (ValueError, SystemError): + traceback.print_exc() + except Exception: + traceback.print_exc() + + main_app_logger.info( + f"[CLEANUP] Reclaimed {reclaimed_tensors} tensors and {reclaimed_arrays} arrays safely." + ) + + # Clean local registers immediately + all_live_objects = None + target_tensors = None + target_arrays = None + + if hasattr(sys, "exc_info"): + sys.exc_clear() if hasattr(sys, "exc_clear") else None + gc.collect() + + def clean_up_tensors_and_arrays(self): + """ + Safely releases instance-local memory without corrupting global PyTorch tensors. + """ + main_app_logger.info( + f"[CLEANUP {getattr(self, 'name', '')}] Releasing local arrays and flushing caches..." + ) + + # Explicitly release any instance-level tensor references + instance_tensor_attrs = [ + "static_gpu_360p", + "static_gpu_byte_bchw", + "gpu_float_staging", + "scales_tensor", + "_cached_grid_x", + "_cached_grid_y", + ] + for attr in instance_tensor_attrs: + if hasattr(self, attr): + setattr(self, attr, None) + + if hasattr(sys, "exc_info"): + try: + if hasattr(sys, "exc_clear"): + sys.exc_clear() + except Exception: + pass + + gc.collect() + if "cuda" in str(self.device_input) and torch.cuda.is_available(): + torch.cuda.empty_cache() + if hasattr(torch.cuda, "ipc_collect"): + torch.cuda.ipc_collect() + + def drain_queues(self, all_queues, wait_time=15.0): + # Wait (15 seconds) for your background writers to pull remaining matrices out of the pipe + drain_start = time.perf_counter() + while time.perf_counter() - drain_start < wait_time: + still_has_frames = False + for q_name in all_queues: + q_val = getattr(self, q_name, None) + if q_val is not None: + try: + # Accumulate total remaining frame backlogs across your pipelines + # if hasattr(q_val, "qsize"): + # backlog += q_val.qsize() + if not q_val.empty(): + still_has_frames = True + break + except Exception: + pass + + if not still_has_frames: + main_app_logger.info( + "[TEARDOWN] All background queues are empty. Proceeding to safe close.", + ) + break + + # Yield micro-slices to grant immediate execution priority to background threads + time.sleep(0.01) + + def remove_scalar_attributes(self, remove_attrs): + for attr in remove_attrs: + val = getattr(self, attr, None) + if val is not None: + # try: + # val.clear() + # except Exception: + # setattr(self, attr, None) + + # # try: delattr(self, attr) + # # except AttributeError: pass try: - self.async_writer.release() + # THE NATIVE SHIELD: Only call clear() if it has the attribute! + if hasattr(val, "clear") and callable(getattr(val, "clear")): + val.clear() + else: + # If it's a primitive type like an int, reset it safely + if isinstance(val, int): + setattr(self, attr, 0) + elif isinstance(val, float): + setattr(self, attr, 0.0) + elif isinstance(val, dict): + setattr(self, attr, {}) + elif torch.is_tensor(val): + val.data = torch.empty(0, device=self.device_input) + else: + setattr(self, attr, None) + if hasattr(self, attr): + delattr(self, attr) except Exception: + # pass traceback.print_exc() - # Instantly pull out of active dashboards to stop inbound traffic - if self.name in self.active_streams: - self.active_streams.pop(self.name, None) + try: + if hasattr(self, attr): + delattr(self, attr) + except Exception: + # pass + traceback.print_exc() - if not self.config.TEST_MODE: - if hasattr(self, "send_metadata_queue"): - local_send_metadata_queue = self.send_metadata_queue - else: - global send_metadata_queue - local_send_metadata_queue = send_metadata_queue - if local_send_metadata_queue is not None: - try: - # 1. Wait for any in-flight ThreadPoolExecutor inference workers - # to finish submitting final frame maps to all_metadata - if hasattr(self, "executor") and self.executor is not None: - while self.get_executor_backlog() > 0: - time.sleep(0.01) - - backlog_count = local_send_metadata_queue.qsize() - print( - f"[TEARDOWN] send_metadata_queue has {backlog_count} pending uploads. Delivering poison pill sentinel...", - flush=True, - ) + def drain_and_close_queues(self, all_queues): + for key in all_queues: + val = getattr(self, key, None) + if val is None: + continue + try: + while not val.empty(): + val.get_nowait() + except Exception: + pass + try: + if hasattr(val, "close"): + if hasattr(val, "cancel_join_thread"): + val.cancel_join_thread() + val.close() + except Exception: + pass + # setattr(self, key, None) - # 2. Push the explicit sentinel None token to tell the consumer loop to close - local_send_metadata_queue.put(None) - - # 3. CRITICAL BRIDGING BLOCK: If the thread is active and alive, - # block the main process context to let it completely empty the queue - if ( - hasattr(self, "metadata_thread") - and self.metadata_thread is not None - ): - if self.metadata_thread.is_alive(): - # Force the main thread to join until the consumer hits the sentinel and exits - self.metadata_thread.join(timeout=2.0) - - if self.metadata_thread.is_alive(): - print( - "[TEARDOWN-WARN] Metadata database thread hung on socket lock. Bypassing safely to prevent deadlock.", - flush=True, - ) - else: - print( - "[TEARDOWN] Metadata database thread exited cleanly.", - flush=True, - ) + def stop_events(self, events=[], keys_to_skip_deletion=[]): + for event_attr in events: + # if hasattr(self, event_attr): + tgt_event = getattr(self, event_attr, None) + if tgt_event is None: + continue + try: + if hasattr(tgt_event, "_handle"): + tgt_event._handle.close() + if ( + isinstance(tgt_event, torch.cuda.Event) + and event_attr not in keys_to_skip_deletion + ): + # Force internal driver handle release + del tgt_event + except Exception: + # pass + traceback.print_exc() + setattr(self, event_attr, None) - except Exception as teardown_err: - print( - f"[TEARDOWN WARN] Metadata drainage exception: {teardown_err}", - flush=True, - ) + if hasattr(self, event_attr) and event_attr not in keys_to_skip_deletion: + delattr(self, event_attr) - # ===================================================================== - # DECUPLED MULTI-PROCESS TEARDOWN LIFECYCLE SEQUENCE - # ===================================================================== - # 1. FIRST: Drain and synchronize your thread pool tasks so EVERY frame drops into the IPC queue - if hasattr(self, "display_pool") and self.display_pool is not None: - try: - if hasattr(self.display_pool, "_work_queue"): - backlog = self.display_pool._work_queue.qsize() - if backlog > 0: - print( - f"\n\033[94m[STAGE 1/4] Synchronizing display pool threads. Draining {backlog} background tasks...\033[0m", - flush=True, - ) - backlog_s = time.perf_counter() - while ( - self.display_pool._work_queue.qsize() > 0 - or len(self.reorder_staging_buffer) > 0 - ): - # Yield a brief slice to let worker threads complete downscaling - time.sleep(0.01) - backlog_e = time.perf_counter() - backlog_s - print(f"\t\033[94mTook {backlog_e} secs\033[0m", flush=True) - print( - "\033[92m[SUCCESS] All background image transformations completed cleanly.\033[0m", - flush=True, - ) - self.display_pool.shutdown(wait=True) - except Exception as e: - print( - f"[TEARDOWN ERROR] Thread pool synchronization failed: {e}", - flush=True, - ) - setattr(self, "display_pool", None) + def stop_thread(self, val): + # current_thread_id = threading.get_ident() + # val = getattr(self, targeted_key, None) + # val = targeted_key_val + try: + if hasattr(val, "is_alive") and val.is_alive(): + if val.ident != threading.get_ident(): + if hasattr(val, "terminate"): + val.terminate() + val.join(timeout=0.5) + except Exception: + if val is None: + pass + traceback.print_exc() + + def stop_threads(self, all_targeted_keys): + current_thread_id = threading.get_ident() + for attr in all_targeted_keys: + val = getattr(self, attr, None) + if val is None: + continue + try: + if hasattr(val, "is_alive") and val.is_alive(): + if getattr(val, "ident", None) != current_thread_id: + # if hasattr(val, "terminate"): val.terminate() + # val.join(timeout=0.5) + if isinstance(val, (threading.Thread, DummyProcess)): + # Threads can only be joined cooperatively via flags (self.active = False) + val.join(timeout=0.2) # Use a tight, rapid timeout gate + else: + val.join(timeout=3.0) + # OS multi-processing blocks can safely accept termination hooks + if val.is_alive() and hasattr(val, "terminate"): + val.terminate() + except Exception: + # pass + traceback.print_exc() + + # Clean up references immediately to drop tracking counters + if getattr(val, "ident", None) != current_thread_id: + setattr(self, attr, None) + + def set_stop_writer_event(self, remove=False): + if hasattr(self, "stop_writer") and self.stop_writer is not None: + try: + self.stop_writer.set() + except Exception: + pass + setattr(self, "stop_writer", None) - # 1. FIRST: Instantly dispatch the shutdown token so the worker process knows to flush entries - if hasattr(self, "render_queue") and self.render_queue is not None: + if remove: try: - print( - f"\n\033[94m[STAGE 1/3] Dispatching shutdown sentinel (None) to rendering process worker (Backlog: {self.render_queue.qsize()} frames)...\033[0m", - flush=True, - ) - # Delivering the poison pill immediately tells FFmpeg to drain remaining blocks sequentially - self.render_queue.put(None, timeout=2.0) - except Exception as queue_err: - print( - f"\033[91m[TEARDOWN ERROR] Failed staging shutdown token: {queue_err}\033[0m", - flush=True, - ) + delattr(self, "stop_writer") + except AttributeError: + pass - # 2. SECOND: Allow the background multiprocessing queue to empty outstanding items naturally - if hasattr(self, "render_queue") and self.render_queue is not None: + def stop_executors(self, all_targeted_keys, remove=True): + for key in list(all_targeted_keys): + val = getattr(self, key, None) + if val is None: + continue + try: + val.shutdown(wait=False, cancel_futures=True) + # Natively strip out the inner worker thread arrays to drop OS handles + if hasattr(val, "_threads"): + val._threads.clear() + except Exception: try: - print( - "\n\033[94m[STAGE 2/3] Finalizing file output. Draining remaining frames from IPC memory lane...\033[0m", - flush=True, - ) - t_drain = time.perf_counter() - # Wait up to 15 seconds for the worker process to pull every remaining matrix out of the pipe - while ( - not self.render_queue.empty() - and (time.perf_counter() - t_drain) < 15.0 - ): - time.sleep( - 0.01 - ) # Micro-yield grants immediate execution priority to the background process core + val.shutdown(wait=False) + except Exception: + pass + setattr(self, key, None) + if remove: + delattr(self, key) + + def unregister_pinned_cuda_data_v1(self): + # Unregister the hidden page-locks inside the ai_pinned_tensors pool + if hasattr(self, "ai_pinned_tensors") and self.ai_pinned_tensors: + for tensor in list(self.ai_pinned_tensors): + try: + if torch.is_tensor(tensor): + # Extract the shared NumPy view to break the C++ driver lock + cv2.cuda.unregisterPageLocked(tensor.numpy()) + except cv2.error: + pass except Exception: pass - # 3. THIRD: Block the main thread safely and allow the detached process to finish disk I/O operations - if hasattr(self, "render_proc") and self.render_proc is not None: + # Unregister the standard pinned_tensors pool page-locks + if hasattr(self, "pinned_tensors") and self.pinned_tensors: + for tensor in list(self.pinned_tensors): try: - join_duration = 0.0 - if self.render_proc.is_alive(): - print( - "\033[94m[STAGE 2/2] Main thread blocking. Synchronizing hard drive file headers...\033[0m", - flush=True, - ) - t_join_start = time.perf_counter() - self.render_proc.join( - timeout=15.0 - ) # Safe timeout lets video containers finalize cleanly - join_duration = time.perf_counter() - t_join_start - else: - print( - "\033[94m[STAGE 2/2] Main thread clear...\033[0m", - flush=True, - ) + if torch.is_tensor(tensor): + cv2.cuda.unregisterPageLocked(tensor.numpy()) + except cv2.error: + pass + except Exception: + pass - if self.render_proc.is_alive(): - print( - "\n\033[91m[CRITICAL STALL] Render worker process hung on disk write! Forcing termination...\033[0m", - flush=True, - ) - self.render_proc.terminate() - self.render_proc.join() - else: - print( - f"\033[92m[FINAL] Video compilation finished cleanly! Hard drive commit took {join_duration:.2f} seconds.\033[0m", - flush=True, - ) + # Unregister any standalone page-locked matrices + if hasattr(self, "pinned_matrices") and self.pinned_matrices: + for active_mat in list(self.pinned_matrices): + if getattr(self, "device_input", "cpu") == "cuda": + try: + # Wrap explicitly to catch the native OpenCV -217 API Exception! + cv2.cuda.unregisterPageLocked(active_mat) + except cv2.error: + # Catch the pointer registry mismatch safely without breaking the stop() execution stream + pass + except Exception: + pass + + # FORCE PYTORCH C++ ALLOCATOR TO DISSOLVE THE HARDWARE BOUNDARIES + if torch.cuda.is_available(): + torch.cuda.synchronize() + torch.cuda.empty_cache() - # self.render_proc.close() - except Exception as proc_err: - print( - f"\033[91m[TEARDOWN ERROR] Failed closing background process container: {proc_err}\033[0m", - flush=True, - ) - setattr(self, "render_proc", None) + def unregister_pinned_cuda_data(self): + """ + Safely unregisters OpenCV page-locked host memory from the CUDA driver + before the underlying arrays are released. + """ + if getattr(self, "device_input", "cpu") != "cuda": + return - render_proc_handle = getattr(self, "render_proc", None) - if render_proc_handle is not None: - try: - # 1. Check if it is a Process vs Thread - if hasattr(render_proc_handle, "terminate"): - # Production/Multiprocessing fallback path - if render_proc_handle.is_alive(): - render_proc_handle.terminate() - render_proc_handle.join() - render_proc_handle.close() - else: - # Thread-Safe Path: Standard background threading handles - # do not require manual termination or descriptor closure hooks. - if render_proc_handle.is_alive(): - render_proc_handle.join(timeout=0.2) - - print( - "\033[92m[SUCCESS] Background rendering thread container released cleanly.\033[0m", - flush=True, - ) - except Exception as e: - print( - f"[TEARDOWN WARN] Safely ignoring lingering thread reference handles: {e}", - flush=True, - ) - finally: - setattr(self, "render_proc", None) + if hasattr(self, "pinned_matrices") and self.pinned_matrices: + for active_mat in list(self.pinned_matrices): + if active_mat is not None: + try: + cv2.cuda.unregisterPageLocked(active_mat) + except Exception: + pass + + if hasattr(self, "pinned_tensors") and self.pinned_tensors: + for tensor in list(self.pinned_tensors): + if tensor is not None and torch.is_tensor(tensor): + try: + cv2.cuda.unregisterPageLocked(tensor.numpy()) + except Exception: + pass + + # Force CUDA driver to finalize unpinning + if torch.cuda.is_available(): + torch.cuda.synchronize() + torch.cuda.empty_cache() + if hasattr(torch.cuda, "ipc_collect"): + torch.cuda.ipc_collect() + + def clear_buffer_pools(self, buffer_pools): + for buffer_pool in buffer_pools: + val = getattr(self, buffer_pool, None) + if val is None: + continue - # 4. FOURTH: Clean up remaining pipeline executors and queues safely - if hasattr(self, "render_queue") and self.render_queue is not None: + setattr(self, buffer_pool, None) + for i in range(len(val)): + val[i] = None + if hasattr(val, "clear"): try: - self.render_queue.close() - self.render_queue.cancel_join_thread() + val.clear() except Exception: pass - setattr(self, "render_queue", None) - - # if hasattr(self, "async_writer") and self.async_writer is not None: - # self.async_writer.release() - if hasattr(self, "executor") and self.executor is not None: + def clear_pinned_data(self): + tensor_pools = ["ai_pinned_tensors", "pinned_tensors"] + for pool_attr in tensor_pools: + pool = getattr(self, pool_attr, None) + if pool: + for tensor in list(pool): + try: + if torch.is_tensor(tensor): + # Truncate internal storage mapping layer immediately + tensor.data = torch.empty(0, device="cpu") + except Exception: + pass try: - self.executor.shutdown(wait=True) + pool.clear() except Exception: pass - setattr(self, "executor", None) - self.status = "DONE" - self._is_stopped = True - print( - "[STOPPING] Teardown complete. Releasing session cleanly.\n", - flush=True, - ) + # 7. UNPIN HARDWARE MATRICES (From initialize_variables) + if hasattr(self, "pinned_matrices") and self.pinned_matrices: + try: + self.pinned_matrices.clear() + except Exception: + pass + + def clear_shared_memory_list(self, shm_names: list): + """ + Cleans up and unlinks shared memory collections, supporting both + direct attributes ("shms") and nested attributes ("reader.shms"). + """ + for shm_path in shm_names: + curr_obj = self + for attr in shm_path.split("."): + curr_obj = getattr(curr_obj, attr, None) + if curr_obj is None: + break + + val = curr_obj + if not val: + continue + + release_shared_memory(list(val)) + # for shm in list(val): + # if shm is not None: + # try: + # # Release buffer view if open + # if hasattr(shm, "buf") and shm.buf is not None: + # shm.buf.release() + # except Exception: + # pass + + # try: + # shm.close() + # except Exception: + # pass + + # try: + # shm.unlink() + # except (FileNotFoundError, AttributeError, OSError): + # pass + + # # Clear the container list/collection in-place + # if hasattr(val, "clear"): + # try: + # val.clear() + # except Exception: + # pass + + def clean_up_reader(self): + """Halts the background prefetch staging worker completely before draining pipeline queues.""" + if hasattr(self, "reader") and self.reader is not None: + try: + # 1. IMMEDIATE HALT: Force the background loop condition to fail instantly + self.reader.stopped = True + self.prefetch_active = False + self.active = False + + # 2. Join the prefetch thread gracefully so it finishes its current read and dies + if hasattr(self, "prefetch_threads") and self.prefetch_threads: + for th in self.prefetch_threads: + if th.is_alive(): + th.join(timeout=0.2) + self.prefetch_threads.clear() + + # if hasattr(self.reader, "print_breakdown"): + # self.reader.print_breakdown() + + # 3. Safe, deadlock-free queue drain loop (Now guaranteed to exit cleanly) + drain_timeout_start = time.perf_counter() + while not self.prefetch_queue.empty(): + try: + self.prefetch_queue.get_nowait() + self.prefetch_queue.task_done() + except Exception: + break + # Hard escape hatch safety guard to prevent hanging if threads ghost + if time.perf_counter() - drain_timeout_start > 0.5: + break - def model_warmup(self, H=640, W=640): - H, W = int(H), int(W) - # Move the dummy input creation inside a no_grad block - with torch.no_grad(): - print(f"Starting warmup for {self.name}...", flush=True) - dummy_input = torch.zeros((1, 3, H, W)).to(self.device_input) - - # Perform iterations directly on the main thread - for i in range(5): - _ = self.run_model( - dummy_input, - imgsz=(H, W), - batch=1, - device_input=self.device_input, - stream=STREAM_ARG, + # 4. Trigger standard standalone hardware unpinning routines + # if hasattr(self.reader, "release_hardware_pins"): + # self.reader.release_hardware_pins() + + self.reader.stop() + + except Exception as e: + main_app_logger.debug( + f"Reader object isolation step encountered a soft error: {e}" ) - if i == 0 and hasattr(self.model, "predictor") and self.model.predictor: - self.cached_predictor = self.model.predictor + finally: + self.reader = None - # Force GPU to finish before returning - if self.device_input == "cuda": - torch.cuda.synchronize() + def unlink_shared_memory(self, all_shm_keys): + for key in all_shm_keys: + val = getattr(self, key, None) + if val is None: + continue + for shm in list(val): + if shm is not None: + try: + # Drop direct memoryview trackers instantly + if hasattr(shm, "buf") and shm.buf is not None: + try: + shm.buf.release() + except Exception: + pass + + # Invalidate private mmap structures to drop pytest stack frame caches + if hasattr(shm, "_mmap") and shm._mmap is not None: + try: + shm._mmap = None + except Exception: + pass + + # try: + # shm.__class__.__del__ = lambda self: None + # except Exception: + # pass + + # # Unlink text descriptors out of the core tracker process + # shm_descriptor = shm._name if shm._name.startswith("/") else f"/{shm._name}" + # try: + # unregister(shm_descriptor, "shared_memory") + # except Exception: + # pass + + shm.close() + shm.unlink() + except Exception: + pass + try: + val.clear() + except Exception: + pass + + def stop_sync_manager(self): + """Safely shuts down the background Sync Base Manager process daemon.""" + # if hasattr(self, "shared_details") and self.shared_details is not None: + # try: self.shared_details.clear() + # except Exception: pass + + if hasattr(self, "manager") and self.manager is not None: + try: + if hasattr(self.manager, "_allocated"): + for memory_block in list(self.manager._allocated): + try: + if ( + hasattr(memory_block, "buf") + and memory_block.buf is not None + ): + memory_block.buf.release() + memory_block.close() + memory_block.unlink() + except Exception: + pass + try: + self.manager._allocated.clear() + except Exception: + pass + self.manager.shutdown() + + # Added + if ( + hasattr(self.manager, "_process") + and self.manager._process is not None + ): + proc = self.manager._process + if proc.is_alive(): + proc.join(timeout=0.2) + if proc.is_alive(): + proc.terminate() + proc.join() - # Pin a lightweight tensor to prevent downstream empty_cache() calls - # from destroying the compiled model weight layouts in memory - self.__persistent_vram_lock = torch.zeros((1,), device=self.device_input) + except Exception: + pass + setattr(self, "manager", None) + + def purge_attributes(self): + # ─── FORCE LOW-LEVEL OPENVINO C++ HARDWARE PURGE ─── + if hasattr(self, "model") and self.model is not None: + try: + # If your backend utilizes an OpenVINO core orchestrator: + model_wrapper = self.model + + # Check for common OpenVINO runtime handle names inside your core class + for attr_name in ["core", "_core", "ov_core", "runtime"]: + if hasattr(model_wrapper, attr_name): + ov_core = getattr(model_wrapper, attr_name) + if ov_core is not None: + # 1. Force OpenVINO to clear internal cached compiled models and models' graphs + if hasattr(ov_core, "get_property"): + try: + # Tells OpenVINO to drop its physical memory caching metrics pools + ov_core.set_property({}, {}) + except Exception: + pass + + # 2. Trigger explicit Python C++ boundary deconstruction bindings + if hasattr(ov_core, "__del__"): + ov_core.__del__() + + setattr(model_wrapper, attr_name, None) + except Exception: + pass + + # Un-bind dynamic instance methods to break Pytest's reference hold + for dynamic_method in ["run_realtime_inference", "pipeline_fn"]: + if hasattr(self, dynamic_method): + try: + # Wiping out the bound method object instantly frees the frame loops + # setattr(self, dynamic_method, None) + delattr(self, dynamic_method) + except Exception: + pass + + for cls_attr in ["d2h_buffers", "d2h_numpys", "d2h_selector"]: # "pipeline_fn", + if hasattr(self, cls_attr): + try: + setattr(self, cls_attr, None) + except AttributeError: + pass + + # Now it is structurally safe to purge attributes without causing cross-thread collisions + keys_to_purge = [ + "__persistent_vram_lock", + "_DeviceBaseHandler__persistent_vram_lock", # Wipes out the private lock tensor safely + "ai_gpu_staging", + "ai_pinned_tensors", + "ai_shm_names", # Clear names list references + "ai_shms", # Clear handler specific memory arrays + # "all_preds", + # "all_targets", + "bgs_stream", + "config", # Force config destruction + "evaluator", + "executor", + "frame_buffer_pool", + "gpu_buffer_pool", + "gpu_display_frame", + "gpu_encoder_8k_buf", + "gpu_float_staging", + "host_buffer_pool", + "inference_stream", + "model", + "pinned_downloaded_frame_np", + "pinned_downloaded_resizedframe_np", + "pinned_matrices", # Clear handler registration matrix list + "pinned_tensors", # Clear backend tensor mappings + "process_thread", + "raw_input", + "reader", + "scales_tensor", + "shms", # Clear handler specific memory arrays + "static_gpu_360p", # Added to secure structural bounds + "static_gpu_byte_bchw", # Added to secure structural bounds + # "static_host_canvases", + # "io_executor", + ] + for key in keys_to_purge: + if hasattr(self, key): + try: + delattr(self, key) + except AttributeError: + pass - print(f"Warmup complete for {self.name}", flush=True) + gc.collect() + # HELPER FUNCTIONS -------------------------------------------- def get_executor_backlog(self): """Returns the number of tasks currently waiting in the thread pool queue.""" # access the internal queue of the executor @@ -1984,7 +3259,7 @@ def check_disk_usage(self, path, min_gb=0.5): free_gb = free / (2**30) return free_gb > min_gb except Exception as e: - print(f"[EXCEPTION] Disk check error: {e}") + main_app_logger.info(f"[EXCEPTION] Disk check error: {e}") return False # Gets frame W and H details @@ -2005,20 +3280,11 @@ def get_frameWH(self): self.width = new_sizeWH[0] self.height = new_sizeWH[1] - # Configure scaling for 8K-to-Model coordinate mapping - self.resize_h, self.resize_w = [self.config.MODEL_H, self.config.MODEL_W] - self.scale_x = self.frame_width / self.config.MODEL_W - self.scale_y = self.frame_height / self.config.MODEL_H - - def update_frame(self, stat_start_time): - if self.device_input == "cuda": - torch.cuda.synchronize() - - self.stat_frame_count += 1 - self.elapsed_display_time += time.perf_counter() - stat_start_time - # if elapsed > 0.5: - self.stat_fps = round(self.stat_frame_count / self.elapsed_display_time, 1) - + # Configure scaling for 8K-to-Model coordinate mapping + self.resize_h, self.resize_w = [self.config.MODEL_H, self.config.MODEL_W] + self.scale_x = self.frame_width / self.config.MODEL_W + self.scale_y = self.frame_height / self.config.MODEL_H + def is_processing(self): """Returns True if any part of the pipeline is still active.""" if not self.reader.stopped: @@ -2034,110 +3300,24 @@ def is_processing(self): q_size = self.write_queue.qsize() if self.process_thread is not None: - print( + main_app_logger.info( f"[STATUS] Writer: {self.write_count}/{self.frame_count_target} | Q: {q_size} | Inf: {'Alive' if self.process_thread.is_alive() else 'Dead'}", end="\r", - flush=True, ) else: - print( + main_app_logger.info( f"[STATUS] Writer: {self.write_count}/{self.frame_count_target} | Q: {q_size}", end="\r", - flush=True, ) if not self.write_queue.empty(): return True if self.write_count < self.frame_count_target: # q_size = self.write_queue.qsize() - # print(f"[DRAIN] Writer: {self.write_count}/{self.frame_count} | Queue: {q_size}", end="\r", flush=True) + # main_app_logger.info(f"[DRAIN] Writer: {self.write_count}/{self.frame_count} | Queue: {q_size}", end="\r") return True return False - def run_model( - self, - frame, - imgsz=(BASE_PIPELINE_CONFIG.MODEL_H, BASE_PIPELINE_CONFIG.MODEL_W), - batch=1, - device_input="cuda", - stream=False, - ): - # --- DEBUG VERIFICATION --- - # if torch.is_tensor(frame): - # # We want to see [N, 3, 640, 640] where N > 1 - # print(f"[DEBUG] Tensor Input Shape: {frame.shape}") - # elif isinstance(frame, list): - # print(f"[DEBUG] List Input Length: {len(frame)}") - - # print(f"[DEBUG] Stream Mode: {stream} | Requested Batch: {batch}") - # --------------------------- - if isinstance(frame, torch.Tensor): - # Ensure on the right device - frame = frame.to(device_input) - - # Make sure input is multiple of 32 - h, w = frame.shape[-2:] - pad_h = (32 - h % 32) % 32 - pad_w = (32 - w % 32) % 32 - - if pad_h > 0 or pad_w > 0: - # F.pad for 4D tensor (B, C, H, W) uses (left, right, top, bottom) - frame = F.pad(frame, (0, pad_w, 0, pad_h), value=0) - - # with torch.inference_mode(): - # torch.set_num_threads(1) - # results = self.model.predict( - # frame, - # imgsz=imgsz, - # batch=batch, - # device=device_input, - # verbose=False, - # stream=stream, - # conf=self.config.DETECTION_THRESHOLD, - # max_det=self.config.MAX_DETECTIONS, - # rect=(batch == 1), # False, # - # ) - # return results - with torch.inference_mode(): - if device_input == "cpu": - # --- SAFE HIGH-SPEED FRAMEWORK INGESTION GATE --- - # If input is an NCHW PyTorch tensor or transposed array view, - # decode it back into a standard list of un-transposed [H, W, C] uint8 - # image frames before handing it over to the predictor engine. - if isinstance(frame, torch.Tensor): - # Convert NCHW tensor back to standard NHWC layout standard - np_frames = frame.detach().cpu().permute(0, 2, 3, 1).numpy() - # Rescale back to uint8 pixel range - np_frames = (np_frames * 255.0).astype(np.uint8) - # Unpack the batch array dimensions into a standard list of standalone images - # ingestion_source = [np.ascontiguousarray(img) for img in np_frames] - np_frames_aligned = np.copy(np_frames, order="C") - ingestion_source = list(np_frames_aligned) - else: - ingestion_source = frame - else: - ingestion_source = frame - - if getattr(self, "cached_predictor", None) is not None: - results = self.cached_predictor(frame) - else: - # Execute prediction using the safe public API path. - # Passing raw standard [H, W, C] frame matrices handles all sigmoid bounding box - # decoders and confidence multipliers natively, correcting the top-left clumping bug. - results = self.model.predict( - ingestion_source, - imgsz=imgsz, - batch=batch, - device=device_input, - verbose=False, - stream=stream, - conf=self.config.DETECTION_THRESHOLD, - max_det=self.config.MAX_DETECTIONS, - rect=(batch == 1), - profile=False, # Disable interior torch.cuda.synchronize() gates completely! - ) - return results - def _check_shm_safety(self, threshold_percent=90): """ Scans /dev/shm and deletes the oldest .mp4 files if usage exceeds threshold. @@ -2148,7 +3328,7 @@ def _check_shm_safety(self, threshold_percent=90): percent_used = (usage.used / usage.total) * 100 if percent_used > threshold_percent: - print( + main_app_logger.info( f" [CRITICAL] /dev/shm usage at {percent_used:.1f}%. Purging old clips..." ) @@ -2163,1393 +3343,315 @@ def _check_shm_safety(self, threshold_percent=90): # if str(clip) == self.tmp_file: # continue - clip.unlink() - print(f"[PURGE] Deleted {clip.name} to free RAM.") - - # Re-check usage after each deletion - usage = shutil.disk_usage("/dev/shm") - if (usage.used / usage.total) * 100 < 70: - break - except Exception as e: - print(f"[EXCEPTION] Could not purge {clip}: {e}") - - def run_realtime_inference(self, sf_enabled): - """Producer: Maintains the target FPS and updates clip IDs.""" - # Calculate a dynamic limit: tolerate 0.5 seconds of lag. - # If target_fps is 15, the limit is 7. If target_fps is 30, the limit is 15. - self.dynamic_limit = max(2, int(0.5 * self.target_fps)) - last_frame_time = time.perf_counter() - while self.active: - try: - # FRAME RETRIEVAL --------------------------------------------- - try: - ret, frame_8k, frame_num = self.reader.read() - if not ret or frame_8k is None: - print( - "[CLIPPER-TARGET] End of video file source detected. Initiating graceful shutdown.", - flush=True, - ) - # if self.reader is None or ( - # hasattr(self.reader, "stopped") and self.reader.stopped - # ): - if self.device_input == "cuda": - torch.cuda.synchronize() - - if hasattr(self, "executor") and self.executor is not None: - while self.get_executor_backlog() > 0: - time.sleep(0.01) - - # Instead of only processing the active clip_id, loop through every clip - # listed in all_metadata to ensure nothing is dropped at shutdown. - global all_metadata, clip_completion_tracker - active_tracked_keys = list(all_metadata.keys()) - - for target_clip_key in active_tracked_keys: - # Reconstruct the explicit path structure for each target clip segment - target_clip_filename = ( - f"{self.config.SHARED_OUTPUT}/{target_clip_key}" - ) - - if target_clip_key not in clip_completion_tracker: - clip_completion_tracker[target_clip_key] = { - "video": False, - "meta": False, - "start_time": time.time(), - } - - # Mark tracking convergence fields to True concurrently - clip_completion_tracker[target_clip_key]["video"] = True - clip_completion_tracker[target_clip_key]["meta"] = True - - print( - f" [CLIPPER-TARGET] Finalizing terminal sync barrier for: {target_clip_key}", - flush=True, - ) - - # Safely delegate the queue pushing directly to your validation handler - self._evaluate_barrier_and_dispatch( - target_clip_key, - target_clip_filename, - self.resize_w, - self.resize_h, - ) - - # clip_id = (self.frame_count - 1) // self.max_frames_per_clip - # clip_filename = f"{self.config.SHARED_OUTPUT}/{self.name}_{clip_id:03d}.mp4" - # clip_key = Path(clip_filename).name - # global clip_completion_tracker - # if "clip_completion_tracker" in globals() or "clip_completion_tracker" in locals(): - # if clip_key not in clip_completion_tracker: - # clip_completion_tracker[clip_key] = { - # "video": False, - # "meta": False, - # "start_time": time.time(), - # } - # # Force both verification boundaries to True concurrently - # clip_completion_tracker[clip_key]["video"] = True - # clip_completion_tracker[clip_key]["meta"] = True - - # print( - # f" [BARRIER-SEAL] All metadata extracted for {clip_key}. Evaluating convergence...", - # flush=True, - # ) - # self._evaluate_barrier_and_dispatch( - # clip_key, - # clip_filename, - # self.resize_w, - # self.resize_h, - # ) - - # global send_metadata_queue, all_metadata - # if clip_key in all_metadata: - # # Signal to process metadata for previous cli - # if ( - # "send_metadata_queue" in globals() - # or "send_metadata_queue" in locals() - # ): - # try: - # send_metadata_queue.put( - # ( - # clip_filename, - # self.resize_w, - # self.resize_h, - # ) - # ) - # except Exception as queue_err: - # print( - # f"[CLIPPER-WARN] Metadata queue push skipped or unallocated: {queue_err}", - # flush=True, - # ) - - self.active = False - break - # continue - # if torch.is_tensor(device_frame): - # # Tell the main thread's stream to wait for the upload stream's completion - # torch.cuda.current_stream().wait_stream(self.reader.upload_stream) - except queue.Empty: - if getattr(self.reader, "reconnect_failed", False): - self.active = False - break - time.sleep(0.002) - continue - except Exception: - traceback.print_exc() - - except queue.Empty: - if getattr(self.reader, "reconnect_failed", False): - self.active = False - break - time.sleep(0.002) - continue - - calculated_clip_id = (frame_num - 1) // self.max_frames_per_clip - # self.clip_id = calculated_clip_id - # print(f"frame_num: {frame_num} calculated_clip_id: {calculated_clip_id}", flush=True) - stat_start_time = time.perf_counter() # timing to display detection - self.frame_count += 1 - self.frame_count_target += 1 - self.frame_in_clip_count += 1 - # is_target_frame = True # float(frame_num) >= self.next_process_idx - - # # Create a dedicated memory surface immediately on the Producer line. - # # This isolates the VRAM grid before the reader can overwrite it. - # if self.device_input == "cuda" and torch.is_tensor(device_frame): - # isolated_device_frame = device_frame.clone().contiguous() - # elif isinstance(device_frame, np.ndarray): - # # isolated_device_frame = device_frame.copy() - # # Zero-copy memory map assignment directly into the dedicated ingestion slot - # self.ingest_ring[self.ingest_ring_idx][:] = device_frame - # isolated_device_frame = self.ingest_ring[self.ingest_ring_idx] - - # # Safely step to the next slot in the ring buffer - # self.ingest_ring_idx = ( - # self.ingest_ring_idx + 1 - # ) % self.ingest_ring_depth - # else: - # isolated_device_frame = device_frame - - # Determine if this frame should be AI or Raw based on backlog - # But ALWAYS submit to the executor to maintain frame order. - backlog = self.get_executor_backlog() - - while backlog > 4 and self.active: - time.sleep(0.005) - backlog = self.get_executor_backlog() - - def wrapped_fn(*args): - if self.device_input == "cuda": - # Ensure the worker thread switches to your targeted pipeline execution timeline - # torch.cuda.set_stream(self.inference_stream) - # dev_frame, f_num, target_flag, stat_start_time = args - dev_frame, f_num, start_time, clip_id = args - # isolated_device_frame = ( - # dev_frame.clone() - # if torch.is_tensor(dev_frame) - # else dev_frame.copy() - # ) - # isolated_device_frame = dev_frame - - with torch.cuda.stream(self.inference_stream): - self.pipeline_fn(dev_frame, f_num, start_time, clip_id) - - # Force a non-blocking device barrier to ensure operations have fully hit VRAM - # before releasing the thread context - # self.inference_stream.synchronize() - # Force the device to catch up before dropping thread scope references - # self.inference_stream.synchronize() - - # Explicitly drop the variable frames from the localized stack frame - # if "isolated_device_frame" in locals(): - # del isolated_device_frame - # if "dev_frame" in locals(): - # del dev_frame - else: - # dev_frame, f_num, target_flag, stat_start_time = args - dev_frame, f_num, start_time, clip_id = args - # isolated_device_frame = ( - # dev_frame.clone() - # if torch.is_tensor(dev_frame) - # else dev_frame.copy() - # ) - # isolated_device_frame = dev_frame - self.pipeline_fn(dev_frame, f_num, start_time, clip_id) - - # if is_target_frame: # timing to display detection - # self.next_process_idx += self.step_size - # Handoff to AI and Writer - # if self.active: - # Clone the tensor buffer immediately on the producer thread - # to prevent upstream overwrite races by the next reader iteration. - # isolated_device_frame = device_frame.clone() if torch.is_tensor(device_frame) else device_frame.copy() - self.executor.submit( - # pipeline_fn, - wrapped_fn, - frame_8k, - self.frame_count, - # is_target_frame, - stat_start_time, - calculated_clip_id, - ) - # else: - # # Process background execution context for skipped frames - # self.pipeline_fn(device_frame, frame_num, is_target_frame) - - # if self.device_input == "cuda": - # torch.cuda.synchronize() - - # --- PRECISE CLOCK SYNC --- - # This prevents the producer from "lapping" the consumer - # and building that jumpy backlog in the first place. - elapsed = time.perf_counter() - last_frame_time - if elapsed < self.frame_interval: - # time.sleep(self.frame_interval - elapsed) - # Subtract a small epsilon (0.001) for OS scheduling overhead - sleep_duration = max(0, self.frame_interval - elapsed - 0.0015) - if sleep_duration > 0.001: - time.sleep(sleep_duration) - last_frame_time = time.perf_counter() - - self.update_frame(stat_start_time) - self.last_heartbeat = time.time() - - self.stop() - - def filter_contained_boxes(self, boxes, overlap_thresh=0.9): - """ - Vectorized IoA filter: Removes boxes if most of their area is inside another box. - """ - if boxes.shape[0] <= 1: - return boxes - - # Calculate Areas - w = (boxes[:, 2] - boxes[:, 0]).clamp(min=0) - h = (boxes[:, 3] - boxes[:, 1]).clamp(min=0) - areas = w * h - valid_mask = ( - (w < (self.resize_w * self.config.ROI_MAX_RELATIVE_SIZE_RATIO)) - & (h < (self.resize_h * self.config.ROI_MAX_RELATIVE_SIZE_RATIO)) - & (w > 0) - & (h > 0) - & (areas >= self.min_contour_area) - ) - boxes = boxes[valid_mask] - areas = areas[valid_mask] - - # Compute all-to-all Intersections [N, N] - lt = torch.max(boxes.unsqueeze(1)[:, :, :2], boxes.unsqueeze(0)[:, :, :2]) - rb = torch.min(boxes.unsqueeze(1)[:, :, 2:], boxes.unsqueeze(0)[:, :, 2:]) - wh = (rb - lt).clamp(min=0) - inter_area = wh[:, :, 0] * wh[:, :, 1] - - # Intersection over Area (How much of Box A is in Box B) - # ioa[i, j] = (Box i ∩ Box j) / Area(i) - ioa = inter_area / (areas.unsqueeze(1) + 1e-6) - - # Filter logic: - # Only remove if Box J is LARGER than Box I and overlap is high - diag = torch.eye(boxes.shape[0], device=boxes.device, dtype=torch.bool) - larger_mask = areas.unsqueeze(0) >= areas.unsqueeze(1) - - to_remove = (ioa > overlap_thresh) & larger_mask & ~diag - return boxes[~to_remove.any(dim=1)] - - def get_gpu_rois_by_area(self, mask, max_candidates=100): - # Extract true spatial constraints straight from the active mask object footprint - if torch.is_tensor(mask): - mask_h, mask_w = mask.shape[-2:] - elif isinstance(mask, cv2.cuda.GpuMat): - # cv2.cuda.GpuMat.size() returns a tuple of (width, height) standard formatting - mask_w, mask_h = mask.size() - else: - mask_h, mask_w = mask.shape[:2] - - # This prevents find_contours_gpu_equivalent from mutating the mask variables used by other threads. - if isinstance(mask, cv2.cuda.GpuMat): - # .clone() allocates a new C++ memory surface and forces full continuity - isolated_kernel_mask = mask.clone() - elif torch.is_tensor(mask): - isolated_kernel_mask = mask.clone().contiguous() - else: - isolated_kernel_mask = mask.copy() - - # Get raw boxes from mask (Direct VRAM bridge) - boxes_gpu = find_contours_gpu_equivalent( - isolated_kernel_mask, - stream=self.bgs_stream, - limit_640=640 * 1.5, - ) - - # --- FIX: ELIMINATE STREAM RACE --- - if boxes_gpu is None or len(boxes_gpu) == 0: - return torch.empty((0, 4), device=self.device_input) - - # Wrap existing GPU memory as a float tensor (Zero Copy) - # raw_boxes = torch.as_tensor(boxes_gpu, device=self.device_input).float() - if self.device_input == "cuda": - # Wrap the native device handle and IMMEDIATELY append .clone() - # This allocates a brand new, physically isolated VRAM block to secure the bounding boxes - raw_boxes = ( - torch.as_tensor(boxes_gpu, device=self.device_input).float().clone() - ) - else: - raw_boxes = torch.as_tensor(boxes_gpu, device=self.device_input).float() - - if raw_boxes is not None and len(raw_boxes) > 0: - PADDING_PX = 5 - # Assumes merged_boxes_tensor is a 2D tensor of shape [N, 4] containing [x1, y1, x2, y2] - # Create a matching subtraction/addition padding mask tensor - # Subtract from x1, y1 (indices 0, 1) and add to x2, y2 (indices 2, 3) - padding_mask = torch.tensor( - [-PADDING_PX, -PADDING_PX, PADDING_PX, PADDING_PX], - device=raw_boxes.device, - dtype=raw_boxes.dtype, - ) - - # Apply padding to all bounding boxes concurrently via broad-vector math - padded_tensor = raw_boxes + padding_mask - - # Guard rails: Clamp boundaries in-place to stay safely within the 8K master frame - # Indices 0 and 2 are X coordinates bounded by frame width; 1 and 3 are Y coordinates bounded by frame height - padded_tensor[:, 0].clamp_(min=0, max=self.resize_w) - padded_tensor[:, 1].clamp_(min=0, max=self.resize_h) - padded_tensor[:, 2].clamp_(min=0, max=self.resize_w) - padded_tensor[:, 3].clamp_(min=0, max=self.resize_h) - - # Re-assign back to your pipeline's tracking variable - raw_boxes = padded_tensor - - # Vectorized Pre-Filter (Removes noise blobs before merging) - w = raw_boxes[:, 2] - raw_boxes[:, 0] - h = raw_boxes[:, 3] - raw_boxes[:, 1] - mask_filter = (w * h > self.min_contour_area) & (w < mask_w) & (h < mask_h) - raw_boxes = raw_boxes[mask_filter] - - # Prevents N^2 distance matrix from exploding during high noise - if raw_boxes.shape[0] > max_candidates: - # Prioritize the largest blobs (most likely to be drones) - areas = (raw_boxes[:, 2] - raw_boxes[:, 0]) * ( - raw_boxes[:, 3] - raw_boxes[:, 1] - ) - _, indices = torch.topk(areas, max_candidates) - raw_boxes = raw_boxes[indices] - return raw_boxes - - def get_cpu_rois(self, frame, frameNum, mask): - contours, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) - raw_boxes_xywh = [ - list(cv2.boundingRect(c)) - for c in contours - if cv2.contourArea(c) > self.min_contour_area - ] - - raw_boxes = [ - [ - max(0, int(x) - PADDING_PX), - max(0, int(y) - PADDING_PX), - min(self.resize_w, int(x + w) + PADDING_PX), - min(self.resize_h, int(y + h) + PADDING_PX), - ] - for x, y, w, h in raw_boxes_xywh - ] - # raw_boxes = [[x, y, x + w, y + h] for x, y, w, h in raw_boxes_xywh] - - if len(raw_boxes) < 1: - return torch.empty((0, 4), device=self.device_input) - - if len(raw_boxes) > 1: - limit_640 = (640 * 2.0) / self.scale_x - raw_boxes = merge_boxes_cpu( - raw_boxes, gap_limit=self.dist_thresh_640, size_limit=limit_640 - ) - - raw_boxes_640p = torch.tensor(raw_boxes, device=self.device_input).float() - - clean_640p = self.filter_contained_boxes( - raw_boxes_640p, overlap_thresh=self.config.ROI_CONTAINMENT_THRESH - ) - - if clean_640p.shape[0] < 1: - return torch.empty((0, 4), device=self.device_input) - - # Scale to 8K space - return clean_640p * self.scales_tensor - - # Project clusters back to 8K and build centered YOLO windows - # final_8k_rois = scale_clusters_to_8k( - # merged_640, frame_w=self.frame_width, frame_h=self.frame_height - # ) - # return torch.tensor(final_8k_rois, device=self.device_input).float() - - def get_detections( - self, frame, frame_id, thickness=2, device_input="cuda", merged=None - ): - """ - Processes full-frame 8K targets or aggregates smart-filtered bounding-box regions - into uniform tensor arrays for batched inference execution. - """ - metadata = {} - is_cuda = device_input == "cuda" - num_objs = 0 - - # ===================================================================== - # 🚀 PATH 1: FULL RESOLUTION TRACK (sf_enabled = False) - # ===================================================================== - if merged is None: - with torch.inference_mode(): - if isinstance(frame, torch.Tensor): - # # Transpose to channel-first shape format [1, C, H, W] if layout is trailing - # if frame.ndim == 3 and frame.shape[-1] == 3: - # frame = frame.permute(2, 0, 1).unsqueeze(0).clone().contiguous() - # elif frame.ndim == 3: - # frame = frame.unsqueeze(0).clone().contiguous() - - # # Create a memory-contiguous layout view and cast cleanly inside VRAM - # frame = frame.contiguous() - - # Transpose to channel-first shape format [1, C, H, W] if layout is trailing - if frame.ndim == 3 and frame.shape[-1] == 3: - # CRITICAL BUG FIX: Appending .clone().contiguous() creates a brand new, - # physically isolated tensor memory block. This breaks the link to - # temporary buffers, preventing the VS Code debugger from crashing on evaluation. - frame = frame.permute(2, 0, 1).unsqueeze(0).clone().contiguous() - elif frame.ndim == 3: - frame = frame.unsqueeze(0).clone().contiguous() - else: - # Ensure any multi-dimensional batch views are physically packed - frame = frame.clone().contiguous() - - if frame.dtype == torch.uint8: - frame = frame.to( - device_input, dtype=torch.float16, non_blocking=True - ) - frame.mul_(1.0 / 255.0) # Safe in-place float normalization - else: - frame = frame.to(device_input, non_blocking=True) - - img_size = frame.shape[-2:] - else: - # CPU / Host NumPy NDArray fallback - img_size = frame.shape[:2] - - # img_size = (self.resize_h, self.resize_w) - H, W = img_size - scale_display_x = self.resize_w / W # 640 / 8192 - scale_display_y = self.resize_h / H # 640 / 4608 - results = self.run_model( - frame, - imgsz=img_size, - batch=1, - device_input=device_input, - stream=STREAM_ARG, - ) - - # Extract full resolution detections - if results and len(results) > 0: - boxes = results[0].boxes - if boxes is not None: - for idx, box in enumerate(boxes): - # coords = box.xywh[0].cpu().tolist() # [x_center, y_center, width, height] - # cls_id = int(box.cls[0].cpu().item()) - # conf = float(box.conf[0].cpu().item()) - coords = ( - box.xywh.cpu().squeeze().tolist() - ) # Converts [x_center, y_center, w, h] safely - cls_id = int(box.cls.cpu().item()) - class_name = self.label_source[cls_id] - confidence = float(box.conf.cpu().item()) - - # Guard against un-squeezed structural lists - if isinstance(coords[0], list): - coords = coords[0] - - # Convert center bounds coordinates back to upper-left origin layout standard - # and scale to 640x640 - disp_x = (coords[0] - (coords[2] / 2.0)) * scale_display_x - disp_y = (coords[1] - (coords[3] / 2.0)) * scale_display_y - disp_w = coords[2] * scale_display_x - disp_h = coords[3] * scale_display_y - - if disp_w > 2 and disp_h > 2: - # Resized - object_res = [ - int(disp_x), # int(abs_x1 * scale_x), - int(disp_y), # int(abs_y1 * scale_y), - int(disp_h), # int(height * scale_y), - int(disp_w), # int(width * scale_x), - class_name, - confidence, - int(self.resize_h), - int(self.resize_w), - ] - - obj_id = len(metadata) - num_objs += 1 - framenum_str = f"{frame_id:04d}_{obj_id:04d}" - metadata[framenum_str] = { - "frameId": int(frame_id), - "bbId": framenum_str, - "bbox": { - "x": int(object_res[0]), - "y": int(object_res[1]), - "height": int(object_res[2]), - "width": int(object_res[3]), - "object": str(object_res[4]), - "object_det": { - "confidence": float(object_res[5]), - "frameH": int(object_res[6]), - "frameW": int(object_res[7]), - }, - }, - } - - if "boxes" in locals(): - del boxes - if "results" in locals(): - del results - - del frame - return metadata, num_objs - - # ===================================================================== - # PATH 2: SMART FILTER ROIs TRACK (sf_enabled = True) -> PADDED ASPECT PRESERVING 📦 - # ===================================================================== - else: - roi_patches = [] - patch_coordinates = [] - max_batch_size = getattr(self.config, "MODEL_MAX_BATCH_SIZE", 64) - - # 1. Canvas Matrix Pre-processing Isolation - if is_cuda and isinstance(frame, torch.Tensor): - src_tensor = frame.squeeze(0) if frame.ndim == 4 else frame - if src_tensor.shape[-1] == 3: - src_tensor = src_tensor.permute(2, 0, 1) # Force [C, H, W] - src_h, src_w = src_tensor.shape[-2:] - else: - src_tensor = np.asarray(frame) - src_h, src_w = src_tensor.shape[:2] - - # Target layout constraints - th, tw = self.resize_h, self.resize_w - - # 2. Extract, Aspect-Scale, and Pad Regions of Interest (ROIs) - for box in merged: - x1, y1, x2, y2 = map(int, box) - x1, y1 = max(0, x1), max(0, y1) - x2, y2 = min(src_w, x2), min(src_h, y2) - - box_w, box_h = x2 - x1, y2 - y1 - if box_w < 8 or box_h < 8: - continue # Filter out invalid spatial artifacts - - if is_cuda and isinstance(src_tensor, torch.Tensor): - with torch.no_grad(): - crop = src_tensor[:, y1:y2, x1:x2] - - # Calculate aspect-preserving scale factor - scale = min(tw / box_w, th / box_h) - nw, nh = int(box_w * scale), int(box_h * scale) - nw, nh = max(1, nw), max(1, nh) - - # Dynamic scaling: downsample or upsample using clean bilinear grids - if (box_h, box_w) != (nh, nw): - crop_resized = F.interpolate( - crop.unsqueeze(0).float(), - size=(nh, nw), - mode="bilinear", - align_corners=False, - ).squeeze(0) - else: - crop_resized = crop.float() - - # Force the canvas tracking allocation to occur safely inside your active stream scope context - with torch.cuda.stream(self.inference_stream): - # Instantiate a clean, pre-allocated padded evaluation canvas context - padded_canvas = torch.zeros( - (3, th, tw), dtype=torch.float32, device=device_input - ) - - # Center the aspect-scaled crop onto the dark zero-padded mask grid - dx = (tw - nw) // 2 - dy = (th - nh) // 2 - padded_canvas[:, dy : dy + nh, dx : dx + nw] = crop_resized - - # Convert directly to half-precision to speed up pipeline passes - roi_patches.append(padded_canvas.to(torch.half)) - else: - # CPU Path: Aspect-preserving resize and padding via OpenCV - crop = src_tensor[y1:y2, x1:x2] - scale = min(tw / box_w, th / box_h) - nw, nh = max(1, int(box_w * scale)), max(1, int(box_h * scale)) - - crop_resized = cv2.resize( - crop, (nw, nh), interpolation=cv2.INTER_NEAREST - ) - - # Center-pad the array block with zeros (black) - # padded_canvas = np.zeros((th, tw, 3), dtype=np.uint8) - padded_canvas = np.empty((th, tw, 3), dtype=np.uint8) - padded_canvas.fill(0) - dx = (tw - nw) // 2 - dy = (th - nh) // 2 - padded_canvas[dy : dy + nh, dx : dx + nw] = crop_resized - roi_patches.append(padded_canvas) - - # Store the scaling shifts to map detections back to the 8K coordinate grid accurately - patch_coordinates.append((x1, y1, box_w, box_h, scale, dx, dy)) - - if not roi_patches: - return {}, 0 - - # 3. Process Patches via Multi-Cam Inference Batch Factory - results_pool = [] - for i in range(0, len(roi_patches), max_batch_size): - batch_slices = roi_patches[i : i + max_batch_size] - current_batch_len = len(batch_slices) - - if is_cuda and isinstance(batch_slices[0], torch.Tensor): - with torch.inference_mode(): - torch.cuda.set_stream(self.inference_stream) - inference_batch = torch.stack(batch_slices).to( - device_input, dtype=torch.float16, non_blocking=True - ) - inference_batch.mul_(1.0 / 255.0) # In-place GPU normalization - - batch_res = self.run_model( - inference_batch, - imgsz=(th, tw), - batch=current_batch_len, - device_input=device_input, - stream=STREAM_ARG, - ) - results_pool.extend(batch_res) - del inference_batch - else: - with torch.inference_mode(): - # np_batch = np.stack(batch_slices, dtype=np.float32) #.astype(np.float32) / 255.0 - # Pre-allocate the complete batch block surface memory up front: - th, tw = self.resize_h, self.resize_w - current_batch_len = len(batch_slices) - # np_batch = np.zeros((current_chunk_len, th, tw, 3), dtype=np.float32) - - # Stack the list of [H, W, C] patches into a 4D array [B, H, W, C] - np_batch_uint8 = np.stack(batch_slices) - - # Transpose from NHWC [B, H, W, C] to NCHW [B, C, H, W] natively in NumPy - np_batch_nchw = np.transpose(np_batch_uint8, (0, 3, 1, 2)) - - # Cast to float32 and normalize concurrently using contiguous memory layout - # np_batch_contiguous = np.ascontiguousarray(np_batch_nchw, dtype=np.float32) - # np_batch_contiguous *= (1.0 / 255.0) - - # 1. Stack the list of [H, W, C] patches into a 4D array [B, H, W, C] - np_batch_uint8 = np.stack(batch_slices) - - # 2. Transpose from NHWC [B, H, W, C] to NCHW [B, C, H, W] natively in NumPy - # np_batch_nchw = np.transpose(np_batch_uint8, (0, 3, 1, 2)) - - # # 3. Cast to float32 and normalize concurrently using an in-place pointer - # np_batch_float = np_batch_nchw.astype(np.float32) - # np_batch_float *= 1.0 / 255.0 - - # # --- CRITICAL MEMORY ALIGNMENT LOCK --- - # # Force the contiguous memory layer allocation AFTER all mathematical manipulations are complete. - # # This ensures the underlying C-memory arrays are perfectly packed and sequential, allowing - # # OpenVINO to run zero-copy pointer lookups and bypassing the 48.13ms serialization overhead. - # np_batch_aligned = np.ascontiguousarray(np_batch_float) - - # # 4. Expose the memory-aligned array directly to PyTorch as a host tensor view - # inference_batch = torch.from_numpy(np_batch_aligned).to( - # device_input - # ) - - np_batch_ready = np.ascontiguousarray(np_batch_uint8) - np_batch_nchw = np.transpose(np_batch_ready, (0, 3, 1, 2)) - np_batch_float = np_batch_nchw.astype(np.float32) - np_batch_float *= 1.0 / 255.0 - inference_batch = torch.from_numpy(np_batch_float).to( - device_input - ) - - batch_res = self.run_model( - inference_batch, - imgsz=(th, tw), - batch=current_batch_len, - device_input=device_input, - stream=STREAM_ARG, - ) - results_pool.extend(batch_res) - del inference_batch - - # ===================================================================== - # UNIFIED STREAM BARRIER: Sync ONCE after all hardware tasks are queued - # ===================================================================== - if is_cuda and hasattr(self, "inference_stream"): - self.inference_stream.synchronize() - - # 4. Map Patch Bounding Boxes back onto the Global 8K Frame Coordinates Map - scale_display_x = tw / float(self.frame_width) - scale_display_y = th / float(self.frame_height) - - for idx, res in enumerate(results_pool): - # Calculate the exact matching absolute global coordinate array slot index - ox, oy, o_width, o_height, scale_f, pad_x, pad_y = patch_coordinates[ - idx - ] - if res.boxes is not None and len(res.boxes) > 0: - all_xyxy = res.boxes.xyxy.cpu().numpy() - all_clss = res.boxes.cls.cpu().numpy().astype(int) - all_confs = res.boxes.conf.cpu().numpy().astype(float) - - for j in range(len(all_xyxy)): - lx1, ly1, lx2, ly2 = all_xyxy[j] - class_name = self.label_source[all_clss[j]] - confidence = all_confs[j] - - # Reverse the centering padding offset values - lx1_unpadded = lx1 - pad_x - ly1_unpadded = ly1 - pad_y - lx2_unpadded = lx2 - pad_x - ly2_unpadded = ly2 - pad_y - - # Reverse the aspect ratio scale shift to map back to absolute 8K coordinates - global_x1 = ox + (lx1_unpadded / scale_f) - global_y1 = oy + (ly1_unpadded / scale_f) - global_x2 = ox + (lx2_unpadded / scale_f) - global_y2 = oy + (ly2_unpadded / scale_f) - - # Project directly onto the 640x640 display monitoring layout canvas - disp_x = global_x1 * scale_display_x - disp_y = global_y1 * scale_display_y - disp_w = (global_x2 - global_x1) * scale_display_x - disp_h = (global_y2 - global_y1) * scale_display_y - - if disp_w > 0 and disp_h > 0: - object_res = [ - int(disp_x), - int(disp_y), - int(disp_h), - int(disp_w), - class_name, - confidence, - int(th), - int(tw), - ] - obj_id = len(metadata) - num_objs += 1 - framenum_str = f"{frame_id:04d}_{obj_id:04d}" - metadata[framenum_str] = { - "frameId": int(frame_id), - "bbId": framenum_str, - "bbox": { - "x": int(object_res[0]), - "y": int(object_res[1]), - "height": int(object_res[2]), - "width": int(object_res[3]), - "object": str(object_res[4]), - "object_det": { - "confidence": float(object_res[5]), - "frameH": int(object_res[6]), - "frameW": int(object_res[7]), - }, - }, - } - - if "results_pool" in locals(): - del results_pool - if "roi_patches" in locals(): - roi_patches.clear() - del roi_patches - - del frame - del src_tensor - return metadata, num_objs - - def get_gpu_rois(self, frame, frameNum, mask): - # If more than 20% of the screen is moving, don't bother with crops - # if current_coverage > 0.6: - # return torch.tensor([[0, 0, self.frame_width, self.frame_height]], device=self.device_input) - - limit_640 = ( - 640 * 2.0 - ) / self.scale_x # 40 # self.config.ROI_MERGE_SIZE_LIMIT / self.scale_x - raw_boxes = self.get_gpu_rois_by_area( - mask, max_candidates=50 - ) # , limit_640=limit_640) - # padding = 5 # self.config.ROI_BB_FULL_RES_PADDING / self.scale_x - # raw_boxes[:, 0] -= padding - # raw_boxes[:, 1] -= padding - # raw_boxes[:, 2] += padding - # raw_boxes[:, 3] += padding - - if raw_boxes.shape[0] < 1: - return torch.empty((0, 4), device=self.device_input) - - if raw_boxes.shape[0] > 1: - raw_boxes = merge_boxes_gpu( - raw_boxes, - gap_limit=self.dist_thresh_640, - size_limit=limit_640, - ) - - clean_640p = self.filter_contained_boxes( - raw_boxes, overlap_thresh=self.config.ROI_CONTAINMENT_THRESH - ) - - if clean_640p.shape[0] < 1: - return torch.empty((0, 4), device=self.device_input) - - # # Scale to 8K space - # # return clean_640p * self.scales_tensor - # # margin = 0.10 - # # offsets = (clean_640p[:, 2:] - clean_640p[:, :2]) * margin - # # clean_640p[:, :2] -= offsets - # # clean_640p[:, 2:] += offsets - # # 1. Add 30-pixel 'breathing room' (in 640p space) - # # padding = 40 # self.config.ROI_BB_FULL_RES_PADDING / self.scale_x - # # clean_640p[:, 0] -= padding - # # clean_640p[:, 1] -= padding - # # clean_640p[:, 2] += padding - # # clean_640p[:, 3] += padding - - # # 2. Re-merge the padded boxes (connects nearby drones into one clean crop) - # clean_640p = merge_boxes_gpu( - # clean_640p, - # gap_limit=self.dist_thresh_640, - # size_limit=limit_640, # self.config.ROI_MERGE_SIZE_LIMIT / self.scale_x, - # ) - - # # Scale to 8K and clamp - # clean_full = clean_640p * self.scales_tensor - # # clean_full[:, [0, 2]] = clean_full[:, [0, 2]].clamp(0, self.frame_width) - # # clean_full[:, [1, 3]] = clean_full[:, [1, 3]].clamp(0, self.frame_height) - # return clean_full - - xmin = clean_640p[:, 0] - ymin = clean_640p[:, 1] - # w = clean_640p[:, 2] - # h = clean_640p[:, 3] - # xmax = xmin + w - # ymax = ymin + h - xmax = clean_640p[:, 2] - ymax = clean_640p[:, 3] - - # Stack into standard format layout [xmin, ymin, xmax, ymax] - standard_boxes = torch.stack([xmin, ymin, xmax, ymax], dim=1) - - # 4. Scale to absolute 8K workspace dimensions accurately - return standard_boxes * self.scales_tensor - - def get_gpu_roisv2(self, frame, frameNum, mask): - # 1. MORPHOLOGICAL NOISE CLEANUP (Crucial for the hillside) - # Apply an in-place GPU Opening filter to dissolve the tiny white spots - # while keeping the larger, dense drone clusters perfectly intact. - if isinstance(mask, cv2.cuda.GpuMat): - # 3x3 or 5x5 Ellipse/Rect kernel eliminates high-frequency noise - kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3)) - morph_filter = cv2.cuda.createMorphologyFilter( - cv2.MORPH_OPEN, mask.type(), kernel - ) - clean_mask = morph_filter.apply(mask) - else: - kernel = np.ones((3, 3), np.uint8) - clean_mask = cv2.morphologyEx(mask, cv2.MORPH_OPEN, kernel) - - # 2. Extract raw candidate boxes using the clean mask matrix surface - limit_640 = (640 * 2.0) / self.scale_x - raw_boxes = self.get_gpu_rois_by_area( - clean_mask, max_candidates=100 - ) # Increased limit to 100 - - if raw_boxes.shape[0] < 1: - return torch.empty((0, 4), device=self.device_input) - - if raw_boxes.shape[0] > 1: - raw_boxes = merge_boxes_gpu( - raw_boxes, - gap_limit=self.dist_thresh_640, - size_limit=limit_640, - ) - - clean_640p = self.filter_contained_boxes( - raw_boxes, overlap_thresh=self.config.ROI_CONTAINMENT_THRESH - ) - - if clean_640p.shape[0] < 1: - return torch.empty((0, 4), device=self.device_input) - - # 3. CORRECT [X, Y, W, H] TO [X1, Y1, X2, y2] MATH - # Map the original width and height parameters back to endpoint coordinates - xmin = clean_640p[:, 0] - ymin = clean_640p[:, 1] - w = clean_640p[:, 2] - h = clean_640p[:, 3] - - xmax = xmin + w - ymax = ymin + h - - # Pack into full master coordinate system arrays - standard_boxes = torch.stack([xmin, ymin, xmax, ymax], dim=1) - - # 4. Project coordinates back to 8K master canvas space accurately - return standard_boxes * self.scales_tensor - - def get_gpu_roisv3(self, frame, frameNum, mask): - # 1. Extract raw candidate boxes from the mask (Already [x1, y1, x2, y2]) - limit_640 = (640 * 2.0) / self.scale_x - raw_boxes = self.get_gpu_rois_by_area(mask, max_candidates=50) - - if raw_boxes.shape[0] < 1: - return torch.empty((0, 4), device=self.device_input) - - # 2. Merge overlapping fragments directly on the GPU - if raw_boxes.shape[0] > 1: - raw_boxes = merge_boxes_gpu( - raw_boxes, - gap_limit=self.dist_thresh_640, - size_limit=limit_640, - ) - - # 3. Filter out containment or noise artifacts - clean_640p = self.filter_contained_boxes( - raw_boxes, overlap_thresh=self.config.ROI_CONTAINMENT_THRESH - ) - - if clean_640p.shape[0] < 1: - return torch.empty((0, 4), device=self.device_input) - - # 4. Direct 8K Space Scaling Matrix Multiplication - # Matches the clean CPU architecture on Page 31, Line 2050 - return clean_640p * self.scales_tensor - - def frame2video( - self, - device_frame, - frameNum, - metadata_or_bbs, - class_list, - # metrics, - ): - scale_display_x = self.disp_w / 640 - scale_display_y = self.disp_h / 640 - try: - if self.device_input == "cuda" and torch.is_tensor(device_frame): - # 2. Fast Inline VRAM Downscaling into our static memory slot - # Reshape to (Batch, Channel, Height, Width) seamlessly without duplicating data - gpu_tensor = device_frame[None, :].permute(0, 3, 1, 2).float() - - resized_tensor = torch.nn.functional.interpolate( - gpu_tensor, - size=(self.disp_h, self.disp_w), - mode="nearest", - ) - - # CONVERTS TO CPU EARLIER (WORKS but lowers fps) - # hwc_byte_tensor = resized_tensor.squeeze(0).permute(1, 2, 0).byte() - # cpu_tensor = hwc_byte_tensor.cpu() - # bgr_contiguous = cpu_tensor.contiguous() - - # Using copy_() avoids creating any runtime allocations or memory-stride drift. - self.static_gpu_byte_bchw.copy_(resized_tensor.byte()) - - # Safely reshape the pre-allocated, locked GPU memory layout back to standard HWC array topology. - # Since the underlying array layout is strictly contiguous, this permute is guaranteed - # to be zero-copy on the GPU and free from memory race stalls. - bgr_contiguous = self.static_gpu_byte_bchw.squeeze(0).permute(1, 2, 0) - - # 1. Grab the current free pinned slot tracking variables from your reader - d2h_idx = self.reader.d2h_selector - pinned_tensor_buf = self.reader.d2h_buffers[d2h_idx] - - # c_idx = self.canvas_selector - # current_canvas = self.static_host_canvases[c_idx] - - # host_tensor_view = torch.as_tensor(current_canvas, device="cpu") - - # 3. Non-blocking asynchronous PCIe DMA Download directly into our page-locked canvas - with torch.cuda.stream(self.reader.download_stream): - # pinned_tensor = torch.from_numpy(current_canvas).cuda() - pinned_tensor_buf.copy_(bgr_contiguous, non_blocking=True) - - # Synchronize only the side download stream layout channel - self.reader.download_stream.synchronize() - - cpu_360p_frame = self.reader.d2h_numpys[d2h_idx] - - # 5. Non-Blocking Push straight to your background AsyncVideoWriter thread pool - # We pass a direct .copy() slice so the hot loop can instantly reuse the pinned ring buffer - display_frame = np.array(cpu_360p_frame, copy=True, order="C") - - if display_frame is not None and display_frame.shape[-1] == 3: - display_frame = cv2.cvtColor(display_frame, cv2.COLOR_RGB2BGR) - - # --- Draw Detection Overlays --- - if isinstance(metadata_or_bbs, dict): - # Object Mode (YOLO Structs) - display_frame = get_metadata_overlay( - display_frame, - metadata_or_bbs, - class_list, - (scale_display_x, scale_display_y), - (self.disp_w, self.disp_h), - is_bgr=True, - ) - - elif metadata_or_bbs is not None: - # # Motion / Smart Filtering Overlay Path - display_frame = get_bb_overlay( - display_frame, - metadata_or_bbs, - (scale_display_x, scale_display_y), - (self.disp_w, self.disp_h), - ) - - self.async_writer.write_frame(display_frame) - # self.canvas_selector = 1 - self.canvas_selector - self.reader.d2h_selector = 1 - self.reader.d2h_selector - - else: - # Reusable baseline track for CPU execution mappings - display_frame = cv2.resize( - device_frame, - (self.disp_w, self.disp_h), - interpolation=cv2.INTER_NEAREST, - ) - # if metrics["bbs"] is not None: - # for box in metrics["bbs"]: - # cv2.rectangle(cpu_resized, (int(box[0]), int(box[1])), (int(box[2]), int(box[3])), (0, 255, 0), 2) - # --- Draw Detection Overlays --- - if isinstance(metadata_or_bbs, dict): - # Object Mode (YOLO Structs) - display_frame = get_metadata_overlay( - display_frame, - metadata_or_bbs, - class_list, - (scale_display_x, scale_display_y), - (self.disp_w, self.disp_h), - is_bgr=True, - ) - - elif metadata_or_bbs is not None: - # # Motion / Smart Filtering Overlay Path - display_frame = get_bb_overlay( - display_frame, - metadata_or_bbs, - (scale_display_x, scale_display_y), - (self.disp_w, self.disp_h), - ) - self.async_writer.write_frame(display_frame) - except Exception: - traceback.print_exc() - return - - def frame2output(self, device_frame, frame_num, metadata_or_bbs, class_list): - """ - Renders drone detection bounding boxes onto the canvas - before dispatching to the live UI shared memory stream. - """ - if not self.active: - return - scale_display_x = self.disp_w / 640 - scale_display_y = self.disp_h / 640 - try: - if self.device_input == "cuda" and torch.is_tensor(device_frame): - # 2. Fast Inline VRAM Downscaling into our static memory slot - # Reshape to (Batch, Channel, Height, Width) seamlessly without duplicating data - gpu_tensor = device_frame[None, :].permute(0, 3, 1, 2).float() - - resized_tensor = torch.nn.functional.interpolate( - gpu_tensor, - size=(self.disp_h, self.disp_w), - mode="nearest", - ) - - # CONVERTS TO CPU EARLIER (WORKS but lowers fps) - # hwc_byte_tensor = resized_tensor.squeeze(0).permute(1, 2, 0).byte() - # cpu_tensor = hwc_byte_tensor.cpu() - # bgr_contiguous = cpu_tensor.contiguous() - - # Using copy_() avoids creating any runtime allocations or memory-stride drift. - self.static_gpu_byte_bchw.copy_(resized_tensor.byte()) - - # Safely reshape the pre-allocated, locked GPU memory layout back to standard HWC array topology. - # Since the underlying array layout is strictly contiguous, this permute is guaranteed - # to be zero-copy on the GPU and free from memory race stalls. - bgr_contiguous = self.static_gpu_byte_bchw.squeeze(0).permute(1, 2, 0) + clip.unlink() + main_app_logger.info(f"[PURGE] Deleted {clip.name} to free RAM.") - # 1. Grab the current free pinned slot tracking variables from your reader - d2h_idx = self.reader.d2h_selector - pinned_tensor_buf = self.reader.d2h_buffers[d2h_idx] + # Re-check usage after each deletion + usage = shutil.disk_usage("/dev/shm") + if (usage.used / usage.total) * 100 < 70: + break + except Exception as e: + main_app_logger.info(f"[EXCEPTION] Could not purge {clip}: {e}") - # c_idx = self.canvas_selector - # current_canvas = self.static_host_canvases[c_idx] + def print_active_gpu_tensor_memory(self): + main_app_logger.info( + "=" * 60, + ) + main_app_logger.info( + "\033[95m[VRAM INVESTIGATOR] Scanning Active GPU Tensors with Sources:\033[0m" + ) - # host_tensor_view = torch.as_tensor(current_canvas, device="cpu") + # Capture the exact C++ memory registry structure + try: + raw_snapshot = torch.cuda.memory._snapshot() + segments = raw_snapshot.get("segments", []) + except Exception: + segments = [] + main_app_logger.info( + "[WARN] Failed parsing native memory context snapshot.", + ) - # 3. Non-blocking asynchronous PCIe DMA Download directly into our page-locked canvas - with torch.cuda.stream(self.reader.download_stream): - # pinned_tensor = torch.from_numpy(current_canvas).cuda() - pinned_tensor_buf.copy_(bgr_contiguous, non_blocking=True) + # Map raw block storage memory addresses straight to Python frames + addr_to_source = {} + for seg in segments: + for block in seg.get("blocks", []): + if block.get("state") == "active_allocated": + addr = block.get("address") + history = block.get("history", []) + if history: + # Inspect the deepest frame in the allocation stack + frame = history[-1] + filename = frame.get("filename", "Unknown") + lineno = frame.get("line", 0) + func_name = frame.get("name", "unknown_func") + addr_to_source[addr] = f"{filename}:{lineno} ({func_name})" + + # Scan the heap via GC and resolve actual backing storage layers + leaked_tensors = [] + total_detected_bytes = 0 + + for obj in gc.get_objects(): + try: + if torch.is_tensor(obj) and obj.is_cuda: + t_bytes = obj.element_size() * obj.nelement() + total_detected_bytes += t_bytes + if t_bytes > 0: + leaked_tensors.append(obj) + except Exception: + pass - # Synchronize only the side download stream layout channel - self.reader.download_stream.synchronize() + obj = None # Break tracking register references - cpu_360p_frame = self.reader.d2h_numpys[d2h_idx] + for i, tensor in enumerate(leaked_tensors): + t_bytes = tensor.element_size() * tensor.nelement() - # 5. Non-Blocking Push straight to your background AsyncVideoWriter thread pool - # We pass a direct .copy() slice so the hot loop can instantly reuse the pinned ring buffer - display_frame = np.array(cpu_360p_frame, copy=True, order="C") + # --- THE FIX: Extract the address of the underlying storage block --- + try: + if hasattr(tensor, "untyped_storage"): + storage_addr = tensor.untyped_storage().data_ptr() + elif hasattr(tensor, "storage") and tensor.storage(): + storage_addr = tensor.storage().data_ptr() + else: + storage_addr = tensor.data_ptr() + except Exception: + storage_addr = tensor.data_ptr() - if display_frame is not None and display_frame.shape[-1] == 3: - display_frame = cv2.cvtColor(display_frame, cv2.COLOR_RGB2BGR) + # Extract absolute code trace locations from our snapshot dictionary + source_loc = addr_to_source.get( + storage_addr, "Unknown Native C++ Allocation / Model Context" + ) - # --- Draw Detection Overlays --- - if isinstance(metadata_or_bbs, dict): - # Object Mode (YOLO Structs) - display_frame = get_metadata_overlay( - display_frame, - metadata_or_bbs, - class_list, - (scale_display_x, scale_display_y), - (self.disp_w, self.disp_h), - is_bgr=True, - ) + main_app_logger.info( + f" > Tensor {i:3d} | Shape: {str(list(tensor.shape)):<18} | " + f"Size: {t_bytes / 1024**2:6.2f} MB | Source: \033[93m{source_loc}\033[0m" + ) - elif metadata_or_bbs is not None: - # # Motion / Smart Filtering Overlay Path - display_frame = get_bb_overlay( - display_frame, - metadata_or_bbs, - (scale_display_x, scale_display_y), - (self.disp_w, self.disp_h), - ) + del leaked_tensors + main_app_logger.info( + f"[VRAM INVESTIGATOR] Total Live Tensor Memory: {total_detected_bytes / 1024**2:.2f} MB" + ) + gc.collect() + if ( + torch.cuda.is_available() + ): # self.device_input == "cuda" and torch.cuda.is_available(): + torch.cuda.synchronize() + torch.cuda.empty_cache() # Flush the pool BEFORE the guard snapshots it - self.async_writer.write_frame(display_frame, frame_num) - # self.canvas_selector = 1 - self.canvas_selector - self.reader.d2h_selector = 1 - self.reader.d2h_selector + def print_active_shared_memory(self): + main_app_logger.info( + "=" * 60, + ) + main_app_logger.info( + "\033[96m[SHM INVESTIGATOR] Scanning Active OS Shared Memory Filesystem Tables:\033[0m" + ) + try: + shm_dir = Path("/dev/shm") + if shm_dir.exists(): + # Extract and inventory all live POSIX memory segments allocated right now + shm_files = [ + f + for f in shm_dir.iterdir() + if f.is_file() + and not f.name.startswith("sem.") + and not f.name.startswith("psm") + ] + main_app_logger.info( + f" > Discovered Live OS-Mapped Memory Nodes: {len(shm_files)}" + ) + + for f_path in shm_files: + try: + f_stat = f_path.stat() + size_mb = f_stat.st_size / (1024 * 1024) + # Highlight the files using visual color anchors for scannability + main_app_logger.info( + f" ⚠️ \033[93m[ALIVE SHM NODE]\033[0m File: {f_path.name:<25} | Size: {size_mb:7.2f} MB" + ) + except Exception: + pass else: - # Reusable baseline track for CPU execution mappings - display_frame = cv2.resize( - device_frame, - (self.disp_w, self.disp_h), - interpolation=cv2.INTER_NEAREST, + main_app_logger.info( + " [ERROR] /dev/shm runtime directory is inaccessible on this host context." ) - # if metrics["bbs"] is not None: - # for box in metrics["bbs"]: - # cv2.rectangle(cpu_resized, (int(box[0]), int(box[1])), (int(box[2]), int(box[3])), (0, 255, 0), 2) - # --- Draw Detection Overlays --- - if isinstance(metadata_or_bbs, dict): - # Object Mode (YOLO Structs) - display_frame = get_metadata_overlay( - display_frame, - metadata_or_bbs, - class_list, - (scale_display_x, scale_display_y), - (self.disp_w, self.disp_h), - is_bgr=True, - ) + except Exception as e: + main_app_logger.info( + f" [WARN] Kernel inspection execution pass failed: {e}" + ) - elif metadata_or_bbs is not None: - # # Motion / Smart Filtering Overlay Path - display_frame = get_bb_overlay( - display_frame, - metadata_or_bbs, - (scale_display_x, scale_display_y), - (self.disp_w, self.disp_h), - ) - self.async_writer.write_frame(display_frame, frame_num) - except Exception: - traceback.print_exc() - # return + # gc.collect() + # if torch.cuda.is_available(): + # torch.cuda.synchronize() + # torch.cuda.empty_cache() # Flush the pool BEFORE the guard snapshots it - def pipeline_fn( - self, - device_frame, - overall_frame_num, - # is_target_frame, - stat_start_time, - current_clip_id, + def calculate_leaked_memory( + self, device, video_name, start_allocated, start_reserved ): - global all_metadata - # current_clip_id = self.clip_id - current_clip_key = f"{self.name}_{current_clip_id:03d}.mp4" - current_clip_path = f"{self.config.SHARED_OUTPUT}/{current_clip_key}" - # --- MOTION MASK GENERATION GATE --- - if self.config.sf_enabled: - if self.device_input == "cuda": - bgs_input_frame = ( - device_frame.byte() - if torch.is_tensor(device_frame) - else device_frame + _testMethodName = f"{video_name}_{device}" + main_app_logger.info("=" * 60) + max_allowed_leak = 1024 * 1024 # 1MB buffer allowance + msg = "[LEAKAGE INVESTIGATOR] Scanning memory allocations:\n" + if device == "gpu" and torch.cuda.is_available(): + # torch.cuda.synchronize() + + end_allocated = torch.cuda.memory_allocated(0) + end_reserved = torch.cuda.memory_reserved(0) + + leak_allocated = end_allocated - start_allocated + leak_reserved = end_reserved - start_reserved + # max_allowed_leak = 1024 * 1024 # 1MB buffer allowance + + if leak_allocated > max_allowed_leak: + msg += ( + f"\n🔴 GPU Memory Leak Detected for {_testMethodName}!\n" + f"Check for dangling references or missing 'del' statements\n\n" ) - inf_data = self.rbtd_full_gpu(bgs_input_frame) - # torch.cuda.current_stream().synchronize() - # if isinstance(inf_data, dict) and "mask" in inf_data: - # if torch.is_tensor(inf_data["mask"]): - # inf_data["mask"] = inf_data["mask"].contiguous() - # inf_data = self.rbtd_full_gpu(device_frame) - else: - inf_data = self.rbtd_full_cpu(device_frame) - else: - inf_data = {} + # else: + # msg = "\n" - # --- PIPELINE AT TARGET RATE --- - # if not is_target_frame: - # return + msg += ( + f"\tPre-Setup Allocation: {start_allocated / 1024**2:.2f} MB\n" + f"\tPost-Teardown Allocation: {end_allocated / 1024**2:.2f} MB\n" + f"\tNet Leaked VRAM: {leak_allocated / 1024**2:.2f} MB\n" + f"\tNet Leaked Reserved Blocks: {leak_reserved / 1024**2:.2f} MB" + ) - # if is_target_frame: - # self.next_process_idx += self.step_size - # self.frame_count_target += 1 # 1-indexed - # self.frame_in_clip_count += 1 - inf_data["frameNum"] = overall_frame_num # self.frame_count_target + # main_app_logger.info(msg, ) + else: + process = psutil.Process(os.getpid()) + end_rss = process.memory_info().rss - # --- CLIP GENERATION --- - if self.config.ENABLE_QUERYING: - if self.config.DEBUG_FLAG and ( - self.frame_in_clip_count % 15 == 0 or self.frame_in_clip_count == 1 - ): - print( - f"[CLIPPER] Frame progress tracking index: {self.frame_in_clip_count}/{self.max_frames_per_clip} (Overall Frame: {overall_frame_num})", - flush=True, - ) + # start_allocated and start_reserved must be populated with baseline RSS in each_test_setup + leak_rss = end_rss - start_allocated - self.prep_frame_for_video(device_frame, overall_frame_num) - - if self.frame_in_clip_count > self.max_frames_per_clip: - global clip_completion_tracker - if current_clip_key not in clip_completion_tracker: - clip_completion_tracker[current_clip_key] = { - "video": False, - "meta": False, - "start_time": time.time(), - } - - clip_completion_tracker[current_clip_key]["meta"] = True - print( - f" [BARRIER-SEAL] All metadata extracted for {current_clip_key}. Evaluating convergence...", - flush=True, - ) - self._evaluate_barrier_and_dispatch( - current_clip_key, - current_clip_path, - self.resize_w, - self.resize_h, + if leak_rss > max_allowed_leak: + msg += ( + f"\n🔴 CPU Memory Leak Detected for {_testMethodName}!\n" + f"Check for dangling references or missing 'del' statements\n\n" ) + # else: + # msg = "\n" - self.start_new_clip(current_clip_id) + msg += ( + f" Pre-Setup Host RAM Allocation: {start_allocated / 1024**2:.2f} MB\n" + ) + msg += f" Post-Teardown Host RAM Allocation: {end_rss / 1024**2:.2f} MB\n" + msg += f" Net Leaked Host System Memory: {leak_rss / 1024**2:.2f} MB" + main_app_logger.info(msg) + main_app_logger.info("=" * 60) + + def diagnostic_profiler(self, device, video_name, start_allocated, start_reserved): + _testMethodName = f"{video_name}_{device}" + self.calculate_leaked_memory( + device, video_name, start_allocated, start_reserved + ) - if not self.config.DISABLE_DETECTION: - # --- FULL-RESOLUTION ROI EXTRACTION MAPS --- - bbs_full_res = None - if self.config.sf_enabled: - if self.device_input == "cuda": - bbs_full_res = self.get_gpu_rois( - inf_data["full_frame"], - inf_data["frameNum"], - inf_data["mask"], - ) - else: - bbs_full_res = self.get_cpu_rois( - inf_data["full_frame"], - inf_data["frameNum"], - inf_data["mask"], - ) + # main_app_logger.info("=" * 60, ) + # main_app_logger.info( + # f"\n\033[95m[DIAGNOSTICS] Starting Automated Leak Analysis for {_testMethodName}...\033[0m", + # , + # ) - # Isolate raw coordinate matrices out of device graphs to prevent exit race conditions - clean_bbs = [] - if self.config.sf_enabled and bbs_full_res is not None: - if torch.is_tensor(bbs_full_res): - clean_bbs = bbs_full_res.detach().cpu().numpy() - else: - clean_bbs = np.array(bbs_full_res) - - # If inline optimizations left the tensor in channels-first format (B, C, H, W), - # restore it to standard standard layout standard (H, W, C) so get_detections - # can decode bounding boxes accurately without corrupting weights. - det_frame = device_frame - # Cast float canvases back to standard unsigned byte tracking arrays - # so get_detections can safely run its internal float normalizations. - if torch.is_tensor(det_frame): - det_frame = det_frame.byte() - - if det_frame.ndim == 4: - det_frame = det_frame.squeeze(0).permute(1, 2, 0) - elif det_frame.shape[0] == 3: - det_frame = det_frame.permute(1, 2, 0) - - # print(f"[DEBUG] {current_clip_key}: {len(clean_bbs)} ROIs detected!") - - if self.config.DETECTION_TYPE != "motion": - # # Object Mode: Run YOLO and prepare metadata - # if "full_frame" in inf_data: - # det_frame = inf_data["full_frame"] - # else: - # det_frame = ( - # device_frame.clone() - # if torch.is_tensor(device_frame) - # else device_frame.copy() - # ) + # 1. Run objgraph to inspect the Python object reference trees before clearing containers + # try: + # main_app_logger.info( + # "\033[94m[DIAGNOSTICS] Python Object Registry Standings:\033[0m", + # ) + # objgraph.show_most_common_types(limit=10) + + # Check if the metrics arrays are pinning references inside memory + # for tracker_attr in ["all_preds", "all_targets"]: + # if hasattr(self, tracker_attr): + # tgt_list = getattr(self, tracker_attr) + # if len(tgt_list) > 0: + # graph_path = f"/tmp/backrefs_{tracker_attr}_{device}.png" + # main_app_logger.info( + # f"\033[93m[WARN] '{tracker_attr}' contains {len(tgt_list)} entries. Generating reference graph to: {graph_path}\033[0m" + # ) + # objgraph.show_backrefs( + # [tgt_list], max_depth=3, filename=graph_path + # ) + # except ImportError: + # main_app_logger.info( + # "\033[91m[DIAGNOSTICS] 'objgraph' package missing. Skipping reference chain mapping. (pip install objgraph)\033[0m" + # ) - merged = clean_bbs if self.config.sf_enabled else None - # num_bbs = 0 if merged is None else len(clean_bbs) - # print(f"[DEBUG] {current_clip_key} 'merged' num bbs: {num_bbs}") - metadata, num_objs = self.get_detections( - det_frame, - self.frame_in_clip_count, # self.frame_count_target, - merged=merged, - thickness=self.config.THICKNESS, - device_input=self.config.device_input, + # 2. Dump PyTorch Memory Snapshot before clearing VRAM caches + if device == "gpu" and torch.cuda.is_available(): + try: + # snapshot_path = f"/tmp/vram_leak_profile_{self._testMethodName}.pickle" + snapshot_path = self.output_path.replace(".mp4", "_vram_profile.html") + torch.cuda.memory._dump_snapshot(snapshot_path) + main_app_logger.info( + f"\033[92m[DIAGNOSTICS] VRAM Snapshot Trace generated successfully: {snapshot_path}\033[0m" + ) + main_app_logger.info( + "\033[92m--> Upload this file to https://pytorch.org to inspect leak allocation stacks.\033[0m" ) - # num_objs = len(list(metadata.keys())) - self.total_objects_detected += num_objs - if self.config.DEBUG_FLAG: - meta_keys = ", ".join(list(metadata.keys())) - print( - f"[DEBUG] {current_clip_key} metadata keys: {meta_keys}", - flush=True, - ) - if current_clip_key not in all_metadata: - all_metadata[current_clip_key] = {"object": {}, "face": {}} + with open(snapshot_path, "rb") as f: + snapshot = pickle.load(f) - all_metadata[current_clip_key]["object"].update(metadata) - # data_to_draw = metadata - # if self.config.DEBUG_FLAG or - if overall_frame_num % 50 == 0: - print( - f"[METADATA-DEBUG A] Logged tracking structures for Frame #{overall_frame_num} into dictionary key: {current_clip_key}. Number detections: {self.total_objects_detected} (+{num_objs})", - flush=True, - ) + # Print an HTML visualization path map of the allocations + html_timeline = memory_viz.trace_plot(snapshot) + html_path = snapshot_path.replace(".pickle", ".html") + with open(html_path, "w", encoding="utf-8") as f: + f.write(html_timeline) + except Exception as e: + main_app_logger.info( + f"\033[91m[DIAGNOSTICS] Failed to generate PyTorch memory snapshot: {e}\033[0m" + ) - # print(f"Sending to queue", flush=True) + def assess_memory(self, device, video_name, start_allocated, start_reserved): + gc.collect() - if self.device_input == "cuda": - # torch.cuda.synchronize() - self.inference_stream.synchronize() + surviving_arrays = [ + obj + for obj in gc.get_objects() + # if isinstance(obj, np.ndarray) and obj.size >= 1 #(1920 * 1080) + if type(obj) is np.ndarray and obj.ndim > 0 + ] + analyze_tracemalloc_snapshot() + + main_app_logger.info( + f"[DIAGNOSTICS] Found {len(surviving_arrays)} uncollected large arrays alive in RAM filesystem." + ) - data_to_draw = ( - clean_bbs if self.config.DETECTION_TYPE == "motion" else metadata + for i, arr in enumerate(surviving_arrays): + referrers = gc.get_referrers(arr) + main_app_logger.info( + f" > Array {i} | Shape: {arr.shape} | Pinned by {len(referrers)} references:" ) + for ref in referrers: + if isinstance(ref, dict): + main_app_logger.info( + f" - Dict Keys holding this array: {list(ref.keys())[:4]}" + ) + else: + main_app_logger.info( + f" - Variable holding object layout: {type(ref)}", + ) + # ─────────────────────────────────────── - if self.config.TEST_MODE: - self.frame2video( - det_frame, - inf_data["frameNum"], - data_to_draw, - self.label_source, - ) - else: - self.frame2output( - det_frame, - inf_data["frameNum"], - data_to_draw, - self.label_source, - ) + # analyze_tracemalloc_snapshot() - # self.update_frame(stat_start_time) + if device == "gpu": + self.print_active_gpu_tensor_memory() + else: + # --- CPU RAM PATH METRICS --- + # main_app_logger.info("=" * 60, ) + # main_app_logger.info("\n[RAM INVESTIGATOR] Scanning Host CPU Memory Standings:", ) + # process = psutil.Process(os.getpid()) + # current_rss = process.memory_info().rss / (1024 * 1024) # Host RAM in MB + # main_app_logger.info(f" > Current Process Resident Set Size (RSS): {current_rss:.2f} MB", ) + self.print_active_cpu_tensor_memory() + + self.print_active_shared_memory() - # VIDEO CLIPPING + # AUTOMATED DIAGNOSTIC PROFILING PHASE (TRIGGERED ON TEST TEARDOWN) + self.diagnostic_profiler(device, video_name, start_allocated, start_reserved) + + # VIDEO CLIPPING -------------------------------------------- def start_new_clip(self, clip_id): """ Seals the current AI tracking state layout and safely moves the instance metadata references @@ -3557,32 +3659,13 @@ def start_new_clip(self, clip_id): """ global clip_completion_tracker, all_metadata - # Capture context pointers prior to counter mutation steps - old_clip_id = clip_id # self.clip_id - old_clip_key = f"{self.name}_{old_clip_id:03d}.mp4" - # old_clip_path = f"{self.config.SHARED_OUTPUT}/{old_clip_key}" - - print( - f" [CLIPPER] Rotating AI context engine tracking timeline layer. Sealing metadata for: {old_clip_key}", - flush=True, - ) - - # Seal the AI processing side of the tracker - # if old_clip_key not in clip_completion_tracker: - # clip_completion_tracker[old_clip_key] = {"video": False, "meta": False, "start_time": time.time()} - - # clip_completion_tracker[old_clip_key]["meta"] = True - - # # Evaluate the barrier in case the video segment completed before the AI loop reached this gate - # self._evaluate_barrier_and_dispatch(old_clip_key, old_clip_path, self.resize_w, self.resize_h) - # Mutate tracker instance metrics parameters for the upcoming segment chunk window # self.clip_id += 1 self.frame_in_clip_count = 1 self._check_shm_safety(threshold_percent=90) log_to_logger( - f"New clip created: clip frame {self.frame_in_clip_count} ({self.frame_count_target})) of {self.max_frames_per_clip}", + f"New clip created: clip frame {self.frame_in_clip_count} of {self.max_frames_per_clip} (Overall target frame: {self.frame_count_target})", level="info", ) @@ -3592,92 +3675,142 @@ def prep_frame_for_video(self, device_frame, frame_num): return if not hasattr(self, "write_queue") or self.write_queue is None: - print( + main_app_logger.info( " [CLIPPER-INIT] Missing write_queue footprint. Provisioning runtime workspace buffer...", - flush=True, ) - self.write_queue = queue.Queue(maxsize=300) + # self.write_queue = queue.Queue(maxsize=300) + # write_queue_size = int(self.target_fps / 2) if self.device_input == "cpu" else int(self.target_fps / 2) + write_queue_size = int(2 * self.target_fps) + self.write_queue = queue.Queue(maxsize=write_queue_size) # 300) self.writer_done = False if not self.config.TEST_MODE and ( not hasattr(self, "send_metadata_queue") or self.send_metadata_queue is None ): - print( + main_app_logger.info( " [CLIPPER-INIT] Binding instance metadata reference array layer dynamically...", - flush=True, ) - self.send_metadata_queue = queue.Queue() + self.send_metadata_queue = queue.Queue(maxsize=50) if not hasattr(self, "stop_writer") or self.stop_writer is None: self.stop_writer = threading.Event() - if ( - not hasattr(self, "writer_thread") - or self.writer_thread is None - or not self.writer_thread.is_alive() - ): - print( - " [CLIPPER-INIT] Target worker runtime thread is offline. Provisioning core consumer loop thread...", - flush=True, - ) - self.writer_thread = threading.Thread( - target=self.video_writer_core_loop, - args=(self.stop_writer,), - daemon=True, - ) - self.writer_thread.start() + # if ( + # not hasattr(self, "writer_process") + # or self.writer_process is None + # or not self.writer_process.is_alive() + # ): + # main_app_logger.info( + # " [CLIPPER-INIT] Target worker runtime thread is offline. Provisioning core consumer loop thread...", + # ) + # self.writer_process = threading.Thread( + # target=self.video_writer_core_loop, + # args=(self.stop_writer,), + # daemon=True, + # ) + # self.writer_process.start() - if getattr(self, "video_writer", None) is None: - print( - " [CLIPPER-INIT] Downstream execution handle is blank. Initializing FFmpeg subprocess daemon...", - flush=True, - ) - self._initialize_writer() + # if getattr(self, "video_writer", None) is None: + # main_app_logger.info( + # " [CLIPPER-INIT] Downstream execution handle is blank. Initializing FFmpeg subprocess daemon...", + # ) + # self._initialize_writer() - self.clip_executor.submit(self._async_clipper_worker, device_frame, frame_num) + if not self.active or self._is_stopped: + return - def _async_clipper_worker(self, device_frame, frame_num): + # self.clip_executor.submit(self._async_clipper_worker, device_frame, frame_num) + try: + if hasattr(self, "clip_executor") and self.clip_executor is not None: + self.clip_executor.submit( + self._async_clipper_worker, device_frame, frame_num + ) + except RuntimeError as e: + # If the executor was shut down in the fraction of a millisecond + # between our check and the submit, catch it silently and drop the frame. + if "cannot schedule new futures" in str(e): + pass + else: + # If it's a different RuntimeError, we still want to see it + raise e + except Exception: + # Catch other unexpected submission errors + # pass + traceback.print_exc() + + @torch.inference_mode() + def _async_clipper_worker_v1(self, device_frame, frame_num): + """ + A worker that resizes a full-resolution frame and places it in a queue + for the video writer. Runs in a separate thread. + """ + # ring_idx = (frame_num - 1) % self.ring_depth try: + # If a shutdown has started, attributes might be gone. Exit cleanly. + if ( + not self.active + or not hasattr(self, "processing_stream") + or self.processing_stream is None + ): + return + if self.device_input == "cuda": - with torch.cuda.stream(self.processing_stream): - if device_frame.shape[-1] == 3: - gpu_ch_first = device_frame.permute(2, 0, 1).contiguous() - else: - gpu_ch_first = device_frame.contiguous() + # with torch.cuda.stream(self.processing_stream): + if ( + hasattr(self, "processing_stream") + and self.processing_stream is not None + ): + torch.cuda.set_stream(self.processing_stream) + if device_frame.shape[-1] == 3: + gpu_ch_first = device_frame.permute(2, 0, 1).contiguous() + else: + gpu_ch_first = device_frame.contiguous() - self.gpu_float_staging[0, :, :, :].copy_( - gpu_ch_first, non_blocking=True - ) + self.gpu_float_staging[0, :, :, :].copy_( + gpu_ch_first, non_blocking=True + ) - gpu_resized = F.interpolate( - self.gpu_float_staging, - size=(self.resize_h, self.resize_w), - mode="bilinear", - align_corners=False, - ).squeeze(0) + gpu_resized = F.interpolate( + self.gpu_float_staging, + size=(self.resize_h, self.resize_w), + # mode="bilinear", + # align_corners=False, + mode="nearest", + ).squeeze(0) - gpu_final = gpu_resized.clamp(0, 255).to(torch.uint8) + gpu_final = gpu_resized.clamp(0, 255).to(torch.uint8) - # If the tensor shape follows PyTorch's standard format (Channels, Height, Width), - # we reverse the channel order [0, 1, 2] to [2, 1, 0] (RGB -> BGR) - if gpu_final.ndim == 3 and gpu_final.shape[0] == 3: - gpu_final = gpu_final[[2, 1, 0], :, :] + # If the tensor shape follows PyTorch's standard format (Channels, Height, Width), + # we reverse the channel order [0, 1, 2] to [2, 1, 0] (RGB -> BGR) + if gpu_final.ndim == 3 and gpu_final.shape[0] == 3: + gpu_final = gpu_final[[2, 1, 0], :, :] - gpu_contiguous = gpu_final.permute(1, 2, 0).contiguous() + gpu_contiguous = gpu_final.permute(1, 2, 0).contiguous() - active_tensor = self.pinned_tensors[self.gpu_ring_idx] - active_tensor.copy_(gpu_contiguous, non_blocking=True) + active_tensor = self.pinned_tensors[self.gpu_ring_idx] + active_tensor.copy_(gpu_contiguous, non_blocking=True) if self.slot_events is not None: self.slot_events[self.gpu_ring_idx].record(self.processing_stream) - self.write_queue.put( - { - "ring_slot_idx": self.gpu_ring_idx, - "frame_num": frame_num, - "pipe_handle": self.video_writer, - } - ) + # with self.write_queue_backlog_counter.get_lock(): + # self.write_queue_backlog_counter.value += 1 + # self.write_queue.put( + # { + # "ring_slot_idx": self.gpu_ring_idx, + # "frame_num": frame_num, + # "pipe_handle": self.video_writer, + # } + # ) + try: + # Put the NumPy array directly into the queue + self.write_queue.put_nowait(active_tensor) + + # (Optional) Increment your backlog counter if you still use it + with self.write_queue_backlog_counter.get_lock(): + self.write_queue_backlog_counter.value += 1 + except queue.Full: + pass # Drop the frame if the writer process is lagging self.gpu_ring_idx = (self.gpu_ring_idx + 1) % self.ring_depth else: active_matrix = self.pinned_matrices[self.cpu_ring_idx] @@ -3688,22 +3821,202 @@ def _async_clipper_worker(self, device_frame, frame_num): interpolation=cv2.INTER_NEAREST, ) - self.write_queue.put( - { - "ring_slot_idx": self.cpu_ring_idx, - "frame_num": frame_num, - "pipe_handle": self.video_writer, - } + # with self.write_queue_backlog_counter.get_lock(): + # self.write_queue_backlog_counter.value += 1 + # self.write_queue.put( + # { + # "ring_slot_idx": self.cpu_ring_idx, + # "frame_num": frame_num, + # "pipe_handle": self.video_writer, + # } + # ) + try: + # Put the NumPy array directly into the queue + self.write_queue.put_nowait(active_matrix) + + # (Optional) Increment your backlog counter if you still use it + with self.write_queue_backlog_counter.get_lock(): + self.write_queue_backlog_counter.value += 1 + except queue.Full: + pass # Drop the frame if the writer process is lagging + + self.cpu_ring_idx = (self.cpu_ring_idx + 1) % self.ring_depth + + except Exception as e: + main_app_logger.info( + f"[CRITICAL-CLIPPER-WORKER] Resizing execution loop dropped: {e}", + ) + traceback.print_exc() + + finally: + # This worker handles large 8K frames. Deleting all local tensor + # references here is critical to prevent VRAM accumulation. + if "device_frame" in locals(): + del device_frame + if "gpu_ch_first" in locals(): + del gpu_ch_first + if "gpu_resized" in locals(): + del gpu_resized + if "gpu_final" in locals(): + del gpu_final + if "gpu_contiguous" in locals(): + del gpu_contiguous + + @torch.inference_mode() + def _async_clipper_worker(self, device_frame, frame_num): + """ + A worker that resizes a full-resolution frame and places it in a queue + for the video writer. Runs in a separate thread. + """ + # ring_idx = (frame_num - 1) % self.ring_depth + try: + # If a shutdown has started, attributes might be gone. Exit cleanly. + if ( + not self.active + or not hasattr(self, "processing_stream") + or self.processing_stream is None + ): + return + + if self.device_input == "cuda": + # with torch.cuda.stream(self.processing_stream): + if ( + hasattr(self, "processing_stream") + and self.processing_stream is not None + ): + torch.cuda.set_stream(self.processing_stream) + if device_frame.shape[-1] == 3: + gpu_ch_first = device_frame.permute(2, 0, 1).contiguous() + else: + gpu_ch_first = device_frame.contiguous() + + self.gpu_float_staging[0, :, :, :].copy_( + gpu_ch_first, non_blocking=True + ) + + gpu_resized = F.interpolate( + self.gpu_float_staging, + size=(self.resize_h, self.resize_w), + # mode="bilinear", + # align_corners=False, + mode="nearest", + ).squeeze(0) + + gpu_final = gpu_resized.clamp(0, 255).to(torch.uint8) + + # If the tensor shape follows PyTorch's standard format (Channels, Height, Width), + # we reverse the channel order [0, 1, 2] to [2, 1, 0] (RGB -> BGR) + if gpu_final.ndim == 3 and gpu_final.shape[0] == 3: + gpu_final = gpu_final[[2, 1, 0], :, :] + + gpu_contiguous = gpu_final.permute(1, 2, 0).contiguous() + + active_tensor = self.pinned_tensors[self.gpu_ring_idx] + active_tensor.copy_(gpu_contiguous, non_blocking=True) + + if self.slot_events is not None: + self.slot_events[self.gpu_ring_idx].record(self.processing_stream) + + # with self.write_queue_backlog_counter.get_lock(): + # self.write_queue_backlog_counter.value += 1 + # self.write_queue.put( + # { + # "ring_slot_idx": self.gpu_ring_idx, + # "frame_num": frame_num, + # "pipe_handle": self.video_writer, + # } + # ) + + # try: + # # Put the NumPy array directly into the queue + # self.write_queue.put_nowait(active_tensor) + + # # (Optional) Increment your backlog counter if you still use it + # with self.write_queue_backlog_counter.get_lock(): + # self.write_queue_backlog_counter.value += 1 + # except queue.Full: + # pass # Drop the frame if the writer process is lagging + + # 1. Get the next available ring buffer slot atomically + with self.clipper_idx_lock: + slot_idx = self.clipper_ring_idx.value + self.clipper_ring_idx.value = ( + self.clipper_ring_idx.value + 1 + ) % self.clipper_ring_depth + + # 2. Get the NumPy view for that slot and copy the data into it + target_buffer = self.clipper_shm_np_views[slot_idx] + np.copyto(target_buffer, active_tensor) + + # 3. Put the INTEGER INDEX into the queue (extremely fast) + self.write_queue.put_nowait(slot_idx) + + self.gpu_ring_idx = (self.gpu_ring_idx + 1) % self.ring_depth + else: + active_matrix = self.pinned_matrices[self.cpu_ring_idx] + cv2.resize( + device_frame, + (self.resize_w, self.resize_h), + dst=active_matrix, + interpolation=cv2.INTER_NEAREST, ) + + # with self.write_queue_backlog_counter.get_lock(): + # self.write_queue_backlog_counter.value += 1 + # self.write_queue.put( + # { + # "ring_slot_idx": self.cpu_ring_idx, + # "frame_num": frame_num, + # "pipe_handle": self.video_writer, + # } + # ) + + # try: + # # Put the NumPy array directly into the queue + # self.write_queue.put_nowait(active_matrix) + + # # (Optional) Increment your backlog counter if you still use it + # with self.write_queue_backlog_counter.get_lock(): + # self.write_queue_backlog_counter.value += 1 + # except queue.Full: + # pass # Drop the frame if the writer process is lagging + + # 1. Get the next available ring buffer slot atomically + with self.clipper_idx_lock: + slot_idx = self.clipper_ring_idx.value + self.clipper_ring_idx.value = ( + self.clipper_ring_idx.value + 1 + ) % self.clipper_ring_depth + + # 2. Get the NumPy view for that slot and copy the data into it + target_buffer = self.clipper_shm_np_views[slot_idx] + np.copyto(target_buffer, active_matrix) + + # 3. Put the INTEGER INDEX into the queue (extremely fast) + self.write_queue.put_nowait(slot_idx) + self.cpu_ring_idx = (self.cpu_ring_idx + 1) % self.ring_depth except Exception as e: - print( + main_app_logger.info( f"[CRITICAL-CLIPPER-WORKER] Resizing execution loop dropped: {e}", - flush=True, ) traceback.print_exc() + finally: + # This worker handles large 8K frames. Deleting all local tensor + # references here is critical to prevent VRAM accumulation. + if "device_frame" in locals(): + del device_frame + if "gpu_ch_first" in locals(): + del gpu_ch_first + if "gpu_resized" in locals(): + del gpu_resized + if "gpu_final" in locals(): + del gpu_final + if "gpu_contiguous" in locals(): + del gpu_contiguous + def _initialize_writer(self): """ Spawns a persistent background FFmpeg subprocess with native segment-splitting @@ -3751,7 +4064,7 @@ def _initialize_writer(self): self.clip_filename_pattern, ] - # print(f" [FFMPEG-INIT] Spawning binary pipeline targeted at: {self.clip_filename_pattern}", flush=True) + # main_app_logger.info(f" [FFMPEG-INIT] Spawning binary pipeline targeted at: {self.clip_filename_pattern}") try: # log_dir = "/home/logs" @@ -3769,9 +4082,8 @@ def _initialize_writer(self): bufsize=0, ) self.video_writer = self.ffmpeg_proc.stdin - print( + main_app_logger.info( " [FFMPEG-INIT] Subprocess online. Log stream parser engine initialization sequencing...", - flush=True, ) # Fire memory loop monitor @@ -3785,9 +4097,8 @@ def _initialize_writer(self): level="info", ) except Exception as e: - print( + main_app_logger.info( f"[CRITICAL-FFMPEG] Process spawn aborted at kernel boundary: {e}", - flush=True, ) self.video_writer = None @@ -3866,9 +4177,8 @@ def _ffmpeg_log_parser_loop(self): ) # Rest the polling thread to preserve CPU cycles if not file_stable: - print( + main_app_logger.info( f" [PARSER-WARN] IO Flush timeout exceeded for {completed_clip_key}. Forcing dispatch anyway.", - flush=True, ) # ========================================================================= @@ -3884,9 +4194,8 @@ def _ffmpeg_log_parser_loop(self): True ) if self.config.DEBUG_FLAG: - print( + main_app_logger.info( f"[PARSER] Memory pipe intercepted completed segment confirmation: {completed_clip_key}", - flush=True, ) # Run convergence evaluation pass @@ -3897,128 +4206,147 @@ def _ffmpeg_log_parser_loop(self): self.resize_h, ) except Exception as calc_err: - print( + main_app_logger.info( f"[PARSER-WARN] Index calculation lookback anomaly skipped: {calc_err}", - flush=True, ) except Exception as parse_err: - print( + main_app_logger.info( f"[PARSER-ERROR] Failed to extract target token patterns out of logging stream: {parse_err}", - flush=True, ) - continue - if self.config.DEBUG_FLAG: - print( - " [LOG-PARSER] Memory loop pipe interface closed down smoothly.", - flush=True, - ) - - def video_writer_core_loop(self, stop_evt): - """ - Thread-safe background min-heap consumer with adaptive sequence hole recovery. - """ - print( - " [WRITER-LOOP] Background tracking consumer loop active and polling memory queues...", - flush=True, - ) - try: - while not stop_evt.is_set() or not self.write_queue.empty(): - try: - data = None - try: - data = self.write_queue.get(timeout=0.02) - except (queue.Empty, AttributeError): - continue - - if data is None: - continue - - control_data = data.get("control") - if control_data == "FLUSH": - print( - " [WRITER-LOOP] Intercepted downstream engine flush token code signature.", - flush=True, - ) - if "pipe_handle" in data and data["pipe_handle"]: - try: - data["pipe_handle"].close() - except Exception: - pass - self.write_queue.task_done() - continue - - slot_target = data.get("ring_slot_idx") - sock_handle = data.get("pipe_handle") - # frame_num = data.get("frame_num") + continue + if self.config.DEBUG_FLAG: + main_app_logger.info( + " [LOG-PARSER] Memory loop pipe interface closed down smoothly.", + ) - if ( - sock_handle is None - and getattr(self, "video_writer", None) is not None - ): - sock_handle = self.video_writer - - if slot_target is not None and sock_handle is not None: - if self.device_input == "cuda" and self.slot_events is not None: - self.slot_events[slot_target].synchronize() - - if ( - self.ffmpeg_proc is None - or self.ffmpeg_proc.poll() is not None - ): - print( - " [WRITER-WARN] Downstream execution loop pipe was broken out-of-band. Launching recovery routine...", - flush=True, - ) - self._initialize_writer() - sock_handle = self.video_writer - if sock_handle is None: - self.write_queue.task_done() - continue + # def video_writer_core_loop(self, stop_evt): + # """Thread-safe background min-heap consumer with adaptive sequence hole recovery - try: - raw_buffer_view = memoryview( - self.pinned_matrices[slot_target] - ) - sock_handle.write(raw_buffer_view) - sock_handle.flush() + # and leak-proof lifecycle task tracking signals. + # """ + # main_app_logger.info( + # " [WRITER-LOOP] Background tracking consumer loop active and polling memory queues...", + # ) + # try: + # # Use a safe helper function to check if the queue is both active and not empty + # def is_queue_active_and_populated(): + # if self.write_queue is None: + # return False + # try: + # return not self.write_queue.empty() + # except (AttributeError, ValueError): + # # In case the queue was just destroyed by the main thread + # return False - except (OSError, ValueError) as pipe_err: - print( - f" [PIPE-ERROR] Write operation dropped on ring index slot {slot_target}: {pipe_err}", - flush=True, - ) - pass + # while not stop_evt.is_set() or not is_queue_active_and_populated(): + # try: + # data = None + # try: + # data = self.write_queue.get(timeout=0.02) + # except (queue.Empty, AttributeError): + # continue - self.write_queue.task_done() - else: - self.write_queue.task_done() + # if data is None: + # continue - except Exception as e: - print( - f"[WRITER-EXCEPTION] Worker engine cycle processing failure: {e}", - flush=True, - ) - continue + # # --- DETACHED PROCESSING LOGIC ENVELOPE ------------------ + # try: + # control_data = data.get("control") + # if control_data == "FLUSH": + # main_app_logger.info( + # " [WRITER-LOOP] Intercepted downstream engine flush token code signature.", + # ) + # if "pipe_handle" in data and data["pipe_handle"]: + # try: + # data["pipe_handle"].close() + # except Exception: + # pass + # continue + + # slot_target = data.get("ring_slot_idx") + # sock_handle = data.get("pipe_handle") + + # if ( + # sock_handle is None + # and getattr(self, "video_writer", None) is not None + # ): + # sock_handle = self.video_writer + + # if slot_target is not None and sock_handle is not None: + # if ( + # self.device_input == "cuda" + # and self.slot_events is not None + # ): + # self.slot_events[slot_target].synchronize() + + # if ( + # self.ffmpeg_proc is None + # or self.ffmpeg_proc.poll() is not None + # ): + # main_app_logger.info( + # " [WRITER-WARN] Downstream execution loop pipe was broken out-of-band. Launching recovery routine...", + # ) + # self.initialize_writer() + # sock_handle = self.video_writer + # if sock_handle is None: + # continue + + # try: + # raw_buffer_view = memoryview( + # self.pinned_matrices[slot_target] + # ) + # sock_handle.write(raw_buffer_view) + # sock_handle.flush() + # except (OSError, ValueError) as pipe_err: + # main_app_logger.info( + # f" [PIPE-ERROR] Write operation dropped on ring index slot {slot_target}: {pipe_err}", + # ) + # finally: + # if "raw_buffer_view" in locals(): + # del raw_buffer_view + + # del slot_target, sock_handle + + # with self.write_queue_backlog_counter.get_lock(): + # self.write_queue_backlog_counter.value -= 1 + # if ( + # self.write_queue_backlog_counter.value % 30 == 0 + # ): # Every ~2 seconds + # gc.collect() + # if torch.cuda.is_available(): + # torch.cuda.empty_cache() + + # # --- ENSURE PRECISE TASK TRACKING REGISTRATION ALLOCATION --- + # finally: + # if "data" in locals(): + # del data + # # This executes exactly once per queue iteration pass, completely + # # eliminating "task_done() called too many times" exceptions. + # self.write_queue.task_done() + + # except Exception as e: + # main_app_logger.info( + # f" [WRITER-EXCEPTION] Worker engine cycle processing failure: {e}", + # ) + # continue - try: - if hasattr(self, "socket_path") and os.path.exists(self.socket_path): - os.remove(self.socket_path) - except Exception: - pass + # if hasattr(self, "socket_path") and os.path.exists(self.socket_path): + # try: + # os.remove(self.socket_path) + # except Exception: + # pass - self.writer_done = True - print( - " [WRITER-LOOP] Thread pool queue completely drained. Processing safe exit termination sequence...", - flush=True, - ) + # self.writer_done = True + # main_app_logger.info( + # " [WRITER-LOOP] Thread pool queue completely drained. Processing safe exit termination sequence...", + # ) - except Exception as fatal_err: - print( - f"[FATAL-WRITER-CRASH] Unhandled background crash: {fatal_err}", - flush=True, - ) - traceback.print_exc() + # except Exception as fatal_err: + # main_app_logger.info( + # f"[FATAL-WRITER-CRASH] Unhandled background crash: {fatal_err}", + # ) + # traceback.print_exc() def _evaluate_barrier_and_dispatch(self, clip_key, clip_path, frame_w, frame_h): """ @@ -4039,14 +4367,23 @@ def _evaluate_barrier_and_dispatch(self, clip_key, clip_path, frame_w, frame_h): # Check convergence layout: Trigger upload sequence only if both pipelines sealed operations if tracker["video"] and tracker["meta"]: if self.config.DEBUG_FLAG: - print( + main_app_logger.info( f" [BARRIER-CONVERGENCE] Fully synchronized state reached for asset: {clip_key}", - flush=True, ) # Extract and unmap metadata tracking payloads safely from shared RAM memory space - clip_metadata = all_metadata.pop(clip_key, None) - clip_completion_tracker.pop(clip_key, None) + # clip_metadata = all_metadata.pop(clip_key, None) + # clip_completion_tracker.pop(clip_key, None) + clip_metadata = all_metadata.get(clip_key) + # Immediately delete the data from the global dictionaries to release VRAM + if clip_key in all_metadata: + del all_metadata[clip_key] + if clip_key in clip_completion_tracker: + del clip_completion_tracker[clip_key] + + gc.collect() + if "cuda" in self.device_input: + torch.cuda.empty_cache() if not self.config.TEST_MODE and clip_metadata: # Re-insert the fully constructed framework into the active VDMS queue worker pool @@ -4059,14 +4396,12 @@ def _evaluate_barrier_and_dispatch(self, clip_key, clip_path, frame_w, frame_h): global send_metadata_queue send_metadata_queue.put((clip_path, frame_w, frame_h)) - print( + main_app_logger.info( f" [BARRIER-INGEST] Unified data packages successfully submitted for DB processing: {clip_key}", - flush=True, ) elif not self.config.TEST_MODE: - print( + main_app_logger.info( f" [BARRIER-WARN] Synchronization completed but all_metadata structure for {clip_key} was empty!", - flush=True, ) elif not self.config.TEST_MODE: waiting_on = ( @@ -4074,208 +4409,12 @@ def _evaluate_barrier_and_dispatch(self, clip_key, clip_path, frame_w, frame_h): if not tracker["video"] else "AI frame processing execution" ) - print( + main_app_logger.info( f" [BARRIER-WAIT] {clip_key}: Milestone checked. Awaiting {waiting_on} before issuing DB ingestion call.", - flush=True, ) class GPUStreamHandler(DeviceBaseHandler): - def allocate_gpu(self): - """ - Allocates persistent GpuMat buffers and CUDA streams to - enable zero-copy GPU processing. - """ - self.stream = cv2.cuda.Stream() - self.ingest_stream = torch.cuda.Stream() - self.inference_stream = torch.cuda.Stream() - self.bgs_stream = cv2.cuda.Stream() - self.gpu_fullres_frame = cv2.cuda.GpuMat( - self.frame_height, self.frame_width, cv2.CV_8UC3 - ) - # self.resized_gpumat = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_8UC3) - self.resized_frame = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_8UC3) - self.resized_frame.setTo(0, self.bgs_stream) - self.fgMask = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_8UC1) - self.prev_bkgd = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_8UC1) - if self.config.BKGD_SUB_INCLUDE_HISTORY_METHOD == "and": - self.prev_bkgd.setTo((1,)) - else: - self.prev_bkgd.setTo((0,)) - self.mask_history = deque( - maxlen=self.config.BKGD_SUB_INCLUDE_HISTORY_TEMPORAL_SIZE - ) - self.mask_history.append(self.prev_bkgd) - self.gpu_threshold_dst_frame = cv2.cuda.GpuMat( - self.resize_h, self.resize_w, cv2.CV_8UC1 - ) - self.gpu_morphed_frame = cv2.cuda.GpuMat( - self.resize_h, self.resize_w, cv2.CV_8UC1 - ) - - self.upload_stream = cv2.cuda.Stream() - self.upload_event = cv2.cuda.Event() - - # self.queue_capacity = int(2 * self.target_fps) # 60 - self.num_buffers = int(2 * self.target_fps) # self.queue_capacity + 5 - self.gpu_buffer_pool = [ - cv2.cuda.GpuMat(self.frame_height, self.frame_width, cv2.CV_8UC3) - for _ in range(self.num_buffers) - ] - self.buffer_idx = 0 - - self.frame_buffer_pool = [ - torch.empty( - (3, self.frame_height, self.frame_width), - dtype=torch.uint8, - device="cuda", - ) - for _ in range(2) - ] - self.pool_idx = 0 - - # Create a matching pool of pinned host memory for the 8K frames - self.host_buffer_pool = [ - cv2.cuda.HostMem(self.frame_height, self.frame_width, cv2.CV_8UC3) - for _ in range(self.num_buffers) - ] - - # Create continuous buffers to prevent stride artifacts during 8K downloads - self.pinned_downloaded_resizedframe_np = cv2.cuda.createContinuous( - self.resize_h, self.resize_w, cv2.CV_8UC3 - ) - self.pinned_downloaded_frame_np = cv2.cuda.createContinuous( - self.resize_h, self.resize_w, cv2.CV_8UC1 - ) - cv2.cuda.createContinuous( - self.resize_h, self.resize_w, cv2.CV_8UC1, self.gpu_threshold_dst_frame - ) - cv2.cuda.createContinuous( - self.resize_h, self.resize_w, cv2.CV_8UC1, self.gpu_morphed_frame - ) - - # This prevents the AI thread from overwriting the encoder's data. - self.gpu_encoder_8k_buf = cv2.cuda.createContinuous( - self.frame_height, self.frame_width, cv2.CV_8UC3 - ) - - # Continuous allocation prevents stride/padding artifacts - self.gpu_display_frame = cv2.cuda.createContinuous( - self.disp_h, self.disp_w, cv2.CV_8UC3 - ) - - # Create a dedicated background stream for encoding tasks - self.encode_stream = cv2.cuda.Stream() - - # Allocate a permanent float32/float16 channel layout space directly on VRAM - self.static_gpu_360p = torch.empty( - (1, 3, self.disp_h, self.disp_w), - dtype=torch.float32, - device="cuda", - ) - self.static_gpu_byte_bchw = torch.empty( - (1, 3, self.disp_h, self.disp_w), - dtype=torch.uint8, - device="cuda", - ).contiguous() - - # Create two isolated tracking canvases to handle the ping-pong data stream - self.static_host_canvases = [ - np.zeros((self.disp_h, self.disp_w, 3), dtype=np.uint8), - np.zeros((self.disp_h, self.disp_w, 3), dtype=np.uint8), - ] - self.canvas_selector = 0 - - # Register BOTH buffers as page-locked memory - cv2.cuda.registerPageLocked(self.static_host_canvases[0]) - cv2.cuda.registerPageLocked(self.static_host_canvases[1]) - - def prepare_gpu_pipeline(self): - self.operation_device_map = PipelineMapping( - resize_device="gpu", - bkgd_subtraction_device="gpu", - threshold_device="gpu", - erodeAndDilate_device="gpu", - detection_device="gpu", - ) # rbtd_detection_gpu - - self.device_input = "cuda" - - self.allocate_gpu() - - # Subtraction - # history = int(2 * self.target_fps) # 300 # int(5 * self.target_fps) - self.lr = self.config.BKGD_SUB_MOG2_LR # 1 / history - self.backSub = cv2.cuda.createBackgroundSubtractorMOG2( - history=self.config.BKGD_SUB_MOG2_HISTORY, # Clear ghosts of fast drones in ~2 seconds (2*fps) - varThreshold=int( - 1.15 * self.config.BKGD_SUB_MOG2_VARTHRESHOLD - ), # High threshold to ignore "shimmer" and compression noise # default 16 - # CUDA implementation of MOG2 often requires a higher varThreshold to achieve the same "cleanliness" as the CPU (15-20%) - detectShadows=self.config.BKGD_SUB_MOG2_DETECTSHADOWS, # default True - ) - - self.dilate_filter = cv2.cuda.createMorphologyFilter( - cv2.MORPH_DILATE, cv2.CV_8U, self.dilate_kernel - ) - self.dilate_filter_for_enhanced_mask = cv2.cuda.createMorphologyFilter( - cv2.MORPH_DILATE, cv2.CV_8UC1, self.dilate_kernel_for_enhanced_mask - ) - # # self.morph_kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5, 5)) - # self.morph_kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5)) - # self.morph_filter = cv2.cuda.createMorphologyFilter( - # cv2.MORPH_DILATE, cv2.CV_8UC1, self.morph_kernel - # ) - # self.labels_gpu = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_32S) - self.labels_gpu = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_8U) - self.labels_gpu.setTo(0, self.bgs_stream) - - def gpu_warmup(self): - # WARM UP (Crucial for first-run latency) - # JIT kernels are compiled on the first call - h, w = self.resize_h, self.resize_w - - self.gpu_warmup_input_frame_np = cv2.cuda.createContinuous(h, w, cv2.CV_8UC3) - - if self.gpu_warmup_input_frame_np is not None: - self.gpu_warmup_input_frame_np[:] = [255, 0, 0] - - gpu_warmup_input_frame = cv2.cuda.GpuMat(h, w, cv2.CV_8U) - gpu_warmup_input_frame.upload(self.gpu_warmup_input_frame_np) - cv2.cuda.createContinuous(h, w, cv2.CV_8U, gpu_warmup_input_frame) - - # Trigger compiler - gpu_warmup_frame = cv2.cuda.GpuMat(h, w, cv2.CV_8U) - cv2.cuda.createContinuous(h, w, cv2.CV_8U, gpu_warmup_frame) - - cv2.cuda.resize( - gpu_warmup_input_frame, - (self.resize_w, self.resize_h), - stream=self.stream, - dst=gpu_warmup_frame, - interpolation=cv2.INTER_NEAREST, - ) - # Thresholding - gpu_threshold_dst_frame = cv2.cuda.GpuMat(h, w, cv2.CV_8U) - cv2.cuda.createContinuous(h, w, cv2.CV_8U, gpu_threshold_dst_frame) - cv2.cuda.threshold( - gpu_warmup_frame, - self.config.THRESHOLD_VALUE, - self.config.THRESHOLD_MAX_VALUE, - cv2.THRESH_BINARY, - gpu_threshold_dst_frame, - self.stream, - ) - - gpu_morphed_frame = cv2.cuda.GpuMat(h, w, cv2.CV_8U) - cv2.cuda.createContinuous(h, w, cv2.CV_8U, gpu_morphed_frame) - self.dilate_filter.apply( - gpu_threshold_dst_frame, gpu_morphed_frame, self.stream - ) - self.stream.waitForCompletion() - - torch.cuda.empty_cache() - def cleanup_gpu(self): """ Explicitly releases all GPU-allocated memory to prevent @@ -4290,7 +4429,7 @@ def cleanup_gpu(self): # 🏎️ Force the NVIDIA driver to deallocate this specific memory segment attr_value.release() setattr(self, attr_name, None) - print(f"✅ Released GpuMat: {attr_name}") + main_app_logger.info(f"✅ Released GpuMat: {attr_name}") if hasattr(self, "gpu_fullres_frame") and self.gpu_fullres_frame is not None: try: @@ -4328,8 +4467,8 @@ def cleanup_gpu(self): mat.release() self.gpu_crop_batch = [] - if hasattr(self, "stream"): - self.stream.waitForCompletion() + # if hasattr(self, "stream"): + # self.stream.waitForCompletion() self.pinned_downloaded_resizedframe_np = None self.gpu_threshold_dst_frame = None @@ -4346,549 +4485,21 @@ def cleanup_gpu(self): # Optional: Final flush of the CUDA caching allocator if torch.cuda.is_available(): + torch.cuda.synchronize() torch.cuda.empty_cache() - def apply_background_subtraction_gpuv1( - self, include_history=True, method="and", stream=None - ): - stream = stream if isinstance(stream, cv2.cuda.Stream) else self.stream - self.fgMask = self.backSub.apply( - self.resized_frame, float(self.lr), stream=stream - ) - - if include_history: - # If this is the first run, clone the mask instead of ANDing with an empty/white buffer - # if len(self.mask_history) < 1: - # self.prev_bkgd.setTo(255, stream) # Clear the initial white buffer - - for m in list(self.mask_history): - # Dilate the historical mask on GPU - dilated = self.dilate_filter_for_enhanced_mask.apply(m, stream=stream) - - if method == "or": - # Bitwise OR on GPU - cv2.cuda.bitwise_or( - self.prev_bkgd, dilated, self.prev_bkgd, stream=stream - ) - else: - # Bitwise AND on GPU - cv2.cuda.bitwise_and( - self.prev_bkgd, dilated, self.prev_bkgd, stream=stream - ) - - self.mask_history.append(self.fgMask.clone()) - - min_val, max_val, _, _ = cv2.cuda.minMaxLoc(self.prev_bkgd) - if max_val != min_val and max_val > 0: - # bitor = cv2.cuda.bitwise_or( - # self.fgMask, self.prev_bkgd, stream=stream - # ) - # bitand = cv2.cuda.bitwise_and( - # self.fgMask, self.prev_bkgd, stream=stream - # ) - # not_bitand = cv2.cuda.bitwise_not(self.prev_bkgd, stream=stream) - # self.fgMask = cv2.cuda.subtract(self.fgMask, bitand, stream=stream) - self.fgMask = cv2.cuda.bitwise_or( - self.fgMask, self.prev_bkgd, stream=stream - ) - # self.fgMask = cv2.cuda.bitwise_or( - # self.fgMask, self.mask_history[-2], stream=stream - # ) - # if method == "or": - # self.fgMask = cv2.cuda.bitwise_and( - # self.fgMask, self.prev_bkgd, stream=stream - # ) - # else: - # self.fgMask = cv2.cuda.bitwise_or( - # self.fgMask, self.prev_bkgd, stream=stream - # ) - - def apply_background_subtraction_gpu( - self, motion_input, include_history=True, method="and", stream=None - ): - stream = stream if isinstance(stream, cv2.cuda.Stream) else self.stream - raw_mask = self.backSub.apply( - motion_input, - 0.005, # float(self.lr), - stream=stream, - ) - - if include_history: - # If this is the first run, clone the mask instead of ANDing with an empty/white buffer - # if len(self.mask_history) < 1: - # self.prev_bkgd.setTo(255, stream) # Clear the initial white buffer - self.prev_bkgd.setTo(0, stream=self.bgs_stream) - for m in list(self.mask_history): - # Dilate the historical mask on GPU - dilated = self.dilate_filter_for_enhanced_mask.apply(m, stream=stream) - - if method == "or": - # Bitwise OR on GPU - cv2.cuda.bitwise_or( - self.prev_bkgd, dilated, self.prev_bkgd, stream=stream - ) - else: - # Bitwise AND on GPU - cv2.cuda.bitwise_and( - self.prev_bkgd, dilated, self.prev_bkgd, stream=stream - ) - - self.mask_history.append(raw_mask.clone()) - raw_mask = cv2.cuda.bitwise_or( - raw_mask, self.prev_bkgd, stream=self.bgs_stream - ) - return raw_mask - - # min_val, max_val, _, _ = cv2.cuda.minMaxLoc(self.prev_bkgd) - # if max_val != min_val and max_val > 0: - # # bitor = cv2.cuda.bitwise_or( - # # self.fgMask, self.prev_bkgd, stream=stream - # # ) - # # bitand = cv2.cuda.bitwise_and( - # # self.fgMask, self.prev_bkgd, stream=stream - # # ) - # # not_bitand = cv2.cuda.bitwise_not(self.prev_bkgd, stream=stream) - # # self.fgMask = cv2.cuda.subtract(self.fgMask, bitand, stream=stream) - # self.fgMask = cv2.cuda.bitwise_or( - # self.fgMask, self.prev_bkgd, stream=stream - # ) - # # self.fgMask = cv2.cuda.bitwise_or( - # # self.fgMask, self.mask_history[-2], stream=stream - # # ) - # # if method == "or": - # # self.fgMask = cv2.cuda.bitwise_and( - # # self.fgMask, self.prev_bkgd, stream=stream - # # ) - # # else: - # # self.fgMask = cv2.cuda.bitwise_or( - # # self.fgMask, self.prev_bkgd, stream=stream - # # ) - - def rbtd_full_gpuv1(self, frame): - """ - GPU-Accelerated Motion Detection Pipeline (Producer). - - This function performs high-speed background subtraction (BGS) on a downscaled - version of the 8K frame to identify regions of interest (ROIs). - - Args: - frame (np.ndarray): The raw 8K input frame. - frameNum (float): Chronological timestamp or ID. - - Returns: - dict: Contains the frame ID, the GPU-resident motion mask, and the original 8K frame. - """ - # stream = self.stream - - with torch.no_grad(): # , torch.cuda.stream(self.bgs_stream): - # frame is [3, 4320, 7680] - resized_torch = F.interpolate( - frame.unsqueeze(0).float(), - size=(self.resize_h, self.resize_w), - mode="nearest", - # mode="bilinear", - # align_corners=False, - ).squeeze(0) - # resized_torch = F.interpolate( - # frame.to(memory_format=torch.channels_last), - # size=(self.resize_h, self.resize_w), - # mode="nearest", - # # align_corners=False - # ) - - # CRITICAL: Change format from [3, 640, 640] to [640, 640, 3] - # .contiguous() is mandatory here to reorganize the actual memory bits - resized_torch = resized_torch.permute(1, 2, 0).byte().contiguous() - gpu_mat_view = cv2.cuda.createGpuMatFromCudaMemory( - self.resize_h, self.resize_w, cv2.CV_8UC3, resized_torch.data_ptr() - ) - - # Bridge the TINY 640p frame to OpenCV - # Moving 8K (100MB) to CPU takes 114ms. - # Moving 640p (1.2MB) to CPU takes <0.2ms. - # This preserves your 15 FPS target. - # small_cpu = resized_torch.permute(1, 2, 0).cpu().numpy() - # self.resized_frame.upload(small_cpu) - # gpu_mat_bridge = torch2gpumat(resized_torch.byte()) - gpu_mat_view.copyTo(self.bgs_stream, self.resized_frame) - self.apply_background_subtraction_gpu( - include_history=self.config.BKGD_SUB_INCLUDE_HISTORY, - method=self.config.BKGD_SUB_INCLUDE_HISTORY_METHOD, - stream=self.bgs_stream, - ) - - # Clean up the motion mask using Thresholding and Morphology (Dilation) - # Fused Cleanup (Threshold + Dilate) - # This replaces: cv2.cuda.threshold AND cv2.cuda.dilate - w, h = self.fgMask.size() - pitch = self.fgMask.step - tpb = (16, 16) - bpg = ((w + 15) // 16, (h + 15) // 16) - - # Bridge GpuMat to CuPy for the kernel - fg_ptr = self.fgMask.cudaPtr() - with cupy.cuda.ExternalStream(self.bgs_stream.cudaPtr()): - fg_cp = cupy.ndarray( - (h, w), - dtype=cupy.uint8, - memptr=cupy.cuda.MemoryPointer( - cupy.cuda.UnownedMemory(fg_ptr, pitch * h, self), 0 - ), - strides=(pitch, 1), - ) - - # Launch Fused Kernel - labels_ptr = self.labels_gpu.cudaPtr() - # Ensure this matches the size of fg_cp - labels_cp = cupy.ndarray( - (h, w), - dtype=cupy.uint8, - memptr=cupy.cuda.MemoryPointer( - cupy.cuda.UnownedMemory(labels_ptr, self.labels_gpu.step * h, self), - 0, - ), - strides=(self.labels_gpu.step, 1), - ) - # with cupy.cuda.ExternalStream(self.stream.cudaPtr()): - # Launch your kernel on the same physical GPU stream as OpenCV BGS - DETECTION_ACCEL_KERNEL( - bpg, - tpb, - (fg_cp, labels_cp, pitch, w, h, self.config.THRESHOLD_VALUE), - ) - # Ensure CuPy is done before the stream returns to OpenCV/PyTorch - # cupy.cuda.get_current_stream().synchronize() - - # if self.debug_range[0] <= self.frame_count <= self.debug_range[1]: - # after_cpu = self.labels_gpu.download() - # # Multiply by 50 to make distinct object labels visible - # visible_labels = (after_cpu * 50).clip(0, 255).astype(np.uint8) - # cv2.imwrite( - # f"{self.out_imgdir}/mask_AFTER_frame_{self.frame_count}.png", - # visible_labels, - # ) - - return { - # "frameNum": frameNum, # overall frame - "mask": self.labels_gpu, # GpuMat pointer to cleaned mask - # "full_frame": frame, # Kept for high-res cropping - "full_frame": frame, # current_gpu_frame, - } - - def rbtd_full_gpu(self, device_frame): - """ - Asynchronously handles downsampling, conversion, background subtraction, and - morphology while writing out intermediate files for stage-by-stage debugging. - """ - if self.config.DEBUG_FLAG: - # Create a dedicated directory structure for this stage's debug snapshots - stage_debug_dir = self.result_dir / "debug_stages" / self._testMethodName - stage_debug_dir.mkdir(parents=True, exist_ok=True) - f_num = self.frame_count_target - - # 1. BRIDGE THE PYTORCH TO OPENCV VRAM GAP (ZERO-COPY & STRIDE-ALIGNED) - if torch.is_tensor(device_frame): - h_raw, w_raw, ch = device_frame.shape - cuda_mem_ptr = device_frame.data_ptr() - cv_type = cv2.CV_8UC3 if ch == 3 else cv2.CV_8UC1 - - # Explicitly pass structural step row pitch to avoid memory tearing artifacts - row_step_bytes = device_frame.stride()[0] * device_frame.element_size() - src_gpu_mat = cv2.cuda.createGpuMatFromCudaMemory( - h_raw, w_raw, cv_type, cuda_mem_ptr, step=row_step_bytes - ) - else: - src_gpu_mat = device_frame - ch = src_gpu_mat.channels() - - # [STAGE 1 DEBUG] Save incoming source frame immediately after GpuMat mapping - if self.config.DEBUG_FLAG and f_num <= self.config.DEBUG_FRAME_LIMIT: - src_cpu = src_gpu_mat.download() - # If the source is in RGB, flip channels to BGR so cv2.imwrite saves true colors - if ch == 3: - src_cpu = cv2.cvtColor(src_cpu, cv2.COLOR_RGB2BGR) - cv2.imwrite( - str(stage_debug_dir / f"frame_{f_num:04d}_stage1_src.jpg"), src_cpu - ) - - # 2. INSTANTIATE GPUMAT CONTROLLERS WITH STRIDED LAYOUT HEADERS - recycled_resize_mat = cv2.cuda.GpuMat( - self.resize_h, self.resize_w, cv2.CV_8UC3 if ch == 3 else cv2.CV_8UC1 - ) - gray_resize_mat = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_8UC1) - raw_mask = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_8UC1) - thresh_mask = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_8UC1) - clean_mask = cv2.cuda.GpuMat(self.resize_h, self.resize_w, cv2.CV_8UC1) - - # 3. RUN ASYNCHRONOUS DOWN-SAMPLING GATE - cv2.cuda.resize( - src_gpu_mat, - dst=recycled_resize_mat, - dsize=(self.resize_w, self.resize_h), - interpolation=cv2.INTER_NEAREST, - stream=self.bgs_stream, - ) - - # [STAGE 2 DEBUG] Check Downsampled Frame - if self.config.DEBUG_FLAG and f_num <= self.config.DEBUG_FRAME_LIMIT: - self.bgs_stream.waitForCompletion() # Synchronize stream briefly to download safely - resize_cpu = recycled_resize_mat.download() - if ch == 3: - resize_cpu = cv2.cvtColor(resize_cpu, cv2.COLOR_RGB2BGR) - cv2.imwrite( - str(stage_debug_dir / f"frame_{f_num:04d}_stage2_resize.jpg"), - resize_cpu, - ) - - # 4. COLOR LAYOUT CORRECTION (COLLAPSE CHANNELS SAFELY) - if recycled_resize_mat.channels() == 3: - # NOTE: If your input tensor is RGB, use COLOR_RGB2GRAY. - # If it's already converted to BGR inside your framework handlers, keep COLOR_BGR2GRAY. - cv2.cuda.cvtColor( - recycled_resize_mat, - cv2.COLOR_BGR2GRAY, - dst=gray_resize_mat, - stream=self.bgs_stream, - ) - motion_input = gray_resize_mat - else: - motion_input = recycled_resize_mat - - # [STAGE 3 DEBUG] Check Grayscale Input going into Background Subtractor - if self.config.DEBUG_FLAG and f_num <= self.config.DEBUG_FRAME_LIMIT: - self.bgs_stream.waitForCompletion() - gray_cpu = motion_input.download() - cv2.imwrite( - str(stage_debug_dir / f"frame_{f_num:04d}_stage3_gray.jpg"), gray_cpu - ) - - # 5. EXECUTE BACKGROUND SUBTRACTION - # raw_mask = self.backSub.apply( - # motion_input, - # 0.005, # float(self.lr) - # stream=self.bgs_stream, - # ) - - raw_mask = self.apply_background_subtraction_gpu( - motion_input, - include_history=self.config.BKGD_SUB_INCLUDE_HISTORY, - method=self.config.BKGD_SUB_INCLUDE_HISTORY_METHOD, - stream=self.bgs_stream, - ) - # [STAGE 4 DEBUG] Check Raw Output directly from Subtractor Kernel - # if self.config.DEBUG_FLAG and f_num <= self.config.DEBUG_FRAME_LIMIT: - # self.bgs_stream.waitForCompletion() - # raw_mask_cpu = raw_mask.download() - # cv2.imwrite(str(stage_debug_dir / f"frame_{f_num:04d}_stage4_raw_mask.jpg"), raw_mask_cpu) - - # 6. MASK HISTORY ACCUMULATION LIFECYCLE - # include_history = self.config.BKGD_SUB_INCLUDE_HISTORY - # method = self.config.BKGD_SUB_INCLUDE_HISTORY_METHOD - # if include_history: - # self.prev_bkgd.setTo(0, stream=self.bgs_stream) - # for m in list(self.mask_history): - # dilated = self.dilate_filter_for_enhanced_mask.apply( - # m, stream=self.bgs_stream - # ) - # if method == "or": - # cv2.cuda.bitwise_or( - # self.prev_bkgd, dilated, self.prev_bkgd, stream=self.bgs_stream - # ) - # else: - # cv2.cuda.bitwise_and( - # self.prev_bkgd, dilated, self.prev_bkgd, stream=self.bgs_stream - # ) - - # self.mask_history.append(raw_mask.clone()) - # raw_mask = cv2.cuda.bitwise_or( - # raw_mask, self.prev_bkgd, stream=self.bgs_stream - # ) - - # [STAGE 5 DEBUG] Check Mask after History ORing/ANDing steps - if self.config.DEBUG_FLAG and f_num <= self.config.DEBUG_FRAME_LIMIT: - self.bgs_stream.waitForCompletion() - hist_mask_cpu = raw_mask.download() - cv2.imwrite( - str(stage_debug_dir / f"frame_{f_num:04d}_stage5_history_mask.jpg"), - hist_mask_cpu, - ) - - # 7. MORPHOLOGICAL TRANSFORMATIONS & BINARY FILTERS - cv2.cuda.threshold( - raw_mask, - self.config.THRESHOLD_VALUE, - self.config.THRESHOLD_MAX_VALUE, - cv2.THRESH_BINARY, - thresh_mask, - stream=self.bgs_stream, - ) - - # [STAGE 6 DEBUG] Check Binary Threshold Output - if self.config.DEBUG_FLAG and f_num <= self.config.DEBUG_FRAME_LIMIT: - self.bgs_stream.waitForCompletion() - thresh_cpu = thresh_mask.download() - cv2.imwrite( - str(stage_debug_dir / f"frame_{f_num:04d}_stage6_threshold.jpg"), - thresh_cpu, - ) - - self.dilate_filter.apply(thresh_mask, clean_mask, self.bgs_stream) - - # 8. ENFORCE INDEPENDENT WORKSPACE MEMORY VIEWS - isolated_kernel_mask = cv2.cuda.GpuMat( - self.resize_h, self.resize_w, cv2.CV_8UC1 - ) - clean_mask.copyTo(dst=isolated_kernel_mask, stream=self.bgs_stream) - - # [STAGE 7 DEBUG] Check Final Dilated Output Mask - if self.config.DEBUG_FLAG and f_num <= self.config.DEBUG_FRAME_LIMIT: - self.bgs_stream.waitForCompletion() - final_mask_cpu = isolated_kernel_mask.download() - cv2.imwrite( - str(stage_debug_dir / f"frame_{f_num:04d}_stage7_final_mask.jpg"), - final_mask_cpu, - ) - - return { - "mask": isolated_kernel_mask, - "full_frame": device_frame, - } - - def findContours_gpu(self, mask, method="fused"): - # self.stream.waitForCompletion() - h, w = mask.size() - ptr = mask.cudaPtr() - pitch = mask.step - mask_cp = cupy.ndarray( - (h, w), - dtype=cupy.uint8, - memptr=cupy.cuda.MemoryPointer( - cupy.cuda.UnownedMemory(ptr, pitch * h, self), 0 - ), - strides=(pitch, 1), - ) - - labeled, num_labels = cupyx.scipy.ndimage.label(mask_cp, output=cupy.int32) - # labeled = labeled.astype(cupy.int32) - # labeled.strides is in bytes. For int32, we need row-start in bytes. - labeled_pitch_bytes = labeled.strides[0] - - if num_labels == 0: - return torch.empty((0, 4), device="cuda") - - # Pre-allocate bounds with sentinels - x1, y1 = ( - cupy.full((num_labels + 1,), w, dtype=cupy.int32), - cupy.full((num_labels + 1,), h, dtype=cupy.int32), - ) - x2, y2 = ( - cupy.full((num_labels + 1,), -1, dtype=cupy.int32), - cupy.full((num_labels + 1,), -1, dtype=cupy.int32), - ) - - # BOUNDS_KERNEL(((w+15)//16, (h+15)//16), (16, 16), (labeled, w, h, num_labels, x1, y1, x2, y2)) - BOUNDS_KERNEL( - ((w + 15) // 16, (h + 15) // 16), - (16, 16), - ( - labeled.data.ptr, - labeled_pitch_bytes, - w, - h, - num_labels, - x1.data.ptr, - y1.data.ptr, - x2.data.ptr, - y2.data.ptr, - ), - ) - # cupy.cuda.get_current_stream().synchronize() - # cupy.cuda.Stream.null.synchronize() - # Convert to torch - boxes = torch.stack( - [ - torch.as_tensor(x1[1:], device="cuda"), - torch.as_tensor(y1[1:], device="cuda"), - torch.as_tensor(x2[1:], device="cuda"), - torch.as_tensor(y2[1:], device="cuda"), - ], - dim=1, - ).float() - - # --- CRITICAL FIX: Filter out boxes that weren't updated by the kernel --- - # A valid box must have x2 >= x1 - valid_mask = boxes[:, 2] >= boxes[:, 0] - boxes = boxes[valid_mask] - - # if boxes.shape[0] > 0: - # print(f"[GPU] Found {boxes.shape[0]} boxes", flush=True) - return boxes - class CPUStreamHandler(DeviceBaseHandler): - def allocate_cpu(self): - # pass - self.resized_frame = np.zeros((3, self.resize_h, self.resize_w), dtype="uint8") - # cv2.cuda.createContinuous( - # self.resize_h, self.resize_w, cv2.CV_8UC3 - # ) - - self.fgMask = np.zeros( - (self.resize_h, self.resize_w), dtype="uint8" - ) # For resize - - if self.config.BKGD_SUB_INCLUDE_HISTORY_METHOD == "and": - self.prev_bkgd = np.ones( - (self.resize_h, self.resize_w), dtype="uint8" - ) # * 255 - else: - self.prev_bkgd = np.zeros((self.resize_h, self.resize_w), dtype="uint8") - - # self.prev_bkgd = np.ones((self.resize_h, self.resize_w), dtype="uint8") * 255 - - self.mask_history = deque( - maxlen=self.config.BKGD_SUB_INCLUDE_HISTORY_TEMPORAL_SIZE - ) - self.mask_history.append(self.prev_bkgd) - - def prepare_cpu_pipeline(self): # , method="mog2"): - self.operation_device_map = PipelineMapping() # "full_cpu" - self.device_input = self.operation_device_map.detection_device - - self.allocate_cpu() - - # Subtraction - # if method == "knn": - # history = 300 # int(5 * self.target_fps) - # background_thresh = 350 - # NSamples = 10 - # kNNSamples = 2 - # self.lr = 1 / history - - # self.backSub = cv2.createBackgroundSubtractorKNN( - # history=history, # default 500 - # dist2Threshold=background_thresh, # default 400 - # detectShadows=False, # default True - # ) - # self.backSub.setkNNSamples(kNNSamples) - # self.backSub.setNSamples(NSamples) - # elif method == "mog2": - # history = int(2 * self.target_fps) - # background_thresh = 10 - self.lr = self.config.BKGD_SUB_MOG2_LR - - self.backSub = cv2.createBackgroundSubtractorMOG2( - history=self.config.BKGD_SUB_MOG2_HISTORY, # Clear ghosts of fast drones in ~2 seconds (2*fps) - varThreshold=self.config.BKGD_SUB_MOG2_VARTHRESHOLD, # High threshold to ignore "shimmer" and compression noise # default 16 - detectShadows=self.config.BKGD_SUB_MOG2_DETECTSHADOWS, # default True - ) - # else: - # raise ValueError(f"Provided method ({method}) is not available.") - def cleanup_cpu(self): """ Purges large 8K NumPy buffers and CPU-based AI resources. """ + self._pinned_small_frame = None + self._pinned_fg_mask = None + self._pinned_blurred_mask = None + self._pinned_threshold_mask = None + self._pinned_dilated_mask = None + # Nullify specific class references to allow Garbage Collection self.executor = None self.clip_executor = None @@ -4907,225 +4518,3 @@ def cleanup_cpu(self): # Clear the BGS history if hasattr(self, "mask_history"): self.mask_history.clear() - - def apply_background_subtraction_cpuv1(self, include_history=True, method="and"): - self.fgMask = self.backSub.apply( - self.cpu_resized_frame, learningRate=float(self.lr) - ) - - if include_history: - # If this is the first run, clone the mask instead of ANDing with an empty/white buffer - # if len(self.mask_history) < 1: - # self.prev_bkgd.setTo(0, stream) # Clear the initial white buffer - - for m in list(self.mask_history): - # Dilate the historical mask on CPU - dilated = cv2.dilate( - m, self.dilate_kernel_for_enhanced_mask, iterations=1 - ) - - if method == "or": - # Bitwise OR on CPU - cv2.bitwise_or(self.prev_bkgd, dilated, dst=self.prev_bkgd) - else: - # Bitwise AND on CPU - cv2.bitwise_and(self.prev_bkgd, dilated, dst=self.prev_bkgd) - - self.mask_history.append(self.fgMask.copy()) - - if ( - self.prev_bkgd.max() != self.prev_bkgd.min() - and self.prev_bkgd.max() > 0 - ): - combined_mask_bool = (self.fgMask > 0) | (self.prev_bkgd > 0) - self.fgMask = combined_mask_bool.astype(np.uint8) * 255 - - def apply_background_subtraction_cpu( - self, motion_input, include_history=True, method="and" - ): - raw_mask = self.backSub.apply( - motion_input, learningRate=self.config.BKGD_SUB_MOG2_LR - ) - - if include_history: - # If this is the first run, clone the mask instead of ANDing with an empty/white buffer - # if len(self.mask_history) < 1: - # self.prev_bkgd.setTo(0, stream) # Clear the initial white buffer - self.prev_bkgd = np.zeros((self.resize_h, self.resize_w), dtype="uint8") - for m in list(self.mask_history): - # Dilate the historical mask on CPU - dilated = cv2.dilate( - m, self.dilate_kernel_for_enhanced_mask, iterations=1 - ) - - if method == "or": - # Bitwise OR on CPU - cv2.bitwise_or(self.prev_bkgd, dilated, dst=self.prev_bkgd) - else: - # Bitwise AND on CPU - cv2.bitwise_and(self.prev_bkgd, dilated, dst=self.prev_bkgd) - - self.mask_history.append(raw_mask.copy()) - - # if ( - # self.prev_bkgd.max() != self.prev_bkgd.min() - # and self.prev_bkgd.max() > 0 - # ): - # combined_mask_bool = (self.fgMask > 0) | (self.prev_bkgd > 0) - # self.fgMask = combined_mask_bool.astype(np.uint8) * 255 - raw_mask = cv2.bitwise_or(raw_mask, self.prev_bkgd) - return raw_mask - - def rbtd_full_cpuv1(self, frame): - """ - CPU-Based Motion Detection Pipeline (Producer). - - Performs background subtraction on the CPU to identify moving objects. - Ideal for saving VRAM or for environments without high-end NVIDIA GPUs. - - Args: - frame (np.ndarray): The raw 8K input frame. - frameNum (float): Unique ID for the current frame. - - Returns: - dict: Motion data containing the frame ID, CPU-based mask, and original 8K frame. - """ - # Resize the 8K frame to a smaller 'model' size (e.g., 640x640) - # Using INTER_NEAREST as it is the fastest CPU interpolation method. - # H, W = self.resize_h, self.resize_w - self.cpu_resized_frame = cv2.resize( - frame, (self.resize_w, self.resize_h), interpolation=cv2.INTER_NEAREST - ) - # if self.config.ENABLE_QUERYING and self.video_writer: - # self.write_queue.put(self.cpu_resized_frame.copy()) - - # Apply Background Subtraction on CPU - self.apply_background_subtraction_cpu( - include_history=self.config.BKGD_SUB_INCLUDE_HISTORY, - method=self.config.BKGD_SUB_INCLUDE_HISTORY_METHOD, - ) - - # ---------------- - # NOISE FILTERING: Median Blur - # Kills small single-pixel noise specs - # self.fgMask = cv2.medianBlur(self.fgMask, 5) - - # # MORPHOLOGY: Opening (Erode then Dilate) - # kernel = np.ones((3,3), np.uint8) - - # # Remove small specs - # self.fgMask = cv2.erode(self.fgMask, kernel, iterations=2) - - # # Re-expand and connect nearby moving pixels - # self.fgMask = cv2.dilate(self.fgMask, kernel, iterations=2) - # return {"mask": self.fgMask, "full_frame": frame} - # ---------------- - - # Clean up the motion mask using Thresholding and Morphology (Dilation) - _, mask = cv2.threshold( - self.fgMask, - self.config.THRESHOLD_VALUE, - self.config.THRESHOLD_MAX_VALUE, - cv2.THRESH_BINARY, - ) - mask = cv2.dilate(mask, self.dilate_kernel, iterations=1) - - return { - # "frameNum": frameNum, # overall frame - "mask": mask, - "full_frame": frame, # Kept for high-res cropping - } - - # def rbtd_full_cpu(self, frame): - # # --- PHASE 1: NATIVE CACHE-PINNED RESIZE --- - # # Fetch the exact background resolution constraints natively required by your config - # # We assume self.resize_w and self.resize_h reflect your locked tracking target dimensions - # target_w, target_h = self.resize_w, self.resize_h - - # # Safe Multi-Threaded Canvas Initialization Guard: - # # Dynamically instantiate the static persistent memory matrices on the first frame pass. - # # This completely stops the Python heap engine from allocating new arrays on subsequent frames. - # if not hasattr(self, "_pinned_small_frame") or self._pinned_small_frame.shape[ - # :2 - # ] != (target_h, target_w): - # self._pinned_small_frame = np.zeros((target_h, target_w, 3), dtype=np.uint8) - # self._pinned_fg_mask = np.zeros((target_h, target_w), dtype=np.uint8) - # self._pinned_dilated_mask = np.zeros((target_h, target_w), dtype=np.uint8) - # self._pinned_global_mask = np.zeros(frame.shape[:2], dtype=np.uint8) - - # # Force a zero-allocation resize into our pre-allocated, sequential cache-line matrix buffer - # cv2.resize( - # frame, - # (target_w, target_h), - # dst=self._pinned_small_frame, - # interpolation=cv2.INTER_NEAREST, - # ) - - # # --- PHASE 2: STRIPPED SINGLE-THREAD BACKGROUND ARITHMETIC --- - # # Run background subtraction straight into our static memory address lane - # # We pass your configured learning rate (BKGD_SUB_MOG2_LR) to lock the temporal parameters - # self._pinned_fg_mask = self.backSub.apply( - # self._pinned_small_frame, - # # dst=self._pinned_fg_mask, - # learningRate=self.config.BKGD_SUB_MOG2_LR, - # ) - - # # Execute morphology dilation inline within our zero-allocation ring workspace [PDF: 0.1.18] - # cv2.dilate( - # self._pinned_fg_mask, - # self.dilate_kernel, - # dst=self._pinned_dilated_mask, - # iterations=1, - # ) - - # return {"full_frame": frame, "mask": self._pinned_dilated_mask} - - def rbtd_full_cpu(self, frame): - # --- PHASE 1: NATIVE CACHE-PINNED RESIZE --- - # Fetch the exact background resolution constraints natively required by your config - # We assume self.resize_w and self.resize_h reflect your locked tracking target dimensions - target_w, target_h = self.resize_w, self.resize_h - - # Safe Multi-Threaded Canvas Initialization Guard: - # Dynamically instantiate the static persistent memory matrices on the first frame pass. - # This completely stops the Python heap engine from allocating new arrays on subsequent frames. - if not hasattr(self, "_pinned_small_frame") or self._pinned_small_frame.shape[ - :2 - ] != (target_h, target_w): - self._pinned_small_frame = np.zeros((target_h, target_w, 3), dtype=np.uint8) - self._pinned_fg_mask = np.zeros((target_h, target_w), dtype=np.uint8) - self._pinned_dilated_mask = np.zeros((target_h, target_w), dtype=np.uint8) - self._pinned_global_mask = np.zeros(frame.shape[:2], dtype=np.uint8) - - # Force a zero-allocation resize into our pre-allocated, sequential cache-line matrix buffer - cv2.resize( - frame, - (target_w, target_h), - dst=self._pinned_small_frame, - interpolation=cv2.INTER_NEAREST, - ) - - # --- PHASE 2: STRIPPED SINGLE-THREAD BACKGROUND ARITHMETIC --- - # Run background subtraction straight into our static memory address lane - # We pass your configured learning rate (BKGD_SUB_MOG2_LR) to lock the temporal parameters - # self._pinned_fg_mask = self.backSub.apply( - # self._pinned_small_frame, - # # dst=self._pinned_fg_mask, - # learningRate=self.config.BKGD_SUB_MOG2_LR, - # ) - - self._pinned_fg_mask = self.apply_background_subtraction_cpu( - self._pinned_small_frame, - include_history=self.config.BKGD_SUB_INCLUDE_HISTORY, - method=self.config.BKGD_SUB_INCLUDE_HISTORY_METHOD, - ) - - # Execute morphology dilation inline within our zero-allocation ring workspace [PDF: 0.1.18] - cv2.dilate( - self._pinned_fg_mask, - self.dilate_kernel, - dst=self._pinned_dilated_mask, - iterations=1, - ) - - return {"full_frame": frame, "mask": self._pinned_dilated_mask} diff --git a/fastapi/include/models.py b/fastapi/include/models.py index a20792c..3be6e20 100644 --- a/fastapi/include/models.py +++ b/fastapi/include/models.py @@ -6,13 +6,13 @@ from pathlib import Path import tensorrt as trt +from torch import cuda +from ultralytics import YOLO +from ultralytics.utils.checks import check_requirements sys.path.insert(1, str(Path(__file__).parent.parent)) from include.default_configs import ENABLE_QUERYING_DEFAULT from include.utils import PipelineConfig, get_freest_gpu, str2bool -from torch import cuda -from ultralytics import YOLO -from ultralytics.utils.checks import check_requirements # OBJECT DETECTION diff --git a/fastapi/include/readers.py b/fastapi/include/readers.py index dc89d23..c08b7e1 100644 --- a/fastapi/include/readers.py +++ b/fastapi/include/readers.py @@ -1,12 +1,20 @@ +# ============================================================================== +# IMPORTS import ctypes +import gc +import inspect import logging +import multiprocessing as mp import os -import queue +import signal import sys import threading import time -from multiprocessing import Process, Value +import types +from collections import deque +from multiprocessing import Condition, Process, Value from multiprocessing.shared_memory import SharedMemory +from pathlib import Path import av import cv2 @@ -14,28 +22,36 @@ import torch from ultralytics.utils.checks import check_imgsz -# ----- SETUP LOGGING ----- +sys.path.insert(1, str(Path(__file__).parent.parent)) +from include.default_configs import ENABLE_QUERYING_DEFAULT +from include.utils import ( + PipelineConfig, + ResourceTrackerFilter, + manual_fps_calculation, + str2bool, +) + +# ============================================================================== +# LOGGING + logging.basicConfig( level=logging.INFO, - format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", + # format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", + format="%(asctime)s [%(levelname)s] %(name)s (%(filename)s:%(lineno)d) - %(message)s", handlers=[logging.StreamHandler(sys.stdout)], ) -# Suppress low-delay reference block warnings from OpenCV/PyAV/FFmpeg -os.environ["OPENCV_FFMPEG_LOGLEVEL"] = "-8" -os.environ["OPENCV_LOG_LEVEL"] = "OFF" logging.getLogger("libav").setLevel(logging.CRITICAL) logging.getLogger("libav.hevc").setLevel(logging.CRITICAL) av.logging.set_level(av.logging.PANIC) main_app_logger = logging.getLogger(__name__) -# ----- PIPELINE CONFIGURATION ----- -os.environ["PYTORCH_ALLOC_CONF"] = "expandable_segments:True" -cv2.setNumThreads(0) -from include.default_configs import ENABLE_QUERYING_DEFAULT -from include.utils import PipelineConfig, manual_fps_calculation, str2bool +# ============================================================================== +# PIPELINE CONFIGURATION + +cv2.setNumThreads(0) BASE_PIPELINE_CONFIG = PipelineConfig( CODE_DIR=os.getenv("CODE_DIR", "/home"), @@ -55,86 +71,9 @@ UDF_PORT=5011, ) -# def capture_shared_memory_worker(source_input, shm_name, frame_shape, running_flag): -# """Isolated background process bypassing the GIL to update raw uncompressed RAM.""" -# if str(source_input).lower().startswith("rtsp://"): -# os.environ["OPENCV_FFMPEG_CAPTURE_OPTIONS"] = "rtsp_transport;tcp;buffer_size;15728640;threads;16" -# elif "OPENCV_FFMPEG_CAPTURE_OPTIONS" in os.environ: -# del os.environ["OPENCV_FFMPEG_CAPTURE_OPTIONS"] - -# cap = cv2.VideoCapture(source_input, cv2.CAP_FFMPEG) -# if not cap.isOpened(): -# running_flag.value = False -# return - -# existing_shm = SharedMemory(name=shm_name) -# shared_array = np.ndarray(frame_shape, dtype=np.uint8, buffer=existing_shm.buf) - -# try: -# while running_flag.value: -# ret, frame = cap.read() -# if not ret or frame is None: -# running_flag.value = False -# break -# shared_array[:] = frame[:] -# except Exception: -# running_flag.value = False -# finally: -# cap.release() -# existing_shm.close() - -import sys - -# Self-contained worker script executed in an isolated process shell to prevent global CUDA import pollution -# WORKER_SCRIPT = """ -# import os -# import sys -# import cv2 -# import numpy as np -# from multiprocessing.shared_memory import SharedMemory -# source_input = sys.argv[1] -# shm_name = sys.argv[2] -# h, w, c = map(int, sys.argv[3].split(',')) -# frame_shape = (h, w, c) -# retry_cnt = 0 -# max_retries = 5 -# cap = None -# if str(source_input).lower().startswith("rtsp://"): -# os.environ["OPENCV_FFMPEG_CAPTURE_OPTIONS"] = "rtsp_transport;tcp;buffer_size;15728640;threads;16" -# while retry_cnt < max_retries: -# cap = cv2.VideoCapture(source_input, cv2.CAP_FFMPEG) -# if cap.isOpened(): -# break -# retry_cnt += 1 -# # Exit immediately if it's a local file path layout to save CPU cycles -# if not str(source_input).lower().startswith("rtsp://"): -# break -# wait_time = retry_cnt * 2 -# # Standard string stdout message to pass back to the tracking shell logs -# print(f"RTSP background channel pending... Retry ({retry_cnt}/{max_retries}) in {wait_time}s.") -# import time -# time.sleep(wait_time) -# if cap is None or not cap.isOpened(): -# import sys -# sys.exit(1) -# try: -# shm = SharedMemory(name=shm_name) -# shared_array = np.ndarray(frame_shape, dtype=np.uint8, buffer=shm.buf) -# # Read continuously until stdin is closed by the parent process -# while sys.stdin.read(1) == '1': -# ret, frame = cap.read() -# if not ret or frame is None: -# break -# shared_array[:] = frame[:] -# except Exception: -# pass -# finally: -# cap.release() -# """ -from multiprocessing import Condition - def capture_shared_memory_worker( + startup_event, source_input, shm_names, frame_shape, @@ -145,6 +84,8 @@ def capture_shared_memory_worker( frame_condition, buffer_occupancy, target_fps, + slot_available_event, + num_shm_slots, ): """Isolated background process using triple-buffering pointer rotation to eliminate memcpy.""" if str(source_input).lower().startswith("rtsp://"): @@ -156,6 +97,9 @@ def capture_shared_memory_worker( elif "OPENCV_FFMPEG_CAPTURE_OPTIONS" in os.environ: del os.environ["OPENCV_FFMPEG_CAPTURE_OPTIONS"] + if startup_event: + startup_event.wait() # Worker will pause here until the main app is ready + retry_cnt = 0 max_retries = 5 cap = None @@ -205,41 +149,73 @@ def capture_shared_memory_worker( while running_flag.value: # 1. Check if this frame is a targeted frame before running heavy decode operations is_target_frame = worker_frame_num >= worker_next_process_idx + raw_frame_counter.value = int(worker_frame_num) worker_frame_num += 1.0 if not is_target_frame: # Fast metadata-only skip: Zero heavy decode compute or CPU/GPU overhead if not cap.grab(): running_flag.value = False + with frame_condition: + frame_condition.notify_all() break + # raw_frame_counter.value += 1 continue ret, frame = cap.read() if not ret or frame is None: running_flag.value = False + with frame_condition: + frame_condition.notify_all() break worker_next_process_idx += step_size # Prevent local files from overwriting unread ring buffer slots --- + # if not str(source_input).lower().startswith("rtsp://"): + # # while buffer_occupancy.value >= 2 and running_flag.value: + # # pass + # with frame_condition: + # while buffer_occupancy.value >= 2 and running_flag.value: + # # Drop the thread into a low-power kernel sleep state + # frame_condition.wait(timeout=0.01) + + # Prevent local files from overwriting unread ring buffer slots losslessly + # if not str(source_input).lower().startswith("rtsp://"): + # if buffer_occupancy.value >= 2: + # slot_available_event.clear() # Lock the gate + # while buffer_occupancy.value >= 2 and running_flag.value: + # # Block instantly via kernel context without time-stepping drifts + # slot_available_event.wait(timeout=1.0) + if not str(source_input).lower().startswith("rtsp://"): - while buffer_occupancy.value >= 2 and running_flag.value: - pass + max_allowed_occupancy = num_shm_slots - 1 + while ( + buffer_occupancy.value >= max_allowed_occupancy + and running_flag.value + ): + time.sleep(0.001) # Dynamic Ring Buffer Selection: Identify free block curr_latest = latest_idx.value curr_reader = reader_idx.value - for idx in (0, 1, 2): + + write_idx = None + for idx in range(num_shm_slots): if idx != curr_latest and idx != curr_reader: write_idx = idx break + # Fallback if somehow all slots are locked (should theoretically never happen) + if write_idx is None: + write_idx = (curr_latest + 1) % num_shm_slots + arrays[write_idx][:] = frame[:] # Notify waiting processing loops without any polling latency with frame_condition: latest_idx.value = write_idx - raw_frame_counter.value += 1 + # raw_frame_counter.value += 1 buffer_occupancy.value += 1 frame_condition.notify_all() # Wake up all waiting reader threads instantly! @@ -247,14 +223,24 @@ def capture_shared_memory_worker( running_flag.value = False finally: cap.release() + + # Delete the memoryview-holding arrays first + del arrays + for shm in shm_blocks: - shm.close() + try: + shm.close() + except Exception: + pass + del shm_blocks + gc.collect() class BaseReader: def __init__( self, source, + startup_event=None, target_fps=BASE_PIPELINE_CONFIG.TARGET_FPS, clip_duration=BASE_PIPELINE_CONFIG.CLIP_DURATION, MODEL_W=BASE_PIPELINE_CONFIG.MODEL_W, @@ -263,7 +249,8 @@ def __init__( ): self.source = source self.is_rtsp = str(self.source).startswith("rtsp://") - self.frame_queue = queue.Queue(maxsize=queue_size) + # self.frame_queue = queue.Queue(maxsize=queue_size) + self.frame_queue = deque(maxlen=queue_size) self.stopped = False self.total_input_frames = 0 # Increments by step size (Physical frames) self.target_frames_passed = 0 # Increments sequentially (Target space frames) @@ -337,7 +324,6 @@ def __init__( raise RuntimeError( f"Critical stream reader initialization failure: {self.init_error}" ) - return wait_time = retry_cnt * 2 main_app_logger.warning( @@ -360,17 +346,13 @@ def __init__( self.frame_shape = (self.frame_height, self.frame_width, 3) self.frame_bytes = self.frame_width * self.frame_height * 3 - num_shm_slots = 3 + # Need exactly 3 slots to prevent a lock collision + num_shm_slots = max(3, queue_size) self.shms = [ SharedMemory(create=True, size=self.frame_bytes) for _ in range(num_shm_slots) ] - # Unregister slots in the main process to eliminate leak warnings and KeyErrors cleanly - # from multiprocessing import resource_tracker - # for shm in self.shms: - # resource_tracker.unregister(shm._name, "shared_memory") - self.running_flag = Value("b", True) self.raw_frame_counter = Value("i", 0) self.latest_idx = Value("i", 0) # Tracks the newest complete frame index @@ -381,10 +363,13 @@ def __init__( # Create a shared cross-process condition lock variable self.frame_condition = Condition() + self.slot_available_event = mp.Event() + self.slot_available_event.set() # Default to unblocked state self.worker = Process( target=capture_shared_memory_worker, args=( + startup_event, self.source, shm_names, self.frame_shape, @@ -395,6 +380,8 @@ def __init__( self.frame_condition, self.buffer_occupancy, self.target_fps, + self.slot_available_event, + num_shm_slots, ), daemon=True, ) @@ -409,18 +396,54 @@ def __init__( "Background worker process failed to map the stream link." ) - # self.shared_array_view = np.ndarray(self.frame_shape, dtype=np.uint8, buffer=self.shms.buf) - # self.static_buffer_numpy = np.empty(self.frame_shape, dtype=np.uint8) - - # self.thread = threading.Thread(target=self._processing_loop, daemon=True) - # self.thread.start() - def read(self): - try: - wait_time = 0.1 if self.stopped else 2.0 - return self.frame_queue.get(timeout=wait_time) - except Exception: - return None, None, None + """ + Optimized Kernel-Native Condition Event queue fetcher. + Parks the consumer thread instantly without CPU thrashing or GIL locks, + waking up on hardware-driven signals from the producer process. + """ + # Escape check: Stream explicitly halted and queue empty + if self.stopped and len(self.frame_queue) == 0: + return False, None, None, None, None + + # # 2. Native Hardware Wait Boundary + # # If the queue is starved, drop the thread into an un-polled kernel block + # if len(self.frame_queue) == 0 and not self.stopped: + # with self.frame_condition: + # # Re-verify inside the lock to safely block multi-thread race patterns + # while len(self.frame_queue) == 0 and not self.stopped: + # # Increase watchdog timeout from 2.0s to 10.0s for local file testing + # timeout_sec = 2.0 if self.is_rtsp else 10.0 + + # # Thread blocks via OS futex without time-stepping drift or context jitter. + # # Wakes up immediately when the processing loop fires notify_all(). + # if not self.frame_condition.wait(timeout=timeout_sec): + # # Watchdog trigger: 2 seconds of zero frame activity indicates a dead stream + # return ( + # False, + # None, + # None, + # self.target_frames_passed, + # self.total_input_frames, + # ) + + # Lock-Free Pop Extraction Pass + if len(self.frame_queue) > 0: + try: + return self.frame_queue.popleft() + except IndexError: + pass # Multi-thread race fallback guard rail + + # Brief non-blocking yield if queue is momentarily empty + if not self.stopped: + time.sleep(0.001) + if len(self.frame_queue) > 0: + try: + return self.frame_queue.popleft() + except IndexError: + pass + + return False, None, None, self.target_frames_passed, self.total_input_frames def start(self): self.thread = threading.Thread(target=self._processing_loop, daemon=True) @@ -428,21 +451,208 @@ def start(self): return self def stop(self): + """Cleanly unregisters the locked memory mapping blocks from the OS page table.""" + if self.stopped: + return + self.stopped = True - if hasattr(self, "thread"): - self.thread.join(timeout=1.0) - for shm in self.shms: + + # Signal the worker process to exit its loop + if hasattr(self, "running_flag"): + self.running_flag.value = False + + if hasattr(self, "worker") and self.worker is not None: try: - shm.close() - shm.unlink() + if self.worker.is_alive(): + self.worker.terminate() + self.worker.join(timeout=0.5) + # Execute an OS-level SIGKILL fallback if process flags hang + if self.worker.is_alive() and getattr(self.worker, "pid", None): + os.kill(self.worker.pid, signal.SIGKILL) + self.worker.join() + except Exception: + pass + self.worker = None + + # Join active processing pools and thread handles safely + if hasattr(self, "frame_condition") and self.frame_condition is not None: + try: + with self.frame_condition: + self.frame_condition.notify_all() except Exception: pass + self.frame_condition = None + + if hasattr(self, "thread") and self.thread is not None: + try: + if self.thread.is_alive(): + self.thread.join(timeout=0.5) + except Exception: + pass + self.thread = None + + # 6. Set and unbind OS-level Event notification primitive file descriptor pipelines + if ( + hasattr(self, "slot_available_event") + and self.slot_available_event is not None + ): + try: + self.slot_available_event.set() + if ( + hasattr(self.slot_available_event, "_handle") + and self.slot_available_event._handle + ): + self.slot_available_event._handle.close() + except Exception: + pass + self.slot_available_event = None + + # 7. Drain and empty the frame buffer queue completely + if hasattr(self, "frame_queue") and self.frame_queue is not None: + try: + while len(self.frame_queue) > 0: + self.frame_queue.popleft() + except Exception: + pass + self.frame_queue = None + + if hasattr(self, "shms") and self.shms: + for shm_block in list(self.shms): + try: + if hasattr(shm_block, "buf") and shm_block.buf is not None: + shm_block.buf.release() + except Exception: + pass + try: + shm_block.close() + except Exception: + pass + try: + shm_block.unlink() + except Exception: + pass + self.shms.clear() if hasattr(self, "bridge_thread"): self.bridge_thread.join(timeout=1.0) - if hasattr(self, "worker"): - self.worker.join(timeout=1.0) + for primitive_attr in [ + "running_flag", + "buffer_occupancy", + "latest_idx", + "reader_idx", + "raw_frame_counter", + ]: + if hasattr(self, primitive_attr): + setattr(self, primitive_attr, None) + + self.clean_up_tensors_and_arrays() + + def clean_up_tensors_and_arrays(self): + main_app_logger.info( + "[READER CLEANUP] Safely stripping active runtime arrays ..." + ) + # Collect references safely using strict type checking + # This completely avoids pulling unmanaged proxy objects from the heap + all_live_objects = gc.get_objects() + + target_tensors = [] + target_arrays = [] + + for obj in all_live_objects: + try: + obj_type = type(obj) + if isinstance(obj, types.FrameType): + frame_info = inspect.getframeinfo(obj) + if ( + "openvino" in frame_info.filename + or "openvino.py" in frame_info.filename + ): + # Clear the frame's local variable dictionary to break circular references + obj.f_locals.clear() + + # Check for concrete types to prevent triggering proxy __getattr__ hooks + if obj_type is torch.Tensor: + target_tensors.append(obj) + elif obj_type is np.ndarray: + # Explicitly guard size checks to keep it completely stable + if obj.base is None and obj.ndim > 0: + target_arrays.append(obj) + except Exception: + pass + + # 3. Truncate discovered references in-place without triggering deletions + reclaimed_tensors = 0 + for tensor in target_tensors: + try: + # Truncate raw storage footprint safely + tensor.data = torch.empty(0, device=self.device_input) + reclaimed_tensors += 1 + except Exception: + pass + + reclaimed_arrays = 0 + for arr in target_arrays: + try: + # Shrink writeable numpy arrays down to 0 bytes safely + if arr.flags.writeable: + arr.resize((0,), refcheck=False) + reclaimed_arrays += 1 + except (ValueError, SystemError): + pass + + main_app_logger.info( + f"[READER CLEANUP] Reclaimed {reclaimed_tensors} tensors and {reclaimed_arrays} arrays safely." + ) + + # Clean local registers immediately + all_live_objects = None + target_tensors = None + target_arrays = None + gc.collect() + + def unlink_shared_memory(self, all_shm_keys): + for key in all_shm_keys: + val = getattr(self, key, None) + if val is None: + continue + for shm in list(val): + if shm is not None: + try: + # Drop direct memoryview trackers instantly + if hasattr(shm, "buf") and shm.buf is not None: + try: + shm.buf.release() + except Exception: + pass + + # Invalidate private mmap structures to drop pytest stack frame caches + if hasattr(shm, "_mmap") and shm._mmap is not None: + try: + shm._mmap = None + except Exception: + pass + + # try: + # shm.__class__.__del__ = lambda self: None + # except Exception: + # pass + + # # Unlink text descriptors out of the core tracker process + # shm_descriptor = shm._name if shm._name.startswith("/") else f"/{shm._name}" + # try: + # unregister(shm_descriptor, "shared_memory") + # except Exception: + # pass + + shm.close() + shm.unlink() + except Exception: + pass + try: + val.clear() + except Exception: + pass # Gets video details def get_fps_and_framecnt(self, cap, target_fps, clip_duration): @@ -450,7 +660,7 @@ def get_fps_and_framecnt(self, cap, target_fps, clip_duration): # print(f"in fps: {self.input_fps} target fps: {target_fps}") if self.input_fps == 0: # Case when FPS isn't available self.input_fps = manual_fps_calculation(cap, num_frames=10) - print(f"new in fps: {self.input_fps}") + main_app_logger.debug(f"new in fps: {self.input_fps}") self.numFrames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT)) if not self.is_rtsp: self.total_input_frames = self.numFrames @@ -466,8 +676,9 @@ def get_fps_and_framecnt(self, cap, target_fps, clip_duration): else self.input_fps ) + self.step_size = self.input_fps / self.target_fps if self.input_fps > 0 and self.target_fps > 0: - self.frame_skip = max(1, int(self.input_fps / self.target_fps)) + self.frame_skip = max(1, int(self.step_size)) else: self.frame_skip = 1 # self.skip_count = self.frame_skip - 1 @@ -490,10 +701,8 @@ def get_frameWH(self): [self.frame_height, self.frame_width] ) # expects hxw - new_sizeWH = (new_sizeHW[1], new_sizeHW[0]) - - self.width = new_sizeWH[0] - self.height = new_sizeWH[1] + self.width = new_sizeHW[1] + self.height = new_sizeHW[0] # Configure scaling for 8K-to-Model coordinate mapping self.resize_h, self.resize_w = [self.MODEL_H, self.MODEL_W] @@ -507,6 +716,7 @@ class CPUReader(BaseReader): def __init__( self, source, + startup_event=None, target_fps=BASE_PIPELINE_CONFIG.TARGET_FPS, clip_duration=BASE_PIPELINE_CONFIG.CLIP_DURATION, MODEL_W=BASE_PIPELINE_CONFIG.MODEL_W, @@ -522,6 +732,7 @@ def __init__( # self.total_d2h_time = 0.0 super().__init__( source, + startup_event=startup_event, target_fps=target_fps, clip_duration=clip_duration, MODEL_W=MODEL_W, @@ -531,7 +742,7 @@ def __init__( # self.MODEL_H = MODEL_H # self.MODEL_W = MODEL_W - self.device = "CPU" + self.device_index = "cpu" # self.shm = SharedMemory(create=True, size=self.frame_bytes) # self.running_flag = Value('b', True) @@ -555,6 +766,7 @@ def __init__( # self.thread = threading.Thread(target=self._processing_loop, daemon=True) # self.thread.start() + @torch.inference_mode() def _processing_loop(self): # target_fps = 15.0 # frame_num = 0.0 @@ -581,14 +793,15 @@ def _processing_loop(self): while ( self.latest_idx.value == last_processed_shm_idx and not self.stopped ): - if not self.frame_condition.wait(timeout=0.05): + if not self.frame_condition.wait(timeout=0.5): if ( not self.running_flag.value - and self.latest_idx.value == last_processed_shm_idx + # and self.latest_idx.value == last_processed_shm_idx ): self.stopped = True break - continue + # continue + # self.frame_condition.wait() if self.stopped: break @@ -598,6 +811,7 @@ def _processing_loop(self): # Signal the worker that a slot has cleared up losslessly --- self.buffer_occupancy.value = max(0, self.buffer_occupancy.value - 1) + # self.slot_available_event.set() # is_target_frame = (frame_num >= next_process_idx) # Reconstruct source frame position using step spacing ratio @@ -605,11 +819,16 @@ def _processing_loop(self): # self.total_input_frames = int( # self.target_frames_passed * getattr(self, "frame_skip", 1) # ) - if self.is_rtsp: - self.total_input_frames = int(self.raw_frame_counter.value) + # if self.is_rtsp: + + target_frames_passed = self.target_frames_passed + # total_input_frames = int( + # target_frames_passed * getattr(self, "frame_skip", 1) + # ) # int(self.raw_frame_counter.value) + total_input_frames = round(target_frames_passed * self.step_size) # Update counters inside target_fps space loop execution - self.target_frames_passed += 1 + self.total_input_frames = total_input_frames # if not is_target_frame: # continue @@ -635,13 +854,44 @@ def _processing_loop(self): ) self.total_shm_copy_time += time.perf_counter() - t_copy - if not self.is_rtsp or not self.frame_queue.full(): - t_queue_block = time.perf_counter() - # self.frame_queue.put((True, cpu_360p_frame)) - self.frame_queue.put( - (True, frame_view, self.target_frames_passed) - ) # self.static_buffer_numpy.copy())) - self.total_queue_wait_time += time.perf_counter() - t_queue_block + t_queue_block = time.perf_counter() + # if not self.is_rtsp or not self.frame_queue.full(): + # t_queue_block = time.perf_counter() + # # self.frame_queue.put((True, cpu_360p_frame)) + # self.frame_queue.put( + # (True, frame_view, target_frames_passed, total_input_frames), + # # timeout=1.0, + # ) # self.static_buffer_numpy.copy())) + # self.total_queue_wait_time += time.perf_counter() - t_queue_block + + if self.is_rtsp: + # If the consumer loop drops frames, instantly evict the oldest + # matrix view reference to keep frame processing real-time. + if len(self.frame_queue) >= self.frame_queue.maxlen: + try: + self.frame_queue.popleft() + except IndexError: + pass + self.frame_queue.append( + (True, frame_view, None, target_frames_passed, total_input_frames) + ) + else: + # Lossless tracking sequence for local testing files + # while len(self.frame_queue) >= self.frame_queue.maxlen and not self.stopped: + # time.sleep(0.001) + safe_cpu_copy = frame_view.copy() + self.frame_queue.append( + ( + True, + safe_cpu_copy, + None, + target_frames_passed, + total_input_frames, + ) + ) + + self.total_queue_wait_time += time.perf_counter() - t_queue_block + self.target_frames_passed += 1 # frame_num += 1.0 @@ -651,6 +901,7 @@ def _processing_loop(self): # if time_to_wait > 0: # time.sleep(time_to_wait) + # self.frame_queue.put((False, None, target_frames_passed, total_input_frames)) # self.frame_idx = frame_num # self.running_flag.value = False @@ -661,6 +912,7 @@ class GPUReader(BaseReader): def __init__( self, source, + startup_event=None, gpu_id=1, # 0, target_fps=BASE_PIPELINE_CONFIG.TARGET_FPS, clip_duration=BASE_PIPELINE_CONFIG.CLIP_DURATION, @@ -677,6 +929,7 @@ def __init__( # self.total_d2h_time = 0.0 super().__init__( source, + startup_event=startup_event, target_fps=target_fps, clip_duration=clip_duration, MODEL_W=MODEL_W, @@ -685,7 +938,7 @@ def __init__( ) self.gpu_id = gpu_id - self.device = torch.device(f"cuda:{gpu_id}") + self.device_index = torch.device(f"cuda:{gpu_id}") # self.shm = SharedMemory(create=True, size=self.frame_bytes) # self.running_flag = Value('b', True) @@ -706,6 +959,23 @@ def __init__( # self.shared_array_view = np.ndarray(self.frame_shape, dtype=np.uint8, buffer=self.shm.buf) # Reusable hardware space optimizations + + self._static_gpu_frame_buffer = torch.empty( + (self.frame_height, self.frame_width, 3), + dtype=torch.uint8, + device=self.device_index, + ) + self._flipped_static_gpu_frame_buffer = torch.empty_like( + self._static_gpu_frame_buffer + ) + # Pre-allocate a second buffer for the BGR conversion. + # This is our destination tensor. + self._bgr_gpu_frame_buffer = torch.empty( + (self.frame_height, self.frame_width, 3), + dtype=torch.uint8, + device=self.device_index, + ) + # self.static_buffer_tensor = torch.empty(self.frame_shape, dtype=torch.uint8, pin_memory=True) # self.static_buffer_numpy = self.static_buffer_tensor.numpy() # Reusable double-buffered hardware space optimizations @@ -715,9 +985,9 @@ def __init__( # ] # self.static_buffer_numpys = [t.numpy() for t in self.static_buffer_tensors] # self.buffer_selector = 0 # Alternates between 0 and 1 - self.upload_stream = torch.cuda.Stream(device=self.device) + self.upload_stream = torch.cuda.Stream(device=self.device_index) - self.download_stream = torch.cuda.Stream(device=self.device) + self.download_stream = torch.cuda.Stream(device=self.device_index) self.d2h_buffers = [ torch.empty((360, 640, 3), dtype=torch.uint8, pin_memory=True), torch.empty((360, 640, 3), dtype=torch.uint8, pin_memory=True), @@ -725,60 +995,92 @@ def __init__( self.d2h_numpys = [b.numpy() for b in self.d2h_buffers] self.d2h_selector = 0 - # Reusable hardware space optimizations using OS-level Page-Locking - try: - self.cudart = ctypes.CDLL("libcudart.so") # Linux - except OSError: - self.cudart = ctypes.CDLL("cudart64_120.dll") # Windows - self.pinned_views = [] - cudaHostRegisterPortable = 0x01 # Visible to all CUDA contexts - - # Permanently register and create zero-copy tensor views over all 3 SHM allocations for shm in self.shms: - # 1. Create a ctypes character array mapping directly onto the memoryview buffer - ctypes_array = (ctypes.c_char * self.frame_bytes).from_buffer(shm.buf) - - # 2. Extract the true virtual memory address pointer from the ctypes overlay - shm_ptr = ctypes.c_void_p(ctypes.addressof(ctypes_array)) - - # 3. Pin the raw memory chunk inside the OS page tracking tables - res = self.cudart.cudaHostRegister( - shm_ptr, self.frame_bytes, cudaHostRegisterPortable - ) - if res != 0: - raise RuntimeError(f"cudaHostRegister failed with status code: {res}") - - # 4. Create a high-speed zero-copy NumPy -> Torch wrapper view over that allocation shm_numpy = np.ndarray(self.frame_shape, dtype=np.uint8, buffer=shm.buf) shm_tensor = torch.from_numpy(shm_numpy) self.pinned_views.append(shm_tensor) + # # Reusable hardware space optimizations using OS-level Page-Locking + # try: + # self.cudart = ctypes.CDLL("libcudart.so") # Linux + # except OSError: + # try: + # self.cudart = ctypes.CDLL("libcudart.so.12") + # except OSError: + # self.cudart = ctypes.CDLL("cudart64_120.dll") - # self.thread = threading.Thread(target=self._processing_loop, daemon=True) - # self.thread.start() + # self.cudart.cudaHostRegister.argtypes = [ctypes.c_void_p, ctypes.c_size_t, ctypes.c_uint] + # self.cudart.cudaHostRegister.restype = ctypes.c_int - def _processing_loop(self): - # target_fps = 15.0 - # frame_num = 0.0 - # next_process_idx = 0.0 - # step_size = float(self.input_fps) / float(self.target_fps) - # # self.total_queue_wait_time = 0.0 + # self.cudart.cudaHostUnregister.argtypes = [ctypes.c_void_p] + # self.cudart.cudaHostUnregister.restype = ctypes.c_int - # # Base loop pacing on the native camera interval (e.g., 33.3ms for 30 FPS) - # inbound_frame_interval = 1.0 / float(self.input_fps) - last_processed_shm_idx = -1 - torch.cuda.synchronize(self.device) + # self.pinned_views = [] + # cudaHostRegisterPortable = 0x01 # Visible to all CUDA contexts - while not self.stopped: # and self.running_flag.value: - # loop_start = time.perf_counter() - # is_target_frame = (frame_num >= next_process_idx) + # # Permanently register and create zero-copy tensor views over all 3 SHM allocations + # for shm in self.shms: + # # 1. Create a ctypes character array mapping directly onto the memoryview buffer + # ctypes_array = (ctypes.c_char * self.frame_bytes).from_buffer(shm.buf) - # # Central timeline step tracking - # frame_num += 1.0 + # # 2. Extract the true virtual memory address pointer from the ctypes overlay + # shm_ptr = ctypes.c_void_p(ctypes.addressof(ctypes_array)) - # if not is_target_frame: - # continue + # # 3. Pin the raw memory chunk inside the OS page tracking tables + # res = self.cudart.cudaHostRegister( + # shm_ptr, self.frame_bytes, cudaHostRegisterPortable + # ) + # # if res != 0: + # if res == 712: + # # main_app_logger.warning( + # # f"[CUDA SHM] Address {hex(ctypes.addressof(ctypes_array))} is already page-locked. Reusing active pin safely." + # # ) + # main_app_logger.info( + # f"[CUDA RESTORE] Found stale page-lock at {hex(shm_ptr.value)}. Forcing reset..." + # ) + # # try: + # # # Load low-level driver to break the lazy process hold + # # # import ctypes + # # # cuda_driver = ctypes.CDLL("libcuda.so") #.6") + # # # cuda_driver.cuMemHostUnregister(shm_ptr) + # # # force_clear_driver_cuda_pin(shm_ptr.value) + # # try: + # # cuda_driver = ctypes.CDLL("libcuda.so.6") + # # except OSError: + # # cuda_driver = ctypes.CDLL("libcuda.so") + + # # # Break the registration using the low-level driver layout hook + # # cuda_driver.cuMemHostUnregister(shm_ptr) + # self.cudart.cudaHostUnregister(shm_ptr) + # # Re-register immediately within the new PyTorch runtime context + # res = self.cudart.cudaHostRegister( + # shm_ptr, self.frame_bytes, cudaHostRegisterPortable + # ) + # # except Exception as e: + # # main_app_logger.debug( + # # f"Driver pin restoration fallback skipped: {e}" + # # ) + # if res != 0 and res != 712: + # raise RuntimeError(f"cudaHostRegister failed with status code: {res}") + + # # 4. Create a high-speed zero-copy NumPy -> Torch wrapper view over that allocation + # # shm_numpy = np.ndarray(self.frame_shape, dtype=np.uint8, buffer=shm.buf) + # shm_numpy = np.frombuffer(shm._mmap, dtype=np.uint8).reshape( + # self.frame_shape + # ) + # shm_tensor = torch.from_numpy(shm_numpy) + # self.pinned_views.append(shm_tensor) + # self.thread = threading.Thread(target=self._processing_loop, daemon=True) + # self.thread.start() + + @torch.inference_mode() + def _processing_loop_v1(self): + last_processed_shm_idx = -1 + # torch.cuda.synchronize(self.device_index) + torch.cuda.synchronize() + + while not self.stopped: # and self.running_flag.value: with self.frame_condition: # Thread sleeps instantly until the background worker calls notify_all() # self.frame_condition.wait(timeout=1.0) @@ -786,14 +1088,15 @@ def _processing_loop(self): while ( self.latest_idx.value == last_processed_shm_idx and not self.stopped ): - if not self.frame_condition.wait(timeout=0.05): + if not self.frame_condition.wait(timeout=0.5): if ( not self.running_flag.value - and self.latest_idx.value == last_processed_shm_idx + # and self.latest_idx.value == last_processed_shm_idx ): self.stopped = True break - continue + # continue + # self.frame_condition.wait() if self.stopped: break @@ -801,71 +1104,47 @@ def _processing_loop(self): self.reader_idx.value = active_idx last_processed_shm_idx = active_idx - # Update counters inside target_fps space loop execution - self.target_frames_passed += 1 - - # Reconstruct source frame position using step spacing ratio - # if self.numFrames != 0: - # self.total_input_frames = int( - # self.target_frames_passed * getattr(self, "frame_skip", 1) - # ) - if self.is_rtsp: - self.total_input_frames = int(self.raw_frame_counter.value) - # Signal the worker that a slot has cleared up losslessly --- self.buffer_occupancy.value = max(0, self.buffer_occupancy.value - 1) + # self.slot_available_event.set() - # is_target_frame = (frame_num >= next_process_idx) - - # if not is_target_frame: - # continue + target_frames_passed = self.target_frames_passed + # total_input_frames = int( + # target_frames_passed * getattr(self, "frame_skip", 1) + # ) # int(self.raw_frame_counter.value) + total_input_frames = round(target_frames_passed * self.step_size) - # # Check if frame is a target frame before heavy operations - # # if frame_num >= next_process_idx: - # next_process_idx += step_size + # Update counters inside target_fps space loop execution + self.total_input_frames = total_input_frames t_copy = time.perf_counter() - # np.copyto(self.static_buffer_numpy, self.shared_array_view) - # Zero-Copy Pointer Swap: lock the latest completed buffer index - # active_idx = self.latest_idx.value - # self.reader_idx.value = active_idx - # last_processed_shm_idx = active_idx - - # # Signal the worker that a slot has cleared up losslessly --- - # self.buffer_occupancy.value = max(0, self.buffer_occupancy.value - 1) - - # Wrap an array view directly around the locked active SHM region - # active_shm = self.shms[active_idx] - # frame_view = np.ndarray(self.frame_shape, dtype=np.uint8, buffer=active_shm.buf) - - # Select the current active buffer slot - # buf_idx = self.buffer_selector - # current_numpy_buf = self.static_buffer_numpys[buf_idx] - # current_tensor_buf = self.static_buffer_tensors[buf_idx] - # np.copyto(current_numpy_buf, frame_view) current_tensor_view = self.pinned_views[active_idx] self.total_shm_copy_time += time.perf_counter() - t_copy - # if self.frame_queue.full() and self.is_rtsp: - # # If the consumer loop is dragging, discard this frame instantly - # # without allocating any memory or touching the PCIe bus. - # return - # ASYNCHRONOUS PCIe UPLOAD (Only runs for target frames) t_h2d = time.perf_counter() - # Isolate the PCIe upload onto its own dedicated side hardware stream - # with torch.cuda.stream(self.upload_stream): - # compute_tensor = self.static_buffer_tensor.to(self.device, non_blocking=True) - # Upload directly from the selected zero-copy host view area - # compute_tensor = torch.from_numpy(frame_view).to(self.device, non_blocking=True) - # compute_tensor = current_tensor_buf.to(self.device, non_blocking=True) - - # Transfer the raw [H, W, 3] uint8 tensor to VRAM via DMA copy - compute_tensor = current_tensor_view.to(self.device, non_blocking=True) - bgr_tensor = compute_tensor[:, :, [2, 1, 0]].contiguous() - # torch.cuda.synchronize(self.device) + self._static_gpu_frame_buffer.copy_(current_tensor_view, non_blocking=False) + + # 2. Native Channel Inversion View (RGB -> BGR) + # Instead of calling OpenCV, use standard tensor index slicing. + # This keeps the execution entirely in PyTorch's native C++ backend. + # bgr_view = self._static_gpu_frame_buffer[:, :, [2, 1, 0]] + + # 3. Fast Contiguity Restoration Block + # Rather than letting downstream handlers detect a non-contiguous stride + # layout (which causes major latency spikes), enforce memory linearity + # asynchronously inside the upload stream context here: + # bgr_tensor = bgr_view.contiguous() + # bgr_tensor = torch.flip(self._static_gpu_frame_buffer, dims=[2]).contiguous() + # torch.cuda.synchronize(self.device_index) + self._bgr_gpu_frame_buffer[:, :, 0] = self._static_gpu_frame_buffer[:, :, 2] + self._bgr_gpu_frame_buffer[:, :, 1] = self._static_gpu_frame_buffer[:, :, 1] + self._bgr_gpu_frame_buffer[:, :, 2] = self._static_gpu_frame_buffer[:, :, 0] + + # The final tensor to be sent is now the pre-allocated BGR buffer. + bgr_tensor = self._bgr_gpu_frame_buffer self.total_h2d_time += time.perf_counter() - t_h2d # self.buffer_selector = 1 - self.buffer_selector @@ -876,51 +1155,569 @@ def _processing_loop(self): current_event = torch.cuda.Event() current_event.record(self.upload_stream) # current_event.wait() - torch.cuda.current_stream().wait_event(current_event) + # --- + if self.is_rtsp: + if len(self.frame_queue) >= self.frame_queue.maxlen: + try: + # Pop the oldest item from the queue + stale_item = self.frame_queue.popleft() + # Extract its tracking event reference + stale_event = stale_item[2] + if stale_event: + # Clear the event reference without blocking the hot loop + del stale_event + except IndexError: + pass + self.frame_queue.append( + ( + True, + bgr_tensor, + current_event, + target_frames_passed, + total_input_frames, + ) + ) + + else: + # LOCAL Lossless Files: Check the previous frame's hardware event + # instead of blocking on the current frame's upload status. + if len(self.frame_queue) >= self.frame_queue.maxlen: + # Retrieve the oldest active item to check its status + oldest_frame_set = self.frame_queue[0] + oldest_event = oldest_frame_set[2] + + if oldest_event and not oldest_event.query(): + # Only wait if the hardware lane is completely saturated + # oldest_event.synchronize() + + # Yield thread execution priority cooperatively for a microscopic window + # to let the PCIe DMA engine finish transferring bytes smoothly + time.sleep(0.0005) + # 2. Asynchronous Watchdog Check + if not oldest_event.query(): + oldest_event.synchronize() # Hard fence fallback only when fully saturated + + # self.frame_queue.append( + # (True, bgr_tensor, current_event, target_frames_passed, total_input_frames) + # ) + with self.frame_condition: + self.frame_queue.append( + ( + True, + bgr_tensor, + current_event, + target_frames_passed, + total_input_frames, + ) + ) + self.frame_condition.notify_all() # Instantly wake up your main read lane! + + # --- - # self.frame_queue.put((True, cpu_360p_frame)) - self.frame_queue.put( - (True, bgr_tensor.detach(), self.target_frames_passed) - ) # .clone())) self.total_queue_wait_time += time.perf_counter() - t_queue_block + self.target_frames_passed += 1 + del bgr_tensor, current_tensor_view # bgr_view + + # @torch.inference_mode() + # def _processing_loop(self): + # last_processed_shm_idx = -1 + # # torch.cuda.synchronize(self.device_index) + # torch.cuda.synchronize() + + # while not self.stopped: # and self.running_flag.value: + # with self.frame_condition: + # # Thread sleeps instantly until the background worker calls notify_all() + # # self.frame_condition.wait(timeout=1.0) + # # Only wait if the background worker hasn't delivered a new index yet + # while ( + # self.latest_idx.value == last_processed_shm_idx and not self.stopped + # ): + # if not self.frame_condition.wait(timeout=0.5): + # if ( + # not self.running_flag.value + # # and self.latest_idx.value == last_processed_shm_idx + # ): + # self.stopped = True + # break + # # continue + # # self.frame_condition.wait() + # if self.stopped: + # break + + # active_idx = self.latest_idx.value + # self.reader_idx.value = active_idx + # last_processed_shm_idx = active_idx + + # # Signal the worker that a slot has cleared up losslessly --- + # self.buffer_occupancy.value = max(0, self.buffer_occupancy.value - 1) + # # self.slot_available_event.set() + + # target_frames_passed = self.target_frames_passed + # # total_input_frames = int( + # # target_frames_passed * getattr(self, "frame_skip", 1) + # # ) # int(self.raw_frame_counter.value) + # total_input_frames = round(target_frames_passed * self.step_size) + + # # Update counters inside target_fps space loop execution + # self.total_input_frames = total_input_frames + + # t_copy = time.perf_counter() + # # np.copyto(current_numpy_buf, frame_view) + # current_tensor_view = self.pinned_views[active_idx] + # self.total_shm_copy_time += time.perf_counter() - t_copy + + # # ASYNCHRONOUS PCIe UPLOAD (Only runs for target frames) + # t_h2d = time.perf_counter() + + # with torch.cuda.stream(self.upload_stream): + # self._static_gpu_frame_buffer.copy_(current_tensor_view, non_blocking=True) + + # # Record the hardware completion event directly + # current_event = torch.cuda.Event() + # current_event.record(self.upload_stream) + # self.total_h2d_time += time.perf_counter() - t_h2d + + # # self.buffer_selector = 1 - self.buffer_selector + + # # if not self.is_rtsp or not self.frame_queue.full(): + # t_queue_block = time.perf_counter() + # # Record an event on the stream and make the main thread wait for it asynchronously + # # current_event = torch.cuda.Event() + # # current_event.record(self.upload_stream) + # # current_event.wait() + # # --- + # if len(self.frame_queue) >= self.frame_queue.maxlen: + # try: + # self.frame_queue.popleft() + # except IndexError: + # pass + + # self.frame_queue.append( + # ( + # True, + # self._static_gpu_frame_buffer, + # current_event, + # target_frames_passed, + # total_input_frames, + # ) + # ) + + # # --- + + # self.total_queue_wait_time += time.perf_counter() - t_queue_block + # self.target_frames_passed += 1 + # del bgr_tensor, current_tensor_view # bgr_view + + @torch.inference_mode() + def _processing_loop(self): + """ + High-Throughput Asynchronous GPU Frame Ingestion Loop. - # frame_num += 1.0 - # self.frame_idx += 1 + Transfers decoded 8K BGR frames from shared memory into pre-allocated VRAM buffers + over a dedicated CUDA upload stream without blocking the CPU thread. + """ + last_processed_shm_idx = -1 - # Keep the reader thread aligned with target ingestion speeds - # elapsed = time.perf_counter() - loop_start - # time_to_wait = inbound_frame_interval - elapsed - # if time_to_wait > 0: - # time.sleep(time_to_wait) - # Explicitly delete frame variables to free their references - if "compute_tensor" in locals(): - del compute_tensor + # Pre-synchronize the upload stream before entering the hot loop + if hasattr(self, "upload_stream") and self.upload_stream is not None: + self.upload_stream.synchronize() + + while not self.stopped: + # PULL NEXT READY FRAME INDEX FROM BACKGROUND WORKER ----------------- + if hasattr(self, "frame_condition") and self.frame_condition is not None: + with self.frame_condition: + # Wait for the background reader process to deliver a new frame slot + while ( + self.latest_idx.value == last_processed_shm_idx + and not self.stopped + ): + if not self.frame_condition.wait(timeout=0.2): + if ( + not getattr(self, "running_flag", None) + or not self.running_flag.value + ): + self.stopped = True + break + if self.stopped: + break + + active_idx = self.latest_idx.value + self.reader_idx.value = active_idx + last_processed_shm_idx = active_idx + + # Decrement buffer occupancy atomically + if hasattr(self, "buffer_occupancy"): + self.buffer_occupancy.value = max(0, self.buffer_occupancy.value - 1) - # Force PyTorch's internal allocator to release cached segments back to the OS - # torch.cuda.empty_cache() - # torch.cuda.ipc_collect() + # Calculate physical vs. target frame indices + target_frames_passed = self.target_frames_passed + total_input_frames = round( + target_frames_passed * getattr(self, "step_size", 1.0) + ) + self.total_input_frames = total_input_frames - # self.frame_idx = frame_num - # self.running_flag.value = False + # 2. ZERO-COPY HOST TENSOR RETRIEVAL ----------------------------------- + current_tensor_view = self.pinned_views[active_idx] + + # 3. ASYNCHRONOUS PCIe UPLOAD TO GPU (VRAM) --------------------------- + t_h2d = time.perf_counter() + + # Execute DMA copy and hardware event record on the dedicated upload stream + with torch.cuda.stream(self.upload_stream): + # Asynchronous PCIe Host-to-Device transfer (Takes < 0.1ms CPU time) + self._static_gpu_frame_buffer.copy_( + current_tensor_view, non_blocking=True + ) + + # Fast Zero-Allocation Color Swap (BGR Device -> RGB Device) + # .flip(dims=[2]) creates a fast virtual view. + # .copy_() writes it contiguously into the pre-allocated RGB buffer. + self._flipped_static_gpu_frame_buffer.copy_( + self._static_gpu_frame_buffer.flip(dims=[2]), non_blocking=True + ) + + # Record hardware completion barrier on the upload stream + current_event = torch.cuda.Event() + current_event.record(self.upload_stream) + + self.total_h2d_time += time.perf_counter() - t_h2d + + # 4. LOCK-FREE THREAD-SAFE QUEUE INGESTION ----------------------------- + t_queue_block = time.perf_counter() + + # Evict oldest unread frame if queue is full to preserve real-time latency + # if len(self.frame_queue) >= self.frame_queue.maxlen: + # try: + # self.frame_queue.popleft() + # except IndexError: + # pass + + # # Push the VRAM buffer and hardware completion event to the consumer queue + # self.frame_queue.append( + # ( + # True, + # self._static_gpu_frame_buffer, + # current_event, + # target_frames_passed, + # total_input_frames, + # ) + # ) + + if getattr(self, "is_rtsp", False): + # Live RTSP: Evict oldest frame if consumer falls behind + if len(self.frame_queue) >= self.frame_queue.maxlen: + try: + self.frame_queue.popleft() + except IndexError: + pass + self.frame_queue.append( + ( + True, + self._flipped_static_gpu_frame_buffer, + current_event, + target_frames_passed, + total_input_frames, + ) + ) + else: + # Local Video File: Wait cooperatively so ZERO frames are lost + while ( + len(self.frame_queue) >= self.frame_queue.maxlen + and not self.stopped + ): + time.sleep(0.001) + + self.frame_queue.append( + ( + True, + self._flipped_static_gpu_frame_buffer, + current_event, + target_frames_passed, + total_input_frames, + ) + ) + + self.total_queue_wait_time += time.perf_counter() - t_queue_block + self.target_frames_passed += 1 + + # Release local pointer references immediately + del current_tensor_view def stop(self): - """Cleanly unregisters the locked memory mapping blocks from the OS page table.""" - if hasattr(self, "cudart") and hasattr(self, "shms"): - import ctypes + """GPU specialized cleaner layer. Unpins hardware tracking tables, flushes VRAM + + and synchronizes active side streams BEFORE parsing to the BaseReader. + """ + if self.stopped: + return + + self.stopped = True + + # Signal the worker process to exit its loop + if hasattr(self, "running_flag"): + self.running_flag.value = False + + # 1. Drive standalone GPU hardware unpinning while shm buffer mappings are valid + # if hasattr(self, "release_hardware_pinsv2"): + # self.release_hardware_pinsv2() + + # 2. Break active PyTorch tensor data reference vectors to drop allocator pin metrics + for tensor_attr in [ + "pinned_views", + "d2h_buffers", + "d2h_numpys", + "_static_gpu_frame_buffer", + "_bgr_gpu_frame_buffer", + ]: + if hasattr(self, tensor_attr): + setattr(self, tensor_attr, None) + + # 3. Synchronize and overwrite side hardware execution lanes + if hasattr(self, "upload_stream") and self.upload_stream is not None: + try: + self.upload_stream.synchronize() + except Exception: + pass + self.upload_stream = None + + if hasattr(self, "download_stream") and self.download_stream is not None: + try: + self.download_stream.synchronize() + except Exception: + pass + self.download_stream = None + + # 4. Dismantle low-level ctypes CDLL pointers to completely drop unmanaged contexts + # self.cudart = None + + # 5. Hand execution over to BaseReader to tear down shared primitives and worker structures + super().stop() + + def release_hardware_pins_v1(self): + if hasattr(self, "cudart") and getattr(self, "shms", None): + # import ctypes for shm in self.shms: - # 1. Safely bind ctypes to the underlying memory view structure - ctypes_array = (ctypes.c_char * self.frame_bytes).from_buffer(shm.buf) + try: + # Re-map the raw structural array pointer identity block + ctypes_array = (ctypes.c_char * self.frame_bytes).from_buffer( + shm.buf + ) + shm_ptr = ctypes.c_void_p(ctypes.addressof(ctypes_array)) + + # Force the CUDA device table driver to drop the OS memory pin + res = self.cudart.cudaHostUnregister(shm_ptr) + if res != 0: + pass # Ignore if already unpinned natively + except Exception: + pass + main_app_logger.info( + "\033[92m[CUDA UNPIN] Shared memory pages successfully released from hardware table.\033[0m" + ) - # 2. Extract the address pointer - shm_ptr = ctypes.c_void_p(ctypes.addressof(ctypes_array)) + def release_hardware_pinsv2(self): + """ + Reverses the CUDA host registration by mapping the exact memory locations + and force-unpins them before closing the underlying OS shared memory handles. + """ + # import ctypes + # import gc + # import sys - # 3. Unregister the address safely from the OS tables - self.cudart.cudaHostUnregister(shm_ptr) + # Localized stream filter to swallow intermediate garbage collection signals + original_stderr = sys.stderr + sys.stderr = ResourceTrackerFilter(original_stderr) + + try: + # 2. Drop active processing frame buffers and views to unlock reference paths + # if ( + # hasattr(self, "_static_gpu_frame_buffer") + # and self._static_gpu_frame_buffer is not None + # ): + # self._static_gpu_frame_buffer = None + + # if hasattr(self, "pinned_views") and self.pinned_views: + # for idx in range(len(self.pinned_views)): + # self.pinned_views[idx] = None + # self.pinned_views.clear() + + # # 3. Synchronize background streaming channels + # if hasattr(self, "upload_stream") and self.upload_stream is not None: + # try: + # self.upload_stream.synchronize() + # except Exception: + # pass + # self.upload_stream = None + + # 4. Iterate and forcefully unregister the exact memory allocation pointers + if hasattr(self, "cudart") and getattr(self, "shms", None): + for shm in list(self.shms): + try: + if hasattr(shm, "buf") and shm.buf is not None: + # Map the exact size layout matching line 969 to capture the real pointer + ctypes_array = ( + ctypes.c_char * self.frame_bytes + ).from_buffer(shm.buf) + shm_ptr = ctypes.c_void_p(ctypes.addressof(ctypes_array)) + + # Direct low-level Driver API fallback execution to wipe lazy driver context maps + # if hasattr(self, "force_clear_driver_cuda_pin"): + # self.force_clear_driver_cuda_pin(shm_ptr.value) + + # High-level Runtime API eviction + self.cudart.cudaHostUnregister(shm_ptr) + # if res == 0: + # main_app_logger.info( + # f"[CUDA UNPIN] Successfully unpinned address context: {hex(shm_ptr.value)}" + # ) + + # 5. Instantly close and unlink POSIX shared memory allocations to release locks + # shm.close() + # shm.unlink() + except Exception as e: + main_app_logger.debug( + f"Failed to cleanly unpin shared memory region: {e}" + ) + + # self.shms.clear() + + finally: + # 6. Flush native device pools completely + gc.collect() + if torch.cuda.is_available(): + torch.cuda.synchronize() + torch.cuda.empty_cache() + sys.stderr = original_stderr + # print( + # "\033[92m\n[CUDA UNPIN] Hardware tables fully cleared.\033[0m", + # flush=True, + # ) + + def release_hardware_pins(self): + """Forcefully purges child workers and cleanly unpins raw CUDA memory layers.""" + + # 1. FORCE-KILL THE BACKGROUND MULTIPROCESSING WORKER FIRST + # If left alive, it anchors the page lock inside the Linux kernel tables! + if hasattr(self, "worker") and self.worker is not None: + try: + if self.worker.is_alive(): + self.worker.terminate() + self.worker.join(timeout=0.1) + + # Hard kill fallback if the worker process ignores graceful signals + if self.worker.is_alive() and getattr(self.worker, "pid", None): + if self.worker.pid > 1: + # main_app_logger.info( + # f"[KILL] Evicting worker holding lock (PID: {self.worker.pid})" + # ) + try: + os.kill(self.worker.pid, signal.SIGKILL) + self.worker.join() + except ProcessLookupError: + pass # It died naturally right before the signal arrived + except Exception: + pass + self.worker = None + + # 2. Drop active PyTorch frame views to unlock storage layout references + if ( + hasattr(self, "_static_gpu_frame_buffer") + and self._static_gpu_frame_buffer is not None + ): + self._static_gpu_frame_buffer = None + + if hasattr(self, "pinned_views") and self.pinned_views: + for idx in range(len(self.pinned_views)): + self.pinned_views[idx] = None + self.pinned_views.clear() + + # Flush outstanding elements inside your streaming frame buffers queue + if hasattr(self, "frame_queue"): + try: + while len(self.frame_queue) > 0: + self.frame_queue.popleft() + except Exception: + pass + gc.collect() + + # 3. Safely unregister host pages via the exact allocation pointers + if hasattr(self, "cudart") and getattr(self, "shms", None): + for shm in list(self.shms): try: + # Reconstruct the exact pointer alignment mapping to clear the driver registration + ctypes_array = (ctypes.c_char * self.frame_bytes).from_buffer( + shm.buf + ) + shm_ptr = ctypes.c_void_p(ctypes.addressof(ctypes_array)) + + # Call high-speed unregister on the exact pointer value + self.cudart.cudaHostUnregister(shm_ptr) + + # Release internal mmap references safely before executing close() + if hasattr(shm, "buf") and shm.buf is not None: + try: + shm.buf.release() + except Exception: + pass + + if hasattr(shm, "_mmap") and shm._mmap is not None: + try: + shm._mmap = None + except Exception: + pass + + # Direct file descriptor removal and unlinking from /dev/shm shm.close() shm.unlink() except Exception: pass - super().stop() + self.shms.clear() + + # 4. Flush native memory pools completely back to Host OS + gc.collect() + if torch.cuda.is_available(): + torch.cuda.synchronize() + torch.cuda.empty_cache() + + +def force_clear_driver_cuda_pin(raw_address_int): + """ + Forcefully drops an unmanaged page-lock registration directly out of the + NVIDIA Driver API context using a raw virtual address integer pointer. + """ + if not raw_address_int: + return + + main_app_logger.info( + f"[HARDWARE FORCE-CLEAR] Evicting address {hex(raw_address_int)} from driver context..." + ) + + try: + # 1. Load the core low-level CUDA Driver API library (Linux fallback) + try: + cuda_driver = ctypes.CDLL("libcuda.so.6") + except OSError: + cuda_driver = ctypes.CDLL("libcuda.so") # Alternate system path fallback + + # 2. Reconstruct the raw void pointer from the integer key + void_ptr = ctypes.c_void_p(raw_address_int) + + # 3. Invoke cuMemHostUnregister directly to break the lazy driver lock + # Status code 0 indicates absolute success + status = cuda_driver.cuMemHostUnregister(void_ptr) + + if status == 0: + main_app_logger.info( + f" [SUCCESS] Address {hex(raw_address_int)} successfully purged from driver context." + ) + else: + # Code 101/713 typically means it was already lazily swept by an OS page update + main_app_logger.info( + f" [INFO] Driver returned status code {status} for address {hex(raw_address_int)}. Cleared." + ) + + except Exception as error: + main_app_logger.info( + f" [FAILED] Driver force-clear encountered an error: {error}" + ) diff --git a/fastapi/include/utils.py b/fastapi/include/utils.py index a379a23..f2e11a1 100644 --- a/fastapi/include/utils.py +++ b/fastapi/include/utils.py @@ -1,22 +1,35 @@ # Copyright (C) 2025 Intel Corporation +# ============================================================================== +# IMPORTS +import ctypes +import gc +import inspect +import logging import os import queue import subprocess +import sys +import threading import time import traceback +import tracemalloc +from collections import deque from dataclasses import dataclass from math import ceil +from multiprocessing import resource_tracker from pathlib import Path from random import randint import cupy -import cupyx.scipy -import cupyx.scipy.ndimage import cv2 import numpy as np import torch -import torch.nn.functional as F +from pydantic import BaseModel + +import vdms + +sys.path.insert(1, str(Path(__file__).parent.parent)) from include.default_configs import ( BKGD_SUB_INCLUDE_HISTORY, BKGD_SUB_INCLUDE_HISTORY_DILATE_KERNEL_SIZE, @@ -68,15 +81,123 @@ UDF_HOST_DEFAULT, UDF_PORT_DEFAULT, ) -from pydantic import BaseModel -import vdms +# ============================================================================== +# LOGGING +logging.basicConfig( + level=logging.INFO, + # format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", + format="%(asctime)s [%(levelname)s] %(name)s (%(filename)s:%(lineno)d) - %(message)s", + handlers=[logging.StreamHandler(sys.stdout)], +) + +main_app_logger = logging.getLogger(__name__) + +# ============================================================================== """ GENERAL DEFINITIONS/FUNCTIONS """ +def get_cpu_partition(num_ffmpeg_cores: int = 4): + """ + Partitions available container cores into FFmpeg cores and Main App cores. + """ + available_cores = sorted(list(os.sched_getaffinity(0))) + total_cores = len(available_cores) + + if total_cores <= num_ffmpeg_cores: + # Fallback if the container has <= 4 cores allocated + ffmpeg_cores = available_cores + main_app_cores = available_cores + else: + # Take the first 4 cores for FFmpeg, reserve the rest for the main app + ffmpeg_cores = available_cores[:num_ffmpeg_cores] + main_app_cores = available_cores[num_ffmpeg_cores:] + + return ffmpeg_cores, main_app_cores + + +def safe_unregister_shm(shm_name: str): + """ + Unregisters a shared memory block from Python's resource tracker + using both normalized and slash-prefixed formats. + """ + clean_name = shm_name.lstrip("/") + slash_name = f"/{clean_name}" + + for name in (clean_name, slash_name): + try: + resource_tracker.unregister(name, "shared_memory") + except (KeyError, ValueError, AttributeError, Exception): + pass + + +def release_shared_memory(list_of_shms): + for shm in list_of_shms: + if shm is not None: + try: + # Release buffer view if open + if hasattr(shm, "buf") and shm.buf is not None: + shm.buf.release() + except Exception: + pass + + try: + shm.close() + except Exception: + pass + + try: + shm.unlink() + except (FileNotFoundError, AttributeError, OSError): + pass + + # Clear the container list/collection in-place + if hasattr(list_of_shms, "clear"): + try: + list_of_shms.clear() + except Exception: + pass + + +def release_native_linux_heap(): + gc.collect() + try: + # Load the native C library bindings mapping standard glibc + libc = ctypes.CDLL("libc.so.6") + + # malloc_trim(0) forces glibc to completely pack and return all + # completely disconnected heap memory boundaries back to the kernel. + libc.malloc_trim(0) + # print( + # "[MALLOC_TRIM] Successfully flushed unmanaged C++ heap to OS.", flush=True + # ) + except Exception as e: + print( + f"[MALLOC_TRIM] Native system trim execution pass failed: {e}", flush=True + ) + + +def install_and_load_pip_package(package_name: str, attribute_name=None): + import importlib + + name = package_name.split("[")[0] + try: + # import py_package + module = importlib.import_module(name) + except ImportError: + print(f"{name} package not found. Installing ...") + subprocess.check_call([sys.executable, "-m", "pip", "install", package_name]) + module = importlib.import_module(name) + + if attribute_name: + return getattr(module, attribute_name) + + return module + + def get_freest_gpu(): # Queries free memory from nvidia-smi command = "nvidia-smi --query-gpu=memory.free --format=csv,nounits,noheader" @@ -111,12 +232,494 @@ def str2bool(in_val): return False +def global_frame_prefetch_worker_v1(instance): + """ + Asynchronous Threaded Staging Engine. + Leverages thread-level parallelism to interleave heavy I/O file latency + completely outside the primary model execution track. + """ + pool_maxsize = ( + instance.prefetch_queue.maxsize + if hasattr(instance.prefetch_queue, "maxsize") + else instance.prefetch_queue._maxsize + ) + + # This ensures no frames are read until the main loop is ready. + # if hasattr(instance, "start_processing_event"): + # instance.start_processing_event.wait() + + while instance.active and instance.prefetch_active: + try: + # if instance.prefetch_queue is None: + # instance.prefetch_active = False + # break + # 1. Capture time immediately before hardware decryption/extraction + decode_start_time = time.perf_counter() + + # Step 1: Overlap video decoding and frame I/O reads. + with instance.reader_lock: + payload = instance.reader.read() + + # if payload[1] is None: + # # print("[PREFETCH WORKER] Reader returned None, exiting.") + # # break + # time.sleep(0.005) # Sleep 5ms and retry + # continue + + ret, frame_8k, current_event, frame_num, abs_frame_num = payload + + # 2. Isolate raw decompression latency (completely independent of consumer queues) + true_read_latency_secs = time.perf_counter() - decode_start_time # * 1000.0 + + if not ret or frame_8k is None: + # # If RTSP, wait briefly to see if it's just a network delay. + # if instance.active and getattr(instance, "is_rtsp", True): + # time.sleep(0.005) + # continue + # else: + # print("[PREFETCH WORKER] End of stream or invalid frame, exiting.") + # break + + # Allow retries if the reader is still active and has not officially stopped + if instance.active and not getattr(instance.reader, "stopped", False): + time.sleep(0.005) + continue + else: + main_app_logger.info( + "[PREFETCH WORKER] End of stream detected, exiting." + ) + break + + if frame_num == 0: + main_app_logger.info( + f"[VERIFY - PRODUCER] Decoded Frame {frame_num} (abs: {abs_frame_num}) and writing to slot {frame_num % pool_maxsize}!" + ) + + # if ret is True and frame_8k is not None: + slot_idx = frame_num % pool_maxsize + + # if torch.is_tensor(frame_8k): + # safe_frame = frame_8k.clone() + # elif isinstance(frame_8k, np.ndarray): + # safe_frame = frame_8k.copy() + # else: + # safe_frame = frame_8k + + # Convert to tensor + # Make a safe copy of the raw frame data + # if isinstance(frame_8k, np.ndarray): + # safe_frame = frame_8k.copy() + # else: + # safe_frame = frame_8k.clone() if torch.is_tensor(frame_8k) else frame_8k + + # safe_frame = instance.shm_buffer_pool[slot_idx][0] + + # # 2. OVERWRITE IN-PLACE (ZERO ALLOCATIONS!) + # if isinstance(frame_8k, np.ndarray): + # safe_frame.copy_(torch.from_numpy(frame_8k)) + # else: + # safe_frame.copy_(frame_8k) + + # If frame_8k is already on the GPU (from GPUReader), use it directly! + if isinstance(frame_8k, np.ndarray): + # CPU fallback: copy to GPU input slot + instance.gpu_input[slot_idx].copy_( + torch.from_numpy(frame_8k), non_blocking=True + ) + safe_frame = instance.gpu_input[slot_idx] + else: + # Already on GPU: forward directly with zero extra transfers + safe_frame = frame_8k + + # safe_frame = frame_8k + # Explicitly destroy the original shared-memory views right here! + # del payload, frame_8k # , tensor_frame + # print(f"[PREFETCH WORKER] frame_num: {frame_num}\tabs_frame_num: {abs_frame_num}", flush=True) + + # Step 2: Directly write to array pool within the same CUDA context. + # 3. EXPAND POOL TUPLE: Append the true background latency value to the array matrix + instance.shm_buffer_pool[slot_idx] = ( + safe_frame, + current_event, + frame_num, + abs_frame_num, + true_read_latency_secs, # Decoupled payload metric channel + ) + # del payload, frame_8k + + if hasattr(instance, "queue_data_ready_event"): + instance.queue_data_ready_event.set() + + # Step 3: Fast notification down a standard thread-safe queue. + # Wakes up the consumer loop in microseconds via low-level OS variables. + try: + instance.prefetch_queue.put((True, slot_idx), block=True) + # except AttributeError: + # instance.prefetch_active = False + # break + except Exception: + pass + finally: + del payload, frame_8k + except Exception as e: + # Yield minimal execution slicing if an index collision occurs + # time.sleep(0.001) + # CRITICAL: Print the actual error instead of swallowing it. + print(f"[PREFETCH WORKER CRASH] An error occurred: {e}") + traceback.print_exc() + # Stop the loop on error to prevent silent failures. + raise + + # Pipeline breakdown tracker + # with instance.worker_tracking_lock: + # instance.active_workers_count -= 1 + # if instance.active_workers_count == 0: + # # instance.prefetch_queue.put((False, "END_OF_STREAM"), block=True) + # main_app_logger.info( + # "[PREFETCH WORKER] All workers finished. Sending END_OF_STREAM." + # ) + # if ( + # hasattr(instance, "prefetch_queue") + # and instance.prefetch_queue is not None + # ): + # try: + # instance.prefetch_queue.put( + # (False, "END_OF_STREAM"), block=True, timeout=1.0 + # ) + # except Exception: + # pass + lock_obj = getattr(instance, "worker_tracking_lock", None) + + if lock_obj is not None and hasattr(lock_obj, "__enter__"): + with lock_obj: + instance.active_workers_count -= 1 + is_last_worker = instance.active_workers_count == 0 + else: + # Fallback in case the main thread already destroyed the lock during shutdown + # (Safe to decrement directly since threads are joining anyway) + try: + instance.active_workers_count -= 1 + is_last_worker = instance.active_workers_count == 0 + except Exception: + is_last_worker = False + + # Send END_OF_STREAM if this is the last worker exiting + if is_last_worker: + main_app_logger.info( + "[PREFETCH WORKER] All workers finished. Sending END_OF_STREAM." + ) + if hasattr(instance, "prefetch_queue") and instance.prefetch_queue is not None: + try: + instance.prefetch_queue.put( + (False, "END_OF_STREAM"), block=True, timeout=1.0 + ) + except Exception: + pass + + +def analyze_tracemalloc_snapshot(): + """ + Take and analyze tracemalloc snapshot + """ + system_exclusions = [ + "importlib", + "runpy", + "pydev", + "typing", + "abc", + "contextlib", + "unittest", + "pytest", + ] + + main_app_logger.info("=" * 60) + # Take snapshot with tracking data enabled + snapshot = tracemalloc.take_snapshot() + tracemalloc.stop() + stats = snapshot.statistics("traceback") + + main_app_logger.info( + f"{'ALLOCATED SIZE':<15} | {'OBJECT TYPE':<20} | {'SOURCE LOCATION'}", + ) + main_app_logger.info("-" * 80) + + stat_cnt = 0 + for stat in stats: # [:10]: # Check the top 10 largest leaks + if stat_cnt >= 10: + break + + first_frame = stat.traceback[0] + source_info = f"{first_frame.filename.split('/')[-1]}:{first_frame.lineno}" + + if any(exc in source_info for exc in system_exclusions): + continue + + # Extract the trace block memory identity + obj_type_name = "Unknown / Raw C Block" + + # Query the raw trace details to extract live block structures + for trace in stat.traceback: + # We look for objects instantiated at this file/line in the heap + for obj in gc.get_objects(): + try: + # Cross-reference: does this object's line history match the stat line? + # Python doesn't save creation history on every object, so we inspect properties: + if torch.is_tensor(obj): + # Tensors are easily tracked if they have shapes or match your sizes + if ( + obj.is_cuda + and (obj.element_size() * obj.nelement()) == stat.size + ): + obj_type_name = f"torch.Tensor (Shape: {list(obj.shape)})" + break + elif inspect.isframe(obj): + obj_type_name = "Live Frame Context" + break + elif inspect.isfunction(obj) or inspect.ismethod(obj): + obj_type_name = f"Function ({obj.__name__})" + break + elif isinstance(obj, dict): + # Dictionary allocations match structure profiles + try: + # Guard checks against mutating async dictionary managers + if ( + sys.getsizeof(obj) == stat.size + or len(obj) == stat.count + ): + obj_type_name = "dict Namespace" + break + except Exception: + pass + except Exception: + pass + + obj = None + # Print the compiled breakdown + + main_app_logger.info( + f"{stat.size / 1024:<11.1f} KiB | {obj_type_name:<20} | {source_info}" + ) + stat_cnt += 1 + + +# from concurrent.futures import ThreadPoolExecutor + + +# def global_frame_prefetch_worker(instance): +# """GIL-free asynchronous staging engine utilizing a dedicated single-worker pool +# to execute raw C++ reads completely outside the primary interpreter track. +# """ +# pool_maxsize = ( +# instance.prefetch_queue.maxsize +# if hasattr(instance.prefetch_queue, "maxsize") +# else instance.prefetch_queue._maxsize +# ) + +# # A dedicated single-worker context specifically for C++ operations +# # with ThreadPoolExecutor(max_workers=1) as reader_executor: +# while instance.active and instance.prefetch_active: +# try: +# # 1. Capture time immediately before hardware decryption/extraction +# decode_start_time = time.perf_counter() + +# # Offload ONLY the unmanaged C++ read() call to the executor. +# # This drops the GIL instantly while the driver retrieves the frame bytes. +# # future = reader_executor.submit(instance.reader.read) +# # payload = ( +# # future.result() +# # ) # Blocking wait until the background C++ task completes + +# # Explicitly overwrite the internal future reference +# # tracking properties to break the C++ object data caching loop immediately +# # if hasattr(future, "_result"): +# # future._result = None # Breaks the structural reference hold layout +# # future = None # Drops local scope tracking handles + +# # Overlap video decoding and frame I/O reads natively. +# # The GIL is dropped directly inside the compiled C++ cv2.VideoCapture layer. +# with instance.reader_lock: +# payload = instance.reader.read() + +# # Isolate raw decompression latency (completely independent of consumer queues) +# true_read_latency_sec = ( +# time.perf_counter() - decode_start_time +# ) + +# if payload[0] is False: +# break + +# ret, frame_8k, current_event, frame_num, abs_frame_num = payload + + +# if ret is True and frame_8k is not None: +# slot_idx = frame_num % pool_maxsize +# if torch.is_tensor(frame_8k): +# safe_frame = frame_8k.clone() +# elif isinstance(frame_8k, np.ndarray): +# safe_frame = frame_8k.copy() +# else: +# safe_frame = frame_8k + +# # Explicitly destroy the original shared-memory views right here! +# del payload, frame_8k + +# print(f"[PREFETCH WORKER] frame_num: {frame_num}\tabs_frame_num: {abs_frame_num}", flush=True) +# # Directly write to array pool within the same CUDA context. +# # EXPAND POOL TUPLE: Append the true background latency value to the array matrix +# with instance.worker_tracking_lock: +# instance.shm_buffer_pool[slot_idx] = ( +# safe_frame, +# current_event, +# frame_num, +# abs_frame_num, +# true_read_latency_sec, # Decoupled payload metric channel +# ) + +# if hasattr(instance, "queue_data_ready_event"): +# instance.queue_data_ready_event.set() + +# # Step 3: Fast notification down a standard thread-safe queue. +# # Wakes up the consumer loop in microseconds via low-level OS variables. +# instance.prefetch_queue.put((True, slot_idx), block=True) +# else: +# # break +# time.sleep(0.001) +# continue +# except Exception: +# # Yield minimal execution slicing if an index collision occurs +# time.sleep(0.002) +# continue + +# # Pipeline breakdown tracker +# # with instance.worker_tracking_lock: +# # instance.active_workers_count -= 1 +# # if instance.active_workers_count == 0: +# # instance.prefetch_queue.put((False, "END_OF_STREAM"), block=True) + + +def global_frame_prefetch_worker_process( + active, # mp.Value flag + prefetch_active, # mp.Value flag + prefetch_queue, # mp.Queue mapping descriptor + reader_lock, # mp.Lock mutex channel + reader, # Picklable reader baseline layout + shm_buffer_pool, # Shared pointer memory pool array matrix + queue_data_ready_event, # Pass the shared multiprocessing Event channel + worker_tracking_lock, # Pass the shared multiprocessing Lock mutex + active_workers_count, # Pass the shared atomic integer context +): + """ + Asynchronous Threaded Staging Engine. + Leverages thread-level parallelism to interleave heavy I/O file latency + completely outside the primary model execution track. + """ + pool_maxsize = ( + prefetch_queue.maxsize + if hasattr(prefetch_queue, "maxsize") + else prefetch_queue._maxsize + ) + + try: + while active.value and prefetch_active.value: + try: + # 1. Capture time immediately before hardware decryption/extraction + decode_start_time = time.perf_counter() + + # Step 1: Overlap video decoding and frame I/O reads. + with reader_lock: + payload = reader.read() + + # 2. Isolate raw decompression latency (completely independent of consumer queues) + true_read_latency_ms = ( + time.perf_counter() - decode_start_time + ) * 1000.0 + + if payload is None: + break + + ret, frame_8k, current_event, frame_num, abs_frame_num = payload + + if ret is True and frame_8k is not None: + slot_idx = frame_num % pool_maxsize + + if torch.is_tensor(frame_8k): + safe_frame = frame_8k.clone() + elif isinstance(frame_8k, np.ndarray): + safe_frame = frame_8k.copy() + else: + safe_frame = frame_8k + + # Explicitly destroy the original shared-memory views right here! + del payload, frame_8k + + # Step 2: Directly write to array pool within the same CUDA context. + # 3. EXPAND POOL TUPLE: Append the true background latency value to the array matrix + shm_buffer_pool[slot_idx] = ( + safe_frame, + current_event, + frame_num, + abs_frame_num, + true_read_latency_ms, # Decoupled payload metric channel + ) + + queue_data_ready_event.set() + + prefetch_queue.put((True, slot_idx), block=True) + else: + break + except Exception: + # Yield minimal execution slicing if an index collision occurs + time.sleep(0.001) + + finally: + # Pipeline breakdown tracker + with worker_tracking_lock: + active_workers_count.value -= 1 + if active_workers_count.value == 0: + prefetch_queue.put((False, "END_OF_STREAM"), block=True) + + PROJECT_PATH = Path(__file__).parent.parent DEBUG_FLAG_DEFAULT = True if DEBUG_DEFAULT == "1" else False LOCKTIMEOUT_RETRIES = 5 +default_attr_keys = [ + "_is_stopped", + "_stop_lock", + "_testMethodName", + "abs_frame_num", + "active_workers_count", + "active", + "baseline_before_start", + "component_stats", + "config", + "crops_per_frame_list", + "device_input", + "device", + "disp_h", + "disp_w", + "duration_target", + "elapsed_display_time", + "frame_count_target", + "frame_count", + "max_target_frames", + "output_path", + "pcie_throughput_gbps", + "prefetch_active", + "reader", + "resize_h", + "resize_w", + "stat_fps", + "stat_frame_count", + "status", + "VIDEO_GT_DETAILS", + "video_output_name", + "vram_efficiency", + "worker_tracking_lock", +] + class PipelineConfig: def __init__(self, **kwargs): @@ -266,7 +869,9 @@ def _create_connection(self): def get_connection(self): # Borrow a connection (blocks if pool is empty) - return self.pool.get(block=True, timeout=10) + db = self.pool.get(block=True, timeout=10) + self.pool.task_done() + return db def return_connection(self, conn): # Put the connection back for reuse @@ -515,6 +1120,121 @@ def return_connection(self, conn): ) +PROPAGATION_KERNEL_CODE = r""" +extern "C" __global__ +void get_row_bounds_fused(const unsigned char* mask, int pitch, int w, int h, + int* x1, int* y1, int* x2, int* y2, int* num_labels) { + // Each thread tracks exactly one horizontal row across the frame canvas + int y = blockIdx.y * blockDim.y + threadIdx.y; + + if (y < h) { + bool row_has_motion = false; + int min_x = w; + int max_x = -1; + + // Perform a fast linear register sweep across the row (0 global atomics) + for (int x = 0; x < w; ++x) { + unsigned char pixel = mask[y * pitch + x]; + if (pixel > 0) { + row_has_motion = true; + if (x < min_x) min_x = x; + if (x > max_x) max_x = x; + } + } + + // If the row contains motion, commit the boundaries to global memory + if (row_has_motion) { + // Use an atomic index fetch to smoothly assign contiguous tracking labels + int label = atomicAdd(num_labels, 1); + + // Limit to our safe allocation pool ceiling to prevent memory overflows + if (label < 256) { + x1[label] = min_x; + y1[label] = y; + x2[label] = max_x + 1; + y2[label] = y + 1; + } + } + } +} +""" + + +def get_metadata_overlay( + display_frame, metadata_or_bbs, class_list, scale_display, disp_size, is_bgr=True +): + scale_display_x, scale_display_y = scale_display + disp_w, disp_h = disp_size + for frame_str, obj in metadata_or_bbs.items(): + bbox = obj["bbox"] + raw_x = bbox["x"] * scale_display_x + raw_y = bbox["y"] * scale_display_y + w = bbox["width"] * scale_display_x + h = bbox["height"] * scale_display_y + x = max(0, int(raw_x)) + y = max(0, int(raw_y)) + x2 = min(disp_w - 1, int(raw_x + w)) + y2 = min(disp_h - 1, int(raw_y + h)) + + class_name = bbox["object"] + class_id = class_list.index(class_name) if class_name in class_list else 0 + bb_color = get_detection_color(class_id, is_bgr=is_bgr) + + # print(f'{frame_str} xyxy: ', (x, y), (x2, y2), flush=True) + display_frame = cv2.rectangle(display_frame, (x, y), (x2, y2), bb_color, 2) + + if class_name != "": + confidence = bbox.get("object_det", {}).get("confidence", 0.0) + label = f"{class_name} {confidence:.2f}" + draw_label(display_frame, label, (x, y), color=bb_color, padding=5) + return display_frame + + +def get_bb_overlay( + display_frame, metadata_or_bbs, scale_display, disp_size, color=(0, 0, 255) +): + """ + Ultra-low latency canvas renderer. Optimized to preserve high FPS. + """ + # Instant escape route for blank inference sequences + if metadata_or_bbs is None or len(metadata_or_bbs) == 0: + return display_frame + + scale_display_x, scale_display_y = scale_display + disp_w, disp_h = disp_size + + # Direct Type Extraction: Handle specific incoming payloads instantly + if isinstance(metadata_or_bbs, list): + # Acknowledge your track array: Fast extraction of structural list layers + if isinstance(metadata_or_bbs[0], dict): + boxes = np.array([b["bbox"] for b in metadata_or_bbs], dtype=np.float32) + else: + boxes = np.array(metadata_or_bbs, dtype=np.float32) + elif isinstance(metadata_or_bbs, np.ndarray): + boxes = metadata_or_bbs + else: + # Fallback mechanism handles raw GPU traces securely if passed downstream + boxes = metadata_or_bbs.detach().cpu().numpy() + + # Pre-allocate coordinates in a single vectorized sweep + x1 = (boxes[:, 0] * scale_display_x).astype(np.int32) + y1 = (boxes[:, 1] * scale_display_y).astype(np.int32) + x2 = (boxes[:, 2] * scale_display_x).astype(np.int32) + y2 = (boxes[:, 3] * scale_display_y).astype(np.int32) + + # Perform low-level C++ drawing inside OpenCV (Zero typing penalties) + for i in range(len(boxes)): + # Clip bounding box corners safely within resolution bounds + rx1 = max(0, x1[i]) + ry1 = max(0, y1[i]) + rx2 = min(disp_w - 1, x2[i]) + ry2 = min(disp_h - 1, y2[i]) + + cv2.rectangle(display_frame, (rx1, ry1), (rx2, ry2), color, 2) + + return display_frame + + def tensor2opencv(frame_source, device_input, is_bgr=True, resize_h=640, resize_w=640): if torch.is_tensor(frame_source): # .contiguous() is CRITICAL here to fix the "shredded" look @@ -555,7 +1275,7 @@ def tensor2opencv(frame_source, device_input, is_bgr=True, resize_h=640, resize_ return img_cpu -def gpumat2cupy(gpu_mat): +def gpumat2cupyv1(gpu_mat): """Bridge OpenCV GpuMat to CuPy without copying data.""" # Get properties from GpuMat w, h = gpu_mat.size() @@ -594,6 +1314,28 @@ class Holder: return cupy.asarray(holder) +def gpumat2cupy(gpu_mat): + """ + Bridge OpenCV GpuMat to CuPy instantly without copying data or parsing dict envelopes. + """ + w, h = gpu_mat.size() + channels = 3 if gpu_mat.type() == cv2.CV_8UC3 else 1 + + if channels == 3: + shape = (h, w, 3) + strides = (gpu_mat.step, 3, 1) + else: + shape = (h, w) + strides = (gpu_mat.step, 1) + + # OPTIMIZATION: Construct a native CuPy array memory wrapper instantly over the raw C++ pointer. + # This completely bypasses the Python dictionary interpreter parsing and 'cupy.asarray' overhead. + mem = cupy.cuda.UnownedMemory(gpu_mat.cudaPtr(), gpu_mat.step * h, gpu_mat) + mptr = cupy.cuda.MemoryPointer(mem, 0) + + return cupy.ndarray(shape=shape, dtype=cupy.uint8, memptr=mptr, strides=strides) + + def torch2gpumat(tensor): """ Creates an OpenCV GpuMat pointing to the same memory as a PyTorch tensor. @@ -648,102 +1390,913 @@ def torch2gpumat(tensor): # Compile the kernel once get_bounds_kernel = cupy.RawKernel(BOUNDS_KERNEL_CODE, "get_bounds") +# BOUNDS_KERNEL_CODE = r""" +# extern "C" __global__ +# void get_bounds_pure(const int* labeled, int pitch_elements, int w, int h, int num_labels, +# int* x1, int* y1, int* x2, int* y2) { +# int x = blockIdx.x * blockDim.x + threadIdx.x; +# int y = blockIdx.y * blockDim.y + threadIdx.y; + +# if (x < w && y < h) { +# // Safe 32-bit element pitch extraction +# int label = labeled[y * pitch_elements + x]; + +# if (label > 0 && label <= num_labels) { +# atomicMin(&x1[label], x); +# atomicMin(&y1[label], y); +# atomicMax(&x2[label], x + 1); +# atomicMax(&y2[label], y + 1); +# } +# } +# } +# """ +# get_bounds_kernel = cupy.RawKernel(BOUNDS_KERNEL_CODE, "get_bounds_pure") + + +# def merge_boxes_gpuv1(raw_boxes, gap_limit=10, size_limit=1000): +# """ +# Refined Parallel Merger with Size Constraints. +# Prevents merges that would create boxes larger than size_limit. +# """ +# if raw_boxes.shape[0] <= 1: +# return raw_boxes + +# x1, y1, x2, y2 = raw_boxes.unbind(1) + +# # 1. Calculate pairwise gaps (Existing logic) +# h_gaps = torch.max( +# torch.zeros(1, device=raw_boxes.device), +# torch.max(x1.unsqueeze(0) - x2.unsqueeze(1), x1.unsqueeze(1) - x2.unsqueeze(0)), +# ) +# v_gaps = torch.max( +# torch.zeros(1, device=raw_boxes.device), +# torch.max(y1.unsqueeze(0) - y2.unsqueeze(1), y1.unsqueeze(1) - y2.unsqueeze(0)), +# ) + +# # 2. NEW: Calculate potential union dimensions for ALL pairs [N, N] +# # We find the min/max coordinates if box i and box j were merged +# union_x1 = torch.min(x1.unsqueeze(0), x1.unsqueeze(1)) +# union_y1 = torch.min(y1.unsqueeze(0), y1.unsqueeze(1)) +# union_x2 = torch.max(x2.unsqueeze(0), x2.unsqueeze(1)) +# union_y2 = torch.max(y2.unsqueeze(0), y2.unsqueeze(1)) + +# union_w = union_x2 - union_x1 +# union_h = union_y2 - union_y1 + +# # 3. ADJACENCY MASK: Must be close AND the result must be under the limit +# # This prevents the creation of massive "megaboxes" +# adj = ( +# (h_gaps < gap_limit) +# & (v_gaps < gap_limit) +# & (union_w < size_limit) +# & (union_h < size_limit) +# ) + +# # 4. Parallel Connected Components (Existing logic) +# components = torch.arange(raw_boxes.shape[0], device=raw_boxes.device) +# r = 3 +# for _ in range(r): +# components = torch.max(adj * components, dim=1).values + +# unique_ids = components.unique() +# merged = [] +# for i in unique_ids: +# mask = components == i +# merged.append( +# torch.cat( +# [raw_boxes[mask, :2].min(0).values, raw_boxes[mask, 2:].max(0).values] +# ) +# ) + +# return torch.stack(merged) + + +# last +def merge_boxes_gpu(raw_boxes, gap_limit=10, size_limit=1280, max_cached_elements=100): + """ + Refined Parallel Merger utilizing static function-attached scratchpads. + Maintains a 100% linear VRAM profile and eliminates dynamic allocations. + """ + if raw_boxes.shape[0] <= 1: + return raw_boxes -def merge_boxes_gpu(raw_boxes, gap_limit=10, size_limit=1000): + # 1. ROBUST CACHE CHECK: Verify shape dimension bounds to prevent 1D flat layout leakage + if ( + not hasattr(merge_boxes_gpu, "adj_matrix") + or merge_boxes_gpu.adj_matrix.ndim != 2 + ): + merge_boxes_gpu.adj_matrix = torch.zeros( + (max_cached_elements, max_cached_elements), + dtype=torch.bool, + device=raw_boxes.device, + ) + merge_boxes_gpu.components = torch.zeros( + (max_cached_elements,), dtype=torch.long, device=raw_boxes.device + ) + merge_boxes_gpu.scratch_out = torch.zeros( + (max_cached_elements, 4), dtype=torch.float32, device=raw_boxes.device + ) + + # Establish safe spatial clip windows depending on current frame tracking load + N = min(raw_boxes.shape[0], max_cached_elements) + + # 2. VECTORIZED ARITHMETIC WITH VIEWS: Completely replace unbind() and unsqueeze() list loops + x1 = raw_boxes[:N, 0] + y1 = raw_boxes[:N, 1] + x2 = raw_boxes[:N, 2] + y2 = raw_boxes[:N, 3] + + # Compute gaps smoothly using in-place operations over zero-copy memory layouts + h_gaps = torch.clamp( + torch.max(x1.view(N, 1) - x2.view(1, N), x1.view(1, N) - x2.view(N, 1)), min=0 + ) + v_gaps = torch.clamp( + torch.max(y1.view(N, 1) - y2.view(1, N), y1.view(1, N) - y2.view(N, 1)), min=0 + ) + + # Map target union envelopes natively + union_w = torch.max(x2.view(N, 1), x2.view(1, N)) - torch.min( + x1.view(N, 1), x1.view(1, N) + ) + union_h = torch.max(y2.view(N, 1), y2.view(1, N)) - torch.min( + y1.view(N, 1), y1.view(1, N) + ) + + # Overwrite adjacency bounds directly into the pre-allocated cache slice + adj = merge_boxes_gpu.adj_matrix[:N, :N] + adj.copy_( + (h_gaps < gap_limit) + & (v_gaps < gap_limit) + & (union_w < size_limit) + & (union_h < size_limit) + ) + + # 3. ACCELERATED CONNECTED COMPONENTS: Run pointer rotations in place + comp = merge_boxes_gpu.components[:N] + torch.arange(N, device=raw_boxes.device, out=comp) + + # Unified logical components compression step + for _ in range(3): + comp.copy_(torch.max(adj * comp, dim=1).values) + + # unique_ids = comp.unique() + # num_merged = unique_ids.shape[0] + + # # 4. STATIC MEMORY AGGREGATION: Eliminate the loops appending torch.cat() arrays + # out_buffer = merge_boxes_gpu.scratch_out[:num_merged] + + # for idx, i in enumerate(unique_ids): + # mask = comp == i + # boxes_subset = raw_boxes[:N][mask] + + # # Write structural outputs directly into our static memory block channels + # out_buffer[idx, 0] = boxes_subset[:, 0].min() + # out_buffer[idx, 1] = boxes_subset[:, 1].min() + # out_buffer[idx, 2] = boxes_subset[:, 2].max() + # out_buffer[idx, 3] = boxes_subset[:, 3].max() + + # # Return the clean floating-point tensor slice natively + # return out_buffer.clone() + + # 1. Initialize an allocation-free O(1) bitmask directly over device registers + # N is already our maximum candidate dimension cap mapped for this frame + valid_bitmask = torch.zeros((N,), dtype=torch.bool, device=raw_boxes.device) + + # 2. Flag every single active logical group ID index in parallel in a single CUDA command + valid_bitmask[comp] = True + + # 3. Pull unique indices instantly using a fast non-zero memory address pass + unique_ids = torch.nonzero(valid_bitmask).squeeze(1) + num_merged = unique_ids.shape[0] + + # 4. Map the aggregation workspace straight onto our persistent static cache slice + out_buffer = merge_boxes_gpu.scratch_out[:num_merged] + + # 5. Extract bounding coordinates cleanly without dynamic vector list loops + for idx, i in enumerate(unique_ids): + mask = comp == i + boxes_subset = raw_boxes[:N][mask] + + if boxes_subset.ndim == 1: + # Reshapes a [4] vector back into a valid [1, 4] 2D matrix canvas + boxes_subset = boxes_subset.view(1, -1) + + # Write structural outputs directly into our static memory block channels + out_buffer[idx, 0] = boxes_subset[:, 0].min() + out_buffer[idx, 1] = boxes_subset[:, 1].min() + out_buffer[idx, 2] = boxes_subset[:, 2].max() + out_buffer[idx, 3] = boxes_subset[:, 3].max() + + # Return the clean floating-point tensor slice natively + return out_buffer.clone() + + +def merge_boxes_gpu_8_25(boxes, gap_limit, size_limit=None, max_cached_elements=100): + """ + Optimized GPU box merging using a grid-based aggregation algorithm. + This avoids the O(n^2) complexity of pairwise distance calculations, making it + ideal for high-density scenarios with hundreds or thousands of boxes. + + Args: + boxes (torch.Tensor): A tensor of shape (N, 4) with boxes [x1, y1, x2, y2]. + gap_limit (float): The cell size for the grid. Boxes within the same + cell will be merged. + size_limit (float, optional): Not used in this version but kept for API compatibility. + max_cached_elements (int, optional): Not used but kept for API compatibility. + + Returns: + torch.Tensor: A tensor of shape (M, 4) with the merged boxes. """ - Refined Parallel Merger with Size Constraints. - Prevents merges that would create boxes larger than size_limit. + if boxes.shape[0] == 0: + return torch.empty((0, 4), device=boxes.device, dtype=boxes.dtype) + + # Assume a 640x640 coordinate space, as this is where the merging happens. + # If this changes, these values must be updated. + IMAGE_WIDTH = 640 + IMAGE_HEIGHT = 640 + + # --- Grid-Based Aggregation --- + + # 1. Calculate box centers + x_centers = (boxes[:, 0] + boxes[:, 2]) / 2.0 + y_centers = (boxes[:, 1] + boxes[:, 3]) / 2.0 + + # 2. Define the grid and assign each box to a grid cell ID + grid_w = int(IMAGE_WIDTH / gap_limit) + 1 + + # Assign a 1D grid cell index to each box + grid_x_indices = (x_centers / gap_limit).long() + grid_y_indices = (y_centers / gap_limit).long() + + # Combine 2D grid indices into a single 1D index for scatter_reduce + cell_indices = grid_y_indices * grid_w + grid_x_indices + num_cells = grid_w * (int(IMAGE_HEIGHT / gap_limit) + 1) + + # 3. Use scatter_reduce to merge boxes in each cell in parallel + # We need tensors to hold the min/max coordinates for each cell. + # Initialize `merged_x1` and `merged_y1` to a large value. + # Initialize `merged_x2` and `merged_y2` to a small value. + + merged_x1 = torch.full( + (num_cells,), float("inf"), device=boxes.device, dtype=boxes.dtype + ) + merged_y1 = torch.full( + (num_cells,), float("inf"), device=boxes.device, dtype=boxes.dtype + ) + merged_x2 = torch.full( + (num_cells,), float("-inf"), device=boxes.device, dtype=boxes.dtype + ) + merged_y2 = torch.full( + (num_cells,), float("-inf"), device=boxes.device, dtype=boxes.dtype + ) + + # Find the min x1 and y1 for all boxes in each cell + merged_x1.scatter_reduce_( + 0, cell_indices, boxes[:, 0], reduce="amin", include_self=False + ) + merged_y1.scatter_reduce_( + 0, cell_indices, boxes[:, 1], reduce="amin", include_self=False + ) + + # Find the max x2 and y2 for all boxes in each cell + merged_x2.scatter_reduce_( + 0, cell_indices, boxes[:, 2], reduce="amax", include_self=False + ) + merged_y2.scatter_reduce_( + 0, cell_indices, boxes[:, 3], reduce="amax", include_self=False + ) + + # 4. Filter out the empty cells to get the final merged boxes + # A cell is considered populated if its min value is not infinity. + valid_cells_mask = merged_x1 != float("inf") + + final_boxes = torch.stack( + [ + merged_x1[valid_cells_mask], + merged_y1[valid_cells_mask], + merged_x2[valid_cells_mask], + merged_y2[valid_cells_mask], + ], + dim=1, + ) + + # The grid-based approach might merge boxes that are in the same cell but + # not directly adjacent. A second pass on the much smaller set of merged + # boxes could be done, but for performance, this initial merge is often sufficient. + # For now, we return the direct result of the grid aggregation. + + return final_boxes + + +# last +def merge_boxes_gpu_v1( + raw_boxes, gap_limit=10, size_limit=1000, max_cached_elements=256 +): + """ + Refined Parallel Merger utilizing static function-attached scratchpads. + 100% loop-free vectorized tensor reduction matching original accuracy. """ if raw_boxes.shape[0] <= 1: return raw_boxes - x1, y1, x2, y2 = raw_boxes.unbind(1) + # 1. PERSISTENT WORKSPACE CACHE INITIALIZATION + if ( + not hasattr(merge_boxes_gpu, "adj_matrix") + or merge_boxes_gpu.adj_matrix.ndim != 2 + ): + merge_boxes_gpu.adj_matrix = torch.zeros( + (max_cached_elements, max_cached_elements), + dtype=torch.bool, + device=raw_boxes.device, + ) + merge_boxes_gpu.components = torch.zeros( + (max_cached_elements,), dtype=torch.long, device=raw_boxes.device + ) + merge_boxes_gpu.scratch_out = torch.zeros( + (max_cached_elements, 4), dtype=torch.float32, device=raw_boxes.device + ) + + N = min(raw_boxes.shape[0], max_cached_elements) + + # 2. VECTORIZED ARITHMETIC WITH VIEWS (Your exact matching geometry) + x1 = raw_boxes[:N, 0] + y1 = raw_boxes[:N, 1] + x2 = raw_boxes[:N, 2] + y2 = raw_boxes[:N, 3] - # 1. Calculate pairwise gaps (Existing logic) - h_gaps = torch.max( - torch.zeros(1, device=raw_boxes.device), - torch.max(x1.unsqueeze(0) - x2.unsqueeze(1), x1.unsqueeze(1) - x2.unsqueeze(0)), + h_gaps = torch.clamp( + torch.max(x1.view(N, 1) - x2.view(1, N), x1.view(1, N) - x2.view(N, 1)), min=0 ) - v_gaps = torch.max( - torch.zeros(1, device=raw_boxes.device), - torch.max(y1.unsqueeze(0) - y2.unsqueeze(1), y1.unsqueeze(1) - y2.unsqueeze(0)), + v_gaps = torch.clamp( + torch.max(y1.view(N, 1) - y2.view(1, N), y1.view(1, N) - y2.view(N, 1)), min=0 + ) + + union_w = torch.max(x2.view(N, 1), x2.view(1, N)) - torch.min( + x1.view(N, 1), x1.view(1, N) + ) + union_h = torch.max(y2.view(N, 1), y2.view(1, N)) - torch.min( + y1.view(N, 1), y1.view(1, N) + ) + + adj = merge_boxes_gpu.adj_matrix[:N, :N] + adj.copy_( + (h_gaps < gap_limit) + & (v_gaps < gap_limit) + & (union_w < size_limit) + & (union_h < size_limit) ) - # 2. NEW: Calculate potential union dimensions for ALL pairs [N, N] - # We find the min/max coordinates if box i and box j were merged - union_x1 = torch.min(x1.unsqueeze(0), x1.unsqueeze(1)) - union_y1 = torch.min(y1.unsqueeze(0), y1.unsqueeze(1)) - union_x2 = torch.max(x2.unsqueeze(0), x2.unsqueeze(1)) - union_y2 = torch.max(y2.unsqueeze(0), y2.unsqueeze(1)) + # 3. ACCELERATED CONNECTED COMPONENTS + comp = merge_boxes_gpu.components[:N] + torch.arange(N, device=raw_boxes.device, out=comp) + + # Label propagation iterations + for _ in range(3): + comp.copy_(torch.max(adj * comp, dim=1).values) + + # 4. 100% LOOP-FREE VECTORIZED REDUCTION (Replaces lines 102-115) + # Remap cluster assignments to continuous indices from 0 to M-1 + unique_ids, cluster_assignments = torch.unique(comp, return_inverse=True) + num_merged = unique_ids.shape[0] + + # Pre-size output buffer view slices + out_buffer = merge_boxes_gpu.scratch_out[:num_merged] + + # Vectorized min/max reduction using scatter_reduce + # We initialize extreme values to find true minimums and maximums + out_buffer[:, 0:2].fill_(float("inf")) + # out_buffer[:, 1].fill_(float("inf")) + out_buffer[:, 2:4].fill_(float("-inf")) + # out_buffer[:, 3].fill_(float("-inf")) + + # Parallel reduction via native C++ PyTorch backend kernels (0ms loop overhead) + out_buffer[:, 0].scatter_reduce_( + 0, cluster_assignments, x1, reduce="amin", include_self=False + ) + out_buffer[:, 1].scatter_reduce_( + 0, cluster_assignments, y1, reduce="amin", include_self=False + ) + out_buffer[:, 2].scatter_reduce_( + 0, cluster_assignments, x2, reduce="amax", include_self=False + ) + out_buffer[:, 3].scatter_reduce_( + 0, cluster_assignments, y2, reduce="amax", include_self=False + ) - union_w = union_x2 - union_x1 - union_h = union_y2 - union_y1 + # Enforce geometric size limits vectorially + widths = out_buffer[:, 2] - out_buffer[:, 0] + heights = out_buffer[:, 3] - out_buffer[:, 1] - # 3. ADJACENCY MASK: Must be close AND the result must be under the limit - # This prevents the creation of massive "megaboxes" - adj = ( + width_mask = widths > size_limit + height_mask = heights > size_limit + + out_buffer[width_mask, 2] = out_buffer[width_mask, 0] + size_limit + out_buffer[height_mask, 3] = out_buffer[height_mask, 1] + size_limit + + return out_buffer.clone() + + +def merge_boxes_gpu_v2( + raw_boxes, gap_limit=10, size_limit=1000, max_cached_elements=256 +): + """ + Refined Parallel Merger utilizing static function-attached scratchpads. + Maintains a 100% linear VRAM profile and eliminates dynamic allocations. + Uses fully vectorized 2D broadcasting to calculate merged bounding boxes + simultaneously on the GPU without sequential loops or CPU synchronization stalls. + """ + if raw_boxes.shape[0] <= 1: + return raw_boxes + + # 1. ROBUST CACHE CHECK: Verify shape dimension bounds to prevent 1D flat layout leakage + if ( + not hasattr(merge_boxes_gpu, "adj_matrix") + or merge_boxes_gpu.adj_matrix.ndim != 2 + ): + merge_boxes_gpu.adj_matrix = torch.zeros( + (max_cached_elements, max_cached_elements), + dtype=torch.bool, + device=raw_boxes.device, + ) + merge_boxes_gpu.components = torch.zeros( + (max_cached_elements,), dtype=torch.long, device=raw_boxes.device + ) + merge_boxes_gpu.scratch_out = torch.zeros( + (max_cached_elements, 4), dtype=torch.float32, device=raw_boxes.device + ) + + # Establish safe spatial clip windows depending on current frame tracking load + N = min(raw_boxes.shape[0], max_cached_elements) + + # 2. VECTORIZED ARITHMETIC WITH VIEWS: Completely replace unbind() and unsqueeze() list loops + x1 = raw_boxes[:N, 0] + y1 = raw_boxes[:N, 1] + x2 = raw_boxes[:N, 2] + y2 = raw_boxes[:N, 3] + + # Create spatial lookup grids via view broadcasting + x1_col, x1_row = x1.view(N, 1), x1.view(1, N) + y1_col, y1_row = y1.view(N, 1), y1.view(1, N) + x2_col, x2_row = x2.view(N, 1), x2.view(1, N) + y2_col, y2_row = y2.view(N, 1), y2.view(1, N) + + # Compute distance boundaries directly using hardware vector instructions + h_gaps = torch.clamp( + torch.maximum(x1_col, x1_row) - torch.minimum(x2_col, x2_row), min=0 + ) + v_gaps = torch.clamp( + torch.maximum(y1_col, y1_row) - torch.minimum(y2_col, y2_row), min=0 + ) + + # Map target union envelopes without generating intermediate subtraction tensors + union_w = torch.maximum(x2_col, x2_row) - torch.minimum(x1_col, x1_row) + union_h = torch.maximum(y2_col, y2_row) - torch.minimum(y1_col, y1_row) + + # Overwrite adjacency bounds directly into the pre-allocated cache slice + adj = merge_boxes_gpu.adj_matrix[:N, :N] + adj.copy_( (h_gaps < gap_limit) & (v_gaps < gap_limit) & (union_w < size_limit) & (union_h < size_limit) ) - # 4. Parallel Connected Components (Existing logic) - components = torch.arange(raw_boxes.shape[0], device=raw_boxes.device) - r = 3 - for _ in range(r): - components = torch.max(adj * components, dim=1).values + # 3. ACCELERATED CONNECTED COMPONENTS: Run pointer rotations in place + comp = merge_boxes_gpu.components[:N] + torch.arange(N, device=raw_boxes.device, out=comp) + + # Wrap the destination outputs into a fast component view format + comp_idx_scratch = torch.zeros(N, dtype=torch.long, device=raw_boxes.device) + output_tuple = (comp, comp_idx_scratch) + + # Unified logical components compression step + for _ in range(3): + torch.max(torch.where(adj, comp, 0), dim=1, out=output_tuple) + + # 4. VECTORIZED COMPONENT REDUCTION (ZERO-LOOP BRIDGING) + # Find the unique cluster assignments entirely on the GPU + unique_ids = comp.unique() + num_merged = unique_ids.shape[0] + + # Sub-slice our persistent function cache block instantly + out_buffer = merge_boxes_gpu.scratch_out[:num_merged] + boxes_subset = raw_boxes[:N] + + # Create a 2D broadcasted membership equality grid [Num_Clusters, N_Boxes] + # This evaluates cluster assignments for all boxes simultaneously on the GPU! + mask_grid = comp.unsqueeze(0) == unique_ids.view(-1, 1) + + # Mask out invalid bounding box entries by casting non-members to extreme float values. + # This guarantees unassigned boxes do not interfere with the parallel min/max reduction. + x1_masked = torch.where(mask_grid, boxes_subset[:, 0].unsqueeze(0), float("inf")) + y1_masked = torch.where(mask_grid, boxes_subset[:, 1].unsqueeze(0), float("inf")) + x2_masked = torch.where(mask_grid, boxes_subset[:, 2].unsqueeze(0), float("-inf")) + y2_masked = torch.where(mask_grid, boxes_subset[:, 3].unsqueeze(0), float("-inf")) + + # Execute single-pass parallel reductions across dim=1 (the boxes axis) + # Bypasses Python loop steps, CPU stalls, and unoptimized scatter commands entirely + out_buffer[:, 0] = x1_masked.min(dim=1).values + out_buffer[:, 1] = y1_masked.min(dim=1).values + out_buffer[:, 2] = x2_masked.max(dim=1).values + out_buffer[:, 3] = y2_masked.max(dim=1).values + + # Clean local tensor references inside the function namespace to protect VRAM scope + del ( + mask_grid, + comp_idx_scratch, + x1_masked, + y1_masked, + x2_masked, + y2_masked, + boxes_subset, + ) - unique_ids = components.unique() - merged = [] - for i in unique_ids: - mask = components == i - merged.append( - torch.cat( - [raw_boxes[mask, :2].min(0).values, raw_boxes[mask, 2:].max(0).values] + return out_buffer.clone() + + +def merge_boxes_gpu_v3( + raw_boxes, gap_limit=10, size_limit=640, max_cached_elements=1500 +): + """ + Optimized Parallel Merger for pixel-integer motion boxes. + Groups close boxes and dynamically expands all resulting blocks up to a uniform + size_limit square for optimal YOLO backbone processing. + + Args: + raw_boxes (torch.Tensor): Int or Float Tensor of shape [N, 4] -> [x1, y1, x2, y2] + gap_limit (int): Proximity merge trigger threshold in absolute pixels. + size_limit (int): Target square dimension (width & height) for YOLO input. + """ + if raw_boxes.shape[0] == 0: + return raw_boxes + + # Sizing metrics for center-out expansion + half_size = float(size_limit) / 2.0 + + # 1. DYNAMIC FRAME RESOLUTION DETECTION + # Automatically extracts frame limits from the highest observed coordinates in the batch + # to avoid hardcoding video resolution dimensions. + if raw_boxes.shape[0] > 0: + frame_w = int(torch.max(raw_boxes[:, 2]).item()) + frame_h = int(torch.max(raw_boxes[:, 3]).item()) + # Safe fallback buffer if tracking objects at the extreme top/left edges + frame_w = max(frame_w, 640) + frame_h = max(frame_h, 640) + else: + frame_w, frame_h = 1920, 1080 + + # Handle single box edge-case quickly to minimize path latency + if raw_boxes.shape[0] == 1: + merged_buffer = raw_boxes.clone().float() + num_merged = 1 + else: + # 2. ROBUST VRAM CACHE SEEDING + if ( + not hasattr(merge_boxes_gpu, "adj_matrix") + or merge_boxes_gpu.adj_matrix.ndim != 2 + ): + merge_boxes_gpu.adj_matrix = torch.zeros( + (max_cached_elements, max_cached_elements), + dtype=torch.bool, + device=raw_boxes.device, + ) + merge_boxes_gpu.components = torch.zeros( + (max_cached_elements,), dtype=torch.long, device=raw_boxes.device ) + merge_boxes_gpu.scratch_out = torch.zeros( + (max_cached_elements, 4), dtype=torch.float32, device=raw_boxes.device + ) + + N = min(raw_boxes.shape[0], max_cached_elements) + + # 3. PARALLEL GEOMETRIC GAP CALCULATIONS + x1 = raw_boxes[:N, 0] + y1 = raw_boxes[:N, 1] + x2 = raw_boxes[:N, 2] + y2 = raw_boxes[:N, 3] + + h_gaps = torch.clamp( + torch.max(x1.view(N, 1) - x2.view(1, N), x1.view(1, N) - x2.view(N, 1)), + min=0, + ) + v_gaps = torch.clamp( + torch.max(y1.view(N, 1) - y2.view(1, N), y1.view(1, N) - y2.view(N, 1)), + min=0, ) - return torch.stack(merged) + union_w = torch.max(x2.view(N, 1), x2.view(1, N)) - torch.min( + x1.view(N, 1), x1.view(1, N) + ) + union_h = torch.max(y2.view(N, 1), y2.view(1, N)) - torch.min( + y1.view(N, 1), y1.view(1, N) + ) + + # Vectorized generation of adjacency grid state properties + adj = merge_boxes_gpu.adj_matrix[:N, :N] + adj.copy_( + (h_gaps < gap_limit) + & (v_gaps < gap_limit) + & (union_w <= size_limit) + & (union_h <= size_limit) + ) + + # 4. CONNECTED COMPONENT DISCOVERY VIA GRAPH ITERATIONS + comp = merge_boxes_gpu.components[:N] + torch.arange(N, device=raw_boxes.device, out=comp) + + for _ in range(3): + comp.copy_(torch.max(adj * comp, dim=1).values) + + unique_ids = comp.unique() + num_merged = unique_ids.shape[0] + merged_buffer = merge_boxes_gpu.scratch_out[:num_merged] + + for idx, i in enumerate(unique_ids): + mask = comp == i + boxes_subset = raw_boxes[:N][mask] + + merged_buffer[idx, 0] = boxes_subset[:, 0].min() + merged_buffer[idx, 1] = boxes_subset[:, 1].min() + merged_buffer[idx, 2] = boxes_subset[:, 2].max() + merged_buffer[idx, 3] = boxes_subset[:, 3].max() + + # 5. SYMMETRIC CENTROID SQUARE EXPANSION + cx = (merged_buffer[:, 0] + merged_buffer[:, 2]) * 0.5 + cy = (merged_buffer[:, 1] + merged_buffer[:, 3]) * 0.5 + + ex1 = cx - half_size + ey1 = cy - half_size + ex2 = cx + half_size + ey2 = cy + half_size + + # 6. EDGE-COLLISION ANCHOR SHIFTING + # Instead of destructive clipping (which breaks squares), shift windows inward + # when they hit frame edges to guarantee your exact YOLO aspect ratio is maintained. + shift_left = torch.clamp(0.0 - ex1, min=0) + shift_right = torch.clamp(ex2 - frame_w, min=0) + ex1 += shift_left - shift_right + ex2 += shift_left - shift_right + + shift_top = torch.clamp(0.0 - ey1, min=0) + shift_bottom = torch.clamp(ey2 - frame_h, min=0) + ey1 += shift_top - shift_bottom + ey2 += shift_top - shift_bottom + + # 7. INTEGER FORMAT OUTPUT AND SECURE BOUNDARY BOUNDING + final_output = torch.zeros( + (num_merged, 4), dtype=torch.long, device=raw_boxes.device + ) + final_output[:, 0] = torch.clamp(ex1.round().long(), min=0, max=frame_w) + final_output[:, 1] = torch.clamp(ey1.round().long(), min=0, max=frame_h) + final_output[:, 2] = torch.clamp(ex2.round().long(), min=0, max=frame_w) + final_output[:, 3] = torch.clamp(ey2.round().long(), min=0, max=frame_h) + + return final_output -def merge_boxes_cpuv1(boxes, gap_limit=10): +def merge_boxes_gpu_v4( + raw_boxes, gap_limit=10, size_limit=1000, max_cached_elements=1500 +): """ - Greedy merge in 640x640 space to consolidate swarm fragments. - Input: List of [x1, y1, x2, y2] within [0, 640] + Refined Parallel Merger utilizing static function-attached scratchpads. + Maintains a 100% linear VRAM profile and eliminates dynamic allocations. """ - if not boxes: - return [] + if raw_boxes.shape[0] <= 1: + return raw_boxes - # O(N log N) sort by X for early exit optimization - boxes = sorted(boxes, key=lambda x: x[0]) - merged = [] + # ─── ADD THIS HIGH-THROUGHPUT CANDIDATE FILTER GUARD ────────────────── + # 1. Compute areas of all boxes instantly in parallel on the GPU + # widths = raw_boxes[:, 2] - raw_boxes[:, 0] + # heights = raw_boxes[:, 3] - raw_boxes[:, 1] + # areas = widths * heights + + # # 2. If the scene is overloaded, prioritize the top 400 largest macro regions + # # This prevents noise artifacts from blowing up the [N, N] grid layout! + # if raw_boxes.shape[0] > 400: + # _, top_indices = torch.topk(areas, k=400, sorted=False) + # raw_boxes = raw_boxes[top_indices] + # ────────────────────────────────────────────────────────────────────── + + # 1. ROBUST CACHE CHECK: Verify shape dimension bounds to prevent 1D flat layout leakage + if ( + not hasattr(merge_boxes_gpu, "adj_matrix") + or merge_boxes_gpu.adj_matrix.ndim != 2 + ): + merge_boxes_gpu.adj_matrix = torch.zeros( + (max_cached_elements, max_cached_elements), + dtype=torch.bool, + device=raw_boxes.device, + ) + merge_boxes_gpu.components = torch.zeros( + (max_cached_elements,), dtype=torch.long, device=raw_boxes.device + ) + merge_boxes_gpu.components_idx = torch.zeros( + (max_cached_elements,), dtype=torch.long, device=raw_boxes.device + ) + merge_boxes_gpu.scratch_out = torch.zeros( + (max_cached_elements, 4), dtype=torch.float32, device=raw_boxes.device + ) - while boxes: - curr = boxes.pop(0) - i = 0 - while i < len(boxes): - test = boxes[i] - # Early exit: horizontal gap exceeds limit - if test[0] - curr[2] > gap_limit: - break + # Establish safe spatial clip windows depending on current frame tracking load + N = min(raw_boxes.shape[0], max_cached_elements) + + # 2. VECTORIZED ARITHMETIC WITH VIEWS: Completely replace unbind() and unsqueeze() list loops + x1 = raw_boxes[:N, 0] + y1 = raw_boxes[:N, 1] + x2 = raw_boxes[:N, 2] + y2 = raw_boxes[:N, 3] + + # # Compute gaps smoothly using in-place operations over zero-copy memory layouts + # h_gaps = torch.clamp( + # torch.max(x1.view(N, 1) - x2.view(1, N), x1.view(1, N) - x2.view(N, 1)), min=0 + # ) + # v_gaps = torch.clamp( + # torch.max(y1.view(N, 1) - y2.view(1, N), y1.view(1, N) - y2.view(N, 1)), min=0 + # ) + + # # Map target union envelopes natively + # union_w = torch.max(x2.view(N, 1), x2.view(1, N)) - torch.min( + # x1.view(N, 1), x1.view(1, N) + # ) + # union_h = torch.max(y2.view(N, 1), y2.view(1, N)) - torch.min( + # y1.view(N, 1), y1.view(1, N) + # ) + x1_col, x1_row = x1.view(N, 1), x1.view(1, N) + y1_col, y1_row = y1.view(N, 1), y1.view(1, N) + x2_col, x2_row = x2.view(N, 1), x2.view(1, N) + y2_col, y2_row = y2.view(N, 1), y2.view(1, N) + + # Compute distance boundaries directly. + # torch.maximum/minimum maps to direct hardware vector instructions. + h_gaps = torch.clamp( + torch.maximum(x1_col, x1_row) - torch.minimum(x2_col, x2_row), min=0 + ) + v_gaps = torch.clamp( + torch.maximum(y1_col, y1_row) - torch.minimum(y2_col, y2_row), min=0 + ) - # Check vertical gap - y_dist = max(0, test[1] - curr[3], curr[3] - test[1]) - if y_dist <= gap_limit: - # Expand curr box to include test - curr = [ - min(curr[0], test[0]), - min(curr[1], test[1]), - max(curr[2], test[2]), - max(curr[3], test[3]), - ] - boxes.pop(i) - i = 0 # Re-check boundaries - else: - i += 1 - merged.append(curr) - return merged + # Map target union envelopes without generating intermediate subtraction tensors + union_w = torch.maximum(x2_col, x2_row) - torch.minimum(x1_col, x1_row) + union_h = torch.maximum(y2_col, y2_row) - torch.minimum(y1_col, y1_row) + + # Overwrite adjacency bounds directly into the pre-allocated cache slice + adj = merge_boxes_gpu.adj_matrix[:N, :N] + adj.copy_( + (h_gaps < gap_limit) + & (v_gaps < gap_limit) + & (union_w < size_limit) + & (union_h < size_limit) + ) + + # 3. ACCELERATED CONNECTED COMPONENTS: Run pointer rotations in place + comp = merge_boxes_gpu.components[:N] + # comp_idx = merge_boxes_gpu.components_idx[:N] + comp_idx_scratch = torch.zeros(N, dtype=torch.long, device=raw_boxes.device) + torch.arange(N, device=raw_boxes.device, out=comp) + + # Pack the destination outputs into the exact 2-tensor tuple expected by torch.max + output_tuple = (comp, comp_idx_scratch) + + # Unified logical components compression step + for _ in range(3): + # comp.copy_(torch.max(adj * comp, dim=1).values) + # Using a logical matrix view avoids any intermediate [N, N] expansions + torch.max(torch.where(adj, comp, 0), dim=1, out=output_tuple) + + # unique_ids = comp.unique() + # num_merged = unique_ids.shape[0] + + # # 4. STATIC MEMORY AGGREGATION: Eliminate the loops appending torch.cat() arrays + # out_buffer = merge_boxes_gpu.scratch_out[:num_merged] + + # for idx, i in enumerate(unique_ids): + # mask = comp == i + # boxes_subset = raw_boxes[:N][mask] + + # # Write structural outputs directly into our static memory block channels + # out_buffer[idx, 0] = boxes_subset[:, 0].min() + # out_buffer[idx, 1] = boxes_subset[:, 1].min() + # out_buffer[idx, 2] = boxes_subset[:, 2].max() + # out_buffer[idx, 3] = boxes_subset[:, 3].max() + + # # Return the clean floating-point tensor slice natively + # return out_buffer.clone() + + # 1. Map labels to a clean 0-indexed range without calling .unique() or syncing with the CPU + # torch.unique(..., return_inverse=True) handles the grouping array assembly entirely on the GPU + # _, inverse_indices = torch.unique(comp, return_inverse=True) + # num_merged = inverse_indices.max().item() + 1 # Minimal sync step + + # out_buffer = merge_boxes_gpu.scratch_out[:num_merged] + # boxes_subset = raw_boxes[:N] + + # # 2. Pre-fill scratchpad buffers with boundary initialization constants + # out_buffer[:, 0:2].fill_(float('inf')) + # out_buffer[:, 2:4].fill_(float('-inf')) + + # # 3. Use highly optimized CUDA scatter reduction handles to compute all mins/maxes at once + # # This completely eliminates your sequential Python "for idx, i in enumerate" loops! + # out_buffer[:, 0:2].scatter_reduce_(0, inverse_indices.view(-1, 1).expand(-1, 2), boxes_subset[:, 0:2], reduce="amin", include_self=False) + # out_buffer[:, 2:4].scatter_reduce_(0, inverse_indices.view(-1, 1).expand(-1, 2), boxes_subset[:, 2:4], reduce="amax", include_self=False) + + # return out_buffer.clone() + + # 1. Use maximum theoretical capacity boundaries directly (N candidates max) + # This completely skips calculating max item counts on the CPU host! + out_buffer = merge_boxes_gpu.scratch_out[:N] + boxes_subset = raw_boxes[:N] + + # 2. Reset our fixed scratchpad slice boundaries using parallel operations + out_buffer[:, 0:2].fill_(float("inf")) + out_buffer[:, 2:4].fill_(float("-inf")) + + # 3. Use 'comp' directly as your index axis mapping variable! + # Because 'comp' values fall within [0, N-1], they are already valid scatter addresses. + # This executes 100% asynchronously on the GPU without pausing the CPU thread. + out_buffer[:, 0:2].scatter_reduce_( + 0, + comp.view(-1, 1).expand(-1, 2), + boxes_subset[:, 0:2], + reduce="amin", + include_self=False, + ) + out_buffer[:, 2:4].scatter_reduce_( + 0, + comp.view(-1, 1).expand(-1, 2), + boxes_subset[:, 2:4], + reduce="amax", + include_self=False, + ) + + # 4. Filter out unwritten rows where the boundaries remain at infinity + # valid_mask = out_buffer[:, 0] != float('inf') + + # # return out_buffer[valid_mask].clone() + # # Extract the exact non-zero index mappings entirely on the GPU. + # # This prevents the CPU from forcing a data shape verification step! + # valid_indices = torch.nonzero(valid_mask).squeeze(1) + + # # Index with integers instead of booleans to drop line 1098 down to 0ms + # return out_buffer[valid_indices].clone() + + # 4. Filter out unwritten rows where the boundaries remain at infinity + valid_mask = out_buffer[:, 0] != float("inf") + + # Sort the boolean mask in descending order entirely on the GPU hardware. + # This automatically pushes all valid boxes (True/1) to the top of the matrix + # and leaves unwritten slots (False/0) at the bottom. + _, sort_indices = torch.sort(valid_mask.long(), descending=True, dim=0) + + # Rearrange the static out_buffer asynchronously without altering its shape [N, 4] + out_buffer_sorted = out_buffer[sort_indices] + + # Overwrite the remaining invalid infinity rows to safe zero-pads. + # This ensures downstream deep learning blocks don't encounter NaN errors. + invalid_rows_mask = ~valid_mask[sort_indices] + out_buffer_sorted[invalid_rows_mask] = 0.0 + + # Return the static-shaped [N, 4] tensor handle. + # Because N is already known by the CPU, line 1098 drops instantly to 0ms! + return out_buffer_sorted + + +# def merge_boxes_cpuv1(boxes, gap_limit=10): +# """ +# Greedy merge in 640x640 space to consolidate swarm fragments. +# Input: List of [x1, y1, x2, y2] within [0, 640] +# """ +# if not boxes: +# return [] + +# # O(N log N) sort by X for early exit optimization +# boxes = sorted(boxes, key=lambda x: x[0]) +# merged = [] + +# while boxes: +# curr = boxes.pop(0) +# i = 0 +# while i < len(boxes): +# test = boxes[i] +# # Early exit: horizontal gap exceeds limit +# if test[0] - curr[2] > gap_limit: +# break + +# # Check vertical gap +# y_dist = max(0, test[1] - curr[3], curr[3] - test[1]) +# if y_dist <= gap_limit: +# # Expand curr box to include test +# curr = [ +# min(curr[0], test[0]), +# min(curr[1], test[1]), +# max(curr[2], test[2]), +# max(curr[3], test[3]), +# ] +# boxes.pop(i) +# i = 0 # Re-check boundaries +# else: +# i += 1 +# merged.append(curr) +# return merged def merge_boxes_cpu(boxes, gap_limit=10, size_limit=800): @@ -809,135 +2362,136 @@ def merge_boxes_cpu(boxes, gap_limit=10, size_limit=800): return merged -def find_contours_gpu_equivalent( - mask_gpu_mat, stream=None, grid_size=16, limit_640=1000, max_boxes=100 -): - """ - ULTRA-OPTIMIZED: Grid-based Region Proposal. - Reduces N to prevent merger bottlenecks. Latency: <0.5ms. - """ - # 1. Zero-copy bridge: GpuMat -> CuPy -> Torch - mask_cp = gpumat2cupy(mask_gpu_mat) - mask_tensor = torch.as_tensor(mask_cp, device="cuda") - - # # 2. Downsample via Max Pooling (Acts as Denoise + Grouper) - # # A 32x32 grid on 640x640 creates a 20x20 matrix (400 cells max) - # pooled = F.max_pool2d( - # mask_tensor.unsqueeze(0).unsqueeze(0).float(), - # kernel_size=grid_size, - # stride=grid_size - # ).squeeze() - - # # 3. Get Indices of Motion - # indices = torch.nonzero(pooled > 0) - # A grid_size of 32 has 1,024 pixels. - # We require at least 5% (approx 50 pixels) to be white to trigger a ROI. - # This 'math' kills terrain shimmer but keeps solid drone blobs. - # density_threshold = (grid_size * grid_size) * 0.05 - - # Use torch.count_nonzero if using AvgPool, or stick to pooled with threshold - # Since 'pooled' from MaxPool is just the max value (0 or 255), - # we should use F.avg_pool2d instead to get a density map: - - density_map = F.avg_pool2d( - mask_tensor.unsqueeze(0).unsqueeze(0).float(), - kernel_size=grid_size, - stride=grid_size, - ).squeeze() - - # Define your sensitivity (e.g., 5% density) - # If a block is 5% full of 'white' (255) pixels, the average will be 12.75 - density_threshold = 2 # int((grid_size * grid_size) * 0.01) - - # 255 * 0.10 means the grid cell must be 10% white pixels - indices = torch.nonzero(density_map > density_threshold) - - # EARLY EXIT: No motion detected, return empty - if indices.shape[0] == 0: - return torch.empty((0, 4), device="cuda") - # 2. SORT BY DENSITY: Get values for each index - # We pull the density values for every 'hot' cell - densities = density_map[indices[:, 0], indices[:, 1]] - - # 3. Get the sort order (Descending: highest density first) - _, sort_order = torch.sort(densities, descending=True) - indices = indices[sort_order] - - # CAP N: If scene is too noisy, take top regions to save the merger - if indices.shape[0] > max_boxes: - indices = indices[:max_boxes] - - # 4. Map back to 640p Bounding Boxes - y1, x1 = indices[:, 0] * grid_size, indices[:, 1] * grid_size - y2, x2 = y1 + grid_size, x1 + grid_size - raw_boxes = torch.stack([x1, y1, x2, y2], dim=1).float() - - # 5. Merge adjacent grid blocks - # gap_limit=grid_size+2 ensures diagonal/nearby blocks connect - return merge_boxes_gpu(raw_boxes, gap_limit=grid_size * 2, size_limit=limit_640) - - -def find_contours_gpu_equivalentv1(mask_gpu_mat, stream=None, limit_640=None): - """ - GPU equivalent to cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) - Returns: torch.Tensor [N, 4] containing (x1, y1, x2, y2) in analysis space. - """ - # Bridge OpenCV GpuMat to CuPy (Zero-Copy) - w, h = mask_gpu_mat.size() - ptr = mask_gpu_mat.cudaPtr() - pitch_bytes = mask_gpu_mat.step - - mask_cp = cupy.ndarray( - (h, w), - dtype=cupy.uint8, - memptr=cupy.cuda.MemoryPointer( - cupy.cuda.UnownedMemory(ptr, pitch_bytes * h, mask_gpu_mat), 0 - ), - strides=(pitch_bytes, 1), - ) - - # Use the stream pointer if provided, otherwise default to 0 (Null Stream) - stream_ptr = stream.cudaPtr() if stream else 0 - - with cupy.cuda.ExternalStream(stream_ptr): - # Labeling (Equivalent to finding connected components) - # labeled is an int32 array where every 'blob' has a unique number - structure = cupy.array([[1, 1, 1], [1, 1, 1], [1, 1, 1]]) - labeled, num_labels = cupyx.scipy.ndimage.label(mask_cp, structure=structure) - - if num_labels == 0: - return torch.empty((0, 4), device="cuda") - - # Setup Bounding Box Buffers - x1 = cupy.full((num_labels + 1,), w, dtype=cupy.int32) - y1 = cupy.full((num_labels + 1,), h, dtype=cupy.int32) - x2 = cupy.full((num_labels + 1,), -1, dtype=cupy.int32) - y2 = cupy.full((num_labels + 1,), -1, dtype=cupy.int32) - - # Run the Bounds Kernel - # IMPORTANT: Use labeled.strides[0]//4 to get the pitch in elements - pitch_elements = labeled.strides[0] // 4 - tpb = (16, 16) - bpg = ((w + tpb[0] - 1) // tpb[0], (h + tpb[1] - 1) // tpb[1]) - - get_bounds_kernel( - bpg, tpb, (labeled, pitch_elements, w, h, num_labels, x1, y1, x2, y2) - ) - - # Stack and return as Torch Tensor for YOLO/Drawing - # We skip index 0 as it represents the background (black) - # boxes = torch.stack( - # [ - # torch.as_tensor(x1[1:], device="cuda"), - # torch.as_tensor(y1[1:], device="cuda"), - # torch.as_tensor(x2[1:], device="cuda"), - # torch.as_tensor(y2[1:], device="cuda"), - # ], - # dim=1, - # ).float() - boxes = cupy.column_stack((x1[1:], y1[1:], x2[1:], y2[1:])) - - return torch.as_tensor(boxes, device="cuda").float() +# def find_contours_gpu_equivalent_v1( +# mask_gpu_mat, stream=None, grid_size=16, limit_640=1000, max_boxes=100 +# ): +# """ +# ULTRA-OPTIMIZED: Grid-based Region Proposal. +# Reduces N to prevent merger bottlenecks. Latency: <0.5ms. +# """ +# # 1. Zero-copy bridge: GpuMat -> CuPy -> Torch +# mask_cp = gpumat2cupy(mask_gpu_mat) +# mask_tensor = torch.as_tensor(mask_cp, device="cuda") + +# # # 2. Downsample via Max Pooling (Acts as Denoise + Grouper) +# # # A 32x32 grid on 640x640 creates a 20x20 matrix (400 cells max) +# # pooled = F.max_pool2d( +# # mask_tensor.unsqueeze(0).unsqueeze(0).float(), +# # kernel_size=grid_size, +# # stride=grid_size +# # ).squeeze() + +# # # 3. Get Indices of Motion +# # indices = torch.nonzero(pooled > 0) +# # A grid_size of 32 has 1,024 pixels. +# # We require at least 5% (approx 50 pixels) to be white to trigger a ROI. +# # This 'math' kills terrain shimmer but keeps solid drone blobs. +# # density_threshold = (grid_size * grid_size) * 0.05 + +# # Use torch.count_nonzero if using AvgPool, or stick to pooled with threshold +# # Since 'pooled' from MaxPool is just the max value (0 or 255), +# # we should use F.avg_pool2d instead to get a density map: + +# density_map = F.avg_pool2d( +# mask_tensor.unsqueeze(0).unsqueeze(0).float(), +# kernel_size=grid_size, +# stride=grid_size, +# ).squeeze() + +# # Define your sensitivity (e.g., 5% density) +# # If a block is 5% full of 'white' (255) pixels, the average will be 12.75 +# density_threshold = 2 # int((grid_size * grid_size) * 0.01) + +# # 255 * 0.10 means the grid cell must be 10% white pixels +# indices = torch.nonzero(density_map > density_threshold) + +# # EARLY EXIT: No motion detected, return empty +# if indices.shape[0] == 0: +# return torch.empty((0, 4), device="cuda") +# # 2. SORT BY DENSITY: Get values for each index +# # We pull the density values for every 'hot' cell +# densities = density_map[indices[:, 0], indices[:, 1]] + +# # 3. Get the sort order (Descending: highest density first) +# _, sort_order = torch.sort(densities, descending=True) +# indices = indices[sort_order] + +# # CAP N: If scene is too noisy, take top regions to save the merger +# if indices.shape[0] > max_boxes: +# indices = indices[:max_boxes] + +# # 4. Map back to 640p Bounding Boxes +# y1, x1 = indices[:, 0] * grid_size, indices[:, 1] * grid_size +# y2, x2 = y1 + grid_size, x1 + grid_size +# raw_boxes = torch.stack([x1, y1, x2, y2], dim=1).float() + +# # 5. Merge adjacent grid blocks +# # gap_limit=grid_size+2 ensures diagonal/nearby blocks connect +# # del mask_cp, mask_tensor, density_map, densities, indices +# return merge_boxes_gpu(raw_boxes, gap_limit=grid_size * 2, size_limit=limit_640) + +# Better: moved to handlers.py +# def find_contours_gpu_equivalent(mask_gpu_mat, stream=None, limit_640=None): +# """ +# GPU equivalent to cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) +# Returns: torch.Tensor [N, 4] containing (x1, y1, x2, y2) in analysis space. +# """ +# # Bridge OpenCV GpuMat to CuPy (Zero-Copy) +# w, h = mask_gpu_mat.size() +# ptr = mask_gpu_mat.cudaPtr() +# pitch_bytes = mask_gpu_mat.step + +# mask_cp = cupy.ndarray( +# (h, w), +# dtype=cupy.uint8, +# memptr=cupy.cuda.MemoryPointer( +# cupy.cuda.UnownedMemory(ptr, pitch_bytes * h, mask_gpu_mat), 0 +# ), +# strides=(pitch_bytes, 1), +# ) + +# # Use the stream pointer if provided, otherwise default to 0 (Null Stream) +# stream_ptr = stream.cudaPtr() if stream else 0 + +# with cupy.cuda.ExternalStream(stream_ptr): +# # Labeling (Equivalent to finding connected components) +# # labeled is an int32 array where every 'blob' has a unique number +# structure = cupy.ones((3, 3), dtype=cupy.int32) +# labeled, num_labels = cupyx.scipy.ndimage.label(mask_cp, structure=structure) + +# if num_labels == 0: +# return torch.empty((0, 4), device="cuda") + +# # Setup Bounding Box Buffers +# x1 = cupy.full((num_labels + 1,), w, dtype=cupy.int32) +# y1 = cupy.full((num_labels + 1,), h, dtype=cupy.int32) +# x2 = cupy.full((num_labels + 1,), -1, dtype=cupy.int32) +# y2 = cupy.full((num_labels + 1,), -1, dtype=cupy.int32) + +# # Run the Bounds Kernel +# # IMPORTANT: Use labeled.strides[0]//4 to get the pitch in elements +# pitch_elements = labeled.strides[0] // 4 +# tpb = (16, 16) +# bpg = ((w + tpb[0] - 1) // tpb[0], (h + tpb[1] - 1) // tpb[1]) + +# get_bounds_kernel( +# bpg, tpb, (labeled, pitch_elements, w, h, num_labels, x1, y1, x2, y2) +# ) + +# # Stack and return as Torch Tensor for YOLO/Drawing +# # We skip index 0 as it represents the background (black) +# # boxes = torch.stack( +# # [ +# # torch.as_tensor(x1[1:], device="cuda"), +# # torch.as_tensor(y1[1:], device="cuda"), +# # torch.as_tensor(x2[1:], device="cuda"), +# # torch.as_tensor(y2[1:], device="cuda"), +# # ], +# # dim=1, +# # ).float() +# boxes = cupy.column_stack((x1[1:], y1[1:], x2[1:], y2[1:])) + +# return torch.as_tensor(boxes, device="cuda").float() def get_detection_color(index, is_bgr=False): @@ -1141,6 +2695,49 @@ def manual_fps_calculation(src, num_frames=10): return 0 +def scale_bbox( + bbox, origW, origH, targetW=7680, targetH=4320, in_format="xywh", out_format="xywh" +): + if in_format == "xywh": + x, y, w, h = bbox + x2 = x + w + y2 = y + h + else: + x, y, x2, y2 = bbox + + # Get scale factors + scale_x = targetW / origW + scale_y = targetH / origH + + # Translate bbox to target resolution + # x_target = max(0, min(int(round(x * scale_x)), targetW - 1)) + # y_target = max(0, min(int(round(y * scale_y)), targetH - 1)) + # w_target = min(targetW - x_target, int(round(w * scale_x))) + # h_target = min(targetH - y_target, int(round(h * scale_y))) + x_target = max(0, int(x * scale_x)) + y_target = max(0, int(y * scale_y)) + x2_target = min(targetW - 1, int(x2 * scale_x)) + y2_target = min(targetH - 1, int(y2 * scale_y)) + w_target = x2_target - x_target + h_target = y2_target - y_target + if out_format == "xywh": + return [x_target, y_target, w_target, h_target] + else: + return [x_target, y_target, x2_target, y2_target] + + +def scale_bbox_xywh(bbox, origW, origH, targetW=7680, targetH=4320): + return scale_bbox( + bbox, + origW, + origH, + targetW=targetW, + targetH=targetH, + in_format="xywh", + out_format="xywh", + ) + + def rgb_to_nv12_torch(rgb_tensor): """ Fast GPU conversion from RGB to NV12 using PyTorch. @@ -1448,46 +3045,60 @@ def merge_boxes_limit(boxes, dist_threshold=25, min_area=32, max_size=640): return boxes -def filter_contained_boxes(boxes, containment_thresh=0.90): - if len(boxes) < 2: - return boxes +# def filter_contained_boxes(boxes, containment_thresh=0.90): +# if len(boxes) < 2: +# return boxes - # Convert to NumPy for vectorized math - objs = np.array(boxes) - areas = (objs[:, 2] - objs[:, 0]) * (objs[:, 3] - objs[:, 1]) +# # Convert to NumPy for vectorized math +# objs = np.array(boxes) +# areas = (objs[:, 2] - objs[:, 0]) * (objs[:, 3] - objs[:, 1]) - # Sort by area descending - order = areas.argsort()[::-1] - objs = objs[order] - areas = areas[order] +# # Sort by area descending +# order = areas.argsort()[::-1] +# objs = objs[order] +# areas = areas[order] - keep = [] - idx_list = np.arange(len(objs)) +# keep = [] +# idx_list = np.arange(len(objs)) - while len(idx_list) > 0: - i = idx_list[0] - keep.append(objs[i].tolist()) - if len(idx_list) == 1: - break +# while len(idx_list) > 0: +# i = idx_list[0] +# keep.append(objs[i].tolist()) +# if len(idx_list) == 1: +# break + +# # Vectorized Intersection over Union (IoU) / Containment +# others = objs[idx_list[1:]] +# ix1 = np.maximum(objs[i, 0], others[:, 0]) +# iy1 = np.maximum(objs[i, 1], others[:, 1]) +# ix2 = np.minimum(objs[i, 2], others[:, 2]) +# iy2 = np.minimum(objs[i, 3], others[:, 3]) + +# iw = np.maximum(0, ix2 - ix1) +# ih = np.maximum(0, iy2 - iy1) +# inter_area = iw * ih + +# # Calculate how much 'others' are contained within 'i' +# containment = inter_area / areas[idx_list[1:]] + +# # Only keep boxes that are NOT mostly contained within the current box +# idx_list = idx_list[1:][containment < containment_thresh] - # Vectorized Intersection over Union (IoU) / Containment - others = objs[idx_list[1:]] - ix1 = np.maximum(objs[i, 0], others[:, 0]) - iy1 = np.maximum(objs[i, 1], others[:, 1]) - ix2 = np.minimum(objs[i, 2], others[:, 2]) - iy2 = np.minimum(objs[i, 3], others[:, 3]) +# return keep - iw = np.maximum(0, ix2 - ix1) - ih = np.maximum(0, iy2 - iy1) - inter_area = iw * ih - # Calculate how much 'others' are contained within 'i' - containment = inter_area / areas[idx_list[1:]] +class DummyProcess: + def start(self): + pass + + def join(self, timeout=None): + pass - # Only keep boxes that are NOT mostly contained within the current box - idx_list = idx_list[1:][containment < containment_thresh] + def is_alive(self): + return False - return keep + def close(self): + pass @dataclass @@ -1503,3 +3114,199 @@ class PipelineMapping: class StreamRequest(BaseModel): url: str name: str + + +class ResourceTrackerFilter: + def __init__(self, original_stderr): + self.stderr = original_stderr + self.buffer = "" + + def write(self, data): + self.buffer += data + # If background resource tracker signals bleed out during collection, suppress them + if ( + "resource_tracker.py" in self.buffer + or "KeyError:" in self.buffer + or "shm_ai_640" in self.buffer + or "cache[rtype].remove(name)" in self.buffer + ): + if "\n" in data: + self.buffer = "" + return + self.stderr.write(data) + self.buffer = "" + + def flush(self): + self.stderr.flush() + + +# ============================================================================== +# TRUE LOCK-FREE ASYNC VIDEO ENCODER WORKER +# ============================================================================== +class AsyncVideoWriter: + """Handles disk saving operations completely lock-free without thread-signaling overhead.""" + + def __init__(self, path, fourcc, fps, size): + self.writer = cv2.VideoWriter(path, fourcc, fps, size) + # Expand double buffer ring map to mitigate any underlying I/O bursts + self.buffer = deque(maxlen=int(fps)) + self.running = True + + # REMOVE SEVERE BOTTLENECK SIGNALS: + # self.frame_ready = threading.Event() <-- Deleted to clear lock.acquire thrashing! + + # Pre-allocate page-locked pinned host buffer allocations + self.host_staging_tensor = torch.empty( + (size[1], size[0], 3), dtype=torch.uint8, device="cpu" + ).pin_memory() + + self.thread = threading.Thread(target=self._write_loop, daemon=True) + self.thread.start() + + def _write_loop(self): + while self.running or self.buffer: + try: + # Natively poll the lock-free structure directly without forcing a kernel signal wait block + if not self.buffer: + # A crisp 2ms sleep keeps the CPU completely cool while preserving + # sub-millisecond thread scheduling wake-ups on low priority cores + time.sleep(0.005) + continue + + frame_payload = self.buffer.popleft() + if frame_payload is None: + break + + # --- UNTHROTTLED HARDWARE VIEW EXTRACTION --- + if torch.is_tensor(frame_payload): + if frame_payload.is_cuda: + self.host_staging_tensor.copy_(frame_payload, non_blocking=True) + + ctx_event = torch.cuda.Event() + ctx_event.record(torch.cuda.current_stream()) + ctx_event.synchronize() + numpy_frame = self.host_staging_tensor.numpy() + else: + numpy_frame = frame_payload.numpy() + else: + numpy_frame = np.asarray(frame_payload) + + self.writer.write(numpy_frame) + + except Exception as e: + main_app_logger.info( + f"[DISK-WRITER-ERROR] Asynchronous frame save failed: {e}", + ) + continue + + def write_frame(self, frame): + """Pure lock-free, zero-signal submission track. Fires under 1 microsecond!""" + if self.running: + # Overwrites elements atomically without triggering standard Python lockouts + self.buffer.append(frame) + # REMOVE: self.frame_ready.set() <-- GONE! CPU thread remains un-starved! + + def release(self): + """Secure drain release prevents early container dropouts.""" + if torch.cuda.is_available(): + torch.cuda.synchronize() + + self.running = False + self.buffer.append(None) + + if self.thread.is_alive(): + self.thread.join(timeout=5.0) + self.writer.release() + + +class AsyncDisplayVideoWriter: + """ + Lock-free single-element buffer optimized for 8K pipelines. + Eliminates queue.Queue lock contention to preserve strict target frame rates. + """ + + def __init__(self, target_fps, display_size, quality=60): + self.target_fps = float(target_fps) + self.disp_w, self.disp_h = display_size + self.quality = int(quality) + + # 1. 🔄 FIX: Use a lockless deque with maxlen=1 instead of queue.Queue + self.buffer = deque(maxlen=1) + self.running = True + self.handler = None + + self.thread = threading.Thread(target=self._write_loop, daemon=True) + self.thread.start() + + def set_handler_context(self, handler_instance): + self.handler = handler_instance + + def _write_loop(self): + encode_param = [int(cv2.IMWRITE_JPEG_QUALITY), self.quality] + + while self.running: + try: + # 2. 🔄 FIX: Non-blocking pop from the single-element buffer + if not self.buffer: + time.sleep(0.015) # 0.005) + continue + + display_frame, frame_num = self.buffer.popleft() + + if self.handler is None or not self.handler.active: + continue + + if ( + display_frame.shape[1] != self.disp_w + or display_frame.shape[0] != self.disp_h + ): + display_frame = cv2.resize( + display_frame, + (self.disp_w, self.disp_h), + interpolation=cv2.INTER_NEAREST, + ) + + ret, jpeg_buf = cv2.imencode(".jpg", display_frame, encode_param) + if not ret: + continue + + frame_bytes = jpeg_buf.tobytes() + frame_len = len(frame_bytes) + num_shms = len(self.handler.shms) + + write_idx = (self.handler.ready_buffer_idx.value + 1) % num_shms + + shm_block = self.handler.shms[write_idx] + shm_block.buf[:frame_len] = memoryview(frame_bytes) + + self.handler.shm_frame_lengths[write_idx] = frame_len + self.handler.ready_buffer_idx.value = write_idx + self.handler.shared_details["last_id"] = frame_num + self.handler.mp_last_id.value = frame_num + + if hasattr(self.handler, "loop") and self.handler.loop is not None: + self.handler.loop.call_soon_threadsafe( + self.handler.frame_ready_event.set + ) + else: + self.handler.frame_ready_event.set() + + except Exception as e: + main_app_logger.info( + f"[STREAM-ERROR] Lock-free frame streaming dropped: {e}" + ) + continue + + def write_frame(self, frame, frame_num): + """Thread-safe lock-free atomic submission track.""" + if self.running: + # 3. 🔄 FIX: Directly append to overwrite the old entry without thread locks + self.buffer.append((frame, frame_num)) + + def release(self): + self.running = False + + self.buffer.clear() + + if self.thread.is_alive(): + self.thread.join(timeout=0.5) diff --git a/fastapi/main.py b/fastapi/main.py index a1e30aa..0c14d9f 100644 --- a/fastapi/main.py +++ b/fastapi/main.py @@ -1,6 +1,13 @@ +# ============================================================================== +# SUPPRESS WARNINGS import warnings warnings.filterwarnings("ignore", message="The value of the smallest subnormal for") +warnings.filterwarnings( + "ignore", category=FutureWarning, message=".*reduce_op` is deprecated.*" +) + +# ============================================================================== import asyncio import json @@ -21,6 +28,8 @@ from fastapi.responses import StreamingResponse from fastapi.templating import Jinja2Templates +# ============================================================================== + MODEL_CLASSES_FILE = "/var/www/cache/model_classes.json" RUN_CONFIG = PipelineConfig( @@ -62,7 +71,7 @@ # Standardizes logs across the application and uvicorn server logging.basicConfig( level=logging.INFO, - format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", + format="%(asctime)s [%(levelname)s] %(name)s (%(filename)s:%(lineno)d) - %(message)s", handlers=[logging.StreamHandler(sys.stdout)], ) main_app_logger = logging.getLogger("fastapi_app") @@ -110,36 +119,58 @@ async def stream_video(data: StreamRequest, request: Request): dict: Status message and the updated list of active stream keys. """ url, name = data.url, data.name + + gc.collect() # Final garbage collection + if torch.cuda.is_available(): + torch.cuda.empty_cache() + + # async with request.app.state.stream_lock: active_streams = request.app.state.active_streams + if name in active_streams: + print(f"[STREAM_VIDEO]: Clearing old stream for {name}...") + active_streams[name].stop() + active_streams[name].stop_threads(["process_thread"]) + active_streams[name] = None + del active_streams[name] + # Only initialize if the stream isn't already being processed if name not in active_streams: - print(f"Starting background worker for {name}...") - - # Check if a global model instance should be passed to the handler - if RUN_CONFIG.SHARED_MODEL: - handler = VideoStreamHandler( - url, - name, - active_streams, - config=RUN_CONFIG, - model=app.state.model, - ) - else: - handler = VideoStreamHandler( - url, - name, - active_streams, - config=RUN_CONFIG, - ) - - # Start the background thread (OpenCV capture + AI inference) - handler.start() - - # Register the handler in the global state for cross-endpoint access - app.state.active_streams[name] = handler - - curr_keys = list(app.state.active_streams.keys()) + print(f"[STREAM_VIDEO]: Starting background worker for {name}...") + + try: + # Check if a global model instance should be passed to the handler + if RUN_CONFIG.SHARED_MODEL: + handler = VideoStreamHandler( + url, + name, + active_streams, + config=RUN_CONFIG, + model=app.state.model, + ) + else: + handler = VideoStreamHandler( + url, + name, + active_streams, + config=RUN_CONFIG, + ) + + # Start the background thread (OpenCV capture + AI inference) + handler.start() + print("[STREAM_VIDEO]: Worker running...") + + # Register the handler in the global state for cross-endpoint access + request.app.state.active_streams[name] = handler + except RuntimeError: + if "handler" in locals(): + del handler + gc.collect() + if torch.cuda.is_available(): + torch.cuda.empty_cache() + print("[STREAM_VIDEO]: Could not start stream. Try again...") + + curr_keys = list(request.app.state.active_streams.keys()) if RUN_CONFIG.DEBUG_FLAG: print( f"stream DEBUG VIEW | PID: {os.getpid()} | Looking for: {name} | Found Keys: {curr_keys}" @@ -174,24 +205,51 @@ async def frame_generator(streamer, request: Request): Yields frames only when the background worker signals a new frame is ready. Ensures strict chronological order using frame IDs. """ - shm_names = streamer.shared_details["shm_names"] - reader_shms = [mp.shared_memory.SharedMemory(name=n) for n in shm_names] + reader_shms = [] last_sent_id = -1 try: + shm_names = streamer.shared_details.get("shm_names", []) + reader_shms = [mp.shared_memory.SharedMemory(name=n) for n in shm_names] while streamer.active: # Stop the generator immediately if the browser tab is closed if await request.is_disconnected(): main_app_logger.info(f"Client disconnected from {name}") break - # Wait for the background thread to signal that AI processing is complete - await streamer.frame_ready_event.wait() + if getattr(streamer, "_is_stopped", False) or not streamer.active: + main_app_logger.info( + f"Video execution finished naturally for {name}. Closing stream." + ) + async with request.app.state.stream_lock: + app.state.active_streams.pop(name, None) + # active_streams.pop(name, None) + break + + try: + # Wait for the background thread to signal that AI processing is complete + await asyncio.wait_for( + streamer.frame_ready_event.wait(), timeout=2.0 + ) + except asyncio.TimeoutError: + # Check if stream died or reader stopped + if not streamer.active or getattr(streamer, "_is_stopped", False): + async with request.app.state.stream_lock: + app.state.active_streams.pop(name, None) + break + continue # streamer.frame_ready_event.clear() # Reset for the next frame # streamer.reader_busy.value = True # target_idx = streamer.ready_buffer_idx.value # streamer.reader_active_idx.value = target_idx + # if not streamer.active: + if getattr(streamer, "_is_stopped", False) or not streamer.active: + active_streams.pop(name, None) + streamer.stop_threads(["process_thread"]) + async with request.app.state.stream_lock: + app.state.active_streams.pop(name, None) + break # Frame Synchronization: ensure we don't send duplicate or out-of-order frames current_id = streamer.shared_details.get("last_id", -1) @@ -229,15 +287,32 @@ async def frame_generator(streamer, request: Request): + b"\r\n" ) last_sent_id = current_id - streamer.last_heartbeat = time.time() + streamer.last_heartbeat = time.perf_counter() # Yield control to the event loop to prevent blocking # streamer.frame_ready_event.clear() # Reset for the next frame await asyncio.sleep(0.001) except Exception as e: - main_app_logger.error(f"[EXCEPTION] Generator Error: {e}") - # finally: - # streamer.reader_busy.value = False # Safety unlock + # Check for standard client disconnections (Broken pipe / Connection reset) + if isinstance(e, OSError) and e.errno in (32, 104): + # main_app_logger.info(f"Stream client disconnected gracefully from {name}") + pass + else: + main_app_logger.error(f" [EXCEPTION] Generator Error: {e}") + finally: + # streamer.reader_busy.value = False # Safety unlock + for shm in reader_shms: + try: + shm.close() + shm = None + except Exception: + pass + reader_shms.clear() + # pass + + gc.collect() + if torch.cuda.is_available(): + torch.cuda.empty_cache() return StreamingResponse( frame_generator(streamer, request), @@ -283,7 +358,11 @@ async def dashboard_stats(request: Request): # Video Backlog: Frames waiting for Disk I/O video_backlog = ( - streamer.write_queue.qsize() if streamer.config.ENABLE_QUERYING else 0 + streamer.write_queue.qsize() + if streamer.config.ENABLE_QUERYING + and hasattr(streamer, "write_queue") + and hasattr(streamer.write_queue, "qsize") + else 0 ) # IO Backlog: Frames queued for disk storage (if enabled) @@ -301,7 +380,7 @@ async def dashboard_stats(request: Request): "fps": round(streamer.stat_fps, 1), "inputfps": round(streamer.input_fps, 1), "targetfps": round(streamer.target_fps, 1), - "is_streaming": streamer.active, + "is_streaming": getattr(streamer, "active", False), "clipper_backlog": clipper_backlog, "ai_backlog": ai_backlog, "video_backlog": video_backlog, @@ -323,6 +402,11 @@ async def get_status(request: Request): } +import gc + +import torch + + @app.post("/stop_stream/{name}") async def stop_stream(name: str, request: Request): """ @@ -330,14 +414,24 @@ async def stop_stream(name: str, request: Request): The blocking cleanup logic is offloaded to a separate thread to prevent API hang. """ # Immediately remove from the global state so polling/UI syncs instantly - streamer = request.app.state.active_streams.pop(name, None) + async with request.app.state.stream_lock: + streamer = request.app.state.active_streams.pop(name, None) if streamer: streamer.active = False # BACKGROUND CLEANUP: Fire-and-forget the heavy hardware teardown loop = asyncio.get_event_loop() - loop.run_in_executor(None, streamer.stop) + await loop.run_in_executor(None, streamer.stop) + # streamer.stop_threads(["process_thread"]) + + # Force CUDA driver to flush all residual stream contexts + if torch.cuda.is_available(): + torch.cuda.synchronize() + torch.cuda.empty_cache() + if hasattr(torch.cuda, "ipc_collect"): + torch.cuda.ipc_collect() + gc.collect() if streamer.config.DEBUG_FLAG: print(f"--- CLEANUP | Stream '{name}' stopped and removed. ---") @@ -366,6 +460,11 @@ async def stop_all_streams(request: Request): # Offload to executor to keep the API responsive loop = asyncio.get_event_loop() await loop.run_in_executor(None, streamer.stop) + streamer.stop_threads(["process_thread"]) + + gc.collect() + if torch.cuda.is_available(): + torch.cuda.empty_cache() return { "status": "success", @@ -452,7 +551,7 @@ async def get_model_classes(): return {"classes": classes} # Fallback structure matching your old format if no model is loaded - default_classes = ["class0"] + default_classes = ["drone"] return {"classes": default_classes} diff --git a/fastapi/nginx.conf b/fastapi/nginx.conf index debe316..5b5c2e0 100644 --- a/fastapi/nginx.conf +++ b/fastapi/nginx.conf @@ -18,7 +18,7 @@ http { proxy_set_header Connection "keep-alive"; # Absolute zero buffering - proxy_buffering off; # DISBALE Nginx buffering + proxy_buffering off; # DISABLE Nginx buffering proxy_request_buffering off; proxy_cache off; # Ensure no caching of the video tcp_nodelay on; diff --git a/fastapi/templates/index.html b/fastapi/templates/index.html index 2da2d9a..cc13603 100644 --- a/fastapi/templates/index.html +++ b/fastapi/templates/index.html @@ -146,7 +146,7 @@

Camera: {{ id }}

" const response = await fetch(self.location.origin + '/dashboard_stats'); " + " if (response.ok) { " + " const stats = await response.json(); " + - " const activeIds = Object.keys(stats); " + + " const activeIds = Object.keys(stats).filter(id => stats[id] && stats[id].is_streaming === true); " + " if (activeIds.length > 0) { " + " /* ACTIVE: Poll fast (1s) */ " + " currentDelay = 1000; " + @@ -163,7 +163,7 @@

Camera: {{ id }}

" timeoutId = setTimeout(fetchData, currentDelay); " + "} " + "self.onmessage = function(e) { " + - " if (e.data.action === 'start' || e.data.action === 'force') { " + + " if (e.data.action === 'start' || e.data.action === 'force' || e.data.action === 'resume') { " + " clearTimeout(timeoutId); " + // Cancel any pending slow poll " fetchData(); " + // Run immediately " } " + @@ -185,7 +185,7 @@

Camera: {{ id }}

document.querySelectorAll('.camera-card').forEach(card => { const id = card.id.replace('card-', ''); const streamStats = stats[id]; - if (!activeIds.includes(id) || (streamStats && streamStats.is_streaming === false)) { + if (!activeIds.includes(id) || !streamStats || (streamStats && streamStats.is_streaming === false)) { console.log("Removing dead stream:", id); card.remove(); } diff --git a/fastapi/tests/base_test.py b/fastapi/tests/base_test.py new file mode 100644 index 0000000..8b57cc0 --- /dev/null +++ b/fastapi/tests/base_test.py @@ -0,0 +1,3442 @@ +# ============================================================================== +# IMPORTS + +import gc +import inspect +import io +import os +import queue +import sys +import threading +import time +import traceback +import types +import zipfile +from pathlib import Path + +import cv2 +import matplotlib.pyplot as plt +import numpy as np +import torch + +# Retrieve repo packages +REPO_DIR = str(Path(__file__).parent.parent) +sys.path.insert(1, REPO_DIR) +from include.default_configs import TARGET_FPS +from include.handlers import ( + get_bb_overlay, +) +from include.utils import ( + AsyncVideoWriter, + default_attr_keys, + global_frame_prefetch_worker_v1, + install_and_load_pip_package, + release_native_linux_heap, + scale_bbox, + scale_bbox_xywh, +) + +gdown = install_and_load_pip_package("gdown", attribute_name=None) +objgraph = install_and_load_pip_package("objgraph", attribute_name=None) +target_width, target_height = 7680, 4320 # 8K +# torch.set_grad_enabled(False) + +# ============================================================================== +# LOGGING +import logging + +logging.basicConfig( + level=logging.INFO, + # format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", + format="%(asctime)s [%(levelname)s] %(name)s (%(filename)s:%(lineno)d) - %(message)s", + handlers=[logging.StreamHandler(sys.stdout)], +) + +logging.getLogger("libav").setLevel(logging.CRITICAL) +logging.getLogger("libav.hevc").setLevel(logging.CRITICAL) +main_app_logger = logging.getLogger(__name__) + +# ============================================================================== +# FUNCTIONS + + +# Download tracking (video) data and associated ground truth +def download_eval_data(video_name_list, target_fps=TARGET_FPS): + DATA_DIR = Path(__file__).parent / "eval_data" + DATA_DIR.mkdir(parents=True, exist_ok=True) + + # DOWNLOAD GT ZIP + VIDEO_GROUND_TRUTH_URL = ( + "https://drive.google.com/open?id=16PE3tBhT0lUGZLA8-zIRYvNUvxfhFZJq" + ) + VIDEO_GROUND_TRUTH_ZIP_PATH = str(DATA_DIR / "Anti-UAV-Tracking-V0GT.zip") + if not Path(VIDEO_GROUND_TRUTH_ZIP_PATH).exists(): + main_app_logger.info("Downloading ground truth zip file...") + gdown.download( + url=VIDEO_GROUND_TRUTH_URL, output=VIDEO_GROUND_TRUTH_ZIP_PATH, quiet=False + ) + + # GET GT BBOXES + # GT bbox: [x_min, y_min, w, h] + gt_boxes_dict = {} + with zipfile.ZipFile(VIDEO_GROUND_TRUTH_ZIP_PATH, "r") as gt_ref: + for gt_info in gt_ref.infolist(): + matched_vid = next( + ( + v + for v in video_name_list + if gt_info.filename.endswith(f"{v}_gt.txt") + ), + None, + ) + if matched_vid: + gt_bytes = gt_ref.read(gt_info.filename) + gt_stream = io.StringIO(gt_bytes.decode("utf-8")) + delimiter = "," if b"," in gt_bytes else None + gt_boxes_dict[matched_vid] = np.loadtxt( + gt_stream, delimiter=delimiter, dtype=np.int32 + ).tolist() + + # DOWNLOAD FRAME ZIP + VIDEO_SEQUENCE_URL = ( + "https://drive.google.com/open?id=1dlSPDggg6TRFMcC1jlYIJxxzUQS1mIh9" + ) + VIDEO_SEQUENCE_ZIP_PATH = str(DATA_DIR / "Anti-UAV-Tracking-V0.zip") + if not Path(VIDEO_SEQUENCE_ZIP_PATH).exists(): + main_app_logger.info("Downloading video sequence zip file...") + gdown.download( + url=VIDEO_SEQUENCE_URL, output=VIDEO_SEQUENCE_ZIP_PATH, quiet=False + ) + + # WRITE VIDEO AND GET VIDEO DETAILS + ALL_VIDEO_DETAILS = {} + # ALL_VIDEO_WRITERS = {} + # frame_counters = {v: 0 for v in video_name_list} + # Open Zip once, but process each video COMPLETELY one by one + with zipfile.ZipFile(VIDEO_SEQUENCE_ZIP_PATH, "r") as zip_ref: + # Pre-index all archive paths for ultra-fast matching + all_files = zip_ref.infolist() + + for video_name in video_name_list: + main_app_logger.info(f"Processing sequence: {video_name}...") + + # Filter and sort frames belonging strictly to the current video + video_img_infos = [ + info + for info in all_files + if info.filename.startswith(f"Anti-UAV-Tracking-V0/{video_name}/") + and info.filename.lower().endswith(".jpg") + ] + video_img_infos.sort(key=lambda x: x.filename) + + if not video_img_infos: + continue + + video_writer = None + frame_idx = 0 + + # Setup dictionary tracking structure + sample_outpath = DATA_DIR / video_img_infos[0].filename.replace( + "Anti-UAV-Tracking-V0", "Anti-UAV-Tracking-V0-8K" + ) + sample_outpath.parent.mkdir(parents=True, exist_ok=True) + + # BYPASS COMPUTE IF VIDEO EXISTS + target_mp4_path = sample_outpath.parent / f"{video_name}.mp4" + if target_mp4_path.exists(): + main_app_logger.info( + f"\t[SKIP] 8K target video {target_mp4_path.name} already compiled." + ) + + first_frame_info = video_img_infos[0] + img_bytes = zip_ref.read(first_frame_info.filename) + np_array = np.frombuffer(img_bytes, np.uint8) + img = cv2.imdecode(np_array, cv2.IMREAD_COLOR) + orig_height, orig_width, _ = img.shape if img is not None else (0, 0, 0) + + current_gt_boxes = gt_boxes_dict.get(video_name, []) + num_invalid = sum( + 1 for bbox in current_gt_boxes if bbox == [0, 0, 0, 0] + ) + num_valid = len(current_gt_boxes) - num_invalid + + scaled_gt_boxes = [] + for bbox in current_gt_boxes: + if bbox == [0, 0, 0, 0]: + scaled_gt_boxes.append([0, 0, 0, 0]) + else: + scaled_gt_boxes.append( + scale_bbox_xywh( + bbox, + orig_width, + orig_height, + targetW=target_width, + targetH=target_height, + ) + ) + + # Reconstruct the metadata payload so downstream tracking logic doesn't break + ALL_VIDEO_DETAILS[video_name] = { + "frame_dir": str(sample_outpath.parent), + "orig_height": orig_height, # Safe placeholder or pull from cache if variable + "orig_width": orig_width, + "target_height": target_height, + "target_width": target_width, + "sequence": [Path(info.filename).stem for info in video_img_infos], + "gt_bbox": scaled_gt_boxes, + "num_invalid_gt_bboxes": num_invalid, + "num_valid_gt_bboxes": num_valid, + } + num_frames = len(ALL_VIDEO_DETAILS[video_name]["sequence"]) + num_boxes = len(ALL_VIDEO_DETAILS[video_name]["gt_bbox"]) + num_invalid_boxes = ALL_VIDEO_DETAILS[video_name][ + "num_invalid_gt_bboxes" + ] + main_app_logger.info( + f"\t{video_name}: {num_frames} frames, {num_boxes} gt boxes ({num_invalid_boxes} out-of-view)" + ) + continue # Instantly advance to the next video name in the zip reference + + # Initialize detail log + ALL_VIDEO_DETAILS[video_name] = { + "frame_dir": str(sample_outpath.parent), + "orig_height": 0, + "orig_width": 0, + "target_height": target_height, + "target_width": target_width, + "sequence": [], + "gt_bbox": [], + "num_invalid_gt_bboxes": 0, + "num_valid_gt_bboxes": 0, + } + + for file_info in video_img_infos: + frame_id = Path(file_info.filename).stem + + # In-memory decompression + img_bytes = zip_ref.read(file_info.filename) + np_array = np.frombuffer(img_bytes, np.uint8) + img = cv2.imdecode(np_array, cv2.IMREAD_COLOR) + + if img is not None: + orig_height, orig_width, _ = img.shape + + # Update dimensions once per video segment + if frame_idx == 0: + ALL_VIDEO_DETAILS[video_name]["orig_height"] = orig_height + ALL_VIDEO_DETAILS[video_name]["orig_width"] = orig_width + + # Performance upscale to 8K + img_8K = cv2.resize( + img, + (target_width, target_height), + interpolation=cv2.INTER_LINEAR, # INTER_CUBIC, + ) + + # Initialize Video Writer sequentially if missing + if ( + video_writer is None + and not (sample_outpath.parent / f"{video_name}.mp4").exists() + ): + video_writer = AsyncVideoWriter( + str(sample_outpath.parent / f"{video_name}.mp4"), + cv2.VideoWriter_fourcc(*"avc1"), + target_fps, + (target_width, target_height), + ) + + # Synchronous frame pipeline updates + if video_writer is not None: + video_writer.write_frame(img_8K) + ALL_VIDEO_DETAILS[video_name]["sequence"].append(frame_id) + + # Bounding Box Sync + if video_name in gt_boxes_dict and frame_idx < len( + gt_boxes_dict[video_name] + ): + gt_bbox = gt_boxes_dict[video_name][frame_idx] + + if gt_bbox == [0, 0, 0, 0]: + x, y, w, h = [0, 0, 0, 0] + ALL_VIDEO_DETAILS[video_name]["num_invalid_gt_bboxes"] += 1 + else: + x, y, w, h = scale_bbox_xywh( + gt_bbox, + orig_width, + orig_height, + targetW=target_width, + targetH=target_height, + ) + ALL_VIDEO_DETAILS[video_name]["num_valid_gt_bboxes"] += 1 + + ALL_VIDEO_DETAILS[video_name]["gt_bbox"].append([x, y, w, h]) + + frame_idx += 1 + + # Close the writer IMMEDIATELY + if video_writer is not None: + video_writer.release() + + num_frames = len(ALL_VIDEO_DETAILS[video_name]["sequence"]) + num_boxes = len(ALL_VIDEO_DETAILS[video_name]["gt_bbox"]) + num_invalid_boxes = ALL_VIDEO_DETAILS[video_name]["num_invalid_gt_bboxes"] + main_app_logger.info( + f"\t{video_name}: {num_frames} frames, {num_boxes} gt boxes ({num_invalid_boxes} out-of-view)" + ) + + return ALL_VIDEO_DETAILS + + +# Print active CUDA tensors +def track_gpu_tensors(): + for obj in gc.get_objects(): + try: + if torch.is_tensor(obj) and obj.is_cuda: + tensor_candidate = obj + elif ( + hasattr(obj, "data") and torch.is_tensor(obj.data) and obj.data.is_cuda + ): + tensor_candidate = obj.data + else: + tensor_candidate = None + + if tensor_candidate is not None: # and tensor_candidate.is_cuda: + nelement = tensor_candidate.nelement() + cand_shape = list(tensor_candidate.shape) + cand_dtype = tensor_candidate.dtype + tensor_bytes = tensor_candidate.element_size() * nelement + # main_app_logger.info(f"Leaked Tensor -> Type: {type(obj)} | Size: {obj.size()} | Device: {obj.device}") + main_app_logger.info( + f" > Tensor | Device: {tensor_candidate.device} | Shape: {str(cand_shape):<18} | Dtype: {str(cand_dtype):<12} | Size: {tensor_bytes / 1024**2:6.2f} MB" + ) + except Exception: + pass + del obj + + +# Save FPS comparison chart +def fps_comparison_chart(chart_path, results, fps_key="Pipeline FPS (Video frames)"): + try: + # names = [r["Test Name"] for r in results] + # fps_values = [float(r[fps_key]) for r in results] + names = [] + fps_values = [] + + for r in results: + if isinstance(r, dict) and "Test Name" in r: + # Force casting to clean, unpinned Python native types + names.append(str(r["Test Name"])) + fps_values.append(float(r.get(fps_key, 0.0))) + + plt.figure(figsize=(10, 6)) + plt.grid(axis="y", linestyle="--", alpha=0.7, zorder=0) + + colors = ["#2ca02c" if "gpu" in n.lower() else "#1f77b4" for n in names] + bars = plt.bar(names, fps_values, color=colors, zorder=3) + plt.ylabel("Frames Per Second (FPS)") + plt.title(f"Performance Comparison: {chart_path.stem}") + plt.xticks(rotation=45) + + for bar in bars: + yval = bar.get_height() + plt.text( + bar.get_x() + bar.get_width() / 2, + yval + 1, + f"{yval:.1f}", + ha="center", + va="bottom", + ) + + if fps_values: + plt.ylim(0, max(fps_values) * 1.2) + + plt.tight_layout() + plt.savefig(str(chart_path)) + main_app_logger.info(f" Comparison chart saved to: {chart_path}") + except Exception: + main_app_logger.info("Skipping chart generation: error occurred.") + + +# ============================================================================== +# CLASSES +class BaseTest: + # PIPELINE FUNCTIONS -------------------------------------------- + @torch.inference_mode() + def pipeline_fn( + self, + device_frame, + overall_frame_num, + stat_start_time, + current_clip_id, + gt_boxes=None, + read_frame_only=False, + ): + current_clip_key = f"{self.name}_{current_clip_id:03d}.mp4" + current_clip_path = f"{self.config.SHARED_OUTPUT}/{current_clip_key}" + + metadata = {} + motion_detected = False + metrics = {"sf_time": 0, "roi_time": 0, "det_time": 0, "bbs": None} + + # Given input frame, get metadata and metrics + try: + if read_frame_only: + # Get frame, metadata and metrics + _, det_frame = self.processor.format_bbs_and_frame_4_detection( + [], device_frame + ) + + else: + # Run model on frame, get metadata and metrics + # with torch.inference_mode(): + metrics, metadata, det_frame, motion_detected = self.processor.run( + device_frame, + overall_frame_num, + frame_in_clip_count=self.frame_in_clip_count, + gt_boxes=None, + ) + + self.total_objects_detected += len(metadata.keys()) + + # Save results in video + self.frame2video( + det_frame, + overall_frame_num, + metadata, + getattr(self, "label_source", None), + stat_start_time, + gt_boxes=gt_boxes, + ) + + except Exception as e_detection: + traceback.print_exc() + main_app_logger.info(f"[DETECTION ERROR] Exception: {e_detection}") + # traceback.print_exc() + # if self.active: + # traceback.print_exc() + # main_app_logger.info(f"[DETECTION ERROR] Exception: {e_detection}") + # self.active = False + finally: + # del inf_data, bbs_full_res, device_frame, det_frame + if "det_frame" in locals(): + del det_frame + if "device_frame" in locals(): + del device_frame + # if "bbs_full_res" in locals(): + # del bbs_full_res + # if "inf_data" in locals(): + # del inf_data + + # del inf_data, bbs_full_res, device_frame, det_frame + + return metadata, metrics, motion_detected # Skip full detection pass + + def initialize_run_realtime_inference_v1( + self, read_frame_only, num_prefetch_workers + ): + # self.duration_target = 30 + # self.status = "RUNNING" + self.processor = self._setup_processor(read_frame_only) + + if hasattr(self, "processor") and hasattr(self.processor, "label_source"): + self.label_source = self.processor.label_source + # Setup empty list to track background futures natively + # self._active_inference_futures = [] + + if self.is_cuda and not hasattr(self, "sf_start") and self.config.TEST_MODE: + self.sf_start, self.sf_end = ( + torch.cuda.Event(enable_timing=True), + torch.cuda.Event(enable_timing=True), + ) + self.roi_start, self.roi_end = ( + torch.cuda.Event(enable_timing=True), + torch.cuda.Event(enable_timing=True), + ) + self.det_start, self.det_end = ( + torch.cuda.Event(enable_timing=True), + torch.cuda.Event(enable_timing=True), + ) + + if self.config.TEST_MODE: + self.component_stats = { + "sf": [], + "roi": [], + "det": [], + "dma_upload": [], # Track PCIe Transfer Latencies + "queue_blocked": [], # Track GIL Serialization stalls + "batch_sizes": [], # Track Smart Filtering density + "thread_backlog": [], # Track thread work pool backlog + } + self.crops_per_frame_list = [] + + # Bind active execution permanently to sub-stream BEFORE entering loop (Bypasses TLS Overhead) + # if self.device_input == "cuda" and torch.cuda.is_available(): + # torch.cuda.set_stream(self.inference_stream) + # if hasattr(self, "target_fps") and hasattr(self, "duration_target"): + # self.max_target_frames = int(self.duration_target * float(self.target_fps)) + # elif hasattr(self, "numFrames"): + # self.max_target_frames = self.numFrames + # else: + # self.max_target_frames = float("inf") + + if ( + hasattr(self, "numFrames") + and self.numFrames > 0 + and not getattr(self, "is_rtsp", False) + ): + # For local test files, compute total target frames from input video length + self.max_target_frames = int( + self.numFrames / getattr(self.reader, "step_size", 1.0) + ) + elif hasattr(self, "target_fps") and hasattr(self, "duration_target"): + self.max_target_frames = int(self.duration_target * float(self.target_fps)) + else: + self.max_target_frames = float("inf") + + # self.dynamic_limit = max(2, int(0.5 * self.target_fps)) + + # Initialize a thread-safe signaling handle at class setup (run_realtime_inference) + self.queue_data_ready_event = threading.Event() + + try: + for i in range(num_prefetch_workers): + # prefetch_thread = mp.Process( + prefetch_thread = threading.Thread( + target=lambda: global_frame_prefetch_worker_v1(self), + daemon=True, + # name=f"{self.name}_prefetch_{i}", + ) + prefetch_thread.start() + self.prefetch_threads.append(prefetch_thread) + except Exception as e: + main_app_logger.critical( + f"[{self.name}] Failed to start prefetch workers: {e}", exc_info=True + ) + traceback.print_exc() + raise + + @torch.inference_mode() + def run_realtime_inference_v1( + self, + sf_enabled=True, + profiler=None, + gt_enabled=False, + read_frame_only=False, + ): + self.status = "RUNNING" + + metrics = {} + all_metadata = {} + num_objs = 0 + total_pipeline_time_ms = 0.0 + total_read_time = 0.0 + total_queue_saturation = 0.0 + total_written_frames = 0 + total_sf_pipeline_time_ms = 0.0 + real_world_latency_ms = 0.0 + total_run_pipelinefn = 0 + total_frame_loop_latency = 0.0 + total_active_processing_overhead = 0.0 + queue_saturation_history = [] + consecutive_slow_frames = 0 + coverage_percentages = [] + + if gt_enabled and hasattr(self, "VIDEO_GT_DETAILS") and self.VIDEO_GT_DETAILS: + # VIDEO_GT_DETAILS = download_eval_data([self.name]) + gt_boxes = self.VIDEO_GT_DETAILS[self.name]["gt_bbox"] + gt_sequence = self.VIDEO_GT_DETAILS[self.name]["sequence"] + + self.initialize_run_realtime_inference( + read_frame_only, self.active_workers_count + ) + + self.stat_start_time = time.perf_counter() + pipeline_start_time = self.stat_start_time + last_loop_cycle_timestamp = self.stat_start_time + + missing_frame_cnt = 0 + max_retries = int(self.target_fps) + + # Release the master startup event at the last possible moment. + self.main_startup_event.set() + while ( + self.active # or not self.prefetch_queue.empty() + ): # and self.frame_count_target < self.max_target_frames: + if self.frame_count_target >= self.max_target_frames: + self.active = False + self.reader.running_flag.value = False + break + + stat_start_time = time.perf_counter() + try: + # FRAME RETRIEVAL --------------------------------------------- + try: + frame_start_time = time.perf_counter() + safe_frame, frame_details, should_continue = ( + self._get_frame_from_queue() + ) + + if not should_continue: + self.active = False # Signal loop termination + break + if safe_frame is None: + # Allow retries while prefetch workers are still active + if getattr(self, "prefetch_active", True) and not getattr( + self.reader, "stopped", False + ): + time.sleep(0.002) + continue + missing_frame_cnt += 1 + if missing_frame_cnt >= max_retries: + self.active = False + main_app_logger.info( + "Too many frames missing and workers done. Exiting..." + ) + break + continue # Skip to the next iteration if the frame is invalid + + # try: + # # ret, slot_idx = self.prefetch_queue.get(block=True, timeout=1.0) + # # ret, slot_idx = self.prefetch_queue.get(block=False) + # ret, slot_idx = self.prefetch_queue.get(block=True, timeout=1.0) + # self.prefetch_queue.task_done() + + # except queue.Empty: + # with self.worker_tracking_lock: + # if ( + # self.active_workers_count == 0 + # and self.prefetch_queue.empty() + # ): + # self.active = False + # break + # # If the queue is empty AND the prefetch workers are done, we can exit. + # if not self.active: + # break + # continue + + # # If self.stop() drops the queues, break out of the thread loop natively. + # except (OSError, ValueError, AssertionError): + # main_app_logger.info( + # "[PROCESS THREAD] Ingestion queue disconnected via stop() signal. Breaking loop." + # ) + # self.active = False + # break + + # if ret is False or slot_idx == "END_OF_STREAM": + # main_app_logger.info( + # "[PROCESS THREAD] End of video stream detected. Breaking loop naturally." + # ) + # self.active = False + # break + + # if not self.active: + # break + + # # if slot_idx == -1 or self.shm_buffer_pool[slot_idx] is None: + # # continue + # if ( + # slot_idx == -1 + # or not hasattr(self, "shm_buffer_pool") + # or self.shm_buffer_pool is None + # ): + # continue + # if ( + # slot_idx >= len(self.shm_buffer_pool) + # or self.shm_buffer_pool[slot_idx] is None + # ): + # continue + + # # Zero-Copy Reference Extraction straight out of the memory slot array + # ( + # raw_shm_frame, + # current_event, + # frame_num, + # abs_frame_num, + # true_read_latency_secs, + # ) = self.shm_buffer_pool[slot_idx] + + # if frame_num == 0: + # main_app_logger.info( + # f"[VERIFY - CONSUMER] Main loop is officially processing Frame {frame_num}!", + # ) + # # self.shm_buffer_pool[slot_idx] = None + + # reader_time = ( + # true_read_latency_secs # time.perf_counter() - frame_start_time + # ) + # total_read_time += reader_time + + # if "cuda" in str(self.device_input): + # safe_frame = self.gpu_input[slot_idx] + # # safe_frame = cpu_tensor.to(self.device_input, non_blocking=True) + # safe_frame.copy_(raw_shm_frame) + # # self.gpu_input[slot_idx].zero_() + # else: + # safe_frame = raw_shm_frame + + # # Record the PyTorch CUDA event on the current stream + # if current_event is not None and isinstance( + # current_event, torch.cuda.Event + # ): + # # This tells the GPU that the consumer is done reading this slot + # current_event.record(torch.cuda.current_stream()) + + # Originally 0-based but make 1-based + # frame_num += 1 + # abs_frame_num += 1 + total_read_time += frame_details["reader_time"] + missing_frame_cnt = 0 + + # Calculate the exact time gap between the last frame completion + # and the start of the next read. This accurately captures downstream GIL blocks. + cycle_gap = frame_start_time - last_loop_cycle_timestamp + # Subtract the actual read duration to isolate the thread stall time + true_serialization_stall = max( + 0.0, (cycle_gap - frame_details["reader_time"]) * 1000.0 + ) + self.component_stats["queue_blocked"].append( + true_serialization_stall + ) + + except queue.Empty: + if getattr(self.reader, "reconnect_failed", False): + self.active = False + break + if not self.active: + break # Exit on error if shutdown has been initiated + time.sleep(0.001) + continue + + # FRAME PROCESSING --------------------------------------------- + # stat_start_time = time.perf_counter() + # stat_start_time = self.stat_start_time + self.abs_frame_num = frame_details["abs_frame_num"] + calculated_clip_id = ( + frame_details["frame_num"] - 1 + ) // self.max_frames_per_clip + self.frame_count += 1 + self.frame_count_target += 1 + self.frame_in_clip_count += 1 + + # Real-Time Metric A: Track Queue Saturation Density Ratio + # current_q_size = self.reader.frame_queue.qsize() + saturation_ratio = ( + len(self.reader.frame_queue) / self.reader.frame_queue.maxlen + ) + total_queue_saturation += saturation_ratio + queue_saturation_history.append(saturation_ratio) + + # RUN PIPELINE_FN --------------------------------------------- + run_pipelinefn_start = time.perf_counter() + # self.frame_count_target += 1 + # self.frame_in_clip_count += 1 + + if gt_enabled: + target_boxes_array = self.get_frame_gt_boxes( + frame_details["abs_frame_num"], gt_sequence, gt_boxes + ) + + metadata_or_bbs, metrics, motion_detected = self.pipeline_fn( + safe_frame, + frame_details["frame_num"], + stat_start_time, + calculated_clip_id, + gt_boxes=target_boxes_array if gt_enabled else None, + read_frame_only=read_frame_only, + ) + + num_objs += len(metadata_or_bbs.keys()) + # if metadata_or_bbs is not None and isinstance(metadata_or_bbs, dict): + # all_metadata.update(metadata_or_bbs) + + total_written_frames += 1 + + # FRAME POST PROCESSING --------------------------------------------- + # Track Execution Boundaries + frame_end_time = time.perf_counter() + total_run_pipelinefn += frame_end_time - run_pipelinefn_start + last_loop_cycle_timestamp = frame_end_time + + # Calculate frame metrics + + # Real-Time Metric B: Frame Processing Latency Check + frame_loop_latency = (frame_end_time - frame_start_time) * 1000 # ms + total_frame_loop_latency += frame_loop_latency + + # Isolate active processing time (excluding the queue blocking read) + active_processing_overhead = frame_loop_latency - ( + frame_details["reader_time"] * 1000 + ) + total_active_processing_overhead += active_processing_overhead + + # RUNTIME TERMINAL WARNING ALERTS + if saturation_ratio >= 1.0 or active_processing_overhead > ( + 1000 / self.target_fps + ): + consecutive_slow_frames += 1 + if ( + consecutive_slow_frames % self.target_fps == 0 + ): # Throttle terminal spam + reader_time = frame_details["reader_time"] + main_app_logger.info( + f"\033[93m⚠️ [PERF WARNING] Main loop starving! Waiting on stream ingestion... " + f"Read Wait: {reader_time:.1f}ms | Other Wait: {active_processing_overhead:.1f}ms | Queue Fullness: {saturation_ratio * 100:.0f}%\033[0m" + ) + else: + consecutive_slow_frames = max(0, consecutive_slow_frames - 1) + # if self.device_input == "cuda" and torch.cuda.is_available(): + # torch.cuda.default_stream().synchronize() + + if gt_enabled and motion_detected: + self.update_eval_stats(metadata_or_bbs, target_boxes_array) + + if metrics != {}: + num_crops = len(metrics["bbs"]) if metrics["bbs"] is not None else 0 + self.crops_per_frame_list.append(num_crops) + + # Context-aware extraction of the newly proposed metrics + density = metrics.get( + "batch_density", 0 if self.config.sf_enabled else 1 + ) + self.component_stats["batch_sizes"].append(density) + + self.component_stats["sf"].append(metrics["sf_time"]) + # self.component_stats["roi"].append(metrics["roi_time"]) + self.component_stats["det"].append(metrics["det_time"]) + + # Calculate coverage OUTSIDE the timed block to prevent interference + if self.config.sf_enabled and metrics.get("bbs") is not None: + cov = self.calculate_unique_coverage(metrics["bbs"]) + if hasattr(cov, "item"): + coverage_percentages.append(float(cov.item())) + else: + coverage_percentages.append(float(cov)) + + # Explicitly delete frame variables to free their references + frame_8k = None + del frame_8k, safe_frame + if "metadata_or_bbs" in locals(): + del metadata_or_bbs + + if total_written_frames % (10 * self.target_fps) == 0: + # main_app_logger.info( + # f"Captured {total_written_frames}/{self.max_target_frames} frames..." + # ) + # Querying the cross-process property once every 5 seconds reduces proxy overhead to 0% + # if self.device_input == "cuda" and hasattr( + # self.reader, "total_h2d_time" + # ): + # avg_h2d = ( + # self.reader.total_h2d_time + # / max(1, total_written_frames + 1) + # ) * 1000.0 + # main_app_logger.info( + # f"Captured {total_written_frames}/{self.max_target_frames} frames... DMA Upload: {avg_h2d:.2f}ms" + # ) + # else: + main_app_logger.info( + f"Captured {total_written_frames}/{self.max_target_frames} frames..." + ) + + if self.frame_count % 100 == 0: + gc.collect() + + # Force PyTorch's internal allocator to release cached segments back to the OS + # if self.frame_count_target % (5 * self.target_fps) == 0: + # main_app_logger.info( + # f"Captured {self.frame_count_target}/{self.max_target_frames} frames..." + # ) + # torch.cuda.empty_cache() + # torch.cuda.ipc_collect() + + # Force a microscopic micro-yield if executing on CPU. + # This grants immediate execution priority back to the background cleaning thread, + # allowing the garbage collector to evict data from RAM instantly! + if self.device_input == "cpu": + time.sleep( + 0 + ) # .005) # 1ms yield breaks core processor starvation lock + + # END -> frame processing + except torch.cuda.OutOfMemoryError: + main_app_logger.info("!" * 70) + main_app_logger.info( + "[CRITICAL TEST CRASH] GPU MEMORY CEILING HIT INSIDE RUNNER LOOP!" + ) + main_app_logger.info( + "Freezing allocation history registers and writing diagnostic log..." + ) + main_app_logger.info("!" * 70) + + try: + snapshot_filename = ( + f"/tmp/test_vram_leak_profile_pid{os.getpid()}.pickle" + ) + torch.cuda.memory._dump_snapshot(snapshot_filename) + main_app_logger.info( + f"[PROFILER SUCCESSFUL] Snapshot profile written to: {snapshot_filename}" + ) + main_app_logger.info( + "--> Drag and drop this file directly into: https://pytorch.org" + ) + except Exception as dump_err: + main_app_logger.info( + f"Failed to record profile data snapshot: {dump_err}" + ) + + # Force safe system unlinking of background workers to clean up OS handles + self.active = False + if hasattr(self, "reader") and self.reader is not None: + self.reader.stop() + raise + + except Exception as e: + if not self.active or not getattr(self, "prefetch_active", True): + main_app_logger.info( + "[PROCESS THREAD] System shutdown detected during exception sweep. Exiting thread payload context." + ) + break + + main_app_logger.info( + f"[CRITICAL PIPELINE ERROR] Crash on frame: {repr(e)}" + ) + traceback.print_exc() + raise e # Let it break so you can see the exact line number! + + # END -> while self.active and self.frame_count_target < self.max_target_frames: + + # PIPELINE POST PROCESSING --------------------------------------------- + pipeline_end_time = time.perf_counter() + + real_world_latency_ms = float( + (pipeline_end_time - pipeline_start_time) * 1000.0 + ) + + total_sf_pipeline_time_ms = float( + sum(self.component_stats.get("sf", [0.0])) + + sum(self.component_stats.get("roi", [0.0])) + + sum(self.component_stats.get("det", [0.0])) + ) + total_pipeline_time_ms = float( + (pipeline_end_time - pipeline_start_time) * 1000.0 + ) + + self.async_writer.release() + + # Continuously sample the thread work pool backlog state mechanics + if hasattr(self, "executor") and self.executor is not None: + # Safely probe internal concurrent.futures work queue bounds + self.component_stats["thread_backlog"].append( + self.executor._work_queue.qsize() + ) + else: + self.component_stats["thread_backlog"].append(0) + + # CALCULATE PERFORMANCE METRICS --------------------------------------------- + main_app_logger.info( + f"Execution Finished. Total Output Frames Written: {self.frame_count_target}" + ) + + # Render your metrics dashboard table cleanly + if self.frame_count_target > 0: + avg_frame_loop_latency = total_frame_loop_latency / self.frame_count_target + self._finalize_benchmarks( + num_objs, + self.frame_count_target, # Reads the updated integer directly! + total_pipeline_time_ms, + real_world_latency_ms, + total_sf_pipeline_time_ms, + avg_frame_loop_latency, + coverage_percentages, + total_read_time, + total_queue_saturation, + queue_saturation_history, + computed_eval_metrics=self.evaluator.compute_final_metrics() + if hasattr(self, "evaluator") + else None + if gt_enabled + else None, + ) + else: + main_app_logger.info( + f"[SKIPPED SUMMARY] Only {self.frame_count_target} frames processed. " + ) + + # Force early hardware driver sweep before unbinding threads + if self.device_input == "cuda" and torch.cuda.is_available(): + torch.cuda.synchronize() + torch.cuda.empty_cache() + torch.cuda.ipc_collect() + + gc.collect() + + if profiler is not None: + profiler.stop() + + self.stop() + + def initialize_run_realtime_inference(self, read_frame_only, num_prefetch_workers): + self.processor = self._setup_processor(read_frame_only) + + if hasattr(self, "processor") and hasattr(self.processor, "label_source"): + self.label_source = self.processor.label_source + + if ( + hasattr(self, "numFrames") + and self.numFrames > 0 + and not getattr(self, "is_rtsp", False) + ): + # For local test files, compute total target frames from input video length + self.max_target_frames = int( + self.numFrames / getattr(self.reader, "step_size", 1.0) + ) + elif hasattr(self, "target_fps") and hasattr(self, "duration_target"): + self.max_target_frames = int(self.duration_target * float(self.target_fps)) + else: + self.max_target_frames = float("inf") + # ========================================================================= + # 🚀 PRE-ALLOCATED METRICS SCRATCHPAD (Zero Dynamic Allocations in Loop) + # ========================================================================= + cap = max( + 1000, + self.max_target_frames if self.max_target_frames != float("inf") else 10000, + ) + self._metric_sf_times = np.zeros(cap, dtype=np.float32) + self._metric_det_times = np.zeros(cap, dtype=np.float32) + self._metric_reader_times = np.zeros(cap, dtype=np.float32) + self._metric_queue_blocked = np.zeros(cap, dtype=np.float32) + self._metric_queue_saturations = np.zeros(cap, dtype=np.float32) + self._metric_crops_count = np.zeros(cap, dtype=np.int32) + self._metric_batch_densities = np.zeros(cap, dtype=np.int32) + self._metric_coverage_tensors = [] + # ============================ + + if self.is_cuda and not hasattr(self, "sf_start") and self.config.TEST_MODE: + self.sf_start, self.sf_end = ( + torch.cuda.Event(enable_timing=True), + torch.cuda.Event(enable_timing=True), + ) + self.roi_start, self.roi_end = ( + torch.cuda.Event(enable_timing=True), + torch.cuda.Event(enable_timing=True), + ) + self.det_start, self.det_end = ( + torch.cuda.Event(enable_timing=True), + torch.cuda.Event(enable_timing=True), + ) + + if self.config.TEST_MODE: + self.component_stats = { + "sf": [], + "roi": [], + "det": [], + "dma_upload": [], # Track PCIe Transfer Latencies + "queue_blocked": [], # Track GIL Serialization stalls + "batch_sizes": [], # Track Smart Filtering density + "thread_backlog": [], # Track thread work pool backlog + } + self.crops_per_frame_list = [] + + # Initialize a thread-safe signaling handle at class setup (run_realtime_inference) + self.queue_data_ready_event = threading.Event() + + try: + for i in range(num_prefetch_workers): + # prefetch_thread = mp.Process( + prefetch_thread = threading.Thread( + target=lambda: global_frame_prefetch_worker_v1(self), + daemon=True, + # name=f"{self.name}_prefetch_{i}", + ) + prefetch_thread.start() + self.prefetch_threads.append(prefetch_thread) + except Exception as e: + main_app_logger.critical( + f"[{self.name}] Failed to start prefetch workers: {e}", exc_info=True + ) + traceback.print_exc() + raise + + @torch.inference_mode() + def run_realtime_inference( + self, + sf_enabled=True, + profiler=None, + gt_enabled=False, + read_frame_only=False, + ): + self.status = "RUNNING" + self.initialize_run_realtime_inference( + read_frame_only, self.active_workers_count + ) + + gt_boxes = None + gt_sequence = None + if gt_enabled and hasattr(self, "VIDEO_GT_DETAILS") and self.VIDEO_GT_DETAILS: + gt_boxes = self.VIDEO_GT_DETAILS[self.name]["gt_bbox"] + gt_sequence = self.VIDEO_GT_DETAILS[self.name]["sequence"] + + self.stat_start_time = time.perf_counter() + pipeline_start_time = self.stat_start_time + last_loop_cycle_timestamp = self.stat_start_time + + missing_frame_cnt = 0 + max_retries = int(self.target_fps) + total_read_time = 0.0 + total_written_frames = 0 + total_queue_saturation = 0.0 + total_run_pipelinefn = 0.0 + total_frame_loop_latency = 0.0 + total_active_processing_overhead = 0.0 + consecutive_slow_frames = 0 + num_objs = 0 + queue_saturation_history = [] + coverage_percentages = [] + + # Release the master startup event + self.main_startup_event.set() + + while self.active: + if self.frame_count_target >= self.max_target_frames: + self.active = False + if hasattr(self.reader, "running_flag"): + self.reader.running_flag.value = False + break + + stat_start_time = time.perf_counter() + try: + # 1. FRAME RETRIEVAL ------------------------------------------ + frame_start_time = time.perf_counter() + safe_frame, frame_details, should_continue = ( + self._get_frame_from_queue() + ) + + if not should_continue: + self.active = False + break + + if safe_frame is None: + if getattr(self, "prefetch_active", True) and not getattr( + self.reader, "stopped", False + ): + time.sleep(0.001) + continue + missing_frame_cnt += 1 + if missing_frame_cnt >= max_retries: + self.active = False + main_app_logger.info( + "Too many frames missing and workers done. Exiting..." + ) + break + continue + + missing_frame_cnt = 0 + total_read_time += frame_details["reader_time"] + + # Downstream Serialization Pressure Tracking + cycle_gap = frame_start_time - last_loop_cycle_timestamp + true_serialization_stall = max( + 0.0, (cycle_gap - frame_details["reader_time"]) * 1000.0 + ) + self.component_stats["queue_blocked"].append(true_serialization_stall) + + # Frame counters and clipping indices + self.abs_frame_num = frame_details["abs_frame_num"] + calculated_clip_id = ( + frame_details["frame_num"] - 1 + ) // self.max_frames_per_clip + self.frame_count += 1 + self.frame_count_target += 1 + self.frame_in_clip_count += 1 + + # Queue Saturation Density Ratio Tracking + if ( + hasattr(self.reader, "frame_queue") + and self.reader.frame_queue.maxlen + ): + saturation_ratio = ( + len(self.reader.frame_queue) / self.reader.frame_queue.maxlen + ) + else: + saturation_ratio = 0.0 + total_queue_saturation += saturation_ratio + queue_saturation_history.append(saturation_ratio) + + # 2. RUN PIPELINE_FN ------------------------------------------ + run_pipelinefn_start = time.perf_counter() + + target_boxes_array = None + if gt_enabled: + target_boxes_array = self.get_frame_gt_boxes( + frame_details["abs_frame_num"], gt_sequence, gt_boxes + ) + + metadata_or_bbs, metrics, motion_detected = self.pipeline_fn( + safe_frame, + frame_details["frame_num"], + stat_start_time, + calculated_clip_id, + gt_boxes=target_boxes_array if gt_enabled else None, + read_frame_only=read_frame_only, + ) + + num_objs += len(metadata_or_bbs.keys()) + total_written_frames += 1 + + # 3. FRAME POST-PROCESSING & COMPONENT METRICS ---------------- + frame_end_time = time.perf_counter() + total_run_pipelinefn += frame_end_time - run_pipelinefn_start + last_loop_cycle_timestamp = frame_end_time + + frame_loop_latency = (frame_end_time - frame_start_time) * 1000.0 + total_frame_loop_latency += frame_loop_latency + + active_processing_overhead = frame_loop_latency - ( + frame_details["reader_time"] * 1000.0 + ) + total_active_processing_overhead += active_processing_overhead + + if gt_enabled and motion_detected: + self.update_eval_stats(metadata_or_bbs, target_boxes_array) + + if metrics != {}: + num_crops = ( + len(metrics["bbs"]) if metrics.get("bbs") is not None else 0 + ) + self.crops_per_frame_list.append(num_crops) + + density = metrics.get( + "batch_density", 0 if self.config.sf_enabled else 1 + ) + self.component_stats["batch_sizes"].append(density) + self.component_stats["sf"].append(metrics.get("sf_time", 0.0)) + self.component_stats["det"].append(metrics.get("det_time", 0.0)) + + # Asynchronous GPU coverage collection (NO per-frame GPU stall) + if self.config.sf_enabled and metrics.get("bbs") is not None: + # cov = self.calculate_unique_coverage(metrics["bbs"]) + # if hasattr(cov, "item"): + # coverage_percentages.append(float(cov.item())) + # else: + # coverage_percentages.append(float(cov)) + raw_bbs = metrics["bbs"] + coverage_percentages.append( + raw_bbs.clone() if torch.is_tensor(raw_bbs) else raw_bbs + ) + + # Clean temporary loop variables + del safe_frame + if "metadata_or_bbs" in locals(): + del metadata_or_bbs + + if total_written_frames % (10 * int(self.target_fps)) == 0: + main_app_logger.info( + f"Captured {total_written_frames}/{self.max_target_frames} frames..." + ) + + # if self.frame_count % 100 == 0: + # gc.collect() + + except Exception as e: + if not self.active or not getattr(self, "prefetch_active", True): + break + main_app_logger.info( + f"[CRITICAL PIPELINE ERROR] Crash on frame: {repr(e)}" + ) + traceback.print_exc() + raise e + + # ===================================================================== + # POST-LOOP BENCHMARK CALCULATIONS (Single Batch Reduction at Teardown) + # ===================================================================== + pipeline_end_time = time.perf_counter() + total_pipeline_ms = float((pipeline_end_time - pipeline_start_time) * 1000.0) + + if hasattr(self, "async_writer") and self.async_writer is not None: + self.async_writer.release() + + main_app_logger.info( + f"Execution Finished. Total Output Frames Written: {total_written_frames}" + ) + + computed_eval_metrics = None + if gt_enabled and hasattr(self, "evaluator"): + computed_eval_metrics = self.evaluator.compute_final_metrics() + + if hasattr(self.__class__, "benchmarks"): + print(f"SELF.__CLASS__.BENCHMARKS: {self.__class__.benchmarks}") + elif hasattr(self, "benchmarks"): + print(f"SELF.BENCHMARKS: {self.benchmarks}") + + self._finalize_benchmarks( + num_objs=num_objs, + total_written_frames=total_written_frames, + total_pipeline_ms=total_pipeline_ms, + real_world_latency_ms=total_pipeline_ms, + total_sf_pipeline_ms=float( + sum(self.component_stats.get("sf", [0.0])) + + sum(self.component_stats.get("det", [0.0])) + ), + frame_loop_latency_ms=total_frame_loop_latency + / max(1, total_written_frames), + coverage_percentages=coverage_percentages, + total_read_time=total_read_time, + total_queue_saturation=total_queue_saturation, + queue_saturation_history=queue_saturation_history, + computed_eval_metrics=computed_eval_metrics, + ) + + if self.device_input == "cuda" and torch.cuda.is_available(): + torch.cuda.synchronize() + torch.cuda.empty_cache() + if hasattr(torch.cuda, "ipc_collect"): + torch.cuda.ipc_collect() + + # gc.collect() + if profiler is not None: + profiler.stop() + + self.stop() + + # CLEANUP -------------------------------------------- + + def clean_up_tensors_and_arrays(self): + main_app_logger.info("[CLEANUP] Safely stripping active runtime arrays ...") + + # 1. Force disable tracking states to stop graph allocation recursion + # torch.set_grad_enabled(False) + + # if hasattr(torch, "jit") and hasattr(torch.jit, "_builtins"): + # if isinstance(torch.jit._builtins, dict): + # torch.jit._sbuiltins.clear() + # else: + # torch.jit._builtins = {} + + # 2. Collect references safely using strict type checking + # This completely avoids pulling unmanaged proxy objects from the heap + all_live_objects = gc.get_objects() + + target_tensors = [] + target_arrays = [] + + for obj in all_live_objects: + try: + obj_type = type(obj) + if isinstance(obj, types.FrameType): + frame_info = inspect.getframeinfo(obj) + if ( + "openvino" in frame_info.filename + or "openvino.py" in frame_info.filename + ): + # Clear the frame's local variable dictionary to break circular references + obj.f_locals.clear() + + # Check for concrete types to prevent triggering proxy __getattr__ hooks + if obj_type is torch.Tensor: + target_tensors.append(obj) + elif obj_type is np.ndarray: + # Explicitly guard size checks to keep it completely stable + if obj.base is None and obj.ndim > 0: + target_arrays.append(obj) + except Exception: + pass + + # 3. Truncate discovered references in-place without triggering deletions + reclaimed_tensors = 0 + for tensor in target_tensors: + try: + # Truncate raw storage footprint safely + tensor.data = torch.empty(0, device=self.device_input) + reclaimed_tensors += 1 + except Exception: + pass + + reclaimed_arrays = 0 + for arr in target_arrays: + try: + # Shrink writeable numpy arrays down to 0 bytes safely + if arr.flags.writeable: + arr.resize((0,), refcheck=False) + reclaimed_arrays += 1 + except (ValueError, SystemError): + pass + + main_app_logger.info( + f"[CLEANUP] Reclaimed {reclaimed_tensors} tensors and {reclaimed_arrays} arrays safely." + ) + + # Clean local registers immediately + all_live_objects = None + target_tensors = None + target_arrays = None + + # Clear out low-level traceback registries if active + # if hasattr(sys, "exc_info"): + if hasattr(sys, "exc_clear"): + sys.exc_clear() # if hasattr(sys, "exc_clear") else None + + # Walk up the execution frame tree and clear out f_locals references + try: + frame_cursor = inspect.currentframe() + while frame_cursor: + # Empty out active scopes to force unlinking of trapped closures + frame_cursor.f_locals.clear() + frame_cursor = frame_cursor.f_back + except Exception: + pass + finally: + # Prevent the frame cursor property itself from pinning the block + del frame_cursor + gc.collect() + + def execute_teardown(self): + if hasattr(self, "baseline_before_start"): + setattr(self, "baseline_before_start", None) + + if hasattr(self, "evaluator") and self.evaluator is not None: + try: + # If your evaluator class tracks raw coordinate arrays in a list/dict, + # force-clear them to allow Python to free up the unmanaged memory: + if hasattr(self.evaluator, "history"): + self.evaluator.history.clear() + if hasattr(self.evaluator, "all_predictions"): + self.evaluator.all_predictions.clear() + except Exception: + pass + self.evaluator = None + + if hasattr(self, "component_stats") and self.component_stats: + self.component_stats.clear() + + release_native_linux_heap() + + # main_app_logger.info( + # "[TEST HARNESS] Test Teardown complete. Releasing session cleanly.\n", + # , + # ) + + # HELPER FUNCTIONS -------------------------------------------- + def _finalize_benchmarks_v1( + self, + num_objs, + total_written_frames, + total_pipeline_ms, + real_world_latency_ms, + total_sf_pipeline_ms, + frame_loop_latency_ms, + coverage_percentages, + total_read_time, + total_queue_saturation, + queue_saturation_history, + computed_eval_metrics=None, + ): + """Aggregates metrics and adds them to the results list.""" + # num_objs = len(all_metadata.keys()) + sf_enabled = self.config.sf_enabled + stat_frame_count = self.stat_frame_count + stat_fps = self.stat_fps + total_frames = self.abs_frame_num # self.reader.total_input_frames + + h2d_label = ( + "Pinned H2D Transfer (PCIe DMA)" + if self.is_cuda + else "Data Preparation Overhead" + ) + # d2h_label = ( + # "D2H Transfer (PCIe Download)" + # if self.is_cuda + # else "Array Extraction Overhead" + # ) + + total_pipeline_s = total_pipeline_ms / 1000.0 # Full pipeline + + total_real_pipeline_s = ( + real_world_latency_ms / 1000.0 + ) # Pipeline until last frame sent to writer + real_est_fps = ( + self.frame_count_target / total_real_pipeline_s + if total_real_pipeline_s > 0 + else 0 + ) + + # if total_written_frames > 0: + duration_s = ( + total_frames / self.reader.input_fps if self.reader.input_fps > 0 else 0 + ) + out_duration_s = ( + total_written_frames / self.reader.target_fps + if self.reader.target_fps > 0 + else 0 + ) + # main_app_logger.info( + # f"Expected duration: {self.duration_target:.2f} stream_duration_s: {duration_s:.2f} output_duration_s: {out_duration_s:.2f}" + # ) + + h2d_display_label = f"Reader {h2d_label}:" + avg_reader_ms = (total_read_time / total_written_frames) * 1000 + # avg_resize_ms = (total_resize_time / total_written_frames)*1000 + # avg_write_ms = (total_disk_write_overhead / total_written_frames)*1000 + target_frame_fps = total_written_frames / total_pipeline_s + all_frame_fps = total_frames / total_pipeline_s + avg_copy_ms = (self.reader.total_shm_copy_time / total_written_frames) * 1000 + # avg_blocked_ms = ( + # self.reader.total_queue_wait_time / total_written_frames + # ) * 1000 + + # Avg Blocked MS tracks your downstream GIL blocks and serialization stalls + avg_blocked_ms = ( + sum(self.component_stats.get("queue_blocked", [0.0])) + / max(1, len(self.component_stats.get("queue_blocked", []))) + if self.component_stats.get("queue_blocked") + else 0.0 + ) + + avg_saturation = (total_queue_saturation / total_written_frames) * 100 + peak_saturation = ( + max(queue_saturation_history) * 100 if queue_saturation_history else 0 + ) + target_match_ratio = ( + total_written_frames / (total_pipeline_s * self.reader.target_fps) + ) * 100 + + frame_drop = max( + 0.0, + (1.0 - (total_written_frames / max(1, total_frames))) * 100.0, + ) + serial_pressure = (avg_blocked_ms / max(0.1, frame_loop_latency_ms)) * 100.0 + evac_vel = target_frame_fps / max(0.1, all_frame_fps) + + # Isolate the ratio of sequential loop stalls against full execution bounds + backpressure_index = (avg_blocked_ms / max(0.1, frame_loop_latency_ms)) * 100.0 + + if self.is_cuda: + avg_h2d_ms = (self.reader.total_h2d_time / total_written_frames) * 1000 + avg_prep_ms = 0.0 + else: + avg_prep_ms = (self.reader.total_h2d_time / total_written_frames) * 1000 + avg_h2d_ms = 0.0 + + # Calculate structural frame size payload in Gigabytes (H * W * Channels) + frame_size_gb = (self.reader.frame_height * self.reader.frame_width * 3) / ( + 1024**3 + ) + + # 1. Compute Peak H2D PCIe Throughput + avg_h2d_s = ( + ( + sum(self.component_stats["dma_upload"]) + / len(self.component_stats["dma_upload"]) + ) + / 1000.0 + if self.component_stats["dma_upload"] + else 0 + ) + if self.is_cuda and avg_h2d_s > 0.00001: + self.pcie_throughput_gbps = frame_size_gb / avg_h2d_s + else: + self.pcie_throughput_gbps = ( + 0.0 # Safe fallback baseline for non-PCIe pipelines (CPU) + ) + + # Calculate bus saturation relative to standard Gen4 x16 baseline ceilings (31.5 GB/s) + # Scale to an index percentage safely + pcie_bus_saturation = (self.pcie_throughput_gbps / 31.5) * 100.0 + + # 2. Extract PyTorch VRAM Fragmentation Delta Metrics + if self.is_cuda and torch.cuda.is_available(): + peak_alloc = torch.cuda.max_memory_allocated(0) / 1024**2 + peak_reserved = torch.cuda.max_memory_reserved(0) / 1024**2 + self.vram_efficiency = ( + (peak_alloc / peak_reserved * 100.0) if peak_reserved > 0 else 100.0 + ) + else: + self.vram_efficiency = ( + 0.0 # Clean zero baseline representation for CPU runs + ) + + # Calculate averages for component breakdowns + # avg_reader_ms = (total_read_time / total_frames) * 1000 + # avg_reader_ms = (total_read_time / self.frame_count_target) * 1000 + avg_sf = ( + sum(self.component_stats["sf"]) / len(self.component_stats["sf"]) + if self.component_stats["sf"] + else 0 + ) + avg_roi = ( + sum(self.component_stats["roi"]) / len(self.component_stats["roi"]) + if self.component_stats["roi"] + else 0 + ) + avg_det = ( + sum(self.component_stats["det"]) / len(self.component_stats["det"]) + if self.component_stats["det"] + else 0 + ) + + # Total Latency Sum (SF + ROI + DET) + det_latency_ms = avg_sf + avg_roi + avg_det + det_latency_s = det_latency_ms / 1000.0 + det_est_fps = (total_written_frames / det_latency_s) if det_latency_s > 0 else 0 + + # Track model workloads against preprocessing overheads (sf_time + roi_time) + preprocessing_overhead = avg_sf + avg_roi + model_cost_density = avg_det / max(0.1, preprocessing_overhead) + + loop_overhead = max( + 0.0, 100.0 - ((det_latency_ms / max(1.0, frame_loop_latency_ms)) * 100.0) + ) + # avg_cov = ( + # sum(coverage_percentages) / len(coverage_percentages) + # if coverage_percentages + # else (100.0 if not sf_enabled else 0) + # ) + # peak_cov = max(coverage_percentages) if coverage_percentages else 0.0 + + if coverage_percentages: + if torch.is_tensor(coverage_percentages[0]): + cov_stack = torch.stack(coverage_percentages) + avg_cov = cov_stack.mean().item() + peak_cov = cov_stack.max().item() + else: + avg_cov = sum(coverage_percentages) / len(coverage_percentages) + peak_cov = max(coverage_percentages) if coverage_percentages else 0.0 + else: + avg_cov = 100.0 if not sf_enabled else 0.0 + peak_cov = 0.0 + # If coverage_percentages contains un-synchronized GPU tensors, reduce them all at once! + # if coverage_percentages and isinstance(coverage_percentages[0], torch.Tensor): + # # Stack all frame elements into a single contiguous GPU tensor block + # coverage_tensor_stack = torch.stack(coverage_percentages) + + # # Calculate reductions fast on the device without stepping back onto the CPU + # avg_cov = torch.mean(coverage_tensor_stack).item() + # peak_cov = torch.max(coverage_tensor_stack).item() + + # # Safe fallback: Convert the tracking list back into plain floats for standard reporting + # coverage_percentages = coverage_tensor_stack.cpu().tolist() + # else: + # # Standard fallback if the script is running on a CPU target pass + # avg_cov = sum(coverage_percentages) / max(1, len(coverage_percentages)) + # peak_cov = max(coverage_percentages) if coverage_percentages else 0.0 + + avg_crops = ( + sum(self.crops_per_frame_list) / len(self.crops_per_frame_list) + if self.crops_per_frame_list + else 0 + ) + + # Calculate how often we hit a high-motion cap (e.g., 20 crops) + capped_frames = sum(1 for c in self.crops_per_frame_list if c >= 20) + cap_rate = ( + (capped_frames / len(self.crops_per_frame_list)) * 100 + if self.crops_per_frame_list + else 0 + ) + + # avg_queue = ( + # sum(self.component_stats["queue_blocked"]) + # / len(self.component_stats["queue_blocked"]) + # if self.component_stats["queue_blocked"] + # else 0 + # ) + # avg_batch = ( + # sum(self.component_stats["batch_sizes"]) + # / len(self.component_stats["batch_sizes"]) + # if self.component_stats["batch_sizes"] + # else 0 + # ) + + backlog_list = self.component_stats.get("thread_backlog", []) + avg_backlog = ( + sum(backlog_list) / len(backlog_list) if len(backlog_list) > 0 else 0.0 + ) + + main_app_logger.info( + "=" * 60, + ) + main_app_logger.info( + f" FULLY-OPTIMIZED ASYNC STAGE ({self.config.DEVICE}) PIPELINE BREAKDOWN " + ) + main_app_logger.info( + "=" * 60, + ) + main_app_logger.info( + f"Total Output Frames Written: {total_written_frames}", + ) + main_app_logger.info( + f"Total Pipeline Execution Time: {total_pipeline_s:.4f} seconds", + ) + main_app_logger.info( + f"Overall Processing Speed: {target_frame_fps:.2f} FPS", + ) + main_app_logger.info( + "=" * 60, + ) + main_app_logger.info( + "MAIN CONSUMER LOOP TIMELINE (SEQUENTIAL OVERHEAD):", + ) + main_app_logger.info( + f" 1. Shared Memory Copy to Host: {avg_copy_ms:6.2f} ms" + ) + main_app_logger.info( + f" 2. GIL / Downstream Queue Serialization Stalls: {avg_blocked_ms:6.2f} ms" + ) + main_app_logger.info( + f" 3. Pure Video Frame File-Ingestion Read: {avg_reader_ms:6.2f} ms" + ) + main_app_logger.info( + "=" * 60, + ) + main_app_logger.info( + "BACKGROUND INGESTION HEALTH (ASYNC METRICS):", + ) + main_app_logger.info( + f" A. Inbound Stream Decode Speed: {all_frame_fps:6.2f} FPS" + ) + main_app_logger.info( + f" B. {h2d_display_label:<42} {avg_h2d_ms:6.2f} ms", + ) + main_app_logger.info( + f" C. Consumer Queue Saturation Density: {avg_saturation:6.1f}%" + ) + main_app_logger.info( + f" D. Peak PCIe Upload Throughput: {self.pcie_throughput_gbps:6.2f} GB/s" + ) + main_app_logger.info( + f" E. Active Thread Pool Work Backlog: {avg_backlog:6.1f} tasks" + ) + main_app_logger.info( + f" F. VRAM Hardware Memory Efficiency (Cache): {self.vram_efficiency:6.1f}%" + ) + main_app_logger.info( + "=" * 60, + ) + + # EXPANDED PERFORMANCE INSIGHTS AND DIAGNOSTICS + main_app_logger.info("PIPELINE HEALTH & BEHAVIOR INSIGHTS:") + if avg_saturation > 80.0: + pipeline_status = "CHOKED" + main_app_logger.info( + f" • Status: \033[91m🔴 {pipeline_status}\033[0m (Downstream logic cannot keep up with inbound stream speed)" + ) + elif avg_saturation > 40.0: + pipeline_status = "BALANCED" + main_app_logger.info( + f" • Status: \033[93m🟡 {pipeline_status}\033[0m (Queue buffer is actively pacing consumer workloads)" + ) + else: + pipeline_status = "IDLE/LIGHT" + main_app_logger.info( + f" • Status: \033[92m🟢 {pipeline_status}\033[0m (Consumer loop finishes ahead of background ingestion clock)" + ) + + main_app_logger.info( + f" • Peak Queue Fullness Reached: {peak_saturation:.1f}%" + ) + # Calculate stream drop indicator + main_app_logger.info( + f" • Targeted Pacing Delivery Accuracy: {target_match_ratio:.1f}%" + ) + main_app_logger.info( + f" • Downstream Serialization Pressure Index: {serial_pressure}" + ) + main_app_logger.info( + f" • Core Queue Evacuation Velocity Rank: {evac_vel}", + ) + main_app_logger.info( + f" • Hardware Compute Backpressure Index: {backpressure_index:6.2f}%" + ) + main_app_logger.info( + f" • Preprocessing to Inference Cost Density: {model_cost_density:6.2f}x" + ) + main_app_logger.info( + f" • Physical PCIe Gen4 Bus Saturation Level: {pcie_bus_saturation:6.2f}%" + ) + main_app_logger.info( + "=" * 60, + ) + + result_dict = { + "Test Name": self._testMethodName, + "Detection Type": self.config.DETECTION_TYPE, + "Device": self.config.DEVICE, + "Smart Filtering": "Enabled" if sf_enabled else "Disabled", + "Video": self.source, # self.name? + "Video FPS": f"{self.reader.input_fps:.2f}", + "Video Original Duration (s)": f"{duration_s:.4f}", + "Video Frames": total_frames, + # TARGET OVERVIEW + "Target FPS": f"{self.reader.target_fps:.2f}", + "Output Duration (s)": f"{out_duration_s:.4f}", + "Output Frames": total_written_frames, + } + + if computed_eval_metrics: + result_dict.update( + { + # EVAL OVERVIEW + "Max_Recall_IoU_10": computed_eval_metrics["Max_Recall_IoU_10"], + "mAP_10": computed_eval_metrics["mAP_10"], + "mAP_50": computed_eval_metrics["mAP_50"], + "mAP_75": computed_eval_metrics["mAP_75"], + "mAP_10_95": computed_eval_metrics["mAP_10_95"], + "Precision_10": computed_eval_metrics["Precision_10"], + "Recall_10": computed_eval_metrics["Recall_10"], + "F1_Score_10": computed_eval_metrics["F1_Score_10"], + "Precision_50": computed_eval_metrics["Precision_50"], + "Recall_50": computed_eval_metrics["Recall_50"], + "F1_Score_50": computed_eval_metrics["F1_Score_50"], + } + ) + + result_dict.update( + { + # PIPELINE OVERVIEW + "Pipeline Latency (s)": f"{total_pipeline_s:.2f}", + "Pipeline FPS (Video frames)": f"{all_frame_fps:.2f}", + "Pipeline FPS (Target frames)": f"{target_frame_fps:.2f}", + "Real Pipeline Latency (s)": f"{total_real_pipeline_s:.2f}", + "Real Pipeline FPS (Target frames)": f"{real_est_fps:.2f}", + # MAIN CONSUMER LOOP TIMELINE (SEQUENTIAL OVERHEAD) + "Avg Frame Reading (ms)": f"{avg_reader_ms:.2f}", + # "Avg Resize (ms)": f"{avg_resize_ms:.2f}", + # "Avg Writer Async Handoff (ms)": f"{avg_write_ms:.2f}", + # BACKGROUND INGESTION HEALTH (ASYNC METRICS) + "Avg Host Copy (ms)": f"{avg_copy_ms:.2f}", + "Avg DMA Upload (ms)": f"{avg_h2d_ms:.2f}", + "Avg Data Prep Overhead (ms)": f"{avg_prep_ms:.2f}", + "Avg Queue Blocked (ms)": f"{avg_blocked_ms:.2f}", + "Avg Queue Saturation (%)": f"{avg_saturation:.2f}", + # Framework Overhead Leak Tracking (Measures loop time spent outside raw AI inference model blocks) + "Loop Overhead %": f"{loop_overhead:.2f}%", + # Inbound Stream Frame Drop Rate (Identifies if background threads are dropping packets due to I/O) + "Inbound Frame Drop %": f"{frame_drop:.2f}%", + # Serialization Pressure Index (Tracks what percentage of your frame time is lost to thread stalls) + "Serialization Pressure %": f"{serial_pressure:.2f}%", + # Queue Evacuation Velocity Coefficient (Values > 1.0 mean your consumer loop drains frames faster than ingestion) + "Evacuation Velocity": f"{evac_vel:.2f}x", + "Compute Backpressure Index": f"{backpressure_index:.2f}%", + "Model Cost Density Ratio": f"{model_cost_density:.2f}x", + "PCIe Bus Saturation %": f"{pcie_bus_saturation:.2f}%", + # PIPELINE HEALTH & BEHAVIOR INSIGHTS + "Pipeline Status": pipeline_status, + "Peak Queue Fullness (%)": f"{peak_saturation:.2f}", + "Targeted Pacing Delivery (%)": f"{target_match_ratio:.2f}", + # DETECTION PIPELINE (Should B NULL) + "SF/Detection Latency (s)": f"{det_latency_s:.2f}", + "SF/Detection FPS": f"{det_est_fps:.2f}", + "Avg SF (ms)": f"{avg_sf:.2f}", + "Avg ROI (ms)": f"{avg_roi:.2f}", + "Avg Obj. Detection (ms)": f"{avg_det:.2f}", + "Total Breakdown Sum (ms)": f"{det_latency_ms:.2f}", + "Avg Area Coverage %": f"{avg_cov:.2f}%", + "Peak Area Coverage %": f"{peak_cov:.2f}%", + "Avg Crops/Frame": f"{avg_crops:.1f}", + # "Frames w/o ROIs": self.no_roi_frame_cnt, + "Crop Cap Rate (>20)": f"{cap_rate:.1f}%", + "Objects Detected": num_objs, + # TIming to display frame (read to after send to render queue) + "Display Latency (s)": f"{self.elapsed_display_time:.2f}", + "Display Frames": stat_frame_count, + "Display FPS": f"{stat_fps:.2f}", + "PCIe Bandwidth Throughput (GB/s)": f"{self.pcie_throughput_gbps:.2f}", + "Avg Async Thread Pool Backlog": f"{sum(self.component_stats.get('thread_backlog', [0])) / len(self.component_stats.get('thread_backlog', [1])):.1f}", + "VRAM Allocation Efficiency (%)": f"{self.vram_efficiency:.1f}%", + } + ) + self.__class__.benchmarks.append(result_dict) + + main_app_logger.info( + f"[{self._testMethodName}] Pipeline Latency (s): {total_pipeline_s:.2f} sec" + ) + main_app_logger.info( + f"[{self._testMethodName}] Pipeline FPS (Target frames): {target_frame_fps:.2f} ({total_written_frames} frames)" + ) + main_app_logger.info( + f"[{self._testMethodName}] Pipeline FPS (Video frames): {all_frame_fps:.2f} ({total_frames} frames)" + ) + main_app_logger.info( + f"[{self._testMethodName}] SF/Detection FPS (Target frames): {det_est_fps:.2f} ({total_written_frames} frames)" + ) + main_app_logger.info( + f"[{self._testMethodName}] Display FPS: {stat_fps:.2f} ({stat_frame_count} frames)" + ) + + def _finalize_benchmarks( + self, + num_objs, + total_written_frames, + total_pipeline_ms, + real_world_latency_ms, + total_sf_pipeline_ms, + frame_loop_latency_ms, + coverage_percentages, + total_read_time, + total_queue_saturation, + queue_saturation_history, + computed_eval_metrics=None, + ): + """Aggregates metrics and adds them to the results list.""" + sf_enabled = self.config.sf_enabled + stat_frame_count = self.stat_frame_count + stat_fps = self.stat_fps + total_frames = self.abs_frame_num + + h2d_label = ( + "Pinned H2D Transfer (PCIe DMA)" + if self.is_cuda + else "Data Preparation Overhead" + ) + + total_pipeline_s = total_pipeline_ms / 1000.0 + total_real_pipeline_s = real_world_latency_ms / 1000.0 + real_est_fps = ( + self.frame_count_target / total_real_pipeline_s + if total_real_pipeline_s > 0 + else 0.0 + ) + + duration_s = ( + total_frames / self.reader.input_fps if self.reader.input_fps > 0 else 0.0 + ) + out_duration_s = ( + total_written_frames / self.reader.target_fps + if self.reader.target_fps > 0 + else 0.0 + ) + + h2d_display_label = f"Reader {h2d_label}:" + avg_reader_ms = ( + (total_read_time / total_written_frames) * 1000.0 + if total_written_frames > 0 + else 0.0 + ) + target_frame_fps = ( + total_written_frames / total_pipeline_s if total_pipeline_s > 0 else 0.0 + ) + all_frame_fps = total_frames / total_pipeline_s if total_pipeline_s > 0 else 0.0 + avg_copy_ms = ( + (self.reader.total_shm_copy_time / total_written_frames) * 1000.0 + if total_written_frames > 0 + else 0.0 + ) + + avg_blocked_ms = ( + sum(self.component_stats.get("queue_blocked", [0.0])) + / max(1, len(self.component_stats.get("queue_blocked", []))) + if self.component_stats.get("queue_blocked") + else 0.0 + ) + + avg_saturation = ( + (total_queue_saturation / total_written_frames) * 100.0 + if total_written_frames > 0 + else 0.0 + ) + peak_saturation = ( + max(queue_saturation_history) * 100.0 if queue_saturation_history else 0.0 + ) + target_match_ratio = ( + (total_written_frames / (total_pipeline_s * self.reader.target_fps)) * 100.0 + if (total_pipeline_s > 0 and self.reader.target_fps > 0) + else 0.0 + ) + + frame_drop = max( + 0.0, + (1.0 - (total_written_frames / max(1, total_frames))) * 100.0, + ) + serial_pressure = (avg_blocked_ms / max(0.1, frame_loop_latency_ms)) * 100.0 + evac_vel = target_frame_fps / max(0.1, all_frame_fps) + backpressure_index = (avg_blocked_ms / max(0.1, frame_loop_latency_ms)) * 100.0 + + if self.is_cuda: + avg_h2d_ms = ( + (self.reader.total_h2d_time / total_written_frames) * 1000.0 + if total_written_frames > 0 + else 0.0 + ) + avg_prep_ms = 0.0 + else: + avg_prep_ms = ( + (self.reader.total_h2d_time / total_written_frames) * 1000.0 + if total_written_frames > 0 + else 0.0 + ) + avg_h2d_ms = 0.0 + + frame_size_gb = (self.reader.frame_height * self.reader.frame_width * 3) / ( + 1024**3 + ) + + avg_h2d_s = ( + ( + sum(self.component_stats["dma_upload"]) + / len(self.component_stats["dma_upload"]) + ) + / 1000.0 + if self.component_stats.get("dma_upload") + else 0.0 + ) + if self.is_cuda and avg_h2d_s > 0.00001: + self.pcie_throughput_gbps = frame_size_gb / avg_h2d_s + else: + self.pcie_throughput_gbps = 0.0 + + pcie_bus_saturation = (self.pcie_throughput_gbps / 31.5) * 100.0 + + if self.is_cuda and torch.cuda.is_available(): + peak_alloc = torch.cuda.max_memory_allocated(0) / 1024**2 + peak_reserved = torch.cuda.max_memory_reserved(0) / 1024**2 + self.vram_efficiency = ( + (peak_alloc / peak_reserved * 100.0) if peak_reserved > 0 else 100.0 + ) + else: + self.vram_efficiency = 0.0 + + avg_sf = ( + sum(self.component_stats["sf"]) / len(self.component_stats["sf"]) + if self.component_stats.get("sf") + else 0.0 + ) + avg_roi = ( + sum(self.component_stats["roi"]) / len(self.component_stats["roi"]) + if self.component_stats.get("roi") + else 0.0 + ) + avg_det = ( + sum(self.component_stats["det"]) / len(self.component_stats["det"]) + if self.component_stats.get("det") + else 0.0 + ) + + det_latency_ms = avg_sf + avg_roi + avg_det + det_latency_s = det_latency_ms / 1000.0 + det_est_fps = ( + (total_written_frames / det_latency_s) if det_latency_s > 0 else 0.0 + ) + + preprocessing_overhead = avg_sf + avg_roi + model_cost_density = avg_det / max(0.1, preprocessing_overhead) + + loop_overhead = max( + 0.0, 100.0 - ((det_latency_ms / max(1.0, frame_loop_latency_ms)) * 100.0) + ) + + # Batch GPU Reduction for Coverage Tensors + if coverage_percentages: + cov_results = [] + for bbs in coverage_percentages: + if bbs is not None and len(bbs) > 0: + cov_results.append(self.calculate_unique_coverage(bbs)) + else: + cov_results.append(0.0) + + avg_cov = sum(cov_results) / max(1, len(cov_results)) + peak_cov = max(cov_results) + else: + avg_cov = 100.0 if not sf_enabled else 0.0 + peak_cov = 0.0 + + avg_crops = ( + sum(self.crops_per_frame_list) / len(self.crops_per_frame_list) + if self.crops_per_frame_list + else 0.0 + ) + + capped_frames = sum(1 for c in self.crops_per_frame_list if c >= 20) + cap_rate = ( + (capped_frames / len(self.crops_per_frame_list)) * 100.0 + if self.crops_per_frame_list + else 0.0 + ) + + backlog_list = self.component_stats.get("thread_backlog", []) + avg_backlog = ( + sum(backlog_list) / len(backlog_list) if len(backlog_list) > 0 else 0.0 + ) + + # Formatted Performance Breakdown Logging + main_app_logger.info("=" * 60) + main_app_logger.info( + f" FULLY-OPTIMIZED ASYNC STAGE ({self.config.DEVICE}) PIPELINE BREAKDOWN " + ) + main_app_logger.info("=" * 60) + main_app_logger.info(f"Total Output Frames Written: {total_written_frames}") + main_app_logger.info( + f"Total Pipeline Execution Time: {total_pipeline_s:.4f} seconds" + ) + main_app_logger.info( + f"Overall Processing Speed: {target_frame_fps:.2f} FPS" + ) + main_app_logger.info("=" * 60) + main_app_logger.info("MAIN CONSUMER LOOP TIMELINE (SEQUENTIAL OVERHEAD):") + main_app_logger.info( + f" 1. Shared Memory Copy to Host: {avg_copy_ms:6.2f} ms" + ) + main_app_logger.info( + f" 2. GIL / Downstream Queue Serialization Stalls: {avg_blocked_ms:6.2f} ms" + ) + main_app_logger.info( + f" 3. Pure Video Frame File-Ingestion Read: {avg_reader_ms:6.2f} ms" + ) + main_app_logger.info("=" * 60) + main_app_logger.info("BACKGROUND INGESTION HEALTH (ASYNC METRICS):") + main_app_logger.info( + f" A. Inbound Stream Decode Speed: {all_frame_fps:6.2f} FPS" + ) + main_app_logger.info(f" B. {h2d_display_label:<42} {avg_h2d_ms:6.2f} ms") + main_app_logger.info( + f" C. Consumer Queue Saturation Density: {avg_saturation:6.1f}%" + ) + main_app_logger.info( + f" D. Peak PCIe Upload Throughput: {self.pcie_throughput_gbps:6.2f} GB/s" + ) + main_app_logger.info( + f" E. Active Thread Pool Work Backlog: {avg_backlog:6.1f} tasks" + ) + main_app_logger.info( + f" F. VRAM Hardware Memory Efficiency (Cache): {self.vram_efficiency:6.1f}%" + ) + main_app_logger.info("=" * 60) + + main_app_logger.info("PIPELINE HEALTH & BEHAVIOR INSIGHTS:") + if avg_saturation > 80.0: + pipeline_status = "CHOKED" + main_app_logger.info( + f" • Status: \033[91m🔴 {pipeline_status}\033[0m (Downstream logic cannot keep up with inbound stream speed)" + ) + elif avg_saturation > 40.0: + pipeline_status = "BALANCED" + main_app_logger.info( + f" • Status: \033[93m🟡 {pipeline_status}\033[0m (Queue buffer is actively pacing consumer workloads)" + ) + else: + pipeline_status = "IDLE/LIGHT" + main_app_logger.info( + f" • Status: \033[92m🟢 {pipeline_status}\033[0m (Consumer loop finishes ahead of background ingestion clock)" + ) + + main_app_logger.info( + f" • Peak Queue Fullness Reached: {peak_saturation:.1f}%" + ) + main_app_logger.info( + f" • Targeted Pacing Delivery Accuracy: {target_match_ratio:.1f}%" + ) + main_app_logger.info( + f" • Downstream Serialization Pressure Index: {serial_pressure:.4f}" + ) + main_app_logger.info( + f" • Core Queue Evacuation Velocity Rank: {evac_vel:.4f}" + ) + main_app_logger.info( + f" • Hardware Compute Backpressure Index: {backpressure_index:6.2f}%" + ) + main_app_logger.info( + f" • Preprocessing to Inference Cost Density: {model_cost_density:6.2f}x" + ) + main_app_logger.info( + f" • Physical PCIe Gen4 Bus Saturation Level: {pcie_bus_saturation:6.2f}%" + ) + main_app_logger.info("=" * 60) + + result_dict = { + "Test Name": self._testMethodName, + "Detection Type": self.config.DETECTION_TYPE, + "Device": self.config.DEVICE, + "Smart Filtering": "Enabled" if sf_enabled else "Disabled", + "Video": self.source, + "Video FPS": f"{self.reader.input_fps:.2f}", + "Video Original Duration (s)": f"{duration_s:.4f}", + "Video Frames": total_frames, + "Target FPS": f"{self.reader.target_fps:.2f}", + "Output Duration (s)": f"{out_duration_s:.4f}", + "Output Frames": total_written_frames, + } + + if computed_eval_metrics: + result_dict.update( + { + "Max_Recall_IoU_10": computed_eval_metrics.get( + "Max_Recall_IoU_10", 0.0 + ), + "mAP_10": computed_eval_metrics.get("mAP_10", 0.0), + "mAP_50": computed_eval_metrics.get("mAP_50", 0.0), + "mAP_75": computed_eval_metrics.get("mAP_75", 0.0), + "mAP_10_95": computed_eval_metrics.get("mAP_10_95", 0.0), + "Precision_10": computed_eval_metrics.get("Precision_10", 0.0), + "Recall_10": computed_eval_metrics.get("Recall_10", 0.0), + "F1_Score_10": computed_eval_metrics.get("F1_Score_10", 0.0), + "Precision_50": computed_eval_metrics.get("Precision_50", 0.0), + "Recall_50": computed_eval_metrics.get("Recall_50", 0.0), + "F1_Score_50": computed_eval_metrics.get("F1_Score_50", 0.0), + } + ) + + result_dict.update( + { + "Pipeline Latency (s)": f"{total_pipeline_s:.2f}", + "Pipeline FPS (Video frames)": f"{all_frame_fps:.2f}", + "Pipeline FPS (Target frames)": f"{target_frame_fps:.2f}", + "Real Pipeline Latency (s)": f"{total_real_pipeline_s:.2f}", + "Real Pipeline FPS (Target frames)": f"{real_est_fps:.2f}", + "Avg Frame Reading (ms)": f"{avg_reader_ms:.2f}", + "Avg Host Copy (ms)": f"{avg_copy_ms:.2f}", + "Avg DMA Upload (ms)": f"{avg_h2d_ms:.2f}", + "Avg Data Prep Overhead (ms)": f"{avg_prep_ms:.2f}", + "Avg Queue Blocked (ms)": f"{avg_blocked_ms:.2f}", + "Avg Queue Saturation (%)": f"{avg_saturation:.2f}", + "Loop Overhead %": f"{loop_overhead:.2f}%", + "Inbound Frame Drop %": f"{frame_drop:.2f}%", + "Serialization Pressure %": f"{serial_pressure:.2f}%", + "Evacuation Velocity": f"{evac_vel:.2f}x", + "Compute Backpressure Index": f"{backpressure_index:.2f}%", + "Model Cost Density Ratio": f"{model_cost_density:.2f}x", + "PCIe Bus Saturation %": f"{pcie_bus_saturation:.2f}%", + "Pipeline Status": pipeline_status, + "Peak Queue Fullness (%)": f"{peak_saturation:.2f}", + "Targeted Pacing Delivery (%)": f"{target_match_ratio:.2f}", + "SF/Detection Latency (s)": f"{det_latency_s:.2f}", + "SF/Detection FPS": f"{det_est_fps:.2f}", + "Avg SF (ms)": f"{avg_sf:.2f}", + "Avg ROI (ms)": f"{avg_roi:.2f}", + "Avg Obj. Detection (ms)": f"{avg_det:.2f}", + "Total Breakdown Sum (ms)": f"{det_latency_ms:.2f}", + "Avg Area Coverage %": f"{avg_cov:.2f}%", + "Peak Area Coverage %": f"{peak_cov:.2f}%", + "Avg Crops/Frame": f"{avg_crops:.1f}", + "Crop Cap Rate (>20)": f"{cap_rate:.1f}%", + "Objects Detected": num_objs, + "Display Latency (s)": f"{self.elapsed_display_time:.2f}", + "Display Frames": stat_frame_count, + "Display FPS": f"{stat_fps:.2f}", + "PCIe Bandwidth Throughput (GB/s)": f"{self.pcie_throughput_gbps:.2f}", + "Avg Async Thread Pool Backlog": f"{sum(self.component_stats.get('thread_backlog', [0])) / max(1, len(self.component_stats.get('thread_backlog', [1]))):.1f}", + "VRAM Allocation Efficiency (%)": f"{self.vram_efficiency:.1f}%", + } + ) + self.__class__.benchmarks.append(result_dict) + + main_app_logger.info( + f"[{self._testMethodName}] Pipeline Latency (s): {total_pipeline_s:.2f} sec" + ) + main_app_logger.info( + f"[{self._testMethodName}] Pipeline FPS (Target frames): {target_frame_fps:.2f} ({total_written_frames} frames)" + ) + main_app_logger.info( + f"[{self._testMethodName}] Pipeline FPS (Video frames): {all_frame_fps:.2f} ({total_frames} frames)" + ) + main_app_logger.info( + f"[{self._testMethodName}] SF/Detection FPS (Target frames): {det_est_fps:.2f} ({total_written_frames} frames)" + ) + main_app_logger.info( + f"[{self._testMethodName}] Display FPS: {stat_fps:.2f} ({stat_frame_count} frames)" + ) + + def motion2metadata(self, merged, frame_count_target): + metadata = {} + if merged is not None and merged.size > 0: + # merged = merged / self.scales_tensor.cpu().numpy().reshape(-1, 4) + merged = merged.div(self.scales_tensor.view(-1, 4)) + + # Calculate area for each box: (xmax - xmin) * (ymax - ymin) + widths = merged[:, 2] - merged[:, 0] + heights = merged[:, 3] - merged[:, 1] + areas = widths * heights + max_area = np.max(areas) if np.max(areas) > 0 else 1.0 + + # Format motion results like detection results for evaluation + for i, bb in enumerate(merged): + disp_x, disp_y, disp_x2, disp_y2 = bb + disp_w = disp_x2 - disp_x + disp_h = disp_y2 - disp_y + + if disp_w > 2 and disp_h > 2: + obj_id = len(metadata) + # num_objs += 1 + framenum_str = f"{frame_count_target:04d}_{obj_id:04d}" + score = areas[i] / max_area + + metadata[framenum_str] = { + "frameId": int(frame_count_target), + "bbId": framenum_str, + "bbox": { + "x": int(disp_x), + "y": int(disp_y), + "height": int(disp_h), + "width": int(disp_w), + "object": "", + "object_det": { + "confidence": score, + "frameH": int(self.resize_h), + "frameW": int(self.resize_w), + }, + }, + } + + return metadata + + def calculate_unique_coverage_v1(self, merged_boxes, target_w=640, target_h=640): + """ + Pure Loopless Vectorized Coverage Engine. + Eliminates sequential Python loop slicing overhead via parallel hardware broadcast registers. + """ + if merged_boxes is None or len(merged_boxes) == 0: + return 0.0 + + target_device = self.device_input if hasattr(self, "device_input") else "cpu" + + if isinstance(merged_boxes, np.ndarray): + if merged_boxes.size == 0: + return 0.0 + boxes_tensor = torch.as_tensor( + merged_boxes, device=target_device, dtype=torch.float32 + ) + else: + if merged_boxes.shape[0] == 0: + return 0.0 + boxes_tensor = merged_boxes.to(device=target_device, dtype=torch.float32) + + # Vectorized scaling projection matrix + scale = torch.tensor( + [ + target_w / self.frame_width, + target_h / self.frame_height, + target_w / self.frame_width, + target_h / self.frame_height, + ], + device=target_device, + dtype=torch.float32, + ) + + coords = (boxes_tensor * scale).long() + coords[:, [0, 2]] = coords[:, [0, 2]].clamp(0, target_w) + coords[:, [1, 3]] = coords[:, [1, 3]].clamp(0, target_h) + + # Build parallel coordinate meshes on target hardware + # grid_y, grid_x = torch.meshgrid( + # torch.arange(target_h, device=target_device), + # torch.arange(target_w, device=target_device), + # indexing="ij" + # ) + + # Extract coordinate tracking vectors + x1 = coords[:, 0].unsqueeze(1).unsqueeze(2) + y1 = coords[:, 1].unsqueeze(1).unsqueeze(2) + x2 = coords[:, 2].unsqueeze(1).unsqueeze(2) + y2 = coords[:, 3].unsqueeze(1).unsqueeze(2) + + # Direct 3D array tensor broadcast reduction sum pass + # inside_mask = (grid_x >= x1_v) & (grid_x < x2_v) & (grid_y >= y1_v) & (grid_y < y2_v) + inside_boxes = ( + (self._cached_grid_x >= x1) + & (self._cached_grid_x < x2) + & (self._cached_grid_y >= y1) + & (self._cached_grid_y < y2) + ) + unique_mask = torch.any(inside_boxes, dim=0) + + coverage_percentage = ( + torch.sum(unique_mask).float().div(target_w * target_h).mul(100.0) + ) + return coverage_percentage.item() + + def calculate_unique_coverage(self, merged_boxes, target_w=640, target_h=640): + if merged_boxes is None or len(merged_boxes) == 0: + return None + + target_device = self.device_input if hasattr(self, "device_input") else "cpu" + + if isinstance(merged_boxes, np.ndarray): + if merged_boxes.size == 0: + return None + boxes_tensor = torch.as_tensor( + merged_boxes, device=target_device, dtype=torch.float32 + ) + else: + if merged_boxes.shape[0] == 0: + return None + boxes_tensor = merged_boxes.to(device=target_device, dtype=torch.float32) + + # Scale coordinates to target space + scale_x = target_w / self.frame_width + scale_y = target_h / self.frame_height + + x1 = (boxes_tensor[:, 0] * scale_x).clamp(0, target_w).long().view(-1, 1, 1) + y1 = (boxes_tensor[:, 1] * scale_y).clamp(0, target_h).long().view(-1, 1, 1) + x2 = (boxes_tensor[:, 2] * scale_x).clamp(0, target_w).long().view(-1, 1, 1) + y2 = (boxes_tensor[:, 3] * scale_y).clamp(0, target_h).long().view(-1, 1, 1) + + # 3D broadcast evaluation + inside_boxes = ( + (self._cached_grid_x >= x1) + & (self._cached_grid_x < x2) + & (self._cached_grid_y >= y1) + & (self._cached_grid_y < y2) + ) + unique_mask = torch.any(inside_boxes, dim=0) + + # Return the 0-dim GPU tensor directly without calling .item()! + return torch.sum(unique_mask).float().div(target_w * target_h).mul(100.0) + + def print_active_cpu_tensor_memory(self): + """ + CPU EQUIVALENT TO print_active_gpu_tensor_memory: + Scans the global Python garbage collection registries to locate, measure, + and map every single live PyTorch tensor actively residing on host RAM. + """ + + main_app_logger.info( + "=" * 60, + ) + main_app_logger.info( + "[RAM INVESTIGATOR] Scanning Active CPU Tensors with Sources:", + ) + main_app_logger.info( + f"{'ALLOCATED SIZE':<15} | {'TENSOR SHAPE':<25} | {'DATA TYPE':<15}" + ) + main_app_logger.info( + "-" * 80, + ) + + total_cpu_tensor_bytes = 0 + live_tensor_count = 0 + + # Force a shallow sweep to catch immediately orphaned pointers first + gc.collect() + + # Iterate over the entire active Python heap + for obj in gc.get_objects(): + try: + # Target only genuine PyTorch tensors residing on the host CPU + if torch.is_tensor(obj) and not obj.is_cuda and obj.nelement() > 0: + live_tensor_count += 1 + + # Calculate true memory footprint based on element size and count + element_size = obj.element_size() + num_elements = obj.nelement() + tensor_bytes = num_elements * element_size + total_cpu_tensor_bytes += tensor_bytes + + # Filter out tiny scalar metrics to keep logs focused on leaks (e.g., > 10 KB) + if tensor_bytes > 10240: + size_kb = tensor_bytes / 1024 + shape_str = str(list(obj.shape)) + dtype_str = str(obj.dtype).replace("torch.", "") + + main_app_logger.info( + f"{size_kb:>10.1f} KiB | {shape_str:<25} | {dtype_str:<15}" + ) + except Exception: + # Guard against objects being destroyed concurrently during the scan loop + pass + + total_cpu_tensor_mb = total_cpu_tensor_bytes / (1024 * 1024) + main_app_logger.info( + "-" * 80, + ) + main_app_logger.info( + f"Total Live CPU Tensor Count: {live_tensor_count}", + ) + main_app_logger.info( + f"Total Live CPU Tensor Memory: {total_cpu_tensor_mb:.2f} MB", + ) + main_app_logger.info( + "=" * 60, + ) + + # def print_active_gpu_tensor_memory(self): + # main_app_logger.info( + # "=" * 60, + # ) + # main_app_logger.info( + # "\033[95m[VRAM INVESTIGATOR] Scanning Active GPU Tensors with Sources:\033[0m" + # ) + + # # Capture the exact C++ memory registry structure + # try: + # raw_snapshot = torch.cuda.memory._snapshot() + # segments = raw_snapshot.get("segments", []) + # except Exception: + # segments = [] + # main_app_logger.info( + # "[WARN] Failed parsing native memory context snapshot.", + # ) + + # # Map raw block storage memory addresses straight to Python frames + # addr_to_source = {} + # for seg in segments: + # for block in seg.get("blocks", []): + # if block.get("state") == "active_allocated": + # addr = block.get("address") + # history = block.get("history", []) + # if history: + # # Inspect the deepest frame in the allocation stack + # frame = history[-1] + # filename = frame.get("filename", "Unknown") + # lineno = frame.get("line", 0) + # func_name = frame.get("name", "unknown_func") + # addr_to_source[addr] = f"{filename}:{lineno} ({func_name})" + + # # Scan the heap via GC and resolve actual backing storage layers + # leaked_tensors = [] + # total_detected_bytes = 0 + + # for obj in gc.get_objects(): + # try: + # if torch.is_tensor(obj) and obj.is_cuda: + # t_bytes = obj.element_size() * obj.nelement() + # total_detected_bytes += t_bytes + # if t_bytes > 0: + # leaked_tensors.append(obj) + # except Exception: + # pass + + # obj = None # Break tracking register references + + # for i, tensor in enumerate(leaked_tensors): + # t_bytes = tensor.element_size() * tensor.nelement() + + # # --- THE FIX: Extract the address of the underlying storage block --- + # try: + # if hasattr(tensor, "untyped_storage"): + # storage_addr = tensor.untyped_storage().data_ptr() + # elif hasattr(tensor, "storage") and tensor.storage(): + # storage_addr = tensor.storage().data_ptr() + # else: + # storage_addr = tensor.data_ptr() + # except Exception: + # storage_addr = tensor.data_ptr() + + # # Extract absolute code trace locations from our snapshot dictionary + # source_loc = addr_to_source.get( + # storage_addr, "Unknown Native C++ Allocation / Model Context" + # ) + + # main_app_logger.info( + # f" > Tensor {i:3d} | Shape: {str(list(tensor.shape)):<18} | " + # f"Size: {t_bytes / 1024**2:6.2f} MB | Source: \033[93m{source_loc}\033[0m" + # ) + + # del leaked_tensors + # main_app_logger.info( + # f"[VRAM INVESTIGATOR] Total Live Tensor Memory: {total_detected_bytes / 1024**2:.2f} MB" + # ) + # gc.collect() + # if ( + # torch.cuda.is_available() + # ): # self.device_input == "cuda" and torch.cuda.is_available(): + # torch.cuda.synchronize() + # torch.cuda.empty_cache() # Flush the pool BEFORE the guard snapshots it + + # def print_active_shared_memory(self): + # main_app_logger.info( + # "=" * 60, + # ) + # main_app_logger.info( + # "\033[96m[SHM INVESTIGATOR] Scanning Active OS Shared Memory Filesystem Tables:\033[0m" + # ) + # try: + # shm_dir = Path("/dev/shm") + # if shm_dir.exists(): + # # Extract and inventory all live POSIX memory segments allocated right now + # shm_files = [ + # f + # for f in shm_dir.iterdir() + # if f.is_file() + # and not f.name.startswith("sem.") + # and not f.name.startswith("psm") + # ] + # main_app_logger.info( + # f" > Discovered Live OS-Mapped Memory Nodes: {len(shm_files)}" + # ) + + # for f_path in shm_files: + # try: + # f_stat = f_path.stat() + # size_mb = f_stat.st_size / (1024 * 1024) + + # # Highlight the files using visual color anchors for scannability + # main_app_logger.info( + # f" ⚠️ \033[93m[ALIVE SHM NODE]\033[0m File: {f_path.name:<25} | Size: {size_mb:7.2f} MB" + # ) + # except Exception: + # pass + # else: + # main_app_logger.info( + # " [ERROR] /dev/shm runtime directory is inaccessible on this host context." + # ) + # except Exception as e: + # main_app_logger.info( + # f" [WARN] Kernel inspection execution pass failed: {e}" + # ) + + # # gc.collect() + # # if torch.cuda.is_available(): + # # torch.cuda.synchronize() + # # torch.cuda.empty_cache() # Flush the pool BEFORE the guard snapshots it + + # def calculate_leaked_memory( + # self, device, video_name, start_allocated, start_reserved + # ): + # _testMethodName = f"{video_name}_{device}" + # main_app_logger.info("=" * 60) + # max_allowed_leak = 1024 * 1024 # 1MB buffer allowance + # msg = "[LEAKAGE INVESTIGATOR] Scanning memory allocations:\n" + # if device == "gpu" and torch.cuda.is_available(): + # # torch.cuda.synchronize() + + # end_allocated = torch.cuda.memory_allocated(0) + # end_reserved = torch.cuda.memory_reserved(0) + + # leak_allocated = end_allocated - start_allocated + # leak_reserved = end_reserved - start_reserved + # # max_allowed_leak = 1024 * 1024 # 1MB buffer allowance + + # if leak_allocated > max_allowed_leak: + # msg += ( + # f"\n🔴 GPU Memory Leak Detected for {_testMethodName}!\n" + # f"Check for dangling references or missing 'del' statements\n\n" + # ) + # # else: + # # msg = "\n" + + # msg += ( + # f"\tPre-Setup Allocation: {start_allocated / 1024**2:.2f} MB\n" + # f"\tPost-Teardown Allocation: {end_allocated / 1024**2:.2f} MB\n" + # f"\tNet Leaked VRAM: {leak_allocated / 1024**2:.2f} MB\n" + # f"\tNet Leaked Reserved Blocks: {leak_reserved / 1024**2:.2f} MB" + # ) + + # # main_app_logger.info(msg, ) + # else: + # process = psutil.Process(os.getpid()) + # end_rss = process.memory_info().rss + + # # start_allocated and start_reserved must be populated with baseline RSS in each_test_setup + # leak_rss = end_rss - start_allocated + + # if leak_rss > max_allowed_leak: + # msg += ( + # f"\n🔴 CPU Memory Leak Detected for {_testMethodName}!\n" + # f"Check for dangling references or missing 'del' statements\n\n" + # ) + # # else: + # # msg = "\n" + + # msg += ( + # f" Pre-Setup Host RAM Allocation: {start_allocated / 1024**2:.2f} MB\n" + # ) + # msg += f" Post-Teardown Host RAM Allocation: {end_rss / 1024**2:.2f} MB\n" + # msg += f" Net Leaked Host System Memory: {leak_rss / 1024**2:.2f} MB" + # main_app_logger.info(msg) + # main_app_logger.info("=" * 60) + + # def diagnostic_profiler(self, device, video_name, start_allocated, start_reserved): + # _testMethodName = f"{video_name}_{device}" + # self.calculate_leaked_memory( + # device, video_name, start_allocated, start_reserved + # ) + + # # main_app_logger.info("=" * 60, ) + # # main_app_logger.info( + # # f"\n\033[95m[DIAGNOSTICS] Starting Automated Leak Analysis for {_testMethodName}...\033[0m", + # # , + # # ) + + # # 1. Run objgraph to inspect the Python object reference trees before clearing containers + # # try: + # # main_app_logger.info( + # # "\033[94m[DIAGNOSTICS] Python Object Registry Standings:\033[0m", + # # ) + # # objgraph.show_most_common_types(limit=10) + + # # Check if the metrics arrays are pinning references inside memory + # # for tracker_attr in ["all_preds", "all_targets"]: + # # if hasattr(self, tracker_attr): + # # tgt_list = getattr(self, tracker_attr) + # # if len(tgt_list) > 0: + # # graph_path = f"/tmp/backrefs_{tracker_attr}_{device}.png" + # # main_app_logger.info( + # # f"\033[93m[WARN] '{tracker_attr}' contains {len(tgt_list)} entries. Generating reference graph to: {graph_path}\033[0m" + # # ) + # # objgraph.show_backrefs( + # # [tgt_list], max_depth=3, filename=graph_path + # # ) + # # except ImportError: + # # main_app_logger.info( + # # "\033[91m[DIAGNOSTICS] 'objgraph' package missing. Skipping reference chain mapping. (pip install objgraph)\033[0m" + # # ) + + # # 2. Dump PyTorch Memory Snapshot before clearing VRAM caches + # if device == "gpu" and torch.cuda.is_available(): + # try: + # # snapshot_path = f"/tmp/vram_leak_profile_{self._testMethodName}.pickle" + # snapshot_path = self.output_path.replace(".mp4", "_vram_profile.html") + # torch.cuda.memory._dump_snapshot(snapshot_path) + # main_app_logger.info( + # f"\033[92m[DIAGNOSTICS] VRAM Snapshot Trace generated successfully: {snapshot_path}\033[0m" + # ) + # main_app_logger.info( + # "\033[92m--> Upload this file to https://pytorch.org to inspect leak allocation stacks.\033[0m" + # ) + + # with open(snapshot_path, "rb") as f: + # snapshot = pickle.load(f) + + # # Print an HTML visualization path map of the allocations + # html_timeline = memory_viz.trace_plot(snapshot) + # html_path = snapshot_path.replace(".pickle", ".html") + # with open(html_path, "w", encoding="utf-8") as f: + # f.write(html_timeline) + # except Exception as e: + # main_app_logger.info( + # f"\033[91m[DIAGNOSTICS] Failed to generate PyTorch memory snapshot: {e}\033[0m" + # ) + + # def assess_memory(self, device, video_name, start_allocated, start_reserved): + # gc.collect() + + # surviving_arrays = [ + # obj + # for obj in gc.get_objects() + # # if isinstance(obj, np.ndarray) and obj.size >= 1 #(1920 * 1080) + # if type(obj) is np.ndarray and obj.ndim > 0 + # ] + # analyze_tracemalloc_snapshot() + + # main_app_logger.info( + # f"[DIAGNOSTICS] Found {len(surviving_arrays)} uncollected large arrays alive in RAM filesystem." + # ) + + # for i, arr in enumerate(surviving_arrays): + # referrers = gc.get_referrers(arr) + # main_app_logger.info( + # f" > Array {i} | Shape: {arr.shape} | Pinned by {len(referrers)} references:" + # ) + # for ref in referrers: + # if isinstance(ref, dict): + # main_app_logger.info( + # f" - Dict Keys holding this array: {list(ref.keys())[:4]}" + # ) + # else: + # main_app_logger.info( + # f" - Variable holding object layout: {type(ref)}", + # ) + # # ─────────────────────────────────────── + + # # analyze_tracemalloc_snapshot() + + # if device == "gpu": + # self.print_active_gpu_tensor_memory() + # else: + # # --- CPU RAM PATH METRICS --- + # # main_app_logger.info("=" * 60, ) + # # main_app_logger.info("\n[RAM INVESTIGATOR] Scanning Host CPU Memory Standings:", ) + # # process = psutil.Process(os.getpid()) + # # current_rss = process.memory_info().rss / (1024 * 1024) # Host RAM in MB + # # main_app_logger.info(f" > Current Process Resident Set Size (RSS): {current_rss:.2f} MB", ) + # self.print_active_cpu_tensor_memory() + + # self.print_active_shared_memory() + + # # AUTOMATED DIAGNOSTIC PROFILING PHASE (TRIGGERED ON TEST TEARDOWN) + # self.diagnostic_profiler(device, video_name, start_allocated, start_reserved) + + def _print_gpu_mem(self): + if self.device_input == "cuda" and torch.cuda.is_available(): + # Memory currently used by tensors + allocated = torch.cuda.memory_allocated(0) / 1024**2 + # Total memory reserved by PyTorch (the "Pool") + reserved = torch.cuda.memory_reserved(0) / 1024**2 + main_app_logger.info(f"\tAllocated: {allocated:0.2f} MB") + main_app_logger.info(f"\tReserved: {reserved:0.2f} MB") + else: + main_app_logger.info("\tCUDA not available.") + + def get_frame_gt_boxes(self, abs_frame_num, gt_sequence, gt_boxes): + if abs_frame_num - 1 >= len(gt_sequence): + return np.empty((0, 4), dtype=np.float32) + + gt_seq = int(gt_sequence[abs_frame_num - 1]) + if gt_seq == abs_frame_num: + gt_b_xywh = gt_boxes[abs_frame_num - 1] + gt_b = [ + gt_b_xywh[0], + gt_b_xywh[1], + min(gt_b_xywh[0] + gt_b_xywh[2], target_width - 1), + min(gt_b_xywh[1] + gt_b_xywh[3], target_height - 1), + ] + # Force a 2D matrix shape layout of (1, 4) even for a single box + target_boxes_array = np.array([gt_b], dtype=np.float32).reshape(-1, 4) + # target_labels_array = np.array([0], dtype=np.int64) + else: + # gt_b = [0,0,0,0] + target_boxes_array = np.empty((0, 4), dtype=np.float32) + + return target_boxes_array + + def update_eval_stats(self, metadata_or_bbs, target_boxes_array): + """ + metadata_or_bbs: In 640 (resize) space + """ + + # gt_seq = int(gt_sequence[abs_frame_num - 1]) + # if gt_seq == abs_frame_num: + # gt_b_xywh = gt_boxes[abs_frame_num - 1] + # gt_b = [ + # gt_b_xywh[0], + # gt_b_xywh[1], + # min(gt_b_xywh[0] + gt_b_xywh[2], target_width - 1), + # min(gt_b_xywh[1] + gt_b_xywh[3], target_height - 1), + # ] + # # Force a 2D matrix shape layout of (1, 4) even for a single box + # target_boxes_array = np.array([gt_b], dtype=np.float32).reshape( + # -1, 4 + # ) + # # target_labels_array = np.array([0], dtype=np.int64) + # else: + # # gt_b = [0,0,0,0] + # target_boxes_array = np.empty((0, 4), dtype=np.float32) + # target_labels_array = np.empty((0,), dtype=np.int64) + + bbs = [] + scores = [] + labels = [] + if isinstance(metadata_or_bbs, dict): + for _, v in metadata_or_bbs.items(): + labels.append(0) + scores.append(float(v["bbox"]["object_det"]["confidence"])) + bbox = [ + v["bbox"]["x"], + v["bbox"]["y"], + v["bbox"]["width"], + v["bbox"]["height"], + ] + # x, y, w, h = scale_bbox_xywh( + # bbox, + # self.resize_w, + # self.resize_h, + # targetW=target_width, + # targetH=target_height, + # ) + # x2 = min(x + w, target_width - 1) + # y2 = min(y + h, target_height - 1) + + x, y, x2, y2 = scale_bbox( + bbox, + self.resize_w, + self.resize_h, + targetW=target_width, + targetH=target_height, + in_format="xywh", + out_format="xyxy", + ) + + bbs.append([x, y, x2, y2]) + else: + for bbox in metadata_or_bbs: + labels.append(0) + scores.append(0.9) + x, y, x2, y2 = scale_bbox( + bbox, + self.resize_w, + self.resize_h, + targetW=target_width, + targetH=target_height, + in_format="xyxy", + out_format="xyxy", + ) + bbs.append([x, y, x2, y2]) + + # Convert to array, then explicitly reshape to enforce the 2D constraint + pred_boxes_array = np.array(bbs, dtype=np.float32).reshape(-1, 4) + pred_scores_array = np.array(scores, dtype=np.float32) + # pred_labels_array = np.array(labels, dtype=np.int64) + # preds = { + # "boxes": pred_boxes_array, # Guaranteed to be (N, 4) even if N=0 + # "scores": pred_scores_array, + # "labels": pred_labels_array, + # } + # ] + # self.all_preds.append(preds) + # self.all_targets.append(targets) + # metric_engine.update(preds, targets) + self.evaluator.update_frame( + pred_boxes_array, pred_scores_array, target_boxes_array + ) + + del pred_boxes_array, pred_scores_array + + # COMPARE SNAPSHOTS -------------------------------------------- + def capture_state_snapshot(self): + """Captures a metadata-only registry mapping of all active keys and values.""" + snapshot = {} + for attr, val in list(self.__dict__.items()): + if val is None: + type_str = "NoneType" + details = None + else: + type_str = val.__class__.__name__ + + # Extract detailed allocation size/state contexts depending on type + if type_str == "Tensor": + details = f"shape={list(val.shape)}, device={val.device}, dtype={val.dtype}" + elif type_str == "ndarray": + details = f"shape={list(val.shape)}, dtype={val.dtype}" + elif type_str in ("list", "dict", "set", "tuple"): + try: + details = f"len={len(val)}" + except Exception: + details = "uncountable" + elif type_str in ("Thread", "Process", "DummyProcess"): + try: + details = f"alive={val.is_alive()}" + except Exception: + details = "unknown" + elif type_str in ("Lock", "_RLock"): + try: + details = f"locked={val.locked()}" + except Exception: + details = "unknown" + elif type_str == "Queue": + try: + details = f"approx_qsize={val.qsize()}" + except Exception: + details = "uncountable" + else: + # Capture values for strings, ints, bools, etc. + try: + details = ( + str(val)[:50] + if type_str in ("str", "int", "bool", "float") + else hex(id(val)) + ) + except Exception: + details = "unresolved_pointer" + + snapshot[attr] = {"type": type_str, "details": details} + return snapshot + + def print_lifecycle_delta( + self, + before_snapshot, + after_snapshot, + keys_to_skip=default_attr_keys, + return_keys=False, + ): + """Compares snapshots and outputs a precise list of elements that must be evicted.""" + main_app_logger.info("=" * 80) + main_app_logger.info( + " RESOURCE LIFECYCLE LIFESPAN ANALYSIS (BEFORE START vs AFTER STOP)" + ) + main_app_logger.info("=" * 80) + + # 1. New keys initialized during execution + new_keys = [ + key + for key in sorted( + list(set(after_snapshot.keys()) - set(before_snapshot.keys())) + ) + if key not in keys_to_skip + ] + + main_app_logger.info( + f"[+] NEW ARTIFACTS GENERATED DURING THE RUN ({len(new_keys)} keys found):" + ) + if new_keys: + for key in new_keys: + main_app_logger.info( + f" └─ {key} -> Type: {after_snapshot[key]['type']} ({after_snapshot[key]['details']})" + ) + main_app_logger.info( + " ⚠️ ACTION REQUIRED: Must be deleted or unlinked via delattr()." + ) + else: + main_app_logger.info( + " None! (No new top-level attributes were registered)." + ) + + # 2. Key values modified, grown, or mutated during execution + mutated_keys = [] + static_keys = [] + common_keys = set(before_snapshot.keys()) & set(after_snapshot.keys()) + for key in sorted(list(common_keys)): + if (key not in keys_to_skip) and ( + before_snapshot[key] != after_snapshot[key] + ): + if after_snapshot[key]["details"] not in [None, "len=0"]: + mutated_keys.append(key) + elif ( + (key not in keys_to_skip) + and (before_snapshot[key] == after_snapshot[key]) + and getattr(self, key).__class__.__name__ != "method" + ): + static_keys.append(key) + + main_app_logger.info( + f"[Δ] RETAINED KEYS MUTATED OR GROWN DURING THE RUN ({len(mutated_keys)} keys found):" + ) + if mutated_keys: + for key in mutated_keys: + b_meta = before_snapshot[key] + a_meta = after_snapshot[key] + main_app_logger.info(f" └─ {key}") + main_app_logger.info( + f" ├── Before Start: {b_meta['type']} ({b_meta['details']})" + ) + main_app_logger.info( + f" └── After Stop: {a_meta['type']} ({a_meta['details']})" + ) + main_app_logger.info( + " ⚠️ ACTION REQUIRED: Revert back to baseline state, call .clear(), or set to None." + ) + else: + main_app_logger.info( + " None! (All original tracking keys remained perfectly static)." + ) + + # main_app_logger.info(f"\n[Δ] RETAINED STATIC KEYS DURING THE RUN ({len(static_keys)} keys found):") + # if static_keys: + # for key in static_keys: + # b_meta = before_snapshot[key] + # main_app_logger.info(f" └─ {key}") + # main_app_logger.info(f" ├── Before Start: {b_meta['type']} ({b_meta['details']})") + # main_app_logger.info(f" ⚠️ ACTION REQUIRED: Possibly remove because it has not changed.") + main_app_logger.info("=" * 80) + + if return_keys: + # return new_keys, static_keys + return new_keys, mutated_keys, static_keys + + def stop_blueprint_executor(self, new_keys, mutated_keys): + """Dynamically creates a blueprint of all changes and liquidates them safely.""" + main_app_logger.info("=" * 80) + main_app_logger.info(" DYNAMIC TEARDOWN COMPILER & RESOURCE EVICTION ENGINE") + main_app_logger.info( + "=" * 80, + ) + + # keys_to_skip = [ + # "_is_stopped", + # "active", + # "status", + # "baseline_before_start", + # ] + + # 1. Identify dynamically added attributes (Must be destroyed / unlinked) + new_keys = set( + new_keys + ) # set(state_before_stop.keys()) - set(before_snapshot.keys()) + + # 2. Identify baseline attributes that grew or mutated (Must be reset) + mutated_keys = set(mutated_keys) + # mutated_keys = set() + # for key in (set(before_snapshot.keys()) & set(state_before_stop.keys())): + # if before_snapshot[key] != state_before_stop[key] and key not in keys_to_skip: + # mutated_keys.append(key) if isinstance(mutated_keys, list) else mutated_keys.add(key) + + # --- PHASE 1: TARGETED HARDWARE DEALLOCATIONS (ORDER SENSITIVE) --- + # First, handle background threads and OS processes before severing structural arrays + all_targeted_keys = ( + new_keys | mutated_keys + ) # [key for key in list(new_keys | mutated_keys)] # if key not in keys_to_skip] + + # A. Prioritize process and thread termination hooks + for key in list(all_targeted_keys): + val = getattr(self, key, None) + if val is None: + continue + type_name = val.__class__.__name__ + + if type_name in ("Thread", "Process", "DummyProcess"): + main_app_logger.info( + f" [RECONCILING] Terminating unmanaged runtime worker: {key}" + ) + # try: + # if hasattr(val, "is_alive") and val.is_alive(): + # if hasattr(val, "terminate"): val.terminate() + # val.join(timeout=0.5) + # except Exception: pass + self.stop_thread(val) + + elif type_name == "ThreadPoolExecutor": + main_app_logger.info( + f" [RECONCILING] Shutting down concurrent thread pool: {key}" + ) + try: + val.shutdown(wait=True, cancel_futures=True) + except Exception: + pass + + # B. Decouple IPC Multi-processing Queues next (Non-blocking) + for key in list(all_targeted_keys): + val = getattr(self, key, None) + if val is None: + continue + if val.__class__.__name__ == "Queue": + main_app_logger.info( + f" [RECONCILING] Draining and closing IPC channel: {key}" + ) + try: + while not val.empty(): + val.get_nowait() + except Exception: + pass + try: + val.close() + val.cancel_join_thread() + except Exception: + pass + + # C. Unmap Shared Memory nodes from /dev/shm + # for key in list(all_targeted_keys): + # val = getattr(self, key, None) + # if val is None: continue + # type_name = val.__class__.__name__ + # if "shm" in key.lower() or type_name in ("SharedMemory", "SharedMemoryManager"): + # main_app_logger.info(f" [RECONCILING] Unlinking OS Shared Memory layout node: {key}") + # if type_name == "list": + # for item in val: + # if item.__class__.__name__ == "tuple": + # for i in item: + # if i.__class__.__name__ == "Event": + # try: + # if hasattr(i, "_handle"): + # i._handle.close() + # except Exception: + # pass + # i = None + # else: + # i = None + + # try: + # if hasattr(item, "close"): + # item.close() + # item.unlink() + # else: + # item = None + # except Exception: + # # pass + # traceback.print_exc() + # elif item is not None: + # try: + # item.close() + # item.unlink() + # except Exception: + # # pass + # traceback.print_exc() + # else: + # try: + # val.close() + # val.unlink() + # except Exception: + # # pass + # traceback.print_exc() + + # --- PHASE 2: FLUSHING AND UNLINKING OBJECT REFERENCES --- + # Now that the background hardware loops are dead, scrub the attributes + for key in sorted(list(all_targeted_keys)): + val = getattr(self, key, None) + if val is None: + continue + type_name = val.__class__.__name__ + + # If it's a new attribute, wipe its internal space and erase it completely + if key in new_keys: + if type_name == "Tensor": + try: + val.data = torch.empty(0, device=val.device) + except Exception: + pass + elif isinstance(val, dict): + val.clear() + elif isinstance(val, list): + val.clear() + elif type_name == "GpuMat": + try: + val.release() + except Exception: + pass + + # Permanently strip the attribute from the object namespace + try: + delattr(self, key) + except AttributeError: + pass + + # If it was a mutated pre-existing baseline key, reset it to its origin baseline + elif key in mutated_keys: + if isinstance(val, (list, dict, set)): + try: + val.clear() + except Exception: + pass + # else: + # # Revert primitive counters or strings back to their exact original baseline state + # orig_type = before_snapshot[key]["type"] + elif isinstance(val, None): # orig_type == "NoneType": + setattr(self, key, None) + elif isinstance(val, int): # orig_type == "int": + setattr(self, key, 0) + elif isinstance(val, bool): # orig_type == "bool": + setattr(self, key, False) + elif isinstance(val, str): # orig_type == "str": + setattr(self, key, "") + + # --- PHASE 3: FINAL HOST HEAP FLUSH --- + # import gc + + gc.collect() + if torch.cuda.is_available(): + torch.cuda.synchronize() + torch.cuda.empty_cache() + + main_app_logger.info("=" * 80) + main_app_logger.info( + " [SUCCESS] Dynamic Blueprint Execution Complete. Clean state achieved." + ) + main_app_logger.info("=" * 80) + + # DEBUG FUNCTIONS -------------------------------------------- + def debug_save_mask(self, frame_source, frame_num, rois=None, gt_boxes=None): + debug_dir = self.result_dir / "debug_stages" / self._testMethodName / "mask" + debug_dir.mkdir(parents=True, exist_ok=True) + + save_path = ( + debug_dir / f"frame_{frame_num:04d}_mask.jpg" + ) # f"mask_{frame_num:04d}.jpg" + + # cv2.imwrite( + # # str(stage_debug_dir / f"frame_{f_num:04d}_stage6_threshold.jpg"), + # str(stage_debug_dir / f"frame_{self.frame_count_target:04d}_stagerois_merged.jpg"), + # display_frame, + # ) + + if frame_num > self.config.DEBUG_FRAME_LIMIT: + return + + # # Download or copy the data + # if hasattr(frame_source, "download"): + # img_cpu = frame_source.download() + # elif torch.is_tensor(frame_source): + # # .contiguous() fixes the horizontal "shredding"/static look + # temp = frame_source.squeeze(0) if frame_source.ndim == 4 else frame_source + # img_cpu = temp.permute(1, 2, 0).contiguous().cpu().numpy() + # else: + # # For numpy arrays (like your pinned memory), ensure memory is linear + # img_cpu = np.ascontiguousarray(frame_source) + + # # Fix Visibility (Normalization) + # # If float, scale to 0-255. If uint8, leave as is to avoid "neon" colors. + # if img_cpu.dtype != np.uint8: + # if img_cpu.max() <= 1.0: + # img_cpu = (img_cpu * 255).clip(0, 255).astype(np.uint8) + # else: + # img_cpu = img_cpu.astype(np.uint8) + + # Download/Copy the frame + if torch.is_tensor(frame_source): + # .contiguous() is CRITICAL here to fix the "shredded" look + temp = frame_source.squeeze(0) if frame_source.ndim == 4 else frame_source + # img_cpu = temp.permute(1, 2, 0).contiguous().cpu().numpy() + img_cpu = temp.contiguous().cpu().numpy() + img_cpu = cv2.cvtColor(img_cpu, cv2.COLOR_RGB2BGR) + elif hasattr(frame_source, "download"): + img_cpu = frame_source.download() + else: + img_cpu = np.ascontiguousarray(frame_source) + + # Fix Shape: restore spatial grid if flattened + if img_cpu.ndim == 3 and img_cpu.shape[0] == 1: + img_cpu = img_cpu.reshape((self.resize_h, self.resize_w, 3)) + + # Fix Visibility: ONLY multiply if it's actually floating point + # If uint8 is multiplied by 255, it wraps around and creates "neon" colors + if img_cpu.dtype != np.uint8: + if img_cpu.max() <= 1.0: + img_cpu = (img_cpu * 255).clip(0, 255).astype(np.uint8) + else: + img_cpu = img_cpu.astype(np.uint8) + + # Color Space: Standardize to BGR for imwrite + if len(img_cpu.shape) != 3: + img_cpu = cv2.cvtColor(img_cpu, cv2.COLOR_GRAY2BGR) + + h_img, w_img = img_cpu.shape[:2] + scale_x = float(w_img) / self.frame_width + scale_y = float(h_img) / self.frame_height + if gt_boxes is not None: + # Factor for converting 8K (original) bb dimensions to display dimensions + # disp_w, disp_h = inf_data["mask"].shape[:2] if hasattr(inf_data["mask"], "shape") else inf_data["mask"].size() + # scale_display_ox = disp_w / self.frame_width + # scale_display_oy = disp_h / self.frame_height + + img_cpu = get_bb_overlay( + img_cpu, + gt_boxes, + (scale_x, scale_y), + (w_img, h_img), + color=(0, 255, 0), # green + ) + + # Draw 8K Boxes (Scaled down) + if rois is not None and len(rois) > 0: + boxes = rois.cpu().tolist() if torch.is_tensor(rois) else rois + for box in boxes: + x1, y1, x2, y2 = [ + # int(box[0] * scale_x), + # int(box[1] * scale_y), + # int(box[2] * scale_x), + # int(box[3] * scale_y), + max(0, int(box[0] * scale_x)), + max(0, int(box[1] * scale_y)), + min(w_img - 1, int(box[2] * scale_x)), + min(h_img - 1, int(box[3] * scale_y)), + ] + cv2.rectangle(img_cpu, (x1, y1), (x2, y2), (0, 0, 255), 2) + + # Save to disk + cv2.imwrite(str(save_path), img_cpu) + + def debug_save_img_roi(self, frame_source, bbs_full_res, frame_num, gt_boxes=None): + debug_dir = self.result_dir / "debug_stages" / self._testMethodName / "img_roi" + debug_dir.mkdir(parents=True, exist_ok=True) + + # out_filename = str(debug_dir / f"analysis_{frame_num:04d}.jpg") + save_path = debug_dir / f"frame_{frame_num:04d}_analysis.jpg" + + if frame_num > self.config.DEBUG_FRAME_LIMIT: + return + + # Download/Copy the frame + if torch.is_tensor(frame_source): + # .contiguous() is CRITICAL here to fix the "shredded" look + temp = frame_source.squeeze(0) if frame_source.ndim == 4 else frame_source + img_cpu = temp.permute(1, 2, 0).contiguous().cpu().numpy() + elif hasattr(frame_source, "download"): + img_cpu = frame_source.download() + else: + img_cpu = np.ascontiguousarray(frame_source) + + # Fix Shape: restore spatial grid if flattened + if img_cpu.ndim == 3 and img_cpu.shape[0] == 1: + img_cpu = img_cpu.reshape((self.resize_h, self.resize_w, 3)) + + # Fix Visibility: ONLY multiply if it's actually floating point + # If uint8 is multiplied by 255, it wraps around and creates "neon" colors + if img_cpu.dtype != np.uint8: + if img_cpu.max() <= 1.0: + img_cpu = (img_cpu * 255).clip(0, 255).astype(np.uint8) + else: + img_cpu = img_cpu.astype(np.uint8) + + # Color Space: Standardize to BGR for imwrite + if len(img_cpu.shape) != 3: + img_cpu = cv2.cvtColor(img_cpu, cv2.COLOR_GRAY2BGR) + + # Draw 8K Boxes (Scaled down) + h_img, w_img = img_cpu.shape[:2] + scale_x = w_img / self.frame_width + scale_y = h_img / self.frame_height + + if gt_boxes is not None: + # Factor for converting 8K (original) bb dimensions to display dimensions + # disp_w, disp_h = inf_data["mask"].shape[:2] if hasattr(inf_data["mask"], "shape") else inf_data["mask"].size() + # scale_display_ox = disp_w / self.frame_width + # scale_display_oy = disp_h / self.frame_height + + img_cpu = get_bb_overlay( + img_cpu, + gt_boxes, + (scale_x, scale_y), + (w_img, h_img), + color=(0, 255, 0), # green + ) + + if bbs_full_res is not None: + boxes = ( + bbs_full_res.cpu().tolist() + if torch.is_tensor(bbs_full_res) + else bbs_full_res + ) + # Annotate Box to image shape + for box in boxes: + x1, y1, x2, y2 = [ + max(0, int(box[0] * scale_x)), + max(0, int(box[1] * scale_y)), + min(w_img - 1, int(box[2] * scale_x)), + min(h_img - 1, int(box[3] * scale_y)), + ] + img_cpu = cv2.rectangle(img_cpu, (x1, y1), (x2, y2), (0, 0, 255), 2) + + cv2.imwrite(str(save_path), img_cpu) + + def debug_save_crops(self, cropped_batch, frame_num): + """Saves the first 5 crops of a batch to the results directory.""" + debug_dir = self.result_dir / "debug_stages" / self._testMethodName / "crops" + # debug_dir = self.result_dir / "debug_stages" / self._testMethodName + debug_dir.mkdir(parents=True, exist_ok=True) + + # Only save for the first self.config.DEBUG_FRAME_LIMIT frames to avoid disk bloat + if frame_num > self.config.DEBUG_FRAME_LIMIT: + return + + for i, crop in enumerate(cropped_batch[: self.config.DEBUG_FRAME_LIMIT]): + # Convert GPU Tensor [C, H, W] -> NumPy [H, W, C] + if torch.is_tensor(crop): + # Reverse normalization (* 255) and permute to BGR + # img = (crop.squeeze(0).permute(1, 2, 0) * 255).byte().cpu().numpy() + temp = crop.squeeze(0) if crop.ndim == 4 else crop + # Flip the color channels from RGB to BGR before any extraction utilities run + # Flips only the first axis (channels) from [0, 1, 2] to [2, 1, 0] + temp = torch.flip(temp, dims=[0]) + img = temp.permute(1, 2, 0).contiguous().cpu().numpy() + # img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR) + else: + img = crop + + if img.dtype != np.uint8: + if img.max() <= 1.0: + img = (img * 255).clip(0, 255).astype(np.uint8) + else: + img = img.astype(np.uint8) + + cv2.imwrite(str(debug_dir / f"frame_{frame_num}_crop_{i}.jpg"), img) + + def debug_save_img(self, frame_source, frame_num): + debug_dir = self.result_dir / "debug_stages" / self._testMethodName / "img" + debug_dir.mkdir(parents=True, exist_ok=True) + + if frame_num > self.config.DEBUG_FRAME_LIMIT: + return + + # Download/Copy the frame + if torch.is_tensor(frame_source): + # .contiguous() is CRITICAL here to fix the "shredded" look + temp = frame_source.squeeze(0) if frame_source.ndim == 4 else frame_source + img_cpu = temp.permute(1, 2, 0).contiguous().cpu().numpy() + elif hasattr(frame_source, "download"): + img_cpu = frame_source.download() + else: + img_cpu = np.ascontiguousarray(frame_source) + + # Fix Shape: restore spatial grid if flattened + if img_cpu.ndim == 3 and img_cpu.shape[0] == 1: + img_cpu = img_cpu.reshape((self.resize_h, self.resize_w, 3)) + + # Fix Visibility: ONLY multiply if it's actually floating point + # If uint8 is multiplied by 255, it wraps around and creates "neon" colors + if img_cpu.dtype != np.uint8: + if img_cpu.max() <= 1.0: + img_cpu = (img_cpu * 255).clip(0, 255).astype(np.uint8) + else: + img_cpu = img_cpu.astype(np.uint8) + + # Color Space: Standardize to BGR for imwrite + if len(img_cpu.shape) == 3: + pass + else: + img_cpu = cv2.cvtColor(img_cpu, cv2.COLOR_GRAY2BGR) + + cv2.imwrite(str(debug_dir / f"analysis_{frame_num:04d}.jpg"), img_cpu) diff --git a/fastapi/tests/metrics.py b/fastapi/tests/metrics.py new file mode 100644 index 0000000..5963115 --- /dev/null +++ b/fastapi/tests/metrics.py @@ -0,0 +1,258 @@ +import torch + + +class DeviceAgnosticOnTheFlyEvaluator: + def __init__(self, device="cpu"): + # device will be "cpu" or "cuda" / "gpu" depending on what pytest passes + self.device = "cuda" if "gpu" in str(device).lower() else "cpu" + + iou_range = [0.10, 0.95] + self.num_steps = int(round(((iou_range[1] - iou_range[0]) / 0.05) + 1, 0)) + self.iou_thresholds = torch.linspace( + iou_range[0], iou_range[1], self.num_steps, device=self.device + ) + + self.global_scores = [] + self.global_matches = [] + self.total_gt_count = 0 + self.total_gt_hit_lenient = 0 # GT boxes hit by ANY prediction with IoU >= 0.10 + + @torch.inference_mode() + def update_frame(self, pred_boxes, pred_scores, gt_boxes): + """ + Accepts bounding boxes and scores as arrays or tensors. + Automatically migrates inputs to the targeted CPU or GPU sandbox backend. + """ + # Ensure all incoming payloads are safely handled as PyTorch tensors on the target device + pred_boxes = torch.as_tensor( + pred_boxes, dtype=torch.float32, device=self.device + ) + pred_scores = torch.as_tensor( + pred_scores, dtype=torch.float32, device=self.device + ) + gt_boxes = torch.as_tensor(gt_boxes, dtype=torch.float32, device=self.device) + + # Filter invalid ground truth placeholders (-1) + if gt_boxes.numel() > 0: + valid_mask = ~torch.all(gt_boxes == -1, dim=1) + gt_boxes = gt_boxes[valid_mask] + + num_gt_in_frame = gt_boxes.shape[0] + self.total_gt_count += num_gt_in_frame + if pred_boxes.shape[0] == 0: + return + + # Sort frame predictions by confidence score descending + pred_scores, sort_idx = torch.sort(pred_scores, descending=True) + pred_boxes = pred_boxes[sort_idx] + + # Allocate matching registers for this frame + frame_matches = torch.zeros( + (pred_boxes.shape[0], self.num_steps), dtype=torch.int32, device=self.device + ) + + if num_gt_in_frame > 0: + # Vectorized Broadcast IoU Calculation + preds_exp = pred_boxes.unsqueeze(1) # (N, 1, 4) + gts_exp = gt_boxes.unsqueeze(0) # (1, M, 4) + + x_min = torch.maximum(preds_exp[..., 0], gts_exp[..., 0]) + y_min = torch.maximum(preds_exp[..., 1], gts_exp[..., 1]) + x_max = torch.minimum(preds_exp[..., 2], gts_exp[..., 2]) + y_max = torch.minimum(preds_exp[..., 3], gts_exp[..., 3]) + + inter_area = torch.clamp(x_max - x_min, min=0) * torch.clamp( + y_max - y_min, min=0 + ) + pred_areas = (preds_exp[..., 2] - preds_exp[..., 0]) * ( + preds_exp[..., 3] - preds_exp[..., 1] + ) + gt_areas = (gts_exp[..., 2] - gts_exp[..., 0]) * ( + gts_exp[..., 3] - gts_exp[..., 1] + ) + union_area = pred_areas + gt_areas - inter_area + + iou_matrix = torch.where(union_area > 0, inter_area / union_area, 0.0) + + if iou_matrix.numel() > 0: + # Get the highest IoU any prediction achieved for each GT box + max_ious_per_gt, _ = torch.max(iou_matrix, dim=0) + # If a GT box was overlapped by at least 10%, consider it "found" + self.total_gt_hit_lenient += torch.sum(max_ious_per_gt >= 0.10).item() + + # Match targets per threshold layer + for th_idx, th in enumerate(self.iou_thresholds): + matched_gts = torch.zeros( + num_gt_in_frame, dtype=torch.bool, device=self.device + ) + for p_idx in range(pred_boxes.shape[0]): + row_ious = iou_matrix[p_idx] + # Mask out already matched ground truths + row_ious = torch.where(~matched_gts, row_ious, -1.0) + + best_iou, best_gt_idx = torch.max(row_ious, dim=0) + + if best_iou >= th and best_gt_idx != -1: + if row_ious[best_gt_idx] >= th: # Extra validation gate + frame_matches[p_idx, th_idx] = 1 + matched_gts[best_gt_idx] = True + + # Track only tiny matrix shards instead of bulky bounding box contexts + # self.global_scores.append(pred_scores) + # self.global_matches.append(frame_matches) + + # Force detach data fields completely out of the PyTorch hardware execution graph + # and cast down to standard CPU lists before storing them over long durations + if hasattr(pred_scores, "detach"): + scores_list = pred_scores.detach().cpu().tolist() + else: + scores_list = list(pred_scores) + + if hasattr(frame_matches, "detach"): + matches_list = frame_matches.detach().cpu().tolist() + else: + matches_list = list(frame_matches) + + # EXTEND to keep the list flat and completely avoid ragged dimensions + self.global_scores.extend(scores_list) + self.global_matches.extend(matches_list) + + del pred_scores, pred_boxes, gt_boxes + + @torch.inference_mode() + def compute_final_metrics(self): + """Processes final precision/recall curves natively on the configured hardware device.""" + if len(self.global_scores) == 0: + return { + "mAP_10": 0.0, + "mAP_50": 0.0, + "mAP_75": 0.0, + "mAP_10_95": 0.0, + "Precision_10": 0.0, + "Recall_10": 0.0, + "F1_Score_10": 0.0, + "Precision_50": 0.0, + "Recall_50": 0.0, + "F1_Score_50": 0.0, + "Max_Recall_IoU_10": 0.0, + } + + # Flatten list of partial tensors into global timeline matrices + # scores = torch.cat(self.global_scores, dim=0) + # matches = torch.cat(self.global_matches, dim=0) + + # Flatten list of pre-detached primitive layouts into clean standalone timeline tensors + scores = torch.tensor( + self.global_scores, dtype=torch.float32, device=self.device + ).view(-1) + matches = torch.tensor( + self.global_matches, dtype=torch.int32, device=self.device + ).view(-1, self.num_steps) + + # Global Sort across the whole timeline by confidence scores + _, global_sort_idx = torch.sort(scores, descending=True) + matches = matches[global_sort_idx] + + aps = [] + + # Track dictionary mapping for multi-threshold statistical processing + # Key: Threshold Value (float) -> Values: (Precision, Recall) + target_metrics = { + 0.10: {"precision": 0.0, "recall": 0.0}, + 0.50: {"precision": 0.0, "recall": 0.0}, + } + + for th_idx in range(self.num_steps): + current_th = float(f"{self.iou_thresholds[th_idx].item():.2f}") + + tp_cum = torch.cumsum(matches[:, th_idx], dim=0) + fp_cum = torch.cumsum(1 - matches[:, th_idx], dim=0) + + precisions = tp_cum / (tp_cum + fp_cum) + if self.total_gt_count > 0: + recalls = tp_cum / self.total_gt_count + else: + recalls = torch.zeros_like(tp_cum) + + # Vectorized 101-point COCO AP Interpolation Layout + mpre = torch.cat( + [ + torch.tensor([0.0], device=self.device), + precisions, + torch.tensor([0.0], device=self.device), + ] + ) + mrec = torch.cat( + [ + torch.tensor([0.0], device=self.device), + recalls, + torch.tensor([1.0], device=self.device), + ] + ) + + # Enforce strict decreasing precision monotonicity + mpre = torch.flip( + torch.cummax(torch.flip(mpre, dims=[0]), dim=0).values, dims=[0] + ) + + recall_thresholds = torch.linspace(0.0, 1.0, 101, device=self.device) + inds = torch.searchsorted(mrec, recall_thresholds, side="left") + inds = torch.clamp(inds, max=mpre.shape[0] - 1) + + ap = torch.sum(mpre[inds]) / 101.0 + aps.append(ap.item()) + + # if th_idx == 0: + # final_precision_10 = ( + # precisions[-1].item() if precisions.numel() > 0 else 0.0 + # ) + # final_recall_10 = recalls[-1].item() if recalls.numel() > 0 else 0.0 + + # Dynamically extract and assign metrics if threshold matches target + if current_th in target_metrics: + target_metrics[current_th]["precision"] = ( + precisions[-1].item() if precisions.numel() > 0 else 0.0 + ) + target_metrics[current_th]["recall"] = ( + recalls[-1].item() if recalls.numel() > 0 else 0.0 + ) + + # f1_10 = ( + # (2 * final_precision_10 * final_recall_10) + # / (final_precision_10 + final_recall_10) + # if (final_precision_10 + final_recall_10) > 0 + # else 0.0 + # ) + + # Calculate F1 Score harmonic balances + p10, r10 = target_metrics[0.10]["precision"], target_metrics[0.10]["recall"] + f1_10 = (2 * p10 * r10) / (p10 + r10) if (p10 + r10) > 0 else 0.0 + + p50, r50 = target_metrics[0.50]["precision"], target_metrics[0.50]["recall"] + f1_50 = (2 * p50 * r50) / (p50 + r50) if (p50 + r50) > 0 else 0.0 + + max_recall_10 = ( + (self.total_gt_hit_lenient / self.total_gt_count) + if self.total_gt_count > 0 + else 0.0 + ) + + # Robust close-approximation lookups bypassing basic Python indexing limitations + map10_idx = torch.argmin(torch.abs(self.iou_thresholds - 0.10)).item() + map50_idx = torch.argmin(torch.abs(self.iou_thresholds - 0.50)).item() + map75_idx = torch.argmin(torch.abs(self.iou_thresholds - 0.75)).item() + + return { + "mAP_10": aps[map10_idx], + "mAP_50": aps[map50_idx], # mAP at 0.50 IoU + "mAP_75": aps[map75_idx], # mAP at 0.75 IoU + "mAP_10_95": sum(aps) + / float(self.num_steps), # Averaged mAP over all 18 threshold layers + "Precision_10": p10, + "Recall_10": r10, + "F1_Score_10": f1_10, + "Precision_50": p50, + "Recall_50": r50, + "F1_Score_50": f1_50, + "Max_Recall_IoU_10": max_recall_10, + } diff --git a/fastapi/tests/test_detections.py b/fastapi/tests/test_detections.py index eec1120..28d2a47 100644 --- a/fastapi/tests/test_detections.py +++ b/fastapi/tests/test_detections.py @@ -1,39 +1,90 @@ +# ============================================================================== +# SUPPRESS WARNINGS +# import warnings + +import pytest + +# warnings.filterwarnings( +# "ignore", category=FutureWarning, message=".*reduce_op` is deprecated.*" +# ) + +pytestmark = [ + pytest.mark.filterwarnings( + "ignore:.*anyio:_pytest.warning_types.PytestAssertRewriteWarning" + ), + pytest.mark.filterwarnings( + "ignore:Context managers for TensorRT types are deprecated:DeprecationWarning" + ), + pytest.mark.filterwarnings( + "ignore:Exception ignored in.*SharedMemory.__del__:UserWarning" + ), + # Global message fallback pattern captures local execution frames + pytest.mark.filterwarnings("ignore:.*reduce_op.*:FutureWarning"), +] + +# ============================================================================== +# LOGGING +import logging +import os +import sys + +logging.basicConfig( + level=logging.INFO, + # format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", + format="%(asctime)s [%(levelname)s] %(name)s (%(filename)s:%(lineno)d) - %(message)s", + handlers=[logging.StreamHandler(sys.stdout)], +) + +# Suppress low-delay reference block warnings from OpenCV/PyAV/FFmpeg +# os.environ["OPENCV_FFMPEG_LOGLEVEL"] = "-8" +# os.environ["OPENCV_LOG_LEVEL"] = "OFF" +logging.getLogger("libav").setLevel(logging.CRITICAL) +logging.getLogger("libav.hevc").setLevel(logging.CRITICAL) +logging.getLogger("matplotlib").setLevel(logging.WARNING) +logging.getLogger("ultralytics").setLevel(logging.WARNING) +# logger = trt.Logger(trt.Logger.WARNING) +# trt.init_libnvinfer_plugins(logger, "") +main_app_logger = logging.getLogger(__name__) + +# ============================================================================== +# IMPORTS + +# os.environ["OMP_NUM_THREADS"] = "2" +# os.environ["MKL_NUM_THREADS"] = "2" +# os.environ["PYTORCH_ALLOC_CONF"] = "expandable_segments:True" +# try: +# torch.set_num_interop_threads(2) # 1) +# torch.set_num_threads(4) # 2) +# except RuntimeError: +# # Safe graceful fallback if a process-level fork duplicated context maps +# pass import argparse import asyncio import csv +import ctypes import faulthandler import gc +import multiprocessing as mp +import sys import threading import time import traceback - -faulthandler.enable() -import inspect -import logging -import multiprocessing as mp -import os -import queue -import sys -import types -from concurrent.futures import ThreadPoolExecutor +import tracemalloc from pathlib import Path import cv2 -import matplotlib.pyplot as plt -import numpy as np -import pytest -import tensorrt as trt +import psutil import torch -# # Force all PyTorch extension handles to compile and load BEFORE threads spawn -# if torch.cuda.is_available(): -# _ = torch.zeros(1).cuda() -# import torch._ops -# import torch.utils +# import torch -# Explicitly invoke any plotting or module style lookups early - -sys.path.insert(1, str(Path(__file__).parent.parent)) +# Retrieve repo packages +REPO_DIR = str(Path(__file__).parent.parent) +sys.path.insert(1, REPO_DIR) +from base_test import ( + BaseTest, + fps_comparison_chart, +) from include.default_configs import ( CUSTOM_MODEL_FLAG_DEFAULT, DEBUG_DEFAULT, @@ -41,85 +92,363 @@ THRESHOLD_VALUE, ) from include.handlers import ( - AsyncVideoWriter, - CPUStreamHandler, - DeviceBaseHandler, - GPUStreamHandler, - get_bb_overlay, - get_metadata_overlay, - log_to_logger, + get_test_handler, ) from include.utils import ( PipelineConfig, + ResourceTrackerFilter, + install_and_load_pip_package, + str2bool, ) +# objgraph = install_and_load_pip_package("objgraph", attribute_name=None) +# torch.set_grad_enabled(False) + +# ============================================================================== +# MONKEY PATCH +# Cache the hardware availability state globally. +# This prevents internal framework loops from triggering driver/NVML checks per frame. +# _cuda_available = torch.cuda.is_available() + + +# def _patched_is_available(): +# return _cuda_available + + +# torch.cuda.is_available = _patched_is_available + +# ============================================================================== +# SETUP +# Hooks directly into the OS kernel signals to force Python to print a full +# stack traceback right before it dies, allowing you to see which line of +# Python code caused the hard crash +faulthandler.enable() + try: # Retain standard spawn mode to prevent CUDA context driver deadlocks torch.multiprocessing.set_start_method("spawn", force=True) except RuntimeError: pass -logging.getLogger("matplotlib").setLevel(logging.WARNING) -logger = trt.Logger(trt.Logger.WARNING) -trt.init_libnvinfer_plugins(logger, "") - -DEBUG_FLAG_DEFAULT = True if DEBUG_DEFAULT == "1" else False -os.environ["OMP_NUM_THREADS"] = str(mp.cpu_count()) # "1" -os.environ["PYTORCH_ALLOC_CONF"] = "expandable_segments:True" force_export = False +# target_width, target_height = 7680, 4320 +STATE_CAPTURE = False + +# Force Python's multiprocessing layer to quiet tracking cleanup race conditions +os.environ["PYTHONWARNINGS"] = "ignore" +sys.warnoptions.append("ignore") + + +# ========================================================================= +# ISOLATED BACKGROUND WORKER +# ========================================================================= + + +def isolated_detection_worker(init_args, test_args, res_queue): + device = test_args["device"] + detection_type = test_args["detection_type"] + sf_enabled = test_args["sf_enabled"] + gt_enabled = test_args["gt_enabled"] + + if device == "gpu" and torch.cuda.is_available(): + torch.cuda.synchronize() + torch.cuda.ipc_collect() + torch.cuda.empty_cache() + gc.collect() + + # Establish an accurate post-initialization hardware baseline + if str2bool(os.getenv("ENABLE_PROFILING", "False")): + tracemalloc.start() -# Force OpenCV to run sequentially to prevent context-switching overhead -cv2.setNumThreads(0) # Forces OpenCV loops to run strictly sequentially + start_allocated, start_reserved = 0, 0 + if device == "gpu" and torch.cuda.is_available(): + torch.cuda.memory._record_memory_history( + enabled=True, + trace_alloc_max_entries=250000, + trace_alloc_record_context=True, + ) + + # This captures your baseline AFTER initialize_variables() is done + start_allocated = torch.cuda.memory_allocated(0) + start_reserved = torch.cuda.memory_reserved(0) + try: + cv2.cuda.setBufferPoolUsage(False) + except AttributeError: + pass + else: + gc.collect() + process = psutil.Process(os.getpid()) + start_allocated = ( + process.memory_info().rss + ) # Reuse start_allocated container for host memory baseline + start_reserved = 0 -def fps_comparison_chart(chart_path, results, fps_key="Pipeline FPS (Video frames)"): try: - names = [r["Test Name"] for r in results] - fps_values = [float(r[fps_key]) for r in results] - - plt.figure(figsize=(10, 6)) - plt.grid(axis="y", linestyle="--", alpha=0.7, zorder=0) - - colors = ["#2ca02c" if "gpu" in n.lower() else "#1f77b4" for n in names] - bars = plt.bar(names, fps_values, color=colors, zorder=3) - plt.ylabel("Frames Per Second (FPS)") - plt.title(f"Performance Comparison: {chart_path.stem}") - plt.xticks(rotation=45) - - for bar in bars: - yval = bar.get_height() - plt.text( - bar.get_x() + bar.get_width() / 2, - yval + 1, - f"{yval:.1f}", - ha="center", - va="bottom", + instance, _ = get_test_handler(TestDetections(), device) + + instance.source = init_args["source"] + instance.name = init_args["name"] + instance.result_dir = Path(init_args["result_dir"]) + instance.active_streams = init_args["active_streams"] + instance.__class__.benchmarks = init_args["benchmarks"] # Sandbox the metrics + + vid_dir = instance.result_dir / device + vid_dir.mkdir(parents=True, exist_ok=True) + os.environ["TEST_SUITE_RENDER_DIR"] = str(vid_dir) + + if instance.source.startswith("rtsp"): + short_name = "rtsp" + else: + short_name = Path(instance.source).stem + + # config definition + config = PipelineConfig( + SHARED_OUTPUT=str(instance.result_dir), # defined in context + CUSTOM_MODEL_FLAG=os.getenv("CUSTOM_MODEL_FLAG", CUSTOM_MODEL_FLAG_DEFAULT), + DEVICE=device.upper(), + OMIT_DETECTIONS_FLAG=True, + TEST_MODE=True, + DEBUG=os.getenv("DEBUG", DEBUG_DEFAULT), + DEBUG_FRAME_LIMIT=int(os.getenv("DEBUG_FRAME_LIMIT", 100)), + ENABLE_QUERYING=False, + MODEL_NAME=os.getenv("MODEL_NAME", MODEL_NAME_DEFAULT), + SMART_FILTERING_ENABLED=sf_enabled, + THRESHOLD_VALUE=int(os.getenv("THRESHOLD_VALUE", THRESHOLD_VALUE)), + DETECTION_TYPE=detection_type, + ) + + # INITIALIZE CLASS (mimic DeviceBaseHandler.__init__) ------------------------------ + instance.is_rtsp = str(instance.source).startswith("rtsp:/") + instance.active = True + instance.config = config + + # kwarg definition + instance._testMethodName = ( + f"sf_{detection_type}_{device}" + if sf_enabled + else f"yolo_{detection_type}_{device}" + ) + instance.video_output_name = f"{instance._testMethodName}_{short_name}.mp4" + + instance.loop = asyncio.get_event_loop() + instance.frame_ready_event = asyncio.Event() + instance._is_stopped = False + instance._stop_lock = threading.Lock() # Local lock for this instance + instance.main_startup_event = mp.Event() + + instance.device = instance.config.DEVICE + instance.device_input = instance.config.device_input + instance.disp_w, instance.disp_h = instance.config.DISPLAY_FRAME_SIZE + instance.resize_h, instance.resize_w = [ + instance.config.MODEL_H, + instance.config.MODEL_W, + ] + + instance.setup_reader( + instance.config.TARGET_FPS, + instance.config.CLIP_DURATION, + startup_event=instance.main_startup_event, + ) + instance.initialize_variables() + instance.setup_threads() + instance.last_heartbeat = time.perf_counter() + + if STATE_CAPTURE: + main_app_logger.info( + "[DIAGNOSTIC] Registering system state baseline layout..." ) + instance.baseline_before_start = instance.capture_state_snapshot() - if fps_values: - plt.ylim(0, max(fps_values) * 1.2) + def orig_fn(profiler): + return instance.run_realtime_inference( + sf_enabled=instance.config.sf_enabled, + profiler=profiler, + gt_enabled=gt_enabled, + ) - plt.tight_layout() - plt.savefig(str(chart_path)) - print(f" Comparison chart saved to: {chart_path}") - except Exception: - print("Skipping chart generation: error occurred.") + def profiler_fn(): + profiler = None + try: + if str2bool(os.getenv("ENABLE_PROFILING", "False")): + Profiler = install_and_load_pip_package( + "pyinstrument", attribute_name="Profiler" + ) + profiler = Profiler(interval=0.005) # 5ms sampling interval -class DummyProcess: - def start(self): - pass + # Telling the statistical sampler to skip recording exception blocks completely + # stops stack_sampler.py from ballooning RAM over long production runs. + if hasattr(profiler, "_sampler") and profiler._sampler: + profiler._sampler.trace_exceptions = False - def join(self, timeout=None): - pass + profiler.start() - def is_alive(self): - return False + orig_fn(profiler) - def close(self): - pass + if str2bool(os.getenv("ENABLE_PROFILING", "False")): + # 2. Redirect standard error to the filter trap right before report compilation + original_stderr = sys.stderr + sys.stderr = ResourceTrackerFilter(original_stderr) + try: + # Force standard stdout to flush out any lingering teardown messages + # BEFORE pyinstrument dumps its massive ASCII tree block. + sys.stdout.flush() + + # main_app_logger.info(profiler.output_text(color=True)) + # profiler.main_app_logger.info(color=True) + # prof_output = profiler.output_text(color=True) + # main_app_logger.info( + # f"\n=== LATENCY BREAKDOWN FOR {self.name} ({device}) ===\n{prof_output}\n", + # + # ) + + # Save a clean, interactive tree map for visual analysis + output_html_path = instance.output_path.replace( + ".mp4", "_profile.html" + ) + # output_html_path = f"/tmp/profile_{video_name}_{device}.html" + profiler.write_html(output_html_path) + main_app_logger.info( + f"[PROFILER] Performance tree map exported to {output_html_path}", + ) + finally: + sys.stderr = original_stderr + if "profiler" in locals(): + try: + # Force the Python interpreter to detach pyinstrument's sampling hooks + sys.setprofile(None) + + # Completely decouple internal statistical sessions to drop C-heap frames + if hasattr(profiler, "_last_session"): + profiler._last_session = None + if hasattr(profiler, "last_session"): + profiler.last_session = None + + # Forcibly clear out internal memoryview strings caching tree metrics + if ( + hasattr(profiler, "session") + and profiler.session is not None + ): + if hasattr(profiler.session, "frame_groups"): + profiler.session.frame_groups = None + if hasattr(profiler.session, "samples"): + profiler.session.samples = [] + + # Purge compiled tree metrics structures + profiler.session = None + del profiler + except Exception: + pass + + # Trigger an immediate native Linux heap compression pass + # This grabs the newly abandoned pyinstrument C-heap blocks and + # flushes them to the OS before the fixture assessment snapshot fires! + gc.collect() + try: + libc = ctypes.CDLL("libc.so.6") + libc.malloc_trim(0) + except Exception: + pass + + except Exception: + traceback.print_exc() + + if str2bool(os.getenv("ENABLE_PROFILING", "False")) and hasattr( + instance, "process_thread" + ): + # Re-initialize the thread context using our safe profile wrapper proxy + instance.process_thread = threading.Thread(target=profiler_fn, daemon=True) + + instance.VIDEO_GT_DETAILS = None + instance.duration_target = 30 + + instance.start() + + while instance.active or not instance._is_stopped: + time.sleep(0.25) + if getattr(instance, "status", None) == "DONE": + break + + if ( + hasattr(instance, "process_thread") + and instance.process_thread is not None + ): + if not instance.process_thread.is_alive(): + main_app_logger.info( + "[TEST HARNESS] Background worker exited. Breaking loop.", + ) + break + + instance.stop_threads(["process_thread"]) + + # Force early hardware driver sweep before unbinding threads + if instance.device_input == "cuda" and torch.cuda.is_available(): + torch.cuda.synchronize() + torch.cuda.empty_cache() + torch.cuda.ipc_collect() + + gc.collect() + + try: + if STATE_CAPTURE: + # --- CAPTURE STATE POINT B (Right before cleanup) --- + main_app_logger.info( + "[DIAGNOSTIC] Gathering active execution workspace layouts..." + ) + state_after_stop = instance.capture_state_snapshot() + + # 3. Print the granular delta analysis out to your terminal screen + new_keys_generated, mutated_keys, static_keys = ( + instance.print_lifecycle_delta( + instance.baseline_before_start, + state_after_stop, + return_keys=True, + ) + ) + # self.config.DEBUG_FLAG and + if len(new_keys_generated) > 0 or len(mutated_keys) > 0: + # Inform the blueprint engine to eliminate every difference found between Point A and B + instance.stop_blueprint_executor(new_keys_generated, mutated_keys) + except Exception: + traceback.print_exc() + + assert instance.status == "DONE" + + # TEARDOWN + instance.execute_teardown() + + if str2bool(os.getenv("ENABLE_PROFILING", "False")): + gc.collect() + if ( + device == "gpu" and torch.cuda.is_available() + ): # self.device_input == "cuda" and torch.cuda.is_available(): + torch.cuda.synchronize() + torch.cuda.empty_cache() + instance.assess_memory( + device, instance.name, start_allocated, start_reserved + ) + + if len(instance.__class__.benchmarks) > 0: + final_metrics = instance.__class__.benchmarks[-1] + res_queue.put({"status": "success", "metrics": final_metrics}) + else: + res_queue.put({"status": "error", "error": "No benchmarks generated."}) + + except Exception as e: + res_queue.put( + {"status": "error", "error": str(e), "traceback": traceback.format_exc()} + ) + res_queue.put( + {"status": "error", "error": str(e), "traceback": traceback.format_exc()} + ) + + +# ========================================================================= +# PYTEST TEST HARNESS +# ========================================================================= @pytest.fixture(scope="class") def setup_context(request): """Replaces setUpClass: Runs once per test class.""" @@ -128,11 +457,6 @@ def setup_context(request): main_path = test_dir.parent video_dir = main_path / "inputs" - request.cls._shared_model = None - request.cls._shared_model_path = None - request.cls._shared_model_device = None - request.cls._shared_model_sf_enabled = None - # model_name = os.getenv("MODEL_NAME", MODEL_NAME_DEFAULT) # Handler.__init__ (main items) request.cls.source = os.getenv("VIDEO_FILENAME", "anduril_swarm_8K.mp4") @@ -166,7 +490,7 @@ def setup_context(request): ) request.cls.csv_path = request.cls.result_dir / request.cls.csv_filename - request.cls.active = True + # request.cls.active = True request.cls.active_streams = {} # RUN ALL PARAMETERIZED TESTS ---------------------------------------- @@ -195,1750 +519,151 @@ def setup_context(request): else: row["Pipeline Speedup vs CPU"] = "Baseline (CPU)" - keys = results[0].keys() + if results: + # # Define video targets explicitly during collection + # video_names = [f"video{i:02d}" for i in range(1, 21)] + # ALL_VIDEO_GT_DETAILS = download_eval_data(video_names) - with open(str(request.cls.csv_path), "w", newline="") as f: - dict_writer = csv.DictWriter(f, fieldnames=keys) - dict_writer.writeheader() - dict_writer.writerows(results) + keys = results[0].keys() - print(f"\n[FINAL] Benchmarks saved to {request.cls.csv_path}") + with open(str(request.cls.csv_path), "w", newline="") as f: + dict_writer = csv.DictWriter(f, fieldnames=keys) + dict_writer.writeheader() + dict_writer.writerows(results) + main_app_logger.info(f"[FINAL] Benchmarks saved to {request.cls.csv_path}") - for r in results: - print( - f" > {r['Test Name']}: {r['Pipeline FPS (Video frames)']} FPS | {r['Pipeline FPS (Target frames)']} FPS | {r['Avg Frame Reading (ms)']} ms | Speedup: {r.get('Pipeline Speedup vs CPU', 'N/A')}" + main_app_logger.info("=" * 80) + main_app_logger.info( + f"{'Test Name':<25} | {'Pipeline FPS (Target)':<21} | {'Avg Frame Reading (ms)':<22} | {'Pipeline Speedup vs CPU':<15}", ) + main_app_logger.info("-" * 80) - chart_path = ( - request.cls.result_dir - / f"{request.cls.csv_filename.replace('.csv', '')}_pipelineFPS.png" - ) - fps_comparison_chart(chart_path, results, fps_key="Pipeline FPS (Video frames)") - - chart_path = ( - request.cls.result_dir - / f"{request.cls.csv_filename.replace('.csv', '')}_pipelineFPS_target.png" - ) - fps_comparison_chart( - chart_path, results, fps_key="Pipeline FPS (Target frames)" - ) - - chart_path = ( - request.cls.result_dir - / f"{request.cls.csv_filename.replace('.csv', '')}_sfdetectFPS_target.png" - ) - fps_comparison_chart(chart_path, results, fps_key="SF/Detection FPS") - - chart_path = ( - request.cls.result_dir - / f"{request.cls.csv_filename.replace('.csv', '')}_displayFPS_target.png" - ) - fps_comparison_chart(chart_path, results, fps_key="Display FPS") - - -@pytest.fixture(autouse=True) -def each_test_setup(request): - test_class_self = request.instance - if torch.cuda.is_available(): - torch.cuda.synchronize() - - device = request.node.callspec.params.get("device") - detection_type = request.node.callspec.params.get("detection_type") - sf_enabled = request.node.callspec.params.get("sf_enabled") - - if detection_type == "motion" and not sf_enabled: - pytest.skip( - "Pure YOLO mode is structurally invalid for detection_type 'motion'.\n" - ) - - test_class_self._testMethodName = ( - f"sf_{detection_type}_{device}" - if sf_enabled - else f"yolo_{detection_type}_{device}" - ) - - # video_output_name = f"{test_class_self._testMethodName}_detections_output.mp4" - vid_dir = test_class_self.result_dir / device - vid_dir.mkdir(parents=True, exist_ok=True) - - # Handler.__init__ (remaining items) - # 1. Re-initialize a fresh configuration object - test_class_self.config = PipelineConfig( - SHARED_OUTPUT=str(test_class_self.result_dir), - CUSTOM_MODEL_FLAG=os.getenv("CUSTOM_MODEL_FLAG", CUSTOM_MODEL_FLAG_DEFAULT), - DEVICE=device.upper(), - OMIT_DETECTIONS_FLAG=True, - TEST_MODE=True, - DEBUG=os.getenv("DEBUG", DEBUG_DEFAULT), - DEBUG_FRAME_LIMIT=int(os.getenv("DEBUG_FRAME_LIMIT", 100)), - ENABLE_QUERYING=False, - MODEL_NAME=os.getenv("MODEL_NAME", MODEL_NAME_DEFAULT), - SMART_FILTERING_ENABLED=sf_enabled, - THRESHOLD_VALUE=int(os.getenv("THRESHOLD_VALUE", THRESHOLD_VALUE)), - DETECTION_TYPE=detection_type, - ) - - # test_video_output_path = os.path.join(str(vid_dir), video_output_name) - os.environ["TEST_SUITE_RENDER_DIR"] = str(vid_dir) - # test_class_self.config.SHARED_OUTPUT = str(test_class_self.result_dir) - # test_class_self.disp_w, test_class_self.disp_h = (640, 360) - test_class_self.disp_w, test_class_self.disp_h = ( - test_class_self.config.DISPLAY_FRAME_SIZE - ) - - if device == "gpu": - # Allocate a permanent float32/float16 channel layout space directly on VRAM - test_class_self.static_gpu_360p = torch.empty( - (1, 3, test_class_self.disp_h, test_class_self.disp_w), - dtype=torch.float32, - device="cuda", - ) - test_class_self.static_gpu_byte_bchw = torch.empty( - (1, 3, test_class_self.disp_h, test_class_self.disp_w), - dtype=torch.uint8, - device="cuda", - ).contiguous() - - # Create two isolated tracking canvases to handle the ping-pong data stream - test_class_self.static_host_canvases = [ - np.zeros( - (test_class_self.disp_h, test_class_self.disp_w, 3), dtype=np.uint8 - ), - np.zeros( - (test_class_self.disp_h, test_class_self.disp_w, 3), dtype=np.uint8 - ), - ] - test_class_self.canvas_selector = 0 - - # Register BOTH buffers as page-locked memory - cv2.cuda.registerPageLocked(test_class_self.static_host_canvases[0]) - cv2.cuda.registerPageLocked(test_class_self.static_host_canvases[1]) - - # Reset core state machine properties before invoking any backend handlers - test_class_self.active = True - - test_class_self.loop = asyncio.get_event_loop() - test_class_self.frame_ready_event = asyncio.Event() - test_class_self._is_stopped = False - test_class_self._stop_lock = threading.Lock() # Local lock for this instance - test_class_self.mp_frame_ready_event = mp.Event() - # test_class_self.stat_start_time = time.perf_counter() # timing to display detection - - test_class_self.device = test_class_self.config.DEVICE - test_class_self.device_input = test_class_self.config.device_input - test_class_self.resize_h, test_class_self.resize_w = [ - test_class_self.config.MODEL_H, - test_class_self.config.MODEL_W, - ] - - # Resolve concrete handler class type - HandlerClass = GPUStreamHandler if device == "gpu" else CPUStreamHandler - HandlerClass.pipeline_fn = test_class_self.__class__.pipeline_fn - - # Dynamically re-bind backend methods to this execution instance - handler_classes = [HandlerClass, DeviceBaseHandler] - all_method_names = set() - - for cls in handler_classes: - for name, attr in inspect.getmembers(cls, predicate=inspect.isfunction): - all_method_names.add(name) - - for method_name in all_method_names: - source_obj = ( - HandlerClass if hasattr(HandlerClass, method_name) else DeviceBaseHandler - ) - if hasattr(source_obj, method_name): - raw_func = getattr(source_obj, method_name) - if ( - not hasattr(test_class_self.__class__, method_name) - or method_name == "pipeline_fn" - ): - setattr( - test_class_self, - method_name, - types.MethodType(raw_func, test_class_self), - ) - - # 3. FORCE NATIVE PIPELINE PROVISIONING - test_class_self.setup_reader( - test_class_self.config.TARGET_FPS, test_class_self.config.CLIP_DURATION - ) - test_class_self.initialize_variables() - test_class_self.setup_model(None) - test_class_self.prepare_pipeline() - - test_class_self.run_realtime_inference = types.MethodType( - test_class_self.__class__.run_realtime_inference, test_class_self - ) - - test_class_self.setup_threads() - - yield - - # Teardown logic - test_class_self.active = False - - # Fallback to production reader safety closure - if hasattr(test_class_self, "reader") and test_class_self.reader is not None: - try: - if hasattr(test_class_self.reader, "print_breakdown"): - test_class_self.reader.print_breakdown() - test_class_self.reader.stop() - except Exception: - pass - - if ( - hasattr(test_class_self, "stop_writer") - and test_class_self.stop_writer is not None - ): - try: - test_class_self.stop_writer.set() - except Exception: - pass - - # --- CRITICAL RE-ORDERED FLUSH GATE --- - # 1. First, block and wait for the video processing producer thread to completely finish - # reading all remaining frames from the input video file. - producer_thread_handle = getattr(test_class_self, "process_thread", None) - if producer_thread_handle is not None and producer_thread_handle.is_alive(): - producer_thread_handle.join(timeout=0.5) # 10.0) - - # 2. Block and wait for background asynchronous AI executor workers to finish inference tasks. - if hasattr(test_class_self, "executor") and test_class_self.executor: - test_class_self.executor.shutdown(wait=True) - - # 3. Allow the multiprocessing render queue to naturally empty its frames into the encoder pipe. - if ( - hasattr(test_class_self, "render_queue") - and test_class_self.render_queue is not None - ): - try: - # Loop safely until the render loop handles the last remaining frames - # while not test_class_self.render_queue.empty(): - # time.sleep(0.05) - - # Send a poison pill token ONLY after all threads have fully stopped putting data into it - # test_class_self.render_queue.put(None, timeout=1.0) - if ( - hasattr(test_class_self, "render_queue") - and test_class_self.render_queue is not None - ): - try: - # Forcefully clear the queue thread tracking matrices - test_class_self.render_queue.close() - test_class_self.render_queue.cancel_join_thread() - except Exception: - pass - except Exception: - pass - - # 4. Gracefully join the background FFmpeg process, avoiding premature kills - render_proc_handle = getattr(test_class_self, "render_proc", None) - if render_proc_handle is not None: - try: - if render_proc_handle.is_alive(): - # Grant up to 10 seconds for disk I/O synchronization - render_proc_handle.join(timeout=0.5) # 10.0) - - if render_proc_handle.is_alive(): - print( - "[WARN] Render worker hung during final flush. Forcing termination." + for r in results: + main_app_logger.info( + f"{r['Test Name']:<25} | {r['Pipeline FPS (Target frames)']:<21} | {r['Avg Frame Reading (ms)']:<22} | {r.get('Pipeline Speedup vs CPU', 'N/A'):<10}", ) - render_proc_handle.terminate() - render_proc_handle.join() - - render_proc_handle.close() - except Exception: - pass - setattr(test_class_self, "render_proc", None) - - # 4. Deep System Unlinking of Shared Memory Layers (Parent/Child safe) - # This loop uses direct reference mapping rather than guessing PIDs - for shm_pool_attr in ["ai_shms", "shms"]: - if hasattr(test_class_self, shm_pool_attr): - shm_pool = getattr(test_class_self, shm_pool_attr) - if shm_pool: - for shm_segment in list(shm_pool): - try: - shm_segment.close() - shm_segment.unlink() - except Exception: - pass - shm_pool.clear() - - # 5. Clean up the Sync Base Manager Process - if hasattr(test_class_self, "manager") and test_class_self.manager is not None: - try: - test_class_self.manager.shutdown() - except Exception: - pass - test_class_self.manager = None - - # CRITICAL FIX: Block and wait for the background producer thread to die - # BEFORE we delete the reader attribute from the namespace map. - producer_thread_handle = getattr(test_class_self, "process_thread", None) - if producer_thread_handle is not None and producer_thread_handle.is_alive(): - producer_thread_handle.join(timeout=5.0) - - # if hasattr(test_class_self, "ingest_ring") and test_class_self.ingest_ring: - # for mat in test_class_self.ingest_ring: - # try: - # cv2.cuda.unregisterPageLocked(mat) - # except Exception: - # pass - # test_class_self.ingest_ring.clear() - - # if hasattr(test_class_self, "pinned_matrices") and test_class_self.pinned_matrices: - # for active_mat in test_class_self.pinned_matrices: - # try: - # cv2.cuda.unregisterPageLocked(active_mat) - # except Exception: - # pass - # test_class_self.pinned_matrices.clear() - # if hasattr(test_class_self, "pinned_tensors"): - # test_class_self.pinned_tensors.clear() - # if hasattr(test_class_self, "ai_pinned_tensors"): - # test_class_self.ai_pinned_tensors.clear() - - try: - cv2.cuda.unregisterPageLocked(test_class_self.pinned_matrices) - except Exception: - pass - - # ADD THIS MECHANISM: - if hasattr(test_class_self, "static_host_canvas"): - try: - cv2.cuda.unregisterPageLocked(test_class_self.static_host_canvas) - except Exception: - pass - - if ( - not test_class_self.active - ): # Only execute this block during complete class teardown - if hasattr(test_class_self, "ingest_ring") and test_class_self.ingest_ring: - for mat in test_class_self.ingest_ring: - try: - cv2.cuda.unregisterPageLocked(mat) - except Exception: - pass - test_class_self.ingest_ring.clear() - - if ( - hasattr(test_class_self, "pinned_matrices") - and test_class_self.pinned_matrices - ): - for active_mat in test_class_self.pinned_matrices: - try: - cv2.cuda.unregisterPageLocked(active_mat) - except Exception: - pass - test_class_self.pinned_matrices.clear() - - # Now it is structurally safe to purge attributes without causing cross-thread collisions - keys_to_purge = [ - "reader", - "process_thread", - "inference_stream", - "bgs_stream", - "model", - "raw_input", - "ai_gpu_staging", - "ai_pinned_tensors", - "executor", - # "io_executor", - ] - for key in keys_to_purge: - if hasattr(test_class_self, key): - delattr(test_class_self, key) - - if ( - hasattr(test_class_self, "gpu_event_buffer") - and test_class_self.gpu_event_buffer - ): - test_class_self.gpu_event_buffer.clear() - if hasattr(test_class_self, "component_stats") and test_class_self.component_stats: - test_class_self.component_stats.clear() - - with torch.inference_mode(): - if torch.cuda.is_available(): - torch.cuda.synchronize() - if device == "gpu": - torch.cuda.memory._record_memory_history(enabled=False) - torch.cuda.empty_cache() - torch.cuda.ipc_collect() - - gc.collect() - time.sleep(0.2) - - -@pytest.mark.usefixtures("setup_context") -class TestSmartFilteringDetections: - # SETUP -------------------------------------------- - - @pytest.mark.parametrize("device", ["cpu", "gpu"]) - @pytest.mark.parametrize("sf_enabled", [True, False]) - @pytest.mark.parametrize("detection_type", ["motion", "object"]) - def test_detections(self, device, sf_enabled, detection_type): - """Unified test runner for all configurations.""" - # if detection_type == "motion" and not sf_enabled: - # pytest.skip( - # "Pure YOLO mode is structurally invalid for detection_type 'motion'.\n" - # ) - - self.duration_target = 30 - - # Trigger your clean overridden thread boot - self.start() - - print( - f"\n[TEST HARNESS] Execution Started. Monitoring variables natively for {self.duration_target}s...", - flush=True, - ) - # Explicit timer tracking allows background multiprocessing queues to stream uninhibited - # test_start_time = time.perf_counter() - - while self.active or not self._is_stopped: - # Check if our active benchmark validation timeline target has been fulfilled - # if (time.perf_counter() - test_start_time) >= float(self.duration_target) + 15.0: - # print("\n[TEST HARNESS] Targeted test runtime duration reached. Initiating clean multi-process flush...", flush=True) - # break - time.sleep(0.1) # Stay clear of the hot pipeline lane - - assert self.status == "DONE" - - def setup_threads(self): - """Overrides handlers.py to bind threads dynamically to the test instance.""" - self.setup_shared_memory() # Natively sets up Manager dictionary and buffers - - # Executor for Async YOLO tasks and FFmpeg re-encoding - self.executor = ThreadPoolExecutor(max_workers=self.config.MAX_WORKERS) - # self.clip_executor = ThreadPoolExecutor(max_workers=self.config.MAX_WORKERS) - - print( - f"sf_enabled: {self.config.sf_enabled}\tTEST_MODE: {self.config.TEST_MODE}", - flush=True, - ) - - # Open up looking-ahead buffer horizons to eliminate 8K queue backpressure stalls - self.signal_queue = mp.Queue(maxsize=128) # 10) - self.render_queue = mp.Queue(maxsize=256) # 64) - - test_dir = os.getenv( - "TEST_SUITE_RENDER_DIR", str(Path(self.config.SHARED_OUTPUT)) - ) - os.makedirs(test_dir, exist_ok=True) - - if self.source.startswith("rtsp"): - short_name = "rtsp" - else: - short_name = Path(self.source).stem - video_output_name = f"{self._testMethodName}_{short_name}.mp4" - out_path = os.path.join(test_dir, video_output_name) - self.output_path = ( - out_path # f"{self.config.SHARED_OUTPUT}/{short_name}_{self.device}.mp4" - ) - - # log_to_logger( - # f"[TEST MODE] Detection results saved to: {out_path}", level="info" - # ) - - # ===================================================================== - # DYNAMIC THREAD TARGET REDIRECTION - # ===================================================================== - # Lambda forces the background processing thread to evaluate your custom staging loop natively - self.process_thread = threading.Thread( - target=lambda: self.run_realtime_inference( - sf_enabled=self.config.sf_enabled - ), - daemon=True, - ) - # self.render_proc = mp.Process( # threading.Thread( - # target=rendering_worker, - # args=( - # self.render_queue, - # (self.disp_w, self.disp_h), - # self.output_path, - # self.target_fps, - # ), - # daemon=True, - # ) - # self.render_proc = threading.Thread(target=lambda: None, daemon=True) - # self.display_proc = threading.Thread(target=lambda: None, daemon=True) - self.render_proc = DummyProcess() - self.display_proc = DummyProcess() - - self.async_writer = AsyncVideoWriter( - self.output_path, - cv2.VideoWriter_fourcc(*"avc1"), - float(self.target_fps), - (self.disp_w, self.disp_h), - ) - # self.async_writer = None - log_to_logger( - f"[TEST MODE] Detection results saved to: {self.output_path}", level="info" - ) - - def start(self): - """ - Starts the decoupled ingestion and inference threads in the correct order. - """ - # PRE-SYNC: Ensure GPU is idle before timing starts - if self.device_input == "cuda": - if torch.cuda.is_available(): - torch.cuda.synchronize() - - # Start the hardware-decoupled reader first - self.reader.start() - - if self.config.ENABLE_QUERYING: - self._initialize_writer() - - # Small delay to allow the reader's deque to populate - time.sleep(0.1) + main_app_logger.info("=" * 125) - # Start the producer and consumer threads - if hasattr(self, "process_thread") and not self.process_thread.is_alive(): - self.process_thread.start() - - if not self.config.DISABLE_DETECTION: - self.render_proc.start() - - self.display_proc.start() - - if ( - self.config.ENABLE_QUERYING - and not self.config.TEST_MODE - and not self.metadata_thread.is_alive() - ): - self.metadata_thread.start() - - if self.config.ENABLE_QUERYING and not self.writer_thread.is_alive(): - self.writer_thread.start() - - return self - - def stop(self): - """Overrides handlers.py to flush thread objects safely without deadlocking.""" - with self._stop_lock: - if self._is_stopped: - return - - print( - f"\n[TEST HARNESS] Initiating rapid thread flush for {self.name}", - flush=True, + chart_path = ( + request.cls.result_dir + / f"{request.cls.csv_filename.replace('.csv', '')}_pipelineFPS.png" ) - self.active = False - - # 1. Rapidly clear the async video writer thread queue first - # if hasattr(self, "async_writer") and self.async_writer is not None: - # try: - # self.async_writer.release() - # except Exception: - # pass - - # ===================================================================== - # DECUPLED MULTI-PROCESS TEARDOWN LIFECYCLE SEQUENCE - # ===================================================================== - # 1. FIRST: Drain and synchronize your thread pool tasks so EVERY frame drops into the IPC queue - if hasattr(self, "display_pool") and self.display_pool is not None: - try: - if hasattr(self.display_pool, "_work_queue"): - backlog = self.display_pool._work_queue.qsize() - if backlog > 0: - print( - f"\n\033[94m[STAGE 1/4] Synchronizing display pool threads. Draining {backlog} background tasks...\033[0m", - flush=True, - ) - backlog_s = time.perf_counter() - while ( - self.display_pool._work_queue.qsize() > 0 - or len(self.reorder_staging_buffer) > 0 - ): - # Yield a brief slice to let worker threads complete downscaling - time.sleep(0.01) - backlog_e = time.perf_counter() - backlog_s - print(f"\t\033[94mTook {backlog_e} secs\033[0m", flush=True) - print( - "\033[92m[SUCCESS] All background image transformations completed cleanly.\033[0m", - flush=True, - ) - self.display_pool.shutdown(wait=True) - except Exception as e: - print( - f"[TEARDOWN ERROR] Thread pool synchronization failed: {e}", - flush=True, - ) - setattr(self, "display_pool", None) - - # 1. FIRST: Instantly dispatch the shutdown token so the worker process knows to flush entries - if hasattr(self, "render_queue") and self.render_queue is not None: - try: - print( - f"\n\033[94m[STAGE 1/3] Dispatching shutdown sentinel (None) to rendering process worker (Backlog: {self.render_queue.qsize()} frames)...\033[0m", - flush=True, - ) - # Delivering the poison pill immediately tells FFmpeg to drain remaining blocks sequentially - self.render_queue.put(None, timeout=2.0) - except Exception as queue_err: - print( - f"\033[91m[TEARDOWN ERROR] Failed staging shutdown token: {queue_err}\033[0m", - flush=True, - ) - - # 2. SECOND: Allow the background multiprocessing queue to empty outstanding items naturally - if hasattr(self, "render_queue") and self.render_queue is not None: - try: - print( - "\n\033[94m[STAGE 2/3] Finalizing file output. Draining remaining frames from IPC memory lane...\033[0m", - flush=True, - ) - t_drain = time.perf_counter() - # Wait up to 15 seconds for the worker process to pull every remaining matrix out of the pipe - while ( - not self.render_queue.empty() - and (time.perf_counter() - t_drain) < 15.0 - ): - time.sleep( - 0.01 - ) # Micro-yield grants immediate execution priority to the background process core - except Exception: - pass - - # 3. THIRD: Block the main thread safely and allow the detached process to finish disk I/O operations - if hasattr(self, "render_proc") and self.render_proc is not None: - try: - join_duration = 0.0 - if self.render_proc.is_alive(): - print( - "\033[94m[STAGE 2/2] Main thread blocking. Synchronizing hard drive file headers...\033[0m", - flush=True, - ) - t_join_start = time.perf_counter() - self.render_proc.join( - timeout=15.0 - ) # Safe timeout lets video containers finalize cleanly - join_duration = time.perf_counter() - t_join_start - else: - print( - "\033[94m[STAGE 2/2] Main thread clear...\033[0m", - flush=True, - ) - - if self.render_proc.is_alive(): - print( - "\n\033[91m[CRITICAL STALL] Render worker process hung on disk write! Forcing termination...\033[0m", - flush=True, - ) - self.render_proc.terminate() - self.render_proc.join() - else: - print( - f"\033[92m[FINAL] Video compilation finished cleanly! Hard drive commit took {join_duration:.2f} seconds.\033[0m", - flush=True, - ) - - expected_disk_path = Path(self.output_path) - if expected_disk_path.exists(): - size_mb = expected_disk_path.stat().st_size / (1024 * 1024) - print( - f"\033[92m[DISK VERIFIED] Destination asset compiled: {expected_disk_path.name} ({size_mb:.2f} MB)\033[0m\n", - flush=True, - ) - self.render_proc.close() - except Exception as proc_err: - print( - f"\033[91m[TEARDOWN ERROR] Failed closing background process container: {proc_err}\033[0m", - flush=True, - ) - setattr(self, "render_proc", None) - - # 4. FOURTH: Clean up remaining pipeline executors and queues safely - if hasattr(self, "render_queue") and self.render_queue is not None: - try: - self.render_queue.close() - self.render_queue.cancel_join_thread() - except Exception: - pass - setattr(self, "render_queue", None) - - if hasattr(self, "executor") and self.executor is not None: - try: - self.executor.shutdown(wait=True) - except Exception: - pass - setattr(self, "executor", None) - - self.status = "DONE" - self._is_stopped = True - print( - "[TEST HARNESS] Teardown complete. Releasing session cleanly.\n", - flush=True, - ) - - # HELPERS -------------------------------------------- - def _print_gpu_mem(self): - if torch.cuda.is_available(): - # Memory currently used by tensors - allocated = torch.cuda.memory_allocated(0) / 1024**2 - # Total memory reserved by PyTorch (the "Pool") - reserved = torch.cuda.memory_reserved(0) / 1024**2 - print(f"\tAllocated: {allocated:0.2f} MB") - print(f"\tReserved: {reserved:0.2f} MB") - else: - print("\tCUDA not available.") - - def calculate_unique_coverage(self, merged_boxes, target_w=640, target_h=640): - """ - TRUE LOOPLESS VECTORIZATION: Calculates combined bounding box pixel coverage - in a single GPU pass, completely avoiding CPU-GPU synchronization stalls. - """ - if merged_boxes is None or merged_boxes.shape[0] == 0: - return 0.0 - - scale = torch.tensor( - [ - target_w / self.frame_width, - target_h / self.frame_height, - target_w / self.frame_width, - target_h / self.frame_height, - ], - device=self.device_input, - ) - - coords = (merged_boxes * scale).long() - coords[:, [0, 2]] = coords[:, [0, 2]].clamp(0, target_w) - coords[:, [1, 3]] = coords[:, [1, 3]].clamp(0, target_h) - - x1 = coords[:, 0].view(-1, 1, 1) - y1 = coords[:, 1].view(-1, 1, 1) - x2 = coords[:, 2].view(-1, 1, 1) - y2 = coords[:, 3].view(-1, 1, 1) - - grid_y, grid_x = torch.meshgrid( - torch.arange(target_h, device=self.device_input), - torch.arange(target_w, device=self.device_input), - indexing="ij", - ) - - inside_boxes = (grid_x >= x1) & (grid_x < x2) & (grid_y >= y1) & (grid_y < y2) - unique_mask = torch.any(inside_boxes, dim=0) - - return (torch.sum(unique_mask).item() / (target_w * target_h)) * 100 - - def _finalize_benchmarks( - self, - num_objs, - total_written_frames, - total_pipeline_ms, - real_world_latency_ms, - total_sf_pipeline_ms, - frame_loop_latency_ms, - coverage_percentages, - total_read_time, - total_queue_saturation, - queue_saturation_history, - ): - """Aggregates metrics and adds them to the results list.""" - sf_enabled = self.config.sf_enabled - stat_frame_count = self.stat_frame_count - stat_fps = self.stat_fps - - h2d_label = ( - "Pinned H2D Transfer (PCIe DMA)" - if self.is_cuda - else "Data Preparation Overhead" - ) - # d2h_label = ( - # "D2H Transfer (PCIe Download)" - # if self.is_cuda - # else "Array Extraction Overhead" - # ) - - total_pipeline_s = total_pipeline_ms / 1000.0 # Full pipeline - - total_real_pipeline_s = ( - real_world_latency_ms / 1000.0 - ) # Pipeline until last frame sent to writer - real_est_fps = ( - self.frame_count_target / total_real_pipeline_s - if total_real_pipeline_s > 0 - else 0 - ) - - # if total_written_frames > 0: - duration_s = ( - self.reader.total_input_frames / self.reader.input_fps - if self.reader.input_fps > 0 - else 0 - ) - out_duration_s = ( - total_written_frames / self.reader.target_fps - if self.reader.target_fps > 0 - else 0 - ) - print( - f"Expected duration: {self.duration_target:.2f} stream_duration_s: {duration_s:.2f} output_duration_s: {out_duration_s:.2f}" - ) - - h2d_display_label = f"Reader {h2d_label}:" - avg_reader_ms = (total_read_time / total_written_frames) * 1000 - # avg_resize_ms = (total_resize_time / total_written_frames)*1000 - # avg_write_ms = (total_disk_write_overhead / total_written_frames)*1000 - target_frame_fps = total_written_frames / total_pipeline_s - all_frame_fps = self.reader.total_input_frames / total_pipeline_s - avg_copy_ms = (self.reader.total_shm_copy_time / total_written_frames) * 1000 - # avg_blocked_ms = ( - # self.reader.total_queue_wait_time / total_written_frames - # ) * 1000 - - # Avg Blocked MS tracks your downstream GIL blocks and serialization stalls - avg_blocked_ms = ( - sum(self.component_stats.get("queue_blocked", [0.0])) - / max(1, len(self.component_stats.get("queue_blocked", []))) - if self.component_stats.get("queue_blocked") - else 0.0 - ) - - avg_saturation = (total_queue_saturation / total_written_frames) * 100 - peak_saturation = ( - max(queue_saturation_history) * 100 if queue_saturation_history else 0 - ) - target_match_ratio = ( - total_written_frames / (total_pipeline_s * self.reader.target_fps) - ) * 100 - - frame_drop = max( - 0.0, - (1.0 - (total_written_frames / max(1, self.reader.total_input_frames))) - * 100.0, - ) - serial_pressure = (avg_blocked_ms / max(0.1, frame_loop_latency_ms)) * 100.0 - evac_vel = target_frame_fps / max(0.1, all_frame_fps) - - # Isolate the ratio of sequential loop stalls against full execution bounds - backpressure_index = (avg_blocked_ms / max(0.1, frame_loop_latency_ms)) * 100.0 - - if self.is_cuda: - avg_h2d_ms = (self.reader.total_h2d_time / total_written_frames) * 1000 - avg_prep_ms = 0.0 - else: - avg_prep_ms = (self.reader.total_h2d_time / total_written_frames) * 1000 - avg_h2d_ms = 0.0 - - # Calculate structural frame size payload in Gigabytes (H * W * Channels) - frame_size_gb = (self.reader.frame_height * self.reader.frame_width * 3) / ( - 1024**3 - ) - - # 1. Compute Peak H2D PCIe Throughput - avg_h2d_s = ( - ( - sum(self.component_stats["dma_upload"]) - / len(self.component_stats["dma_upload"]) - ) - / 1000.0 - if self.component_stats["dma_upload"] - else 0 - ) - if self.is_cuda and avg_h2d_s > 0.00001: - self.pcie_throughput_gbps = frame_size_gb / avg_h2d_s - else: - self.pcie_throughput_gbps = ( - 0.0 # Safe fallback baseline for non-PCIe pipelines (CPU) + fps_comparison_chart( + chart_path, results, fps_key="Pipeline FPS (Video frames)" ) - # Calculate bus saturation relative to standard Gen4 x16 baseline ceilings (31.5 GB/s) - # Scale to an index percentage safely - pcie_bus_saturation = (self.pcie_throughput_gbps / 31.5) * 100.0 - - # 2. Extract PyTorch VRAM Fragmentation Delta Metrics - if self.is_cuda and torch.cuda.is_available(): - peak_alloc = torch.cuda.max_memory_allocated(0) / 1024**2 - peak_reserved = torch.cuda.max_memory_reserved(0) / 1024**2 - self.vram_efficiency = ( - (peak_alloc / peak_reserved * 100.0) if peak_reserved > 0 else 100.0 + chart_path = ( + request.cls.result_dir + / f"{request.cls.csv_filename.replace('.csv', '')}_pipelineFPS_target.png" ) - else: - self.vram_efficiency = ( - 0.0 # Clean zero baseline representation for CPU runs + fps_comparison_chart( + chart_path, results, fps_key="Pipeline FPS (Target frames)" ) - # Calculate averages for component breakdowns - # avg_reader_ms = (total_read_time / self.reader.total_input_frames) * 1000 - # avg_reader_ms = (total_read_time / self.frame_count_target) * 1000 - avg_sf = ( - sum(self.component_stats["sf"]) / len(self.component_stats["sf"]) - if self.component_stats["sf"] - else 0 - ) - avg_roi = ( - sum(self.component_stats["roi"]) / len(self.component_stats["roi"]) - if self.component_stats["roi"] - else 0 - ) - avg_det = ( - sum(self.component_stats["det"]) / len(self.component_stats["det"]) - if self.component_stats["det"] - else 0 - ) - - # Total Latency Sum (SF + ROI + DET) - det_latency_ms = avg_sf + avg_roi + avg_det - det_latency_s = det_latency_ms / 1000.0 - det_est_fps = (total_written_frames / det_latency_s) if det_latency_s > 0 else 0 - - # Track model workloads against preprocessing overheads (sf_time + roi_time) - preprocessing_overhead = avg_sf + avg_roi - model_cost_density = avg_det / max(0.1, preprocessing_overhead) - - loop_overhead = max( - 0.0, 100.0 - ((det_latency_ms / max(1.0, frame_loop_latency_ms)) * 100.0) - ) - avg_cov = ( - sum(coverage_percentages) / len(coverage_percentages) - if coverage_percentages - else (100.0 if not sf_enabled else 0) - ) - - avg_crops = ( - sum(self.crops_per_frame_list) / len(self.crops_per_frame_list) - if self.crops_per_frame_list - else 0 - ) - - # Calculate how often we hit a high-motion cap (e.g., 20 crops) - capped_frames = sum(1 for c in self.crops_per_frame_list if c >= 20) - cap_rate = ( - (capped_frames / len(self.crops_per_frame_list)) * 100 - if self.crops_per_frame_list - else 0 - ) - - # avg_queue = ( - # sum(self.component_stats["queue_blocked"]) - # / len(self.component_stats["queue_blocked"]) - # if self.component_stats["queue_blocked"] - # else 0 - # ) - # avg_batch = ( - # sum(self.component_stats["batch_sizes"]) - # / len(self.component_stats["batch_sizes"]) - # if self.component_stats["batch_sizes"] - # else 0 - # ) - - backlog_list = self.component_stats.get("thread_backlog", []) - avg_backlog = ( - sum(backlog_list) / len(backlog_list) if len(backlog_list) > 0 else 0.0 - ) - - print("\n" + "=" * 60) - print( - f" FULLY-OPTIMIZED ASYNC STAGE ({self.config.DEVICE}) PIPELINE BREAKDOWN " - ) - print("=" * 60) - print(f"Total Output Frames Written: {total_written_frames}") - print(f"Total Pipeline Execution Time: {total_pipeline_s:.4f} seconds") - print(f"Overall Processing Speed: {target_frame_fps:.2f} FPS") - print("-" * 60) - print("MAIN CONSUMER LOOP TIMELINE (SEQUENTIAL OVERHEAD):") - print(f" 1. Shared Memory Copy to Host: {avg_copy_ms:6.2f} ms") - print( - f" 2. GIL / Downstream Queue Serialization Stalls: {avg_blocked_ms:6.2f} ms" - ) - print(f" 3. Pure Video Frame File-Ingestion Read: {avg_reader_ms:6.2f} ms") - print("-" * 60) - print("BACKGROUND INGESTION HEALTH (ASYNC METRICS):") - print( - f" A. Inbound Stream Decode Speed: {all_frame_fps:6.2f} FPS" - ) - print(f" B. {h2d_display_label:<42} {avg_h2d_ms:6.2f} ms") - print(f" C. Consumer Queue Saturation Density: {avg_saturation:6.1f}%") - print( - f" D. Peak PCIe Upload Throughput: {self.pcie_throughput_gbps:6.2f} GB/s" - ) - print( - f" E. Active Thread Pool Work Backlog: {avg_backlog:6.1f} tasks" - ) - print( - f" F. VRAM Hardware Memory Efficiency (Cache): {self.vram_efficiency:6.1f}%" - ) - print("-" * 60) - - # EXPANDED PERFORMANCE INSIGHTS AND DIAGNOSTICS - print("PIPELINE HEALTH & BEHAVIOR INSIGHTS:") - if avg_saturation > 80.0: - pipeline_status = "CHOKED" - print( - f" • Status: \033[91m🔴 {pipeline_status}\033[0m (Downstream logic cannot keep up with inbound stream speed)" - ) - elif avg_saturation > 40.0: - pipeline_status = "BALANCED" - print( - f" • Status: \033[93m🟡 {pipeline_status}\033[0m (Queue buffer is actively pacing consumer workloads)" + chart_path = ( + request.cls.result_dir + / f"{request.cls.csv_filename.replace('.csv', '')}_sfdetectFPS_target.png" ) - else: - pipeline_status = "IDLE/LIGHT" - print( - f" • Status: \033[92m🟢 {pipeline_status}\033[0m (Consumer loop finishes ahead of background ingestion clock)" - ) - - print(f" • Peak Queue Fullness Reached: {peak_saturation:.1f}%") - # Calculate stream drop indicator - print(f" • Targeted Pacing Delivery Accuracy: {target_match_ratio:.1f}%") - print(f" • Downstream Serialization Pressure Index: {serial_pressure}") - print(f" • Core Queue Evacuation Velocity Rank: {evac_vel}") - print( - f" • Hardware Compute Backpressure Index: {backpressure_index:6.2f}%" - ) - print( - f" • Preprocessing to Inference Cost Density: {model_cost_density:6.2f}x" - ) - print( - f" • Physical PCIe Gen4 Bus Saturation Level: {pcie_bus_saturation:6.2f}%" - ) - print("=" * 60) - - self.__class__.benchmarks.append( - { - "Test Name": self._testMethodName, - "Detection Type": self.config.DETECTION_TYPE, - "Device": self.config.DEVICE, - "Smart Filtering": "Enabled" if sf_enabled else "Disabled", - "Video": self.source, # self.name? - "Video FPS": f"{self.reader.input_fps:.2f}", - "Video Original Duration (s)": f"{duration_s:.4f}", - "Video Frames": self.reader.total_input_frames, - # PIPELINE OVERVIEW - "Target FPS": f"{self.reader.target_fps:.2f}", - "Output Duration (s)": f"{out_duration_s:.4f}", - "Output Frames": total_written_frames, - "Pipeline Latency (s)": f"{total_pipeline_s:.2f}", - "Pipeline FPS (Video frames)": f"{all_frame_fps:.2f}", - "Pipeline FPS (Target frames)": f"{target_frame_fps:.2f}", - "Real Pipeline Latency (s)": f"{total_real_pipeline_s:.2f}", - "Real Pipeline FPS (Target frames)": f"{real_est_fps:.2f}", - # MAIN CONSUMER LOOP TIMELINE (SEQUENTIAL OVERHEAD) - "Avg Frame Reading (ms)": f"{avg_reader_ms:.2f}", - # "Avg Resize (ms)": f"{avg_resize_ms:.2f}", - # "Avg Writer Async Handoff (ms)": f"{avg_write_ms:.2f}", - # BACKGROUND INGESTION HEALTH (ASYNC METRICS) - "Avg Host Copy (ms)": f"{avg_copy_ms:.2f}", - "Avg DMA Upload (ms)": f"{avg_h2d_ms:.2f}", - "Avg Data Prep Overhead (ms)": f"{avg_prep_ms:.2f}", - "Avg Queue Blocked (ms)": f"{avg_blocked_ms:.2f}", - "Avg Queue Saturation (%)": f"{avg_saturation:.2f}", - # Framework Overhead Leak Tracking (Measures loop time spent outside raw AI inference model blocks) - "Loop Overhead %": f"{loop_overhead:.2f}%", - # Inbound Stream Frame Drop Rate (Identifies if background threads are dropping packets due to I/O) - "Inbound Frame Drop %": f"{frame_drop:.2f}%", - # Serialization Pressure Index (Tracks what percentage of your frame time is lost to thread stalls) - "Serialization Pressure %": f"{serial_pressure:.2f}%", - # Queue Evacuation Velocity Coefficient (Values > 1.0 mean your consumer loop drains frames faster than ingestion) - "Evacuation Velocity": f"{evac_vel:.2f}x", - "Compute Backpressure Index": f"{backpressure_index:.2f}%", - "Model Cost Density Ratio": f"{model_cost_density:.2f}x", - "PCIe Bus Saturation %": f"{pcie_bus_saturation:.2f}%", - # PIPELINE HEALTH & BEHAVIOR INSIGHTS - "Pipeline Status": pipeline_status, - "Peak Queue Fullness (%)": f"{peak_saturation:.2f}", - "Targeted Pacing Delivery (%)": f"{target_match_ratio:.2f}", - # DETECTION PIPELINE (Should B NULL) - "SF/Detection Latency (s)": f"{det_latency_s:.2f}", - "SF/Detection FPS": f"{det_est_fps:.2f}", - "Avg SF (ms)": f"{avg_sf:.2f}", - "Avg ROI (ms)": f"{avg_roi:.2f}", - "Avg Obj. Detection (ms)": f"{avg_det:.2f}", - "Total Breakdown Sum (ms)": f"{det_latency_ms:.2f}", - "Avg Area Coverage %": f"{avg_cov:.2f}%", - "Avg Crops/Frame": f"{avg_crops:.1f}", - # "Frames w/o ROIs": self.no_roi_frame_cnt, - "Crop Cap Rate (>20)": f"{cap_rate:.1f}%", - "Objects Detected": num_objs, - # TIming to display frame (read to after send to render queue) - "Display Latency (s)": f"{self.elapsed_display_time:.2f}", - "Display Frames": stat_frame_count, - "Display FPS": f"{stat_fps:.2f}", - "PCIe Bandwidth Throughput (GB/s)": f"{self.pcie_throughput_gbps:.2f}", - "Avg Async Thread Pool Backlog": f"{sum(self.component_stats.get('thread_backlog', [0])) / len(self.component_stats.get('thread_backlog', [1])):.1f}", - "VRAM Allocation Efficiency (%)": f"{self.vram_efficiency:.1f}%", - } - ) - - print( - f"\n[{self._testMethodName}] Pipeline Latency (s): {total_pipeline_s:.2f} sec" - ) - print( - f"\n[{self._testMethodName}] Pipeline FPS (Target frames): {target_frame_fps:.2f} ({total_written_frames} frames)" - ) - print( - f"\n[{self._testMethodName}] Pipeline FPS (Video frames): {all_frame_fps:.2f} ({self.reader.total_input_frames} frames)" - ) - print( - f"\n[{self._testMethodName}] SF/Detection FPS (Target frames): {det_est_fps:.2f} ({total_written_frames} frames)" - ) - print( - f"\n[{self._testMethodName}] Display FPS: {stat_fps:.2f} ({stat_frame_count} frames)" - ) + fps_comparison_chart(chart_path, results, fps_key="SF/Detection FPS") - def frame2video( - self, - device_frame, - frameNum, - metadata_or_bbs, - class_list, - ): - scale_display_x = self.disp_w / 640 - scale_display_y = self.disp_h / 640 - - if self.device_input == "cuda" and torch.is_tensor(device_frame): - # 2. Fast Inline VRAM Downscaling into our static memory slot - # Reshape to (Batch, Channel, Height, Width) seamlessly without duplicating data - gpu_tensor = device_frame[None, :].permute(0, 3, 1, 2).float() - - resized_tensor = torch.nn.functional.interpolate( - gpu_tensor, - size=(self.disp_h, self.disp_w), - mode="nearest", + chart_path = ( + request.cls.result_dir + / f"{request.cls.csv_filename.replace('.csv', '')}_displayFPS_target.png" ) - - # CONVERTS TO CPU EARLIER (WORKS but lowers fps) - # hwc_byte_tensor = resized_tensor.squeeze(0).permute(1, 2, 0).byte() - # cpu_tensor = hwc_byte_tensor.cpu() - # bgr_contiguous = cpu_tensor.contiguous() - - # Using copy_() avoids creating any runtime allocations or memory-stride drift. - self.static_gpu_byte_bchw.copy_(resized_tensor.byte()) - - # Safely reshape the pre-allocated, locked GPU memory layout back to standard HWC array topology. - # Since the underlying array layout is strictly contiguous, this permute is guaranteed - # to be zero-copy on the GPU and free from memory race stalls. - bgr_contiguous = self.static_gpu_byte_bchw.squeeze(0).permute(1, 2, 0) - - # 1. Grab the current free pinned slot tracking variables from your reader - d2h_idx = self.reader.d2h_selector - pinned_tensor_buf = self.reader.d2h_buffers[d2h_idx] - - # c_idx = self.canvas_selector - # current_canvas = self.static_host_canvases[c_idx] - - # host_tensor_view = torch.as_tensor(current_canvas, device="cpu") - - # 3. Non-blocking asynchronous PCIe DMA Download directly into our page-locked canvas - with torch.cuda.stream(self.reader.download_stream): - # pinned_tensor = torch.from_numpy(current_canvas).cuda() - pinned_tensor_buf.copy_(bgr_contiguous, non_blocking=True) - - # Synchronize only the side download stream layout channel - self.reader.download_stream.synchronize() - - cpu_360p_frame = self.reader.d2h_numpys[d2h_idx] - - # 5. Non-Blocking Push straight to your background AsyncVideoWriter thread pool - # We pass a direct .copy() slice so the hot loop can instantly reuse the pinned ring buffer - display_frame = np.array(cpu_360p_frame, copy=True, order="C") - - if display_frame is not None and display_frame.shape[-1] == 3: - display_frame = cv2.cvtColor(display_frame, cv2.COLOR_RGB2BGR) - - # --- Draw Detection Overlays --- - if isinstance(metadata_or_bbs, dict): - # Object Mode (YOLO Structs) - display_frame = get_metadata_overlay( - display_frame, - metadata_or_bbs, - class_list, - (scale_display_x, scale_display_y), - (self.disp_w, self.disp_h), - is_bgr=True, - ) - - elif metadata_or_bbs is not None: - # # Motion / Smart Filtering Overlay Path - display_frame = get_bb_overlay( - display_frame, - metadata_or_bbs, - (scale_display_x, scale_display_y), - (self.disp_w, self.disp_h), - ) - - self.async_writer.write_frame(display_frame) - # self.canvas_selector = 1 - self.canvas_selector - self.reader.d2h_selector = 1 - self.reader.d2h_selector + fps_comparison_chart(chart_path, results, fps_key="Display FPS") else: - # Reusable baseline track for CPU execution mappings - display_frame = cv2.resize( - device_frame, - (self.disp_w, self.disp_h), - interpolation=cv2.INTER_NEAREST, + main_app_logger.info( + "[WARN] Benchmarking matrix empty. Skipping final CSV and chart exports." ) - # if metrics["bbs"] is not None: - # for box in metrics["bbs"]: - # cv2.rectangle(cpu_resized, (int(box[0]), int(box[1])), (int(box[2]), int(box[3])), (0, 255, 0), 2) - # --- Draw Detection Overlays --- - if isinstance(metadata_or_bbs, dict): - # Object Mode (YOLO Structs) - display_frame = get_metadata_overlay( - display_frame, - metadata_or_bbs, - class_list, - (scale_display_x, scale_display_y), - (self.disp_w, self.disp_h), - is_bgr=True, - ) - elif metadata_or_bbs is not None: - # # Motion / Smart Filtering Overlay Path - display_frame = get_bb_overlay( - display_frame, - metadata_or_bbs, - (scale_display_x, scale_display_y), - (self.disp_w, self.disp_h), - ) - self.async_writer.write_frame(display_frame) - # PIPELINE FUNCTIONS -------------------------------------------- - - def pipeline_fn(self, device_frame, overall_frame_num, stat_start_time): - num_objs = 0 - metrics = {"sf_time": 0, "roi_time": 0, "det_time": 0, "bbs": None} +@pytest.mark.usefixtures("setup_context") +class TestDetections(BaseTest): + """ + Pytest runner that spawns the isolated worker, waits for completion, + and merges the returned metrics into the main class for CSV/Chart generation. + """ - # Pre-allocate non-blocking event records to extract clean GPU timings - sf_start, sf_end = ( - torch.cuda.Event(enable_timing=True), - torch.cuda.Event(enable_timing=True), - ) - roi_start, roi_end = ( - torch.cuda.Event(enable_timing=True), - torch.cuda.Event(enable_timing=True), - ) - det_start, det_end = ( - torch.cuda.Event(enable_timing=True), - torch.cuda.Event(enable_timing=True), - ) + benchmarks = [] # Class-level attribute required by _finalize_benchmarks - if self.config.sf_enabled: - if self.device_input == "cuda": - sf_start.record(self.inference_stream) - bgs_input_frame = ( - device_frame.byte() - if torch.is_tensor(device_frame) - else device_frame - ) - inf_data = self.rbtd_full_gpu(bgs_input_frame) - sf_end.record(self.inference_stream) - else: - t_start = time.perf_counter() - inf_data = self.rbtd_full_cpu(device_frame) - metrics["sf_time"] = (time.perf_counter() - t_start) * 1000.0 - else: - inf_data = {} - inf_data["frameNum"] = self.frame_count_target - - # --- 2. FULL-RESOLUTION ROI EXTRACTION MAPS --- - bbs_full_res = None - if self.config.sf_enabled: - if self.device_input == "cuda": - roi_start.record(self.inference_stream) - bbs_full_res = self.get_gpu_rois( - inf_data["full_frame"], - self.frame_count_target, - inf_data["mask"], - ) - roi_end.record(self.inference_stream) - metrics["bbs"] = bbs_full_res - else: - t_start = time.perf_counter() - bbs_full_res = self.get_cpu_rois( - inf_data["full_frame"], - self.frame_count_target, - inf_data["mask"], - ) - metrics["roi_time"] = (time.perf_counter() - t_start) * 1000.0 - metrics["bbs"] = bbs_full_res - - if self.config.DEBUG_FLAG: - # if self.device_input == "cuda": - # # Isolate data capturing using an asynchronous memory clone operation - # # This safely copies data without dropping your multi-stream execution pipeline concurrency - # display_source = inf_data["mask"].clone().to("cpu", non_blocking=True) - # else: - display_source = inf_data["mask"] - # self.inference_stream.synchronize() - # display_source = inf_data["mask"] - self.debug_save_mask( - display_source, self.frame_count_target, rois=bbs_full_res - ) - - clean_bbs = [] - if self.config.sf_enabled and bbs_full_res is not None: - if torch.is_tensor(bbs_full_res): - clean_bbs = bbs_full_res.detach().cpu().numpy() - else: - clean_bbs = np.array(bbs_full_res) - - # If inline optimizations left the tensor in channels-first format (B, C, H, W), - # restore it to standard standard layout standard (H, W, C) so get_detections - # can decode bounding boxes accurately without corrupting weights. - det_frame = device_frame - # Cast float canvases back to standard unsigned byte tracking arrays - # so get_detections can safely run its internal float normalizations. - if torch.is_tensor(det_frame): - det_frame = det_frame.byte() - - if det_frame.ndim == 4: - det_frame = det_frame.squeeze(0).permute(1, 2, 0) - elif det_frame.shape[0] == 3: - det_frame = det_frame.permute(1, 2, 0) - - # --- 3. MODEL INFERENCE TIMING BLOCK --- - if self.device_input == "cuda": - det_start.record(self.inference_stream) - else: - t_start = time.perf_counter() - - metadata = {} - if self.config.DETECTION_TYPE != "motion": - # Pass directly or use a light NumPy view slice to protect the raw pointer - # det_frame = ( - # device_frame - # if not isinstance(device_frame, np.ndarray) - # else device_frame.view() - # ) - - merged = clean_bbs if self.config.sf_enabled else None - metadata, _ = self.get_detections( - det_frame, - self.frame_in_clip_count, - merged=merged, - thickness=self.config.THICKNESS, - device_input=self.config.device_input, + @pytest.mark.parametrize("device", ["gpu", "cpu"]) + @pytest.mark.parametrize("sf_enabled", [True, False]) + @pytest.mark.parametrize("detection_type", ["object", "motion"]) + def test_detections(self, device, sf_enabled, detection_type, gt_enabled=False): + if detection_type == "motion" and not sf_enabled: + pytest.skip( + "Pure YOLO mode is structurally invalid for detection_type 'motion'.\n" ) - num_objs = len(metadata.keys()) - else: - num_objs = len(clean_bbs) - metadata = clean_bbs - - if self.device_input == "cuda": - det_end.record(self.inference_stream) - # torch.cuda.synchronize() - self.inference_stream.synchronize() - - # Extract hardware timings smoothly without stalling mid-run - if self.config.sf_enabled: - metrics["sf_time"] = sf_start.elapsed_time(sf_end) - metrics["roi_time"] = roi_start.elapsed_time(roi_end) - metrics["det_time"] = det_start.elapsed_time(det_end) - metrics["bbs"] = bbs_full_res - metrics["batch_density"] = ( - len(clean_bbs) if clean_bbs is not None else 0 - ) - else: - # Full-frame YOLO baseline tracks the elapsed time from t_start on page 20, line 1273 - metrics["sf_time"] = 0.0 - metrics["roi_time"] = 0.0 - metrics["det_time"] = det_start.elapsed_time(det_end) - metrics["bbs"] = None - metrics["batch_density"] = 1 # 1 Full frame block - else: - # CPU Path Execution: Must use standard wall-clock timing loops to avoid CUDA Event errors - if self.config.sf_enabled: - # Timings for sf_time and roi_time are already gathered on CPU on page 19 line 1221 and page 20 line 1246 - metrics["det_time"] = (time.perf_counter() - t_start) * 1000.0 - metrics["bbs"] = bbs_full_res - metrics["batch_density"] = ( - len(clean_bbs) if clean_bbs is not None else 0 - ) - else: - metrics["sf_time"] = 0.0 - metrics["roi_time"] = 0.0 - metrics["det_time"] = (time.perf_counter() - t_start) * 1000.0 - metrics["bbs"] = None - metrics["batch_density"] = 1 - - data_to_draw = clean_bbs if self.config.DETECTION_TYPE == "motion" else metadata - - self.frame2video( - det_frame, - inf_data["frameNum"], - data_to_draw, - self.label_source, - ) + # Pull the values dynamically assigned by the setup_context fixture + init_args = { + "source": self.__class__.source, + "name": self.__class__.name, + "result_dir": str(self.__class__.result_dir), + "active_streams": {}, + "benchmarks": self.__class__.benchmarks, + } - self.update_frame(stat_start_time) - return num_objs, metrics # Skip full detection pass - - def run_realtime_inference(self, sf_enabled=True): - # self.duration_target = 30 - self.status = "RUNNING" - metrics = {} - num_objs = 0 - self.is_cuda = self.device.lower() == "gpu" and torch.cuda.is_available() - self.frame_count_target = 0 - self.next_process_idx = 0.0 - self.frame_in_clip_count = 0 - total_pipeline_time_ms = 0.0 - total_read_time = 0.0 - total_queue_saturation = 0.0 - # queue_saturation_history = [0.0] - total_written_frames = 0 - total_sf_pipeline_time_ms = 0.0 - real_world_latency_ms = 0.0 - - # queue_size = 4 - total_run_pipelinefn = 0 - # total_read_time = 0 - # total_resize_time = 0 - # total_written_frames = 0 - # total_disk_write_overhead = 0.0 - total_frame_loop_latency = 0.0 - total_active_processing_overhead = 0.0 - # total_queue_saturation = 0.0 - # total_queue_saturation = 0.0 - queue_saturation_history = [] - consecutive_slow_frames = 0 - # total_dropped_frames = 0 - - coverage_percentages = [] - self.component_stats = { - "sf": [], - "roi": [], - "det": [], - "dma_upload": [], # Track PCIe Transfer Latencies - "queue_blocked": [], # Track GIL Serialization stalls - "batch_sizes": [], # Track Smart Filtering density - "thread_backlog": [], # Track thread work pool backlog + test_args = { + "device": device, + "detection_type": detection_type, + "sf_enabled": sf_enabled, + "gt_enabled": gt_enabled, } - self.crops_per_frame_list = [] - self.step_size = ( - float(self.input_fps) / float(self.target_fps) - if hasattr(self, "target_fps") - else 1.0 - ) - self.max_target_frames = ( - int(self.duration_target * float(self.target_fps)) - if hasattr(self, "target_fps") - else float("inf") + main_app_logger.info( + f"\n{'=' * 60}\n" + f"[TEST HARNESS] Spawning isolated high-speed process for {self.__class__.name} (SF: {sf_enabled})...\n" + f"{'=' * 60}" ) - # self.start() - # time.sleep(0.1) - - # if self.source.startswith("rtsp"): - # short_name = "rtsp" - # else: - # short_name = Path(self.source).stem - # output_path= f"{self.config.SHARED_OUTPUT}/{short_name}_{self.device}.mp4" - # disp_wh = (self.disp_w, self.disp_h) - # async_writer = AsyncVideoWriter( - # self.output_path, - # cv2.VideoWriter_fourcc(*'avc1'), - # float(self.target_fps), - # (self.disp_w, self.disp_h) - # ) - - pipeline_start_time = time.perf_counter() - last_loop_cycle_timestamp = time.perf_counter() - - # try: - self.dynamic_limit = max(2, int(0.5 * self.target_fps)) - # last_frame_time = time.perf_counter() - while self.active and self.frame_count_target < self.max_target_frames: - try: - # FRAME RETRIEVAL --------------------------------------------- - try: - frame_start_time = time.perf_counter() - t_read = time.perf_counter() - # if self.active: - ret, frame_8k, frame_num = ( - self.reader.read() - ) # Successfully reads the 8K frame - - if not ret or frame_8k is None: - # Check if there are any remaining frames still buffered in flight inside the reader queue - # if hasattr(self.reader, 'frame_queue') and not self.reader.frame_queue.empty(): - # ret, frame_8k, frame_num = self.reader.read() - # if not ret or frame_8k is None: - # break - # else: - # break - if self.reader is None or ( - hasattr(self.reader, "stopped") and self.reader.stopped - ): - if self.device_input == "cuda": - torch.cuda.synchronize() - self.active = False - break - continue - - reader_time = time.perf_counter() - t_read - total_read_time += reader_time - - # Calculate the exact time gap between the last frame completion - # and the start of the next read. This accurately captures downstream GIL blocks. - cycle_gap = time.perf_counter() - last_loop_cycle_timestamp - # Subtract the actual read duration to isolate the thread stall time - true_serialization_stall = max( - 0.0, (cycle_gap - (time.perf_counter() - t_read)) * 1000.0 - ) - self.component_stats["queue_blocked"].append( - true_serialization_stall - ) + # Spawn a pristine Python process (identical to test_pipeline.py's stream_worker) + ctx = mp.get_context("spawn") + res_queue = ctx.Queue() - except queue.Empty: - if getattr(self.reader, "reconnect_failed", False): - self.active = False - break - time.sleep(0.002) - continue + worker_p = ctx.Process( + target=isolated_detection_worker, args=(init_args, test_args, res_queue) + ) - # print(f"frame_num: {frame_num}") + worker_p.start() + worker_p.join() # Block Pytest until the isolated pipeline finishes - self.stat_start_time = time.perf_counter() - self.frame_count += 1 - # is_target_frame = True + # Extract and merge results + if not res_queue.empty(): + result = res_queue.get() - # Real-Time Metric A: Track Queue Saturation Density Ratio - # current_q_size = self.reader.frame_queue.qsize() - saturation_ratio = ( - self.reader.frame_queue.qsize() / self.reader.frame_queue.maxsize + if result["status"] == "error": + pytest.fail( + f"Pipeline crashed in worker process:\n{result.get('error')}\n{result.get('traceback')}" ) - total_queue_saturation += saturation_ratio - queue_saturation_history.append(saturation_ratio) - - # RUN PIPELINE_FN --------------------------------------------- - run_pipelinefn_start = time.perf_counter() - self.frame_count_target += 1 - self.frame_in_clip_count += 1 - - if self.device_input == "cuda": - # Instantiate a lightweight hardware fence event object - curr_event = torch.cuda.Event(enable_timing=False) - # curr_event.record() - # Record the exact milestone on the default stream right after fetching the frame data - curr_event.record(torch.cuda.default_stream()) - self.inference_stream.wait_event(curr_event) - - with torch.cuda.stream(self.inference_stream): - nob, metrics = self.pipeline_fn( - frame_8k, - frame_num, - # is_target_frame, - self.stat_start_time, - ) - # torch.cuda.default_stream().synchronize() - # self.inference_stream.synchronize() - - # Extract PCIe DMA upload latency from your hardware background reader - if hasattr(self.reader, "total_h2d_time"): - avg_h2d_frame_ms = ( - self.reader.total_h2d_time - / max(1, total_written_frames + 1) - ) * 1000.0 - self.component_stats["dma_upload"].append(avg_h2d_frame_ms) - else: - nob, metrics = self.pipeline_fn( - frame_8k, - frame_num, - # is_target_frame, - self.stat_start_time, - ) - num_objs += nob - - total_written_frames += 1 - - # Real-Time Metric B: Frame Processing Latency Check - frame_loop_latency = ( - time.perf_counter() - frame_start_time - ) * 1000 # ms - total_frame_loop_latency += frame_loop_latency - - # Isolate active processing time (excluding the queue blocking read) - active_processing_overhead = frame_loop_latency - (reader_time * 1000) - total_active_processing_overhead += active_processing_overhead - - # RUNTIME TERMINAL WARNING ALERTS - if saturation_ratio >= 1.0 or active_processing_overhead > ( - 1000 / self.target_fps - ): - consecutive_slow_frames += 1 - if ( - consecutive_slow_frames % self.target_fps == 0 - ): # Throttle terminal spam - print( - f"\033[93m⚠️ [PERF WARNING] Main loop starving! Waiting on stream ingestion... " - f"Read Wait: {reader_time:.1f}ms | Other Wait: {active_processing_overhead:.1f}ms | Queue Fullness: {saturation_ratio * 100:.0f}%\033[0m" - ) - else: - consecutive_slow_frames = max(0, consecutive_slow_frames - 1) - - if total_written_frames % (5 * self.target_fps) == 0: - print( - f"Captured {total_written_frames}/{self.max_target_frames} frames..." - ) - - # WRAP-UP FRAME INSTANCE --------------------------------------------- - # if self.device_input == "cuda" and torch.cuda.is_available(): - # torch.cuda.default_stream().synchronize() - - total_run_pipelinefn += time.perf_counter() - run_pipelinefn_start - - # Explicitly delete frame variables to free their references - del frame_8k - - last_loop_cycle_timestamp = time.perf_counter() + else: + metrics = result["metrics"] - # Force PyTorch's internal allocator to release cached segments back to the OS - # if self.frame_count_target % (5 * self.target_fps) == 0: - # print( - # f"Captured {self.frame_count_target}/{self.max_target_frames} frames..." - # ) - # torch.cuda.empty_cache() - # torch.cuda.ipc_collect() + self.__class__.benchmarks.append(metrics) - except torch.cuda.OutOfMemoryError: - print("\n" + "!" * 70) - print( - "[CRITICAL TEST CRASH] GPU MEMORY CEILING HIT INSIDE RUNNER LOOP!" - ) - print( - "Freezing allocation history registers and writing diagnostic log..." + main_app_logger.info( + f"[TEST HARNESS] Worker returned successfully. Display FPS: {metrics.get('Display FPS')}" ) - print("!" * 70) - try: - import os - - snapshot_filename = ( - f"/tmp/test_vram_leak_profile_pid{os.getpid()}.pickle" - ) - torch.cuda.memory._dump_snapshot(snapshot_filename) - print( - f"[PROFILER SUCCESSFUL] Snapshot profile written to: {snapshot_filename}" - ) - print( - "--> Drag and drop this file directly into: https://pytorch.org" - ) - except Exception as dump_err: - print(f"Failed to record profile data snapshot: {dump_err}") - - # Force safe system unlinking of background workers to clean up OS handles - self.active = False - if hasattr(self, "reader") and self.reader is not None: - self.reader.stop() - raise - - except Exception: - traceback.print_exc() - - # POST FRAME PROCESSING --------------------------------------------- - pipeline_end_time = time.perf_counter() - - # Resolve the final execution window. If the stream ran to completion, - # use the operational end marker to avoid measuring downstream disk write bottlenecks. - final_end_marker = getattr(self, "pipeline_completion_timestamp", None) - if final_end_marker is None: - final_end_marker = time.perf_counter() - # self.pipeline_completion_timestamp = final_end_marker - - real_world_latency_ms = float((final_end_marker - pipeline_start_time) * 1000.0) - - total_sf_pipeline_time_ms = float( - sum(self.component_stats.get("sf", [0.0])) - + sum(self.component_stats.get("roi", [0.0])) - + sum(self.component_stats.get("det", [0.0])) - ) - total_pipeline_time_ms = float( - (pipeline_end_time - pipeline_start_time) * 1000.0 - ) - - # total_queue_saturation = sum( - # self.component_stats.get("batch_sizes", [0.0]) - # ) # Sample array profile proxy - - if metrics != {}: - num_crops = len(metrics["bbs"]) if metrics["bbs"] is not None else 0 - self.crops_per_frame_list.append(num_crops) - - # Context-aware extraction of the newly proposed metrics - density = metrics.get("batch_density", 0 if self.config.sf_enabled else 1) - self.component_stats["batch_sizes"].append(density) - - self.component_stats["sf"].append(metrics["sf_time"]) - self.component_stats["roi"].append(metrics["roi_time"]) - self.component_stats["det"].append(metrics["det_time"]) - - # Calculate coverage OUTSIDE the timed block to prevent interference - if self.config.sf_enabled and metrics.get("bbs") is not None: - cov = self.calculate_unique_coverage(metrics["bbs"]) - coverage_percentages.append(cov) - self.async_writer.release() - # Continuously sample the thread work pool backlog state mechanics - if hasattr(self, "executor") and self.executor is not None: - # Safely probe internal concurrent.futures work queue bounds - self.component_stats["thread_backlog"].append( - self.executor._work_queue.qsize() - ) - else: - self.component_stats["thread_backlog"].append(0) - - # Real-Time Metric B: Frame Processing Latency Check - # total_frame_loop_latency = (pipeline_end_time - frame_start_time) * 1000 # ms - - # Isolate active processing time (excluding the queue blocking read) - # total_active_processing_overhead = total_frame_loop_latency - total_read_time #(reader_time * 1000) - - # RUNTIME TERMINAL WARNING ALERTS - # if saturation_ratio >= 1.0 or active_processing_overhead > (1000 / self.target_fps): - # consecutive_slow_frames += 1 - # if consecutive_slow_frames % self.target_fps == 0: # Throttle terminal spam - # print( - # f"\033[93m⚠️ [PERF WARNING] Main loop starving! Waiting on stream ingestion... " - # f"Read Wait: {frame_loop_latency:.1f}ms | Queue Fullness: {saturation_ratio * 100:.0f}%\033[0m" - # ) - # else: - # consecutive_slow_frames = max(0, consecutive_slow_frames - 1) - - # CALCULATE PERFORMANCE METRICS --------------------------------------------- - print( - f"\nExecution Finished. Total Output Frames Written: {self.frame_count_target}" - ) - - # Render your metrics dashboard table cleanly - if self.frame_count_target > 0: - avg_frame_loop_latency = total_frame_loop_latency / self.frame_count_target - self._finalize_benchmarks( - num_objs, - self.frame_count_target, # Reads the updated integer directly! - total_pipeline_time_ms, - real_world_latency_ms, - total_sf_pipeline_time_ms, - avg_frame_loop_latency, - coverage_percentages, - total_read_time, - total_queue_saturation, - queue_saturation_history, - ) + # Basic functionality assertions + assert metrics is not None, "Metrics dictionary should not be None." + assert int(metrics.get("Output Frames", 0)) > 0, ( + "No frames were written to output." + ) else: - print( - f"[SKIPPED SUMMARY] Only {self.frame_count_target} frames processed. ", - flush=True, - ) - self.stop() - - -# MAIN ---------------------------------------- + pytest.fail("Worker process died unexpectedly without returning metrics.") +# ========================================================================= +# MAIN +# ========================================================================= def get_pytest_filter_expression(args): - print("\n" + "=" * 50) - print("TARGET SELECTION PREVIEW") - print("=" * 50) + main_app_logger.info("=" * 50) + main_app_logger.info("TARGET SELECTION PREVIEW") + main_app_logger.info("=" * 50) - filter_expression = "test_detections" + filter_expression = Path(__file__).stem # applied_subs = [] if args.sf_enabled is not None: @@ -1952,25 +677,19 @@ def get_pytest_filter_expression(args): # Target hardware context selection filter applies globally across all test cases if args.device.lower() != "all": - print(f" 💻 Hardware Context Constraint: {args.device.upper()}") + main_app_logger.info(f" 💻 Hardware Context Constraint: {args.device.upper()}") filter_expression = f"({filter_expression}) and {args.device.lower()}" else: - print(" 💻 Hardware Context Constraint: ALL AVAILABLE") + main_app_logger.info(" 💻 Hardware Context Constraint: ALL AVAILABLE") - print("=" * 50) - print(f"COMPILED PYTEST KEYWORD EXPRESSION:\n 👉 {filter_expression}") - print("=" * 50 + "\n") + main_app_logger.info("=" * 50) + main_app_logger.info(f"COMPILED PYTEST KEYWORD EXPRESSION: {filter_expression}") + main_app_logger.info("=" * 50) return filter_expression if __name__ == "__main__": - # Force all PyTorch extension handles to compile and load BEFORE threads spawn - if torch.cuda.is_available(): - _ = torch.zeros(1).cuda() - import torch._ops - import torch.utils - # TEST ARGUMENTS parser = argparse.ArgumentParser(description="Run Video Detection Pipeline Tests") parser.add_argument( @@ -1998,13 +717,6 @@ def get_pytest_filter_expression(args): ) # Filter tests - parser.add_argument( - "--type", - type=str, - choices=["object", "motion"], - dest="detection_type", - help="Filter by detection type (object or motion)", - ) parser.add_argument( "--device", type=str, @@ -2012,6 +724,13 @@ def get_pytest_filter_expression(args): choices=["cpu", "gpu", "all"], help="Filter by device (cpu or gpu)", ) + parser.add_argument( + "--type", + type=str, + choices=["object", "motion"], + dest="detection_type", + help="Filter by detection type (object or motion)", + ) parser.add_argument( "--sf", action="store_true", @@ -2019,6 +738,13 @@ def get_pytest_filter_expression(args): dest="sf_enabled", help="Filter by Smart Filtering", ) + parser.add_argument( + "--no-sf", + action="store_false", + default=None, + dest="sf_enabled", + help="Filter by Smart Filtering", + ) # DEBUGGING parser.add_argument( @@ -2034,6 +760,13 @@ def get_pytest_filter_expression(args): help="Number of frames used for debugging [Default: 100]", ) + # PROFILING + parser.add_argument( + "--profile", + action="store_true", + help="Enable profiling", + ) + args = parser.parse_args() # UPDATE ENVIRONMENTAL VARIABLES @@ -2042,6 +775,7 @@ def get_pytest_filter_expression(args): os.environ["MODEL_NAME"] = args.model_name os.environ["DEBUG"] = "1" if args.debug else "0" os.environ["DEBUG_FRAME_LIMIT"] = str(args.debug_frame_limit) + os.environ["ENABLE_PROFILING"] = "True" if args.profile else "False" # detection_type, device, sf_enabled filter_expression = get_pytest_filter_expression(args) @@ -2053,9 +787,16 @@ def get_pytest_filter_expression(args): "-s", "-v", # "--log-cli-level=DEBUG", + "-W", + "ignore:Exception ignored in.*SharedMemory.__del__:UserWarning", + # Target the exact module rewrite warning path inside the configuration framework + "-W", + "ignore:Module already imported so cannot be rewritten; anyio:_pytest.warning_types.PytestAssertRewriteWarning", + # Bypass Pytest's internal proxy + "--capture=no", __file__, ] - print(f"Launching tests for {args.source}") + # main_app_logger.info(f"Launching tests for {args.source}") sys.exit(pytest.main(pytest_args)) diff --git a/fastapi/tests/test_eval.py b/fastapi/tests/test_eval.py new file mode 100644 index 0000000..a23b241 --- /dev/null +++ b/fastapi/tests/test_eval.py @@ -0,0 +1,812 @@ +# ============================================================================== +# SUPPRESS WARNINGS +# import warnings + +import pytest + +# warnings.filterwarnings( +# "ignore", category=FutureWarning, message=".*reduce_op` is deprecated.*" +# ) + +pytestmark = [ + pytest.mark.filterwarnings( + "ignore:.*anyio:_pytest.warning_types.PytestAssertRewriteWarning" + ), + pytest.mark.filterwarnings( + "ignore:Context managers for TensorRT types are deprecated:DeprecationWarning" + ), + pytest.mark.filterwarnings( + "ignore:Exception ignored in.*SharedMemory.__del__:UserWarning" + ), + # Global message fallback pattern captures local execution frames + pytest.mark.filterwarnings("ignore:.*reduce_op.*:FutureWarning"), +] + +# ============================================================================== +# LOGGING +import logging +import os +import sys + +logging.basicConfig( + level=logging.INFO, + # format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", + format="%(asctime)s [%(levelname)s] %(name)s (%(filename)s:%(lineno)d) - %(message)s", + handlers=[logging.StreamHandler(sys.stdout)], +) + +# Suppress low-delay reference block warnings from OpenCV/PyAV/FFmpeg +# os.environ["OPENCV_FFMPEG_LOGLEVEL"] = "-8" +# os.environ["OPENCV_LOG_LEVEL"] = "OFF" +logging.getLogger("libav").setLevel(logging.CRITICAL) +logging.getLogger("libav.hevc").setLevel(logging.CRITICAL) +logging.getLogger("matplotlib").setLevel(logging.WARNING) +logging.getLogger("ultralytics").setLevel(logging.WARNING) +# logger = trt.Logger(trt.Logger.WARNING) +# trt.init_libnvinfer_plugins(logger, "") +main_app_logger = logging.getLogger(__name__) + +# ============================================================================== +# IMPORTS + +import argparse +import asyncio +import csv +import ctypes +import faulthandler +import gc +import multiprocessing as mp +import sys +import threading +import time +import traceback +import tracemalloc +from pathlib import Path + +import cv2 +import psutil +import torch + +# import torch + +# Retrieve repo packages +REPO_DIR = str(Path(__file__).parent.parent) +sys.path.insert(1, REPO_DIR) +from base_test import ( + BaseTest, + download_eval_data, + fps_comparison_chart, +) +from include.default_configs import ( + CUSTOM_MODEL_FLAG_DEFAULT, + DEBUG_DEFAULT, + MODEL_NAME_DEFAULT, + THRESHOLD_VALUE, +) +from include.handlers import ( + get_test_handler, +) +from include.utils import ( + PipelineConfig, + ResourceTrackerFilter, + install_and_load_pip_package, + str2bool, +) +from metrics import DeviceAgnosticOnTheFlyEvaluator + +gdown = install_and_load_pip_package("gdown", attribute_name=None) + + +# ============================================================================== +# SETUP +# Hooks directly into the OS kernel signals to force Python to print a full +# stack traceback right before it dies, allowing you to see which line of +# Python code caused the hard crash +faulthandler.enable() + +try: + # Retain standard spawn mode to prevent CUDA context driver deadlocks + torch.multiprocessing.set_start_method("spawn", force=True) +except RuntimeError: + pass + +force_export = False +# target_width, target_height = 7680, 4320 +STATE_CAPTURE = False + +# Force Python's multiprocessing layer to quiet tracking cleanup race conditions +os.environ["PYTHONWARNINGS"] = "ignore" +sys.warnoptions.append("ignore") + + +# ========================================================================= +# ISOLATED BACKGROUND WORKER +# ========================================================================= + + +def isolated_detection_worker(init_args, test_args, res_queue): + device = test_args["device"] + detection_type = test_args["detection_type"] + sf_enabled = test_args["sf_enabled"] + video_name = test_args["video_name"] + gt_enabled = test_args["gt_enabled"] + + if device == "gpu" and torch.cuda.is_available(): + torch.cuda.synchronize() + torch.cuda.ipc_collect() + torch.cuda.empty_cache() + gc.collect() + + # Establish an accurate post-initialization hardware baseline + if str2bool(os.getenv("ENABLE_PROFILING", "False")): + tracemalloc.start() + + start_allocated, start_reserved = 0, 0 + if device == "gpu" and torch.cuda.is_available(): + torch.cuda.memory._record_memory_history( + enabled=True, + trace_alloc_max_entries=250000, + trace_alloc_record_context=True, + ) + + # This captures your baseline AFTER initialize_variables() is done + start_allocated = torch.cuda.memory_allocated(0) + start_reserved = torch.cuda.memory_reserved(0) + + try: + cv2.cuda.setBufferPoolUsage(False) + except AttributeError: + pass + else: + gc.collect() + process = psutil.Process(os.getpid()) + start_allocated = ( + process.memory_info().rss + ) # Reuse start_allocated container for host memory baseline + start_reserved = 0 + + try: + instance, _ = get_test_handler(TestEvalSmartFilteringDetections(), device) + + test_dir = Path(__file__).parent + video_dir = test_dir / "eval_data/Anti-UAV-Tracking-V0-8K" + vid_source = video_dir / f"{video_name}/{video_name}.mp4" + + if not vid_source.exists(): + _ = download_eval_data([video_name]) + + instance.source = str(vid_source) + instance.name = vid_source.stem + instance.result_dir = Path(init_args["result_dir"]) + instance.active_streams = init_args["active_streams"] + instance.__class__.benchmarks = init_args["benchmarks"] # Sandbox the metrics + + vid_dir = instance.result_dir / device + vid_dir.mkdir(parents=True, exist_ok=True) + os.environ["TEST_SUITE_RENDER_DIR"] = str(vid_dir) + + # if instance.source.startswith("rtsp"): + # short_name = "rtsp" + # else: + # short_name = Path(instance.source).stem + + # config definition + config = PipelineConfig( + SHARED_OUTPUT=str(instance.result_dir), # defined in context + CUSTOM_MODEL_FLAG=os.getenv("CUSTOM_MODEL_FLAG", CUSTOM_MODEL_FLAG_DEFAULT), + DEVICE=device.upper(), + OMIT_DETECTIONS_FLAG=True, + TEST_MODE=True, + DEBUG=os.getenv("DEBUG", DEBUG_DEFAULT), + DEBUG_FRAME_LIMIT=int(os.getenv("DEBUG_FRAME_LIMIT", 100)), + ENABLE_QUERYING=False, + MODEL_NAME=os.getenv("MODEL_NAME", MODEL_NAME_DEFAULT), + SMART_FILTERING_ENABLED=sf_enabled, + THRESHOLD_VALUE=int(os.getenv("THRESHOLD_VALUE", THRESHOLD_VALUE)), + DETECTION_TYPE=detection_type, + ) + + # INITIALIZE CLASS (mimic DeviceBaseHandler.__init__) ------------------------------ + instance.evaluator = DeviceAgnosticOnTheFlyEvaluator(device=device) + + instance.is_rtsp = str(instance.source).startswith("rtsp:/") + instance.active = True + instance.config = config + + # kwarg definition + instance._testMethodName = ( + f"{video_name}_sf_{detection_type}_{device}" + if sf_enabled + else f"{video_name}_yolo_{detection_type}_{device}" + ) + instance.video_output_name = f"{instance._testMethodName}.mp4" + instance.gt_enabled = gt_enabled + + instance.loop = asyncio.get_event_loop() + instance.frame_ready_event = asyncio.Event() + instance._is_stopped = False + instance._stop_lock = threading.Lock() # Local lock for this instance + instance.main_startup_event = mp.Event() + + instance.device = instance.config.DEVICE + instance.device_input = instance.config.device_input + instance.disp_w, instance.disp_h = instance.config.DISPLAY_FRAME_SIZE + instance.resize_h, instance.resize_w = [ + instance.config.MODEL_H, + instance.config.MODEL_W, + ] + + instance.setup_reader( + instance.config.TARGET_FPS, + instance.config.CLIP_DURATION, + startup_event=instance.main_startup_event, + ) + instance.initialize_variables() + instance.setup_threads() + instance.last_heartbeat = time.perf_counter() + + if STATE_CAPTURE: + main_app_logger.info( + "[DIAGNOSTIC] Registering system state baseline layout..." + ) + instance.baseline_before_start = instance.capture_state_snapshot() + + def orig_fn(profiler): + return instance.run_realtime_inference( + sf_enabled=instance.config.sf_enabled, + profiler=profiler, + gt_enabled=gt_enabled, + ) + + def profiler_fn(): + profiler = None + try: + if str2bool(os.getenv("ENABLE_PROFILING", "False")): + Profiler = install_and_load_pip_package( + "pyinstrument", attribute_name="Profiler" + ) + + profiler = Profiler(interval=0.005) # 5ms sampling interval + + # Telling the statistical sampler to skip recording exception blocks completely + # stops stack_sampler.py from ballooning RAM over long production runs. + if hasattr(profiler, "_sampler") and profiler._sampler: + profiler._sampler.trace_exceptions = False + + profiler.start() + + orig_fn(profiler) + + if str2bool(os.getenv("ENABLE_PROFILING", "False")): + # 2. Redirect standard error to the filter trap right before report compilation + original_stderr = sys.stderr + sys.stderr = ResourceTrackerFilter(original_stderr) + + try: + # Force standard stdout to flush out any lingering teardown messages + # BEFORE pyinstrument dumps its massive ASCII tree block. + sys.stdout.flush() + + # main_app_logger.info(profiler.output_text(color=True)) + # profiler.main_app_logger.info(color=True) + # prof_output = profiler.output_text(color=True) + # main_app_logger.info( + # f"\n=== LATENCY BREAKDOWN FOR {self.name} ({device}) ===\n{prof_output}\n", + # + # ) + + # Save a clean, interactive tree map for visual analysis + output_html_path = instance.output_path.replace( + ".mp4", "_profile.html" + ) + # output_html_path = f"/tmp/profile_{video_name}_{device}.html" + profiler.write_html(output_html_path) + main_app_logger.info( + f"[PROFILER] Performance tree map exported to {output_html_path}", + ) + + finally: + sys.stderr = original_stderr + if "profiler" in locals(): + try: + # Force the Python interpreter to detach pyinstrument's sampling hooks + sys.setprofile(None) + + # Completely decouple internal statistical sessions to drop C-heap frames + if hasattr(profiler, "_last_session"): + profiler._last_session = None + if hasattr(profiler, "last_session"): + profiler.last_session = None + + # Forcibly clear out internal memoryview strings caching tree metrics + if ( + hasattr(profiler, "session") + and profiler.session is not None + ): + if hasattr(profiler.session, "frame_groups"): + profiler.session.frame_groups = None + if hasattr(profiler.session, "samples"): + profiler.session.samples = [] + + # Purge compiled tree metrics structures + profiler.session = None + del profiler + except Exception: + pass + + # Trigger an immediate native Linux heap compression pass + # This grabs the newly abandoned pyinstrument C-heap blocks and + # flushes them to the OS before the fixture assessment snapshot fires! + gc.collect() + try: + libc = ctypes.CDLL("libc.so.6") + libc.malloc_trim(0) + except Exception: + pass + + except Exception: + traceback.print_exc() + + if str2bool(os.getenv("ENABLE_PROFILING", "False")) and hasattr( + instance, "process_thread" + ): + # Re-initialize the thread context using our safe profile wrapper proxy + instance.process_thread = threading.Thread(target=profiler_fn, daemon=True) + + if gt_enabled: + instance.VIDEO_GT_DETAILS = download_eval_data([instance.name]) + else: + instance.VIDEO_GT_DETAILS = None + + instance.start() + + while instance.active or not instance._is_stopped: + time.sleep(0.25) + if getattr(instance, "status", None) == "DONE": + break + + if ( + hasattr(instance, "process_thread") + and instance.process_thread is not None + ): + if not instance.process_thread.is_alive(): + main_app_logger.info( + "[TEST HARNESS] Background worker exited. Breaking loop.", + ) + break + + instance.stop_threads(["process_thread"]) + + # Force early hardware driver sweep before unbinding threads + if instance.device_input == "cuda" and torch.cuda.is_available(): + torch.cuda.synchronize() + torch.cuda.empty_cache() + torch.cuda.ipc_collect() + + gc.collect() + + try: + if STATE_CAPTURE: + # --- CAPTURE STATE POINT B (Right before cleanup) --- + main_app_logger.info( + "[DIAGNOSTIC] Gathering active execution workspace layouts..." + ) + state_after_stop = instance.capture_state_snapshot() + + # 3. Print the granular delta analysis out to your terminal screen + new_keys_generated, mutated_keys, static_keys = ( + instance.print_lifecycle_delta( + instance.baseline_before_start, + state_after_stop, + return_keys=True, + ) + ) + # self.config.DEBUG_FLAG and + if len(new_keys_generated) > 0 or len(mutated_keys) > 0: + # Inform the blueprint engine to eliminate every difference found between Point A and B + instance.stop_blueprint_executor(new_keys_generated, mutated_keys) + except Exception: + traceback.print_exc() + + assert instance.status == "DONE" + + # TEARDOWN + instance.execute_teardown() + + if str2bool(os.getenv("ENABLE_PROFILING", "False")): + gc.collect() + if ( + device == "gpu" and torch.cuda.is_available() + ): # self.device_input == "cuda" and torch.cuda.is_available(): + torch.cuda.synchronize() + torch.cuda.empty_cache() + instance.assess_memory( + device, instance.name, start_allocated, start_reserved + ) + + if len(instance.__class__.benchmarks) > 0: + final_metrics = instance.__class__.benchmarks[-1] + res_queue.put({"status": "success", "metrics": final_metrics}) + else: + res_queue.put({"status": "error", "error": "No benchmarks generated."}) + + except Exception as e: + res_queue.put( + {"status": "error", "error": str(e), "traceback": traceback.format_exc()} + ) + res_queue.put( + {"status": "error", "error": str(e), "traceback": traceback.format_exc()} + ) + + +# ========================================================================= +# PYTEST TEST HARNESS +# ========================================================================= +def pytest_generate_tests(metafunc): + """ + Pytest Hook: Generates a complete cross-product matrix + of (video_name x device) dynamically during collection phase. + """ + if ( + "video_name" in metafunc.fixturenames + and "device" in metafunc.fixturenames + and "detection_type" in metafunc.fixturenames + and "sf_enabled" in metafunc.fixturenames + ): + # Define video targets explicitly during collection + video_names = [f"video{i:02d}" for i in range(9, 21)] + # video_names = ["video16", "video17", "video12"] # , "video18"] + # video_names = ["video17"] # DEBUG: worst perf + # video_names = ["video12"] # DEBUG: worst perf + # video_names = ["video09"] + + # Read device target filters passed from your CLI parser args block + # Falls back to both types if running globally via '--device all' + device_input = os.getenv("TEST_SUITE_DEVICE_FILTER", "all") + devices = ["cpu", "gpu"] if device_input == "all" else [device_input] + + type_input = os.getenv("TEST_SUITE_DETECTION_FILTER", "all") + detection_types = ["motion", "object"] if type_input == "all" else [type_input] + + sf_input = os.getenv("TEST_SUITE_SF_FILTER", "None") + sf_flags = [True, False] if sf_input == "None" else [str2bool(sf_input)] + + # Tell Pytest to create an individual test instance for each discovered name + metafunc.parametrize("device", devices) + metafunc.parametrize("sf_enabled", sf_flags) + metafunc.parametrize("detection_type", detection_types) + metafunc.parametrize("video_name", video_names) + + +@pytest.fixture(scope="class") +def setup_context(request): + """Replaces setUpClass: Runs once per test class.""" + current_test_filename = Path(__file__).stem + test_dir = Path(__file__).parent + + # model_name = os.getenv("MODEL_NAME", MODEL_NAME_DEFAULT) + # Handler.__init__ (main items) + request.cls.is_rtsp = False + + # model_name = os.getenv("MODEL_NAME", MODEL_NAME_DEFAULT) + request.cls.result_dir = test_dir / f"{current_test_filename}_drone_results" + request.cls.result_dir.mkdir(parents=True, exist_ok=True) + + # Benchmark statistics + request.cls.benchmarks = [] + request.cls.csv_filename = "drone_eval.csv" + request.cls.csv_path = request.cls.result_dir / request.cls.csv_filename + + # request.cls.active = True + request.cls.active_streams = {} + + # RUN ALL PARAMETERIZED TESTS ---------------------------------------- + yield + + # FINAL CSV EXPORT -------------------------------------------------- + if request.cls.benchmarks: + # Filter and exclude rows that were interrupted or failed initialization due to an early pytest skip + request.cls.benchmarks = [ + r for r in request.cls.benchmarks if r and "Test Name" in r + ] + results = request.cls.benchmarks + for row in results: + if "gpu" in row["Test Name"].lower(): + match_name = row["Test Name"].replace("gpu", "cpu") + cpu_row = next( + (r for r in results if r["Test Name"] == match_name), None + ) + if cpu_row: + gpu_fps = float(row["Pipeline FPS (Target frames)"]) + cpu_fps = float(cpu_row["Pipeline FPS (Target frames)"]) + speedup = (gpu_fps / cpu_fps) if cpu_fps > 0 else 0 + row["Pipeline Speedup vs CPU"] = f"{speedup:.2f}x" + else: + row["Pipeline Speedup vs CPU"] = "N/A" + else: + row["Pipeline Speedup vs CPU"] = "Baseline (CPU)" + + if results: + # # Define video targets explicitly during collection + # video_names = [f"video{i:02d}" for i in range(1, 21)] + # ALL_VIDEO_GT_DETAILS = download_eval_data(video_names) + + keys = results[0].keys() + + with open(str(request.cls.csv_path), "w", newline="") as f: + dict_writer = csv.DictWriter(f, fieldnames=keys) + dict_writer.writeheader() + dict_writer.writerows(results) + main_app_logger.info(f"[FINAL] Benchmarks saved to {request.cls.csv_path}") + + main_app_logger.info("=" * 125) + main_app_logger.info( + f"{'Test Name':<25} | {'mAP_10':<5} | {'mAP_10_95':<10} | {'Pipeline FPS (Target)':<21} | {'Avg Frame Reading (ms)':<22} | {'Pipeline Speedup vs CPU':<15}", + ) + main_app_logger.info("-" * 125) + + for r in results: + main_app_logger.info( + f"{r['Test Name']:<25} | {r['mAP_10']:0.4f} | {r['mAP_10_95']:0.4f} | {r['Pipeline FPS (Target frames)']:<21} | {r['Avg Frame Reading (ms)']:<22} | {r.get('Pipeline Speedup vs CPU', 'N/A'):<10}" + ) + main_app_logger.info("=" * 125) + + chart_path = ( + request.cls.result_dir + / f"{request.cls.csv_filename.replace('.csv', '')}_pipelineFPS.png" + ) + fps_comparison_chart( + chart_path, results, fps_key="Pipeline FPS (Video frames)" + ) + + chart_path = ( + request.cls.result_dir + / f"{request.cls.csv_filename.replace('.csv', '')}_pipelineFPS_target.png" + ) + fps_comparison_chart( + chart_path, results, fps_key="Pipeline FPS (Target frames)" + ) + + chart_path = ( + request.cls.result_dir + / f"{request.cls.csv_filename.replace('.csv', '')}_sfdetectFPS_target.png" + ) + fps_comparison_chart(chart_path, results, fps_key="SF/Detection FPS") + + chart_path = ( + request.cls.result_dir + / f"{request.cls.csv_filename.replace('.csv', '')}_displayFPS_target.png" + ) + fps_comparison_chart(chart_path, results, fps_key="Display FPS") + + else: + main_app_logger.info( + "[WARN] Benchmarking matrix empty. Skipping final CSV and chart exports." + ) + + +@pytest.mark.usefixtures("setup_context") +class TestEvalSmartFilteringDetections(BaseTest): + """ + Pytest runner that spawns the isolated worker, waits for completion, + and merges the returned metrics into the main class for CSV/Chart generation. + """ + + benchmarks = [] # Class-level attribute required by _finalize_benchmarks + + # @pytest.mark.parametrize("device", ["gpu", "cpu"]) + # @pytest.mark.parametrize("sf_enabled", [True, False]) + # @pytest.mark.parametrize("detection_type", ["object", "motion"]) + def test_eval( + self, device, detection_type, sf_enabled, video_name, gt_enabled=True + ): + if detection_type == "motion" and not sf_enabled: + pytest.skip( + "Pure YOLO mode is structurally invalid for detection_type 'motion'.\n" + ) + + # Pull the values dynamically assigned by the setup_context fixture + init_args = { + # "source": self.__class__.source, + # "name": self.__class__.name, + "result_dir": str(self.__class__.result_dir), + "active_streams": {}, + "benchmarks": self.__class__.benchmarks, + } + + test_args = { + "device": device, + "detection_type": detection_type, + "sf_enabled": sf_enabled, + "video_name": video_name, + "gt_enabled": gt_enabled, + } + + main_app_logger.info( + f"\n{'=' * 60}\n" + f"[TEST HARNESS] Spawning isolated high-speed process for {video_name} (SF: {sf_enabled})...\n" + f"{'=' * 60}" + ) + + # Spawn a pristine Python process (identical to test_pipeline.py's stream_worker) + ctx = mp.get_context("spawn") + res_queue = ctx.Queue() + + worker_p = ctx.Process( + target=isolated_detection_worker, args=(init_args, test_args, res_queue) + ) + + worker_p.start() + worker_p.join() # Block Pytest until the isolated pipeline finishes + + # Extract and merge results + if not res_queue.empty(): + result = res_queue.get() + + if result["status"] == "error": + pytest.fail( + f"Pipeline crashed in worker process:\n{result.get('error')}\n{result.get('traceback')}" + ) + else: + metrics = result["metrics"] + + self.__class__.benchmarks.append(metrics) + + main_app_logger.info( + f"[TEST HARNESS] Worker returned successfully. Display FPS: {metrics.get('Display FPS')}" + ) + + # Basic functionality assertions + assert metrics is not None, "Metrics dictionary should not be None." + assert int(metrics.get("Output Frames", 0)) > 0, ( + "No frames were written to output." + ) + else: + pytest.fail("Worker process died unexpectedly without returning metrics.") + + +# ========================================================================= +# MAIN +# ========================================================================= +def get_pytest_filter_expression(args): + main_app_logger.info("=" * 50) + main_app_logger.info("TARGET SELECTION PREVIEW") + main_app_logger.info("=" * 50) + + filter_expression = Path(__file__).stem + # applied_subs = [] + + if args.sf_enabled is not None: + # Target exact parameter tokens generated by pytest parametrization + sf_str = "-True-" if args.sf_enabled else "-False-" + filter_expression += f" and {sf_str}" + # applied_subs.append(f"sf_enabled={args.sf_enabled}") + + if args.detection_type: + filter_expression += f" and {args.detection_type}" + + # Target hardware context selection filter applies globally across all test cases + if args.device.lower() != "all": + main_app_logger.info(f" 💻 Hardware Context Constraint: {args.device.upper()}") + filter_expression = f"({filter_expression}) and {args.device.lower()}" + else: + main_app_logger.info(" 💻 Hardware Context Constraint: ALL AVAILABLE") + + main_app_logger.info("=" * 50) + main_app_logger.info(f"COMPILED PYTEST KEYWORD EXPRESSION: {filter_expression}") + main_app_logger.info("=" * 50) + + return filter_expression + + +if __name__ == "__main__": + # TEST ARGUMENTS + parser = argparse.ArgumentParser(description="Run Video Detection Pipeline Tests") + parser.add_argument( + "-s", + "--source", + type=str, + default="anduril_swarm_8K.mp4", + help="Video filename (located in /inputs)", + ) + + # MODEL TO USE + parser.add_argument( + "--no-custom", + action="store_false", + dest="custom_model_flag", + help="Enable if using Ultralytics YOLO model", + ) + parser.add_argument( + "-m", + "--model", + type=str, + default="drone_detection", + dest="model_name", + help="Name of model. Required if `--no-custom` is enabled. [Default: drone_detection]", + ) + + # Filter tests + parser.add_argument( + "--device", + type=str, + default="all", + choices=["cpu", "gpu", "all"], + help="Filter by device (cpu or gpu)", + ) + parser.add_argument( + "--type", + type=str, + choices=["object", "motion"], + dest="detection_type", + help="Filter by detection type (object or motion)", + ) + parser.add_argument( + "--sf", + action="store_true", + default=None, + dest="sf_enabled", + help="Filter by Smart Filtering", + ) + parser.add_argument( + "--no-sf", + action="store_false", + default=None, + dest="sf_enabled", + help="Filter by Smart Filtering", + ) + + # DEBUGGING + parser.add_argument( + "--debug", + action="store_true", + help="Enable debug message and save intermediate images for Smart Filtering tests", + ) + parser.add_argument( + "-n", + type=int, + default=100, + dest="debug_frame_limit", + help="Number of frames used for debugging [Default: 100]", + ) + + # PROFILING + parser.add_argument( + "--profile", + action="store_true", + help="Enable profiling", + ) + + args = parser.parse_args() + + # UPDATE ENVIRONMENTAL VARIABLES + os.environ["VIDEO_FILENAME"] = args.source + os.environ["CUSTOM_MODEL_FLAG"] = "True" if args.custom_model_flag else "False" + os.environ["MODEL_NAME"] = args.model_name + os.environ["DEBUG"] = "1" if args.debug else "0" + os.environ["DEBUG_FRAME_LIMIT"] = str(args.debug_frame_limit) + os.environ["ENABLE_PROFILING"] = "True" if args.profile else "False" + + # detection_type, device, sf_enabled + filter_expression = get_pytest_filter_expression(args) + + # PYTEST COMMAND + pytest_args = [ + "-k", + filter_expression, + "-s", + "-v", + # "--log-cli-level=DEBUG", + "-W", + "ignore:Exception ignored in.*SharedMemory.__del__:UserWarning", + # Target the exact module rewrite warning path inside the configuration framework + "-W", + "ignore:Module already imported so cannot be rewritten; anyio:_pytest.warning_types.PytestAssertRewriteWarning", + # Bypass Pytest's internal proxy + "--capture=no", + __file__, + ] + + # main_app_logger.info(f"Launching tests for {args.source}") + + sys.exit(pytest.main(pytest_args)) diff --git a/fastapi/tests/test_model.py b/fastapi/tests/test_model.py index ffdc3bd..08920de 100644 --- a/fastapi/tests/test_model.py +++ b/fastapi/tests/test_model.py @@ -1,49 +1,505 @@ +# ============================================================================== +# SUPPRESS WARNINGS +# import warnings + +import pytest + +# warnings.filterwarnings( +# "ignore", category=FutureWarning, message=".*reduce_op` is deprecated.*" +# ) + +pytestmark = [ + pytest.mark.filterwarnings( + "ignore:.*anyio:_pytest.warning_types.PytestAssertRewriteWarning" + ), + pytest.mark.filterwarnings( + "ignore:Context managers for TensorRT types are deprecated:DeprecationWarning" + ), + pytest.mark.filterwarnings( + "ignore:Exception ignored in.*SharedMemory.__del__:UserWarning" + ), + # Global message fallback pattern captures local execution frames + pytest.mark.filterwarnings("ignore:.*reduce_op.*:FutureWarning"), +] + +# ============================================================================== +# LOGGING +import logging +import os +import sys + +logging.basicConfig( + level=logging.INFO, + # format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", + format="%(asctime)s [%(levelname)s] %(name)s (%(filename)s:%(lineno)d) - %(message)s", + handlers=[logging.StreamHandler(sys.stdout)], +) + +# Suppress low-delay reference block warnings from OpenCV/PyAV/FFmpeg +# os.environ["OPENCV_FFMPEG_LOGLEVEL"] = "-8" +# os.environ["OPENCV_LOG_LEVEL"] = "OFF" +logging.getLogger("libav").setLevel(logging.CRITICAL) +logging.getLogger("libav.hevc").setLevel(logging.CRITICAL) +logging.getLogger("matplotlib").setLevel(logging.WARNING) +logging.getLogger("ultralytics").setLevel(logging.WARNING) +# logger = trt.Logger(trt.Logger.WARNING) +# trt.init_libnvinfer_plugins(logger, "") +main_app_logger = logging.getLogger(__name__) + +# ============================================================================== +# IMPORTS + +# os.environ["OMP_NUM_THREADS"] = "2" +# os.environ["MKL_NUM_THREADS"] = "2" +# os.environ["PYTORCH_ALLOC_CONF"] = "expandable_segments:True" +# try: +# torch.set_num_interop_threads(2) # 1) +# torch.set_num_threads(4) # 2) +# except RuntimeError: +# # Safe graceful fallback if a process-level fork duplicated context maps +# pass import argparse +import asyncio import csv +import faulthandler import gc -import inspect -import logging -import os +import multiprocessing as mp import sys +import threading import time -import types +import traceback +import tracemalloc from pathlib import Path -import pytest -import tensorrt as trt +import cv2 +import psutil import torch -sys.path.insert(1, str(Path(__file__).parent.parent)) +# import torch + +# Retrieve repo packages +REPO_DIR = str(Path(__file__).parent.parent) +sys.path.insert(1, REPO_DIR) +from base_test import ( + BaseTest, +) from include.default_configs import ( CUSTOM_MODEL_FLAG_DEFAULT, DEBUG_DEFAULT, MODEL_NAME_DEFAULT, THRESHOLD_VALUE, ) +from include.detectors import GeneralObjectDetector from include.handlers import ( - CPUStreamHandler, - DeviceBaseHandler, - GPUStreamHandler, + get_test_handler, +) +from include.utils import ( + PipelineConfig, + str2bool, ) -from include.models import get_model -from include.utils import PipelineConfig + +# objgraph = install_and_load_pip_package("objgraph", attribute_name=None) +# torch.set_grad_enabled(False) + +# ============================================================================== +# MONKEY PATCH +# Cache the hardware availability state globally. +# This prevents internal framework loops from triggering driver/NVML checks per frame. +# _cuda_available = torch.cuda.is_available() + + +# def _patched_is_available(): +# return _cuda_available + + +# torch.cuda.is_available = _patched_is_available + +# ============================================================================== +# SETUP +# Hooks directly into the OS kernel signals to force Python to print a full +# stack traceback right before it dies, allowing you to see which line of +# Python code caused the hard crash +faulthandler.enable() try: + # Retain standard spawn mode to prevent CUDA context driver deadlocks torch.multiprocessing.set_start_method("spawn", force=True) except RuntimeError: pass -logging.getLogger("matplotlib").setLevel(logging.WARNING) -logger = trt.Logger(trt.Logger.WARNING) -trt.init_libnvinfer_plugins(logger, "") +force_export = False +# target_width, target_height = 7680, 4320 +STATE_CAPTURE = False +# Force Python's multiprocessing layer to quiet tracking cleanup race conditions +os.environ["PYTHONWARNINGS"] = "ignore" +sys.warnoptions.append("ignore") -DEBUG_FLAG_DEFAULT = True if DEBUG_DEFAULT == "1" else False -os.environ["OMP_NUM_THREADS"] = "1" -force_export = False +# ========================================================================= +# ISOLATED BACKGROUND WORKER +# ========================================================================= + + +def isolated_detection_worker(init_args, test_args, res_queue): + device = test_args["device"] + detection_type = test_args["detection_type"] + sf_enabled = test_args["sf_enabled"] + # gt_enabled = test_args["gt_enabled"] + + if device == "gpu" and torch.cuda.is_available(): + torch.cuda.synchronize() + torch.cuda.ipc_collect() + torch.cuda.empty_cache() + gc.collect() + + # Establish an accurate post-initialization hardware baseline + if str2bool(os.getenv("ENABLE_PROFILING", "False")): + tracemalloc.start() + + start_allocated, start_reserved = 0, 0 + if device == "gpu" and torch.cuda.is_available(): + torch.cuda.memory._record_memory_history( + enabled=True, + trace_alloc_max_entries=250000, + trace_alloc_record_context=True, + ) + + # This captures your baseline AFTER initialize_variables() is done + start_allocated = torch.cuda.memory_allocated(0) + start_reserved = torch.cuda.memory_reserved(0) + + try: + cv2.cuda.setBufferPoolUsage(False) + except AttributeError: + pass + else: + gc.collect() + process = psutil.Process(os.getpid()) + start_allocated = ( + process.memory_info().rss + ) # Reuse start_allocated container for host memory baseline + start_reserved = 0 + + try: + instance, _ = get_test_handler(TestModel(), device) + + instance.source = init_args["source"] + instance.name = init_args["name"] + instance.result_dir = Path(init_args["result_dir"]) + instance.active_streams = init_args["active_streams"] + instance.__class__.benchmarks = init_args["benchmarks"] # Sandbox the metrics + + # vid_dir = instance.result_dir / device + # vid_dir.mkdir(parents=True, exist_ok=True) + # os.environ["TEST_SUITE_RENDER_DIR"] = str(vid_dir) + + # if instance.source.startswith("rtsp"): + # short_name = "rtsp" + # else: + # short_name = Path(instance.source).stem + + # config definition + model_name = os.getenv("MODEL_NAME", MODEL_NAME_DEFAULT) + config = PipelineConfig( + SHARED_OUTPUT=str(instance.result_dir), # defined in context + CUSTOM_MODEL_FLAG=os.getenv("CUSTOM_MODEL_FLAG", CUSTOM_MODEL_FLAG_DEFAULT), + DEVICE=device.upper(), + OMIT_DETECTIONS_FLAG=True, + TEST_MODE=True, + DEBUG=os.getenv("DEBUG", DEBUG_DEFAULT), + DEBUG_FRAME_LIMIT=int(os.getenv("DEBUG_FRAME_LIMIT", 100)), + ENABLE_QUERYING=False, + MODEL_NAME=model_name, + SMART_FILTERING_ENABLED=sf_enabled, + THRESHOLD_VALUE=int(os.getenv("THRESHOLD_VALUE", THRESHOLD_VALUE)), + DETECTION_TYPE=detection_type, + ) + + # INITIALIZE CLASS (mimic DeviceBaseHandler.__init__) ------------------------------ + instance.is_rtsp = str(instance.source).startswith("rtsp:/") + instance.active = True + instance.config = config + + # kwarg definition + instance._testMethodName = f"{model_name}_{detection_type}_{device}" + # instance.video_output_name = ( + # f"{instance._testMethodName}_{short_name}.mp4" + # ) + + instance.loop = asyncio.get_event_loop() + instance.frame_ready_event = asyncio.Event() + instance._is_stopped = False + instance._stop_lock = threading.Lock() # Local lock for this instance + instance.main_startup_event = mp.Event() + + instance.device = instance.config.DEVICE + instance.device_input = instance.config.device_input + instance.disp_w, instance.disp_h = instance.config.DISPLAY_FRAME_SIZE + instance.resize_h, instance.resize_w = [ + instance.config.MODEL_H, + instance.config.MODEL_W, + ] + + instance.setup_reader( + instance.config.TARGET_FPS, + instance.config.CLIP_DURATION, + startup_event=instance.main_startup_event, + ) + instance.initialize_variables() + instance.setup_threads() + instance.last_heartbeat = time.perf_counter() + + if STATE_CAPTURE: + main_app_logger.info( + "[DIAGNOSTIC] Registering system state baseline layout..." + ) + instance.baseline_before_start = instance.capture_state_snapshot() + + # def profiler_fn(): + # profiler = None + # try: + # if str2bool(os.getenv("ENABLE_PROFILING", "False")): + # Profiler = install_and_load_pip_package( + # "pyinstrument", attribute_name="Profiler" + # ) + + # profiler = Profiler(interval=0.005) # 5ms sampling interval + + # # Telling the statistical sampler to skip recording exception blocks completely + # # stops stack_sampler.py from ballooning RAM over long production runs. + # if hasattr(profiler, "_sampler") and profiler._sampler: + # profiler._sampler.trace_exceptions = False + + # profiler.start() + + # # orig_fn(profiler) + # instance.run_realtime_inference( + # sf_enabled=instance.config.sf_enabled, + # profiler=profiler, + # gt_enabled=gt_enabled, + # ) + + # if str2bool(os.getenv("ENABLE_PROFILING", "False")): + # # 2. Redirect standard error to the filter trap right before report compilation + # original_stderr = sys.stderr + # sys.stderr = ResourceTrackerFilter(original_stderr) + + # try: + # # Force standard stdout to flush out any lingering teardown messages + # # BEFORE pyinstrument dumps its massive ASCII tree block. + # sys.stdout.flush() + + # # main_app_logger.info(profiler.output_text(color=True)) + # # profiler.main_app_logger.info(color=True) + # # prof_output = profiler.output_text(color=True) + # # main_app_logger.info( + # # f"\n=== LATENCY BREAKDOWN FOR {self.name} ({device}) ===\n{prof_output}\n", + # # + # # ) + + # # Save a clean, interactive tree map for visual analysis + # output_html_path = instance.output_path.replace( + # ".mp4", "_profile.html" + # ) + # # output_html_path = f"/tmp/profile_{video_name}_{device}.html" + # profiler.write_html(output_html_path) + # main_app_logger.info( + # f"[PROFILER] Performance tree map exported to {output_html_path}", + # ) + + # finally: + # sys.stderr = original_stderr + # if "profiler" in locals(): + # try: + # # Force the Python interpreter to detach pyinstrument's sampling hooks + # sys.setprofile(None) + + # # Completely decouple internal statistical sessions to drop C-heap frames + # if hasattr(profiler, "_last_session"): + # profiler._last_session = None + # if hasattr(profiler, "last_session"): + # profiler.last_session = None + + # # Forcibly clear out internal memoryview strings caching tree metrics + # if ( + # hasattr(profiler, "session") + # and profiler.session is not None + # ): + # if hasattr(profiler.session, "frame_groups"): + # profiler.session.frame_groups = None + # if hasattr(profiler.session, "samples"): + # profiler.session.samples = [] + + # # Purge compiled tree metrics structures + # profiler.session = None + # del profiler + # except Exception: + # pass + + # # Trigger an immediate native Linux heap compression pass + # # This grabs the newly abandoned pyinstrument C-heap blocks and + # # flushes them to the OS before the fixture assessment snapshot fires! + # gc.collect() + # try: + # libc = ctypes.CDLL("libc.so.6") + # libc.malloc_trim(0) + # except Exception: + # pass + + # except Exception: + # traceback.print_exc() + + # if str2bool(os.getenv("ENABLE_PROFILING", "False")) and hasattr( + # instance, "process_thread" + # ): + # # Re-initialize the thread context using our safe profile wrapper proxy + # instance.process_thread = threading.Thread(target=profiler_fn, daemon=True) + + # instance.VIDEO_GT_DETAILS = None + # instance.duration_target = 30 + + # instance.start() + + # while instance.active or not instance._is_stopped: + # time.sleep(0.25) + # if getattr(instance, "status", None) == "DONE": + # break + + # if hasattr(instance, "process_thread") and instance.process_thread is not None: + # if not instance.process_thread.is_alive(): + # main_app_logger.info( + # "[TEST HARNESS] Background worker exited. Breaking loop.", + # ) + # break + + # instance.stop_threads(["process_thread"]) + + # Run the actual model loader + instance.processor = GeneralObjectDetector( + instance.config, + device=instance.device_input, + timer_enabled=False, + resize_hw=(instance.resize_h, instance.resize_w), + frame_hw=(instance.frame_height, instance.frame_width), + target_fps=instance.target_fps, + result_dir=instance.result_dir, + run_name=instance._testMethodName, + debug_frame_limit=-1, + ) + + total_session_start = time.perf_counter() + + print("Running model...", flush=True) + results = instance.processor.model.predict( + source=instance.source, + imgsz=(instance.frame_height, instance.frame_width), + batch=1, + device=instance.config.device_input, + stream=any(x in instance.source for x in [".mp4", "rtsp"]), + conf=instance.config.DETECTION_THRESHOLD, + iou=instance.config.IOU_THRESHOLD, + show=False, + save=True, + project=str(instance.config.SHARED_OUTPUT), + name="predict_results", + exist_ok=True, # overwrite if folder exists + data={ + "names": { + i: name for i, name in enumerate(instance.processor.label_source) + } + }, + ) + + frame_cnt = 0 + total_model_preprocess = 0.0 + total_model_inference = 0.0 + total_model_postprocess = 0.0 + for result in results: + frame_cnt += 1 + # Each iteration computes and yields the next frame's latency + total_model_preprocess += result.speed.get("preprocess", 0.0) + total_model_inference += result.speed.get("inference", 0.0) + total_model_postprocess += result.speed.get("postprocess", 0.0) + + # Capture the true real-world duration across all operational processing layers + real_world_latency_ms = (time.perf_counter() - total_session_start) * 1000 + + print("Summarizing run...", flush=True) + instance._finalize_benchmarks( + real_world_latency_ms, + frame_cnt, + total_model_preprocess, + total_model_inference, + total_model_postprocess, + ) + instance.stop() + + # Force early hardware driver sweep before unbinding threads + if instance.device_input == "cuda" and torch.cuda.is_available(): + torch.cuda.synchronize() + torch.cuda.empty_cache() + torch.cuda.ipc_collect() + + gc.collect() + + try: + if STATE_CAPTURE: + # --- CAPTURE STATE POINT B (Right before cleanup) --- + main_app_logger.info( + "[DIAGNOSTIC] Gathering active execution workspace layouts..." + ) + state_after_stop = instance.capture_state_snapshot() + + # 3. Print the granular delta analysis out to your terminal screen + new_keys_generated, mutated_keys, static_keys = ( + instance.print_lifecycle_delta( + instance.baseline_before_start, + state_after_stop, + return_keys=True, + ) + ) + # self.config.DEBUG_FLAG and + if len(new_keys_generated) > 0 or len(mutated_keys) > 0: + # Inform the blueprint engine to eliminate every difference found between Point A and B + instance.stop_blueprint_executor(new_keys_generated, mutated_keys) + except Exception: + traceback.print_exc() + + assert instance.status == "DONE" + + # TEARDOWN + instance.execute_teardown() + + if str2bool(os.getenv("ENABLE_PROFILING", "False")): + gc.collect() + if ( + device == "gpu" and torch.cuda.is_available() + ): # self.device_input == "cuda" and torch.cuda.is_available(): + torch.cuda.synchronize() + torch.cuda.empty_cache() + instance.assess_memory( + device, instance.name, start_allocated, start_reserved + ) + + if len(instance.__class__.benchmarks) > 0: + final_metrics = instance.__class__.benchmarks[-1] + res_queue.put({"status": "success", "metrics": final_metrics}) + else: + res_queue.put({"status": "error", "error": "No benchmarks generated."}) + + except Exception as e: + res_queue.put( + {"status": "error", "error": str(e), "traceback": traceback.format_exc()} + ) + res_queue.put( + {"status": "error", "error": str(e), "traceback": traceback.format_exc()} + ) +# ========================================================================= +# PYTEST TEST HARNESS +# ========================================================================= @pytest.fixture(scope="class") def setup_context(request): """Replaces setUpClass: Runs once per test class.""" @@ -53,11 +509,6 @@ def setup_context(request): main_path = test_dir.parent video_dir = main_path / "inputs" - request.cls._shared_model = None - request.cls._shared_model_path = None - request.cls._shared_model_device = None - request.cls._shared_model_sf_enabled = None - request.cls.source = os.getenv("VIDEO_FILENAME", "anduril_swarm_8K.mp4") is_rtsp = "rtsp://" in request.cls.source if not is_rtsp: @@ -76,7 +527,6 @@ def setup_context(request): request.cls.name = "rtsp" request.cls.is_rtsp = True - # Add any shared state to the class model_name = os.getenv("MODEL_NAME", MODEL_NAME_DEFAULT) request.cls.result_dir = test_dir / f"{current_test_filename}_results/{model_name}" request.cls.result_dir.mkdir(parents=True, exist_ok=True) @@ -87,7 +537,7 @@ def setup_context(request): request.cls.csv_path = request.cls.result_dir / request.cls.csv_filename # Initialize class vars - request.cls.active = True + # request.cls.active = True request.cls.active_streams = {} # RUN ALL PARAMETERIZED TESTS ---------------------------------------- @@ -95,254 +545,99 @@ def setup_context(request): # FINAL CSV EXPORT -------------------------------------------------- if request.cls.benchmarks: + # Filter and exclude rows that were interrupted or failed initialization due to an early pytest skip + request.cls.benchmarks = [ + r for r in request.cls.benchmarks if r and "Test Name" in r + ] results = request.cls.benchmarks - keys = results[0].keys() - - with open(str(request.cls.csv_path), "w", newline="") as f: - dict_writer = csv.DictWriter(f, fieldnames=keys) - dict_writer.writeheader() - dict_writer.writerows(results) + if results: + keys = results[0].keys() - print(f"\n[FINAL] Benchmarks saved to {request.cls.csv_filename}", flush=True) + with open(str(request.cls.csv_path), "w", newline="") as f: + dict_writer = csv.DictWriter(f, fieldnames=keys) + dict_writer.writeheader() + dict_writer.writerows(results) + print( + f"\n[FINAL] Benchmarks saved to {request.cls.csv_filename}", flush=True + ) -@pytest.fixture(autouse=True) -def each_test_setup(request): - test_class_self = request.instance - if torch.cuda.is_available(): - torch.cuda.synchronize() - - device = request.node.callspec.params.get("device") - os.environ["DEVICE"] = device - detection_type = "object" # request.node.callspec.params.get("detection_type") - sf_enabled = False # request.node.callspec.params.get("sf_enabled") - model_name = os.getenv("MODEL_NAME", MODEL_NAME_DEFAULT) - test_class_self._testMethodName = f"{model_name}_{detection_type}_{device}" - - render_dir = test_class_self.result_dir / f"{device}" - render_dir.mkdir(exist_ok=True) - - test_class_self.config = PipelineConfig( - # GENERAL - SHARED_OUTPUT=render_dir, # os.getenv("SHARED_OUTPUT",SHARED_OUTPUT_DEFAULT), - CUSTOM_MODEL_FLAG=os.getenv("CUSTOM_MODEL_FLAG", CUSTOM_MODEL_FLAG_DEFAULT), - DEVICE=device.upper(), - OMIT_DETECTIONS_FLAG=True, - TEST_MODE=False, - DEBUG=os.getenv("DEBUG", DEBUG_DEFAULT), - DEBUG_FRAME_LIMIT=os.getenv("DEBUG_FRAME_LIMIT", 100), - # VIDEO WRITER - # CLIP_DURATION=None, - # VDMS - ENABLE_QUERYING=False, - DBHOST="0.0.0.0", - DBPORT=55555, - # MODEL - MODEL_NAME=model_name, - # MODEL_H=360, - # PIPELINE - SMART_FILTERING_ENABLED=sf_enabled, - THRESHOLD_VALUE=int(os.getenv("THRESHOLD_VALUE", THRESHOLD_VALUE)), - # VISUALIZATION - DETECTION_TYPE=detection_type, - ) +@pytest.mark.usefixtures("setup_context") +class TestModel(BaseTest): + """ + Pytest runner that spawns the isolated worker, waits for completion, + and merges the returned metrics into the main class for CSV/Chart generation. + """ - test_class_self.device = test_class_self.config.DEVICE - test_class_self.device_input = test_class_self.config.device_input - test_class_self.resize_h, test_class_self.resize_w = [ - test_class_self.config.MODEL_H, - test_class_self.config.MODEL_W, - ] + benchmarks = [] # Class-level attribute required by _finalize_benchmarks - # Resolve concrete handler class type - HandlerClass = GPUStreamHandler if device == "gpu" else CPUStreamHandler - # HandlerClass.pipeline_fn = test_class_self.__class__.pipeline_fn + @pytest.mark.parametrize("device", ["gpu", "cpu"]) + def test_model(self, device): + # Pull the values dynamically assigned by the setup_context fixture + init_args = { + "source": self.__class__.source, + "name": self.__class__.name, + "result_dir": str(self.__class__.result_dir), + "active_streams": {}, + "benchmarks": self.__class__.benchmarks, + } - # Dynamically re-bind backend methods to this execution instance - handler_classes = [HandlerClass, DeviceBaseHandler] - all_method_names = set() + os.environ["DEVICE"] = device + detection_type = "object" # request.node.callspec.params.get("detection_type") + sf_enabled = False # request.node.callspec.params.get("sf_enabled") + gt_enabled = False - for cls in handler_classes: - for name, attr in inspect.getmembers(cls, predicate=inspect.isfunction): - all_method_names.add(name) + test_args = { + "device": device, + "detection_type": detection_type, + "sf_enabled": sf_enabled, + "gt_enabled": gt_enabled, + } - for method_name in all_method_names: - source_obj = ( - HandlerClass if hasattr(HandlerClass, method_name) else DeviceBaseHandler + main_app_logger.info( + f"\n{'=' * 60}\n" + f"[TEST HARNESS] Spawning isolated high-speed process for {self.__class__.name} (SF: {sf_enabled})...\n" + f"{'=' * 60}" ) - if hasattr(source_obj, method_name): - raw_func = getattr(source_obj, method_name) - if ( - not hasattr(test_class_self.__class__, method_name) - or method_name == "pipeline_fn" - ): - setattr( - test_class_self, - method_name, - types.MethodType(raw_func, test_class_self), - ) - - # 3. FORCE NATIVE PIPELINE PROVISIONING - test_class_self.setup_reader( - test_class_self.config.TARGET_FPS, test_class_self.config.CLIP_DURATION - ) - test_class_self.initialize_variables() - test_class_self.setup_model(None) - test_class_self.prepare_pipeline() - - # test_class_self.run _realtime_inference = types.MethodType( - # test_class_self.__class__.run_realtime_inference, test_class_self - # ) - - test_class_self.setup_threads() - - # RUN PARAMETERIZED TEST ---------------------------------------- - yield - - # tearDown LOGIC -------------------------------------------------- - print( - f"\n--- [TearDown] Memory Before Cleanup ({test_class_self._testMethodName}) ---" - ) - - # test_class_self.stop() - - # Nullify the model reference to trigger automatic cleanup - if hasattr(test_class_self, "model") and test_class_self.model is not None: - # Check if it's an Ultralytics model with a predictor - predictor = getattr(test_class_self.model, "predictor", None) - if predictor is not None: - try: - predictor.results = [] - except AttributeError: - pass - del test_class_self.model - test_class_self.model = None - # Clear the singleton references to force a reload - TestModelDetections._shared_model = None - TestModelDetections._shared_model_path = None - TestModelDetections._shared_model_device = None + # Spawn a pristine Python process (identical to test_pipeline.py's stream_worker) + ctx = mp.get_context("spawn") + res_queue = ctx.Queue() - # Force Python to run destructors NOW while streams are still alive - gc.collect() - if torch.cuda.is_available(): - torch.cuda.synchronize() # Final sync to clear event queue - torch.cuda.empty_cache() - torch.cuda.ipc_collect() # Critical for shared memory cleanup - time.sleep(0.2) - - -@pytest.mark.usefixtures("setup_context") -class TestModelDetections: - # SETUP -------------------------------------------- - - @pytest.mark.parametrize( - "device", - [ - ("cpu"), - ("gpu"), - ], - ) - def test_model(self, device): - """Unified test runner for all configurations.""" - - # Run the actual model loader - self.get_model_by_device(device, sf_enabled=self.config.sf_enabled) - - total_session_start = time.perf_counter() - - results = self.model.predict( - source=self.source, - imgsz=(self.frame_height, self.frame_width), - batch=1, - device=self.config.device_input, - stream=True, - conf=self.config.DETECTION_THRESHOLD, - iou=self.config.IOU_THRESHOLD, - show=False, - save=True, - project=str(self.config.SHARED_OUTPUT), - name="predict_results", - exist_ok=True, # overwrite if folder exists - data={"names": {i: name for i, name in enumerate(self.label_source)}}, + worker_p = ctx.Process( + target=isolated_detection_worker, args=(init_args, test_args, res_queue) ) - frame_cnt = 0 - total_model_preprocess = 0.0 - total_model_inference = 0.0 - total_model_postprocess = 0.0 - for result in results: - frame_cnt += 1 - # Each iteration computes and yields the next frame's latency - total_model_preprocess += result.speed.get("preprocess", 0.0) - total_model_inference += result.speed.get("inference", 0.0) - total_model_postprocess += result.speed.get("postprocess", 0.0) + worker_p.start() + worker_p.join() # Block Pytest until the isolated pipeline finishes - # Capture the true real-world duration across all operational processing layers - real_world_latency_ms = (time.perf_counter() - total_session_start) * 1000 + # Extract and merge results + if not res_queue.empty(): + result = res_queue.get() - self._finalize_benchmarks( - real_world_latency_ms, - frame_cnt, - total_model_preprocess, - total_model_inference, - total_model_postprocess, - ) + if result["status"] == "error": + pytest.fail( + f"Pipeline crashed in worker process:\n{result.get('error')}\n{result.get('traceback')}" + ) + else: + metrics = result["metrics"] - # HELPERS -------------------------------------------- - def get_model_by_device(self, device, sf_enabled=False): - """Singleton loader: only loads if device changes or model is missing.""" - if ( - sf_enabled - and (self.frame_width * self.frame_height) - <= self.config.SMART_FILTERING_PIXEL_CONSTRAINT - ): - sf_enabled = False - - if ( - TestModelDetections._shared_model is not None - and TestModelDetections._shared_model_device == device - and TestModelDetections._shared_model_sf_enabled == sf_enabled - ): - self.model = TestModelDetections._shared_model - self.model_path = TestModelDetections._shared_model_path - return - - run_platform_name = "engine" if "cuda" in self.device_input else "openvino" - - if self.config.CUSTOM_MODEL_FLAG: - dir_path = "/home/resources/models/ultralytics/custom_models" - else: - dir_path = f"/home/resources/models/ultralytics/{self.config.MODEL_NAME}/{self.config.MODEL_PRECISION}" - - ( - TestModelDetections._shared_model, - TestModelDetections._shared_model_path, - self.label_source, - ) = get_model( - Path(dir_path), - self.config.MODEL_NAME, - run_platform_name, - self.device_input, - batch=self.config.MODEL_MAX_BATCH_SIZE, - force_export=force_export, - sf_enabled=sf_enabled, - model_h=self.resize_h, - model_w=self.resize_w, - ) + self.__class__.benchmarks.append(metrics) - TestModelDetections._shared_model_device = device - TestModelDetections._shared_model_sf_enabled = sf_enabled - self.model = TestModelDetections._shared_model - # self.model.half() - self.model_path = TestModelDetections._shared_model_path + main_app_logger.info( + f"[TEST HARNESS] Worker returned successfully. Model Est. FPS: {metrics.get('Model Est. FPS')}" + ) - W, H = self.resize_w, self.resize_h - if not sf_enabled: - W, H = self.frame_width, self.frame_height - self.model_warmup(H, W) + # Basic functionality assertions + assert metrics is not None, "Metrics dictionary should not be None." + assert int(metrics.get("Frames Processed", 0)) > 0, ( + "No frames were written to output." + ) + else: + pytest.fail("Worker process died unexpectedly without returning metrics.") + # HELPERS -------------------------------------------- def _finalize_benchmarks( self, real_world_latency_ms, @@ -391,271 +686,24 @@ def _finalize_benchmarks( def setup_threads(self): """Overrides handlers.py to bind threads dynamically to the test instance.""" pass - # self.setup_shared_memory() # Natively sets up Manager dictionary and buffers - - # # Executor for Async YOLO tasks and FFmpeg re-encoding - # self.executor = ThreadPoolExecutor(max_workers=self.config.MAX_WORKERS) - # # self.clip_executor = ThreadPoolExecutor(max_workers=self.config.MAX_WORKERS) - - # print( - # f"sf_enabled: {self.config.sf_enabled}\tTEST_MODE: {self.config.TEST_MODE}", - # flush=True, - # ) - - # # Open up looking-ahead buffer horizons to eliminate 8K queue backpressure stalls - # self.signal_queue = mp.Queue(maxsize=128) # 10) - # self.render_queue = mp.Queue(maxsize=256) # 64) - - # test_dir = os.getenv( - # "TEST_SUITE_RENDER_DIR", str(Path(self.config.SHARED_OUTPUT)) - # ) - # os.makedirs(test_dir, exist_ok=True) - - # if self.source.startswith("rtsp"): - # short_name = "rtsp" - # else: - # short_name = Path(self.source).stem - # video_output_name = f"{self._testMethodName}_{short_name}_{self.device}.mp4" - # out_path = os.path.join(test_dir, video_output_name) - # self.output_path = ( - # out_path # f"{self.config.SHARED_OUTPUT}/{short_name}_{self.device}.mp4" - # ) - - # log_to_logger( - # f"[TEST MODE] Detection results saved to: {out_path}", level="info" - # ) - - # # ===================================================================== - # # DYNAMIC THREAD TARGET REDIRECTION - # # ===================================================================== - # # Lambda forces the background processing thread to evaluate your custom staging loop natively - # self.process_thread = threading.Thread( - # target=lambda: self.run_realtime_inference( - # sf_enabled=self.config.sf_enabled - # ), - # daemon=True, - # ) - # # self.render_proc = mp.Process( # threading.Thread( - # # target=rendering_worker, - # # args=( - # # self.render_queue, - # # (self.disp_w, self.disp_h), - # # self.output_path, - # # self.target_fps, - # # ), - # # daemon=True, - # # ) - # # self.render_proc = threading.Thread(target=lambda: None, daemon=True) - # # self.display_proc = threading.Thread(target=lambda: None, daemon=True) - # self.render_proc = DummyProcess() - # self.display_proc = DummyProcess() - - # self.async_writer = AsyncVideoWriter( - # self.output_path, - # cv2.VideoWriter_fourcc(*"avc1"), - # float(self.target_fps), - # (self.disp_w, self.disp_h), - # ) - # # self.async_writer = None def start(self): """ Starts the decoupled ingestion and inference threads in the correct order. """ # PRE-SYNC: Ensure GPU is idle before timing starts - if self.device_input == "cuda": - if torch.cuda.is_available(): - torch.cuda.synchronize() + if self.device_input == "cuda" and torch.cuda.is_available(): + torch.cuda.synchronize() # Start the hardware-decoupled reader first - self.reader.start() - - # if self.config.ENABLE_QUERYING: - # self._initialize_writer() - - # # Small delay to allow the reader's deque to populate - # time.sleep(0.1) - - # # Start the producer and consumer threads - # if hasattr(self, "process_thread") and not self.process_thread.is_alive(): - # self.process_thread.start() - - # if not self.config.DISABLE_DETECTION: - # self.render_proc.start() - - # self.display_proc.start() - - # if ( - # self.config.ENABLE_QUERYING - # and not self.config.TEST_MODE - # and not self.metadata_thread.is_alive() - # ): - # self.metadata_thread.start() - - # if self.config.ENABLE_QUERYING and not self.writer_thread.is_alive(): - # self.writer_thread.start() + # self.reader.start() return self - def stop(self): - """Overrides handlers.py to flush thread objects safely without deadlocking.""" - with self._stop_lock: - if self._is_stopped: - return - - print( - f"\n[TEST HARNESS] Initiating rapid thread flush for {self.name}", - flush=True, - ) - self.active = False - - # 1. Rapidly clear the async video writer thread queue first - # if hasattr(self, "async_writer") and self.async_writer is not None: - # try: - # self.async_writer.release() - # except Exception: - # pass - - # ===================================================================== - # DECUPLED MULTI-PROCESS TEARDOWN LIFECYCLE SEQUENCE - # ===================================================================== - # 1. FIRST: Drain and synchronize your thread pool tasks so EVERY frame drops into the IPC queue - if hasattr(self, "display_pool") and self.display_pool is not None: - try: - if hasattr(self.display_pool, "_work_queue"): - backlog = self.display_pool._work_queue.qsize() - if backlog > 0: - print( - f"\n\033[94m[STAGE 1/4] Synchronizing display pool threads. Draining {backlog} background tasks...\033[0m", - flush=True, - ) - backlog_s = time.perf_counter() - while ( - self.display_pool._work_queue.qsize() > 0 - or len(self.reorder_staging_buffer) > 0 - ): - # Yield a brief slice to let worker threads complete downscaling - time.sleep(0.01) - backlog_e = time.perf_counter() - backlog_s - print(f"\t\033[94mTook {backlog_e} secs\033[0m", flush=True) - print( - "\033[92m[SUCCESS] All background image transformations completed cleanly.\033[0m", - flush=True, - ) - self.display_pool.shutdown(wait=True) - except Exception as e: - print( - f"[TEARDOWN ERROR] Thread pool synchronization failed: {e}", - flush=True, - ) - setattr(self, "display_pool", None) - - # 1. FIRST: Instantly dispatch the shutdown token so the worker process knows to flush entries - if hasattr(self, "render_queue") and self.render_queue is not None: - try: - print( - f"\n\033[94m[STAGE 1/3] Dispatching shutdown sentinel (None) to rendering process worker (Backlog: {self.render_queue.qsize()} frames)...\033[0m", - flush=True, - ) - # Delivering the poison pill immediately tells FFmpeg to drain remaining blocks sequentially - self.render_queue.put(None, timeout=2.0) - except Exception as queue_err: - print( - f"\033[91m[TEARDOWN ERROR] Failed staging shutdown token: {queue_err}\033[0m", - flush=True, - ) - - # 2. SECOND: Allow the background multiprocessing queue to empty outstanding items naturally - if hasattr(self, "render_queue") and self.render_queue is not None: - try: - print( - "\n\033[94m[STAGE 2/3] Finalizing file output. Draining remaining frames from IPC memory lane...\033[0m", - flush=True, - ) - t_drain = time.perf_counter() - # Wait up to 15 seconds for the worker process to pull every remaining matrix out of the pipe - while ( - not self.render_queue.empty() - and (time.perf_counter() - t_drain) < 15.0 - ): - time.sleep( - 0.01 - ) # Micro-yield grants immediate execution priority to the background process core - except Exception: - pass - - # 3. THIRD: Block the main thread safely and allow the detached process to finish disk I/O operations - if hasattr(self, "render_proc") and self.render_proc is not None: - try: - join_duration = 0.0 - if self.render_proc.is_alive(): - print( - "\033[94m[STAGE 2/2] Main thread blocking. Synchronizing hard drive file headers...\033[0m", - flush=True, - ) - t_join_start = time.perf_counter() - self.render_proc.join( - timeout=15.0 - ) # Safe timeout lets video containers finalize cleanly - join_duration = time.perf_counter() - t_join_start - else: - print( - "\033[94m[STAGE 2/2] Main thread clear...\033[0m", - flush=True, - ) - - if self.render_proc.is_alive(): - print( - "\n\033[91m[CRITICAL STALL] Render worker process hung on disk write! Forcing termination...\033[0m", - flush=True, - ) - self.render_proc.terminate() - self.render_proc.join() - else: - print( - f"\033[92m[FINAL] Video compilation finished cleanly! Hard drive commit took {join_duration:.2f} seconds.\033[0m", - flush=True, - ) - - expected_disk_path = Path(self.output_path) - if expected_disk_path.exists(): - size_mb = expected_disk_path.stat().st_size / (1024 * 1024) - print( - f"\033[92m[DISK VERIFIED] Destination asset compiled: {expected_disk_path.name} ({size_mb:.2f} MB)\033[0m\n", - flush=True, - ) - self.render_proc.close() - except Exception as proc_err: - print( - f"\033[91m[TEARDOWN ERROR] Failed closing background process container: {proc_err}\033[0m", - flush=True, - ) - setattr(self, "render_proc", None) - - # 4. FOURTH: Clean up remaining pipeline executors and queues safely - if hasattr(self, "render_queue") and self.render_queue is not None: - try: - self.render_queue.close() - self.render_queue.cancel_join_thread() - except Exception: - pass - setattr(self, "render_queue", None) - - if hasattr(self, "executor") and self.executor is not None: - try: - self.executor.shutdown(wait=True) - except Exception: - pass - setattr(self, "executor", None) - - self.status = "DONE" - self._is_stopped = True - print( - "[TEST HARNESS] Teardown complete. Releasing session cleanly.\n", - flush=True, - ) - +# ========================================================================= +# MAIN +# ========================================================================= if __name__ == "__main__": # TEST ARGUMENTS parser = argparse.ArgumentParser(description="Run Video Detection Pipeline Tests") @@ -684,40 +732,12 @@ def stop(self): ) # Filter tests - # parser.add_argument( - # "--type", - # type=str, - # choices=["object", "motion"], - # dest="detection_type", - # help="Filter by detection type (object or motion)", - # ) parser.add_argument( "--device", type=str, choices=["cpu", "gpu"], help="Filter by device (cpu or gpu)", ) - # parser.add_argument( - # "--sf", - # action="store_true", - # default=None, - # dest="sf_enabled", - # help="Filter by Smart Filtering", - # ) - - # # DEBUGGING - # parser.add_argument( - # "--debug", - # action="store_true", - # help="Enable debug message and save intermediate images for Smart Filtering tests", - # ) - # parser.add_argument( - # "-n", - # type=int, - # default=100, - # dest="debug_frame_limit", - # help="Number of frames used for debugging [Default: 100]", - # ) args = parser.parse_args() @@ -742,6 +762,8 @@ def stop(self): "-s", "-v", "--log-cli-level=DEBUG", + "-W", + "ignore::_pytest.warning_types.PytestAssertRewriteWarning", __file__, ] # -s -v --log-cli-level=DEBUG if run_args: diff --git a/fastapi/tests/test_pipeline.py b/fastapi/tests/test_pipeline.py index 32ad892..15ffbe7 100644 --- a/fastapi/tests/test_pipeline.py +++ b/fastapi/tests/test_pipeline.py @@ -1,15 +1,79 @@ +# ============================================================================== +# SUPPRESS WARNINGS +# import warnings + +import pytest + +# warnings.filterwarnings( +# "ignore", category=FutureWarning, message=".*reduce_op` is deprecated.*" +# ) + +pytestmark = [ + pytest.mark.filterwarnings( + "ignore:.*anyio:_pytest.warning_types.PytestAssertRewriteWarning" + ), + pytest.mark.filterwarnings( + "ignore:Context managers for TensorRT types are deprecated:DeprecationWarning" + ), + pytest.mark.filterwarnings( + "ignore:Exception ignored in.*SharedMemory.__del__:UserWarning" + ), + # Global message fallback pattern captures local execution frames + pytest.mark.filterwarnings("ignore:.*reduce_op.*:FutureWarning"), +] + +# ============================================================================== +# LOGGING +import logging +import os +import sys + +logging.basicConfig( + level=logging.INFO, + # format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", + format="%(asctime)s [%(levelname)s] %(name)s (%(filename)s:%(lineno)d) - %(message)s", + handlers=[logging.StreamHandler(sys.stdout)], +) +# Suppress low-delay reference block warnings from OpenCV/PyAV/FFmpeg +# os.environ["OPENCV_FFMPEG_LOGLEVEL"] = "-8" +# os.environ["OPENCV_LOG_LEVEL"] = "OFF" +logging.getLogger("libav").setLevel(logging.CRITICAL) +logging.getLogger("libav.hevc").setLevel(logging.CRITICAL) +logging.getLogger("matplotlib").setLevel(logging.WARNING) +logging.getLogger("ultralytics").setLevel(logging.WARNING) +# logger = trt.Logger(trt.Logger.WARNING) +# trt.init_libnvinfer_plugins(logger, "") +main_app_logger = logging.getLogger(__name__) + +# ============================================================================== +# IMPORTS + +# os.environ["OMP_NUM_THREADS"] = "2" +# os.environ["MKL_NUM_THREADS"] = "2" +# os.environ["PYTORCH_ALLOC_CONF"] = "expandable_segments:True" +# try: +# torch.set_num_interop_threads(2) # 1) +# torch.set_num_threads(4) # 2) +# except RuntimeError: +# # Safe graceful fallback if a process-level fork duplicated context maps +# pass import argparse import csv +import ctypes +import faulthandler import gc +import inspect import logging import multiprocessing -import os import sys +import threading import time import traceback +import tracemalloc from datetime import datetime from pathlib import Path +import cv2 import psutil import pytest import torch @@ -21,52 +85,67 @@ MODEL_NAME_DEFAULT, THRESHOLD_VALUE, ) - -# Import the exact core handlers to replace duplicate script code -# from include.handlers import BASE_PIPELINE_CONFIG +from include.handlers import ( + CPUStreamHandler, + GPUStreamHandler, + log_to_logger, +) from include.utils import ( PipelineConfig, + ResourceTrackerFilter, + install_and_load_pip_package, + str2bool, ) +# torch.set_grad_enabled(False) + +# ============================================================================== +# MONKEY PATCH +# Cache the hardware availability state globally. +# This prevents internal framework loops from triggering driver/NVML checks per frame. +# _cuda_available = torch.cuda.is_available() + + +# def _patched_is_available(): +# return _cuda_available + + +# torch.cuda.is_available = _patched_is_available + +# ============================================================================== +# SETUP +# Hooks directly into the OS kernel signals to force Python to print a full +# stack traceback right before it dies, allowing you to see which line of +# Python code caused the hard crash +faulthandler.enable() + try: + # Retain standard spawn mode to prevent CUDA context driver deadlocks torch.multiprocessing.set_start_method("spawn", force=True) except RuntimeError: pass +force_export = False +target_width, target_height = 7680, 4320 +STATE_CAPTURE = False -logging.basicConfig( - level=logging.INFO, - format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", - handlers=[logging.StreamHandler(sys.stdout)], -) -# Suppress low-delay reference block warnings from OpenCV -os.environ["OPENCV_LOG_LEVEL"] = "OFF" - -main_app_logger = logging.getLogger(__name__) - - -def log_to_logger(message, level="info"): - try: - if level.lower() == "debug": - main_app_logger.debug(message) - elif level.lower() == "warning": - main_app_logger.warning(message) - else: - main_app_logger.info(message) - except Exception: - pass +# Force Python's multiprocessing layer to quiet tracking cleanup race conditions +os.environ["PYTHONWARNINGS"] = "ignore" +sys.warnoptions.append("ignore") +# ============================================================================== +# TEST SETUP / FUNCTIONS @pytest.fixture(scope="class") def setup_context(request): - """Orchestrates test directories and configuration schemas.""" + """Replaces setUpClass: Runs once per test class.""" current_test_filename = Path(__file__).stem test_dir = Path(__file__).parent main_path = test_dir.parent video_dir = main_path / "inputs" # Resolve source from CLI/Environment parameters - request.cls.source = os.getenv("STREAM_SOURCE", "anduril_swarm_8K.mp4") + request.cls.source = os.getenv("VIDEO_FILENAME", "anduril_swarm_8K.mp4") is_rtsp = "rtsp://" in request.cls.source if not is_rtsp: VIDEO_FILENAME = request.cls.source @@ -79,8 +158,10 @@ def setup_context(request): assert vid_source.exists() request.cls.source = str(vid_source) request.cls.name = vid_source.stem + request.cls.is_rtsp = False else: request.cls.name = "rtsp" + request.cls.is_rtsp = True request.cls.test_duration_mins = float(os.getenv("TEST_DURATION_MINS", 1.0)) model_name = os.getenv("MODEL_NAME", MODEL_NAME_DEFAULT) @@ -88,15 +169,16 @@ def setup_context(request): request.cls.result_dir.mkdir(parents=True, exist_ok=True) request.cls.benchmarks = [] - if is_rtsp: - request.cls.csv_filename = "pipeline_benchmarks_rtsp.csv" - else: - vid_shortname = Path(request.cls.source).stem - request.cls.csv_filename = f"pipeline_benchmarks_{vid_shortname}.csv" + request.cls.csv_filename = f"pipeline_benchmarks_{request.cls.name}.csv" request.cls.csv_path = request.cls.result_dir / request.cls.csv_filename + # request.cls.active = True + request.cls.active_streams = {} + + # RUN ALL PARAMETERIZED TESTS ---------------------------------------- yield + # FINAL CSV EXPORT -------------------------------------------------- if request.cls.benchmarks: ordered_headers = [ "timestamp", @@ -117,6 +199,7 @@ def setup_context(request): "total_frames_ingested", "total_target_frames_processed", "total_objects_detected", + "avg_detections_per_frame", "frames_dropped_or_skipped", "dropped_frame_sequences", "average_read_latency_ms", @@ -132,7 +215,8 @@ def setup_context(request): ] # keys = {k for r in request.cls.benchmarks for k in r.keys()} keys = [] - for r in request.cls.benchmarks: + results = request.cls.benchmarks + for r in results: for k in r.keys(): keys.append(k) sorted_keys = [] @@ -140,28 +224,46 @@ def setup_context(request): if c in keys: sorted_keys.append(c) with open(str(request.cls.csv_path), "w", newline="") as f: - writer = csv.DictWriter(f, fieldnames=list(sorted_keys)) - writer.writeheader() - writer.writerows(request.cls.benchmarks) - print(f"\n[FINAL] Telemetry saved to: {request.cls.csv_path}", flush=True) + dict_writer = csv.DictWriter(f, fieldnames=list(sorted_keys)) + dict_writer.writeheader() + dict_writer.writerows(results) + main_app_logger.info(f"[FINAL] Telemetry saved to {request.cls.csv_path}") @pytest.fixture(autouse=True) def each_test_setup(request): - if torch.cuda.is_available(): - torch.cuda.synchronize() - device = request.node.callspec.params.get("device") os.environ["DEVICE"] = device - yield + # Enforces a brief structural pause between execution sequences. + # This ensures old CUDA streams and file pointers are fully reclaimed by the OS + # before the next stage begins allocation. + with torch.inference_mode(): + if device == "gpu" and torch.cuda.is_available(): + torch.cuda.synchronize() + torch.cuda.ipc_collect() + torch.cuda.empty_cache() + gc.collect() + + # Introduce a 250ms sub-slice delay to give Linux background + # resource tracking daemons time to complete unlinking procedures smoothly. + # time.sleep(0.25) + # RUN PARAMETERIZED TEST ---------------------------------------- + try: + yield + + except Exception as e: + traceback.print_exc() + main_app_logger.info(f"[TEST] Error: {e}") + + # Evict the device cache pool entirely gc.collect() - if torch.cuda.is_available(): - torch.cuda.synchronize() - torch.cuda.empty_cache() - torch.cuda.ipc_collect() - time.sleep(0.2) + with torch.inference_mode(): + if device == "gpu" and torch.cuda.is_available(): + torch.cuda.synchronize() + torch.cuda.empty_cache() + torch.cuda.memory._record_memory_history(enabled=False) def stream_worker( @@ -186,6 +288,8 @@ def stream_worker( os.environ["OPENCV_LOG_LEVEL"] = "OFF" os.environ["OPENCV_VIDEOIO_DEBUG"] = "0" os.environ["FFMPEG_LOG_LEVEL"] = "quiet" + + # Initialize test test_duration_secs = test_duration_mins * 60 metrics = { "timestamp": datetime.now().strftime("%Y-%m-%d %H:%M:%S"), @@ -220,12 +324,12 @@ def stream_worker( "total_frames_ingested": 0, "total_target_frames_processed": 0, "total_objects_detected": 0, + "avg_detections_per_frame": 0, "detection_type": detection_type, "smart_filter_active": sf_enabled, "status": "INIT", } - loop_start = time.perf_counter() process = psutil.Process(os.getpid()) cpu_samples, ram_samples, vram_samples = [], [], [] prefetch_backlog_samples = [] @@ -236,7 +340,7 @@ def stream_worker( CUSTOM_MODEL_FLAG=os.getenv( "CUSTOM_MODEL_FLAG", CUSTOM_MODEL_FLAG_DEFAULT ), # True, - DEVICE="GPU" if device_type.lower() == "gpu" else "CPU", + DEVICE=device_type.upper(), OMIT_DETECTIONS_FLAG=True, TEST_MODE=True, DEBUG=os.getenv("DEBUG", DEBUG_DEFAULT), @@ -272,41 +376,206 @@ def mock_connect(self, host, port): vdms.vdms.connect = mock_connect - from include.handlers import CPUStreamHandler, GPUStreamHandler - if device_type.lower() == "gpu": HandlerClass = GPUStreamHandler else: HandlerClass = CPUStreamHandler - print("\t[STREAM_WORKER] Starting ...") + # Establish an accurate post-initialization hardware baseline + if str2bool(os.getenv("ENABLE_PROFILING", "False")): + tracemalloc.start() + + start_allocated, start_reserved = 0, 0 + if device_type.lower() and torch.cuda.is_available(): + torch.cuda.memory._record_memory_history( + enabled=True, + trace_alloc_max_entries=250000, + trace_alloc_record_context=True, + ) + + # This captures your baseline AFTER initialize_variables() is done + start_allocated = torch.cuda.memory_allocated(0) + start_reserved = torch.cuda.memory_reserved(0) + + try: + cv2.cuda.setBufferPoolUsage(False) + except AttributeError: + pass + else: + gc.collect() + process = psutil.Process(os.getpid()) + start_allocated = ( + process.memory_info().rss + ) # Reuse start_allocated container for host memory baseline + start_reserved = 0 + log_to_logger("[STREAM_WORKER] Starting ...", level="info") last_sample = time.perf_counter() + loop_start = last_sample handler = None # Explicit initializing tracking state pointer 🚀 try: - # Let handlers.py completely manage the reader, threads, ring buffers, and FFMPEG process + # Get Handler and start handler = HandlerClass( source=source, name=source_name, active_streams={}, config=config - ) - handler.start() - - while (time.perf_counter() - loop_start) < test_duration_secs: - if not handler.active: - break - - curr_time = time.perf_counter() - if (curr_time - last_sample) >= 0.5: - cpu_samples.append(psutil.cpu_percent(interval=0)) - ram_samples.append(process.memory_info().rss / (1024 * 1024)) - if device_type.lower() == "gpu" and torch.cuda.is_available(): - vram_free, vram_total = torch.cuda.mem_get_info() - vram_samples.append((vram_total - vram_free) / (1024 * 1024)) - if getattr(handler, "prefetch_queue", None) is not None: - current_backlog = handler.prefetch_queue.qsize() - prefetch_backlog_samples.append(current_backlog) - last_sample = curr_time - time.sleep(0.2) # 0.01 + ) # .start() + + def profiler_fn(): + profiler = None + try: + if str2bool(os.getenv("ENABLE_PROFILING", "False")): + Profiler = install_and_load_pip_package( + "pyinstrument", attribute_name="Profiler" + ) + + profiler = Profiler(interval=0.005) # 5ms sampling interval + + # Telling the statistical sampler to skip recording exception blocks completely + # stops stack_sampler.py from ballooning RAM over long production runs. + if hasattr(profiler, "_sampler") and profiler._sampler: + profiler._sampler.trace_exceptions = False + + profiler.start() + + # orig_fn(profiler) + handler.run_realtime_inference( + sf_enabled=handler.config.sf_enabled, + profiler=profiler, + ) + + if str2bool(os.getenv("ENABLE_PROFILING", "False")): + # 2. Redirect standard error to the filter trap right before report compilation + original_stderr = sys.stderr + sys.stderr = ResourceTrackerFilter(original_stderr) + + try: + # Force standard stdout to flush out any lingering teardown messages + # BEFORE pyinstrument dumps its massive ASCII tree block. + sys.stdout.flush() + + # main_app_logger.info(profiler.output_text(color=True)) + # profiler.main_app_logger.info(color=True) + # prof_output = profiler.output_text(color=True) + # main_app_logger.info( + # f"\n=== LATENCY BREAKDOWN FOR {self.name} ({device}) ===\n{prof_output}\n", + # + # ) + + # Save a clean, interactive tree map for visual analysis + output_html_path = handler.output_path.replace( + ".mp4", "_profile.html" + ) + # output_html_path = f"/tmp/profile_{video_name}_{device}.html" + profiler.write_html(output_html_path) + main_app_logger.info( + f"[PROFILER] Performance tree map exported to {output_html_path}", + ) + + finally: + sys.stderr = original_stderr + if "profiler" in locals(): + try: + # Force the Python interpreter to detach pyinstrument's sampling hooks + sys.setprofile(None) + + # Completely decouple internal statistical sessions to drop C-heap frames + if hasattr(profiler, "_last_session"): + profiler._last_session = None + if hasattr(profiler, "last_session"): + profiler.last_session = None + + # Forcibly clear out internal memoryview strings caching tree metrics + if ( + hasattr(profiler, "session") + and profiler.session is not None + ): + if hasattr(profiler.session, "frame_groups"): + profiler.session.frame_groups = None + if hasattr(profiler.session, "samples"): + profiler.session.samples = [] + + # Purge compiled tree metrics structures + profiler.session = None + del profiler + except Exception: + pass + + # Trigger an immediate native Linux heap compression pass + # This grabs the newly abandoned pyinstrument C-heap blocks and + # flushes them to the OS before the fixture assessment snapshot fires! + gc.collect() + try: + libc = ctypes.CDLL("libc.so.6") + libc.malloc_trim(0) + except Exception: + pass + + except Exception: + traceback.print_exc() + + if str2bool(os.getenv("ENABLE_PROFILING", "False")) and hasattr( + handler, "process_thread" + ): + # Re-initialize the thread context using our safe profile wrapper proxy + handler.process_thread = threading.Thread(target=profiler_fn, daemon=True) + + try: + handler.start() + + exited = False + loop_start = time.perf_counter() + while (time.perf_counter() - loop_start) < test_duration_secs: + time.sleep(0.25) + if handler._is_stopped: # not handler.active: + exited = True + break + if getattr(handler, "status", None) == "DONE": + exited = True + break + + if ( + hasattr(handler, "process_thread") + and handler.process_thread is not None + ): + if not handler.process_thread.is_alive(): + main_app_logger.info( + "[TEST HARNESS] Background worker exited. Breaking loop.", + ) + break + + # if ( + # hasattr(handler, "process_thread") + # and handler.process_thread is not None + # ): + # if not handler.process_thread.is_alive(): + # main_app_logger.info( + # "[TEST HARNESS] Background worker exited. Breaking loop.", + # ) + # break + + curr_time = time.perf_counter() + if (curr_time - last_sample) >= 0.5: + cpu_samples.append(psutil.cpu_percent(interval=0)) + ram_samples.append(process.memory_info().rss / (1024 * 1024)) + if device_type.lower() == "gpu" and torch.cuda.is_available(): + vram_free, vram_total = torch.cuda.mem_get_info() + vram_samples.append((vram_total - vram_free) / (1024 * 1024)) + if getattr(handler, "prefetch_queue", None) is not None: + current_backlog = handler.prefetch_queue.qsize() + prefetch_backlog_samples.append(current_backlog) + last_sample = curr_time + time.sleep(0.001) # 0.01 + + handler.stop_threads(["process_thread"]) + # Cleanup active thread worker contexts safely if they exist + if handler is not None and getattr(handler, "active", False) and not exited: + try: + handler.stop() + except Exception: + pass + except Exception as loop_e: + # traceback.print_exc() + main_app_logger.info(f"[LOOP ERROR]: {loop_e}") # Safely capture performance values out of production thread states actual_duration = time.perf_counter() - loop_start @@ -327,7 +596,7 @@ def mock_connect(self, host, port): ) # Total target slices saved/evaluated metrics["total_objects_detected"] = handler.total_objects_detected - metrics["total_frames_read"] = getattr(handler, "frame_count", 0) + metrics["total_frames_read"] = handler.abs_frame_num metrics["smart_filter_active"] = sf_enabled metrics["device"] = device_type @@ -352,11 +621,17 @@ def mock_connect(self, host, port): 1 if getattr(r, "use_cpu_decode_fallback", False) else 0 ) # if not str(handler.source).startswith("rtsp://"): - metrics["video_duration"] = ( - round(r.total_input_frames / metrics["hardware_video_fps"], 2) - if metrics["hardware_video_fps"] > 0 - else 0.0 - ) + # metrics["video_duration"] = ( + # round(r.total_input_frames / metrics["hardware_video_fps"], 2) + # if metrics["hardware_video_fps"] > 0 + # else 0.0 + # ) + + metrics["video_duration"] = ( + round(handler.abs_frame_num / metrics["hardware_video_fps"], 2) + if metrics["hardware_video_fps"] > 0 + else 0.0 + ) h_telemetry = getattr(handler, "telemetry", {}) io_latencies = h_telemetry.get("ram_disk_io_write_ms", []) @@ -381,6 +656,12 @@ def mock_connect(self, host, port): else 0.0 ) + metrics["avg_detections_per_frame"] = ( + metrics["total_objects_detected"] / metrics["total_target_frames_processed"] + ) + + main_app_logger.info(metrics) + except Exception as err: is_expected_fail = ( "Scenario_1" in test_name @@ -391,6 +672,7 @@ def mock_connect(self, host, port): "could not open/connect", "failed to initialize stream reader endpoint", "stream reader initialization failure", + "opencv videocapture failed to open", "timed out", ] ) @@ -408,6 +690,7 @@ def mock_connect(self, host, port): level="warning", ) metrics["status"] = f"CRASHED: {type(err).__name__}" + finally: # Calculate system baseline averages across the sample tracking matrices safely if cpu_samples: @@ -428,12 +711,12 @@ def mock_connect(self, host, port): sum(prefetch_backlog_samples) / len(prefetch_backlog_samples), 2 ) - # Cleanup active thread worker contexts safely if they exist - if handler is not None and getattr(handler, "active", False): - try: - handler.stop() - except Exception: - pass + # # Cleanup active thread worker contexts safely if they exist + # if handler is not None and getattr(handler, "active", False) and not exited: + # try: + # handler.stop() + # except Exception: + # pass # Provide a 200ms cool-down window for OpenVINO/PyTorch C++ worker threads # to finish their internal teardown before Python destroys the process space. @@ -450,11 +733,18 @@ def mock_connect(self, host, port): result_queue.put(metrics) + if str2bool(os.getenv("ENABLE_PROFILING", "False")): + handler.assess_memory( + handler.config.DEVICE.lower(), + handler.name, + start_allocated, + start_reserved, + ) # Absolute kill switch safely reclaims orphaned third-party threads # at the kernel level without crashing the parent pytest framework time.sleep(0.1) # os._exit(0) - print("\t[STREAM_WORKER] Processing complete. Exiting...") + log_to_logger("[STREAM_WORKER] Processing complete. Exiting...", level="info") @pytest.mark.usefixtures("setup_context") @@ -467,12 +757,11 @@ def test_scenario_1_invalid_rtsp(self, device): run_clipper = False time_limit_m = round(self.test_duration_mins, 1) - print( + main_app_logger.info( f"\n========================================\n" f"RUNNING TEST: {test_name} | Device: {device.upper()}\n" f"Source Destination: {bad_uri}\n" f"========================================", - flush=True, ) # Execute production workflow in completely isolated spawned sandbox @@ -493,9 +782,11 @@ def test_scenario_1_invalid_rtsp(self, device): ), ) worker_p.start() - print("[SCENARIO 1] Started processing ...") + main_app_logger.info("[SCENARIO 1] Started processing ...") worker_p.join() # timeout=2.0) - print(f"[SCENARIO 1] Stopped cleanly with exit code: {worker_p.exitcode}") + main_app_logger.info( + f"[SCENARIO 1] Stopped cleanly with exit code: {worker_p.exitcode}" + ) if worker_p.is_alive(): worker_p.terminate() @@ -504,7 +795,7 @@ def test_scenario_1_invalid_rtsp(self, device): test_metrics = res_queue.get() self.__class__.benchmarks.append(test_metrics) - print(f"Test Status Result: {test_metrics.get('status')}\n", flush=True) + main_app_logger.info(f"Test Status Result: {test_metrics.get('status')}") # Explicitly tear down queue thread pools to prevent resource tracking leaks try: @@ -521,12 +812,11 @@ def test_scenario_2_longevity_throughput(self, device): test_name = "Scenario_2_Longevity_Throughput_Evaluation" run_clipper = False - print( + main_app_logger.info( f"\n========================================\n" f"RUNNING TEST: {test_name} | Device: {device.upper()}\n" f"Source Destination: {self.source}\n" f"========================================", - flush=True, ) # Execute production workflow in completely isolated spawned sandbox @@ -547,9 +837,11 @@ def test_scenario_2_longevity_throughput(self, device): ), ) worker_p.start() - print("[SCENARIO 2] Started processing ...") + main_app_logger.info("[SCENARIO 2] Started processing ...") worker_p.join() - print(f"[SCENARIO 2] Stopped cleanly with exit code: {worker_p.exitcode}") + main_app_logger.info( + f"[SCENARIO 2] Stopped cleanly with exit code: {worker_p.exitcode}" + ) if worker_p.is_alive(): worker_p.terminate() @@ -557,7 +849,7 @@ def test_scenario_2_longevity_throughput(self, device): test_metrics = res_queue.get() self.__class__.benchmarks.append(test_metrics) - print(f"Test Status Result: {test_metrics.get('status')}\n", flush=True) + main_app_logger.info(f"Test Status Result: {test_metrics.get('status')}") # Explicitly tear down queue thread pools to prevent resource tracking leaks try: @@ -575,12 +867,11 @@ def test_scenario_3_video_clipper(self, device): # test_name = "Scenario_3_Clip_Generation_Evaluation" run_clipper = True - print( + main_app_logger.info( f"\n========================================\n" f"RUNNING TEST: {test_name} | Device: {device.upper()}\n" f"Source Destination: {self.source}\n" f"========================================", - flush=True, ) render_dir = self.result_dir / f"{self.name}/scenario3_{device}" render_dir.mkdir(parents=True, exist_ok=True) @@ -604,9 +895,11 @@ def test_scenario_3_video_clipper(self, device): ), ) worker_p.start() - print("[SCENARIO 3] Started processing ...") + main_app_logger.info("[SCENARIO 3] Started processing ...") worker_p.join() - print(f"[SCENARIO 3] Stopped cleanly with exit code: {worker_p.exitcode}") + main_app_logger.info( + f"[SCENARIO 3] Stopped cleanly with exit code: {worker_p.exitcode}" + ) if worker_p.is_alive(): worker_p.terminate() @@ -614,7 +907,7 @@ def test_scenario_3_video_clipper(self, device): test_metrics = res_queue.get() self.__class__.benchmarks.append(test_metrics) - print(f"Test Status Result: {test_metrics.get('status')}\n", flush=True) + main_app_logger.info(f"Test Status Result: {test_metrics.get('status')}") # Explicitly tear down queue thread pools to prevent resource tracking leaks try: @@ -635,12 +928,11 @@ def test_scenario_4_detection_and_clipper(self, device, sf_enabled, detection_ty run_clipper = True disable_detection = False - print( + main_app_logger.info( f"\n========================================\n" f"RUNNING TEST: {test_name} | Device: {device.upper()} | SF: {sf_enabled}\n" f"Source Name: {self.name} | Destination: {self.source}\n" f"========================================", - flush=True, ) render_dir = ( self.result_dir @@ -670,9 +962,11 @@ def test_scenario_4_detection_and_clipper(self, device, sf_enabled, detection_ty ), ) worker_p.start() - print("[SCENARIO 4] Started processing ...") + main_app_logger.info("[SCENARIO 4] Started processing ...") worker_p.join() - print(f"[SCENARIO 4] Stopped cleanly with exit code: {worker_p.exitcode}") + main_app_logger.info( + f"[SCENARIO 4] Stopped cleanly with exit code: {worker_p.exitcode}" + ) if worker_p.is_alive(): worker_p.terminate() @@ -681,11 +975,10 @@ def test_scenario_4_detection_and_clipper(self, device, sf_enabled, detection_ty test_metrics = res_queue.get() self.__class__.benchmarks.append(test_metrics) if disable_detection: - print(f"Test Status Result: {test_metrics.get('status')}\n", flush=True) + main_app_logger.info(f"Test Status Result: {test_metrics.get('status')}") else: - print( - f"Test Status Result: {test_metrics.get('status')} w/ {test_metrics.get('total_objects_detected')} detections\n", - flush=True, + main_app_logger.info( + f"Test Status Result: {test_metrics.get('status')} w/ {test_metrics.get('total_objects_detected')} detections", ) # Explicitly tear down queue thread pools to prevent resource tracking leaks @@ -699,8 +992,6 @@ def test_scenario_4_detection_and_clipper(self, device, sf_enabled, detection_ty def get_available_scenarios(): - import inspect - available_scenarios = set() for attr_name, _ in inspect.getmembers( TestHybridStreamHandlers, predicate=inspect.isfunction @@ -723,13 +1014,15 @@ def get_pytest_filter_expression(args, sorted_scenarios): target_scenarios = args.scenario if args.scenario else sorted_scenarios scenario_clauses = [] - print("\n" + "=" * 50) - print("TARGET SELECTION PREVIEW") - print("=" * 50) + main_app_logger.info("=" * 50) + main_app_logger.info("TARGET SELECTION PREVIEW") + main_app_logger.info("=" * 50) for num in target_scenarios: if num in basic_ids: - print(f" 🔹 Scenario {num}: Standard routing (ignoring sub-filters)") + main_app_logger.info( + f" 🔹 Scenario {num}: Standard routing (ignoring sub-filters)" + ) scenario_clauses.append(f"scenario_{num}") else: clause = f"scenario_{num}" @@ -748,14 +1041,18 @@ def get_pytest_filter_expression(args, sorted_scenarios): if applied_subs: applied_subs_str = ", ".join(applied_subs) sub_msg = f" with sub-filters: {applied_subs_str}" - print(f" ⚙️ Scenario {num}: Active compilation{sub_msg}") + main_app_logger.info( + f" ⚙️ Scenario {num}: Active compilation{sub_msg}" + ) else: sub_msg = ( f" with sub-filters: {', '.join(applied_subs)}" if applied_subs else "" ) - print(f" 🔹 Scenario {num}: Standard routing (ignoring sub-filters)") + main_app_logger.info( + f" 🔹 Scenario {num}: Standard routing (ignoring sub-filters)" + ) scenario_clauses.append(f"({clause})") # Safely join scenarios together with 'or' so they can execute side-by-side @@ -764,14 +1061,14 @@ def get_pytest_filter_expression(args, sorted_scenarios): # Target hardware context selection filter applies globally across all test cases if args.device.lower() != "all": - print(f" 💻 Hardware Context Constraint: {args.device.upper()}") + main_app_logger.info(f" 💻 Hardware Context Constraint: {args.device.upper()}") filter_expression = f"({filter_expression}) and {args.device.lower()}" else: - print(" 💻 Hardware Context Constraint: ALL AVAILABLE") + main_app_logger.info(" 💻 Hardware Context Constraint: ALL AVAILABLE") - print("=" * 50) - print(f"COMPILED PYTEST KEYWORD EXPRESSION:\n 👉 {filter_expression}") - print("=" * 50 + "\n") + main_app_logger.info("=" * 50) + main_app_logger.info(f"COMPILED PYTEST KEYWORD EXPRESSION: {filter_expression}") + main_app_logger.info("=" * 50) return filter_expression @@ -859,13 +1156,22 @@ def get_pytest_filter_expression(args, sorted_scenarios): # dest="debug_frame_limit", # help="Number of frames used for debugging [Default: 100]", # ) + + # PROFILING + parser.add_argument( + "--profile", + action="store_true", + help="Enable profiling", + ) + args = parser.parse_args() - os.environ["STREAM_SOURCE"] = args.source + os.environ["VIDEO_FILENAME"] = args.source os.environ["TEST_DURATION_MINS"] = str(args.duration) os.environ["CUSTOM_MODEL_FLAG"] = "True" if args.custom_model_flag else "False" os.environ["MODEL_NAME"] = args.model_name os.environ["DEBUG"] = "1" if args.debug else "0" + os.environ["ENABLE_PROFILING"] = "True" if args.profile else "False" # filter_expression = "test_scenario_4_detection_and_clipper" # filter_expression = "test_scenario_3_video_clipper" @@ -879,11 +1185,12 @@ def get_pytest_filter_expression(args, sorted_scenarios): "-s", "-v", "--log-cli-level=DEBUG", + "-W", + "ignore::_pytest.warning_types.PytestAssertRewriteWarning", __file__, ] - print( + main_app_logger.info( f"Launching decoupled testing suite configurations for destination targets: {args.source}", - flush=True, ) sys.exit(pytest.main(pytest_args)) diff --git a/fastapi/tests/test_readers.py b/fastapi/tests/test_readers.py index 6730162..7961d19 100644 --- a/fastapi/tests/test_readers.py +++ b/fastapi/tests/test_readers.py @@ -1,39 +1,90 @@ +# ============================================================================== +# SUPPRESS WARNINGS +# import warnings + +import pytest + +# warnings.filterwarnings( +# "ignore", category=FutureWarning, message=".*reduce_op` is deprecated.*" +# ) + +pytestmark = [ + pytest.mark.filterwarnings( + "ignore:.*anyio:_pytest.warning_types.PytestAssertRewriteWarning" + ), + pytest.mark.filterwarnings( + "ignore:Context managers for TensorRT types are deprecated:DeprecationWarning" + ), + pytest.mark.filterwarnings( + "ignore:Exception ignored in.*SharedMemory.__del__:UserWarning" + ), + # Global message fallback pattern captures local execution frames + pytest.mark.filterwarnings("ignore:.*reduce_op.*:FutureWarning"), +] + +# ============================================================================== +# LOGGING +import logging +import os +import sys + +logging.basicConfig( + level=logging.INFO, + # format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", + format="%(asctime)s [%(levelname)s] %(name)s (%(filename)s:%(lineno)d) - %(message)s", + handlers=[logging.StreamHandler(sys.stdout)], +) + +# Suppress low-delay reference block warnings from OpenCV/PyAV/FFmpeg +# os.environ["OPENCV_FFMPEG_LOGLEVEL"] = "-8" +# os.environ["OPENCV_LOG_LEVEL"] = "OFF" +logging.getLogger("libav").setLevel(logging.CRITICAL) +logging.getLogger("libav.hevc").setLevel(logging.CRITICAL) +logging.getLogger("matplotlib").setLevel(logging.WARNING) +logging.getLogger("ultralytics").setLevel(logging.WARNING) +# logger = trt.Logger(trt.Logger.WARNING) +# trt.init_libnvinfer_plugins(logger, "") +main_app_logger = logging.getLogger(__name__) + +# ============================================================================== +# IMPORTS + +# os.environ["OMP_NUM_THREADS"] = "2" +# os.environ["MKL_NUM_THREADS"] = "2" +# os.environ["PYTORCH_ALLOC_CONF"] = "expandable_segments:True" +# try: +# torch.set_num_interop_threads(2) # 1) +# torch.set_num_threads(4) # 2) +# except RuntimeError: +# # Safe graceful fallback if a process-level fork duplicated context maps +# pass import argparse import asyncio import csv +import ctypes import faulthandler import gc +import multiprocessing as mp +import sys import threading import time import traceback - -faulthandler.enable() -import inspect -import logging -import multiprocessing as mp -import os -import queue -import sys -import types -from concurrent.futures import ThreadPoolExecutor +import tracemalloc from pathlib import Path import cv2 -import matplotlib.pyplot as plt -import numpy as np -import pytest -import tensorrt as trt +import psutil import torch -# # Force all PyTorch extension handles to compile and load BEFORE threads spawn -# if torch.cuda.is_available(): -# _ = torch.zeros(1).cuda() -# import torch._ops -# import torch.utils - -# Explicitly invoke any plotting or module style lookups early +# import torch -sys.path.insert(1, str(Path(__file__).parent.parent)) +# Retrieve repo packages +REPO_DIR = str(Path(__file__).parent.parent) +sys.path.insert(1, REPO_DIR) +from base_test import ( + BaseTest, + fps_comparison_chart, +) from include.default_configs import ( CUSTOM_MODEL_FLAG_DEFAULT, DEBUG_DEFAULT, @@ -41,83 +92,360 @@ THRESHOLD_VALUE, ) from include.handlers import ( - AsyncVideoWriter, - CPUStreamHandler, - DeviceBaseHandler, - GPUStreamHandler, - log_to_logger, + get_test_handler, ) from include.utils import ( PipelineConfig, + ResourceTrackerFilter, + install_and_load_pip_package, + str2bool, ) +# objgraph = install_and_load_pip_package("objgraph", attribute_name=None) +# torch.set_grad_enabled(False) + +# ============================================================================== +# MONKEY PATCH +# Cache the hardware availability state globally. +# This prevents internal framework loops from triggering driver/NVML checks per frame. +# _cuda_available = torch.cuda.is_available() + + +# def _patched_is_available(): +# return _cuda_available + + +# torch.cuda.is_available = _patched_is_available + +# ============================================================================== +# SETUP +# Hooks directly into the OS kernel signals to force Python to print a full +# stack traceback right before it dies, allowing you to see which line of +# Python code caused the hard crash +faulthandler.enable() + try: # Retain standard spawn mode to prevent CUDA context driver deadlocks torch.multiprocessing.set_start_method("spawn", force=True) except RuntimeError: pass -logging.getLogger("matplotlib").setLevel(logging.WARNING) -logger = trt.Logger(trt.Logger.WARNING) -trt.init_libnvinfer_plugins(logger, "") - -DEBUG_FLAG_DEFAULT = True if DEBUG_DEFAULT == "1" else False -os.environ["OMP_NUM_THREADS"] = str(mp.cpu_count()) # "1" -os.environ["PYTORCH_ALLOC_CONF"] = "expandable_segments:True" force_export = False +# target_width, target_height = 7680, 4320 +STATE_CAPTURE = False + +# Force Python's multiprocessing layer to quiet tracking cleanup race conditions +os.environ["PYTHONWARNINGS"] = "ignore" +sys.warnoptions.append("ignore") + -# Force OpenCV to run sequentially to prevent context-switching overhead -cv2.setNumThreads(0) # Forces OpenCV loops to run strictly sequentially +# ========================================================================= +# ISOLATED BACKGROUND WORKER +# ========================================================================= -def fps_comparison_chart(chart_path, results, fps_key="Pipeline FPS (Video frames)"): +def isolated_detection_worker(init_args, test_args, res_queue): + device = test_args["device"] + detection_type = test_args["detection_type"] + sf_enabled = test_args["sf_enabled"] + gt_enabled = test_args["gt_enabled"] + + if device == "gpu" and torch.cuda.is_available(): + torch.cuda.synchronize() + torch.cuda.ipc_collect() + torch.cuda.empty_cache() + gc.collect() + + # Establish an accurate post-initialization hardware baseline + if str2bool(os.getenv("ENABLE_PROFILING", "False")): + tracemalloc.start() + + start_allocated, start_reserved = 0, 0 + if device == "gpu" and torch.cuda.is_available(): + torch.cuda.memory._record_memory_history( + enabled=True, + trace_alloc_max_entries=250000, + trace_alloc_record_context=True, + ) + + # This captures your baseline AFTER initialize_variables() is done + start_allocated = torch.cuda.memory_allocated(0) + start_reserved = torch.cuda.memory_reserved(0) + + try: + cv2.cuda.setBufferPoolUsage(False) + except AttributeError: + pass + else: + gc.collect() + process = psutil.Process(os.getpid()) + start_allocated = ( + process.memory_info().rss + ) # Reuse start_allocated container for host memory baseline + start_reserved = 0 + try: - names = [r["Test Name"] for r in results] - fps_values = [float(r[fps_key]) for r in results] - - plt.figure(figsize=(10, 6)) - plt.grid(axis="y", linestyle="--", alpha=0.7, zorder=0) - - colors = ["#2ca02c" if "gpu" in n.lower() else "#1f77b4" for n in names] - bars = plt.bar(names, fps_values, color=colors, zorder=3) - plt.ylabel("Frames Per Second (FPS)") - plt.title(f"Performance Comparison: {chart_path.stem}") - plt.xticks(rotation=45) - - for bar in bars: - yval = bar.get_height() - plt.text( - bar.get_x() + bar.get_width() / 2, - yval + 1, - f"{yval:.1f}", - ha="center", - va="bottom", + instance, _ = get_test_handler(TestReader(), device) + + instance.source = init_args["source"] + instance.name = init_args["name"] + instance.result_dir = Path(init_args["result_dir"]) + instance.active_streams = init_args["active_streams"] + instance.read_frame_only = init_args["read_frame_only"] + instance.__class__.benchmarks = init_args["benchmarks"] # Sandbox the metrics + + vid_dir = instance.result_dir / device + vid_dir.mkdir(parents=True, exist_ok=True) + os.environ["TEST_SUITE_RENDER_DIR"] = str(vid_dir) + + # config definition + config = PipelineConfig( + SHARED_OUTPUT=str(instance.result_dir), + CUSTOM_MODEL_FLAG=os.getenv("CUSTOM_MODEL_FLAG", CUSTOM_MODEL_FLAG_DEFAULT), + DEVICE=device.upper(), + OMIT_DETECTIONS_FLAG=True, + TEST_MODE=True, + DEBUG=os.getenv("DEBUG", DEBUG_DEFAULT), + DEBUG_FRAME_LIMIT=int(os.getenv("DEBUG_FRAME_LIMIT", 100)), + ENABLE_QUERYING=False, + MODEL_NAME=os.getenv("MODEL_NAME", MODEL_NAME_DEFAULT), + SMART_FILTERING_ENABLED=sf_enabled, + THRESHOLD_VALUE=int(os.getenv("THRESHOLD_VALUE", THRESHOLD_VALUE)), + DETECTION_TYPE=detection_type, + ) + + # INITIALIZE CLASS (mimic DeviceBaseHandler.__init__) ------------------------------ + instance.is_rtsp = str(instance.source).startswith("rtsp:/") + instance.active = True + instance.config = config + + # kwarg definition + instance._testMethodName = f"{device.upper()}Reader" + # instance.video_output_name = ( + # f"{instance._testMethodName}_{short_name}.mp4" + # ) + + instance.loop = asyncio.get_event_loop() + instance.frame_ready_event = asyncio.Event() + instance._is_stopped = False + instance._stop_lock = threading.Lock() # Local lock for this instance + instance.main_startup_event = mp.Event() + + instance.device = instance.config.DEVICE + instance.device_input = instance.config.device_input + instance.disp_w, instance.disp_h = instance.config.DISPLAY_FRAME_SIZE + instance.resize_h, instance.resize_w = [ + instance.config.MODEL_H, + instance.config.MODEL_W, + ] + + instance.setup_reader( + instance.config.TARGET_FPS, + instance.config.CLIP_DURATION, + startup_event=instance.main_startup_event, + ) + instance.initialize_variables() + instance.setup_threads() + instance.last_heartbeat = time.perf_counter() + + if STATE_CAPTURE: + main_app_logger.info( + "[DIAGNOSTIC] Registering system state baseline layout..." + ) + instance.baseline_before_start = instance.capture_state_snapshot() + + def orig_fn(profiler): + return instance.run_realtime_inference( + sf_enabled=instance.config.sf_enabled, + profiler=profiler, + read_frame_only=instance.read_frame_only + if hasattr(instance, "read_frame_only") + else False, + gt_enabled=gt_enabled, ) - if fps_values: - plt.ylim(0, max(fps_values) * 1.2) + def profiler_fn(): + profiler = None + try: + if str2bool(os.getenv("ENABLE_PROFILING", "False")): + Profiler = install_and_load_pip_package( + "pyinstrument", attribute_name="Profiler" + ) + + profiler = Profiler(interval=0.005) # 5ms sampling interval + + # Telling the statistical sampler to skip recording exception blocks completely + # stops stack_sampler.py from ballooning RAM over long production runs. + if hasattr(profiler, "_sampler") and profiler._sampler: + profiler._sampler.trace_exceptions = False + + profiler.start() + + orig_fn(profiler) + + if str2bool(os.getenv("ENABLE_PROFILING", "False")): + # 2. Redirect standard error to the filter trap right before report compilation + original_stderr = sys.stderr + sys.stderr = ResourceTrackerFilter(original_stderr) + + try: + # Force standard stdout to flush out any lingering teardown messages + # BEFORE pyinstrument dumps its massive ASCII tree block. + sys.stdout.flush() + + # main_app_logger.info(profiler.output_text(color=True)) + # profiler.main_app_logger.info(color=True) + # prof_output = profiler.output_text(color=True) + # main_app_logger.info( + # f"\n=== LATENCY BREAKDOWN FOR {self.name} ({device}) ===\n{prof_output}\n", + # + # ) + + # Save a clean, interactive tree map for visual analysis + output_html_path = instance.output_path.replace( + ".mp4", "_profile.html" + ) + # output_html_path = f"/tmp/profile_{video_name}_{device}.html" + profiler.write_html(output_html_path) + main_app_logger.info( + f"[PROFILER] Performance tree map exported to {output_html_path}", + ) + + finally: + sys.stderr = original_stderr + if "profiler" in locals(): + try: + # Force the Python interpreter to detach pyinstrument's sampling hooks + sys.setprofile(None) + + # Completely decouple internal statistical sessions to drop C-heap frames + if hasattr(profiler, "_last_session"): + profiler._last_session = None + if hasattr(profiler, "last_session"): + profiler.last_session = None + + # Forcibly clear out internal memoryview strings caching tree metrics + if ( + hasattr(profiler, "session") + and profiler.session is not None + ): + if hasattr(profiler.session, "frame_groups"): + profiler.session.frame_groups = None + if hasattr(profiler.session, "samples"): + profiler.session.samples = [] + + # Purge compiled tree metrics structures + profiler.session = None + del profiler + except Exception: + pass + + # Trigger an immediate native Linux heap compression pass + # This grabs the newly abandoned pyinstrument C-heap blocks and + # flushes them to the OS before the fixture assessment snapshot fires! + gc.collect() + try: + libc = ctypes.CDLL("libc.so.6") + libc.malloc_trim(0) + except Exception: + pass - plt.tight_layout() - plt.savefig(str(chart_path)) - print(f" Comparison chart saved to: {chart_path}") - except Exception: - print("Skipping chart generation: error occurred.") + except Exception: + traceback.print_exc() + + if str2bool(os.getenv("ENABLE_PROFILING", "False")) and hasattr( + instance, "process_thread" + ): + # Re-initialize the thread context using our safe profile wrapper proxy + instance.process_thread = threading.Thread(target=profiler_fn, daemon=True) + + instance.VIDEO_GT_DETAILS = None + instance.duration_target = 30 + + instance.start() + + while instance.active or not instance._is_stopped: + time.sleep(0.25) + if getattr(instance, "status", None) == "DONE": + break + + if ( + hasattr(instance, "process_thread") + and instance.process_thread is not None + ): + if not instance.process_thread.is_alive(): + main_app_logger.info( + "[TEST HARNESS] Background worker exited. Breaking loop.", + ) + break + + instance.stop_threads(["process_thread"]) + + # Force early hardware driver sweep before unbinding threads + if instance.device_input == "cuda" and torch.cuda.is_available(): + torch.cuda.synchronize() + torch.cuda.empty_cache() + torch.cuda.ipc_collect() + + gc.collect() + + try: + if STATE_CAPTURE: + # --- CAPTURE STATE POINT B (Right before cleanup) --- + main_app_logger.info( + "[DIAGNOSTIC] Gathering active execution workspace layouts..." + ) + state_after_stop = instance.capture_state_snapshot() + + # 3. Print the granular delta analysis out to your terminal screen + new_keys_generated, mutated_keys, static_keys = ( + instance.print_lifecycle_delta( + instance.baseline_before_start, + state_after_stop, + return_keys=True, + ) + ) + # self.config.DEBUG_FLAG and + if len(new_keys_generated) > 0 or len(mutated_keys) > 0: + # Inform the blueprint engine to eliminate every difference found between Point A and B + instance.stop_blueprint_executor(new_keys_generated, mutated_keys) + except Exception: + traceback.print_exc() + assert instance.status == "DONE" -class DummyProcess: - def start(self): - pass + # TEARDOWN + instance.execute_teardown() - def join(self, timeout=None): - pass + if str2bool(os.getenv("ENABLE_PROFILING", "False")): + gc.collect() + if ( + device == "gpu" and torch.cuda.is_available() + ): # self.device_input == "cuda" and torch.cuda.is_available(): + torch.cuda.synchronize() + torch.cuda.empty_cache() + instance.assess_memory( + device, instance.name, start_allocated, start_reserved + ) - def is_alive(self): - return False + if len(instance.__class__.benchmarks) > 0: + final_metrics = instance.__class__.benchmarks[-1] + res_queue.put({"status": "success", "metrics": final_metrics}) + else: + res_queue.put({"status": "error", "error": "No benchmarks generated."}) - def close(self): - pass + except Exception as e: + res_queue.put( + {"status": "error", "error": str(e), "traceback": traceback.format_exc()} + ) + res_queue.put( + {"status": "error", "error": str(e), "traceback": traceback.format_exc()} + ) +# ========================================================================= +# PYTEST TEST HARNESS +# ========================================================================= @pytest.fixture(scope="class") def setup_context(request): """Replaces setUpClass: Runs once per test class.""" @@ -126,10 +454,7 @@ def setup_context(request): main_path = test_dir.parent video_dir = main_path / "inputs" - request.cls._shared_model = None - request.cls._shared_model_path = None - request.cls._shared_model_device = None - request.cls._shared_model_sf_enabled = None + request.cls.read_frame_only = True # model_name = os.getenv("MODEL_NAME", MODEL_NAME_DEFAULT) # Handler.__init__ (main items) @@ -151,22 +476,26 @@ def setup_context(request): request.cls.name = "rtsp" request.cls.is_rtsp = True # request.cls.test_duration_mins = float(os.getenv("TEST_DURATION_MINS", 0.25)) + request.cls.result_dir = ( test_dir / f"{current_test_filename}_results" # /{model_name}" / request.cls.name ) request.cls.result_dir.mkdir(parents=True, exist_ok=True) + + # Benchmark statistics request.cls.benchmarks = [] request.cls.csv_filename = f"reader_benchmarks_{request.cls.name}.csv" request.cls.csv_path = request.cls.result_dir / request.cls.csv_filename - request.cls.active = True + # request.cls.active = True request.cls.active_streams = {} + # RUN ALL PARAMETERIZED TESTS ---------------------------------------- yield - # Summarize Benchmarks + # FINAL CSV EXPORT -------------------------------------------------- if request.cls.benchmarks: # Filter and exclude rows that were interrupted or failed initialization due to an early pytest skip request.cls.benchmarks = [ @@ -195,12 +524,19 @@ def setup_context(request): dict_writer.writeheader() dict_writer.writerows(results) - print(f"\n[FINAL] Benchmarks saved to {request.cls.csv_path}") + main_app_logger.info(f"[FINAL] Benchmarks saved to {request.cls.csv_path}") + + main_app_logger.info("=" * 80) + main_app_logger.info( + f"{'Test Name':<25} | {'Pipeline FPS (Target)':<21} | {'Avg Frame Reading (ms)':<22} | {'Pipeline Speedup vs CPU':<15}", + ) + main_app_logger.info("-" * 80) for r in results: - print( - f" > {r['Test Name']}: {r['Pipeline FPS (Video frames)']} FPS | {r['Pipeline FPS (Target frames)']} FPS | {r['Avg Frame Reading (ms)']} ms | Speedup: {r.get('Pipeline Speedup vs CPU', 'N/A')}" + main_app_logger.info( + f"{r['Test Name']:<25} | {r['Pipeline FPS (Target frames)']:<21} | {r['Avg Frame Reading (ms)']:<22} | {r.get('Pipeline Speedup vs CPU', 'N/A'):<10}", ) + main_app_logger.info("=" * 125) chart_path = ( request.cls.result_dir @@ -217,1843 +553,90 @@ def setup_context(request): ) -@pytest.fixture(autouse=True) -def each_test_setup(request): - test_class_self = request.instance - if torch.cuda.is_available(): - torch.cuda.synchronize() - - device = request.node.callspec.params.get("device") - # detection_type = request.node.callspec.params.get("detection_type") - # sf_enabled = request.node.callspec.params.get("sf_enabled") - - test_class_self._testMethodName = f"{device.upper()}Reader" - - # video_output_name = f"{test_class_self._testMethodName}_detections_output.mp4" - vid_dir = test_class_self.result_dir / device - vid_dir.mkdir(parents=True, exist_ok=True) - - # Handler.__init__ (remaining items) - # 1. Re-initialize a fresh configuration object - test_class_self.config = PipelineConfig( - CUSTOM_MODEL_FLAG=os.getenv("CUSTOM_MODEL_FLAG", CUSTOM_MODEL_FLAG_DEFAULT), - DEVICE=device.upper(), - OMIT_DETECTIONS_FLAG=True, - TEST_MODE=True, - DEBUG=os.getenv("DEBUG", DEBUG_DEFAULT), - DEBUG_FRAME_LIMIT=int(os.getenv("DEBUG_FRAME_LIMIT", 100)), - ENABLE_QUERYING=False, - MODEL_NAME=os.getenv("MODEL_NAME", MODEL_NAME_DEFAULT), - # SMART_FILTERING_ENABLED=sf_enabled, - THRESHOLD_VALUE=int(os.getenv("THRESHOLD_VALUE", THRESHOLD_VALUE)), - # DETECTION_TYPE=detection_type, - ) - - # test_video_output_path = os.path.join(str(vid_dir), video_output_name) - os.environ["TEST_SUITE_RENDER_DIR"] = str(vid_dir) - test_class_self.config.SHARED_OUTPUT = str(test_class_self.result_dir) - test_class_self.disp_w, test_class_self.disp_h = (640, 360) - - if device == "gpu": - # Allocate a permanent float32/float16 channel layout space directly on VRAM - test_class_self.static_gpu_360p = torch.empty( - (1, 3, test_class_self.disp_h, test_class_self.disp_w), - dtype=torch.float32, - device="cuda", - ) - test_class_self.static_gpu_byte_bchw = torch.empty( - (1, 3, test_class_self.disp_h, test_class_self.disp_w), - dtype=torch.uint8, - device="cuda", - ).contiguous() - # Fast reusable canvas tensor matching your writer width/height payload bounds - # test_class_self.static_host_canvas = np.zeros((test_class_self.disp_h, test_class_self.disp_w, 3), dtype=np.uint8) - # Register the memory block as page-locked (pinned) to max out PCIe DMA bandwidth - # cv2.cuda.registerPageLocked(test_class_self.static_host_canvas) - - # Create two isolated tracking canvases to handle the ping-pong data stream - test_class_self.static_host_canvases = [ - np.zeros( - (test_class_self.disp_h, test_class_self.disp_w, 3), dtype=np.uint8 - ), - np.zeros( - (test_class_self.disp_h, test_class_self.disp_w, 3), dtype=np.uint8 - ), - ] - test_class_self.canvas_selector = 0 - - # Register BOTH buffers as page-locked memory - cv2.cuda.registerPageLocked(test_class_self.static_host_canvases[0]) - cv2.cuda.registerPageLocked(test_class_self.static_host_canvases[1]) - - # Reset core state machine properties before invoking any backend handlers - test_class_self.active = True - # test_class_self._is_stopped = False - - # Replaces the standard class dictionary with an active inter-process proxy container layout. - # This ensures child worker processes can write memory back to the parent process. - # if not hasattr(test_class_self.__class__, "_managed_sync_ctx"): - # test_class_self.__class__._managed_sync_ctx = mp.Manager() - - # test_class_self.__class__._shared_bench_metrics = test_class_self.__class__._managed_sync_ctx.dict({ - # "num_objs": 0, - # "total_written_frames": 0, - # "total_pipeline_ms": 0.0, - # "real_world_latency_ms": 0.0, - # "total_sf_pipeline_time_ms": 0.0, - # "total_read_time": 0.0, - # "total_queue_saturation": 0.0, - # "queue_saturation_history": [0.0] - # }) - - test_class_self.loop = asyncio.get_event_loop() - test_class_self.frame_ready_event = asyncio.Event() - test_class_self._is_stopped = False - test_class_self._stop_lock = threading.Lock() # Local lock for this instance - test_class_self.mp_frame_ready_event = mp.Event() - # test_class_self.stat_start_time = time.perf_counter() # timing to display detection - - test_class_self.device = test_class_self.config.DEVICE - test_class_self.device_input = test_class_self.config.device_input - test_class_self.resize_h, test_class_self.resize_w = [ - test_class_self.config.MODEL_H, - test_class_self.config.MODEL_W, - ] - - # Resolve concrete handler class type - HandlerClass = GPUStreamHandler if device == "gpu" else CPUStreamHandler - HandlerClass.pipeline_fn = test_class_self.__class__.pipeline_fn - - # Dynamically re-bind backend methods to this execution instance - handler_classes = [HandlerClass, DeviceBaseHandler] - all_method_names = set() - - for cls in handler_classes: - for name, attr in inspect.getmembers(cls, predicate=inspect.isfunction): - all_method_names.add(name) - - for method_name in all_method_names: - source_obj = ( - HandlerClass if hasattr(HandlerClass, method_name) else DeviceBaseHandler - ) - if hasattr(source_obj, method_name): - raw_func = getattr(source_obj, method_name) - if ( - not hasattr(test_class_self.__class__, method_name) - or method_name == "pipeline_fn" - ): - setattr( - test_class_self, - method_name, - types.MethodType(raw_func, test_class_self), - ) - # Force the background thread-pool launcher to run your modified staging loop - # setattr( - # test_class_self, - # "run_realtime_inference", - # types.MethodType(test_class_self.__class__.run_realtime_inference, test_class_self) - # ) - - # 3. FORCE NATIVE PIPELINE PROVISIONING - test_class_self.setup_reader( - test_class_self.config.TARGET_FPS, test_class_self.config.CLIP_DURATION - ) - test_class_self.initialize_variables() - test_class_self.setup_model(None) - test_class_self.prepare_pipeline() - - test_class_self.run_realtime_inference = types.MethodType( - test_class_self.__class__.run_realtime_inference, test_class_self - ) - # This guarantees that when handlers.py spawns background execution threads, - # it is forced to execute your modified staging test loop method. - # HandlerClass.run_realtime_inference = test_class_self.__class__.run_realtime_inference - # DeviceBaseHandler.run_realtime_inference = test_class_self.__class__.run_realtime_inference - - test_class_self.setup_threads() - - # # Reset runtime loop state properties - # test_class_self.render_queue = None - # test_class_self.next_process_idx = 0.0 - # test_class_self.frame_in_clip_count = 0 - # test_class_self.frame_count = 0 - # test_class_self.elapsed_display_time = 0.0 - # test_class_self.no_roi_frame_cnt = 0 - - # test_class_self.component_stats = { - # "sf": [], - # "roi": [], - # "det": [], - # "dma_upload": [], - # "queue_blocked": [], - # "batch_sizes": [], - # "thread_backlog": [] - # } - # test_class_self.crops_per_frame_list = [] - - # test_class_self.is_cuda = test_class_self.device.lower() == "gpu" and torch.cuda.is_available() - # # test_class_self.frame_count_target = mp.Value("i", 0) # test_class_self.frame_count_target = 0 - # test_class_self.frame_count_target = 0 - # test_class_self.next_process_idx = 0.0 - # test_class_self.frame_in_clip_count = 0 - - # if hasattr(test_class_self, "setup_threads"): - # test_class_self.setup_threads() - - # shared_event_buffer = {"sf": [], "roi": [], "det": []} - # test_class_self.gpu_event_buffer = shared_event_buffer - - # if torch.cuda.is_available(): - # torch.cuda.empty_cache() - # torch.cuda.ipc_collect() - # torch.cuda.reset_peak_memory_stats(0) - - # if device == "gpu" and torch.cuda.is_available(): - # print("\n[PROFILER] Initializing isolated PyTorch VRAM allocation history map...") - # try: - # # Modern PyTorch API signature format - # torch.cuda.memory._record_memory_history( - # enabled=True, - # max_entries=200000 # Sets the buffer queue size limits - # ) - # except TypeError: - # # Fallback baseline if your specific environment only allows a basic toggle switch - # torch.cuda.memory._record_memory_history(enabled=True) - - # # Force eager initialization of hidden packages to avoid dynamic lookups in the hot path - # import dataclasses - # import importlib - # import torch.nn.functional as F - # from ultralytics.cfg import get_cfg - # import pyparsing - # import matplotlib - # import matplotlib.rcsetup - # import anyio - # import anyio._core._fileio - # import numpy.core.overrides - # import numpy.lib.function_base - # import asyncio.base_events - # import sre_parse - # import logging - - # # Dummy execution pass to fully resolve internal lazy properties and populate sys.modules caches - # try: - # _ = get_cfg() - # except Exception: - # pass - - yield - - # Teardown logic - test_class_self.active = False - - # # Force immediate structural flush of the asynchronous display thread pool before memory unlinking - # if hasattr(test_class_self, "display_pool") and test_class_self.display_pool is not None: - # try: - # # wait=True guarantees every single remaining background 8K layout operation - # # finishes processing and flushes into the rendering_worker before the clock stops - # test_class_self.display_pool.shutdown(wait=True) - # except Exception: - # pass - # if hasattr(test_class_self, "display_ring_buffer"): - # delattr(test_class_self, "display_ring_buffer") - # delattr(test_class_self, "display_pool") - - # Fallback to production reader safety closure - if hasattr(test_class_self, "reader") and test_class_self.reader is not None: - try: - if hasattr(test_class_self.reader, "print_breakdown"): - test_class_self.reader.print_breakdown() - test_class_self.reader.stop() - except Exception: - pass - - if ( - hasattr(test_class_self, "stop_writer") - and test_class_self.stop_writer is not None - ): - try: - test_class_self.stop_writer.set() - except Exception: - pass - - # --- CRITICAL RE-ORDERED FLUSH GATE --- - # 1. First, block and wait for the video processing producer thread to completely finish - # reading all remaining frames from the input video file. - producer_thread_handle = getattr(test_class_self, "process_thread", None) - if producer_thread_handle is not None and producer_thread_handle.is_alive(): - producer_thread_handle.join(timeout=0.5) # 10.0) - - # 2. Block and wait for background asynchronous AI executor workers to finish inference tasks. - if hasattr(test_class_self, "executor") and test_class_self.executor: - test_class_self.executor.shutdown(wait=True) - - # 3. Allow the multiprocessing render queue to naturally empty its frames into the encoder pipe. - if ( - hasattr(test_class_self, "render_queue") - and test_class_self.render_queue is not None - ): - try: - # Loop safely until the render loop handles the last remaining frames - # while not test_class_self.render_queue.empty(): - # time.sleep(0.05) - - # Send a poison pill token ONLY after all threads have fully stopped putting data into it - # test_class_self.render_queue.put(None, timeout=1.0) - if ( - hasattr(test_class_self, "render_queue") - and test_class_self.render_queue is not None - ): - try: - # Forcefully clear the queue thread tracking matrices - test_class_self.render_queue.close() - test_class_self.render_queue.cancel_join_thread() - except Exception: - pass - except Exception: - pass - - # 4. Gracefully join the background FFmpeg process, avoiding premature kills - render_proc_handle = getattr(test_class_self, "render_proc", None) - if render_proc_handle is not None: - try: - if render_proc_handle.is_alive(): - # Grant up to 10 seconds for disk I/O synchronization - render_proc_handle.join(timeout=0.5) # 10.0) - - if render_proc_handle.is_alive(): - print( - "[WARN] Render worker hung during final flush. Forcing termination." - ) - render_proc_handle.terminate() - render_proc_handle.join() - - render_proc_handle.close() - except Exception: - pass - setattr(test_class_self, "render_proc", None) - - # 4. Deep System Unlinking of Shared Memory Layers (Parent/Child safe) - # This loop uses direct reference mapping rather than guessing PIDs - for shm_pool_attr in ["ai_shms", "shms"]: - if hasattr(test_class_self, shm_pool_attr): - shm_pool = getattr(test_class_self, shm_pool_attr) - if shm_pool: - for shm_segment in list(shm_pool): - try: - shm_segment.close() - shm_segment.unlink() - except Exception: - pass - shm_pool.clear() - - # 5. Clean up the Sync Base Manager Process - if hasattr(test_class_self, "manager") and test_class_self.manager is not None: - try: - test_class_self.manager.shutdown() - except Exception: - pass - test_class_self.manager = None - - # CRITICAL FIX: Block and wait for the background producer thread to die - # BEFORE we delete the reader attribute from the namespace map. - producer_thread_handle = getattr(test_class_self, "process_thread", None) - if producer_thread_handle is not None and producer_thread_handle.is_alive(): - producer_thread_handle.join(timeout=5.0) - - # if hasattr(test_class_self, "ingest_ring") and test_class_self.ingest_ring: - # for mat in test_class_self.ingest_ring: - # try: - # cv2.cuda.unregisterPageLocked(mat) - # except Exception: - # pass - # test_class_self.ingest_ring.clear() - - # if hasattr(test_class_self, "pinned_matrices") and test_class_self.pinned_matrices: - # for active_mat in test_class_self.pinned_matrices: - # try: - # cv2.cuda.unregisterPageLocked(active_mat) - # except Exception: - # pass - # test_class_self.pinned_matrices.clear() - # if hasattr(test_class_self, "pinned_tensors"): - # test_class_self.pinned_tensors.clear() - # if hasattr(test_class_self, "ai_pinned_tensors"): - # test_class_self.ai_pinned_tensors.clear() - - try: - cv2.cuda.unregisterPageLocked(test_class_self.pinned_matrices) - except Exception: - pass - - # ADD THIS MECHANISM: - if hasattr(test_class_self, "static_host_canvas"): - try: - cv2.cuda.unregisterPageLocked(test_class_self.static_host_canvas) - except Exception: - pass - - if ( - not test_class_self.active - ): # Only execute this block during complete class teardown - if hasattr(test_class_self, "ingest_ring") and test_class_self.ingest_ring: - for mat in test_class_self.ingest_ring: - try: - cv2.cuda.unregisterPageLocked(mat) - except Exception: - pass - test_class_self.ingest_ring.clear() - - if ( - hasattr(test_class_self, "pinned_matrices") - and test_class_self.pinned_matrices - ): - for active_mat in test_class_self.pinned_matrices: - try: - cv2.cuda.unregisterPageLocked(active_mat) - except Exception: - pass - test_class_self.pinned_matrices.clear() - - # Now it is structurally safe to purge attributes without causing cross-thread collisions - keys_to_purge = [ - "reader", - "process_thread", - "inference_stream", - "bgs_stream", - "model", - "raw_input", - "ai_gpu_staging", - "ai_pinned_tensors", - "executor", - # "io_executor", - ] - for key in keys_to_purge: - if hasattr(test_class_self, key): - delattr(test_class_self, key) - - if ( - hasattr(test_class_self, "gpu_event_buffer") - and test_class_self.gpu_event_buffer - ): - test_class_self.gpu_event_buffer.clear() - if hasattr(test_class_self, "component_stats") and test_class_self.component_stats: - test_class_self.component_stats.clear() - - with torch.inference_mode(): - if torch.cuda.is_available(): - torch.cuda.synchronize() - if device == "gpu": - torch.cuda.memory._record_memory_history(enabled=False) - torch.cuda.empty_cache() - torch.cuda.ipc_collect() - - gc.collect() - time.sleep(0.2) - - @pytest.mark.usefixtures("setup_context") -class TestReader: - # SETUP -------------------------------------------- - - @pytest.mark.parametrize("device", ["cpu", "gpu"]) - def test_device_reader(self, device): - """Unified test runner for all configurations.""" - self.duration_target = 30 - - # Trigger your clean overridden thread boot - self.start() - - print( - f"\n[TEST HARNESS] Execution Started. Monitoring variables natively for {self.duration_target}s..." - ) - # test_start_time = time.perf_counter() - # target_wait_frames = ( - # int(self.duration_target * float(self.target_fps)) - # if hasattr(self, "target_fps") - # else 450 - # ) - - # --- WATCH NATIVE VARIABLES LIVE --- - # while not self._is_stopped: - # time.sleep(0.1) - - # Explicit timer tracking allows background multiprocessing queues to stream uninhibited - # test_start_time = time.perf_counter() +class TestReader(BaseTest): + """ + Pytest runner that spawns the isolated worker, waits for completion, + and merges the returned metrics into the main class for CSV/Chart generation. + """ - while self.active or not self._is_stopped: - # Check if our active benchmark validation timeline target has been fulfilled - # if (time.perf_counter() - test_start_time) >= float(self.duration_target) + 15.0: - # print("\n[TEST HARNESS] Targeted test runtime duration reached. Initiating clean multi-process flush...", flush=True) - # break - time.sleep(0.1) # Stay clear of the hot pipeline lane + benchmarks = [] # Class-level attribute required by _finalize_benchmarks - # Natively initiate the multi-process writer teardown - # self.stop() - - assert self.status == "DONE" - - def setup_threads(self): - """Overrides handlers.py to bind threads dynamically to the test instance.""" - self.setup_shared_memory() # Natively sets up Manager dictionary and buffers - - # Executor for Async YOLO tasks and FFmpeg re-encoding - self.executor = ThreadPoolExecutor(max_workers=self.config.MAX_WORKERS) - # self.clip_executor = ThreadPoolExecutor(max_workers=self.config.MAX_WORKERS) - - print( - f"sf_enabled: {self.config.sf_enabled}\tTEST_MODE: {self.config.TEST_MODE}", - flush=True, - ) - - # Open up looking-ahead buffer horizons to eliminate 8K queue backpressure stalls - self.signal_queue = mp.Queue(maxsize=128) # 10) - self.render_queue = mp.Queue(maxsize=256) # 64) - - test_dir = os.getenv( - "TEST_SUITE_RENDER_DIR", str(Path(self.config.SHARED_OUTPUT)) - ) - os.makedirs(test_dir, exist_ok=True) - - if self.source.startswith("rtsp"): - short_name = "rtsp" - else: - short_name = Path(self.source).stem - video_output_name = f"{self._testMethodName}_{short_name}.mp4" - out_path = os.path.join(test_dir, video_output_name) - self.output_path = ( - out_path # f"{self.config.SHARED_OUTPUT}/{short_name}_{self.device}.mp4" - ) - - log_to_logger( - f"[TEST MODE] Detection results saved to: {out_path}", level="info" - ) - - # ===================================================================== - # DYNAMIC THREAD TARGET REDIRECTION - # ===================================================================== - # Lambda forces the background processing thread to evaluate your custom staging loop natively - self.process_thread = threading.Thread( - target=lambda: self.run_realtime_inference( - sf_enabled=self.config.sf_enabled - ), - daemon=True, - ) - # self.render_proc = mp.Process( # threading.Thread( - # target=rendering_worker, - # args=( - # self.render_queue, - # (self.disp_w, self.disp_h), - # self.output_path, - # self.target_fps, - # ), - # daemon=True, - # ) - # self.render_proc = threading.Thread(target=lambda: None, daemon=True) - # self.display_proc = threading.Thread(target=lambda: None, daemon=True) - self.render_proc = DummyProcess() - self.display_proc = DummyProcess() - - self.async_writer = AsyncVideoWriter( - self.output_path, - cv2.VideoWriter_fourcc(*"avc1"), - float(self.target_fps), - (self.disp_w, self.disp_h), - ) - # self.async_writer = None - - def start(self): - """ - Starts the decoupled ingestion and inference threads in the correct order. - """ - # PRE-SYNC: Ensure GPU is idle before timing starts - if self.device_input == "cuda": - if torch.cuda.is_available(): - torch.cuda.synchronize() - - # Start the hardware-decoupled reader first - self.reader.start() - - if self.config.ENABLE_QUERYING: - self._initialize_writer() - - # Small delay to allow the reader's deque to populate - time.sleep(0.1) - - # Start the producer and consumer threads - if hasattr(self, "process_thread") and not self.process_thread.is_alive(): - self.process_thread.start() - - # If running on the CPU track, block the main test thread briefly until the CPU - # has successfully populated the first few frames into the render queue. - # This completely prevents the FFmpeg rendering worker from starving and skipping - # the initial 3-4 seconds of video. - # if getattr(self, "device_input", "cpu") == "cpu": - # print("[INIT] Waiting for CPU to prime the render queue...") - # timeout_counter = 0 - # # Wait until at least 5 frames are buffered in the queue or 10 seconds pass - # while self.render_queue.qsize() < 5 and timeout_counter < 100: - # time.sleep(0.1) - # timeout_counter += 1 - # print( - # f"[INIT] Render queue primed with {self.render_queue.qsize()} frames. Launching worker." - # ) - - if not self.config.DISABLE_DETECTION: - self.render_proc.start() - - self.display_proc.start() - - if ( - self.config.ENABLE_QUERYING - and not self.config.TEST_MODE - and not self.metadata_thread.is_alive() - ): - self.metadata_thread.start() - - if self.config.ENABLE_QUERYING and not self.writer_thread.is_alive(): - self.writer_thread.start() - - return self - - def stop(self): - """Overrides handlers.py to flush thread objects safely without deadlocking.""" - with self._stop_lock: - if self._is_stopped: - return - - print( - f"\n[TEST HARNESS] Initiating rapid thread flush for {self.name}", - flush=True, - ) - self.active = False - - # 1. Rapidly clear the async video writer thread queue first - # if hasattr(self, "async_writer") and self.async_writer is not None: - # try: - # self.async_writer.release() - # except Exception: - # pass - - # ===================================================================== - # DECUPLED MULTI-PROCESS TEARDOWN LIFECYCLE SEQUENCE - # ===================================================================== - # 1. FIRST: Drain and synchronize your thread pool tasks so EVERY frame drops into the IPC queue - if hasattr(self, "display_pool") and self.display_pool is not None: - try: - if hasattr(self.display_pool, "_work_queue"): - backlog = self.display_pool._work_queue.qsize() - if backlog > 0: - print( - f"\n\033[94m[STAGE 1/4] Synchronizing display pool threads. Draining {backlog} background tasks...\033[0m", - flush=True, - ) - backlog_s = time.perf_counter() - while ( - self.display_pool._work_queue.qsize() > 0 - or len(self.reorder_staging_buffer) > 0 - ): - # Yield a brief slice to let worker threads complete downscaling - time.sleep(0.01) - backlog_e = time.perf_counter() - backlog_s - print(f"\t\033[94mTook {backlog_e} secs\033[0m", flush=True) - print( - "\033[92m[SUCCESS] All background image transformations completed cleanly.\033[0m", - flush=True, - ) - self.display_pool.shutdown(wait=True) - except Exception as e: - print( - f"[TEARDOWN ERROR] Thread pool synchronization failed: {e}", - flush=True, - ) - setattr(self, "display_pool", None) - - # 2. SECOND: Now that every single frame is safely sitting in the render_queue, dispatch the poison pill - # if hasattr(self, "render_queue") and self.render_queue is not None: - # try: - # print(f"\033[94m[STAGE 2/4] Dispatching shutdown sentinel (None) to rendering process worker (Backlog: {self.render_queue.qsize()} frames)...\033[0m", flush=True) - # self.render_queue.put(None, timeout=2.0) - # except Exception as queue_err: - # print(f"\033[91m[TEARDOWN ERROR] Failed staging shutdown token: {queue_err}\033[0m", flush=True) - - # # 3. THIRD: Block the main thread safely and allow the detached process to write everything to disk - # if hasattr(self, "render_proc") and self.render_proc is not None: - # try: - # if self.render_proc.is_alive(): - # print(f"\033[94m[STAGE 3/4] Main thread blocking. Waiting for hardware disk I/O synchronization...\033[0m", flush=True) - # t_join_start = time.perf_counter() - # self.render_proc.join(timeout=30.0) # Increase timeout to ensure all 248 frames save - # join_duration = time.perf_counter() - t_join_start - - # if self.render_proc.is_alive(): - # print("\n\033[91m[CRITICAL STALL] Render worker process hung on disk write! Forcing termination...\033[0m", flush=True) - # self.render_proc.terminate() - # self.render_proc.join() - # else: - # print(f"\033[92m[FINAL] Video compilation finished cleanly! Hard drive commit took {join_duration:.2f} seconds.\033[0m", flush=True) - - # if hasattr(self, "source"): - # expected_disk_path = Path(self.output_path) - # if expected_disk_path.exists(): - # size_mb = expected_disk_path.stat().st_size / (1024 * 1024) - # print(f"\033[92m[DISK VERIFIED] Destination asset compiled: {expected_disk_path.name} ({size_mb:.2f} MB)\033[0m\n", flush=True) - # self.render_proc.close() - # except Exception as proc_err: - # print(f"\033[91m[TEARDOWN ERROR] Failed closing background process container: {proc_err}\033[0m", flush=True) - # setattr(self, "render_proc", None) - - # 2. SECOND: Deliver a poison pill sentinel token to tell FFmpeg to flush its internal buffers - # ===================================================================== - # MULTI-PROCESS TEARDOWN LIFECYCLE SEQUENCE (DECOUPLED FLUSH) - # ===================================================================== - # 1. FIRST: Instantly dispatch the shutdown token so the worker process knows to flush entries - if hasattr(self, "render_queue") and self.render_queue is not None: - try: - print( - f"\n\033[94m[STAGE 1/3] Dispatching shutdown sentinel (None) to rendering process worker (Backlog: {self.render_queue.qsize()} frames)...\033[0m", - flush=True, - ) - # Delivering the poison pill immediately tells FFmpeg to drain remaining blocks sequentially - self.render_queue.put(None, timeout=2.0) - except Exception as queue_err: - print( - f"\033[91m[TEARDOWN ERROR] Failed staging shutdown token: {queue_err}\033[0m", - flush=True, - ) - - # 2. SECOND: Allow the background multiprocessing queue to empty outstanding items naturally - if hasattr(self, "render_queue") and self.render_queue is not None: - try: - print( - "\n\033[94m[STAGE 2/3] Finalizing file output. Draining remaining frames from IPC memory lane...\033[0m", - flush=True, - ) - t_drain = time.perf_counter() - # Wait up to 15 seconds for the worker process to pull every remaining matrix out of the pipe - while ( - not self.render_queue.empty() - and (time.perf_counter() - t_drain) < 15.0 - ): - time.sleep( - 0.01 - ) # Micro-yield grants immediate execution priority to the background process core - except Exception: - pass - - # 3. THIRD: Block the main thread safely and allow the detached process to finish disk I/O operations - if hasattr(self, "render_proc") and self.render_proc is not None: - try: - join_duration = 0.0 - if self.render_proc.is_alive(): - print( - "\033[94m[STAGE 2/2] Main thread blocking. Synchronizing hard drive file headers...\033[0m", - flush=True, - ) - t_join_start = time.perf_counter() - self.render_proc.join( - timeout=15.0 - ) # Safe timeout lets video containers finalize cleanly - join_duration = time.perf_counter() - t_join_start - - if self.render_proc.is_alive(): - print( - "\n\033[91m[CRITICAL STALL] Render worker process hung on disk write! Forcing termination...\033[0m", - flush=True, - ) - self.render_proc.terminate() - self.render_proc.join() - else: - print( - f"\033[92m[FINAL] Video compilation finished cleanly! Hard drive commit took {join_duration:.2f} seconds.\033[0m", - flush=True, - ) - - expected_disk_path = Path(self.output_path) - if expected_disk_path.exists(): - size_mb = expected_disk_path.stat().st_size / (1024 * 1024) - print( - f"\033[92m[DISK VERIFIED] Destination asset compiled: {expected_disk_path.name} ({size_mb:.2f} MB)\033[0m\n", - flush=True, - ) - self.render_proc.close() - except Exception as proc_err: - print( - f"\033[91m[TEARDOWN ERROR] Failed closing background process container: {proc_err}\033[0m", - flush=True, - ) - setattr(self, "render_proc", None) - - # 4. FOURTH: Clean up remaining pipeline executors and queues safely - if hasattr(self, "render_queue") and self.render_queue is not None: - try: - self.render_queue.close() - self.render_queue.cancel_join_thread() - except Exception: - pass - setattr(self, "render_queue", None) - - if hasattr(self, "executor") and self.executor is not None: - try: - self.executor.shutdown(wait=True) - except Exception: - pass - setattr(self, "executor", None) - - self.status = "DONE" - self._is_stopped = True - print( - "[TEST HARNESS] Teardown complete. Releasing session cleanly.\n", - flush=True, - ) - - # # 2. De-couple the multiprocessing queues without holding internal worker joins - # for q_attr in ["signal_queue"]: #, "render_queue"]: - # if hasattr(self, q_attr): - # q = getattr(self, q_attr) - # if q is not None: - # try: - # q.close() - # q.cancel_join_thread() - # except Exception: - # pass - # setattr(self, q_attr, None) - # if hasattr(self, "render_queue") and self.render_queue is not None: - # try: - # print(f"[TEST HARNESS] Finalizing file output. Waiting for {self.render_queue.qsize()} frames to commit...") - # while not self.render_queue.empty(): - # time.sleep(0.05) - # # Send the shutdown token to tell FFmpeg/OpenCV to save container indexes - # self.render_queue.put(None, timeout=2.0) - # except Exception: - # pass - - # # 3. Stop the shared-memory zero-copy background reader workers safely - # if hasattr(self, "reader") and self.reader is not None: - # try: - # if hasattr(self.reader, "running_flag"): - # self.reader.running_flag.value = False - # if hasattr(self.reader, "stopped"): - # self.reader.stopped = True - # self.reader.stop() - # except Exception: - # pass - - # # 4. Fast non-blocking thread pool shutdown prevents joining active loops indefinitely - # if hasattr(self, "executor") and self.executor is not None: - # try: - # # wait=False closes the pool interface instantly without stalling the CPU core! - # self.executor.shutdown(wait=True) #False) - # except Exception: - # pass - # setattr(self, "executor", None) - - # # FIX: Shut down the display layout pool to guarantee all frame tasks reach the writer queue - # if hasattr(self, "display_pool") and self.display_pool is not None: - # try: - # # wait=True forces the main thread to wait until async_display_task cycles finish execution - # self.display_pool.shutdown(wait=True) - # except Exception: - # pass - # setattr(self, "display_pool", None) - - # # 5. Clean up loose GPU stream handles - # if hasattr(self, "inference_stream") and self.inference_stream is not None: - # if torch.cuda.is_available(): - # try: - # self.inference_stream.synchronize() - # except Exception: - # pass - - # if hasattr(self, "async_writer") and self.async_writer is not None: - # try: - # self.async_writer.release() - # except Exception: - # pass - # setattr(self, "async_writer", None) - - # if hasattr(self, "render_proc") and self.render_proc is not None: - # try: - # if self.render_proc.is_alive(): - # self.render_proc.join(timeout=10.0) - # if self.render_proc.is_alive(): - # print("[WARN] Render worker hung during final flush. Forcing termination.") - # self.render_proc.terminate() - # self.render_proc.join() - # self.render_proc.close() - # except Exception: - # pass - # setattr(self, "render_proc", None) - - # self.status = "DONE" - # self._is_stopped = True - - # print(f"\n[TEST HARNESS] Teardown complete. Releasing session cleanly.", flush=True) - - # HELPERS -------------------------------------------- - def _print_gpu_mem(self): - if torch.cuda.is_available(): - # Memory currently used by tensors - allocated = torch.cuda.memory_allocated(0) / 1024**2 - # Total memory reserved by PyTorch (the "Pool") - reserved = torch.cuda.memory_reserved(0) / 1024**2 - print(f"\tAllocated: {allocated:0.2f} MB") - print(f"\tReserved: {reserved:0.2f} MB") - else: - print("\tCUDA not available.") - - def _finalize_benchmarks( - self, - num_objs, - total_written_frames, - total_pipeline_ms, - real_world_latency_ms, - total_sf_pipeline_ms, - total_read_time, - total_queue_saturation, - queue_saturation_history, - ): - """Aggregates metrics and adds them to the results list.""" - # sf_enabled = self.config.sf_enabled - stat_frame_count = self.stat_frame_count - stat_fps = self.stat_fps - - h2d_label = ( - "Pinned H2D Transfer (PCIe DMA)" - if self.is_cuda - else "Data Preparation Overhead" - ) - # d2h_label = ( - # "D2H Transfer (PCIe Download)" - # if self.is_cuda - # else "Array Extraction Overhead" - # ) - - total_pipeline_s = total_pipeline_ms / 1000.0 # Full pipeline - total_real_pipeline_s = ( - real_world_latency_ms / 1000.0 - ) # Pipeline until last frame sent to writer - real_est_fps = ( - self.frame_count_target / total_real_pipeline_s - if total_real_pipeline_s > 0 - else 0 - ) - - # det_latency_s = ( - # total_sf_pipeline_ms / 1000.0 - # ) # Just SF/Detection pipeline (sf + roi_ det) - # det_est_fps = ( - # self.frame_count_target / det_latency_s if det_latency_s > 0 else 0 - # ) - - # if total_written_frames > 0: - duration_s = ( - self.reader.total_input_frames / self.reader.input_fps - if self.reader.input_fps > 0 - else 0 - ) - out_duration_s = ( - total_written_frames / self.reader.target_fps - if self.reader.target_fps > 0 - else 0 - ) - print( - f"Expected duration: {self.duration_target:.2f} stream_duration_s: {duration_s:.2f} output_duration_s: {out_duration_s:.2f}" - ) - - h2d_display_label = f"Reader {h2d_label}:" - avg_reader_ms = (total_read_time / total_written_frames) * 1000 - # avg_resize_ms = (total_resize_time / total_written_frames)*1000 - # avg_write_ms = (total_disk_write_overhead / total_written_frames)*1000 - target_frame_fps = total_written_frames / total_pipeline_s - all_frame_fps = self.reader.total_input_frames / total_pipeline_s - avg_copy_ms = (self.reader.total_shm_copy_time / total_written_frames) * 1000 - avg_blocked_ms = ( - self.reader.total_queue_wait_time / total_written_frames - ) * 1000 - - avg_saturation = (total_queue_saturation / total_written_frames) * 100 - peak_saturation = ( - max(queue_saturation_history) * 100 if queue_saturation_history else 0 - ) - target_match_ratio = ( - total_written_frames / (total_pipeline_s * self.reader.target_fps) - ) * 100 - if self.is_cuda: - avg_h2d_ms = (self.reader.total_h2d_time / total_written_frames) * 1000 - avg_prep_ms = 0.0 - else: - avg_prep_ms = (self.reader.total_h2d_time / total_written_frames) * 1000 - avg_h2d_ms = 0.0 - - # Calculate structural frame size payload in Gigabytes (H * W * Channels) - frame_size_gb = (self.reader.frame_height * self.reader.frame_width * 3) / ( - 1024**3 - ) - - # 1. Compute Peak H2D PCIe Throughput - avg_h2d_s = ( - ( - sum(self.component_stats["dma_upload"]) - / len(self.component_stats["dma_upload"]) - ) - / 1000.0 - if self.component_stats["dma_upload"] - else 0 - ) - if self.is_cuda and avg_h2d_s > 0.00001: - self.pcie_throughput_gbps = frame_size_gb / avg_h2d_s - else: - self.pcie_throughput_gbps = ( - 0.0 # Safe fallback baseline for non-PCIe pipelines (CPU) - ) - - # 2. Extract PyTorch VRAM Fragmentation Delta Metrics - if self.is_cuda and torch.cuda.is_available(): - peak_alloc = torch.cuda.max_memory_allocated(0) / 1024**2 - peak_reserved = torch.cuda.max_memory_reserved(0) / 1024**2 - self.vram_efficiency = ( - (peak_alloc / peak_reserved * 100.0) if peak_reserved > 0 else 100.0 - ) - else: - self.vram_efficiency = ( - 0.0 # Clean zero baseline representation for CPU runs - ) - - # Calculate averages for component breakdowns - # avg_reader_ms = (total_read_time / self.reader.total_input_frames) * 1000 - # avg_reader_ms = (total_read_time / self.frame_count_target) * 1000 - avg_sf = ( - sum(self.component_stats["sf"]) / len(self.component_stats["sf"]) - if self.component_stats["sf"] - else 0 - ) - avg_roi = ( - sum(self.component_stats["roi"]) / len(self.component_stats["roi"]) - if self.component_stats["roi"] - else 0 - ) - avg_det = ( - sum(self.component_stats["det"]) / len(self.component_stats["det"]) - if self.component_stats["det"] - else 0 - ) - - avg_crops = ( - sum(self.crops_per_frame_list) / len(self.crops_per_frame_list) - if self.crops_per_frame_list - else 0 - ) - - # Total Latency Sum (SF + ROI + DET) - # total_sum = avg_sf + avg_roi + avg_det - det_latency_ms = avg_sf + avg_roi + avg_det - det_latency_s = det_latency_ms / 1000.0 - det_est_fps = (total_written_frames / det_latency_s) if det_latency_s > 0 else 0 - - # Calculate how often we hit a high-motion cap (e.g., 20 crops) - capped_frames = sum(1 for c in self.crops_per_frame_list if c >= 20) - cap_rate = ( - (capped_frames / len(self.crops_per_frame_list)) * 100 - if self.crops_per_frame_list - else 0 - ) + @pytest.mark.parametrize("device", ["gpu", "cpu"]) + def test_device_reader(self, device): + # Pull the values dynamically assigned by the setup_context fixture + init_args = { + "source": self.__class__.source, + "name": self.__class__.name, + "result_dir": str(self.__class__.result_dir), + "active_streams": {}, + "benchmarks": self.__class__.benchmarks, + "read_frame_only": self.__class__.read_frame_only, + } - # avg_queue = ( - # sum(self.component_stats["queue_blocked"]) - # / len(self.component_stats["queue_blocked"]) - # if self.component_stats["queue_blocked"] - # else 0 - # ) - # avg_batch = ( - # sum(self.component_stats["batch_sizes"]) - # / len(self.component_stats["batch_sizes"]) - # if self.component_stats["batch_sizes"] - # else 0 - # ) + detection_type = "object" # request.node.callspec.params.get("detection_type") + sf_enabled = False # request.node.callspec.params.get("sf_enabled") + gt_enabled = False - backlog_list = self.component_stats.get("thread_backlog", []) - avg_backlog = ( - sum(backlog_list) / len(backlog_list) if len(backlog_list) > 0 else 0.0 - ) + test_args = { + "device": device, + "detection_type": detection_type, + "sf_enabled": sf_enabled, + "gt_enabled": gt_enabled, + } - print("\n" + "=" * 60) - print( - f" FULLY-OPTIMIZED ASYNC STAGE ({self.config.DEVICE}) PIPELINE BREAKDOWN " - ) - print("=" * 60) - print(f"Total Output Frames Written: {total_written_frames}") - print(f"Total Pipeline Execution Time: {total_pipeline_s:.4f} seconds") - print(f"Overall Processing Speed: {target_frame_fps:.2f} FPS") - print("-" * 60) - print("MAIN CONSUMER LOOP TIMELINE (SEQUENTIAL OVERHEAD):") - print(f" 1. Read Frame from Queue: {avg_reader_ms:6.2f} ms") - # print(f" 2. Image Resize Time (360p Transformation): {avg_resize_ms:6.2f} ms") - # print(f" 3. Disk Writer Queue Hand-off (Async): {avg_write_ms:6.2f} ms") - print("-" * 60) - print("BACKGROUND INGESTION HEALTH (ASYNC METRICS):") - print(f" A. Inbound Stream Capture Speed: {all_frame_fps:6.2f} FPS") - print(f" B. Host RAM Array Copy (100MB Memcpy): {avg_copy_ms:6.2f} ms") - print(f" C. {h2d_display_label:<42} {avg_h2d_ms:6.2f} ms") - print(f" D. Reader Thread Queue Blocked Time: {avg_blocked_ms:6.2f} ms") - print(f" E. Consumer Queue Saturation Density: {avg_saturation:6.1f}%") - print( - f" F. Peak PCIe Upload Throughput: {self.pcie_throughput_gbps:6.2f} GB/s" + main_app_logger.info( + f"\n{'=' * 60}\n" + f"[TEST HARNESS] Spawning isolated high-speed process for {self.__class__.name} (SF: {sf_enabled})...\n" + f"{'=' * 60}" ) - print(f" G. Active Worker Thread Backlog: {avg_backlog:6.1f} tasks") - print(f" H. VRAM Memory Efficiency (Cache): {self.vram_efficiency:6.1f}%") - print("-" * 60) - - # EXPANDED PERFORMANCE INSIGHTS AND DIAGNOSTICS - print("PIPELINE HEALTH & BEHAVIOR INSIGHTS:") - if avg_saturation > 80.0: - pipeline_status = "CHOKED" - print( - f" • Status: \033[91m🔴 {pipeline_status}\033[0m (Downstream logic cannot keep up with inbound stream speed)" - ) - elif avg_saturation > 40.0: - pipeline_status = "BALANCED" - print( - f" • Status: \033[93m🟡 {pipeline_status}\033[0m (Queue buffer is actively pacing consumer workloads)" - ) - else: - pipeline_status = "IDLE/LIGHT" - print( - f" • Status: \033[92m🟢 {pipeline_status}\033[0m (Consumer loop finishes ahead of background ingestion clock)" - ) - print(f" • Peak Queue Fullness Reached: {peak_saturation:.1f}%") - # Calculate stream drop indicator - print(f" • Targeted Pacing Delivery Accuracy: {target_match_ratio:.1f}%") - print("=" * 60) - - self.__class__.benchmarks.append( - { - "Test Name": self._testMethodName, - # "Detection Type": self.config.DETECTION_TYPE, - "Device": self.config.DEVICE, - # "Smart Filtering": "Enabled" if sf_enabled else "Disabled", - "Video": self.source, # self.name? - "Video FPS": f"{self.reader.input_fps:.2f}", - "Video Original Duration (s)": f"{duration_s:.4f}", - "Video Frames": self.reader.total_input_frames, - # PIPELINE OVERVIEW - "Target FPS": f"{self.reader.target_fps:.2f}", - "Output Duration (s)": f"{out_duration_s:.4f}", - "Output Frames": total_written_frames, - "Pipeline Latency (s)": f"{total_pipeline_s:.2f}", - "Pipeline FPS (Video frames)": f"{all_frame_fps:.2f}", - "Pipeline FPS (Target frames)": f"{target_frame_fps:.2f}", - "Real Pipeline Latency (s)": f"{total_real_pipeline_s:.2f}", - "Real Pipeline FPS (Target frames)": f"{real_est_fps:.2f}", - # MAIN CONSUMER LOOP TIMELINE (SEQUENTIAL OVERHEAD) - "Avg Frame Reading (ms)": f"{avg_reader_ms:.2f}", - # "Avg Resize (ms)": f"{avg_resize_ms:.2f}", - # "Avg Writer Async Handoff (ms)": f"{avg_write_ms:.2f}", - # BACKGROUND INGESTION HEALTH (ASYNC METRICS) - "Avg Host Copy (ms)": f"{avg_copy_ms:.2f}", - "Avg DMA Upload (ms)": f"{avg_h2d_ms:.2f}", - "Avg Data Prep Overhead (ms)": f"{avg_prep_ms:.2f}", - "Avg Queue Blocked (ms)": f"{avg_blocked_ms:.2f}", - "Avg Queue Saturation (%)": f"{avg_saturation:.2f}", - # PIPELINE HEALTH & BEHAVIOR INSIGHTS - "Pipeline Status": pipeline_status, - "Peak Queue Fullness (%)": f"{peak_saturation:.2f}", - "Targeted Pacing Delivery (%)": f"{target_match_ratio:.2f}", - # DETECTION PIPELINE (Should B NULL) - "SF/Detection Latency (s)": f"{det_latency_s:.2f}", - "SF/Detection FPS": f"{det_est_fps:.2f}", - "Avg SF (ms)": f"{avg_sf:.2f}", - "Avg ROI (ms)": f"{avg_roi:.2f}", - "Avg Obj. Detection (ms)": f"{avg_det:.2f}", - "Total Breakdown Sum (ms)": f"{det_latency_ms:.2f}", - "Avg Crops/Frame": f"{avg_crops:.1f}", - # "Frames w/o ROIs": self.no_roi_frame_cnt, - "Crop Cap Rate (>20)": f"{cap_rate:.1f}%", - "Objects Detected": num_objs, - # TIming to display frame (read to after send to render queue) - "Display Latency (s)": f"{self.elapsed_display_time:.2f}", - "Display Frames": stat_frame_count, - "Display FPS": f"{stat_fps:.2f}", - "PCIe Bandwidth Throughput (GB/s)": f"{self.pcie_throughput_gbps:.2f}", - "Avg Async Thread Pool Backlog": f"{sum(self.component_stats.get('thread_backlog', [0])) / len(self.component_stats.get('thread_backlog', [1])):.1f}", - "VRAM Allocation Efficiency (%)": f"{self.vram_efficiency:.1f}%", - } - ) + # Spawn a pristine Python process (identical to test_pipeline.py's stream_worker) + ctx = mp.get_context("spawn") + res_queue = ctx.Queue() - print( - f"\n[{self._testMethodName}] Pipeline Latency (s): {total_pipeline_s:.2f} sec" - ) - print( - f"\n[{self._testMethodName}] Pipeline FPS (Target frames): {target_frame_fps:.2f} ({total_written_frames} frames)" - ) - print( - f"\n[{self._testMethodName}] Pipeline FPS (Video frames): {all_frame_fps:.2f} ({self.reader.total_input_frames} frames)" - ) - print( - f"\n[{self._testMethodName}] SF/Detection FPS (Target frames): {det_est_fps:.2f} ({total_written_frames} frames)" - ) - print( - f"\n[{self._testMethodName}] Display FPS: {stat_fps:.2f} ({stat_frame_count} frames)" + worker_p = ctx.Process( + target=isolated_detection_worker, args=(init_args, test_args, res_queue) ) - def _finalize_benchmarksv2( - self, - total_written_frames, - total_pipeline_time, - total_read_time, - total_resize_time, - total_disk_write_overhead, - total_queue_saturation, - queue_saturation_history, - ): - """Aggregates metrics and adds them to the results list.""" - h2d_label = ( - "Pinned H2D Transfer (PCIe DMA)" - if self.is_cuda - else "Data Preparation Overhead" - ) - # d2h_label = ( - # "D2H Transfer (PCIe Download)" - # if self.is_cuda - # else "Array Extraction Overhead" - # ) + worker_p.start() + worker_p.join() # Block Pytest until the isolated pipeline finishes - if total_written_frames > 0: - duration_s = ( - self.reader.total_input_frames / self.reader.input_fps - if self.reader.input_fps > 0 - else 0 - ) - out_duration_s = ( - total_written_frames / self.reader.target_fps - if self.reader.target_fps > 0 - else 0 - ) - print( - f"Expected duration: {self.duration_target} stream_duration_s: {int(duration_s)} output_duration_s: {int(out_duration_s)}" - ) - h2d_display_label = f"Reader {h2d_label}:" - avg_reader_ms = (total_read_time / total_written_frames) * 1000 - avg_resize_ms = (total_resize_time / total_written_frames) * 1000 - avg_write_ms = (total_disk_write_overhead / total_written_frames) * 1000 - target_frame_fps = total_written_frames / total_pipeline_time - all_frame_fps = self.reader.total_input_frames / total_pipeline_time - avg_copy_ms = ( - self.reader.total_shm_copy_time / total_written_frames - ) * 1000 - - avg_blocked_ms = ( - self.reader.total_queue_wait_time / total_written_frames - ) * 1000 - avg_saturation = (total_queue_saturation / total_written_frames) * 100 - peak_saturation = ( - max(queue_saturation_history) * 100 if queue_saturation_history else 0 - ) - target_match_ratio = ( - total_written_frames / (total_pipeline_time * self.reader.target_fps) - ) * 100 - if self.is_cuda: - avg_h2d_ms = (self.reader.total_h2d_time / total_written_frames) * 1000 - avg_prep_ms = 0.0 - else: - avg_prep_ms = (self.reader.total_h2d_time / total_written_frames) * 1000 - avg_h2d_ms = 0.0 + # Extract and merge results + if not res_queue.empty(): + result = res_queue.get() - print("\n" + "=" * 60) - print( - f" FULLY-OPTIMIZED ASYNC STAGE ({self.config.DEVICE}) PIPELINE BREAKDOWN " - ) - print("=" * 60) - print(f"Total Output Frames Written: {total_written_frames}") - print(f"Total Pipeline Execution Time: {total_pipeline_time:.4f} seconds") - print(f"Overall Processing Speed: {target_frame_fps:.2f} FPS") - print("-" * 60) - print("MAIN CONSUMER LOOP TIMELINE (SEQUENTIAL OVERHEAD):") - print( - f" 1. Read Frame from Queue: {avg_reader_ms:6.2f} ms" - ) - print( - f" 2. Image Resize Time (360p Transformation): {avg_resize_ms:6.2f} ms" - ) - print( - f" 3. Disk Writer Queue Hand-off (Async): {avg_write_ms:6.2f} ms" - ) - print("-" * 60) - print("BACKGROUND INGESTION HEALTH (ASYNC METRICS):") - print( - f" A. Inbound Stream Capture Speed: {all_frame_fps:6.2f} FPS" - ) - print( - f" B. Host RAM Array Copy (100MB Memcpy): {avg_copy_ms:6.2f} ms" - ) - print(f" C. {h2d_display_label:<42} {avg_h2d_ms:6.2f} ms") - print( - f" D. Reader Thread Queue Blocked Time: {avg_blocked_ms:6.2f} ms" - ) - print( - f" E. Consumer Queue Saturation Density: {avg_saturation:6.1f}%" - ) - print("-" * 60) - - # EXPANDED PERFORMANCE INSIGHTS AND DIAGNOSTICS - print("PIPELINE HEALTH & BEHAVIOR INSIGHTS:") - if avg_saturation > 80.0: - pipeline_status = "CHOKED" - print( - f" • Status: \033[91m🔴 {pipeline_status}\033[0m (Downstream logic cannot keep up with inbound stream speed)" - ) - elif avg_saturation > 40.0: - pipeline_status = "BALANCED" - print( - f" • Status: \033[93m🟡 {pipeline_status}\033[0m (Queue buffer is actively pacing consumer workloads)" + if result["status"] == "error": + pytest.fail( + f"Pipeline crashed in worker process:\n{result.get('error')}\n{result.get('traceback')}" ) else: - pipeline_status = "IDLE/LIGHT" - print( - f" • Status: \033[92m🟢 {pipeline_status}\033[0m (Consumer loop finishes ahead of background ingestion clock)" - ) - - print( - f" • Peak Queue Fullness Reached: {peak_saturation:.1f}%" - ) - # Calculate stream drop indicator - print( - f" • Targeted Pacing Delivery Accuracy: {target_match_ratio:.1f}%" - ) - print("=" * 60) - - self.__class__.benchmarks.append( - { - "Test Name": self._testMethodName, - # "Detection Type": self.config.DETECTION_TYPE, - "Device": self.config.DEVICE, - # "Smart Filtering": "Enabled" if sf_enabled else "Disabled", - "Video": self.source, # self.name? - "Video FPS": f"{self.reader.input_fps:.2f}", - "Video Duration (s)": f"{duration_s:.4f}", - "Video Frames": self.reader.total_input_frames, - # PIPELINE OVERVIEW - "Target FPS": f"{self.reader.target_fps:.2f}", - "Output Frames": total_written_frames, - "Pipeline Latency (s)": f"{total_pipeline_time:.2f}", - "Pipeline FPS (Video frames)": f"{all_frame_fps:.2f}", - "Pipeline FPS (Target frames)": f"{target_frame_fps:.2f}", - # MAIN CONSUMER LOOP TIMELINE (SEQUENTIAL OVERHEAD) - "Avg Frame Reading (ms)": f"{avg_reader_ms:.2f}", - "Avg Resize (ms)": f"{avg_resize_ms:.2f}", - "Avg Writer Async Handoff (ms)": f"{avg_write_ms:.2f}", - # BACKGROUND INGESTION HEALTH (ASYNC METRICS) - "Avg Host Copy (ms)": f"{avg_copy_ms:.2f}", - "Avg DMA Upload (ms)": f"{avg_h2d_ms:.2f}", - "Avg Data Prep Overhead (ms)": f"{avg_prep_ms:.2f}", - "Avg Queue Blocked (ms)": f"{avg_blocked_ms:.2f}", - "Avg Queue Saturation (%)": f"{avg_saturation:.2f}", - # PIPELINE HEALTH & BEHAVIOR INSIGHTS - "Pipeline Status": pipeline_status, - "Peak Queue Fullness (%)": f"{peak_saturation:.2f}", - "Targeted Pacing Delivery (%)": f"{target_match_ratio:.2f}", - } - ) - - print( - f"\n[{self._testMethodName}] Pipeline Latency (s): {total_pipeline_time:.2f} sec" - ) - print( - f"\n[{self._testMethodName}] Pipeline FPS (Target frames): {target_frame_fps:.2f} ({total_written_frames} frames)" - ) - print( - f"\n[{self._testMethodName}] Pipeline FPS (Video frames): {all_frame_fps:.2f} ({self.reader.total_input_frames} frames)" - ) - - # TESTS -------------------------------------------- - - def pipeline_fn( - self, device_frame, overall_frame_num, is_target_frame, stat_start_time - ): - num_objs = 0 - metrics = {"sf_time": 0, "roi_time": 0, "det_time": 0, "bbs": None} - - # TODO: Add Function to write frames sized to (disp_w, disp_h) efficiently - if self.device_input == "cuda" and torch.is_tensor(device_frame): - # 2. Fast Inline VRAM Downscaling into our static memory slot - # Reshape to (Batch, Channel, Height, Width) seamlessly without duplicating data - gpu_tensor = device_frame[None, :].permute(0, 3, 1, 2).float() - - resized_tensor = torch.nn.functional.interpolate( - gpu_tensor, - size=(360, 640), - mode="nearest", - ) - - # CONVERTS TO CPU EARLIER (WORKS but lowers fps) - # hwc_byte_tensor = resized_tensor.squeeze(0).permute(1, 2, 0).byte() - # cpu_tensor = hwc_byte_tensor.cpu() - # bgr_contiguous = cpu_tensor.contiguous() + metrics = result["metrics"] - # Using copy_() avoids creating any runtime allocations or memory-stride drift. - self.static_gpu_byte_bchw.copy_(resized_tensor.byte()) + self.__class__.benchmarks.append(metrics) - # Safely reshape the pre-allocated, locked GPU memory layout back to standard HWC array topology. - # Since the underlying array layout is strictly contiguous, this permute is guaranteed - # to be zero-copy on the GPU and free from memory race stalls. - bgr_contiguous = self.static_gpu_byte_bchw.squeeze(0).permute(1, 2, 0) - - # 1. Grab the current free pinned slot tracking variables from your reader - d2h_idx = self.reader.d2h_selector - pinned_tensor_buf = self.reader.d2h_buffers[d2h_idx] - - # c_idx = self.canvas_selector - # current_canvas = self.static_host_canvases[c_idx] - - # host_tensor_view = torch.as_tensor(current_canvas, device="cpu") - - # 3. Non-blocking asynchronous PCIe DMA Download directly into our page-locked canvas - with torch.cuda.stream(self.reader.download_stream): - # pinned_tensor = torch.from_numpy(current_canvas).cuda() - pinned_tensor_buf.copy_(bgr_contiguous, non_blocking=True) - - # Synchronize only the side download stream layout channel - self.reader.download_stream.synchronize() - - cpu_360p_frame = self.reader.d2h_numpys[d2h_idx] - - # 4. Fast Metadata Rendering via OpenCV - # if metrics["bbs"] is not None and len(metrics["bbs"]) > 0: - # for box in metrics["bbs"]: - # # Coordinates must match your 360p scaled target context map - # x1, y1, x2, y2 = int(box[0]), int(box[1]), int(box[2]), int(box[3]) - # cv2.rectangle(current_canvas, (x1, y1), (x2, y2), (0, 255, 0), 2) - # cv2.putText(current_canvas, str(box[4]), (x1, y1 - 10), - # cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 1) - - # 5. Non-Blocking Push straight to your background AsyncVideoWriter thread pool - # We pass a direct .copy() slice so the hot loop can instantly reuse the pinned ring buffer - safe_disk_frame = np.array(cpu_360p_frame, copy=True, order="C") - self.async_writer.write_frame(safe_disk_frame) - # self.canvas_selector = 1 - self.canvas_selector - self.reader.d2h_selector = 1 - self.reader.d2h_selector - - else: - # Reusable baseline track for CPU execution mappings - cpu_resized = cv2.resize( - device_frame, (640, 360), interpolation=cv2.INTER_NEAREST - ) - if metrics["bbs"] is not None: - for box in metrics["bbs"]: - cv2.rectangle( - cpu_resized, - (int(box[0]), int(box[1])), - (int(box[2]), int(box[3])), - (0, 255, 0), - 2, - ) - self.async_writer.write_frame(cpu_resized) - - self.update_frame(stat_start_time) - return num_objs, metrics # Skip full detection pass - - def run_realtime_inference(self, sf_enabled=True): - # self.duration_target = 30 - self.status = "RUNNING" - metrics = {} - num_objs = 0 - self.is_cuda = self.device.lower() == "gpu" and torch.cuda.is_available() - self.frame_count_target = 0 - self.next_process_idx = 0.0 - self.frame_in_clip_count = 0 - total_pipeline_time_ms = 0.0 - total_read_time = 0.0 - total_queue_saturation = 0.0 - # queue_saturation_history = [0.0] - total_written_frames = 0 - total_sf_pipeline_time_ms = 0.0 - real_world_latency_ms = 0.0 - - # queue_size = 4 - total_run_pipelinefn = 0 - # total_read_time = 0 - # total_resize_time = 0 - # total_written_frames = 0 - # total_disk_write_overhead = 0.0 - total_frame_loop_latency = 0.0 - total_active_processing_overhead = 0.0 - # total_queue_saturation = 0.0 - # total_queue_saturation = 0.0 - queue_saturation_history = [] - consecutive_slow_frames = 0 - # total_dropped_frames = 0 - - # coverage_percentages = [] - self.component_stats = { - "sf": [], - "roi": [], - "det": [], - "dma_upload": [], # Track PCIe Transfer Latencies - "queue_blocked": [], # Track GIL Serialization stalls - "batch_sizes": [], # Track Smart Filtering density - "thread_backlog": [], # Track thread work pool backlog - } - self.crops_per_frame_list = [] - - self.step_size = ( - float(self.input_fps) / float(self.target_fps) - if hasattr(self, "target_fps") - else 1.0 - ) - self.max_target_frames = ( - int(self.duration_target * float(self.target_fps)) - if hasattr(self, "target_fps") - else float("inf") - ) - - # self.start() - # time.sleep(0.1) - - # if self.source.startswith("rtsp"): - # short_name = "rtsp" - # else: - # short_name = Path(self.source).stem - # output_path= f"{self.config.SHARED_OUTPUT}/{short_name}_{self.device}.mp4" - # disp_wh = (640, 360) - # async_writer = AsyncVideoWriter( - # self.output_path, - # cv2.VideoWriter_fourcc(*'avc1'), - # float(self.target_fps), - # (self.disp_w, self.disp_h) - # ) - - pipeline_start_time = time.perf_counter() - - # try: - self.dynamic_limit = max(2, int(0.5 * self.target_fps)) - # last_frame_time = time.perf_counter() - while self.active and self.frame_count_target < self.max_target_frames: - try: - # FRAME RETRIEVAL --------------------------------------------- - try: - # device_frame, frame_num = self.reader.read() - # Utilize a clean OS kernel-level block to completely eliminate GIL thrashing - # frame_8k, frame_num = None, None - frame_start_time = time.perf_counter() - t_read = time.perf_counter() - # if self.active: - ret, frame_8k, frame_num = ( - self.reader.read() - ) # Successfully reads the 8K frame - if not ret or frame_8k is None: - # Check if there are any remaining frames still buffered in flight inside the reader queue - # if hasattr(self.reader, 'frame_queue') and not self.reader.frame_queue.empty(): - # ret, frame_8k, frame_num = self.reader.read() - # if not ret or frame_8k is None: - # break - # else: - # break - if self.reader is None or ( - hasattr(self.reader, "stopped") and self.reader.stopped - ): - if self.device_input == "cuda": - torch.cuda.synchronize() - self.active = False - break - continue - - reader_time = time.perf_counter() - t_read - total_read_time += reader_time - except queue.Empty: - if getattr(self.reader, "reconnect_failed", False): - self.active = False - break - time.sleep(0.002) - continue - - # print(f"frame_num: {frame_num}") - - self.stat_start_time = time.perf_counter() - self.frame_count += 1 - is_target_frame = True - - if torch.is_tensor(frame_8k): - if frame_8k.device.type != "cuda": - # Standard functional cross-stream synchronization barrier - # self.reader.upload_stream.wait_stream( - # torch.cuda.current_stream() - # ) - # frame_8k = frame_8k.to("cuda:0", non_blocking=True) - torch.cuda.current_stream().wait_stream( - self.reader.upload_stream - ) - - # Real-Time Metric A: Track Queue Saturation Density Ratio - # current_q_size = self.reader.frame_queue.qsize() - saturation_ratio = ( - self.reader.frame_queue.qsize() / self.reader.frame_queue.maxsize + main_app_logger.info( + f"[TEST HARNESS] Worker returned successfully. Display FPS: {metrics.get('Display FPS')}" ) - total_queue_saturation += saturation_ratio - queue_saturation_history.append(saturation_ratio) - - # RUN PIPELINE_FN --------------------------------------------- - run_pipelinefn_start = time.perf_counter() - self.frame_count_target += 1 - self.frame_in_clip_count += 1 - - if self.device_input == "cuda": - # Instantiate a lightweight hardware fence event object - curr_event = torch.cuda.Event(enable_timing=False) - # curr_event.record() - # Record the exact milestone on the default stream right after fetching the frame data - curr_event.record(torch.cuda.default_stream()) - self.inference_stream.wait_event(curr_event) - - with torch.cuda.stream(self.inference_stream): - nob, metrics = self.pipeline_fn( - frame_8k, - frame_num, - is_target_frame, - self.stat_start_time, - ) - # torch.cuda.default_stream().synchronize() - # self.inference_stream.synchronize() - else: - nob, metrics = self.pipeline_fn( - frame_8k, - frame_num, - is_target_frame, - self.stat_start_time, - ) - num_objs += nob - - total_written_frames += 1 - - # Real-Time Metric B: Frame Processing Latency Check - frame_loop_latency = ( - time.perf_counter() - frame_start_time - ) * 1000 # ms - total_frame_loop_latency += frame_loop_latency - - # Isolate active processing time (excluding the queue blocking read) - active_processing_overhead = frame_loop_latency - (reader_time * 1000) - total_active_processing_overhead += active_processing_overhead - - # RUNTIME TERMINAL WARNING ALERTS - if saturation_ratio >= 1.0 or active_processing_overhead > ( - 1000 / self.target_fps - ): - consecutive_slow_frames += 1 - if ( - consecutive_slow_frames % self.target_fps == 0 - ): # Throttle terminal spam - print( - f"\033[93m⚠️ [PERF WARNING] Main loop starving! Waiting on stream ingestion... " - f"Read Wait: {frame_loop_latency:.1f}ms | Queue Fullness: {saturation_ratio * 100:.0f}%\033[0m" - ) - else: - consecutive_slow_frames = max(0, consecutive_slow_frames - 1) - - if total_written_frames % (5 * self.target_fps) == 0: - print( - f"Captured {total_written_frames}/{self.max_target_frames} frames..." - ) - - # WRAP-UP FRAME INSTANCE --------------------------------------------- - # if self.device_input == "cuda" and torch.cuda.is_available(): - # torch.cuda.default_stream().synchronize() - total_run_pipelinefn += time.perf_counter() - run_pipelinefn_start - - # Explicitly delete frame variables to free their references - del frame_8k - - # Force PyTorch's internal allocator to release cached segments back to the OS - # if self.frame_count_target % (5 * self.target_fps) == 0: - # print( - # f"Captured {self.frame_count_target}/{self.max_target_frames} frames..." - # ) - # torch.cuda.empty_cache() - # torch.cuda.ipc_collect() - - except torch.cuda.OutOfMemoryError: - print("\n" + "!" * 70) - print( - "[CRITICAL TEST CRASH] GPU MEMORY CEILING HIT INSIDE RUNNER LOOP!" + # Basic functionality assertions + assert metrics is not None, "Metrics dictionary should not be None." + assert int(metrics.get("Output Frames", 0)) > 0, ( + "No frames were written to output." ) - print( - "Freezing allocation history registers and writing diagnostic log..." - ) - print("!" * 70) - - try: - import os - - snapshot_filename = ( - f"/tmp/test_vram_leak_profile_pid{os.getpid()}.pickle" - ) - torch.cuda.memory._dump_snapshot(snapshot_filename) - print( - f"[PROFILER SUCCESSFUL] Snapshot profile written to: {snapshot_filename}" - ) - print( - "--> Drag and drop this file directly into: https://pytorch.org" - ) - except Exception as dump_err: - print(f"Failed to record profile data snapshot: {dump_err}") - - # Force safe system unlinking of background workers to clean up OS handles - self.active = False - if hasattr(self, "reader") and self.reader is not None: - self.reader.stop() - raise - - except Exception: - traceback.print_exc() - - # POST FRAME PROCESSING --------------------------------------------- - pipeline_end_time = time.perf_counter() - - # Resolve the final execution window. If the stream ran to completion, - # use the operational end marker to avoid measuring downstream disk write bottlenecks. - final_end_marker = getattr(self, "pipeline_completion_timestamp", None) - if final_end_marker is None: - final_end_marker = time.perf_counter() - # self.pipeline_completion_timestamp = final_end_marker - - real_world_latency_ms = float((final_end_marker - pipeline_start_time) * 1000.0) - - total_sf_pipeline_time_ms = float( - sum(self.component_stats.get("sf", [0.0])) - + sum(self.component_stats.get("roi", [0.0])) - + sum(self.component_stats.get("det", [0.0])) - ) - total_pipeline_time_ms = float( - (pipeline_end_time - pipeline_start_time) * 1000.0 - ) - - # total_read_time = ( - # sum(self.component_stats.get("queue_blocked", [0.0])) / 1000.0 - # if self.component_stats.get("queue_blocked") - # else 0.0 - # ) - total_queue_saturation = sum( - self.component_stats.get("batch_sizes", [0.0]) - ) # Sample array profile proxy - - if metrics != {}: - num_crops = len(metrics["bbs"]) if metrics["bbs"] is not None else 0 - self.crops_per_frame_list.append(num_crops) - - # Context-aware extraction of the newly proposed metrics - density = metrics.get("batch_density", 0 if self.config.sf_enabled else 1) - self.component_stats["batch_sizes"].append(density) - - self.component_stats["sf"].append(metrics["sf_time"]) - self.component_stats["roi"].append(metrics["roi_time"]) - self.component_stats["det"].append(metrics["det_time"]) - - self.async_writer.release() - # Continuously sample the thread work pool backlog state mechanics - if hasattr(self, "executor") and self.executor is not None: - # Safely probe internal concurrent.futures work queue bounds - self.component_stats["thread_backlog"].append( - self.executor._work_queue.qsize() - ) else: - self.component_stats["thread_backlog"].append(0) - - # Real-Time Metric B: Frame Processing Latency Check - # frame_loop_latency = (pipeline_end_time - frame_start_time) * 1000 # ms - - # # Isolate active processing time (excluding the queue blocking read) - # active_processing_overhead = frame_loop_latency - (reader_time * 1000) - - # # RUNTIME TERMINAL WARNING ALERTS - # if saturation_ratio >= 1.0 or active_processing_overhead > ( - # 1000 / self.target_fps - # ): - # consecutive_slow_frames += 1 - # if consecutive_slow_frames % self.target_fps == 0: # Throttle terminal spam - # print( - # f"\033[93m⚠️ [PERF WARNING] Main loop starving! Waiting on stream ingestion... " - # f"Read Wait: {frame_loop_latency:.1f}ms | Queue Fullness: {saturation_ratio * 100:.0f}%\033[0m" - # ) - # else: - # consecutive_slow_frames = max(0, consecutive_slow_frames - 1) - - # CALCULATE PERFORMANCE METRICS --------------------------------------------- - print( - f"\nExecution Finished. Total Output Frames Written: {self.frame_count_target}" - ) - - # Render your metrics dashboard table cleanly - self._finalize_benchmarks( - num_objs, - self.frame_count_target, # Reads the updated integer directly! - total_pipeline_time_ms, - real_world_latency_ms, - total_sf_pipeline_time_ms, - total_read_time, - total_queue_saturation, - queue_saturation_history, - ) - self.stop() - - -# MAIN ---------------------------------------- -# def pytest_runtest_logreport(report): -# """Intercepts teardown to ensure benchmarks write to disk BEFORE 'PASSED' prints.""" -# if report.when == "teardown" and report.status == "passed": -# from test_readers import TestReader # Safe local class lookup - -# # Guarantee stop lifecycle finishes completely before reporting opens -# if hasattr(TestReader, "active") and TestReader.active: -# TestReader.stop() - -# if hasattr(TestReader, "benchmarks") and TestReader.benchmarks: -# TestReader.benchmarks = [r for r in TestReader.benchmarks if r and "Test Name" in r] -# results = TestReader.benchmarks -# if not results: -# return - -# # Compute relative speedup modifiers vs CPU baseline -# for row in results: -# if "GPU" in row["Test Name"]: -# match_name = row["Test Name"].replace("GPU", "CPU") -# cpu_row = next((r for r in results if r["Test Name"] == match_name), None) -# if cpu_row: -# speedup = float(row["Pipeline FPS (Target frames)"]) / float(cpu_row["Pipeline FPS (Target frames)"]) -# row["Pipeline Speedup vs CPU"] = f"{speedup:.2f}x" -# else: -# row["Pipeline Speedup vs CPU"] = "N/A" -# else: -# row["Pipeline Speedup vs CPU"] = "Baseline (CPU)" - -# # Bulk write results back to your CSV asset file -# if hasattr(TestReader, "csv_path") and TestReader.csv_path: -# with open(str(TestReader.csv_path), "w", newline="") as f: -# keys = results[0].keys() -# writer = csv.DictWriter(f, fieldnames=keys) -# writer.writeheader() -# writer.writerows(results) -# print(f"\n[FINAL] Benchmarks saved to {TestReader.csv_path}") - -# for r in results: -# print(f" > {r['Test Name']}: {r['Pipeline FPS (Video frames)']} FPS | {r['Pipeline FPS (Target frames)']} FPS | Speedup: {r.get('Pipeline Speedup vs CPU', 'N/A')}") - -# # Export comparison chart figures cleanly -# if hasattr(TestReader, "result_dir") and hasattr(TestReader, "csv_filename"): -# from test_readers import fps_comparison_chart -# chart_path_video = TestReader.result_dir / f"{TestReader.csv_filename.replace('.csv', '')}_pipelineFPS.png" -# fps_comparison_chart(chart_path_video, results, fps_key="Pipeline FPS (Video frames)") - -# chart_path_target = TestReader.result_dir / f"{TestReader.csv_filename.replace('.csv', '')}_pipelineFPS_target.png" -# fps_comparison_chart(chart_path_target, results, fps_key="Pipeline FPS (Target frames)") + pytest.fail("Worker process died unexpectedly without returning metrics.") +# ========================================================================= +# MAIN +# ========================================================================= def get_pytest_filter_expression(args): - print("\n" + "=" * 50) - print("TARGET SELECTION PREVIEW") - print("=" * 50) + main_app_logger.info("\n" + "=" * 50) + main_app_logger.info("TARGET SELECTION PREVIEW") + main_app_logger.info("=" * 50) - filter_expression = "test_device_reader" + filter_expression = Path(__file__).stem # applied_subs = [] if args.sf_enabled is not None: @@ -2067,24 +650,26 @@ def get_pytest_filter_expression(args): # Target hardware context selection filter applies globally across all test cases if args.device.lower() != "all": - print(f" 💻 Hardware Context Constraint: {args.device.upper()}") + main_app_logger.info(f" 💻 Hardware Context Constraint: {args.device.upper()}") filter_expression = f"({filter_expression}) and {args.device.lower()}" else: - print(" 💻 Hardware Context Constraint: ALL AVAILABLE") + main_app_logger.info(" 💻 Hardware Context Constraint: ALL AVAILABLE") - print("=" * 50) - print(f"COMPILED PYTEST KEYWORD EXPRESSION:\n 👉 {filter_expression}") - print("=" * 50 + "\n") + main_app_logger.info("=" * 50) + main_app_logger.info( + f"COMPILED PYTEST KEYWORD EXPRESSION:\n 👉 {filter_expression}" + ) + main_app_logger.info("=" * 50 + "\n") return filter_expression if __name__ == "__main__": # Force all PyTorch extension handles to compile and load BEFORE threads spawn - if torch.cuda.is_available(): - _ = torch.zeros(1).cuda() - import torch._ops - import torch.utils + # if torch.cuda.is_available(): + # _ = torch.zeros(1).cuda() + # import torch._ops + # import torch.utils # TEST ARGUMENTS parser = argparse.ArgumentParser(description="Run Video Detection Pipeline Tests") @@ -2149,6 +734,13 @@ def get_pytest_filter_expression(args): help="Number of frames used for debugging [Default: 100]", ) + # PROFILING + parser.add_argument( + "--profile", + action="store_true", + help="Enable profiling", + ) + args = parser.parse_args() # UPDATE ENVIRONMENTAL VARIABLES @@ -2157,6 +749,7 @@ def get_pytest_filter_expression(args): os.environ["MODEL_NAME"] = args.model_name os.environ["DEBUG"] = "1" if args.debug else "0" os.environ["DEBUG_FRAME_LIMIT"] = str(args.debug_frame_limit) + os.environ["ENABLE_PROFILING"] = "True" if args.profile else "False" # detection_type, device, sf_enabled filter_expression = get_pytest_filter_expression(args) @@ -2168,9 +761,14 @@ def get_pytest_filter_expression(args): "-s", "-v", # "--log-cli-level=DEBUG", + "-W", + "ignore:Exception ignored in.*SharedMemory.__del__:UserWarning", + # Target the exact module rewrite warning path inside the configuration framework + "-W", + "ignore:Module already imported so cannot be rewritten; anyio:_pytest.warning_types.PytestAssertRewriteWarning", __file__, ] - print(f"Launching tests for {args.source}") + # main_app_logger.info(f"Launching tests for {args.source}") sys.exit(pytest.main(pytest_args)) From 12ca5ee7b626d5248afb842fec4abc3e8de4c2b9 Mon Sep 17 00:00:00 2001 From: "Lacewell, Chaunte W" Date: Wed, 9 Sep 2026 11:26:07 -0700 Subject: [PATCH 08/19] Remove unused code (front end, vdms, udf, and cpu). The pipeline only supports GPU for realtime and querying capability is disabled Signed-off-by: Lacewell, Chaunte W --- .devcontainer/devcontainer.json | 3 ++ deployment/docker-swarm/docker-compose.yml.m4 | 3 -- deployment/docker-swarm/video.m4 | 3 -- doc/finetune.md | 2 +- doc/pipeline.md | 1 - fastapi/.vscode/launch.json | 44 +++---------------- fastapi/tests/base_test.py | 4 +- fastapi/tests/test_detections.py | 15 ++++--- fastapi/tests/test_eval.py | 15 ++++--- fastapi/tests/test_model.py | 13 +++--- fastapi/tests/test_pipeline.py | 15 ++++--- fastapi/tests/test_readers.py | 15 ++++--- start_app.sh | 14 +----- stop_app.sh | 2 - 14 files changed, 55 insertions(+), 94 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 7c6e073..8bc23d7 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -40,10 +40,13 @@ // "-p", "8011:8000", // "--rm", // "--gpus", "all", + "--restart", "unless-stopped", "--ipc=host", "--name", "pipeline_dev", "--cap-add=SYS_NICE", "--shm-size=8gb", + "--memory=16g", // Limits container RAM consumption ceiling + "--memory-swap=16g", // Prevents toxic swap disk compilation leaks "--network=host" // Ensures runtime matches the host network ], //, "--privileged", "--shm-size=2gb"], diff --git a/deployment/docker-swarm/docker-compose.yml.m4 b/deployment/docker-swarm/docker-compose.yml.m4 index 2e8e8cb..6f22152 100644 --- a/deployment/docker-swarm/docker-compose.yml.m4 +++ b/deployment/docker-swarm/docker-compose.yml.m4 @@ -1,9 +1,6 @@ services: -include(frontend.m4) -include(udf.m4) -include(vdms.m4) include(video.m4) include(secret.m4) include(network.m4) diff --git a/deployment/docker-swarm/video.m4 b/deployment/docker-swarm/video.m4 index 1596d2e..5caca10 100644 --- a/deployment/docker-swarm/video.m4 +++ b/deployment/docker-swarm/video.m4 @@ -101,7 +101,4 @@ define(`PROFILE_GPU', `runtime: nvidia networks: - appnet restart: always - depends_on: - - udf-service - - vdms-service ifelse(ifdef(`GPU', `yes'), `yes', PROFILE_GPU, PROFILE_DEFAULT) diff --git a/doc/finetune.md b/doc/finetune.md index 7d73a12..379bd46 100644 --- a/doc/finetune.md +++ b/doc/finetune.md @@ -26,7 +26,7 @@ Feel free to modify these parameters based on your hardware limitations such as ## Finetune Script The finetune script is used to run training, validation, and also test on a provided video (optional). To make deployment easy, we provide a Dockerfile which has the ideal environment and allow the script to run with deployment. -The script has a few adjustible arguments, so feel free to modify the call in next section as needed. +The script has a few adjustable arguments, so feel free to modify the call in next section as needed. ```bash # Runs default arguments python finetune.py diff --git a/doc/pipeline.md b/doc/pipeline.md index 6ddd8a6..e9b5e94 100644 --- a/doc/pipeline.md +++ b/doc/pipeline.md @@ -347,4 +347,3 @@ Or add the necessary flag to stop the application and prune containers: ./stop.sh –p ``` - diff --git a/fastapi/.vscode/launch.json b/fastapi/.vscode/launch.json index 1f9faee..96f4eb1 100644 --- a/fastapi/.vscode/launch.json +++ b/fastapi/.vscode/launch.json @@ -5,7 +5,7 @@ "version": "0.2.0", "configurations": [ { - // Test the model for both CPU and GPU on provided RTSP URL or video file + // Test the model on provided RTSP URL or video file "name": "Eval Pipeline", "type": "debugpy", "request": "launch", @@ -17,11 +17,10 @@ "subProcess": false, "args": [ "--type", "object", - "--device", "gpu" ] }, { - // Test the model for both CPU and GPU on provided RTSP URL or video file + // Test the model on provided RTSP URL or video file "name": "Test Model", "type": "debugpy", "request": "launch", @@ -35,11 +34,10 @@ // VIDEOS EXPECTED TO BE rstp url OR IN inputs/ or /watch_dir // "--source", "rtsp://:/", // "--source", ".mp4", - "--device", "gpu" ] }, { - // Independently test the stream readers for both CPU and GPU on provided RTSP URL or video file + // Independently test the stream readers on provided RTSP URL or video file "name": "Test Readers (Independent)", "type": "debugpy", "request": "launch", @@ -53,7 +51,6 @@ // VIDEOS EXPECTED TO BE rstp url OR IN inputs/ or /watch_dir // "--source", "rtsp://:/", // "--source", ".mp4" - "--device", "gpu" ] }, { @@ -73,8 +70,7 @@ "args": [ // VIDEOS EXPECTED TO BE rstp url OR IN inputs/ or /watch_dir // "--source", "rtsp://:/", - // "--source", ".mp4" - "--device", "gpu", + // "--source", ".mp4", "--type", "object" ] }, @@ -96,11 +92,9 @@ // AVAILABLE SCENARIO PARAMS // Use --scenario to specify tests by number (1 - 4) - // 1 - 3: --device (cpu or gpu) - // 4: --device, --sf, --type (object or motion) + // 4: --sf, --type (object or motion) "--duration", "1", - "--device", "gpu", "--type", "object" ] }, @@ -121,36 +115,12 @@ // "--source", ".mp4", // SF SCENARIO PARAMS - // 4: --device, --sf, --type (object or motion) + // 4: --sf, --type (object or motion) "--scenario", "4", "--sf", "--type", "object", "--duration", "1", - "--device", "gpu" - ] - }, - { - // Test Smart Filtering within pipeline to display the ROIs - "name": "Test Pipeline: Scenario 3", - "type": "debugpy", - "request": "launch", - "program": "${workspaceFolder}/tests/test_pipeline.py", - "cwd": "${workspaceFolder}/tests", - "python": "/opt/venv/bin/python", - "console": "integratedTerminal", - "subProcess": false, - "justMyCode": false, - "args": [ - // VIDEOS EXPECTED TO BE rstp url OR IN inputs/ or /watch_dir - // "--source", "rtsp://:/", - // "--source", ".mp4", - - "--scenario", "3", - "--type", "object", - - "--duration", "1", - "--device", "gpu" ] }, { @@ -159,6 +129,6 @@ "request": "launch", "program": "${file}", "console": "integratedTerminal" - }, + } ] } diff --git a/fastapi/tests/base_test.py b/fastapi/tests/base_test.py index 8b57cc0..067a9be 100644 --- a/fastapi/tests/base_test.py +++ b/fastapi/tests/base_test.py @@ -36,7 +36,6 @@ scale_bbox_xywh, ) -gdown = install_and_load_pip_package("gdown", attribute_name=None) objgraph = install_and_load_pip_package("objgraph", attribute_name=None) target_width, target_height = 7680, 4320 # 8K # torch.set_grad_enabled(False) @@ -65,6 +64,9 @@ def download_eval_data(video_name_list, target_fps=TARGET_FPS): DATA_DIR = Path(__file__).parent / "eval_data" DATA_DIR.mkdir(parents=True, exist_ok=True) + if "gdown" not in sys.modules: + gdown = install_and_load_pip_package("gdown", attribute_name=None) + # DOWNLOAD GT ZIP VIDEO_GROUND_TRUTH_URL = ( "https://drive.google.com/open?id=16PE3tBhT0lUGZLA8-zIRYvNUvxfhFZJq" diff --git a/fastapi/tests/test_detections.py b/fastapi/tests/test_detections.py index 28d2a47..5f0f36e 100644 --- a/fastapi/tests/test_detections.py +++ b/fastapi/tests/test_detections.py @@ -717,13 +717,13 @@ def get_pytest_filter_expression(args): ) # Filter tests - parser.add_argument( - "--device", - type=str, - default="all", - choices=["cpu", "gpu", "all"], - help="Filter by device (cpu or gpu)", - ) + # parser.add_argument( + # "--device", + # type=str, + # default="all", + # choices=["cpu", "gpu", "all"], + # help="Filter by device (cpu or gpu)", + # ) parser.add_argument( "--type", type=str, @@ -768,6 +768,7 @@ def get_pytest_filter_expression(args): ) args = parser.parse_args() + args.device = "gpu" # UPDATE ENVIRONMENTAL VARIABLES os.environ["VIDEO_FILENAME"] = args.source diff --git a/fastapi/tests/test_eval.py b/fastapi/tests/test_eval.py index a23b241..1eb01b3 100644 --- a/fastapi/tests/test_eval.py +++ b/fastapi/tests/test_eval.py @@ -727,13 +727,13 @@ def get_pytest_filter_expression(args): ) # Filter tests - parser.add_argument( - "--device", - type=str, - default="all", - choices=["cpu", "gpu", "all"], - help="Filter by device (cpu or gpu)", - ) + # parser.add_argument( + # "--device", + # type=str, + # default="all", + # choices=["cpu", "gpu", "all"], + # help="Filter by device (cpu or gpu)", + # ) parser.add_argument( "--type", type=str, @@ -778,6 +778,7 @@ def get_pytest_filter_expression(args): ) args = parser.parse_args() + args.device = "gpu" # UPDATE ENVIRONMENTAL VARIABLES os.environ["VIDEO_FILENAME"] = args.source diff --git a/fastapi/tests/test_model.py b/fastapi/tests/test_model.py index 08920de..2f34da2 100644 --- a/fastapi/tests/test_model.py +++ b/fastapi/tests/test_model.py @@ -732,14 +732,15 @@ def start(self): ) # Filter tests - parser.add_argument( - "--device", - type=str, - choices=["cpu", "gpu"], - help="Filter by device (cpu or gpu)", - ) + # parser.add_argument( + # "--device", + # type=str, + # choices=["cpu", "gpu"], + # help="Filter by device (cpu or gpu)", + # ) args = parser.parse_args() + args.device = "gpu" # UPDATE ENVIRONMENTAL VARIABLES os.environ["VIDEO_FILENAME"] = args.source diff --git a/fastapi/tests/test_pipeline.py b/fastapi/tests/test_pipeline.py index 15ffbe7..d5a5192 100644 --- a/fastapi/tests/test_pipeline.py +++ b/fastapi/tests/test_pipeline.py @@ -1128,13 +1128,13 @@ def get_pytest_filter_expression(args, sorted_scenarios): dest="detection_type", help="Filter by detection type (object or motion)", ) - parser.add_argument( - "--device", - type=str, - default="all", - choices=["cpu", "gpu", "all"], - help="Target hardware context selection filter.", - ) + # parser.add_argument( + # "--device", + # type=str, + # default="all", + # choices=["cpu", "gpu", "all"], + # help="Target hardware context selection filter.", + # ) parser.add_argument( "--sf", action="store_true", @@ -1165,6 +1165,7 @@ def get_pytest_filter_expression(args, sorted_scenarios): ) args = parser.parse_args() + args.device = "gpu" os.environ["VIDEO_FILENAME"] = args.source os.environ["TEST_DURATION_MINS"] = str(args.duration) diff --git a/fastapi/tests/test_readers.py b/fastapi/tests/test_readers.py index 7961d19..6358752 100644 --- a/fastapi/tests/test_readers.py +++ b/fastapi/tests/test_readers.py @@ -705,13 +705,13 @@ def get_pytest_filter_expression(args): dest="detection_type", help="Filter by detection type (object or motion)", ) - parser.add_argument( - "--device", - type=str, - default="all", - choices=["cpu", "gpu", "all"], - help="Filter by device (cpu or gpu)", - ) + # parser.add_argument( + # "--device", + # type=str, + # default="all", + # choices=["cpu", "gpu", "all"], + # help="Filter by device (cpu or gpu)", + # ) parser.add_argument( "--sf", action="store_true", @@ -742,6 +742,7 @@ def get_pytest_filter_expression(args): ) args = parser.parse_args() + args.device = "gpu" # UPDATE ENVIRONMENTAL VARIABLES os.environ["VIDEO_FILENAME"] = args.source diff --git a/start_app.sh b/start_app.sh index a8b6a0a..956987c 100755 --- a/start_app.sh +++ b/start_app.sh @@ -6,10 +6,10 @@ INGESTION="object" #,face" EXP_TYPE=compose DEBUG="0" -DEVICE="CPU" +DEVICE="GPU" DOCKER_TAR="0" RESIZE_FLAG="False" -OMIT_DETECTIONS_FLAG="False" +OMIT_DETECTIONS_FLAG="True" MODEL_NAME="" DIR=$(dirname $(readlink -f "$0")) @@ -53,13 +53,8 @@ script_usage() Options: -h optional Print this help message -d or --debug optional Flag to enable debug messages - -e or --device optional Device for inference (CPU, GPU) [Default: CPU] - -i or --ingestion optional Ingestion type (object, face) [Default: "object,face"] -l or --tars optional Flag to load docker images instead of building from Dockerfiles -m or --model optional Custom YOLO model name (.pt). If not provided model YOLO11n is used. - -o or --omit-det optional By default, object detections are printed. To omit printing detections to screen, enable flag. - -t or --type optional Deployment method (compose) [Default: compose] - -z or --resize optional Flag to resize video to model input size EOF } @@ -69,12 +64,7 @@ while true; do -h) script_usage; exit 0 ;; -d | --debug) shift; DEBUG="1" ;; -l | --tars) shift; DOCKER_TAR="1" ;; - -e | --device) shift; DEVICE=$1; shift ;; - -i | --ingestion) shift; INGESTION=$1; shift ;; -m | --model) shift; MODEL_NAME=$1; shift ;; - -t | --type) shift; EXP_TYPE="$1"; shift ;; - -z | --resize) shift; RESIZE_FLAG="True" ;; - -o | --omit-det) shift; OMIT_DETECTIONS_FLAG="True" ;; --) shift; break ;; *) script_usage; exit 0 ;; esac diff --git a/stop_app.sh b/stop_app.sh index deb3e94..fadbe84 100755 --- a/stop_app.sh +++ b/stop_app.sh @@ -34,7 +34,6 @@ script_usage() Options: -h optional Print this help message - -t or --type optional Deployment method (compose) [Default: compose] -p or --prune optional Flag to prune docker builder EOF @@ -43,7 +42,6 @@ EOF while true; do case "$1" in -h) script_usage; exit 0 ;; - -t | --type) shift; EXP_TYPE="$1"; shift ;; -p | --prune) shift; DOCKER_PRUNE="1" ;; --) shift; break ;; *) script_usage; exit 0 ;; From cad912d0c4845eb0a31cf46f8aa573484497665c Mon Sep 17 00:00:00 2001 From: "Lacewell, Chaunte W" Date: Wed, 9 Sep 2026 12:49:17 -0700 Subject: [PATCH 09/19] Remove codespell Signed-off-by: Lacewell, Chaunte W --- .codespell-ignore | 16 ---------------- .pre-commit-config.yaml | 8 -------- .vscode/settings.json | 26 -------------------------- 3 files changed, 50 deletions(-) delete mode 100644 .codespell-ignore delete mode 100644 .vscode/settings.json diff --git a/.codespell-ignore b/.codespell-ignore deleted file mode 100644 index 02a0a85..0000000 --- a/.codespell-ignore +++ /dev/null @@ -1,16 +0,0 @@ -anduril -bkgd -codespell -cuda -detectshadows -esbenp -fastapi -finetune -imgs -imgsz -lanczos -rstp -tensorrt -varthreshold -venv -yolov diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 243fb6f..a3ad3e1 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -29,11 +29,3 @@ repos: "--style=Google", "-i" ] - - repo: https://github.com/codespell-project/codespell - rev: v2.4.1 - hooks: - - id: codespell - args: [ - --ignore-words=.codespell-ignore, - --skip="./build,./.git,./.devcontainer/Dockerfile" - ] diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 241d119..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "cSpell.ignorePaths": [ - "./build/**", - "./.git/**", - "./.devcontainer/Dockerfile", - "./deployment/Dockerfiles/**", - "./frontend/html/**" - ], - "cSpell.dictionaryDefinitions": [ - { - "name": "codespell-file", - "path": "${workspaceRoot}/.codespell-ignore", - "description": "Forcing cspell to read the codespell file" - } - ], - "cSpell.dictionaries": [ - "codespell-file" - ], - "cSpell.words": [ - "bchw", - "callspec", - "fourcc", - "gbps", - "rbtd" - ] -} \ No newline at end of file From ae9d2828c3c130559cbebd2765bf9d365a15329c Mon Sep 17 00:00:00 2001 From: "Lacewell, Chaunte W" Date: Wed, 9 Sep 2026 19:07:28 -0700 Subject: [PATCH 10/19] Update dependencies Signed-off-by: Lacewell, Chaunte W --- .devcontainer/Dockerfile | 15 +- .github/assets/fastapi/requirements.in | 16 +- .github/assets/finetune/requirements.in | 13 +- .github/assets/frontend/requirements.in | 4 +- .github/assets/udf/requirements.in | 6 +- .github/assets/video/requirements.in | 4 +- deployment/docker-swarm/docker-compose.yml.m4 | 1 - doc/pipeline.md | 27 +- fastapi/Dockerfile | 88 +- fastapi/requirements.txt | 1616 +++++++++-------- finetune/Dockerfile | 2 +- finetune/requirements.txt | 1194 ++++++------ frontend/requirements.txt | 388 ++-- udf/requirements.txt | 191 +- video/requirements.txt | 457 ++--- 15 files changed, 2123 insertions(+), 1899 deletions(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index b1503fb..7a44da1 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -47,6 +47,7 @@ RUN apt-get update && \ ARG CUDA_MAJOR_VERSION=12 ARG CUDA_MINOR_VERSION=8 +# hadolint ignore=DL3008 RUN apt-get update && \ apt-get install -y -q --no-install-recommends \ cuda-toolkit-${CUDA_MAJOR_VERSION}-${CUDA_MINOR_VERSION} \ @@ -55,7 +56,7 @@ RUN apt-get update && \ RUN python3 -m venv ${VIRTUAL_ENV} && \ ${VIRTUAL_ENV}/bin/pip install --no-cache-dir \ - "pip==26.1.2" \ + "pip==26.2.1" \ "torch==2.10.0" \ "torchvision==0.25.0" \ "numpy==1.26.4" @@ -81,6 +82,7 @@ WORKDIR ${DEPENDENCY_DIR}/opencv/build RUN ln -s /usr/include/x86_64-linux-gnu/cudnn*.h /usr/local/cuda/include/ && \ ln -s /usr/lib/x86_64-linux-gnu/libcudnn*.so* /usr/local/cuda/lib64/ +# hadolint ignore=SC2046 RUN cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX="${VIRTUAL_ENV}" \ -D OPENCV_EXTRA_MODULES_PATH="${DEPENDENCY_DIR}/opencv_contrib/modules" \ @@ -182,16 +184,11 @@ RUN ldconfig ARG DEVICE="CPU" ENV DEVICE="${DEVICE}" +ARG DEBUG="0" +ENV DEBUG="${DEBUG}" + # Set the working directory in the container WORKDIR /home COPY requirements.txt /home/ - -# RUN pip3 install --no-cache-dir "pytest>=9.0.3" && \ -# pip3 install --no-cache-dir --require-hashes -r /home/requirements.CPU.txt --index-url https://download.pytorch.org/whl/cpu --extra-index-url https://pypi.org/simple && \ -# pip3 uninstall -y ultralytics opencv-python opencv-contrib-python opencv-python-headless && \ -# pip3 install --no-cache-dir --require-hashes -r /home/requirements.GPU.txt && \ -# pip3 uninstall -y opencv-python opencv-contrib-python opencv-python-headless - - RUN pip3 install --no-cache-dir --require-hashes -r /home/requirements.txt && \ pip3 uninstall -y opencv-python opencv-contrib-python opencv-python-headless \ No newline at end of file diff --git a/.github/assets/fastapi/requirements.in b/.github/assets/fastapi/requirements.in index 46074b5..1207d22 100644 --- a/.github/assets/fastapi/requirements.in +++ b/.github/assets/fastapi/requirements.in @@ -1,22 +1,20 @@ av>=17.0.1 -cucim>=23.10.0 cupy-cuda12x>=13.6.0 fastapi>=0.135.1 nncf>=2.19.0 -numpy>=1.26.4 +numpy==1.26.4 nvidia-cuda-runtime-cu12>=12.8.90 nvidia-cudnn-cu12>=9.10.2.21 -onnx>=1.21.0 +onnx>=1.22.0 onnxruntime-gpu>=1.23.2 onnxslim>=0.1.82 openvino-dev>=2024.6.0 -pip>=26.1 +pip>=26.2 protobuf>=5.29.6,<6 # For VDMS -pynvvideocodec>=2.1.0 pytest>=9.0.3 requests>=2.33.0 -tensorrt_cu12>=10.14.1.48.post1 -torch>=2.10.0 +tensorrt_cu12==10.14.1.48.post1 +torch==2.10.0 torchvision>=0.25.0 ultralytics>=8.4.34 uvicorn>=0.42.0 @@ -24,6 +22,6 @@ vdms>=0.0.23 wheel>=0.46.3 idna>=3.15 -pillow>=12.2.0 -starlette>=1.0.1 +pillow>=12.3.0 +starlette>=1.3.1 urllib3>=2.7.0 diff --git a/.github/assets/finetune/requirements.in b/.github/assets/finetune/requirements.in index fa2843f..6620211 100644 --- a/.github/assets/finetune/requirements.in +++ b/.github/assets/finetune/requirements.in @@ -1,20 +1,19 @@ -cucim>=23.10.0 cupy-cuda12x>=13.6.0 -numpy>=1.26.4 +numpy==1.26.4 nvidia-cuda-runtime-cu12>=12.8.90 nvidia-cudnn-cu12>=9.10.2.21 -onnx>=1.21.0 +onnx>=1.22.0 onnxruntime-gpu>=1.23.2 onnxslim>=0.1.82 -pip>=26.1 +pip>=26.2 requests>=2.33.0 -tensorrt_cu12>=10.14.1.48.post1 -torch>=2.10.0 +tensorrt_cu12==10.14.1.48.post1 +torch==2.10.0 torchvision>=0.25.0 ultralytics>=8.4.34 idna>=3.15 -pillow>=12.2.0 +pillow>=12.3.0 protobuf>=5.29.6,<6 # For VDMS urllib3>=2.7.0 diff --git a/.github/assets/frontend/requirements.in b/.github/assets/frontend/requirements.in index 614cefb..4edff61 100644 --- a/.github/assets/frontend/requirements.in +++ b/.github/assets/frontend/requirements.in @@ -1,9 +1,9 @@ -pip>=26.1 +pip>=26.2 ply>=3.11 protobuf>=5.29.6,<6 # For VDMS psutil>=5.9.0 requests>=2.33.0 -tornado>=6.5.5 +tornado>=6.5.8 vdms>=0.0.23 idna>=3.15 diff --git a/.github/assets/udf/requirements.in b/.github/assets/udf/requirements.in index 7f89880..ca1a239 100644 --- a/.github/assets/udf/requirements.in +++ b/.github/assets/udf/requirements.in @@ -1,8 +1,8 @@ Flask>=3.1.3 inotify>=0.2.12 -numpy>=2.2.6 -opencv-python-headless>=4.13.0.90 -pip>=26.1 +numpy==1.26.4 +opencv-python-headless<4.12 +pip>=26.2 protobuf>=5.29.6,<6 # For VDMS vdms>=0.0.23 werkzeug>=3.1.6 diff --git a/.github/assets/video/requirements.in b/.github/assets/video/requirements.in index 787e525..f13618e 100644 --- a/.github/assets/video/requirements.in +++ b/.github/assets/video/requirements.in @@ -1,8 +1,8 @@ inotify>=0.2.12 -pip>=26.1 +pip>=26.2 pyyaml>=6.0.3 requests>=2.33.0 -tornado>=6.5.5 +tornado>=6.5.8 idna>=3.15 urllib3>=2.7.0 diff --git a/deployment/docker-swarm/docker-compose.yml.m4 b/deployment/docker-swarm/docker-compose.yml.m4 index 6f22152..7a776e7 100644 --- a/deployment/docker-swarm/docker-compose.yml.m4 +++ b/deployment/docker-swarm/docker-compose.yml.m4 @@ -7,4 +7,3 @@ include(network.m4) volumes: app-content: - vdms-content: diff --git a/doc/pipeline.md b/doc/pipeline.md index e9b5e94..d60c255 100644 --- a/doc/pipeline.md +++ b/doc/pipeline.md @@ -1,4 +1,4 @@ -# High Resolution Object Detection Pipeline (WIP) +# High Resolution Object Detection Pipeline This pipeline focuses on real-time processing of high-resolution (8K) video for object detection. Currently, real-time processing of high-resolution (HR) frames is not possible as large compute power is needed which are typically beyond any HW capabilities. @@ -44,7 +44,7 @@ Drones are typically small in the video frames so if your use-case of interest h For this case, we provide [`test_detections.py`](/fastapi/tests/test_detections.py) which annotates ROIs identified by the Smart Filtering pipeline onto each frame of the video for visual inspection. For testing purposes, you can use VSCode DevContainer (easiest method) or manually deploy the fastapi dockerfile. Using VSCode is straight forward, so here, we will manually deploy the fastapi Dockerfile as it contains the same setup used in the application AND start the test script. -Here we will build the container, if not available: +Here we will build the container, if not available. If behind proxy, be sure to set them using `--build-arg`. ```bash REPO_DIR=`pwd` @@ -73,9 +73,11 @@ Since this work focuses on HR videos, we converted the test video to 8K using th To deploy this test, run the following command but modify the name of the test_video. +If behind proxy, be sure to set them using `--env`. The results from the test will be saved in `fastapi/tests/test_detections_results/drone_detection/`. ```bash docker run --rm --ipc=host \ +--user root \ --gpus all --env NVIDIA_DRIVER_CAPABILITIES=all \ --name test_detections \ --env ENABLE_VDMS=False \ @@ -87,7 +89,7 @@ docker run --rm --ipc=host \ -v ${REPO_DIR}/fastapi/resources:/home/resources \ -v ${REPO_DIR}/fastapi/tests:/home/tests \ -v ${REPO_DIR}/fastapi/tests/nginx.conf:/etc/nginx/nginx.conf \ -lcc_fastapi:stream /bin/bash -c "python /home/tests/test_detections.py --source .mp4 --type motion" +lcc_fastapi:stream /bin/bash -c "python /home/tests/test_detections.py --device gpu --source drone_dataset2_hvec.mp4 --type motion" ``` @@ -95,6 +97,7 @@ If you are not satisfied with the results, feel free to modify/optimize the pipe The following command starts the detached container. ```bash docker run -d --rm --ipc=host \ +--user root \ --gpus all --env NVIDIA_DRIVER_CAPABILITIES=all \ --name test_detections \ --env ENABLE_VDMS=False \ @@ -194,8 +197,8 @@ Here we provide details on each available test. | Component | Test File | Description | | --------- | --------- | ----------- | -| Model | [test_model.py](/fastapi/tests/test_model.py) | Test the model for both CPU and GPU on provided RTSP URL or video file | -| Stream Readers | [test_readers.py](/fastapi/tests/test_readers.py) | Independently test the stream readers for both CPU and GPU on provided RTSP URL or video file | +| Model | [test_model.py](/fastapi/tests/test_model.py) | Test the model for GPU on provided RTSP URL or video file | +| Stream Readers | [test_readers.py](/fastapi/tests/test_readers.py) | Independently test the stream readers for GPU on provided RTSP URL or video file | | Smart Filtering | [test_detections.py](/fastapi/tests/test_detections.py) | Independently test the detection pipeline (with and without Smart Filtering) only. Test does not include video clip generation or sending metadata to database for querying. | | Stream Readers | [test_pipeline.py](/fastapi/tests/test_pipeline.py) | Scenario 1 tests the behavior of Readers when provided an invalid RTSP url.
Scenario 2 reads the RTSP url or video file for a specified duration or until it ends. | | Video Clip Generation | [test_pipeline.py](/fastapi/tests/test_pipeline.py) | Scenario 3 mimics the clip generation within the pipeline. | @@ -203,7 +206,7 @@ Here we provide details on each available test. ### Test Model -This test reads the `SOURCE` from `./inputs` (the local directory or `/watch_dir` if in container), or RTSP server, and creates a video with overlaid detection results for both GPU and CPU model. +This test reads the `SOURCE` from `./inputs` (the local directory or `/watch_dir` if in container), or RTSP server, and creates a video with overlaid detection results for GPU model. Results are located in `test_model_results/{MODEL_NAME}`. ```bash python test_models.py -s "${SOURCE}" @@ -220,12 +223,12 @@ The arguments available for this test are as follows: | -s SOURCE,
--source SOURCE | anduril_swarm_8K.mp4 | Video filename (located in /inputs) or RTSP target stream endpoint | | --no-custom | - | Enable if using Ultralytics YOLO model | | -m MODEL_NAME,
--model MODEL_NAME | drone_detection | Name of model. Required if `--no-custom` is enabled. | -| --device {cpu,gpu} | None | Filter by device (cpu or gpu) | +
### Test Readers -This test reads the `SOURCE` from `./inputs` (the local directory or `/watch_dir` if in container), or RTSP server, and creates a video with overlaid detection results for both GPU and CPU model. +This test reads the `SOURCE` from `./inputs` (the local directory or `/watch_dir` if in container), or RTSP server, and creates a video with overlaid detection results for GPU model. Results are located in `test_readers_results/{SOURCE_NAME}`. ```bash python test_readers.py -s "${SOURCE}" @@ -235,7 +238,7 @@ The arguments available for this test are as follows: | Argument | Default | Description | | -------- | ------- | ----------- | | -s SOURCE,
--source SOURCE | anduril_swarm_8K.mp4 | Video filename (located in ./inputs) | -| --device {cpu,gpu,all} | all | Filter by target hardware. | + | --debug | False | Enable debug message |
@@ -257,7 +260,7 @@ The arguments available are as follows: | --no-custom | - | Enable if using Ultralytics YOLO model | | -m MODEL_NAME,
--model MODEL_NAME | drone_detection | Name of model. Required if `--no-custom` is enabled. | | --type {object,motion} | None | Filter by detection type (object or motion). "motion" shows the ROI while "object" shows detection results. | -| --device {cpu,gpu,all} | all | Filter by target hardware. | + | --sf | None | Filter test by Smart Filtering pipeline | | --debug | False | Enable debug message | | -n DEBUG_FRAME_LIMIT | 100 | Number of frames used for debugging | @@ -283,7 +286,7 @@ The arguments available are as follows: | --no-custom | - | Enable if using Ultralytics YOLO model | | -m MODEL_NAME,
--model MODEL_NAME | drone_detection | Name of model. Required if `--no-custom` is enabled. | | --type {object,motion} | None | Filter by detection type (object or motion). "motion" shows the ROI while "object" shows detection results. | -| --device {cpu,gpu,all} | all | Filter by target hardware. | + | --sf | None | Filter test by Smart Filtering pipeline | | --debug | False | Enable debug message | @@ -307,7 +310,7 @@ The resulting video clips generated from this test are located in `test_pipeline Scenario 4 mimics the entire pipeline excluding sending the generated metadata to VDMS. By default, the test iterates over available devices ("cpu" and "gpu"), detection type ("object" or "motion"), and with and without SF. The resulting video clips and the detection results are located in `test_pipeline_results/{MODEL_NAME}/{SOURCE_NAME}/scenario4_{DEVICE}`. -In the case of testing the Smart Filtering pipeline, to display the ROIs, you can use the following, which will test for both gpu and cpu. +In the case of testing the Smart Filtering pipeline, to display the ROIs, you can use the following, which will test for GPU. ```bash python test_pipeline.py --source "${SOURCE}" --scenario 4 --sf --type motion ``` diff --git a/fastapi/Dockerfile b/fastapi/Dockerfile index a0d81c0..e2bffdc 100644 --- a/fastapi/Dockerfile +++ b/fastapi/Dockerfile @@ -42,22 +42,29 @@ RUN apt-get update && \ gfortran && \ # Install necessary CUDA packages curl -fsSL https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb -o /tmp/cuda-keyring.deb && \ - dpkg -i /tmp/cuda-keyring.deb && rm /tmp/cuda-keyring.deb && \ - apt-get update && \ + dpkg -i /tmp/cuda-keyring.deb && rm /tmp/cuda-keyring.deb + +ARG CUDA_MAJOR_VERSION=12 +ARG CUDA_MINOR_VERSION=8 + +# hadolint ignore=DL3008 +RUN apt-get update && \ apt-get install -y -q --no-install-recommends \ - cuda-toolkit-12-4 \ - libcudnn9-dev-cuda-12 \ - libnpp-dev-12-4 \ - && \ + cuda-toolkit-${CUDA_MAJOR_VERSION}-${CUDA_MINOR_VERSION} \ + libcudnn9-dev-cuda-${CUDA_MAJOR_VERSION} && \ rm -rf /var/lib/apt/lists/* && apt-get clean RUN python3 -m venv ${VIRTUAL_ENV} && \ ${VIRTUAL_ENV}/bin/pip install --no-cache-dir \ - "pip==26.1.2" \ + "pip==26.2.1" \ "torch==2.10.0" \ "torchvision==0.25.0" \ "numpy==1.26.4" +# Ensure paths capture the version dynamically +ENV PATH="/usr/local/cuda/bin:${PATH}" +ENV LD_LIBRARY_PATH="/usr/local/cuda/lib64:${LD_LIBRARY_PATH}" + # OPENCV W/ CUDA SUPPORT ENV PYTHON_VERSION=3.10 ENV OPENCV_VERSION="4.11.0" @@ -74,6 +81,8 @@ RUN git clone --branch ${OPENCV_VERSION} --depth 1 https://github.com/opencv/ope WORKDIR ${DEPENDENCY_DIR}/opencv/build RUN ln -s /usr/include/x86_64-linux-gnu/cudnn*.h /usr/local/cuda/include/ && \ ln -s /usr/lib/x86_64-linux-gnu/libcudnn*.so* /usr/local/cuda/lib64/ + +# hadolint ignore=SC2046 RUN cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX="${VIRTUAL_ENV}" \ -D OPENCV_EXTRA_MODULES_PATH="${DEPENDENCY_DIR}/opencv_contrib/modules" \ @@ -84,7 +93,7 @@ RUN cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D WITH_TBB=ON \ -D WITH_V4L=ON \ -D OPENCV_DNN_CUDA=ON \ - -D CUDA_ARCH_BIN=70,75,80,86,89,90 \ + -D CUDA_ARCH_BIN=80,86,89,90 \ -D CUDA_FAST_MATH=ON \ -D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda \ -D CUDNN_INCLUDE_DIR=/usr/include/x86_64-linux-gnu \ @@ -93,8 +102,8 @@ RUN cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D BUILD_opencv_cudaarithm=ON \ -D BUILD_opencv_cudafilters=ON \ -D BUILD_opencv_cudacodec=ON \ - -D WITH_NVCUVID=ON \ - -D WITH_NVCUVENC=ON \ + -D WITH_NVCUVID=OFF \ + -D WITH_NVCUVENC=OFF \ -D WITH_VAAPI=ON \ -D WITH_FFMPEG=ON \ -D BUILD_opencv_python3=ON \ @@ -108,12 +117,13 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] RUN mkdir -p /tmp/cv2_deps && \ PY_CV2_SO=$(find "${VIRTUAL_ENV}" -name "cv2*.so" | head -n 1) && \ ldd "${PY_CV2_SO}" | grep "=> /" | awk '{print $3}' | xargs -I '{}' cp -v '{}' /tmp/cv2_deps/ && \ - cp -v /usr/local/cuda/lib64/libnpp*.so* /tmp/cv2_deps/ && \ - cp -v /usr/local/cuda/lib64/libcudart.so* /tmp/cv2_deps/ && \ - cp -P /usr/local/cuda/lib64/libnvrtc.so* /tmp/cv2_deps/ && \ + # FIX: Robust fallback copying to grab NPP/CUDA libs regardless of whether they land in /usr/local or system path channels + (cp -v /usr/local/cuda/lib64/libnpp*.so* /tmp/cv2_deps/ || cp -v /usr/lib/x86_64-linux-gnu/libnpp*.so* /tmp/cv2_deps/) && \ + (cp -v /usr/local/cuda/lib64/libcudart.so* /tmp/cv2_deps/ || cp -v /usr/lib/x86_64-linux-gnu/libcudart.so* /tmp/cv2_deps/) && \ + (cp -P /usr/local/cuda/lib64/libnvrtc.so* /tmp/cv2_deps/ || cp -P /usr/lib/x86_64-linux-gnu/libnvrtc.so* /tmp/cv2_deps/) && \ + (cp -v /usr/local/cuda/lib64/libcublas*.so* /tmp/cv2_deps/ || cp -v /usr/lib/x86_64-linux-gnu/libcublas*.so* /tmp/cv2_deps/) && \ cp -v /usr/lib/x86_64-linux-gnu/libnvidia-encode.so* /tmp/cv2_deps/ || true - # Clean up RUN rm -rf ${DEPENDENCY_DIR} @@ -121,41 +131,53 @@ RUN rm -rf ${DEPENDENCY_DIR} FROM openvisualcloud/xeon-ubuntu2204-media-nginx:23.1@sha256:d19eb597dc210134063803630ae2ea1ec84dfd4189138f59551e2f5ed047284a ARG DEBIAN_FRONTEND=noninteractive +ARG CUDA_MAJOR_VERSION=12 +ARG CUDA_MINOR_VERSION=8 ENV VIRTUAL_ENV=/opt/venv ENV PATH="$VIRTUAL_ENV/bin:/usr/local/cuda/bin:${PATH}" # Install Runtime Libraries, FFmpeg/VA-API headers, and cuDNN # Includes libva and ffmpeg libraries required for HEVC decoding # hadolint ignore=DL3008 -RUN apt-get update && apt-get install -y --no-install-recommends \ - ca-certificates \ - curl \ - python3 \ - libgl1 \ - libglib2.0-0 \ - libtbb12 \ - # Critical for Hardware Decoding (HEVC) - libva2 \ - libva-drm2 \ - libva-x11-2 \ - libavcodec58 \ - libavformat58 \ - libswscale5 \ - libv4l-0 && \ +RUN apt-get update && \ + apt-get install -y --no-install-recommends \ + ca-certificates \ + curl \ + python3 \ + libgl1 \ + libglib2.0-0 \ + libtbb12 \ + # Critical for Hardware Decoding (HEVC) + libva2 \ + libva-drm2 \ + libva-x11-2 \ + libavcodec58 \ + libavformat58 \ + libswscale5 \ + libv4l-0 && \ # Install necessary CUDA packages curl -fsSL https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb -o /tmp/cuda-keyring.deb && \ - dpkg -i /tmp/cuda-keyring.deb && rm /tmp/cuda-keyring.deb && \ + dpkg -i /tmp/cuda-keyring.deb && rm /tmp/cuda-keyring.deb && \ apt-get update && \ - apt-get install -y -q --no-install-recommends libcudnn9-cuda-12 && \ + apt-get install -y -q --no-install-recommends \ + libcudnn9-cuda-${CUDA_MAJOR_VERSION} \ + libavcodec-dev \ + libavformat-dev \ + libavutil-dev \ + cuda-nvcc-${CUDA_MAJOR_VERSION}-${CUDA_MINOR_VERSION} && \ rm -rf /var/lib/apt/lists/* # Copy the entire pre-compiled virtual environment from the build stage COPY --from=build ${VIRTUAL_ENV} ${VIRTUAL_ENV} -# Copy NPP (NVIDIA Performance Primitives) libs - Required for OpenCV CUDA -# COPY --from=build /usr/local/cuda/lib64/libnpp*.so* /usr/local/cuda/lib64/ + # Copy additional required CUDA math/parallel libs RUN mkdir -p /usr/local/cuda/lib64 COPY --from=build /tmp/cv2_deps/* /usr/local/cuda/lib64/ + +# Tells the host engine to expose all GPUs and utility binaries (like nvidia-smi) +ENV NVIDIA_VISIBLE_DEVICES=all +# FIX: Cleaned duplicate line later in file to ensure capabilities are consistently initialized +ENV NVIDIA_DRIVER_CAPABILITIES=compute,utility,video ENV LD_LIBRARY_PATH="/usr/local/cuda/lib64:${VIRTUAL_ENV}/lib:${LD_LIBRARY_PATH}" RUN ldconfig diff --git a/fastapi/requirements.txt b/fastapi/requirements.txt index ae524f7..4489546 100644 --- a/fastapi/requirements.txt +++ b/fastapi/requirements.txt @@ -1,173 +1,225 @@ -annotated-doc==0.0.4 \ - --hash=sha256:571ac1dc6991c450b25a9c2d84a3705e2ae7a53467b5d111c24fa8baabbed320 \ - --hash=sha256:fbcda96e87e9c92ad167c2e53839e57503ecfda18804ea28102353485033faa4 -annotated-types==0.7.0 \ - --hash=sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53 \ - --hash=sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89 -anyio==4.13.0 \ - --hash=sha256:08b310f9e24a9594186fd75b4f73f4a4152069e3853f1ed8bfbf58369f4ad708 \ - --hash=sha256:334b70e641fd2221c1505b3890c69882fe4a2df910cba14d97019b90b24439dc -av==17.0.1 \ - --hash=sha256:09b1f1601cc4a4d9e616d197b345c363ba6abfe567cb3d6b18e45516126692b6 \ - --hash=sha256:1229e879f4b6431bc00f69d7f8891fe9a683b0a6e0e009e6c98eb7e449f0383d \ - --hash=sha256:1d33871742d1e71562db3c8e752cacc5a62766d7efc3ae408bff1c3e26ebb46e \ - --hash=sha256:3a3f33bbfed2bcc65be37941bfeb6cc20bbe9cb7afc4ef1ac8d330972df098f9 \ - --hash=sha256:3d0a7d45d9599bf9df9f8249827113d4f36df1cd6b5356227b997f0552dbc98e \ - --hash=sha256:3d3a36204cb1f1e7691e6446afa8d6b7097b09946dae732c71c5d05ce09e506e \ - --hash=sha256:3ed6bcd7021fe55832f95b8ef78dd01a4cb21faf3cd71f1e1bf4f20bf100b278 \ - --hash=sha256:42d6745d30a410ec9b22aef79a52a7ab5a001eb8f5adfd952946606a30983318 \ - --hash=sha256:4744837f4116964280bcc72285e3cdd51361e98a696205aadd924203440ef511 \ - --hash=sha256:50e58a473d65ea29b645e45c9fd8518a6783737135683ecc40571a91592bdfe4 \ - --hash=sha256:50f9dd53a8ebef77606dca3b21710f660f9a6478484e79b9abda7c787b4f2403 \ - --hash=sha256:8270634c409f8efc9a24216e5dd90313d873b26ea4b5f172b14de52cbd15121c \ - --hash=sha256:985c21095bfb9c4bb7ba362fbef7bf0194bd72b1d7d3c46e30d1f47c5d38b4df \ - --hash=sha256:987f4f46ceae4da6c614dcbd2b8149be9dbf680c3bb7a6841c58af9cff4d9230 \ - --hash=sha256:9acd0b6a6e02af2b37f63d97a03ee2c47936d58e82425c3cd075a95245937c59 \ - --hash=sha256:9af524e8632a54032e361d6b88895bd3e7c6212ca560de60f5ccc525323c764c \ - --hash=sha256:a87a42c36e29f75e7dff7281944f2a6876a2c8875e225ccbf6c1ae62748b4caa \ - --hash=sha256:b87b98afe971cde123953073bc9c95ab0b7efd2ecc082dd2dbd11f9d9abf190e \ - --hash=sha256:c58c71bffd9383908c85695ac61d3184c668accb04a5bd1b262e0fb8d09f60a5 \ - --hash=sha256:d97f54e55b18a74912f479c1978aadd1341d38d892dee95bb5c2f2dccfa72f32 \ - --hash=sha256:e6eee84afa48d0e9321047cd3e4facd44b401493f6bdc753e2e1d1e7c9e6d13e \ - --hash=sha256:f585358fe0127990aea7887e940de4cdd745a2770605c31e54b2418fd0fdd8bd \ - --hash=sha256:f63b30067e6d88a3cce0d73d01ecfc0e6f091ad2bcf689db5dc305b0b4e8348c \ - --hash=sha256:fbcbd4aa43bca6a8691816283112d1659a27f407bbeb66d1397023691339f5d4 -certifi==2026.2.25 \ - --hash=sha256:027692e4402ad994f1c42e52a4997a9763c646b73e4096e4d5d6db8af1d6f0fa \ - --hash=sha256:e887ab5cee78ea814d3472169153c2d12cd43b14bd03329a39a9c6e2e80bfba7 -charset-normalizer==3.4.7 \ - --hash=sha256:007d05ec7321d12a40227aae9e2bc6dca73f3cb21058999a1df9e193555a9dcc \ - --hash=sha256:03853ed82eeebbce3c2abfdbc98c96dc205f32a79627688ac9a27370ea61a49c \ - --hash=sha256:07d9e39b01743c3717745f4c530a6349eadbfa043c7577eef86c502c15df2c67 \ - --hash=sha256:08e721811161356f97b4059a9ba7bafb23ea5ee2255402c42881c214e173c6b4 \ - --hash=sha256:0c96c3b819b5c3e9e165495db84d41914d6894d55181d2d108cc1a69bfc9cce0 \ - --hash=sha256:0ea948db76d31190bf08bd371623927ee1339d5f2a0b4b1b4a4439a65298703c \ - --hash=sha256:0f7eb884681e3938906ed0434f20c63046eacd0111c4ba96f27b76084cd679f5 \ - --hash=sha256:12a6fff75f6bc66711b73a2f0addfc4c8c15a20e805146a02d147a318962c444 \ - --hash=sha256:12d8baf840cc7889b37c7c770f478adea7adce3dcb3944d02ec87508e2dcf153 \ - --hash=sha256:14265bfe1f09498b9d8ec91e9ec9fa52775edf90fcbde092b25f4a33d444fea9 \ - --hash=sha256:16d971e29578a5e97d7117866d15889a4a07befe0e87e703ed63cd90cb348c01 \ - --hash=sha256:177a0ba5f0211d488e295aaf82707237e331c24788d8d76c96c5a41594723217 \ - --hash=sha256:1a87ca9d5df6fe460483d9a5bbf2b18f620cbed41b432e2bddb686228282d10b \ - --hash=sha256:1c2a768fdd44ee4a9339a9b0b130049139b8ce3c01d2ce09f67f5a68048d477c \ - --hash=sha256:1c2aed2e5e41f24ea8ef1590b8e848a79b56f3a5564a65ceec43c9d692dc7d8a \ - --hash=sha256:1dc8b0ea451d6e69735094606991f32867807881400f808a106ee1d963c46a83 \ - --hash=sha256:1efde3cae86c8c273f1eb3b287be7d8499420cf2fe7585c41d370d3e790054a5 \ - --hash=sha256:202389074300232baeb53ae2569a60901f7efadd4245cf3a3bf0617d60b439d7 \ - --hash=sha256:203104ed3e428044fd943bc4bf45fa73c0730391f9621e37fe39ecf477b128cb \ - --hash=sha256:2257141f39fe65a3fdf38aeccae4b953e5f3b3324f4ff0daf9f15b8518666a2c \ - --hash=sha256:298930cec56029e05497a76988377cbd7457ba864beeea92ad7e844fe74cd1f1 \ - --hash=sha256:2cd4a60d0e2fb04537162c62bbbb4182f53541fe0ede35cdf270a1c1e723cc42 \ - --hash=sha256:2d6eb928e13016cea4f1f21d1e10c1cebd5a421bc57ddf5b1142ae3f86824fab \ - --hash=sha256:2fe249cb4651fd12605b7288b24751d8bfd46d35f12a20b1ba33dea122e690df \ - --hash=sha256:30b8d1d8c52a48c2c5690e152c169b673487a2a58de1ec7393196753063fcd5e \ - --hash=sha256:320ade88cfb846b8cd6b4ddf5ee9e80ee0c1f52401f2456b84ae1ae6a1a5f207 \ - --hash=sha256:3534e7dcbdcf757da6b85a0bbf5b6868786d5982dd959b065e65481644817a18 \ - --hash=sha256:36836d6ff945a00b88ba1e4572d721e60b5b8c98c155d465f56ad19d68f23734 \ - --hash=sha256:38c0109396c4cfc574d502df99742a45c72c08eff0a36158b6f04000043dbf38 \ - --hash=sha256:3946fa46a0cf3e4c8cb1cc52f56bb536310d34f25f01ca9b6c16afa767dab110 \ - --hash=sha256:3bec022aec2c514d9cf199522a802bd007cd588ab17ab2525f20f9c34d067c18 \ - --hash=sha256:3c9a494bc5ec77d43cea229c4f6db1e4d8fe7e1bbffa8b6f0f0032430ff8ab44 \ - --hash=sha256:3dce51d0f5e7951f8bb4900c257dad282f49190fdbebecd4ba99bcc41fef404d \ - --hash=sha256:3dedcc22d73ec993f42055eff4fcfed9318d1eeb9a6606c55892a26964964e48 \ - --hash=sha256:4042d5c8f957e15221d423ba781e85d553722fc4113f523f2feb7b188cc34c5e \ - --hash=sha256:481551899c856c704d58119b5025793fa6730adda3571971af568f66d2424bb5 \ - --hash=sha256:4dc1e73c36828f982bfe79fadf5919923f8a6f4df2860804db9a98c48824ce8d \ - --hash=sha256:4e5163c14bffd570ef2affbfdd77bba66383890797df43dc8b4cc7d6f500bf53 \ - --hash=sha256:511ef87c8aec0783e08ac18565a16d435372bc1ac25a91e6ac7f5ef2b0bff790 \ - --hash=sha256:532bc9bf33a68613fd7d65e4b1c71a6a38d7d42604ecf239c77392e9b4e8998c \ - --hash=sha256:54523e136b8948060c0fa0bc7b1b50c32c186f2fceee897a495406bb6e311d2b \ - --hash=sha256:5649fd1c7bade02f320a462fdefd0b4bd3ce036065836d4f42e0de958038e116 \ - --hash=sha256:56be790f86bfb2c98fb742ce566dfb4816e5a83384616ab59c49e0604d49c51d \ - --hash=sha256:5b77459df20e08151cd6f8b9ef8ef1f961ef73d85c21a555c7eed5b79410ec10 \ - --hash=sha256:5ed6ab538499c8644b8a3e18debabcd7ce684f3fa91cf867521a7a0279cab2d6 \ - --hash=sha256:6178f72c5508bfc5fd446a5905e698c6212932f25bcdd4b47a757a50605a90e2 \ - --hash=sha256:6370e8686f662e6a3941ee48ed4742317cafbe5707e36406e9df792cdb535776 \ - --hash=sha256:64f02c6841d7d83f832cd97ccf8eb8a906d06eb95d5276069175c696b024b60a \ - --hash=sha256:65bcd23054beab4d166035cabbc868a09c1a49d1efe458fe8e4361215df40265 \ - --hash=sha256:66671f93accb62ed07da56613636f3641f1a12c13046ce91ffc923721f23c008 \ - --hash=sha256:6696b7688f54f5af4462118f0bfa7c1621eeb87154f77fa04b9295ce7a8f2943 \ - --hash=sha256:6785f414ae0f3c733c437e0f3929197934f526d19dfaa75e18fdb4f94c6fb374 \ - --hash=sha256:67f6279d125ca0046a7fd386d01b311c6363844deac3e5b069b514ba3e63c246 \ - --hash=sha256:6c114670c45346afedc0d947faf3c7f701051d2518b943679c8ff88befe14f8e \ - --hash=sha256:6e0d51f618228538a3e8f46bd246f87a6cd030565e015803691603f55e12afb5 \ - --hash=sha256:6ed74185b2db44f41ef35fd1617c5888e59792da9bbc9190d6c7300617182616 \ - --hash=sha256:708838739abf24b2ceb208d0e22403dd018faeef86ddac04319a62ae884c4f15 \ - --hash=sha256:715479b9a2802ecac752a3b0efa2b0b60285cf962ee38414211abdfccc233b41 \ - --hash=sha256:733784b6d6def852c814bce5f318d25da2ee65dd4839a0718641c696e09a2960 \ - --hash=sha256:750e02e074872a3fad7f233b47734166440af3cdea0add3e95163110816d6752 \ - --hash=sha256:752a45dc4a6934060b3b0dab47e04edc3326575f82be64bc4fc293914566503e \ - --hash=sha256:7579e913a5339fb8fa133f6bbcfd8e6749696206cf05acdbdca71a1b436d8e72 \ - --hash=sha256:7641bb8895e77f921102f72833904dcd9901df5d6d72a2ab8f31d04b7e51e4e7 \ - --hash=sha256:7804338df6fcc08105c7745f1502ba68d900f45fd770d5bdd5288ddccb8a42d8 \ - --hash=sha256:80d04837f55fc81da168b98de4f4b797ef007fc8a79ab71c6ec9bc4dd662b15b \ - --hash=sha256:813c0e0132266c08eb87469a642cb30aaff57c5f426255419572aaeceeaa7bf4 \ - --hash=sha256:82b271f5137d07749f7bf32f70b17ab6eaabedd297e75dce75081a24f76eb545 \ - --hash=sha256:84c018e49c3bf790f9c2771c45e9313a08c2c2a6342b162cd650258b57817706 \ - --hash=sha256:8751d2787c9131302398b11e6c8068053dcb55d5a8964e114b6e196cf16cb366 \ - --hash=sha256:8778f0c7a52e56f75d12dae53ae320fae900a8b9b4164b981b9c5ce059cd1fcb \ - --hash=sha256:87fad7d9ba98c86bcb41b2dc8dbb326619be2562af1f8ff50776a39e55721c5a \ - --hash=sha256:8d828b6667a32a728a1ad1d93957cdf37489c57b97ae6c4de2860fa749b8fc1e \ - --hash=sha256:8e385e4267ab76874ae30db04c627faaaf0b509e1ccc11a95b3fc3e83f855c00 \ - --hash=sha256:92a0a01ead5e668468e952e4238cccd7c537364eb7d851ab144ab6627dbbe12f \ - --hash=sha256:94e1885b270625a9a828c9793b4d52a64445299baa1fea5a173bf1d3dd9a1a5a \ - --hash=sha256:a180c5e59792af262bf263b21a3c49353f25945d8d9f70628e73de370d55e1e1 \ - --hash=sha256:a277ab8928b9f299723bc1a2dabb1265911b1a76341f90a510368ca44ad9ab66 \ - --hash=sha256:a5fe03b42827c13cdccd08e6c0247b6a6d4b5e3cdc53fd1749f5896adcdc2356 \ - --hash=sha256:a6c5863edfbe888d9eff9c8b8087354e27618d9da76425c119293f11712a6319 \ - --hash=sha256:a89c23ef8d2c6b27fd200a42aa4ac72786e7c60d40efdc76e6011260b6e949c4 \ - --hash=sha256:adb2597b428735679446b46c8badf467b4ca5f5056aae4d51a19f9570301b1ad \ - --hash=sha256:ae196f021b5e7c78e918242d217db021ed2a6ace2bc6ae94c0fc596221c7f58d \ - --hash=sha256:ae89db9e5f98a11a4bf50407d4363e7b09b31e55bc117b4f7d80aab97ba009e5 \ - --hash=sha256:aed52fea0513bac0ccde438c188c8a471c4e0f457c2dd20cdbf6ea7a450046c7 \ - --hash=sha256:aef65cd602a6d0e0ff6f9930fcb1c8fec60dd2cfcb6facaf4bdb0e5873042db0 \ - --hash=sha256:af21eb4409a119e365397b2adbaca4c9ccab56543a65d5dbd9f920d6ac29f686 \ - --hash=sha256:b14b2d9dac08e28bb8046a1a0434b1750eb221c8f5b87a68f4fa11a6f97b5e34 \ - --hash=sha256:bb6d88045545b26da47aa879dd4a89a71d1dce0f0e549b1abcb31dfe4a8eac49 \ - --hash=sha256:bb8cc7534f51d9a017b93e3e85b260924f909601c3df002bcdb58ddb4dc41a5c \ - --hash=sha256:bc17a677b21b3502a21f66a8cc64f5bfad4df8a0b8434d661666f8ce90ac3af1 \ - --hash=sha256:bd6c2a1c7573c64738d716488d2cdd3c00e340e4835707d8fdb8dc1a66ef164e \ - --hash=sha256:bd9b23791fe793e4968dba0c447e12f78e425c59fc0e3b97f6450f4781f3ee60 \ - --hash=sha256:c03a41a8784091e67a39648f70c5f97b5b6a37f216896d44d2cdcb82615339a0 \ - --hash=sha256:c0f081d69a6e58272819b70288d3221a6ee64b98df852631c80f293514d3b274 \ - --hash=sha256:c35abb8bfff0185efac5878da64c45dafd2b37fb0383add1be155a763c1f083d \ - --hash=sha256:c36c333c39be2dbca264d7803333c896ab8fa7d4d6f0ab7edb7dfd7aea6e98c0 \ - --hash=sha256:c45e9440fb78f8ddabcf714b68f936737a121355bf59f3907f4e17721b9d1aae \ - --hash=sha256:c593052c465475e64bbfe5dbd81680f64a67fdc752c56d7a0ae205dc8aeefe0f \ - --hash=sha256:cdd68a1fb318e290a2077696b7eb7a21a49163c455979c639bf5a5dcdc46617d \ - --hash=sha256:ce3412fbe1e31eb81ea42f4169ed94861c56e643189e1e75f0041f3fe7020abe \ - --hash=sha256:cf1493cd8607bec4d8a7b9b004e699fcf8f9103a9284cc94962cb73d20f9d4a3 \ - --hash=sha256:cf29836da5119f3c8a8a70667b0ef5fdca3bb12f80fd06487cfa575b3909b393 \ - --hash=sha256:d4a48e5b3c2a489fae013b7589308a40146ee081f6f509e047e0e096084ceca1 \ - --hash=sha256:d560742f3c0d62afaccf9f41fe485ed69bd7661a241f86a3ef0f0fb8b1a397af \ - --hash=sha256:d6038d37043bced98a66e68d3aa2b6a35505dc01328cd65217cefe82f25def44 \ - --hash=sha256:d61f00a0869d77422d9b2aba989e2d24afa6ffd552af442e0e58de4f35ea6d00 \ - --hash=sha256:d635aab80466bc95771bb78d5370e74d36d1fe31467b6b29b8b57b2a3cd7d22c \ - --hash=sha256:dca4bbc466a95ba9c0234ef56d7dd9509f63da22274589ebd4ed7f1f4d4c54e3 \ - --hash=sha256:dd915403e231e6b1809fe9b6d9fc55cf8fb5e02765ac625d9cd623342a7905d7 \ - --hash=sha256:e044c39e41b92c845bc815e5ae4230804e8e7bc29e399b0437d64222d92809dd \ - --hash=sha256:e060d01aec0a910bdccb8be71faf34e7799ce36950f8294c8bf612cba65a2c9e \ - --hash=sha256:e1421b502d83040e6d7fb2fb18dff63957f720da3d77b2fbd3187ceb63755d7b \ - --hash=sha256:e17b8d5d6a8c47c85e68ca8379def1303fd360c3e22093a807cd34a71cd082b8 \ - --hash=sha256:e5f4d355f0a2b1a31bc3edec6795b46324349c9cb25eed068049e4f472fb4259 \ - --hash=sha256:e712b419df8ba5e42b226c510472b37bd57b38e897d3eca5e8cfd410a29fa859 \ - --hash=sha256:e74327fb75de8986940def6e8dee4f127cc9752bee7355bb323cc5b2659b6d46 \ - --hash=sha256:e80c8378d8f3d83cd3164da1ad2df9e37a666cdde7b1cb2298ed0b558064be30 \ - --hash=sha256:e8ac484bf18ce6975760921bb6148041faa8fef0547200386ea0b52b5d27bf7b \ - --hash=sha256:eca9705049ad3c7345d574e3510665cb2cf844c2f2dcfe675332677f081cbd46 \ - --hash=sha256:ed065083d0898c9d5b4bbec7b026fd755ff7454e6e8b73a67f8c744b13986e24 \ - --hash=sha256:edac0f1ab77644605be2cbba52e6b7f630731fc42b34cb0f634be1a6eface56a \ - --hash=sha256:effc3f449787117233702311a1b7d8f59cba9ced946ba727bdc329ec69028e24 \ - --hash=sha256:f22dec1690b584cea26fade98b2435c132c1b5f68e39f5a0b7627cd7ae31f1dc \ - --hash=sha256:f495a1652cf3fbab2eb0639776dad966c2fb874d79d87ca07f9d5f059b8bd215 \ - --hash=sha256:f496c9c3cc02230093d8330875c4c3cdfc3b73612a5fd921c65d39cbcef08063 \ - --hash=sha256:f59099f9b66f0d7145115e6f80dd8b1d847176df89b234a5a6b3f00437aa0832 \ - --hash=sha256:f59ad4c0e8f6bba240a9bb85504faa1ab438237199d4cce5f622761507b8f6a6 \ - --hash=sha256:fbccdc05410c9ee21bbf16a35f4c1d16123dcdeb8a1d38f33654fa21d0234f79 \ - --hash=sha256:fea24543955a6a729c45a73fe90e08c743f0b3334bbf3201e6c4bc1b0c7fa464 -click==8.3.2 \ - --hash=sha256:14162b8b3b3550a7d479eafa77dfd3c38d9dc8951f6f69c78913a8f9a7540fd5 \ - --hash=sha256:1924d2c27c5653561cd2cae4548d1406039cb79b858b747cfea24924bbc1616d +annotated-doc==0.0.5 \ + --hash=sha256:117bac03a25ede5df5440e855b32d556049ca169ead221505badf432fed4b101 \ + --hash=sha256:c7e58ce09192557605d8bbd92836d7e1d520ac9580096042c0bfd197efacf1bb +annotated-types==0.8.0 \ + --hash=sha256:13b2beaad985e05e2d6407ee4c4f35590b11f8d693a258a561055cac8f64cab7 \ + --hash=sha256:f072f4d804ea359e4eaf198b1af7a8b0943881a87f31bb764f8bf219bb9419e0 +anyio==4.15.1 \ + --hash=sha256:6152fdbbf9a77fdec97731721bebf7c4c44f7c29b424b0065826173efc7ed101 \ + --hash=sha256:9f28306018cbd6d329e64a36d58256edff76dd996fe423bc957326e578b82a94 +av==17.1.0 \ + --hash=sha256:1284addf3c0dd939887a9722dc30df2241a97471ad52c3c507e31583ae22ff02 \ + --hash=sha256:1370b11a697eb3f2555906f8ab3519b0cfe48425d7830a3996ad42e6bffafda5 \ + --hash=sha256:19264c9bb4bee404accc7ce9ec461f2044b7f577a70234d29aafde31ed17de46 \ + --hash=sha256:19c84fd72af5ef81a20f18fbc6f9aedff9e1455e53a7062c1d4c95926d73da4e \ + --hash=sha256:22dff0ae582d10ef08c75c2150a4fd27cfc26653b54930c7c27b9f7b3aa20723 \ + --hash=sha256:3453b06075c7bb973fdb6de52563f7692ff05cbc64c0bb45f4fd6e8709131f2f \ + --hash=sha256:3dcd41e53f53f9a3260751d9c3c11d34e93d70d61e506c81f13dbc1e3606e07b \ + --hash=sha256:43ebbe977f19a7f2d2bd1a4e119675a0b15e05852cf7309846b6ab922ba7ffe9 \ + --hash=sha256:5327807c1219293803ef0c5d1578ff3ae1cf638c09e5998962026e1a554ec240 \ + --hash=sha256:58f7593726437cda5bd19793027e027768450b5c4a594777bf487798a33db702 \ + --hash=sha256:5df5c1172ef1cf65a1529d612f7da7798ce2cf82c1ff7212466b538a6cc7214c \ + --hash=sha256:6a20658ec7d96a70e14b1196eff00b7cdd8831ac3b99868e16b8ba8b24090847 \ + --hash=sha256:6c9b71fe5c0c5a8d303b1588d4d8ce9397d6b023f467cfef95000ba1f75507fa \ + --hash=sha256:7f1e71ff621b66253333926f948e00faae11d855b2442133c65128bca64cdeb3 \ + --hash=sha256:90c49bc9608377d01e82e747377505419a229464873341db18202d5dddecce5a \ + --hash=sha256:9514cfda85180554c430695282faf4be3ffdf95775d8519733821244eecb58e0 \ + --hash=sha256:ad7b4aa011093324b7118245f50ac6db244cfe9900d4072508a5245a2b0d3f41 \ + --hash=sha256:b41647e42884bf543b8e8d0a1dabd4d1b006c99183eb1a2d7afc5b01f73eeff4 \ + --hash=sha256:bbab058bd965309f39962e53caac8126987c68c0be094fc4f9427e5615b0218f \ + --hash=sha256:bff8896454b38fcb785a70e5ae0485d7021cb776303a5849393128a30b8f850b \ + --hash=sha256:cc5a5247622cb77e24c342364eb68f88c1442ddfaab60c1f1f483359d3cc7879 \ + --hash=sha256:e1c90f85cd7431ede95b11e8e711571a896ebea433f298849c2c0f1594c8d86e \ + --hash=sha256:ec630be6321b04e317862f6082e84812bbd801e55a3c2298312e3fc8a0a4af4f \ + --hash=sha256:ee98534242a74da847af78624779ac5a3177dc7c69f956a4da9e6f0fdb37d7f6 \ + --hash=sha256:efe9b1397300b67b644ad220c89df4892a76f2debe70f16bae1749fa20526e63 \ + --hash=sha256:f997e3351bdf51127c07a74e21741a2996e9230cbeb2d81c14acde761b116c9c \ + --hash=sha256:f9a65d1f48b818323fb411e80358f89d77dec340b01d27c6b2dfbb9cbf4b779f \ + --hash=sha256:fa64e1f1500d01c4a98e7a41dc1a9a35fb4dfe71f5de0389264ec1192200c76a \ + --hash=sha256:ff457ed419348e5b8e8c811d341389b052c5e4d5839da3794d019b125b9fe830 \ + --hash=sha256:ffbd78d73d2c9bf31e9a007c992faec3991428b2941a3b085b84fb82e8c32d19 +certifi==2026.7.22 \ + --hash=sha256:62f22742b58a1a33014a2b6b706588a8d7e2a88ae7bd1a6ebe8c992928483775 \ + --hash=sha256:741e2c3b351ddf169a738da9f2c048608ff7f2c5cc02f1ebc6b118bb090d5d55 +charset-normalizer==3.5.1 \ + --hash=sha256:00668ebb0609751758682eb0b5857e7c35b9f00e84dfdef062e103244ec94d45 \ + --hash=sha256:012a22b88a77ca2e59b98ac5889b0deb604147666032f45e6d6e217634d2550d \ + --hash=sha256:01e93745f7f219b703b60ba7afead36cfc4242782be5af484673fc500df12da5 \ + --hash=sha256:04368edf83514385ffc3e1cfd4546e595f4f1272dd23ba437a93a9cc3741d47b \ + --hash=sha256:0722590aabf9dc6a6c0343d523c05458fa2b5047dbe6302fd526bb570600753f \ + --hash=sha256:07ffd07412fc5d5e84cd8952acf9ff7e4ed7a708e69d1bada19d8ba91711353f \ + --hash=sha256:09a7bba9f739468c8e78c36a75c33768e53cb1959fc638f510454c14683f00d5 \ + --hash=sha256:0b2b1b3fa5670c127b246df1d0c059defd41f689a868a3b9d79df9b1cac42d22 \ + --hash=sha256:0c6dfb5ca6723eeed15aa8e564a014d69fcb8812f94eef11fe3631e0508199f5 \ + --hash=sha256:0d929fc574b4d6fd9e7c0f5c2ede8716a41911923aa7fa5fce38e0818aa4a1ac \ + --hash=sha256:13e3afe97712e8887cd516e960c63f0b93122971e5b5e4b2622fe7701771e838 \ + --hash=sha256:15f024313246a4ed976c60f440bb8d257815513a681d212ff74fd46f7d715a90 \ + --hash=sha256:195ce897c6153c0700078142cf8efe3e6454ca4cf4357499e4078dfd83396626 \ + --hash=sha256:19a3dd5aa73cef1c99687c4fc57db016a9c17104ae1185da88ba566a5d3bebe4 \ + --hash=sha256:1d1c7a53a6c2103925cdd6d7229f8c567379f211c869793df679f2e9f738c369 \ + --hash=sha256:1f5883d77fd409a261abb5dc8ccbe335720d798b1de4abb3b1d47ccbbc76b53b \ + --hash=sha256:21b82d8082f6f5e7f456ef0bd16323d08de1266efbfeb476e64b2a91d1471a4e \ + --hash=sha256:252d099029bcbea642f2a06c4ed5046bdf8b5a8150b64afa5e027e88b106e5ee \ + --hash=sha256:256dd4d85d9e4dc595e2bc983c980e73f62ddeb3165c58b4c3dfe78c5c8548c1 \ + --hash=sha256:26422d45fd13551cf564c58932f7d72b4f58b93b0fcf18c35ba6be12b46bb102 \ + --hash=sha256:2679de311c7946dde5d3b6f44941844133ff5c7cb86099c0061ab1e8901c20a8 \ + --hash=sha256:29880d17a8eb0b5cfdfd8944b468322928059aa35f1f5fa8ff22b149ec0b42f8 \ + --hash=sha256:2bced4061f000f7187254a02ad3433ae17eaf991747ceea2f478422590a5bba9 \ + --hash=sha256:2e9cf9253119d8e5d111f05d71626786fd3d6193817316eab1ca088cdb8593cf \ + --hash=sha256:2f06b7eae9dbe77fe1d644ca244dad508de8d302870a43f3c559b521270938a0 \ + --hash=sha256:2f293479cce755c75f1697e87c409b7ae4c555c7dfecb6e988ad13abba943031 \ + --hash=sha256:329fc3ccb63ad22d867d84c2adea759a64079a37ba4a343433b02c7a2816871e \ + --hash=sha256:343fb4f2821043bd87095f7b08a1a181febc8e36ac64212143bbfd0a0e1bc235 \ + --hash=sha256:3588e376b3ea2eea84976f67273d679f229e24c66dce7b82ae45aef04ff6e072 \ + --hash=sha256:35aea775dc2bd5f54cd84a1cd2696cc3207c479cb9cf0bd346f0d343e4300ddb \ + --hash=sha256:35fe081843b35aad20ffeccec3eeffbe637b15d14f3fb22cc1b59cd8ec17e93c \ + --hash=sha256:36047af20e17097c3bb9476c2b7655f2f7aa51322c0ba58c07695bedf755a950 \ + --hash=sha256:3617ac3cfd8b9888f145ad89dd6e692285834b0201c6074a5eeaad3fd4d668c2 \ + --hash=sha256:366ec70f5547c640d3ce1985722490f23faf4eb5216a7eeba78277490e78dacb \ + --hash=sha256:394fea06235c8543390050ed5f529187074b029fb027213f6c46ac11ab5d950e \ + --hash=sha256:3d27167433c0d5f18dc850f07d0b3816221984fecdc405d6c157a6f0b8f8e9e6 \ + --hash=sha256:3e5e1224c0a6a90e05843e07adfec669edebec17801c67072f51e59561d63c0b \ + --hash=sha256:41876ee62a3dddf48ff1121ad8f0798032aa03f2fd35f21f34a4cab14f18d8d2 \ + --hash=sha256:433c5a81eade63b47e522303bad236f59dba55ea6951746f5558355eeed8c75d \ + --hash=sha256:4582c27e8c889d64811987b5967fbd3ae0c823fe1fd933b543d55ac20bb475fa \ + --hash=sha256:485a0d363cafefcd2538a73c7c838daa2035f09b2c9f9b5e3133f80c6aeb84c2 \ + --hash=sha256:494b70049a4d69aec6e8137c13af4cf8db8c9f9820a1392ac293b0dd2987a818 \ + --hash=sha256:496846868fea80e479324862fa877f02411f2fd0f83b79ccee2607aa68b2a032 \ + --hash=sha256:4abdc5f9ad448c1ecbfae2974b820535d6bc6e7eef63babbab3d81cf46968c71 \ + --hash=sha256:4b599739b93b2cbeded49645ae3c8d1405c29ddfbceac1545c87a3f9580a9e96 \ + --hash=sha256:4bea7f8ebe90bbd7f0e4a2de42ca6924ba23e3e76418c408ff82f1d46fabd687 \ + --hash=sha256:4c4fb141a727957c93edfe5c32a26ceb6b5f6461d67146e2d39f51e16170bea8 \ + --hash=sha256:4c9548dc78002099910abaebc0a72ac58b7d30931869e0351c09b507dff4ece3 \ + --hash=sha256:4d26f14f041e83dd8edfd61f4cd4fa7285d31798b5bf1f28e70c367ba6c41d61 \ + --hash=sha256:4f298bdadb8f0b9e5672877f647d1be9373ef5320c9e2f049795e26cad28b6a9 \ + --hash=sha256:52ec005752a56ae79547a05c0139ca2501a0c866390b6115008456b9f0e7cde1 \ + --hash=sha256:55261ac0d2941c42f196dd576f543d87a8ee03cd6f5e30dfb4d807b2e3b9121a \ + --hash=sha256:56490c595a28b1bb27dfc583e816152a9767721ef58b2c03b13f954d2f707420 \ + --hash=sha256:58d3e12c88e0950bca850ae1f7c256055c097639c2edb9eb123af9807d8b15e4 \ + --hash=sha256:58d4aa13a59c969dbfdf9e6a9560e242cbfd9e8a8f50c2747714df1a423adf65 \ + --hash=sha256:59171c6e45bf07d0d5cab3b0bf81d945035530f6873398b3b531c31184d46663 \ + --hash=sha256:5b6d1386bf0096d26d3a863dc0a487a5b4eb9aa93cf5ba69683d29dde6b9d60f \ + --hash=sha256:5c0ea61a470e070686aa30892fed79e297d2c8d0ab46b8bcdf027d38c51da591 \ + --hash=sha256:5c84bec0ab5ae0c64bfe73a7d2adcb5ce73b467523fc27fd6a28ab2aa6cbe35a \ + --hash=sha256:5ca0555312ae2fe82715cada7fac375530c2f3349e1eaa1bcb33d0283ac79a18 \ + --hash=sha256:5d8531a6569d025f68e2321e7638fb7978f23db58e5f69f56913837aae03816e \ + --hash=sha256:5e2d0e146dcb57034f8b97dc58d2d512cb90aba253960ce449f695fec6a82c6f \ + --hash=sha256:5fc45d653ea8c9a20479167e11d4a0f8cb2fa3470737ab6f9c827532313187b7 \ + --hash=sha256:6117b84ea48435e5356dc737f5121485c30920ba43375fa7b434fd753df0eac3 \ + --hash=sha256:6199d5606e2bbf2b096cf64d03f8b6790c91081d5ac866b8e7bb6422738cc60c \ + --hash=sha256:62b55f6722735a6c472f88361cde6640608773d9443cebdbb51abf436a1fcdd3 \ + --hash=sha256:687c9ca3035544b113bea2055e180af96fb63c0c476e22a9180f51925186e7b7 \ + --hash=sha256:6b7430cf5728e68f6c462254009a6ef4086e1bea43cf2f57aa9c55fb4f50ff96 \ + --hash=sha256:6ba32c4d2abf1d2fe7cf27d280f4cca5664233b0f885549c7761719eb977f486 \ + --hash=sha256:6c9cdde8becb25a7fde49924511aa2644d6f8081cc8df8e9452724303348d8e3 \ + --hash=sha256:6df0ec430f9a831772c23ca5a224cba36517a58a84bb32c32bb59a9fa67c47f6 \ + --hash=sha256:6e2912d4babbc65196ac13c2f53468dc57fb8b9c25ef913e8c59ddf7c6dc0e1b \ + --hash=sha256:6e5e4d73d588ca5ed09df1b7dcd1b203d1df3c542e3f50d126c947d432b10731 \ + --hash=sha256:70055ff39b97c99e7ae40ea3e393fb62aa2e44dbd9b29f8d14f42fb0025c3959 \ + --hash=sha256:706bfd38730a5ac7a365793269a00f4e988178cec121391f4248d84ad8c972e9 \ + --hash=sha256:7235dc28fc6dd9d832ac7c7bce95367dedb85929f17368a0c2bee1e080b9acbf \ + --hash=sha256:774d157f112367ff4abd29019f38f023c24e00e56edc7829c20e358a5a913ad8 \ + --hash=sha256:77efcff2b23071c349402ac1066667a3d011f62398d81408c9b88ad991747c9e \ + --hash=sha256:789b8982559ae28dad2356519f841655756cdcd96616410590ae0b17454ee64f \ + --hash=sha256:7ac76cf9afd34929d76eb7fcb63be476a4853d8a96f0dcf2d0db68a0cbdf9885 \ + --hash=sha256:7c0c10730342b0c9b35dd1d619beb8214e520bd96a1f870f452680b238aab3e0 \ + --hash=sha256:823f82903d189af463d7df250ef1f7f696f3cee08cc8d91deb565e8d425f6506 \ + --hash=sha256:838648accb3a7fd9803fd45c87bce8509648eb0c11bc34e216141300977244f2 \ + --hash=sha256:854066be00447fa8de2ccbbe893e2ffc4b123ef16d897af794c1e18bd4a714b0 \ + --hash=sha256:85d5855daafc240cc045c026d7a15fd198a09b0fc8ff6f5ecbb5297b509cb11e \ + --hash=sha256:85de3134b5379856e323ba37c19c9256d39425f7b76a63af52b09fb4664c2e8f \ + --hash=sha256:87e4f41d375c0b9be2fb5251aee4b8a689169e134535aed81bf085c3b647451e \ + --hash=sha256:88ca277405c2d3b71c4e1c2ee0e7966e807bcba86a69d11e19ba199d18ae4491 \ + --hash=sha256:88e85ab89cb822c1e635f51d6d32e488f94e002e70e2f492bdb8b945543f345a \ + --hash=sha256:8ac8c94b6539074e0f40899301273ac8402b9b3e01c7b7ba269ff30340aaaf20 \ + --hash=sha256:8fe532b3c966d1fb794e0698e4589d0444017ae77fc0b31edea13c0e35bcc449 \ + --hash=sha256:9085f87b0e38a2b92b8923059b4e8789fe40d9279712d15dcc670048d77079af \ + --hash=sha256:90b7481fb62fbe172c558bc6fd1c4c98d82004a54a7551f20e11ac9bf0b8708c \ + --hash=sha256:92caef967d287a407085d61176fce4012b1dd62daed4eb6d5ceb26d3d2538712 \ + --hash=sha256:9362dd90aa7dab48c0054a21187791ccf05473f7dba5d92b8033ae62164675e7 \ + --hash=sha256:94d78ecec2605a8d0398b0f365d5f12a63248438516f5dac536a5eff7337df4a \ + --hash=sha256:94fbf1c0c6cc0d3d5e50f9a9313a8cdca90dd696d34b381cd1704f8c9e939f20 \ + --hash=sha256:950f23cb393f85543777b0433f082cddd25b51ab398eac7971146495679efe5f \ + --hash=sha256:96eefc178f8636b9c760c5829345307fd81cfae9ab1e80997dbddeb0f54ee9a3 \ + --hash=sha256:96fef3e886d6a9874b14f27fc193fbdc69d5d8035783d86aa4e1cea594e695f9 \ + --hash=sha256:977cdbd483a9cff38179bea4fd754289a6f2195c7abd414aba85410b3e66cc5e \ + --hash=sha256:978eab16f55b4ab2c2a745be9a0a840bf8f09a7f227d9c76eb30214d078865a5 \ + --hash=sha256:994e883d17c559cdfd38c84003c8b27d25424a1077272a17e7cd27bfe0bf57b2 \ + --hash=sha256:9ac4444d8d4fd4c4bd08bf451ed3167aa9e7ec6cdb41b648794f1d1103652e36 \ + --hash=sha256:9b5db6052055d34d41230fb78d7c439c23dc536a9896f6cb039e8dd92cfc1263 \ + --hash=sha256:9d9a0dc7cbe9bec24c3f767c9122c41fe5a1bc43f47cd099d00d393e09769de4 \ + --hash=sha256:9dbdd9205662134957cf0c324f639bdc5031c0ca056e2369e238db75187c0f11 \ + --hash=sha256:9eea3ab2597a5e65fe65296e2d6a84570845a6b55532d90333d740d48bbc850a \ + --hash=sha256:a2028475ba855475b8b4d3cfeb4994269c967aea8b9892dfba907f4263a863a3 \ + --hash=sha256:a3a370082ce34d0612f421e15fe011c53bb1feff21a26d06ad4fb244dab5a375 \ + --hash=sha256:a545775cfe815855ea32d7c27731d79da358ef2055b4a25830231b1622dd18aa \ + --hash=sha256:a5cbd90ecf0fc62e64726917ad083b73001f0563657a87ec3c0b504e277dc90d \ + --hash=sha256:a6d095662e73e74f0a49988e0593373e243e3a52e27bfeea0a859e88acf4a0f5 \ + --hash=sha256:a6dac12ff6b846103483683f60c5f8fee205121adc58ffd87e90a90a3af69e99 \ + --hash=sha256:a951ad59cad9145664a730d3036b40b844e74d2d3683da40111463cd3a83845d \ + --hash=sha256:aa1099b956fb795e686d073568f6dc002a0bb89765ea6d5b055dd7d9bf1b116c \ + --hash=sha256:aa2bb0b37202dca27175591f761108b5d34096ade1191ffe4808bdf6b1571488 \ + --hash=sha256:aae2ee51122d3ae968a3837d97dc24a0aeebb0dea23694422cd172bd30017cd6 \ + --hash=sha256:ab743e9bc90c1f73552ec33e10e3331315acd2c397b36065b591b0181de533cc \ + --hash=sha256:ac00177c4831ffa650f8609e4bdddd5fe09c03b1c0c47acece7e6ea20421598b \ + --hash=sha256:ac13b004224fb341e1e25a1ed5e19d32f57cdb2a403e01f003b46f051a550f6f \ + --hash=sha256:acaf604462bf330b0d07e7a07c1d6e4adac79e5fb13e9c5140590542cafacc00 \ + --hash=sha256:ae31a1a1db2ee6cc2942fccaf695c934bc7f3db9f2133a3fef1f367cf1a4ab10 \ + --hash=sha256:ae4a097991662cd4fff0ddc74e0fe7874f82e00042fa0ea00855645ed0c79598 \ + --hash=sha256:aea996a6aba25260827c9ea511d1addfde2da9eb686ac961838509086188b7e6 \ + --hash=sha256:b39b69b347e5e47a3b5b8cfc005c68c1ba347474e3960236c4944a8ecd174962 \ + --hash=sha256:b54e7e13267d49ffbfe68e25b3cbd774dab38fa37238f71265e91b36146eb21c \ + --hash=sha256:b9af956078716df40d985fb0dfeb2c2120c5ca92ba4ff4b388acfd01cdc14d08 \ + --hash=sha256:ba2f37ee79e6338845261a3c5b1784e5d1acdff2c0785b284f1b633033d136ab \ + --hash=sha256:ba501e667c17d8411f98e67a022d9604ef179aff0e459b7e292c796837c13573 \ + --hash=sha256:baf3775a2635e5a11fbd5e4e64ee69c7e86875d224a5c72aca4c141064589a90 \ + --hash=sha256:bb57753e36e4855b8ca375069482250a6246372331a3e4f3407eaebb007443f5 \ + --hash=sha256:bd6c173f04743d483881bffa1478d5a4624475b8cd1d2194956a75548e191c18 \ + --hash=sha256:be47f99644b208bff7766314013f9acf57b056b04191d570d68ad14022cf5b1d \ + --hash=sha256:c010f5581d9c612804cc59fcf7b524b707fbcb72828551237ab545bb5c7034af \ + --hash=sha256:c1dcc36dcb96abc02236e182d17e0f71430152a6c2c7447421da2d2dc144edea \ + --hash=sha256:c428c6c31eb5f4277d7f8eccaf767fbd548ddd5ce3c8b4f4cbbfab3d96b5904c \ + --hash=sha256:c658c50ac0c98cd755a2dd50b7977d3bca7df401dcc47fbdfa87db53ef7d4e8b \ + --hash=sha256:c71fb0d56c920c269cd3e2e3fe7c610e3f1fdb21a6ce60efa6430ff63676cea6 \ + --hash=sha256:c7b742bf31c88566b4bb6335a7f393bb322e580b6bb98df7bd0c25e6e3519ce8 \ + --hash=sha256:cc0329df4caaceb950d2f580b5ac716a377f7059624a0bafaeaf8a218c6ed774 \ + --hash=sha256:cc5d36d96478aa9c60654bd932525bf32964c62a7281eafdf16d85003a8d6004 \ + --hash=sha256:ce854f5f478050ade5a238731c4ca985a7d3b3cb53ff600a9b5c3b689b5f0a7a \ + --hash=sha256:ced3fdd71aaa83ce593746c2edb42b7a59cb4c19c8b5c407781c72e493aae55a \ + --hash=sha256:cee5dd7c6fb5dd52a0fe2a740f9bc6e3593f5f8b1788bde49de02086f30182b2 \ + --hash=sha256:cfa1c0cc3a8f9f53f1243a5a99ac36fd003880199383b37672e86ddda9cb07e2 \ + --hash=sha256:d1ee1e296209fdce05b81b663250eefa02213a2da7b41bf26f7829b8ba3545aa \ + --hash=sha256:d59b75732e9b6f27388e10c14b0259cc5f2e48c78627d185e6a177b58ad3cffe \ + --hash=sha256:d63600d620ad0064c3a748b950ac5ea38a80190e5498532efefa4b7b3f1da1f3 \ + --hash=sha256:dd732602a7009217f658d5863d12d79d373a4de0eebc111094bcdd3bb8e0a6cc \ + --hash=sha256:e06efa066f7dbadbc84ebc126a97c452a6451dfcf589d89d788484949e1cf795 \ + --hash=sha256:e199fb99720074809a7720f1c0b4d919eea8b87e88713e0f8f602f7bef543d9d \ + --hash=sha256:e4b018dc5a0eee4676e38fe84a47a427816c590b93b55d9025274ec4d6ffc2dc \ + --hash=sha256:e6621fb2a4988d6e53eedc455e5903e2679f3967b8acb3d639f1b63c14a2e893 \ + --hash=sha256:e71c909f353863b2b89c83de2ebed71ea6d0df8a6ef65a128193c5e650766bef \ + --hash=sha256:e90251c0c7bdd54a100a0dce3c07b7e637278c93af29dbf78ebb89a58c4bac7d \ + --hash=sha256:e9fbdce1e47394b09bc9f26ab117dfc8d6491977a11d86f592bb42c779db2fda \ + --hash=sha256:eb12fb2ba69ffa05f8695f61c69e591dc4b4a12ac3757ac8af8adb259bf56d17 \ + --hash=sha256:eda059b6bc8bc0812d626fd91a7ce01bf583df0a61296eff390fd94141a34e30 \ + --hash=sha256:f03ac127268b43ef4fe9e6ab6794a6794b49485a0cc0c1db79876d2f33f75bc7 \ + --hash=sha256:f298e218441525d3794428b4c8b8fb8662c6d3ea79925d4807ee6b9a96a3bca5 \ + --hash=sha256:f5542f9b941279d82d41eb0aa9f98eba36fe4df5c7086c651df7944935b37182 \ + --hash=sha256:f6f7deae3feb4edfa2efaf7c574fe88cbf055038a6abdb40188e4fff66d5699f \ + --hash=sha256:f9b1e28d0e8dbfa858abdba91d6b547beaf2df1a59bec6da6faae7b96a4991a9 \ + --hash=sha256:f9f8405c2c758532c74fed975dbee57be1f31a6e865c031870c79a6ed3212ada \ + --hash=sha256:fa48b1b63d639f9483e0633e092f5851e2348c352f1f9bb6c8182f87884ef876 \ + --hash=sha256:fb78f6e7fcd8ad785d28cd577168bc1aaee827b25bb8755638f694794ea98f0a \ + --hash=sha256:fbc597639158fd7c14d55e808718848319540f51b0e6746e3eefa59723a4a348 \ + --hash=sha256:fce8cbd4997efeb450bd298b54f755dcdff18d496f7a5ddbb4867c6d7c88fdc3 \ + --hash=sha256:fd0350afdc3aabd5576f60ea109228bd5538139713c7b094c5cd27c73a98bc6f \ + --hash=sha256:fd0a274c0e5f9a21565cd9d3dd749b61f96b7aa1e20a93aa1ba4029518f2e5c0 \ + --hash=sha256:fdb8a068947befafba9952162645dc2fecaeb400e64584829ed5e9b2fbe21a7f +click==8.5.0 \ + --hash=sha256:255bc9599cf7748b4b1a446ccc735421bd08a2ae529a8b88597d3de5664ee360 \ + --hash=sha256:ba0d2089de75ea0310e2dde03160e6ca10009947fb95a182f9b54021bb272e34 +cloudpickle==3.1.2 \ + --hash=sha256:7fda9eb655c9c230dab534f1983763de5835249750e85fbcef43aaa30a9a2414 \ + --hash=sha256:9acb47f6afd73f60dc1df93bb801b472f05ff42fa6c84167d25cb206be1fbf4a colorama==0.4.6 \ --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \ --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 @@ -232,8 +284,6 @@ contourpy==1.3.2 \ --hash=sha256:f26b383144cf2d2c29f01a1e8170f50dacf0eac02d64139dcd709a8ac4eb3cfe \ --hash=sha256:f939a054192ddc596e031e50bb13b657ce318cf13d264f095ce9db7dc6ae81c0 \ --hash=sha256:fd93cc7f3139b6dd7aab2f26a90dde0aa9fc264dbf70f6740d498a70b860b82c -cucim==23.10.0 \ - --hash=sha256:2c061ad28c3c1fa67bb62260f0a556f354c8ec2d6e3811eece375ed896d62945 cuda-bindings==12.9.4 \ --hash=sha256:1f53a7f453d4b2643d8663d036bafe29b5ba89eb904c133180f295df6dc151e5 \ --hash=sha256:20f2699d61d724de3eb3f3369d57e2b245f93085cab44fd37c3bea036cea1a6f \ @@ -259,8 +309,8 @@ cuda-bindings==12.9.4 \ --hash=sha256:d80bffc357df9988dca279734bc9674c3934a654cab10cadeed27ce17d8635ee \ --hash=sha256:f69107389e6b9948969bfd0a20c4f571fd1aefcfb1d2e1b72cc8ba5ecb7918ab \ --hash=sha256:fda147a344e8eaeca0c6ff113d2851ffca8f7dfc0a6c932374ee5c47caa649c8 -cuda-pathfinder==1.5.3 \ - --hash=sha256:dff021123aedbb4117cc7ec81717bbfe198fb4e8b5f1ee57e0e084fec5c8577d +cuda-pathfinder==1.8.1 \ + --hash=sha256:ae0137ff9e56ea97499bcbf54f5f2778ec25f3266715ac86da192a795af982a8 cuda-toolkit[cudart]==12.8.2.0 \ --hash=sha256:79040e750f28b959415283ccc44cce541c07003553d675b8ff45760e0189aa71 cupy-cuda12x==13.6.0 \ @@ -288,9 +338,9 @@ defusedxml==0.7.1 \ exceptiongroup==1.3.1 \ --hash=sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219 \ --hash=sha256:a7a39a3bd276781e98394987d3a5701d0c4edffb633bb7a5144577f82c773598 -fastapi==0.136.0 \ - --hash=sha256:8793d44ec7378e2be07f8a013cf7f7aa47d6327d0dfe9804862688ec4541a6b4 \ - --hash=sha256:cf08e067cc66e106e102d9ba659463abfac245200752f8a5b7b1e813de4ff73e +fastapi==0.141.1 \ + --hash=sha256:bfb91aa2d334c61cb35ba9a116fc123b3d3df31640b801cf57a7a78ec3f603b3 \ + --hash=sha256:e8822fc40db1e1858054d7a949a888695bc9bdce70139178e33bd2871a453ca1 fastrlock==0.8.3 \ --hash=sha256:001fd86bcac78c79658bac496e8a17472d64d558cd2227fdc768aa77f877fe40 \ --hash=sha256:04bb5eef8f460d13b8c0084ea5a9d3aab2c0573991c880c0a34a56bb14951d30 \ @@ -361,207 +411,244 @@ fastrlock==0.8.3 \ --hash=sha256:f2b84b2fe858e64946e54e0e918b8a0e77fc7b09ca960ae1e50a130e8fbc9af8 \ --hash=sha256:f68c551cf8a34b6460a3a0eba44bd7897ebfc820854e19970c52a76bf064a59f \ --hash=sha256:fcb50e195ec981c92d0211a201704aecbd9e4f9451aea3a6f71ac5b1ec2c98cf -filelock==3.28.0 \ - --hash=sha256:4ed1010aae813c4ee8d9c660e4792475ee60c4a0ba76073ceaf862bd317e3ca6 \ - --hash=sha256:de9af6712788e7171df1b28b15eba2446c69721433fa427a9bee07b17820a9db +filelock==3.32.6 \ + --hash=sha256:3f16ecd0117feae0dfc147e8c62eb5daeccd8bd800378c3ddf416de9b4feb6b1 \ + --hash=sha256:a3f55a18af3652a94d8f47d6055df434f254ca1d02ef2524850c6d249ca2512c flatbuffers==25.12.19 \ --hash=sha256:7634f50c427838bb021c2d66a3d1168e9d199b0607e6329399f04846d42e20b4 -fonttools==4.62.1 \ - --hash=sha256:0aa72c43a601cfa9273bb1ae0518f1acadc01ee181a6fc60cd758d7fdadffc04 \ - --hash=sha256:0b3ae47e8636156a9accff64c02c0924cbebad62854c4a6dbdc110cd5b4b341a \ - --hash=sha256:12859ff0b47dd20f110804c3e0d0970f7b832f561630cd879969011541a464a9 \ - --hash=sha256:149f7d84afca659d1a97e39a4778794a2f83bf344c5ee5134e09995086cc2392 \ - --hash=sha256:1596aeaddf7f78e21e68293c011316a25267b3effdaccaf4d59bc9159d681b82 \ - --hash=sha256:19177c8d96c7c36359266e571c5173bcee9157b59cfc8cb0153c5673dc5a3a7d \ - --hash=sha256:1c5c25671ce8805e0d080e2ffdeca7f1e86778c5cbfbeae86d7f866d8830517b \ - --hash=sha256:1eecc128c86c552fb963fe846ca4e011b1be053728f798185a1687502f6d398e \ - --hash=sha256:268abb1cb221e66c014acc234e872b7870d8b5d4657a83a8f4205094c32d2416 \ - --hash=sha256:2d850f66830a27b0d498ee05adb13a3781637b1826982cd7e2b3789ef0cc71ae \ - --hash=sha256:2e7abd2b1e11736f58c1de27819e1955a53267c21732e78243fa2fa2e5c1e069 \ - --hash=sha256:403d28ce06ebfc547fbcb0cb8b7f7cc2f7a2d3e1a67ba9a34b14632df9e080f9 \ - --hash=sha256:40975849bac44fb0b9253d77420c6d8b523ac4dcdcefeff6e4d706838a5b80f7 \ - --hash=sha256:486f32c8047ccd05652aba17e4a8819a3a9d78570eb8a0e3b4503142947880ed \ - --hash=sha256:49a445d2f544ce4a69338694cad575ba97b9a75fff02720da0882d1a73f12800 \ - --hash=sha256:59b372b4f0e113d3746b88985f1c796e7bf830dd54b28374cd85c2b8acd7583e \ - --hash=sha256:5a648bde915fba9da05ae98856987ca91ba832949a9e2888b48c47ef8b96c5a9 \ - --hash=sha256:5f37df1cac61d906e7b836abe356bc2f34c99d4477467755c216b72aa3dc748b \ - --hash=sha256:6706d1cb1d5e6251a97ad3c1b9347505c5615c112e66047abbef0f8545fa30d1 \ - --hash=sha256:68959f5fc58ed4599b44aad161c2837477d7f35f5f79402d97439974faebfebe \ - --hash=sha256:6acb4109f8bee00fec985c8c7afb02299e35e9c94b57287f3ea542f28bd0b0a7 \ - --hash=sha256:7487782e2113861f4ddcc07c3436450659e3caa5e470b27dc2177cade2d8e7fd \ - --hash=sha256:7aa21ff53e28a9c2157acbc44e5b401149d3c9178107130e82d74ceb500e5056 \ - --hash=sha256:7bca7a1c1faf235ffe25d4f2e555246b4750220b38de8261d94ebc5ce8a23c23 \ - --hash=sha256:8d337fdd49a79b0d51c4da87bc38169d21c3abbf0c1aa9367eff5c6656fb6dae \ - --hash=sha256:8f8fca95d3bb3208f59626a4b0ea6e526ee51f5a8ad5d91821c165903e8d9260 \ - --hash=sha256:90365821debbd7db678809c7491ca4acd1e0779b9624cdc6ddaf1f31992bf974 \ - --hash=sha256:92bb00a947e666169c99b43753c4305fc95a890a60ef3aeb2a6963e07902cc87 \ - --hash=sha256:93c316e0f5301b2adbe6a5f658634307c096fd5aae60a5b3412e4f3e1728ab24 \ - --hash=sha256:942b03094d7edbb99bdf1ae7e9090898cad7bf9030b3d21f33d7072dbcb51a53 \ - --hash=sha256:9c125ffa00c3d9003cdaaf7f2c79e6e535628093e14b5de1dccb08859b680936 \ - --hash=sha256:9dde91633f77fa576879a0c76b1d89de373cae751a98ddf0109d54e173b40f14 \ - --hash=sha256:9e7863e10b3de72376280b515d35b14f5eeed639d1aa7824f4cf06779ec65e42 \ - --hash=sha256:a24decd24d60744ee8b4679d38e88b8303d86772053afc29b19d23bb8207803c \ - --hash=sha256:a5d8825e1140f04e6c99bb7d37a9e31c172f3bc208afbe02175339e699c710e1 \ - --hash=sha256:aa69d10ed420d8121118e628ad47d86e4caa79ba37f968597b958f6cceab7eca \ - --hash=sha256:ad5cca75776cd453b1b035b530e943334957ae152a36a88a320e779d61fc980c \ - --hash=sha256:b4e0fcf265ad26e487c56cb12a42dffe7162de708762db951e1b3f755319507d \ - --hash=sha256:b820fcb92d4655513d8402d5b219f94481c4443d825b4372c75a2072aa4b357a \ - --hash=sha256:bd13b7999d59c5eb1c2b442eb2d0c427cb517a0b7a1f5798fc5c9e003f5ff782 \ - --hash=sha256:bdfe592802ef939a0e33106ea4a318eeb17822c7ee168c290273cbd5fabd746c \ - --hash=sha256:c05557a78f8fa514da0f869556eeda40887a8abc77c76ee3f74cf241778afd5a \ - --hash=sha256:c22b1014017111c401469e3acc5433e6acf6ebcc6aa9efb538a533c800971c79 \ - --hash=sha256:c9b9e288b4da2f64fd6180644221749de651703e8d0c16bd4b719533a3a7d6e3 \ - --hash=sha256:d241cdc4a67b5431c6d7f115fdf63335222414995e3a1df1a41e1182acd4bcc7 \ - --hash=sha256:e54c75fd6041f1122476776880f7c3c3295ffa31962dc6ebe2543c00dca58b5d \ - --hash=sha256:e8514f4924375f77084e81467e63238b095abda5107620f49421c368a6017ed2 \ - --hash=sha256:ee91628c08e76f77b533d65feb3fbe6d9dad699f95be51cf0d022db94089cdc4 \ - --hash=sha256:ef46db46c9447103b8f3ff91e8ba009d5fe181b1920a83757a5762551e32bb68 \ - --hash=sha256:fa1d16210b6b10a826d71bed68dd9ec24a9e218d5a5e2797f37c573e7ec215ca -fsspec==2026.3.0 \ - --hash=sha256:1ee6a0e28677557f8c2f994e3eea77db6392b4de9cd1f5d7a9e87a0ae9d01b41 \ - --hash=sha256:d2ceafaad1b3457968ed14efa28798162f1638dbb5d2a6868a2db002a5ee39a4 +fonttools==4.64.0 \ + --hash=sha256:043f6c572bf236f2a76e762c25f841daea11e8fc03e78088d7be66e0c5b4e4c0 \ + --hash=sha256:06b6409b868494556a831ae33b2d9a090476c37516b38d70f45a9720b460d423 \ + --hash=sha256:08f172961e11f4eb4f80f2f20049e09b0ea8e044fa6d456fed8346eb8588f360 \ + --hash=sha256:09657817b75575822bcd6098ef0ebf0386f34430839ee53109e70fd40a7f6539 \ + --hash=sha256:1c3661324f3f0fa4539a32288a3e0711a5f3ccf020036e760bb558ae9811a16f \ + --hash=sha256:1e4e84b47839d35be24dbf476845a34f2ccf99707b66df125c1c414d3e86d25d \ + --hash=sha256:236e59bc7e2a63557a4d7b013f9cb9e28d9aebc45bc09f85e545e6bf091db626 \ + --hash=sha256:2524a26f8fdb9051b0d778d052f5d238285ca9f91a7dc004514c7d6cf38d35f4 \ + --hash=sha256:2730946ca8f12c356bd98eb9b2b095c8e761ed05bed5afb0d5b380cebe4f6370 \ + --hash=sha256:2c42237b7e8c6813643e57d3efed3be094d4c06339dc2166b626e2cc5c12ee93 \ + --hash=sha256:3200180abc69639483cf54a17cca2e13c31ede5f665979ea0a9c829d093f372f \ + --hash=sha256:398b14f89ca950b288bd290875f07e4e10685644fa4ac668546fb107b1ada4d4 \ + --hash=sha256:45e3ecc3888f1637094fd75cd8fc727f3a4b06d1ddf89181126c071e244fd2a5 \ + --hash=sha256:4691a122b8c1d0d82d6e7510ce59d5c42146518240274b53e912e255573924f7 \ + --hash=sha256:498f02ea92c9ca18c0f9c581ea93184a9d56c25b0af14189b0767adaf34235d8 \ + --hash=sha256:4a05783ff54ce4c7a28f18e5772efdf63c219374bd9ffc55452182e1cef8be60 \ + --hash=sha256:507c553cdb5abe2e951b5368423849fe29911a828c2135319c3e500e3bf25b32 \ + --hash=sha256:50e52b6f479ddb1fe32423c2ec860811f36584cf6eabf279fb9a4f98b859a8b4 \ + --hash=sha256:53eee22af5b5a305c1ee2652955ed46b148e881456fcec1e7f0eb27f642f6bb4 \ + --hash=sha256:5af87d1a6d247d7467ee082ae977a5443b2c45f8cd4d59375b6daa38d523c2de \ + --hash=sha256:5b90ad6637237b636d15c9ae8b7c4a7a1c194f33def378677e468c13fd4542f8 \ + --hash=sha256:5bfdaada437e7730c17d366bd7bb8c4a16639963ddbfc1b2f302a68a17a290e7 \ + --hash=sha256:66a83f93579fb3493e458c4449d1d566a7b2a1c7b19915cd0fa3c9b8b5a8540b \ + --hash=sha256:6786bed88581e19bc4f28ea7a64ad531e8f54acf50327fddca942688824a60bd \ + --hash=sha256:6946c033a144086d5b98c976b72f476b70c93fbbedf914eee0e886f073a4e9fa \ + --hash=sha256:6eae4376adb104c2acfa76fd9ea0cb12b572ca1d70eceac709871f638ff76e93 \ + --hash=sha256:6f1ce9ef9a1b13098efdc2e43a2ed96d9851bbde7b31c652a87552c4efe9b422 \ + --hash=sha256:70fd99e5a09fb77f14b29d70879a4fce9529b2d2948b14c96708e0a61e001b98 \ + --hash=sha256:730eed859508cb7b0775ebe6bb39f18901f168eb989d8ee23a4fe082700e1e3f \ + --hash=sha256:769fb64412ca237547ca73f111a64252d9e32c9d938bed51ed537bc9146a8f54 \ + --hash=sha256:7d7995b906666037d7114c20a5566a372902747452af7d5bd4cd6bca8f1a2550 \ + --hash=sha256:801fd04899d72eab34f02ab78d0451525621b3bd589da9d2d480dfffe951b643 \ + --hash=sha256:8252f20108e557532f91d7d6dd9af87c16ed6fa930f65516aa480fa2cfed3363 \ + --hash=sha256:83cc48d1411d2ff388dab99973dca81172cc9ceae9c9799da9548d494cfb38cb \ + --hash=sha256:89356c0793b474af7e49ec90d39fb2363e2341516a90460e38231df5ebe8acd5 \ + --hash=sha256:8dd18fdff0ac9759b8d67a714730abee07b2312e3656c20ba5affb0107094762 \ + --hash=sha256:917fd520bb60809d83c14d43cfe48d5ad2516abaf2c073d65a431800dade2d29 \ + --hash=sha256:9443eefff58aad558608f352092e1be6d278980e8c3b4e8621fcbfda97818500 \ + --hash=sha256:9ecb2b206b5b2386f6968721a0770226b66bdd54adc4279bfff3ddf62873eed8 \ + --hash=sha256:a0afa8bac675445dc0e2ba2891ecbedd9be89cb437afa94c823e0290cc2c4bc5 \ + --hash=sha256:a3238a693e806a3158375c6403b8f6f71d86eb9c149b60c97f26dfd560c98ac8 \ + --hash=sha256:a515f664cad988f2295056833a59f62220bc3e46afdaffe389a29060f6712355 \ + --hash=sha256:a8c631303bb1fd7be3067c47536a30ff1fcb4846d6008c112bc52a03f7cd6965 \ + --hash=sha256:b2763e452b025ee8e990f0462e76052de9bb094ebc21d296f62c6dfe958886b4 \ + --hash=sha256:b4a7af455ffed980925bc0ebf5b8d6239e6c3e797d9d755b6db192fb3080d614 \ + --hash=sha256:be084d19a3ac0c8b2aba696680642d703118d3b1f18cf83f5b7dbaf0ffc62ab6 \ + --hash=sha256:c3c1fb656063a2f762db5378ea8d38ad5f7836b4f3fb8c4652270ded43df2935 \ + --hash=sha256:c60be0aed97a32c6ba8cee21f0d0477136e495451bd97910f589ac892db120d4 \ + --hash=sha256:cf67f96dc0bfe9607f5f2b734cedfbe2f6f995231adee4ccefa12872044d452d \ + --hash=sha256:d16102cbcd4615b09c64e6022733faccc93200785f1ab0d4493afb8b0261edde \ + --hash=sha256:d30c966bea2deffa19c738c81776f7182da5ccabd97e666bae4f3d6ba87341d9 \ + --hash=sha256:d652592c71683941b768306fa1c7c6ce1bb9b072505043feafe86305d71030b7 \ + --hash=sha256:da4c9bdeaf6b06c12d13d0addfc8ef15aa9695d26574a6dc10751258bef72f30 \ + --hash=sha256:dac25768be4c03a990c359f408cb7e8958ed0e93061e495b3642ce7909761205 \ + --hash=sha256:dc96150f99e05a317cb1f042b92c4cf8bc93cdb1f9f85717322e202ecdf2e505 \ + --hash=sha256:de8acaa5f4160f537a3cf41b031171d51004b9f4aebfa6c194f18dffa9533d03 \ + --hash=sha256:e412767d1c9765cf1b82f7b00f1686c6ca5809ebb77af363b3f9f2325a465c01 \ + --hash=sha256:e4812f71c39d77ec5041348dafa400532adf7bf8f1fffa9aa6495fce5876d7b8 \ + --hash=sha256:e63b63b8b5fdb8e29318dff2b15c5f852be46e972775b466f75b848f6eed4502 \ + --hash=sha256:e662f874ab2c7da9861584db44a13573e0936df087215f63013138f6e5eba083 \ + --hash=sha256:e7b34209eef39462563c05ea9dcf51c272a2ded56f5753da925e66bca3baa484 \ + --hash=sha256:ecb2e59a7bc692fee64dda6010deb66222335693b30046f15cccf81233aa715f \ + --hash=sha256:f521d79d6acda4923b264805541696f452079db0952a5bb96f9ff742f50629ec \ + --hash=sha256:f8669ce37851b597d3435b91fefa51139e58d506ca449ca0e5bb68c63b8b6d2b \ + --hash=sha256:fa75c7970bc6bca340cc6e20f20f069201bfcb50094c31a536fd99724d1d01ca \ + --hash=sha256:ff7aff4637fbf71394df139c63ccfe08a47aa4252d2f91224ddb3335c716c925 +fsspec==2026.7.0 \ + --hash=sha256:b57ddbafedfaef7018c1ecab32aa200a9d7ca26b77965f64e48b70061249d279 \ + --hash=sha256:c803c40f4cf860b49dea58ee3e1c33cb9c790520e233537e1340049f89b82a88 h11==0.16.0 \ --hash=sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1 \ --hash=sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86 humanfriendly==10.0 \ --hash=sha256:1697e1a8a8f550fd43c2865cd84542fc175a61dcb779b6fee18cf6b6ccba1477 \ --hash=sha256:6b0b831ce8f15f7300721aa49829fc4e83921a9a301cc7f606be6686a2288ddc -idna==3.18 \ - --hash=sha256:7f952cbe720b688055e3f87de14f5c3e5fdaa8bc3928985c4077ca689de849a2 \ - --hash=sha256:ffb385a7e039654cef1ab9ef32c6fafe283c0c0467bba1d9029738ce4a14a848 +idna==3.19 \ + --hash=sha256:5e0811a4383b21dc5838069f801c4fb62113b7447663d2530d2bd6e77b49bf15 \ + --hash=sha256:815e7be7a7806d54abb586dc943addc79e8b2ee16915059658cbeff4b1b43bf4 iniconfig==2.3.0 \ --hash=sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730 \ --hash=sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12 jinja2==3.1.6 \ --hash=sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d \ --hash=sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67 -joblib==1.5.3 \ - --hash=sha256:5fc3c5039fc5ca8c0276333a188bbd59d6b7ab37fe6632daa76bc7f9ec18e713 \ - --hash=sha256:8561a3269e6801106863fd0d6d84bb737be9e7631e33aaed3fb9ce5953688da3 -kiwisolver==1.5.0 \ - --hash=sha256:012b1eb16e28718fa782b5e61dc6f2da1f0792ca73bd05d54de6cb9561665fc9 \ - --hash=sha256:01808c6d15f4c3e8559595d6d1fe6411c68e4a3822b4b9972b44473b24f4e679 \ - --hash=sha256:0255a027391d52944eae1dbb5d4cc5903f57092f3674e8e544cdd2622826b3f0 \ - --hash=sha256:0b85aad90cea8ac6797a53b5d5f2e967334fa4d1149f031c4537569972596cb8 \ - --hash=sha256:0bf3acf1419fa93064a4c2189ac0b58e3be7872bf6ee6177b0d4c63dc4cea276 \ - --hash=sha256:0c50b89ffd3e1a911c69a1dd3de7173c0cd10b130f56222e57898683841e4f96 \ - --hash=sha256:0cbe94b69b819209a62cb27bdfa5dc2a8977d8de2f89dfd97ba4f53ed3af754e \ - --hash=sha256:0df54df7e686afa55e6f21fb86195224a6d9beb71d637e8d7920c95cf0f89aac \ - --hash=sha256:0e3aafb33aed7479377e5e9a82e9d4bf87063741fc99fc7ae48b0f16e32bdd6f \ - --hash=sha256:12e91c215a96e39f57989c8912ae761286ac5a9584d04030ceb3368a357f017a \ - --hash=sha256:1465387ac63576c3e125e5337a6892b9e99e0627d52317f3ca79e6930d889d15 \ - --hash=sha256:16b85d37c2cbb3253226d26e64663f755d88a03439a9c47df6246b35defbdfb7 \ - --hash=sha256:1b0feb50971481a2cc44d94e88bdb02cdd497618252ae226b8eb1201b957e368 \ - --hash=sha256:1d49a49ac4cbfb7c1375301cd1ec90169dfeae55ff84710d782260ce77a75a02 \ - --hash=sha256:1d9daea4ea6b9be74fe2f01f7fbade8d6ffab263e781274cffca0dba9be9eec9 \ - --hash=sha256:1dd9b0b119a350976a6d781e7278ec7aca0b201e1a9e2d23d9804afecb6ca681 \ - --hash=sha256:1f1489f769582498610e015a8ef2d36f28f505ab3096d0e16b4858a9ec214f57 \ - --hash=sha256:2517e24d7315eb51c10664cdb865195df38ab74456c677df67bb47f12d088a27 \ - --hash=sha256:295d9ffe712caa9f8a3081de8d32fc60191b4b51c76f02f951fd8407253528f4 \ - --hash=sha256:2a075bd7bd19c70cf67c8badfa36cf7c5d8de3c9ddb8420c51e10d9c50e94920 \ - --hash=sha256:32cc0a5365239a6ea0c6ed461e8838d053b57e397443c0ca894dcc8e388d4374 \ - --hash=sha256:332b4f0145c30b5f5ad9374881133e5aa64320428a57c2c2b61e9d891a51c2f3 \ - --hash=sha256:377815a8616074cabbf3f53354e1d040c35815a134e01d7614b7692e4bf8acfa \ - --hash=sha256:38f4a703656f493b0ad185211ccfca7f0386120f022066b018eb5296d8613e23 \ - --hash=sha256:3ac2360e93cb41be81121755c6462cff3beaa9967188c866e5fce5cf13170859 \ - --hash=sha256:3c4923e404d6bcd91b6779c009542e5647fef32e4a5d75e115e3bbac6f2335eb \ - --hash=sha256:3cdcb35dc9d807259c981a85531048ede628eabcffb3239adf3d17463518992d \ - --hash=sha256:41024ed50e44ab1a60d3fe0a9d15a4ccc9f5f2b1d814ff283c8d01134d5b81bc \ - --hash=sha256:413b820229730d358efd838ecbab79902fe97094565fdc80ddb6b0a18c18a581 \ - --hash=sha256:4432b835675f0ea7414aab3d37d119f7226d24869b7a829caeab49ebda407b0c \ - --hash=sha256:4db576bb8c3ef9365f8b40fe0f671644de6736ae2c27a2c62d7d8a1b4329f099 \ - --hash=sha256:4e7f886f47ab881692f278ae901039a234e4025a68e6dfab514263a0b1c4ae05 \ - --hash=sha256:4e9750bc21b886308024f8a54ccb9a2cc38ac9fa813bf4348434e3d54f337ff9 \ - --hash=sha256:5060731cc3ed12ca3a8b57acd4aeca5bbc2f49216dd0bec1650a1acd89486bcd \ - --hash=sha256:50847dca5d197fcbd389c805aa1a1cf32f25d2e7273dc47ab181a517666b68cc \ - --hash=sha256:5092eb5b1172947f57d6ea7d89b2f29650414e4293c47707eb499ec07a0ac796 \ - --hash=sha256:5124d1ea754509b09e53738ec185584cc609aae4a3b510aaf4ed6aa047ef9303 \ - --hash=sha256:51e8c4084897de9f05898c2c2a39af6318044ae969d46ff7a34ed3f96274adca \ - --hash=sha256:530a3fd64c87cffa844d4b6b9768774763d9caa299e9b75d8eca6a4423b31314 \ - --hash=sha256:56fa888f10d0f367155e76ce849fa1166fc9730d13bd2d65a2aa13b6f5424489 \ - --hash=sha256:58f812017cd2985c21fbffb4864d59174d4903dd66fa23815e74bbc7a0e2dd57 \ - --hash=sha256:59cd8683f575d96df5bb48f6add94afc055012c29e28124fcae2b63661b9efb1 \ - --hash=sha256:5ae8e62c147495b01a0f4765c878e9bfdf843412446a247e28df59936e99e797 \ - --hash=sha256:5b233ea3e165e43e35dba1d2b8ecc21cf070b45b65ae17dd2747d2713d942021 \ - --hash=sha256:6176c1811d9d5a04fa391c490cc44f451e240697a16977f11c6f722efb9041db \ - --hash=sha256:62f59da443c4f4849f73a51a193b1d9d258dcad0c41bc4d1b8fb2bcc04bfeb22 \ - --hash=sha256:6783e069732715ad0c3ce96dbf21dbc2235ab0593f2baf6338101f70371f4028 \ - --hash=sha256:6ab8ba9152203feec73758dad83af9a0bbe05001eb4639e547207c40cfb52083 \ - --hash=sha256:70d593af6a6ca332d1df73d519fddb5148edb15cd90d5f0155e3746a6d4fcc65 \ - --hash=sha256:72ec46b7eba5b395e0a7b63025490d3214c11013f4aacb4f5e8d6c3041829588 \ - --hash=sha256:7a32f72973f0f950c1920475d5c5ea3d971b81b6f0ec53b8d0a956cc965f22e0 \ - --hash=sha256:7a4aa69609f40fce3cbc3f87b2061f042eee32f94b8f11db707b66a26461591a \ - --hash=sha256:7c60d3c9b06fb23bd9c6139281ccbdc384297579ae037f08ae90c69f6845c0b1 \ - --hash=sha256:800ee55980c18545af444d93fdd60c56b580db5cc54867d8cbf8a1dc0829938c \ - --hash=sha256:80aa065ffd378ff784822a6d7c3212f2d5f5e9c3589614b5c228b311fd3063ac \ - --hash=sha256:86e0287879f75621ae85197b0877ed2f8b7aa57b511c7331dce2eb6f4de7d476 \ - --hash=sha256:893ff3a711d1b515ba9da14ee090519bad4610ed1962fbe298a434e8c5f8db53 \ - --hash=sha256:89fc958c702ee9a745e4700378f5d23fddbc46ff89e8fdbf5395c24d5c1452a3 \ - --hash=sha256:8c63c91f95173f9c2a67c7c526b2cea976828a0e7fced9cdcead2802dc10f8a4 \ - --hash=sha256:8df31fe574b8b3993cc61764f40941111b25c2d9fea13d3ce24a49907cd2d615 \ - --hash=sha256:8f9baf6f0a6e7571c45c8863010b45e837c3ee1c2c77fcd6ef423be91b21fedb \ - --hash=sha256:9027d773c4ff81487181a925945743413f6069634d0b122d0b37684ccf4f1e18 \ - --hash=sha256:9190426b7aa26c5229501fa297b8d0653cfd3f5a36f7990c264e157cbf886b3b \ - --hash=sha256:940dda65d5e764406b9fb92761cbf462e4e63f712ab60ed98f70552e496f3bf1 \ - --hash=sha256:94eff26096eb5395136634622515b234ecb6c9979824c1f5004c6e3c3c85ccd2 \ - --hash=sha256:9eed0f7edbb274413b6ee781cca50541c8c0facd3d6fd289779e494340a2b85c \ - --hash=sha256:ad4ae4ffd1ee9cd11357b4c66b612da9888f4f4daf2f36995eda64bd45370cac \ - --hash=sha256:b0f172dc8ffaccb8522d7c5d899de00133f2f1ca7b0a49b7da98e901de87bf2d \ - --hash=sha256:b2af221f268f5af85e776a73d62b0845fc8baf8ef0abfae79d29c77d0e776aaf \ - --hash=sha256:b7d335370ae48a780c6e6a6bbfa97342f563744c39c35562f3f367665f5c1de2 \ - --hash=sha256:b83af57bdddef03c01a9138034c6ff03181a3028d9a1003b301eb1a55e161a3f \ - --hash=sha256:bb5136fb5352d3f422df33f0c879a1b0c204004324150cc3b5e3c4f310c9049f \ - --hash=sha256:bc4d8e252f532ab46a1de9349e2d27b91fce46736a9eedaa37beaca66f574ed4 \ - --hash=sha256:bdd3e53429ff02aa319ba59dfe4ceeec345bf46cf180ec2cf6fd5b942e7975e9 \ - --hash=sha256:be12f931839a3bdfe28b584db0e640a65a8bcbc24560ae3fdb025a449b3d754e \ - --hash=sha256:be4a51a55833dc29ab5d7503e7bcb3b3af3402d266018137127450005cdfe737 \ - --hash=sha256:beb7f344487cdcb9e1efe4b7a29681b74d34c08f0043a327a74da852a6749e7b \ - --hash=sha256:bf4679a3d71012a7c2bf360e5cd878fbd5e4fcac0896b56393dec239d81529ed \ - --hash=sha256:c0e1403fd7c26d77c1f03e096dc58a5c726503fa0db0456678b8668f76f521e3 \ - --hash=sha256:c31c13da98624f957b0fb1b5bae5383b2333c2c3f6793d9825dd5ce79b525cb7 \ - --hash=sha256:c438f6ca858697c9ab67eb28246c92508af972e114cac34e57a6d4ba17a3ac08 \ - --hash=sha256:c8277104ded0a51e699c8c3aff63ce2c56d4ed5519a5f73e0fd7057f959a2b9e \ - --hash=sha256:c95cab08d1965db3d84a121f1c7ce7479bdd4072c9b3dafd8fecce48a2e6b902 \ - --hash=sha256:cc0b66c1eec9021353a4b4483afb12dfd50e3669ffbb9152d6842eb34c7e29fd \ - --hash=sha256:cdee07c4d7f6d72008d3f73b9bf027f4e11550224c7c50d8df1ae4a37c1402a6 \ - --hash=sha256:ce9bf03dad3b46408c08649c6fbd6ca28a9fce0eb32fdfffa6775a13103b5310 \ - --hash=sha256:cff8e5383db4989311f99e814feeb90c4723eb4edca425b9d5d9c3fefcdd9537 \ - --hash=sha256:d168fda2dbff7b9b5f38e693182d792a938c31db4dac3a80a4888de603c99554 \ - --hash=sha256:d1ffeb80b5676463d7a7d56acbe8e37a20ce725570e09549fe738e02ca6b7e1e \ - --hash=sha256:d36ca54cb4c6c4686f7cbb7b817f66f5911c12ddb519450bbe86707155028f87 \ - --hash=sha256:d4193f3d9dc3f6f79aaed0e5637f45d98850ebf01f7ca20e69457f3e8946b66a \ - --hash=sha256:d5cd5189fc2b6a538b75ae45433140c4823463918f7b1617c31e68b085c0022c \ - --hash=sha256:d618fd27420381a4f6044faa71f46d8bfd911bd077c555f7138ed88729bfbe79 \ - --hash=sha256:d76e2d8c75051d58177e762164d2e9ab92886534e3a12e795f103524f221dd8e \ - --hash=sha256:daae526907e262de627d8f70058a0f64acc9e2641c164c99c8f594b34a799a16 \ - --hash=sha256:db485b3847d182b908b483b2ed133c66d88d49cacf98fd278fadafe11b4478d1 \ - --hash=sha256:dd952e03bfbb096cfe2dd35cd9e00f269969b67536cb4370994afc20ff2d0875 \ - --hash=sha256:dda366d548e89a90d88a86c692377d18d8bd64b39c1fb2b92cb31370e2896bbd \ - --hash=sha256:e315e5ec90d88e140f57696ff85b484ff68bb311e36f2c414aa4286293e6dee0 \ - --hash=sha256:e4415a8db000bf49a6dd1c478bf70062eaacff0f462b92b0ba68791a905861f9 \ - --hash=sha256:e7a116ae737f0000343218c4edf5bd45893bfeaff0993c0b215d7124c9f77646 \ - --hash=sha256:e7c4c09a490dc4d4a7f8cbee56c606a320f9dc28cf92a7157a39d1ce7676a657 \ - --hash=sha256:ebae99ed6764f2b5771c522477b311be313e8841d2e0376db2b10922daebbba4 \ - --hash=sha256:ec4c85dc4b687c7f7f15f553ff26a98bfe8c58f5f7f0ac8905f0ba4c7be60232 \ - --hash=sha256:ed3a984b31da7481b103f68776f7128a89ef26ed40f4dc41a2223cda7fb24819 \ - --hash=sha256:f18c2d9782259a6dc132fdc7a63c168cbc74b35284b6d75c673958982a378384 \ - --hash=sha256:f1f9f4121ec58628c96baa3de1a55a4e3a333c5102c8e94b64e23bf7b2083309 \ - --hash=sha256:f42c23db5d1521218a3276bb08666dcb662896a0be7347cba864eca45ff64ede \ - --hash=sha256:f443b4825c50a51ee68585522ab4a1d1257fac65896f282b4c6763337ac9f5d2 \ - --hash=sha256:f6764a4ccab3078db14a632420930f6186058750df066b8ea2a7106df91d3203 \ - --hash=sha256:f7c7553b13f69c1b29a5bde08ddc6d9d0c8bfb84f9ed01c30db25944aeb852a7 \ - --hash=sha256:fa6248cd194edff41d7ea9425ced8ca3a6f838bfb295f6f1d6e6bb694a8518df \ - --hash=sha256:fa8eb9ecdb7efb0b226acec134e0d709e87a909fa4971a54c0c4f6e88635484c \ - --hash=sha256:fc20894c3d21194d8041a28b65622d5b86db786da6e3cfe73f0c762951a61167 \ - --hash=sha256:fc4d3f1fb9ca0ae9f97b095963bc6326f1dbfd3779d6679a1e016b9baaa153d3 \ - --hash=sha256:fd40bb9cd0891c4c3cb1ddf83f8bbfa15731a248fdc8162669405451e2724b09 \ - --hash=sha256:ff710414307fefa903e0d9bdf300972f892c23477829f49504e59834f4195398 -lazy-loader==0.5 \ - --hash=sha256:717f9179a0dbed357012ddad50a5ad3d5e4d9a0b8712680d4e687f5e6e6ed9b3 \ - --hash=sha256:ab0ea149e9c554d4ffeeb21105ac60bed7f3b4fd69b1d2360a4add51b170b005 -markdown-it-py==4.0.0 \ - --hash=sha256:87327c59b172c5011896038353a81343b6754500a08cd7a4973bb48c6d578147 \ - --hash=sha256:cb0a2b4aa34f932c007117b194e945bd74e0ec24133ceb5bac59009cda1cb9f3 +joblib==1.6.0 \ + --hash=sha256:2ccc96785b12046c08fd6d55839c12857831b54a3c1673ffadd2f04bfc4eda03 \ + --hash=sha256:3dbbf9f6e4b592a2357b854608e980fe6390d131d7a82f011a377ef2ebef7aba +kiwisolver==1.5.1 \ + --hash=sha256:007a5553dfc4f4e8d184f588a0200e2cd4b63a59cc8796df3c39909e679dc7a0 \ + --hash=sha256:0324cd2567259b7a095f6cf18a52b0ffc6f3de9e69528ff1bc0e7a37bd43ff1a \ + --hash=sha256:0627b9bceb9c3cdcf12b8a18655eedfed2692b038df27423383c120d0b7dc2d6 \ + --hash=sha256:06a6917674de9e0fe3f66f5430787f59a9f2ddb64af9b714eaec547e29ef5c19 \ + --hash=sha256:072bdb15a3c19a5b5dbc8f8fb1f4e1884bf4f3507eeb4cc6334401274d37a5c0 \ + --hash=sha256:0a4faea5c6db201c6a21391d2ac926ea97acf7dacdbc3c417189e1adb1a00837 \ + --hash=sha256:0ba9527afc80ae3d7814ed98b6572d02bf85eaf48065678342c5f0c6dab7a8c7 \ + --hash=sha256:0d8924877ce22e17326a99a418c3c82037da078df3c6a260b13eca677444e6e7 \ + --hash=sha256:0ebdef3eae5336568147c39a55be6a2036ffde53faa9ca2d978989ae7c2da12c \ + --hash=sha256:1209042a623ddfda5497e4066c7b77651dde8e1d3a9dd97599dc7e97f3b9b78c \ + --hash=sha256:16895f553ee6620a827d2da56b871f835fb70b9216cca5d188e885caf6e3bd23 \ + --hash=sha256:17851e5dad4484be0cbccbde3b15331deae036de9aebd45eed964487802b172f \ + --hash=sha256:1798e83840c3f627246104c4d8a9639c60fa068adf9ce92b61791781fa8a68c1 \ + --hash=sha256:18170a77ddfecf40ec60d0928268dc95880c881864e015a8f34094ed18b9b9ad \ + --hash=sha256:186884a58486651e3c217b6acea0a53eaa9498fdd472057c46f2f0fb5c25aad5 \ + --hash=sha256:18a0cfb124546a4c2e6087c5f3029c7f44b37c85b142e0ced71f73a7599ac208 \ + --hash=sha256:1983f0974a750a6f6556f368ba11105d1d8369c735b944747c9f12ae5aea7aae \ + --hash=sha256:1a7587dc335f2c0f5bd577fd0540bd16c66006bdb60f759a1059f025e6c4f071 \ + --hash=sha256:1acc7e5b7ef05e9da8bb70cd6c7c4513090213d2e1ad9720f599f0bf6c52aec5 \ + --hash=sha256:1d852545c4d0e35a72728d072cbaa59e2fa7dd84bdf01e068d670dd0ceb58eb6 \ + --hash=sha256:1ed0f5e49d0ceff8b72190824d9e59c062fbbc02c231b853112c78474b3f5ec2 \ + --hash=sha256:1fff05e239575b1481b6ed1a782f6fad616efbf1f0b1f44e6e85c4dfe426e483 \ + --hash=sha256:21e46b23a2da695c364124817bc01d970effd5483147f8d66a6a7167e3f6b851 \ + --hash=sha256:22d5e5aaad6be121f2515765e3b1c444352cb8eb4c86510801db8f2e50757316 \ + --hash=sha256:2551cf9917af48ee7c4b29cc82320489508cf96fd26a51f6fc124de661cd44c7 \ + --hash=sha256:255605693a483db7bd5c79f60437f7bf658f7f520d61aa42722e32257c941951 \ + --hash=sha256:26e8268480be5061d509e29669d59103c067a26377a56491630ece11762e3858 \ + --hash=sha256:27add358abe374ebaa3b8763ef380bc99051b5a4b18d94878366a9e4f59efef0 \ + --hash=sha256:2ae70bc59790d2af72a3f76f24b272403e135070340281108b447cb77ea70819 \ + --hash=sha256:2e10ae1bba1899188b33557c10d73affcc12033edd18adddb57d209039976a4c \ + --hash=sha256:3221f78211074f561c44ca42eac0619828171bec15a2c4cf6f7747d07df76e8e \ + --hash=sha256:34633ecf50d16187ab8e5528b7a2530f2feb4e23f300db4672538b51cfc5cd38 \ + --hash=sha256:34ec467940442c9943016fb2d4c81d1ba84351eeca2f1a78f8bc87f1ba0d414c \ + --hash=sha256:37f801b5d7cc0e5a548921308e059fd2b057bb42972b591cfa3049f95423c4ed \ + --hash=sha256:38f6e0deb4d0a4615efe0c4efc5990b06ae450ab50a0b321c0b078b6d238c083 \ + --hash=sha256:3c24cd69455e1b00ddf770c13b6e2c33e07d6dc3f2d34add0bf9277c5c6bbd46 \ + --hash=sha256:3cc210010fd2f438a3ed430b45f1b501fd13a8618bf984dc2c5ce5b69b78752e \ + --hash=sha256:3fa5855898f6d3d01b72ccd48a2d65cbdee301251603fefe34e2025bddba219c \ + --hash=sha256:416ba7ff9f233b7036689bb5a3783537e838ad483f63558d2a800f75afe738b1 \ + --hash=sha256:431dc224a1a92a5c8f582d96e505196a3b5997a7271076678da2dfde67b77e9a \ + --hash=sha256:43844c1a7ad6d723d5b5b4c4fc7f5bd399c40e288120d16257c7c9e8765c6e85 \ + --hash=sha256:44b8faef94f1857e77fa0238f3390ff1ac51d2ea20a487e2e452a59fd2b5f5ca \ + --hash=sha256:470d420f98d368d6f010633a20659b544c5fdfa5329e6b70219f2ef08fd4a7ef \ + --hash=sha256:482676e5bd48d70ac99d9fc78863469845421e01184fa83f1f9366dc49f7e974 \ + --hash=sha256:4d4ca09bf13cff792b1884f64b98ee6c2467930d632233be25c56b442d99f10e \ + --hash=sha256:5025e36fb4fb275cef0a4e30dbb11cb4ae61d1c83deb90189cb5d7e4cafd6b55 \ + --hash=sha256:509735237ae0d849e8a843551d423d2500d2e0a9ac1611a145658b29c0fb9f85 \ + --hash=sha256:534f02c1abb31ed6dbd3515545285c330b2f12d00fdb1fdb71658b9ca5a13a6a \ + --hash=sha256:5978c3340f16a35c30f8ab2fa7bcf559973c55f1a5ef6970e1f621acf3c4db13 \ + --hash=sha256:5b973887ff782cfd6b67c9904ad8ca542e0bc5e4961503408b423b5a688b4d38 \ + --hash=sha256:5c490db2168a508088f59140dd392556a54b8bd1048fc6383c8baff13c359673 \ + --hash=sha256:5d142e352eb13facc7dd047489aebdff6ba78576c239f1ea04931979caaf0567 \ + --hash=sha256:5daa1f19e097050b9c4d9a78fcc9263cb96c9dfae08037ddc1b7c4ad1889f2a2 \ + --hash=sha256:61e9a64c7635095a6bfe483e2ff055d437c59bd45f3617a228b37277f0185d62 \ + --hash=sha256:63fb7294b768f444eb4b068965f2662f28c2fd4161e23bd60fcf3ff27b74c046 \ + --hash=sha256:685929988b208a911f1285e2f8ed54210b0d681a3dc0f03e00d599d291986e7e \ + --hash=sha256:6a797a1cefc8b9c93170db580337e1fe3d011ad18b1299943231279406342048 \ + --hash=sha256:6b92f60017dda7d877fdc546438b5e28f31c523264f49cf5a48c1d0ce1a0dfbc \ + --hash=sha256:70ed9a45c7484d2b30cdacf60d220f494a1763b9fec1ad03285c6553fa0889f2 \ + --hash=sha256:719a35fa1156db3640555f95ebb94f60a444e64d1c69626b0edef5df78eba225 \ + --hash=sha256:74ad5c3dad54a4641b4c28cd15ded70899d04459c6c7aeacafea716be97cce6d \ + --hash=sha256:74ea337e0ec3f6f342a36a4f1b5cd94dd9affddcd28ba9aae2905af932ee8c6b \ + --hash=sha256:75d9b1cf8258462dbdc1eeda718c96ea7f079324c09067f6daabfcf37712b7fe \ + --hash=sha256:77a4c8187a5948d7f8795adb765a3c7b553d07d86d88e43038fc32fc1fb9a3f3 \ + --hash=sha256:7824b5e8bdbf0bccb4ccd37bbb115849a1dc45437fb4de8351385ed07c437ee0 \ + --hash=sha256:7d38b0c279c3032e8c9cc013b405c6df8e1668dbf15465779aa7f15f61201812 \ + --hash=sha256:7e9c01d3dd7ceba4d1d436cc021d40d592466e40b9bc7f5d83dc4e98a5c9cd8c \ + --hash=sha256:7fd82debf43c6acd0a94359d232f6bb516ee13f269a7993736a9ac9f988bb5d9 \ + --hash=sha256:824c3d763a05ea9e9003610145186b0e9848c7584a5575c79bac5a8e7cd80bad \ + --hash=sha256:828f75af2b0080c8a972e75f649ab46af008e92c6104a57a759157200b835b75 \ + --hash=sha256:83f78128fa28705fa85d01c59771c72fe81c11bd0e6155edbb9f818983a7d761 \ + --hash=sha256:876bbfd276473d3daffe30e8c975df4ed9429967b41a6cb362dbb5155b6f13ad \ + --hash=sha256:886fc26012f0e8b5f69d1cfe6d711f6b11f194621539bf8e6bb1c25c5dc82724 \ + --hash=sha256:8a34616dc2521cc8dc1d7d081734da63539f021ac0450ce950908340c6e7aa2f \ + --hash=sha256:8a708a47ade1fe19e8371d5da076bac0dd4b0a5a7985ad6c637f7f7e361b6baa \ + --hash=sha256:8af9b142ad719ae3a911ebf616bc4b78b32bbab84d6a40d3ad2f129670509957 \ + --hash=sha256:8bf4df63592c2a66b4f8edc5df2544998c288aa02f96ce0acd880cd1de8c8127 \ + --hash=sha256:8de6f2a4ce7e7bd27d23dd94abf0ccafe0e0e5cc9c764b0577191f2c25f08f26 \ + --hash=sha256:8f8fddb8e323bd6eee4e54e69a39243beab22689070f4c66b472c4cc88bb89d8 \ + --hash=sha256:8fca690b00c4c48f6c2a547b0160ed511357093a4e4c9b47e0fadf3128066d89 \ + --hash=sha256:9506e892bcc3b409831d363c6f53e5985e1c8d1f6f6b0256d00358684ff85378 \ + --hash=sha256:958254518717542d02d0688d0d20cbf771da5e415e6f49543f92481c850a4540 \ + --hash=sha256:95a02752aa032eef4aed01cda6d9b687c669bd0396bf4519eef8bba22a286720 \ + --hash=sha256:96c30002424670b5e1e46495c2b8cbffef39cf77c1d79e76462029d50339785b \ + --hash=sha256:98b208a7cc42c803445ef551d6753cc42a5ea13e9cab1ee66cd8b9cb70195330 \ + --hash=sha256:9b3092d8992a1d69b7a59c3e39f35e1b9be327a17f68a7c35fc17329e337d6f2 \ + --hash=sha256:9e51c119992ea8820706871c30a4642ec76de20ae82f9b50b9a45517d8e9f810 \ + --hash=sha256:a5716a33bfabb2c6ce27b6cf03253467b3804f83e215f4d202685cf93c6c9874 \ + --hash=sha256:a5a00665d1a0e26763a7338d7e911d4598fbc1d50dd0d6b7919b7dc6c5d6569f \ + --hash=sha256:a5ca5aebae78a0bc13c1943af4af615d4966c5b650b05d5aa83b50e427196fee \ + --hash=sha256:a7b85b2cc6ea45e5f7e8c9a30bc9fabd47cda09106cbb4b967335c3e6c43b69d \ + --hash=sha256:a83ee7107df13abe42a54a6654670eef9bb39425cf2e27f65e0007465e1286ab \ + --hash=sha256:aa7d00b1700966d2917e54d278aba86897890ca9276dd8b76cf6446b6c181b92 \ + --hash=sha256:ab620eb663952455271ac37f9aaad86b73c969c02f11f53cea405b38e96a4300 \ + --hash=sha256:ad8b9671348d7c8716715652ae11f85ed0eb99e265a2df2ca490577d69860b2c \ + --hash=sha256:aefe930d113798330e9462f7874542977869c0613cba3262e2de3a8d5dee8f3a \ + --hash=sha256:b03af77d77e50edba2030fd5f7c352ff209314b09030a3cba7c14edf9a09a444 \ + --hash=sha256:b390aec180a7c054919c04898835e1c77bced23ea8383eb2c570213bf25d1a86 \ + --hash=sha256:b3d78f7bb2b9d9a30345be1474b9aaa8685430b54afb51ba3639b5c6c11e9ed6 \ + --hash=sha256:b5664603a253efd3a75716d793d1d3a6a82723b61dc6db767b2460bbbeec4c0f \ + --hash=sha256:b69602970994a2ed8bbfa78c2f0394a7435226c6040489702d9f0a0ad0c07052 \ + --hash=sha256:b6ae6a0328f0bc035741820fdeecdcd67bf4694eee03972e843663107122f450 \ + --hash=sha256:bad20d4c69c851c982a1e3606f4c293edfd5a87885786c50082412240c4b1ffd \ + --hash=sha256:bb7c99f0673c03017a3ee01e54a5c2617a05468b11eabe513b0080e063ed95b1 \ + --hash=sha256:bebb89489b279b2f5661bbbb2abcc87bcd4a46607bb4a5c966f04f1db6b8df9a \ + --hash=sha256:bfd1de989b3330420e29de39352f5c049905c9e3ee67233a50d550e3d652c148 \ + --hash=sha256:c2306e8bb53601979fcb3fa09cc65e031876d9ae01eff2fcbcd7a84ef94d5bc1 \ + --hash=sha256:c3a4e41e3096bf1f0f1b76e2ffd6d828d6547f574f702d59bdbef7acfa59db9c \ + --hash=sha256:c6834b92dd2428e2dd85ef3d85f723d3c12f20aaf43a2ddd4f944ca25d833408 \ + --hash=sha256:c90d3022d8a94778939cda8638c6c8da8fa757b8958dad7ec868ce29c87681b8 \ + --hash=sha256:ca307d6c259e5c98d3cb9ade55342b47a6839762caf2536f3d7b46ee660cc82e \ + --hash=sha256:ca7f6fe0f37ca978a1e5eb7a3a68e6413f417e78e838324947ffd420202b198b \ + --hash=sha256:cb6fae641357ed2f6e533c0d3c6504a4a5703621a50c89459e46051d56b61140 \ + --hash=sha256:cdaeeb6c350106df6bf9d873395973e5f066a9713200b72cd64f55d0a3eafab6 \ + --hash=sha256:cea20da04494e662b83c872683bf4ff2345206043d036315ed0e924b652e7294 \ + --hash=sha256:cea90547bfd93807e0013a004dc76552be44fad3bc1cc2b38610a9e889ed098f \ + --hash=sha256:d09037ca068d784ebc4aec290ef952ca27ac15dd9c0b5801a88c6e1096b83e6b \ + --hash=sha256:d27c2123977cb9269c30a49ba45f03a4323017ef693e19db4ec9dbe1299a3002 \ + --hash=sha256:d50de98e8d807dc31822fff96f50293163a62418eb65487a21b42713d72ed0b7 \ + --hash=sha256:d66a64dd5dec136040ec2ae94aa026a912ee60fdd45bc28d3db30037fd809e88 \ + --hash=sha256:d79308fa689fac89cbcfbd4dbfc80b5f95c54c5a7fd4d194be221f9d33d026e6 \ + --hash=sha256:da3275833be0edbaf4830fae08bae3dc7219f40ce0c37eaa6c25825957e06612 \ + --hash=sha256:dc1a26b8e53395a01c2c611e58602fa47461f136fba7cd5542e6db6d64be1839 \ + --hash=sha256:dc23390afe9f4ef9ac3bcc72a03a56eebbde03f4c571a32cb38f859cff9a6524 \ + --hash=sha256:e05c2f7925f1d88778e53cb44f14e0223204a3bdd09a41664750363acfb1f2ef \ + --hash=sha256:e12dfea7f5fc2a34a9080efbf79c4c44eb380ec5b9c6fea09407e08f0d1e941d \ + --hash=sha256:e4e4523d6f336708d732516e6cfca7796cf3d96c9474eb5aecf6165f2f1fefc3 \ + --hash=sha256:e4e49f7e1a4e7191bdf9dc67a974db714501b1fc52c24324103d06a86abd5c08 \ + --hash=sha256:e68e151428b5384f766cd25739bf77c7e4a3dc93b5ded7a12118d9fbfdf78ab6 \ + --hash=sha256:e8e4d953faaded9ec7ede36824e9814082d22d4c7b1eafbfa079ecba8cd0d076 \ + --hash=sha256:ee9df1f0d77b9c6e94f4ac0fec533fbddd5ea3a327807f18d7b069ae019ded80 \ + --hash=sha256:f0a887b6565bbfe80efde2b7f6e8890d7d9bbdb11bdb17028a3690c32fe0621f \ + --hash=sha256:f0f4a42db92d6ec7677ab9d12830a2a8ec145a9c6d15db2b593466bc875c78d7 \ + --hash=sha256:f1303ef2eec81262a4b708c3e858afe58d7c75ad91c1c05266eda7673369859a \ + --hash=sha256:f1d56ec54d257d05e0b50f5780d967540cd07beeaf9e5f645b26d50cce79f4d8 \ + --hash=sha256:f4167e87b397f273dc2356fcf1eaf50a6bac51e6105f45103ef7129c8efb0255 \ + --hash=sha256:f76fc85bd054c806960f917ec0f329e24e436f1712267d90588e4c39890caa63 \ + --hash=sha256:f942903fde7363d1d879057ec5de01310efda2597161784d752fa9953a01a71a \ + --hash=sha256:f9b1c4900736e489a812c529100de4b8fb617d4db075e931e213c57424b83d9b \ + --hash=sha256:fc271a6f0a2126958f4090e5507b9da5848927dae331f8f763bd4aa642b3d2cd \ + --hash=sha256:febcce10f2bcdbb80b4ea919238a6a4ac13dbc4c7cadbe8d5d75c3682f8b5404 +markdown-it-py==4.2.0 \ + --hash=sha256:04a21681d6fbb623de53f6f364d352309d4094dd4194040a10fd51833e418d49 \ + --hash=sha256:9f7ebbcd14fe59494226453aed97c1070d83f8d24b6fc3a3bcf9a38092641c4a markupsafe==3.0.3 \ --hash=sha256:0303439a41979d9e74d18ff5e2dd8c43ed6c6001fd40e5bf2e43f7bd9bbc523f \ --hash=sha256:068f375c472b3e7acbe2d5318dea141359e6900156b5b2ba06a30b169086b91a \ @@ -652,62 +739,62 @@ markupsafe==3.0.3 \ --hash=sha256:f71a396b3bf33ecaa1626c255855702aca4d3d9fea5e051b41ac59a9c1c41edc \ --hash=sha256:f9e130248f4462aaa8e2552d547f36ddadbeaa573879158d721bbd33dfe4743a \ --hash=sha256:fed51ac40f757d41b7c48425901843666a6677e3e8eb0abcff09e4ba6e664f50 -matplotlib==3.10.8 \ - --hash=sha256:00270d217d6b20d14b584c521f810d60c5c78406dc289859776550df837dcda7 \ - --hash=sha256:0a33deb84c15ede243aead39f77e990469fff93ad1521163305095b77b72ce4a \ - --hash=sha256:113bb52413ea508ce954a02c10ffd0d565f9c3bc7f2eddc27dfe1731e71c7b5f \ - --hash=sha256:12d90df9183093fcd479f4172ac26b322b1248b15729cb57f42f71f24c7e37a3 \ - --hash=sha256:15d30132718972c2c074cd14638c7f4592bd98719e2308bccea40e0538bc0cb5 \ - --hash=sha256:18821ace09c763ec93aef5eeff087ee493a24051936d7b9ebcad9662f66501f9 \ - --hash=sha256:1ae029229a57cd1e8fe542485f27e7ca7b23aa9e8944ddb4985d0bc444f1eca2 \ - --hash=sha256:2299372c19d56bcd35cf05a2738308758d32b9eaed2371898d8f5bd33f084aa3 \ - --hash=sha256:238b7ce5717600615c895050239ec955d91f321c209dd110db988500558e70d6 \ - --hash=sha256:24d50994d8c5816ddc35411e50a86ab05f575e2530c02752e02538122613371f \ - --hash=sha256:25d380fe8b1dc32cf8f0b1b448470a77afb195438bafdf1d858bfb876f3edf7b \ - --hash=sha256:2c1998e92cd5999e295a731bcb2911c75f597d937341f3030cc24ef2733d78a8 \ - --hash=sha256:2cf5bd12cecf46908f286d7838b2abc6c91cda506c0445b8223a7c19a00df008 \ - --hash=sha256:32f8dce744be5569bebe789e46727946041199030db8aeb2954d26013a0eb26b \ - --hash=sha256:37b3c1cc42aa184b3f738cfa18c1c1d72fd496d85467a6cf7b807936d39aa656 \ - --hash=sha256:3a48a78d2786784cc2413e57397981fb45c79e968d99656706018d6e62e57958 \ - --hash=sha256:3ab4aabc72de4ff77b3ec33a6d78a68227bf1123465887f9905ba79184a1cc04 \ - --hash=sha256:3c624e43ed56313651bc18a47f838b60d7b8032ed348911c54906b130b20071b \ - --hash=sha256:3f2e409836d7f5ac2f1c013110a4d50b9f7edc26328c108915f9075d7d7a91b6 \ - --hash=sha256:3f5c3e4da343bba819f0234186b9004faba952cc420fbc522dc4e103c1985908 \ - --hash=sha256:41703cc95688f2516b480f7f339d8851a6035f18e100ee6a32bc0b8536a12a9c \ - --hash=sha256:495672de149445ec1b772ff2c9ede9b769e3cb4f0d0aa7fa730d7f59e2d4e1c1 \ - --hash=sha256:4cf267add95b1c88300d96ca837833d4112756045364f5c734a2276038dae27d \ - --hash=sha256:56271f3dac49a88d7fca5060f004d9d22b865f743a12a23b1e937a0be4818ee1 \ - --hash=sha256:595ba4d8fe983b88f0eec8c26a241e16d6376fe1979086232f481f8f3f67494c \ - --hash=sha256:5f62550b9a30afde8c1c3ae450e5eb547d579dd69b25c2fc7a1c67f934c1717a \ - --hash=sha256:646d95230efb9ca614a7a594d4fcacde0ac61d25e37dd51710b36477594963ce \ - --hash=sha256:64fcc24778ca0404ce0cb7b6b77ae1f4c7231cdd60e6778f999ee05cbd581b9a \ - --hash=sha256:6be43b667360fef5c754dda5d25a32e6307a03c204f3c0fc5468b78fa87b4160 \ - --hash=sha256:6da7c2ce169267d0d066adcf63758f0604aa6c3eebf67458930f9d9b79ad1db1 \ - --hash=sha256:83d282364ea9f3e52363da262ce32a09dfe241e4080dcedda3c0db059d3c1f11 \ - --hash=sha256:9153c3292705be9f9c64498a8872118540c3f4123d1a1c840172edf262c8be4a \ - --hash=sha256:99eefd13c0dc3b3c1b4d561c1169e65fe47aab7b8158754d7c084088e2329466 \ - --hash=sha256:a0a7f52498f72f13d4a25ea70f35f4cb60642b466cbb0a9be951b5bc3f45a486 \ - --hash=sha256:a2b336e2d91a3d7006864e0990c83b216fcdca64b5a6484912902cef87313d78 \ - --hash=sha256:a48f2b74020919552ea25d222d5cc6af9ca3f4eb43a93e14d068457f545c2a17 \ - --hash=sha256:ad3d9833a64cf48cc4300f2b406c3d0f4f4724a91c0bd5640678a6ba7c102077 \ - --hash=sha256:b44d07310e404ba95f8c25aa5536f154c0a8ec473303535949e52eb71d0a1565 \ - --hash=sha256:b53285e65d4fa4c86399979e956235deb900be5baa7fc1218ea67fbfaeaadd6f \ - --hash=sha256:b5a2b97dbdc7d4f353ebf343744f1d1f1cca8aa8bfddb4262fcf4306c3761d50 \ - --hash=sha256:b9a5ca4ac220a0cdd1ba6bcba3608547117d30468fefce49bb26f55c1a3d5c58 \ - --hash=sha256:bab485bcf8b1c7d2060b4fcb6fc368a9e6f4cd754c9c2fea281f4be21df394a2 \ - --hash=sha256:c108a1d6fa78a50646029cb6d49808ff0fc1330fda87fa6f6250c6b5369b6645 \ - --hash=sha256:d56a1efd5bfd61486c8bc968fa18734464556f0fb8e51690f4ac25d85cbbbbc2 \ - --hash=sha256:d9050fee89a89ed57b4fb2c1bfac9a3d0c57a0d55aed95949eedbc42070fea39 \ - --hash=sha256:dd80ecb295460a5d9d260df63c43f4afbdd832d725a531f008dad1664f458adf \ - --hash=sha256:e8ea3e2d4066083e264e75c829078f9e149fa119d27e19acd503de65e0b13149 \ - --hash=sha256:eb3823f11823deade26ce3b9f40dcb4a213da7a670013929f31d5f5ed1055b22 \ - --hash=sha256:ee40c27c795bda6a5292e9cff9890189d32f7e3a0bf04e0e3c9430c4a00c37df \ - --hash=sha256:efb30e3baaea72ce5928e32bab719ab4770099079d66726a62b11b1ef7273be4 \ - --hash=sha256:f254d118d14a7f99d616271d6c3c27922c092dac11112670b157798b89bf4933 \ - --hash=sha256:f89c151aab2e2e23cb3fe0acad1e8b82841fd265379c4cecd0f3fcb34c15e0f6 \ - --hash=sha256:f97aeb209c3d2511443f8797e3e5a569aebb040d4f8bc79aa3ee78a8fb9e3dd8 \ - --hash=sha256:f9b587c9c7274c1613a30afabf65a272114cd6cdbe67b3406f818c79d7ab2e2a \ - --hash=sha256:fb061f596dad3a0f52b60dc6a5dec4a0c300dec41e058a7efe09256188d170b7 +matplotlib==3.10.9 \ + --hash=sha256:09218df8a93712bd6ea133e83a153c755448cf7868316c531cffcc43f69d1cc9 \ + --hash=sha256:10cc5ce06d10231c36f40e875f3c7e8050362a4ee8f0ee5d29a6b3277d57bb42 \ + --hash=sha256:172db52c9e683f5d12eaf57f0f54834190e12581fe1cc2a19595a8f5acb4e77d \ + --hash=sha256:1872fb212a05b729e649754a72d5da61d03e0554d76e80303b6f83d1d2c0552b \ + --hash=sha256:1aa972116abb4c9d201bf245620b433726cb6856f3bef6a78f776a00f5c92d37 \ + --hash=sha256:1e7698ac9868428e84d2c967424803b2472ff7167d9d6590d4204ed775343c3b \ + --hash=sha256:2dc9477819ffd78ad12a20df1d9d6a6bd4fec6aaa9072681465fddca052f1456 \ + --hash=sha256:3225f4e1edcb8c86c884ddf79ebe20ecd0a67d30188f279897554ccd8fded4dc \ + --hash=sha256:336b9acc64d309063126edcdaca00db9373af3c476bb94388fe9c5a53ad13e6f \ + --hash=sha256:345f6f68ecc8da0ca56fad2ea08fde1a115eda530079eca185d50a7bc3e146c6 \ + --hash=sha256:34cf8167e023ad956c15f36302911d5406bd99a9862c1a8499ea6f7c0e015dc2 \ + --hash=sha256:3fc0364dfbe1d07f6d15c5ebd0c5bf89e126916e5a8667dd4a7a6e84c36653d4 \ + --hash=sha256:41cb28c2bd769aa3e98322c6ab09854cbcc52ab69d2759d681bba3e327b2b320 \ + --hash=sha256:42fb814efabe95c06c1994d8ab5a8385f43a249e23badd3ba931d4308e5bca20 \ + --hash=sha256:4e42042d54db34fda4e95a7bd3e5789c2a995d2dad3eb8850232ee534092fbbf \ + --hash=sha256:4edcfbd8565339aa62f1cd4012f7180926fdbe71850f7b0d3c379c175cd6b66c \ + --hash=sha256:51bf0ddbdc598e060d46c16b5590708f81a1624cefbaaf62f6a81bf9285b8c80 \ + --hash=sha256:56fc0bd271b00025c6edfdc7c2dcd247372c8e1544971d62e1dc7c17367e8bf9 \ + --hash=sha256:59476c6d29d612b8e9bb6ce8c5b631be6ba8f9e3a2421f22a02b192c7dd28716 \ + --hash=sha256:6640f75af2c6148293caa0a2b39dd806a492dd66c8a8b04035813e33d0fd2585 \ + --hash=sha256:68cfdcede415f7c8f5577b03303dd94526cdb6d11036cecdc205e08733b2d2bb \ + --hash=sha256:6b63d9c7c769b88ab81e10dc86e4e0607cf56817b9f9e6cf24b2a5f1693b8e38 \ + --hash=sha256:6be157fe17fc37cb95ac1d7374cf717ce9259616edec911a78d9d26dae8522d4 \ + --hash=sha256:6c63ebcd8b4b169eb2f5c200552ae6b8be8999a005b6b507ed76fb8d7d674fe2 \ + --hash=sha256:77210dce9cb8153dffc967efaae990543392563d5a376d4dd8539bebcb0ed217 \ + --hash=sha256:7a8d66a55def891c33147ba3ba9bfcabf0b526a43764c818acbb4525e5ed0838 \ + --hash=sha256:82368699727bfb7b0182e1aa13082e3c08e092fa1a25d3e1fd92405bff96f6d4 \ + --hash=sha256:82834c3c292d24d3a8aae77cd2d20019de69d692a34a970e4fdb8d33e2ea3dda \ + --hash=sha256:8e436d155fa8a3399dc62683f8f5d0e2e50d25d0144a73edd73f82eec8f4abfb \ + --hash=sha256:8f3bcac1ca5ed000a6f4337d47ba67dfddf37ed6a46c15fd7f014997f7bf865f \ + --hash=sha256:97e35e8d39ccc85859095e01a53847432ba9a53ddf7986f7a54a11b73d0e143f \ + --hash=sha256:985f2238880e2e69093f588f5fe2e46771747febf0649f3cf7f7b7480875317f \ + --hash=sha256:a49f1eadc84ca85fd72fa4e89e70e61bf86452df6f971af04b12c60761a0772c \ + --hash=sha256:a5a6104ed666402ba5106d7f36e0e0cdca4e8d7fa4d39708ca88019e2835a2eb \ + --hash=sha256:aba1615dabe83188e19d4f75a253c6a08423e04c1425e64039f800050a69de6b \ + --hash=sha256:ae20801130378b82d647ff5047c07316295b68dc054ca6b3c13519d0ea624285 \ + --hash=sha256:ae2f11957b27ce53497dd4d7b235c4d4f1faf383dfb39d0c5beb833bff883294 \ + --hash=sha256:b049278ddce116aaa1c1377ebf58adea909132dfce0281cf7e3a1ea9fc2e2c65 \ + --hash=sha256:b1b745c489cd1a77a0dc1120a05dc87af9798faebc913601feb8c73d89bf2d1e \ + --hash=sha256:b2b9516251cb89ff618d757daec0e2ed1bf21248013844a853d87ef85ab3081d \ + --hash=sha256:b580440f1ff81a0e34122051a3dfabb7e4b7f9e380629929bde0eff9af72165f \ + --hash=sha256:ba7b3b8ef09eab7df0e86e9ae086faa433efbfbdb46afcb3aa16aabf779469a8 \ + --hash=sha256:c27df8b3848f32a83d1767566595e43cfaa4460380974da06f4279a7ec143c39 \ + --hash=sha256:d091f9d758b34aaaaa6331d13574bf01891d903b3dec59bfff458ef7551de5d6 \ + --hash=sha256:d730e984eddf56974c3e72b6129c7ca462ac38dc624338f4b0b23eb23ecba00f \ + --hash=sha256:d75d11c949914165976c621b2324f9ef162af7ebf4b057ddf95dd1dba7e5edcf \ + --hash=sha256:d843374407c4017a6403b59c6c81606773d136f3259d5b6da3131bc814542cc2 \ + --hash=sha256:da4e09638420548f31c354032a6250e473c68e5a4e96899b4844cf39ddea23fe \ + --hash=sha256:de2445a0c6690d21b7eb6ce071cebad6d40a2e9bdf10d039074a96ba19797b99 \ + --hash=sha256:dfca0129678bd56379db26c52b5d77ed7de314c047492fbdc763aa7501710cfb \ + --hash=sha256:e9fae004b941b23ff2edcf1567a857ed77bafc8086ffa258190462328434faf8 \ + --hash=sha256:f0c3c28d9fbcc1fe7a03be236d73430cf6409c41fb2383a7ac52fe932b072cb1 \ + --hash=sha256:f4399f64b3e94cd500195490972ae1ee81170df1636fa15364d157d5bdd7b921 \ + --hash=sha256:f76e640a5268850bfda54b5131b1b1941cc685e42c5fa98ed9f2d64038308cba \ + --hash=sha256:fd66508e8c6877d98e586654b608a0456db8d7e8a546eb1e2600efd957302358 mdurl==0.1.2 \ --hash=sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8 \ --hash=sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba @@ -757,29 +844,29 @@ mpmath==1.3.0 \ networkx==3.1 \ --hash=sha256:4f33f68cb2afcf86f28a45f43efc27a9386b535d567d2127f8f61d51dec58d36 \ --hash=sha256:de346335408f84de0eada6ff9fafafff9bcda11f0a0dfaa931133debb146ab61 -ninja==1.13.0 \ - --hash=sha256:11be2d22027bde06f14c343f01d31446747dbb51e72d00decca2eb99be911e2f \ - --hash=sha256:1c97223cdda0417f414bf864cfb73b72d8777e57ebb279c5f6de368de0062988 \ - --hash=sha256:3c0b40b1f0bba764644385319028650087b4c1b18cdfa6f45cb39a3669b81aa9 \ - --hash=sha256:3d00c692fb717fd511abeb44b8c5d00340c36938c12d6538ba989fe764e79630 \ - --hash=sha256:3d7d7779d12cb20c6d054c61b702139fd23a7a964ec8f2c823f1ab1b084150db \ - --hash=sha256:4a40ce995ded54d9dc24f8ea37ff3bf62ad192b547f6c7126e7e25045e76f978 \ - --hash=sha256:4be9c1b082d244b1ad7ef41eb8ab088aae8c109a9f3f0b3e56a252d3e00f42c1 \ - --hash=sha256:5f8e1e8a1a30835eeb51db05cf5a67151ad37542f5a4af2a438e9490915e5b72 \ - --hash=sha256:60056592cf495e9a6a4bea3cd178903056ecb0943e4de45a2ea825edb6dc8d3e \ - --hash=sha256:6739d3352073341ad284246f81339a384eec091d9851a886dfa5b00a6d48b3e2 \ - --hash=sha256:8cfbb80b4a53456ae8a39f90ae3d7a2129f45ea164f43fadfa15dc38c4aef1c9 \ - --hash=sha256:aa45b4037b313c2f698bc13306239b8b93b4680eb47e287773156ac9e9304714 \ - --hash=sha256:b4f2a072db3c0f944c32793e91532d8948d20d9ab83da9c0c7c15b5768072200 \ - --hash=sha256:be7f478ff9f96a128b599a964fc60a6a87b9fa332ee1bd44fa243ac88d50291c \ - --hash=sha256:d741a5e6754e0bda767e3274a0f0deeef4807f1fec6c0d7921a0244018926ae5 \ - --hash=sha256:e8bad11f8a00b64137e9b315b137d8bb6cbf3086fbdc43bf1f90fd33324d2e96 \ - --hash=sha256:fa2a8bfc62e31b08f83127d1613d10821775a0eb334197154c4d6067b7068ff1 \ - --hash=sha256:fb46acf6b93b8dd0322adc3a4945452a4e774b75b91293bafcc7b7f8e6517dfa \ - --hash=sha256:fb8ee8719f8af47fed145cced4a85f0755dd55d45b2bddaf7431fa89803c5f3e -nncf==3.1.0 \ - --hash=sha256:cabfdc32f42a04c6c106906d1b248ace0ed0748c46b193529ec7b4e945baa374 \ - --hash=sha256:f3bcd71c537554bb90100cd91fb999904e1e222cac61eee6df7af7cf58ccd646 +ninja==1.13.2 \ + --hash=sha256:09de9ab04f7352f51570c73fd4913acb1e6c24be0a72cd8b80243d4d3ed04925 \ + --hash=sha256:0e083700470c02ca154a855ae6d692d03564f5064cae52e113896f9ccc078418 \ + --hash=sha256:1293f4078278b70d0ee4b6cc8f3a9e030656c9b2f59909970343c4fe76070118 \ + --hash=sha256:1684c60d031c54c1d049541b64243c0c567dca5463dbd77682a8901780af293d \ + --hash=sha256:1db9852e528efa7702f5123969f86678663e46d57ff28ab13f5fd84d64a85fb1 \ + --hash=sha256:227cbc3ae3e5e429692388103cae8c09451df086cd2d342dae0795af0d162547 \ + --hash=sha256:525bfa3fc88aa30a4467df270fd5be6f9fcae8061d54d4df74ea1dc5abd5a975 \ + --hash=sha256:59d71c3e15b6b6f3d903eb0c27285544e0747ca59925ada7037bb1af781ad4b3 \ + --hash=sha256:65a24341b5ac09fcadcc37082660be40a94174e51a937fabf6e2cae26225fa2c \ + --hash=sha256:6a87bf42b123abe2f37737300185f0a303a891899da85d73a3613ee80547e578 \ + --hash=sha256:792cadbb9decfd1f776d4d0a6930feb46d08302eb57c176bcf26b09de5748e9f \ + --hash=sha256:81d95081c0ad7c95f67bf682220361ed2a32659d7861b4766b03433c58f22516 \ + --hash=sha256:915bd482c4be41c75120fd67a22e0bb3f0fbb3bbc5f95b89787deadd59e27ef2 \ + --hash=sha256:919572cbc3f233261ecd41fe1f3efc9d44aa02464a4588867e06a8b4f6f416ea \ + --hash=sha256:aa3d2ae5706a2c4d1e93edc951d1c6cbb45107413c404f8fde1741239efbc9a0 \ + --hash=sha256:b2f687437fac460b27b7eadc99039b1163016fb4ba7276e2782a192d9f24ee0e \ + --hash=sha256:d775a5e43e9088f507a6250d57fcf5678eb31268c545feb5064ffeee33735622 \ + --hash=sha256:f90f84affc441e219f15fe52532806c1c9dbd22fb66c3addddce88a3deaabab7 \ + --hash=sha256:fd82e26c0706ad4ab88e5fdd26f3fab0a987a90f810160f6c322e752c6af298b +nncf==3.3.0 \ + --hash=sha256:3dbcbc1ad4f399deed139041fae1fedd4b8aa5749e30af522fcc5a6c2af73e42 \ + --hash=sha256:855f1e7099f01ff3a9868cf6d56850e1149691ab0db5ac76ab812ae8b0fba338 numpy==1.26.4 \ --hash=sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b \ --hash=sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818 \ @@ -860,6 +947,9 @@ nvidia-cusparselt-cu12==0.7.1 \ --hash=sha256:8878dce784d0fac90131b6817b607e803c36e629ba34dc5b433471382196b6a5 \ --hash=sha256:f1bb701d6b930d5a7cea44c19ceb973311500847f81b634d802b7b539dc55623 \ --hash=sha256:f67fbb5831940ec829c9117b7f33807db9f9678dc2a617fbe781cac17b4e1075 +nvidia-ml-py==13.610.43 \ + --hash=sha256:65437eb73d68d0c62c931ca4d45038472faff03bd0b8729abba4b899f70d60f2 \ + --hash=sha256:f13c72698edef492f985cc225f14faafe68ae065a2e407f45bdf6f4b9b43fde8 nvidia-nccl-cu12==2.27.5 \ --hash=sha256:31432ad4d1fb1004eb0c56203dc9bc2178a1ba69d1d9e02d64a6938ab5e40e7a \ --hash=sha256:ad730cf15cb5d25fe849c6e6ca9eb5b76db16a80f13f425ac68d8e2e55624457 @@ -874,35 +964,31 @@ nvidia-nvtx-cu12==12.8.90 \ --hash=sha256:5b17e2001cc0d751a5bc2c6ec6d26ad95913324a4adb86788c944f8ce9ba441f \ --hash=sha256:619c8304aedc69f02ea82dd244541a83c3d9d40993381b3b590f1adaed3db41e \ --hash=sha256:d7ad891da111ebafbf7e015d34879f7112832fc239ff0d7d776b6cb685274615 -onnx==1.21.0 \ - --hash=sha256:10c3185a232089335581fabb98fba4e86d3e8246b8140f2e406082438100ebda \ - --hash=sha256:19d9971a3e52a12968ae6c70fd0f86c349536de0b0c33922ecdbe52d1972fe60 \ - --hash=sha256:1a9baf882562c4cebf79589bebb7cd71a20e30b51158cac3e3bbaf27da6163bd \ - --hash=sha256:257d1d1deb6a652913698f1e3f33ef1ca0aa69174892fe38946d4572d89dd94f \ - --hash=sha256:2aca19949260875c14866fc77ea0bc37e4e809b24976108762843d328c92d3ce \ - --hash=sha256:3abd09872523c7e0362d767e4e63bd7c6bac52a5e2c3edbf061061fe540e2027 \ - --hash=sha256:458d91948ad9a7729a347550553b49ab6939f9af2cddf334e2116e45467dc61f \ - --hash=sha256:4d8b67d0aaec5864c87633188b91cc520877477ec0254eda122bef8be43cd764 \ - --hash=sha256:5489f25fe461e7f32128218251a466cabbeeaf1eaa791c79daebf1a80d5a2cc9 \ - --hash=sha256:5f78c411743db317a76e5d009f84f7e3d5380411a1567a868e82461a1e5c775d \ - --hash=sha256:7b58a4cfec8d9311b73dc083e4c1fa362069267881144c05139b3eba5dc3a840 \ - --hash=sha256:7cd7cb8f6459311bdb557cbf6c0ccc6d8ace11c304d1bba0a30b4a4688e245f8 \ - --hash=sha256:7ee9d8fd6a4874a5fa8b44bbcabea104ce752b20469b88bc50c7dcf9030779ad \ - --hash=sha256:82aa6ab51144df07c58c4850cb78d4f1ae969d8c0bf657b28041796d49ba6974 \ - --hash=sha256:9003d5206c01fa2ff4b46311566865d8e493e1a6998d4009ec6de39843f1b59b \ - --hash=sha256:9ea4e824964082811938a9250451d89c4ec474fe42dd36c038bfa5df31993d1e \ - --hash=sha256:a9261bd580fb8548c9c37b3c6750387eb8f21ea43c63880d37b2c622e1684285 \ - --hash=sha256:ab6a488dabbb172eebc9f3b3e7ac68763f32b0c571626d4a5004608f866cc83d \ - --hash=sha256:bba12181566acf49b35875838eba49536a327b2944664b17125577d230c637ad \ - --hash=sha256:c9b56ad04039fac6b028c07e54afa1ec7f75dd340f65311f2c292e41ed7aa4d9 \ - --hash=sha256:ca14bc4842fccc3187eb538f07eabeb25a779b39388b006db4356c07403a7bbb \ - --hash=sha256:db17fc0fec46180b6acbd1d5d8650a04e5527c02b09381da0b5b888d02a204c8 \ - --hash=sha256:e0c21cc5c7a41d1a509828e2b14fe9c30e807c6df611ec0fd64a47b8d4b16abd \ - --hash=sha256:e1931bfcc222a4c9da6475f2ffffb84b97ab3876041ec639171c11ce802bee6a \ - --hash=sha256:efba467efb316baf2a9452d892c2f982b9b758c778d23e38c7f44fa211b30bb9 \ - --hash=sha256:f2c7c234c568402e10db74e33d787e4144e394ae2bcbbf11000fbfe2e017ad68 \ - --hash=sha256:f53b3c15a3b539c16b99655c43c365622046d68c49b680c48eba4da2a4fb6f27 \ - --hash=sha256:fc2635400fe39ff37ebc4e75342cc54450eadadf39c540ff132c319bf4960095 +onnx==1.22.0 \ + --hash=sha256:19e45e4af88e3fe3261458d4b8cc461957ae2782a358a3560503569bf3b23b72 \ + --hash=sha256:1d0a2bdb15eb2b3cb65c438f3423d9620d14fdce32f92380e6bb1b2e09568ef5 \ + --hash=sha256:239958534464612fbcb6ed23d5228aaa925b39b8773f58726809ffdccb4edd1c \ + --hash=sha256:2632406b8f523ef2e2873c363f90b20a3d88c0fbcfac757d3addffccf8f452c2 \ + --hash=sha256:2d8f229a553fa440fe623ed7b36fca5e7762da3af871c3f8f8ce451df73e2914 \ + --hash=sha256:33ce94119bbb7f05d9caea4ea7549f5185a54369f6bbc9f70171bd5ee6935bbc \ + --hash=sha256:596fbf0490947533c1c1045ba860851dc9fb77471023dac9a71ba5b42ceab103 \ + --hash=sha256:5c1c0408a9d4b4df33851672e5fc7590b96301ee123396d608f9ab6f045ab06b \ + --hash=sha256:6d0ffffd63a4ecc21ddaeddd5bf02099cb701aa4243f2de00122726869065ca4 \ + --hash=sha256:72ccebab3bac07215c204ce8848d42e78eaaa666badbf72d25cd359b9f269e3a \ + --hash=sha256:82e9f27fc1223cb06d68a56bed6f9d3caf3d0dad1b61bce45006d529b15bd94c \ + --hash=sha256:8561a2c00041c07e08db0c228593b5b4694100398685f348532af7dbb84189da \ + --hash=sha256:87a3077958f66f9a26dec10077ac28326d9cec2cbe1f0b040947243449754573 \ + --hash=sha256:8907b9b9389893bc0dc6314cc00ee1e3a69844e48d689eacc6a0340411a7da58 \ + --hash=sha256:8a5eccce2d5fc6c5046928a9aa7cdd9750ea4a586f8de341d3d40d820c35fdec \ + --hash=sha256:8e268cdc0547e3949799ffd4a44451dc2b9080b57d0824a2db680b6ec65506f0 \ + --hash=sha256:955e02e1f6d385b53d52f9cd7b9cdf5caf417c300bcfe3c64c6d542be763845b \ + --hash=sha256:a1a89a7cb9ba13d78f009bdec448ec82a98972589734f157022a2bff7a5973a6 \ + --hash=sha256:a3a39fc4643867aecb33417fdddb11e308ee79d2d4a584b9d50cc7aec2091b13 \ + --hash=sha256:ae5a563f281cd9d2845622cecf6c092a57e4ee1b138f66fdbbdd4200567a5e16 \ + --hash=sha256:c21a0e59fd967a95b358e4a6e756d1f1eec2d304a83480f329f66e30d2bf0223 \ + --hash=sha256:cc8b66b312f8f03a53e268afb67180a2d97dd12cc79e2b61361c6c0073448016 \ + --hash=sha256:ef40c0aaf0b643857ea9306fc7eddce17eaf9fb0407e4801f1fc5758443a38e0 \ + --hash=sha256:f3c120dcdb70ad738f3c061b32798f408ea299eb69f84dd69ab4a6bf3c2ec01f onnxruntime-gpu==1.23.2 \ --hash=sha256:054282614c2fc9a4a27d74242afbae706a410f1f63cc35bc72f99709029a5ba4 \ --hash=sha256:18de50c6c8eea50acc405ea13d299aec593e46478d7a22cd32cdbbdf7c42899d \ @@ -913,9 +999,9 @@ onnxruntime-gpu==1.23.2 \ --hash=sha256:d76d1ac7a479ecc3ac54482eea4ba3b10d68e888a0f8b5f420f0bdf82c5eec59 \ --hash=sha256:deba091e15357355aa836fd64c6c4ac97dd0c4609c38b08a69675073ea46b321 \ --hash=sha256:fe925a84b00e291e0ad3fac29bfd8f8e06112abc760cdc82cb711b4f3935bd95 -onnxslim==0.1.91 \ - --hash=sha256:1fdb23ca56ca3f9d12ff7b9ae1c779184468eaf911baea0930ac254b49c93ac9 \ - --hash=sha256:3222fcd9a16836a4e7917e1dc55ddf4db492dadca3f469a1fa9226f92c4a2c6e +onnxslim==0.1.96 \ + --hash=sha256:386a1c64e61a66fb79cdd62de996323b9fb950d22de9b117cd31f211cac96048 \ + --hash=sha256:a43f800d39434e6b4d542abe17c25afb7fcc33aabf53d20464cb0dae0f66cbb6 opencv-python==4.11.0.86 \ --hash=sha256:03d60ccae62304860d232272e4a4fda93c39d595780cb40b161b310244b736a4 \ --hash=sha256:085ad9b77c18853ea66283e98affefe2de8cc4c1f43eda4c100cf9b2721142ec \ @@ -950,117 +1036,113 @@ openvino-dev==2024.6.0 \ openvino-telemetry==2025.2.0 \ --hash=sha256:8bf8127218e51e99547bf38b8fb85a8b31c9bf96e6f3a82eb0b3b6a34155977c \ --hash=sha256:bcb667e83a44f202ecf4cfa49281715c6d7e21499daec04ff853b7f964833599 -packaging==26.1 \ - --hash=sha256:5d9c0669c6285e491e0ced2eee587eaf67b670d94a19e94e3984a481aba6802f \ - --hash=sha256:f042152b681c4bfac5cae2742a55e103d27ab2ec0f3d88037136b6bfe7c9c5de -pillow==12.2.0 \ - --hash=sha256:00a2865911330191c0b818c59103b58a5e697cae67042366970a6b6f1b20b7f9 \ - --hash=sha256:01afa7cf67f74f09523699b4e88c73fb55c13346d212a59a2db1f86b0a63e8c5 \ - --hash=sha256:03e7e372d5240cc23e9f07deca4d775c0817bffc641b01e9c3af208dbd300987 \ - --hash=sha256:03f6fab9219220f041c74aeaa2939ff0062bd5c364ba9ce037197f4c6d498cd9 \ - --hash=sha256:042db20a421b9bafecc4b84a8b6e444686bd9d836c7fd24542db3e7df7baad9b \ - --hash=sha256:0538bd5e05efec03ae613fd89c4ce0368ecd2ba239cc25b9f9be7ed426b0af1f \ - --hash=sha256:0a34329707af4f73cf1782a36cd2289c0368880654a2c11f027bcee9052d35dd \ - --hash=sha256:0c838a5125cee37e68edec915651521191cef1e6aa336b855f495766e77a366e \ - --hash=sha256:144748b3af2d1b358d41286056d0003f47cb339b8c43a9ea42f5fea4d8c66b6e \ - --hash=sha256:1610dd6c61621ae1cf811bef44d77e149ce3f7b95afe66a4512f8c59f25d9ebe \ - --hash=sha256:1e1757442ed87f4912397c6d35a0db6a7b52592156014706f17658ff58bbf795 \ - --hash=sha256:22db17c68434de69d8ecfc2fe821569195c0c373b25cccb9cbdacf2c6e53c601 \ - --hash=sha256:25373b66e0dd5905ed63fa3cae13c82fbddf3079f2c8bf15c6fb6a35586324c1 \ - --hash=sha256:2bb4a8d594eacdfc59d9e5ad972aa8afdd48d584ffd5f13a937a664c3e7db0ed \ - --hash=sha256:2c727a6d53cb0018aadd8018c2b938376af27914a68a492f59dfcaca650d5eea \ - --hash=sha256:2d192a155bbcec180f8564f693e6fd9bccff5a7af9b32e2e4bf8c9c69dbad6b5 \ - --hash=sha256:2e589959f10d9824d39b350472b92f0ce3b443c0a3442ebf41c40cb8361c5b97 \ - --hash=sha256:2e5a76d03a6c6dcef67edabda7a52494afa4035021a79c8558e14af25313d453 \ - --hash=sha256:325ca0528c6788d2a6c3d40e3568639398137346c3d6e66bb61db96b96511c98 \ - --hash=sha256:34c0d99ecccea270c04882cb3b86e7b57296079c9a4aff88cb3b33563d95afaa \ - --hash=sha256:390ede346628ccc626e5730107cde16c42d3836b89662a115a921f28440e6a3b \ - --hash=sha256:394167b21da716608eac917c60aa9b969421b5dcbbe02ae7f013e7b85811c69d \ - --hash=sha256:3997232e10d2920a68d25191392e3a4487d8183039e1c74c2297f00ed1c50705 \ - --hash=sha256:3adc9215e8be0448ed6e814966ecf3d9952f0ea40eb14e89a102b87f450660d8 \ - --hash=sha256:3e080565d8d7c671db5802eedfb438e5565ffa40115216eabb8cd52d0ecce024 \ - --hash=sha256:4a6c9fa44005fa37a91ebfc95d081e8079757d2e904b27103f4f5fa6f0bf78c0 \ - --hash=sha256:4bfd07bc812fbd20395212969e41931001fd59eb55a60658b0e5710872e95286 \ - --hash=sha256:4e6c62e9d237e9b65fac06857d511e90d8461a32adcc1b9065ea0c0fa3a28150 \ - --hash=sha256:50d8520da2a6ce0af445fa6d648c4273c3eeefbc32d7ce049f22e8b5c3daecc2 \ - --hash=sha256:51c4167c34b0d8ba05b547a3bb23578d0ba17b80a5593f93bd8ecb123dd336a3 \ - --hash=sha256:56a3f9c60a13133a98ecff6197af34d7824de9b7b38c3654861a725c970c197b \ - --hash=sha256:56b25336f502b6ed02e889f4ece894a72612fe885889a6e8c4c80239ff6e5f5f \ - --hash=sha256:57850958fe9c751670e49b2cecf6294acc99e562531f4bd317fa5ddee2068463 \ - --hash=sha256:58f62cc0f00fd29e64b29f4fd923ffdb3859c9f9e6105bfc37ba1d08994e8940 \ - --hash=sha256:5c0a9f29ca8e79f09de89293f82fc9b0270bb4af1d58bc98f540cc4aedf03166 \ - --hash=sha256:5cdfebd752ec52bf5bb4e35d9c64b40826bc5b40a13df7c3cda20a2c03a0f5ed \ - --hash=sha256:5d04bfa02cc2d23b497d1e90a0f927070043f6cbf303e738300532379a4b4e0f \ - --hash=sha256:5d2fd0fa6b5d9d1de415060363433f28da8b1526c1c129020435e186794b3795 \ - --hash=sha256:62f5409336adb0663b7caa0da5c7d9e7bdbaae9ce761d34669420c2a801b2780 \ - --hash=sha256:632ff19b2778e43162304d50da0181ce24ac5bb8180122cbe1bf4673428328c7 \ - --hash=sha256:6562ace0d3fb5f20ed7290f1f929cae41b25ae29528f2af1722966a0a02e2aa1 \ - --hash=sha256:673aa32138f3e7531ccdbca7b3901dba9b70940a19ccecc6a37c77d5fdeb05b5 \ - --hash=sha256:6a6e67ea2e6feda684ed370f9a1c52e7a243631c025ba42149a2cc5934dec295 \ - --hash=sha256:6a9adfc6d24b10f89588096364cc726174118c62130c817c2837c60cf08a392b \ - --hash=sha256:6bb77b2dcb06b20f9f4b4a8454caa581cd4dd0643a08bacf821216a16d9c8354 \ - --hash=sha256:6e6b2a0c538fc200b38ff9eb6628228b77908c319a005815f2dde585a0664b60 \ - --hash=sha256:71cde9a1e1551df7d34a25462fc60325e8a11a82cc2e2f54578e5e9a1e153d65 \ - --hash=sha256:7371b48c4fa448d20d2714c9a1f775a81155050d383333e0a6c15b1123dda005 \ - --hash=sha256:766cef22385fa1091258ad7e6216792b156dc16d8d3fa607e7545b2b72061f1c \ - --hash=sha256:7b14cc0106cd9aecda615dd6903840a058b4700fcb817687d0ee4fc8b6e389be \ - --hash=sha256:7f84204dee22a783350679a0333981df803dac21a0190d706a50475e361c93f5 \ - --hash=sha256:8023abc91fba39036dbce14a7d6535632f99c0b857807cbbbf21ecc9f4717f06 \ - --hash=sha256:80b2da48193b2f33ed0c32c38140f9d3186583ce7d516526d462645fd98660ae \ - --hash=sha256:8297651f5b5679c19968abefd6bb84d95fe30ef712eb1b2d9b2d31ca61267f4c \ - --hash=sha256:88d387ff40b3ff7c274947ed3125dedf5262ec6919d83946753b5f3d7c67ea4c \ - --hash=sha256:88ddbc66737e277852913bd1e07c150cc7bb124539f94c4e2df5344494e0a612 \ - --hash=sha256:8bd7903a5f2a4545f6fd5935c90058b89d30045568985a71c79f5fd6edf9b91e \ - --hash=sha256:8be29e59487a79f173507c30ddf57e733a357f67881430449bb32614075a40ab \ - --hash=sha256:8c984051042858021a54926eb597d6ee3012393ce9c181814115df4c60b9a808 \ - --hash=sha256:8cbeb542b2ebc6fcdacabf8aca8c1a97c9b3ad3927d46b8723f9d4f033288a0f \ - --hash=sha256:8e9c4f5b3c546fa3458a29ab22646c1c6c787ea8f5ef51300e5a60300736905e \ - --hash=sha256:90e6f81de50ad6b534cab6e5aef77ff6e37722b2f5d908686f4a5c9eba17a909 \ - --hash=sha256:975385f4776fafde056abb318f612ef6285b10a1f12b8570f3647ad0d74b48ec \ - --hash=sha256:9a8a34cc89c67a65ea7437ce257cea81a9dad65b29805f3ecee8c8fe8ff25ffe \ - --hash=sha256:9aba9a17b623ef750a4d11b742cbafffeb48a869821252b30ee21b5e91392c50 \ - --hash=sha256:9f08483a632889536b8139663db60f6724bfcb443c96f1b18855860d7d5c0fd4 \ - --hash=sha256:a4e8f36e677d3336f35089648c8955c51c6d386a13cf6ee9c189c5f5bd713a9f \ - --hash=sha256:a52edc8bfff4429aaabdf4d9ee0daadbbf8562364f940937b941f87a4290f5ff \ - --hash=sha256:a830b1a40919539d07806aa58e1b114df53ddd43213d9c8b75847eee6c0182b5 \ - --hash=sha256:aa88ccfe4e32d362816319ed727a004423aab09c5cea43c01a4b435643fa34eb \ - --hash=sha256:af73337013e0b3b46f175e79492d96845b16126ddf79c438d7ea7ff27783a414 \ - --hash=sha256:b1c1fbd8a5a1af3412a0810d060a78b5136ec0836c8a4ef9aa11807f2a22f4e1 \ - --hash=sha256:b85f66ae9eb53e860a873b858b789217ba505e5e405a24b85c0464822fe88032 \ - --hash=sha256:b86024e52a1b269467a802258c25521e6d742349d760728092e1bc2d135b4d76 \ - --hash=sha256:bd9c0c7a0c681a347b3194c500cb1e6ca9cab053ea4d82a5cf45b6b754560136 \ - --hash=sha256:bfa9c230d2fe991bed5318a5f119bd6780cda2915cca595393649fc118ab895e \ - --hash=sha256:d362d1878f00c142b7e1a16e6e5e780f02be8195123f164edf7eddd911eefe7c \ - --hash=sha256:d5d38f1411c0ed9f97bcb49b7bd59b6b7c314e0e27420e34d99d844b9ce3b6f3 \ - --hash=sha256:dac8d77255a37e81a2efcbd1fc05f1c15ee82200e6c240d7e127e25e365c39ea \ - --hash=sha256:dd025009355c926a84a612fecf58bb315a3f6814b17ead51a8e48d3823d9087f \ - --hash=sha256:deede7c263feb25dba4e82ea23058a235dcc2fe1f6021025dc71f2b618e26104 \ - --hash=sha256:e74473c875d78b8e9d5da2a70f7099549f9eb37ded4e2f6a463e60125bccd176 \ - --hash=sha256:ee3120ae9dff32f121610bb08e4313be87e03efeadfc6c0d18f89127e24d0c24 \ - --hash=sha256:eedf4b74eda2b5a4b2b2fb4c006d6295df3bf29e459e198c90ea48e130dc75c3 \ - --hash=sha256:efd8c21c98c5cc60653bcb311bef2ce0401642b7ce9d09e03a7da87c878289d4 \ - --hash=sha256:f1c943e96e85df3d3478f7b691f229887e143f81fedab9b20205349ab04d73ed \ - --hash=sha256:f278f034eb75b4e8a13a54a876cc4a5ab39173d2cdd93a638e1b467fc545ac43 \ - --hash=sha256:f3f40b3c5a968281fd507d519e444c35f0ff171237f4fdde090dd60699458421 \ - --hash=sha256:f490f9368b6fc026f021db16d7ec2fbf7d89e2edb42e8ec09d2c60505f5729c7 \ - --hash=sha256:fb043ee2f06b41473269765c2feae53fc2e2fbf96e5e22ca94fb5ad677856f06 \ - --hash=sha256:fc3d34d4a8fbec3e88a79b92e5465e0f9b842b628675850d860b8bd300b159f5 +packaging==26.3 \ + --hash=sha256:94edc256424af38762eb31306eed28beb9f0efc50a8837492c9d6fd6004aed79 \ + --hash=sha256:d7193f7c8e4e93f444fde0262bf90af30e16fa0ad0ad44cb553c87339b23cd1c +pillow==12.3.0 \ + --hash=sha256:00808c5e14ef63ac5161091d242999076604ff74b883423a11e5d7bbb38bf756 \ + --hash=sha256:04f01d28a6aaff387bf842a13be313df23ba0597a44f1a976c9feb3c6ff4711a \ + --hash=sha256:06ff022112bc9cbf83b60f8e028d94ad87b60621706487e65f673de61610ab59 \ + --hash=sha256:0740a512dc522224c77d9aa5a8d70d8b7d73fb91f2c21125d8d025d3b8990e45 \ + --hash=sha256:0847a763afefb695bc912d7c131e7e0632d4edc1d8698f58ddabec8e46b8b6d3 \ + --hash=sha256:0dd2064cbc55aaec028ef5fbb60fa47bb6c3e7918e07ff17935284b227a9d2df \ + --hash=sha256:0feb2e9d6ad6c9e3c06effe9d00f3f1e618a6643273576b016f591e9315a7139 \ + --hash=sha256:10e41f0fbf1eec8cfd234b8fe17a4caac7c9d0db4c204d3c173a8f9f6ef3232b \ + --hash=sha256:1182d52bc2d5e5d7d0949503aa7e36d12f42205dc287e4883f407b1988820d39 \ + --hash=sha256:164b31cd1a0490ab6efae01aa5df49da7061be0af1b30e035b6e9a1bfe34ee6e \ + --hash=sha256:1657923d2d45afb66526e5b933e5b3052e6bdea196c90d3abb2424e18c77dae8 \ + --hash=sha256:186941b6aef820ad110fb01fb06eb925374dc3a21b17e37ec9a53b250c6fe2d1 \ + --hash=sha256:1cca606cd25738df4ed873d5ad46bbdb3d83b5cbca291f6b4ff13a4df6b0bbe8 \ + --hash=sha256:21900ce7ba264168cd50defae43cd75d25c833ad4ad6e73ffc5596d12e25ac89 \ + --hash=sha256:236ff70b9312fb68943c703aa842ca6a758abfa45ac187a5e7c1452e96ef72b5 \ + --hash=sha256:23aceaa007d6172b02c277f0cd359c79492bbb14f7072b4ede9fbcaf20648130 \ + --hash=sha256:23d27a3e0307ec2244cc51e7287b919aa68d097504ebe19df4e76a98a3eea5bd \ + --hash=sha256:24870b09b224f7ae3c39ed07d10e819d06f8720bc551847b1d623832b5b0e28d \ + --hash=sha256:251bf95b67017e27b13d82f5b326234ca62d70f9cf4c2b9032de2358a3b12c7b \ + --hash=sha256:25b9b82bb22e6e2b3cd07b39c68b7b862001226cb3dff7130d1cb914121b39ed \ + --hash=sha256:28ce87c5ab450a9dd970b52e5aca5fe63ed432d18a2eaddd1979a00a1ba24ace \ + --hash=sha256:300557495eb45ebb8aec96c2da9c4be642fbf7cd937278b4013ba894ea8eb0eb \ + --hash=sha256:30f2aa603c41533cc25c05acd0da21636e84a315768feb631c937177db558931 \ + --hash=sha256:331b624368d4f1d069149002f25f44bc61c8919ce8ddb3c45bdad8f6e2d89510 \ + --hash=sha256:37d6d0a00072fd2948eb22bce7e1475f34569d90c87c59f7a2ec59541b77f7a6 \ + --hash=sha256:37dc8f7bbb66efe481bb60defacef820c950c24713fb44962ed6aa2a50966de1 \ + --hash=sha256:3b8182a766685eaa002637e28b4ec8d6b18819a0c71f579bf0dbaa5830297cce \ + --hash=sha256:3edce1d53195db527e0191f84b71d02022de0540bf43a16ed734ed7537b07385 \ + --hash=sha256:446c34dcc4324b084a53b705127dc15717b22c5e140ae0a3c38349d4efec071e \ + --hash=sha256:4998562bf62a445225f22e07c896bb04b35b1b1f2eb6d760584c9c51d7a5f78c \ + --hash=sha256:4b0a7fe987b14c31ebda6083f74f22b561fd3739bc0ac51e019622e3d72668c7 \ + --hash=sha256:4e8c2a84d977f50b9daed6eeaf3baef67d00d5d74d932288f02cb94518ee3ace \ + --hash=sha256:4f883547d4b7f0495ebe7056b0cc2aea76094e7a4abc8e933540f3271df27d9c \ + --hash=sha256:514435a37670e3e5e08f3945b68718b6ed329bb84367777e16f9f4dfe1e61a0f \ + --hash=sha256:53aa02d20d10c3d814d536aa4e5ac9b84ca0ff5a88377963b085ad6822f93e64 \ + --hash=sha256:5594fc43d548a7ed94949d139aa1341b270f1863f11cfd37f5a6c8b778a6b67f \ + --hash=sha256:571b9fcb07b97ef3a492028fb3d2dc0993ca23a06138b0315286566d29ef718a \ + --hash=sha256:57b3d78c95ba9059768b10e28b813002261d3f3dfc55cc48b0c988f625175827 \ + --hash=sha256:5afb51d599ea772b8365ae807ae557f18bccfe46ab261fd1c2a9ed700fc6eb17 \ + --hash=sha256:6b02afb9b97f65fbca5f31db6a2a3ba21aa93030225f150fa3f249717e938fb4 \ + --hash=sha256:6c0016e7b354317c4e9e525b937ac8596c38d2d232b419529b9cd7a1cd46e39a \ + --hash=sha256:71d6097b330eea8fd15097780c8e89cb1a8ce7838669f48c5bacd6f663dd4701 \ + --hash=sha256:756c768d0c9c2955feb7a56c37ea24aea2e369f8d36a88da270b6a9f19e62b5e \ + --hash=sha256:78cb2c6865a35ab8ff8b75fd122f6033b92a62c82801110e48ddd6c936a45d91 \ + --hash=sha256:7a743ff716f746fc19a9557f60dab1600d4613255f8a7aeb3cdde4db7eb15a66 \ + --hash=sha256:85f998ea1848bc6757289e739cfbdda3a04adfd58b02fc018ce54d754a5ce468 \ + --hash=sha256:8728f216dcdb6e6d555cf971cb34076139ad74b31fc2c14da4fafc741c5f6217 \ + --hash=sha256:877c3f311ff35410f690861c4409e7ccbf0cd2f878e50628a28e5a0bb689e658 \ + --hash=sha256:8cd2f7bdda092d99c9fc2fb7391354f306d01443d22785d0cbfafa2e2c8bb418 \ + --hash=sha256:8e95e1385e4998ae9694eeaa4730ba5457ff61185b3a55e2e7bea0880aef452a \ + --hash=sha256:962864dc93511324d51ddbb5b9f8731bf71675b93ca612a07441896f4688fb8c \ + --hash=sha256:9cf95fe4d0f84c82d282745d9bb08ad9f926efa00be4697e767b814ce40d4330 \ + --hash=sha256:9e881fca225083806662a5c43d627d215f258ff43c890f831966c7d7ba9c7402 \ + --hash=sha256:a2b55dd6b2a4c4b7d87ffa56bdb33fdc5fdb9a462173861a7bc097f17d91cb09 \ + --hash=sha256:a45650e8ce7fafffd731db8550230db6b0d306d181a90b67d3e6bca2f1990930 \ + --hash=sha256:a876864214e136f0eb367788dbd7df045f4806801518e2cfe9e13229cfe06d8f \ + --hash=sha256:ae26d61dfa7a47befdc7572b521024e8745f3d809bd95ca9505a7bba9ef849ec \ + --hash=sha256:af8d94b0db561cf68b88a267c5c44b49e134f525d0dc2cb7ed413a66bc23559a \ + --hash=sha256:b343699e8308bdc51978310e1c959c584e7869cc8c40780058c87da7781a1e94 \ + --hash=sha256:b3c777e849237620b022f7f297dd67705f9f5cf1685f09f02e46f93e92725468 \ + --hash=sha256:b629de27fda84b42cde7edef0d85f13b958b47f6e9bbcbba9b673c562a89bd8b \ + --hash=sha256:ba09209fbe443b4acccebe845d8a138b89a8f4fbaeedd44953490b5315d5e965 \ + --hash=sha256:ba54cfebe86920a559a7c4d6b9050791c20513650a1952ebe3368c7dc70306f8 \ + --hash=sha256:bcb46e2f9feff8d06323983bd83ed00c201fdcab3d74973e7072a889b3979fcd \ + --hash=sha256:bcc33feacfaefce60c12fd500a277533bdc02b10a19f7f6d348763d8140bbba7 \ + --hash=sha256:bf16ba1b4d0b6b7c8e534936632270cf70eb00dbe09005bc345b2677b726855c \ + --hash=sha256:cf1845d02ad822a369a49f2bb9345b1614744267682e7a03527dc3bf6eea1777 \ + --hash=sha256:d69141514cc30b774ceea5e3ed3a6635c8d8a96edf664689b890f4089111fb35 \ + --hash=sha256:d9c7f76c0673154f044e9d78c8655fb4213f6ca31a836df48b40fe5d187717b9 \ + --hash=sha256:dbce0b29841537a2fa4a214c2bbf14de3587c9680caa9b4e217568472490b28f \ + --hash=sha256:dc624f6bc473dacdf7ef7eb8678d0d08edf15cd94fad6ae5c7d6cc67a4e4902f \ + --hash=sha256:e158cb00350dc278f3b91551101aa7d12415a66ebf2c91d8d5ac14e56ddd3ad0 \ + --hash=sha256:e491916b378fba47242221bb9ead245211b70d504f495d105d17b14a24b4907c \ + --hash=sha256:e795b7eb908249c4e43c7c99fac7c2c75dab0c43566e37db472a355f63693d71 \ + --hash=sha256:e7e480451b9fa137494bccd3a7d69adbe8ac65a87d97be61e11f1b1050a5bac3 \ + --hash=sha256:e91206ee562682b51b98ef4b26a6ef48fd84e15fd4c4bc5ec768eb641d206838 \ + --hash=sha256:e9871b1ffbfa9656b60aeee92ed5136a5742696006fa322b29ea3d8da0ecc9cf \ + --hash=sha256:e9aeb04d6aef139de265b29683e119b638208f88cf73cdd1658aa07221165321 \ + --hash=sha256:ebaea975e03d3141d9d3a507df75c9b3ec90fa9d2ffd07567b3a978d9d790b26 \ + --hash=sha256:f0606c8bf2cdefea14a43530f7657cbbb7ecf1c4222512492ef4a4434a9501ec \ + --hash=sha256:f13c32a3abd6079a66d9526e18dad9b6d280384d49d7c54040cd57b6424041d9 \ + --hash=sha256:f7401aebd7f581d7f83a439d87d474999317ee099218e5ad25d125290990ba65 \ + --hash=sha256:fa4ecea169a355be7a3ade2c783e2ed12f0e40d2c5621cda8b3297faf7fbb9f5 \ + --hash=sha256:fbd139c8447d25dd750ab79ee274cc5e1fe80fc56340ab10b18a195e1b6eca3e \ + --hash=sha256:fdafc9cce40277e0f7a0feabce0ee50dd2fa1800f3b38015e51296b5e814048d \ + --hash=sha256:fe3cca2e4e8a592be0f269a1ca4835c25199d9f3ce815c8491048f785b0a0198 \ + --hash=sha256:ffd0c5368496f41b0944be820fcb7a838aa6e623d250b01acf2643939c3f99d7 pluggy==1.6.0 \ --hash=sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3 \ --hash=sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746 -polars==1.39.3 \ - --hash=sha256:2e016c7f3e8d14fa777ef86fe0477cec6c67023a20ba4c94d6e8431eefe4a63c \ - --hash=sha256:c2b955ccc0a08a2bc9259785decf3d5c007b489b523bf2390cf21cec2bb82a56 -polars-runtime-32==1.39.3 \ - --hash=sha256:06b47f535eb1f97a9a1e5b0053ef50db3a4276e241178e37bbb1a38b1fa53b14 \ - --hash=sha256:363d49e3a3e638fc943e2b9887940300a7d06789930855a178a4727949259dc2 \ - --hash=sha256:425c0b220b573fa097b4042edff73114cc6d23432a21dfd2dc41adf329d7d2e9 \ - --hash=sha256:7c206bdcc7bc62ea038d6adea8e44b02f0e675e0191a54c810703b4895208ea4 \ - --hash=sha256:8bc9e13dc1d2e828331f2fe8ccbc9757554dc4933a8d3e85e906b988178f95ed \ - --hash=sha256:c728e4f469cafab501947585f36311b8fb222d3e934c6209e83791e0df20b29d \ - --hash=sha256:d66ca522517554a883446957539c40dc7b75eb0c2220357fb28bc8940d305339 \ - --hash=sha256:ef5884711e3c617d7dc93519a7d038e242f5741cfe5fe9afd32d58845d86c562 \ - --hash=sha256:f49f51461de63f13e5dd4eb080421c8f23f856945f3f8bd5b2b1f59da52c2860 +polars==1.44.2 \ + --hash=sha256:1bb331f17a40d9d931101533dcd33637b66edc61eb377b07020dac16a0f0377b \ + --hash=sha256:86c8e26b6c2de8c8d344bb910b74dfc47b118ac3fe0f19b44909467990a0b281 +polars-runtime-32==1.44.2 \ + --hash=sha256:10c0c695a418407617b5159db7d9a21074a733e4c6d61275b6762f25cb31ca99 \ + --hash=sha256:1fd536720668ba203a16a20b08cd6b23057e407a0279cf36b2f35f879d6e3208 \ + --hash=sha256:8598e7a20efba70bb74978c7df7af7c606ff4d79b9b48fdd808250b189bc9a13 \ + --hash=sha256:a1bafb441e99199a62c63bf1bbdc0ea09ee9776dbac2bf31452b5000fb1df2f7 \ + --hash=sha256:b84842f7d621aaca7a52e165e19a24f89db45f8aa13744941430218419a14a67 \ + --hash=sha256:bbf9b45040291dc1c6c588c837019c33557bde25ec536562a9cca9e1f6dfcc45 \ + --hash=sha256:c4a09fb14aad711526346efc0cb2015c2fd0555ce4118b6524e5debbaea65ff5 \ + --hash=sha256:d51040d3ab40157f6db3c62be59cab5b80fb3c8d158924769c4982a1c8eef730 \ + --hash=sha256:e0fd43720c8222ae39919c8ff891636d53b352706087120e62f83544dd3ff782 protobuf==5.29.6 \ --hash=sha256:36ade6ff88212e91aef4e687a971a11d7d24d6948a66751abc1b3238648f5d05 \ --hash=sha256:62e8a3114992c7c647bce37dcc93647575fc52d50e48de30c6fcb28a6a291eb1 \ @@ -1095,154 +1177,142 @@ psutil==7.2.2 \ --hash=sha256:ed0cace939114f62738d808fdcecd4c869222507e266e574799e9c0faa17d486 \ --hash=sha256:eed63d3b4d62449571547b60578c5b2c4bcccc5387148db46e0c2313dad0ee00 \ --hash=sha256:fd04ef36b4a6d599bbdb225dd1d3f51e00105f6d48a28f006da7f9822f2606d8 -pydantic==2.13.2 \ - --hash=sha256:a525087f4c03d7e7456a3de89b64cd693d2229933bb1068b9af6befd5563694e \ - --hash=sha256:b418196607e61081c3226dcd4f0672f2a194828abb9109e9cfb84026564df2d1 -pydantic-core==2.46.2 \ - --hash=sha256:0551f2d2ddb68af5a00e26497f8025c538f73ef3cb698f8e5a487042cd2792a8 \ - --hash=sha256:0d12d786e30c04a9d307c5d7080bf720d9bac7f1668191d8e37633a9562749e2 \ - --hash=sha256:0d5e6d6343b0b5dcacb3503b5de90022968da8ed0ab9ab39d3eda71c20cbf84e \ - --hash=sha256:130a6c837d819ef33e8c2bf702ed2c3429237ea69807f1140943d6f4bdaf52fa \ - --hash=sha256:13ffef637dc8370c249e5b26bd18e9a80a4fca3d809618c44e18ec834a7ca7a8 \ - --hash=sha256:154dbfdfb11b8cbd8ff4d00d0b81e3d19f4cb4bedd5aa9f091060ba071474c6a \ - --hash=sha256:15e42885b283f87846ee79e161002c5c496ef747a73f6e47054f45a13d9035bc \ - --hash=sha256:160ef93541f4f84e3e5068e6c1f64d8fd6f57586e5853d609b467d3333f8146a \ - --hash=sha256:19631e7350b7a574fb6b6db222f4b17e8bd31803074b3307d07df62379d2b2e4 \ - --hash=sha256:1a9124b63f4f40a12a0666df57450b4c24b98407ff74349221b869ec085a5d8e \ - --hash=sha256:1b0ab6d756ca2704a938e6c31b53f290c2f9c10d3914235410302a149de1a83e \ - --hash=sha256:1b877d597afb82b4898e35354bba55de6f7f048421ae0edadbb9886ec137b532 \ - --hash=sha256:1d00b99590c5bd1fabbc5d28b170923e32c1b1071b1f1de1851a4d14d89eb192 \ - --hash=sha256:20fb194788a0a50993e87013e693494ba183a2af5b44e99cf060bbae10912b11 \ - --hash=sha256:233eebac0999b6b9ba76eb56f3ec8fce13164aa16b6d2225a36a79e0f95b5973 \ - --hash=sha256:236f22b4a206b5b61db955396b7cf9e2e1ff77f372efe9570128ccfcd6a525eb \ - --hash=sha256:251a57788823230ca8cbc99e6245d1a2ed6e180ec4864f251c94182c580c7f2e \ - --hash=sha256:2643ac7eae296200dbd48762a1c852cf2cad5f5e3eba34e652053cebf03becf8 \ - --hash=sha256:28708faed0b47f9d68906551a3471421ab0b15c31519e08fdb70ae6cad04d10b \ - --hash=sha256:2c2f6e32548ac8d559b47944effcf8ae4d81c161f6b6c885edc53bc08b8f192d \ - --hash=sha256:2ca790779aa1cba1329b8dc42ccebada441d9ac1d932de980183d544682c646d \ - --hash=sha256:2d1128da41c9cb474e0a4701f9c363ec645c9d1a02229904c76bf4e0a194fde2 \ - --hash=sha256:3098446ba8cf774f61cb8d4008c1dba14a30426a15169cd95ac3392a461193b1 \ - --hash=sha256:30cacc5fb696e64b8ef6fd31d9549d394dd7d52760db072eecb98e37e3af1677 \ - --hash=sha256:315d32d1a71494d6b4e1e14a9fa7a4329597b4c4340088ad7e1a9dafbeed92a9 \ - --hash=sha256:32fbc7447be8e3be99bf7869f7066308f16be55b61f9882c2cefc7931f5c7664 \ - --hash=sha256:33741359798f9dc3d4244a66031575d8a86c004f7853eb9961a49e4b6fab2d0b \ - --hash=sha256:36b1f99dc451f1a3981f236151465bcf995bbe712d0727c9f7b236fe228a8133 \ - --hash=sha256:37a68e6f2ac95578ce3c0564802404b27b24988649616e556c07e77111ed3f1d \ - --hash=sha256:37bb079f9ee3f1a519392b73fda2a96379b31f2013c6b467fe693e7f2987f596 \ - --hash=sha256:387cbe2b2bcace397da91f9b1165a9e75da254bb306b876a43b824cc10f49ce0 \ - --hash=sha256:3a075a29ebef752784a91532a1a85be6b234ccffec0a9d7978a92696387c3da6 \ - --hash=sha256:3b0a2dee92dfaabcfb93629188c3e9cf74fdfc0f22e7c369cb444a98814a1e50 \ - --hash=sha256:404da669e5e02bf7fb2cc56715a609f63af88aea531287494467109f97865fe3 \ - --hash=sha256:41d701bb34f81f0b11c724cc544b9a10b26a28f4d0d1197f2037c91225708706 \ - --hash=sha256:48649cf2d8c358d79586e9fb2f8235902fcaa2d969ec1c5301f2d1873b2f8321 \ - --hash=sha256:48b1059e4f2a6ec3e41983148eb1eec5ef9fa3a80bbc4ac0893ac76b115fe039 \ - --hash=sha256:48b36e3235140510dc7861f0cd58b714b1cdd3d48f75e10ce52e69866b746f10 \ - --hash=sha256:4e6df5c3301e65fb42bc5338bf9a1027a02b0a31dc7f54c33775229af474daf0 \ - --hash=sha256:4f27bc4801358dc070d6697b41237fce9923d8e69a1ce1e95606ac36c1552dc1 \ - --hash=sha256:4f59b45f3ef8650c0c736a57f59031d47ed9df4c0a64e83796849d7d14863a2d \ - --hash=sha256:547381cca999be88b4715a0ed7afa11f07fc7e53cb1883687b190d25a92c56cf \ - --hash=sha256:56291ec1a11c3499890c99a8fd9053b47e60fe837a77ec72c0671b1b8b3dce24 \ - --hash=sha256:57c584af6c375ea3f826d8131a94cb212b3d9926eaff67117e3711bbff3a83a5 \ - --hash=sha256:5a3c2bc1cc8164bedbc160b7bb1e8cc1e8b9c27f69ae4f9ae2b976cdae02b2dd \ - --hash=sha256:5a8e486d238850ddf2b25739317b6551d5bef9925ab004b18c552ff6e645f8a2 \ - --hash=sha256:5e2b4adb0fa46a842c492423e61063d6639cf9aea56380a02630ddcdd4894067 \ - --hash=sha256:631bec5f951a30a4b332b4a57d0cdd5a2c8187eb71301f966425f2e54a697855 \ - --hash=sha256:67db6814beaa5fefe91101ec7eb9efda613795767be96f7cf58b1ca8c9ca9972 \ - --hash=sha256:6b865eb702c3af71cf7331919a787563ce2413f7a54ef49ec6709a01b4f22ce6 \ - --hash=sha256:73a9d2809bd8d4a7cda4d336dc996a565eb4feaaa39932f9d85a65fa18382f28 \ - --hash=sha256:78cb0d2453b50bf2035f85fd0d9cfabdb98c47f9c53ddb7c23873cd83da9560b \ - --hash=sha256:7b1c9bdca33968c0dcd875f8185b3b6275df753fe000178684b0c1738959f3cd \ - --hash=sha256:7b42c6471288dedc979ac8400d9c9770f03967dd187db1f8d3405d4d182cc714 \ - --hash=sha256:7c5a5b3dbb9e8918e223be6580da5ffcf861c0505bbc196ebed7176ce05b7b4e \ - --hash=sha256:7ccfb105fcfe91a22bbb5563ad3dc124bc1aa75bfd2e53a780ab05f78cdf6108 \ - --hash=sha256:7dcb9d40930dfad7ab6b20bcc6ca9d2b030b0f347a0cd9909b54bd53ead521b1 \ - --hash=sha256:7f700a6d6f64112ae9193709b84303bbab84424ad4b47d0253301aabce9dfc70 \ - --hash=sha256:807eeda5551f6884d3b4421578be37be50ddb7a58832348e99617a6714a73748 \ - --hash=sha256:83aef30f106edcc21a6a4cc44b82d3169a1dbe255508db788e778f3c804d3583 \ - --hash=sha256:83ee76bf2c9910513dbc19e7d82367131fa7508dedd6186a462393071cc11059 \ - --hash=sha256:8641c8d535c2d95b45c2e19b646ecd23ebba35d461e0ae48a3498277006250ab \ - --hash=sha256:8a6572f3238851fde28b3194ef98cec9dbe66f1614caf4646239ea87f324121a \ - --hash=sha256:8cbd9d67357f3a925f2af1d44db3e8ef1ce1a293ea0add98081b072d4a12e3b4 \ - --hash=sha256:8f09a713d17bcd55da8ab02ebd9110c5246a49c44182af213b5212800af8bc83 \ - --hash=sha256:8f557ce9106850c79252792962d78b987e11fcdc10e5c2252443b9a485d3bfe5 \ - --hash=sha256:91155b110788b5501abc7ea954f1d08606219e4e28e3c73a94124307c06efb80 \ - --hash=sha256:9262d11d0cd11ee3303a95156939402bed6cedfe5ed0e331b95a283a4da6eb8b \ - --hash=sha256:99ebade8c9ada4df975372d8dd25883daa0e379a05f1cd0c99aa0c04368d01a6 \ - --hash=sha256:9a7c43a0584742dface3ca0daf6f719d46c1ac2f87cf080050f9ae052c75e1b2 \ - --hash=sha256:9cc0eee720dd2f14f3b7c349469402b99ad81a174ab49d3533974529e9d93992 \ - --hash=sha256:9f0e686960ffe9e65066395af856ac2d52c159043144433602c50c221d81c1ba \ - --hash=sha256:a070c7769fec277409ad0b3d55b2f0a3703a6f00cf5031fe93090f155bf56382 \ - --hash=sha256:a0891a9be0def16fb320af21a198ece052eed72bf44d73d8ff43f702bd26fd6b \ - --hash=sha256:ac204542736aa295fa25f713b7fad6fc50b46ab7764d16087575c85f085174f3 \ - --hash=sha256:ac8a65e798f2462552c00d2e013d532c94d646729dda98458beaf51f9ec7b120 \ - --hash=sha256:b089a81c58e6ea0485562bbbbbca4f65c0549521606d5ef27fba217aac9b665a \ - --hash=sha256:b308da17b92481e0587244631c5529e5d91d04cb2b08194825627b1eca28e21e \ - --hash=sha256:b317a2b97019c0b95ce99f4f901ae383f40132da6706cdf1731066a73394c25c \ - --hash=sha256:b478652b580cd4cf7f2dd40dc9fde594ed1c84e5df4bafefffb8387ddb74049f \ - --hash=sha256:b50f9c5f826ddca1246f055148df939f5f3f2d0d96db73de28e2233f22210d4c \ - --hash=sha256:b737c0b280f41143266445de2689c0e49c79307e51c44ce3a77fef2bedad4994 \ - --hash=sha256:b839d5c802e31348b949b6473f8190cddbf7d47475856d8ac995a373ee16ec59 \ - --hash=sha256:b902f0fc7c2cf503865a05718b68147c6cd5d0a3867af38c527be574a9fa6e9d \ - --hash=sha256:bc1e8ce33d5a337f2ba862e0719b8201cd54aaed967406c748e009191d47efdd \ - --hash=sha256:bd195af20e53aaac6cf5d7862e34dfdf86351720c858581ccb6563e02ae59421 \ - --hash=sha256:c05f53362568c75476b5c96659377a5dfd982cfbe5a5c07de5106d08a04efc4f \ - --hash=sha256:c1ce5b2366f85cfdbf7f0907755043707f86d09a5b1b1acebbb7bf1600d75c64 \ - --hash=sha256:c2012f64d2cd7cca50f49f22445aa5a88691ac2b4498ee0a9a977f8ca4f7289f \ - --hash=sha256:c2e25417cec5cd9bddb151e33cb08c50160f317479ecc02b22a95ec18f8fe004 \ - --hash=sha256:c326a2b4b85e959d9a1fc3a11f32f84611b6ec07c053e1828a860edf8d068208 \ - --hash=sha256:c3ad79ed32004d9de91cacd4b5faaff44d56051392fe1d5526feda596f01af25 \ - --hash=sha256:c6b1064f3f9cf9072e1d59dd2936f9f3b668bec1c37039708c9222db703c0d5b \ - --hash=sha256:caeed15dcb1233a5a94bc6ff37ef5393cf5b33a45e4bdfb2d6042f3d24e1cb27 \ - --hash=sha256:d07d6c63106d3a9c9a333e2636f9c82c703b1a9e3b079299e58747964e4fdb72 \ - --hash=sha256:d157c48d28eebe5d46906de06a6a2f2c9e00b67d3e42de1f1b9c2d42b810f77c \ - --hash=sha256:d26e9eea3715008a09a74585fe9becd0c67fbb145dc4df9756d597d7230a652c \ - --hash=sha256:d333a50bdd814a917d8d6a7ee35ba2395d53ddaa882613bc24e54a9d8b129095 \ - --hash=sha256:d61db38eb4ee5192f0c261b7f2d38e420b554df8912245e3546aee5c45e2fd78 \ - --hash=sha256:d8060f42db3cd204871db0afd51fef54a13fa544c4dd48cdcae2e174ef40c8ba \ - --hash=sha256:d9ffa75a7ef4b97d6e5e205fabd4304ef01fec09e6f1bdde04b9ad1b07d20289 \ - --hash=sha256:dc4620a47c6fe6a39f89392c00833a82fc050ce90169798f78a25a8d4df03b6e \ - --hash=sha256:dd51dd16182b4bfdcefd27b39b856aa4a57b77f15b231a2d10c45391b0a02028 \ - --hash=sha256:de12004a7da7f1eb67ece37439a5a23a915636085dd042176fda362e006e6940 \ - --hash=sha256:de87422197cf7f83db91d89c86a21660d749b3cd76cd8a45d115b8e675670f02 \ - --hash=sha256:df73724fce8ad53c670358c905b37930bd7b9d92e57db640a65c53b2706eee00 \ - --hash=sha256:dfff584138be087457cc474791d082fdfe32b0d427613d5494a679fe9f4eaef5 \ - --hash=sha256:e094a8f85db41aa7f6a45c5dac2950afc9862e66832934231962252b5d284eed \ - --hash=sha256:e4e2c72a529fa03ff228be1d2b76944013f428220b764e03cc50ada67e17a42c \ - --hash=sha256:e698fe2d8f75c4e9368ee3f4e0d3322d1180be2ec4592d3f73b2572765b1c705 \ - --hash=sha256:e69aa5e10b7e8b1bb4a6888650fd12fcbf11d396ca11d4a44de1450875702830 \ - --hash=sha256:e80011f808b03d1d87a8f1e76ae3da19a18eb706c823e17981dcf1fae43744fc \ - --hash=sha256:e9fcabd1857492b5bf16f90258babde50f618f55d046b1309972da2396321ff9 \ - --hash=sha256:ea1ad8c89da31512fe2d249cf0638fb666925bda341901541bc5f3311c6fcc9e \ - --hash=sha256:f0c1cbb7d6112932cc188c6be007a5e2867005a069e47f42fe67bf5f122b0908 \ - --hash=sha256:f1a6197eadff5bd0bb932f12bb038d403cb75db5b0b391e70e816a647745ddaf \ - --hash=sha256:fa8ab79cea8a1bfe52a21a9b37859c15478d009f242f47737201ecea885b9dd9 \ - --hash=sha256:fb3ec2c7f54c07b30d89983ce78dc32c37dd06a972448b8716d609493802d628 \ - --hash=sha256:fcaa1c3c846a7f6686b38fe493d1b2e8007380e293bfef6a9354563c026cbf36 \ - --hash=sha256:fd05e1edb6a90ad446fa268ab09e59202766b837597b714b2492db11ee87fab9 +pydantic==2.13.5 \ + --hash=sha256:346a034f080da3755d8e9cb5e00e8b07de1d39e4f6e2c87d8ab7cafa0b269a73 \ + --hash=sha256:51a9c5f7b2f8e636f04c6cada605d9b6a3bf1348fdf945a3d8869b19bba0ee08 +pydantic-core==2.46.5 \ + --hash=sha256:013d6f3483d81e02e7c328831808f336c8596ee33b4bd4026b9ffb1e960b8942 \ + --hash=sha256:03b9666e41e35d8909852ba191a0607520f81b74eaf12ccf8737005dbb313821 \ + --hash=sha256:045ab3b6d308439e32b81cc173bba5b9018bc6ed896afd0c65b3b009b1699af5 \ + --hash=sha256:0bddb4020d8f04175865ccd17eff3040874fc11fb593f424edb452653b4b947c \ + --hash=sha256:0cdbada856a1c69a7624a64d3d9aefe79300bd6ef827b43a4f265010b9b55184 \ + --hash=sha256:0fc5be0abd4a407e200d844b404e33639a554e7bd0d448e7b9ae181be4789ac2 \ + --hash=sha256:10416c15b8839ecc4ef4d0885da76da6fd0f67333a0eb8aff6d93c4b8f2910fc \ + --hash=sha256:15f4a94963c95accac15b7b657bb177d3ad82bb90b0d0526d9a9b85079925db5 \ + --hash=sha256:18a09e1e1011b462f2e32774f25859ef1223d5c2b0546a633cf56654710721e0 \ + --hash=sha256:193375f3548919d3f0b60936ca113ada3e38f264f91b9b8e0508efaad57be931 \ + --hash=sha256:1a353f84de772f423b5ffb11d7ae352fbbef0f446f3c0b0af0f8236d7233606e \ + --hash=sha256:1e449def1945a462c464331254e5a44fca7c3b4f9aedf59ec2f50f8066dd8e25 \ + --hash=sha256:1e5aad1220a1192c42341c8fd4a8686657e73ab2a920c970bdc4de334fe3193d \ + --hash=sha256:200aa3dc9f8d54f0754f43247c0bad0999fdcfbfd2488384dd44f37279271fe6 \ + --hash=sha256:2471fd51c61c610e1dcf7de44d7299283661654d11264ab4802b303368d69c47 \ + --hash=sha256:24922243639cbdac66c75fcb6fd6495a9cb52b213d62f9a0d16f0310b1ff8038 \ + --hash=sha256:28a6a556cd3b6066bea827857f9d9cce027c96f776e512f544a581f9e42161f8 \ + --hash=sha256:2bc9419666990c06d7397831f2126a1ecc3594aaa3ff7de5bf2d066802f4e07b \ + --hash=sha256:2cbd9a5eff05e51c447c34dfa4632145b26b09120cf04bd0c871e44c1a5e1c9a \ + --hash=sha256:2d330aaba8621b1edcec8ae2c4050f63b84ccf6d98723a8f212e9684713abf0e \ + --hash=sha256:2d5d76654becf5efd62c9e51c3756c67b49498b0c9a40884934c40807adbd074 \ + --hash=sha256:337639ba62a11acde6ef3aeb08c8ea755f8ef1fe5e513356c0f36a2b0d7568b0 \ + --hash=sha256:347ec774390c87326a2e4929d58d3f7e8763a104d5d35f4cd595a4c952366433 \ + --hash=sha256:356c8368cbc321050b169595683a2e1d63413b1e0e2868b330af9fc14c616d3f \ + --hash=sha256:37ae34309d7bd8c0d61ab839668058f2a7962ea1fc51d105d2db228fe0618034 \ + --hash=sha256:37ea7b83c935e5b0d68c9449b82651accf78a10828b2c02b2f2d9e9496446c21 \ + --hash=sha256:3a3e26b6a8274211bddee2d0e4d0d42778f17a34510f49d2ec44b58abfc41736 \ + --hash=sha256:3aa166e99c4f2985407fb8714aebede877ecb5455cf321b606adca926d30d5a0 \ + --hash=sha256:3d2652072b2d774947ba5cf78a9e59644ac62ee572daf6dd2e1dfe905e15b2b7 \ + --hash=sha256:40375c2d05acec10323e45dfe2077ac44bc74659008614af5069034e2cfc781c \ + --hash=sha256:413a717a410d0c817ef5b786a059415550b3794e1d0c2abffd9efb93a3d9f7b4 \ + --hash=sha256:46c25dda9d092a06c08db76ffe0a197107904d0dfac653f7d5306bbcd6d6119c \ + --hash=sha256:49776eab08766a08dfff7012f8b422dcd7e25e43b316eedf0477c24fcfa84b7c \ + --hash=sha256:4d44cf99ddebf875f9b68cc267aa684c99b7b44fe63ee1cac4ec163807290069 \ + --hash=sha256:4dedce55295becb61921e386b99d4f2706045306e7fa52249a33004c837379fb \ + --hash=sha256:4f8507560a9284e1370bb048ed4282012fbef4e8d109875b95e884d228552061 \ + --hash=sha256:4fdc8b93a41521988916eeaa271173fcca7fa0803d62f87675aac8dcec1c8e29 \ + --hash=sha256:5086029a57366b8cf81b130a43908738095c270c21a8d7f0e8bdfdb89718e2f3 \ + --hash=sha256:52e24eacdb536cade636aa90fb851835222becff8484b7001fdc78cb0290f2aa \ + --hash=sha256:53feb344243bb9510a9dec7bf3cf1b64d88a98af5dc7872a5160465f8b198c8e \ + --hash=sha256:545f26c504b27c3758439a5e6d9349931f0a04f855668d5fe323c89e82300a38 \ + --hash=sha256:54d510bac3ee52247af28ed4bb18a1e799f040ac60fd2bf5ccd4c92f1fbe786f \ + --hash=sha256:5cb482e9e84c851f4e623fe4acc1ced89168cf1fe18f7089db4548c8f5bbb65b \ + --hash=sha256:5e81740c09e310f5aa5cbd3e434a01c154d4bef93241c7877b39f211d2b78ba8 \ + --hash=sha256:5ee239d575f80b08eca11f6e20f90c4c695de7825c67eefe6091fbf20dda648e \ + --hash=sha256:5f194189415698233dd1114a093a9b56e61e2c57e11b469be3b0506f46f0771c \ + --hash=sha256:5f93c5fe914d75fbec9a49209b00da5f08e9e467d69da2b1510c81940cfd10be \ + --hash=sha256:657b40d6240c0a7b6a64b30f22d1e3aa631c7e846c621b0c0f6d1d75e2e15ea6 \ + --hash=sha256:6d30e1a4f138b8951063e9a394752a9179b51da288ffa507b1e659222f4c1793 \ + --hash=sha256:6f7b393a8b3da82f5c1fc0751e6d01ac6c55b93c18226a60bdfba4a724efafd1 \ + --hash=sha256:701b2e04b560eeb4bddf7a25ab8ca476176e34fdbd9a0e18196f0d12d4685f0b \ + --hash=sha256:771cf63ae0b1b50dd22e5f3e3549fab5f3f4ff1635d352a9e1a97fe01c7b2e64 \ + --hash=sha256:79bdfa52f843137045b2d081cc05c120ba6665d29b7559c2c47690906f39279f \ + --hash=sha256:7ac031912d54f3d83ef3b3eb98dfabc1608802e2202263d25957eeed40b94761 \ + --hash=sha256:7b0fc826b16c55e561e5d2a0c5c77b051ba1d92808118c4e4b5390f5e0cf191d \ + --hash=sha256:7c6be839a5a8312626b32029a415644a0846b420bc8b52b95b28cd92da162168 \ + --hash=sha256:816ff0a6550ffc06c098ccd2e0698600f9aa7da192a79eaa6f9af504a35db869 \ + --hash=sha256:82a36973cf8a2ef5406f4fe2edbf8ed0c99629535d959e0b100c76a32535a111 \ + --hash=sha256:837b396ca3d7b74091ca623f6cbd8351bd42d670a79c2683e79fb089f06a2de5 \ + --hash=sha256:850a08d167dde16db8702c274f320c7be9d7da6f6dff2b58b18f9e815bd94f5b \ + --hash=sha256:8816f3d218beb4b787de5c9759c259b8fa61f9dec42dc7811f320a33771778b7 \ + --hash=sha256:892a881d5f68c2b9ea304b7a6c2c60d9343df578a311b0f86b94bc8f1ffe8129 \ + --hash=sha256:895395f8918627b04efb1ad2a4cf605387143300ba03304cd1dfa6d03f5e095e \ + --hash=sha256:8b10e3e8fd7ddc2bd915848a2768e44c15b22936f1cc54c462ad1164deb02655 \ + --hash=sha256:8e24d8f05fa2d28513d94e877e9c75ad66175376209b3977f916e240e623193c \ + --hash=sha256:8feeac04b5794e513e710af2f9c87d49f31a6dc47967bb264a1fed61a8989bec \ + --hash=sha256:9432f3598db432cb51c5b37fdbf29a60fcccc79e30d37a05022776a6bc4ab689 \ + --hash=sha256:976e1128455aa595ea04c79ccfedff1aaeab96ee013fcc916bed120c4f0ad94f \ + --hash=sha256:978e7b97d4824b5be09c69fb70507cbde3b0323fc147332ca40a94d9a6a0ebbf \ + --hash=sha256:97bf8de4d541598c94a59344eeb988a94c08ff76b5723c41f6567ec18c7892ea \ + --hash=sha256:97cf3eb53a8cccacf9d46686a0926186c9bfb5574f2ed66d3639d5fe117cd3a9 \ + --hash=sha256:9b68938dd5b0c783d88ff8e2dcc69451b5eb936fe212d516b21b9d5567f6d464 \ + --hash=sha256:9c4b71f10dd532fb7a5cbc8f58707779e64f03a258c2bf8bfbaecfcd9970b519 \ + --hash=sha256:9f47b8a949e60f027f0aa0a6f6c7b7e9c55cbf4380d10b344e282fa4e7ab1e1b \ + --hash=sha256:a1dee1b804ff4d11c663636cf15d2ea47e9f79cd56c033fb1cbf08924842a48f \ + --hash=sha256:a2468d93d181667a7abd66e1b64bb9f76f361b0fef8faddf687456453576f5ee \ + --hash=sha256:a2a5e1d0ff29adddc9f6d6821a66302e4493f8ca898b715b6b1182c2c201ea0a \ + --hash=sha256:a39ac25a9a2fa4072efdb429833c4a4c8009a51ff9eea3eeae131713cd27991e \ + --hash=sha256:a445486499897b88a7d6c310c88ed64dd37b1b59bfd7ae9107490bbb362f47d6 \ + --hash=sha256:a91c17edf6eea2402cb5457b4c89e99bc5ed1004aa34c4adf1d4258c1a5c22c2 \ + --hash=sha256:ab4b66edffb32d9e951efb3814bd104b8367a7501b81b955cacb5726d897389f \ + --hash=sha256:aca6c767f552b21b10f774aeac128e828eafb796adfa1b666a18bf6321453c3a \ + --hash=sha256:acf8a67ba51f4ca9ddbd0e6b3000a65ac51ab734661778b3e7ba64d99a710f2f \ + --hash=sha256:b10ec717381bdbfafef34607824db4c91de69ff085e4fca3b2af91b4fa17e68a \ + --hash=sha256:b49924c73a235e969511bf2aabdff3beebf9820931f646c80274d5d780010c47 \ + --hash=sha256:b6acfb46a814762367fb7ba0828b0a17d441b92ce249a0e007474c9072662dda \ + --hash=sha256:b7ca9034437b6022f941f4857459562ee00a560b97e7cce8a0ec5a74fc6766e0 \ + --hash=sha256:b98134087d9de723658d17a42c7d0da8d6e2ef08015dee7dc93889047315f5e4 \ + --hash=sha256:b9fe6fb92520e3fd61f2e49000b6911b188824f089b75973ea06d6267f0b476d \ + --hash=sha256:bce57638e08ac148e5778cce7feb968307a727d66f8e2274a543d0cf0c9ad6a3 \ + --hash=sha256:c14ad3bdc85ee7f318742c457ca3968a92126d144b15721c759033bfb06296c2 \ + --hash=sha256:c1c43ad4339643d70ebb8124e1305a7dab423001eff58bb41a0f731adbc98355 \ + --hash=sha256:c3471e5c4a949c26ec00a77f01df59096aa9495877de76fd60a980f8ee6be461 \ + --hash=sha256:c583b927a8838dab890706a6fa7573fbb8b70e24000ef9f7238e2d6f6435a5ed \ + --hash=sha256:c76fe65e607be28c7fd4d56fc3c42b1583aa058ce3408b7ad0fd540171d31f9f \ + --hash=sha256:c7ea57fc63aa7da93a1bd2d644e6577befae10c52c4e36377635eea1056a74f5 \ + --hash=sha256:cd5214352ae68f3b5e9af7768bdc5253695ee069675db3480518420b3be881f2 \ + --hash=sha256:cdbb78909f52b981d3b2d56b97328d71eb0b974c36bd77c920123a7ebb192829 \ + --hash=sha256:cdc8b74ecc48c0cb1e9607a05ec4e9e88db60a19ffcc9a1d5f9088ede40c8dc0 \ + --hash=sha256:d0a24b40877af2de4950252be9d21eaf7fb07660f3c2cae1f56c6b599ada5266 \ + --hash=sha256:d22a945598fb91236b4dd793a6e42e4f3dd7740bb5aace5ebd7d4c08d13bb575 \ + --hash=sha256:d2f9fc07a8042a8f95925b35c4f04f469707c981fc33245b6ca187cf5d2dd290 \ + --hash=sha256:d625a186a65201c23a9e3b8ed9c47e90a026e03256608cc91851c6709096844f \ + --hash=sha256:d925f3d9afd05a8c0fb3a1031463a8d59ebe5e2afad297e29c78be19e13b4e62 \ + --hash=sha256:e64e88d5585bea9ce95861079de72006c7fa6d3df4e3a3b65ba31eb979c15c9f \ + --hash=sha256:e652ab17569c94bff5475520f907b7148b8c24036a8ebbe5cf7cf7493d28579a \ + --hash=sha256:e7b891faeedeafba41b2983e5001a81b6a915b69544c7e7570d1989ce1c36ac7 \ + --hash=sha256:e80675d75ae2cd14372cb65cad5400d9347a3d3f6c13000183f22dfd027283ed \ + --hash=sha256:e9c134bb666dd54b778b9fc0d2b50cbb7f979b9e3716f26a88c9ab3b6fc1dd0f \ + --hash=sha256:eb7d8d0e5886a89a55d2eef490e272fa965a9d57c6b29a5b5088a7997ec2cad1 \ + --hash=sha256:ecb42011e12ee19cafbc312887cbf3546959fe02fbad44f272d4be5baa997615 \ + --hash=sha256:ef3fbbf161dc9351a2fe0422e51b129f9e97e42385bd0320b309c15f7d287dd8 \ + --hash=sha256:efd62a42486f1bda5d24cb4f63d15a3c7768375fe83d36f9417b4ad7a2fb20b3 \ + --hash=sha256:f077d0b97ab11fa7dcc633fca53515f290bca8a8a633e966d5b6d1879d9ed01a \ + --hash=sha256:f332f0e72a5a0400141f830744e141bf9f97917878dbe968669e8a7fefea78ff \ + --hash=sha256:f7b0ec93a2893de856652154d73b7ba622f26fa97726487dcac373de5f4c6084 \ + --hash=sha256:fa10ef4112775900e7a0661068635eb67b2ab824fbde764de6e0e21982a93db0 \ + --hash=sha256:fc5d783bd4a2387e97b8a2d5ec781cfb92b3d893bf82370548e99db5915935d3 \ + --hash=sha256:fc8515076c11f3cfdf4fb142dcca0fe384b1230a3b5415458ac84f3e0903ec13 \ + --hash=sha256:ff218293c9c806138dca139765e3b067621be52bcd93cdc14c7711be7ddc90a9 pydot==3.0.4 \ --hash=sha256:3ce88b2558f3808b0376f22bfa6c263909e1c3981e2a7b629b65b451eee4a25d \ --hash=sha256:bfa9c3fc0c44ba1d132adce131802d7df00429d1a79cc0346b0a5cd374dbe9c6 -pygments==2.20.0 \ - --hash=sha256:6757cd03768053ff99f3039c1a36d6c0aa0b263438fcab17520b30a303a82b5f \ - --hash=sha256:81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946d0176 -pynvvideocodec==2.1.0 \ - --hash=sha256:09cdd222c761855cde9b05ddc13d21893473cebae50077eca20b4eac0fed8acb \ - --hash=sha256:133b47336cd9b3a161707b02d2ceb9e5af387cb9833335d60c16eddf7322b3ea \ - --hash=sha256:34ddbb22230f4963f5b25b41af0a1579c3731fb95c79993502dd014a4dec7fd6 \ - --hash=sha256:3e1ecef741e1943978911998aa1a9d683be8b005957646db6c9b0d53f943f9af \ - --hash=sha256:6d653240ce835e9ab531a4d61350a4af54f7f7859e5392e1323c030ffcfc8ff0 \ - --hash=sha256:7c35887e294613825c9011dc1b6962d0c0374049b1ce8939cee97db5d82b28e8 \ - --hash=sha256:af7e44d13cfb524626c72d947f12a3b192cfa1deb4b598a7778bd4aa1e6fd4ac \ - --hash=sha256:b8d9b47b5c910953d6c24fa60fd7bf6ac57f3d4a20831fcaf35e039349a91d42 \ - --hash=sha256:c317fbad725b1b81936b863edcd98920bc4be423b9965719657030359d7afe29 \ - --hash=sha256:e778af3319a759c1728065e9e4682f591c44dedbbc90c1ca71d025dce65d6a58 \ - --hash=sha256:ee5d2dc56ac5ca8d223fa6fe8f57c67faf5ee1c9360216d9194cfbcd3f9d3948 +pygments==2.21.0 \ + --hash=sha256:2363c69b61c4a97c838da3b130dcd6468f4848992b21a82f2a63ec34377137d9 \ + --hash=sha256:610ca751c9bc2492b38eb9a38a7fbc93edbbb2d7182edaf34e66ae493dee5c8c pyparsing==3.3.2 \ --hash=sha256:850ba148bd908d7e2411587e247a1e4f0327839c40e2e5e6d05a007ecc69911d \ --hash=sha256:c777f4d763f140633dcb6d8a3eda953bf7a214dc4eff598413c070bcdc117cbc -pytest==9.0.3 \ - --hash=sha256:2c5efc453d45394fdd706ade797c0a81091eccd1d6e4bccfcd476e2b8e0ab5d9 \ - --hash=sha256:b86ada508af81d19edeb213c681b1d48246c1a91d304c6c81a427674c17eb91c +pytest==9.1.1 \ + --hash=sha256:1088fbde8f2b49d95a549a195707afa7a76a3ce9bcadc26b6d71f0ffda5fe313 \ + --hash=sha256:37a86b45efb9a47a61a36449063e8e18d0cab3161329fc099eb21783169c4f0c python-dateutil==2.9.0.post0 \ --hash=sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3 \ --hash=sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427 @@ -1320,36 +1390,30 @@ pyyaml==6.0.3 \ --hash=sha256:f7057c9a337546edc7973c0d3ba84ddcdf0daa14533c2065749c9075001090e6 \ --hash=sha256:fa160448684b4e94d80416c0fa4aac48967a969efe22931448d853ada8baf926 \ --hash=sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0 -requests==2.33.1 \ - --hash=sha256:18817f8c57c6263968bc123d237e3b8b08ac046f5456bd1e307ee8f4250d3517 \ - --hash=sha256:4e6d1ef462f3626a1f0a0a9c42dd93c63bad33f9f1c1937509b8c5c8718ab56a +requests==2.34.2 \ + --hash=sha256:2a0d60c172f83ac6ab31e4554906c0f3b3588d37b5cb939b1c061f4907e278e0 \ + --hash=sha256:f288924cae4e29463698d6d60bc6a4da69c89185ad1e0bcc4104f584e960b9ed rich==15.0.0 \ --hash=sha256:33bd4ef74232fb73fe9279a257718407f169c09b78a87ad3d296f548e27de0bb \ --hash=sha256:edd07a4824c6b40189fb7ac9bc4c52536e9780fbbfbddf6f1e2502c31b068c36 -safetensors==0.7.0 \ - --hash=sha256:0071bffba4150c2f46cae1432d31995d77acfd9f8db598b5d1a2ce67e8440ad2 \ - --hash=sha256:07663963b67e8bd9f0b8ad15bb9163606cd27cc5a1b96235a50d8369803b96b0 \ - --hash=sha256:12f49080303fa6bb424b362149a12949dfbbf1e06811a88f2307276b0c131afd \ - --hash=sha256:1d060c70284127fa805085d8f10fbd0962792aed71879d00864acda69dbab981 \ - --hash=sha256:42cb091236206bb2016d245c377ed383aa7f78691748f3bb6ee1bfa51ae2ce6a \ - --hash=sha256:473b32699f4200e69801bf5abf93f1a4ecd432a70984df164fc22ccf39c4a6f3 \ - --hash=sha256:54bef08bf00a2bff599982f6b08e8770e09cc012d7bba00783fc7ea38f1fb37d \ - --hash=sha256:5d72abdb8a4d56d4020713724ba81dac065fedb7f3667151c4a637f1d3fb26c0 \ - --hash=sha256:672132907fcad9f2aedcb705b2d7b3b93354a2aec1b2f706c4db852abe338f85 \ - --hash=sha256:6999421eb8ba9df4450a16d9184fcb7bef26240b9f98e95401f17af6c2210b71 \ - --hash=sha256:7b95a3fa7b3abb9b5b0e07668e808364d0d40f6bbbf9ae0faa8b5b210c97b140 \ - --hash=sha256:8469155f4cb518bafb4acf4865e8bb9d6804110d2d9bdcaa78564b9fd841e104 \ - --hash=sha256:94fd4858284736bb67a897a41608b5b0c2496c9bdb3bf2af1fa3409127f20d57 \ - --hash=sha256:b0f6d66c1c538d5a94a73aa9ddca8ccc4227e6c9ff555322ea40bdd142391dd4 \ - --hash=sha256:c74af94bf3ac15ac4d0f2a7c7b4663a15f8c2ab15ed0fc7531ca61d0835eccba \ - --hash=sha256:c82f4d474cf725255d9e6acf17252991c3c8aac038d6ef363a4bf8be2f6db517 \ - --hash=sha256:cdab83a366799fa730f90a4ebb563e494f28e9e92c4819e556152ad55e43591b \ - --hash=sha256:cfdead2f57330d76aa7234051dadfa7d4eedc0e5a27fd08e6f96714a92b00f09 \ - --hash=sha256:d1239932053f56f3456f32eb9625590cc7582e905021f94636202a864d470755 \ - --hash=sha256:dac7252938f0696ddea46f5e855dd3138444e82236e3be475f54929f0c510d48 \ - --hash=sha256:dc92bc2db7b45bda4510e4f51c59b00fe80b2d6be88928346e4294ce1c2abe7c \ - --hash=sha256:e07d91d0c92a31200f25351f4acb2bc6aff7f48094e13ebb1d0fb995b54b6542 \ - --hash=sha256:f4729811a6640d019a4b7ba8638ee2fd21fa5ca8c7e7bdf0fed62068fcaac737 +safetensors==0.8.0 \ + --hash=sha256:040070828e36dc8e122178bbbd5830ff9e97920affb84cbe0f46442497bed358 \ + --hash=sha256:096ec1a98435df7beb08853bb5aa9081a84f23d0adc67ed1a0a10550f608373f \ + --hash=sha256:2ddf52eac562eda224f99acfa7889d02968c1fd59a5b011ae7d8137c37e9c02d \ + --hash=sha256:3ae091f16662658bdc019a4ff6cb4c085bb7d725eb5978b183ffd265863b6d2d \ + --hash=sha256:4124502b78f03534117c848f87a39b8f31e577b15eff423bf8bfb95f2a8c30d0 \ + --hash=sha256:4a95ae2b05d7726d751da4ebf626a2ca782b706e101bd894c95bc2450b1cffcc \ + --hash=sha256:7a46e5ff292c356d6991e60942ba7f79817682d3a2cef0702136448cb9c4d235 \ + --hash=sha256:7bc0a787ba8a35be368ee3574edfa2b1ad389eebd0a72e482ae275490e3f6c98 \ + --hash=sha256:87eec7ffed2b809f05a398a8becb7d013f19f7837cd15d9748580d6cf30dbaf4 \ + --hash=sha256:8e080062fcde23be189565e1c3305d16751a218ecf9412c8601e64204eb6f846 \ + --hash=sha256:8e9f537aa183a38ace122d27303dcd986b26bd2a7591f9181d7f0c396f4677ca \ + --hash=sha256:c554f85858e05226d3c2828e32395e677434685d6d94594a41643361c5e837f0 \ + --hash=sha256:c80201d22cbf405b80647a60ada77bba06c8fba2da2743ba1e89cdcc39a81f25 \ + --hash=sha256:f7838e5135a406ad3e02efdcb8cf2e5397d368b0154537c4fec682dbc544d452 \ + --hash=sha256:fabaf3e0f18a6618d9b36560682562157f77c2b71fcffc7b432be2baed9d753d \ + --hash=sha256:fcdd41ec4628fee5799f807c73c353629130fbd942aa23d83c623dd6c9d52d78 \ + --hash=sha256:fd6f3f93c9a0a7cc2788ee63fb763353d4bd2e89b0751bc78fcf7dda00bea774 scikit-learn==1.7.2 \ --hash=sha256:0486c8f827c2e7b64837c731c8feff72c0bd2b998067a8a9cbc10643c31f0fe1 \ --hash=sha256:0b7dacaa05e5d76759fb071558a8b5130f4845166d88654a0f9bdf3eb57851b7 \ @@ -1432,9 +1496,9 @@ scipy==1.15.3 \ six==1.17.0 \ --hash=sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274 \ --hash=sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81 -starlette==1.3.0 \ - --hash=sha256:bb58cbb7a699da4ee4be9ed4cdfe4bc5b0390aa6dac1d1ac714ebebe8dc3c8df \ - --hash=sha256:ff4ca1bc23de6a45cdfbbeb9b3caaea524c9221cdd8a6684ad7a4f651a83890b +starlette==1.6.0 \ + --hash=sha256:a86dd39d14bb45f85a3d18525215a9ef0cfd1f192ac793220e72598c90335f0c \ + --hash=sha256:d4e3ac5e546444960c710297a3c9fc3f7ebae1b7e963f3d36173b49da535be9b sympy==1.14.0 \ --hash=sha256:d3d3fe8df1e5a0b42f0e7bdf50541697dbe7d23746e894990c030e2b05e72517 \ --hash=sha256:e091cc3e99d2141a0ba2847328f5479b05d94a6635cb96148ccb3f34671bd8f5 @@ -1593,32 +1657,32 @@ triton==3.6.0 \ --hash=sha256:d002e07d7180fd65e622134fbd980c9a3d4211fb85224b56a0a0efbd422ab72f \ --hash=sha256:e8e323d608e3a9bfcc2d9efcc90ceefb764a82b99dea12a86d643c72539ad5d3 \ --hash=sha256:ef5523241e7d1abca00f1d240949eebdd7c673b005edbbce0aca95b8191f1d43 -typing-extensions==4.15.0 \ - --hash=sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466 \ - --hash=sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548 -typing-inspection==0.4.2 \ - --hash=sha256:4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7 \ - --hash=sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464 -ultralytics==8.4.38 \ - --hash=sha256:88e4c26205a8472773725db60346a46bbd5ac35e9dab19a7f6f954fa202aedcd \ - --hash=sha256:f4d0c1efb04b75e3fab1481e4d6eecc352ad3736223e4980671f424daa95a99a -ultralytics-thop==2.0.18 \ - --hash=sha256:21103bcd39cc9928477dc3d9374561749b66a1781b35f46256c8d8c4ac01d9cf \ - --hash=sha256:2bb44851ad224b116c3995b02dd5e474a5ccf00acf237fe0edb9e1506ede04ec +typing-extensions==4.16.0 \ + --hash=sha256:481caa481374e813c1b176ada14e97f1f67a4539ce9cfeb3f350d78d6370c2e8 \ + --hash=sha256:dc983d19a509c94dba722ee6abd33940f7c05a89e243c47e907eb4db6f1a43e5 +typing-inspection==0.4.4 \ + --hash=sha256:547274fa6b0a561ccf549cc9524b999a578e737d015d8709d021f9d0d13bea47 \ + --hash=sha256:65b8397ba37ccbce054456aaccddfc91e6e3083c92824df348d96ca832f3f147 +ultralytics==8.4.146 \ + --hash=sha256:5c3618f4c5f7b89ad6afdf789bf4d90645054f4eb78c211aa7eed1e186fa65fc \ + --hash=sha256:73e826b090d35af5a54130be1875d648146d689cf281313dd1a15bc85c557051 +ultralytics-thop==2.1.6 \ + --hash=sha256:0ec2df8ebd3db35795e1f80cdc8bce6734446dbe989bca1b0c89396353f0f08c \ + --hash=sha256:23f7b8ad124fa3432c1a7de9279102c4fdda699216032a7dff49f87ec3d1a3af urllib3==2.7.0 \ --hash=sha256:231e0ec3b63ceb14667c67be60f2f2c40a518cb38b03af60abc813da26505f4c \ --hash=sha256:9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897 -uvicorn==0.44.0 \ - --hash=sha256:6c942071b68f07e178264b9152f1f16dfac5da85880c4ce06366a96d70d4f31e \ - --hash=sha256:ce937c99a2cc70279556967274414c087888e8cec9f9c94644dfca11bd3ced89 +uvicorn==0.52.4 \ + --hash=sha256:73acfee47a0b133c5de13d219492d62d8a31e935f4fe6e41a232451a15379f86 \ + --hash=sha256:f86e41a149d7d05a9969337e3946a9c171c06a5d42680896daaba624aeac8da1 vdms==0.0.23 \ --hash=sha256:2dec153f8cb33f27cdb9ab33125198195fd29a6777cf890fc735774ed9327874 \ --hash=sha256:7cd93242df644947c009559f31b4e19eb1dab6b62ab783ce5a2a54a4ad392f57 -wheel==0.46.3 \ - --hash=sha256:4b399d56c9d9338230118d705d9737a2a468ccca63d5e813e2a4fc7815d8bc4d \ - --hash=sha256:e3e79874b07d776c40bd6033f8ddf76a7dad46a7b8aa1b2787a83083519a1803 +wheel==0.48.0 \ + --hash=sha256:3217dcc807155e45db462d7ef2431f5ddda0d7273b700d05a67b271ceb1287ab \ + --hash=sha256:94800765601e9171bf5d58d066e640662842bcedcbab982b2c90787a2c987322 # The following packages are considered to be unsafe in a requirements file: -pip==26.1.2 \ - --hash=sha256:382ff9f685ee3bc25864f820aa50505825f10f5458ffff07e30a6d96e5715cab \ - --hash=sha256:f49cd134c61cf2fd75e0ce2676db03e4054504a5a4986d00f8299ae632dc4605 +pip==26.2.1 \ + --hash=sha256:71138adf1f4ca900cdb7d289c21b7494329f2332b6d85f0e1c42108c0384ed3e \ + --hash=sha256:f6ad667e89a1fe78046c8f13232b247200f5258d7828f3f7883d660878e0813f diff --git a/finetune/Dockerfile b/finetune/Dockerfile index 4c5d15b..f83770b 100644 --- a/finetune/Dockerfile +++ b/finetune/Dockerfile @@ -44,7 +44,7 @@ RUN apt-get update && \ # hadolint ignore=DL3013 RUN python3 -m venv ${VIRTUAL_ENV} && \ ${VIRTUAL_ENV}/bin/pip install --no-cache-dir \ - "pip==26.1.2" \ + "pip==26.2.1" \ "torch==2.10.0" \ "torchvision==0.25.0" \ "numpy==1.26.4" diff --git a/finetune/requirements.txt b/finetune/requirements.txt index 03548a3..d93579e 100644 --- a/finetune/requirements.txt +++ b/finetune/requirements.txt @@ -1,139 +1,182 @@ -certifi==2026.2.25 \ - --hash=sha256:027692e4402ad994f1c42e52a4997a9763c646b73e4096e4d5d6db8af1d6f0fa \ - --hash=sha256:e887ab5cee78ea814d3472169153c2d12cd43b14bd03329a39a9c6e2e80bfba7 -charset-normalizer==3.4.6 \ - --hash=sha256:06a7e86163334edfc5d20fe104db92fcd666e5a5df0977cb5680a506fe26cc8e \ - --hash=sha256:0c173ce3a681f309f31b87125fecec7a5d1347261ea11ebbb856fa6006b23c8c \ - --hash=sha256:0e28d62a8fc7a1fa411c43bd65e346f3bce9716dc51b897fbe930c5987b402d5 \ - --hash=sha256:0e901eb1049fdb80f5bd11ed5ea1e498ec423102f7a9b9e4645d5b8204ff2815 \ - --hash=sha256:11afb56037cbc4b1555a34dd69151e8e069bee82e613a73bef6e714ce733585f \ - --hash=sha256:150b8ce8e830eb7ccb029ec9ca36022f756986aaaa7956aad6d9ec90089338c0 \ - --hash=sha256:172985e4ff804a7ad08eebec0a1640ece87ba5041d565fff23c8f99c1f389484 \ - --hash=sha256:197c1a244a274bb016dd8b79204850144ef77fe81c5b797dc389327adb552407 \ - --hash=sha256:1ae6b62897110aa7c79ea2f5dd38d1abca6db663687c0b1ad9aed6f6bae3d9d6 \ - --hash=sha256:1cf0a70018692f85172348fe06d3a4b63f94ecb055e13a00c644d368eb82e5b8 \ - --hash=sha256:1ed80ff870ca6de33f4d953fda4d55654b9a2b340ff39ab32fa3adbcd718f264 \ - --hash=sha256:22c6f0c2fbc31e76c3b8a86fba1a56eda6166e238c29cdd3d14befdb4a4e4815 \ - --hash=sha256:231d4da14bcd9301310faf492051bee27df11f2bc7549bc0bb41fef11b82daa2 \ - --hash=sha256:259695e2ccc253feb2a016303543d691825e920917e31f894ca1a687982b1de4 \ - --hash=sha256:2a24157fa36980478dd1770b585c0f30d19e18f4fb0c47c13aa568f871718579 \ - --hash=sha256:2b1a63e8224e401cafe7739f77efd3f9e7f5f2026bda4aead8e59afab537784f \ - --hash=sha256:2bd9d128ef93637a5d7a6af25363cf5dec3fa21cf80e68055aad627f280e8afa \ - --hash=sha256:2e1d8ca8611099001949d1cdfaefc510cf0f212484fe7c565f735b68c78c3c95 \ - --hash=sha256:2ef7fedc7a6ecbe99969cd09632516738a97eeb8bd7258bf8a0f23114c057dab \ - --hash=sha256:2f7fdd9b6e6c529d6a2501a2d36b240109e78a8ceaef5687cfcfa2bbe671d297 \ - --hash=sha256:30f445ae60aad5e1f8bdbb3108e39f6fbc09f4ea16c815c66578878325f8f15a \ - --hash=sha256:31215157227939b4fb3d740cd23fe27be0439afef67b785a1eb78a3ae69cba9e \ - --hash=sha256:34315ff4fc374b285ad7f4a0bf7dcbfe769e1b104230d40f49f700d4ab6bbd84 \ - --hash=sha256:3516bbb8d42169de9e61b8520cbeeeb716f12f4ecfe3fd30a9919aa16c806ca8 \ - --hash=sha256:3778fd7d7cd04ae8f54651f4a7a0bd6e39a0cf20f801720a4c21d80e9b7ad6b0 \ - --hash=sha256:39f5068d35621da2881271e5c3205125cc456f54e9030d3f723288c873a71bf9 \ - --hash=sha256:404a1e552cf5b675a87f0651f8b79f5f1e6fd100ee88dc612f89aa16abd4486f \ - --hash=sha256:419a9d91bd238052642a51938af8ac05da5b3343becde08d5cdeab9046df9ee1 \ - --hash=sha256:423fb7e748a08f854a08a222b983f4df1912b1daedce51a72bd24fe8f26a1843 \ - --hash=sha256:4482481cb0572180b6fd976a4d5c72a30263e98564da68b86ec91f0fe35e8565 \ - --hash=sha256:461598cd852bfa5a61b09cae2b1c02e2efcd166ee5516e243d540ac24bfa68a7 \ - --hash=sha256:47955475ac79cc504ef2704b192364e51d0d473ad452caedd0002605f780101c \ - --hash=sha256:48696db7f18afb80a068821504296eb0787d9ce239b91ca15059d1d3eaacf13b \ - --hash=sha256:4be9f4830ba8741527693848403e2c457c16e499100963ec711b1c6f2049b7c7 \ - --hash=sha256:4d1d02209e06550bdaef34af58e041ad71b88e624f5d825519da3a3308e22687 \ - --hash=sha256:4f41da960b196ea355357285ad1316a00099f22d0929fe168343b99b254729c9 \ - --hash=sha256:517ad0e93394ac532745129ceabdf2696b609ec9f87863d337140317ebce1c14 \ - --hash=sha256:51fb3c322c81d20567019778cb5a4a6f2dc1c200b886bc0d636238e364848c89 \ - --hash=sha256:5273b9f0b5835ff0350c0828faea623c68bfa65b792720c453e22b25cc72930f \ - --hash=sha256:530d548084c4a9f7a16ed4a294d459b4f229db50df689bfe92027452452943a0 \ - --hash=sha256:530e8cebeea0d76bdcf93357aa5e41336f48c3dc709ac52da2bb167c5b8271d9 \ - --hash=sha256:54fae94be3d75f3e573c9a1b5402dc593de19377013c9a0e4285e3d402dd3a2a \ - --hash=sha256:572d7c822caf521f0525ba1bce1a622a0b85cf47ffbdae6c9c19e3b5ac3c4389 \ - --hash=sha256:58c948d0d086229efc484fe2f30c2d382c86720f55cd9bc33591774348ad44e0 \ - --hash=sha256:5d11595abf8dd942a77883a39d81433739b287b6aa71620f15164f8096221b30 \ - --hash=sha256:5f8ddd609f9e1af8c7bd6e2aca279c931aefecd148a14402d4e368f3171769fd \ - --hash=sha256:5feb91325bbceade6afab43eb3b508c63ee53579fe896c77137ded51c6b6958e \ - --hash=sha256:60c74963d8350241a79cb8feea80e54d518f72c26db618862a8f53e5023deaf9 \ - --hash=sha256:613f19aa6e082cf96e17e3ffd89383343d0d589abda756b7764cf78361fd41dc \ - --hash=sha256:659a1e1b500fac8f2779dd9e1570464e012f43e580371470b45277a27baa7532 \ - --hash=sha256:695f5c2823691a25f17bc5d5ffe79fa90972cc34b002ac6c843bb8a1720e950d \ - --hash=sha256:69dd852c2f0ad631b8b60cfbe25a28c0058a894de5abb566619c205ce0550eae \ - --hash=sha256:6cceb5473417d28edd20c6c984ab6fee6c6267d38d906823ebfe20b03d607dc2 \ - --hash=sha256:71be7e0e01753a89cf024abf7ecb6bca2c81738ead80d43004d9b5e3f1244e64 \ - --hash=sha256:74119174722c4349af9708993118581686f343adc1c8c9c007d59be90d077f3f \ - --hash=sha256:74a2e659c7ecbc73562e2a15e05039f1e22c75b7c7618b4b574a3ea9118d1557 \ - --hash=sha256:7504e9b7dc05f99a9bbb4525c67a2c155073b44d720470a148b34166a69c054e \ - --hash=sha256:79090741d842f564b1b2827c0b82d846405b744d31e84f18d7a7b41c20e473ff \ - --hash=sha256:7a6967aaf043bceabab5412ed6bd6bd26603dae84d5cb75bf8d9a74a4959d398 \ - --hash=sha256:7bda6eebafd42133efdca535b04ccb338ab29467b3f7bf79569883676fc628db \ - --hash=sha256:7edbed096e4a4798710ed6bc75dcaa2a21b68b6c356553ac4823c3658d53743a \ - --hash=sha256:7f9019c9cb613f084481bd6a100b12e1547cf2efe362d873c2e31e4035a6fa43 \ - --hash=sha256:802168e03fba8bbc5ce0d866d589e4b1ca751d06edee69f7f3a19c5a9fe6b597 \ - --hash=sha256:80d0a5615143c0b3225e5e3ef22c8d5d51f3f72ce0ea6fb84c943546c7b25b6c \ - --hash=sha256:82060f995ab5003a2d6e0f4ad29065b7672b6593c8c63559beefe5b443242c3e \ - --hash=sha256:836ab36280f21fc1a03c99cd05c6b7af70d2697e374c7af0b61ed271401a72a2 \ - --hash=sha256:8761ac29b6c81574724322a554605608a9960769ea83d2c73e396f3df896ad54 \ - --hash=sha256:87725cfb1a4f1f8c2fc9890ae2f42094120f4b44db9360be5d99a4c6b0e03a9e \ - --hash=sha256:899d28f422116b08be5118ef350c292b36fc15ec2daeb9ea987c89281c7bb5c4 \ - --hash=sha256:8bc5f0687d796c05b1e28ab0d38a50e6309906ee09375dd3aff6a9c09dd6e8f4 \ - --hash=sha256:8bea55c4eef25b0b19a0337dc4e3f9a15b00d569c77211fa8cde38684f234fb7 \ - --hash=sha256:8e5a94886bedca0f9b78fecd6afb6629142fd2605aa70a125d49f4edc6037ee6 \ - --hash=sha256:90ca27cd8da8118b18a52d5f547859cc1f8354a00cd1e8e5120df3e30d6279e5 \ - --hash=sha256:92734d4d8d187a354a556626c221cd1a892a4e0802ccb2af432a1d85ec012194 \ - --hash=sha256:947cf925bc916d90adba35a64c82aace04fa39b46b52d4630ece166655905a69 \ - --hash=sha256:95b52c68d64c1878818687a473a10547b3292e82b6f6fe483808fb1468e2f52f \ - --hash=sha256:97d0235baafca5f2b09cf332cc275f021e694e8362c6bb9c96fc9a0eb74fc316 \ - --hash=sha256:9ca4c0b502ab399ef89248a2c84c54954f77a070f28e546a85e91da627d1301e \ - --hash=sha256:9cc4fc6c196d6a8b76629a70ddfcd4635a6898756e2d9cac5565cf0654605d73 \ - --hash=sha256:9cc6e6d9e571d2f863fa77700701dae73ed5f78881efc8b3f9a4398772ff53e8 \ - --hash=sha256:a056d1ad2633548ca18ffa2f85c202cfb48b68615129143915b8dc72a806a923 \ - --hash=sha256:a26611d9987b230566f24a0a125f17fe0de6a6aff9f25c9f564aaa2721a5fb88 \ - --hash=sha256:a4474d924a47185a06411e0064b803c68be044be2d60e50e8bddcc2649957c1f \ - --hash=sha256:a4ea868bc28109052790eb2b52a9ab33f3aa7adc02f96673526ff47419490e21 \ - --hash=sha256:a9e68c9d88823b274cf1e72f28cb5dc89c990edf430b0bfd3e2fb0785bfeabf4 \ - --hash=sha256:aa9cccf4a44b9b62d8ba8b4dd06c649ba683e4bf04eea606d2e94cfc2d6ff4d6 \ - --hash=sha256:ab30e5e3e706e3063bc6de96b118688cb10396b70bb9864a430f67df98c61ecc \ - --hash=sha256:ac2393c73378fea4e52aa56285a3d64be50f1a12395afef9cce47772f60334c2 \ - --hash=sha256:ad8faf8df23f0378c6d527d8b0b15ea4a2e23c89376877c598c4870d1b2c7866 \ - --hash=sha256:b35b200d6a71b9839a46b9b7fff66b6638bb52fc9658aa58796b0326595d3021 \ - --hash=sha256:b3694e3f87f8ac7ce279d4355645b3c878d24d1424581b46282f24b92f5a4ae2 \ - --hash=sha256:b4ff1d35e8c5bd078be89349b6f3a845128e685e751b6ea1169cf2160b344c4d \ - --hash=sha256:bbc8c8650c6e51041ad1be191742b8b421d05bbd3410f43fa2a00c8db87678e8 \ - --hash=sha256:bc72863f4d9aba2e8fd9085e63548a324ba706d2ea2c83b260da08a59b9482de \ - --hash=sha256:bf625105bb9eef28a56a943fec8c8a98aeb80e7d7db99bd3c388137e6eb2d237 \ - --hash=sha256:c2274ca724536f173122f36c98ce188fd24ce3dad886ec2b7af859518ce008a4 \ - --hash=sha256:c45a03a4c69820a399f1dda9e1d8fbf3562eda46e7720458180302021b08f778 \ - --hash=sha256:c8ae56368f8cc97c7e40a7ee18e1cedaf8e780cd8bc5ed5ac8b81f238614facb \ - --hash=sha256:c907cdc8109f6c619e6254212e794d6548373cc40e1ec75e6e3823d9135d29cc \ - --hash=sha256:ca0276464d148c72defa8bb4390cce01b4a0e425f3b50d1435aa6d7a18107602 \ - --hash=sha256:cd5e2801c89992ed8c0a3f0293ae83c159a60d9a5d685005383ef4caca77f2c4 \ - --hash=sha256:d08ec48f0a1c48d75d0356cea971921848fb620fdeba805b28f937e90691209f \ - --hash=sha256:d1a2ee9c1499fc8f86f4521f27a973c914b211ffa87322f4ee33bb35392da2c5 \ - --hash=sha256:d5f5d1e9def3405f60e3ca8232d56f35c98fb7bf581efcc60051ebf53cb8b611 \ - --hash=sha256:d60377dce4511655582e300dc1e5a5f24ba0cb229005a1d5c8d0cb72bb758ab8 \ - --hash=sha256:d73beaac5e90173ac3deb9928a74763a6d230f494e4bfb422c217a0ad8e629bf \ - --hash=sha256:d7de2637729c67d67cf87614b566626057e95c303bc0a55ffe391f5205e7003d \ - --hash=sha256:dad6e0f2e481fffdcf776d10ebee25e0ef89f16d691f1e5dee4b586375fdc64b \ - --hash=sha256:dda86aba335c902b6149a02a55b38e96287157e609200811837678214ba2b1db \ - --hash=sha256:df01808ee470038c3f8dc4f48620df7225c49c2d6639e38f96e6d6ac6e6f7b0e \ - --hash=sha256:e1f6e2f00a6b8edb562826e4632e26d063ac10307e80f7461f7de3ad8ef3f077 \ - --hash=sha256:e25369dc110d58ddf29b949377a93e0716d72a24f62bad72b2b39f155949c1fd \ - --hash=sha256:e3c701e954abf6fc03a49f7c579cc80c2c6cc52525340ca3186c41d3f33482ef \ - --hash=sha256:e5bcc1a1ae744e0bb59641171ae53743760130600da8db48cbb6e4918e186e4e \ - --hash=sha256:e68c14b04827dd76dcbd1aeea9e604e3e4b78322d8faf2f8132c7138efa340a8 \ - --hash=sha256:e8aeb10fcbe92767f0fa69ad5a72deca50d0dca07fbde97848997d778a50c9fe \ - --hash=sha256:e985a16ff513596f217cee86c21371b8cd011c0f6f056d0920aa2d926c544058 \ - --hash=sha256:ecbbd45615a6885fe3240eb9db73b9e62518b611850fdf8ab08bd56de7ad2b17 \ - --hash=sha256:ee4ec14bc1680d6b0afab9aea2ef27e26d2024f18b24a2d7155a52b60da7e833 \ - --hash=sha256:ef5960d965e67165d75b7c7ffc60a83ec5abfc5c11b764ec13ea54fbef8b4421 \ - --hash=sha256:f0cdaecd4c953bfae0b6bb64910aaaca5a424ad9c72d85cb88417bb9814f7550 \ - --hash=sha256:f1ce721c8a7dfec21fcbdfe04e8f68174183cf4e8188e0645e92aa23985c57ff \ - --hash=sha256:f50498891691e0864dc3da965f340fada0771f6142a378083dc4608f4ea513e2 \ - --hash=sha256:f5ea69428fa1b49573eef0cc44a1d43bebd45ad0c611eb7d7eac760c7ae771bc \ - --hash=sha256:f61aa92e4aad0be58eb6eb4e0c21acf32cf8065f4b2cae5665da756c4ceef982 \ - --hash=sha256:f6e4333fb15c83f7d1482a76d45a0818897b3d33f00efd215528ff7c51b8e35d \ - --hash=sha256:f820f24b09e3e779fe84c3c456cb4108a7aa639b0d1f02c28046e11bfcd088ed \ - --hash=sha256:f98059e4fcd3e3e4e2d632b7cf81c2faae96c43c60b569e9c621468082f1d104 \ - --hash=sha256:fcce033e4021347d80ed9c66dcf1e7b1546319834b74445f561d2e2221de5659 -click==8.3.1 \ - --hash=sha256:12ff4785d337a1bb490bb7e9c2b1ee5da3112e94a8622f26a6c77f5d2fc6842a \ - --hash=sha256:981153a64e25f12d547d3426c367a4857371575ee7ad18df2a6183ab0545b2a6 +certifi==2026.7.22 \ + --hash=sha256:62f22742b58a1a33014a2b6b706588a8d7e2a88ae7bd1a6ebe8c992928483775 \ + --hash=sha256:741e2c3b351ddf169a738da9f2c048608ff7f2c5cc02f1ebc6b118bb090d5d55 +charset-normalizer==3.5.1 \ + --hash=sha256:00668ebb0609751758682eb0b5857e7c35b9f00e84dfdef062e103244ec94d45 \ + --hash=sha256:012a22b88a77ca2e59b98ac5889b0deb604147666032f45e6d6e217634d2550d \ + --hash=sha256:01e93745f7f219b703b60ba7afead36cfc4242782be5af484673fc500df12da5 \ + --hash=sha256:04368edf83514385ffc3e1cfd4546e595f4f1272dd23ba437a93a9cc3741d47b \ + --hash=sha256:0722590aabf9dc6a6c0343d523c05458fa2b5047dbe6302fd526bb570600753f \ + --hash=sha256:07ffd07412fc5d5e84cd8952acf9ff7e4ed7a708e69d1bada19d8ba91711353f \ + --hash=sha256:09a7bba9f739468c8e78c36a75c33768e53cb1959fc638f510454c14683f00d5 \ + --hash=sha256:0b2b1b3fa5670c127b246df1d0c059defd41f689a868a3b9d79df9b1cac42d22 \ + --hash=sha256:0c6dfb5ca6723eeed15aa8e564a014d69fcb8812f94eef11fe3631e0508199f5 \ + --hash=sha256:0d929fc574b4d6fd9e7c0f5c2ede8716a41911923aa7fa5fce38e0818aa4a1ac \ + --hash=sha256:13e3afe97712e8887cd516e960c63f0b93122971e5b5e4b2622fe7701771e838 \ + --hash=sha256:15f024313246a4ed976c60f440bb8d257815513a681d212ff74fd46f7d715a90 \ + --hash=sha256:195ce897c6153c0700078142cf8efe3e6454ca4cf4357499e4078dfd83396626 \ + --hash=sha256:19a3dd5aa73cef1c99687c4fc57db016a9c17104ae1185da88ba566a5d3bebe4 \ + --hash=sha256:1d1c7a53a6c2103925cdd6d7229f8c567379f211c869793df679f2e9f738c369 \ + --hash=sha256:1f5883d77fd409a261abb5dc8ccbe335720d798b1de4abb3b1d47ccbbc76b53b \ + --hash=sha256:21b82d8082f6f5e7f456ef0bd16323d08de1266efbfeb476e64b2a91d1471a4e \ + --hash=sha256:252d099029bcbea642f2a06c4ed5046bdf8b5a8150b64afa5e027e88b106e5ee \ + --hash=sha256:256dd4d85d9e4dc595e2bc983c980e73f62ddeb3165c58b4c3dfe78c5c8548c1 \ + --hash=sha256:26422d45fd13551cf564c58932f7d72b4f58b93b0fcf18c35ba6be12b46bb102 \ + --hash=sha256:2679de311c7946dde5d3b6f44941844133ff5c7cb86099c0061ab1e8901c20a8 \ + --hash=sha256:29880d17a8eb0b5cfdfd8944b468322928059aa35f1f5fa8ff22b149ec0b42f8 \ + --hash=sha256:2bced4061f000f7187254a02ad3433ae17eaf991747ceea2f478422590a5bba9 \ + --hash=sha256:2e9cf9253119d8e5d111f05d71626786fd3d6193817316eab1ca088cdb8593cf \ + --hash=sha256:2f06b7eae9dbe77fe1d644ca244dad508de8d302870a43f3c559b521270938a0 \ + --hash=sha256:2f293479cce755c75f1697e87c409b7ae4c555c7dfecb6e988ad13abba943031 \ + --hash=sha256:329fc3ccb63ad22d867d84c2adea759a64079a37ba4a343433b02c7a2816871e \ + --hash=sha256:343fb4f2821043bd87095f7b08a1a181febc8e36ac64212143bbfd0a0e1bc235 \ + --hash=sha256:3588e376b3ea2eea84976f67273d679f229e24c66dce7b82ae45aef04ff6e072 \ + --hash=sha256:35aea775dc2bd5f54cd84a1cd2696cc3207c479cb9cf0bd346f0d343e4300ddb \ + --hash=sha256:35fe081843b35aad20ffeccec3eeffbe637b15d14f3fb22cc1b59cd8ec17e93c \ + --hash=sha256:36047af20e17097c3bb9476c2b7655f2f7aa51322c0ba58c07695bedf755a950 \ + --hash=sha256:3617ac3cfd8b9888f145ad89dd6e692285834b0201c6074a5eeaad3fd4d668c2 \ + --hash=sha256:366ec70f5547c640d3ce1985722490f23faf4eb5216a7eeba78277490e78dacb \ + --hash=sha256:394fea06235c8543390050ed5f529187074b029fb027213f6c46ac11ab5d950e \ + --hash=sha256:3d27167433c0d5f18dc850f07d0b3816221984fecdc405d6c157a6f0b8f8e9e6 \ + --hash=sha256:3e5e1224c0a6a90e05843e07adfec669edebec17801c67072f51e59561d63c0b \ + --hash=sha256:41876ee62a3dddf48ff1121ad8f0798032aa03f2fd35f21f34a4cab14f18d8d2 \ + --hash=sha256:433c5a81eade63b47e522303bad236f59dba55ea6951746f5558355eeed8c75d \ + --hash=sha256:4582c27e8c889d64811987b5967fbd3ae0c823fe1fd933b543d55ac20bb475fa \ + --hash=sha256:485a0d363cafefcd2538a73c7c838daa2035f09b2c9f9b5e3133f80c6aeb84c2 \ + --hash=sha256:494b70049a4d69aec6e8137c13af4cf8db8c9f9820a1392ac293b0dd2987a818 \ + --hash=sha256:496846868fea80e479324862fa877f02411f2fd0f83b79ccee2607aa68b2a032 \ + --hash=sha256:4abdc5f9ad448c1ecbfae2974b820535d6bc6e7eef63babbab3d81cf46968c71 \ + --hash=sha256:4b599739b93b2cbeded49645ae3c8d1405c29ddfbceac1545c87a3f9580a9e96 \ + --hash=sha256:4bea7f8ebe90bbd7f0e4a2de42ca6924ba23e3e76418c408ff82f1d46fabd687 \ + --hash=sha256:4c4fb141a727957c93edfe5c32a26ceb6b5f6461d67146e2d39f51e16170bea8 \ + --hash=sha256:4c9548dc78002099910abaebc0a72ac58b7d30931869e0351c09b507dff4ece3 \ + --hash=sha256:4d26f14f041e83dd8edfd61f4cd4fa7285d31798b5bf1f28e70c367ba6c41d61 \ + --hash=sha256:4f298bdadb8f0b9e5672877f647d1be9373ef5320c9e2f049795e26cad28b6a9 \ + --hash=sha256:52ec005752a56ae79547a05c0139ca2501a0c866390b6115008456b9f0e7cde1 \ + --hash=sha256:55261ac0d2941c42f196dd576f543d87a8ee03cd6f5e30dfb4d807b2e3b9121a \ + --hash=sha256:56490c595a28b1bb27dfc583e816152a9767721ef58b2c03b13f954d2f707420 \ + --hash=sha256:58d3e12c88e0950bca850ae1f7c256055c097639c2edb9eb123af9807d8b15e4 \ + --hash=sha256:58d4aa13a59c969dbfdf9e6a9560e242cbfd9e8a8f50c2747714df1a423adf65 \ + --hash=sha256:59171c6e45bf07d0d5cab3b0bf81d945035530f6873398b3b531c31184d46663 \ + --hash=sha256:5b6d1386bf0096d26d3a863dc0a487a5b4eb9aa93cf5ba69683d29dde6b9d60f \ + --hash=sha256:5c0ea61a470e070686aa30892fed79e297d2c8d0ab46b8bcdf027d38c51da591 \ + --hash=sha256:5c84bec0ab5ae0c64bfe73a7d2adcb5ce73b467523fc27fd6a28ab2aa6cbe35a \ + --hash=sha256:5ca0555312ae2fe82715cada7fac375530c2f3349e1eaa1bcb33d0283ac79a18 \ + --hash=sha256:5d8531a6569d025f68e2321e7638fb7978f23db58e5f69f56913837aae03816e \ + --hash=sha256:5e2d0e146dcb57034f8b97dc58d2d512cb90aba253960ce449f695fec6a82c6f \ + --hash=sha256:5fc45d653ea8c9a20479167e11d4a0f8cb2fa3470737ab6f9c827532313187b7 \ + --hash=sha256:6117b84ea48435e5356dc737f5121485c30920ba43375fa7b434fd753df0eac3 \ + --hash=sha256:6199d5606e2bbf2b096cf64d03f8b6790c91081d5ac866b8e7bb6422738cc60c \ + --hash=sha256:62b55f6722735a6c472f88361cde6640608773d9443cebdbb51abf436a1fcdd3 \ + --hash=sha256:687c9ca3035544b113bea2055e180af96fb63c0c476e22a9180f51925186e7b7 \ + --hash=sha256:6b7430cf5728e68f6c462254009a6ef4086e1bea43cf2f57aa9c55fb4f50ff96 \ + --hash=sha256:6ba32c4d2abf1d2fe7cf27d280f4cca5664233b0f885549c7761719eb977f486 \ + --hash=sha256:6c9cdde8becb25a7fde49924511aa2644d6f8081cc8df8e9452724303348d8e3 \ + --hash=sha256:6df0ec430f9a831772c23ca5a224cba36517a58a84bb32c32bb59a9fa67c47f6 \ + --hash=sha256:6e2912d4babbc65196ac13c2f53468dc57fb8b9c25ef913e8c59ddf7c6dc0e1b \ + --hash=sha256:6e5e4d73d588ca5ed09df1b7dcd1b203d1df3c542e3f50d126c947d432b10731 \ + --hash=sha256:70055ff39b97c99e7ae40ea3e393fb62aa2e44dbd9b29f8d14f42fb0025c3959 \ + --hash=sha256:706bfd38730a5ac7a365793269a00f4e988178cec121391f4248d84ad8c972e9 \ + --hash=sha256:7235dc28fc6dd9d832ac7c7bce95367dedb85929f17368a0c2bee1e080b9acbf \ + --hash=sha256:774d157f112367ff4abd29019f38f023c24e00e56edc7829c20e358a5a913ad8 \ + --hash=sha256:77efcff2b23071c349402ac1066667a3d011f62398d81408c9b88ad991747c9e \ + --hash=sha256:789b8982559ae28dad2356519f841655756cdcd96616410590ae0b17454ee64f \ + --hash=sha256:7ac76cf9afd34929d76eb7fcb63be476a4853d8a96f0dcf2d0db68a0cbdf9885 \ + --hash=sha256:7c0c10730342b0c9b35dd1d619beb8214e520bd96a1f870f452680b238aab3e0 \ + --hash=sha256:823f82903d189af463d7df250ef1f7f696f3cee08cc8d91deb565e8d425f6506 \ + --hash=sha256:838648accb3a7fd9803fd45c87bce8509648eb0c11bc34e216141300977244f2 \ + --hash=sha256:854066be00447fa8de2ccbbe893e2ffc4b123ef16d897af794c1e18bd4a714b0 \ + --hash=sha256:85d5855daafc240cc045c026d7a15fd198a09b0fc8ff6f5ecbb5297b509cb11e \ + --hash=sha256:85de3134b5379856e323ba37c19c9256d39425f7b76a63af52b09fb4664c2e8f \ + --hash=sha256:87e4f41d375c0b9be2fb5251aee4b8a689169e134535aed81bf085c3b647451e \ + --hash=sha256:88ca277405c2d3b71c4e1c2ee0e7966e807bcba86a69d11e19ba199d18ae4491 \ + --hash=sha256:88e85ab89cb822c1e635f51d6d32e488f94e002e70e2f492bdb8b945543f345a \ + --hash=sha256:8ac8c94b6539074e0f40899301273ac8402b9b3e01c7b7ba269ff30340aaaf20 \ + --hash=sha256:8fe532b3c966d1fb794e0698e4589d0444017ae77fc0b31edea13c0e35bcc449 \ + --hash=sha256:9085f87b0e38a2b92b8923059b4e8789fe40d9279712d15dcc670048d77079af \ + --hash=sha256:90b7481fb62fbe172c558bc6fd1c4c98d82004a54a7551f20e11ac9bf0b8708c \ + --hash=sha256:92caef967d287a407085d61176fce4012b1dd62daed4eb6d5ceb26d3d2538712 \ + --hash=sha256:9362dd90aa7dab48c0054a21187791ccf05473f7dba5d92b8033ae62164675e7 \ + --hash=sha256:94d78ecec2605a8d0398b0f365d5f12a63248438516f5dac536a5eff7337df4a \ + --hash=sha256:94fbf1c0c6cc0d3d5e50f9a9313a8cdca90dd696d34b381cd1704f8c9e939f20 \ + --hash=sha256:950f23cb393f85543777b0433f082cddd25b51ab398eac7971146495679efe5f \ + --hash=sha256:96eefc178f8636b9c760c5829345307fd81cfae9ab1e80997dbddeb0f54ee9a3 \ + --hash=sha256:96fef3e886d6a9874b14f27fc193fbdc69d5d8035783d86aa4e1cea594e695f9 \ + --hash=sha256:977cdbd483a9cff38179bea4fd754289a6f2195c7abd414aba85410b3e66cc5e \ + --hash=sha256:978eab16f55b4ab2c2a745be9a0a840bf8f09a7f227d9c76eb30214d078865a5 \ + --hash=sha256:994e883d17c559cdfd38c84003c8b27d25424a1077272a17e7cd27bfe0bf57b2 \ + --hash=sha256:9ac4444d8d4fd4c4bd08bf451ed3167aa9e7ec6cdb41b648794f1d1103652e36 \ + --hash=sha256:9b5db6052055d34d41230fb78d7c439c23dc536a9896f6cb039e8dd92cfc1263 \ + --hash=sha256:9d9a0dc7cbe9bec24c3f767c9122c41fe5a1bc43f47cd099d00d393e09769de4 \ + --hash=sha256:9dbdd9205662134957cf0c324f639bdc5031c0ca056e2369e238db75187c0f11 \ + --hash=sha256:9eea3ab2597a5e65fe65296e2d6a84570845a6b55532d90333d740d48bbc850a \ + --hash=sha256:a2028475ba855475b8b4d3cfeb4994269c967aea8b9892dfba907f4263a863a3 \ + --hash=sha256:a3a370082ce34d0612f421e15fe011c53bb1feff21a26d06ad4fb244dab5a375 \ + --hash=sha256:a545775cfe815855ea32d7c27731d79da358ef2055b4a25830231b1622dd18aa \ + --hash=sha256:a5cbd90ecf0fc62e64726917ad083b73001f0563657a87ec3c0b504e277dc90d \ + --hash=sha256:a6d095662e73e74f0a49988e0593373e243e3a52e27bfeea0a859e88acf4a0f5 \ + --hash=sha256:a6dac12ff6b846103483683f60c5f8fee205121adc58ffd87e90a90a3af69e99 \ + --hash=sha256:a951ad59cad9145664a730d3036b40b844e74d2d3683da40111463cd3a83845d \ + --hash=sha256:aa1099b956fb795e686d073568f6dc002a0bb89765ea6d5b055dd7d9bf1b116c \ + --hash=sha256:aa2bb0b37202dca27175591f761108b5d34096ade1191ffe4808bdf6b1571488 \ + --hash=sha256:aae2ee51122d3ae968a3837d97dc24a0aeebb0dea23694422cd172bd30017cd6 \ + --hash=sha256:ab743e9bc90c1f73552ec33e10e3331315acd2c397b36065b591b0181de533cc \ + --hash=sha256:ac00177c4831ffa650f8609e4bdddd5fe09c03b1c0c47acece7e6ea20421598b \ + --hash=sha256:ac13b004224fb341e1e25a1ed5e19d32f57cdb2a403e01f003b46f051a550f6f \ + --hash=sha256:acaf604462bf330b0d07e7a07c1d6e4adac79e5fb13e9c5140590542cafacc00 \ + --hash=sha256:ae31a1a1db2ee6cc2942fccaf695c934bc7f3db9f2133a3fef1f367cf1a4ab10 \ + --hash=sha256:ae4a097991662cd4fff0ddc74e0fe7874f82e00042fa0ea00855645ed0c79598 \ + --hash=sha256:aea996a6aba25260827c9ea511d1addfde2da9eb686ac961838509086188b7e6 \ + --hash=sha256:b39b69b347e5e47a3b5b8cfc005c68c1ba347474e3960236c4944a8ecd174962 \ + --hash=sha256:b54e7e13267d49ffbfe68e25b3cbd774dab38fa37238f71265e91b36146eb21c \ + --hash=sha256:b9af956078716df40d985fb0dfeb2c2120c5ca92ba4ff4b388acfd01cdc14d08 \ + --hash=sha256:ba2f37ee79e6338845261a3c5b1784e5d1acdff2c0785b284f1b633033d136ab \ + --hash=sha256:ba501e667c17d8411f98e67a022d9604ef179aff0e459b7e292c796837c13573 \ + --hash=sha256:baf3775a2635e5a11fbd5e4e64ee69c7e86875d224a5c72aca4c141064589a90 \ + --hash=sha256:bb57753e36e4855b8ca375069482250a6246372331a3e4f3407eaebb007443f5 \ + --hash=sha256:bd6c173f04743d483881bffa1478d5a4624475b8cd1d2194956a75548e191c18 \ + --hash=sha256:be47f99644b208bff7766314013f9acf57b056b04191d570d68ad14022cf5b1d \ + --hash=sha256:c010f5581d9c612804cc59fcf7b524b707fbcb72828551237ab545bb5c7034af \ + --hash=sha256:c1dcc36dcb96abc02236e182d17e0f71430152a6c2c7447421da2d2dc144edea \ + --hash=sha256:c428c6c31eb5f4277d7f8eccaf767fbd548ddd5ce3c8b4f4cbbfab3d96b5904c \ + --hash=sha256:c658c50ac0c98cd755a2dd50b7977d3bca7df401dcc47fbdfa87db53ef7d4e8b \ + --hash=sha256:c71fb0d56c920c269cd3e2e3fe7c610e3f1fdb21a6ce60efa6430ff63676cea6 \ + --hash=sha256:c7b742bf31c88566b4bb6335a7f393bb322e580b6bb98df7bd0c25e6e3519ce8 \ + --hash=sha256:cc0329df4caaceb950d2f580b5ac716a377f7059624a0bafaeaf8a218c6ed774 \ + --hash=sha256:cc5d36d96478aa9c60654bd932525bf32964c62a7281eafdf16d85003a8d6004 \ + --hash=sha256:ce854f5f478050ade5a238731c4ca985a7d3b3cb53ff600a9b5c3b689b5f0a7a \ + --hash=sha256:ced3fdd71aaa83ce593746c2edb42b7a59cb4c19c8b5c407781c72e493aae55a \ + --hash=sha256:cee5dd7c6fb5dd52a0fe2a740f9bc6e3593f5f8b1788bde49de02086f30182b2 \ + --hash=sha256:cfa1c0cc3a8f9f53f1243a5a99ac36fd003880199383b37672e86ddda9cb07e2 \ + --hash=sha256:d1ee1e296209fdce05b81b663250eefa02213a2da7b41bf26f7829b8ba3545aa \ + --hash=sha256:d59b75732e9b6f27388e10c14b0259cc5f2e48c78627d185e6a177b58ad3cffe \ + --hash=sha256:d63600d620ad0064c3a748b950ac5ea38a80190e5498532efefa4b7b3f1da1f3 \ + --hash=sha256:dd732602a7009217f658d5863d12d79d373a4de0eebc111094bcdd3bb8e0a6cc \ + --hash=sha256:e06efa066f7dbadbc84ebc126a97c452a6451dfcf589d89d788484949e1cf795 \ + --hash=sha256:e199fb99720074809a7720f1c0b4d919eea8b87e88713e0f8f602f7bef543d9d \ + --hash=sha256:e4b018dc5a0eee4676e38fe84a47a427816c590b93b55d9025274ec4d6ffc2dc \ + --hash=sha256:e6621fb2a4988d6e53eedc455e5903e2679f3967b8acb3d639f1b63c14a2e893 \ + --hash=sha256:e71c909f353863b2b89c83de2ebed71ea6d0df8a6ef65a128193c5e650766bef \ + --hash=sha256:e90251c0c7bdd54a100a0dce3c07b7e637278c93af29dbf78ebb89a58c4bac7d \ + --hash=sha256:e9fbdce1e47394b09bc9f26ab117dfc8d6491977a11d86f592bb42c779db2fda \ + --hash=sha256:eb12fb2ba69ffa05f8695f61c69e591dc4b4a12ac3757ac8af8adb259bf56d17 \ + --hash=sha256:eda059b6bc8bc0812d626fd91a7ce01bf583df0a61296eff390fd94141a34e30 \ + --hash=sha256:f03ac127268b43ef4fe9e6ab6794a6794b49485a0cc0c1db79876d2f33f75bc7 \ + --hash=sha256:f298e218441525d3794428b4c8b8fb8662c6d3ea79925d4807ee6b9a96a3bca5 \ + --hash=sha256:f5542f9b941279d82d41eb0aa9f98eba36fe4df5c7086c651df7944935b37182 \ + --hash=sha256:f6f7deae3feb4edfa2efaf7c574fe88cbf055038a6abdb40188e4fff66d5699f \ + --hash=sha256:f9b1e28d0e8dbfa858abdba91d6b547beaf2df1a59bec6da6faae7b96a4991a9 \ + --hash=sha256:f9f8405c2c758532c74fed975dbee57be1f31a6e865c031870c79a6ed3212ada \ + --hash=sha256:fa48b1b63d639f9483e0633e092f5851e2348c352f1f9bb6c8182f87884ef876 \ + --hash=sha256:fb78f6e7fcd8ad785d28cd577168bc1aaee827b25bb8755638f694794ea98f0a \ + --hash=sha256:fbc597639158fd7c14d55e808718848319540f51b0e6746e3eefa59723a4a348 \ + --hash=sha256:fce8cbd4997efeb450bd298b54f755dcdff18d496f7a5ddbb4867c6d7c88fdc3 \ + --hash=sha256:fd0350afdc3aabd5576f60ea109228bd5538139713c7b094c5cd27c73a98bc6f \ + --hash=sha256:fd0a274c0e5f9a21565cd9d3dd749b61f96b7aa1e20a93aa1ba4029518f2e5c0 \ + --hash=sha256:fdb8a068947befafba9952162645dc2fecaeb400e64584829ed5e9b2fbe21a7f +cloudpickle==3.1.2 \ + --hash=sha256:7fda9eb655c9c230dab534f1983763de5835249750e85fbcef43aaa30a9a2414 \ + --hash=sha256:9acb47f6afd73f60dc1df93bb801b472f05ff42fa6c84167d25cb206be1fbf4a colorama==0.4.6 \ --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \ --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 @@ -198,8 +241,6 @@ contourpy==1.3.2 \ --hash=sha256:f26b383144cf2d2c29f01a1e8170f50dacf0eac02d64139dcd709a8ac4eb3cfe \ --hash=sha256:f939a054192ddc596e031e50bb13b657ce318cf13d264f095ce9db7dc6ae81c0 \ --hash=sha256:fd93cc7f3139b6dd7aab2f26a90dde0aa9fc264dbf70f6740d498a70b860b82c -cucim==23.10.0 \ - --hash=sha256:2c061ad28c3c1fa67bb62260f0a556f354c8ec2d6e3811eece375ed896d62945 cuda-bindings==12.9.4 \ --hash=sha256:1f53a7f453d4b2643d8663d036bafe29b5ba89eb904c133180f295df6dc151e5 \ --hash=sha256:20f2699d61d724de3eb3f3369d57e2b245f93085cab44fd37c3bea036cea1a6f \ @@ -225,10 +266,10 @@ cuda-bindings==12.9.4 \ --hash=sha256:d80bffc357df9988dca279734bc9674c3934a654cab10cadeed27ce17d8635ee \ --hash=sha256:f69107389e6b9948969bfd0a20c4f571fd1aefcfb1d2e1b72cc8ba5ecb7918ab \ --hash=sha256:fda147a344e8eaeca0c6ff113d2851ffca8f7dfc0a6c932374ee5c47caa649c8 -cuda-pathfinder==1.5.2 \ - --hash=sha256:0c5f160a7756c5b072723cbbd6d861e38917ef956c68150b02f0b6e9271c71fa -cuda-toolkit[cudart]==12.8.1 \ - --hash=sha256:adc7906af4ecbf9a352f9dca5734eceb21daec281ccfcf5675e1d2f724fc2cba +cuda-pathfinder==1.8.1 \ + --hash=sha256:ae0137ff9e56ea97499bcbf54f5f2778ec25f3266715ac86da192a795af982a8 +cuda-toolkit[cudart]==12.8.2.0 \ + --hash=sha256:79040e750f28b959415283ccc44cce541c07003553d675b8ff45760e0189aa71 cupy-cuda12x==13.6.0 \ --hash=sha256:297b4268f839de67ef7865c2202d3f5a0fb8d20bd43360bc51b6e60cb4406447 \ --hash=sha256:4d2dfd9bb4705d446f542739a3616b4c9eea98d674fce247402cc9bcec89a1e4 \ @@ -318,195 +359,232 @@ fastrlock==0.8.3 \ --hash=sha256:f2b84b2fe858e64946e54e0e918b8a0e77fc7b09ca960ae1e50a130e8fbc9af8 \ --hash=sha256:f68c551cf8a34b6460a3a0eba44bd7897ebfc820854e19970c52a76bf064a59f \ --hash=sha256:fcb50e195ec981c92d0211a201704aecbd9e4f9451aea3a6f71ac5b1ec2c98cf -filelock==3.25.2 \ - --hash=sha256:b64ece2b38f4ca29dd3e810287aa8c48182bbecd1ae6e9ae126c9b35f1382694 \ - --hash=sha256:ca8afb0da15f229774c9ad1b455ed96e85a81373065fb10446672f64444ddf70 +filelock==3.32.6 \ + --hash=sha256:3f16ecd0117feae0dfc147e8c62eb5daeccd8bd800378c3ddf416de9b4feb6b1 \ + --hash=sha256:a3f55a18af3652a94d8f47d6055df434f254ca1d02ef2524850c6d249ca2512c flatbuffers==25.12.19 \ --hash=sha256:7634f50c427838bb021c2d66a3d1168e9d199b0607e6329399f04846d42e20b4 -fonttools==4.62.1 \ - --hash=sha256:0aa72c43a601cfa9273bb1ae0518f1acadc01ee181a6fc60cd758d7fdadffc04 \ - --hash=sha256:0b3ae47e8636156a9accff64c02c0924cbebad62854c4a6dbdc110cd5b4b341a \ - --hash=sha256:12859ff0b47dd20f110804c3e0d0970f7b832f561630cd879969011541a464a9 \ - --hash=sha256:149f7d84afca659d1a97e39a4778794a2f83bf344c5ee5134e09995086cc2392 \ - --hash=sha256:1596aeaddf7f78e21e68293c011316a25267b3effdaccaf4d59bc9159d681b82 \ - --hash=sha256:19177c8d96c7c36359266e571c5173bcee9157b59cfc8cb0153c5673dc5a3a7d \ - --hash=sha256:1c5c25671ce8805e0d080e2ffdeca7f1e86778c5cbfbeae86d7f866d8830517b \ - --hash=sha256:1eecc128c86c552fb963fe846ca4e011b1be053728f798185a1687502f6d398e \ - --hash=sha256:268abb1cb221e66c014acc234e872b7870d8b5d4657a83a8f4205094c32d2416 \ - --hash=sha256:2d850f66830a27b0d498ee05adb13a3781637b1826982cd7e2b3789ef0cc71ae \ - --hash=sha256:2e7abd2b1e11736f58c1de27819e1955a53267c21732e78243fa2fa2e5c1e069 \ - --hash=sha256:403d28ce06ebfc547fbcb0cb8b7f7cc2f7a2d3e1a67ba9a34b14632df9e080f9 \ - --hash=sha256:40975849bac44fb0b9253d77420c6d8b523ac4dcdcefeff6e4d706838a5b80f7 \ - --hash=sha256:486f32c8047ccd05652aba17e4a8819a3a9d78570eb8a0e3b4503142947880ed \ - --hash=sha256:49a445d2f544ce4a69338694cad575ba97b9a75fff02720da0882d1a73f12800 \ - --hash=sha256:59b372b4f0e113d3746b88985f1c796e7bf830dd54b28374cd85c2b8acd7583e \ - --hash=sha256:5a648bde915fba9da05ae98856987ca91ba832949a9e2888b48c47ef8b96c5a9 \ - --hash=sha256:5f37df1cac61d906e7b836abe356bc2f34c99d4477467755c216b72aa3dc748b \ - --hash=sha256:6706d1cb1d5e6251a97ad3c1b9347505c5615c112e66047abbef0f8545fa30d1 \ - --hash=sha256:68959f5fc58ed4599b44aad161c2837477d7f35f5f79402d97439974faebfebe \ - --hash=sha256:6acb4109f8bee00fec985c8c7afb02299e35e9c94b57287f3ea542f28bd0b0a7 \ - --hash=sha256:7487782e2113861f4ddcc07c3436450659e3caa5e470b27dc2177cade2d8e7fd \ - --hash=sha256:7aa21ff53e28a9c2157acbc44e5b401149d3c9178107130e82d74ceb500e5056 \ - --hash=sha256:7bca7a1c1faf235ffe25d4f2e555246b4750220b38de8261d94ebc5ce8a23c23 \ - --hash=sha256:8d337fdd49a79b0d51c4da87bc38169d21c3abbf0c1aa9367eff5c6656fb6dae \ - --hash=sha256:8f8fca95d3bb3208f59626a4b0ea6e526ee51f5a8ad5d91821c165903e8d9260 \ - --hash=sha256:90365821debbd7db678809c7491ca4acd1e0779b9624cdc6ddaf1f31992bf974 \ - --hash=sha256:92bb00a947e666169c99b43753c4305fc95a890a60ef3aeb2a6963e07902cc87 \ - --hash=sha256:93c316e0f5301b2adbe6a5f658634307c096fd5aae60a5b3412e4f3e1728ab24 \ - --hash=sha256:942b03094d7edbb99bdf1ae7e9090898cad7bf9030b3d21f33d7072dbcb51a53 \ - --hash=sha256:9c125ffa00c3d9003cdaaf7f2c79e6e535628093e14b5de1dccb08859b680936 \ - --hash=sha256:9dde91633f77fa576879a0c76b1d89de373cae751a98ddf0109d54e173b40f14 \ - --hash=sha256:9e7863e10b3de72376280b515d35b14f5eeed639d1aa7824f4cf06779ec65e42 \ - --hash=sha256:a24decd24d60744ee8b4679d38e88b8303d86772053afc29b19d23bb8207803c \ - --hash=sha256:a5d8825e1140f04e6c99bb7d37a9e31c172f3bc208afbe02175339e699c710e1 \ - --hash=sha256:aa69d10ed420d8121118e628ad47d86e4caa79ba37f968597b958f6cceab7eca \ - --hash=sha256:ad5cca75776cd453b1b035b530e943334957ae152a36a88a320e779d61fc980c \ - --hash=sha256:b4e0fcf265ad26e487c56cb12a42dffe7162de708762db951e1b3f755319507d \ - --hash=sha256:b820fcb92d4655513d8402d5b219f94481c4443d825b4372c75a2072aa4b357a \ - --hash=sha256:bd13b7999d59c5eb1c2b442eb2d0c427cb517a0b7a1f5798fc5c9e003f5ff782 \ - --hash=sha256:bdfe592802ef939a0e33106ea4a318eeb17822c7ee168c290273cbd5fabd746c \ - --hash=sha256:c05557a78f8fa514da0f869556eeda40887a8abc77c76ee3f74cf241778afd5a \ - --hash=sha256:c22b1014017111c401469e3acc5433e6acf6ebcc6aa9efb538a533c800971c79 \ - --hash=sha256:c9b9e288b4da2f64fd6180644221749de651703e8d0c16bd4b719533a3a7d6e3 \ - --hash=sha256:d241cdc4a67b5431c6d7f115fdf63335222414995e3a1df1a41e1182acd4bcc7 \ - --hash=sha256:e54c75fd6041f1122476776880f7c3c3295ffa31962dc6ebe2543c00dca58b5d \ - --hash=sha256:e8514f4924375f77084e81467e63238b095abda5107620f49421c368a6017ed2 \ - --hash=sha256:ee91628c08e76f77b533d65feb3fbe6d9dad699f95be51cf0d022db94089cdc4 \ - --hash=sha256:ef46db46c9447103b8f3ff91e8ba009d5fe181b1920a83757a5762551e32bb68 \ - --hash=sha256:fa1d16210b6b10a826d71bed68dd9ec24a9e218d5a5e2797f37c573e7ec215ca -fsspec==2026.2.0 \ - --hash=sha256:6544e34b16869f5aacd5b90bdf1a71acb37792ea3ddf6125ee69a22a53fb8bff \ - --hash=sha256:98de475b5cb3bd66bedd5c4679e87b4fdfe1a3bf4d707b151b3c07e58c9a2437 +fonttools==4.64.0 \ + --hash=sha256:043f6c572bf236f2a76e762c25f841daea11e8fc03e78088d7be66e0c5b4e4c0 \ + --hash=sha256:06b6409b868494556a831ae33b2d9a090476c37516b38d70f45a9720b460d423 \ + --hash=sha256:08f172961e11f4eb4f80f2f20049e09b0ea8e044fa6d456fed8346eb8588f360 \ + --hash=sha256:09657817b75575822bcd6098ef0ebf0386f34430839ee53109e70fd40a7f6539 \ + --hash=sha256:1c3661324f3f0fa4539a32288a3e0711a5f3ccf020036e760bb558ae9811a16f \ + --hash=sha256:1e4e84b47839d35be24dbf476845a34f2ccf99707b66df125c1c414d3e86d25d \ + --hash=sha256:236e59bc7e2a63557a4d7b013f9cb9e28d9aebc45bc09f85e545e6bf091db626 \ + --hash=sha256:2524a26f8fdb9051b0d778d052f5d238285ca9f91a7dc004514c7d6cf38d35f4 \ + --hash=sha256:2730946ca8f12c356bd98eb9b2b095c8e761ed05bed5afb0d5b380cebe4f6370 \ + --hash=sha256:2c42237b7e8c6813643e57d3efed3be094d4c06339dc2166b626e2cc5c12ee93 \ + --hash=sha256:3200180abc69639483cf54a17cca2e13c31ede5f665979ea0a9c829d093f372f \ + --hash=sha256:398b14f89ca950b288bd290875f07e4e10685644fa4ac668546fb107b1ada4d4 \ + --hash=sha256:45e3ecc3888f1637094fd75cd8fc727f3a4b06d1ddf89181126c071e244fd2a5 \ + --hash=sha256:4691a122b8c1d0d82d6e7510ce59d5c42146518240274b53e912e255573924f7 \ + --hash=sha256:498f02ea92c9ca18c0f9c581ea93184a9d56c25b0af14189b0767adaf34235d8 \ + --hash=sha256:4a05783ff54ce4c7a28f18e5772efdf63c219374bd9ffc55452182e1cef8be60 \ + --hash=sha256:507c553cdb5abe2e951b5368423849fe29911a828c2135319c3e500e3bf25b32 \ + --hash=sha256:50e52b6f479ddb1fe32423c2ec860811f36584cf6eabf279fb9a4f98b859a8b4 \ + --hash=sha256:53eee22af5b5a305c1ee2652955ed46b148e881456fcec1e7f0eb27f642f6bb4 \ + --hash=sha256:5af87d1a6d247d7467ee082ae977a5443b2c45f8cd4d59375b6daa38d523c2de \ + --hash=sha256:5b90ad6637237b636d15c9ae8b7c4a7a1c194f33def378677e468c13fd4542f8 \ + --hash=sha256:5bfdaada437e7730c17d366bd7bb8c4a16639963ddbfc1b2f302a68a17a290e7 \ + --hash=sha256:66a83f93579fb3493e458c4449d1d566a7b2a1c7b19915cd0fa3c9b8b5a8540b \ + --hash=sha256:6786bed88581e19bc4f28ea7a64ad531e8f54acf50327fddca942688824a60bd \ + --hash=sha256:6946c033a144086d5b98c976b72f476b70c93fbbedf914eee0e886f073a4e9fa \ + --hash=sha256:6eae4376adb104c2acfa76fd9ea0cb12b572ca1d70eceac709871f638ff76e93 \ + --hash=sha256:6f1ce9ef9a1b13098efdc2e43a2ed96d9851bbde7b31c652a87552c4efe9b422 \ + --hash=sha256:70fd99e5a09fb77f14b29d70879a4fce9529b2d2948b14c96708e0a61e001b98 \ + --hash=sha256:730eed859508cb7b0775ebe6bb39f18901f168eb989d8ee23a4fe082700e1e3f \ + --hash=sha256:769fb64412ca237547ca73f111a64252d9e32c9d938bed51ed537bc9146a8f54 \ + --hash=sha256:7d7995b906666037d7114c20a5566a372902747452af7d5bd4cd6bca8f1a2550 \ + --hash=sha256:801fd04899d72eab34f02ab78d0451525621b3bd589da9d2d480dfffe951b643 \ + --hash=sha256:8252f20108e557532f91d7d6dd9af87c16ed6fa930f65516aa480fa2cfed3363 \ + --hash=sha256:83cc48d1411d2ff388dab99973dca81172cc9ceae9c9799da9548d494cfb38cb \ + --hash=sha256:89356c0793b474af7e49ec90d39fb2363e2341516a90460e38231df5ebe8acd5 \ + --hash=sha256:8dd18fdff0ac9759b8d67a714730abee07b2312e3656c20ba5affb0107094762 \ + --hash=sha256:917fd520bb60809d83c14d43cfe48d5ad2516abaf2c073d65a431800dade2d29 \ + --hash=sha256:9443eefff58aad558608f352092e1be6d278980e8c3b4e8621fcbfda97818500 \ + --hash=sha256:9ecb2b206b5b2386f6968721a0770226b66bdd54adc4279bfff3ddf62873eed8 \ + --hash=sha256:a0afa8bac675445dc0e2ba2891ecbedd9be89cb437afa94c823e0290cc2c4bc5 \ + --hash=sha256:a3238a693e806a3158375c6403b8f6f71d86eb9c149b60c97f26dfd560c98ac8 \ + --hash=sha256:a515f664cad988f2295056833a59f62220bc3e46afdaffe389a29060f6712355 \ + --hash=sha256:a8c631303bb1fd7be3067c47536a30ff1fcb4846d6008c112bc52a03f7cd6965 \ + --hash=sha256:b2763e452b025ee8e990f0462e76052de9bb094ebc21d296f62c6dfe958886b4 \ + --hash=sha256:b4a7af455ffed980925bc0ebf5b8d6239e6c3e797d9d755b6db192fb3080d614 \ + --hash=sha256:be084d19a3ac0c8b2aba696680642d703118d3b1f18cf83f5b7dbaf0ffc62ab6 \ + --hash=sha256:c3c1fb656063a2f762db5378ea8d38ad5f7836b4f3fb8c4652270ded43df2935 \ + --hash=sha256:c60be0aed97a32c6ba8cee21f0d0477136e495451bd97910f589ac892db120d4 \ + --hash=sha256:cf67f96dc0bfe9607f5f2b734cedfbe2f6f995231adee4ccefa12872044d452d \ + --hash=sha256:d16102cbcd4615b09c64e6022733faccc93200785f1ab0d4493afb8b0261edde \ + --hash=sha256:d30c966bea2deffa19c738c81776f7182da5ccabd97e666bae4f3d6ba87341d9 \ + --hash=sha256:d652592c71683941b768306fa1c7c6ce1bb9b072505043feafe86305d71030b7 \ + --hash=sha256:da4c9bdeaf6b06c12d13d0addfc8ef15aa9695d26574a6dc10751258bef72f30 \ + --hash=sha256:dac25768be4c03a990c359f408cb7e8958ed0e93061e495b3642ce7909761205 \ + --hash=sha256:dc96150f99e05a317cb1f042b92c4cf8bc93cdb1f9f85717322e202ecdf2e505 \ + --hash=sha256:de8acaa5f4160f537a3cf41b031171d51004b9f4aebfa6c194f18dffa9533d03 \ + --hash=sha256:e412767d1c9765cf1b82f7b00f1686c6ca5809ebb77af363b3f9f2325a465c01 \ + --hash=sha256:e4812f71c39d77ec5041348dafa400532adf7bf8f1fffa9aa6495fce5876d7b8 \ + --hash=sha256:e63b63b8b5fdb8e29318dff2b15c5f852be46e972775b466f75b848f6eed4502 \ + --hash=sha256:e662f874ab2c7da9861584db44a13573e0936df087215f63013138f6e5eba083 \ + --hash=sha256:e7b34209eef39462563c05ea9dcf51c272a2ded56f5753da925e66bca3baa484 \ + --hash=sha256:ecb2e59a7bc692fee64dda6010deb66222335693b30046f15cccf81233aa715f \ + --hash=sha256:f521d79d6acda4923b264805541696f452079db0952a5bb96f9ff742f50629ec \ + --hash=sha256:f8669ce37851b597d3435b91fefa51139e58d506ca449ca0e5bb68c63b8b6d2b \ + --hash=sha256:fa75c7970bc6bca340cc6e20f20f069201bfcb50094c31a536fd99724d1d01ca \ + --hash=sha256:ff7aff4637fbf71394df139c63ccfe08a47aa4252d2f91224ddb3335c716c925 +fsspec==2026.7.0 \ + --hash=sha256:b57ddbafedfaef7018c1ecab32aa200a9d7ca26b77965f64e48b70061249d279 \ + --hash=sha256:c803c40f4cf860b49dea58ee3e1c33cb9c790520e233537e1340049f89b82a88 humanfriendly==10.0 \ --hash=sha256:1697e1a8a8f550fd43c2865cd84542fc175a61dcb779b6fee18cf6b6ccba1477 \ --hash=sha256:6b0b831ce8f15f7300721aa49829fc4e83921a9a301cc7f606be6686a2288ddc -idna==3.18 \ - --hash=sha256:7f952cbe720b688055e3f87de14f5c3e5fdaa8bc3928985c4077ca689de849a2 \ - --hash=sha256:ffb385a7e039654cef1ab9ef32c6fafe283c0c0467bba1d9029738ce4a14a848 +idna==3.19 \ + --hash=sha256:5e0811a4383b21dc5838069f801c4fb62113b7447663d2530d2bd6e77b49bf15 \ + --hash=sha256:815e7be7a7806d54abb586dc943addc79e8b2ee16915059658cbeff4b1b43bf4 jinja2==3.1.6 \ --hash=sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d \ --hash=sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67 -kiwisolver==1.5.0 \ - --hash=sha256:012b1eb16e28718fa782b5e61dc6f2da1f0792ca73bd05d54de6cb9561665fc9 \ - --hash=sha256:01808c6d15f4c3e8559595d6d1fe6411c68e4a3822b4b9972b44473b24f4e679 \ - --hash=sha256:0255a027391d52944eae1dbb5d4cc5903f57092f3674e8e544cdd2622826b3f0 \ - --hash=sha256:0b85aad90cea8ac6797a53b5d5f2e967334fa4d1149f031c4537569972596cb8 \ - --hash=sha256:0bf3acf1419fa93064a4c2189ac0b58e3be7872bf6ee6177b0d4c63dc4cea276 \ - --hash=sha256:0c50b89ffd3e1a911c69a1dd3de7173c0cd10b130f56222e57898683841e4f96 \ - --hash=sha256:0cbe94b69b819209a62cb27bdfa5dc2a8977d8de2f89dfd97ba4f53ed3af754e \ - --hash=sha256:0df54df7e686afa55e6f21fb86195224a6d9beb71d637e8d7920c95cf0f89aac \ - --hash=sha256:0e3aafb33aed7479377e5e9a82e9d4bf87063741fc99fc7ae48b0f16e32bdd6f \ - --hash=sha256:12e91c215a96e39f57989c8912ae761286ac5a9584d04030ceb3368a357f017a \ - --hash=sha256:1465387ac63576c3e125e5337a6892b9e99e0627d52317f3ca79e6930d889d15 \ - --hash=sha256:16b85d37c2cbb3253226d26e64663f755d88a03439a9c47df6246b35defbdfb7 \ - --hash=sha256:1b0feb50971481a2cc44d94e88bdb02cdd497618252ae226b8eb1201b957e368 \ - --hash=sha256:1d49a49ac4cbfb7c1375301cd1ec90169dfeae55ff84710d782260ce77a75a02 \ - --hash=sha256:1d9daea4ea6b9be74fe2f01f7fbade8d6ffab263e781274cffca0dba9be9eec9 \ - --hash=sha256:1dd9b0b119a350976a6d781e7278ec7aca0b201e1a9e2d23d9804afecb6ca681 \ - --hash=sha256:1f1489f769582498610e015a8ef2d36f28f505ab3096d0e16b4858a9ec214f57 \ - --hash=sha256:2517e24d7315eb51c10664cdb865195df38ab74456c677df67bb47f12d088a27 \ - --hash=sha256:295d9ffe712caa9f8a3081de8d32fc60191b4b51c76f02f951fd8407253528f4 \ - --hash=sha256:2a075bd7bd19c70cf67c8badfa36cf7c5d8de3c9ddb8420c51e10d9c50e94920 \ - --hash=sha256:32cc0a5365239a6ea0c6ed461e8838d053b57e397443c0ca894dcc8e388d4374 \ - --hash=sha256:332b4f0145c30b5f5ad9374881133e5aa64320428a57c2c2b61e9d891a51c2f3 \ - --hash=sha256:377815a8616074cabbf3f53354e1d040c35815a134e01d7614b7692e4bf8acfa \ - --hash=sha256:38f4a703656f493b0ad185211ccfca7f0386120f022066b018eb5296d8613e23 \ - --hash=sha256:3ac2360e93cb41be81121755c6462cff3beaa9967188c866e5fce5cf13170859 \ - --hash=sha256:3c4923e404d6bcd91b6779c009542e5647fef32e4a5d75e115e3bbac6f2335eb \ - --hash=sha256:3cdcb35dc9d807259c981a85531048ede628eabcffb3239adf3d17463518992d \ - --hash=sha256:41024ed50e44ab1a60d3fe0a9d15a4ccc9f5f2b1d814ff283c8d01134d5b81bc \ - --hash=sha256:413b820229730d358efd838ecbab79902fe97094565fdc80ddb6b0a18c18a581 \ - --hash=sha256:4432b835675f0ea7414aab3d37d119f7226d24869b7a829caeab49ebda407b0c \ - --hash=sha256:4db576bb8c3ef9365f8b40fe0f671644de6736ae2c27a2c62d7d8a1b4329f099 \ - --hash=sha256:4e7f886f47ab881692f278ae901039a234e4025a68e6dfab514263a0b1c4ae05 \ - --hash=sha256:4e9750bc21b886308024f8a54ccb9a2cc38ac9fa813bf4348434e3d54f337ff9 \ - --hash=sha256:5060731cc3ed12ca3a8b57acd4aeca5bbc2f49216dd0bec1650a1acd89486bcd \ - --hash=sha256:50847dca5d197fcbd389c805aa1a1cf32f25d2e7273dc47ab181a517666b68cc \ - --hash=sha256:5092eb5b1172947f57d6ea7d89b2f29650414e4293c47707eb499ec07a0ac796 \ - --hash=sha256:5124d1ea754509b09e53738ec185584cc609aae4a3b510aaf4ed6aa047ef9303 \ - --hash=sha256:51e8c4084897de9f05898c2c2a39af6318044ae969d46ff7a34ed3f96274adca \ - --hash=sha256:530a3fd64c87cffa844d4b6b9768774763d9caa299e9b75d8eca6a4423b31314 \ - --hash=sha256:56fa888f10d0f367155e76ce849fa1166fc9730d13bd2d65a2aa13b6f5424489 \ - --hash=sha256:58f812017cd2985c21fbffb4864d59174d4903dd66fa23815e74bbc7a0e2dd57 \ - --hash=sha256:59cd8683f575d96df5bb48f6add94afc055012c29e28124fcae2b63661b9efb1 \ - --hash=sha256:5ae8e62c147495b01a0f4765c878e9bfdf843412446a247e28df59936e99e797 \ - --hash=sha256:5b233ea3e165e43e35dba1d2b8ecc21cf070b45b65ae17dd2747d2713d942021 \ - --hash=sha256:6176c1811d9d5a04fa391c490cc44f451e240697a16977f11c6f722efb9041db \ - --hash=sha256:62f59da443c4f4849f73a51a193b1d9d258dcad0c41bc4d1b8fb2bcc04bfeb22 \ - --hash=sha256:6783e069732715ad0c3ce96dbf21dbc2235ab0593f2baf6338101f70371f4028 \ - --hash=sha256:6ab8ba9152203feec73758dad83af9a0bbe05001eb4639e547207c40cfb52083 \ - --hash=sha256:70d593af6a6ca332d1df73d519fddb5148edb15cd90d5f0155e3746a6d4fcc65 \ - --hash=sha256:72ec46b7eba5b395e0a7b63025490d3214c11013f4aacb4f5e8d6c3041829588 \ - --hash=sha256:7a32f72973f0f950c1920475d5c5ea3d971b81b6f0ec53b8d0a956cc965f22e0 \ - --hash=sha256:7a4aa69609f40fce3cbc3f87b2061f042eee32f94b8f11db707b66a26461591a \ - --hash=sha256:7c60d3c9b06fb23bd9c6139281ccbdc384297579ae037f08ae90c69f6845c0b1 \ - --hash=sha256:800ee55980c18545af444d93fdd60c56b580db5cc54867d8cbf8a1dc0829938c \ - --hash=sha256:80aa065ffd378ff784822a6d7c3212f2d5f5e9c3589614b5c228b311fd3063ac \ - --hash=sha256:86e0287879f75621ae85197b0877ed2f8b7aa57b511c7331dce2eb6f4de7d476 \ - --hash=sha256:893ff3a711d1b515ba9da14ee090519bad4610ed1962fbe298a434e8c5f8db53 \ - --hash=sha256:89fc958c702ee9a745e4700378f5d23fddbc46ff89e8fdbf5395c24d5c1452a3 \ - --hash=sha256:8c63c91f95173f9c2a67c7c526b2cea976828a0e7fced9cdcead2802dc10f8a4 \ - --hash=sha256:8df31fe574b8b3993cc61764f40941111b25c2d9fea13d3ce24a49907cd2d615 \ - --hash=sha256:8f9baf6f0a6e7571c45c8863010b45e837c3ee1c2c77fcd6ef423be91b21fedb \ - --hash=sha256:9027d773c4ff81487181a925945743413f6069634d0b122d0b37684ccf4f1e18 \ - --hash=sha256:9190426b7aa26c5229501fa297b8d0653cfd3f5a36f7990c264e157cbf886b3b \ - --hash=sha256:940dda65d5e764406b9fb92761cbf462e4e63f712ab60ed98f70552e496f3bf1 \ - --hash=sha256:94eff26096eb5395136634622515b234ecb6c9979824c1f5004c6e3c3c85ccd2 \ - --hash=sha256:9eed0f7edbb274413b6ee781cca50541c8c0facd3d6fd289779e494340a2b85c \ - --hash=sha256:ad4ae4ffd1ee9cd11357b4c66b612da9888f4f4daf2f36995eda64bd45370cac \ - --hash=sha256:b0f172dc8ffaccb8522d7c5d899de00133f2f1ca7b0a49b7da98e901de87bf2d \ - --hash=sha256:b2af221f268f5af85e776a73d62b0845fc8baf8ef0abfae79d29c77d0e776aaf \ - --hash=sha256:b7d335370ae48a780c6e6a6bbfa97342f563744c39c35562f3f367665f5c1de2 \ - --hash=sha256:b83af57bdddef03c01a9138034c6ff03181a3028d9a1003b301eb1a55e161a3f \ - --hash=sha256:bb5136fb5352d3f422df33f0c879a1b0c204004324150cc3b5e3c4f310c9049f \ - --hash=sha256:bc4d8e252f532ab46a1de9349e2d27b91fce46736a9eedaa37beaca66f574ed4 \ - --hash=sha256:bdd3e53429ff02aa319ba59dfe4ceeec345bf46cf180ec2cf6fd5b942e7975e9 \ - --hash=sha256:be12f931839a3bdfe28b584db0e640a65a8bcbc24560ae3fdb025a449b3d754e \ - --hash=sha256:be4a51a55833dc29ab5d7503e7bcb3b3af3402d266018137127450005cdfe737 \ - --hash=sha256:beb7f344487cdcb9e1efe4b7a29681b74d34c08f0043a327a74da852a6749e7b \ - --hash=sha256:bf4679a3d71012a7c2bf360e5cd878fbd5e4fcac0896b56393dec239d81529ed \ - --hash=sha256:c0e1403fd7c26d77c1f03e096dc58a5c726503fa0db0456678b8668f76f521e3 \ - --hash=sha256:c31c13da98624f957b0fb1b5bae5383b2333c2c3f6793d9825dd5ce79b525cb7 \ - --hash=sha256:c438f6ca858697c9ab67eb28246c92508af972e114cac34e57a6d4ba17a3ac08 \ - --hash=sha256:c8277104ded0a51e699c8c3aff63ce2c56d4ed5519a5f73e0fd7057f959a2b9e \ - --hash=sha256:c95cab08d1965db3d84a121f1c7ce7479bdd4072c9b3dafd8fecce48a2e6b902 \ - --hash=sha256:cc0b66c1eec9021353a4b4483afb12dfd50e3669ffbb9152d6842eb34c7e29fd \ - --hash=sha256:cdee07c4d7f6d72008d3f73b9bf027f4e11550224c7c50d8df1ae4a37c1402a6 \ - --hash=sha256:ce9bf03dad3b46408c08649c6fbd6ca28a9fce0eb32fdfffa6775a13103b5310 \ - --hash=sha256:cff8e5383db4989311f99e814feeb90c4723eb4edca425b9d5d9c3fefcdd9537 \ - --hash=sha256:d168fda2dbff7b9b5f38e693182d792a938c31db4dac3a80a4888de603c99554 \ - --hash=sha256:d1ffeb80b5676463d7a7d56acbe8e37a20ce725570e09549fe738e02ca6b7e1e \ - --hash=sha256:d36ca54cb4c6c4686f7cbb7b817f66f5911c12ddb519450bbe86707155028f87 \ - --hash=sha256:d4193f3d9dc3f6f79aaed0e5637f45d98850ebf01f7ca20e69457f3e8946b66a \ - --hash=sha256:d5cd5189fc2b6a538b75ae45433140c4823463918f7b1617c31e68b085c0022c \ - --hash=sha256:d618fd27420381a4f6044faa71f46d8bfd911bd077c555f7138ed88729bfbe79 \ - --hash=sha256:d76e2d8c75051d58177e762164d2e9ab92886534e3a12e795f103524f221dd8e \ - --hash=sha256:daae526907e262de627d8f70058a0f64acc9e2641c164c99c8f594b34a799a16 \ - --hash=sha256:db485b3847d182b908b483b2ed133c66d88d49cacf98fd278fadafe11b4478d1 \ - --hash=sha256:dd952e03bfbb096cfe2dd35cd9e00f269969b67536cb4370994afc20ff2d0875 \ - --hash=sha256:dda366d548e89a90d88a86c692377d18d8bd64b39c1fb2b92cb31370e2896bbd \ - --hash=sha256:e315e5ec90d88e140f57696ff85b484ff68bb311e36f2c414aa4286293e6dee0 \ - --hash=sha256:e4415a8db000bf49a6dd1c478bf70062eaacff0f462b92b0ba68791a905861f9 \ - --hash=sha256:e7a116ae737f0000343218c4edf5bd45893bfeaff0993c0b215d7124c9f77646 \ - --hash=sha256:e7c4c09a490dc4d4a7f8cbee56c606a320f9dc28cf92a7157a39d1ce7676a657 \ - --hash=sha256:ebae99ed6764f2b5771c522477b311be313e8841d2e0376db2b10922daebbba4 \ - --hash=sha256:ec4c85dc4b687c7f7f15f553ff26a98bfe8c58f5f7f0ac8905f0ba4c7be60232 \ - --hash=sha256:ed3a984b31da7481b103f68776f7128a89ef26ed40f4dc41a2223cda7fb24819 \ - --hash=sha256:f18c2d9782259a6dc132fdc7a63c168cbc74b35284b6d75c673958982a378384 \ - --hash=sha256:f1f9f4121ec58628c96baa3de1a55a4e3a333c5102c8e94b64e23bf7b2083309 \ - --hash=sha256:f42c23db5d1521218a3276bb08666dcb662896a0be7347cba864eca45ff64ede \ - --hash=sha256:f443b4825c50a51ee68585522ab4a1d1257fac65896f282b4c6763337ac9f5d2 \ - --hash=sha256:f6764a4ccab3078db14a632420930f6186058750df066b8ea2a7106df91d3203 \ - --hash=sha256:f7c7553b13f69c1b29a5bde08ddc6d9d0c8bfb84f9ed01c30db25944aeb852a7 \ - --hash=sha256:fa6248cd194edff41d7ea9425ced8ca3a6f838bfb295f6f1d6e6bb694a8518df \ - --hash=sha256:fa8eb9ecdb7efb0b226acec134e0d709e87a909fa4971a54c0c4f6e88635484c \ - --hash=sha256:fc20894c3d21194d8041a28b65622d5b86db786da6e3cfe73f0c762951a61167 \ - --hash=sha256:fc4d3f1fb9ca0ae9f97b095963bc6326f1dbfd3779d6679a1e016b9baaa153d3 \ - --hash=sha256:fd40bb9cd0891c4c3cb1ddf83f8bbfa15731a248fdc8162669405451e2724b09 \ - --hash=sha256:ff710414307fefa903e0d9bdf300972f892c23477829f49504e59834f4195398 -lazy-loader==0.5 \ - --hash=sha256:717f9179a0dbed357012ddad50a5ad3d5e4d9a0b8712680d4e687f5e6e6ed9b3 \ - --hash=sha256:ab0ea149e9c554d4ffeeb21105ac60bed7f3b4fd69b1d2360a4add51b170b005 +kiwisolver==1.5.1 \ + --hash=sha256:007a5553dfc4f4e8d184f588a0200e2cd4b63a59cc8796df3c39909e679dc7a0 \ + --hash=sha256:0324cd2567259b7a095f6cf18a52b0ffc6f3de9e69528ff1bc0e7a37bd43ff1a \ + --hash=sha256:0627b9bceb9c3cdcf12b8a18655eedfed2692b038df27423383c120d0b7dc2d6 \ + --hash=sha256:06a6917674de9e0fe3f66f5430787f59a9f2ddb64af9b714eaec547e29ef5c19 \ + --hash=sha256:072bdb15a3c19a5b5dbc8f8fb1f4e1884bf4f3507eeb4cc6334401274d37a5c0 \ + --hash=sha256:0a4faea5c6db201c6a21391d2ac926ea97acf7dacdbc3c417189e1adb1a00837 \ + --hash=sha256:0ba9527afc80ae3d7814ed98b6572d02bf85eaf48065678342c5f0c6dab7a8c7 \ + --hash=sha256:0d8924877ce22e17326a99a418c3c82037da078df3c6a260b13eca677444e6e7 \ + --hash=sha256:0ebdef3eae5336568147c39a55be6a2036ffde53faa9ca2d978989ae7c2da12c \ + --hash=sha256:1209042a623ddfda5497e4066c7b77651dde8e1d3a9dd97599dc7e97f3b9b78c \ + --hash=sha256:16895f553ee6620a827d2da56b871f835fb70b9216cca5d188e885caf6e3bd23 \ + --hash=sha256:17851e5dad4484be0cbccbde3b15331deae036de9aebd45eed964487802b172f \ + --hash=sha256:1798e83840c3f627246104c4d8a9639c60fa068adf9ce92b61791781fa8a68c1 \ + --hash=sha256:18170a77ddfecf40ec60d0928268dc95880c881864e015a8f34094ed18b9b9ad \ + --hash=sha256:186884a58486651e3c217b6acea0a53eaa9498fdd472057c46f2f0fb5c25aad5 \ + --hash=sha256:18a0cfb124546a4c2e6087c5f3029c7f44b37c85b142e0ced71f73a7599ac208 \ + --hash=sha256:1983f0974a750a6f6556f368ba11105d1d8369c735b944747c9f12ae5aea7aae \ + --hash=sha256:1a7587dc335f2c0f5bd577fd0540bd16c66006bdb60f759a1059f025e6c4f071 \ + --hash=sha256:1acc7e5b7ef05e9da8bb70cd6c7c4513090213d2e1ad9720f599f0bf6c52aec5 \ + --hash=sha256:1d852545c4d0e35a72728d072cbaa59e2fa7dd84bdf01e068d670dd0ceb58eb6 \ + --hash=sha256:1ed0f5e49d0ceff8b72190824d9e59c062fbbc02c231b853112c78474b3f5ec2 \ + --hash=sha256:1fff05e239575b1481b6ed1a782f6fad616efbf1f0b1f44e6e85c4dfe426e483 \ + --hash=sha256:21e46b23a2da695c364124817bc01d970effd5483147f8d66a6a7167e3f6b851 \ + --hash=sha256:22d5e5aaad6be121f2515765e3b1c444352cb8eb4c86510801db8f2e50757316 \ + --hash=sha256:2551cf9917af48ee7c4b29cc82320489508cf96fd26a51f6fc124de661cd44c7 \ + --hash=sha256:255605693a483db7bd5c79f60437f7bf658f7f520d61aa42722e32257c941951 \ + --hash=sha256:26e8268480be5061d509e29669d59103c067a26377a56491630ece11762e3858 \ + --hash=sha256:27add358abe374ebaa3b8763ef380bc99051b5a4b18d94878366a9e4f59efef0 \ + --hash=sha256:2ae70bc59790d2af72a3f76f24b272403e135070340281108b447cb77ea70819 \ + --hash=sha256:2e10ae1bba1899188b33557c10d73affcc12033edd18adddb57d209039976a4c \ + --hash=sha256:3221f78211074f561c44ca42eac0619828171bec15a2c4cf6f7747d07df76e8e \ + --hash=sha256:34633ecf50d16187ab8e5528b7a2530f2feb4e23f300db4672538b51cfc5cd38 \ + --hash=sha256:34ec467940442c9943016fb2d4c81d1ba84351eeca2f1a78f8bc87f1ba0d414c \ + --hash=sha256:37f801b5d7cc0e5a548921308e059fd2b057bb42972b591cfa3049f95423c4ed \ + --hash=sha256:38f6e0deb4d0a4615efe0c4efc5990b06ae450ab50a0b321c0b078b6d238c083 \ + --hash=sha256:3c24cd69455e1b00ddf770c13b6e2c33e07d6dc3f2d34add0bf9277c5c6bbd46 \ + --hash=sha256:3cc210010fd2f438a3ed430b45f1b501fd13a8618bf984dc2c5ce5b69b78752e \ + --hash=sha256:3fa5855898f6d3d01b72ccd48a2d65cbdee301251603fefe34e2025bddba219c \ + --hash=sha256:416ba7ff9f233b7036689bb5a3783537e838ad483f63558d2a800f75afe738b1 \ + --hash=sha256:431dc224a1a92a5c8f582d96e505196a3b5997a7271076678da2dfde67b77e9a \ + --hash=sha256:43844c1a7ad6d723d5b5b4c4fc7f5bd399c40e288120d16257c7c9e8765c6e85 \ + --hash=sha256:44b8faef94f1857e77fa0238f3390ff1ac51d2ea20a487e2e452a59fd2b5f5ca \ + --hash=sha256:470d420f98d368d6f010633a20659b544c5fdfa5329e6b70219f2ef08fd4a7ef \ + --hash=sha256:482676e5bd48d70ac99d9fc78863469845421e01184fa83f1f9366dc49f7e974 \ + --hash=sha256:4d4ca09bf13cff792b1884f64b98ee6c2467930d632233be25c56b442d99f10e \ + --hash=sha256:5025e36fb4fb275cef0a4e30dbb11cb4ae61d1c83deb90189cb5d7e4cafd6b55 \ + --hash=sha256:509735237ae0d849e8a843551d423d2500d2e0a9ac1611a145658b29c0fb9f85 \ + --hash=sha256:534f02c1abb31ed6dbd3515545285c330b2f12d00fdb1fdb71658b9ca5a13a6a \ + --hash=sha256:5978c3340f16a35c30f8ab2fa7bcf559973c55f1a5ef6970e1f621acf3c4db13 \ + --hash=sha256:5b973887ff782cfd6b67c9904ad8ca542e0bc5e4961503408b423b5a688b4d38 \ + --hash=sha256:5c490db2168a508088f59140dd392556a54b8bd1048fc6383c8baff13c359673 \ + --hash=sha256:5d142e352eb13facc7dd047489aebdff6ba78576c239f1ea04931979caaf0567 \ + --hash=sha256:5daa1f19e097050b9c4d9a78fcc9263cb96c9dfae08037ddc1b7c4ad1889f2a2 \ + --hash=sha256:61e9a64c7635095a6bfe483e2ff055d437c59bd45f3617a228b37277f0185d62 \ + --hash=sha256:63fb7294b768f444eb4b068965f2662f28c2fd4161e23bd60fcf3ff27b74c046 \ + --hash=sha256:685929988b208a911f1285e2f8ed54210b0d681a3dc0f03e00d599d291986e7e \ + --hash=sha256:6a797a1cefc8b9c93170db580337e1fe3d011ad18b1299943231279406342048 \ + --hash=sha256:6b92f60017dda7d877fdc546438b5e28f31c523264f49cf5a48c1d0ce1a0dfbc \ + --hash=sha256:70ed9a45c7484d2b30cdacf60d220f494a1763b9fec1ad03285c6553fa0889f2 \ + --hash=sha256:719a35fa1156db3640555f95ebb94f60a444e64d1c69626b0edef5df78eba225 \ + --hash=sha256:74ad5c3dad54a4641b4c28cd15ded70899d04459c6c7aeacafea716be97cce6d \ + --hash=sha256:74ea337e0ec3f6f342a36a4f1b5cd94dd9affddcd28ba9aae2905af932ee8c6b \ + --hash=sha256:75d9b1cf8258462dbdc1eeda718c96ea7f079324c09067f6daabfcf37712b7fe \ + --hash=sha256:77a4c8187a5948d7f8795adb765a3c7b553d07d86d88e43038fc32fc1fb9a3f3 \ + --hash=sha256:7824b5e8bdbf0bccb4ccd37bbb115849a1dc45437fb4de8351385ed07c437ee0 \ + --hash=sha256:7d38b0c279c3032e8c9cc013b405c6df8e1668dbf15465779aa7f15f61201812 \ + --hash=sha256:7e9c01d3dd7ceba4d1d436cc021d40d592466e40b9bc7f5d83dc4e98a5c9cd8c \ + --hash=sha256:7fd82debf43c6acd0a94359d232f6bb516ee13f269a7993736a9ac9f988bb5d9 \ + --hash=sha256:824c3d763a05ea9e9003610145186b0e9848c7584a5575c79bac5a8e7cd80bad \ + --hash=sha256:828f75af2b0080c8a972e75f649ab46af008e92c6104a57a759157200b835b75 \ + --hash=sha256:83f78128fa28705fa85d01c59771c72fe81c11bd0e6155edbb9f818983a7d761 \ + --hash=sha256:876bbfd276473d3daffe30e8c975df4ed9429967b41a6cb362dbb5155b6f13ad \ + --hash=sha256:886fc26012f0e8b5f69d1cfe6d711f6b11f194621539bf8e6bb1c25c5dc82724 \ + --hash=sha256:8a34616dc2521cc8dc1d7d081734da63539f021ac0450ce950908340c6e7aa2f \ + --hash=sha256:8a708a47ade1fe19e8371d5da076bac0dd4b0a5a7985ad6c637f7f7e361b6baa \ + --hash=sha256:8af9b142ad719ae3a911ebf616bc4b78b32bbab84d6a40d3ad2f129670509957 \ + --hash=sha256:8bf4df63592c2a66b4f8edc5df2544998c288aa02f96ce0acd880cd1de8c8127 \ + --hash=sha256:8de6f2a4ce7e7bd27d23dd94abf0ccafe0e0e5cc9c764b0577191f2c25f08f26 \ + --hash=sha256:8f8fddb8e323bd6eee4e54e69a39243beab22689070f4c66b472c4cc88bb89d8 \ + --hash=sha256:8fca690b00c4c48f6c2a547b0160ed511357093a4e4c9b47e0fadf3128066d89 \ + --hash=sha256:9506e892bcc3b409831d363c6f53e5985e1c8d1f6f6b0256d00358684ff85378 \ + --hash=sha256:958254518717542d02d0688d0d20cbf771da5e415e6f49543f92481c850a4540 \ + --hash=sha256:95a02752aa032eef4aed01cda6d9b687c669bd0396bf4519eef8bba22a286720 \ + --hash=sha256:96c30002424670b5e1e46495c2b8cbffef39cf77c1d79e76462029d50339785b \ + --hash=sha256:98b208a7cc42c803445ef551d6753cc42a5ea13e9cab1ee66cd8b9cb70195330 \ + --hash=sha256:9b3092d8992a1d69b7a59c3e39f35e1b9be327a17f68a7c35fc17329e337d6f2 \ + --hash=sha256:9e51c119992ea8820706871c30a4642ec76de20ae82f9b50b9a45517d8e9f810 \ + --hash=sha256:a5716a33bfabb2c6ce27b6cf03253467b3804f83e215f4d202685cf93c6c9874 \ + --hash=sha256:a5a00665d1a0e26763a7338d7e911d4598fbc1d50dd0d6b7919b7dc6c5d6569f \ + --hash=sha256:a5ca5aebae78a0bc13c1943af4af615d4966c5b650b05d5aa83b50e427196fee \ + --hash=sha256:a7b85b2cc6ea45e5f7e8c9a30bc9fabd47cda09106cbb4b967335c3e6c43b69d \ + --hash=sha256:a83ee7107df13abe42a54a6654670eef9bb39425cf2e27f65e0007465e1286ab \ + --hash=sha256:aa7d00b1700966d2917e54d278aba86897890ca9276dd8b76cf6446b6c181b92 \ + --hash=sha256:ab620eb663952455271ac37f9aaad86b73c969c02f11f53cea405b38e96a4300 \ + --hash=sha256:ad8b9671348d7c8716715652ae11f85ed0eb99e265a2df2ca490577d69860b2c \ + --hash=sha256:aefe930d113798330e9462f7874542977869c0613cba3262e2de3a8d5dee8f3a \ + --hash=sha256:b03af77d77e50edba2030fd5f7c352ff209314b09030a3cba7c14edf9a09a444 \ + --hash=sha256:b390aec180a7c054919c04898835e1c77bced23ea8383eb2c570213bf25d1a86 \ + --hash=sha256:b3d78f7bb2b9d9a30345be1474b9aaa8685430b54afb51ba3639b5c6c11e9ed6 \ + --hash=sha256:b5664603a253efd3a75716d793d1d3a6a82723b61dc6db767b2460bbbeec4c0f \ + --hash=sha256:b69602970994a2ed8bbfa78c2f0394a7435226c6040489702d9f0a0ad0c07052 \ + --hash=sha256:b6ae6a0328f0bc035741820fdeecdcd67bf4694eee03972e843663107122f450 \ + --hash=sha256:bad20d4c69c851c982a1e3606f4c293edfd5a87885786c50082412240c4b1ffd \ + --hash=sha256:bb7c99f0673c03017a3ee01e54a5c2617a05468b11eabe513b0080e063ed95b1 \ + --hash=sha256:bebb89489b279b2f5661bbbb2abcc87bcd4a46607bb4a5c966f04f1db6b8df9a \ + --hash=sha256:bfd1de989b3330420e29de39352f5c049905c9e3ee67233a50d550e3d652c148 \ + --hash=sha256:c2306e8bb53601979fcb3fa09cc65e031876d9ae01eff2fcbcd7a84ef94d5bc1 \ + --hash=sha256:c3a4e41e3096bf1f0f1b76e2ffd6d828d6547f574f702d59bdbef7acfa59db9c \ + --hash=sha256:c6834b92dd2428e2dd85ef3d85f723d3c12f20aaf43a2ddd4f944ca25d833408 \ + --hash=sha256:c90d3022d8a94778939cda8638c6c8da8fa757b8958dad7ec868ce29c87681b8 \ + --hash=sha256:ca307d6c259e5c98d3cb9ade55342b47a6839762caf2536f3d7b46ee660cc82e \ + --hash=sha256:ca7f6fe0f37ca978a1e5eb7a3a68e6413f417e78e838324947ffd420202b198b \ + --hash=sha256:cb6fae641357ed2f6e533c0d3c6504a4a5703621a50c89459e46051d56b61140 \ + --hash=sha256:cdaeeb6c350106df6bf9d873395973e5f066a9713200b72cd64f55d0a3eafab6 \ + --hash=sha256:cea20da04494e662b83c872683bf4ff2345206043d036315ed0e924b652e7294 \ + --hash=sha256:cea90547bfd93807e0013a004dc76552be44fad3bc1cc2b38610a9e889ed098f \ + --hash=sha256:d09037ca068d784ebc4aec290ef952ca27ac15dd9c0b5801a88c6e1096b83e6b \ + --hash=sha256:d27c2123977cb9269c30a49ba45f03a4323017ef693e19db4ec9dbe1299a3002 \ + --hash=sha256:d50de98e8d807dc31822fff96f50293163a62418eb65487a21b42713d72ed0b7 \ + --hash=sha256:d66a64dd5dec136040ec2ae94aa026a912ee60fdd45bc28d3db30037fd809e88 \ + --hash=sha256:d79308fa689fac89cbcfbd4dbfc80b5f95c54c5a7fd4d194be221f9d33d026e6 \ + --hash=sha256:da3275833be0edbaf4830fae08bae3dc7219f40ce0c37eaa6c25825957e06612 \ + --hash=sha256:dc1a26b8e53395a01c2c611e58602fa47461f136fba7cd5542e6db6d64be1839 \ + --hash=sha256:dc23390afe9f4ef9ac3bcc72a03a56eebbde03f4c571a32cb38f859cff9a6524 \ + --hash=sha256:e05c2f7925f1d88778e53cb44f14e0223204a3bdd09a41664750363acfb1f2ef \ + --hash=sha256:e12dfea7f5fc2a34a9080efbf79c4c44eb380ec5b9c6fea09407e08f0d1e941d \ + --hash=sha256:e4e4523d6f336708d732516e6cfca7796cf3d96c9474eb5aecf6165f2f1fefc3 \ + --hash=sha256:e4e49f7e1a4e7191bdf9dc67a974db714501b1fc52c24324103d06a86abd5c08 \ + --hash=sha256:e68e151428b5384f766cd25739bf77c7e4a3dc93b5ded7a12118d9fbfdf78ab6 \ + --hash=sha256:e8e4d953faaded9ec7ede36824e9814082d22d4c7b1eafbfa079ecba8cd0d076 \ + --hash=sha256:ee9df1f0d77b9c6e94f4ac0fec533fbddd5ea3a327807f18d7b069ae019ded80 \ + --hash=sha256:f0a887b6565bbfe80efde2b7f6e8890d7d9bbdb11bdb17028a3690c32fe0621f \ + --hash=sha256:f0f4a42db92d6ec7677ab9d12830a2a8ec145a9c6d15db2b593466bc875c78d7 \ + --hash=sha256:f1303ef2eec81262a4b708c3e858afe58d7c75ad91c1c05266eda7673369859a \ + --hash=sha256:f1d56ec54d257d05e0b50f5780d967540cd07beeaf9e5f645b26d50cce79f4d8 \ + --hash=sha256:f4167e87b397f273dc2356fcf1eaf50a6bac51e6105f45103ef7129c8efb0255 \ + --hash=sha256:f76fc85bd054c806960f917ec0f329e24e436f1712267d90588e4c39890caa63 \ + --hash=sha256:f942903fde7363d1d879057ec5de01310efda2597161784d752fa9953a01a71a \ + --hash=sha256:f9b1c4900736e489a812c529100de4b8fb617d4db075e931e213c57424b83d9b \ + --hash=sha256:fc271a6f0a2126958f4090e5507b9da5848927dae331f8f763bd4aa642b3d2cd \ + --hash=sha256:febcce10f2bcdbb80b4ea919238a6a4ac13dbc4c7cadbe8d5d75c3682f8b5404 markupsafe==3.0.3 \ --hash=sha256:0303439a41979d9e74d18ff5e2dd8c43ed6c6001fd40e5bf2e43f7bd9bbc523f \ --hash=sha256:068f375c472b3e7acbe2d5318dea141359e6900156b5b2ba06a30b169086b91a \ @@ -597,62 +675,62 @@ markupsafe==3.0.3 \ --hash=sha256:f71a396b3bf33ecaa1626c255855702aca4d3d9fea5e051b41ac59a9c1c41edc \ --hash=sha256:f9e130248f4462aaa8e2552d547f36ddadbeaa573879158d721bbd33dfe4743a \ --hash=sha256:fed51ac40f757d41b7c48425901843666a6677e3e8eb0abcff09e4ba6e664f50 -matplotlib==3.10.8 \ - --hash=sha256:00270d217d6b20d14b584c521f810d60c5c78406dc289859776550df837dcda7 \ - --hash=sha256:0a33deb84c15ede243aead39f77e990469fff93ad1521163305095b77b72ce4a \ - --hash=sha256:113bb52413ea508ce954a02c10ffd0d565f9c3bc7f2eddc27dfe1731e71c7b5f \ - --hash=sha256:12d90df9183093fcd479f4172ac26b322b1248b15729cb57f42f71f24c7e37a3 \ - --hash=sha256:15d30132718972c2c074cd14638c7f4592bd98719e2308bccea40e0538bc0cb5 \ - --hash=sha256:18821ace09c763ec93aef5eeff087ee493a24051936d7b9ebcad9662f66501f9 \ - --hash=sha256:1ae029229a57cd1e8fe542485f27e7ca7b23aa9e8944ddb4985d0bc444f1eca2 \ - --hash=sha256:2299372c19d56bcd35cf05a2738308758d32b9eaed2371898d8f5bd33f084aa3 \ - --hash=sha256:238b7ce5717600615c895050239ec955d91f321c209dd110db988500558e70d6 \ - --hash=sha256:24d50994d8c5816ddc35411e50a86ab05f575e2530c02752e02538122613371f \ - --hash=sha256:25d380fe8b1dc32cf8f0b1b448470a77afb195438bafdf1d858bfb876f3edf7b \ - --hash=sha256:2c1998e92cd5999e295a731bcb2911c75f597d937341f3030cc24ef2733d78a8 \ - --hash=sha256:2cf5bd12cecf46908f286d7838b2abc6c91cda506c0445b8223a7c19a00df008 \ - --hash=sha256:32f8dce744be5569bebe789e46727946041199030db8aeb2954d26013a0eb26b \ - --hash=sha256:37b3c1cc42aa184b3f738cfa18c1c1d72fd496d85467a6cf7b807936d39aa656 \ - --hash=sha256:3a48a78d2786784cc2413e57397981fb45c79e968d99656706018d6e62e57958 \ - --hash=sha256:3ab4aabc72de4ff77b3ec33a6d78a68227bf1123465887f9905ba79184a1cc04 \ - --hash=sha256:3c624e43ed56313651bc18a47f838b60d7b8032ed348911c54906b130b20071b \ - --hash=sha256:3f2e409836d7f5ac2f1c013110a4d50b9f7edc26328c108915f9075d7d7a91b6 \ - --hash=sha256:3f5c3e4da343bba819f0234186b9004faba952cc420fbc522dc4e103c1985908 \ - --hash=sha256:41703cc95688f2516b480f7f339d8851a6035f18e100ee6a32bc0b8536a12a9c \ - --hash=sha256:495672de149445ec1b772ff2c9ede9b769e3cb4f0d0aa7fa730d7f59e2d4e1c1 \ - --hash=sha256:4cf267add95b1c88300d96ca837833d4112756045364f5c734a2276038dae27d \ - --hash=sha256:56271f3dac49a88d7fca5060f004d9d22b865f743a12a23b1e937a0be4818ee1 \ - --hash=sha256:595ba4d8fe983b88f0eec8c26a241e16d6376fe1979086232f481f8f3f67494c \ - --hash=sha256:5f62550b9a30afde8c1c3ae450e5eb547d579dd69b25c2fc7a1c67f934c1717a \ - --hash=sha256:646d95230efb9ca614a7a594d4fcacde0ac61d25e37dd51710b36477594963ce \ - --hash=sha256:64fcc24778ca0404ce0cb7b6b77ae1f4c7231cdd60e6778f999ee05cbd581b9a \ - --hash=sha256:6be43b667360fef5c754dda5d25a32e6307a03c204f3c0fc5468b78fa87b4160 \ - --hash=sha256:6da7c2ce169267d0d066adcf63758f0604aa6c3eebf67458930f9d9b79ad1db1 \ - --hash=sha256:83d282364ea9f3e52363da262ce32a09dfe241e4080dcedda3c0db059d3c1f11 \ - --hash=sha256:9153c3292705be9f9c64498a8872118540c3f4123d1a1c840172edf262c8be4a \ - --hash=sha256:99eefd13c0dc3b3c1b4d561c1169e65fe47aab7b8158754d7c084088e2329466 \ - --hash=sha256:a0a7f52498f72f13d4a25ea70f35f4cb60642b466cbb0a9be951b5bc3f45a486 \ - --hash=sha256:a2b336e2d91a3d7006864e0990c83b216fcdca64b5a6484912902cef87313d78 \ - --hash=sha256:a48f2b74020919552ea25d222d5cc6af9ca3f4eb43a93e14d068457f545c2a17 \ - --hash=sha256:ad3d9833a64cf48cc4300f2b406c3d0f4f4724a91c0bd5640678a6ba7c102077 \ - --hash=sha256:b44d07310e404ba95f8c25aa5536f154c0a8ec473303535949e52eb71d0a1565 \ - --hash=sha256:b53285e65d4fa4c86399979e956235deb900be5baa7fc1218ea67fbfaeaadd6f \ - --hash=sha256:b5a2b97dbdc7d4f353ebf343744f1d1f1cca8aa8bfddb4262fcf4306c3761d50 \ - --hash=sha256:b9a5ca4ac220a0cdd1ba6bcba3608547117d30468fefce49bb26f55c1a3d5c58 \ - --hash=sha256:bab485bcf8b1c7d2060b4fcb6fc368a9e6f4cd754c9c2fea281f4be21df394a2 \ - --hash=sha256:c108a1d6fa78a50646029cb6d49808ff0fc1330fda87fa6f6250c6b5369b6645 \ - --hash=sha256:d56a1efd5bfd61486c8bc968fa18734464556f0fb8e51690f4ac25d85cbbbbc2 \ - --hash=sha256:d9050fee89a89ed57b4fb2c1bfac9a3d0c57a0d55aed95949eedbc42070fea39 \ - --hash=sha256:dd80ecb295460a5d9d260df63c43f4afbdd832d725a531f008dad1664f458adf \ - --hash=sha256:e8ea3e2d4066083e264e75c829078f9e149fa119d27e19acd503de65e0b13149 \ - --hash=sha256:eb3823f11823deade26ce3b9f40dcb4a213da7a670013929f31d5f5ed1055b22 \ - --hash=sha256:ee40c27c795bda6a5292e9cff9890189d32f7e3a0bf04e0e3c9430c4a00c37df \ - --hash=sha256:efb30e3baaea72ce5928e32bab719ab4770099079d66726a62b11b1ef7273be4 \ - --hash=sha256:f254d118d14a7f99d616271d6c3c27922c092dac11112670b157798b89bf4933 \ - --hash=sha256:f89c151aab2e2e23cb3fe0acad1e8b82841fd265379c4cecd0f3fcb34c15e0f6 \ - --hash=sha256:f97aeb209c3d2511443f8797e3e5a569aebb040d4f8bc79aa3ee78a8fb9e3dd8 \ - --hash=sha256:f9b587c9c7274c1613a30afabf65a272114cd6cdbe67b3406f818c79d7ab2e2a \ - --hash=sha256:fb061f596dad3a0f52b60dc6a5dec4a0c300dec41e058a7efe09256188d170b7 +matplotlib==3.10.9 \ + --hash=sha256:09218df8a93712bd6ea133e83a153c755448cf7868316c531cffcc43f69d1cc9 \ + --hash=sha256:10cc5ce06d10231c36f40e875f3c7e8050362a4ee8f0ee5d29a6b3277d57bb42 \ + --hash=sha256:172db52c9e683f5d12eaf57f0f54834190e12581fe1cc2a19595a8f5acb4e77d \ + --hash=sha256:1872fb212a05b729e649754a72d5da61d03e0554d76e80303b6f83d1d2c0552b \ + --hash=sha256:1aa972116abb4c9d201bf245620b433726cb6856f3bef6a78f776a00f5c92d37 \ + --hash=sha256:1e7698ac9868428e84d2c967424803b2472ff7167d9d6590d4204ed775343c3b \ + --hash=sha256:2dc9477819ffd78ad12a20df1d9d6a6bd4fec6aaa9072681465fddca052f1456 \ + --hash=sha256:3225f4e1edcb8c86c884ddf79ebe20ecd0a67d30188f279897554ccd8fded4dc \ + --hash=sha256:336b9acc64d309063126edcdaca00db9373af3c476bb94388fe9c5a53ad13e6f \ + --hash=sha256:345f6f68ecc8da0ca56fad2ea08fde1a115eda530079eca185d50a7bc3e146c6 \ + --hash=sha256:34cf8167e023ad956c15f36302911d5406bd99a9862c1a8499ea6f7c0e015dc2 \ + --hash=sha256:3fc0364dfbe1d07f6d15c5ebd0c5bf89e126916e5a8667dd4a7a6e84c36653d4 \ + --hash=sha256:41cb28c2bd769aa3e98322c6ab09854cbcc52ab69d2759d681bba3e327b2b320 \ + --hash=sha256:42fb814efabe95c06c1994d8ab5a8385f43a249e23badd3ba931d4308e5bca20 \ + --hash=sha256:4e42042d54db34fda4e95a7bd3e5789c2a995d2dad3eb8850232ee534092fbbf \ + --hash=sha256:4edcfbd8565339aa62f1cd4012f7180926fdbe71850f7b0d3c379c175cd6b66c \ + --hash=sha256:51bf0ddbdc598e060d46c16b5590708f81a1624cefbaaf62f6a81bf9285b8c80 \ + --hash=sha256:56fc0bd271b00025c6edfdc7c2dcd247372c8e1544971d62e1dc7c17367e8bf9 \ + --hash=sha256:59476c6d29d612b8e9bb6ce8c5b631be6ba8f9e3a2421f22a02b192c7dd28716 \ + --hash=sha256:6640f75af2c6148293caa0a2b39dd806a492dd66c8a8b04035813e33d0fd2585 \ + --hash=sha256:68cfdcede415f7c8f5577b03303dd94526cdb6d11036cecdc205e08733b2d2bb \ + --hash=sha256:6b63d9c7c769b88ab81e10dc86e4e0607cf56817b9f9e6cf24b2a5f1693b8e38 \ + --hash=sha256:6be157fe17fc37cb95ac1d7374cf717ce9259616edec911a78d9d26dae8522d4 \ + --hash=sha256:6c63ebcd8b4b169eb2f5c200552ae6b8be8999a005b6b507ed76fb8d7d674fe2 \ + --hash=sha256:77210dce9cb8153dffc967efaae990543392563d5a376d4dd8539bebcb0ed217 \ + --hash=sha256:7a8d66a55def891c33147ba3ba9bfcabf0b526a43764c818acbb4525e5ed0838 \ + --hash=sha256:82368699727bfb7b0182e1aa13082e3c08e092fa1a25d3e1fd92405bff96f6d4 \ + --hash=sha256:82834c3c292d24d3a8aae77cd2d20019de69d692a34a970e4fdb8d33e2ea3dda \ + --hash=sha256:8e436d155fa8a3399dc62683f8f5d0e2e50d25d0144a73edd73f82eec8f4abfb \ + --hash=sha256:8f3bcac1ca5ed000a6f4337d47ba67dfddf37ed6a46c15fd7f014997f7bf865f \ + --hash=sha256:97e35e8d39ccc85859095e01a53847432ba9a53ddf7986f7a54a11b73d0e143f \ + --hash=sha256:985f2238880e2e69093f588f5fe2e46771747febf0649f3cf7f7b7480875317f \ + --hash=sha256:a49f1eadc84ca85fd72fa4e89e70e61bf86452df6f971af04b12c60761a0772c \ + --hash=sha256:a5a6104ed666402ba5106d7f36e0e0cdca4e8d7fa4d39708ca88019e2835a2eb \ + --hash=sha256:aba1615dabe83188e19d4f75a253c6a08423e04c1425e64039f800050a69de6b \ + --hash=sha256:ae20801130378b82d647ff5047c07316295b68dc054ca6b3c13519d0ea624285 \ + --hash=sha256:ae2f11957b27ce53497dd4d7b235c4d4f1faf383dfb39d0c5beb833bff883294 \ + --hash=sha256:b049278ddce116aaa1c1377ebf58adea909132dfce0281cf7e3a1ea9fc2e2c65 \ + --hash=sha256:b1b745c489cd1a77a0dc1120a05dc87af9798faebc913601feb8c73d89bf2d1e \ + --hash=sha256:b2b9516251cb89ff618d757daec0e2ed1bf21248013844a853d87ef85ab3081d \ + --hash=sha256:b580440f1ff81a0e34122051a3dfabb7e4b7f9e380629929bde0eff9af72165f \ + --hash=sha256:ba7b3b8ef09eab7df0e86e9ae086faa433efbfbdb46afcb3aa16aabf779469a8 \ + --hash=sha256:c27df8b3848f32a83d1767566595e43cfaa4460380974da06f4279a7ec143c39 \ + --hash=sha256:d091f9d758b34aaaaa6331d13574bf01891d903b3dec59bfff458ef7551de5d6 \ + --hash=sha256:d730e984eddf56974c3e72b6129c7ca462ac38dc624338f4b0b23eb23ecba00f \ + --hash=sha256:d75d11c949914165976c621b2324f9ef162af7ebf4b057ddf95dd1dba7e5edcf \ + --hash=sha256:d843374407c4017a6403b59c6c81606773d136f3259d5b6da3131bc814542cc2 \ + --hash=sha256:da4e09638420548f31c354032a6250e473c68e5a4e96899b4844cf39ddea23fe \ + --hash=sha256:de2445a0c6690d21b7eb6ce071cebad6d40a2e9bdf10d039074a96ba19797b99 \ + --hash=sha256:dfca0129678bd56379db26c52b5d77ed7de314c047492fbdc763aa7501710cfb \ + --hash=sha256:e9fae004b941b23ff2edcf1567a857ed77bafc8086ffa258190462328434faf8 \ + --hash=sha256:f0c3c28d9fbcc1fe7a03be236d73430cf6409c41fb2383a7ac52fe932b072cb1 \ + --hash=sha256:f4399f64b3e94cd500195490972ae1ee81170df1636fa15364d157d5bdd7b921 \ + --hash=sha256:f76e640a5268850bfda54b5131b1b1941cc685e42c5fa98ed9f2d64038308cba \ + --hash=sha256:fd66508e8c6877d98e586654b608a0456db8d7e8a546eb1e2600efd957302358 ml-dtypes==0.5.4 \ --hash=sha256:0d2ffd05a2575b1519dc928c0b93c06339eb67173ff53acb00724502cda231cf \ --hash=sha256:11942cbf2cf92157db91e5022633c0d9474d4dfd813a909383bd23ce828a4b7d \ @@ -696,9 +774,9 @@ ml-dtypes==0.5.4 \ mpmath==1.3.0 \ --hash=sha256:7a28eb2a9774d00c7bc92411c19a89209d5da7c4c9a9e227be8330a23a25b91f \ --hash=sha256:a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c -networkx==3.1 \ - --hash=sha256:4f33f68cb2afcf86f28a45f43efc27a9386b535d567d2127f8f61d51dec58d36 \ - --hash=sha256:de346335408f84de0eada6ff9fafafff9bcda11f0a0dfaa931133debb146ab61 +networkx==3.4.2 \ + --hash=sha256:307c3669428c5362aab27c8a1260aa8f47c4e91d3891f48be0141738d8d053e1 \ + --hash=sha256:df5d4365b724cf81b8c6a7312509d0c22386097011ad1abe274afd5e9d3bbc5f numpy==1.26.4 \ --hash=sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b \ --hash=sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818 \ @@ -779,6 +857,9 @@ nvidia-cusparselt-cu12==0.7.1 \ --hash=sha256:8878dce784d0fac90131b6817b607e803c36e629ba34dc5b433471382196b6a5 \ --hash=sha256:f1bb701d6b930d5a7cea44c19ceb973311500847f81b634d802b7b539dc55623 \ --hash=sha256:f67fbb5831940ec829c9117b7f33807db9f9678dc2a617fbe781cac17b4e1075 +nvidia-ml-py==13.610.43 \ + --hash=sha256:65437eb73d68d0c62c931ca4d45038472faff03bd0b8729abba4b899f70d60f2 \ + --hash=sha256:f13c72698edef492f985cc225f14faafe68ae065a2e407f45bdf6f4b9b43fde8 nvidia-nccl-cu12==2.27.5 \ --hash=sha256:31432ad4d1fb1004eb0c56203dc9bc2178a1ba69d1d9e02d64a6938ab5e40e7a \ --hash=sha256:ad730cf15cb5d25fe849c6e6ca9eb5b76db16a80f13f425ac68d8e2e55624457 @@ -793,35 +874,31 @@ nvidia-nvtx-cu12==12.8.90 \ --hash=sha256:5b17e2001cc0d751a5bc2c6ec6d26ad95913324a4adb86788c944f8ce9ba441f \ --hash=sha256:619c8304aedc69f02ea82dd244541a83c3d9d40993381b3b590f1adaed3db41e \ --hash=sha256:d7ad891da111ebafbf7e015d34879f7112832fc239ff0d7d776b6cb685274615 -onnx==1.21.0 \ - --hash=sha256:10c3185a232089335581fabb98fba4e86d3e8246b8140f2e406082438100ebda \ - --hash=sha256:19d9971a3e52a12968ae6c70fd0f86c349536de0b0c33922ecdbe52d1972fe60 \ - --hash=sha256:1a9baf882562c4cebf79589bebb7cd71a20e30b51158cac3e3bbaf27da6163bd \ - --hash=sha256:257d1d1deb6a652913698f1e3f33ef1ca0aa69174892fe38946d4572d89dd94f \ - --hash=sha256:2aca19949260875c14866fc77ea0bc37e4e809b24976108762843d328c92d3ce \ - --hash=sha256:3abd09872523c7e0362d767e4e63bd7c6bac52a5e2c3edbf061061fe540e2027 \ - --hash=sha256:458d91948ad9a7729a347550553b49ab6939f9af2cddf334e2116e45467dc61f \ - --hash=sha256:4d8b67d0aaec5864c87633188b91cc520877477ec0254eda122bef8be43cd764 \ - --hash=sha256:5489f25fe461e7f32128218251a466cabbeeaf1eaa791c79daebf1a80d5a2cc9 \ - --hash=sha256:5f78c411743db317a76e5d009f84f7e3d5380411a1567a868e82461a1e5c775d \ - --hash=sha256:7b58a4cfec8d9311b73dc083e4c1fa362069267881144c05139b3eba5dc3a840 \ - --hash=sha256:7cd7cb8f6459311bdb557cbf6c0ccc6d8ace11c304d1bba0a30b4a4688e245f8 \ - --hash=sha256:7ee9d8fd6a4874a5fa8b44bbcabea104ce752b20469b88bc50c7dcf9030779ad \ - --hash=sha256:82aa6ab51144df07c58c4850cb78d4f1ae969d8c0bf657b28041796d49ba6974 \ - --hash=sha256:9003d5206c01fa2ff4b46311566865d8e493e1a6998d4009ec6de39843f1b59b \ - --hash=sha256:9ea4e824964082811938a9250451d89c4ec474fe42dd36c038bfa5df31993d1e \ - --hash=sha256:a9261bd580fb8548c9c37b3c6750387eb8f21ea43c63880d37b2c622e1684285 \ - --hash=sha256:ab6a488dabbb172eebc9f3b3e7ac68763f32b0c571626d4a5004608f866cc83d \ - --hash=sha256:bba12181566acf49b35875838eba49536a327b2944664b17125577d230c637ad \ - --hash=sha256:c9b56ad04039fac6b028c07e54afa1ec7f75dd340f65311f2c292e41ed7aa4d9 \ - --hash=sha256:ca14bc4842fccc3187eb538f07eabeb25a779b39388b006db4356c07403a7bbb \ - --hash=sha256:db17fc0fec46180b6acbd1d5d8650a04e5527c02b09381da0b5b888d02a204c8 \ - --hash=sha256:e0c21cc5c7a41d1a509828e2b14fe9c30e807c6df611ec0fd64a47b8d4b16abd \ - --hash=sha256:e1931bfcc222a4c9da6475f2ffffb84b97ab3876041ec639171c11ce802bee6a \ - --hash=sha256:efba467efb316baf2a9452d892c2f982b9b758c778d23e38c7f44fa211b30bb9 \ - --hash=sha256:f2c7c234c568402e10db74e33d787e4144e394ae2bcbbf11000fbfe2e017ad68 \ - --hash=sha256:f53b3c15a3b539c16b99655c43c365622046d68c49b680c48eba4da2a4fb6f27 \ - --hash=sha256:fc2635400fe39ff37ebc4e75342cc54450eadadf39c540ff132c319bf4960095 +onnx==1.22.0 \ + --hash=sha256:19e45e4af88e3fe3261458d4b8cc461957ae2782a358a3560503569bf3b23b72 \ + --hash=sha256:1d0a2bdb15eb2b3cb65c438f3423d9620d14fdce32f92380e6bb1b2e09568ef5 \ + --hash=sha256:239958534464612fbcb6ed23d5228aaa925b39b8773f58726809ffdccb4edd1c \ + --hash=sha256:2632406b8f523ef2e2873c363f90b20a3d88c0fbcfac757d3addffccf8f452c2 \ + --hash=sha256:2d8f229a553fa440fe623ed7b36fca5e7762da3af871c3f8f8ce451df73e2914 \ + --hash=sha256:33ce94119bbb7f05d9caea4ea7549f5185a54369f6bbc9f70171bd5ee6935bbc \ + --hash=sha256:596fbf0490947533c1c1045ba860851dc9fb77471023dac9a71ba5b42ceab103 \ + --hash=sha256:5c1c0408a9d4b4df33851672e5fc7590b96301ee123396d608f9ab6f045ab06b \ + --hash=sha256:6d0ffffd63a4ecc21ddaeddd5bf02099cb701aa4243f2de00122726869065ca4 \ + --hash=sha256:72ccebab3bac07215c204ce8848d42e78eaaa666badbf72d25cd359b9f269e3a \ + --hash=sha256:82e9f27fc1223cb06d68a56bed6f9d3caf3d0dad1b61bce45006d529b15bd94c \ + --hash=sha256:8561a2c00041c07e08db0c228593b5b4694100398685f348532af7dbb84189da \ + --hash=sha256:87a3077958f66f9a26dec10077ac28326d9cec2cbe1f0b040947243449754573 \ + --hash=sha256:8907b9b9389893bc0dc6314cc00ee1e3a69844e48d689eacc6a0340411a7da58 \ + --hash=sha256:8a5eccce2d5fc6c5046928a9aa7cdd9750ea4a586f8de341d3d40d820c35fdec \ + --hash=sha256:8e268cdc0547e3949799ffd4a44451dc2b9080b57d0824a2db680b6ec65506f0 \ + --hash=sha256:955e02e1f6d385b53d52f9cd7b9cdf5caf417c300bcfe3c64c6d542be763845b \ + --hash=sha256:a1a89a7cb9ba13d78f009bdec448ec82a98972589734f157022a2bff7a5973a6 \ + --hash=sha256:a3a39fc4643867aecb33417fdddb11e308ee79d2d4a584b9d50cc7aec2091b13 \ + --hash=sha256:ae5a563f281cd9d2845622cecf6c092a57e4ee1b138f66fdbbdd4200567a5e16 \ + --hash=sha256:c21a0e59fd967a95b358e4a6e756d1f1eec2d304a83480f329f66e30d2bf0223 \ + --hash=sha256:cc8b66b312f8f03a53e268afb67180a2d97dd12cc79e2b61361c6c0073448016 \ + --hash=sha256:ef40c0aaf0b643857ea9306fc7eddce17eaf9fb0407e4801f1fc5758443a38e0 \ + --hash=sha256:f3c120dcdb70ad738f3c061b32798f408ea299eb69f84dd69ab4a6bf3c2ec01f onnxruntime-gpu==1.23.2 \ --hash=sha256:054282614c2fc9a4a27d74242afbae706a410f1f63cc35bc72f99709029a5ba4 \ --hash=sha256:18de50c6c8eea50acc405ea13d299aec593e46478d7a22cd32cdbbdf7c42899d \ @@ -832,9 +909,9 @@ onnxruntime-gpu==1.23.2 \ --hash=sha256:d76d1ac7a479ecc3ac54482eea4ba3b10d68e888a0f8b5f420f0bdf82c5eec59 \ --hash=sha256:deba091e15357355aa836fd64c6c4ac97dd0c4609c38b08a69675073ea46b321 \ --hash=sha256:fe925a84b00e291e0ad3fac29bfd8f8e06112abc760cdc82cb711b4f3935bd95 -onnxslim==0.1.90 \ - --hash=sha256:bd8695ddb446dd7fb1680c687f4f7a923b1598c9ed05b0b69ff6a8eb8a30050d \ - --hash=sha256:cdea94ee294f4403c7dbe63f9176916b4396a1cd79cd05d67078f212cf9ade28 +onnxslim==0.1.96 \ + --hash=sha256:386a1c64e61a66fb79cdd62de996323b9fb950d22de9b117cd31f211cac96048 \ + --hash=sha256:a43f800d39434e6b4d542abe17c25afb7fcc33aabf53d20464cb0dae0f66cbb6 opencv-python==4.11.0.86 \ --hash=sha256:03d60ccae62304860d232272e4a4fda93c39d595780cb40b161b310244b736a4 \ --hash=sha256:085ad9b77c18853ea66283e98affefe2de8cc4c1f43eda4c100cf9b2721142ec \ @@ -843,114 +920,110 @@ opencv-python==4.11.0.86 \ --hash=sha256:6b02611523803495003bd87362db3e1d2a0454a6a63025dc6658a9830570aa0d \ --hash=sha256:810549cb2a4aedaa84ad9a1c92fbfdfc14090e2749cedf2c1589ad8359aa169b \ --hash=sha256:9d05ef13d23fe97f575153558653e2d6e87103995d54e6a35db3f282fe1f9c66 -packaging==26.0 \ - --hash=sha256:00243ae351a257117b6a241061796684b084ed1c516a08c48a3f7e147a9d80b4 \ - --hash=sha256:b36f1fef9334a5588b4166f8bcd26a14e521f2b55e6b9de3aaa80d3ff7a37529 -pillow==12.2.0 \ - --hash=sha256:00a2865911330191c0b818c59103b58a5e697cae67042366970a6b6f1b20b7f9 \ - --hash=sha256:01afa7cf67f74f09523699b4e88c73fb55c13346d212a59a2db1f86b0a63e8c5 \ - --hash=sha256:03e7e372d5240cc23e9f07deca4d775c0817bffc641b01e9c3af208dbd300987 \ - --hash=sha256:03f6fab9219220f041c74aeaa2939ff0062bd5c364ba9ce037197f4c6d498cd9 \ - --hash=sha256:042db20a421b9bafecc4b84a8b6e444686bd9d836c7fd24542db3e7df7baad9b \ - --hash=sha256:0538bd5e05efec03ae613fd89c4ce0368ecd2ba239cc25b9f9be7ed426b0af1f \ - --hash=sha256:0a34329707af4f73cf1782a36cd2289c0368880654a2c11f027bcee9052d35dd \ - --hash=sha256:0c838a5125cee37e68edec915651521191cef1e6aa336b855f495766e77a366e \ - --hash=sha256:144748b3af2d1b358d41286056d0003f47cb339b8c43a9ea42f5fea4d8c66b6e \ - --hash=sha256:1610dd6c61621ae1cf811bef44d77e149ce3f7b95afe66a4512f8c59f25d9ebe \ - --hash=sha256:1e1757442ed87f4912397c6d35a0db6a7b52592156014706f17658ff58bbf795 \ - --hash=sha256:22db17c68434de69d8ecfc2fe821569195c0c373b25cccb9cbdacf2c6e53c601 \ - --hash=sha256:25373b66e0dd5905ed63fa3cae13c82fbddf3079f2c8bf15c6fb6a35586324c1 \ - --hash=sha256:2bb4a8d594eacdfc59d9e5ad972aa8afdd48d584ffd5f13a937a664c3e7db0ed \ - --hash=sha256:2c727a6d53cb0018aadd8018c2b938376af27914a68a492f59dfcaca650d5eea \ - --hash=sha256:2d192a155bbcec180f8564f693e6fd9bccff5a7af9b32e2e4bf8c9c69dbad6b5 \ - --hash=sha256:2e589959f10d9824d39b350472b92f0ce3b443c0a3442ebf41c40cb8361c5b97 \ - --hash=sha256:2e5a76d03a6c6dcef67edabda7a52494afa4035021a79c8558e14af25313d453 \ - --hash=sha256:325ca0528c6788d2a6c3d40e3568639398137346c3d6e66bb61db96b96511c98 \ - --hash=sha256:34c0d99ecccea270c04882cb3b86e7b57296079c9a4aff88cb3b33563d95afaa \ - --hash=sha256:390ede346628ccc626e5730107cde16c42d3836b89662a115a921f28440e6a3b \ - --hash=sha256:394167b21da716608eac917c60aa9b969421b5dcbbe02ae7f013e7b85811c69d \ - --hash=sha256:3997232e10d2920a68d25191392e3a4487d8183039e1c74c2297f00ed1c50705 \ - --hash=sha256:3adc9215e8be0448ed6e814966ecf3d9952f0ea40eb14e89a102b87f450660d8 \ - --hash=sha256:3e080565d8d7c671db5802eedfb438e5565ffa40115216eabb8cd52d0ecce024 \ - --hash=sha256:4a6c9fa44005fa37a91ebfc95d081e8079757d2e904b27103f4f5fa6f0bf78c0 \ - --hash=sha256:4bfd07bc812fbd20395212969e41931001fd59eb55a60658b0e5710872e95286 \ - --hash=sha256:4e6c62e9d237e9b65fac06857d511e90d8461a32adcc1b9065ea0c0fa3a28150 \ - --hash=sha256:50d8520da2a6ce0af445fa6d648c4273c3eeefbc32d7ce049f22e8b5c3daecc2 \ - --hash=sha256:51c4167c34b0d8ba05b547a3bb23578d0ba17b80a5593f93bd8ecb123dd336a3 \ - --hash=sha256:56a3f9c60a13133a98ecff6197af34d7824de9b7b38c3654861a725c970c197b \ - --hash=sha256:56b25336f502b6ed02e889f4ece894a72612fe885889a6e8c4c80239ff6e5f5f \ - --hash=sha256:57850958fe9c751670e49b2cecf6294acc99e562531f4bd317fa5ddee2068463 \ - --hash=sha256:58f62cc0f00fd29e64b29f4fd923ffdb3859c9f9e6105bfc37ba1d08994e8940 \ - --hash=sha256:5c0a9f29ca8e79f09de89293f82fc9b0270bb4af1d58bc98f540cc4aedf03166 \ - --hash=sha256:5cdfebd752ec52bf5bb4e35d9c64b40826bc5b40a13df7c3cda20a2c03a0f5ed \ - --hash=sha256:5d04bfa02cc2d23b497d1e90a0f927070043f6cbf303e738300532379a4b4e0f \ - --hash=sha256:5d2fd0fa6b5d9d1de415060363433f28da8b1526c1c129020435e186794b3795 \ - --hash=sha256:62f5409336adb0663b7caa0da5c7d9e7bdbaae9ce761d34669420c2a801b2780 \ - --hash=sha256:632ff19b2778e43162304d50da0181ce24ac5bb8180122cbe1bf4673428328c7 \ - --hash=sha256:6562ace0d3fb5f20ed7290f1f929cae41b25ae29528f2af1722966a0a02e2aa1 \ - --hash=sha256:673aa32138f3e7531ccdbca7b3901dba9b70940a19ccecc6a37c77d5fdeb05b5 \ - --hash=sha256:6a6e67ea2e6feda684ed370f9a1c52e7a243631c025ba42149a2cc5934dec295 \ - --hash=sha256:6a9adfc6d24b10f89588096364cc726174118c62130c817c2837c60cf08a392b \ - --hash=sha256:6bb77b2dcb06b20f9f4b4a8454caa581cd4dd0643a08bacf821216a16d9c8354 \ - --hash=sha256:6e6b2a0c538fc200b38ff9eb6628228b77908c319a005815f2dde585a0664b60 \ - --hash=sha256:71cde9a1e1551df7d34a25462fc60325e8a11a82cc2e2f54578e5e9a1e153d65 \ - --hash=sha256:7371b48c4fa448d20d2714c9a1f775a81155050d383333e0a6c15b1123dda005 \ - --hash=sha256:766cef22385fa1091258ad7e6216792b156dc16d8d3fa607e7545b2b72061f1c \ - --hash=sha256:7b14cc0106cd9aecda615dd6903840a058b4700fcb817687d0ee4fc8b6e389be \ - --hash=sha256:7f84204dee22a783350679a0333981df803dac21a0190d706a50475e361c93f5 \ - --hash=sha256:8023abc91fba39036dbce14a7d6535632f99c0b857807cbbbf21ecc9f4717f06 \ - --hash=sha256:80b2da48193b2f33ed0c32c38140f9d3186583ce7d516526d462645fd98660ae \ - --hash=sha256:8297651f5b5679c19968abefd6bb84d95fe30ef712eb1b2d9b2d31ca61267f4c \ - --hash=sha256:88d387ff40b3ff7c274947ed3125dedf5262ec6919d83946753b5f3d7c67ea4c \ - --hash=sha256:88ddbc66737e277852913bd1e07c150cc7bb124539f94c4e2df5344494e0a612 \ - --hash=sha256:8bd7903a5f2a4545f6fd5935c90058b89d30045568985a71c79f5fd6edf9b91e \ - --hash=sha256:8be29e59487a79f173507c30ddf57e733a357f67881430449bb32614075a40ab \ - --hash=sha256:8c984051042858021a54926eb597d6ee3012393ce9c181814115df4c60b9a808 \ - --hash=sha256:8cbeb542b2ebc6fcdacabf8aca8c1a97c9b3ad3927d46b8723f9d4f033288a0f \ - --hash=sha256:8e9c4f5b3c546fa3458a29ab22646c1c6c787ea8f5ef51300e5a60300736905e \ - --hash=sha256:90e6f81de50ad6b534cab6e5aef77ff6e37722b2f5d908686f4a5c9eba17a909 \ - --hash=sha256:975385f4776fafde056abb318f612ef6285b10a1f12b8570f3647ad0d74b48ec \ - --hash=sha256:9a8a34cc89c67a65ea7437ce257cea81a9dad65b29805f3ecee8c8fe8ff25ffe \ - --hash=sha256:9aba9a17b623ef750a4d11b742cbafffeb48a869821252b30ee21b5e91392c50 \ - --hash=sha256:9f08483a632889536b8139663db60f6724bfcb443c96f1b18855860d7d5c0fd4 \ - --hash=sha256:a4e8f36e677d3336f35089648c8955c51c6d386a13cf6ee9c189c5f5bd713a9f \ - --hash=sha256:a52edc8bfff4429aaabdf4d9ee0daadbbf8562364f940937b941f87a4290f5ff \ - --hash=sha256:a830b1a40919539d07806aa58e1b114df53ddd43213d9c8b75847eee6c0182b5 \ - --hash=sha256:aa88ccfe4e32d362816319ed727a004423aab09c5cea43c01a4b435643fa34eb \ - --hash=sha256:af73337013e0b3b46f175e79492d96845b16126ddf79c438d7ea7ff27783a414 \ - --hash=sha256:b1c1fbd8a5a1af3412a0810d060a78b5136ec0836c8a4ef9aa11807f2a22f4e1 \ - --hash=sha256:b85f66ae9eb53e860a873b858b789217ba505e5e405a24b85c0464822fe88032 \ - --hash=sha256:b86024e52a1b269467a802258c25521e6d742349d760728092e1bc2d135b4d76 \ - --hash=sha256:bd9c0c7a0c681a347b3194c500cb1e6ca9cab053ea4d82a5cf45b6b754560136 \ - --hash=sha256:bfa9c230d2fe991bed5318a5f119bd6780cda2915cca595393649fc118ab895e \ - --hash=sha256:d362d1878f00c142b7e1a16e6e5e780f02be8195123f164edf7eddd911eefe7c \ - --hash=sha256:d5d38f1411c0ed9f97bcb49b7bd59b6b7c314e0e27420e34d99d844b9ce3b6f3 \ - --hash=sha256:dac8d77255a37e81a2efcbd1fc05f1c15ee82200e6c240d7e127e25e365c39ea \ - --hash=sha256:dd025009355c926a84a612fecf58bb315a3f6814b17ead51a8e48d3823d9087f \ - --hash=sha256:deede7c263feb25dba4e82ea23058a235dcc2fe1f6021025dc71f2b618e26104 \ - --hash=sha256:e74473c875d78b8e9d5da2a70f7099549f9eb37ded4e2f6a463e60125bccd176 \ - --hash=sha256:ee3120ae9dff32f121610bb08e4313be87e03efeadfc6c0d18f89127e24d0c24 \ - --hash=sha256:eedf4b74eda2b5a4b2b2fb4c006d6295df3bf29e459e198c90ea48e130dc75c3 \ - --hash=sha256:efd8c21c98c5cc60653bcb311bef2ce0401642b7ce9d09e03a7da87c878289d4 \ - --hash=sha256:f1c943e96e85df3d3478f7b691f229887e143f81fedab9b20205349ab04d73ed \ - --hash=sha256:f278f034eb75b4e8a13a54a876cc4a5ab39173d2cdd93a638e1b467fc545ac43 \ - --hash=sha256:f3f40b3c5a968281fd507d519e444c35f0ff171237f4fdde090dd60699458421 \ - --hash=sha256:f490f9368b6fc026f021db16d7ec2fbf7d89e2edb42e8ec09d2c60505f5729c7 \ - --hash=sha256:fb043ee2f06b41473269765c2feae53fc2e2fbf96e5e22ca94fb5ad677856f06 \ - --hash=sha256:fc3d34d4a8fbec3e88a79b92e5465e0f9b842b628675850d860b8bd300b159f5 -polars==1.39.3 \ - --hash=sha256:2e016c7f3e8d14fa777ef86fe0477cec6c67023a20ba4c94d6e8431eefe4a63c \ - --hash=sha256:c2b955ccc0a08a2bc9259785decf3d5c007b489b523bf2390cf21cec2bb82a56 -polars-runtime-32==1.39.3 \ - --hash=sha256:06b47f535eb1f97a9a1e5b0053ef50db3a4276e241178e37bbb1a38b1fa53b14 \ - --hash=sha256:363d49e3a3e638fc943e2b9887940300a7d06789930855a178a4727949259dc2 \ - --hash=sha256:425c0b220b573fa097b4042edff73114cc6d23432a21dfd2dc41adf329d7d2e9 \ - --hash=sha256:7c206bdcc7bc62ea038d6adea8e44b02f0e675e0191a54c810703b4895208ea4 \ - --hash=sha256:8bc9e13dc1d2e828331f2fe8ccbc9757554dc4933a8d3e85e906b988178f95ed \ - --hash=sha256:c728e4f469cafab501947585f36311b8fb222d3e934c6209e83791e0df20b29d \ - --hash=sha256:d66ca522517554a883446957539c40dc7b75eb0c2220357fb28bc8940d305339 \ - --hash=sha256:ef5884711e3c617d7dc93519a7d038e242f5741cfe5fe9afd32d58845d86c562 \ - --hash=sha256:f49f51461de63f13e5dd4eb080421c8f23f856945f3f8bd5b2b1f59da52c2860 +packaging==26.3 \ + --hash=sha256:94edc256424af38762eb31306eed28beb9f0efc50a8837492c9d6fd6004aed79 \ + --hash=sha256:d7193f7c8e4e93f444fde0262bf90af30e16fa0ad0ad44cb553c87339b23cd1c +pillow==12.3.0 \ + --hash=sha256:00808c5e14ef63ac5161091d242999076604ff74b883423a11e5d7bbb38bf756 \ + --hash=sha256:04f01d28a6aaff387bf842a13be313df23ba0597a44f1a976c9feb3c6ff4711a \ + --hash=sha256:06ff022112bc9cbf83b60f8e028d94ad87b60621706487e65f673de61610ab59 \ + --hash=sha256:0740a512dc522224c77d9aa5a8d70d8b7d73fb91f2c21125d8d025d3b8990e45 \ + --hash=sha256:0847a763afefb695bc912d7c131e7e0632d4edc1d8698f58ddabec8e46b8b6d3 \ + --hash=sha256:0dd2064cbc55aaec028ef5fbb60fa47bb6c3e7918e07ff17935284b227a9d2df \ + --hash=sha256:0feb2e9d6ad6c9e3c06effe9d00f3f1e618a6643273576b016f591e9315a7139 \ + --hash=sha256:10e41f0fbf1eec8cfd234b8fe17a4caac7c9d0db4c204d3c173a8f9f6ef3232b \ + --hash=sha256:1182d52bc2d5e5d7d0949503aa7e36d12f42205dc287e4883f407b1988820d39 \ + --hash=sha256:164b31cd1a0490ab6efae01aa5df49da7061be0af1b30e035b6e9a1bfe34ee6e \ + --hash=sha256:1657923d2d45afb66526e5b933e5b3052e6bdea196c90d3abb2424e18c77dae8 \ + --hash=sha256:186941b6aef820ad110fb01fb06eb925374dc3a21b17e37ec9a53b250c6fe2d1 \ + --hash=sha256:1cca606cd25738df4ed873d5ad46bbdb3d83b5cbca291f6b4ff13a4df6b0bbe8 \ + --hash=sha256:21900ce7ba264168cd50defae43cd75d25c833ad4ad6e73ffc5596d12e25ac89 \ + --hash=sha256:236ff70b9312fb68943c703aa842ca6a758abfa45ac187a5e7c1452e96ef72b5 \ + --hash=sha256:23aceaa007d6172b02c277f0cd359c79492bbb14f7072b4ede9fbcaf20648130 \ + --hash=sha256:23d27a3e0307ec2244cc51e7287b919aa68d097504ebe19df4e76a98a3eea5bd \ + --hash=sha256:24870b09b224f7ae3c39ed07d10e819d06f8720bc551847b1d623832b5b0e28d \ + --hash=sha256:251bf95b67017e27b13d82f5b326234ca62d70f9cf4c2b9032de2358a3b12c7b \ + --hash=sha256:25b9b82bb22e6e2b3cd07b39c68b7b862001226cb3dff7130d1cb914121b39ed \ + --hash=sha256:28ce87c5ab450a9dd970b52e5aca5fe63ed432d18a2eaddd1979a00a1ba24ace \ + --hash=sha256:300557495eb45ebb8aec96c2da9c4be642fbf7cd937278b4013ba894ea8eb0eb \ + --hash=sha256:30f2aa603c41533cc25c05acd0da21636e84a315768feb631c937177db558931 \ + --hash=sha256:331b624368d4f1d069149002f25f44bc61c8919ce8ddb3c45bdad8f6e2d89510 \ + --hash=sha256:37d6d0a00072fd2948eb22bce7e1475f34569d90c87c59f7a2ec59541b77f7a6 \ + --hash=sha256:37dc8f7bbb66efe481bb60defacef820c950c24713fb44962ed6aa2a50966de1 \ + --hash=sha256:3b8182a766685eaa002637e28b4ec8d6b18819a0c71f579bf0dbaa5830297cce \ + --hash=sha256:3edce1d53195db527e0191f84b71d02022de0540bf43a16ed734ed7537b07385 \ + --hash=sha256:446c34dcc4324b084a53b705127dc15717b22c5e140ae0a3c38349d4efec071e \ + --hash=sha256:4998562bf62a445225f22e07c896bb04b35b1b1f2eb6d760584c9c51d7a5f78c \ + --hash=sha256:4b0a7fe987b14c31ebda6083f74f22b561fd3739bc0ac51e019622e3d72668c7 \ + --hash=sha256:4e8c2a84d977f50b9daed6eeaf3baef67d00d5d74d932288f02cb94518ee3ace \ + --hash=sha256:4f883547d4b7f0495ebe7056b0cc2aea76094e7a4abc8e933540f3271df27d9c \ + --hash=sha256:514435a37670e3e5e08f3945b68718b6ed329bb84367777e16f9f4dfe1e61a0f \ + --hash=sha256:53aa02d20d10c3d814d536aa4e5ac9b84ca0ff5a88377963b085ad6822f93e64 \ + --hash=sha256:5594fc43d548a7ed94949d139aa1341b270f1863f11cfd37f5a6c8b778a6b67f \ + --hash=sha256:571b9fcb07b97ef3a492028fb3d2dc0993ca23a06138b0315286566d29ef718a \ + --hash=sha256:57b3d78c95ba9059768b10e28b813002261d3f3dfc55cc48b0c988f625175827 \ + --hash=sha256:5afb51d599ea772b8365ae807ae557f18bccfe46ab261fd1c2a9ed700fc6eb17 \ + --hash=sha256:6b02afb9b97f65fbca5f31db6a2a3ba21aa93030225f150fa3f249717e938fb4 \ + --hash=sha256:6c0016e7b354317c4e9e525b937ac8596c38d2d232b419529b9cd7a1cd46e39a \ + --hash=sha256:71d6097b330eea8fd15097780c8e89cb1a8ce7838669f48c5bacd6f663dd4701 \ + --hash=sha256:756c768d0c9c2955feb7a56c37ea24aea2e369f8d36a88da270b6a9f19e62b5e \ + --hash=sha256:78cb2c6865a35ab8ff8b75fd122f6033b92a62c82801110e48ddd6c936a45d91 \ + --hash=sha256:7a743ff716f746fc19a9557f60dab1600d4613255f8a7aeb3cdde4db7eb15a66 \ + --hash=sha256:85f998ea1848bc6757289e739cfbdda3a04adfd58b02fc018ce54d754a5ce468 \ + --hash=sha256:8728f216dcdb6e6d555cf971cb34076139ad74b31fc2c14da4fafc741c5f6217 \ + --hash=sha256:877c3f311ff35410f690861c4409e7ccbf0cd2f878e50628a28e5a0bb689e658 \ + --hash=sha256:8cd2f7bdda092d99c9fc2fb7391354f306d01443d22785d0cbfafa2e2c8bb418 \ + --hash=sha256:8e95e1385e4998ae9694eeaa4730ba5457ff61185b3a55e2e7bea0880aef452a \ + --hash=sha256:962864dc93511324d51ddbb5b9f8731bf71675b93ca612a07441896f4688fb8c \ + --hash=sha256:9cf95fe4d0f84c82d282745d9bb08ad9f926efa00be4697e767b814ce40d4330 \ + --hash=sha256:9e881fca225083806662a5c43d627d215f258ff43c890f831966c7d7ba9c7402 \ + --hash=sha256:a2b55dd6b2a4c4b7d87ffa56bdb33fdc5fdb9a462173861a7bc097f17d91cb09 \ + --hash=sha256:a45650e8ce7fafffd731db8550230db6b0d306d181a90b67d3e6bca2f1990930 \ + --hash=sha256:a876864214e136f0eb367788dbd7df045f4806801518e2cfe9e13229cfe06d8f \ + --hash=sha256:ae26d61dfa7a47befdc7572b521024e8745f3d809bd95ca9505a7bba9ef849ec \ + --hash=sha256:af8d94b0db561cf68b88a267c5c44b49e134f525d0dc2cb7ed413a66bc23559a \ + --hash=sha256:b343699e8308bdc51978310e1c959c584e7869cc8c40780058c87da7781a1e94 \ + --hash=sha256:b3c777e849237620b022f7f297dd67705f9f5cf1685f09f02e46f93e92725468 \ + --hash=sha256:b629de27fda84b42cde7edef0d85f13b958b47f6e9bbcbba9b673c562a89bd8b \ + --hash=sha256:ba09209fbe443b4acccebe845d8a138b89a8f4fbaeedd44953490b5315d5e965 \ + --hash=sha256:ba54cfebe86920a559a7c4d6b9050791c20513650a1952ebe3368c7dc70306f8 \ + --hash=sha256:bcb46e2f9feff8d06323983bd83ed00c201fdcab3d74973e7072a889b3979fcd \ + --hash=sha256:bcc33feacfaefce60c12fd500a277533bdc02b10a19f7f6d348763d8140bbba7 \ + --hash=sha256:bf16ba1b4d0b6b7c8e534936632270cf70eb00dbe09005bc345b2677b726855c \ + --hash=sha256:cf1845d02ad822a369a49f2bb9345b1614744267682e7a03527dc3bf6eea1777 \ + --hash=sha256:d69141514cc30b774ceea5e3ed3a6635c8d8a96edf664689b890f4089111fb35 \ + --hash=sha256:d9c7f76c0673154f044e9d78c8655fb4213f6ca31a836df48b40fe5d187717b9 \ + --hash=sha256:dbce0b29841537a2fa4a214c2bbf14de3587c9680caa9b4e217568472490b28f \ + --hash=sha256:dc624f6bc473dacdf7ef7eb8678d0d08edf15cd94fad6ae5c7d6cc67a4e4902f \ + --hash=sha256:e158cb00350dc278f3b91551101aa7d12415a66ebf2c91d8d5ac14e56ddd3ad0 \ + --hash=sha256:e491916b378fba47242221bb9ead245211b70d504f495d105d17b14a24b4907c \ + --hash=sha256:e795b7eb908249c4e43c7c99fac7c2c75dab0c43566e37db472a355f63693d71 \ + --hash=sha256:e7e480451b9fa137494bccd3a7d69adbe8ac65a87d97be61e11f1b1050a5bac3 \ + --hash=sha256:e91206ee562682b51b98ef4b26a6ef48fd84e15fd4c4bc5ec768eb641d206838 \ + --hash=sha256:e9871b1ffbfa9656b60aeee92ed5136a5742696006fa322b29ea3d8da0ecc9cf \ + --hash=sha256:e9aeb04d6aef139de265b29683e119b638208f88cf73cdd1658aa07221165321 \ + --hash=sha256:ebaea975e03d3141d9d3a507df75c9b3ec90fa9d2ffd07567b3a978d9d790b26 \ + --hash=sha256:f0606c8bf2cdefea14a43530f7657cbbb7ecf1c4222512492ef4a4434a9501ec \ + --hash=sha256:f13c32a3abd6079a66d9526e18dad9b6d280384d49d7c54040cd57b6424041d9 \ + --hash=sha256:f7401aebd7f581d7f83a439d87d474999317ee099218e5ad25d125290990ba65 \ + --hash=sha256:fa4ecea169a355be7a3ade2c783e2ed12f0e40d2c5621cda8b3297faf7fbb9f5 \ + --hash=sha256:fbd139c8447d25dd750ab79ee274cc5e1fe80fc56340ab10b18a195e1b6eca3e \ + --hash=sha256:fdafc9cce40277e0f7a0feabce0ee50dd2fa1800f3b38015e51296b5e814048d \ + --hash=sha256:fe3cca2e4e8a592be0f269a1ca4835c25199d9f3ce815c8491048f785b0a0198 \ + --hash=sha256:ffd0c5368496f41b0944be820fcb7a838aa6e623d250b01acf2643939c3f99d7 +polars==1.44.2 \ + --hash=sha256:1bb331f17a40d9d931101533dcd33637b66edc61eb377b07020dac16a0f0377b \ + --hash=sha256:86c8e26b6c2de8c8d344bb910b74dfc47b118ac3fe0f19b44909467990a0b281 +polars-runtime-32==1.44.2 \ + --hash=sha256:10c0c695a418407617b5159db7d9a21074a733e4c6d61275b6762f25cb31ca99 \ + --hash=sha256:1fd536720668ba203a16a20b08cd6b23057e407a0279cf36b2f35f879d6e3208 \ + --hash=sha256:8598e7a20efba70bb74978c7df7af7c606ff4d79b9b48fdd808250b189bc9a13 \ + --hash=sha256:a1bafb441e99199a62c63bf1bbdc0ea09ee9776dbac2bf31452b5000fb1df2f7 \ + --hash=sha256:b84842f7d621aaca7a52e165e19a24f89db45f8aa13744941430218419a14a67 \ + --hash=sha256:bbf9b45040291dc1c6c588c837019c33557bde25ec536562a9cca9e1f6dfcc45 \ + --hash=sha256:c4a09fb14aad711526346efc0cb2015c2fd0555ce4118b6524e5debbaea65ff5 \ + --hash=sha256:d51040d3ab40157f6db3c62be59cab5b80fb3c8d158924769c4982a1c8eef730 \ + --hash=sha256:e0fd43720c8222ae39919c8ff891636d53b352706087120e62f83544dd3ff782 protobuf==5.29.6 \ --hash=sha256:36ade6ff88212e91aef4e687a971a11d7d24d6948a66751abc1b3238648f5d05 \ --hash=sha256:62e8a3114992c7c647bce37dcc93647575fc52d50e48de30c6fcb28a6a291eb1 \ @@ -1065,56 +1138,9 @@ pyyaml==6.0.3 \ --hash=sha256:f7057c9a337546edc7973c0d3ba84ddcdf0daa14533c2065749c9075001090e6 \ --hash=sha256:fa160448684b4e94d80416c0fa4aac48967a969efe22931448d853ada8baf926 \ --hash=sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0 -requests==2.33.1 \ - --hash=sha256:18817f8c57c6263968bc123d237e3b8b08ac046f5456bd1e307ee8f4250d3517 \ - --hash=sha256:4e6d1ef462f3626a1f0a0a9c42dd93c63bad33f9f1c1937509b8c5c8718ab56a -scipy==1.15.3 \ - --hash=sha256:05dc6abcd105e1a29f95eada46d4a3f251743cfd7d3ae8ddb4088047f24ea477 \ - --hash=sha256:06efcba926324df1696931a57a176c80848ccd67ce6ad020c810736bfd58eb1c \ - --hash=sha256:0a769105537aa07a69468a0eefcd121be52006db61cdd8cac8a0e68980bbb723 \ - --hash=sha256:0bdd905264c0c9cfa74a4772cdb2070171790381a5c4d312c973382fc6eaf730 \ - --hash=sha256:0ff17c0bb1cb32952c09217d8d1eed9b53d1463e5f1dd6052c7857f83127d539 \ - --hash=sha256:14ed70039d182f411ffc74789a16df3835e05dc469b898233a245cdfd7f162cb \ - --hash=sha256:185cd3d6d05ca4b44a8f1595af87f9c372bb6acf9c808e99aa3e9aa03bd98cf6 \ - --hash=sha256:18aaacb735ab38b38db42cb01f6b92a2d0d4b6aabefeb07f02849e47f8fb3594 \ - --hash=sha256:1c832e1bd78dea67d5c16f786681b28dd695a8cb1fb90af2e27580d3d0967e92 \ - --hash=sha256:263961f658ce2165bbd7b99fa5135195c3a12d9bef045345016b8b50c315cb82 \ - --hash=sha256:271e3713e645149ea5ea3e97b57fdab61ce61333f97cfae392c28ba786f9bb49 \ - --hash=sha256:2c620736bcc334782e24d173c0fdbb7590a0a436d2fdf39310a8902505008759 \ - --hash=sha256:34716e281f181a02341ddeaad584205bd2fd3c242063bd3423d61ac259ca7eba \ - --hash=sha256:39cb9c62e471b1bb3750066ecc3a3f3052b37751c7c3dfd0fd7e48900ed52982 \ - --hash=sha256:3ac07623267feb3ae308487c260ac684b32ea35fd81e12845039952f558047b8 \ - --hash=sha256:3b0334816afb8b91dab859281b1b9786934392aa3d527cd847e41bb6f45bee65 \ - --hash=sha256:40e54d5c7e7ebf1aa596c374c49fa3135f04648a0caabcb66c52884b943f02b4 \ - --hash=sha256:50f9e62461c95d933d5c5ef4a1f2ebf9a2b4e83b0db374cb3f1de104d935922e \ - --hash=sha256:52092bc0472cfd17df49ff17e70624345efece4e1a12b23783a1ac59a1b728ed \ - --hash=sha256:5380741e53df2c566f4d234b100a484b420af85deb39ea35a1cc1be84ff53a5c \ - --hash=sha256:5e721fed53187e71d0ccf382b6bf977644c533e506c4d33c3fb24de89f5c3ed5 \ - --hash=sha256:6487aa99c2a3d509a5227d9a5e889ff05830a06b2ce08ec30df6d79db5fcd5c5 \ - --hash=sha256:6ac6310fdbfb7aa6612408bd2f07295bcbd3fda00d2d702178434751fe48e019 \ - --hash=sha256:6cfd56fc1a8e53f6e89ba3a7a7251f7396412d655bca2aa5611c8ec9a6784a1e \ - --hash=sha256:6db907c7368e3092e24919b5e31c76998b0ce1684d51a90943cb0ed1b4ffd6c1 \ - --hash=sha256:721d6b4ef5dc82ca8968c25b111e307083d7ca9091bc38163fb89243e85e3889 \ - --hash=sha256:76ad1fb5f8752eabf0fa02e4cc0336b4e8f021e2d5f061ed37d6d264db35e3ca \ - --hash=sha256:79167bba085c31f38603e11a267d862957cbb3ce018d8b38f79ac043bc92d825 \ - --hash=sha256:795c46999bae845966368a3c013e0e00947932d68e235702b5c3f6ea799aa8c9 \ - --hash=sha256:7e11270a000969409d37ed399585ee530b9ef6aa99d50c019de4cb01e8e54e62 \ - --hash=sha256:8c9ed3ba2c8a2ce098163a9bdb26f891746d02136995df25227a20e71c396ebb \ - --hash=sha256:993439ce220d25e3696d1b23b233dd010169b62f6456488567e830654ee37a6b \ - --hash=sha256:9d61e97b186a57350f6d6fd72640f9e99d5a4a2b8fbf4b9ee9a841eab327dc13 \ - --hash=sha256:9db984639887e3dffb3928d118145ffe40eff2fa40cb241a306ec57c219ebbbb \ - --hash=sha256:9e2abc762b0811e09a0d3258abee2d98e0c703eee49464ce0069590846f31d40 \ - --hash=sha256:a345928c86d535060c9c2b25e71e87c39ab2f22fc96e9636bd74d1dbf9de448c \ - --hash=sha256:ad3432cb0f9ed87477a8d97f03b763fd1d57709f1bbde3c9369b1dff5503b253 \ - --hash=sha256:ae48a786a28412d744c62fd7816a4118ef97e5be0bee968ce8f0a2fba7acf3bb \ - --hash=sha256:aef683a9ae6eb00728a542b796f52a5477b78252edede72b8327a886ab63293f \ - --hash=sha256:b90ab29d0c37ec9bf55424c064312930ca5f4bde15ee8619ee44e69319aab163 \ - --hash=sha256:c05045d8b9bfd807ee1b9f38761993297b10b245f012b11b13b91ba8945f7e45 \ - --hash=sha256:c9deabd6d547aee2c9a81dee6cc96c6d7e9a9b1953f74850c179f91fdc729cb7 \ - --hash=sha256:dde4fc32993071ac0c7dd2d82569e544f0bdaff66269cb475e0f369adad13f11 \ - --hash=sha256:eae3cf522bc7df64b42cad3925c876e1b0b6c35c1337c93e12c0f366f55b0eaf \ - --hash=sha256:ed7284b21a7a0c8f1b6e5977ac05396c0d008b89e05498c8b7e8f4a1423bba0e \ - --hash=sha256:f77f853d584e72e874d87357ad70f44b437331507d1c311457bed8ed2b956126 +requests==2.34.2 \ + --hash=sha256:2a0d60c172f83ac6ab31e4554906c0f3b3588d37b5cb939b1c061f4907e278e0 \ + --hash=sha256:f288924cae4e29463698d6d60bc6a4da69c89185ad1e0bcc4104f584e960b9ed six==1.17.0 \ --hash=sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274 \ --hash=sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81 @@ -1222,20 +1248,20 @@ triton==3.6.0 \ --hash=sha256:d002e07d7180fd65e622134fbd980c9a3d4211fb85224b56a0a0efbd422ab72f \ --hash=sha256:e8e323d608e3a9bfcc2d9efcc90ceefb764a82b99dea12a86d643c72539ad5d3 \ --hash=sha256:ef5523241e7d1abca00f1d240949eebdd7c673b005edbbce0aca95b8191f1d43 -typing-extensions==4.15.0 \ - --hash=sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466 \ - --hash=sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548 -ultralytics==8.4.34 \ - --hash=sha256:e932da39976879ddf4f398993bd44587c1f5aafaac138efab38d34030680c113 \ - --hash=sha256:fe94bf945c2c69b4df245ee9327dc3c7ce6d06ec9c647843331b0d497a48db78 -ultralytics-thop==2.0.18 \ - --hash=sha256:21103bcd39cc9928477dc3d9374561749b66a1781b35f46256c8d8c4ac01d9cf \ - --hash=sha256:2bb44851ad224b116c3995b02dd5e474a5ccf00acf237fe0edb9e1506ede04ec +typing-extensions==4.16.0 \ + --hash=sha256:481caa481374e813c1b176ada14e97f1f67a4539ce9cfeb3f350d78d6370c2e8 \ + --hash=sha256:dc983d19a509c94dba722ee6abd33940f7c05a89e243c47e907eb4db6f1a43e5 +ultralytics==8.4.146 \ + --hash=sha256:5c3618f4c5f7b89ad6afdf789bf4d90645054f4eb78c211aa7eed1e186fa65fc \ + --hash=sha256:73e826b090d35af5a54130be1875d648146d689cf281313dd1a15bc85c557051 +ultralytics-thop==2.1.6 \ + --hash=sha256:0ec2df8ebd3db35795e1f80cdc8bce6734446dbe989bca1b0c89396353f0f08c \ + --hash=sha256:23f7b8ad124fa3432c1a7de9279102c4fdda699216032a7dff49f87ec3d1a3af urllib3==2.7.0 \ --hash=sha256:231e0ec3b63ceb14667c67be60f2f2c40a518cb38b03af60abc813da26505f4c \ --hash=sha256:9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897 # The following packages are considered to be unsafe in a requirements file: -pip==26.1.2 \ - --hash=sha256:382ff9f685ee3bc25864f820aa50505825f10f5458ffff07e30a6d96e5715cab \ - --hash=sha256:f49cd134c61cf2fd75e0ce2676db03e4054504a5a4986d00f8299ae632dc4605 +pip==26.2.1 \ + --hash=sha256:71138adf1f4ca900cdb7d289c21b7494329f2332b6d85f0e1c42108c0384ed3e \ + --hash=sha256:f6ad667e89a1fe78046c8f13232b247200f5258d7828f3f7883d660878e0813f diff --git a/frontend/requirements.txt b/frontend/requirements.txt index 0919578..cfce0a9 100644 --- a/frontend/requirements.txt +++ b/frontend/requirements.txt @@ -1,123 +1,182 @@ -certifi==2026.1.4 \ - --hash=sha256:9943707519e4add1115f44c2bc244f782c0249876bf51b6599fee1ffbedd685c \ - --hash=sha256:ac726dd470482006e014ad384921ed6438c457018f4b3d204aea4281258b2120 -charset-normalizer==3.4.4 \ - --hash=sha256:027f6de494925c0ab2a55eab46ae5129951638a49a34d87f4c3eda90f696b4ad \ - --hash=sha256:077fbb858e903c73f6c9db43374fd213b0b6a778106bc7032446a8e8b5b38b93 \ - --hash=sha256:0a98e6759f854bd25a58a73fa88833fba3b7c491169f86ce1180c948ab3fd394 \ - --hash=sha256:0d3d8f15c07f86e9ff82319b3d9ef6f4bf907608f53fe9d92b28ea9ae3d1fd89 \ - --hash=sha256:0f04b14ffe5fdc8c4933862d8306109a2c51e0704acfa35d51598eb45a1e89fc \ - --hash=sha256:11d694519d7f29d6cd09f6ac70028dba10f92f6cdd059096db198c283794ac86 \ - --hash=sha256:194f08cbb32dc406d6e1aea671a68be0823673db2832b38405deba2fb0d88f63 \ - --hash=sha256:1bee1e43c28aa63cb16e5c14e582580546b08e535299b8b6158a7c9c768a1f3d \ - --hash=sha256:21d142cc6c0ec30d2efee5068ca36c128a30b0f2c53c1c07bd78cb6bc1d3be5f \ - --hash=sha256:2437418e20515acec67d86e12bf70056a33abdacb5cb1655042f6538d6b085a8 \ - --hash=sha256:244bfb999c71b35de57821b8ea746b24e863398194a4014e4c76adc2bbdfeff0 \ - --hash=sha256:2677acec1a2f8ef614c6888b5b4ae4060cc184174a938ed4e8ef690e15d3e505 \ - --hash=sha256:277e970e750505ed74c832b4bf75dac7476262ee2a013f5574dd49075879e161 \ - --hash=sha256:2aaba3b0819274cc41757a1da876f810a3e4d7b6eb25699253a4effef9e8e4af \ - --hash=sha256:2b7d8f6c26245217bd2ad053761201e9f9680f8ce52f0fcd8d0755aeae5b2152 \ - --hash=sha256:2c9d3c380143a1fedbff95a312aa798578371eb29da42106a29019368a475318 \ - --hash=sha256:3162d5d8ce1bb98dd51af660f2121c55d0fa541b46dff7bb9b9f86ea1d87de72 \ - --hash=sha256:31fd66405eaf47bb62e8cd575dc621c56c668f27d46a61d975a249930dd5e2a4 \ - --hash=sha256:362d61fd13843997c1c446760ef36f240cf81d3ebf74ac62652aebaf7838561e \ - --hash=sha256:376bec83a63b8021bb5c8ea75e21c4ccb86e7e45ca4eb81146091b56599b80c3 \ - --hash=sha256:44c2a8734b333e0578090c4cd6b16f275e07aa6614ca8715e6c038e865e70576 \ - --hash=sha256:47cc91b2f4dd2833fddaedd2893006b0106129d4b94fdb6af1f4ce5a9965577c \ - --hash=sha256:4902828217069c3c5c71094537a8e623f5d097858ac6ca8252f7b4d10b7560f1 \ - --hash=sha256:4bd5d4137d500351a30687c2d3971758aac9a19208fc110ccb9d7188fbe709e8 \ - --hash=sha256:4fe7859a4e3e8457458e2ff592f15ccb02f3da787fcd31e0183879c3ad4692a1 \ - --hash=sha256:542d2cee80be6f80247095cc36c418f7bddd14f4a6de45af91dfad36d817bba2 \ - --hash=sha256:554af85e960429cf30784dd47447d5125aaa3b99a6f0683589dbd27e2f45da44 \ - --hash=sha256:5833d2c39d8896e4e19b689ffc198f08ea58116bee26dea51e362ecc7cd3ed26 \ - --hash=sha256:5947809c8a2417be3267efc979c47d76a079758166f7d43ef5ae8e9f92751f88 \ - --hash=sha256:5ae497466c7901d54b639cf42d5b8c1b6a4fead55215500d2f486d34db48d016 \ - --hash=sha256:5bd2293095d766545ec1a8f612559f6b40abc0eb18bb2f5d1171872d34036ede \ - --hash=sha256:5bfbb1b9acf3334612667b61bd3002196fe2a1eb4dd74d247e0f2a4d50ec9bbf \ - --hash=sha256:5cb4d72eea50c8868f5288b7f7f33ed276118325c1dfd3957089f6b519e1382a \ - --hash=sha256:5dbe56a36425d26d6cfb40ce79c314a2e4dd6211d51d6d2191c00bed34f354cc \ - --hash=sha256:5f819d5fe9234f9f82d75bdfa9aef3a3d72c4d24a6e57aeaebba32a704553aa0 \ - --hash=sha256:64b55f9dce520635f018f907ff1b0df1fdc31f2795a922fb49dd14fbcdf48c84 \ - --hash=sha256:6515f3182dbe4ea06ced2d9e8666d97b46ef4c75e326b79bb624110f122551db \ - --hash=sha256:65e2befcd84bc6f37095f5961e68a6f077bf44946771354a28ad434c2cce0ae1 \ - --hash=sha256:6aee717dcfead04c6eb1ce3bd29ac1e22663cdea57f943c87d1eab9a025438d7 \ - --hash=sha256:6b39f987ae8ccdf0d2642338faf2abb1862340facc796048b604ef14919e55ed \ - --hash=sha256:6e1fcf0720908f200cd21aa4e6750a48ff6ce4afe7ff5a79a90d5ed8a08296f8 \ - --hash=sha256:74018750915ee7ad843a774364e13a3db91682f26142baddf775342c3f5b1133 \ - --hash=sha256:74664978bb272435107de04e36db5a9735e78232b85b77d45cfb38f758efd33e \ - --hash=sha256:74bb723680f9f7a6234dcf67aea57e708ec1fbdf5699fb91dfd6f511b0a320ef \ - --hash=sha256:752944c7ffbfdd10c074dc58ec2d5a8a4cd9493b314d367c14d24c17684ddd14 \ - --hash=sha256:778d2e08eda00f4256d7f672ca9fef386071c9202f5e4607920b86d7803387f2 \ - --hash=sha256:780236ac706e66881f3b7f2f32dfe90507a09e67d1d454c762cf642e6e1586e0 \ - --hash=sha256:798d75d81754988d2565bff1b97ba5a44411867c0cf32b77a7e8f8d84796b10d \ - --hash=sha256:799a7a5e4fb2d5898c60b640fd4981d6a25f1c11790935a44ce38c54e985f828 \ - --hash=sha256:7a32c560861a02ff789ad905a2fe94e3f840803362c84fecf1851cb4cf3dc37f \ - --hash=sha256:7c308f7e26e4363d79df40ca5b2be1c6ba9f02bdbccfed5abddb7859a6ce72cf \ - --hash=sha256:7fa17817dc5625de8a027cb8b26d9fefa3ea28c8253929b8d6649e705d2835b6 \ - --hash=sha256:81d5eb2a312700f4ecaa977a8235b634ce853200e828fbadf3a9c50bab278328 \ - --hash=sha256:82004af6c302b5d3ab2cfc4cc5f29db16123b1a8417f2e25f9066f91d4411090 \ - --hash=sha256:837c2ce8c5a65a2035be9b3569c684358dfbf109fd3b6969630a87535495ceaa \ - --hash=sha256:840c25fb618a231545cbab0564a799f101b63b9901f2569faecd6b222ac72381 \ - --hash=sha256:8a6562c3700cce886c5be75ade4a5db4214fda19fede41d9792d100288d8f94c \ - --hash=sha256:8af65f14dc14a79b924524b1e7fffe304517b2bff5a58bf64f30b98bbc5079eb \ - --hash=sha256:8ef3c867360f88ac904fd3f5e1f902f13307af9052646963ee08ff4f131adafc \ - --hash=sha256:94537985111c35f28720e43603b8e7b43a6ecfb2ce1d3058bbe955b73404e21a \ - --hash=sha256:99ae2cffebb06e6c22bdc25801d7b30f503cc87dbd283479e7b606f70aff57ec \ - --hash=sha256:9a26f18905b8dd5d685d6d07b0cdf98a79f3c7a918906af7cc143ea2e164c8bc \ - --hash=sha256:9b35f4c90079ff2e2edc5b26c0c77925e5d2d255c42c74fdb70fb49b172726ac \ - --hash=sha256:9cd98cdc06614a2f768d2b7286d66805f94c48cde050acdbbb7db2600ab3197e \ - --hash=sha256:9d1bb833febdff5c8927f922386db610b49db6e0d4f4ee29601d71e7c2694313 \ - --hash=sha256:9f7fcd74d410a36883701fafa2482a6af2ff5ba96b9a620e9e0721e28ead5569 \ - --hash=sha256:a59cb51917aa591b1c4e6a43c132f0cdc3c76dbad6155df4e28ee626cc77a0a3 \ - --hash=sha256:a61900df84c667873b292c3de315a786dd8dac506704dea57bc957bd31e22c7d \ - --hash=sha256:a79cfe37875f822425b89a82333404539ae63dbdddf97f84dcbc3d339aae9525 \ - --hash=sha256:a8a8b89589086a25749f471e6a900d3f662d1d3b6e2e59dcecf787b1cc3a1894 \ - --hash=sha256:a8bf8d0f749c5757af2142fe7903a9df1d2e8aa3841559b2bad34b08d0e2bcf3 \ - --hash=sha256:a9768c477b9d7bd54bc0c86dbaebdec6f03306675526c9927c0e8a04e8f94af9 \ - --hash=sha256:ac1c4a689edcc530fc9d9aa11f5774b9e2f33f9a0c6a57864e90908f5208d30a \ - --hash=sha256:af2d8c67d8e573d6de5bc30cdb27e9b95e49115cd9baad5ddbd1a6207aaa82a9 \ - --hash=sha256:b435cba5f4f750aa6c0a0d92c541fb79f69a387c91e61f1795227e4ed9cece14 \ - --hash=sha256:b5b290ccc2a263e8d185130284f8501e3e36c5e02750fc6b6bdeb2e9e96f1e25 \ - --hash=sha256:b5d84d37db046c5ca74ee7bb47dd6cbc13f80665fdde3e8040bdd3fb015ecb50 \ - --hash=sha256:b7cf1017d601aa35e6bb650b6ad28652c9cd78ee6caff19f3c28d03e1c80acbf \ - --hash=sha256:bc7637e2f80d8530ee4a78e878bce464f70087ce73cf7c1caf142416923b98f1 \ - --hash=sha256:c0463276121fdee9c49b98908b3a89c39be45d86d1dbaa22957e38f6321d4ce3 \ - --hash=sha256:c4ef880e27901b6cc782f1b95f82da9313c0eb95c3af699103088fa0ac3ce9ac \ - --hash=sha256:c8ae8a0f02f57a6e61203a31428fa1d677cbe50c93622b4149d5c0f319c1d19e \ - --hash=sha256:ca5862d5b3928c4940729dacc329aa9102900382fea192fc5e52eb69d6093815 \ - --hash=sha256:cb01158d8b88ee68f15949894ccc6712278243d95f344770fa7593fa2d94410c \ - --hash=sha256:cb6254dc36b47a990e59e1068afacdcd02958bdcce30bb50cc1700a8b9d624a6 \ - --hash=sha256:cc00f04ed596e9dc0da42ed17ac5e596c6ccba999ba6bd92b0e0aef2f170f2d6 \ - --hash=sha256:cd09d08005f958f370f539f186d10aec3377d55b9eeb0d796025d4886119d76e \ - --hash=sha256:cd4b7ca9984e5e7985c12bc60a6f173f3c958eae74f3ef6624bb6b26e2abbae4 \ - --hash=sha256:ce8a0633f41a967713a59c4139d29110c07e826d131a316b50ce11b1d79b4f84 \ - --hash=sha256:cead0978fc57397645f12578bfd2d5ea9138ea0fac82b2f63f7f7c6877986a69 \ - --hash=sha256:d055ec1e26e441f6187acf818b73564e6e6282709e9bcb5b63f5b23068356a15 \ - --hash=sha256:d1f13550535ad8cff21b8d757a3257963e951d96e20ec82ab44bc64aeb62a191 \ - --hash=sha256:d9c7f57c3d666a53421049053eaacdd14bbd0a528e2186fcb2e672effd053bb0 \ - --hash=sha256:d9e45d7faa48ee908174d8fe84854479ef838fc6a705c9315372eacbc2f02897 \ - --hash=sha256:da3326d9e65ef63a817ecbcc0df6e94463713b754fe293eaa03da99befb9a5bd \ - --hash=sha256:de00632ca48df9daf77a2c65a484531649261ec9f25489917f09e455cb09ddb2 \ - --hash=sha256:e1f185f86a6f3403aa2420e815904c67b2f9ebc443f045edd0de921108345794 \ - --hash=sha256:e824f1492727fa856dd6eda4f7cee25f8518a12f3c4a56a74e8095695089cf6d \ - --hash=sha256:e912091979546adf63357d7e2ccff9b44f026c075aeaf25a52d0e95ad2281074 \ - --hash=sha256:eaabd426fe94daf8fd157c32e571c85cb12e66692f15516a83a03264b08d06c3 \ - --hash=sha256:ebf3e58c7ec8a8bed6d66a75d7fb37b55e5015b03ceae72a8e7c74495551e224 \ - --hash=sha256:ecaae4149d99b1c9e7b88bb03e3221956f68fd6d50be2ef061b2381b61d20838 \ - --hash=sha256:eecbc200c7fd5ddb9a7f16c7decb07b566c29fa2161a16cf67b8d068bd21690a \ - --hash=sha256:f155a433c2ec037d4e8df17d18922c3a0d9b3232a396690f17175d2946f0218d \ - --hash=sha256:f1e34719c6ed0b92f418c7c780480b26b5d9c50349e9a9af7d76bf757530350d \ - --hash=sha256:f34be2938726fc13801220747472850852fe6b1ea75869a048d6f896838c896f \ - --hash=sha256:f820802628d2694cb7e56db99213f930856014862f3fd943d290ea8438d07ca8 \ - --hash=sha256:f8bf04158c6b607d747e93949aa60618b61312fe647a6369f88ce2ff16043490 \ - --hash=sha256:f8e160feb2aed042cd657a72acc0b481212ed28b1b9a95c0cee1621b524e1966 \ - --hash=sha256:f9d332f8c2a2fcbffe1378594431458ddbef721c1769d78e2cbc06280d8155f9 \ - --hash=sha256:fa09f53c465e532f4d3db095e0c55b615f010ad81803d383195b6b5ca6cbf5f3 \ - --hash=sha256:faa3a41b2b66b6e50f84ae4a68c64fcd0c44355741c6374813a800cd6695db9e \ - --hash=sha256:fd44c878ea55ba351104cb93cc85e74916eb8fa440ca7903e57575e97394f608 -idna==3.18 \ - --hash=sha256:7f952cbe720b688055e3f87de14f5c3e5fdaa8bc3928985c4077ca689de849a2 \ - --hash=sha256:ffb385a7e039654cef1ab9ef32c6fafe283c0c0467bba1d9029738ce4a14a848 +certifi==2026.7.22 \ + --hash=sha256:62f22742b58a1a33014a2b6b706588a8d7e2a88ae7bd1a6ebe8c992928483775 \ + --hash=sha256:741e2c3b351ddf169a738da9f2c048608ff7f2c5cc02f1ebc6b118bb090d5d55 +charset-normalizer==3.5.1 \ + --hash=sha256:00668ebb0609751758682eb0b5857e7c35b9f00e84dfdef062e103244ec94d45 \ + --hash=sha256:012a22b88a77ca2e59b98ac5889b0deb604147666032f45e6d6e217634d2550d \ + --hash=sha256:01e93745f7f219b703b60ba7afead36cfc4242782be5af484673fc500df12da5 \ + --hash=sha256:04368edf83514385ffc3e1cfd4546e595f4f1272dd23ba437a93a9cc3741d47b \ + --hash=sha256:0722590aabf9dc6a6c0343d523c05458fa2b5047dbe6302fd526bb570600753f \ + --hash=sha256:07ffd07412fc5d5e84cd8952acf9ff7e4ed7a708e69d1bada19d8ba91711353f \ + --hash=sha256:09a7bba9f739468c8e78c36a75c33768e53cb1959fc638f510454c14683f00d5 \ + --hash=sha256:0b2b1b3fa5670c127b246df1d0c059defd41f689a868a3b9d79df9b1cac42d22 \ + --hash=sha256:0c6dfb5ca6723eeed15aa8e564a014d69fcb8812f94eef11fe3631e0508199f5 \ + --hash=sha256:0d929fc574b4d6fd9e7c0f5c2ede8716a41911923aa7fa5fce38e0818aa4a1ac \ + --hash=sha256:13e3afe97712e8887cd516e960c63f0b93122971e5b5e4b2622fe7701771e838 \ + --hash=sha256:15f024313246a4ed976c60f440bb8d257815513a681d212ff74fd46f7d715a90 \ + --hash=sha256:195ce897c6153c0700078142cf8efe3e6454ca4cf4357499e4078dfd83396626 \ + --hash=sha256:19a3dd5aa73cef1c99687c4fc57db016a9c17104ae1185da88ba566a5d3bebe4 \ + --hash=sha256:1d1c7a53a6c2103925cdd6d7229f8c567379f211c869793df679f2e9f738c369 \ + --hash=sha256:1f5883d77fd409a261abb5dc8ccbe335720d798b1de4abb3b1d47ccbbc76b53b \ + --hash=sha256:21b82d8082f6f5e7f456ef0bd16323d08de1266efbfeb476e64b2a91d1471a4e \ + --hash=sha256:252d099029bcbea642f2a06c4ed5046bdf8b5a8150b64afa5e027e88b106e5ee \ + --hash=sha256:256dd4d85d9e4dc595e2bc983c980e73f62ddeb3165c58b4c3dfe78c5c8548c1 \ + --hash=sha256:26422d45fd13551cf564c58932f7d72b4f58b93b0fcf18c35ba6be12b46bb102 \ + --hash=sha256:2679de311c7946dde5d3b6f44941844133ff5c7cb86099c0061ab1e8901c20a8 \ + --hash=sha256:29880d17a8eb0b5cfdfd8944b468322928059aa35f1f5fa8ff22b149ec0b42f8 \ + --hash=sha256:2bced4061f000f7187254a02ad3433ae17eaf991747ceea2f478422590a5bba9 \ + --hash=sha256:2e9cf9253119d8e5d111f05d71626786fd3d6193817316eab1ca088cdb8593cf \ + --hash=sha256:2f06b7eae9dbe77fe1d644ca244dad508de8d302870a43f3c559b521270938a0 \ + --hash=sha256:2f293479cce755c75f1697e87c409b7ae4c555c7dfecb6e988ad13abba943031 \ + --hash=sha256:329fc3ccb63ad22d867d84c2adea759a64079a37ba4a343433b02c7a2816871e \ + --hash=sha256:343fb4f2821043bd87095f7b08a1a181febc8e36ac64212143bbfd0a0e1bc235 \ + --hash=sha256:3588e376b3ea2eea84976f67273d679f229e24c66dce7b82ae45aef04ff6e072 \ + --hash=sha256:35aea775dc2bd5f54cd84a1cd2696cc3207c479cb9cf0bd346f0d343e4300ddb \ + --hash=sha256:35fe081843b35aad20ffeccec3eeffbe637b15d14f3fb22cc1b59cd8ec17e93c \ + --hash=sha256:36047af20e17097c3bb9476c2b7655f2f7aa51322c0ba58c07695bedf755a950 \ + --hash=sha256:3617ac3cfd8b9888f145ad89dd6e692285834b0201c6074a5eeaad3fd4d668c2 \ + --hash=sha256:366ec70f5547c640d3ce1985722490f23faf4eb5216a7eeba78277490e78dacb \ + --hash=sha256:394fea06235c8543390050ed5f529187074b029fb027213f6c46ac11ab5d950e \ + --hash=sha256:3d27167433c0d5f18dc850f07d0b3816221984fecdc405d6c157a6f0b8f8e9e6 \ + --hash=sha256:3e5e1224c0a6a90e05843e07adfec669edebec17801c67072f51e59561d63c0b \ + --hash=sha256:41876ee62a3dddf48ff1121ad8f0798032aa03f2fd35f21f34a4cab14f18d8d2 \ + --hash=sha256:433c5a81eade63b47e522303bad236f59dba55ea6951746f5558355eeed8c75d \ + --hash=sha256:4582c27e8c889d64811987b5967fbd3ae0c823fe1fd933b543d55ac20bb475fa \ + --hash=sha256:485a0d363cafefcd2538a73c7c838daa2035f09b2c9f9b5e3133f80c6aeb84c2 \ + --hash=sha256:494b70049a4d69aec6e8137c13af4cf8db8c9f9820a1392ac293b0dd2987a818 \ + --hash=sha256:496846868fea80e479324862fa877f02411f2fd0f83b79ccee2607aa68b2a032 \ + --hash=sha256:4abdc5f9ad448c1ecbfae2974b820535d6bc6e7eef63babbab3d81cf46968c71 \ + --hash=sha256:4b599739b93b2cbeded49645ae3c8d1405c29ddfbceac1545c87a3f9580a9e96 \ + --hash=sha256:4bea7f8ebe90bbd7f0e4a2de42ca6924ba23e3e76418c408ff82f1d46fabd687 \ + --hash=sha256:4c4fb141a727957c93edfe5c32a26ceb6b5f6461d67146e2d39f51e16170bea8 \ + --hash=sha256:4c9548dc78002099910abaebc0a72ac58b7d30931869e0351c09b507dff4ece3 \ + --hash=sha256:4d26f14f041e83dd8edfd61f4cd4fa7285d31798b5bf1f28e70c367ba6c41d61 \ + --hash=sha256:4f298bdadb8f0b9e5672877f647d1be9373ef5320c9e2f049795e26cad28b6a9 \ + --hash=sha256:52ec005752a56ae79547a05c0139ca2501a0c866390b6115008456b9f0e7cde1 \ + --hash=sha256:55261ac0d2941c42f196dd576f543d87a8ee03cd6f5e30dfb4d807b2e3b9121a \ + --hash=sha256:56490c595a28b1bb27dfc583e816152a9767721ef58b2c03b13f954d2f707420 \ + --hash=sha256:58d3e12c88e0950bca850ae1f7c256055c097639c2edb9eb123af9807d8b15e4 \ + --hash=sha256:58d4aa13a59c969dbfdf9e6a9560e242cbfd9e8a8f50c2747714df1a423adf65 \ + --hash=sha256:59171c6e45bf07d0d5cab3b0bf81d945035530f6873398b3b531c31184d46663 \ + --hash=sha256:5b6d1386bf0096d26d3a863dc0a487a5b4eb9aa93cf5ba69683d29dde6b9d60f \ + --hash=sha256:5c0ea61a470e070686aa30892fed79e297d2c8d0ab46b8bcdf027d38c51da591 \ + --hash=sha256:5c84bec0ab5ae0c64bfe73a7d2adcb5ce73b467523fc27fd6a28ab2aa6cbe35a \ + --hash=sha256:5ca0555312ae2fe82715cada7fac375530c2f3349e1eaa1bcb33d0283ac79a18 \ + --hash=sha256:5d8531a6569d025f68e2321e7638fb7978f23db58e5f69f56913837aae03816e \ + --hash=sha256:5e2d0e146dcb57034f8b97dc58d2d512cb90aba253960ce449f695fec6a82c6f \ + --hash=sha256:5fc45d653ea8c9a20479167e11d4a0f8cb2fa3470737ab6f9c827532313187b7 \ + --hash=sha256:6117b84ea48435e5356dc737f5121485c30920ba43375fa7b434fd753df0eac3 \ + --hash=sha256:6199d5606e2bbf2b096cf64d03f8b6790c91081d5ac866b8e7bb6422738cc60c \ + --hash=sha256:62b55f6722735a6c472f88361cde6640608773d9443cebdbb51abf436a1fcdd3 \ + --hash=sha256:687c9ca3035544b113bea2055e180af96fb63c0c476e22a9180f51925186e7b7 \ + --hash=sha256:6b7430cf5728e68f6c462254009a6ef4086e1bea43cf2f57aa9c55fb4f50ff96 \ + --hash=sha256:6ba32c4d2abf1d2fe7cf27d280f4cca5664233b0f885549c7761719eb977f486 \ + --hash=sha256:6c9cdde8becb25a7fde49924511aa2644d6f8081cc8df8e9452724303348d8e3 \ + --hash=sha256:6df0ec430f9a831772c23ca5a224cba36517a58a84bb32c32bb59a9fa67c47f6 \ + --hash=sha256:6e2912d4babbc65196ac13c2f53468dc57fb8b9c25ef913e8c59ddf7c6dc0e1b \ + --hash=sha256:6e5e4d73d588ca5ed09df1b7dcd1b203d1df3c542e3f50d126c947d432b10731 \ + --hash=sha256:70055ff39b97c99e7ae40ea3e393fb62aa2e44dbd9b29f8d14f42fb0025c3959 \ + --hash=sha256:706bfd38730a5ac7a365793269a00f4e988178cec121391f4248d84ad8c972e9 \ + --hash=sha256:7235dc28fc6dd9d832ac7c7bce95367dedb85929f17368a0c2bee1e080b9acbf \ + --hash=sha256:774d157f112367ff4abd29019f38f023c24e00e56edc7829c20e358a5a913ad8 \ + --hash=sha256:77efcff2b23071c349402ac1066667a3d011f62398d81408c9b88ad991747c9e \ + --hash=sha256:789b8982559ae28dad2356519f841655756cdcd96616410590ae0b17454ee64f \ + --hash=sha256:7ac76cf9afd34929d76eb7fcb63be476a4853d8a96f0dcf2d0db68a0cbdf9885 \ + --hash=sha256:7c0c10730342b0c9b35dd1d619beb8214e520bd96a1f870f452680b238aab3e0 \ + --hash=sha256:823f82903d189af463d7df250ef1f7f696f3cee08cc8d91deb565e8d425f6506 \ + --hash=sha256:838648accb3a7fd9803fd45c87bce8509648eb0c11bc34e216141300977244f2 \ + --hash=sha256:854066be00447fa8de2ccbbe893e2ffc4b123ef16d897af794c1e18bd4a714b0 \ + --hash=sha256:85d5855daafc240cc045c026d7a15fd198a09b0fc8ff6f5ecbb5297b509cb11e \ + --hash=sha256:85de3134b5379856e323ba37c19c9256d39425f7b76a63af52b09fb4664c2e8f \ + --hash=sha256:87e4f41d375c0b9be2fb5251aee4b8a689169e134535aed81bf085c3b647451e \ + --hash=sha256:88ca277405c2d3b71c4e1c2ee0e7966e807bcba86a69d11e19ba199d18ae4491 \ + --hash=sha256:88e85ab89cb822c1e635f51d6d32e488f94e002e70e2f492bdb8b945543f345a \ + --hash=sha256:8ac8c94b6539074e0f40899301273ac8402b9b3e01c7b7ba269ff30340aaaf20 \ + --hash=sha256:8fe532b3c966d1fb794e0698e4589d0444017ae77fc0b31edea13c0e35bcc449 \ + --hash=sha256:9085f87b0e38a2b92b8923059b4e8789fe40d9279712d15dcc670048d77079af \ + --hash=sha256:90b7481fb62fbe172c558bc6fd1c4c98d82004a54a7551f20e11ac9bf0b8708c \ + --hash=sha256:92caef967d287a407085d61176fce4012b1dd62daed4eb6d5ceb26d3d2538712 \ + --hash=sha256:9362dd90aa7dab48c0054a21187791ccf05473f7dba5d92b8033ae62164675e7 \ + --hash=sha256:94d78ecec2605a8d0398b0f365d5f12a63248438516f5dac536a5eff7337df4a \ + --hash=sha256:94fbf1c0c6cc0d3d5e50f9a9313a8cdca90dd696d34b381cd1704f8c9e939f20 \ + --hash=sha256:950f23cb393f85543777b0433f082cddd25b51ab398eac7971146495679efe5f \ + --hash=sha256:96eefc178f8636b9c760c5829345307fd81cfae9ab1e80997dbddeb0f54ee9a3 \ + --hash=sha256:96fef3e886d6a9874b14f27fc193fbdc69d5d8035783d86aa4e1cea594e695f9 \ + --hash=sha256:977cdbd483a9cff38179bea4fd754289a6f2195c7abd414aba85410b3e66cc5e \ + --hash=sha256:978eab16f55b4ab2c2a745be9a0a840bf8f09a7f227d9c76eb30214d078865a5 \ + --hash=sha256:994e883d17c559cdfd38c84003c8b27d25424a1077272a17e7cd27bfe0bf57b2 \ + --hash=sha256:9ac4444d8d4fd4c4bd08bf451ed3167aa9e7ec6cdb41b648794f1d1103652e36 \ + --hash=sha256:9b5db6052055d34d41230fb78d7c439c23dc536a9896f6cb039e8dd92cfc1263 \ + --hash=sha256:9d9a0dc7cbe9bec24c3f767c9122c41fe5a1bc43f47cd099d00d393e09769de4 \ + --hash=sha256:9dbdd9205662134957cf0c324f639bdc5031c0ca056e2369e238db75187c0f11 \ + --hash=sha256:9eea3ab2597a5e65fe65296e2d6a84570845a6b55532d90333d740d48bbc850a \ + --hash=sha256:a2028475ba855475b8b4d3cfeb4994269c967aea8b9892dfba907f4263a863a3 \ + --hash=sha256:a3a370082ce34d0612f421e15fe011c53bb1feff21a26d06ad4fb244dab5a375 \ + --hash=sha256:a545775cfe815855ea32d7c27731d79da358ef2055b4a25830231b1622dd18aa \ + --hash=sha256:a5cbd90ecf0fc62e64726917ad083b73001f0563657a87ec3c0b504e277dc90d \ + --hash=sha256:a6d095662e73e74f0a49988e0593373e243e3a52e27bfeea0a859e88acf4a0f5 \ + --hash=sha256:a6dac12ff6b846103483683f60c5f8fee205121adc58ffd87e90a90a3af69e99 \ + --hash=sha256:a951ad59cad9145664a730d3036b40b844e74d2d3683da40111463cd3a83845d \ + --hash=sha256:aa1099b956fb795e686d073568f6dc002a0bb89765ea6d5b055dd7d9bf1b116c \ + --hash=sha256:aa2bb0b37202dca27175591f761108b5d34096ade1191ffe4808bdf6b1571488 \ + --hash=sha256:aae2ee51122d3ae968a3837d97dc24a0aeebb0dea23694422cd172bd30017cd6 \ + --hash=sha256:ab743e9bc90c1f73552ec33e10e3331315acd2c397b36065b591b0181de533cc \ + --hash=sha256:ac00177c4831ffa650f8609e4bdddd5fe09c03b1c0c47acece7e6ea20421598b \ + --hash=sha256:ac13b004224fb341e1e25a1ed5e19d32f57cdb2a403e01f003b46f051a550f6f \ + --hash=sha256:acaf604462bf330b0d07e7a07c1d6e4adac79e5fb13e9c5140590542cafacc00 \ + --hash=sha256:ae31a1a1db2ee6cc2942fccaf695c934bc7f3db9f2133a3fef1f367cf1a4ab10 \ + --hash=sha256:ae4a097991662cd4fff0ddc74e0fe7874f82e00042fa0ea00855645ed0c79598 \ + --hash=sha256:aea996a6aba25260827c9ea511d1addfde2da9eb686ac961838509086188b7e6 \ + --hash=sha256:b39b69b347e5e47a3b5b8cfc005c68c1ba347474e3960236c4944a8ecd174962 \ + --hash=sha256:b54e7e13267d49ffbfe68e25b3cbd774dab38fa37238f71265e91b36146eb21c \ + --hash=sha256:b9af956078716df40d985fb0dfeb2c2120c5ca92ba4ff4b388acfd01cdc14d08 \ + --hash=sha256:ba2f37ee79e6338845261a3c5b1784e5d1acdff2c0785b284f1b633033d136ab \ + --hash=sha256:ba501e667c17d8411f98e67a022d9604ef179aff0e459b7e292c796837c13573 \ + --hash=sha256:baf3775a2635e5a11fbd5e4e64ee69c7e86875d224a5c72aca4c141064589a90 \ + --hash=sha256:bb57753e36e4855b8ca375069482250a6246372331a3e4f3407eaebb007443f5 \ + --hash=sha256:bd6c173f04743d483881bffa1478d5a4624475b8cd1d2194956a75548e191c18 \ + --hash=sha256:be47f99644b208bff7766314013f9acf57b056b04191d570d68ad14022cf5b1d \ + --hash=sha256:c010f5581d9c612804cc59fcf7b524b707fbcb72828551237ab545bb5c7034af \ + --hash=sha256:c1dcc36dcb96abc02236e182d17e0f71430152a6c2c7447421da2d2dc144edea \ + --hash=sha256:c428c6c31eb5f4277d7f8eccaf767fbd548ddd5ce3c8b4f4cbbfab3d96b5904c \ + --hash=sha256:c658c50ac0c98cd755a2dd50b7977d3bca7df401dcc47fbdfa87db53ef7d4e8b \ + --hash=sha256:c71fb0d56c920c269cd3e2e3fe7c610e3f1fdb21a6ce60efa6430ff63676cea6 \ + --hash=sha256:c7b742bf31c88566b4bb6335a7f393bb322e580b6bb98df7bd0c25e6e3519ce8 \ + --hash=sha256:cc0329df4caaceb950d2f580b5ac716a377f7059624a0bafaeaf8a218c6ed774 \ + --hash=sha256:cc5d36d96478aa9c60654bd932525bf32964c62a7281eafdf16d85003a8d6004 \ + --hash=sha256:ce854f5f478050ade5a238731c4ca985a7d3b3cb53ff600a9b5c3b689b5f0a7a \ + --hash=sha256:ced3fdd71aaa83ce593746c2edb42b7a59cb4c19c8b5c407781c72e493aae55a \ + --hash=sha256:cee5dd7c6fb5dd52a0fe2a740f9bc6e3593f5f8b1788bde49de02086f30182b2 \ + --hash=sha256:cfa1c0cc3a8f9f53f1243a5a99ac36fd003880199383b37672e86ddda9cb07e2 \ + --hash=sha256:d1ee1e296209fdce05b81b663250eefa02213a2da7b41bf26f7829b8ba3545aa \ + --hash=sha256:d59b75732e9b6f27388e10c14b0259cc5f2e48c78627d185e6a177b58ad3cffe \ + --hash=sha256:d63600d620ad0064c3a748b950ac5ea38a80190e5498532efefa4b7b3f1da1f3 \ + --hash=sha256:dd732602a7009217f658d5863d12d79d373a4de0eebc111094bcdd3bb8e0a6cc \ + --hash=sha256:e06efa066f7dbadbc84ebc126a97c452a6451dfcf589d89d788484949e1cf795 \ + --hash=sha256:e199fb99720074809a7720f1c0b4d919eea8b87e88713e0f8f602f7bef543d9d \ + --hash=sha256:e4b018dc5a0eee4676e38fe84a47a427816c590b93b55d9025274ec4d6ffc2dc \ + --hash=sha256:e6621fb2a4988d6e53eedc455e5903e2679f3967b8acb3d639f1b63c14a2e893 \ + --hash=sha256:e71c909f353863b2b89c83de2ebed71ea6d0df8a6ef65a128193c5e650766bef \ + --hash=sha256:e90251c0c7bdd54a100a0dce3c07b7e637278c93af29dbf78ebb89a58c4bac7d \ + --hash=sha256:e9fbdce1e47394b09bc9f26ab117dfc8d6491977a11d86f592bb42c779db2fda \ + --hash=sha256:eb12fb2ba69ffa05f8695f61c69e591dc4b4a12ac3757ac8af8adb259bf56d17 \ + --hash=sha256:eda059b6bc8bc0812d626fd91a7ce01bf583df0a61296eff390fd94141a34e30 \ + --hash=sha256:f03ac127268b43ef4fe9e6ab6794a6794b49485a0cc0c1db79876d2f33f75bc7 \ + --hash=sha256:f298e218441525d3794428b4c8b8fb8662c6d3ea79925d4807ee6b9a96a3bca5 \ + --hash=sha256:f5542f9b941279d82d41eb0aa9f98eba36fe4df5c7086c651df7944935b37182 \ + --hash=sha256:f6f7deae3feb4edfa2efaf7c574fe88cbf055038a6abdb40188e4fff66d5699f \ + --hash=sha256:f9b1e28d0e8dbfa858abdba91d6b547beaf2df1a59bec6da6faae7b96a4991a9 \ + --hash=sha256:f9f8405c2c758532c74fed975dbee57be1f31a6e865c031870c79a6ed3212ada \ + --hash=sha256:fa48b1b63d639f9483e0633e092f5851e2348c352f1f9bb6c8182f87884ef876 \ + --hash=sha256:fb78f6e7fcd8ad785d28cd577168bc1aaee827b25bb8755638f694794ea98f0a \ + --hash=sha256:fbc597639158fd7c14d55e808718848319540f51b0e6746e3eefa59723a4a348 \ + --hash=sha256:fce8cbd4997efeb450bd298b54f755dcdff18d496f7a5ddbb4867c6d7c88fdc3 \ + --hash=sha256:fd0350afdc3aabd5576f60ea109228bd5538139713c7b094c5cd27c73a98bc6f \ + --hash=sha256:fd0a274c0e5f9a21565cd9d3dd749b61f96b7aa1e20a93aa1ba4029518f2e5c0 \ + --hash=sha256:fdb8a068947befafba9952162645dc2fecaeb400e64584829ed5e9b2fbe21a7f +idna==3.19 \ + --hash=sha256:5e0811a4383b21dc5838069f801c4fb62113b7447663d2530d2bd6e77b49bf15 \ + --hash=sha256:815e7be7a7806d54abb586dc943addc79e8b2ee16915059658cbeff4b1b43bf4 ply==3.11 \ --hash=sha256:00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3 \ --hash=sha256:096f9b8350b65ebd2fd1346b12452efe5b9607f7482813ffca50c22722a807ce @@ -133,53 +192,42 @@ protobuf==5.29.6 \ --hash=sha256:cb4c86de9cd8a7f3a256b9744220d87b847371c6b2f10bde87768918ef33ba49 \ --hash=sha256:da9ee6a5424b6b30fd5e45c5ea663aef540ca95f9ad99d1e887e819cdf9b8723 \ --hash=sha256:e3387f44798ac1106af0233c04fb8abf543772ff241169946f698b3a9a3d3ab9 -psutil==5.9.0 \ - --hash=sha256:072664401ae6e7c1bfb878c65d7282d4b4391f1bc9a56d5e03b5a490403271b5 \ - --hash=sha256:1070a9b287846a21a5d572d6dddd369517510b68710fca56b0e9e02fd24bed9a \ - --hash=sha256:1d7b433519b9a38192dfda962dd8f44446668c009833e1429a52424624f408b4 \ - --hash=sha256:3151a58f0fbd8942ba94f7c31c7e6b310d2989f4da74fcbf28b934374e9bf841 \ - --hash=sha256:32acf55cb9a8cbfb29167cd005951df81b567099295291bcfd1027365b36591d \ - --hash=sha256:3611e87eea393f779a35b192b46a164b1d01167c9d323dda9b1e527ea69d697d \ - --hash=sha256:3d00a664e31921009a84367266b35ba0aac04a2a6cad09c550a89041034d19a0 \ - --hash=sha256:4e2fb92e3aeae3ec3b7b66c528981fd327fb93fd906a77215200404444ec1845 \ - --hash=sha256:539e429da49c5d27d5a58e3563886057f8fc3868a5547b4f1876d9c0f007bccf \ - --hash=sha256:55ce319452e3d139e25d6c3f85a1acf12d1607ddedea5e35fb47a552c051161b \ - --hash=sha256:58c7d923dc209225600aec73aa2c4ae8ea33b1ab31bc11ef8a5933b027476f07 \ - --hash=sha256:7336292a13a80eb93c21f36bde4328aa748a04b68c13d01dfddd67fc13fd0618 \ - --hash=sha256:742c34fff804f34f62659279ed5c5b723bb0195e9d7bd9907591de9f8f6558e2 \ - --hash=sha256:7641300de73e4909e5d148e90cc3142fb890079e1525a840cf0dfd39195239fd \ - --hash=sha256:76cebf84aac1d6da5b63df11fe0d377b46b7b500d892284068bacccf12f20666 \ - --hash=sha256:7779be4025c540d1d65a2de3f30caeacc49ae7a2152108adeaf42c7534a115ce \ - --hash=sha256:7d190ee2eaef7831163f254dc58f6d2e2a22e27382b936aab51c835fc080c3d3 \ - --hash=sha256:8293942e4ce0c5689821f65ce6522ce4786d02af57f13c0195b40e1edb1db61d \ - --hash=sha256:869842dbd66bb80c3217158e629d6fceaecc3a3166d3d1faee515b05dd26ca25 \ - --hash=sha256:90a58b9fcae2dbfe4ba852b57bd4a1dded6b990a33d6428c7614b7d48eccb492 \ - --hash=sha256:9b51917c1af3fa35a3f2dabd7ba96a2a4f19df3dec911da73875e1edaf22a40b \ - --hash=sha256:b2237f35c4bbae932ee98902a08050a27821f8f6dfa880a47195e5993af4702d \ - --hash=sha256:c3400cae15bdb449d518545cbd5b649117de54e3596ded84aacabfbb3297ead2 \ - --hash=sha256:c51f1af02334e4b516ec221ee26b8fdf105032418ca5a5ab9737e8c87dafe203 \ - --hash=sha256:cb8d10461c1ceee0c25a64f2dd54872b70b89c26419e147a05a10b753ad36ec2 \ - --hash=sha256:d62a2796e08dd024b8179bd441cb714e0f81226c352c802fca0fd3f89eeacd94 \ - --hash=sha256:df2c8bd48fb83a8408c8390b143c6a6fa10cb1a674ca664954de193fdcab36a9 \ - --hash=sha256:e5c783d0b1ad6ca8a5d3e7b680468c9c926b804be83a3a8e95141b05c39c9f64 \ - --hash=sha256:e9805fed4f2a81de98ae5fe38b75a74c6e6ad2df8a5c479594c7629a1fe35f56 \ - --hash=sha256:ea42d747c5f71b5ccaa6897b216a7dadb9f52c72a0fe2b872ef7d3e1eacf3ba3 \ - --hash=sha256:ef216cc9feb60634bda2f341a9559ac594e2eeaadd0ba187a4c2eb5b5d40b91c \ - --hash=sha256:ff0d41f8b3e9ebb6b6110057e40019a432e96aae2008951121ba4e56040b84f3 -requests==2.33.1 \ - --hash=sha256:18817f8c57c6263968bc123d237e3b8b08ac046f5456bd1e307ee8f4250d3517 \ - --hash=sha256:4e6d1ef462f3626a1f0a0a9c42dd93c63bad33f9f1c1937509b8c5c8718ab56a -tornado==6.5.7 \ - --hash=sha256:148b2eb15c2c765a50796172c1e499649b35f30d2e3c3d3e15913cfa56bfb163 \ - --hash=sha256:66c513a76cda70d53907bc27cf1447557699c2e95aa48ba27a442ff61c3ddfc2 \ - --hash=sha256:7778b30bef919231265e91c69963ce0f49a1e9c07ac900bbe75b19ce2575ba92 \ - --hash=sha256:8a46347a18f23fb92b396beebe0fb78f61dda0cc302445202c16203d8a18848b \ - --hash=sha256:8d759e71906ee783f8867b93bf26a265743da4c1e2f4a018464c1ba019862972 \ - --hash=sha256:9da38de27f1da3b78a966f0dae12b5a1ea9afe72ca805d84ff06508272ddf100 \ - --hash=sha256:de942f843533a039ef9fa3d9c88c7cd8a7c94553fb5ad0154270989b3d99a2c4 \ - --hash=sha256:e726f0c75da7726eec023aa62751ff8878bd2737e34fbdd33b1ae5897d2200f5 \ - --hash=sha256:f8de3bf12d3efdd0cbe7c8887868198f8a91415e3f29fcf258d9b8eb7b1d9ae4 \ - --hash=sha256:ff934fce95643af5f11efdae618eaa73d469dc588641e5c8d19295a0c65c4796 +psutil==7.2.2 \ + --hash=sha256:0746f5f8d406af344fd547f1c8daa5f5c33dbc293bb8d6a16d80b4bb88f59372 \ + --hash=sha256:076a2d2f923fd4821644f5ba89f059523da90dc9014e85f8e45a5774ca5bc6f9 \ + --hash=sha256:11fe5a4f613759764e79c65cf11ebdf26e33d6dd34336f8a337aa2996d71c841 \ + --hash=sha256:1a571f2330c966c62aeda00dd24620425d4b0cc86881c89861fbc04549e5dc63 \ + --hash=sha256:1a7b04c10f32cc88ab39cbf606e117fd74721c831c98a27dc04578deb0c16979 \ + --hash=sha256:1fa4ecf83bcdf6e6c8f4449aff98eefb5d0604bf88cb883d7da3d8d2d909546a \ + --hash=sha256:2edccc433cbfa046b980b0df0171cd25bcaeb3a68fe9022db0979e7aa74a826b \ + --hash=sha256:7b6d09433a10592ce39b13d7be5a54fbac1d1228ed29abc880fb23df7cb694c9 \ + --hash=sha256:8c233660f575a5a89e6d4cb65d9f938126312bca76d8fe087b947b3a1aaac9ee \ + --hash=sha256:917e891983ca3c1887b4ef36447b1e0873e70c933afc831c6b6da078ba474312 \ + --hash=sha256:ab486563df44c17f5173621c7b198955bd6b613fb87c71c161f827d3fb149a9b \ + --hash=sha256:ae0aefdd8796a7737eccea863f80f81e468a1e4cf14d926bd9b6f5f2d5f90ca9 \ + --hash=sha256:b0726cecd84f9474419d67252add4ac0cd9811b04d61123054b9fb6f57df6e9e \ + --hash=sha256:b58fabe35e80b264a4e3bb23e6b96f9e45a3df7fb7eed419ac0e5947c61e47cc \ + --hash=sha256:c7663d4e37f13e884d13994247449e9f8f574bc4655d509c3b95e9ec9e2b9dc1 \ + --hash=sha256:e452c464a02e7dc7822a05d25db4cde564444a67e58539a00f929c51eddda0cf \ + --hash=sha256:e78c8603dcd9a04c7364f1a3e670cea95d51ee865e4efb3556a3a63adef958ea \ + --hash=sha256:eb7e81434c8d223ec4a219b5fc1c47d0417b12be7ea866e24fb5ad6e84b3d988 \ + --hash=sha256:ed0cace939114f62738d808fdcecd4c869222507e266e574799e9c0faa17d486 \ + --hash=sha256:eed63d3b4d62449571547b60578c5b2c4bcccc5387148db46e0c2313dad0ee00 \ + --hash=sha256:fd04ef36b4a6d599bbdb225dd1d3f51e00105f6d48a28f006da7f9822f2606d8 +requests==2.34.2 \ + --hash=sha256:2a0d60c172f83ac6ab31e4554906c0f3b3588d37b5cb939b1c061f4907e278e0 \ + --hash=sha256:f288924cae4e29463698d6d60bc6a4da69c89185ad1e0bcc4104f584e960b9ed +tornado==6.5.8 \ + --hash=sha256:11881db6b7c168494be2c2d12e65931451bdf7ee718535418ae1d8855dd5a0ee \ + --hash=sha256:547d63f450d570c14fe0e8db2cfb14c9bbd1c2503b4a6612586267955aa47b58 \ + --hash=sha256:5d242290bdf7ab3151bc1065fdd75c0dcc21cbc7b49f22a4c56329c2d6566d22 \ + --hash=sha256:67832909c4779c64942380cb5f044a5c6163d00831472d80e25e115de9917836 \ + --hash=sha256:68a7468c7e289f8514d7d664101753903217eff1bb6822c6b5994a0b5f5bcb26 \ + --hash=sha256:7b94ff0e128fe0542f3bd331fb44d06260fc4ac16881545159f34ef08aad4195 \ + --hash=sha256:7e2360a0ffbe145eca8af0b19cb7203d79b1a98dd4cccdd6b368f6f49c2e3808 \ + --hash=sha256:9452e1b208a8bd771e2cb1f2ff564985b9b214bdebbe622793e1799e0a6bd23f \ + --hash=sha256:9715b5eb79735b2bcd454ce216a9275b7c0470e64ea1bf5742f78b2f72b26eeb \ + --hash=sha256:cc6aa787d7cfab7c3d35189dc7a56fbd2399a569624c730c6b55b3d6531d0403 urllib3==2.7.0 \ --hash=sha256:231e0ec3b63ceb14667c67be60f2f2c40a518cb38b03af60abc813da26505f4c \ --hash=sha256:9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897 @@ -188,6 +236,6 @@ vdms==0.0.23 \ --hash=sha256:7cd93242df644947c009559f31b4e19eb1dab6b62ab783ce5a2a54a4ad392f57 # The following packages are considered to be unsafe in a requirements file: -pip==26.1.2 \ - --hash=sha256:382ff9f685ee3bc25864f820aa50505825f10f5458ffff07e30a6d96e5715cab \ - --hash=sha256:f49cd134c61cf2fd75e0ce2676db03e4054504a5a4986d00f8299ae632dc4605 +pip==26.2.1 \ + --hash=sha256:71138adf1f4ca900cdb7d289c21b7494329f2332b6d85f0e1c42108c0384ed3e \ + --hash=sha256:f6ad667e89a1fe78046c8f13232b247200f5258d7828f3f7883d660878e0813f diff --git a/udf/requirements.txt b/udf/requirements.txt index d223a26..c9688ac 100644 --- a/udf/requirements.txt +++ b/udf/requirements.txt @@ -1,12 +1,12 @@ blinker==1.9.0 \ --hash=sha256:b4ce2265a7abece45e7cc896e98dbebe6cead56bcf805a3d23136d145f5445bf \ --hash=sha256:ba0efaa9080b619ff2f3459d1d500c57bddea4a6b424b60a91141db6fd2f08bc -build==1.4.0 \ - --hash=sha256:6a07c1b8eb6f2b311b96fcbdbce5dab5fe637ffda0fd83c9cac622e927501596 \ - --hash=sha256:f1b91b925aa322be454f8330c6fb48b465da993d1e7e7e6fa35027ec49f3c936 -click==8.3.1 \ - --hash=sha256:12ff4785d337a1bb490bb7e9c2b1ee5da3112e94a8622f26a6c77f5d2fc6842a \ - --hash=sha256:981153a64e25f12d547d3426c367a4857371575ee7ad18df2a6183ab0545b2a6 +build==1.6.0 \ + --hash=sha256:bd2c8afc603e7a2e0ce70e2ea85f0a6d02043bafbd307f5bada0f98669eca5af \ + --hash=sha256:f7aaf1ebbb79178a02ba248bb524f2176b256017e17e8e4bd4289c7b38cc2bad +click==8.5.0 \ + --hash=sha256:255bc9599cf7748b4b1a446ccc735421bd08a2ae529a8b88597d3de5664ee360 \ + --hash=sha256:ba0d2089de75ea0310e2dde03160e6ca10009947fb95a182f9b54021bb272e34 flask==3.1.3 \ --hash=sha256:0ef0e52b8a9cd932855379197dd8f94047b359ca0a78695144304cb45f87c9eb \ --hash=sha256:f4bcbefc124291925f1a26446da31a5178f9483862233b23c0c96a20701f670c @@ -109,74 +109,54 @@ markupsafe==3.0.3 \ --hash=sha256:f71a396b3bf33ecaa1626c255855702aca4d3d9fea5e051b41ac59a9c1c41edc \ --hash=sha256:f9e130248f4462aaa8e2552d547f36ddadbeaa573879158d721bbd33dfe4743a \ --hash=sha256:fed51ac40f757d41b7c48425901843666a6677e3e8eb0abcff09e4ba6e664f50 -numpy==2.2.6 \ - --hash=sha256:038613e9fb8c72b0a41f025a7e4c3f0b7a1b5d768ece4796b674c8f3fe13efff \ - --hash=sha256:0678000bb9ac1475cd454c6b8c799206af8107e310843532b04d49649c717a47 \ - --hash=sha256:0811bb762109d9708cca4d0b13c4f67146e3c3b7cf8d34018c722adb2d957c84 \ - --hash=sha256:0b605b275d7bd0c640cad4e5d30fa701a8d59302e127e5f79138ad62762c3e3d \ - --hash=sha256:0bca768cd85ae743b2affdc762d617eddf3bcf8724435498a1e80132d04879e6 \ - --hash=sha256:1bc23a79bfabc5d056d106f9befb8d50c31ced2fbc70eedb8155aec74a45798f \ - --hash=sha256:287cc3162b6f01463ccd86be154f284d0893d2b3ed7292439ea97eafa8170e0b \ - --hash=sha256:37c0ca431f82cd5fa716eca9506aefcabc247fb27ba69c5062a6d3ade8cf8f49 \ - --hash=sha256:37e990a01ae6ec7fe7fa1c26c55ecb672dd98b19c3d0e1d1f326fa13cb38d163 \ - --hash=sha256:389d771b1623ec92636b0786bc4ae56abafad4a4c513d36a55dce14bd9ce8571 \ - --hash=sha256:3d70692235e759f260c3d837193090014aebdf026dfd167834bcba43e30c2a42 \ - --hash=sha256:41c5a21f4a04fa86436124d388f6ed60a9343a6f767fced1a8a71c3fbca038ff \ - --hash=sha256:481b49095335f8eed42e39e8041327c05b0f6f4780488f61286ed3c01368d491 \ - --hash=sha256:4eeaae00d789f66c7a25ac5f34b71a7035bb474e679f410e5e1a94deb24cf2d4 \ - --hash=sha256:55a4d33fa519660d69614a9fad433be87e5252f4b03850642f88993f7b2ca566 \ - --hash=sha256:5a6429d4be8ca66d889b7cf70f536a397dc45ba6faeb5f8c5427935d9592e9cf \ - --hash=sha256:5bd4fc3ac8926b3819797a7c0e2631eb889b4118a9898c84f585a54d475b7e40 \ - --hash=sha256:5beb72339d9d4fa36522fc63802f469b13cdbe4fdab4a288f0c441b74272ebfd \ - --hash=sha256:6031dd6dfecc0cf9f668681a37648373bddd6421fff6c66ec1624eed0180ee06 \ - --hash=sha256:71594f7c51a18e728451bb50cc60a3ce4e6538822731b2933209a1f3614e9282 \ - --hash=sha256:74d4531beb257d2c3f4b261bfb0fc09e0f9ebb8842d82a7b4209415896adc680 \ - --hash=sha256:7befc596a7dc9da8a337f79802ee8adb30a552a94f792b9c9d18c840055907db \ - --hash=sha256:894b3a42502226a1cac872f840030665f33326fc3dac8e57c607905773cdcde3 \ - --hash=sha256:8e41fd67c52b86603a91c1a505ebaef50b3314de0213461c7a6e99c9a3beff90 \ - --hash=sha256:8e9ace4a37db23421249ed236fdcdd457d671e25146786dfc96835cd951aa7c1 \ - --hash=sha256:8fc377d995680230e83241d8a96def29f204b5782f371c532579b4f20607a289 \ - --hash=sha256:9551a499bf125c1d4f9e250377c1ee2eddd02e01eac6644c080162c0c51778ab \ - --hash=sha256:b0544343a702fa80c95ad5d3d608ea3599dd54d4632df855e4c8d24eb6ecfa1c \ - --hash=sha256:b093dd74e50a8cba3e873868d9e93a85b78e0daf2e98c6797566ad8044e8363d \ - --hash=sha256:b412caa66f72040e6d268491a59f2c43bf03eb6c96dd8f0307829feb7fa2b6fb \ - --hash=sha256:b4f13750ce79751586ae2eb824ba7e1e8dba64784086c98cdbbcc6a42112ce0d \ - --hash=sha256:b64d8d4d17135e00c8e346e0a738deb17e754230d7e0810ac5012750bbd85a5a \ - --hash=sha256:ba10f8411898fc418a521833e014a77d3ca01c15b0c6cdcce6a0d2897e6dbbdf \ - --hash=sha256:bd48227a919f1bafbdda0583705e547892342c26fb127219d60a5c36882609d1 \ - --hash=sha256:c1f9540be57940698ed329904db803cf7a402f3fc200bfe599334c9bd84a40b2 \ - --hash=sha256:c820a93b0255bc360f53eca31a0e676fd1101f673dda8da93454a12e23fc5f7a \ - --hash=sha256:ce47521a4754c8f4593837384bd3424880629f718d87c5d44f8ed763edd63543 \ - --hash=sha256:d042d24c90c41b54fd506da306759e06e568864df8ec17ccc17e9e884634fd00 \ - --hash=sha256:de749064336d37e340f640b05f24e9e3dd678c57318c7289d222a8a2f543e90c \ - --hash=sha256:e1dda9c7e08dc141e0247a5b8f49cf05984955246a327d4c48bda16821947b2f \ - --hash=sha256:e29554e2bef54a90aa5cc07da6ce955accb83f21ab5de01a62c8478897b264fd \ - --hash=sha256:e3143e4451880bed956e706a3220b4e5cf6172ef05fcc397f6f36a550b1dd868 \ - --hash=sha256:e8213002e427c69c45a52bbd94163084025f533a55a59d6f9c5b820774ef3303 \ - --hash=sha256:efd28d4e9cd7d7a8d39074a4d44c63eda73401580c5c76acda2ce969e0a38e83 \ - --hash=sha256:f0fd6321b839904e15c46e0d257fdd101dd7f530fe03fd6359c1ea63738703f3 \ - --hash=sha256:f1372f041402e37e5e633e586f62aa53de2eac8d98cbfb822806ce4bbefcb74d \ - --hash=sha256:f2618db89be1b4e05f7a1a847a9c1c0abd63e63a1607d892dd54668dd92faf87 \ - --hash=sha256:f447e6acb680fd307f40d3da4852208af94afdfab89cf850986c3ca00562f4fa \ - --hash=sha256:f92729c95468a2f4f15e9bb94c432a9229d0d50de67304399627a943201baa2f \ - --hash=sha256:f9f1adb22318e121c5c69a09142811a201ef17ab257a1e66ca3025065b7f53ae \ - --hash=sha256:fc0c5673685c508a142ca65209b4e79ed6740a4ed6b2267dbba90f34b0b3cfda \ - --hash=sha256:fc7b73d02efb0e18c000e9ad8b83480dfcd5dfd11065997ed4c6747470ae8915 \ - --hash=sha256:fd83c01228a688733f1ded5201c678f0c53ecc1006ffbc404db9f7a899ac6249 \ - --hash=sha256:fe27749d33bb772c80dcd84ae7e8df2adc920ae8297400dabec45f0dedb3f6de \ - --hash=sha256:fee4236c876c4e8369388054d02d0e9bb84821feb1a64dd59e137e6511a551f8 -opencv-python-headless==4.13.0.90 \ - --hash=sha256:0e0c8c9f620802fddc4fa7f471a1d263c7b0dca16cd9e7e2f996bb8bd2128c0c \ - --hash=sha256:12a28674f215542c9bf93338de1b5bffd76996d32da9acb9e739fdb9c8bbd738 \ - --hash=sha256:32255203040dc98803be96362e13f9e4bce20146898222d2e5c242f80de50da5 \ - --hash=sha256:96060fc57a1abb1144b0b8129e2ff3bfcdd0ccd8e8bd05bd85256ff4ed587d3b \ - --hash=sha256:dbc1f4625e5af3a80ebdbd84380227c0f445228588f2521b11af47710caca1ba \ - --hash=sha256:e13790342591557050157713af17a7435ac1b50c65282715093c9297fa045d8f \ - --hash=sha256:eba38bc255d0b7d1969c5bcc90a060ca2b61a3403b613872c750bfa5dfe9e03b \ - --hash=sha256:f46b17ea0aa7e4124ca6ad71143f89233ae9557f61d2326bcdb34329a1ddf9bd -packaging==26.0 \ - --hash=sha256:00243ae351a257117b6a241061796684b084ed1c516a08c48a3f7e147a9d80b4 \ - --hash=sha256:b36f1fef9334a5588b4166f8bcd26a14e521f2b55e6b9de3aaa80d3ff7a37529 +numpy==1.26.4 \ + --hash=sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b \ + --hash=sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818 \ + --hash=sha256:1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20 \ + --hash=sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0 \ + --hash=sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010 \ + --hash=sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a \ + --hash=sha256:3373d5d70a5fe74a2c1bb6d2cfd9609ecf686d47a2d7b1d37a8f3b6bf6003aea \ + --hash=sha256:47711010ad8555514b434df65f7d7b076bb8261df1ca9bb78f53d3b2db02e95c \ + --hash=sha256:4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71 \ + --hash=sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110 \ + --hash=sha256:52b8b60467cd7dd1e9ed082188b4e6bb35aa5cdd01777621a1658910745b90be \ + --hash=sha256:60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a \ + --hash=sha256:62b8e4b1e28009ef2846b4c7852046736bab361f7aeadeb6a5b89ebec3c7055a \ + --hash=sha256:666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5 \ + --hash=sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed \ + --hash=sha256:679b0076f67ecc0138fd2ede3a8fd196dddc2ad3254069bcb9faf9a79b1cebcd \ + --hash=sha256:7349ab0fa0c429c82442a27a9673fc802ffdb7c7775fad780226cb234965e53c \ + --hash=sha256:7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e \ + --hash=sha256:7e50d0a0cc3189f9cb0aeb3a6a6af18c16f59f004b866cd2be1c14b36134a4a0 \ + --hash=sha256:95a7476c59002f2f6c590b9b7b998306fba6a5aa646b1e22ddfeaf8f78c3a29c \ + --hash=sha256:96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a \ + --hash=sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b \ + --hash=sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0 \ + --hash=sha256:a354325ee03388678242a4d7ebcd08b5c727033fcff3b2f536aea978e15ee9e6 \ + --hash=sha256:a4abb4f9001ad2858e7ac189089c42178fcce737e4169dc61321660f1a96c7d2 \ + --hash=sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a \ + --hash=sha256:afedb719a9dcfc7eaf2287b839d8198e06dcd4cb5d276a3df279231138e83d30 \ + --hash=sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218 \ + --hash=sha256:b97fe8060236edf3662adfc2c633f56a08ae30560c56310562cb4f95500022d5 \ + --hash=sha256:bfe25acf8b437eb2a8b2d49d443800a5f18508cd811fea3181723922a8a82b07 \ + --hash=sha256:cd25bcecc4974d09257ffcd1f098ee778f7834c3ad767fe5db785be9a4aa9cb2 \ + --hash=sha256:d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4 \ + --hash=sha256:d5241e0a80d808d70546c697135da2c613f30e28251ff8307eb72ba696945764 \ + --hash=sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef \ + --hash=sha256:f870204a840a60da0b12273ef34f7051e98c3b5961b61b0c2c1be6dfd64fbcd3 \ + --hash=sha256:ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f +opencv-python-headless==4.11.0.86 \ + --hash=sha256:0e0a27c19dd1f40ddff94976cfe43066fbbe9dfbb2ec1907d66c19caef42a57b \ + --hash=sha256:48128188ade4a7e517237c8e1e11a9cdf5c282761473383e77beb875bb1e61ca \ + --hash=sha256:6c304df9caa7a6a5710b91709dd4786bf20a74d57672b3c31f7033cc638174ca \ + --hash=sha256:6efabcaa9df731f29e5ea9051776715b1bdd1845d7c9530065c7951d2a2899eb \ + --hash=sha256:996eb282ca4b43ec6a3972414de0e2331f5d9cda2b41091a49739c19fb843798 \ + --hash=sha256:a66c1b286a9de872c343ee7c3553b084244299714ebb50fbdcd76f07ebbe6c81 \ + --hash=sha256:f447d8acbb0b6f2808da71fddd29c1cdd448d2bc98f72d9bb78a7a898fc9621b +packaging==26.3 \ + --hash=sha256:94edc256424af38762eb31306eed28beb9f0efc50a8837492c9d6fd6004aed79 \ + --hash=sha256:d7193f7c8e4e93f444fde0262bf90af30e16fa0ad0ad44cb553c87339b23cd1c protobuf==5.29.6 \ --hash=sha256:36ade6ff88212e91aef4e687a971a11d7d24d6948a66751abc1b3238648f5d05 \ --hash=sha256:62e8a3114992c7c647bce37dcc93647575fc52d50e48de30c6fcb28a6a291eb1 \ @@ -192,20 +172,65 @@ protobuf==5.29.6 \ pyproject-hooks==1.2.0 \ --hash=sha256:1e859bd5c40fae9448642dd871adf459e5e2084186e8d2c2a79a824c970da1f8 \ --hash=sha256:9e5c6bfa8dcc30091c74b0cf803c81fdd29d94f01992a7707bc97babb1141913 -tomli==1.1.0 \ - --hash=sha256:33d7984738f8bb699c9b0a816eb646a8178a69eaa792d258486776a5d21b8ca5 \ - --hash=sha256:f4a182048010e89cbec0ae4686b21f550a7f2903f665e34a6de58ec15424f919 +tomli==2.4.1 \ + --hash=sha256:01f520d4f53ef97964a240a035ec2a869fe1a37dde002b57ebc4417a27ccd853 \ + --hash=sha256:0d85819802132122da43cb86656f8d1f8c6587d54ae7dcaf30e90533028b49fe \ + --hash=sha256:136443dbd7e1dee43c68ac2694fde36b2849865fa258d39bf822c10e8068eac5 \ + --hash=sha256:1d8591993e228b0c930c4bb0db464bdad97b3289fb981255d6c9a41aedc84b2d \ + --hash=sha256:2190f2e9dd7508d2a90ded5ed369255980a1bcdd58e52f7fe24b8162bf9fedbd \ + --hash=sha256:2c1c351919aca02858f740c6d33adea0c5deea37f9ecca1cc1ef9e884a619d26 \ + --hash=sha256:36d2bd2ad5fb9eaddba5226aa02c8ec3fa4f192631e347b3ed28186d43be6b54 \ + --hash=sha256:3d48a93ee1c9b79c04bb38772ee1b64dcf18ff43085896ea460ca8dec96f35f6 \ + --hash=sha256:47149d5bd38761ac8be13a84864bf0b7b70bc051806bc3669ab1cbc56216b23c \ + --hash=sha256:4ab97e64ccda8756376892c53a72bd1f964e519c77236368527f758fbc36a53a \ + --hash=sha256:4b605484e43cdc43f0954ddae319fb75f04cc10dd80d830540060ee7cd0243cd \ + --hash=sha256:504aa796fe0569bb43171066009ead363de03675276d2d121ac1a4572397870f \ + --hash=sha256:51529d40e3ca50046d7606fa99ce3956a617f9b36380da3b7f0dd3dd28e68cb5 \ + --hash=sha256:52c8ef851d9a240f11a88c003eacb03c31fc1c9c4ec64a99a0f922b93874fda9 \ + --hash=sha256:559db847dc486944896521f68d8190be1c9e719fced785720d2216fe7022b662 \ + --hash=sha256:5a881ab208c0baf688221f8cecc5401bd291d67e38a1ac884d6736cbcd8247e9 \ + --hash=sha256:5cb41aa38891e073ee49d55fbc7839cfdb2bc0e600add13874d048c94aadddd1 \ + --hash=sha256:5e262d41726bc187e69af7825504c933b6794dc3fbd5945e41a79bb14c31f585 \ + --hash=sha256:5ee18d9ebdb417e384b58fe414e8d6af9f4e7a0ae761519fb50f721de398dd4e \ + --hash=sha256:7008df2e7655c495dd12d2a4ad038ff878d4ca4b81fccaf82b714e07eae4402c \ + --hash=sha256:734e20b57ba95624ecf1841e72b53f6e186355e216e5412de414e3c51e5e3c41 \ + --hash=sha256:7c7e1a961a0b2f2472c1ac5b69affa0ae1132c39adcb67aba98568702b9cc23f \ + --hash=sha256:7f86fd587c4ed9dd76f318225e7d9b29cfc5a9d43de44e5754db8d1128487085 \ + --hash=sha256:7f94b27a62cfad8496c8d2513e1a222dd446f095fca8987fceef261225538a15 \ + --hash=sha256:88dceee75c2c63af144e456745e10101eb67361050196b0b6af5d717254dddf7 \ + --hash=sha256:8a650c2dbafa08d42e51ba0b62740dae4ecb9338eefa093aa5c78ceb546fcd5c \ + --hash=sha256:8d65a2fbf9d2f8352685bc1364177ee3923d6baf5e7f43ea4959d7d8bc326a36 \ + --hash=sha256:96481a5786729fd470164b47cdb3e0e58062a496f455ee41b4403be77cb5a076 \ + --hash=sha256:a120733b01c45e9a0c34aeef92bf0cf1d56cfe81ed9d47d562f9ed591a9828ac \ + --hash=sha256:b1d22e6e9387bf4739fbe23bfa80e93f6b0373a7f1b96c6227c32bef95a4d7a8 \ + --hash=sha256:b8c198f8c1805dc42708689ed6864951fd2494f924149d3e4bce7710f8eb5232 \ + --hash=sha256:c2541745709bad0264b7d4705ad453b76ccd191e64aa6f0fc66b69a293a45ece \ + --hash=sha256:c742f741d58a28940ce01d58f0ab2ea3ced8b12402f162f4d534dfe18ba1cd6a \ + --hash=sha256:c7f2c7f2b9ca6bdeef8f0fa897f8e05085923eb091721675170254cbc5b02897 \ + --hash=sha256:d312ef37c91508b0ab2cee7da26ec0b3ed2f03ce12bd87a588d771ae15dcf82d \ + --hash=sha256:d4d8fe59808a54658fcc0160ecfb1b30f9089906c50b23bcb4c69eddc19ec2b4 \ + --hash=sha256:da25dc3563bff5965356133435b757a795a17b17d01dbc0f42fb32447ddfd917 \ + --hash=sha256:eab21f45c7f66c13f2a9e0e1535309cee140182a9cdae1e041d02e47291e8396 \ + --hash=sha256:eb0dc4e38e6a1fd579e5d50369aa2e10acfc9cace504579b2faabb478e76941a \ + --hash=sha256:ec9bfaf3ad2df51ace80688143a6a4ebc09a248f6ff781a9945e51937008fcbc \ + --hash=sha256:ede3e6487c5ef5d28634ba3f31f989030ad6af71edfb0055cbbd14189ff240ba \ + --hash=sha256:f3c6818a1a86dd6dca7ddcaaf76947d5ba31aecc28cb1b67009a5877c9a64f3f \ + --hash=sha256:f758f1b9299d059cc3f6546ae2af89670cb1c4d48ea29c3cacc4fe7de3058257 \ + --hash=sha256:f8f0fc26ec2cc2b965b7a3b87cd19c5c6b8c5e5f436b984e85f486d652285c30 \ + --hash=sha256:fd0409a3653af6c147209d267a0e4243f0ae46b011aa978b1080359fddc9b6cf \ + --hash=sha256:ff18e6a727ee0ab0388507b89d1bc6a22b138d1e2fa56d1ad494586d61d2eae9 \ + --hash=sha256:ff2983983d34813c1aeb0fa89091e76c3a22889ee83ab27c5eeb45100560c049 vdms==0.0.23 \ --hash=sha256:2dec153f8cb33f27cdb9ab33125198195fd29a6777cf890fc735774ed9327874 \ --hash=sha256:7cd93242df644947c009559f31b4e19eb1dab6b62ab783ce5a2a54a4ad392f57 werkzeug==3.1.8 \ --hash=sha256:63a77fb8892bf28ebc3178683445222aa500e48ebad5ec77b0ad80f8726b1f50 \ --hash=sha256:9bad61a4268dac112f1c5cd4630a56ede601b6ed420300677a869083d70a4c44 -wheel==0.46.3 \ - --hash=sha256:4b399d56c9d9338230118d705d9737a2a468ccca63d5e813e2a4fc7815d8bc4d \ - --hash=sha256:e3e79874b07d776c40bd6033f8ddf76a7dad46a7b8aa1b2787a83083519a1803 +wheel==0.48.0 \ + --hash=sha256:3217dcc807155e45db462d7ef2431f5ddda0d7273b700d05a67b271ceb1287ab \ + --hash=sha256:94800765601e9171bf5d58d066e640662842bcedcbab982b2c90787a2c987322 # The following packages are considered to be unsafe in a requirements file: -pip==26.1.2 \ - --hash=sha256:382ff9f685ee3bc25864f820aa50505825f10f5458ffff07e30a6d96e5715cab \ - --hash=sha256:f49cd134c61cf2fd75e0ce2676db03e4054504a5a4986d00f8299ae632dc4605 +pip==26.2.1 \ + --hash=sha256:71138adf1f4ca900cdb7d289c21b7494329f2332b6d85f0e1c42108c0384ed3e \ + --hash=sha256:f6ad667e89a1fe78046c8f13232b247200f5258d7828f3f7883d660878e0813f diff --git a/video/requirements.txt b/video/requirements.txt index 9e4a641..5dbccbc 100644 --- a/video/requirements.txt +++ b/video/requirements.txt @@ -1,148 +1,191 @@ -build==1.4.0 \ - --hash=sha256:6a07c1b8eb6f2b311b96fcbdbce5dab5fe637ffda0fd83c9cac622e927501596 \ - --hash=sha256:f1b91b925aa322be454f8330c6fb48b465da993d1e7e7e6fa35027ec49f3c936 -certifi==2026.2.25 \ - --hash=sha256:027692e4402ad994f1c42e52a4997a9763c646b73e4096e4d5d6db8af1d6f0fa \ - --hash=sha256:e887ab5cee78ea814d3472169153c2d12cd43b14bd03329a39a9c6e2e80bfba7 -charset-normalizer==3.4.6 \ - --hash=sha256:06a7e86163334edfc5d20fe104db92fcd666e5a5df0977cb5680a506fe26cc8e \ - --hash=sha256:0c173ce3a681f309f31b87125fecec7a5d1347261ea11ebbb856fa6006b23c8c \ - --hash=sha256:0e28d62a8fc7a1fa411c43bd65e346f3bce9716dc51b897fbe930c5987b402d5 \ - --hash=sha256:0e901eb1049fdb80f5bd11ed5ea1e498ec423102f7a9b9e4645d5b8204ff2815 \ - --hash=sha256:11afb56037cbc4b1555a34dd69151e8e069bee82e613a73bef6e714ce733585f \ - --hash=sha256:150b8ce8e830eb7ccb029ec9ca36022f756986aaaa7956aad6d9ec90089338c0 \ - --hash=sha256:172985e4ff804a7ad08eebec0a1640ece87ba5041d565fff23c8f99c1f389484 \ - --hash=sha256:197c1a244a274bb016dd8b79204850144ef77fe81c5b797dc389327adb552407 \ - --hash=sha256:1ae6b62897110aa7c79ea2f5dd38d1abca6db663687c0b1ad9aed6f6bae3d9d6 \ - --hash=sha256:1cf0a70018692f85172348fe06d3a4b63f94ecb055e13a00c644d368eb82e5b8 \ - --hash=sha256:1ed80ff870ca6de33f4d953fda4d55654b9a2b340ff39ab32fa3adbcd718f264 \ - --hash=sha256:22c6f0c2fbc31e76c3b8a86fba1a56eda6166e238c29cdd3d14befdb4a4e4815 \ - --hash=sha256:231d4da14bcd9301310faf492051bee27df11f2bc7549bc0bb41fef11b82daa2 \ - --hash=sha256:259695e2ccc253feb2a016303543d691825e920917e31f894ca1a687982b1de4 \ - --hash=sha256:2a24157fa36980478dd1770b585c0f30d19e18f4fb0c47c13aa568f871718579 \ - --hash=sha256:2b1a63e8224e401cafe7739f77efd3f9e7f5f2026bda4aead8e59afab537784f \ - --hash=sha256:2bd9d128ef93637a5d7a6af25363cf5dec3fa21cf80e68055aad627f280e8afa \ - --hash=sha256:2e1d8ca8611099001949d1cdfaefc510cf0f212484fe7c565f735b68c78c3c95 \ - --hash=sha256:2ef7fedc7a6ecbe99969cd09632516738a97eeb8bd7258bf8a0f23114c057dab \ - --hash=sha256:2f7fdd9b6e6c529d6a2501a2d36b240109e78a8ceaef5687cfcfa2bbe671d297 \ - --hash=sha256:30f445ae60aad5e1f8bdbb3108e39f6fbc09f4ea16c815c66578878325f8f15a \ - --hash=sha256:31215157227939b4fb3d740cd23fe27be0439afef67b785a1eb78a3ae69cba9e \ - --hash=sha256:34315ff4fc374b285ad7f4a0bf7dcbfe769e1b104230d40f49f700d4ab6bbd84 \ - --hash=sha256:3516bbb8d42169de9e61b8520cbeeeb716f12f4ecfe3fd30a9919aa16c806ca8 \ - --hash=sha256:3778fd7d7cd04ae8f54651f4a7a0bd6e39a0cf20f801720a4c21d80e9b7ad6b0 \ - --hash=sha256:39f5068d35621da2881271e5c3205125cc456f54e9030d3f723288c873a71bf9 \ - --hash=sha256:404a1e552cf5b675a87f0651f8b79f5f1e6fd100ee88dc612f89aa16abd4486f \ - --hash=sha256:419a9d91bd238052642a51938af8ac05da5b3343becde08d5cdeab9046df9ee1 \ - --hash=sha256:423fb7e748a08f854a08a222b983f4df1912b1daedce51a72bd24fe8f26a1843 \ - --hash=sha256:4482481cb0572180b6fd976a4d5c72a30263e98564da68b86ec91f0fe35e8565 \ - --hash=sha256:461598cd852bfa5a61b09cae2b1c02e2efcd166ee5516e243d540ac24bfa68a7 \ - --hash=sha256:47955475ac79cc504ef2704b192364e51d0d473ad452caedd0002605f780101c \ - --hash=sha256:48696db7f18afb80a068821504296eb0787d9ce239b91ca15059d1d3eaacf13b \ - --hash=sha256:4be9f4830ba8741527693848403e2c457c16e499100963ec711b1c6f2049b7c7 \ - --hash=sha256:4d1d02209e06550bdaef34af58e041ad71b88e624f5d825519da3a3308e22687 \ - --hash=sha256:4f41da960b196ea355357285ad1316a00099f22d0929fe168343b99b254729c9 \ - --hash=sha256:517ad0e93394ac532745129ceabdf2696b609ec9f87863d337140317ebce1c14 \ - --hash=sha256:51fb3c322c81d20567019778cb5a4a6f2dc1c200b886bc0d636238e364848c89 \ - --hash=sha256:5273b9f0b5835ff0350c0828faea623c68bfa65b792720c453e22b25cc72930f \ - --hash=sha256:530d548084c4a9f7a16ed4a294d459b4f229db50df689bfe92027452452943a0 \ - --hash=sha256:530e8cebeea0d76bdcf93357aa5e41336f48c3dc709ac52da2bb167c5b8271d9 \ - --hash=sha256:54fae94be3d75f3e573c9a1b5402dc593de19377013c9a0e4285e3d402dd3a2a \ - --hash=sha256:572d7c822caf521f0525ba1bce1a622a0b85cf47ffbdae6c9c19e3b5ac3c4389 \ - --hash=sha256:58c948d0d086229efc484fe2f30c2d382c86720f55cd9bc33591774348ad44e0 \ - --hash=sha256:5d11595abf8dd942a77883a39d81433739b287b6aa71620f15164f8096221b30 \ - --hash=sha256:5f8ddd609f9e1af8c7bd6e2aca279c931aefecd148a14402d4e368f3171769fd \ - --hash=sha256:5feb91325bbceade6afab43eb3b508c63ee53579fe896c77137ded51c6b6958e \ - --hash=sha256:60c74963d8350241a79cb8feea80e54d518f72c26db618862a8f53e5023deaf9 \ - --hash=sha256:613f19aa6e082cf96e17e3ffd89383343d0d589abda756b7764cf78361fd41dc \ - --hash=sha256:659a1e1b500fac8f2779dd9e1570464e012f43e580371470b45277a27baa7532 \ - --hash=sha256:695f5c2823691a25f17bc5d5ffe79fa90972cc34b002ac6c843bb8a1720e950d \ - --hash=sha256:69dd852c2f0ad631b8b60cfbe25a28c0058a894de5abb566619c205ce0550eae \ - --hash=sha256:6cceb5473417d28edd20c6c984ab6fee6c6267d38d906823ebfe20b03d607dc2 \ - --hash=sha256:71be7e0e01753a89cf024abf7ecb6bca2c81738ead80d43004d9b5e3f1244e64 \ - --hash=sha256:74119174722c4349af9708993118581686f343adc1c8c9c007d59be90d077f3f \ - --hash=sha256:74a2e659c7ecbc73562e2a15e05039f1e22c75b7c7618b4b574a3ea9118d1557 \ - --hash=sha256:7504e9b7dc05f99a9bbb4525c67a2c155073b44d720470a148b34166a69c054e \ - --hash=sha256:79090741d842f564b1b2827c0b82d846405b744d31e84f18d7a7b41c20e473ff \ - --hash=sha256:7a6967aaf043bceabab5412ed6bd6bd26603dae84d5cb75bf8d9a74a4959d398 \ - --hash=sha256:7bda6eebafd42133efdca535b04ccb338ab29467b3f7bf79569883676fc628db \ - --hash=sha256:7edbed096e4a4798710ed6bc75dcaa2a21b68b6c356553ac4823c3658d53743a \ - --hash=sha256:7f9019c9cb613f084481bd6a100b12e1547cf2efe362d873c2e31e4035a6fa43 \ - --hash=sha256:802168e03fba8bbc5ce0d866d589e4b1ca751d06edee69f7f3a19c5a9fe6b597 \ - --hash=sha256:80d0a5615143c0b3225e5e3ef22c8d5d51f3f72ce0ea6fb84c943546c7b25b6c \ - --hash=sha256:82060f995ab5003a2d6e0f4ad29065b7672b6593c8c63559beefe5b443242c3e \ - --hash=sha256:836ab36280f21fc1a03c99cd05c6b7af70d2697e374c7af0b61ed271401a72a2 \ - --hash=sha256:8761ac29b6c81574724322a554605608a9960769ea83d2c73e396f3df896ad54 \ - --hash=sha256:87725cfb1a4f1f8c2fc9890ae2f42094120f4b44db9360be5d99a4c6b0e03a9e \ - --hash=sha256:899d28f422116b08be5118ef350c292b36fc15ec2daeb9ea987c89281c7bb5c4 \ - --hash=sha256:8bc5f0687d796c05b1e28ab0d38a50e6309906ee09375dd3aff6a9c09dd6e8f4 \ - --hash=sha256:8bea55c4eef25b0b19a0337dc4e3f9a15b00d569c77211fa8cde38684f234fb7 \ - --hash=sha256:8e5a94886bedca0f9b78fecd6afb6629142fd2605aa70a125d49f4edc6037ee6 \ - --hash=sha256:90ca27cd8da8118b18a52d5f547859cc1f8354a00cd1e8e5120df3e30d6279e5 \ - --hash=sha256:92734d4d8d187a354a556626c221cd1a892a4e0802ccb2af432a1d85ec012194 \ - --hash=sha256:947cf925bc916d90adba35a64c82aace04fa39b46b52d4630ece166655905a69 \ - --hash=sha256:95b52c68d64c1878818687a473a10547b3292e82b6f6fe483808fb1468e2f52f \ - --hash=sha256:97d0235baafca5f2b09cf332cc275f021e694e8362c6bb9c96fc9a0eb74fc316 \ - --hash=sha256:9ca4c0b502ab399ef89248a2c84c54954f77a070f28e546a85e91da627d1301e \ - --hash=sha256:9cc4fc6c196d6a8b76629a70ddfcd4635a6898756e2d9cac5565cf0654605d73 \ - --hash=sha256:9cc6e6d9e571d2f863fa77700701dae73ed5f78881efc8b3f9a4398772ff53e8 \ - --hash=sha256:a056d1ad2633548ca18ffa2f85c202cfb48b68615129143915b8dc72a806a923 \ - --hash=sha256:a26611d9987b230566f24a0a125f17fe0de6a6aff9f25c9f564aaa2721a5fb88 \ - --hash=sha256:a4474d924a47185a06411e0064b803c68be044be2d60e50e8bddcc2649957c1f \ - --hash=sha256:a4ea868bc28109052790eb2b52a9ab33f3aa7adc02f96673526ff47419490e21 \ - --hash=sha256:a9e68c9d88823b274cf1e72f28cb5dc89c990edf430b0bfd3e2fb0785bfeabf4 \ - --hash=sha256:aa9cccf4a44b9b62d8ba8b4dd06c649ba683e4bf04eea606d2e94cfc2d6ff4d6 \ - --hash=sha256:ab30e5e3e706e3063bc6de96b118688cb10396b70bb9864a430f67df98c61ecc \ - --hash=sha256:ac2393c73378fea4e52aa56285a3d64be50f1a12395afef9cce47772f60334c2 \ - --hash=sha256:ad8faf8df23f0378c6d527d8b0b15ea4a2e23c89376877c598c4870d1b2c7866 \ - --hash=sha256:b35b200d6a71b9839a46b9b7fff66b6638bb52fc9658aa58796b0326595d3021 \ - --hash=sha256:b3694e3f87f8ac7ce279d4355645b3c878d24d1424581b46282f24b92f5a4ae2 \ - --hash=sha256:b4ff1d35e8c5bd078be89349b6f3a845128e685e751b6ea1169cf2160b344c4d \ - --hash=sha256:bbc8c8650c6e51041ad1be191742b8b421d05bbd3410f43fa2a00c8db87678e8 \ - --hash=sha256:bc72863f4d9aba2e8fd9085e63548a324ba706d2ea2c83b260da08a59b9482de \ - --hash=sha256:bf625105bb9eef28a56a943fec8c8a98aeb80e7d7db99bd3c388137e6eb2d237 \ - --hash=sha256:c2274ca724536f173122f36c98ce188fd24ce3dad886ec2b7af859518ce008a4 \ - --hash=sha256:c45a03a4c69820a399f1dda9e1d8fbf3562eda46e7720458180302021b08f778 \ - --hash=sha256:c8ae56368f8cc97c7e40a7ee18e1cedaf8e780cd8bc5ed5ac8b81f238614facb \ - --hash=sha256:c907cdc8109f6c619e6254212e794d6548373cc40e1ec75e6e3823d9135d29cc \ - --hash=sha256:ca0276464d148c72defa8bb4390cce01b4a0e425f3b50d1435aa6d7a18107602 \ - --hash=sha256:cd5e2801c89992ed8c0a3f0293ae83c159a60d9a5d685005383ef4caca77f2c4 \ - --hash=sha256:d08ec48f0a1c48d75d0356cea971921848fb620fdeba805b28f937e90691209f \ - --hash=sha256:d1a2ee9c1499fc8f86f4521f27a973c914b211ffa87322f4ee33bb35392da2c5 \ - --hash=sha256:d5f5d1e9def3405f60e3ca8232d56f35c98fb7bf581efcc60051ebf53cb8b611 \ - --hash=sha256:d60377dce4511655582e300dc1e5a5f24ba0cb229005a1d5c8d0cb72bb758ab8 \ - --hash=sha256:d73beaac5e90173ac3deb9928a74763a6d230f494e4bfb422c217a0ad8e629bf \ - --hash=sha256:d7de2637729c67d67cf87614b566626057e95c303bc0a55ffe391f5205e7003d \ - --hash=sha256:dad6e0f2e481fffdcf776d10ebee25e0ef89f16d691f1e5dee4b586375fdc64b \ - --hash=sha256:dda86aba335c902b6149a02a55b38e96287157e609200811837678214ba2b1db \ - --hash=sha256:df01808ee470038c3f8dc4f48620df7225c49c2d6639e38f96e6d6ac6e6f7b0e \ - --hash=sha256:e1f6e2f00a6b8edb562826e4632e26d063ac10307e80f7461f7de3ad8ef3f077 \ - --hash=sha256:e25369dc110d58ddf29b949377a93e0716d72a24f62bad72b2b39f155949c1fd \ - --hash=sha256:e3c701e954abf6fc03a49f7c579cc80c2c6cc52525340ca3186c41d3f33482ef \ - --hash=sha256:e5bcc1a1ae744e0bb59641171ae53743760130600da8db48cbb6e4918e186e4e \ - --hash=sha256:e68c14b04827dd76dcbd1aeea9e604e3e4b78322d8faf2f8132c7138efa340a8 \ - --hash=sha256:e8aeb10fcbe92767f0fa69ad5a72deca50d0dca07fbde97848997d778a50c9fe \ - --hash=sha256:e985a16ff513596f217cee86c21371b8cd011c0f6f056d0920aa2d926c544058 \ - --hash=sha256:ecbbd45615a6885fe3240eb9db73b9e62518b611850fdf8ab08bd56de7ad2b17 \ - --hash=sha256:ee4ec14bc1680d6b0afab9aea2ef27e26d2024f18b24a2d7155a52b60da7e833 \ - --hash=sha256:ef5960d965e67165d75b7c7ffc60a83ec5abfc5c11b764ec13ea54fbef8b4421 \ - --hash=sha256:f0cdaecd4c953bfae0b6bb64910aaaca5a424ad9c72d85cb88417bb9814f7550 \ - --hash=sha256:f1ce721c8a7dfec21fcbdfe04e8f68174183cf4e8188e0645e92aa23985c57ff \ - --hash=sha256:f50498891691e0864dc3da965f340fada0771f6142a378083dc4608f4ea513e2 \ - --hash=sha256:f5ea69428fa1b49573eef0cc44a1d43bebd45ad0c611eb7d7eac760c7ae771bc \ - --hash=sha256:f61aa92e4aad0be58eb6eb4e0c21acf32cf8065f4b2cae5665da756c4ceef982 \ - --hash=sha256:f6e4333fb15c83f7d1482a76d45a0818897b3d33f00efd215528ff7c51b8e35d \ - --hash=sha256:f820f24b09e3e779fe84c3c456cb4108a7aa639b0d1f02c28046e11bfcd088ed \ - --hash=sha256:f98059e4fcd3e3e4e2d632b7cf81c2faae96c43c60b569e9c621468082f1d104 \ - --hash=sha256:fcce033e4021347d80ed9c66dcf1e7b1546319834b74445f561d2e2221de5659 -idna==3.18 \ - --hash=sha256:7f952cbe720b688055e3f87de14f5c3e5fdaa8bc3928985c4077ca689de849a2 \ - --hash=sha256:ffb385a7e039654cef1ab9ef32c6fafe283c0c0467bba1d9029738ce4a14a848 +build==1.6.0 \ + --hash=sha256:bd2c8afc603e7a2e0ce70e2ea85f0a6d02043bafbd307f5bada0f98669eca5af \ + --hash=sha256:f7aaf1ebbb79178a02ba248bb524f2176b256017e17e8e4bd4289c7b38cc2bad +certifi==2026.7.22 \ + --hash=sha256:62f22742b58a1a33014a2b6b706588a8d7e2a88ae7bd1a6ebe8c992928483775 \ + --hash=sha256:741e2c3b351ddf169a738da9f2c048608ff7f2c5cc02f1ebc6b118bb090d5d55 +charset-normalizer==3.5.1 \ + --hash=sha256:00668ebb0609751758682eb0b5857e7c35b9f00e84dfdef062e103244ec94d45 \ + --hash=sha256:012a22b88a77ca2e59b98ac5889b0deb604147666032f45e6d6e217634d2550d \ + --hash=sha256:01e93745f7f219b703b60ba7afead36cfc4242782be5af484673fc500df12da5 \ + --hash=sha256:04368edf83514385ffc3e1cfd4546e595f4f1272dd23ba437a93a9cc3741d47b \ + --hash=sha256:0722590aabf9dc6a6c0343d523c05458fa2b5047dbe6302fd526bb570600753f \ + --hash=sha256:07ffd07412fc5d5e84cd8952acf9ff7e4ed7a708e69d1bada19d8ba91711353f \ + --hash=sha256:09a7bba9f739468c8e78c36a75c33768e53cb1959fc638f510454c14683f00d5 \ + --hash=sha256:0b2b1b3fa5670c127b246df1d0c059defd41f689a868a3b9d79df9b1cac42d22 \ + --hash=sha256:0c6dfb5ca6723eeed15aa8e564a014d69fcb8812f94eef11fe3631e0508199f5 \ + --hash=sha256:0d929fc574b4d6fd9e7c0f5c2ede8716a41911923aa7fa5fce38e0818aa4a1ac \ + --hash=sha256:13e3afe97712e8887cd516e960c63f0b93122971e5b5e4b2622fe7701771e838 \ + --hash=sha256:15f024313246a4ed976c60f440bb8d257815513a681d212ff74fd46f7d715a90 \ + --hash=sha256:195ce897c6153c0700078142cf8efe3e6454ca4cf4357499e4078dfd83396626 \ + --hash=sha256:19a3dd5aa73cef1c99687c4fc57db016a9c17104ae1185da88ba566a5d3bebe4 \ + --hash=sha256:1d1c7a53a6c2103925cdd6d7229f8c567379f211c869793df679f2e9f738c369 \ + --hash=sha256:1f5883d77fd409a261abb5dc8ccbe335720d798b1de4abb3b1d47ccbbc76b53b \ + --hash=sha256:21b82d8082f6f5e7f456ef0bd16323d08de1266efbfeb476e64b2a91d1471a4e \ + --hash=sha256:252d099029bcbea642f2a06c4ed5046bdf8b5a8150b64afa5e027e88b106e5ee \ + --hash=sha256:256dd4d85d9e4dc595e2bc983c980e73f62ddeb3165c58b4c3dfe78c5c8548c1 \ + --hash=sha256:26422d45fd13551cf564c58932f7d72b4f58b93b0fcf18c35ba6be12b46bb102 \ + --hash=sha256:2679de311c7946dde5d3b6f44941844133ff5c7cb86099c0061ab1e8901c20a8 \ + --hash=sha256:29880d17a8eb0b5cfdfd8944b468322928059aa35f1f5fa8ff22b149ec0b42f8 \ + --hash=sha256:2bced4061f000f7187254a02ad3433ae17eaf991747ceea2f478422590a5bba9 \ + --hash=sha256:2e9cf9253119d8e5d111f05d71626786fd3d6193817316eab1ca088cdb8593cf \ + --hash=sha256:2f06b7eae9dbe77fe1d644ca244dad508de8d302870a43f3c559b521270938a0 \ + --hash=sha256:2f293479cce755c75f1697e87c409b7ae4c555c7dfecb6e988ad13abba943031 \ + --hash=sha256:329fc3ccb63ad22d867d84c2adea759a64079a37ba4a343433b02c7a2816871e \ + --hash=sha256:343fb4f2821043bd87095f7b08a1a181febc8e36ac64212143bbfd0a0e1bc235 \ + --hash=sha256:3588e376b3ea2eea84976f67273d679f229e24c66dce7b82ae45aef04ff6e072 \ + --hash=sha256:35aea775dc2bd5f54cd84a1cd2696cc3207c479cb9cf0bd346f0d343e4300ddb \ + --hash=sha256:35fe081843b35aad20ffeccec3eeffbe637b15d14f3fb22cc1b59cd8ec17e93c \ + --hash=sha256:36047af20e17097c3bb9476c2b7655f2f7aa51322c0ba58c07695bedf755a950 \ + --hash=sha256:3617ac3cfd8b9888f145ad89dd6e692285834b0201c6074a5eeaad3fd4d668c2 \ + --hash=sha256:366ec70f5547c640d3ce1985722490f23faf4eb5216a7eeba78277490e78dacb \ + --hash=sha256:394fea06235c8543390050ed5f529187074b029fb027213f6c46ac11ab5d950e \ + --hash=sha256:3d27167433c0d5f18dc850f07d0b3816221984fecdc405d6c157a6f0b8f8e9e6 \ + --hash=sha256:3e5e1224c0a6a90e05843e07adfec669edebec17801c67072f51e59561d63c0b \ + --hash=sha256:41876ee62a3dddf48ff1121ad8f0798032aa03f2fd35f21f34a4cab14f18d8d2 \ + --hash=sha256:433c5a81eade63b47e522303bad236f59dba55ea6951746f5558355eeed8c75d \ + --hash=sha256:4582c27e8c889d64811987b5967fbd3ae0c823fe1fd933b543d55ac20bb475fa \ + --hash=sha256:485a0d363cafefcd2538a73c7c838daa2035f09b2c9f9b5e3133f80c6aeb84c2 \ + --hash=sha256:494b70049a4d69aec6e8137c13af4cf8db8c9f9820a1392ac293b0dd2987a818 \ + --hash=sha256:496846868fea80e479324862fa877f02411f2fd0f83b79ccee2607aa68b2a032 \ + --hash=sha256:4abdc5f9ad448c1ecbfae2974b820535d6bc6e7eef63babbab3d81cf46968c71 \ + --hash=sha256:4b599739b93b2cbeded49645ae3c8d1405c29ddfbceac1545c87a3f9580a9e96 \ + --hash=sha256:4bea7f8ebe90bbd7f0e4a2de42ca6924ba23e3e76418c408ff82f1d46fabd687 \ + --hash=sha256:4c4fb141a727957c93edfe5c32a26ceb6b5f6461d67146e2d39f51e16170bea8 \ + --hash=sha256:4c9548dc78002099910abaebc0a72ac58b7d30931869e0351c09b507dff4ece3 \ + --hash=sha256:4d26f14f041e83dd8edfd61f4cd4fa7285d31798b5bf1f28e70c367ba6c41d61 \ + --hash=sha256:4f298bdadb8f0b9e5672877f647d1be9373ef5320c9e2f049795e26cad28b6a9 \ + --hash=sha256:52ec005752a56ae79547a05c0139ca2501a0c866390b6115008456b9f0e7cde1 \ + --hash=sha256:55261ac0d2941c42f196dd576f543d87a8ee03cd6f5e30dfb4d807b2e3b9121a \ + --hash=sha256:56490c595a28b1bb27dfc583e816152a9767721ef58b2c03b13f954d2f707420 \ + --hash=sha256:58d3e12c88e0950bca850ae1f7c256055c097639c2edb9eb123af9807d8b15e4 \ + --hash=sha256:58d4aa13a59c969dbfdf9e6a9560e242cbfd9e8a8f50c2747714df1a423adf65 \ + --hash=sha256:59171c6e45bf07d0d5cab3b0bf81d945035530f6873398b3b531c31184d46663 \ + --hash=sha256:5b6d1386bf0096d26d3a863dc0a487a5b4eb9aa93cf5ba69683d29dde6b9d60f \ + --hash=sha256:5c0ea61a470e070686aa30892fed79e297d2c8d0ab46b8bcdf027d38c51da591 \ + --hash=sha256:5c84bec0ab5ae0c64bfe73a7d2adcb5ce73b467523fc27fd6a28ab2aa6cbe35a \ + --hash=sha256:5ca0555312ae2fe82715cada7fac375530c2f3349e1eaa1bcb33d0283ac79a18 \ + --hash=sha256:5d8531a6569d025f68e2321e7638fb7978f23db58e5f69f56913837aae03816e \ + --hash=sha256:5e2d0e146dcb57034f8b97dc58d2d512cb90aba253960ce449f695fec6a82c6f \ + --hash=sha256:5fc45d653ea8c9a20479167e11d4a0f8cb2fa3470737ab6f9c827532313187b7 \ + --hash=sha256:6117b84ea48435e5356dc737f5121485c30920ba43375fa7b434fd753df0eac3 \ + --hash=sha256:6199d5606e2bbf2b096cf64d03f8b6790c91081d5ac866b8e7bb6422738cc60c \ + --hash=sha256:62b55f6722735a6c472f88361cde6640608773d9443cebdbb51abf436a1fcdd3 \ + --hash=sha256:687c9ca3035544b113bea2055e180af96fb63c0c476e22a9180f51925186e7b7 \ + --hash=sha256:6b7430cf5728e68f6c462254009a6ef4086e1bea43cf2f57aa9c55fb4f50ff96 \ + --hash=sha256:6ba32c4d2abf1d2fe7cf27d280f4cca5664233b0f885549c7761719eb977f486 \ + --hash=sha256:6c9cdde8becb25a7fde49924511aa2644d6f8081cc8df8e9452724303348d8e3 \ + --hash=sha256:6df0ec430f9a831772c23ca5a224cba36517a58a84bb32c32bb59a9fa67c47f6 \ + --hash=sha256:6e2912d4babbc65196ac13c2f53468dc57fb8b9c25ef913e8c59ddf7c6dc0e1b \ + --hash=sha256:6e5e4d73d588ca5ed09df1b7dcd1b203d1df3c542e3f50d126c947d432b10731 \ + --hash=sha256:70055ff39b97c99e7ae40ea3e393fb62aa2e44dbd9b29f8d14f42fb0025c3959 \ + --hash=sha256:706bfd38730a5ac7a365793269a00f4e988178cec121391f4248d84ad8c972e9 \ + --hash=sha256:7235dc28fc6dd9d832ac7c7bce95367dedb85929f17368a0c2bee1e080b9acbf \ + --hash=sha256:774d157f112367ff4abd29019f38f023c24e00e56edc7829c20e358a5a913ad8 \ + --hash=sha256:77efcff2b23071c349402ac1066667a3d011f62398d81408c9b88ad991747c9e \ + --hash=sha256:789b8982559ae28dad2356519f841655756cdcd96616410590ae0b17454ee64f \ + --hash=sha256:7ac76cf9afd34929d76eb7fcb63be476a4853d8a96f0dcf2d0db68a0cbdf9885 \ + --hash=sha256:7c0c10730342b0c9b35dd1d619beb8214e520bd96a1f870f452680b238aab3e0 \ + --hash=sha256:823f82903d189af463d7df250ef1f7f696f3cee08cc8d91deb565e8d425f6506 \ + --hash=sha256:838648accb3a7fd9803fd45c87bce8509648eb0c11bc34e216141300977244f2 \ + --hash=sha256:854066be00447fa8de2ccbbe893e2ffc4b123ef16d897af794c1e18bd4a714b0 \ + --hash=sha256:85d5855daafc240cc045c026d7a15fd198a09b0fc8ff6f5ecbb5297b509cb11e \ + --hash=sha256:85de3134b5379856e323ba37c19c9256d39425f7b76a63af52b09fb4664c2e8f \ + --hash=sha256:87e4f41d375c0b9be2fb5251aee4b8a689169e134535aed81bf085c3b647451e \ + --hash=sha256:88ca277405c2d3b71c4e1c2ee0e7966e807bcba86a69d11e19ba199d18ae4491 \ + --hash=sha256:88e85ab89cb822c1e635f51d6d32e488f94e002e70e2f492bdb8b945543f345a \ + --hash=sha256:8ac8c94b6539074e0f40899301273ac8402b9b3e01c7b7ba269ff30340aaaf20 \ + --hash=sha256:8fe532b3c966d1fb794e0698e4589d0444017ae77fc0b31edea13c0e35bcc449 \ + --hash=sha256:9085f87b0e38a2b92b8923059b4e8789fe40d9279712d15dcc670048d77079af \ + --hash=sha256:90b7481fb62fbe172c558bc6fd1c4c98d82004a54a7551f20e11ac9bf0b8708c \ + --hash=sha256:92caef967d287a407085d61176fce4012b1dd62daed4eb6d5ceb26d3d2538712 \ + --hash=sha256:9362dd90aa7dab48c0054a21187791ccf05473f7dba5d92b8033ae62164675e7 \ + --hash=sha256:94d78ecec2605a8d0398b0f365d5f12a63248438516f5dac536a5eff7337df4a \ + --hash=sha256:94fbf1c0c6cc0d3d5e50f9a9313a8cdca90dd696d34b381cd1704f8c9e939f20 \ + --hash=sha256:950f23cb393f85543777b0433f082cddd25b51ab398eac7971146495679efe5f \ + --hash=sha256:96eefc178f8636b9c760c5829345307fd81cfae9ab1e80997dbddeb0f54ee9a3 \ + --hash=sha256:96fef3e886d6a9874b14f27fc193fbdc69d5d8035783d86aa4e1cea594e695f9 \ + --hash=sha256:977cdbd483a9cff38179bea4fd754289a6f2195c7abd414aba85410b3e66cc5e \ + --hash=sha256:978eab16f55b4ab2c2a745be9a0a840bf8f09a7f227d9c76eb30214d078865a5 \ + --hash=sha256:994e883d17c559cdfd38c84003c8b27d25424a1077272a17e7cd27bfe0bf57b2 \ + --hash=sha256:9ac4444d8d4fd4c4bd08bf451ed3167aa9e7ec6cdb41b648794f1d1103652e36 \ + --hash=sha256:9b5db6052055d34d41230fb78d7c439c23dc536a9896f6cb039e8dd92cfc1263 \ + --hash=sha256:9d9a0dc7cbe9bec24c3f767c9122c41fe5a1bc43f47cd099d00d393e09769de4 \ + --hash=sha256:9dbdd9205662134957cf0c324f639bdc5031c0ca056e2369e238db75187c0f11 \ + --hash=sha256:9eea3ab2597a5e65fe65296e2d6a84570845a6b55532d90333d740d48bbc850a \ + --hash=sha256:a2028475ba855475b8b4d3cfeb4994269c967aea8b9892dfba907f4263a863a3 \ + --hash=sha256:a3a370082ce34d0612f421e15fe011c53bb1feff21a26d06ad4fb244dab5a375 \ + --hash=sha256:a545775cfe815855ea32d7c27731d79da358ef2055b4a25830231b1622dd18aa \ + --hash=sha256:a5cbd90ecf0fc62e64726917ad083b73001f0563657a87ec3c0b504e277dc90d \ + --hash=sha256:a6d095662e73e74f0a49988e0593373e243e3a52e27bfeea0a859e88acf4a0f5 \ + --hash=sha256:a6dac12ff6b846103483683f60c5f8fee205121adc58ffd87e90a90a3af69e99 \ + --hash=sha256:a951ad59cad9145664a730d3036b40b844e74d2d3683da40111463cd3a83845d \ + --hash=sha256:aa1099b956fb795e686d073568f6dc002a0bb89765ea6d5b055dd7d9bf1b116c \ + --hash=sha256:aa2bb0b37202dca27175591f761108b5d34096ade1191ffe4808bdf6b1571488 \ + --hash=sha256:aae2ee51122d3ae968a3837d97dc24a0aeebb0dea23694422cd172bd30017cd6 \ + --hash=sha256:ab743e9bc90c1f73552ec33e10e3331315acd2c397b36065b591b0181de533cc \ + --hash=sha256:ac00177c4831ffa650f8609e4bdddd5fe09c03b1c0c47acece7e6ea20421598b \ + --hash=sha256:ac13b004224fb341e1e25a1ed5e19d32f57cdb2a403e01f003b46f051a550f6f \ + --hash=sha256:acaf604462bf330b0d07e7a07c1d6e4adac79e5fb13e9c5140590542cafacc00 \ + --hash=sha256:ae31a1a1db2ee6cc2942fccaf695c934bc7f3db9f2133a3fef1f367cf1a4ab10 \ + --hash=sha256:ae4a097991662cd4fff0ddc74e0fe7874f82e00042fa0ea00855645ed0c79598 \ + --hash=sha256:aea996a6aba25260827c9ea511d1addfde2da9eb686ac961838509086188b7e6 \ + --hash=sha256:b39b69b347e5e47a3b5b8cfc005c68c1ba347474e3960236c4944a8ecd174962 \ + --hash=sha256:b54e7e13267d49ffbfe68e25b3cbd774dab38fa37238f71265e91b36146eb21c \ + --hash=sha256:b9af956078716df40d985fb0dfeb2c2120c5ca92ba4ff4b388acfd01cdc14d08 \ + --hash=sha256:ba2f37ee79e6338845261a3c5b1784e5d1acdff2c0785b284f1b633033d136ab \ + --hash=sha256:ba501e667c17d8411f98e67a022d9604ef179aff0e459b7e292c796837c13573 \ + --hash=sha256:baf3775a2635e5a11fbd5e4e64ee69c7e86875d224a5c72aca4c141064589a90 \ + --hash=sha256:bb57753e36e4855b8ca375069482250a6246372331a3e4f3407eaebb007443f5 \ + --hash=sha256:bd6c173f04743d483881bffa1478d5a4624475b8cd1d2194956a75548e191c18 \ + --hash=sha256:be47f99644b208bff7766314013f9acf57b056b04191d570d68ad14022cf5b1d \ + --hash=sha256:c010f5581d9c612804cc59fcf7b524b707fbcb72828551237ab545bb5c7034af \ + --hash=sha256:c1dcc36dcb96abc02236e182d17e0f71430152a6c2c7447421da2d2dc144edea \ + --hash=sha256:c428c6c31eb5f4277d7f8eccaf767fbd548ddd5ce3c8b4f4cbbfab3d96b5904c \ + --hash=sha256:c658c50ac0c98cd755a2dd50b7977d3bca7df401dcc47fbdfa87db53ef7d4e8b \ + --hash=sha256:c71fb0d56c920c269cd3e2e3fe7c610e3f1fdb21a6ce60efa6430ff63676cea6 \ + --hash=sha256:c7b742bf31c88566b4bb6335a7f393bb322e580b6bb98df7bd0c25e6e3519ce8 \ + --hash=sha256:cc0329df4caaceb950d2f580b5ac716a377f7059624a0bafaeaf8a218c6ed774 \ + --hash=sha256:cc5d36d96478aa9c60654bd932525bf32964c62a7281eafdf16d85003a8d6004 \ + --hash=sha256:ce854f5f478050ade5a238731c4ca985a7d3b3cb53ff600a9b5c3b689b5f0a7a \ + --hash=sha256:ced3fdd71aaa83ce593746c2edb42b7a59cb4c19c8b5c407781c72e493aae55a \ + --hash=sha256:cee5dd7c6fb5dd52a0fe2a740f9bc6e3593f5f8b1788bde49de02086f30182b2 \ + --hash=sha256:cfa1c0cc3a8f9f53f1243a5a99ac36fd003880199383b37672e86ddda9cb07e2 \ + --hash=sha256:d1ee1e296209fdce05b81b663250eefa02213a2da7b41bf26f7829b8ba3545aa \ + --hash=sha256:d59b75732e9b6f27388e10c14b0259cc5f2e48c78627d185e6a177b58ad3cffe \ + --hash=sha256:d63600d620ad0064c3a748b950ac5ea38a80190e5498532efefa4b7b3f1da1f3 \ + --hash=sha256:dd732602a7009217f658d5863d12d79d373a4de0eebc111094bcdd3bb8e0a6cc \ + --hash=sha256:e06efa066f7dbadbc84ebc126a97c452a6451dfcf589d89d788484949e1cf795 \ + --hash=sha256:e199fb99720074809a7720f1c0b4d919eea8b87e88713e0f8f602f7bef543d9d \ + --hash=sha256:e4b018dc5a0eee4676e38fe84a47a427816c590b93b55d9025274ec4d6ffc2dc \ + --hash=sha256:e6621fb2a4988d6e53eedc455e5903e2679f3967b8acb3d639f1b63c14a2e893 \ + --hash=sha256:e71c909f353863b2b89c83de2ebed71ea6d0df8a6ef65a128193c5e650766bef \ + --hash=sha256:e90251c0c7bdd54a100a0dce3c07b7e637278c93af29dbf78ebb89a58c4bac7d \ + --hash=sha256:e9fbdce1e47394b09bc9f26ab117dfc8d6491977a11d86f592bb42c779db2fda \ + --hash=sha256:eb12fb2ba69ffa05f8695f61c69e591dc4b4a12ac3757ac8af8adb259bf56d17 \ + --hash=sha256:eda059b6bc8bc0812d626fd91a7ce01bf583df0a61296eff390fd94141a34e30 \ + --hash=sha256:f03ac127268b43ef4fe9e6ab6794a6794b49485a0cc0c1db79876d2f33f75bc7 \ + --hash=sha256:f298e218441525d3794428b4c8b8fb8662c6d3ea79925d4807ee6b9a96a3bca5 \ + --hash=sha256:f5542f9b941279d82d41eb0aa9f98eba36fe4df5c7086c651df7944935b37182 \ + --hash=sha256:f6f7deae3feb4edfa2efaf7c574fe88cbf055038a6abdb40188e4fff66d5699f \ + --hash=sha256:f9b1e28d0e8dbfa858abdba91d6b547beaf2df1a59bec6da6faae7b96a4991a9 \ + --hash=sha256:f9f8405c2c758532c74fed975dbee57be1f31a6e865c031870c79a6ed3212ada \ + --hash=sha256:fa48b1b63d639f9483e0633e092f5851e2348c352f1f9bb6c8182f87884ef876 \ + --hash=sha256:fb78f6e7fcd8ad785d28cd577168bc1aaee827b25bb8755638f694794ea98f0a \ + --hash=sha256:fbc597639158fd7c14d55e808718848319540f51b0e6746e3eefa59723a4a348 \ + --hash=sha256:fce8cbd4997efeb450bd298b54f755dcdff18d496f7a5ddbb4867c6d7c88fdc3 \ + --hash=sha256:fd0350afdc3aabd5576f60ea109228bd5538139713c7b094c5cd27c73a98bc6f \ + --hash=sha256:fd0a274c0e5f9a21565cd9d3dd749b61f96b7aa1e20a93aa1ba4029518f2e5c0 \ + --hash=sha256:fdb8a068947befafba9952162645dc2fecaeb400e64584829ed5e9b2fbe21a7f +idna==3.19 \ + --hash=sha256:5e0811a4383b21dc5838069f801c4fb62113b7447663d2530d2bd6e77b49bf15 \ + --hash=sha256:815e7be7a7806d54abb586dc943addc79e8b2ee16915059658cbeff4b1b43bf4 inotify==0.2.12 \ --hash=sha256:9aee407f92c7d51a2ce50f3b78291a9094e334e34bd68e82bf60020795fa2c94 \ --hash=sha256:e4f1c8ec7ba5ec2a1a7fce48c0c917234af9d756495ebae7ffa00e41a305ab90 -packaging==26.0 \ - --hash=sha256:00243ae351a257117b6a241061796684b084ed1c516a08c48a3f7e147a9d80b4 \ - --hash=sha256:b36f1fef9334a5588b4166f8bcd26a14e521f2b55e6b9de3aaa80d3ff7a37529 +packaging==26.3 \ + --hash=sha256:94edc256424af38762eb31306eed28beb9f0efc50a8837492c9d6fd6004aed79 \ + --hash=sha256:d7193f7c8e4e93f444fde0262bf90af30e16fa0ad0ad44cb553c87339b23cd1c pyproject-hooks==1.2.0 \ --hash=sha256:1e859bd5c40fae9448642dd871adf459e5e2084186e8d2c2a79a824c970da1f8 \ --hash=sha256:9e5c6bfa8dcc30091c74b0cf803c81fdd29d94f01992a7707bc97babb1141913 @@ -220,73 +263,73 @@ pyyaml==6.0.3 \ --hash=sha256:f7057c9a337546edc7973c0d3ba84ddcdf0daa14533c2065749c9075001090e6 \ --hash=sha256:fa160448684b4e94d80416c0fa4aac48967a969efe22931448d853ada8baf926 \ --hash=sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0 -requests==2.33.1 \ - --hash=sha256:18817f8c57c6263968bc123d237e3b8b08ac046f5456bd1e307ee8f4250d3517 \ - --hash=sha256:4e6d1ef462f3626a1f0a0a9c42dd93c63bad33f9f1c1937509b8c5c8718ab56a -tomli==2.4.0 \ - --hash=sha256:0408e3de5ec77cc7f81960c362543cbbd91ef883e3138e81b729fc3eea5b9729 \ - --hash=sha256:0dc56fef0e2c1c470aeac5b6ca8cc7b640bb93e92d9803ddaf9ea03e198f5b0b \ - --hash=sha256:0e0fe8a0b8312acf3a88077a0802565cb09ee34107813bba1c7cd591fa6cfc8d \ - --hash=sha256:0f2e3955efea4d1cfbcb87bc321e00dc08d2bcb737fd1d5e398af111d86db5df \ - --hash=sha256:133e93646ec4300d651839d382d63edff11d8978be23da4cc106f5a18b7d0576 \ - --hash=sha256:1b168f2731796b045128c45982d3a4874057626da0e2ef1fdd722848b741361d \ - --hash=sha256:1c8a885b370751837c029ef9bc014f27d80840e48bac415f3412e6593bbc18c1 \ - --hash=sha256:1f776e7d669ebceb01dee46484485f43a4048746235e683bcdffacdf1fb4785a \ - --hash=sha256:1fb2945cbe303b1419e2706e711b7113da57b7db31ee378d08712d678a34e51e \ - --hash=sha256:20cedb4ee43278bc4f2fee6cb50daec836959aadaf948db5172e776dd3d993fc \ - --hash=sha256:20ffd184fb1df76a66e34bd1b36b4a4641bd2b82954befa32fe8163e79f1a702 \ - --hash=sha256:26ab906a1eb794cd4e103691daa23d95c6919cc2fa9160000ac02370cc9dd3f6 \ - --hash=sha256:2add28aacc7425117ff6364fe9e06a183bb0251b03f986df0e78e974047571fd \ - --hash=sha256:2b1e3b80e1d5e52e40e9b924ec43d81570f0e7d09d11081b797bc4692765a3d4 \ - --hash=sha256:31d556d079d72db7c584c0627ff3a24c5d3fb4f730221d3444f3efb1b2514776 \ - --hash=sha256:36b9d05b51e65b254ea6c2585b59d2c4cb91c8a3d91d0ed0f17591a29aaea54a \ - --hash=sha256:39b0b5d1b6dd03684b3fb276407ebed7090bbec989fa55838c98560c01113b66 \ - --hash=sha256:3cf226acb51d8f1c394c1b310e0e0e61fecdd7adcb78d01e294ac297dd2e7f87 \ - --hash=sha256:3d895d56bd3f82ddd6faaff993c275efc2ff38e52322ea264122d72729dca2b2 \ - --hash=sha256:413540dce94673591859c4c6f794dfeaa845e98bf35d72ed59636f869ef9f86f \ - --hash=sha256:43e685b9b2341681907759cf3a04e14d7104b3580f808cfde1dfdb60ada85475 \ - --hash=sha256:4cbcb367d44a1f0c2be408758b43e1ffb5308abe0ea222897d6bfc8e8281ef2f \ - --hash=sha256:551e321c6ba03b55676970b47cb1b73f14a0a4dce6a3e1a9458fd6d921d72e95 \ - --hash=sha256:5572e41282d5268eb09a697c89a7bee84fae66511f87533a6f88bd2f7b652da9 \ - --hash=sha256:5aa48d7c2356055feef06a43611fc401a07337d5b006be13a30f6c58f869e3c3 \ - --hash=sha256:5b5807f3999fb66776dbce568cc9a828544244a8eb84b84b9bafc080c99597b9 \ - --hash=sha256:5e3f639a7a8f10069d0e15408c0b96a2a828cfdec6fca05296ebcdcc28ca7c76 \ - --hash=sha256:685306e2cc7da35be4ee914fd34ab801a6acacb061b6a7abca922aaf9ad368da \ - --hash=sha256:75c2f8bbddf170e8effc98f5e9084a8751f8174ea6ccf4fca5398436e0320bc8 \ - --hash=sha256:7b438885858efd5be02a9a133caf5812b8776ee0c969fea02c45e8e3f296ba51 \ - --hash=sha256:7d49c66a7d5e56ac959cb6fc583aff0651094ec071ba9ad43df785abc2320d86 \ - --hash=sha256:7d6d9a4aee98fac3eab4952ad1d73aee87359452d1c086b5ceb43ed02ddb16b8 \ - --hash=sha256:84d081fbc252d1b6a982e1870660e7330fb8f90f676f6e78b052ad4e64714bf0 \ - --hash=sha256:8768715ffc41f0008abe25d808c20c3d990f42b6e2e58305d5da280ae7d1fa3b \ - --hash=sha256:920b1de295e72887bafa3ad9f7a792f811847d57ea6b1215154030cf131f16b1 \ - --hash=sha256:9a08144fa4cba33db5255f9b74f0b89888622109bd2776148f2597447f92a94e \ - --hash=sha256:a26d7ff68dfdb9f87a016ecfd1e1c2bacbe3108f4e0f8bcd2228ef9a766c787d \ - --hash=sha256:aa89c3f6c277dd275d8e243ad24f3b5e701491a860d5121f2cdd399fbb31fc9c \ - --hash=sha256:b5ef256a3fd497d4973c11bf142e9ed78b150d36f5773f1ca6088c230ffc5867 \ - --hash=sha256:b6c78bdf37764092d369722d9946cb65b8767bfa4110f902a1b2542d8d173c8a \ - --hash=sha256:bbb1b10aa643d973366dc2cb1ad94f99c1726a02343d43cbc011edbfac579e7c \ - --hash=sha256:c084ad935abe686bd9c898e62a02a19abfc9760b5a79bc29644463eaf2840cb0 \ - --hash=sha256:c73add4bb52a206fd0c0723432db123c0c75c280cbd67174dd9d2db228ebb1b4 \ - --hash=sha256:cae9c19ed12d4e8f3ebf46d1a75090e4c0dc16271c5bce1c833ac168f08fb614 \ - --hash=sha256:d20b797a5c1ad80c516e41bc1fb0443ddb5006e9aaa7bda2d71978346aeb9132 \ - --hash=sha256:d3d1654e11d724760cdb37a3d7691f0be9db5fbdaef59c9f532aabf87006dbaa \ - --hash=sha256:d878f2a6707cc9d53a1be1414bbb419e629c3d6e67f69230217bb663e76b5087 -tornado==6.5.7 \ - --hash=sha256:148b2eb15c2c765a50796172c1e499649b35f30d2e3c3d3e15913cfa56bfb163 \ - --hash=sha256:66c513a76cda70d53907bc27cf1447557699c2e95aa48ba27a442ff61c3ddfc2 \ - --hash=sha256:7778b30bef919231265e91c69963ce0f49a1e9c07ac900bbe75b19ce2575ba92 \ - --hash=sha256:8a46347a18f23fb92b396beebe0fb78f61dda0cc302445202c16203d8a18848b \ - --hash=sha256:8d759e71906ee783f8867b93bf26a265743da4c1e2f4a018464c1ba019862972 \ - --hash=sha256:9da38de27f1da3b78a966f0dae12b5a1ea9afe72ca805d84ff06508272ddf100 \ - --hash=sha256:de942f843533a039ef9fa3d9c88c7cd8a7c94553fb5ad0154270989b3d99a2c4 \ - --hash=sha256:e726f0c75da7726eec023aa62751ff8878bd2737e34fbdd33b1ae5897d2200f5 \ - --hash=sha256:f8de3bf12d3efdd0cbe7c8887868198f8a91415e3f29fcf258d9b8eb7b1d9ae4 \ - --hash=sha256:ff934fce95643af5f11efdae618eaa73d469dc588641e5c8d19295a0c65c4796 +requests==2.34.2 \ + --hash=sha256:2a0d60c172f83ac6ab31e4554906c0f3b3588d37b5cb939b1c061f4907e278e0 \ + --hash=sha256:f288924cae4e29463698d6d60bc6a4da69c89185ad1e0bcc4104f584e960b9ed +tomli==2.4.1 \ + --hash=sha256:01f520d4f53ef97964a240a035ec2a869fe1a37dde002b57ebc4417a27ccd853 \ + --hash=sha256:0d85819802132122da43cb86656f8d1f8c6587d54ae7dcaf30e90533028b49fe \ + --hash=sha256:136443dbd7e1dee43c68ac2694fde36b2849865fa258d39bf822c10e8068eac5 \ + --hash=sha256:1d8591993e228b0c930c4bb0db464bdad97b3289fb981255d6c9a41aedc84b2d \ + --hash=sha256:2190f2e9dd7508d2a90ded5ed369255980a1bcdd58e52f7fe24b8162bf9fedbd \ + --hash=sha256:2c1c351919aca02858f740c6d33adea0c5deea37f9ecca1cc1ef9e884a619d26 \ + --hash=sha256:36d2bd2ad5fb9eaddba5226aa02c8ec3fa4f192631e347b3ed28186d43be6b54 \ + --hash=sha256:3d48a93ee1c9b79c04bb38772ee1b64dcf18ff43085896ea460ca8dec96f35f6 \ + --hash=sha256:47149d5bd38761ac8be13a84864bf0b7b70bc051806bc3669ab1cbc56216b23c \ + --hash=sha256:4ab97e64ccda8756376892c53a72bd1f964e519c77236368527f758fbc36a53a \ + --hash=sha256:4b605484e43cdc43f0954ddae319fb75f04cc10dd80d830540060ee7cd0243cd \ + --hash=sha256:504aa796fe0569bb43171066009ead363de03675276d2d121ac1a4572397870f \ + --hash=sha256:51529d40e3ca50046d7606fa99ce3956a617f9b36380da3b7f0dd3dd28e68cb5 \ + --hash=sha256:52c8ef851d9a240f11a88c003eacb03c31fc1c9c4ec64a99a0f922b93874fda9 \ + --hash=sha256:559db847dc486944896521f68d8190be1c9e719fced785720d2216fe7022b662 \ + --hash=sha256:5a881ab208c0baf688221f8cecc5401bd291d67e38a1ac884d6736cbcd8247e9 \ + --hash=sha256:5cb41aa38891e073ee49d55fbc7839cfdb2bc0e600add13874d048c94aadddd1 \ + --hash=sha256:5e262d41726bc187e69af7825504c933b6794dc3fbd5945e41a79bb14c31f585 \ + --hash=sha256:5ee18d9ebdb417e384b58fe414e8d6af9f4e7a0ae761519fb50f721de398dd4e \ + --hash=sha256:7008df2e7655c495dd12d2a4ad038ff878d4ca4b81fccaf82b714e07eae4402c \ + --hash=sha256:734e20b57ba95624ecf1841e72b53f6e186355e216e5412de414e3c51e5e3c41 \ + --hash=sha256:7c7e1a961a0b2f2472c1ac5b69affa0ae1132c39adcb67aba98568702b9cc23f \ + --hash=sha256:7f86fd587c4ed9dd76f318225e7d9b29cfc5a9d43de44e5754db8d1128487085 \ + --hash=sha256:7f94b27a62cfad8496c8d2513e1a222dd446f095fca8987fceef261225538a15 \ + --hash=sha256:88dceee75c2c63af144e456745e10101eb67361050196b0b6af5d717254dddf7 \ + --hash=sha256:8a650c2dbafa08d42e51ba0b62740dae4ecb9338eefa093aa5c78ceb546fcd5c \ + --hash=sha256:8d65a2fbf9d2f8352685bc1364177ee3923d6baf5e7f43ea4959d7d8bc326a36 \ + --hash=sha256:96481a5786729fd470164b47cdb3e0e58062a496f455ee41b4403be77cb5a076 \ + --hash=sha256:a120733b01c45e9a0c34aeef92bf0cf1d56cfe81ed9d47d562f9ed591a9828ac \ + --hash=sha256:b1d22e6e9387bf4739fbe23bfa80e93f6b0373a7f1b96c6227c32bef95a4d7a8 \ + --hash=sha256:b8c198f8c1805dc42708689ed6864951fd2494f924149d3e4bce7710f8eb5232 \ + --hash=sha256:c2541745709bad0264b7d4705ad453b76ccd191e64aa6f0fc66b69a293a45ece \ + --hash=sha256:c742f741d58a28940ce01d58f0ab2ea3ced8b12402f162f4d534dfe18ba1cd6a \ + --hash=sha256:c7f2c7f2b9ca6bdeef8f0fa897f8e05085923eb091721675170254cbc5b02897 \ + --hash=sha256:d312ef37c91508b0ab2cee7da26ec0b3ed2f03ce12bd87a588d771ae15dcf82d \ + --hash=sha256:d4d8fe59808a54658fcc0160ecfb1b30f9089906c50b23bcb4c69eddc19ec2b4 \ + --hash=sha256:da25dc3563bff5965356133435b757a795a17b17d01dbc0f42fb32447ddfd917 \ + --hash=sha256:eab21f45c7f66c13f2a9e0e1535309cee140182a9cdae1e041d02e47291e8396 \ + --hash=sha256:eb0dc4e38e6a1fd579e5d50369aa2e10acfc9cace504579b2faabb478e76941a \ + --hash=sha256:ec9bfaf3ad2df51ace80688143a6a4ebc09a248f6ff781a9945e51937008fcbc \ + --hash=sha256:ede3e6487c5ef5d28634ba3f31f989030ad6af71edfb0055cbbd14189ff240ba \ + --hash=sha256:f3c6818a1a86dd6dca7ddcaaf76947d5ba31aecc28cb1b67009a5877c9a64f3f \ + --hash=sha256:f758f1b9299d059cc3f6546ae2af89670cb1c4d48ea29c3cacc4fe7de3058257 \ + --hash=sha256:f8f0fc26ec2cc2b965b7a3b87cd19c5c6b8c5e5f436b984e85f486d652285c30 \ + --hash=sha256:fd0409a3653af6c147209d267a0e4243f0ae46b011aa978b1080359fddc9b6cf \ + --hash=sha256:ff18e6a727ee0ab0388507b89d1bc6a22b138d1e2fa56d1ad494586d61d2eae9 \ + --hash=sha256:ff2983983d34813c1aeb0fa89091e76c3a22889ee83ab27c5eeb45100560c049 +tornado==6.5.8 \ + --hash=sha256:11881db6b7c168494be2c2d12e65931451bdf7ee718535418ae1d8855dd5a0ee \ + --hash=sha256:547d63f450d570c14fe0e8db2cfb14c9bbd1c2503b4a6612586267955aa47b58 \ + --hash=sha256:5d242290bdf7ab3151bc1065fdd75c0dcc21cbc7b49f22a4c56329c2d6566d22 \ + --hash=sha256:67832909c4779c64942380cb5f044a5c6163d00831472d80e25e115de9917836 \ + --hash=sha256:68a7468c7e289f8514d7d664101753903217eff1bb6822c6b5994a0b5f5bcb26 \ + --hash=sha256:7b94ff0e128fe0542f3bd331fb44d06260fc4ac16881545159f34ef08aad4195 \ + --hash=sha256:7e2360a0ffbe145eca8af0b19cb7203d79b1a98dd4cccdd6b368f6f49c2e3808 \ + --hash=sha256:9452e1b208a8bd771e2cb1f2ff564985b9b214bdebbe622793e1799e0a6bd23f \ + --hash=sha256:9715b5eb79735b2bcd454ce216a9275b7c0470e64ea1bf5742f78b2f72b26eeb \ + --hash=sha256:cc6aa787d7cfab7c3d35189dc7a56fbd2399a569624c730c6b55b3d6531d0403 urllib3==2.7.0 \ --hash=sha256:231e0ec3b63ceb14667c67be60f2f2c40a518cb38b03af60abc813da26505f4c \ --hash=sha256:9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897 # The following packages are considered to be unsafe in a requirements file: -pip==26.1.2 \ - --hash=sha256:382ff9f685ee3bc25864f820aa50505825f10f5458ffff07e30a6d96e5715cab \ - --hash=sha256:f49cd134c61cf2fd75e0ce2676db03e4054504a5a4986d00f8299ae632dc4605 +pip==26.2.1 \ + --hash=sha256:71138adf1f4ca900cdb7d289c21b7494329f2332b6d85f0e1c42108c0384ed3e \ + --hash=sha256:f6ad667e89a1fe78046c8f13232b247200f5258d7828f3f7883d660878e0813f From 69315219eb5b268e2f80664c7605b80de182a92f Mon Sep 17 00:00:00 2001 From: "Lacewell, Chaunte W" Date: Wed, 9 Sep 2026 19:13:46 -0700 Subject: [PATCH 11/19] Remove unused files Signed-off-by: Lacewell, Chaunte W --- .vscode/extensions.json | 9 --------- fastapi/.vscode/settings.json | 7 ------- 2 files changed, 16 deletions(-) delete mode 100644 .vscode/extensions.json delete mode 100644 fastapi/.vscode/settings.json diff --git a/.vscode/extensions.json b/.vscode/extensions.json deleted file mode 100644 index d38ebc5..0000000 --- a/.vscode/extensions.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "recommendations": [ - "kevinrose.vsc-python-indent", - "mechatroner.rainbow-csv", - "ms-python.debugpy", - "ms-vscode-remote.remote-containers", - "streetsidesoftware.code-spell-checker", - ] -} \ No newline at end of file diff --git a/fastapi/.vscode/settings.json b/fastapi/.vscode/settings.json deleted file mode 100644 index 9b38853..0000000 --- a/fastapi/.vscode/settings.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "python.testing.pytestArgs": [ - "tests" - ], - "python.testing.unittestEnabled": false, - "python.testing.pytestEnabled": true -} \ No newline at end of file From 0d0b50d2bc3dcb7f1037c34d0036e840e3e1e137 Mon Sep 17 00:00:00 2001 From: "Lacewell, Chaunte W" Date: Wed, 9 Sep 2026 20:51:06 -0700 Subject: [PATCH 12/19] Update docs Signed-off-by: Lacewell, Chaunte W --- README.md | 221 ++++--------------------------------- doc/DATASETS.md | 4 +- doc/PipelineFlow.png | Bin 0 -> 33637 bytes doc/PipelineOptions.png | Bin 258753 -> 0 bytes doc/cmake.md | 21 +--- doc/pipeline.md | 44 ++++---- doc/sample-ui.gif | Bin 3723017 -> 2142492 bytes fastapi/tests/test_eval.py | 8 +- 8 files changed, 50 insertions(+), 248 deletions(-) create mode 100644 doc/PipelineFlow.png delete mode 100644 doc/PipelineOptions.png diff --git a/README.md b/README.md index 61df77f..617b1a1 100644 --- a/README.md +++ b/README.md @@ -1,31 +1,18 @@ ![GitHub License](https://img.shields.io/github/license/IntelLabs/Video-Curation-Sample) [![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/IntelLabs/Video-Curation-Sample/badge)](https://scorecard.dev/viewer/?uri=github.com/IntelLabs/Video-Curation-Sample) -This sample implements libraries for video content analysis, database ingestion, content search and visualization: -- **Ingest**: Analyze video content and ingest the data into the VDMS. -- **VDMS**: Store metadata efficiently in a graph-based database. -- **Visualization**: Visualize content search based on video metadata. +This sample implements a pipeline focusing on real-time processing of high-resolution (8K) video for object detection. +The application can process high-resolution video in real-time using a Smart Filtering Pipeline to significantly reduce pixel processing (compute) by *automatically* identifying the regions of interest which is then forwarded to the detection model. -
-
**This is a concept sample in active development.**
-
- - -## Software Stacks -This sample is powered by the following software stacks: -- **NGINX Web Service**: - - [The NGINX/FFmpeg-based web serving stack](/deployment/Dockerfiles/Xeon/ubuntu-22.04/media/nginx) is used to store and segment video content and serve web services. The software stack is optimized for Intel Xeon Scalable Processors. -
+Please see [High Resolution Object Detection Pipeline](./doc/pipeline.md) for more details. ### License Obligations - FFmpeg is an open source project licensed under LGPL and GPL. See https://www.ffmpeg.org/legal.html. You are solely responsible for determining if your use of FFmpeg requires any additional licenses. Intel is not responsible for obtaining any such licenses, nor liable for any licensing fees due, in connection with your use of FFmpeg. -
-## Datasets & Attributions -This project utilizes third-party open datasets. Please see our [Data Attributions](docs/DATASETS.md) for full licensing, copyright details, and citation parameters. -
+### Datasets & Attributions +- This project utilizes third-party open datasets. Please see our [Data Attributions](docs/DATASETS.md) for full licensing, copyright details, and citation parameters. ## Install Prerequisites: @@ -37,8 +24,6 @@ This project utilizes third-party open datasets. Please see our [Data Attributio - **Docker Engine**: - Install [docker engine](https://docs.docker.com/install) and verify you have Docker Compose V2 2.18.0+ setup. - - - Setup docker proxy as follows if you are behind a firewall: ```bash sudo mkdir -p /etc/systemd/system/docker.service.d @@ -46,199 +31,39 @@ This project utilizes third-party open datasets. Please see our [Data Attributio sudo systemctl daemon-reload sudo systemctl restart docker ``` -
- - -## Prepare Videos and/or Camera Configurations -This application processes videos and camera streams by watching the `inputs` directory. -MP4 videos should be placed in this directory and the application will automatically begin processing it. If interested in using sample videos, see [examples](/doc/cmake.md#examples). -To configure the application for camera streams, add the camera name and URL to `inputs/camera_config.yaml`. -The YAML file provides a sample entry. -
+## Deploy High Resolution Drone Detection using Smart Filtering +All components for this application are dockerize. +Scripts are provided to make deployment easier. -## Start/Stop Service using Scripts: -We have provided scripts to help with the deployment. -The [start_app.sh](/start_app.sh) script provides everything you need to deploy the service. -To run the service using GPU, use: +### Start +[Optional] To make sure there aren't any running containers for this application, run the following which stops the application and prunes containers: ```bash -./start_app.sh -e GPU +./stop.sh –p ``` -This same script can be used to run the service with CPU, resizing video to 640x640, etc. -The accepted parameters for the start script are below:
- -| Parameter | Type | Description | Default | -| :----------------- | :------: | :--------------------------------------------------------------------------------------------- | :-----------: | -| -h | optional | Print this help message | | -| -d or --debug | optional | Flag for debugging | "0" | -| -e or --device | optional | Device to use for inference | CPU | -| -i or --ingestion | optional | Ingestion type (object, face) | "object,face" | -| -l or --tars | optional | Flag to load docker images instead of building from Dockerfiles | "0" | -| -m or --model | optional | Custom YOLO model name (.pt). If not provided model YOLO11n is used. | | -| -o or --omit-det | optional | By default, object detections are printed. To omit printing detections to screen, enable flag. | False | -| -z or --resize | optional | Flag to resize video to model input size (640x640) | False | -
- -See also [Customize Build Process](doc/cmake.md) for additional information on options. -
- -The [stop_app.sh](/stop_app.sh) script is provided to stop the service from a different terminal. To stop and prune the docker images (data doesn't persist), run: + +To start the application, run the following: ```bash -./stop_app.sh -p +./start_app.sh –m drone_detection ``` -**NOTE:** Remove `-p` if you only want to stop the docker containers without pruning docker builder, containers, volumes, and networks. -
- -## Manually Build Streaming Sample: -Instead of running the start/stop using the above scripts, you can run the commands individually as shown below. - -```bash -mkdir build -cd build -cmake .. -make -``` +### View Live Detections +Launch your browser and browse to ```https://:30077```. The sample UI is similar to the following: -See also [Customize Build Process](doc/cmake.md) for additional options. -
+
-### Start/Stop Sample: +***NOTE:*** If you see a browser warning of self-signed certificate, please accept it to proceed to the sample UI. -Use the following commands to start/stop services via docker-compose: +### Shutdown +To shutdown this application, run the following: ```bash -make start_docker_compose -make stop_docker_compose -``` - - - -
- - -## Display Object Detected -Once the application is started, we have provided a script to display the detections with associated timestamps. -To use the script, be sure ***NOT*** to use flags `-o` or `--omit-det` so the detection details are available. -To display this information, in a separate terminal, run `display_detections.sh` with the objects of interest. -For example, to display when "person" and "car" objects are detected, run: -```bash -./display_detections.sh person,car -``` -
- - -## Launch Sample UI: -Launch your browser and browse to ```https://:30007```. The sample UI is similar to the following: - -
- - - - -***NOTE:*** If you see a browser warning of self-signed certificate, please accept it to proceed to the sample UI. -
- - -## Redeploy Service by Persisting Data -There may be cases where you want to stop the service but redeploy later with data persisted. In such cases, follow the following steps, assuming service is currently running, i.e. via `./start_app.sh -e CPU -z -d`: - -1. [*Optional*] For redeployment, we will save the state of the named volumes. To conserve space in the `lcc_vdms-content` volume, it may be beneficial to delete the `/mnt/tmp` directory, in case some files were not removed. This is done by running: - ```bash - docker exec -it lcc_vdms-service_1 rm -rf /mnt/tmp - ``` -
- -1. Save docker images for running service: - ```bash - ./deployment/DockerImageTars/save_docker_images.sh -e CPU -z - ``` -
- - The options used should be the same as those used for running the original service, if available. - The accepted parameters for `save_docker_images.sh` are below:
- - | Parameter | Type | Description | Default | - | :----------------- | :------: | :------------------------------------------------- | :-----------: | - | -h | optional | Print this help message | | - | -e or --device | optional | Device to use for inference | CPU | - | -z or --resize | optional | Flag to resize video to model input size (640x640) | False | -
- -1. Stop the running service: - ```bash - ./stop_app.sh - ``` - The stop script stops the service, removes all stopped Docker containers and removes all unused Docker networks. - We ***DO NOT*** use the `-p` flag here to avoid removing the volumes before backing them up. -
- -1. Backup the docker volumes to redeploy later. First rename the `lcc_app-content` volume and remove original: - ```bash - ./deployment/DockerImageTars/rename_volume.sh lcc_app-content lcc_app-content_saved - - docker volume rm lcc_app-content - ``` - - The `lcc_vdms-content` volume is sparse, so to backup, compress the volume to respective location. In this case, we save the file to `deployment/DockerImageTars/resize` and remove original: - ```bash - docker run --rm -v lcc_vdms-content:/data \ - -v ${PWD}/deployment/DockerImageTars/resize:/backup \ - ubuntu bash -c "tar czSf /backup/lcc_vdms-content_saved.tar.gz /data" - - docker volume rm lcc_vdms-content - ``` -
- -1. At this point, images and volumes are saved. You can safely, prune all docker images/volumes if needed via `./stop_app.sh -p`. - -1. Prior to redeployment, videos already inserted in previous deployment, which should not be processed again (if any), should be removed from `inputs/`, and any camera configurations should be updated for next deployment. - -1. Repopulate the docker volumes to expected name. For `lcc_app-content_saved`, we can simply rename it: - ```bash - ./deployment/DockerImageTars/rename_volume.sh lcc_app-content_saved lcc_app-content - - docker volume rm lcc_app-content_saved - ``` - - The `lcc_vdms-content` volume should be created and populated with compressed data from previous step: - ```bash - docker volume create lcc_vdms-content - - docker run --rm -v lcc_vdms-content:/data \ - -v ${PWD}/deployment/DockerImageTars/resize:/backup \ - ubuntu bash -c "tar -xvzf /backup/lcc_vdms-content_saved.tar.gz" - ``` -
- -1. Restart the service with appropriate options but include `--tars` to use saved images. Here, we're re-deploying using the same flags as the original deployment. - ```bash - ./start_app.sh -e CPU -z -d --tars - ``` -
- ---- - -## See Also - -- [Configuration Options](doc/cmake.md) - - - -- [Visual Data Management System](https://github.com/intellabs/vdms) diff --git a/doc/DATASETS.md b/doc/DATASETS.md index 9e4ae55..4c9b9a4 100644 --- a/doc/DATASETS.md +++ b/doc/DATASETS.md @@ -18,8 +18,8 @@ This repository utilizes external datasets and media for training/demo purposes, --- -## 3. DUT Anti-UAV Dataset +## 3. [Optional] DUT Anti-UAV Dataset * **Source:** [wangdongdut/DUT-Anti-UAV](https://github.com/wangdongdut/DUT-Anti-UAV) * **License:** [Apache License 2.0](https://github.com/wangdongdut/DUT-Anti-UAV/blob/master/LICENSE) * **Citation:** See DOI [10.48550/arXiv.2205.10851](https://doi.org/10.48550/arXiv.2205.10851) (Zhao et al., IEEE T-ITS 2022). -* **Usage:** External sample video dataset for pipeline validation/demonstration. +* **Usage:** External sample video dataset ONLY used for pipeline evaluation via command: `python tests/test_eval.py --type object`. Test script ([test_eval.py](../fastapi/tests/test_eval.py)) evaluates videos 9-20 of the dataset since the camera seems stationary. diff --git a/doc/PipelineFlow.png b/doc/PipelineFlow.png new file mode 100644 index 0000000000000000000000000000000000000000..1933d9fa09f63d8c5be113d25d87184a7add5b8d GIT binary patch literal 33637 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 diff --git a/doc/cmake.md b/doc/cmake.md index 4c7b591..33f4a5c 100644 --- a/doc/cmake.md +++ b/doc/cmake.md @@ -27,10 +27,10 @@ cd inputs ``` #### Deploy Service -Then use the start script to deploy. An example for CPU is: +Then use the start script to deploy. An example for GPU is: ```bash cd .. -./start_app.sh -e CPU +./start_app.sh -e GPU ```
@@ -63,21 +63,6 @@ ffmpeg -re -stream_loop -1 -i ${TEST_VIDEO} ${GENERAL_OPTS} \ #### Deploy Service Then use the start script to deploy. An example for GPU and resizing videos to lower resolution (640x640) is: ```bash -./start_app.sh -e GPU -z +./start_app.sh –m drone_detection ```
- - diff --git a/doc/pipeline.md b/doc/pipeline.md index d60c255..53db8b3 100644 --- a/doc/pipeline.md +++ b/doc/pipeline.md @@ -1,7 +1,7 @@ -# High Resolution Object Detection Pipeline +# High Resolution Object Detection using Smart Filtering -This pipeline focuses on real-time processing of high-resolution (8K) video for object detection. -Currently, real-time processing of high-resolution (HR) frames is not possible as large compute power is needed which are typically beyond any HW capabilities. +This pipeline focuses on real-time processing of high-resolution (8K) video from stationary camera while preserving details to detect potentially small objects, i.e. drones. +Currently, real-time processing of high-resolution (HR) frames on resource-constrained edge hardware requires scaling up to 2×–15× GPUs. There are techniques such as image tiling or resolution reduction, but these workarounds compromise detail integrity, diminish inference throughput, and can make rendering real-time processing of HR feeds infeasible within HW boundaries. HR video streams typically achieve higher accuracy in object detection, therefore, a technique to reduce compute on HR videos is needed. @@ -12,13 +12,13 @@ To solve this issue, we created a Smart Filtering Pipeline to significantly redu
-## Smart Filtering Pipeline +## Smart Filtering The Smart Filtering (SF) is a portion of the pipeline which filters HR videos for ROIs which are used in the detection phase instead of processing the entire frame. This helps reduce the compute while maintaining detection accuracy. In smart filtering, we use motion to help identify ROIs, which is ideal for surveillance and applications such as the test use-case, drone detection, with stationary cameras. Keep in mind, if camera is NOT stationary, some background movement may be captured as foreground objects due to background subtraction algorithm. -
+
Flow of Smart Filtering Pipeline

@@ -89,7 +89,7 @@ docker run --rm --ipc=host \ -v ${REPO_DIR}/fastapi/resources:/home/resources \ -v ${REPO_DIR}/fastapi/tests:/home/tests \ -v ${REPO_DIR}/fastapi/tests/nginx.conf:/etc/nginx/nginx.conf \ -lcc_fastapi:stream /bin/bash -c "python /home/tests/test_detections.py --device gpu --source drone_dataset2_hvec.mp4 --type motion" +lcc_fastapi:stream /bin/bash -c "python /home/tests/test_detections.py --source --type motion" ``` @@ -123,7 +123,6 @@ For testing other components, please see [Testing Pipeline Components](#testing- If using VSCode, the provided `.vscode` directory is already mounted in the above command which includes `launch.json` for debugging. You can use the provided DevContainer or use the docker extension to connect to the `lcc_fastapi:stream` container by clicking `Attach Visual Studio Code`. The DevContainer assumes GPU availability. -If your system does NOT support GPU, check [devcontainer.json](/.devcontainer/devcontainer.json) and make sure within the `runArgs` section, `"--gpus", "all"` is commented out. Once connected, it will install VSCode in the container. If you receive an error regarding permissions during installation, you must modify the remote user. To allow permission for the installation, open the `Command Pallette` and select `Dev Containers: Open Attached Container Configuration File`. @@ -145,9 +144,9 @@ Edit the file as follows: ```
-### Optimization Areas +### Configurable Parameters -For the Smart Filtering pipeline, the following are potential areas for optimizations. +The following are parameters used to fine-tune the Smart Filtering pipeline. | Category | Variable | Default | Description | | ---------------------- | ------------------------------------ | ----------- |------------ | @@ -175,7 +174,7 @@ Once satisfied with annotated results, you can proceed with running the full pip
-## Detections using SF and Fine-Tuned YOLO Model +## Detection Model This guide assumes a YOLO model or fine-tuned YOLO model is available for detection. @@ -190,7 +189,7 @@ Please note the model labels are retrieved from the model directly, so the model
-## Testing Pipeline Components +## Test Pipeline Components We provided multiple test scripts to test different components of the pipeline. Each of the tests can be run as specified in the [Smart Filtering Pipeline: Testing](#testing) section using the same video `anduril_swarm_8K.mp4` as `SOURCE`. Here we provide details on each available test. @@ -223,7 +222,6 @@ The arguments available for this test are as follows: | -s SOURCE,
--source SOURCE | anduril_swarm_8K.mp4 | Video filename (located in /inputs) or RTSP target stream endpoint | | --no-custom | - | Enable if using Ultralytics YOLO model | | -m MODEL_NAME,
--model MODEL_NAME | drone_detection | Name of model. Required if `--no-custom` is enabled. | -
@@ -238,7 +236,6 @@ The arguments available for this test are as follows: | Argument | Default | Description | | -------- | ------- | ----------- | | -s SOURCE,
--source SOURCE | anduril_swarm_8K.mp4 | Video filename (located in ./inputs) | - | --debug | False | Enable debug message |
@@ -260,7 +257,6 @@ The arguments available are as follows: | --no-custom | - | Enable if using Ultralytics YOLO model | | -m MODEL_NAME,
--model MODEL_NAME | drone_detection | Name of model. Required if `--no-custom` is enabled. | | --type {object,motion} | None | Filter by detection type (object or motion). "motion" shows the ROI while "object" shows detection results. | - | --sf | None | Filter test by Smart Filtering pipeline | | --debug | False | Enable debug message | | -n DEBUG_FRAME_LIMIT | 100 | Number of frames used for debugging | @@ -316,27 +312,28 @@ python test_pipeline.py --source "${SOURCE}" --scenario 4 --sf --type motion ``` -## Pipeline Deployment +## Deploy Pipeline All components for this application are dockerize. -Scripts are also provided to make deployment easier. +Scripts are provided to make deployment easier. -### Deployment +### Start [Optional] To make sure there aren't any running containers for this application, run the following which stops the application and prunes containers: ```bash ./stop.sh –p ``` -To start the application, run the following for GPU: +To start the application, run the following: ```bash -./start_app.sh –e GPU –o –m drone_detection +./start_app.sh –m drone_detection ``` -### Visualization: View live detection -To view the live detections, open a browser for host system and goto `http://:30077` +### View Live Detections +Launch your browser and browse to ```https://:30077```. The sample UI is similar to the following: -### Query: View Page to Query Videos -To query videos, open a browser for host system and goto `http://:30007`. +
+ +***NOTE:*** If you see a browser warning of self-signed certificate, please accept it to proceed to the sample UI. ### Shutdown @@ -350,3 +347,4 @@ Or add the necessary flag to stop the application and prune containers: ./stop.sh –p ``` + diff --git a/doc/sample-ui.gif b/doc/sample-ui.gif index 0138761739331d1839f77cd54e512e0ccfdd3c4a..bf45f24f28a7d8ef960837b3233cd10f6d5b6233 100644 GIT binary patch literal 2142492 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%0DtgV))BVN@6hM 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%0An^rBSb~P! zXa*6(;dhBe)v)E1ggaYpK_n_tYv4B#Pi3w88Lx_3T#pX@hRVsimGxP_!jil!4*Hj* zB6CSw&GhWVcoNETU_ZcfL+Ut_ieguS1~;N`gm^**yHaP)_BYdsXQhnoJ%0ATp}eGX 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

nMQ1 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≈I%pLG;DL=&+l|Bfsj2bKIl9& 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 z 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 * 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]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�p8?wHe6Bm(28Sb&Z! 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%0DhEz~0xEw)s3Q`tdqVLRT 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
-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
7xNRU2w+h2ayg-BfS=;-ySO#eBB%;QFJ@? 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

i!5bA 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

HK#lEQ{={abqI7LaF-Av4`eGO%Dl6m5B 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�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%0AqD-WMS}k^evU!aYl3PY)W(~2t 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 z zHm3-2Gsa;CQYaH(n5p(!=@xd(AH^{n!|WVoaYV*7Jj!w

uVui7OfZQR3pagXd(RltJ#7%jS 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 Q7z9g%2E@~u)-_~8dQSA+`x$@^Dxcal=_YehiI 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

GmwPJ7 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

>xr2!~qV9ztEip$LfQ>7Y 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⁣&5X>NA&pTo+ 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

=)0?JOwsp?*(XREF&1(}BKf`LZo0scMk) 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­3ey)${lv3$ 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

$2 z8ljW2X@4-&iGTGXdb`z~;dn9fPbN%VS;V(DY z^WVEQ7Nopqfu@<%dlg<5Ko#h!-n?NXz_HZ3`$C^+q?b)2{88Aj+alb%e-56_aA74OykpDJ00PVPw|d) zSRb&V79`Z5)84j&5YflTk(H4{w^KKgtq?N4K`~H3Y4V6FJyh=39*nGcnAit0Ne-Rv zDf>4J`#g4gCE>BbkjZfa@w@`P+f5H30PVQS`o3!=6es6#8&t0M;wT@#!p22z43i=H zenZ;5`SQ|)p}&GV2v37ur0HU*6JBP*dd47AJs)?fsSZ0#Hwa9Zw_NCmho3@+@U9bt zXzT$K8E$y6e&e7HG`N<)pfCYJ2smZK!Vk3QfvfnD8}tMGhvXBPMyn zxF&|`c{8mLV)nc@EQ@BAZ@Zhmo-$YkP)x{@+nK-NSgp@lW*SK&c;Ug0UmoPykWs3; zTf5mj&H?}46SzZ0)8@$fOjgH(oQ9ui_WbS)KeT{OfaT-{!5quI6+r!{qv`!mitjO0 z;}FX5aojipwCC#HK1V4bVPq>lzggJvDWO+`BP8`{Rmv9hZFw{K>HN$_?@AiaBjW|N zQwjudiBNooy?%kPm*OjX1rfodqxrk(d8*|_wF|c?OSi^HBW_h(RI@r1Z)+fFij?`< zRQ;awz>NW0^ObQoE8cOcX)UU^%s%=A&jNN7UT81T^@ff2Pz=BN{9%FuJ@J`o#$VuWEF&Q5E$0lxp%E5 zhOV}wR_JtCN!$u2p_TF3^h>F7Oc!(~d&2-)v40OFu|$YJq>)N1Kg^}xa2@p{C=b+t zq%lF?e@Pd52(IdavHX5|d&afPO!=>-(Yl_JdU(#!ZB^X|cQ?fT2VVzap))*+uGsVo zU}KT#ynicxFM<(IzI1xt;{#9jZ z6C^x_{KaFAO`&dTjuwLPbn5!;Md1Wb|vQXW7ttMa6vR2oUISD)7 zuf^Z~gXK}K_fV{#yz{qDu4kvkz^VC&xdedZ)ZbIJ2*~aTJw%1SmXVOk7t( zz(0X*M>^KIbzff-orCIsK!$#hqP+r-sUH7;fV@uFJPpu$KLy=TGWpbGKYsQH?2zb! zlt9~Bg%{5eUqzwcPM_o1+b6NFTb0DJEuR`^S6lW^(vDls1-MW?d ziT>Zq>s_IL^*@HQ7`Gt(s_|U$11c!h_+_RKf2$UaWt1z)ADJmiFNq>TE1rF3Wi|cn z*?v0sjVwfr@1luhMlb!#`74>w5=2_L2<^@9rQb_Kai1Tv)n>!j@DElPlv?Z<@V`F( z5c2^=X>x2+$PI~ZT>i4>^CHAdb6;_K0@+q><&u08Uzn}@{`8w~Y)u&(s!C+g&}xpK z<1k^lJ)MSQoWtW1-C|NAYAp6nQ1-XXn;62n!RG5W-8zp!((#_Fvt`@7YKk{Wed~8} zPT8VDsLvDwd7Ban2lY^b^5b$=Qy(Epe|X=2wSMZt(Qg}bT2dYLd2e9pII9d-CQ_u{ z8J1z>!9|Pro6hy4sQHP{5BP0#&h3BZ=b7ifX+B#Z^>PftD!)MGK*wP{Eb?fe=NDy8 zr`AyoLN{Kp;#r^6Z_Q^*{F~uVVruIz*qi|Sss)1hwn2Tp0gf~duQ-*xJZ+{IQ3$lj z0Y4jWY2f+nC$n*}#~;p5`7&6&Ph6jMX-e8=yA#GvNZAg2`94xj?YURwW%G9`+wSm! zIJ@9n0h<+uV~FBxgoFrJhcf;hYSE-awi&wLtSXUkBzOX*5&T$`S@RfSAmq=@w zYZ6Pv@s=vY+h{=~OP$%-q=hE?WsOO4wo?zm&`!--02cA-o2em31U|93m^k{awsGj@ zh)#{>5!2J{_Llpxc%kK`LJ~=bQmMs}d7YIPl6M}QSu^LKH#=Bk-WGcm`_5^Fy1p0rMPy?y-XnK@fk{^UTi`c^hWOlgx2Mn`K$YwC}QP!fxk? z^L$e-emz(`F5Kl08h(>t(fwGhQ>0HeZ*?Hw_-n;>*mYj4rSI26-@4z#(6p0$ zPFeeQ>37YHI_#xi8Zs_FU`VPWIK)^LR>j(0ufA4e^!J zNmsPlZ$i~p9~QS`5<>Yy8^*5R(ZbQet{kY@;gRPm$`J~-ERVHD(~6X1g4l~6OkV5c zzn$wXh9vU2Et64!`4jwf#vMrgW`pNXJ1H21S&v*z9G58Ba) zddeMZH=xs3F=Vj9h%}hJ?Ni#tCavNoUm1WhIG{8KB%o ze2gi$553L1=sb|S1a8``qxJlC_I2|;9tXF!rFq+qrGQVrY9txNPl=bXwL$uvf$yMf zxpo!niHingx0(gD6$_CjR)49G{RwCYd6l8InnI*w*9$8clz)fZN6%!I*pI$}M9pY$>B*`kQH-UxeeQ@t9jKS0dR&^jkdve2>zCJ6!3fWJYYE^o`?-sVk-LsC_abzn^nNahzt*0OkLAT7Kg;xy z+nQAWble_c5+{*M^3+v$In41S>oh(7zI@^c`S?Ta;SE3owRwmm$0VAs0e@O$3L->wIW=WJab@ z=Le6NxEVV)B-DTguP&L3qqpT=R(za?1f0C!2o{JpzmCyt4oSxzENQw$J%!-qOlf&~ zcq+o7Y6?qBQp==~V~W&oQ`iozh6w|vjENd3e>~9Dv`7#RfSm9c_d>{?#Fwp zZw6Z_o!1Yoc?J9pX8)X9#C5swRLZVZkp8adSB|~oyk|KB`U&>L&tBI z$0dT+1U-;jt0hYXN4smoY5al>7r*$SHX7rQBoRgT)%?9wdXSxugEBtsI~Ut&5aDqj z1{EmPwS`q!66x9*vNq-WBZ(|gkWQ9)>_5-nM=sL@+vni^JcH^X+y$Y24KMV6Pl5|lVyO2zvEl(QvG&yyew6r+7L#8NjP6U0YIrh3c6i8v;A(P7wnd2u#TPl>( zN4lR7&$jlt)050DAsZ4hMXRZt;JwdA-c3QHLD6jhW9Cs!?3cxnQ85p57fr>Q#|91Vc5`7r62BRVMWG8OJd661yaXtIp$Y2io6` zV@)H4!VCw4ZbRqp#HVmN+c$;U?yM0R5ndIlk4GZ#jg0((C!JHlBy=c|mV#(z>UT#> z(L@T^hZ`B?chqoVrRGO=Og4S*~ehnhJs{eYOKG+5QsUV;TNu}2NyJs z3IwF#6Zqo{!$W)0Lzmd+IjFrc^pDK*+7q}^f+_Z&GKRzA3Zly#01Dw^8oJ^n7MPqD z^-1!6nT31ZbaE42*r;q~1vBB!U}IdcRt%n@k{>NLx~V{_<;achVd$9F%7f5yJxu|0 zRMy*Okr;I*yHYk<6%ZEF|JjTjnT}@0X2~f~s3|Z7Q-hvz(0zdSHxC2bOU8QjKYm@2 ztAJ~Hc%pE7G((=_g^p3BCZiGR!$F3`F18#|RHWZlABEqE@PLw$H~|mqBLXw%+jU5M zgL$X8B#x?~@Fvi(p$>X43~US3<{Bx^Acr@RJ7-{NiI5Axs2sb;alo0}3Yzpx;7B6# z?Yv;+tC@!!s^_cGFEfdY_l6wq^mD7|CDStvbEXCjGkjwv*N?nsy7Dph5Nlbl8COR+ zZPa9_5!EA4>H+5?YA<^5Mx<*RjW0f-%X7uqK_XPE^FG;5@0!3Wnd4mRc-(^LehOfl z)XAY%nnRF`;G9I-K3stU)*-kgJYzhR9g4}&Z4V{^Ri!i?lFbQ6^dz_5_PjZ4MiI=6 zhT2BR$56Nf#XWRpV82MyDpNxgqBItOODWI73r1>Nu~%A?FJmUwfN=#C;gJJymMqW>CCm}=>>1E)UD1q)5`7}m1(|oz)Y{LA{dxj+rdN)@N*li$r;=U7 zPb+URk^5{Tu0z(aTfaDpq<4-SMth%bkwmaU7*&Nc^vr zIM5LlWBA;F<$0M(ly`8%?ORhA2d4OW<{l{SRj0V}#M%4LV6H#)V?}{|s^J+4x4?V9 zts>Lkc$u!x=?bLz!Bgd~>RyeUvpNyRfxtdRLD`Aq_I>Pw4Pu*V9hHs;CtI?x~`I*4E1ui(CRLssZsO=aujhNbX8A`*A_i%Yb& z5o)N|SG9Aa_;H)`)K;JIvr#63^xvH{Z5+;K3CF4ZJh}&~kZIP%&oOh#e1epi z-;Q)m7*MQV3AEC^qw)E}@O`X)QLNiyGW(N=>sSw!6^s~J_g~V+1HO=R#hllMY{K15N6&+?qq~QCOQM@;k>-s)RbC zTgm^#Hlz2jmI33e1m&!x(0}XkCNwXT#|b|goQc|_M#7+))rg43R+h>koZ7q z%YOG)5Id&iY1H6(ky;+H&!2epX1Z{d7y=F6g95{nrTn1bO*VHdospy~j(C-5GGLjm zdA)g8BT-*4BEI=kZ0I!7ed+mXD}DFt!ox^(7mY|+4oyv}4Q2xormYa5TeKH^x3GbLlPs-( z)!%6n@GFA+G4{hY>A@MzD<~LvOrbcEZ1x3vwMxeQ@bxKuM9eVQrGn?C$BKqjC;TK5 z|7s1pSqd`J1R9RwqOheU+mT~kCXw`y!wosal6VX`U!teuQM5vZjViGP6z?xS6hwc) zU1KTlQ(nYuTuq$>$j|t={uEX<8{~>f1UAA_0GxK0j zcm2=;eQh+PpdPt2^u&=NU(x!z_^9%cT0E=Z2#2DiGn;mwe3?dF&TQxRL_G_R*zB2u zoq(9z&z@X>s`wk}=Pu<8b`oi=Jm#dLTkYslJ4%o=f;I_@x7{pTO2@sn!`z_~B1l@S zrYo1pR$WsY`DU+7G>kUEy30%j0-!OGTFG%0B2i8@Yd|Y8!CXj$3x9+J!!~~DB$}bY zV2!4tN;uys-N9^Yqt!WgrVPdA8s99C6y)k~Mr?YKRk- z<}4Av7cWLTT9vw=?==zN=3+q|&tCH>_ulN8Dzl2ah4o${rxPytp=SHKOb$VW%eup| ztw!#hidH*;HnWETIvvdr=eW-Y7u=MBUgT0G6fMGAywwp4?PCj_W^ok`B|UVY!FZ~# zu%?;hA3E)-ME1csFIE46Rjp40o5;0LPfqXfF;5NPeNpGz#MY1>z+T%_+9*qUF7EjG zPUa|Liay?m>5W&3kG+Aq)K8OJUn|j)J(M!y=hqP>fwcY)UUW;_IG~S1b%AXB#k#zjT*_dK~L2o-9nXSz{+M!PUUi(^Qz0A@RSsjo+FEBwCVlZv0xd|!`$uiL6{A;Ym~LmM;0dF+92ULZg24T zw`k>b>64D5f4j@CAH_erm~wjjr8!oHh{}udLHvl+L~!#4YQm$tru2CjjizUztlIz$ z6w45`WGs6Wa6R>6Cq`oWC81Ms5nL?JcR`{#a6!*Lb)@9$gE;dCu}`A^_GiOW2!>zS z!+%RB*gjzZtk?ktJRyDs(4SMOcSjb};)wltDgE%uE7wn?ZzgVZc9v1e0Z2v5e7Lcn?9P)!LiK_t!&=EakDCAT zPfCU;mhqqguk8v-`6Mlqb4j32jY3hQk?Ap{xqGxeqKo_45xq1elPJ;lVT*Tse-}2Z z1aljU;G5Ts4#sMoCplG4;*A+)@P`j#6J}+&Ceoe|ynzJAlL}a608}EK5Di{Tf)xd+ z#=@Pny^^}Q!wmy0K0b+e`80M?wtpB}zi!l)!c&-t^%29gp!KKL+@Sn^A}$nYT{a*| z`wsFtFBwnmL3=+jvOfbpyeDN_@TA*d|2_WR%bNz(MnNWFRSd^<(L{gl-N&-O?pMve ze4Q$(*QX+6#Wx|ApBde#`Sg6e>1Sd!Q^&AX=5%`$B~Ck58HD@X@j`bbX5>TLfy4^< zW7`+0b&8G&X=iYGQMSfQZoTL?Sym@Xl;wYY~I*_6g?UEr0fO&;Gba;{x44fh|ogQ;()hZqtQ4O)F_WTt;` zTMI6Mi!u7O9lihU?a0R`D4L`wo=sa7#0|=+(=*RD z7>CPw&-$gQ8WO@4%$V_s!$At`F7*TpN^u*hXp?*5OGWD(4=P8rXCc6iKM|mZMluu2 z;`(~xc`i}21@GM&QfmWv#%5ba;=zl1;q#&wvh!8x&p#tOPD@2Hv>p0&V zPX+6FUG@p;8No{8J|U{ctVPsQSz81Ew=|hH$sNvpH&t?1=B^KpX;*Tta?*>In`vE! z_bQl!>6L`0;{)VwOz_BL;Mq?tB^aA{Q-z9cLsfo1x)1>?9>fUZEF>tBA2Pg2^Tbv# z11~65z=jDynoY&5fA>6wduQ6Tx$m(n3TVEhi4Ac+Ly9q08W&*`-rR7piWAjoF zy$>m~alf6L9GxqqYOdgaXNzR!gdXH@7yAkn=oSkuq|Z#0Par_wx2@80w7q1A4g?K1 zQbF4~n8*iIS-lDL&toun=Ne~8Y)m!d9C|vo*3xKCg^X5Wcf(7}MR8d8pI~=4@1tT; zPe$a(3`klKV-zC^L@vldZx!IGz8Bw7&XzG8?OJtt+H0<&>Cgi!MMz7 zN$Q~eH;c~cgazn-WFz-S4^tn{GA6C>Ku44>(epQq&gPFQ>y6hH+eR~6z|U`0^sle# zI3^(eT))?$RVW-DSbu21qM-asklUHO*9G9lwD#j&M&S;RTPLsM#tH}{M)XG%DQ2uf z%!C<$aoksBMn3<+iyCIjRXK7Es1MN{ekCwj<2-csMVhg#Un5P(twnfTGcJr)G2yI= zS1XV0r?2TwLkBEu+Zi~yDOv9khUk1xzjO|-eskCJY1MB z(2-cme=_nH{#_m3#GyrId4*VVuoh21ah?~J_c?qSHgRMSWsPSg5Qw|?5;`)y*Q|;--azixw z(2Tunw>?>$DK`FqFwKe%D+IKN3WBdvSG11N-x9GSf)I?p9=gGAMC#~ly14TVFEXI+bZefs4Nw(C z{R|YoGX1XJbr+;JlfB>c##0?LQp86GlvTy9~-5a}CopsCzomD(3ZrY7tptRtX z^>|Gi7&OF+|Ys=B(SA-Qg3TS$90KhMxFj$3En&NsH@5Yoq;d6^?SzbaYv(kpBr zQ2E67Hz-Cn;3n+n=ye1IyNWM@%F1k~%Zy5&;1Zq6I0~TK9H6k*V+SC))pOw}7PoUY zqz)(Il?e+ofYEVNsV;|mu#lAz%C<%Xn>F`%#X;L=!pXX6B)rMNg5)JbvFLCz{8MI` zN8Fl=z&tpG0Ck{SF}6`Urf8o^D$X?qiOUZS$jVPHn2a@-4FC%EY% zyI|Ncy2EqVbnQXZ+E;8Tyt)ryft#u)GI1^?@!m2DDAnBlN~C9XTlR}BcnAFlfD!QDoX=ZLn+&+b_Fyy-rjSCo)jG-^@H%h61cWnP=^eN! zc9^w>QQ;ihd4yH+UGh+W{t~zf?z+9edFKtV31e865UgV5?pfbF640Zu2!TFk7d<|e zZ8Us%_n9yubBv1bKV{ySU03W5>y3@+>T6yt948R)hEb0hhrX`vW#r#e8t-N7u~8ZC zW$uabv%qmu?}rVDgfzVOkvyd#;*Szsz)#+ebN4- zJz$gyHQKGoYRlijTa7HRE$*`&c}pEZdzfr}7(-D}{SMH52K(@kB%QcQtH7~5FD%r+a&hcM|&B?Cl&1Oqq2KDDTn zyr|YHxVPf&(DU!^iX6qD1#X@eCBPhCJNY<~7n8nr)bQ`_uvA1gFDB;_HWBsYll|kh zKCShKBBhMD_bme-+ljdN@%NCzN2gdP1kOwM(+IGs4v= z5*hNnL4{AN7EAFS?&-uOESkPn`}gFSN9MhX%mG}C@P`GioA%KO?ZR{(fDhovC44j& za?F(Z9)Ugh(-PMDoN(oxs2iXTffF6zC4MggxL`~qe6$z)J3RgD2XE8i*z}%~f-4em z`1RjiX53-EoanVZ<_d)2DLFZOONf7tO?~6Ug>udcCQ!){LyW(_z1;e37D6eCSx%|} zan&Ku(Y4MYtm^m^!)q6WuM?4_*e82EQk#Q?%YCH^u`EaAx)ib{Pk_0n_jB5bE5$MO zOH>cBBS97F_okDoL?2%Y;SZ#XN8JxO(o+oz=UeXtnk#r1;)ZbLXUjfRa;?G&_7N(P zj6OVtV~@Iz9nOkI_~=~`)2F8DXBsAiJS2H6Uy14%aTa|s#G)v+0K)Wd)yR{59vj@* zBsTqD&64vEHdsU+Er44H04jC`Ibgnw;sX0bxX$bJCGVR}i@CY(z31htM-tAu$EWwX z=ER5sr-11qE?ghoE!J(r2!FObufJ!Bp=lftP@5Kp&GK!9Wl`bkh--wj?{S_JFy{zJ zHLA#X;NzG2PI3cJzQKAbv|jvnSC_uv(9qakX#?)=Fl5Q1%Qgl``s zm@AQ7gq*mahK99To*t$ZCrVR5k_RVBJ;!5Zq$A%2k!mM7h{!8Dxg-T+0f<#5m2 z`43kfF$s~+&2Zsb;gu!h;2jol9@;+e#jH+sED}+y|6H2HxxOKHy*Bh7!xi4YAlktO48V|kMC9G%Rk|q+@gy4 zIG>KN$Bi%-wpo`?1Am--%D-KDmuoP5^3I9z_;!2_;yN7@^Y;B1vk`|h76K^Fd3F{^ zA-6xwO>=kZcu*R9Be_1fu=@DFBnqIz*tjq~dV({6MFfjtuy22cF{N0R>xZ&ki9uzQ zHyYvCy}zop5-<#p&V>f|4=YPlcw;NajED1qNaa6eBf5pyWHi=h7&Pk@&Rm~;AK&Nk zfSR*HM0%(d^WpGsJCQ0IW+Sc6T|QP9jETfAd?9WLv>9f2)FO4)@sD>alE40(3_$;& z@5>9qbQ@Hv&9Kmcy;jF;XcZ<2Od{uVpak#>Z?e<8kS6@#d=M_gnUBJZ0UV#ADDa{6 z-m*#~`-##+mr+hZeAGX(js-rpX&I=`{Jz#F$HmD1#u~cMEXo?U3gnlM@NLT~YdcR9 zJ7s&f@|d(ef8@s?S{w3tApR>+m4UjR^mooBJHwe-EGjbxKCML0)W9^~00ThjaWu?N zuFrcK`}O#q0B)Ta3n{h6k1_XiRW^ouK$t(7F?y}LJrps+{7{f`segNNi2R0YvP;Py zr2v29YWWU6Tx+8)sM??MFu02i({|NSLD$*KrqIXN*(a*dFWuR%q<~ZF#63|MFz6h3 zsW52MIq0G=_g|+M}_gB&haUQiBFvqUlk^I z6>!GElUD&kPQg<-@;}k=)T*%B|3t$tIjS4}3k|w54U7uaN>&;*UhilLFRgY8cd~Q7${pTb3A80sT$c><@wAJU{WTByZ4cBM8|G#4C8{y2} z|JPXhqU~0!mlpy?_iTNySXKXqfBUf?PMKQft~-Sv2?2IehQ^^ zu}ZiSifjQiv(O_@PPnjcN15d=qYMSi1lu7LQ{*-%s>$$xcemx)_6KHiNVlqRr3&_h z+K#tC$GR_(4NuE(NjBBMk>~26?;30&b9ED05qCif`nPDfeI+kVCBC5N$X@T}sX)Wl z{p*l-pS}h6!`I6k3QE&JnA%RFkOPtKo6CbAAMcO|pY#Ce98Y?IeAOp?6w-$${SYW()0P02bp~i|09;Jl~2g2tj44~nA(|7NBE3g$K|m=VZ#eE9roVwO_pC%Fq!;M z@Ttwe!U-JRWSA@@xt4^`w0AvwVw}Ov&k#8GgWMeJ=QcGL|AB^Ie5y95yj*f_(Y#!? zEw8!!uUPs^f3AepFNIrm5N3@B32VXTcx3}gLetO*Nj&6VrquPu3{rK{v;V`^nhfk( zX-;O#$8;&BAM%xw#`0R}3#3_V1Fya{u`6E6^=zx)1M6?}nyp8yL?P4LiNjf$#+c(` zp>UbayM=j>-3D@^R(Ro@=~J0?3~VxZK3K(ntL#zjhuySf=k#y25wJH$MD?}PyI&6g zvG6VG?bz?(Lg3_mfZ~t&gBrG_3CZSzz>c-qy{%mu*ffqWxciTfb%sSr zix7_L%2AorKt8@t^m7+D=NAeZvUP22)=NB|rk#V#PxKV7h4t9`Oi1J~zbf`9aV}fT z8oz*N8W#HB5=DD0WEatR6$nf6y%j9$W(mjRl;ODKjvJEuV*PDtOWL`FX#U~~#77dU z?Eq%zs}m{Bgm5Y1d=QND#NIE#*KFIr;ioNv@E65-MRIPGg{kyvWx|&Ewg>5#(Ff9m zvvFt`=ky&Dgoix@N9mdcK-lZO(U@Y%qUO;2O9FP|?H)1ZVm38dmoL?v@2Vt zpuax)lUZ)nj$$(WVj-P(g@``esVPz@rPj@atlLqg;g|RI^GlS?qTwLJ5PFYBi8+g?u(bJ(@C$J;U_B8Cl=$LM0_ACyC~{PMl-Sj(oM z8581rLliNBIEHELCi2G;)ox4klMg*i5JRL9>FAG^#PewH(4jA{x2ZV#*wyd5+9jWf zoaK8UNkrb%g)%p7`$MI$UIbq2=+I<#L3D{jqgSqzU`lBxPFy=lxW+`GrGXtG>5#-_l?bD>fq24X$?| z`M>P@c#-RjA1Gz?@NGbYUaV{LOmUguop&iEVA~mnsz7N+GCtY(U0QCbQ_XYXXAzjK zPCja24%l5zX-cK+hd)-1o+=(a9LkA|8o@05)nEm!eMR~rtW9*t# zg*JLTfMej&_qGYnqmDXzi_z}1e5cnnDLX(?!c5ZuywYAB=fe*(c=KI>@S~yJ<@dXl zZ;;;i=&Jp>_sPGuIe2qmn1y5c-5(sDr0lkq&|mJ^^F@BsQ`ipbQQUX?3S2!ZIt_9S z+#q+E5Q&=(A=Av5J`OiGtv_^abf&2y89o0u#;~z~hQn z>*PbV6`sHK>~MX$ZI<*IU%WIYof5=$UyYDgH@Y`>n7CLQ@P$|qeSH*z{fuJV>arA_K=UCwH4xzqWV`3dCw)i z(c^Ast*#Lf^3@}RltX%@N7hu;sebEWm_$%I)Z^5KzwnZ(=dS5|i6Zxg;suwwVIo+> z&3-#gxR47CK82S@yit=hJ>v>>ulN6Nq`hTSlwTO`%@iFo%+NK%(4CUP4BZSVAxJ7E z0sCjQqgN`LiYi)b7FaQv+G zF77coHukx+a!hs9mWARkc_xc{LN%m6F%K2(Gx{}0BI#(e13*zxb{nzgE;sm51kj8% zanvmzAA2XtJ-(Imr$`)T`jY8;CB@&k$9RY{dTXP>J`9WbsZuoeEIHlMy&cLHV(B&$ zZ?+jH2T-g2V0sh+^_H`*t7cT@Q#xZ|Iwd|l4Nqp9VE~>4-H?7Pxe>&Fi+JA0KoQ4q zUQE2E<7sq#zTbQN{occDvm_~J`XulJbhFC}nQHBxvepP(Is_^=OaK9hx24@x`WYzW zi06Jp$+3s3f`&7lYo_e=+Z^9eEXgu(4NEFTn7OQ%vc} zZ;TJMuFt?Cy_^!XJ2NAyn)QGcUabusPm6)iq?P>9Dt>5%7fv0NWxhCNFgVNZ+lc*2 z<^vF92w{sS^=0Hcr%0zHLSa##k98ipKL6pGE_QPBc^RJd1Jm`E-q|0Q%NGA{$P~sO zo9Il#PtJUgNjav&HmMEc#Rgjs&x;Jot%%ff#s(O6zWCesq8}C(k$s{JZ%e|pW2 z@pmE)^dmNfpzgMcL0=g86*IMFV$Pa9%~DE4@rr90x*N){uo@2)6R(!!+3YMLa zg8+;assY1iBFo_$CWvyk=aIJ&t@;S(dot3PY9-jDtgXRo%_MSopsUuiOuJ9W=$j=^ zj8aPw3n{EAH z8#yAg|E*YsurwZ z+{YQ&%+vp@(2nDSzp_yN;Diy|69Vs4Qf|~xnLT@Ap*y+WP_UveNy&7d#VxGOb;`9s z0;Q($x6YtHM>C=tequWu+eq2pI2O-L;wzB?WZoX;6{AXPT4uke0HayZy=3Ejw89#5 zBR;Q#Na}b2j!T|C}u@~y2TwI1UBqE5xo)MOZGO=Zu zA)PW@5SmFuhK3M^&sYtbFN|wJy!6z}`vMtM-CR@0hSCYrbYnq90!?$y7_7a3ws%nQ zc@AeN2drN9m0^F@!|IH)-=5vd@YoB6pT!+P8@HGE?#yj8GL~q5 zv}?3oHl3|yN&HYpnev*;%j77Zt@+yVYeo#!9^m707y}NJ>b4 zbxl|I1%=q=r)9#v$Yxi_C3!wyk``<9a+-Ig`q}Eu))l%&=TFy*KfuF zuc9miZ*P=xn$cCMAgJr1mqcHKv!MJZFuvGy`7;)kv9jeEFEVOoQdDPX$s;O20ky5K zuRipjcfV-8AN2@Jv!xz5A29)aEq}z=IS7?&%bSw6jTEk^;b-Ew2;z8>dc}&Sbkhy+ zVwA8*t)7Z8 zjUIBX4~CgHS*l6VHur+(xq4~?-FJGt>2Sqi~X zv>__v4AOK8)TLt+id@4}r0H>&W@`qZkG2sE{-@Oh|1OX3{uePQ#=CbE7s-Lum_*VM zKhE@Dz-glEXZmU=`o~atlUt}M!Tu=GygD=>fW8+Y$5hHgGKOu|&WuI3n>d$U(U#Jk zJhIpb!1b_jjw8ey7p4*`5%=pYd*71!Xtkd~3+tJFSv8zFGkh0= zvKm1O{>Ln0$m&Eu4)1@iuz+&xU%pZlo&>)sEuixfN*5l6iJ1Pjud+oje(=MHWk zaBEg0pcMZ28HVvE&{mE`zW&7|188OvBbv|nidyShD*-lZRs6@8Ob74mlQk+CQ$!K; z@3YKN<}?;S@db;r&PFNX22r~3pd{5TT9}s?988L-WMy9^$IkM)6dWtVJf1j3*muAH z1yKcXr(kF>NWEn6!?=R&6f4~7$;@wf1(Kcqsvt_{>)fj4GmpSA18Q4+>UGjhEP^_m z!Lfu)Vna`P{@n)s7?@#39L|0(kF%NHKC2Zr^NAd`rX}5wA_V=i?)2++Z%8=d37spBH zy3_8XYXmx+1`|H2i~pqV{7x9wMgD=lle811(Cxq0Mqkj2uvJtz*}*8oO6S1atqqJ& zZhDS$I>b;3w+PIZ?heQq|EAHk0E=Z^f`T*%5*VaSJ4^^_dGXMgMg{VnFR=%Y|w? z;TH7m=*{O>46}xC+KIl{U9~qPW5iU0%h7=wT;SUg@|%CiPlc1!-)!G6OrX}ui0qe$ zjzicFD6OvFET!`Xzq5_`T17~grYs5GeZjEFZM5mj+wl!fzPkrZ`GtVdJsT1JI0?7= zV#Sy8nW&bTu(tvK^SjXm%2&w8&TYn(LbLY?{#^4N9u>Qx1`Yk<#;OK&6^B!Wp*6lk z6Q&rMwR_QKy7F`g-CqWL42Ty~T$t}HUzovauow5YHFP>yIRExQP7G?-ek-1&p3IyX z0`l%m?Z`MQ8-6g#kYwTguhi~4Ja6q(y}#?fW(J8AuXrywA+13;(EFM6$%VC%>*%?< z*-w%agNX58S!bKI(Tb0xUiORW|CpXa&D&sisz${b;4xc&`0$vBWZ2Q;Z)$+clSC6( z^O*qFmQC*qo6!0*!%8yjx3xa}*Q>F*SmL@y4Cv(F+=!%$W<2f5ezy(7otw{2zFC3U z%(q9Qf6%M(<+Py2!(_s%qu4BVjB-DB{p-$2+c8PK47mcczb@$x(@LtGSD3ECm8@Pp zKCGnknysSDbS+*j>DZFUPWUHv2ratCt|jV^Qp3yjYfZ>-%c4 zGDR@Wqcln5Cy{hKF}hOzGlf13gMrknN88P-eG-AzGXYCsuELD}KKQN<#F20U5L>&i zu8Xwa`AvM9e*3HhlIEhj9qirTJoODCnLI|w4L_sHDut{dL9bDsLg zQ6*D4RRJ=)_4F`g=M#SWC-a(8m;3>e6u=kT_~ZOH{@0dhTP(}jv(JauItru8f199K zWa9vKBrkyMP)szwzN-e4df-`A7Y>nPDD*jDp7Fh2oJoIdzydyut-jL+@dGv zo3PLL_I%3R-0~$=Wv|Z01>+cldWKv@z+O*lNeDBrsr-k=KtdVLKJhpoD4X<(SHb;! za(*%JQ-Ue>5p1*B!#8OhS3HYP6Bhe$B5Tt{=I*1&iJkQ~h|2sY?qGZqPAGZ$4sS7e zLwBX>*6}>ozCo&%?_eD91cAzD`}jSUX-kC?bK8X$gRM!1`!H11JW*v?`w z5`>_bEXN<=1%sdbm`T}9Zijo_1_gq&oV=cDzTx11%Vo34_U!H>q7J`1nwfo}`cnjK zi%N=wm+gP2I{&JBaN3ZM%;z?)MMm1~wx+2#C#5`i?z*o>xslF`eHAx(mun)UQ2rxI zc7IXu*>VG=Ph)<}aFrD)X*GIamQ`T|V@q^mL`kPru!&pA3f)k!?vG8D6dQrC=@^IO z6MgCh1)ZFEaaX3!4LU0Gk}xMaTcH~0arh(pe+7C3jrtdVmlQ|Et!S(~QG~u5E_#>Y zZZ=U`wwBhGNTw9cWZL~Lhj_h|Y&LMn(7_gz4lOE{!I&DlvMoGQF0!d-5E-z{gQZS0 zu&OrF z#sg6bG5Lv^G&#EA(;LE(`qNrIjOZH+`Z^I}INlmy+~rkCnS($wUw&#FMgJ=XSK9jp zOf`6YlcAbrSmDZ4j7Byo0NNn$`cpNiBB;lep=v%B_ z88Nw%M-{fDtvNTNp1l^+XY49vj5`#hPFVgOU&`w+X7cdy)`2j?h1KHi*_YXJ?|s}E zZ?$}C;*$J4JA`4$m>uSO9SIO~vPCoGj2qaK*)4-|HZd_FzpX#1y4$36mVd%(wWH&7 zo_Jx1e`(!7V3e)$^Y&GpFIq8q_staR^Z0Gw*W8xvY=mxDqE0fZIlnoHhsQChaYx*J zqY67hzIY<~Tx>CjouB5qmQy{TCFEC8Tk5kVtKZ0}Iqu-c0}|~yOc(z0tWb|D?#|!* zgfD+nu9fFVNR_D5kSXsgp}1+SVLy0@p-}dl(woI5ubr9T2L6r6>5%FK``-R3bj+W# znXR*0{x`$r3S%sohS8q@_yt8)WNxUBxx#}e20;3a=DxIPzMLfxNw&C(Ci^Y6oM0W1 z8#!s(rNaRp{%UrsBCb#4Oik&|hm6MJ3$A(29EjmaWq?%3qFD7BJ=ps+Tgo>6m;ov2 z)lxW8cjxifkkM+2Vf%wHF?d#PeUKRFT}{c#%~w+^~eYOC_G+L@T@$-t%JzZ}z`GV0M)`|;mxZ2<|n&Y`t`X*{_*$bs&! zu7SU7QidkEzWV7df`S-azJoh7ge6V$$BDj@TG#)cC_Xhy2YGXRHfXF&8km8dOlGGp zgyM0Es~?kGJc2`&w`vTz-Phs6q_VHF`QzbAJO>$J>C5xr~~y6^ z?|x5#P2#S1ZlXQ3$~Cj@IKH>9C)riK!yaZDS4|QF!4qC7cEPD($z_lvZ6`$5n z(gFL6JSZMY(PU%j+DB_DSanjWyTZ`10ZOs1Ma0Cl?nG17L|;7$)uH4< z;aFcV4T~FXmEV7?1H)^lO&X{Ig&(cid*rA@ZDah4sfV53^{CVmF*iQA>npYhc#5Sr zC6i}cqbFC>Va~@TTITxU9FLp1>$DFhq)01$G4_G~*#{E&u)0^LQjOUv1X}4nobHV$ zd5y*Gc}|$j^0?erJ!blugF*?oA!MWo8t8P||Ijjdvs# zb;Kl|^+rP}B*Ag`*`}gbN%(O6l8!DJhGe+R{t8t zHd#zLoW(&{&Zm74(wME7JGj+4*sZy-Lfi6dGRC@=+Dw||q*5N9|;4-mVZKcU0e{>M~W;Q);+2>tbdN<^z zT7EcuM(q7Ssa}M~B&G2iyx!DzF(oz;)s&0a`_&xee1-}6RKI~{B~NKeRd(ct#--%BmzRysdzMwYq(?aA_C_Bd{;9fd5gX+bJynlsO1jKGiUf zsg4gBG|I5)N|!5+vz>1jE})0d{NASdCruTJG=I|+>%4CsKP^EFp=WkCgVq^+kxdD{ zhCV;e-Q=fGX-GQ6$V@kzS3Knq{Ri_EqHu^BY3`W2?Lry7HK{tEF!FE)%TM4pHpN=S z4WKa{o#gJlG2ndeL_Cy-j+(K8?oED`&%fBF)bxkm9rv9OiJrvqQJSuL0+~PjVR8Mv z&XNbn*zj{YD%iV&PLp=gK^G?4J)8;uSK4O18O>kR`+8LTobT~AJumncv;ClyamHQY z6aB7cR;skqsgoos#(25_%2>S$Mp)5*Wt0Tkgc_X2Gp0CbM%;j3ES-ulCx5!(#*2fK z#E_@jQ`vRziPUcIE30s@cVx51N|>e&{w{!d3grk(1`hT3zaXQy3tB`Qo}+y*&ZTLj zz%Rzjl{}Dk&h1}pd|ckKn039LITXkpW*OJpNn!AhPrRWU&pxEg`L4ZzvcQj;l8!2G zh&RU!u}w^py}j&HS4h4<=U6c8H+GA^{9{Lk0;RP6^D~&qFYLS9DV-2&N>zvR57# z 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 literal 3723017 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

xw;WvD*Qnc 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

JfO;@X&yEx=G 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

XKUf8E6i>iM-YdlD74o}-1F3UlMvAhDa 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

jj3i~UeEL9 zYgG1HHl6zXa^&WdC8LIYXxfgg<><<@BN2OaN0#W1vu+2WA78*Jf}UPxygavrPu?s3 zSmPD#oW!DVug<)>c3z+YIv&l~pftSxAP4)-$Mw%uMlr=}pL?Y#nEhHi7wG>Y?ggqP z0e)9*;qR)9a8f3_w(tl5ohLv^46E^m50@i5z6E%12b9@SfBx^OXXT0n8MM*(@>p*I zwD$R#bwIMuK5s>ht_i+$Te}m?pHt+grVjg4hEFWI`%f#T_Hjlk+6XfqNr{|M^W{;O z!XD1Vs8zwPA5?z|NR~1L6IA;Dpib$5p9D(AJB*l47v6Y2abNJ@*x4w`S}^IZIuptD zm$ma34VR^l_uTbN(cgKez_+cWjThGJr+W;G6+9sN?AjlKihuAhq1zA9$@lcr*-PhC zoCwZgX#f;q{jrJDz#;Z5jmT4pAVx+R2b|D3_Je9^HTLZ2IkKXH%6zSPE5>Lx#IZ-Y zNn-s&6km+?dhMm|)Y9geUkg(zycZzmi<#ISxzN*E%;RBvi}>>}8g)IcUAS;d^l}$@ zg*I;Uh85n*f{_zl>n3ejU@^->>~y|5HTMP`oTlj;juk7zaEUX{L^MMhjzBB=9Ql z#~kCc6DAHjJV+%wiuOzDGl$R~?|-q705qCt<@ntOme(iRAI&+|t^!o+9GKTpraeqZ z^6~!xJTiap?=VH|vx{$kn6PT+?*SgVUJQE>gP4>6)^ya>A2PoI|E0c)r|>i5IT8SW zhRzwW)!nbj-!LCj?j7Ibl3%ere?4HAq-Eo4(T__uk4@ z4}_InV_1Kme;&m+tF|gLIpox+Rd0Gy;8dq1y7XCa;dkpv$A(C#PtTt~!?~tN?CL%^ z9T#W*NYMJIvb7A>dl~Gr?bX{O@4Y=S6{&cG57mfx-@#WxrxkzhDQ`NrV5?p7*05ws zv-;Y|UZX1}`;0#igKrOl#S`JftTu71Ej@`jLLaBZPV`iM8gdDb7oCmyB@qwa5n_*2 z82t( zF3ZMm)dqn1xu%XeH^-eVqn%$V$0uz1mvqbf>&62h1Z8Zjjj`^^03{qu3^$0!iICSI zHfxWJw&YFHNaDYN{+1;9`Gjr}uzJ6p-YQF6r4q zG_`U$b<0Z|!cK)|@UN#Pv|eZQSIDn?s0_Pt4l%gx;mnXISCzkDhy_6MRZW(r{KbEA zcpU(5pT6mIk><>Q*ccgcg%5@H#=J|N9RMsdl;TPDdb_r!V3`1Xr(q@s82HJTc9_!g z0IT=e>GiYparTM+Cgf{&_ms~_df2u;SdUrV_2`KLYs5)KC6MTb&+07_dd2giDzEsfqQOYwG+={v@e=Ag(JtW37Zxqkzx_ z;yY*jSHp|8()m^eM*&7&wx2&+^6IeI{^_@x)&*Zo$8Oocr0z&wQ`)jK6B3>IGoA3( zrfzxyFr(&&&+4REI=ZBH9$C^ciH?^4Lsd;2*S@F>Ebe@<-c#TS0aArmWyoi`k36tS z2^|}`2nGzOaz>^Lubj$CJ?sqgju^6ONK;~fnMuGGJH!5AEzJt2qY53@BDJ3o;4W$b zIknBdlEe2ThF;}sO=z}!-=En<*wWtcSFSH~WP~eF6<@{5n^~B(^+0P)&>4Ja=hDy; zfDWO??D?{&elF(KS<9uf@J>DDJ>QLQ02cg^l5Zn!siECkj+g%jD)j`b|3+?KIxvEl;zZ-{WXVhwIMQ zz43xqm)3ONvO`3UmTg|A+VXV$b-h_NOzF{)k`4WUkMGvi5;Ij3 zrS<|XiI=S`4$nP*DbcxGvc*=EeN_JOPMEl;X~|PvvPgd$a2u00Cc4@JnnXZ6 zzTGNwwDtHNt+t-@E63I^x5Fs_mEuEV@E}O#fb40;Gz+2TmeZa90u57(^`<|}AsI2w zCwJR&aORb`*UGZdX0tk-;t^mok;i=`I38a!`2G9`&bJ?x<0pLr@+X=^Xq!Olm z>R+QCD(a>6O;-pd;3$XdHz5Mt1i3&Xb@AQy?mYqMy=&Cy3Ct;Jy}Wtm$Yq5a2gcLl z9<|=D(TTWOVx4ZX_V6^}UG7(k!J9u4C&Wv?u2CzZ(NdCXIcwdlv18IZmeY?^5ms9O zOGH|GI$t@X9EsMQ4f$9~5V~~`XjBnDUj(Pg7nWs&%gB_~Okqi7Ofw6lRDJl4GA4^y z))S-=A1@=elPv+3QCA_BD$in9OUdDDQK~Y}hxQXr(w0lQ37bBU6YrYxU(3-i=E84% zC<1w();~WJS7~-HU-N&)xeS*kaweB+gAAL--;oaYpSiOWf-MKZ;>m_AsUS_CLYd^X zAq0A^J7!Y3d(Adq!XzQ;Hu(El+9P)usv3d|j7{~HMQ`$1aw_c=O)?QJlQ2tlCf1I~ z%}aL9B+GkU*_-;XhLH1h!}-}hrr1+rq?KJXM#BcY0zMf@ivm@tZ*jG&izKybD!4h? zdruMpR%sY@c}?;pN`YQaqe$K-q)xeN!9Y+XgAhV%L^E#2vtUw3%~3E$UQpUY!X3&^ zT5EH(m&Ho4!7BCxTGvK3zhpd!g{Mjb-L(WIH%U>3S$8&sp@sj>1u<>3d4wA4dNBr4 zbW8JXS&(r;d|BGpwceUv>j*ap#Kri0$j#tY182o3j}#N6;*V+70I5l;?|)&`fElu+XYbRp zyat|%Q(f)|LQO!cQAloBh+E$*F?@UfQ^pZ^6`7a=!F*{6`4Lr~zT;ziqWh&w>XrwTkx}mBge^~M}Fh5lMJvb={)G3HJkb5 zkBFlZKB6qT1v_1HFTO=bNjhxktUor|B{uq;((@i-)WMYef7qwQ5D*+wR?gP@2?Y{X z(5^{Qm;iuJw_x>j@mFOuM2cKidGO2Ff?c|cPY=uSP=%Vq2BkvkC{ z?JE=IP@!gaNz6t1bw#-BrU4)barK%}0Q$hhWc)~svT-FOm7QGq)8(#(AGspR76l|Q z+|_+5Dk#+W>q869Sy_eQeJf&q^Pw(zVJC9J+ynJ<>x8=gRpFYk+B)D%_ z$|Z#X31h&%Xf}#S5=Mr*Qy`5;nW7c|t0)A3hQgVmIh44(jBXV;yWL?e_XX4n>n`=? zAZ){Y(O%M#`?kfl&dsM3rF+c<@#m3!wZcq?Xm7c6X+nmCFt7AA_~J|`5p3XN+k%lg z7u{J^^*Q^T^RcXQLi@5W`pqjx+z|pP~z^}-<`xuv5E4tsXOvsb7W}5yeTxuydJGA-l6RtNd zif;!tnUbNm=kgS|6eU@v^q?*4g3n`%o%B>xaQ|GeTDYs^*^K~Kelua6yAjwUU+FZ@ zCdmG8=dE)D^se8;Tb)r0|AC^ znJ7pkAoIk6MJ4+5<6*)Dnl7L`gEC5q#VWZryZo|OIH}1qQkHmcZtjN;&SMgWY=;%v zu#)1JiDB9!rQCo0Lb@)SWi9KfYMp_VZdpsiZBxbtxn=5JW0bG`Ohzc!keWRQXTbgwxDH?7gjlwT*TE4k!xXxv1!OUr4~V< zztynV_0_KVn+i~CTxc|PQq;g)$L40LU{6=5En0LHBonY^rK9AJaWW?EM^T)ApE=9i z7k05Oxli@X>+mux?&kDS?yyB7sG79RL0yX;c~&bFP*nuliq}(=w}*@XK3X$-MBGu7 z+^C|o>sCe!Oi}m`j0gf`bQ$+_ebs^M0C06mO+Ho1HOziito&@V;s;6BTZ%$w0un&n zqKoLhT`AtTD=!-<6628o5>AiJRGySRdFRCMcgg8wAXUHhwqer1*!+`cw`PZQ## z$M+ZmUY(3sdL_Oc2}t*QtXbraxz1lFWI{z0ZDJI_Bct}|mqhR1^EBSw{W}hr27mxY zWy8b!U<`86ZnXt8Mjb-t3&vB5f2+C27gkySSj83j7Dr%DzrIFs)LER4`Iqv+rbm<| z5rSohu!6;HW!I0JT7Ys7RX=Qw=A+7{!B9PCU-7H?_)}<*fp`;4OmoXa#0a$Gx$yul zTjLQyRJ~_Qg*n}jaEx{Hzld&-iwVJKOx zsdYV+1%O>N6`4LT&{axo)A$YW#W;)?iX#Lcs9Fg?3`2v%+XzWwKp5lI4uyqHa)&`M zYRPb7^faMs?G=DWSg0ZbNNV33H$4Q1bO4b?L#9(jN(5-dDcQtEsoJ(mc!!jtBcz;$ zRbH0(Lly5Pp?jzZjsOk3Nm-3`3?Ra?+?zTJ_XH4|DAc#Q1%7LATQ28cN^8YyBsz~3C>+?QHm z?yfI#4X|JSn2${5Bd44&{k9^6E?FWrR=}v5<$r_^4P5jQU*$>bxMAQ?$P8YCWb_T< zc+M;q>4Q0SuN;P>*~m^TYT6+jwBAAKBKMnFC957gE3s2v2H55k53TqQ(%c;qW4-4O zNZgum5~V_P9aQlEWM$Pn4Z!G1xZRGG315C>(esn_iM!|;0>Fu=A?3fm#J1&5VbCA7 zCGu84fZiAL``BxvYQ#qVyS*aQ-AH`?MsW&+8!aMm-w;MW{R!72A{*6kmk1b1;&srK z$98&FO@AH023FAo+m+qal^Gwq63TGbzjZ>62k{S}MwupRwh_QxR{>s>#V|%zhdil9 z!bQiLz9qy@6BL104$(3%AHtgp;bLG|I-}2prG6SJ{joV|no}d&CY9JIThBbqL4Q0; zVl{1<`;k1aw^cJ3qR}09ACpdHy|38`;fbi;s|j#GlqE&~8}a+zq7oqJ+Z14&?t27n zn9T~#A6rF!e2-3HD8vr{Q5~0{Hw#l@=;$6JJuo)N{Oa9`5S9$&*qaLIlO=&q0y1Eh6_ggQA&3X;dS4+9x)!qWN}6j9<(-1=Z$iG zlXj8yu8L$b4JYR=r0A@)gQX5}=ZoS5T4`O;WTlDfn-?}?#EETXg~iofG0f*T=!t%H6Ie%dkG#qV#*dF zOU3hKA3++M)ircynA=~ZQlhT%I&2x&)hKsrT100Zw?xIvGDKGa^p)~}zk-0jyjwm` z#2utWTWB{nXOUdPrY$zfKlw%w6>O>vyIC$;&pUFe%Hx=awU2hqvDfH^`^YH|fO=(p zUi51cl)Qtcf=UFKNdTe9hw=ba#@1QYH@i$|$X1$%cBV|4uH{EQvYV$w*(UsA%6M&v zMbGpMCtz9oUsu9cuG^1WT(g>FR43B!dIXAh`2@Ou)4#(AV)94r5>>W|Z;<|uEPU|c z4oD6^_*`Kiz6BAKSfd^_VoJ9wrD;DbQSd(b5Y9@IFT_ew5e!j;2LQXCi44pazawJe z?`-Dd?$yStL^j$v;$|rs%2d(dUs1}Zm{P1Py7@4IXp5a@5TY3bRd0?B3kIikJFy^F zK=M>o7w;8<$!B>BJEf_i$02$LkKlmYOiAL9sNH8LjVQ^SW*28wS3{;$iWsnS7O58? z35?qA*swg!n;k#ftO6xb;5+Vw;&lHCCa0?w-?h!NCc4pp0D+=!pCc}rd_DqPSoy3>3WdfOmAga z$%@yIxN_9pRYAb%XJQvqCjA1%m2K(dn*OlHiPcOjrvldQ@uvMj?zfRWUU0B{+0E>j?epQ|{0{u=C{(@>&+d|HVL*KNpftSL@S6V| z6(gISTYuq;I><7u)4g^Mv#7QE*h#`oTbV47r^&U*7{i>Jc>kSikX>5Il3ph0nrA4H ztjSL7plb2!y#11~fg+0ixp!o!+|)f*RIsQWqJ3-Mnf*ue3oUQcBy)k0&EikD@x#)a zYc{LC-wQ#NF@6af=#BpvCICYIv47|U>nXfZlW0+$zE2IC;LKIGj+O!#^8dDHih>L{ z&A#ty=^rWpNkLh_TR^}ffCaytR7>FiNcR~*aXQO7`X7LYdeSl+Rh4WilN_TD?g1;* zF4JvU#cubB4<1Vmn(k0mbU%vgL4%2sRKNo4eq>17Gz#VC-nkMKOzH+78cVkZi*DW{ zSOLV0VM1&$nK=B?0UX;uq~H*JT$pJK7yvwOyxg%`@gYDK-I_G=f5OdIFvxLRjb$Zj z)Bc+(u2B^9LDxw|bZ+sp?5l*5>eFY%#Rq-9NwE0hHvMw-%$qc0Q^a!ADg#DlfTS7C z|6&SV4NmIfVGQ1p0W-=gybSAttmY4!hS%BSz4KwVm}FX8ZB3o|b9*a3wUvr_{1&c! zRiM2>RL69)p;Zw3@>??-v?oGG52-61`1zG`$BdlJKSoPCLZG66siOf8)Y`a%Y_o zxp+ig3vAy0sP{7357=XyejF!gKHPC+$LTq=Wg;oju(i1SQ`mEHxJnycLPkhw^4~I2 z(X=!w`7g)fM*_%E_AR1lp`f ztse1(N$_AA?fEB^x!o=A;Vd~gFer)kV`%Ri3Dtg`DoaHilQgUr_;eg0+Ew;E=<@+l zg$sF|s(StOEHUXwK#I_t4Nl0tx%;MVfx8JhRR3oEP|xfUnIGRM))+MUOwQ@ebIYN3 z*}?85f}^!pKhOg&Kq;h#D>YrOw}De+}LJF|D?H!G)gG@uTh?N zpg>}9k}IG4%4_9$T8GGQRPg-p$blT=#fH+M!?nAb?+C;~XxdtD@`jC(?IjSOy!4LK zH!+9@P1|DC_gwtSTWNz*8R3|VUd^6Q0h=&bJeNgA0emh5c(V_jKcdzwR{}sRr9BJ{J0F_gpJS9WJ0ZrElUB8L6H77#` z!3cOv8GdZlgk8Eq*imkb+N>td3+ioIdXshoLcfBu-JT>Y(Ps#2(S)eyKaG`C-^>E< zS;6&{s?1d_ITNojX9INpoP%9IS~G6d zEx=^xUYa1n6ls9^1&6i&?fGc^HV8nrn{{PkRsF7-1yd(N3X(;bRpHFnMjsbasYO?O zVWT+#g@52gfprVRgMAjY$GUCb^PW8Cd+Aa4G*m2?c(bKGsBUWM|N7)l$qd217uYtu z{&nJfFJXA+)v>@QXOF!2Pi~r=t!|4^R=Mwf5ppl4p2WjYoXi6G#zG{)&6wuq=MX^RiyDjKET{yI4`JatAv zCxG;?Y2GW=<7UVJ>#-2|=YMiCL6e5hNPuC&G>_P~#bBg5O;*=Z>%TPH#>VgYoUXm` zJpMrG<(D<@A8K7XR3clkE3`#`PxV6I?gAKjC z?V@w0_(n~(P07%n#K z@|fKvk6I_SA|S5hSPE*rw?!h!lsH9M(d^T(%TpO;K#<55rk%lq3Lmr!fXCHeuW$2<~W0K&klTz~e1o2F4rPBUb zG1Up0Ce9fyhuz!hJSrjHG=V=h-{zd``({+(P}0GP$gr%{&ku|*eyu;n}R#4?m!VYr$GHcH`d3 z;}qeTJ-88uRXt@Dmt!2EkF@Nb>g?MdmmPDtUotyeaw;`O@|x^vC7S8gxm@ zt0{#Kv!4b`#gXYz=o8Jls*(o`x#|}YMSJfS7=BEFNM}>Q!Lhc8kZHCI86Zop*~(_} zpt|^FCm$WBV!x+un71%mmPU}(lJk12AGzS=aaQ}r!g&$uY^ zenS)j$Bwr%7ZjM?>?wYL|QP~er6`nK7S*oM(V1O$5OJs)YmeFK? z&)L2WU}&(HMdGk7au*p`QF6zQQARX}ItwT;Y0GHml*drz5QYdo)|)MGFabzqkB&e9 zvp}T5MHY6`q{Dk}H@6a*Qo#{zR3f*uQ%hLo7aTJ2W{q>@@{?dVt%tdb&Y;%w+fL(0 zF=P+`NPLD6-OdjEA_zVXstr4?v;it@3+f;%7#~0yHYG zrfPh>I9?N!7Zjnm1)wpyOp#7L1X+6!5;o12@@R*(ncL~zE?&Oc*CZEvU>YB;Qpc8C z+0~34#m|<*Uk@h2Fx_XI?W#E^egBgn587u#a*7OWJiMdd|*YZb? z_yw>)85IS#6P}+IR5_L4_Fiftqr5PuQ7p6_0#tUcl8TQ!@YN3ZH;jd={1tKm$~!8% zE6OvFqb{T4DP^X{)L&h#aGP1M<5PmMd`(A&+gxb>h%f{r2aD7`ZuWNjb6ooHlfp^s^Oj*@DT0{&#c!T*ZXS{`(zFnZbm0Oi_EUEFy$gVojT{;V-%> z_&MMC)tYqUK!s8B-!|!&pF;;`s+=${m@)yD!9`y!YqNJg^K)ie>3TZ?07H(#noVQ* zxhd)I`DY(|JkB1YVN8iY`_Mn1%xR9?^0l6=XZO09!Ec z?dpx-Wz)GK`U@yjLhS8u1z(YV+p1K;j#OGOIbcR%oF5s<#Qkn{dPs6y zZ$r;ip#@-QEEdXZh435?c@{cu_5zYL5Us$&jUi&)9fk!W=u|izk2tgit0Ez-0q4V8 z!fK1@GG6@UwAh}0Icy9?K1R`rgjCRw+UQfz_@baO7egO)$*oelhF1(QM4AJc=CfdZ z1aa;^Ax6;Q>6n>MVeey2Nf*zv2Zw9JQ!f7iWN=>2tG6aP}J%oM1 z2ne*t0e&>gycJ|DwaZB&9aY7HCgRQf7^p)e75#1ln{qh)3!J_Mqmw9SWmS_QhuyQ2 z(%z+Rw#1w&kRF>xRiq;PrtQXPI|y@{d3ZZ!ALVGF2HGK791IdirHb-2N=DX>>|sD} z3X^hC;A7W`8zk)OZZQ@d*x+L}@cX@+_FqNpff#}$0D!~O5CQFn^oUv3V4pEWJ|O@K zo_Km%3@m|pjit{qP!L-HjK?DIxj+hln8xO>K)j}HgzZ0I3+%Fmxn-<{>LHU1ZNRBa z>T*1IrchM4A=;mqLovE+>&bd`ylmm!mChRmYb(0$QqK$up!qmqxoS5pug0BQ56 zR31cm4#=FRM}t zV=^y9ynoEFZd0ye!0HkZ39^b(z38m&lEQiLjf8B-vZDD3FV(q&sT0y))bupwL_cH- zAEuJCoNE;gA=57Otm#`|p;|mh*xlWhWK*UVh~a69+hNw)HaidM*crg8=3WDPo>0oj3r zB4q1$7f{9k1|=b8Nktbqmwa(OAIkxYO#>nfFopq^WXgi05ZqqP{5HBnmBt$SKk(R$f(A>rT?o`TOz6}*=5tRwwBNZC0c zv`NG|#klY?9zjik{9JZNZ@CAuWqhGok(| zgz*KX;!M3$9qc?2JzM*Wv$N+!YmNMC(Ou<`WRvWXp&ge))2Q%m*k_{r$pP`-P!44Q z^-VZOwNaJ#Q=$E)GB~KZNhHJnE4n~Sw*9xn8QbZaW52?k0d!RgxAsSP zgmZ^a?Fnjz?>du(?!NointEb_5xP7U?)2(87KnxN%SW z7HXJ}?!k+u!gtNqVrLm5|KOqXQ?5X z0dBL7N!LVNbSzq-$2Ct>203cP6=0Lnb~OHg03A{V7^ER4pC_h5LW1&l@bH$apS(z#ms1asu0aC&613B9SIX+%JpN)rK5!J5!Jp^69?iU^2ERYb&u5;_8c zA|i&Sh@hb82g)m7e&4w>cg~$N=j^@LdKNSi>K1)MyxQ)8o#Cu=!Uu}v+w9ycdl<`R19uwijQk z@@jH(U1`Tn1Ria`JfcmhNu|S%XEPDXBxa*@9fzt{B_J=T5fTVATuab_)zL8>IzkqH z8R!{|znNM+RT?r*7CR?rb4JcU1B0exu&fZ&W+sZk>M_QMD#EDbmbF3*-kJ5(A9afb z7bvUPW2T`R`Fh5q#~SUdn$+D4Z#l;wryZySFy-h5a7hP*70t(C$w zl<=bGkGG0PXee=;#C!zXN|%H_Za&PnPwk+bzOxhh{!JTgx9#%;k^4-Vu)?^Btj4lH zf(?e)a36|}Y$QLKbj(vLJhGL2N#3u0F&3s8o==X)nKleUf9$Ehg(oN1l}`Cz}ID=unS;zK~U(94U}a$3$>d5_{24xGQc|*b33kEm@X<1kD1=+ z;S(HnIQI3xLDVK3oDGqN0!3gJGaTjS6#_8#1P)v~aKGxItJ5JD`CDCnPu(=#_uavA z{QA_-NCISQUro%(UXVz37Q~r|l)nz=Ik})o7Y%pvlgNEN=HD3BALr{Wc7lUzk-&A3uwauQJ1fp2`2h0tzK8ANfhdp3e89d z?t91u(F`v99oLrh1=ZCI933#)->?T}6-)0ISKx}qJqQuJJT@Tlrq&W3Pu}+Wpu_kQ zRg$ihr@A;4;w$-cd7ceQ2%1N2jDxZNgBNbXzKZcHH^eGiqyr{+) z-JCcux(N8V3{!<(j=5?+5_;XxgcNOpn_*BWiI+N=(Bxsk^(pbw!az8W1Mtw``E&c*mE<2*R7VPwEKM0PE;>i%94P8Z(8Yw!Vr)@BTqNb# zLP#iD6FJU#|MW)hi(5kS2ixglCLWS&Ac@CQm(eahMS(pJ4ebjz`uS~bvLGuyuiFT-=XB%kn;U`O0WGV2nE?oU)IrWvC3Hj zmsNmuMX<{v2OeX7-50+&s+98LiHRBJb^_TZ)w)#dEs`hoQ~?u4!ko*-6j>CyHc`fZ zDp@IR(?4L`i!e%)Vgv!eX2JeHGA-u?UPV!>)%@bULyU1*dnuFB+Hd$dM-Rm1kDrF3 zw%k%v zLJ~?+%dfV7yduBR?|GEW;yc%Kjh>W?>!{k?z=HIF9`L`+R2unsdD9OuikmIMZC?)xOVKDS4YgRZ_DrBen0(Up#ZcEqf0jg zPh=`{9g%NlBF?-nD@ixfqo4l>c>cb|6E*_gYWK<(zsZ+vzA!OuUm?>vcjWA)GMSt= zU_hwS_rAl>*RY2kAy@Kcy`3I81Ks25r-gY!!0|K7#b?6b9(nim`Vn^a`))840Yv4? zp5FU?vbkwxQ)Zt!f!^3^46^h6Dzbj)e0}ix$B&^Wnmy8I1ort~HeF_W6oJML!z2wH zq)JQ26I8w6JF$}f9^;gx$H*Ky2qPZJFC>eikqUZB;be$VWO$I6l84VYXhSgEr_%2m zwOm>1I$bTpKyy&O(l|0E^}*Tnm`^nVr(z&!`zJ{8l3u0bfw#ep<}L%SSE-aZV%`c8 zt=6O`4-+==;UO<^SCi_S+Q+kA0x*eR6 zEE3$#z**$rQTezy$9&)v*Xx^6Qre@d_^BrbA>^d=e(1!8Iyj*cpe(6b!$z}F)?Is;>oG- zZpka2k-t`Li<=64tBSgZ)wLek1GIUh4szT^Yi!u%LEXi{h2f7Q!xnFgo2H%lG{&ld zw{`m*I1gojs$2j#F&y`}?#hsZKMF893VCEqi-SmIp4RwZ*GfA*0DGIZg0ctfhuib18^t1eo_zw2&T{$(0suF1oY$mEO@8O~JaEk8do^ zUa0m+x1Ts#8Wjwqz{GbSQx4qIZOHdt-}W0j4j-q0I}i&@SjPb$HfRsqA8war+fN21 zbzh`{Qx)gN$ZkTNQ2-2C#jEOiQxHiQR_u{*MIC5atGT0`wd7vyp0&aeK9Q;(?x^g4 zGj7T=*xvt@eLB^7671n~uCAq{=D&~P|D$KFe-xnoqnReWf!tvVJYnfIod*^ikiSn z71SRFr~N2gmdK(HNg0XXxw*sDe7|!0B-i=Qz}7>(LwV>uv)?efk2wf<>;u!+E5LfS z#9qJJ-)k6!yiF`zHoV*bxiYAL1lVP1q>H_Vsqn&r`^%?Zg2+cle;_>p^7&w0n;35u z#KEOAR_H=DbkL=wX(Lq2g>~%d#74sX{N)4Z)8#!Huu?jH3f|$_GHo435(hwoAjD}vGF(hcV9Ob-hP1%+lTCh7d~F(= zEHyd-5Vlbjp&d>ZhH^6eXe-QzUnqL=;Uiel1%}^&V_&XYNPIb>AQa#+qK=4vfVBQ8 zp&Mci`%Z#6Z`K1ueuHSDE6WiJbG)KA$oRdtC0AjvVs2K`tK`v$_A0!9LC89k>3|%c z?__|mn0^$E2QoZD2Z{SoFa*Ctij{1zj1FbVgEZO~#Jh!I70cH93Px1TBOj`94dK~v zto%<$_4Ba!qxnka_K&fxinY|sx+#RQen3z&5puWe=%dzH!G{WQu!SHxoWBSfp1%74 zDkLnzz0P0xtH4J?`xn)0MB%)k{zRMQ04u@gpac#;p3S_O&#$3prMhyEKoCJx`>l@u zNGe%qBG;w^)s6xw^erv>j zlNpceZ$Q}MUL-kJ>jpdpCV=uAsN4_I~ z1ks%Tja0055Du`TAc9Rn8_PM68I3xtZq~^+Uqg%iU%193awR(tbwvgwP-u zVq@zuk^6f{5iUQI{74xVXxeA`WWH-3m`7M-eKqZ&oB)ciYAyF`0D~a9q7B0Lapq9X zsF?7DLRd{kj6C2|Sdd${e0Bu6|MWj*s{eyn;!d*TNMh0L`RWJRXZg4CC_qYiyADRa zRv@<+dA=pS4@_mFRB~Jkj+^IULO`+BAk3*|lX*>%x{Z^>pn~6d%GqZHQX6`wge+PH z-HqR96aFsVE7`TRm@A=bVH*QTq1L1$%xr%&|V499f6eX{X=G#n#k z4DK7?C5an@t~s#V5M7@EIQvNf5+sLii;OgG08l16AmIrNBDW)$?SOO*3A~!&aeW?s zkU1qvn~XDP*n!LM#Af$!jg|zaXmRZq*VD~8#a8{edg|1g@KPnd?$}M=$Dhm9gbEwL zr0tjcZf*_?CN>*@0;jl+Cj9F}7{E(eMD`hR%cMspr%r#w*akE`{x8A`?sfgk9@ns3 z?nX1&@~H!v;o-@$o}>=!ukoR(3tp27xbo)hcRLEzL|!WVXoYSzv6)sp`M3 zX(Tp!&MeKIRo7~#CDN9LipzQw0}pF6Zb{D3R7YPNM4R&R6ahfl4*RUIF^v4Y46M55 z_Z;So538*J2esKp$8Y4crOvb^FEWK`Ahm6W|02_|XGBb5}S8vPHkt{^T z4JOK$3r3qAgQRY5-)?mhva4wn`6skD62Yx2g<@+H%N;hrooE5<__K z1I3mHwnR>lpzlKx%C5!j-vAK6bEqnSq_$XV98hd-_XIS5b20UviZ*G?$OT5LabOH}nt9njH>pc#taxK_0Ny zKg6aRgcEEdo#a31r+s0SQP>AMh7?UV;+ols;jBXdFJagP{aHWlx>efwhV+dCWd~?! z11F2_?-VxEo_@1KZ?O&++iSN?*IC;oTq!Ja#bnZRGA=$(TO}7YjWO{3X$yK_fJ_Gm z(sL@6;)YfFXNo#}>^B?kG~=?&ew2Tv#(~|0k!opvdx1(VE{rx>i}aAlTW6+gc-;C- z{UK))ftrev$((li$NXbj5^0U4F;c0WR`&NjNKGnsjD%@rB`fp1i*X*j#PF5GuxPll z4x^yE**=;8(E&&tYr|m-36ukQSaT!CMkbv(69f<2t|`Syd>Kf1QQ_Eh9$=`n=^ft?6Ij()dS2}+;?Fjh7{&+%@K0M=Q97lR&C#Tim`oV9mX@xN^3V$}|0euJ{AE_yNHN@ukNfGytKMgC8|) zcZZMt=UH|cN~es)U2#jJgvU)fp#7HwHrx85ixY2ZrkzhtY}!s7MkZYd@BDrsZL=G# zuby`OdZLOQTGCDqn0`9;6{Nb&XY@R3i53>OdfLo-**x~LgX!FcOZB6cwo!#EBJ3br zY0&AGmOyqm1du@H8e?Q$@W>hRkT?l)Gj$9)m9S@t4rAM?TDvsU>CMP2?6eeX4RN86 z`PGFPI<0H3RHD48J=xOWfrBcqn4k+)`4;7_Qw$+{#sNBt5Cu^r)8lx+CZ(4%4oOPx zIY&yt>VWo8spq005_@BS1Q~QLSbe?jo<*5C|~%ZdB>04G@ODt%vIQ?0u2fNbHQa0Bo% zPOCe&?Eop&mi?R*NI!fq*?sBAt{KyILs-TcWP+XN)Vh_jF~l@VOz?%XK)sHxz;>$GIU zPGdFnEgku0R+2~;+7+N5=&xvFE4I<$Jza&($->X5xSQ#TtGQ!*+ZU=Nv5EXHf{t?@ zOjA!li|+wIwx$x$P}W?S+O!>uR7W2U?_(Ker5m7?-P5djkY*l)j~|I?Lx@eFHIw6y zQ|k(Qv|x{(po;0UW2!A1_QD%l1a@X;^yH1Ww9kR8=c-hVgtYqv2}}q2&ai!pNrK8j zv|C}N)Yrq!WA0wz78RjrV!W?zP>n z6d1yl5#r(Vn*lKhCC*z{f7t<}xF3Nq*<0(5_xxU$Hyc=fWf0l1vMCR=*N2nc)5ri2 zY~qXcmY42E0Ia0TCTZ8&UP zyR>5Ei6%^bYc=^s96I^{I?aPWjgM7ni@$%(9teM~6qD6L^=DJTvwNzXjpE*`(FY;gn_ll02E3iW#p(d%aj zv{hk!bY{kj-uS}2c`&!Ok~ib`&h;lK_Jc&IHJutRKx6a^oyk~LH1lEz z{)x4votd)&3Fv@#WIvFYXMR2-nNmv%m||NV$|tD0cweu>khdX$JyE%uhY!GCzmXRgVt%j+OF{t30G4*#O{`QnrLkCyS~V`(y< zzF>*LY#*a*09_soIF6xjZQpJhi@Ru$Hd2dAefBbfnRIdbcAZh0#WeMq2^^r|hV5_{ zOct8S?^ysOZm)9B&0GL(~?Vk{3Ew zoLl=10aCp5?}K({^Y^HDD(d5R>uSqOcViCeE0R7Q`g50}2|#=R5j&8is^~#lFDZN( zPecAy_gs%fs_DeO(mlp&Xn)|UCRqr!NVZPfJNuwHBEQ6Z(o6RNXD!7n1v6<*x-RMQ zzx3~Wv!4!l&KEd~?u{y>0}OO5 z9%o2UW0yN0lQ1jKv+3^K$1Oqd81hg!FVPqyKns@Ly*X*ui#puh970Ydho%ro@rUD7 z^tben{7wPvbCm8dS>X)wbTpK1%|ssx+`))D%`EKuLEMrn! zPtT{&Dv86}S=`XX7B_FRwM5awLYmb-nzxhAzAgF=KJFa+y(GE@TvPHaH&(@j<~(|t zZAbEhaC z^jor%AbU$pR_=ci?$Tyxl$jUVu|@N&K}$nb&Qzg~?0E~vu)qd2c69i4aox9(PfnK^ zMgM(CKKyJ9mOGW8sht+Q0#6?Q+s1<(qoW(R@D|~aF4cvmjf5r)yyw{U)9+z2T4~wq z@SY#R%{<@*IkqD@syUE6a%;x+e+ya#QEd&^0di@*zM!ApyA&-R(C}OSS?%9<62zPR4R0Hj&|wJMF(ey2^_V*nOgi6` z4_Q&9+m*$o%N-sGo(itomywNk$g^u)tUX?T?s;d2{ZAD|`4hd7?i~doQvIG17bW$% zM{YNIwMRBi_D&Qwo_nU!I%xg6P&=nprKBjTZ}fJO$hEDp@rquQ@`c@%&0Hq_>DdoO z&LcDDzaIDc`Fj(>=T|u zaEXyz>t3y4^EvGkk32++31O{dexbwt!T zh{{v5lUxVCa1-< zOnJ|FOI%vq#D{^vnvAj0xgEY%DDi3?#shJkF#rN1P|20DE37`X2R`}v)&aA;F{OQ8 z6*Kty^8vOR_32R=);jsn9LHH&z;P$@si-B=BlFk8+1#z)aJZ-yzyQDXOM3)*dzA-0 zbCus-SA2B#jQer7b-jTDd-*4hdwfTIoj93V1rxKbt)WXnFf=L|ePQy91;V(J-E}(M z-GdGir1^A_v#PH;5ORZA9MSOUvaX96t6f8e9Xj1Z60amJ$MxS%`q|1HoE?i56O&vF z@ksh+mD@Bd(_ElkB^1j*ymoP1ZxvM~8?)X?DvQMV{*8PvgyiWfta&0QzFon@x{gy==0vZHU7Ize|^5N;dXw5DFgT7vz zexDotHcG!#r)Kg9(csnCx;I!AptETOkTFWkNP}sq+&7pg6cmnW9mFhGp+L^DC6?MhQ{H|oFjY-pf#(j|h-6jwD#ngUiA1vy(57xR z)h6@_90wvANI_4Kk_F3qPE3shPyzr#F0l+cW96Izv9j|lmBjrqmO>eD1~QPGB|`<^ zQFH;@ausE+iM6mB6Q2H}3}zb0fM2B>J{s39Xew6L3fXDB#qaaPuu($WqC-?)fP}*oU*Q2J+%)}j+~PO{u*rFbto-5>!k5HxFIJwb z>jRd@OEbAm_xBg>yBq|N?HQ{NZUVKM139P5SXY_~@&b&MO(zulG4Xh&FXjl-0=4@# zwRsza&@}PEM6qK@4Sd}=737O7w~1F$svluOLXezl;RQ)488QcNBd>V}^i{bFC9pNu zXL0vKCDuKNA4kZ3ao$TKY4+h>8OWR-pV7}riUe-U#oAfb(X8eEZ1)}JHj7-Dir?p~ zEZ}GkncCU0ihD$g6Q%jY&!}^th(JnMa9NVXEE%kVjP;G`i-lGK$av6+o?7*U&kpiJ zCIcf@p$f3$KO#^pQ+sWPZMgClSs-Ww#2@q@Y+2);HM%3&Sh|cdb^F1*ttoRuk;gDy ztHt$_M~JAl-xWszHPLSvtX<{#>mv&3ScIVJ9Uli1`2{fB`-Y zF2>uYCmq?{nx*Z{@)Cu%86ta7i`)+A#>!gCOPGz_{Ts)21P~N!2Mr!D|#+b0_XicE%a}5y)pQ-wvD*3^@V^&(t^*x%Nf%gpCd@|$u^~0HrQT+xQRSGX@m^UgGl1XAn_~nI{dR7rb#MP ztRsW=g41S)`K8XAH{=oo05Q{DJNb2{op_bSqvZe958K&6~(>(JUT5(DOMgC`hvpEz8T;okbE9yT>4-o#+ z3Obzis)IDOgMrl5bb3qH0|CD~mim27#{kWvxZ6JB>HUh!jkK5{-*bW0w*pF!vm^i~ z1&D*d`BIVr+f}$h3^4bBs-^e-bg&bV4+r>KX*TGHnBxvG7MD|H3pyxdaY$|p`(^J= z68@8Y3oXilSf1Z^)L-pl?vtN_$LSBuAB_CZC!x1ryr6PlD4~Zv6b#kFoP8o>(xv)= z4Q@U@;F<$=M?@p)-G7ZD1wk(*3ScLgxC%*OGN(xhNN|;akk%~(=09c&zIj1`oQSqG zj^++YTLRy@{2tBXX^!P;?_qwdCau%NOtPzuZ5bit?yv zgV~vb3u8nh7^jbCb6_AQK6#3EV^G>T1-e51?nLPQ0+LXr2+smTb{uZtm=cpiKLeFL z0=2_9x*0mU)j*qu(Vc38*)8Be!!+&5+3O!>N37X0E4S^7V`T-qYFjM!9GDa9&$yNy z6m!)NujhS$#>X0t+BdH3PiI4>5;z&DFnK80EiPEu|k&!JudqN zBuxfIe0XzyfO0|ly(l5|u9ga#lJ@_TLTSRFq1(51b{+@>ty z^Zs?&1OvM8WUL$p9$`<1;#_RIN>PG6r%JloiotbxE~jVNqQfXVJA}6+L|fuR{q(q@ zK^(>JbjU%-ZhR4hxNO!trqq9XB!9k@3ZU4ak;?d+FbsZ%gBMhhTLwy%yb{)ZLkB;F zcJ>(*Q}6+tXj<$w_JrctVxpFXh7WiTFh8bU>8D?0tIh^5YVHH*u`vco;ti!ViLMy) z*u-pM9KHNVO7CSE0YGUqM(4GH=V!I5t|Smy+=oM8Juvl(RbN%m98KQu@IbRyQU3+v zCy22Tee%vup)r_Tcphh{Ag!5+*jA%h0>HOqYi*JUpv1SF+k)&=0XE2cC2vh&2CV7v zEggZ*gxxH#<-e7biGTt0Ly;9Cd|+=!R-Wp|)jI`Sl1kX)RRP$$jZ^XVyNTjgol!WB zlGP{eHVQvx%(*BHvTBgIw0=rvO-_C!Kt`h5_)`zi ziM^tms!{n#w%DT8D{jw;=RhOuf=bWXXK7W71Ze`33k~{#^O!r!i7Zv+YI43cD@5cI9@65 z5cpxkpxMDLsTMi}2YCC8Sxv?U^V|tKp8|biEo@jv>^=ow;tp?e|B@WfOh7w=KB>74 z$)7>PLeVXWcxWC&aVq_Zp%C3YU7kV~Y3Y`oINO%`wXI-;#)ro&F|frTg=FigvZUv! z3P;I)`bHHWz9?Ls1>utu=4s-Dm9PA(vz$S$%J1AOsW2Y%wHC{EF(n~~X?r6liKEbe z$i9viO5Vdz@6Z4axB*y=4qfU^N>*3WEwbu<;eM-?*cUy{o z2qcT;_qa$aU6FnL;9bw7PuyCkE-B!P)F-$!i!5&Lp;0$T5`2H5aOQN8jCNhBoL#zb zPb$hJ-ts!uR#d%Ai%cn6M`an$CUcB=2N(s=>keNI%?>;4t(; z?UbsQ4Xi=?NG-gYJk2e4n+O9gN@=_8YtXC5g z0!c*(#{qxefeKo~YZ{IYUt&}5NW|2oN2i=XP60$aQe%PLD*k08!102AnLM zMwL*ZxHY%Z){((a(3n4CH&Q}`x-SiIk& za7K~WRr7^n0sXE>=KPz7d9&zfr`t!vEp0Zy{LUHF3xc0hYVp#moV%w{ml)EJ7-9zv zIjNzh5u)ou5e{HAnX<8tNBUxX&Yr=t1*bJ_RrwJ$+K1>G@{x}m`$bfaSzY+@%lmzp zhG48fxVNkThVNpVh5x7k>Gr7p?okW5qG5$UDm8ep8_y%pKlv1hu>g+xn%w>(z&YBY zD`wx|v(tXLdFAbmyEZqk#Rqki*|MlRV$1&uC-7@;vpwSuA)i|C$(nsRGrTz365?jE z^`W+}SE0Q>80BxzL}_tA*HUA%HHA5;Ub!G3y}?yaUK3EQ({Zy*t>}x19Hpsxe{KMw z`;ZZxpOpQV!|&im8+yFF2x+q7Bo=uOqDZ5EX7Pvs8ojRF_Ln7;|e z#!ej|gcBHeluF>yW$VOM(BEsx!+sh)wO8FB)Rl_64lDkqedCL1WdayHNdzq1LHX`rOnQvcCim91bI4wQk*gesuJcb_zw4_q=4%E0 z7r?g`Pp|pi`&DDrxMq>FHhgN*sku%+@CH=*>(Bb##H;t>9mj^9+AM@|IbwY2!==Px z{cVoo^|#eWWU~6CRlz_W*79l6-i6Db6K>lo*=ef!?H+RtkC_cYWWhB1M;0zc<=mM5 z%(hb})+wVb%}y@pw|tIa?heki9lN+26TMHajWHThnD<}qmw+|F=SUZPp80f~TrHw; zDD+p)76aoU>=<(`@7-x5(+%3Y)%&1TX?Nj$K!JvCeEZ25x4_$YpiqkK%}y*)eHP={ zm>X{BJpV2R8g#U>&)|?H1;4PRrQ|JszzJ7bivRl+XQ^ceLhuqV@rO$Lf0ik>f0#LM zR42OPYg#Eq77qM_q-c|0APG9WB`*9Uf(|6J*8Y1WcI_xxoA=!?$}=8{ zxf}JBA<$28tV{KE{jWy%Dq+$`=qgEi?brJvLA4hQgHVWZ-QoSaiE)?zMCdzscy=2W z|2$*1+S=9GajVA`uzKXt3vUn3f9T#A_YC(`1`gXw~qW;gO2aa}n1Kc)SWR;51q62aW9y24GfMa3)Ep09trh zMTf+@1R5i{17k3kx0YGYZLmKB;|=LEiW$igg^nAxbEKGozyG_SVt1jQ`8L>n$VVgY zdFjE2+Em`JuQDMe6TTLsipF2#!pG*hBG}~t>XvJ28wdii)IHoI;AN31)jCJbVU?pG;=q&O9+@P|t*X8m4LchyFRnlQT z@r{y5c^&c-zFf%J2yvCEAfy-TWGSqWk*C0bMoRE)vJ;$h_wH3z2tWJU^t>MHU;0kD zL;KXTqnsb@{f+{{ zqRlk#Zdhrfzu3CqDQd5{kiO<^{&y@(howKub9Ho0Pqy|yYc9b(BCXENx0jA|n{v>) zkxWu^TjAsztEg2;``3>n_!RlL`M3wQ%Xr0yeehZjVe&Jro6 zdhKfxdo>9o7C)vHg#glK1px>I2_FbH;^{%cBxV4>Ml)Ot@T|-G;^pZzF0Xws_){Li z9M_n@SLZUm)<65r_-bH&@qQuMU6Z@ev}|(bcF3oB+rhx@@r1B;MHlB2VWl9+@=nTn zn2lx>b8*D@19Aav5_0mLNWSmvg)_#4q(+BzF@@)aN!ZC2n*%Dv8yT+siK^evMK#vH z+V6Z=xy)6?_rEsrlKLoDPv1OIF6DZlJOW8*%kKGj>n%BD|6H_XrZL>PbjN@Y4y=5X zUn!GSt=J8`_w4(VQ`X7#&$wI9cRD4)oj;C&j_%Bk`65l^PVVOYM~oxr{n}#x+}_{G z-1BF8Ry%FV%;KQ@m4hfbff#ql?rAMsg4XL97i8X@x>CQ%{^p5^dj-gCx5uekc~KoJ z(Nn*bl560rv6!H6jzsEsHToOMVbJ1@U=Ym`KZi*g2a$<(Kg5d)mBO^|AndkuMQ-%_ z6MvX29AM(at`0*|0T$xmny$6l&7Nc%r4;kR!kjDQVMWJ0gw#jTjKf>LK1ti%az@Nl zl%^jfi4RdUDC1i8fYkw$9(e=NG)tBS_9-U70D3Yb8bs3UYO|KZXQSL_!N52vz_3;{ z%?9csekrs^epNT;7O#R>Qki6Hqh@_IDw61`sjO!0CvrpctD>#ofQIwLp6J=uI9Z}^ zk{O@%;QhuwS9Z&5(Cl9ZG_A9kdYM)mPV-@LGNJ;L062GZl!LTVVe>Hc6J33Buuj>;(Rx_9uww3oQ8F64{Q&?qnQFbl5Pqc5^ z<#wlAigo;gQ;?Ym^Q=VbP&&dq8r933o0MGzdT^J0U>X=-gg?$wveqZzKGwZ>(cppP zV9jXMj6Sxjn!Df6`PH?BvU|JNdo_OZk{d_6q+U*QO|Fl>Ik~6fCKjydhy_-zy>3t^&gu$2U{H(aVD=A+GMLi^&ZM=YuGx-e*{hx0J#@na@y$FZU=C??3YM zj-Yui5~ZFEWUScE=;XLpEt&4|l5ESrir#d3+di$la8SwU!}VE6`3~l>UC*@-UsL1d z#31{xf>>TR$!>m_U&%cHF#b9GO6UK0Nr#4`1*!?FJZfIm9>4_D#?R=$}i>CbKc0_Y-HCem_8!8H1L zSk2qLn%mdYgXoromxWw|07}ZqwRy?t=w7oK4NG9HLhj&A;SBwC|0A}y`xkCxR{u}q zlVI)o(1+SyGqy#>S-K33bYyLq0pS~+^OS0tA zC!hSy{~z<*$d}wYv%&5Dz`Sz@{j+u6O%T6aX%E^B`zChs4dg^ymw0FR@*%>4=`yiKtwzNpYAKUHEJpCv$f@di=H@$tO6_gglQ<`c`(*!| z&rjT6NLhb+tb2WQn)|+w@n2N3e{b-;MAqre<4HM7FJk@&)BGbW?5$HljNNzrmB_vA zUdOe~?7gU{zL5{kNs8FId17Un+!AH$>NlA=Um_bJ3unq5+P_hWmTO_iZk5S+a|mJ= zek*;F`!p{(Q?rtqDPH(^o61<-4qM%>U-g#nQb~s?J9QP#O9hP0NIZIvJ^!fTJD%%{ zcsh=5L?W^#|m7dmZK9Ho&2~4ma-bDO1g_7l}Qmd_rn2X?D21M6CmN={73U>_B?R| z^lO46*+G$Np@^4Lux|3WvmD|yL$*?Wde~=VkdBPa7^xf->xjx&K51Zi$=4h6)!)ay$N>vaPU55cmrRYi*I_-yiDe(=w%;~I#zY9 z4UJ1;8s=F63KT0SQU2_%pmY4an_G(*Pe;hxnzB8B7=amAO_157RsdaRAo~c_-J{ej?iPHy(S{x zY;oLIG881|1HvCF+wBZOKOz55<;M`YMG!?oq&^SJEqI#m&T7yIHbd-RjL|P& zX&+yrQ<7K}Me4~#DQ$V2fxMuMuV5EjP|#Osm?f&p8R-`g5uBG&(@>ME`*J-)~U}_hG_D6uy`O|Mf+ZCr`PnBNqme-u5M?Q~dT}Bp2q1bIyLt97%4O ztS1LI?IUeNk+A_0S1H6~J;`#Aw6Kv(ix@U~UIh1K6JTTB|2|(<>33^O+M^7AS)MT0 zh+mQ?tdV2^l*9Hs!Bbwg7$m7)CT7OLZZRZpQZU!|eDR%M1mfvZWAvf+wV^FFxD{)= zEeOkF3HqJ5JVZv8vM=BBLES7PKH*6H6nGQ{!gUyq{d4kM4<_`lN5A%+oeU#ojDM`( zz!uBPJvpB8&DTulyR2_oXdg(HXmS4CoAdKn_s>{q^)k^aipKrPw-L2dgqzt3j3>J@t5QXe?gda~ZgR%bjl7;x z#@7a=xt!S*$>ca%a#CUPF$JDQx$ED(C$z#|MJhocS?j|agYICksic00q9Fof2 zJt^t%z5Vw4_w(Q9@!8&o>v~U{WNfzuDUSzmHKJnenG;f)FW zMK&>2V8$XFh~?&S&8CJc2nF>9b`yK|0E6oQ#&3RjJqNmE2o^Q;<1grz5h2)16Q*B0 zga2X^is~(@fcih!`}+1m z*CD2=T8GPc4>V$JHQ9aZ#6GW+Mh9z-(Txa#8q*&1Aj@3ydD~}!2_z$l9JsHKLDF9n zEToCy#9{tO> zOC8^XhYXog-S@iGU+B(e)UvVhK(qGeMkRV5I)E0&2O0TfLX&ny6ySn?TY@OTTQF_A zffjuT6WYYR?J*WTWTOZ&VGLtAw^hGyf;c^)zmiR;7vs|=%ntyKs>$ZDL}QIIyR8Ks zdGir%MP^F{@UfK_Y!b5Gkf;WbBONG zC7ZNgFRyxqbfr%HwwQT)a|2L6m0;Pk`M$w5M%DzL>uwIIyZBzE)XOtK0FCN^mS4%e zejZ`lVwR@a#DeIwgD(sf6T~pKq1?@KnysJ8UK|3Nze5@GnM*b2@Y{%uIY5JW0LV%W zZvhhR@K-hfYVOsHobX=5t;K(jmYcuc0ixWfw{i4YDPL#voL!LH%syXY6ZW9}?73r?7-6nD56bM! zM+8M9)>%qI$HLRUJtv#1>E4-MVgBKV*pH6Sl8qF=1s*ztjvU{==lu(^`7HhRn^*5% ztNwm&ZaFGQZML&u`G>yv+u|3{VP2&eRpIt-`N0K7Z9Isc$}vvOGtSG)e)}vrz@Gq)NsN|ErAE(WXL!3)z&+m92Qa*dk&|!~% z)hzkOw+V}H0*K-~!xJX|3w?4sb-Q4~IGR(^|5r#@iy!(k>c6b!FWC`N z4(P$J2`S@_O)N&;gd_d;{r3-Dfa>U5fXgM}ZeuE!o4_ck2r8+@xjl5Ww@!wK6z_V7 z$g!I4znnXcHmz*mSQ&n@&Mqp~e!<8wrYycbw|C)q`_ADD|7(HEo1)IaQ3S`1eJL9+ z{BH0pEz%wLKl10x`$tj_;+^F~KPo}8ueRYZVVJ&d%XXYTUT51X=+rO@l8Ln*NN7Ry=V(J<)`&;7s3oy_+Cx+3Uj=yXAyiY zc+I4J_(sLfHvHqt?~h-5hK(m96Au2EjcZE!aeYNc%q3Op?@RITZysN@_UeXnCYwHI zQ|Zmmetxh0?9Ti5=z<2u^^=!K^Dr;}hS%6h(rIkpk4ksHP%z-2bWOI8R%p(aTe@bg>S>3udQIFp5T7n&xE z9B<4{7E}7{rb^sja;8eDGfmdZ#qFJ(a=)d~KwZD@Bccud{{bioQQrYx)4t#SEG7Cy zh5bxCPTz)1k}U;2c<)P-Ad_Y5H@`@#TA+C)RR`vpUfBAr-Fml=qMc8Nn6?O>tl6b4 zq6WD^960j%$D|;10AeD(VP%S>@7$h2mwv(?M1mwt(o(M<;g$g^wpQ@M9ys2M=pJ;w zHxei-2zh^O>_oC&)dpGHfB2_9-_(Ibz!J^AQTDB8_=(T_A00=(g`Q&{)$nzNxLxaL*q=u{j?(6Ty)_-XCjf)hKx6_&jJcOq=Je zcW@`;LXDcuT^34w=XF*LGeB=04f+xudyaD}>q(#7vkd9Uz-GgOjT=p` zY=Q$>8~m7_Ugs76^cd{&2kmNpU%s`{bmilvs+?=bqH;|guP@*WuiRihNql1Qsc;@c zy+67IsyB7Zqz}6xhCP1w$KSj2O-nnDMQ$ilRE;|NPE;TWsOYbOWT9ipF=zA1>_O^T z%0dx|YZLHbmF1V&ALD$u(~??jvUh3XsBMl_)PIgSlU}2B=P-`95z(d8o#bYo?{iJp zBiA9v=+fC2F<^}QhsGmMsBc-K$L@w9f%9v|3#_sKD1$QZP)h*OWmGj$6z2Xuc6h+$ zS)QoVW6&M+$fZl^x_;T~g`xrF*s0tf-Bicde?(jxF)u=ycJS$EX8DN&yy%dXlDisd zQs19s@x&upLMnKUC${F6Y$S4u7gO?Rwp7G+OT z;M7sJ(V-rZ`6qszdk_#7F)(HEoBP72u@xN~7kFTZ(Ys=$OJPRRzjW-R_yU@Y2pwpQ z+aMRG45@7$@Bu3&_y>gl_%OFB_K^*pXzO?&!rgZQSxAH0Lg+{f&jwTs$;$bHtW?Pj zB>WRL<+w-!ff)@hz5EEqh}+u3DHqat16AbB-37r6;l@3qlg7EE0()hG&ebJ|0~%Po z<CE!Y((Q=@xzBoTeaDuzhvAEElP8_gK2ub2`|#qNCe< zB~XV`5@`OF(ZA-#v)d_i&rh~p9{Q%#D@`o0CMc=F^GDdF`~OTDJ*)0>Y0)bUPzZ2} z(O@r%OCh~3L0?Me$vA{1Td7@QCx zR-7?sS{<&E4-UVXI^)W-vElI&a%Vy|xb-wxs0RvHcD*bBq$C)txIIVpzZJircA1VE zOR-)lcccrupC?*_nLvheC*kjl1s;Pyv>S6}D$`6?Z&nIl^@qJ@v$n?G$3pzCIuYZa z6m%igs^_T1K~y0vz{H&bw;cpx?=6WV8|Gq(&fycW{c|1RiKIPTP)RkFm&zC}yO{618by2qJdTD)`aAER+4 zj7nl(x>vz4zu7Cc(+(M@kAN*Eo3a!!EqAwHvNr$3>G#?;P?TEIZKlBWnx%FOc(7if zcN>fw2C0Q8nKMi>U>&EO(sbM?&~YjdWbGgc@qb8B8%Ax7{tNo1F%_n5J}Wd`(!e8d zLX%n7bMCOIzk0@Q-m8qYCXU0^F8JlNo!f^V9Nn*9qo`NG8N2`!!rxGx`z&msrne~} zs(#eJe|kB+SL8^-kA{Z=M}fPNxFndD*Sdd8O;vS?N7cB zCYN0)%@ijRo7SzqUQsf=(qO^(fluG+CWl>nmO%LX0NCdlem=dU3oBgeb%|%s>~ByJ zW)YIwzmdDMFWElb`>w5a;m_G%`P5ULJg9ZjxkAVlGTMnp#~)F^Y|~VrOrFZ{0tFK( z!w}DGa=6DrYzGh&3T(p(zD@@pJ<68{r{2qe-BYF7KiB<-f(<^lO|gKPqO90241G>X zT(5?_Qy4vP(LKAx>!~t&`7b3rTM5fkqJ|WhN6AT-vXZV&g+B<~G!`83{9??;mDu4S zL=QZ#3y$s@f(EKNJ}eWutp#~b#pJMT;75)*7`ay@x^~A+mZxA21SWJf5&SMJI zh*d6}Pitrru4g3)A>{J3@~!O@om%ditD5wC6zo+s>K@A|m`!!uH9M<#Oy0%yCy!hKYQOn{Ey@KL&}~1 z8XU>~fm;5|bWU1u1~nkBvS3Gqz(~r`?Qocd>}WwYx)zFUk9N2ZK$@O&vC=oHH%y-HpCgy53^0rLp3^?YQ2$?;!chp_fc+$J2JLWAHz19VD zZ2|R+wq9w1*|>RAD*$y*5uOx?yazxsD3yKv$fg4L9%J+#P4Zk%{$ldJ<59a$3U(io zz@SX%s}c z26mB#$WtIAg0f5$Fx`2b@rxEw=R8iZO}9@aAIvswRb$5~(4*fZHC+h*Mtvc_q;e9( zWikDgo~<$@O5}ihk81etBJA)UC85t8^XsBuonNl3KR*n5M)<1D!rA;T8!fnTR*vbLaJ7pR$tnkH@ z*APFkg;E_2fE`robn&Y{;%e%Dh7ZGhB0Tq6dL5E@VXLz7_emIr5_#j?sp2GrvzO^7 zmt$XoYIz!XwzM`^0-xE9MM!i?_%PfSCx1m#@F|Y}8mKW7u_%S)Pz_97F->aJ!8T|} z5VF?zgq(1x!TVAi61!hzHK95Gf}~Rm(7C|Z$+6G3#GAi_o5qP zn`^e85uFBl2d43nx8GyNafPEeY{VvVn6crrD&OUoGM}(4)Jx`-zUhjGnJBnBW|E0v zEw0Zd=?s$4RZ5*5T)Si@R;|&=xv}L?Snc+<-3ODQi7aR-3wq}#W{=VUY-3i|v$jyt zw0$>X@dHpe1m-HB&y|Rpnhf~KZG486>#G38kk-S7C9T2UJQyC5V6>pwpY`Chbup%s zguc<1kfKDL2BQMGwtAEu?uUR@%&c!YS-lKs(!rvW3PiCcr&y*_%0=cWU_0b(M-#H< z*@#`rxFaAt{rZyEitNGJl2{+qanerT`JKmHV97Z2cQwjS6T;;Kxj26dK7>Gl7*L=g z0NyG!#8?4ymcycDOh3r~V^o)Y$Y}gI7w_A;ALQGHxmY`c0E^3*g&|^jK_i}_TklcX z(v6n>#H?;df6!pwL}T2f$YQn5>vO0UfX+cVEdS&A>o+gISA;)%c<8zN-dIwk!yQaq z4-$V8u|t75nX_vT1v9Hby*=siqZRzIes?zPMvkO&<|NjS0v9S^1U}GT1M*{4`DwR# zIc$}zE>#JL=H6rsDP$D*u9avx&aY4bedYr#{Y-5n-2dux|68&3f20m=!9{q-YEFak z&q;a;)0H=Rhb^WNM^?lt6uK=Si*T#RCx?hwrQ!=Gz6>Ln6I>mxn$$+b6z_t81e_EUSogJdirpDO(?H?eK z8hDx-vP0HhT(o0Kv}5=^7?I357ID{w55d+rjnSM%Z2Vln&O|p)nE(#xtG`dV;jcvI zYrt^az33rOs{E*dc3|NaH1Yu;Rt?7W#qS^?{+DF%yin)MkeO8%afXlSOu}wb=`NQy zrM2lBEz)uWYaIXgD12QPcGV4ZXL~}I%=`4Q%WnZX4NS~CCZ?0+*LFfDUkN{`gg21T zZz$OJa_kHXd%q`U80M!%N^kIhrpgd4TyDMwrCh*`N)Erdxuvc7;_;}f-pyBqMc9wZ z=BqSq{|tD)1mXhDA7Lor#lrb>%w%M`>`Nm*!8~h@2rg{+%CVx`4w#SYgyxMdI#N=tvbkE z-%OKzAY~SL`9vH~>id>7CAsoKZGTdYn!v4BQBcF$&#d<8fuKq>@a0lX4X-bMGw#`T z@QuZq-C2Ez&1%#a0CxG8PALm<&1K(q4LB80)}%Rr+>QX9ht)nXP%H0venMG%FdJ~K z7^V4qk`p&&Jnl%a`Kj5~*>jq-yMR@R?d11sEfWTO0Gtaz$^du&c?-pj^*nwH<^u*w z$L^Mnq2yyIE&wq!_Ouj$VFEB*z{`ICFRuIzrvczTf0i4$tTkpQ4S7r28Tm#PM3vS1vwJywj#*lP8W)nPvB z5@1!45usc35%VPNv{CbkPipV?G~F+(+}Ac?gDmXw@qV3KmoP0#SUw3oq>PrU0~B0j zJ_VU4Lv}I`b=-`RJc@aKDmU92jXz0_Tj%@bw)+eYEm0nJLwX3-TkM53P4y$pa*u3R zB3fw>I1b3*L;U$bXAQ_)20W?(m*D)-iY6^deZA>Xi3VKDC-?tA@%iv*HTHbpaPGYi zdG9{lBV!+NGZji5`&H=Yv|NkJX&;6{U;f#jKfC82N}mFUeb0Q+#q=4+`8BQa!VRL_ zS5}{-Ay@#IZqA|Gsn|(*(zEGsI(?H;&08V9{0V@b!5B&)*e^xtg?#uI0;)T_GxvLU z*I&CO*RgNa;8O`VqlexH-@0KzVlO)@pi6$h%pvd&MO~&cuF<(8W3I$Nadg1=MTkcAd$+VRo+nQzH_u^YRfIkNx-T_*~-L0R09dK z&f4|^CHDgh8+En%vd85~bz0}PoKBj{3ySQM9Mi=_cq>s?`x1xvFP?#Q@^Q#~CPFT| z_6GO1W$NaeZq#MyU&~GL*nTxCdJ*@YuU!Q#4n2(YVeNajd$-X)$uUn5@0r*=G~_iJ z6e^o>x-B+U09LaQ(cGDE``$=3cn<~QGz899gP$BDm%F2?xF3Fh{-Ch@ea&)X3&{F^ z0Nrs?=B`dbNO@Rc6E?ue=)A=BA6#aTD^_t#89Z}-LW9|P6?1}@_*RL1!AG7XdB5&P z!5<_xg(7ZW$6Sn0+K`__ii^MB+d(d9{)=+u9pKwuD!pPn}D~)_HN5$OIUw*7*=1;*5LfzIW8L z`-=6o$=Ky_|GcHS$I)w?>fD)~?_QrX*%yB&{cYE&#EVXUQ{y`t?`H5xKoAIwh`C$i zu?GZ-xs&b32hd|7n1`O!A(mhp9BrdWAL7%uBMnv(@d}m@wmFuY0j?|Eeq(FzqWl+2 zUgEa9jkqTJ27H65?`BQ)&+AyTnk|YTB5wlxxXLLyo;pO`h1It;pE)r9thex^Q|1jy zZq}elTkh}3#n1iaJ8z#H?t5{0Yv#LK86UdlK}M05L-MIhY&UPG(_UF&r}ovZd>q%A z>HNC)ZQo_W(yj|-3Y`yHWLf$ItJ!2TV)$_E?TtnW-DLqh6|DB>7lY)QebrH#+INGt-hsi_0kYsBmUa$3p4I@h$DivH{Q98ZB2R7FZ?X1A>+ZU_k(Av;pZgj8 z76%pV3tkyF1W@CQmW5rlh#bKNV*18gVxxHRDQBbD|7yj$O!2cBV%Df>KT~tzb#P5e zncfUO7WzPJu(Ky;#ZCBXh;7Y&<*8lW<^`iF9ji;66Nug6EhRyZS~!sM*q1+pF(J$G zKkES|bxRXalg-suAe*B~Fw%jfQRUm##U|=l9+6K=x1b9prz-zyl%6@zweR-R`;IS63-Cp z*kYGn!%;E~O9v+72?U6QBvz5pN=-fd+C{|1(ujDy8H4P+wvDG78jw{N@-#UgMz~!n zm@#Ko&t1*i|8-?ug93HY>-?zKhdY{kY+K^a!BbN6H1TVj4XE?J^dYN4kmL2~(2`jo#AU%7OpBW8+QfVOL zAwE2a1v2WO0hEQl8jV>5=R4*Qsl?J?Rg6beO@PAu~R*l>^|W}s3)Q@ znGvZmCv`%pqx0S#{CdJfEX;0WE1EMXHEC9N+vv1jGAj!tR%Q;lR|{@}Rzwjd8I!9U z$YqIwso49>mkZhQb-S|$bY5OFwosU$4(27It`@B8uu_ATUsESQt7G}P=y^!+9~KJ7 zeWg459%9l#(p$@cI5te6@>nSrtL$|mZUD=4uum-Bksy|PIr3ek5awc&w5zhKj!OfX zd|-m&L8NOZdUrYb)@}vraQPsupD5FXzv_dl36vr~f#w68$Z~#Mfb!(M>GP`(ri8~6 z{&9ZI*yh<-QR=7e0{HOXB$5`2TnosD4k;u2wAqBfG&azgM>mmit*JDY4uf)5*ImJ1 zEerNw%mVN)0dP7mfpBkVyFY(ew<>5La+3B${mG>)l&?DQt_ik^IY6bqXtemo>xZwf zz15I*&g@gCFsdxjd-GB)!XF@m z^;m(B3u>WB&oiXB8c`OnL0Z~?u=-!cq!9|#Q8A^}2knXfetXNk#TQqPLJjHwM!MPj zeuZHgYpo`OF~brW>AaAJP3o0rv^?3QVM(b@FNXV$Bw8%u;GrJ1)HFp9Ud-uoZHcx& z5tC}#q8&bSIIhEFB@}3{jhS}u1KDEH=C`9~y!f9`I_r(h-&aEm&Rieay*@nfWX>0p z)*nS#1&J7imV9A|6PQpZkjn=$ft`>Eu)~rPt~c9dytkdOuo8q+aC&Axu^G8dQ)Wf` znck_c9XT2hT2vrj)2UaPJ=9&m>hFl(1mtf|FJ3j!U@MG>h2V9-r1#xegh|^wc zv`;{(UJ3DgO+b2p87FJS4#TUXCvKMj9OpDARW`@WdX>Fs2=IDeP@Buk_LYlCQRRsd z^?Fz30l)JUP=`MxSPZpR*OgV%zMk$8NfYVfhw_7b>rs*=EvHAN?RYKN=ymSf$4SuT zj11{I9zMN>|D5Tz(7cjn`VhW4?AaW?)oX@Tc!htbl5r~044Q!RyvLTCz5I*th_B^m zE8$UyMAPNg<$r7t)H1^1x=Nh9wMqO=wmR-0aOz_2oCu%IYE>78JjO`Odatk_$v$WH#8@A^eVY z7}#tACrP`kDvo+=tAC8uZLX717+@&Wt%!qVf7xz$_C%uDgH>>Er5*|+7??KS=uvc! zcV$o1L9^Ako;`R4f8Sqn_$*!^13fA45< zT27@F>>?Q&Pf@4kD>oY)!96tU<#9m}%EOB0jmOE!E-=@je*eD9<)-{QsFz=a_|Ctf zCLMQBLHr+`Q-A-v)4Wv@1%#{6eH!W0zEwqf>zh3;)Vvy;an_1T*4w=9j2Z1BD9{3b zNpv}sA87K)!_3Mf0h2}v@`!htITZKc?2qrmr!Qx~DN8`ZcS90N^?X?lg;hR2%zi*eC>DAtQUieIB{oS?J?fqDHn@OYV@qBwc$bA;%&J~&z@U7^};DcUf z|I@lp@gR9|WkfYtd#8=WiC1%M@3^+5Ehu#%Dx9H8&m9??BlXUZaqP|n6Y35E@Gy|x6Q;vD<*~>FVlirNm@f6fg_hCzI^r!DHIt;MbDFOYmGgJWCr3;x_h073T0s85&7? z6YOs{dxmLu$uC=!yu+8<2uh?29pb>+7JX8&!@Fl4lXc|?L&Xo@8!?$_C{x^I- zcu2g31Bv88?K1R3X!%>@kXSh+jI}JjXb8{L2<&kX{Lc$e7JzW-R$Gc0rW%BzT=h}{ zjO2P|dIR?A{I#QyjB6NIYt?U7QD*zMf_IL2u(|=mTmh71 zQbd8+Dgh?6d`k+%0nzsJSLxwx-uJgwjkgpYX5AL&cDxO=OOsbiYNY8JX!h*wbRIZf z4TCrJRzv|D3IwQuWslo?`Yh$b03K-24eX8xcHjw<&>~k#1%)3>t`_V@_XSgq$Ht1+ z@|`I-px$;fGz;2=LiYrA?z#j?(YPFFLA$t$$qP_jhS;kb1ep~WD^S!}Ach7oi7l|7 z1$rQ8*KAf%WoFN-!Hn6G^(^Vj&$Zj?jijB02M%>G_^{7Suxvn4M3*#k_GaD^-1=KS zPl3!VhEKI2%?#n|M319XWhq0F-@n?L)t z9@1~KE?o^xr#A9G8629G-f?~DaSo2?B7TTHeLU^~cZsy_qrLxOtKXmOKLrxUD(P&E zdJF7$)rn)~>=@DoyzLdIC`j4f?IU=de(kQypEcFv`#v z{O2kQ=RhMglF(;W5iRoE>ga>jg_%6C5;xRpb_&4}hpWNtSO|r=+~cIFS<4YSvB3WP z{IzQBK|tiO1orLdTRXr^92>G#gIUz$YiB`L9P!#Efx(VegoeMj(WM*QuaZf6Yoi`C zp*NbjCNBYFcomBi)+RKO3B_z7L*TUpT#;@YSYUGX*R|Dr2$OMIG-3P?mOq%QU}QDHt87|8WTSWuRCufEvGC^PPl-jR z;rJ!kwo~R6a-$WOB&j4ZU(_C<6i3kV*Ym(})k1gtIG!QG_30_)peVd4-bw=X8Upq{ySv>KevmIc5c_an0o0f2w5r{!=jk#z~5!;i@4|ZIx zgO;7%bnjFC-D%AZHoz!?gI_0r7u|CE?eOw2UfT3NAHo4tnVO;*`D+2kV>C%u*5|L& zOs_4-kLk$Y5D9$~nt$$Cms1nSfwU~-ozq94e5sB#CRO=N2$P-7koSLis)(=J-{$)6Et!I$t>6rN8Z76}}Tsg6SIQPW{Z^Bb@JE%Z12qk5w1zwYCC)e=4xtS}TF5?UXR6x}Wr5DqUr((py$k*t3>D(9PDuO%v|0iNb3(8DPqcj&q*x)0e@8L;-ls%_C;=s##`dMCp{D62 zemLDYkADF>H$nJu1w2A`W7l-YE}ymFfM| zb(+h9ZAR?n@Zf{b3_|*(JT+FkXdfDAd1qH8Hmcgk%eV8C$_kFxHg>$8zqzmAv+FjU z{1G;*lVu;n)^ixz zem&FK;E}gU4iU{Kg0+?VnOFvd|&5N-+>kI9Y=eNL+1G}!L(h5HZ z36W2~e)3n<$8hr3$za8=VOcbGEzdub# z!$TMNjQl}J`sp#VjvbI|T4->K|oJ*$-{EqzT3N4UyI0G#Yg6y~=E5p%44r==PSe%d3}^ zs_{Xa!ukxg`^$7?e!86m!sUZ`Ur=h1C50DxPrQx`j(o>w6o|t+ARFQ#QU8gGK1|QO zyiOs3I#z%--g}Qxi?)yQoeA&NB8iwBA$7SS=F5mpw0eO)EAJmhc z-+ucrU;5r<^CA52cTI53(6InE%xVLCCr;-LlXAUhc=9$K5wK)SOPw)_12;XaF$U%87bQ0UU(cnr)oVc>aD4 z=AZH5;qga(5hhlgCY(0PimY%tx^eY3o3v+V*9OG}afocFBemm3#-rq0`)@oP>pNe& zNgF&JdLAG8Rs=6M@=Z>7Q9Bd3vB4wyLML+};h~O)c|6+dIW*Kn*RO6+0EVL^_SZfP z3ZRc(`PONMrQHdn3B~6IZ z{g)^`K+CLou$gnGT1?u`7xw5l^Cv+ocOa%7tdcNWdx>8dH&@oC-~PF>F5{t>?dhyH zIksnVKHaiCd-&H+Te(2z&5SSnx%Ct3xSe;T-_mrVuHT0k@S_!=zQ7IMbE9p|%rDj5 zk^al0+63hHvBam;;U9Y`vawT>&_L-@EDH@iKPeXMeKmENWz-o!@oeO~G=nn9 zI%M=?_tBDqQtDfZ!FrFY6t~BoU7cOUl&Ow$$5KI?=s`xC5H_-ewQ?VcQR$xvg!c#K zGlrw&4eXG+m;>@kfH_eN3 zu{Ltor{~|fIVKz>A3YFNk%(6&^e5Hq%HHbvoa?DgyB4e_I8;_;yh&;8aC@v<+9{L< zTSQEB;kIlW3N-PL8(9bOm)jSROYE0FbQ24gghkF@G~E}xN52}5`!5Yzm)bWU_=9Qu z*cAQLcLDPK-KF0nnNO&5?I)jPnH*VowB}=8cZu^K2CAoRueppgD*Ms~>A^PPdyTYZy~IlfMl#;G(Od z&}%9iGi->_-_$DIEeVP)P+^Cx-9V3}77{K1P&P?QutcLGAY4kfXm#e7^u#`2pOw?2 z6hh-p63nehh1stVS+o?c1pvzTH6>aUc~7jFv^I>Pi#9el_4$m@y)Uu`%|G%(n&yDz z`$q#06m2{1*O*ntE9f@qqAgcZc&&(lMxp5^9L#f6RhE&KxaE6cJzCGBj7usulJnMy z>egT~WM6D2mx8?p=S#6Fp-G}+i1i>%ra2W}wi#FObb0_Mh*cTR;@}hdt$Masl<@FR zDji1v3>E=dPXSFPp<_48*B6;h$)pV6*Hi2zR z8>EG5a#dBjH3mvkK7s*&r%Lk=x!{10?bKHI|M3yML7_ukxb|}?L8qwO2zpC$d?!8# zg6E=>)Uwj_wDo)HUq^Urr}NVbq6rP;%G5;#;b7Xi^coh#=!i_PxVF2eGE3Md*kh?Hn!eF^hAy{(1b{Y{bC8n$j4Uue{V>+_t{(>>OkXhEfK5;Hb8 zWu!f^_!ukud}9KYQXQBxxYRdSvaujW6L6k6@^lq8<}`B0Wn%xHk74IC&^zNk2X^wI zmYwxwZhO0Noy=#1BO0+KU}0VEvjKue0W(L|U*_?;jNSFmS+P4h#{l2~FW-E`u9J+!dhq&kPhj2Y9gNmVjaup5} z*KIJvg54ZE33LLiGtnnMg{HA}BJJAJ>tqNU8<5d69@Nq5#>(tvjSbi zI1?r@^7DOFo|E*=;-|dd^AhkfkJ)f!9L1kguV&=vXAm+^z>T`J;FXB>_`M=`kKvl_ULc{Qc#~ zn$D@!|7PEuGShn(Y-eN?mCNbg->jVFuwUHDQ(NDiQ^Emr6_&Z}ABe-$A;kF#tVe@) zEHq)Ajk24>t_n0y7pJWMXC4zYA9`v^6`gJ6zKgh>n8+F9!ig*=1CkS6-!h7hAh z74qO8(R#hj(ytDEP4cu$gqxF4w?XnPv*+i|ZQdH@Z*_7aV_FS>47>*#Gx<=WT$69f zSL>B8shpJn6bk?*0R;VVe}|3T`{iMl`PgE&`m5_9)y&UF#cR|F#1k$TlkYt^l_3j$ z&2roA`Gi!^cAQ;5%n=w20kTaTmD)iYI_iQPxax`$X~748WVAdCl?`1z3OY7J*;~-M z-Mch8UT4j&@?7!M=0{DinZD>Q9&^#Me0hINUrm?S|CsBDk8pZMt>ls!_T+dlaD^j- ziUGHR%^J?=5<x>qr~2zViB z5a{zK@cUyk{gw6lPGkd5GGL_ETX8Harr&cwUj@}$rFrey(XF*QMGto8jDkP5cWVXm zyoeLbAQUwsKdfTJlPGE`?QT?bS*c%A-5CmZ#H!vhKS}|$30&ANYGVYxnJ}A+3H;ys zEe)f!K`L-QWz)ZgLi6QQz*{(#WsJ(aR|$=6FhWBDai_h~fEJtp>ll@;_CM?^Kpg{dzax74faQ+3#s>DbbGfWeS5kE^~`fEvNcqx#V6UEQWWx?>5r?M zH4I$etiA5-a6;0YcAfJ~ww~~_n0BGT$2Od7p}}NRIzfPGQvleGmdI1iWW4kGdQvNZ zHdY64;v{PX23{2;2i{}P>QYjHAeGwX+W{j`gye_^$Cvo0kX_~Uv!n<*jL0{Lpfe7r zLRx6#*d!}QoO2K}a8rL|2l%2|TS79rSyGvFJ<_MW+t=6nOz6mkj==CUfktIgcbeX{ zCD5v6j_8jOXd@z!Of9B}MH}itt2Tuw>^A7F9xz3!J!3_ZrLGk$pd$_3(p=#_xb2Ue zZiVl=2~zfk-~se&V$k@i;|cn0h|Y ztE1aj8OS^^lG83)We9eg=7Sw+TMkSCNi;PX0CEIO9_FZ_@74sw!w=9P3T63m>v=Z6 z_<|jT!-uz!+UajmK}x5)G*nW6t~x*)VRq^Stx?ABV#HC?yQvJYGeg*Or37DBn(8>> z=_|0|fGm~(CA|hE^{T*6(Iy=<;F#6UOLUVKrA~~wkzp5T^~l<))8EqvrtC(2rsFt8 zQbkALRrexqaiF(juTOhm$n`*P$jOS+qPCWbul(_AIN`Nr_Xv(AIeW`&+Hfr>nlI}Ws_XT#MU5JKZ8+pY(V^t zD{q~+eCy0AgI|IEL#8crLGH08)(@w>Vk1TA-4~ifN+iLb8T)#o+pFLLwqh7}7wbkz zxfIjw$rDjn!c6ySPrM#dh4opgx)f{T-P9c}0B>M*-;r$8j!{^WSX9I#)0Brg>EpY~ z0<94NOKL$v$*b(mDrgez=>e5_`tD9@;m+kJDpbH3c*iJ?vJw6*9OACD*;)wi1Q^e~ z*J~0OECo#Ve5|2ZzbSma!M$j4Mbmp?R3s$)Dud%U_tJ}0V{Qnx`L+YhZ7SG11yFB% zdt-G$-)d>sacS8s$dUi|;u*CE?Gerb?5-Slr2#4Y@p?OB4&XOUfHUl-=0zvZT9YlB zN87s}4)V!$rKTK^Z&0@(rRy!%J}g3IfP>$BHf-suGOV({{%|*{g&&7`>x>st22LGd zO0&`?qSGGwbXqzZw)pgb70T}3{WFCz-2)g;hgFjOtT0SpLL z4|LOjgeKrMBT?KFkj0$9#tyDutuoYLzCAV~1o7cbDk6Hu(4A&=fPU((kihN2eHD;9 zy7d|^Bg!erlM2}T?p-Hvt#e|JcJP_k-JzbNt|gT*vX~GrYt{E|qy1$Abt67OI@u|K z?KTx_I>N{W2uFSZl~<5I^6*d$JU>2m+M+r$_AxUuk;YD4JGGtI?+{r)51`?M5c=bF) z3?Zh`J^lpvEe|vwpiCj=dpxP&bBwB>6?U#iMAi;PUU74a>0swN@TIx{f}KGB8x7pJ zy5L&6=k0V)edTy0K$<&SXhj3!&!~~_fQ{)B8M6*Y?ZDpvpfNrY!6l4N`OVN>4wOES zMNd;za89B18fIM$-t1$UtU2rsDK@KB4p=64$Z1+YxR18tunCI zy(}vo?5)_L`sd~Sbrs%oK}V~>yDxy1*WsQDVQwSXjRtZSi;fUo+IRz>M~aeHKXOe% zwZ{aK5rN_C?#4|~SE>t+7HwSMcbPki*1OvOJ_B;-6b#v5!v4^-_DD;7uO+{01s7zu zJc^2_6_7R2B?pXJg^yPaf(RVt|8aCCelhL;A3x{JzEA5+`%L>LQ(C5knf8*5ibldz zB7{j{keu0Cl_^_@J4Fd$vLwVk(p=KK2x=J7a>`JD6ld|vO@ z>-nN_mXlaoC>ub%J76Y6{vN;{AcIi6)+Cg`e$)dw*n}U{r0fh37H>MjN!{_TYty8{ zTfaE;qKZTA{dP-m4z3%A(>JXz+w?8(EYmaBw8>xLx;ZlJjG@D&WaENEsLSulKE-!$ zDnME6iEDDK`Q-i1PLy@FjcPp{z^v?(_(RqT+Wj;b>f$X^(6UpyX!(wOPT1Bpi@iA= z9{tjP+W>3fTC{+VH4kI{0?_RUt)R=zx-*3bw&IY@c}xg>;ZBWviS@JTe_r+}AOGh} z6Pk0jC?;*sd#$}@eu&_#zeMi8B|NCs+~>G(R(HmVMF?-uZdzBlS7#r&n;Br3)+?7=?So8*5(9-L$ebr;=3` zruBShdmIYS4CiV*=VYb?aOXDaZ9I=B&att|U-cxhY)!YQ(<`mR4lkc~R5e@=SvFgg zBNq>BkUF=Ad8R>$OT*a7cJUjeY_+!hdI?<@R#duY#yfDqHN^ZP%wA}SL!@Si6qn6= z)(-DD3qUzsn|RQjbITHeT&8%tgmXfUM_(l@aV4DDfBQW;r1xc_d8B-+Wzw!g<_neX zPv1&d-p0*ioA}}w5M1w?`hnAVda1d0Jh877@a{ZFZ_|@U6={)o$d=B07NWF=-G-^&|1Y<)&wH#_pwz(`=)<*g3Cj7grS zzo(U$F57nbQwl4zBkwW_S%}&-Ub;Ec=iiO`h9FctjLGH|Z-;%KzTozD2FEA(#>ntD z!giX~!_j$gr}kIq5xjB#ulqYImiNr_2eP|GiWBml8Qxji!Za@U&?SuK&2#pRMiA-M zLG<;9*MjkbzVUL!n&)dQOE|WjXC<^CA>=}m1Yvz zk<)x{)$fqKb;ogk8fZJOmeFGeQ5FqcH?N`4_UC_E+%vzF(Dc&_`A^=%ycojDul@tI z$(!W9(023G_x?Y3Jnt;(wCk4!CI2UDGWWU;?O}*!IiRMSLk`*UdeicNkdO;HvSnIYu`pMuu}1 zFXC>MHfU>ol2nqgdMa=JAOHQhUXJ_cX={Cd&tT`}N6)UT8x#=^Z$3ND&3*IW%7vg0 zHrKX2Eo->NX2HOPl{h+`15bk>9Nkvsby+LLD)NxCAUvn)7a3^92bPMKLaNBS)(Xx-C`8w~qLFPvC!n=I@r z+c^ElUEA54pLgj|@cfa$&EH!;J&BrsgcGLj3NE(FDU2<)+cZ{%H4|Rc_8eYU11c%P z4k>0&R;zDh%{t>T=y0Y$-+f@YVyp5%#1JB5q5bqa$x}dK;|WFqc*)g zi!q)RV%W;Q(;(XY!Y-TSmHb!x{1m*-Vh2^tDB!lJzMe$(AL=M3Jwi5u+@hKe!h*`f zPWu-x%e{FbNWUwoKln}a|8nzvN%v-bfA{d-9FUScz$Z+5G!SlbxA@4qMX157RDn6KN_ufdmQ5h-d&C

C9!H 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≶bHTj%onc`zNx3|gfk@1+75Uy7-Apok?1VsLQj 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

*h1(H@oX0-c_gX;^y@O4N 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

shsf2FZAvCl@45NXGMPJw%&If~ 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

FC4!>>M`?H5-NGOX` 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�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�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%0AeEg190- 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%0D9&KJbs0z-l4oa?cS@9y-3kNev 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�IvjO-_0T`_Y!&$-{fQlFX$nm{u1Q+ZN$^ZF1Naft1=x zqwLswq?DJSZqP2kuc8(ewk|>gY(JS|dS++`mri2?7|J-;iVm$f`6}~5hugouCUO%( zQu?B&OI0%ZznZqLbBXuaeC;xyvzPtPd4{E5JGcP7HphWRYpzaL{@f0WxW+n9gM&BX zR&I~ywjOIxtxcWcscTmb8WSM^-p4Ygu(z28zHgc;}a#HvHnJ>G4eIVK!5>krDk4Sz@5;q6FB*>?8jXn>y!D_3K=K{jF~>2s%A$JIrXGWBqubvR^CYT&CM~CfW1GpGgWm z|A8YQJTLWkURmDA!z4Srxa3O9w(QYsbH_LZz3#;Q9%Z>O6-qU%I|+Kz`+y8P3x?Mb zK<>qZmb0W#{_+emRmYLlh` zrFmgjNAh8yR}TBdW)V$Xb3Nw(CMch)?O=nB-UfK6xaUyZT>$o^{q{r{e0B>dV4s(WZHT2oh zL7HDFy;M@5+kYD|fQZOXu3$s;w7chr`ZNb#L% z`_z|cp0-p`b{u8m-xdPGY+r$!o(D;Faw>vXomp?`?MfQUpWA*U6crJn2?O8Z~k zYyx{7zkdjV(KEe~OI zg0#gMUK=2p=R6lxuPXW19+xYljb46k>pXC2An|TY% zqX=*s1%jmm2q7Q=pV<=Nr7%PcQY|T&Szm-~rK&w^VQ%&yzGP{6H zC5Z&dhS2@6yGpkz+3dK+J{#|k4Pe8{v`|f8>~=+dh9>W8uo|)eSyKdK{~tx?;?Ly! z|M7bV%wcSf!!YO5Fy}eX<{WZLDrF8iCCwp8s@a^6b3RrRiAo_AQf-DP=O{%rheXFI z`l@{L+wVWPPmlX?UGMApdcMd)SGF}DTT0yE5CoSb-tx3PA}?NVG^5P>Bqc+kNa|p3)`^2HUXT3Eqw(@9;6#0bUxGBWR|BNPkUE_z zBE*JkCz-rLq@My}_J<1Xl@oOltPG{r_~1=JzCP4$3UZx`JO}ZDN@4PTBC1mJMt=kZ zQ3d#7(jbaR4Mn7n3)iQg{@!vfT2739WopN?93Z+u|oWJC!|#>-bH|3O*dby>p=_!2I}*sA;u zOSHE`Yz{a##u9Dl5bj`!c3{Zf$zqW+X}5CH9{a!_1ETJ~MK6C0d5#eqM|jIsojbgI z?(rG;gQo^MEF(0za5$@~MJzfi%kM4NLod)c9f_zXKO)*sB zd#YKWCH@4ROQpE@MbaU{3;SzHk#|XHv=pH@@(NGJiuZOB#LvMWpE+#8dlp`hyDg7yF)wE*EU zR@3|UC4gOuSUtA7_h#+A7|os}VahK0$c+hKHflNnxAZ`67xSeehEouuDKHZA@NRuHY6{}~u{)h+XT=2bqA9ZH zFg09}O^hSqjoS0M{3h!Gjo<;8?~T1Eir{G<;Tf*j22NrJC`GB=j1U6Ssbvpt>^Bq^ zjRlFS(UFJBG~f1#P4e13XG8h{;UubX2d}&zA^QA=lasKsldzcgYKWVL*d3Ng78zFW z1IwiFe_h%+gL-f4oVW_NoyA&oDYx6&;>Jn(7xDnktIDIb0F)mRC!?`IRd=HBI7Qz= z>;j?jPT1KIvb#I@MBxQt07mZk$dV8=b`%KpFzt-(t~?w}deDHf2yfI+hRXd)kOQe*{9e_6GDGf46XbmtSdWoV6?4d=tM)kFQ0Oagti|_LcaLML z^db%>iMfBB*}q5;Sq1^jvT5bC(Elw3M0ILMI`;7bj&GRD%{BIgFad7dy}+CI4t)j% z`53DXVGo>s5p=p~7$c#ik=6e5a?eV?=#uRBUo~esI~UXh_NPg{O9Tvf3L)e!&^Tx{ zEL)HQ2qN}<)Rr!x2KwMY8z7J!0mkH5cz4RZzdvF5Ldo@k_B{&JiVJF50mUG$H=H=} z?PWA7G<8qsr0i{;Ac8w{c!71d{+=~e_+V7>V{=%@nRsi6{Mz082u+UqOj}&kK+UDs z$PJ1AF~lnwLQ!0SlMJD|TroWHHOv>Db0+osY2gQTBDN3846PPycg0A-gNI|z9TF40 zg%di%I_o6{IJl?vb3=T@hJaz=28?i?4=kD~$TxlS>JDOgV^dS`DId4_gKz-24N!(B zJH#Gx1sP?4E#E+hsX|i$Tk`F-H$bWJ z?(+Yt$NTv(Er3Rhe(vpn-^6m8?g#49HxBV%Hywqv0 z8F0aJB}zE$%0j?yu)m}nCMM%FYV%mZv1ZVN88Oy}yU&5FVE}pD`_hw7jjqoBwaaE=Vc8~`8YD+;tixir@=!Oe0)^)6mKT4 z1@zbOVYebkpLa-U+W5*#8NR$W;(-dc73$Bp?>oYHJEz*({#rU@6TYSTmmsl06|0;Q zJVX(!0sxZW%{k0kIr-+jx|7vDq9Uaty#$?JV4;s$)-fd(9=Fh|R5<`tTm^*OxX{=R z0Y`_eBOL<%z+3;RzB~1-J>iT;nSd}A_%RM5@L+AMkooFuaFtUVWBb+*b4NhHkp;2o zdJ zXN+-C=R0d#cT%R!-Dj4(h=Q80fFK^i(h*Z}j{3vgy`us`8t3`K}v zaQm{#wM9+nSSU0-5?aoXxyuGv@;e?j7EF-o{c>c^Qeu&*@Zn?kf^Ux_%f_Fn%xm$A ztRsYE{@Xc4foxYCW*{W$|Cj<)?4`nw<_E4M-`p6USUNR=U2cTHry!O(Cy%#84zeHV z6O3*LKaX0m9is&@ER?ne|D>lF1Eqq+H-mdqj-HFeRU3v6i+r2e{&JX$+F0Y!|O=eqy-ji1+2UtD7qyC0J99?@VH` zt&~@W;gUr%`}*`_+K*1A*r`c53CUwz>YAgcmS=DK$NNzj45E;z>tu~wsw@TYWnGCqk zG^?kw!lD@OgNN)DlD4l2EmxyHsAS&x7B=-mH43z0AJ&Oa_valIV;J8^CNl0%O2 z(X_;i|9&hrxt_Xg9rfe~;z-W^-%l>Qg?SNG+79S@em0sL2oMc0Jb2sh+RSN(i#MV= zE(<>tRESPhMaTv+D9j8&$z&>9P&^fp0ojwR!GXY%C>9ZlVDK5=`I#kw`&6EK+24Qr z1nQ)-&T7eoetT$C=DMcFDZ<3}mqMfsom4ZRKG9SFj0kEJQZKRv3*&Zrpu_v>Rwag= zTL!1$xT@6^4-94X$FRWTRSfL(x234oPrI+5)(^FK#Ht>Bb1MtO5}7$(eOOCgUWgggyMv9rbNQZWiMi=)L! zV$3CWa-dQzln)AltE!V@pY~=7*T-9xZ@_L?zz=^iw2O$K&aQmiAls3DFE>kTcq8t)DCEw?_1H6f1Dcng_A(vg#d=4J^a4 zGknzHAYjufUsRvwVobMfaeGyI?xbF|zjr*J6jmemc9*)C3PbQ)_Q%T({HNE_7^XG) z{F~XgK*;6uRQ0sJw7s#hDC<`tId&GKMa4V~9}R!44T`)|)b zyvx|0T{!nRATh%@P44LKcll#vwsN@)0z&{)pJk#!ccL&gOA^?hr-O~xpWDO zT{1)rLj}T-Qa3MlI&XwmAZNF5Fozvbtc3^-SxCs%G7B|O3R5ZTU}Y1@%k}`(SEEj& zQ105Yq(2e!@3z^1!BOVEU=bOp0;XQ#4E|}mp53Pz*YBHY!Fjfxl`0+>3yK}9QA z=9X(buQ#GoCEnp+b&oP|F(UUDU8wc%*eZCkMS#+~Sk8#0rZ#welE{R*M8cU?j=3frfxnoz&EGfS# zB)Y*~cAkGIq0<3misNS?`T&-Egk`TH1`_pW(G=cU<`B&+BxU=ZG?xDdv+v1pDxmrm zSl8scC0j_2BeJQ%v(4I8y3~rf5DnSVYl6y+Lasg>H7Cb|8V5=Iz?23s4Ytj)uY~(wP0CwWIR3$AmipTzcP_dKsY+6oRr`y2kKNd4PLqA0{mI@hI0)#BaG7v@MP#uEr!iXWQ zO90CG*YeR}?oTKZK)9GY9fON|8>OkNa@4JFehj}ld1s@+kW$yeF0Rjm9g$qQ=umG_jDp&-YdiW>{p5Xa9 z|J=P=o2n0@dN^uFmYqVlKLD)qKCbx90sNk(e+<#^f z%SN*5==#gI8GpDuh4=s4Fh6%do_s|uQL3fmc^Em$ru@Z(`8m-G8^-{6D`}hNolt)x zvD@<-eE2{D%sWxRNBy26gZ^y>A{@P!aXseF7LBIG5WZkyQrDB$FeQ8mmu)kzjw6DP z`!%e;psw$O==gwCdn8dM>LMu0fKCPR%|=doYfcQFZVSuiSK0ur^wTFSKP(qr zoX=T4bTiPWBx|%1?~!$w$JEv}sIS*AziBn62eq$(Sde?NK7+ICA;Wr^`}l$6pARlT zn2XC02QJ;YrzEyUIdsJ8zq8q;H?xmWv&a9aOj?)z9WkhZKr9#}e1AzKu5_ZVOm`E4 zo9}&}Nc;P`%tGOI5W3IMcTd%%P5kP-&`F9R9Z`+?;h`?Cf?d#^ND4%U1(J2sbL3A3bf|oJHWs5n9x(b{@30#S5K|$*Pn)c=%EN6k zvJ_f?o9)rOwxcZJJQ~eNvT~pYKC#lz0Y;iW_4m_7u1H?Zu7Rp1QI*{uy>P$eNN@bF z-WpXWB`+ceTD125L(?pm&QpVkV<3tqiW)yeH|q+oFXe7oXWfRV`%Y8u|E2u`3Zqz1 zbnD|V43tPHjPTGZe65iW^+1(Xx#J~>jEadR^D7?x<}2BO>!6dFwc%`AWKGd@Z&9L} zwpA*m-4h~EyY~dl-(l|D{i`UFi-o;<-t6?ed7{QH?2CpLt$LIKL9^`gh+Sqlqq{3G z$l-<(VR^=qpq(2%VObhwk{yWAipT&DlHt;eCSQ-_M{%>Q8$EMbxdrPo4fDeBtpcwS zGf?Xwq#GTD8aG3LUv$%FlLdwdrqftW|XqO|^&aJj)yr@tIl1`a3ya zTG*pvP^!^F#joVC zR5Ud+8*$Z|?P=4c{v-h+!&6fWuC#2uigvp(fG;%Lp?&ZNKXR07ajTsau8fRv3z8;P`SOc}?(2QCYGg75g&<^s+9T8~(BF{k+4;2mHJ_|a(_oV%c z$M13nxLeMLXZJtM3^n&^wYLc4ykTA^ok0|a|cbxKvSthwgN+#=HqFPu9vG1w2kRJ8Z$d`x7ed)TPNFpBr^<=NjyBB z@WFkEmHRRdc91~}RPqcdg`H>REF>#wbx-Mh@!}@W=a`E(?qr(+z#(Rqhfii_SI&nW zp^LZ@e=a>RDAONx$Sf{v<5m`EjtR=*Oq6lnq;Z@vP>UK`1|5=9km=a1|M1zQS9)3T zbAz!NtgJh7JT3bO!baTzLTYEgX~lsi>Pzol-|<;rxY z!=>-D(;@03p!J`A_j~0{7~rEnSl3z$lVb$bgDTx~g)$BHnIo@y6_tw*1>87N61u8+ z6r!NOMUadC;g3EQ`$EO4N z2bw$JCffVipxi8K?nK+n8F)ji`;$m^t$??F`u{;`fgl56aP7&>1!Ely+LuD>MFiS6)Ad)5%Uth5s^4IVI zFzuf!utOsIhxPW4_mxx+wKKPS*4dN$b|tQPl~x@Yl+pFEPAQx78=UKksH97RKVT>N z!aW2b&YpwVgdqb}!@G717>3X}e4m*hm7-%xeza$QtP52#+TCBHBqvxP|&PpuKn@&16t+a;Af!nGS%d^!iX|3F)jQ3y)cSnH{$D5 zzBJ*(hpFrxu=q~-DCUk$k87#)qQ4IF(OC9j-toaXBcU3w;xEmImojC2GW=pdcnZvO z8+DZD10RCMs1yBTG74j}EOkGQ&5jkvW(T@KU~aN8kyWA`K0U%ULvia$!HM0|U@A44 zbzjgzWPZW=koUgNH@Mr>T+8(%-phNrj=a9yDjf+6MWlt|>AHfh7Ubt21;2QjN2BLd z4VxdcOr&?`((k`liZqt3Z%o;i5nAwkVq86EyZm7E;G;Hy3t!vDDOrjXY5>SJq&NF4 zs%}1%Xly1fA3eVw4N=??G+c|DcqeoY$T<{Ex8>0YfKY4LhZP-;4JG_uKJ-aV=05zP zQZIwKtKpM}+jkBP`p+^Qi#g7)9z)oEdp9U?bQjC-!KnKzkFHBE z^eEc&9NbffmAK21;nRxTn9FMqDTk%#PA^`3$h%bYDtg66)Dj2_lQtTebm z+sLA9sz4xdb|dF{%g7VP=r-?~C-HJ?{1T^vFND@SCOCS1ddus~^mZLG*pF$3uYqX~ zvrw66OlCYjCjph?k+t_(-FqYHq}I`%Y{TngmzRg0NA%bK%N=tQ!4@234L9>nzzEZ} z(I>KwHHOV^++Xzk`YxJ2-v-jcNs4_i4Tqcrfub8Ic2q4rM$OsNN$6< z_~-kcppSNEyV##Y){nzW3REm%r+&VZWU6;8A65@|EM%gpz-3K+zRB%V3KZ9jZefbp z^n%29zGGnJlCqJZhM3l~P_WSnYd6ow}kB2c0cmb^2joA3KT{QrbI+~;=*7z?;6P2tu7c7L^TF^La74!ZH zC95S>s?y>2*7lFLl|cBn|QhvL!|%jpJv=TPjxU?QrquVbOPD_-22D_egQFomk*6B{-)1M5bnk6 z`p15L>378ZrJbm%)%E#|_pIrEFRsOX6T-!#g@6jqlgQB~Ud!aut`474xYEQyDpY|80}-xVSQE~{)I=eYwPQ z<&T_ABKq9!=E$FQ(~@!g0=CP3Yh8VE((XHUYt&YvebV?Mx(lR|v)jpjaYpwM`{?=R ztD~wxmRCphbNVF%0ry+*A$=wL2~Pn25&1OL_=o8&jZ4;hGmXU_ zH`JA{jJn$GvfWRUW0ir9oFTWoXT$FCm3zEH_BVPQu2|i!tl4^Muhv_Vf(s}Rs0`9y z=yZPZHC%b4{_P>7);A+!uiWS^^YC(E;O_^CikbIoVn)P@5PoS zasL?(dFNgInO$8VQ1GfBC67G5+xhs{BclsSSErINci<0*^a80}q@{j8WxBUF6|KC_%x$V%vX+dP1tM`Y=a zZNj}f1{6NG*4U*Qi=G<^m(*KxwJi)43m9xtU?Q@thuQfqK`Y_Atl=2AYHs6gw%A36 zXGDXpyvr{8tn+DQb+lui1Gf?R06#b%mXPa$UPg4_oy>+)3PSfr#?!hk4I78Sij$*H zX9LVwyI*-~RhuN`qTFnobap&W)u$)cX;N$RuJ+CB{Db&#m0wd%xOa`B-&tEKn*d9S zi$UO76Ydky5VRPBZn9eu^wLED8?1%k$g+mtSkLj6E)E_Su2Vt!hI(Y^8>UJ9*A=WQy{v=(udy7A>qlPm3n`4^-5lve( zLf@-##Rsv4PmobByDaV*2Kg3OgU$~A&=J(UkdXMD{A^EUi<+fj5t{4SlPA^6g=%YL zhb~}Mo0qpgZc)DX!^^MmBGFTFpOR(wD}^P!u0u@5e8FTZ z&Yu>R!~Onn=JQvX@2~zwy8_(KFYy;`7T?B~!~hu4oQ5pZ8D#XC_H9hlSwU1?dPzb* zQF(!tV;1OGIQKGKaTA}D-qI-^9$_do)Y@#{GhH9gA}YP%3Sgf#mc)Kx$$lodKL5|S zNc_r};?B;HK}~w$5j^qoWJk`*Rn^>sV=MBBh;-Y>84>|b;c_2+vh>JE_*vdEx_?I; z`3vW08?Yp-h=u?uWC77Y${BE@y->!-TrP53wr-ChF#mFF&B7IeVpI11mPS3|CEP); zv+i!CjSvHN$NP0>o|*?`n5K&@$-nzN4Yrad>XVg57#^`(HJW;y2=RM(1~tsMz@tdY@ErlpmO*lOG`J5(JTj#b<{+V zG{@+MnH=-M0kaym)Rw#B*aX&%C?-u%a3dNIPQ+?HmHvaChAZg-EHfMl+fTgzh!`?R ziyM8ZPnooPdq~U+(m(gYZk(?`FSpwvy<&?3he0L?jL`@QKc-~hLo&dUEzOu_wq&R` z7Z&+$4MhED=VVzuwdm%G&d@E_N!qstMuH(o zCy03f&GrjzXNqpvz(FX})oU_@d=H#=Zp2JrMFBMsqe(NAY*J-`@r9i2 z!uN+R9l&Ll{BoNVb>6?TICa?z(q{#+*L{VB`6iv6ck1w5gpVavs#_n1rcdvCf33;p zvAV77p!*`na@A20pvt8V8c`v@D#Sr^&|%(FFCF4APeMfIi{x{xn;}MHB+ZQ=Tt65u zMvPB=VauD>rEpXhiP|Fr%KZbaSr8-i8#}Hq;S2yyElD-)PhaV6JXacnvkOPi9fFL8iKR|Ylf0KaDoX8`v zXx8g1<1eqAZk#?|X*xdzPna~GEjLf6TQ!r+;vfg@Di8H?tVEz;ZwG)k5dBOD@f)#x zd{y)l$7GCV(oe(N5-n|2^n#mhBUW8zh?@8VZXyu(x`;t{j(&h-OZQcCG{nq_Y>-J0 zk(4#$f%OVGM9&F*H+W(EkF0MzfTqNyc$> z4bS`p5pZ;4Mxx$FS-uA}h~p0eZ`oF2yNgVH_^%-xmrgeguCZcr#AqZtFU~tW&1`RM z-+L=@yD@oE#{eE*EaJkk9%~-wlE~tbp~_mOJY|>I2y8M@+YRg{d(1chY%mW|{z@|W zg2G`q){77`3SBe>qC)|j6@sJtnD%B9HqAu*E{D4b*2$&Yl4*wgu?~iA*F0e42DS)l z(Fg)z(jj;s+Lc|F_!ss-E?cZ31Ci+{55&j^IHF)|DfEVvXNCq0dZ2U4U$f*F<-m4u z$-xY|g@~_JYyJOnuUkBm#nb3`52)3!dTo_1`_|EgT3yG6jJo?V=M!dRCukRcS8L94 z>~`Keh(M2SK(Lu4`&PPfK%i|0&1{j+C~Mfx^1FG6c4H7rX_EdPfh6xnLv)j#^^o;i z!!%hm^ILCp8^9>D0Xu1*kNEfRHaRwk*uf!jBQZ@&7)PU+qdZHuUk3w)dV{?KW-OA} zvcF!0x2exMYBuA5!hwpD;ORzLZ5DXacdjE{6)&*wzQA+4xv7)J9J5)U-pwk7moMI8 zSNMY8%QCN0%e3S2Dr~Kb_3$M74ia;jWXmKrE|a27AXqcKc1Q+pd0o?04hZCrHa-x=CE@^=~v|1Wmq> zO-~Uw|1xi+L%(r}XwbtBy?@O(y=C5lV?u=>z%2OwrRGocDcNe#Ae1C?+8h4Z4vXTCI#v5Nc#{s&_DY+U{1L7d2YszuJ3Kt7id ze0y^9<%4OT8G$$GKHcxX;@N}M=;2FNRFclUrtivklwWf!#@a4wdR|f<`?eO7@9C|V z%drdM6gM_I1qND6b8Ov6T7`5QT$9P3S%i%n$(Tj5-8tUkN7qYVwODPm-DMkNqK6ha zW>aA0X}ZW`qSe@{MZhI2ly2lCYxf0$9|O04qUCQIX%R@)-6Z2=`gYBf-Pb_PID{sO zW}KhX^(oB%L$JSB=vb(t9-cONt;%Rt${s}ZKOcIz_VcgR+PIS>v2k**WSP-!Em-u; ziytJM7{@O7)~_m(ophaOB1bD7V#{w|gk7_3_^!=@bUY*dwbyccX7rz$j@wzTg=d1@ z2;F$c$gZ1YnI36ALNg8K*hF}Xx$L)#!)g~oY|Ro}sT}=Ol5sP~!d4I6$}asuj2Cx0 z^NsEGEramI@$Oegc}Bea-WQg-+=hf_SJFRP;%zpX;8xe1S53{Uj-aV#c1&!dHFp** zz365duf%O89J=-+BocmoqN&$#Y%!g-6w;2xrhXv_dLIHbpOSg-{cohPZ7WGL8Z39l z!#I^>I@M+0O0sMi@C@Ua#kp+-L-r0EV{1s7oAXv!ngwD8FAcF^5iL<9>#;%gTT~G; zOM-&d^h^{RWC?Grua(_K>_n@77M`dww4rj)!9PZ0e^j`SRA>&wbbgCXAnICfS%#7x z_oH9k>d+F^&a!(crVH&6Jr=57-DJWp|Zs!+dAINU~;fMyYG2 z$^J2oD=PN#iWUhF4=-L9=XxkUZ!%BOG%q$EE?&^N5IwW~c|ns8xUz zfDQRCj*9EW-JHGw+*M70{n3UjbF9!%Otl(VP|9Ii4O^tSAU=--iB zUFAf**s`1AnBs+M$}B9SrDD(IK3UuHF5#R|F~@6c>vxdQjU4Kdg?%PR>N5xLv)Fum z!dxfpl|96Nq1)12&WgJq-$8Hs)@7GWcLI}RML>cPd{_3mzAc|2C)itdC1~}QRfGKN z*a~K}!__Zg^&nK&6xN5P;d53Z=33z8%59hqUxJq)lBt?5JUt}mcD=W5Qq;=r&Vmw+ zv|CU&Y30a;*rtBQGZ!og=9l}D9lVgy$%0Ekg?B>N*gXYHh2oKKJU{HM({Vwk#&E@h z(g?R&$?MeF!9~Tkl;S%leL&8`iPKea*Gzgh1A7n8d=nXL5wh05GV>pLLaNsL z87^&v$3GtY{@iDFiAzFF?9&b@iXw~VPRTOyYw;RCi#C&>rgh7D4mykH465bXcgs;+XL@orrr zc+E`AEVKJ@CT67qxk9`nJ83mA(Fle&{;->-*SkJ;Zj@|uD7$yCBJJC*-lJWGEF{SB z-w))BIi(<%cE7x%_=J^-i+_LRS5FxraRgR}%U1=}{h6@Z zgfJI*)#HEkNd(ma3@;BSo<2~08o))sZ6)0!;ND_vdYOwx27(lX&bU_U;?wv^rt8?| zhw78ZO4sC`{7LxSb@oQMkn))|D^ZoSceUD=f8JOUs6V^2p?xKN?X?zqW&(t1h^<=s zP?vK5cO-iIer>jVOh<2`f=pIjWL-!m@>z9w2YaphVCL^Ed8yaCL*pSWqZ8FZ>7gy2 zA>RhGMf9e2Kvnm8mRuB~B5SjzJYa7jU>HC5x2NC^#nQD+U%ttfysFb5;N%KD#9|BSPWdhl+b}} zzxS>WnJpLEyy>D;5V+4(>D8F;Q*_dNUS~rR^R72Kx$wyChEwy7t_>$|>kBC*W#*l! zPkIOXr4W64FtR?}&udid#8|07Q3Ze@w%6x!-3?5~T4^v-Ws9cLGnNB&77xPL4$Da|s6&e@eA~3!2PqSWK3+QevVeX1m+-Bqo|mbhMf5uQgfP#_!2N0_f0YR^zh898gPWvCX`WFYc1(>Npaq z##wQ#&OS3EbW_;zR$?U^ILB}@ZVnwZ0mx^>AOP;uW`Rls7%o{y$LNH@+><>J0W}Z> z#uV7R8-ujlaT1f7Rt?!1INlFXF=1J<_s|-)-|pt{^G$Atzyh*2_>?3Ua`0o2 zpcZWXRuqdS2W=QsV&Q}j!bpnkzJ9fjGvG#Ng@Ng*Rm)q(MU&1PITph8!!6a~km%*a z;@n~5e^fyWmYTvx7Qd_>ljG<~Lofgq+KCHB?y}_9cAPmkI_R`*ap2!oX=Q*#)Lsr1 zvrllfp2Fl-$Y0&d&mLKpl`_sUhzk`5eCPsexXh3rYREg>OtWKaqM-m4ab!MIHTI?1 z`ETV{{%(m{^+ncbE)JcY{QS`osaJEJ&@SH1%u;_tD9C*YIan7{`sz<7JSeV7p^Yq{ zp0y-;dJzc}*5+7bW(X)rFQcvfT=CtYf_)*$wC&wz zP{5{!Exvnqu)^(GD)jRu`E(FK=_g9nQ8I@v__j8i(RAOOb4Hn27Br46qtNFB@I7U@ z1|K#JKJB5Nngo>|3X1E#@ROT$IN)f)z`<2S7+Aj0MbmO5S zu{&&qoy9y7w*%}N;T~5v<4XaiTnm5)o`yz9|Yy11!C@WSo04FPWGs;J#ws~H)&vl zhr%saYCa}$HAMmg)X~p*(R!(yw_GHNa54s}U)5Q(m(Z<+razxBW1bhohb~YW`?JjT z9z@{&Q?qH79MoT93UWY9WCIr}+MXd!roIjxEgTh3?y`|>ksl)m7O2mIfE=l;j;^Ue z{V`0YN(5IRJC`fbM}Vxc1X{=j>TeA&(OT+MgVZZ=gZBLVI7Vt zxRsb#iQ&vp`Ah?u9j^E+S&|ScAI<5y-+1a+y9e5H3;dKaxRh56`hyih>*XXIV<#3b z$zENO?PCc?#_+pb;K>_stx!pkj6JC}!ek^ykcVkUH-^@=i5$CH`|0LmW}7yuB`@Xa zGk^dcy6XQD2uHCI-FXdbOwqv+2!<_$X}t6%Px1m=&cx^ruBi*FPcakTH}A;USr5uC zQCbW|&on9wn5g?1{LfO@gejo5E}TD+bpZgvSVFm&<3TWZD_6pA zNpgn@-{DFG#vu(uk^h*8+nd7O$dt&ZVpB{pJr`KyM%3~ME$N`s(rHmz2dN~bC?s2j zB3cS7;a;azDx)GKOCf~i7~-=IDkSUV8--OQ^kEV55&iaiJoeA_*ZtUbU+?>RU9ao; zV%ldjABYVfpIgN28gHvM;(6=x#eu7u*H+Hg3;U{(1DQ<`w*AEZ>{a#L;)H*1BBHc+l0gTUM`)`LoLBPrZuT4!Zs-2p1D$ zl>&08*lIz%z7?CapHHZip`(HRnQr_o9+FV~3;^StEN%LGV?JaY%eFQ59!}ca=g)D} zD|K+q?$y_EI0rE@6b9qf94`BBzgZwtXUl{{U$>f!fEb(Ebfuu>tyyC9)fWNvW@p9w zJhtus@7&wZuwn2M-2rc-_(KL0{_U|v232f5GcoNmOpO-I8D6Y*y|r|sbmg=we(0R{ zOS!a6^NS*s*&$d8&)0r@#Fn zuFgm{G9O=OXds|J3}YPNV>%tZVz&5i=`RL+31hy=n0=5K2T1d&p^)AW)&oVuiTx0$ z5D=I<$mjTt&sAtY8s3&q>=qKD0m+#)rzPc)2Ptu(%@-<0R%VL7btCMQW(=P~!&_pL zm~7{DV|w4JnNifWIfo)cb{ao_XpmNV{_9r5e!0(mZ#rj0TX@wlSBE$Wbaz~HX+*#G zNGxU83eSjl%4M{eUdF9vEgDDv)=1&qqLdxpKIgn=U#_%NuC#eZvYmo+>v@0Fs@=T; z-r{%Yu6}d|K(14v*YMHIWFkv}?|KxxkJV$o!#1;7CkE0-2?!H$#BuKg*Kg51diER| z==4VR4cN`7=+DiZKEoWp9d=UI)hciNT>C{;Iap?iz*<>YnTQAaoxF{ylSm3m_TP=juAvX>=K-C?P~u@{Yi<6 z6JY))%lLay?L1;t2&56@NDF2y=e87-P$c@EOY726Ev8!qXwi=rAIZ8ng{8}*O) zM}1-ZcaAv&v3H}Vqigodq2-U~8T7%%`q8A$7|LvbbWYHWDuqcnoGxyp-CnT&LM!93APDom zWB*R0g<>67o5h5BTBvyJE-+SM8COcRcYZfGVtJhJldaP(qFX#|*M9oA_o^{U zfMrVcWg@U(5`d6mJCvB?2Z1Hkc1J9U# zo<|+^&wF-5Rc+GS-27h$vsc44PG$uDcP6IooumKeXS6 zImLPa_|z`h@_pVY>t-|oUSXQN^zu#c$eLvdd!$5FO8I2-x9bmy4fhL}jO~syV$;D2 zSG5&qx|vz)esgjpv{iiK^1DYD-cPaelc}nHLYTV@xYu;SL;=>^sgWpjVowI?8~v@*~(jcc7t+=Piohup4q*p zWoP;W0l_}+lLwldG#DHy%Q+0lT{n;fcF1AbEh|*8T&%NSY{2m?d2YrWZw$U$W+OyL z+9RFMa7-q}%o+cU-2&l{T)oIo!Z0>gQN1SFoAn+F4F9fA-WK9{l+E!(f@?waChz&)VuKU$*Yk_1xRGLL9HUOPDqjUOvm%B= zx+5Rr@HIR5z)pd!Qs84*dF3ui?jtFRE&370CP&6K^vYZ7+Z?GEwR@j%axjHw>BhL~ zg;b=@HToRzs8;>!bLWeh9q&urzkVD2O~S5jV%(@U$%_wA@19xrG4p!-gMS2V^6Ht- zx|#Ei8r*7TP^`7{P4xBgcs%sN8#ic~x`?EgPSU>G0ZJlE2KNlDW`_oh~l&KP}=i}A^;4H(QQ(#ppbiayr zh)X%onN1obkKsrSd`Y$6>-5Q9=poMuby!;ww=Iq3Y&{MyeKcsJ#Cx${WC2*jrn0iCiep* zSjq+&&$Z`6mVveSfUf-90yGw4{jJF#52_c=6nRlKZu{kIHP; z?-;)N#s|Ee-S9U$FpRmha8UnmrHDDSua4>)chceYwp%BliNZ}+Zhn5%r1QHk)4uBN z_O=&Q*E@`0&%GboM_T{)%ybEO-+S|*+saqBlgB>3NR<>D+{!XOR<09y`Q75}b*s{e zk!1b#8(KsScXbP-K`{gEXTz~7H;@$G=j`&wjAZ*yWj0wmhi_KoUMWZDa^JymPaRdT z)4{Mn_Dv*UyRJq@tXeB5kAN$*mV3TQ>glxc(&Zo3abPw07%-y(jUoNl=m)srN_vOLCLu=VD&^4RhaDwi4}! zYDWM9)#ZM^GL@pKAbUQpwS=&p1quj{dI=C@hERdPI?F*#fyFvr4ar%-lj%e$p#|ab ztt(>p#+NQ5Vag!b>3YS-BIoW&F_yU+z#T@{fa)N%4435xX>nA3#DL+>OH`94nm1Ob z^Btt^$rX!@!nuxE%cdCw(c@sl^;d4AgGj}a=< zZ`F6E0JjTcA>5XtxNfeo27SSOZ9Y-VeIj2^wtDxtjp%Tf@6&0rm9`4U{_mAH&UTP< z{poH(dCe;a?)KHX5%Z4*w1uqRVYfB!#Ex){B3I3%YGKC;`r?)e!g^wHM4Q%Eob zf^SD{zhC@n*Q?#hkJc>yI2^BXRk4myk8PsphAf)qxXJE)+mTvyV4OBs;yGQ^dXO`c znO)53szdU!MkY@cnjDO%Av;`GTI z*2nnv#PLlMIwbU6*UkaS>LeZt1Y4tFL+haV`{u>ru6G}VpH@I1qLJf=vFE^Traqjn zt@@-{b+(RI{YVaR3H__@yd!?!-p0;-Yx9+A%#6!lKbCm5i}9dI5NeT=wXvGhX7_ritwV!ODgR)>#am;CChi8wWkJ*Px&Y8FG` zYHwnm8iBFpkpna-&sAr|)(UTOsv4zsZKm8c+{{h-(7ohHO^Hu%mcfY9KkIb^<578F z)?|Q$+g@EfC8}Y)&p&ozN2Ehy(U{2;T)=6(et2tAw&7TFp2N|p;;r&n!p0gGiw;eStzktN53gOl*CzfPb4du^p9h z34ZxwcOxxdGlA9~X1x^Kz2Musam$M%RauB|Zn@^q;pf;y0!50}`r4@+e`f^QH`Uvq z3eKU2LWqFIPrA|k3hOR`1`Z-d-<9XtDVk}cYP99xl(H3{haF|p{-;tCYPp!OWs6Q^_bm%*HRu?`EFO0(Ihr%q8ra46cQJZTj^adF z3~)@?uoC53i_kbZYK``Ln}<`t`2>?@YK%oqs7qDwau+-p0o0! zIA(d@fBTa5(>&2>ki7%!Abl>2WZZ{!!Usp)Vwwwlf(3*CK34OH-sABp{aG=7Xi<}1 zkLzsivmE=h=lgXIrN*Dh*1Pjk`-&ytU)dTgh7~uD<-eLVG*Xac~d7FlR9(N}Um7#WuO$Shj8p6cLF!yHo z@`8XIP7KuC);4cB^5Us@NHIS{jv(z3p<4JUlzpNti~it-msHgp3e$}sEmgO)9z^e*bC)bhq+gnppvVrEetQe@HKv(vE|#71Ah;CPjkn`mrGuKHtrNW zStb}EyyQ@BSdeIIET|TYe)i%a8Fy<7B?GzD@ND3F4!KuBnWj;DS)?<3_aR;qR-p4n zp$UNsZ;=uPcuD6=2^BEfmcM+364hAdSZ2xk+mO`iM1BWAgLj$bPRuF^D)k3;nKtCBLIIxFdL>BZV7Gyga48hR!xwO(@LxBM zou~Z1Z79nnSEzAGG(590JmpY0`E-Zr5Qq85l{Pfz z$l{iVjY}!`Rpcoxsa%0cQaJXo$dX-HTOLj++tv$6LolV-nbITIgu=vI?8L$9g(knS zm$R_19^!i9^$y7N-mx~8$uT-|5Ws;PIH+(KGND0R`I_?#G4dYS{y&5bN8g6yveSZ8 zpwiF-Q5!obn574nKPtOBvgJ3+t;lhIQV)isrtcMEwkY&JZ#hUADBBpge@;m)_~BLD zuCEHERzZoS0CP+gF_psD_me@!uA5R*Fx3Lo2w8N2G6`6RbknyjjAbCHr`m}4YI28+ z+$AIp!c4gWCi^DI6Wqx$3kMYMm*Tu9UX9Y2rT|3~N-^4|uNZ(d~6w z5suNASBalk6iridf{!E7ps&|4jxZ{MwKJRs?M#6HjPeS_<>sQaR0z#rpn!)S6Oxb* zqxz4BASfc>4;ADU zZGPuk7DP7d-<=>b0sdPq@RUI$71%00gHs`Gq_*$-!N~b}B!KZ$Ap&ScsepJ^j{nFL z6pZX19^qjgQr=#}mCE_*X402A9(Cn^yfFpojhy;dNwLESX8`NFdTl|3Mazf->Wq8e zLgt%LlW{)fP_FwRjbiuQ{sByWEhQY5VdTo#c{p;t0^utsWq%;{sR9N$lwMw4T_`E< zG4Y|S?%-q1i~LZ@Ib4{xEU@@WE=r#RwKpQRI-}oDBi8ew#m6gcIH-SC=}VR9767W$ zyRulgB<#_K1(%AvPoX!tZHLSAQZSL6OZOjdiTy=+qomN!9vBXz)(b)h6qx-&>@#Ul zdWT)gGEw%H(7f|ThgN$R{UmS9I`)MpMtvnuHIjR!#y%X!0p4;B5D$1Mx;TohTmwZE}%7PQ5 zJG*-Iy~a@MrMLhV&WmFp=b;Ke>YXBFpeiyVAvrVyZ8xMs)Av-1_ zT1;U#@K6VoxDZ+EN~pi4n`&*yDzSsQ=N&6TZF_jc7##-W!BX{c(lOLeSMwc~B4E2qz6q7=k= zH}NtRUJet^3ki)pTq7UbsA1f~L?0=pj|dW3C`TyRIN1F*?=q2xy>?HfzA7a@UNv!ybGW39JNJ?O z^t$fl^zCanNA4Y4a~(_k%%W`N;pKb`i4UnzQ5#^CgTemx7wFeE`|MSyUne0M4_yQ> z|ETcc*XSji=A&AY>!-p#2Wh{gZJh*ET08Z-l=22p542ScD~P!ZfwwVK%#Uc1;|?li z$JE$NzIG=3$U=03ahP?1Mr=_(S`8OeTcP}lT*)ZO#2-)T8<8Zv5x$h)&j5Z{&sR6 z{a}ht#d{O#mb+b2!m&`CQt2=xqkI=~F>?cyu~5qIQ2Od4*RkgIzc`_F9LhAGlJnA` z7hYsuku;b_8D~)rO?M=1rC~-^&6~j!t~s7^TD9AV@<7vQ%kfz%O_v*UYka;q_l+2jPRbHjsD&L@ANB zAD|F;Yx>zr!~N;McclZw?BHO3jCg$7|OYtmI=_lsB(e z63)zG{e;ln*%a=3i>*YU|ML3c_fKBGsy+gDu@fDdEl)H!edN8YQ;i^=a{ zsy%}Eb8d^~ByAs?-i6$RpJzj@{~mG_|DhkKD-5oGAfRM;*F8G2*62jo6^PIK>gH-SGSvGi+txK$$lx%7+5@IG+=A6bbyJ4E+gzxbWJj`Vr+v0;`XI zhq^@|KoHzso3=Gm-Wd*l2z~ogPCegFN(`iqXj3t$RnJCv-=vhR6YeMa93N_NwjQBO zk-)b`vcsByuwC6aL#C$?`+>bWe$lfhn<)>}*nkG;Jq7sjF^yaF27L7%B}IwmlsJA9 z`iNo$4PZyi72zsKKh(hA9ow`JZMy&Ru0gx1WrKGSL`@2HmT?$376Uw;i_icI$y zPzRr`6|MOES-odSW${o7QWgS4C@_F;@D$h$zexv#uW!p=`iarib~o1B2ITR~DqLUvr&D?NcG^6u1O=DK9p2;^+l# zFWR1iHZ7^_bVJ)I(Pm`eQAlWhFp$^taf=lzWf}Fq7J^L0{KDTdMx(xSH<=QyUcHq% z$*1%eq<4s^V>FMPFT^HRY?Er+p`pcV5!6wbJT4z>IZWZ%QikUKBRk&0JB<)e`DVTJ zp$)OmZeb#&6|!XJfRFODK>p^hdtm~M@d4OB1sEX`M^{~mUvj?$?9KRVhU z&zHKcnrR>*8#Gt5NBk#h5~j|dQ5U#TgZ)x@cXzKGQq3m~-A*0v zI=k55^ZLf^LmnkgmLbEg;LSyRHu}l28;QLYg7s^x%5Q9~Cp@)AU3%%33Wf{%;@e4D zHft^>u~wZe)N?verd_beBC*C%t}GbxvDRmjXmiiGzj`)3(WNrSqbss=2uRZi(w~aa zwp?nIm({N0c^5U7G4Y>YNZz3hkISBe!Pa9`o=2kHF2}`@$uWyW-zR!nvAkFAdw#0} zuU{_?&B9=Tai@B$1#M}pND?B)d(B=L>rcHbo>3jprO#PTLdGg@!+=XR~L|7XOZ|sJ^$)hu1DLth^yon*o`Stc> zO3917hbjGuQ%=Pd4GAZ<%cpXWZ>qR(PL|ki_`W<0SKysb-=CkFXPU#CS7fQy9WAg_ zPK4)kl(g7`c2yOK;)S5~Y*8%A8;LiM4jn_AXL1o@_n3;f!r+Y+Ei~69$47GwJdXR6 zX@cV4mHR0xd}&~2M7U<%wwvGAM5hkyij3L&{d*)o``??V_k*a8L2~Zuqt6c<-SuN_ zLQVPZb(A5zF{0`{$6<)?zftsf&fD!(YP;656^D5LO&A}Jx`yL8Tsn?1&dt<9>kFDP zADZnNx5m;v>i(-KJXe?XxNzh|R(g?F!j5|zj0gIouh6R}8EB`sQQub3EBw_b?N-n5{^HygL)H0#Wrh}gjS<-YcYA*fFvUxAF8 z%-`!VrFi0hBBl5ECjB3sW9K{rM_c2l|9yOMwA5dn;K4HpSRJRZr&pdKlEH+J)SWcN z&a!@9afap{o07;RC(fLj7ADwpNg6F9sny_pg#^lV zED_FR8O-HIowT~h!=?R2zdJDl;iKeEFptt5L2+^UMa0vq5 z0idZ6t0=fJj>9kt_8?_zZ%1!7{WVd3dgtA%P5#BdI6=5CWFoQ69s%@`853(6H;_OSR9pOr?i-4NJ%y|_Pc zOz&!C?kCkPtYf`cYjZ{Jzx$OqtN)IqcczJnbaj@C`M=nJP>qtI^zaR4BLbo{{DAKnSI)7|WWGci%eaRfS{x6FCLEdXOT(7kI7ZE=^<{iijk(`~%F1S9jXn&v zJ7zjkn9W&wht)ZpmsX^2b<^uODcHrC;^Lk8j~GMzJm->zoA@;xy&RlmomUw?M$wF2 zkz0!M8|1Q1Kvdm*S+vb+l!siNvTIRF{c8+QS3U0`vpZ&c-owuj*JztW~Gw>4E^=`3p`CGg99D!Vui->22|WDl zX?st02Z%p=o7vx$Rp#45d5VlK~z8pFa{@_fh-IB3tLO(DBvZ;kng zWqh^wp-mM5^j?nS7bmV;bi>AcM=Lht*5N!<|8{`Q=dF~`vKKFA=Pb#GP8(!E?!{7D zuR)(Nr7%GT*_}DOxFn^*x3Z{Rv52nLBwlA9Oe>P4U0Hr%Z|zj#_ke7JhEggsrlDlJ z#tcxBe`Y6XB*!idLI!N}Gf=CuNgSE|i%MSupq{g~q>t)7-nTU2%8*7#b>O_7q1#qC zmSprJH;kXedVWoLl>Ii2DLC@RqyNU5vZQ|ng|*tQ!D;v?^%>U3=cW#ABb21zG0olO z4?k?HL6#Kg$W?S(4!dY+gs+L{RUS*k&Zo=RAhs?!=(5Ns!JR_pLXhb#-P>63w~ z{rpcU#v5lw-jXh6Wx!&zc?;gSL$Na3Eho%fplM%u*(GdJka^Y}jlavV^>?ZadumPe zED>b>y%YpwRB>Hf@3E>&=OfK%7Xfc|?*3i%Udt8l$icULYCW~LkL|R2iMjXEdu4Z5 zfXUApiD&O>D(9TWHPf8Oo!Di5Z*Ezh-a*w*_t4-6M?FaTL-G!8=HZ*Eb;}<(LE#&Y zHT>gK_uFg~U>6g9^9mh(GwM`l!|KjF(YGnXH8GI?zq6NCk)0^#`}yvJgI7T;q)tUP zaapSgkTcQ zI`k#fiM%X38p>l3VNSR2qFO=-~LS#e=Ts=1IeVk{WY9;v=czxH_qJ45ntSWbVCxl?ZUx-1~jG!}q z02Kvlm41}?79Z(7lN$-= z(ks0w?nMeA)=+RPH35I^1?CACpPw(uP||uj7c9xT`eYDe5GdKI%AFI~uF3Z~Stkn^ zG>VzQ?B*T0`I3HbY~jX1j8Ji@LROIwTDx3lT{tUOBi zV=bGOf$#<=?4&3o1iUge&%+AoO+$p~GM85(NgN{J!+N|djjNo)%d+N!s1(}0ttelv zvv+>;hRKz4B>gi;*x`)c+MelW^d(OW@z=iqRXEap|4@Iw8(o0y|1O; z(qugK)?+id*rWjLTCKyMMOwcDo1`y9sl11qC!mYrz1nGBs-%TBJ0jt z%d)&=S+(g9rUI_}mCfnA$>wFh3|e3^nqy7NdAmr12()ZgORhUZz z>rZBx@{rdOs`N$B+|cM{k`)~PxGZYDSf69Gz$zy(A05MSU6ixZfOi=hSi&_r2CcTlwGp}3)9<=T_k4MMMw;}+(^EDQiXC$r*U^fGCVOGUPyP_m!92zPlME_dlC#MP?} z>#m%#H$su{uQ2%EOV|8|5lxT`4Y6@)9K8m~ZYgI*J3nKvMw21kAspIXr}>#BoaWjT z?4Ermlcj96+Wu$O#!(=4t^h_fA3jVq2&G*%h@f83k2eYTZmknub{z`d!!KC1PA1~uMLeuQvt&D8BkOAIR&%=OjhET@?LDTP3vPnCJRecy5AD3k zI?O*Okz-|fOTTu{HlHpA+WO?~M4_dt3N7u-Po}--+NtY2h+sz{%g(m0bVM!6Y+S5` z&{B&ng*kp!MCVYX54UaQ`cn%<=s@Acr#lg6GgdlJAe?6yE>>1a5N#U)Xe@Rx`8-AxE3~V-_g$ON0?}@Mz1G&%raDr8ah`x!Qb42w6OMQ~02ytC!RSAa z<(@*#4(y=ezYSuz`C>gMBq2wVXk`(|x#&25!d<$0$Y&k?IKsBG?9B!UNORl=v)p;P zc5tppG_n@bT8km=$<3Ybj`?aRx%1e6ZaNTqP>$U%!)~VK{td!zhEXvArwT+KB^TTr zMs6RC%Io+Yw%H0L2#{Q!%6}Cvk)~(@Q%V!_^RfV%qe5#v9Zpu|hSPK1tOC8#8?`b@ z?GrRaQ)Zn@_PIhGCmAX*zx1sL!P`vTGMF7{m90-hP-QgB8S4$dFXJX)W`(YKf|#8E ztHfnKiUzw-B&PzoAZXLn=7%5GSx%gJITeyDSo^LMRn$7D&uPfJ6aHERkE+F5znhPC z;a0Ts4R)tYh==k<&$pj_cR zC$T(jlMOxaBqKuN&qL1DD9?VRLF1f4Vkpechx=Uad+{`tJliE7?az8%y%FlJ~sc<@)N35Bg zbMn?s#$i)yNOu>=$`Y1+&KGv{YU~{#v=J$oz%BTd7aN*n%hhEWRjd4w5mIyAJ2_8& zArtm-ee*lDE|&UEHV&*caZZ44)ae2t-0FA2P7UMXvJY2wphC0RGaG_=Sy9JOzJsU> zOOwC97P)*i`?02`HV#2oiH^K4KZJd^F1dy}(($-RBE%dQ=HDt7Vl&~BHO?XB}RgWSNnJYfZ97e_*6 z*Y184*$Tii9&*D+gp&|~<_3(;AiwurCRQBxQXm~pA^+p&&>P`%3$y2*F6_g}N_<#Z zF8M(GtjwMlkAYFnN-Ce{IlW^-5>i0@VD|6GyudB^q|K5;#Tg&~`}nPv!Hc}`fNWPP z=yTgwo|pJ*X`-{i#^;eAdcF4b9r#wU8GL>9p&mrmp@lkC5JExYs{%hIL>l`q7TJUZD_Lt6yU3@)6 ztIcrt_U=M&v$C4pLk4!7dWEWbDbXMxuZezU3>`^YwUIS7m3EOD-Bg%z^6ZatDLvdw zBwUDwfN8?Hv}OQNj*t>S6yRVVF)XVxf?sHFdv3Gm?<|yWo4)Yf7smJ3L2y)J=cVMa?#p}KCiY*j^wt00mDi2Q-~l@stB84< z{)FEgOqslLuhp%@z%_Gbw0WUR$SLzgINIHrxZu?eDjhIy8K>6a=g0=9Q-6Mzf8MdEa{K>U>AXa0#f>DM^=e;&gIMkH>X; zzp-kgotT{TW!MfWQz;-5-r4Ow5ZoH<{=echyzR?~R=$f2hL&^Xe6wKg>Do5@fK~{i>x~qT=+bIFS-{9G}fl2mL=G8K- zY+A4;9S{ufZa5ROVTSc?HL=Sv$0$TNiYUE0^ED{3so~YFq2yM(b;rR>>B`{~kAQFd zzYtyDTb>BWZf4cI70%kaF&sO$qPu*~Gw8H6`=SR*r@{+khjkomUjnoq7 z;~X6d_%k(H95h%oHW$u)qi!kMJBa%h=5mr>Ls>CIZ_={ut91%lDbb0T~R!lw_+-mg6NV0fR z%VT%bMZJH56y3T5=l$jf0i=PYpc<<#IlNhB~*S%V+(6_~?4i+Q)RQQOf z8jVmf2Vv3#xZD{?j}D`@+=0pAY91Ejgmx_>QVOq=d{`)W_fo0J8wJKGQ%rWfOk|7# z-Xe8%K<+Hk^g~7XlF1ZGY27^LpcTrheT+B;Rx;2wC>wb-IUSGGO;XYwcwxoKepus^ zRyhtihjCGDS%wWTdbymXo1_sPB~RMA2uc_+5t@KZD03n!09IE+m(ZYw3{>#89i@<+ z0=?i`b8(XHSmF^{7F)@Y04ARhQqij)!}qehp};Tu&lFrk;M+7_$TAhm4BDd1Hq#ZJ zbuWIUz3%t{=l*K#Qwc*Tx8vzaZA_+jcM9eOhOy)PfTI3}y4b51_S>f?6!d~7SC zw8t6MD={lzv!XQFBmV3O$)X&s#oMQ~EzCzumbGgg{|JEj_)MOIsHHSceukD=5t!Xx z?Y%E$BK=2&gk8x)Es#zi2>A*`d(avX&+{L;2N(A{O6)ZTNJFlIrdfC;*#<83q?3#S zTypPSYsMOBwm0%Z=_?hV91jJ`7QG$`Bk!+~{gCJ1JyA$W365hV2Voa^a4Bg?NWDh6 zFC~Ht`l_C;?PN*?O2ws`r5>yUMS=^5=^8ZbWrLB{Pk@1fAssQ?D& zmD#2(8g%ENH!Ul4wQE;;VNo=~>nq$oFH@04Zy1;}>6vKOmjVdI=h?3p`h;63K;~}9 zktXs6kur?!|GRslys_s%t$WkFGo@kFo#WG2I)(8YTHuxLB1B0_SDoHBbp+{ zG-Y{*O^R!sVKGVLb=sV}2IB!PTUr_-K|UzIP!DkN@S2C6?KaoMg|RpY;px-jrX@se zz5fhJO=0I8>pGeTINh$NBelr6CZV!iN25Z zVpTK6Xm5RNA1yCpIo9N)CdH}G>S1ugC~-3*+t5oN%^p+~B|6{a_SD5Mq5o{k=t5q8 zJ`bT)DFcrb6I&LJ#-OHuVN=WEh#O>CRE}cvZFnV&#Z5ByYgh^4kI)g1VI(FTca04# zfAFh#DckQ_>p&}0tGP~3W9$(!D2(Kt%RGJV7l-i$v_>_Yj17hL_Gg~3VYoxH=HS%7 zlP7f)+qCv6?aUC0M{>=s8$$*{M+VUL)a9rQ8q%OnfmrU0aeiA(O|FHAK314rmzG~z zuCWQfYiyrm<*CYvK&(}`&6~R8lbGF)wvCw{*P1-}?8VF5*sYNK#G| zrgi*b9)E1nQKCJHJ*mdn)?2#0qh#%0l-@ss81urOER>Z3{m94X+C%`_c{T?3 z=!Ew*z(O_83MkuVyiqJzJby>J{zDPEqL1TpYdwGhxLH*j6!6tJ$gw?%M{UC8_|-pK zmOJR-*hdnsa;>N94QNag{mE=R<8v@OI=rek-GhWGh3w zTjNL$@@6Hc}>u61&4Ymjy2o`|6}4}A^%G&0rDPg~H_mR}VA>?aWGREW8mfd=*B zpVqL>tip7bXD|!2b;1AY#k!k$m^AN=oqf@|c}6VAa-uJGb^F;1PwuiL7t=euqp+@R zKC8C3I+~Y9TpeMzW+__nkoHSKZ7TgzV1l{XawE98jtdIQpMwl;`;S2*W$n*u#$t;?;3<1hE8;hs6yO5ER$ILsne(kP2jhpe3;I<9r0 zZR;4T$W@906CL|zwH=!H7ELT$02bhU%;YKu1;WyK^}nx}$lzu(-Ub7;*l@Pl6!r=H zD`w9^dYaLt2gK}BnL20bIKTOpXy{hiXRGpAO?yO000{a2%Hjc{ZD}~ko63cda zoI(aOj6m8( zWIJ?0R<$In3WP)LQ$Ou29fdaq0Wa)ntF#SWtl`u(`AUWdJpS-*C$3zZxDvxr(74Uo z{utx3>_thbU%vAwy1q{G$2L2WY+ja)tkiC&)uNPE zr&=**$1_t{A5{JyM`z>L;{N~f>t^?Nty;C#s;%20wQj9cwiOnYr6h!{J4IN8(8;x% zZYe8wAdx+IszX^S+?tW6YET@7YNr<03FGesewV7% zF;Qo_MGe}n+i?6g7~j+%f@r69z!3&*@W>18VQoaeHcX*r&`d$Pfwg`ye1$Zt~^x*Pl>RX({Z@?iD=>A^xPdZU>tf@=$lNAJ*YNlM`N76R_ z0Br|`?dCo3lXd&`&Eiy`EEN3dvVHmu_09y8Wz9(z$N78~6Z&`9#G<(G;}Sjziu|sf zuX%aA)o;NUn0zK zflzk3YG7cgBWxVwPw4ghSWILGaz-{@*V?Th@}09NszX?)I{QCC<2%y~X?PEuNl_L`xog7t_YZ(OX#Qaxb!t=S-+T)lCv7 z;fQ^{WZQATAzwlr27r3|DI>FjJ0ux9B|heBW$OiZ6HuqG9+fpQPj)~4a--H>4&Dkx zFZ~K8T+6kQR|3DH)GTRgp^00cko7$`YiD`#?aKA1Vx|giO+tx_qW62LVZ0A%$$j`$ zsa^7guE2UYA}y&kK^yejswls1W{7fPEYZ(^bMIgWSf!x=GUqnWZ`2YZgSgzqsW`^-&7tef zFt!%XZkF1g>Df9Nez($1ew#h3X9eFN^X6N zi)(#I*zO-G`o%PqpC!&?-c8I2jjv}BBl=?^ieSMA=-esccbh^iCdX0PuF#+Bri&kL zn!an}<;BjeB(K?D4C6B72lAzP7pX(co`F96fi5<_cQk;6cmQZKImQZ}ep9=61-leW zY)y_r$6t*$o~?$&j0C3m}9HK%`ciM^A3+A@4EBw^$nVP(3LZ`LYCk z5Md$}Ih9G07(Pb)CDicsSYE@+h25dVX}x*Jv{S_-E@$xfeA$a#F`mxb zV288_R0Tcijy89D9PTzJb_b-zWc&_K6+iJ4X&sKjQ~R|cB9IyT^kd65p%wH~#B7}x z6XG{G$><$6g7d`%I3!E?hJ+wj_{054Hs)dvh1wjG5~9%c$SI#N0Pq z1c{-s8h1VD-}A(g`#+ebXPbIHE0>^qZ&Um$)obsBWM_;zkPbo{X1J8=Nb@%sD(f0=3z=j6484Y#ezKzTgXmDgD+e@xV@{vSryjwV+fs%e9`J zxv0Bdn^a8}vCG4`S7uk7Ja0^lm;E`3mj6#vxTZt%_0@Pj-EQJvd(g z*fS1I6rcFKFT{`CHA!}xdh-knP-qF%Zt3;9lnrNDxq@#9sRw!RBfahd;wqMgS)jx< z+7PjZ%(|LPQ~%>CDZYThe3%jcor&;eL92s7`-;S%LT=uN+o1Mf9(1kxSQugR(X z5{XLf0X3)J@>A;@E;pchWsHafzqriu_Ewo`l;P-uv1uh#TS#i>u_FR5^(JTKr>;N;>0jgRkF4U^$#RCEwxO!oh$Lg2s z(C)>HmaP}BX(*c8`8qs|+r1_C{wAz$tWWJyyoTClDyFtNyDk`fdvN|rjFpaVNnSt@ z0C)iqfMMm!8hd7KIz>`b8{R*hJFem9ie^WHcC16nUrn|G(;bB*m8Nzr2B|6_wI@C7 z{yUaI5_m@B-xhd(*LD$49r!QW%(^<)u69kgBq|e4Ih}9wU1B4+%1!ye)ZtzHIDFR{ z!uzMs<#w116~OCT6j4_cwoTLn)6OPp(nvFAL4L8_BTtBetUsq7F|}FkYJtMzVvb~DCCxtLW8!~lAgApXjwcqL5_=dQfa$A_;xa>j++GUC zMsEQ~jv+Ks-$#>|MVw4acgGI+urS;zUZ;PaSmmaNt@ZgvL!6(#wnLV88OblY`yU4yfa1w7=8X(?V+eX`13|7v6DS=+w$rt8Ov@w220Swx?DQ|9ly?;_<~_yNSRboduzXO`p8|T^}!fgRXpW`TD=! zQ#6*UHJ*7SWYptmOhi9>}3_PjMJ+?!PbBbkl5rK4`8KnY% zTo=lIqp5QD>p|2EU_?XrUSlBuUN!9J6;m&cAf^12$mb;YJ62OUcN6krrzrLDC_eg{ z?XoKW5>$bZTZ$T~P7OtTn9y#OFll8X1@y-zSx=>7q-7XSEiO`4gbxf6`CA4a`fy%d z+sJU=d^7LJ;rSTKuwivcEuo>XcO!oH^1;SsE=nDF*+J|si~1{vHKopJsO9pWm4je5 z-Z2e;Y4W0>7d0un!NdCOzKEF(s%y&fJxlxdzH>;lhV=ZN5p>l{7!sr&t`14b1;B9} zVQ|-jCF`PqG=*)NLJhCEu?`{l09YLUnP3KIRkO*f)N?ym1Nt`9zvv@57Af&Q2L>Va zG?K}J4=Wa(+8RC}_jTVfd|=PBP4BZwp1@lWX;6Ro57V#kZfx)2{({&0k16)ea4o*m zcGPu~#WZ8z8uaM$eIHQCpa2-H^i}2+Jt8=yl-MrgE-kiwwQK%J%FF}HQ*c^lYS+V@ zy(h<*&Mu|kV9UPPmbhid&wtqTa)0KC)O&Y)%F4ZVD;g%yxSQTq&O9Kk@LoR%b}T{P z{W{_CDCB#wawgNOWb+Wh&)jjN63*X$Xu6G8eFn)-7+$TG>e0QWOL6f*3n|+!m{vJf}g6~BgF-!{_S!PI`fEJy3#(0Mc>Kdd*^IqU}V{@g~)F<=m zyWPlVh+%0;!4g2cc5rNZyhiGiBYeSqQ$!ByEvQ+^jAeH+%Y_OPHBDr)k8)8`(~J-= zGsB4iP5OXoJZEXVa7mWT1rj8x<(zp7Yh&@q;|iIU(@lPArSPxaV#4EH-!R% zB?Un5o#!XF?Yf*5$OG3G5dx}ATjQ({%Wg!yn{9OQLUZtLRx!NKpmqY7G@@BdWGd7T zX%c8=eHT{CeM0SOS6kUU|61!_*ngCaaTgC0k?#suIh0pbNfeyIl@(bM)j{%J&))oJyal%ITW1o z4XdU{fY2=Q;%F4HXIgMxIv?0R4IQ^#V%A9G`LLY;7q!%ab8m$`zk2jV51JUm#cK-~ zvnj!tmv3bcBv@NO5%q$MwfWsFBfH%H8M2kuHpH$IbWdv4t4Xc?(b4sDe#)@0@gqdQ z)*!}3^L~aVj6j%uv6xb*J{(OF2U@z_?;A_Q3zZOd+h-0ufV^3rE{n!A_C`gM!w56fCbWQOg{A44_byn#JZ3g&nFGo8+A)Yt}fRp*5>goY+__k;b=_^tnB$Ch>_T+Hl7FZ(M;sk0kypvM+KG~^ z2aNCv5653CFt3WNW=%>0e5Mbe7l~mGg5a?Lu(0Z+%M2H5VFtxX_3>=~4pFfr{IJj}|I2GY@ zKI(f|t%|+v7Z8g7h?LNvpX^nyBsp6=V{9VuI9wv^To2g|fJj9~YP`d54T1p7B$>X_ zrHx7T^BJ_y8S@bAv!A)^O47EFPClF~BDmeRRtXirk=g5{w71$ackYF#_IYmRyz?9 zg(yH8(1kzGV-#TU$>zOcSZ~z)(Fy`R3+-G|(OZt6k*>Aq7i6*uaj(< zX?_xyp25h^mD(2tGVFuO9gG5F)Xpro$8~niB)mk=1+z1f+z8!CsA#ex^y6F=L zAt(R~v0Ayb>dk?O+A+&uAQ#0K%DkHG~@cxi(b`Fu9OGg4l0MS<0d@6e6$5fyQ24_Mx}>V1Qf`WTN9+<8T1fr)9|wzyH8 zjiS*a^IR0xgP(EeM5=}K3MHPm0B5qnNHI9{k|&392Gn<74fnp~t4Aa*O)EG}@oRl# z!y&JC*?Du*)x2~CJ)@DfoK6oCuj6_hP3Qg8&ilv$AV3Tj%3D{>6c4|M@*9SN5MGdl zxSJwQM<~1b4rgB4v>P6!0p?Z%v5Dwpv`|ri>H|_crSvoAC+2D<4z%m2=5Y|Xw}pDq z#L=VpVZo^-2#5g`G2Um{Vd|3q;Xgy4FC$?H%3&kutN;qTp#}?=DLuXE6FA$NDe{6a18n17XFaB4(*VHKIp4cI5e3^oM@P{>qJZ=kA-PP!3k#Nyl+=0er(dwii zuw18R7V$YAGdUg8pRBoER)oPmC3JBkr(NxQ3|wP(m|2#?DVEsPwPy93oX1BzDrrOQ z3T0vcc4rOW)eO3!jZ7bO(Rxoy1s)IrB*@>=`7-F#OSZThUZ{W;Do|`}^-2Y*E|alU z99~Ug%E5b@SG146c z%duA}H(yjxcE6*S88CZq8wxOXQyCU9(}FxT7+_0XkTsw4#EKUhuz42V1EBr$hT&wO z7F$ApZnm`dl&sGtp}lZZ4|!zG^KWX;pQJa&Su$?cJC~GRt|mj%kl`(RGyJ@auXfwL-L_vr*SIXrHQs{C5PY=+UdLh*uFe%nBwvzq0YZg5G5z%2CEbrPG*#G-{zg z1Bk}Ipo{iyk59sp3h-M(*xNiH0$~QnLTQ#o-&cOJCh<;(xQCulof(*YX@FlcT2~~~ z9P@CsD&0qwZg#Z}@r-7_*G@C!{yj>Lg3lf8`Jx!&c41UaQ*YXkO>8Y6|Ch^vBx(I$ zb`3U;{%V_j3Pz_g>X#wzI9tXJQgV7s&c)c79CWmHanT_sn%Xzq(Zt zx!qARI%nL3#HmCcFtU8U<<`vxz~zaFxd|mM1OSpH^!_IqE?@RZSi>~@aXyPQU;&PQ zTu}Ym)lM2uv0szY8_*&N%=Z}h7UJmtn{Sa#W-mXfz0u+PZG5|e{_2H|>N6IGmN;ew z)rxVt<%AER1l>gF!@c025OFbX+Kl9A$7b<)fa5r1Lmh%z3c)gzRwBk9#5+9$$er&Q z&kSS)>H1VgADl(k8}L5}fB}J9ccwL1*h@_KRKsXtw%;?^w@IY*9O#Pe&;=4#H*M>KmDkYMVjJo>z#?Zhwc0 zk9#mSu}H!;#BnqD=RH93pn^2Zk#@|a%LqD8!LYi39S^iu98Uhz!`=druUcnWMLKXyJRC!+v91qN9KVC7&nl++Fi= zJOBU+Hy(zMv*H&`=@IpJr_W!XJwN`b(xq84*+1}*o$ST2s}YuD&Tt_olH}NF(hew{ z6%v=kgzWku2eHXNL+z9SZYWsgf^`L00NN;E-=n2t_C=k<#qaX}K#${Tjm&1yX9?ey zHssL$CTa@^@Jzo8Oeypsr%xL+?cJ{F>kc?#@4Rirs?dC)BDl=rc+JF2xdID;2xpY& zfs)N9!CI8=iQq{n`Fq0Rg$f|ug5^9I_1N!F>3)7E@4MQyN|UWK1r!glEknxqM0T__ zYdCf%$9sn~*M-EVORucUKqy$uw!uQ)Hn>zGif%A0xenYwO}1Pulp`h;n>VD3Nr!He z67Gu23{;)T#@|951oB@krxeYEpNTK&4djk$>UPDHI2^Skna)#E7m6vQ#u@$Bs~`ob z26R}%1hX7~tWeBio4U-Quoe#*`l@gWU_8~r*kk}BEwhbRv|+4cHDBw5kfq_`JULWYuCGJbX-f6gY5{ zM;x_KFB%%7@009+y4UgZ`>Dh=0L8$ge{v>z0nf~Ge1zBluMo+L*4uDuL$?3L+}HSb zk~bF3pC0FMdq^2_{N+B!?3N+6A90_ecerzC`JjaD53+tB&5}l2irQw$klhc9eXQF4 zV!kG<&Zz-lb*Y`^PIMTL6w{3omo&9ArB(d{up^lqo*}gD1mPC7)6yXfDr-OLwB`0{ zO%6YBfN$Hh1206{w-y`9~-Y#7_gygW3E)F@=^96RxG^&0l^aZP=zG2sLLMBRXwN&hx zNJ#yQtRdPofLycEMrfIK4X`YR$_AAspgOx zIA+kb2Be4Vu`x_JujAX5curqpc(nZYWyL1$E70w&x_gBb4xQzSQ<5Up_ALlA4BYf= zp7_i;@!TuZ^eW93)zM;rgovRAfYFXn%wn<+pMKFmY!K61#FTgg$U%Qzi=W^B3z!0I zGV)}1(Vq7J-cEr}S3BT1>17r-mq*v(7WeUw*RK@!d>^`UAD39(p8KwG!`a3!Q1F(+ zeC0Nc1MhEvPHF3*Joe9DD^9ADFNR@Ab@99v9C6*QY!Y?T(VIuxiVH|F`#&n{L4O8)UQ|GDqo* zDoB2wfZ^`agy4+4)A&`$^idw2$ymJ!Am5~)n*utN{l#iR^~7k<55?DXf<@lo8gFp; zYt?Z9$Y9LiI#GipFb8EcPbXtY2Cw71fz8tJhfd=tX!p~0C)V$e-cL<@+8O_OQLj)r z`CRPUWopjugKumaxKH?w=M}GxHF6?L9U2rPy$R=v`{vZQWB(ut7SMG7bPbVT_z1dK z5Qim729Iw)m%H`qg8eI(Ph;`Kv+fQyP`3Vu(obbG)_>oaI7Dye_1(jGE$F#M!HeLF za1cOl?Wo$Kpj!+e32R4}a4w=akC%A=z5UacF6m%>p6TBGW5~VmPi}NUcF~-?dym~R ze&Hug#{E|~JlvW1WivPS+n$tfdmhba6|3z;>hEDgHZ{6J!Z~$Qn8<}=|+YcG`L14^wl%Y_r9*_IYmS%Fw0snja`BgZ#^Lrq~171(uO-R_=J_oHIyIkDC^ zMTa}xl7GL_cB&Pjw&&d6$Cd?iFY6^eTVqp}AnWR8v6;RU3ZjkcK|fINwU>b zx282$efUb1=LTbZ5=^Xil{!ur%bbA;oF?iEELJ3PG9I zC(19Hc=csWTAN#8UxrF6`KOD$$li5q&9zC%JTX(U&z2`yb}+6NbzG4jD51K_j0g@; z@l0p`NaU%{+6`Om{YRSK?XabX2+0AT(|0zDA_}@H_pkZ^-HQ7=|AnvLAae>mY)V3A zVg#3bx7xKpd=la9EG&@VoY;TIIL%Vy9XL6iP`}^2QR7UPl>(1mT8+gPwo3_dh#_SE zhuklnZt|e9omF8bCM_LhG1jwoRO3l!%rH0a%+|}cuDr%FPMYAKE+<`sU1=7TuR@5l zaaWaIN-GGHOGvFBaUA8&lVyD7+RTy6{@qqUgsRmHXoaM?G%@7EyL!$cgyV zHv(T&zqTt-|7$mU)y?7;G*Ru;7x5AA2JGh~Y^h3S1lJ?CaZEp&iQscocK4O&4?|{k zz^5D9n~@&|l5fS0HEXMQl~4Yyv|HUHPSucem?qlk{!g%5uJcQrUHn(Qn(NnT!KJVT z2n^);(aSi=+*)zWH8)%mfa9ur9p%6BD|vO|x-uBo43a11k$3?7#+vzR9H1Eh;$X8M zsBk52qhr@hln`N7=T0mSDgH=Jk#{BVKbAIFleQNY&f-p5aQ9%zN9y>}{BGS{%jGF& zK+5em2J)M)>VQ^BH%Fu8z7t&GG#HL1uB&p0F`KAmdcob3T}~KwE1<@7EFS5aSBgw; z`+>>+pRpr^rH5sAo0RC4;dNqA>t&S_BH0-fJhEGI@bHXWR{&DQ1OJf_W+_j+W$)E( z_=Og2%QhY%a8Npy9$UYDRO?RY?~5LJNnN@?A8}DozV=|IJ@ZFKct4UXOI>51uR7!_ z7X$7MdbLw55B8B#9PXP-4`C0kOxSG?Owce#hiLPeSc;;ZXgo7Y^x(~=wV>B1mldRy zU>7ueiiht&$wj8=Gg8ceO)JU>?^ENBb!hnFar*Q$QNNc8#9#H|f$yJlAhv-?4nYr4 z7NAq@n;^f>xAE%qpS=Jxa4pS1OjcZ}%?aMWGR?fiI9L|W2xH_4yQg#-D;ur%T0(8( zxsTCgzf{Z^SbxaV;+z%{F=DRa#B)cO16~cn2;a7Hhw|sK{FWicvhNW0H!U&Je7k02 zzo%jpQz-iz8KH;O%wz=7RLlfzcPbroL?ExzuE`%65>Po^K)MxoN2~w@qUoGx!qV`5 zHFLG7%XX7hw(!{rHFB)_V0hr_e7~*sFwS*@M3Sc$i`~c)(q}5oFkPp!Nyw|Yf zPU@@Mvh26|tQBVZjJsd8Oj=d7eMb=!@cld@BFwPQD~{1kOqm%ogqDTZU$eb!m=UyG z7E`E)U9a%2?#uAlHoL($skkGSKldbUKfRxOB6pXU=wtb0QWJH#ESCSujF)BIX13{L zJziOB=UYGQ=t zPqtDgX`ACEWvT|dxVn$jZs!kk`t@Zi=c>tz)fx6p=#1hH_0|wk8W=F@7etgtlrXIPzEZ_2+ zuZCF+L!YF4jEK4W_`+FBzC|qK1mhXm>$|D?h3(ZxJxZ8x3U+PMT4Nt zQrcGg%NdIf-bK`)Xh#vkN}#RhmFdY!%HqK;8@&ahD$PQ&;P|ru z?>L~sIfzWGHfC@3-hx79md4qDA&vdPDyb0!4waRr-9=!Wi2s4DkkoBIg?DcQFL8ro z*(Jbfnq1M_ab&%-&hp6Vdn2>Z7R0VZ<2d&LC)yTS=|k9}p@vL@s3PQCum|W6Z-7^i z_(IPgLFsgU@nkm295pK)WD3Az$)v|FM#v`XI_zf^|2t23%&|=&l=p$GXI4UJQ80Zy z0+Gee0oIW5!?p{$Y`&v3nIg4Pv6xl3;3DF}D&(HlyPO25SL(2!EcFk4oDm>)T9>bH z!hAEt-5$8CAG@D(4Lq6>Ohv_q;0yD{4dwbjuj7 zFKsUdOp(0qBS+qNOlLQ*1sry1ftAHs04sNyjQINfNTIP z@^T(|?Tq6)LxxbgVl^xTRpo%?4)EA6!|LPjYDkUdWlci}{z$YNHXX2li>-_;?Q{C?syx;4#STCoOdrfG6^puyGtXb_K#5VzY9> z{{965W>S{SSeLT;>lt7@pPwKvE)P{uJ;P@YB_*E3CtLRoQ(iU4XxJO zj(CA?LQ*&iPPB&jK*VRb(8*TzlKcKRbHcijLWRrm-mawIXn))BseEwN;lPHBxVEh>nfM(og^PAeyy1N^d)I7Zd#d< zuv68Hrx2ysFm4#yQ{bG`2RI^3=1CxS0u!`=RgHu^18#g6jxj<$r&3qngIB+Vqx3B^ z5NNR?P?f}-`*s|}xPGI08(q2Ab!L&=b5E23iV_1v1=MP_mjUGE<`9p!)Eb1K0zf+h zJk0_>*+IB0-=2Fmu~$3mT;9@o3jAiv(ak(UhM}=>;<2#v#9cz_O6%f8GpQCJJPN~a zL2%KTgcVle9;4s=ZWc`rOt17Wz#=cLkXGKN6_R%-h*vk^Rtw2T5bCY-on4G z*W*gfus<*pGa=ie^Zd%Pd}_A>VTMmWBgCB?n~0t+mVRMC*3!f!@T&zBSD8%QgK z)XhLpwrbfl-jSxiaM38R z|7NIYu^E0PuNeQ@zP+QO27k72(b<$cHeJ^GmJAAsLR2BYtw$-0dp?7P*nWiGZz1=d zC5#nuQVAX~uv0-q_Y;=KY+nS7+g&nIF|H?D5fy6-((Zt&FVKo? zkfQ<)or3OpO$=ae36TFf$$*Oj@GGxwc^ZrmJ|1us;>NQpuu%rX0In=+8Q6+@GaZnL zfzdC!?)4D6urbA^OOOg!!y=|mrDRfNu?l>q0-s?Zt&QWS*FQ>4|)ShE~|qAFJ|K2#`|E*)=OK*!I)vc4C{${IXedBIuG)&@9p(~hgvW+V)Nu3aCN(S9ihDx_3ITk9 zIG5Imo2|!*ub+-EdG^26C+MZcfd;fre-yak8EPl~}~2PW%hES&pwm2+=}p%fl}hQgmkAM*H#5 zr54KISC_k1N-b43M^9Q|U3~dpYS2Vn^+|lLsybI*e54a!DR1t)yIO;7HVf+W0I=JO zth*02pp4&wZT_}U_XCv0!dPb%Or5opX3PmNfUaUd`4u~LO^h9Y{8Se{ygoPqfxo@p zeIPLH&7vb^9X6ec)iU!1Hw17rLL9U6sP7Tijkp%09bkdp-ve+8Flj3+w?IlGk?D6v zIyX&iVc2T=FvbE=w?0O ziolX>)CdDi*Fz&s-O|(DE5^Dz^mOT6r6v%}eg!^z=s&Mz+?mAln#7}3KL972{pr?S zhj(7akk>LMxMUkJiC45?pVtbcca9vtoJ&Ym5OhcDbId0u^^%@OQTycNY_Iyw;htCR zfCqO#M+A2+5Cl~~00PYdeifJ@Z7a@bp(iMyNhoEh1;EPz0?Ko!0|R+}|7Q7RD;C~0 zH{Q0=U9VBG9Cx9a3Ye*FZMZx$EK{*kEA~rO8>HeBlUGg3V-n9*`@2VzFQe4Udh%rp zR-qU*Nen#cXMXktebAZN;S>L+Zg@W*(OAIe{TJVIUshc9F5P7_x8&tNS8p0`+jJu2 zKZD3VVxaaML0sZoYAU(67LE{-enrN~Q_QTzsz-?m!sH7L4U=(2Mm*EtC_`{1qcCYX zF+oqbRRv9BCe_IurF$=TpJ_G;>3Nx@(dOq;F+P?Twe|6x|9r?Fg72=dk~caNF!1q_ zBtrE!ip^U_Y&Cr?#{6Q|a4Xkmta`rUCA_7P9c6(Nj789d7E1^|pV{K9KWLfoV663G z86H?q23nav&yEQh{kF;;b-wWww3jCw-5uA;gb5ZPK+i1D6E28}rdi7lRt*+AD>yN{sb-BNpEG;k5v)zV(Foo)%G3Df331t(z|x8f(Nez!pHv|d&2W55Z- z&h(Rz%*wFt^SXi%^0-DN(kos~c((HV2@7f3(yDAL_@KS{zcQQ~3M~7DU@r!;@j!qA zD6z#S?55)lI7=q+nS~yi0U3?+83usKdrN)}0YXMA05tK*JA&vp4Ge0w?iI=yG?u$Z zf4E@%^3(ViD)^j z2W_p8PCRw;WOj$GM4AwZw64#vlAccO9644#^PgXNn%AS_ZJ{>RC)fa%n|i}2AFBy&Ra zNbJ)~djgd|9!b5n6?)8BA8C6krlK(N#F9|ReMSYFFKy{5dfxs2?$R{9MUqesCx>*@ zKQ|!dA@V!16Aa~!3q=}-RIhrT+7nPIqk#UHObXvpKb^_vurzy@awVm9PS~TNfQw|A zr$on^4o!6UrOSJNPvR*47xw)0z#7&`qjpbxB4}XCcyU>jQWD~6D|uCasC=B+ji(&F zV*w9?K55FT$sxk>@Yn6br)CFS!Ue|%Uhz5|AABozJorZNJIt|J@+~PiG5mG&>BOmj z_5`;~Ik1_$>$#5z@P>*7h7Q6KF>0ugqiUyBcLcn-1hyOjNq#@^h5Qm;Mz#CGA|;<( zEI&jfR-ISxNw&+qW*e7tHPi9p*sK}O*=Rwp^Tlgc0B&h7YATIe#O|u}6c#DBhVIW^ChVb9S zS(H|QWChet3m>iVN!v669C0Fuu4>(w(Rm01_?vHUg8`SzLu=$(=ahv!q`c?&zQ7sv z@n|F7_S)k{%A_9av6|qwx!twDC^;J_S-4|`b_eMRae*3s_TsGe32g43El)7i^H zZRN@QF>@m<1#2Rm}!=xOspCJwk~$IoJj5?$h|V`+hN^|9tOB~^l3&|TA< zR1qWc{denJtS>1IM7Es&j<0@qOn;L$S~0k)Je2eGveQg~=@5nACCH?Qlnina_l7ZL z4b3kX+&Te=WTNgNhz0Lpr{bxhmNXe2bQwI$AG~Dj-k$6+!~@|LB&Nc#XGV-&oS?P` zfVd+=B9;L?%zif~zP5Mfsf|7K^d}WbGdREZ;)&@4GT6brAh3rKGB^2_dh)BZ%@r>uv;KtoaEgYn*x%gwPQ*>SLwD zyM3tb=a*VX5(3cEOcZX5j^G7Q?&xPwy$%CQmB>0K3ViHAh>;bIG+$p(w7WdLUnyTZaE(*DFaRH&XKZUluuuZi%C5#)ams|)%?#EfGY3y@Gud1oeIjd zdd;h@>4DU?88EqC46i}AuFTKmzL8xC!!?3lMF8Zi0=f5M>Q<|l<3CBHke$`YC^>kgaFD# zHTiDz-EBEN&4Cx#5S6XhBp3EBPn$GjxvHS*C_n`AWN>_2mUn1R4)xeWh+|hpD4Teu z@z1s5g3rEJaaI&Z){DIZ9c}QvS?)l6FUM*jMd}(UIRdRS%U9>yddBwT*mPltZJD#8 zoRVXR^)#!JeKDI@nWB{+pXcSoYsCM$LIP9F0BNv==qOYZIXu82jR%(Oml5Zh)xY?N zaVmj!<250k#1_MLd40G$_q2j$N#J+dA3?uB<<-ecMW=|$O-*@0qInn&sR%+?)0e(Y3t45jUsZ= zz&bmJ*i-;3PGC~hu*^c77TIO9$^yW}it@Pcil}Mw`CV@yxW?#sc6(EHC1p6fb=;^z+U1 zSM&BQa1b6QZN4B%+6gj=$K+r4Rwdcqt>1m~dOCf@Hd84>bq-3Ab#Hot#6?eeaqDQx z96Rm2YaDC{-gxsNhGx*s9ZA3R4Mb_z_i1cuPW2t)H3Ac{yo^y?QS{x@z2)i55HC~3 zrF?ai)G}m$kVy!(G}@l7xV-e*UpjV=fx5z=QJBqnGm8owH;ZGykQ)bAm0iO}Ay!9{ zgcK@gGqBzZo~-luI$LZ8VyL&V0D#0`lHz&ZAnH?*pn~jXRY0ze@Jokm&udTGYZrGv zUFmR}KhC(!)Y-@nG|UHDNlQoKL!hN5Qr77-vQm-IOOoHXCa4G9mKL$PK%R29jhGqH`L{a5jo%d$-m;e)`XSn;1PH^i`G<$1R?! zCmM?Hn;ni`t@!Y?`3wxLpLRp)eA7_sbXHJ3|Id8K$wI_t-#mYu&_en;REdAmnr_3z zX4%$CI8uC#+{(AV;s1<96psTqyLXYof3Ln-*>Q)e3ywm* zmG}I+9I)&@eR#^%ZpOmZl5@x3s$+XU;{8-o8yo@x6$ZdoEX92QsA&~V%*1g3<+Wru z{F1eOZ-0JEz3@uOzTW+u^H|62>#^rzj5#&U8)c3 z`wodG0A8pzO7HRhTT|NC@MT4Ketqfu>+08UKvAD3#(TrD0bKnad=VHb&|#n~QW01x zq_-dkoQw!8Kjt_QkoqV6Wpl%y-ah0t8c!S%gmWsoyVUCC0; zeBD=;Q$Le4WOrv#kk_JZMdMiQ&%uZc&EmRQ2gH#+7jU6dyeq^ zp|e%GDMg2ZBMs3TgK;y*bQ=!^O9Ze;j0f~O`jaTHB4UY!_m_O>Kod5v3bNrB83!%XB?erY!6Pkq)~pfz(PkVV!(9Sf#Chs_ zY^DPbnZ1*L^|V-%=0p~PZhh^nhwVLmZVr2C=^c~SY>jH`E1S?EDcnyH9Xh)$gg2`Q z|LSTqIYv82cvWLW7&6>d5SXPR_IGt%(e(?HIw)2B*Ut1$b>>!Wwecf$;|3v;!EsAv zbtX?2J6;5a6qN=Ekvtai4QtHC4t65oNk>o4M`U$@&D^$XM<(r%34-{*ol14kApAU~ z=R{HI!Tqrl_Vt|X(o}aJAoGytJktD8;9kAfXghHv*)1;3B~gZx33c%p;(&K60jW$d z1phU9^PQHQXwd!5>KfZdj{Y||db2Ty?BpN^aYnD%bG5q#mr|vrv2j34aFdG_j2VF* zjex!=VIPVZV?A&H&D$UlHnTvb|_SY5-Updxz#eSva&gq$6-7}BH9eK2t zkuHMVRqb2sfOK)+^+9dC@!%F|^t*>i7t>*&W6EKK{I)x~cHfjs!?=1I6 z7-T;j>0NIr-@Ybpg#p+2@y-j}-Plq7bkxNAUCuAdFB@s1cy$;BNh!XMG$ z0R+$3h-Vb&E;VppEr3ZPAp0&-MGk2;xVqQ7FnW%O8*k?31826)<}}*2Hw+v$onpn= zPL;t^1!eI@?Htm6{(q+IkF(LN{pV_h6aHop5y0Ju#4^jSZp4$%_buPThL#{)ytQy;n!<- zan1G2GDnfaV_6KaRoKKc~kfBr<1@C6(4vlj`4vA=z(*o z5?I&-U_$~7-~>46Hw&~t0dN>FC=7@ zv`Xi|13|!pwdvC36@)2xp5N@cQc;6M|K(XcJ7EQWg#~_vf((r- zmIrybhS7t^r$w@6Qd*^L8rEYnN@cy-YmCbPzGnbYZrFx0U?{pNhBOd>G}s1dNV761 z2KB)OA;215SiZPb9wAKN`J_*{tv9EPPv=$D2|-x=$ONq$ye-*>X#i6)Rm3*f1EF~} z#XU~1D1%RluMEh5_iC*ifC4x;3N$#?`NZLvsL1Y=<)$Pfr@%9*>=5N)w!%87aP;MH zG&fDHE4$J*L9hc345c(c0r8Q+ciP=1kb+4-xAPh-=!0ADxI6As)o|o4@9=>Wx-NtD zOIsb^a^5Uml?8HW4s&K_EA)r*#Vk%JBp0wGBwzp}|4;xA=m4oJghKcOJlz5(z}~IX zU;XXGI)a5l_yHuS4Ny2?2t;9o#a{^c1O^rWAqYT`6ohM%gff5vA&3b{_ynnpXcX>J zhc)Dso==bTOM9haSHZ~bvp0~WK0`2rAFRH(U1TExs>CB#3Bbl7z=GxITLAcmon^qJ zMp!B?=_z*US>Od+NC1Cq5pLioe)8hfqtq6BCo}fy7Nr``kOyvLA?qUA${J@|xCKmpxt%WaD?T=;@cwS!9>EVi3ikyf52 zH4+Xa9^kg<04RVp$lfV!=kG49ez=EqkOc|?@AH1R^1TOt_y=hSG_9S3JAhs_K!Q2A z1WphI6PDjOa65t)00am@lQ0NGEr~y9QUJijEnvQrR^i2z1T<)Y7zjJ2@MR91kg&PF zrsiCg=I|LFu1b+MWaTv==)-9rY+D2RYrqyv)C7PAZ~{UYf*w!@e)xws zc@viW1_tzwSa<~?*YF{C=_!^-D%t}8|KI@^ecEgogg5Yw7)eVd+ug6ma(k2!s&R!u zsJ+#T2{*4pC1y*e9PeV?89+L0Ix8iZCjOZy z2RMQODXb@GDAd+8hH7mz&@@d07EK$q@}Tuv|A9>r48g#4TwlLJ9guaoKnvu7hHwB4 zK!L^Twqb!Yc>clURP_js50d8hY!|F`#h$M<}X_cytRdMIzjM(=dtwS`7VXe8D<{u5W?n_1XocWzZOE7Hj)U5+ciJ{k{tpM zIEP?m_irfjDYE)WL|6_9`2d7ID4|O%`?jrikzUBQ6Eu4qpo4SDws7O^X!0N9&K?sX zH>VkgF^2<4z%DyTfE)n6Y=~+xsGiBtNC$Q2aem;1HK2qt{}6$MT0bAy6p|DKC1BGNpnyVg02L^S2`~W(Fb;EZQ!KE} z5Wa0V{zX_if7KV}=0(glWU7f2UD*i*l(hjiEX_lN)Zm;d>v|N4J-eg}Z^4qt)i zf6f93XU^{3^XE^P4;Mas{6I2g%N8_q5*ex}$q*h%84V>uf@F=LHHi`lq9|#TBudC>82x8uXgTq#PiiGou6c)+JkCl(N8gHGL@MTCMBQ0e)*d9YAMF7 z6}NJ&NRjJBLt({I|JoVTB1b`j&`c4c)6fJYg@!Otm(L(xgWrAv?aTA#Qal(b;#q@7 zu;7Ymc+jEKE8AnpjT`ss_Yo~nrIcti8L@yku+lRLwcz=*u z2zr4AmLo}Pp10!GEDj0_F=F%}AizTl4=XUdcrj#QLP(&Jhznh;F-I9_pz%aRXh5{Z z6Hl}?p%6l}^#g_&#-JgG8!{Aw45JJo z*Zz*^=bG!t za^>o=%RW2pwbNecJ#g;TDDPJ7qd@Vp(~~~|b`z^GoqANMO|csN z|D`zn_{%iESap*|6@eV`R%UF)tFF!^qARhznt{qJl!UbYfol-rtRQVw_sSXrc;Lhe z8ek4NfoEICSkKrLM53`ZC|y)YR~X)fzBNDr1q0IzXDm~h%M`3L9)yf%PBR+E46K76 zj0`un;Ttq)APt!)MhhmE4Q?cdVz`(MZuXD~nGgp#WZ8+Pj$?=&Drrem5CrdB@Q@a? zLtEg1(?9+JiylOP0SuVHiXh;C10(#~Hkp?UvNd`E;{{e&J z;*ADyBL{Rq1uR&B4s`H>CinmgI}(Yan#B>4n2025v4b7TFoiVW!BI!SL$t242UuKb zAGZ4?FoP+~KC$U_!#pN3lc`KX4J3B}*j=N5$2><^$|+enOje8s7)Cs=5wk)Ms1&7> zoKWIh&s$1NqIW9m(FC17nZ-1YF_l-OXC@mtj$p@fksq(=$2>}JCW8UVVi;qZ%}AyfpfRBdvw;iMbdZFm zaSR4QXt32}<~2&h#VB&ngJN)_7}=NwZC*i}-n?RA9g~DVx00M+T*{-x|B>7g8#aUH z{Urudn8F<9K~X3IfD{a9zyJ^sxCt~sa0_689geU954gYyg7||P4$wv)P_1fn=mI01 zu!e7Zqp3}q$x8yesh9}Xcu*{=!dL)P*QC4P3f(RV8FaX7@DQ5OH%hkH#6g@}-#b~n!pU#3e zzWL1_j_R>8h~-Ch#IK3e0$C&}NeBqF3T^02w1@cYVjE6m(1j^5(gpt+!WzVZ4wXpa4>T#>Q(hvIzzR07v*KPfx_7Ih?$Y#gQpFl3&#*g9g8CgIWI-d z9R2mq$IHEG1mhP#T<<@>V!mPxdeDL>*8I}9zCt5K1;$_k}l%Pgdhnd zORD3VhHaBQed@Kd9Z)O>#6?$T)VHJ=1QJ=|{@A(X2hNsgHY(Xwo`oyB%t{#=1Yu-DWV#1E z@Q4EQp2AqN%%riTVWPQnpN>66}c@OuZqTL{aR+M!%mR!Ta^P4 z)&;bH3fzmu)A+}K0En6OhZFq5G5l5H>5)_Y&@B8yo=tp zAfSLlFxW%xuy#D@402l%0aH2gxzpx=F|#r+V%8?4q<(Nf2K+#SlFG=vZEdT>7zza~pG?c?MkXZoshkrEE{{r~HPN*RR{!tlHLL)q2G<<_K979k566T4I z1{%lGY2KfqPp{}opnV`$z?TS0LL{7z4pQ%8xRhZzTy3K}&h=}+=yaeA%Y0!wd6lp|aV{l>=yro%|M)0A=C#n>O z^-B);z%E`N6zo(_WrGNyKmiDV{{~1$Y=9rnyh2VMg|M975Rn8)5CSCF0i`v}3B&*@ z0HdVH-vj;vG0w^T1wfSzfCG3y2QWYf48ajBzyUyG7x=vT+5kc#UA-BXVLyKm7^_8jI!~3v=F)tPm1aoP`;NMG7uS zkMW$dET8sr)xL0~*(@@gNEHs6El?3W_ z%*rIk9nOLwI7B8Ofd-62|2@zHjK=6ZyCXpC-x15AJgbikkz>Y%m&9Q42f zNI(blfXYon9?qP9IK&pfK?@AP;i!NUOaxfq6HLSc_n0H3-clMK=Q@rLsshwkG}f_= z-$gu+rCf>#+G0hZjFP-YTL{7L&>E(lUB~e$JstE-SM(tFt~U zv_|W(&V#VdgFBQ1|1BWHI^>Sp$)~rT+CJa|Is^kEAVMIV>$&EEx&}fXu&cYWtGc%9 zy2dNL)~mhVtGwnbzOHMz1_C1NE5HV=pPd$9h2dYy z#I4;D?81Vr|J8P_x^k_&cI~-(t>P{&<2J72J}%@&uH;TGY}desxIuNuIjSx?6xj`$}a52uI}RJ?cOf!)&uLN zF11pt>jtmt+HULquI}1y?#eFm?(XwOFMbkl?6xlRx~}V?P>H4p*!l*k~EC0sm`lhdp_U`h|uLG~H^yY5$DsTuN zuk|`F|L?Bw^O`X7zA)}O@Af`0@fvXbo^AmTueA2C5C1R_2eA+jasRe2J=g<2d~WD2 zajA{26F)H&JF)1D4xBu36+7ghjBcJlahz!JA4V}250e+)$rIxPKG*{qo3R?3F&Fbm zK2R~9jIo`7F&G0t8{4rH<3qUa@fz!~9@8-$e=#8Y@foABAtP}gA2K4Zu@wt)xGFLv z8?qYTaj4a?>`?I=BU2t1awMlQBmc15C^6AJiDW7sgdTtJ`at=OGx3MxSyK;fS z@+!-+aj7yb+cFN)vJ%fSFY7Wc!!j`QaxdR9F%R=9?=c|n!!LL1F6Xi{2Xib(^D$F1 z|1U3d5;JoS-qtHO^A(RSF_-Zq`!PQ#GZcq%5>Im%FEbc}vM^gSG!u|C*D^f6vpiSx zJ$rLE$MZhhb3d!|KhyI$fAZ-5F%*|GKl^e*8?!zuv_CsEKtnV==kr28^FuRqMbC39 z*Kwe;OdKa~KabQYW=iFEvv)wNpPeR7bT`Pc>CnwN+m=R%f+VZ#7qUwO4;N zSckP(k2P7BwOOAvTBo&IuQgk@wOhY6T*tLs&oy1wwO!veUgx!5?=@fdwO{`=|6m8U zU=KE77q(#^Hex5XVlOshH@0IxHe^S(WKT9_SGHweHfCqGW^XoUceZDLHfV>oXpc5& zm$qr2HfpD~YOgkHx3+7)Hf+bXY|l1r*S2lnHg4y(Ztpg4_qK2UHgE^Ga1S?e7q@XA zH*zPpaxXV?H@9;?H*`n0bWb;RSGRRvH+E;Yc5gR#cei(cH+YA)c#k)Em$!MJH+rYH zdapNox3_!0H+;vpe9t$1*SCG&H-6{0e(yJb_qTulH-HDYfDbr<7r22RID#j*f-g9O zH@Jg8ID|*IgiknySGa{=IEH7qhHp5BcesatIEaV1h>tjlm$-?acw0 z7&B^|$gd;6jUYpc97(dI$&)Bks$9vkrOTHvW6GRKv*yK)Gb>iK$+M@=pFo2O9ZIyQ z(W6L{DqV_k9@D2#qe`7hwW`&tShGgW6G&@NE?m5d9ZR;X*|TWVs$I*rt=qS7(BSZEgd2YXc|NaTQ-0||s%o254 zESRryL7XBpXBG|GwCmSD>)qR@ur$JY07kz}M$#fZfxkt5wCn6NKhLm_IvvO^C9>qu zqtASfm@>+)d8ldJX)q65Edan1|J2NKFqKq>;&-a(W_Xq|US;Uf@?a4ABKX5`(Nkrz42 zwBd#h-P5F#SZ0Y*F!l8apO(?0fadB%^@8F>(OaEUn) zm>9KzCrD|oInX-)^dsn@NY!^{OMK4M51BT4xeieI5F?VF3{gXqM8NXJ@=4`=&N4||AbpUuEMonbX=%tqFb2Sb5BC7lDW^YutMdHZMZ; znu{NF_10p6RZ`3Yk+_m0VYh+EQ!b7)bxJ%NbhAPVvnpA& zT-R+kT`w!7G>;0m|BRH^Wlc#?xK$gJ_gQOK*{a`nH}3dQX)DBVL%cN*+_xS3p8#i1q*4i|ANr9*v?MSy9X0W*2-Q!N{zz082ITbJE zk8Sh>SFJ_v)bo2ipPJOIUHG(G>qx%(EKu`wN9GT0@dz*e_($afwm`$CKhQqsOIF(T zC7q6u`sCMd|NZz6qtM+?YmpadsK!S^VJ z3vH{Q1~I`N56jG`2$NX05z@rqc?q87Kv#V&gBi(m|+ z7{^G)GMe#>XiTFT*T}{;y77&0jH4XqNXI(b@s4=RqaOFj$3FV;kAMuMAO}gvLK^ar zh)kp+7s<#*I`WZ_jHD!elEFz@@{*X$q$a0=z)gBmTw?pADEUYO8jSLksEiCX?m??m zy7DeIXox8x=AD(j@|JH2R}oBd1pr6@Iz|IPeKgfRTpF`24*)Z_q4S;a^a*$l7teY+aeDU5 zr#|<||IfJ?34Z_Tr$8lG%z+wIhWk6HLKn)=hC1}25RIrrCrZ(MCbXg$&8S8eZs<@11_4x%UY1mmqPb{EIvFv1nglF)h^0Yn`qDqfR3{j@o)`#1 zQ;2blN+scfd~Bf8o+1*c0uc>J0O3*qD57z;LMhjF0e8_amcD^6Hk+miK&S=a$B zP~nSuc-I}MI0vz+3rR5uc7}BTz&OC+4tv-G9i_c^$ zAg+A}{2IjoV7K4^$2Ua#-_fjsM+7G1#AZlWfzTiXOF#uWXu8b^%W-W@CEimm7cI2C#)q*rD8-Al0r+EYR2NLBgqXZK%YO zvW*mSo2J&?&f`7GQHgMq!yf<0hpB~fDgb~30GxIWZC;UXJO;zb2+0Sur5$Wmq1z|^ z$eoyz;}3K9dyT8G#iVHJyJ-)**spfD{qUiVhs#kJQ|1;tTi&Eb2knx9`S&O(1%X+q8t6_NKd-bm(KL2JN@ZUkGj;S zPW7r={pwiHy4JVO^{#vU>tGMN*vC%xvQPaT@vsMdRfrF8yh03ckGtIGPWQUo{qA_r zyWaQC_rCl6?|=`y;0I6m!W;hZh)=xY7ti>{JO1&IkG$k3Pxw7J0vsCO2tLYD4qrVE zAKSo#EY!gcvzz|(s87A>SI_#^yZ-gCkG7MSIaq&D)r09L5FKbG5y5-+6MiGO9WnKTKzM#C=!8vpU2x@o zPuPAnn1bu~gjKj$QTS6^xP?$CfBM6PWaWij=z|7PhG)2j^9KM!I9W$#WJ`!Y2`D#8 z$Q^8Geqfk~DR>Zk_=hn#hJa{=gVas`h@x1EnnjAHn2K=qh7*BsEfY1h&;%N!>EI-7#h52KXqt}sK|uJScASr5sQP>7BhnUH_TkyluLHEEG0{~3hpcY`pAkogD^UPy-uXpROc zlNX7FIhlV|c#|Rdj_P=kU`Ucp`Hd?%hZ#ANRe6TnXp={ol{%S}WH^=8xRp-$g<@HT z!U&C8c#sSURwcNP;}d@WK$N}MlL{GyMtPTPNS1mDgm&4NYxt875tR26kwFER2+5a- znS+YCm?%h(j`^5v>5xzbkwe*gk;#XRnVA}Rl7GpW83>u6xq*`jl!SSNvoM#Kd6lCn znZ4MWqzNgo*@Bxnn-rK2g87JWNj`>o5w_WcwfURe_?p65fij41mrGf6N(n z-`S83aa}@bhrVf*@!65txu5sf@chW)ZPy$>N~Vxtd_Pq4#&8C^~}!x}x!?qAvQ5x!Dk|C=p&j zPYYo#tI!5*KqpQ@qWCGDCmN$K3Zq0iiY`UC{h6m_ zxu<+ue)H*^^mq}1Ixcexp+owoWa_7i{|bqp*{G+8r;s{Ufr_Y}Nsc8dr01EZ06M8* zx~Y6RUXSXjI#H<}s-Tz}q;#67q#C7S>ZzM1Qmu-lk~*u$gQg0hro5S{s|u=iTBg7H zXtwI8uR5s)+K32BnQq!Tstgia3(8{R8%8;kJtiW@qr%J6|8m-cbs^My% zwK}Uph^)%0t*q0mn&_=f+NsxSt+ooRzj~nQ+CTl+uH&k!?)t9sYOeoEs^_YzG|I2z z!>yFrul|~x$eEnuYADE25wW_jq(ZSvXs-#XuIoyk&T6r!T4WQuuk>oB#oDUany%UR zIQeR#3QMHmI<7wmv5#W00}((D|4Xqao3XXRpeTc|3EHwTDzg&X51lcy;To&u8m|rO zu{k@K1}iH7P^c;6vrb#5I9r38X0bNAd;V~<;W~y(Yq1?_sVVCg2Zt3@Tc1bCwD3Bw zAe*&pTe6Tkw%J;?W5EmnFbAA~CTWqj1#7h;o3th?xBxq}MN6@Cd$0ba4*;+Q03Z*O z;0Uqs3hHnV9R~ndniYNvrL3y7ato=1E3hLArirVw;Pe*cK?nfg2VVdHo-hXjF$eV~ z7Mq)#3z%wMJGJcaXOL5T^s730wLUwVSKC%d|rav@zPY zZu_>sJFLU2w$qvwlW-1l{}2uh5opsO5QX3non*H)@w{(|hitn)xa+&Ti@OdRvg5kF zfBUgsAqN^E3w_J0mP)-Yx*5Eiz1RD>po_qNiocwzv2?)-f}jxckOs7Mwm-qHtLnaS z8@iJkv-5kk5(@x_yRW9|v`EVrf-nbb@CyP#2+^Yu5!}2m!MAeEKoE0K5A#M;0C2fXp`|9O!M)4D9Xva@dr@2b!v(9u zV-aPBV!;|QEDqcgR4k-c+`Bsgw=|2x39LT=KtLaCt6r>|L0k}@1~F-z!JTWaqv07_ zoKRbQ!b5Aov&z74{|UxiCOmzNsB0X!Sc}N zDakv`%)r~rzpB33=|Y-anV}uMqCDCXdBziT*)XfiaopIp%-YbbiKs0>tog>U{il!3 zr@0N;GmUE~RNFswKnE0m!ks?EUEB@!e#o8N61d#Ayxi#r-S8*f%8lH|UEJ3#+!aXO z?#JEj|L5K82j0Z06XLCY#O|A)*APcmx<+PyXozUe-E(=-S31VL6 zSzZZP?g)FZ2X)W}ickkvAO=7L%{ijL@?zUZWm=zkvR7QW&v zuIePt>Z$JP6n^QkPU)Hs>Z5M!qMqxFuIr`V=z%^9kY3`%unM%WO7xjRm$43Cc5JHA z?9Tq|&>roo;Su~G?bd$n*pBVhjv(wX4bk8X)9?$kAnxKG0~Rm^uMmE|;0wR7?!O=n z>&^_*AP(d34fS5{-;nS5z75~74cjmc(|`>Dj|~L>3$S1aiNFZ4pb3tE2VpP;Yk=^H zum+Og4*xYk1C;F=zwsR3@g6Vjw)YDnKk_6G48ITzB>xL0Px2_Q@*=^es>IQ9trkKlN7s^?0B6 zc(3y*Z}ZatWp*1t{$LN(5De%*uqgBo>hU|Y;Sckm4)FH)^Y9NGH^fF959SjO>QLD3 zwGWg}4;x<(@Yd}0pbns)8Ad!0{80J%fDiA$4)}2Nrb7AZFb~sQD4L&Tj}LF9fBMma z4#zMJ&JYc9uk}Bm0dNotVbAr_@C(df@8Ur3;-K%}5DxqP4bkxL|1R*@|8NZ0APtR> z2#L@Lv%v5U5Al*9@s!{W(Q-h!u@8@55C1?9wf_%B4EY?_4y~^a>M$$-5l@}HfArMV z`{z%gzkdxKKCEYtVZw&?2-Z_auc1GC>JIjc*Dl|_dFt@>tEeuXzkLGnG2~YgVM&wt zR8I6~?$^#>zk2=x=5y!Hph0^cC0bM|P@p}5J%tK1=&`B4j#;&O?CLao`2g?(%P(I( ze=`4-oX4+YMw{>O@$)!RAVGr&AKtxdaihYL8dI*!_fDk0kYp8N9Eh@QzJ4W7mLyp5 zr!1edcnB@Uc%GV_uOa zo?>`G;YA~U zssRxIY(hcBoNrL!#F`yv<7Jk5q|pTxcJA?K98?^cMnhDX@sSl+{OSjtX{NEpnV~qF zMF(6jsV{ zNF1hyT93WYijqn_rj7}QDygcfswb_qnr7dt_T`GlO#$eqpH4r`rAl{_T{hKKTYWXw zS?8(s)_ihp=tfO~*^$R@J)I{XeSSQ5Nm!Ug#hMrS5k`_&&_Q++O~6rSOK0SfRT_Nu z;pnRFE~6|M%RH0ww9irtiYa*2Gc9R&?afRp)#?%O|Km@8Oa)a&G(lBWSXp63nsj8P zRhJ<7!Pr-QHtzVJk-?^?pM0t*CCMe5jFl8;UUZuoUh3J0pK(|@#2R%{LB$t!gki-F zaCWqZywA8Ry6B{ddbd2K<=tGfr2oZg^I+f`7{Rf?Di{EF?DOYA1hde>b=ha9y>{Dg z53qFm$N@*5X3p8h9#*>9H#YnK^&<^IP^gaWZVNEVH?Lb zz%dJX6k{7Q;>9;&WDRS);uW!&g#|V7iVXh1{{wIs+EuDzCp&#ZPkQ3hH^$+oa0rS} zh4RLkv|%Vz7y=X=)Py4>5r!=!LK1&4L?Srhj(-%)HLyVkIP{TBOUc9MmWw<4_(MZWZUcB_reDY@|kZK_5g=`^l^Ji6%+%gs7|F{P|ys?j8(1IH1h=wev0S|C61AF=aMK$1Y zj~ng6lFvv7IvS{sbij`rv4{pzd{#N5Y0hZlQCd&VG!3jcOm>rjcSa~8;>dnKACYJ3D97^}A`U~K0(<-r2R(f;i&=~Vk@}d%E9TMCe9FQ->?+Sw)C0=( zETxq3dP+hUdatI%i(iFes8zVqnj_M#t+=y~7relQEWp*Scg1U79i%&gk;H;ClE+7j zVGlvt<6GLuk?*>34Q9}S9K5)O|5Oco3U2)27P6=WC0_ABjW!}0_gIH~k}(T=00SB8 zxal}X!HapEqZnO;A3yw24?)(09^IJ4I3C%GT~Oi|?RYIOl2HkJ{Gt+jkcLKc&;#Z& z7XZw4K?~j#C#-A*E7CXyo=zx^6t3`3EgTdK2a1hGY(f&6cvPg&Km|j1f>DN0o$l(x znsC%29{&hzI8JeiYwnR3!H7tdBC?Gj&4U}6n8za@QQ6C8cC)VthcG;Q55R$i9`l!VpSfMg>Y$6!za0e=+1e18A0`<&cCd zKCF*N)FKtu_{Tk9!HjJ{q8{?#U_I(#L2yVy8rwLOL_uxP%VG5=T5Za@PL1kTo(XhO zQOZ`Pp~7)kxw=}(@;~r1-!22-9o_?qz z;uW-*#hjhpKw7K<&n%&al$_yMM`97S&A`PapQn%6XcQhZ%7;4eAPY&*_!WQ@#D8}I_S=r*TS|9~r{Dhb8LzeQ-)TfcG~wN`jmR3nkwh1M&2#dyXwzHz+r6#({_ zhmPfOj!>hf>8!Z2%#PJ(8u#0oeWhp;v0cI#Ur`^3w!Wr zAJnJ>MfI544Z)*<=jMhmz=02E%wit(n8!3`u@8Fe;*zJ3MpKKy)Z$9R7pHi}C~}|z zwwr+M8eluy;qZ!`SeKyK_yyigh{8SfX@xCxVK@kNrWj%a6_!eb84O{DHEdxEhTw!D zB*6$&tfL>bWF0@wVTy6UWfR-bhjX-E4`2Mv9?~!>KDJSeFU|wg-@pg_cHZ+w)*|R& zAbPLBVp=?E|6&g=x`#=|!9IPgULN{5M=qLa@@M#>9;s;g@nLZcePCi6=s@!|P(j#P zOal_A_(n9sF@A|&IV-J1KUMsd74;Ljl~9(l)cWP{Du-hnF+2u#`9%=S!$$L>7>9mP zhfTl+e2A&xBR$hYy#aHDbO5>6i#?r-2BaG?-^m3+FoQ8z2Q2Z2|NDm1i3eDa2GG)` zPYJnZ;09kvs(Vm|S=gC#c!p-^q5vv}bD#$u3x{Vo1qT|x@zaKX8K`|BxKLWSQG&Jf zGe7mKE+$K;Z5W4hsJ|=wm+UIKhw{I30Kj~Rhp@p1b|5VFDLw4j23KeYeDDTW7>Idz z2TgDi|9kMdTR?_zbA+1_mqMrlJlH^%NC)Xz_4eShxMrha%cx> zCEoD@DXnihFRzdXLts)1BYRf2UtJ_Vmbz2 zkRN@ZhXv9x0t*LY2#01UM#6K2TNnn33Wvgjzxa!?_Jhm0lrlqkI5FzMa1gS72_7uL z4})n1l@v2ykf&ydFs70OaA*f+s7ZLZ$>!NfR2T=Q)H!QV2362DUT6n(s02j-EuKk9 z>|;t@7@v2zhFgdRUVw&Qa0X+zB*lVCdJGDv9IXaA1_)~ge+0;G=s|uvh9DEQ{~5wN zBO^{$A~>j^iuYqehI+rOpufDdvL_odTB@aoO38BgmhthO!;DESslPKW~D<(|8^h-tcTh1wDzbR}&yv$4A%s=Wp$p;~a z)X_Mq(Zv^q(OlG>e-N2#h=p%Z2UvIoUOFoO&<6oJhaa_vcHjkWI8Sb1E&6B&|7WNN0cD0} zM2B~P241j1Zg>T089r;E2Rr?SSD1o7odPUC0wnN(9#8=f&;T_^oU9lf)tEnN_=ZS4 zAwJC(XrW4aL_Cs^-&<@22be* zZpayLAR9d5g=q*NCzS^%l~PdPg)6y-ZzzWVl@GKj2XxqnaA2f-IEQ(NReFerYv6@1 zqLQiOI$kh_rkV$9RR?#Nx^7@3dx(*5*avg?(Rt7Y5fq0fgV*1L%Mg_%xui>eITKMk zlS7#X`-9FBbvXV55LS(#8skxP-~}+5Rb8mnTg}yJ*j0P5q$iD1|8SVnS5Sv7O`>U% z4}xU}7~=(4a36F4*J?FV1KNi$l?Ho22Xv@bX*knY0Eaz|1#2*{S74#uOt{~)$Y?ke zs*r}}WF-%cKUHMETZ79(`PUMK*We+Gf?0@tU{zt*Ly>)!S5R0_(S~k7g-O!}SrGcEWFo*Qf9!|PTy#zI$)rM`T$R`U?B_uL?&0K#`&Uxh*e}&Hb^Uc2W2Nrd! z7)9OGRow*fIM_Hzu<(_J=m(ymk1fTAouQGtxQBhP2xWUD|9!}Zdk`66z@}cgyxP6I zumFqrpby-o5&5u)+r8anh24LsUHXWRY4C-FQjPANg(>g=6;RYz*a?C<6Gu%b6FLWn z6>Bi|egj+`W-U8Vlg% zh2njP`A`T6o(Sb_i20B$`nX{EP+*5(-rAjD3H}FjkU~$4KTn)Lc|Bo(*;lq4zgpAF zAPWa^n9zUq1~IY+w8@Xs-C+4xh#sb01g4J#243MkHVB>w>os79nBC{q-~xUKmWU7O zrQ&^{hzpk37w$nnzT7ds zS9yike&aWOU0SA{1~|6D*;xlY(<`u8-Bea(1X+ktW}TCSV!U|d`H13;s9ggV3uwEG zSWcS{PU1$s<+PDy?L7u(m*tOFyBX=we@A+_GKYJ39n6M1wk+bN@xU; z%t%le$u0PSM1Tc%C|%`+T4A>1B&J{uj@^gI2YO&95B_0{K^t|pWm?_{;P~acD2FTS z7k=&6Z%`w25bSyS$9n z=#9ph5WZgE;8H03)$x-;x%6ToR5&Ngzgf}>g?ln@5Vc6|!GxP=Z@A%z&dVDgbpj*le%WdzP>E`7q4o@5mk<4i^+DU;4FPAF|)=%vMm$sIqR zZc7`+VSa!sT3qF~hU<=N<+*m{0BMMAV1|JTlt2l;zW$T@fdyg_6KTkkbN~m#76)+X zlW2(4X$Wk0O$T$3Y<4(LHe19+JWp{D24TR_Kr#n+hzHPihj{?)k8Ou|P@&4cY|NHy zbAVW^~+kwMS&n#5FTB6H;A! zbIoYEWTl9*Q(dD%HQ(xY%c zw4Q#)DAG^XnaeTtKbaT9^P9u+N#`qGK8;zX3me@2|Sz7JcvM&fnMBZ5QjI{Q1R~<|A-}JmEUtk+o@P`g^W&vkQ)$Ol3S@ z1|E`iG$p|-nxjoAP|LT`!gvs35X4pnu$3j%xHY&^DW-|+Ov+HB>qQGrvJ|`Y$c#PL z{3{`4U?FVE)|s@l;;BFP+QJ5*{^Toe`FoMLdQU3kTcozwcB+cfS^~PxZy|Jd)g$%x zE3?tkz#m1r57+cr&RPvv2&|^Ma9I&$ z!Zj*va%a3H-Uf;@Z-8gs>3Hr6jx25TgkPau)%$uidC~2LWNho{)L$<)`|JMoSAWZI z9o%_)_1>$i2))fL#6fG*QYBZg@K0BYZgA!<9P~CY+j6^)ZIe86uGTcN;_`Yt^G1bw zd>BpsRS)w`V%%-d$THJ|Yp>ou{TEoF7aKy4@37W9oxfH+*(W`Lx4z%GzJE32=V9IA zN-BKAt^XT$-?vbg@T}IsryhreT!)DCb>#jvv9Wjj(``m?k4EyxjW7Lvl_2}~AVnGr z_pgWhW8s)2n8j77l_^ZPnPh{w!bSk6_{!LiQ5fQjJ@F|goTTUSg!X4L>0T9kbZ10_ zSqc{c>=G~-Fx%ug$aW74<(EgqY-fC9zL9i0^|N!LUs#L}6Wr+=N)_p;?cxyF{AXN? zEkx)tdzP7gfth~bLw}yDUbw4~diz=~5HB)3rEEM3KnBvP9s8%P?x=?$xg^}zzgHS$ zF!KcUw_`8pXLCxMFd)W74MLc8l3Jz4`36G;ZR0Ik?^ZatxjMED3dmN`C zaqhlOV)wkigSh2g(bU4$w_`%2dfWf*Ju2Py)ktN3A~VoFzG|MrrWDWk&E`>i35R4P zEVG&7QWo+&>$>!P>Bf)es`ZZrJ@`Y#ZNtV73tJz~ zN_|;Y$u62QEq^+-K2c}yX?lF-&(_C|sGmQMwGXzJ--g}1{IAFN+wq~5VvYaZo`a=^ z*YSJ97lBW3TC}~vbQ}KiMsay^H=e793 z^nOgxkw~8A7faFis*+Wjd0LA|@Hs6W??K_TakD`)jLh%!6vauSFC(h&jeJCT1?!0j zIhONmmRW?_GLg)+jHvg;Vs2XJGZz!s@=Dz=|FTj&nWZZG%k>rWU=*KFMTYp32KsVz zii~IS{XWdbNt%3|jdL?YM5xV}qg`P$PJC)&g`CtO2IQo!#k)?rlN^@ZOD<4R+8t_%Kws`Vyyq1Ed~Z4y&b6=j)i zE=B{NU-R2*eyg6W(G$@ArfDHv>f&>;7fy0t(o}PeKdBG8^oUsix@lakRLyCa7T?y? z7|QHaz-H+()F_(h)T!e)-|INS8hE}zrInZPITnEiO%gT#l6?c?-Zej%I8v= zJIPwtv~2FH?5U@Xu;iY(C_9=rvxv?0!AR7T zpep)qY>fC<&|esSt%d^MaqEwa;veEJbZL~@2mjr_wdn9bLeB5D^oVTVW39LRPw@6* zdf%+BFqyzyKjb>cusX1;O|YM-fBwyFHFzzp+ds~24jscv%$Es~v%cg1AM3MS>Yv9} zsB*D_h|0X6uO@f@R9owAnU~1uKMKmbWcZu&!eh%MCy&yQZq|4wGd~nZz0-#n-|gx$ zwB^GsFhZtmyTRH>>ZkfQHZ8x+mi_PdI^^^J8k{^Z9N;Rynq4O`9GMupf4OEE{W(`@_-Lf z)Y$YLHocfrG$N!gFg*6P`X7m!h$C+%`|Z~pfvOLt+8~E@_mzU9^mjB>a$< zDeb;?O9A%!Y@sF;FPOsA(U2sWEtg;N88_IZd9{n?_2c}G45R!z$J;uv)LV~PG9$1_ z&6u<>;kw}T_Ow&iru`)hfro_$#;Futy)JfwRCfK&O zc@!fI5sqWz2J4wbr^rP*QG5=n8f3N;Y4ym#=vYQWi*s(?af#5nzeMz@28i8*mMo9| z!hf-7vwTS=FJP(-;rFhWedB;p_(g6&KtLj5Z4INpz}P5R$V%bKuF*efq%9HCZU;EI zs??YVr^d3aocV7q@yEl7KPsU{znsThy6w0h@hS%GN-{W6!KMBvCq3uBavwi`CwM~6 z_0_&_4kvleUcHmizn*&#t`9f`wwUUwnsf!>Ax>qRYmc_MK0>}u%1+Q>vM$f-8pF?* z(kSw>JWp-h6iwCUADo1Ts6(C{zA;j%dnsTPK6-ZHTj@ui@?0H}^oD3|=gKD*?O$DL zE?$4aDoXqFyH(m?l;~*4-S|PFZ5*}fGrp0K5wB+P-kZ%?ElOhZ-C+0C&?lLsW zr9nf5NX}Pfuj~ty{4ACL!;z{&RyVBRDYH^##U@?Ca(~_UJQxQqWZ=AHM_b{RNawmyK{Ep#}Ge6pzdt*P{J9g<{ z=V<>vISbchaIJa0YZYV{yt0V3`s8By^l8vAl$W)4-|XC5PDL&CnNeoQeoIkRAJR$aF7XLfa= z%jZ=#9Gb@9_F+m~ZZ3 zgMt(nj`rR*XE**>fB#Ru#x_Pqwu50r=I5Q;9&lNL?I+#UhdYd8Xq%(f1kc;g?Dx;# zBNnHb8|N##F8*k~6M1ZY?3&VkHgzZtfdLVa_httjDX=D&p*e>bLh5j3;`Q0L?^TmV z#FKai?+V)(Fl$nw6cUsIKu3D>ImU+>GHAzr%miCz{?DpYj3vDs+9CINUz=qUlkpC$ z>PFdVgB;kH6J(m16`n%OyUVCP&!P#Sil7i70o16RIk|dJT@&JFY`8Ee;Bzsv^4Lm^ zZ0=`USWYz%8POLJL+K2DddqO<3J<%Wh{vlI^m<0oUL~taD`!oY(|YKIw7^fvJ5F&| zCWDRUAM$+a$h40R^nBt_Wf^@dh`Y#K3#QlU;plMdKwPkCE`OJl-Oc~$9wE7s#3Z9{ z*s_BXLQ^i`r+yIMf7QBc8gjuhR#4dE{uis|%5W&y!urB2^NRq?m7e=jZi_37=qr^@ z?Z&tCu~1d_v8ODbl#vh>TE)vsCJ-ah;2tcM#qvKhYf+Q@@KKS9*qMsrBIUrc&R8~e zRpOh$lUdk;sP0P#_zi3f0Vb_V1*{%(6H3Cj$B~@UxtesA*;O+p@@EZFfBxOiijNcL z*NI+#2aDL9xXTSG;!Y**=B4bnrxKDEkF34aDje9~M6TF`;@u}OE2f)&u^lbrW!*J9^jP!$*&uHT^aDd%|JCCY zH;-xIW%>Swqf^I$5dLM>F3w+O!z;=0LVdwv=VKoVj(j{d14`w(>``0Wc24xNe~9~h z7}`ch4F}76d*;Bfc~vw@y$<=^CoW|KWHv6o^I5ScNo;VQchKEdxYzCqfORDaa61~w zfN94DpE^f5TY+mgz!UnY3H;|7itmi-#gfJq)+DR+$8)N9q( z(8`dn_p_Fnxi`#>=ghRN0;>wqZrPGm{BP3jo+bO220CV|&E{MxK<)kd!fscgK-UM+ z#<%d>;D$;!HDuNEz<%Y{Ql;_~Kx9~k<3bB4Ica?19)GfH6WnOjujOvd#rBg2HzGtD zW`#ZPuL<#TsTE*Un^^sMiuYXD_V<>8x0f65rv0mjFYidTG}bsWJ){;a7GGXlFYpMt zoEoA2Q0l3~*75rN45xqWQ+eK{vQ_V;dnGF8MRpPco81?bIX~4}RcUB>Txy=!_*->G z!lv3TB|`9PtXy5z5Gm?%gRVhcP2@W%et?z6plCUvc+giyF%TYbx3vO6RY`fBboQg! z>zYZ4?q1`ksG``@^}(-9eRT=(jI)5(4H++U)?n{Z9(K-qcgL$$_>)zjh96N*Dv7Cu^FG<>~spdJ<|Jzj2h0=4EnjZu^d;uv)>uJ(=G^JI3 z2Odv-3tU+9UZ`|zmFgmM{nm2FxYf$dLwq#}huT#2V)w%CO zp_mA^!XXHwCH*!Dqms3iDL7SJ#oF7q-tx^{?F}oiQm;-(?lJkIsgoaF@-1U|Yoe); zylZ~z-{bXT@7wQJyMRx1NeC??3TicxVT!P0ktkIxQe;5p;6##+$*lhW^{G{j#0q z=oJ$4`UlI2xx$gedG7j8Z31qizR4Du^8&24hq<3aQF!9?or9#V^Q;mm11>W#tGFZq zRr~=gQLf-q%=^83Ia5g{FR@^e;P}3wr^=CF7^?q(xXi2hZTQktzi(wVF74TKx8+$Z zK4nV`w0E)}a4Z$YgsRzLgtDY6M^8IxG>6CBf?n5)4*2 z>41boN&?en0$BKKgP3-Pm1<8Cvr#28zCWK{z#(Y(kt5(EfFifra{coa7N1UL61P<- zoRYKC43O#qhb_Ja%RKJo#~X-sZDxM2+4FnQ+vuN@<@o|Gac?(C!Ls(B$o;+Atw&|N z#&he%Y2t@z(?koOc7gs=9iEGKqgdV($Ekqq_d>Grr^miwfQ7MMPI9ZGp_)O|%;m7d1N^$-F zz0Xv`K-9;A%YUd4Uq&A4KRj$Pc>6R;W?D9vwHc%!Ke6jABohSr6sVl;eE0`nw(*Sk zr&iBL=Czol`6Wx;EyL)}WcCi#Hw5E_AcS8^1Hz_HmIA&pWy+-1Cy~&?W7fy(LV%o- z@&Q|B8-v6Z1m73iae5+pKuL_j>T^QB*+!k9#^;$M9NUd1UO!vagCsfCq;IuAvCfbD zqd`^rN^+0EMAv6kx-Iu~lV)-Mg;Ry%+{H!y8pVUl+qWN;H-o>3RpTG`>u#TVl|=&I z1ccf)-<$fW>-_f6lWET%y{uHb6V+!!3k?5B|BX=Huz46QpNzWD{xa!3 zwZ&VlISGgD<0mBj*fC%+0ZTxObp-z$HF>ghd#mM1z2&^%d*U@CA?U|k^=knIGYk!0 zy01RHt39J!+0>4AeyGGT-@7?o{u=LOnOhJ0J~*DYmrb@ldo^|w;jCWA)} z0_9YGBd&!6^3Kc5)vF9|{BdXa-JJhIu(*~pO}-XtyEo-)kw*O+J>ArY};ZgFZ2u8yx+S} zkYSUwIaNIPxl*ROoll+SUN9ErBUPgF5$vrcvP4SWvxeD zCG_XBGmDuxCXIN{P(SAGfJ?k@0+Y#{OCNZhPw})>Y3eFOurRidy&e>@2&(-A5*{%0 z>c9eKMIYLoa-TZAtGfDYw?==mYi}n>nn6VK#B2Dli(<_e|0#Il{Vkt=!hbWnb6!4^ zuLw+J9#$rT`KgJ#JxEz2J~_)IUYGc@AtQD6J{ky-hg_e$CVm#}3Pz0my~p3-dtov1 zLL*`G(C_O0&6$cA(PqcIYwfNzl}}FAUlj_ekox%N6L|@JzHRGbv)aNV{i@mN=i0ur zn!e>BcJ?m%SO%v@8<21|1{oSZWa)`Jkx8dcFyR~}H10CfR`2zZKH1owr0N|-O|@LM zq(WdqBcr<6V~+QGgnNYAyGIb*t0asi39d>Imi>EIUW;76$0aU69#r7=51tR*ESbEL zBEgzTWR!fBi3beDg_($BAlBD?>ARx4;m_-3^D3To%y6}0eMFbFVkrG!DImT#u@A?P zBy`X#P@RPH_;tb>J=3xKc(Z$}_diO02ut4cXlW+7qj+lV^9nA57N5jhy@>+zyV&M1>W9M&qtyEha2~qXE}cYOyQCZcWH@Y0Yd^^VVQ84G3z6%w>+o#Ey|nwI9)lBU zCAG9yzPqoncib^~qc>1}Nilhe4a^!lCor41{R+fM{C^&Q`ewX-@Uv6Ga9h;#a5g?) zy}-tfDm)2XoEHD^^QXgritUAy`&BouX}t@m`F!=KsID;b=Jq4d4qKmg z^kMI!-oKlsePO0jVgP}=OeBz5(BhgDC}^dgMcg7!sxgyB9e}bkIoQPS1(nviw)h|4 zZriyf%E9X}vZMBWMm2D8P!t>LAqIF(D*F&i=P?|;9$;7xUK_2IOBXVpuS z_u+Rq8LTiI;U4A~PR5gs_PWW=8*G>I9(P859mz73JwLD6e)&@t+jA=yIhVc!rC+Ht zT#6P^YpNeRe^lrJ>7avOS5FhFejie_n%?AaJ@V`0#XQg9;Z+GJESJA_w)^9yp(+85 zwAJA#wV5YzEj(iB>SfwJM*Z3p{^vzF_#c=6BUI_}UBiGJltcM4f!5`MrxP zO>Gy`+ScuS78Y;GK9N{ZB57aU!kI(fp8xMp%JO%WyDkxWZ)z^;<^B5`@pY)s`kI`| zccA^5A($$4m+cR*F>< zwLZIxdk$gJBvX@g_7_g5;B4(>`w-omTm4Uzj-AAETZPYIM%$KSL}|~a`M((VVk^D; zSk(o2Qt}-vpJUaxbuGUSuw3jpH#@`mTLz2RH!1^tmR zJrLv6*cGUbWl=v-Q!d|tCv%Fguqh=aYEp*aC}7TViSPUnxSaj>$y zo?4hGfv-%2D}zyGt^voZW%>T)YbBhjG-{q}>uvbs=#ai42};6lro`=(kKbkk63YLt z99kzPaeA;!msiyu`Y|#%G=C}ap|U!;G_@}c-))(ezw|k3*z24}C!KZkPFPCj`&&J` z4cT1h0XDhPc-9l`5mVreQj6C3ZJ*c032b7%Olp@Wx1Q1r`Ww3zVwX~tod`qF(!5`( z5Vp_Cf8@AoBDo-?h)04cnZ zr?J)PgVkQat*~91WYI}!2_Aj5trfvFPbhI>! z3LdU+KHtglI_c$Z>&+jqR(*3ZInr#3m3_NyEJb)FQY)lCx4ghsRqqdd_xa<_)N$wQ zSG_3Nd6zaK5ifcZ{+8M4&4i2A!3FAc!nPBc^Dd?9uMaZ)EE}uAaqFYblan}F=`fZD z(u{(SZ3!C=r@jD`xmgm+>9eGv`ffpP4;aD}PC~KL0Y;Q6=?Nkb`RR-L-){C*pVO7R; z&VqYX3<4ZPRa%cd~`e zG$0uS1GD*oL|ddKRiDxF_2@-(WttXcRP80-*vDwEbd73#vaBb_2w8op(il zOkXFBX|%2c1d||CmiMvbd8K}urN^tNR+L<3(iUYZLe4&wFiX5+cp+Cxy#Zsrp2NW( zoENq=qtuIb^2&P0C0yo@z#D~P!(#izn$)!$8=t5)cS0rB!V$K=*EIV`-{(f4j62c& zmff+u^Tpv#T{RqGF2qgkLofYEBN?7sA0hBczKh?^?_2ZDPdzXx0I;{SSaT_kavnf;Hm?N{vJXR4OxX-r74^^f!)>7z%RI zYBe`YhpR-G#_D54PI;)Y6j-O6vgW2Q;>))T zZX(o@_-`yhneSK1OLa_*#{%xurs1`f+1@=?5mPU) z)Yr7KZtw9^&)-fJTqhu;jt$-o=cEe%roeatRN*4nK!#QV)Qk{`!3#56g~d;f9rSUn zO^>Or5V5<(=}K$8%s044@Fz&qXp6)w;~!dVDY#$e&LpViNrnjfnP<{+B1a>(MDN>e z?GS!sOQvPB2>begikzjFxiitg)J*EvcHdb( zN$izU#!u3}q0HvJ&}X{+n44`ntc50MWi4*0nV>wUu&(t z2ioxIqqNp9F>TQp6JL%peP4eIVSYfX*kj-1T&|G6Rhc}~PuDXXB;0IQrd zFnU%i)&AwK|BIN^s-K@BVtA{ungF*^KGcX!jyJoO>{q3NhZc4rBGYG7U~*H4=R)sTjyEj$?e`I9drt1}k`LY;#O>r<`@*BOT%`Xn zTR(v!x}Bu@(S^a%Hw0%o&fwJ#8O!4NNGo=8NZj z3D3UZ#BjZP{T%nJdR>nm6ByxTQXB$CQvHEPX{+}7>9~N3F3`ZtMrVdt0(vQ;fA!YQ_PUOtz!>*DX|s>9z{k2ND>uEA{|kG)MsTiWPP2* z+b~8}Zw_0orqL${DJa2km>C&*g?{vY407T`91>v!<8WYh0L+d9dywJABzeOYdj@=I__2@91G5m->Xc&MI}uWZ2Zd6Z!{I8UXDavPaRlU zIlOTo)h8ecBBt+=uui_Hhd!rwVy_$l<1Y0SD z`)$K~$V2s5uoM+`&K`;*Kp7}7=qVLJpZSQ+F4)U_MCE|%S5%W87ZYF}{@CbdzHWWN zf5Ji_pz?4@r~yJ?vLZI^xEH`E2-tQ4g~=z;8n!Lr(`Uf5UJ-LgkP^wq)q)1Vohz!4Y9@rx7R{ zkT(q$ibcS(__`~3#D4R{R6eEvXt^Jci|NSk=1j3GjYm-4Df%RqJT5i_IpJiPa3|7m zYW~NvA`WX%QOT3g%<)?qLBaiupPcHf3|dGO0>*^I zk^BHjQ>cbG*c+Tj#7OmGp^2

?=(b^mns?V?NC`SIVH?%Iml2;MG@ODv!|Y_r3gIU7_p0iCq%{@*jbebmJ+6efWHllWepL(;oLq`e>$ZDe zpn6Xd(M&~3wlW;r>c=Rg|j$-A@t4I>sPf9dI&+{ZK$ktWz|0gF(w-Z+lOF%FN6JRTiG zPmW9x%}(D+w4QnUh3k9a&wb86r6xga*wl3Fu_v8gTq}V3F^NG?n01A;yk5KPMyXh! z{C|NrCh<O4qto00qbU~G)XrgB^}-6yPAQEwC} zBCS1MG(N(h#9Tyt)`IPKI`t*eE@y5+8a@_|2n9~8dMlI z(Xqo%#fpJA_>)f084d?y)>-P-U6M!v9VSMH#c(jBQ82v1_WOS6ry|lOwJAn9`|=WY7;Mcgn0g`Q6TnWy9roa9~Nn>D;OZu*UK@$JS^e0u$I4ddktga1Sx$C z7u|tRb6lKJ%gF^Uwot1Veuh|CK>xBShZ)h0I-uGFdB{}E&=Y00W|Xd#DRC`lbfmhW z6>{1rvA2>h+MEil!Q50pZrVFe9lO1za{%Ip>Kz2m4LtpaR}x_^HA7W3QV& zJ5VOPwQHW=)uQ+-5axgbm*u!Sla{C29!CN>`roI!=@3T2B?XS z!x8{KrC%_26M}Y3kzUczcJ6pHAP7)1k9~O(h>L6fw2?h`PdLG`83rA9*UP1p(BW>> za1P$HEu?Ho`8)0=Q0wip*+HIH1`u06gEMc@;O!u5i%VW<#xqe~LxpFpHZUF}*h`*L zX-*&Ja{ajJyJO{1lG6xFbtSfE2)8u%#y%C%mZ6k7STnI$sotMa5$j7r(KQ-sx``_q zHzqsmz3c6cXKvn7bHsTwb`y~jL|7UQ!byVMrAtJ8K>Y)Hf{=VSywJ3BC@HV>6k~a^ znZt?gl|73qnZ6=VPTT~djoG&8s2fD20tt4P;G9SYBX?R#=1`?FoP)+P{;@78YVvj? z>A7v`S{Ga&h;knIDQ@*)+i`BmuO@qu)I4YPu&Rc*0 zbHypS(t~xV;Inf@jyR8{X)tuEYx2J$M;pSXVxRz}Xz~+qb`EA-UYxk1Sum+^504&a z82$k$%Em;A=4OWhIsZL-{6-Ve*SYCIEW3_dPw1w30QbU;7*A`HGcnKkbkl7@J#3>O8sNX7k z*Yr66_l!CLu%A$Kr4ETfr-}P64T6a^=3m_%yg-LX6LW;`=Dc&Mkl{D6ZUD9H45kr1 zYaYi|0|WXAJ(NOqrduf4DNjb z_yI^X0h$bqEJl^{*h6>;uO_W0)jk(-&|h+Wh6&)n4piuI6!^xCO<^J$n#f^i^nm5H-A8O#*M2;S}7je1R=bBSOx!h9Tap@{TLDH@c8AA`kX(bYUH3c2T*G? zOo9qI13+AGh3E*5rr?y-=-DL^}h#VkAIh=AZjCJI5Q3-#WXt zS_ozN2;rxH)p_+sOXK0vl=a|C2E^I%W`3rZB-kg#juV&4Rlu~yDJVZ{Fr-??Le?~C z@#lwy)_95v5Ao%#5y;)Hp3Esfu>95vDe->V&(yDf<)?R<=U%|Z58pk9$r1E*cz$p8 z6tp%kc zj@#pRaW<^x$%V;0tN$>Xw>zV3F>IU~OgkN6UtWejk{ID?4_|EFNrK68s(8LkdCdx! z9WRv*W@wD)2oo}Nk#&*^tnz2&H;7pvwnU}V#0=`PbY%UvZYw#D-T$V1|6PgFmu@$! zhU3-jLO~t3dJ+w6h+&*lizU&8lTJ0~)N9)m5EzR2svX-*Atfdqu!szPh%hvc-@^|7 zQe?(K;oKAwi1#;OggvuPpH3p+2T#BdS-fU1^lQtlKC}Ry4kSW$HE@YCttM6I84m6$ zkVwzcu-YO0ft$g9zn?L1y4ZXL=gGIylLf+Om4?Iux7PdEV~|PavQ3?Z*$Um<5b@&I z__?ghF|$g>7D|6k4~F z5K>GTi7aQJUMUx%V4#!>%uUTyk|5EBo*-;uK>=@QQSKwe(A|Ad=^H`PP=$I3AqTbB zpTq0IzXW+SwL14DKdh&6AWlAm-k%?Scfvy0LcJ?nVaQPnC857iX~OJcx$}lyT_gg^ zs*4-%XPI`o22Eadbvvnm%aXr-#xVQ|@4t6uc{Um2TWOHKxZj4Cx-==zYn zb|5h!&`IVY>DaH~8(JfL;~VLw%)BS__v*B9!wvYLwA4G=hH?iS?F@6W zX%fNq=Z}>~H2||zM<-7Z!1=KHyq}{pK(hMdyb;3oPVqKFVlSA#XS5HDF{4jo2@I8n z2x2{SMCrypY}PYPK!V9TD_7;b<|I|wnAyxyAE`3i0|w*@F8*^3xS*M6@^yQwNEu+a zXUK*vY|u^y9_!g<4}=nS`>eM5+LDF}&#R}KE4*Rye#^Dh9)2JG@nOg37+x3Np!%zM z^%b@L%i6sOOeygTDYDeKWQ6u1DU~^}bNf24UMp=Weflaf{+a-FPXE6s`3%LQ%WZ4D zP)--xQr}t}B?%!A5RMbyLPD@KfYrYwGqyMj_uv;oG5)kermr!@xO^xHV5|1FL}|W` zdlO0dUHwHc+ z&rqz2WZ(;e4n5Jwp8k1fs1zob!JB%%iLkTA(vW&dBc|{Lv`KX$Q~f2cB4uhlu9ke` zWP2H@9^?e8JOu&}$ynZ2h*;K6HIuVep=aZ?YR zutw)9CC{>Pe}ReslA24B8TiM{3`#U}-haUa&RG2yaJ5%3{XqkU3ELiv0Sqr& zNPn|lsa3F^U2x=3Gg8l_n)ldS^iGDb`g9A8BkKP`V-+iZ<>H4qVyH5(%x~rF^6wyK z&CMi?3u&mEaS5!jp2V!Y4K52OTs}RTMH7?|NCz|Q%d%AaJf*xyv)B9^)Z0#PN=qW| z8p?X@47)HL=DP5Uaw@p!U-+?>A`0k(w|e*%r~t(+iZdSj5!o*M%!CL(=&IhnQ06CK{bfy%#%|wc5gs zWi2Z)+O*49Poj@wNq9Gee*Cgh-M-)&M1phhES2 zBO~Y?N$lL{>)Yc$(rLf+{w2P3n~vyhx0?b-SDVyT**^$w4o?SshD>z3?PPOUo?mkR zqR~wi6};!ma8a&J-4x$<@4cv?$a}mMf32XXFp7#ATGja>@*}Rov`Vlw%XCVhkU7ET zOVW>brnM-}U zm*XKdg^3pjV(cLziNq@=KeZSe;#$L#E87~`e&vQEeVE3S`k=f709p@H;dycQl0rYq zhTQ=Bpf~WL9VFCYCF~_@PjYmg4WIVFH23rR#!%7uEX5uWla+`OQ!|^X^l#viTjNFs z)(CDSzYaeW%g8f`gNd$C3Kl@boAZ+|@rMWTjS*w$kZPfyUDHg!L6QKO1eSNJ>w?G- zpj&TA5SwXRK_ZDu+h*CK1fioZNG6{T}@Y*E&1cqxB7O_M>*aM# zxBHE4>X+{lU8gi-mG`*wE+6o&=g`w<`b1_=mn9a>kDX? zpT7x+>?1kO;!_8U)DlLQM#y;2rUPN8cs}q25*1X11qNZO=w|CT+M*)nD>gZjMC zrCt7=cd+lVyAO90(O>->lg#K{0{4Y;AH>tzJFl<`-c-qSH8)N5z5RZ&q&Z0t+M<`0 zB6e@$wo}LB62o6R=Mf@A&|wQ;sj;4TWip(qfvbELs-bl<-~#-0u+vR-BwX8NszVOe z{bbpW@SS86`B&U|RsmqWG>K1rFCz$Mx~8mTXtIibq$m8_<<) zm<5s1p9t!%57g|H7;ASR0yxkaD#EG+ZJ~zbeG2A!4Zli42Yz7}ShcnB3T`ds&KTz| z>BYQJLP_8N<5|$%aI1n|p8K|1%_Q`|8tMm``G}yz--}9C!)+(QB!3&r5ELw$F*Dd` zY$=9}gLx8=784LAI-o!c_cVrk;t-Jmd>TNMFAm{rqbS$xf--<#CZ|VIpqx&6sjCqO zec<-1-Z?eWigcNUqNw&AINmuHHU;KOl8%wQ%8{Nr;OLxNgD+4PqO*Y3lR5)N62;FGF>TGl!0 z5=D@OICLLagAitigB|#L{jj}$DKg?iIw;_SZkK6z=DLqzIJEW)#E!`4zI@H63hbsT z67v>F7Pl@ja&>VrghlHp0+Fv)6pmt~-NbNGmjEssz7GYEey+@WFa)!xrTesf*FLz3 z?S@XcK59C&m)k4Wm*F)P(})*y^A7dk5ExGkm!UxQv0>;5UW_+%x-6{8S7^cR`Uk}M zb^GhO5?sH(_z+(Ueyexxcb2cc>bff~6nQmbG&L1QPx#z0|@EUmLE2t#^V6doo(15*E>pHX>U0ZCl-<<8>)AMmhZ zDMUviYAM|2j*0p^A_#S=3&epu0rcxi%q^@K=^?~$Tm5Pjsu_o|77o6##HC}#{gsy7 z-^ER%VuXLgP*?y=212$|D#m$UQZX$gbQB(uN=8Njs9)q84hb zOKUS0Z=ztX0utdgbYpW`%xl@YaCANm-BVbRPk z$9)MOuIf#2dHAoUMz4ZKCQMx7MDP2F+L0BZ$~t@<5kJN+f|F9=G>IxHX-JYGFWm$E zCBJk692kz+2}D?s1)12gwcD8Q(u7$k&?Y~Dro=PdObH(=`8UJnZ0s_@&dq6AjAZ%NG?1wIaZ+wsBboCyF8U}<)C_O57a(YH9P zCraNEvPbcKu^a)IaiXYI3+%V;#!U-s^c?o+LsNi>6)y>Wx0k2B8BVmh#IlXZ!y|N0 z8xcGJ!fEj1q2O!)LzMb9#YPNAxKO~H&8HANOzB_DIFSk3QqB>;^aY1>@k2C)-{q)g z%qvy9sKW6T$H0gK9?b#C6by~XFa8@DL&fpqK>QRO5kQv&TDSb+x}n5)DhLxbwp*lP z%EHk_Hkih6h!hosY6jmSYK`+?ltfRvoD)rZJk*}b^sNrtOp-o;5d4BgB*+jq8N@s- z^gOHBy>;!js40b##x zK|h(UQZRvm0=aZaWM$2vvaKZl7raFYB}-Afqv=wdYPk6&qUcIKjOLzHgOBNma2u#9 zfyopl2_(@9F7P|RLyp;FVRi68TV0=lHjy-_7Q^Rl5hfxIk0o%{Zo`Mz0H8E&s zc^cX~qvzg?*xLeaQHKHKXKp@4&U_Zb4r`f9=nKLjWMbs3g^J$^w_h0TQs&g}74jx8d97 zvVkNN)t2EMp_d~>X%lzrsSPTepTQ%IS$NV9wFG$w06hR~fsU92fFo)X(d1Uh5aFuy z6EP5|o@QJ67oCZR@hU_8iM$FpjhpHKa$6lkZayP>J~@EHjTSd$DnybI9^hlCx%>Zpv}Hkh*0x|T3lG;u3I(?O4yl2t?lk9&*iHB_1b2$k=UBRk!e;HqO~ zm(hj@zFT!1ra0ZA>oRn}r5>aqa(2MJPM!?8<;+k=Dq);^E-2i7WzXqK!wE=&2DSnE z=gFACa~Bv(`RymrZTJd%8-}*+?D#t!Jrfl!R9vuW=lCEPozxHKh4L(Ojyeh#zDw9B zcqtnWmB)kN(c+TPd}IoAgC(jCkCexE?<1!;M2x=)&$&T`?r;k=X}i=;0wrz6e$lR2 zG9=naHjG+ezgy2J+zyNOJ#wl$Ig7;2J9z1cTSYQjEJF^Gp>;MF;^;NZ34oCVYqh^Ho1Ol; zG3Xr_9%O?oBcsZiQE6mUVKb_DdwHap(XVMV0|cZQ+AU$9PZihAWX^fXeP4_id1c6k3s(YXgQ z_5XkT?7q3ou(@A0x7-U&9+|m@1R5O=!N0g7G zxh6>}l`h|p-+q6dKhNcT&ilMx&)4Je<411#x7_`r?lm8(s9|!gGdKQm?wdCa5>Vi4 ztPRR-dxkcj%7C8s1c12esW-6GK0A&pAAfo7I&e$*F2WRONC0}=PGT9mT%P4DzJ^&- z9nPk~4paAd?G>+iFTiBEDtAcnxRa`2_y5*DaVn4;zU1&|r&sFUuF0hM3VetuTHkOC ze;viNhwmR%(i_~BIYQLqLSHNpi=X5kp^eL1m2CP=?Xod2qN2Sg#f&c^=Np6f3QVdL z?w)I{71Bas#N%vH&6c_rFykV}n5gQ~ys(wl@JTFAIJov}vV8-~?!*0ib@FJu#_alw z&fac;==s%tRl!i+$oPub9R1NOC=sFrMl)0*>i8(!X5-G!cGyoHT`L|`%+X|fcAF?t z1NOAIT&!2ab?RGFlY2Q+^R6c*OYwnT#An)fgry%hoAO~dfm7G=U&?kMMoCJH2+bSz zGyM}xx`ZbeW?x-jXd@L!F@aPWUMPk|){6!(<7! zZVZV{@}8I{i@A-8Jz+}r^2Iq!)Fc-RTk?fzi-1s)dpBU@QCJpLrf_c^gkMD&pj&3FJcl8SmW`Yir5Wsk@kq zC6oT&Z*MrA{I1K2qjsfbPisg=*fk&T$CImpt%t7PulHMM2{EoPjp$O+a>FWGpZL4B z_$&6>RbuinhZ9$o`8Ip_7Y(=F>WQ63Js#nEf2*PGfm&|g6;dS*>W2@V0T49n# zshNJZAC~GZ-0G>752XMX;J+XJ{x$Q%MQTwG`bq~dj&VFLmSpXHVW@5af<{|GfwdT7ZY

#Oh;Z6KYSa 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

  • 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 z∓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

    TC?EI0}jGQMa_$XUdyZ@P-W4reY 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≫? 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%0AdE%T3ZB>ZK|Eccffp#vq1SVX1r$v0~1iK1iZW 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𝔓5RRQm(sei9UR>s+!YFAXtV7xQ|o_D#ffr3P0Pq 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%0AfkkKbIQ^&H}y>L0A*O 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

    d;%O9+vu@ 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

    ~BtfEY-pTqNiVtfX?yF}J-z`7nJ5 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

    j~o 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

    Sa#SzW2;yN65T#dFrt(iSyAkm)3m$ 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%0D+MYJGw|#AIXWQ4* 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

    q9tf5hEnb)Qp$697=x%zCj?QM(d4$i!o;cy& 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
    @$zV>N#hmdWTkW-bBZKPrXfnp*jkz!bC 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
  • MLK*3God_59-m`W)(dS??I`C<4^=16<6L-s)-Urz~tB1|8I6+SaT)B&z(18CuU$ zEz1`K$?~@>8wO>j82&|)ZPchRp1FKCIP$*A49(>Qf;Ef+%YK0?c_`>dJx*O8$mk_r zwy@WO(^f<#h6PI0yp7r>zgqo9EpP$0uTM+Wsn07BU`*pF3w}v@#)#g(mph1vs8p1+ ztDmeC)r99_I!5pRx<{%4KH#v@<%A+igAf`YJ|)vsBkNh9azk^_%yfl|GCeERsgP9W zW=#O0UAPHGPRc=NRQy>cRlt_3o)f9KGc%Op;Tq@;hU*^5!5sl$;-uFpr$@Pc!^;8& z*cL0ub=3?6hwBuTr0(r0r2<6d&@&^$BO)45qN(2kis}z-Y5C|RUFInqi!m6{nN$j^ z#B#nQj+F%&iim*~n6P=M^OB$rhWjOi1kugzkjWS$R@}RG7$N1~v==Y^SY2yYI8#p* z1DEO)nU7e|qYMHc4M|}#Y8u=)H4)+8LuOabULpZPq!|~^}A*Xu?2F0|5_WP zB?|T{PfzC|mM2~Q_`~^-tGcY;UnID+71zJd(lTLeUUd2L+sirdQgD6O)z^++F@V;~ zEPATU78(UAhXN}C%i;UbYL^BStFd)LnBEtw8>$m^)_oshk%u}3EFPLelEAU=D}6NN z3V?|o>d4g>)cuJ%j}tNUtU`q`ctZJh$3BO>ZkB(#)2v+K^_Yw# z;^sw_X@PeB@aN{kX``nlR?n~D{^=b2Fj^%YwN!2>8#xTUh zNKAAd=~DmzAOJ~3K~y9;sYBHWYGrWh;WG4cfJq>hmadB_JCM8DkoiB*N+v8Ru=fFg zYGNYC@T;NW#UEDJwc3-`p@#L9xOqv*K}^Q=h|ySz!>Ah^0<|;4QF#DQSa?2>=HcVO z50y0dXYoncq*(we#iuhJ|OCYlZgDi$}VHb{#F!r!^#y-~f*0L@3pD39r964;oS_g3ToXN%Q%oYAD zd{uHX?4t!Pmwhz;)YW*1{gnfk%N|)-PH^BN5-zZouo!(%>pUVL>&JnUU1-MxNAPih zbsL1PjTx+6P#A9XKpQs8A8GdmHxLLt=i;L6V zgN5SNe*t5^l##V?bd35Iu46|m{qO6gNh*}*`z(nfK8n)2ONZdnLh^Cj(H$H(GV}yk zF)*J{lOZo;lp0cja$mv{_AV*Is%vhoLyo9BU|W4Kpyp)thFjS6?fRdZ4_Q59vZz}o zn8Y^e@gAiNRfpgFc@UVAn)Q_Q+!}q|M5>?+nul5PGcjQkPvd8rBGL+_do z%q0hP@(u=6&uL1kI!SgggDtbl|6(q(QrggRJrOA{2G}GTAxMFV7S*f9h&l}}2-j`u z(0SvM3H0DxQK5+dvS*OFb!(-ZY-MV&8=J-~={yF_nj%|zd=Y6@uJhuq@8W1SSTX}! zRp+PAweLf0fk~j%Ia8nz{yfaS!w6sUP>!83Z&?^KmE%wA&FpOK8jh7{UVPu5Mf238KsLl&eOzW|K@fBcE8~*&B$K&ylrM=`^hKa$&BxB=96kX-t$SlUaE(DRC6{E4zO!;4+#7u4Kh`v;R4K{+cI`zu*q9P1sHYIP)u zEZ>L~);QAsCk&Q@t6F|5Y=sqdwywkYEY?4gR0j&&Zqy!e1P8i(F@epu;8mI|$4PFDV#aT8<)NV z01oWCt}lFGyd=vLjO9Lce;=e)sd}h=*UPjtPA+nVasOdzVn9;iRR?0O^8(L8IUrZM ze_1mLgyw0>%vqkl+R6zW?3w`=J`7+P0G4IC`+6%riL%A?1DA!Z*SXfGnn$hH-wAFk zyW_y;>(n|#r-$pqQFqYG+r#DM94M6Id-ZucZ3|-toFE2pC|c{!Ec#-_pVKB^Ec?Z> z5!G)i{dQ{xU7vT;$01h>Sd1)#u@3rVTb_T(hR7j@vi)X_3f!hrvCl-Gw9;i*ybfUgY3z%N{6F*KOLo);kX12PK$Uv2zBh!Qu z-dPJ)7r!J~hoYX!L|?ZWpO^Eg&T6janyNdokCW!>j{CFr+Pae2-4CfY3#dvTj=Eg9 z%s>QI{qyvk!wIC%6L7Us7V%B0?}hv|+3ZXPBc>tq$bpDt`2HM%p##QPo?q+cDeit> z+oQuL!XotL)6v@@W)`h>QnAD_VsRv>pP9EohSRcVdLA_@b1ja%C%&)NZQwo3Nc=pe zC-#%rr{)jj=;s$@|5WU(+@qPY_ZHWziGV(DOE)`IS4}wSZskfK66}eoI*9?!rGV>9 z%)b(qsjB3q0uJO7h8KPfgh{Th(-39{xFy&6UL(g=M4d6zv9_L~>yA)Yok-!$c~4WL@tkLow!hb!cLd zrkn$lP*uSk%F%>Q%#pPBg}ox-Eip^$u=ld=B)97CH5-4Y3`S=MCtD*uAz!0TNla9P zCZQ2#K2R|ebitjvX<7g#2b%Q0jtC_=l}V6Ba}sC_*LRs>ICFlBl6Jae^zt6Q4lEK2vPZGH$W)S{-cv>CVfsM{w=|2RMAwnEW&K#tI zIyq~W5fXF<5NaRwrOZs%=VP_MQZ6;Bk)5)8IYqazfyiVl{FK|J`}k^pERl>zqOJq( zHeWrpOAfOoH&k1G$>L&GP1ejLGCMmmbKCbHxc@&hJ{lnfy^R_zmKe9et1^Ud@L4rR88-^fv%=g)T9_ZPxCq_P4C7YgU#pP93f@q* z?8+8iun$8&)%TWi8J}1PU`6Okzw3!5_p)!C{85JOcoi()J(gyDWn8Xwxh%OF6ihBr z6OkPHxAt#k{JR2&BMxTnIHZEjWAt9J;IIVAeskF!%|-^@2SFwuMt`WPL;eTugBhq1s<6r) zeDVMf_nOW`74Q~+5D%%~U)bKJp3^*s8TDQ(y=+V#=|Qz$uys-Z)73v486%a<%G>_C zvZ;m3)epk^ixkr+=+kPK2Lhea8NRs>ZS5ioz>I z^g3S(bk%jD__pqki41jzt**!BpH5XyDC^$1!I30Ydc@y5#W<%64=LW|-Dn1U`DD1i zztTye;!fv6xkID_A>~Iux9&(wBysl;X))Mk}qhEmwF{ z+<_eR3@DOpZqV!fDb7%D&`UbZC1gzEz~cAc-s+7OW%~+Gvwhdff_s z%4RH!SZlgY;u^{n;A+T0r2<=rjryGBg_rv*Oe#j$d`Sv|gd}TU>@Qk!XaaKTs$xjOKe5uoFIA6SB%XSWO@~j{h||Y1|{FG_>Mphbb`*x12S}tk zz1PW!kt16zw6X#0Xgs;MzyIL9fBL6?dc%!3zVM&D=&~yxtGW^KxhXfCd)x0~oV|f$ z1ahzDx|e<-2zEWEFu>T5DLL;ol|(c}P6*F)hC^E-?+kjr{Xp%pp6fc&rH-!FAJu>1 z@6`t`MnonfvspnDdy@%RD49dAEqv-g6LL!c20{<;Diu-w;8Gx#{{b;smg&OD>hFaH z-t5eR()$0p_xkz}qyvfmNsP+f1B#0EY~>&y&pC{%^!K2m{wqaYrjAQdWDKmH)26+B zs#0`XPw&I3PCo1N#Tr&?GWf|@XK$xXcF5{Q7JuS+1Z9{kn}Upx7s}6B(FL-YT-Lfq z$?cfm?!`WMJy94l!o+RlqB!%~oUAXa=Jyt+*F=V);UH41`S7*s@@isSkJ01x|7Yu6 zfBxIItDrIF`u_GgJ(SX(wuzzQt)Ru0irDBU!Akx#{e%7467-P)OdiLql^z6OYv!1m+ z>+_kHG4GMCpJJ{Ye4Zh(r=qC)e!GeQ?|zf*a$PK5-6{UnE}V+v@`vcl-s;BG%*Tu-mx^I-uq23urYr}T)FA@UKFeFFBJ0HuZ@~76-B$Ko zIgsq5EP;er!>$k0B&2Cka&ks3lz2irO^9;MZ zpASJ}xnuSEd=9*!jjpv|EWkj|r4N%zheu7z@<@o4(3snOel$L8UznyD0eSY*WD;2} z^MfmbEK{VCT!9`_Uni=;m@a9|c|~i_qX9|WwHgkoeGB^Z>01JE?HWArHrDod;Q#2I zY`ywr{HO) z7`(>r655<80NQ{xX2-=&Hp9m;iOFw7c15TsD%NC;8rnH~vFiNj?QwNPz(m%rYI<}N z8lmKS??3WuRdK8J#khU5Qz`Y7JZ5&C8La? zCJNPlbw#yX@yi&jy`C|qlxI!*4^HcH5I`mG)UkupkH@UJJVYC<+Q$QMxWGbo$EsN$;mtbeW4K)pRdxzc9j8jLs!Gdz@g1$2%jLfTx|W92ub zA&KxLHYtz4mK+yb38UUINNx0?gkp{!ZiTYj9P~+QSFWuo*X+E`xKMz z+&$h+w)OV_rN(m{_C4){4EV7CIem`{<_XM{abh3G{!EeRxrs|XPgmD)<>x((o8W4S zx_qw1ZeS=LS7*n3=!$6Mx|k{DJ@QzyC9TX7Ku+fAD+0|1mttW2s=p8AJZ!3icDjle3CDHS6zKeKNSad!HHrW14;3eh0L3Xf-=mc-8v zu06ucBHC?z=7v*h>7M-Nl^cc^w03jv#@p~_6dXp&bjjEz({mAHf1zmjd+UOx>k8dCAy5_CxDhgIQm_mevL|oBBzm7e4`ESk;KF0?o%3NX5eeUBAAxB z@n$$1X25iZFibfD5#y~1%WxpsW;`(KfL}*T>IAJ%g;y2Wfiut4pa>%jV#lP>+w#i* zcmm3$w{9m)voM`TI`X*99<^1Cb?%J|}`ADHbvy;9krlmx)vUC+6@G#IQGM z+IEmUijYGH)wlZ&v2w_Me&mI}YvE_`A0P4+wtj2nn1KGw&`5_%Co@2G_av1Nv*&B0 zp7PLHkK1wB*4X|7qud@B3=}ZDVxGTqgcNJ0^}RhVkytv%OxtE-sZFu^TMb$`!K~-R ztm$A2sWYfXuBSOQx8=ORylY5DO@(a4G?Nk_7^ow@D6gG{<5-H0P-Y_Fi_b$Oj-pwX z4dSjTTy6JkuS%Xfq%qdc>&RzS&uL%?#6>bSxaqQ5DGC$2+^XFMft_bbfQkS}T)+4G z|0Oe}n1FD6Uw^nVXOnzPX-7$C9^mm7S&W}Lz;oUsJoN7V0qD7-h#eGG8A>cglw;Q48!1k2uyEv2iy{CT67^k+r3!VcX23K8f)?+L;GuK5Yui^|88NhW5kxnAB z8S)yU?3a7i9bLgU3nwM|mH(5vsXc^u^UUw`X=R#c89>hBEabc_HTJ~zTpS1vezG_W zf0#$Wsv>YnzJu`@l6aTuzf4z$9+(CIrc`y8Pm<4EJA zNLujb@*8TH=OpY|gN?*1;WcDsMHhrQwrBLQI#`{H1BX;^S-}Wh63&o#i9aNf^#@ar z-3U}>G{~uKt~`UvL?vaO-}kVn{srXnMQ{DE1OU>tMloaW|Am-zn~!f4lpc`%@g@4E;X4>8ocJnvC(|BFnk%V7u|gwGp-E&B58VA({RONXw(Ofa*XNuIn}drD zdrDnrBdoP@V?vq+i>}vojAbGVxyBTZPm^$dqlk<~62{ZdKgq*$Y&a@Ek(gB;k6$Hv z|NLRZ-CBNo2Ukx8+boRSx62?!R2cJV`~Ll|m8+85(O~OXx3;ysT?FGMmH|{3D!IfB1y%A?rG<<`XNu)i_y`b? zWZ!pH{og-uQDvmca2)Hw2x#i>1AP$nm3Hp8BtfInrL%XI3%xe zHswTr>7!qc2M|nEv2bj@i{WeS(Uo}KJn%42-7Hy_hvWT}0WEIWed85Ul#&b)J0Dx5 z)Ak(ce8JlOP$xoAhiA|{D+-PRj+<+7rXkUpjFI_gTGW}BK71`1Z`K$H<07B$;t;04 zz?iDndrZ$tAxPfp*NP$CFA3JyomN7wzeAoQFfp#%^{@JogLLN7J4$RB5P1s_-Lp;q z9``#tOgcT+b-t5Exm=(!2AkPu2Tlgg<+ow?3PONjVxUx9iq=zWI9~ZT^SQUY;s(ok znWo-@zg(a+P!X&WH|YGy{0` zI1s8H28V}rSDr{;`|vnWUA^Q|x&o>UQ^PYztlR*G>AQhZp9q^8>Mzh+B3-OkU0^rw z3)S&f_Rc3iyQAIcq<&cgiSF!*bn{U)j)Ed7L+5Kvz`y^3z$hwvCHS)k74Y zRkv&l#fjx=?5Z7gC<&O0n_H7Gbkx(R{I+!HiOG=8B4W*qos`<1m+o|uBO)Ag?sjbI zkgCuemdbHtR!d0G%;}Vb7${|h#07KMm}O-d9=pU)ZGu(p> z#~}q2fU3^(C%{Zwdg$M34It{`2K)NdU2kh&Ia7h_a;{@BbF;@*rM|C-9+t*VM&QBe z+9;X&L-jnby41JV^<7cZbOs;g^XZk{Qs^@mXIQt6j>1)rF%J6fMEHxBebVB0Om^<# z%v^Co0 z0-TjF;^*Nhih5}6Wb;3w91JA&Gt6`*;)n-*o*#A4U-aPO_~*|$3owduzrVf^6_L;L zxaKvkrgK8uC;E$4v2*@>=vYC69}uTk_bu9Yw2&llef;?GPyERr`a}QG zANq~o^&P+acl`@r{Q9r!?(X>8$4EzC*iNF9_ZyS(D3CIjiiW#M#^zVBCl+ zTr<{Rg9bk_U0I+i9veQkp6KLE%bm)BdX=o7D^IX5r31*^hbt)!a-hhp3R`>s4NGa4 z?I3~pcPF-N>RmZFN*1umZt6pf~%VO=yhzZb)m1jK?2A)kHFf zZgU<+2p%;R0Fwkrao%}_E-4&_nIH00eWQv@Cv}C{n zi(#z9CtGBlMnj0b7xBc6O)U^2V+GM8(FPb#*7HFeY~Xe=I|!m9U%YR-lmBLA-3O-XvPAfhPWwnv_`Q9;$D_JSokU4W3CA8DQQ z3LV236;(?5)`}d`gyESM;OrJh+sH*w`QAC_o9~^Cj=H^zbIf7)374|go@}4v?ohz* z3K#Fk91tJp^rL0;ie+6F2sqyxUV+Rc0Jjl>5|yfIrX`$^c0Q~w*^{);tMCy+g=o}F zsmt~@?quOszE&aOw?Wbi(hJk2%iibE|CJbmo_`Z?aWXg~K8Mqq=#3slm+2!2!7}!9 zbeB%CDjI~QLacl+_@JR7Z9lMhi#COXlel(O?!T*Zy5kW5vfgA{sXxH5qDxKs@&=9z zrG)oam`aYdb-|LM3v=4^W3Ox%uS|V~|2lFey3D3oMx$^6wf`WVBJ&F^=BVj_NrKy;GeQ`2-(7-GQ*Mp*-t zeiDGD9SgkQM2=I1*Y*0wul?fpec$(e%eQ^o>-A!zUN5Z{m-|gbx6s-;a;BL42!l;G zsW;aVls^ll>|$1N8v)rYwsDRkBcB^?MdMhwzjpu+XwY|UOKM{Sr28?0zhRTUn7%>B z(59U)eh%VK6yH7ed5*+QKhXm(LMaj54B_}k#)!23UVr>;;c+ibe%#yg7u!YO`tkW1 zu_Plh5Ppe1UGfJOl?TZ0QzFeJ1@pE3Rqd~yKQsoPvto-j9q;6$5VE6fBt~yYFYCu% zdBfEb>(~1i9<{k}X;)|(jh`2B%H_RJJmc)a6np|m9}obV4;Luby8(qQ@qkTDfzK`d z@Bv7_j6=TOhV&Wn|13Jx^&;Vr)J#YJ`n1Z=Z$vK_h^wr}X(6`q+4 zjd^`|{p3&l#Gn4t|J{%O_>cem$G`dQzy8}_A3m5jEGbu7x-82&;lefYUQZnJ7t6jQ zlZMNQXd$|IO>5soi)%{t>0{0HMt~^cK2u8reDb30vfM53|o3tmm{yZRwCD-0PB);L^u)@O%zw zX^%dpa%I!@d-bT&sl?wAbI`~THEK*_43hOvNpYJ+X*gNIQimlUlF5?Q&##ys^f&2Y z3s$wvnZdXV0?DbVb6zV5Bg(SR%T+9F1?J>jEZClWN;<_oDKNf{F%O;V6IvL=Xc%CE z1D!;}J>Q3Epzo@cOOr)!8RWZtBOd#J<#&W`!_!MY;RE|*Zo?!L&ZA`@_v0+XUoNT8 z+4xVgZ~A&NshXXrl&u7(pgzBs`(3uPRB6Y`(IfcwX7GIM&iiRW%tKa$7A%+}7zR!Rn@Q^I#!d$7l(#g4xBXqr z*b6)f^)Laysj%rmYr4N(1-dDQBCF_zJq{O6B`sv%yVu1t+z8Cl0WjWs-G9o=&;DxL zw($ZZLFVCQ9(!dU2j@O^M{}ER;wB>i-k2-=R5py=1g>mnD)a$9gtEBbk2b~b7)MVY zCLdi2ZPlTb)UcYow7D_f&dJ-50mt0h@D&w-9(LA?u)zb z`~LXx?W&7|nfvYjbnds$eg3OnA3hNsUq$t1Nb_pP#9Y-}1E5Tw9XTUSIiqfUk%zA5 zEXCm8=^W(22O}W?k;2TB>)Vg;GH836s%_g@5umjD**6q=iqH11yW29-rkftS3YHtJ zc>Qa1tp0*6fujpo)*RGqn6N92@ZVEDLjJkb5yw5;;QquT>EG#h?oOPCGaZK_Cijbx zHl_KTr@-b@hXF}mnZ5I|T%P5L*dDm$p=YyDxb@R>K~^j}KO8ympa)}wy??d!p$A{z zw+cRR&6kWnOez-xlCIhS{I>-87VZr3$a+{9=Ox>!fT=eh;&K3^&BOP`C!_I^dO z2TGz@-x3mc4Bf6%+F!h4ai5c&5RC>_xM1_~9906+g|J4uv*Z13} zzvo~4J>UCVf7^AveD*2|i$0MK*uDm+wtu=46v;V~5{#7IRBJSo&Sk?sDc1u3h3e{p zgX+txq@og%t7^S$Id4Gn8Tw&i@#hnlE@XX&Kf%b=T#vrX^=X2g^HTjvlXRu=o(uRG zHU5j@QVddW9CwnyxYsx-(INoWL!Q&nA~=KcQiz%ztze$-M*IdHQ4>d|a8fSl-3$=> zN=}kT00saL{e@BO6V~!rk?CZ0rO>_WePq-<08tKkrokF)MRDZ1VGjdW_4UCtM=DBxA&M!>| z|MV$Y(R1u}RbPpBd_C{=gCwm_mhXR9$&E8%DV(&3q3eD{ zHCqn`x_-bJsvXA??Vg_0`E0$Y=Lh|+F3s4PQ!|vBSHnWazQzg_f$zEOA?AovCg^2{OV0q+CCBX^G5+{+b$13i{seYPZeDC+W@<{%s`8xi`c)~UoMyXPC7V-s2Q*5-XKcctz54x%IRzS!a`{XA zUbxFSV@yyYUKkG@sKG^&)9w1JGC-Rb3+2+1-g4!wD~nSN04~=VIv67P*>)OTEcfN2 z=a~;$&fqC|S$Ib*aD!tY-1~(V?6&dl5W=@0+V5B}JX{@6Et(=Y$R7rv@q*L7X5PhPB2)nJK}TrWz3^Qp>P1_V;S z3TSS#eM0X0(3U5%8sxmMp}PNUz1$$>F2fqm8^`t}1PaYr{v$VGh z_rS;}^VNW9&x=-G|$>%;ti&UE% zE;5?Ijd>9oJNc3jo@>baaB6TSBv(_Ww0iSdw+~YF{0EQmf{ULrw^@Bg+&GwdjyBPC zumf`E#?x~CvvL4H=C{KnI^p58x6wHsj!W;+j=VKD+~Ae2F<0Cw6Q_6RDvn{l*WgZl z7UumrM{_Yl-N{#%-naY5_&mJ4_0mj(f9>e0m&VSM4|<6-iqQlmmnnd-dQhsXh< zA!B_ZbNIyU9{apeHU?wr&9gS|p&#OHGA{J!UjW!?FYn~Q;C|2>O%vjza7*L>#7yFA z4CuLl<_nce%#m06Rhj||{~(@!WFGrxwwFFYLp>Jn+-z&<{60n^k!9L4TBNr#L^ z1VY{48*Z81JuZ2}=VFBu0W|Ke5ZkHNO|ZME-^)vXH5z?8X9~;9+7S6kB0ap@iG#hnL7ex5F=K?YT_D@RckXxDcn{>?*I2BTm3gJA-!!Ay1g7Q zkxfKQb=i4C!+Lwr#?P^YSU+)yYhmu$&&^QMa+*g_7dBdB4HLzy8&ogH*yF0BW2tGa z4%ZtnNNNmL_c+uKUTHTAQQTGR83kIMtPT)!v6O7k78yi~kS`d2wWA+e=cVNSOY1p$ zN%SCr68f2$xtw4*qdH`ZEnV84#e}76Q~`UMybhIO7f$dG6qFxf0Ii z64N&Ygkt4dNtJH#7=LmvjNmz1WfK~h}Kl3yH$shcKKlsP~n=gFstG@YH z{+(a_&YetATEg%V4i!*5fWll8FmA1~d1< z!i9T~91}P6&HCi{NTveFBQ1YM`yz(Y`D^_TS;FglS}4Q{nrdAmoW?uEl9 zR8U1jF+6skt36J1PgobE35YzfyV)y|JJd8p7Q>|Ce>HehGCPi{J zp^_7iKDDApaEK*QZy!6Qeh&A1WgiL7I|WLJnt-C0>98(&qC*p7rOuP?n=t$RG|Jl6 z#K$1eHf(>BNh;#@3DPb$`AR+KOp2;pS8RA?s~~PZt4G*PqysP>ix^ak4_nwp1F!x@tCsY?5$>b}E)e#;DYeUS+zXM*R|abC|}=v(u7R zF)7xQ8a$sn0(W;zN>iz4%t(TjpH&Yx)Ak#lSXttx7UCU0S^Gfa?a-%ryTRvm(Orek z9TA-*S$Lf>DH^zjH$isCjmoimsN?oUKCQ_Q)+B?`XoC%kS})8(XCrWta8Dd^Y-~RW zO_Cd{SUo@okSV*CtW30JFqvlpa7%Qa@;NRiJJlw@Qrxbo--tg9-V&t2;?N~Z`+<0sN&5d_|jp<42 zSuVnle4t$qEJD!!G2%NwPBE?mhw0+=Sbz3exNRz(-c=>6aYZOpvoD}o z;EhJJ*v%=2TZZ5py2hvCV{-&neZS<0(c$Pcd+q_*#C6kdc2d1vW1kRAMzB8Ll36C1 zC*LB{cXvWQE=l2A9zX*Z&1nag>{l*nm5er{LI#}bc_V5@gFWjVJp&#=Ng@M^y5)tv zLO62OBnfvc1eb-&w$s<05TaIb@C24gzYoFR{(h zTvKm%A_hB$JdY!7zRz@-PXjv5m3O=v6R+nqFP?d-PNgB_y1kEV6RI^;SdSonio_vm zxSfUj{_#KeL>dM=jqwEf26D7)Pyo;sc6qKqcA6BzDWe-VIr}WY6 zilQ}>@VkOF?Rk0~ad=Q}Lv0%E2%fO@9F4IO+75z^%&eGPDxBqo;I4_-@h!WlPaPO{ zjuOo`cb#r0wWh=_W&NV!92w{4@HK<@I7Glu_?^;;>fH4o=O9xl1lTQdMDX69=a0~9 zq_0<}cZJ>MwK@v>$d2d7%o_hZ+fQJ}KRlmrD|Stzg_fZFOu-vpfd^D&)2Zk<_+$&) zV2I>49QAI#@wgMs80U!L`V_kzy))-~p-|zQdv2PZ7wEh>Y#y)}Y42Ic&*vPuVIOkJ zR>{Z>c>)hV0-qAqou+Ek;NDAWu}32wrQnKn6*`tpx;Glj-0CjnxKI_R3trC+kI&S| zwIZa$8*oVQ;F-IIcMd&NwQ@!bUe<*qJXw=Sd#gJ5S#s4rABPl@;65`Of!zDE|H=ee z+Xp$vl{4r1u=$kpb1&kEJ`D$U%wo%8p@FVU_}010>-NC^o_75d6%#Qee&XW%B_P59 zOg7_NHjffuQJvmRiY}%YC3y5G5fg`isnC zSD4bM2oVzDYQl~^3ql=txXZ$&@^p28on3#NBTqaJ!#O#XO;wS(67+_nlYf=U%sw0E zoQy5oOmh&Zk-}6*??2xR?{cbB#o8*X$+LoIOm%1Y*|DceF*|?PEZQcMxiFC@dVj@R zv-HD#^SkF;%p`$68|}UOK7gwNMYvTsoY6es!d#y#gR`v&-}^`6(9Ydr;sn+#jn+ zUW41ged8en7tB)j8rR8}!_i^n`o143*;?A?W$8wcMQshgMmj}AR(*J5Z@jCLtF0s%btTlyNR8| z>dr9^w&d=YTu3uh?$k?Myk{;sU^VfL%33S=;DOs!l4mC;pWD~4tI)s|abZiMHc3Zv z%zVwq38J7u+l6bcPKVjmT5_AH6g2WsXEM%aGifNZNqUr_-Aqym8wbfaicyY~r~w71 z-09ts2VVzirLJ_jOMP2o%~|!vX+2A&GhAZN}!d=&uPq?`YRP%&3gn?lJrs(eOt)&I}W{lEXpzx@0DhadToZ}^5Ue&0X- z+yCKze~qQ1g(tTC%9tR~)jfXk!~D)>cp1sLLLSIn?3&=~ zJvnci1PcNS9|rala@2X{(_MiRvmu}R8G48yd*YCHvKdF$0;dT#<{@fUpZcBFCdYV= zro(aj^SmYI`6F`sq^r;9>)ijiJ}Cpwp>X1=h?;VY{5(I!oQsQ$D{6|axJjMATIbr! z__#lzDP}+Ievj3)c*dlk!Y!_PIBxSxIVX4X0tX*Ie){>(fAaQeH|JGqfT5_pQ4Beh zV+;=$qos|VX@f>zK%?6!&aFhPMVvn+|Qx_SvyhC}?1PM~7}rjgm7Vm{a5!h_wzR{h!(m>Kxfgkwf&E z7-nP_ea1gctx$_Y0!D{J$A^@2uSj9cL*61L?-5Cde%26tqPozP5kb^GxEW7It?`RJ zo}WGfX+Jd~|G4xl7bZOqXufNt>FKWD>lx<)A4yoxb>?iGu-{1P-yYvuRRoY`<_`!M zfEdt<*eVDbu{2!?yL!hai<6;pwideL9G-B~{9x-dLW8$DO2Y`NsjB-n3p!+yQa z{dD*R1=R3XB|thfS=e}r46>eG=W?GsBf^y0$k-i-cNS1N@M;DJ62J=^J?tKq{dd<7 zeChk0zOe@Sg=oCp&gj~QUN{<=5hQ%%Ve&l{_CAqIwzi=p0=Aw->wk=(!mf(?eJIWTAENy;Vj_=vr~juk|3I*t4(?HZsz{!6=d;P0{!(buQW zXZTo;pI;ah>J%yCA)R3|H23EDgRwL+~9g<@907b)gz5EcpK{?#i_SnArruD zBdj)2%-Uv6lso%Ruxg#!=mcV+qJzSoBO_%}P)lSEyl{6i@S@|S|u?w z=VD1vX+^5{+UdULFU9OV#SJ7_cdK>$2`~`#d9AMMq6=P?JTjWW=^=TY%R6`-Mo(cWm9!ZFfQqr+8^Xn@Bb>er~`fQ8M`HFYVn@fyq}XN2dIs;S0n3a+t35*n$$ z8kt?BMxDrI{&G@1k-4J^o?XEvk~8A5n$mpWA%_X_W1xAX2V_e%bc=dV`!IN->6 zL(9ld^_7?;dFy*8{Z`C?SLOu!ySVbed?7~Pdf@YXg=k{qVN&xS5tM&ge#V`=uuIqJ z5|`LzD{HNG=E$7#^+o4^^HmXjUJnRjlQ!#OS@W>)@fgB1UFV!V?{ZzzZ4t@ ziRAtxD9?7DLe|GmOg`pCi>_#820j*mzTp1d-rdNL3qF zmBWHLL7$aY8mD<4G10$;q><*7Ear!+W-XV-*S9cX<&{;{y5liYO0W={I!SiaFLwZJg-*g0y!7|y0^(hL`)pln{zWkYn-N>b zE*p=NIdkkxpqB?N`($(1%DX(~ln**9#5?!mVIn6H04p2xlui;EHP1X^XXoBMpEF5Ppyh3? zmp{$I0OE=%h<>K0Tg&H#tuybpEGW$jq& z1@H31Hr6(8e`M2D@Qi*!fzqY_*^`@i;A zh1!$bApVkCoY}hf2M_3MG;Bg2lO(}G%#;l<1s|eTr>&lXJOc<`6^GS!^dPU_`=uYi zoxzo5LEc;UGNCi;c$}ZZwyV-|=Od$U)`fC%*@GHId z5uQ0i-b9PDQ@;V%u}kulDBKX~oPoV20Nv{nP;*x)a&3?RARr5;=+GJ;NksZtr}e94$4F56h;2~OwnKI|{6eLy zEe^NW&^kO)XXY4))KYl9E1vN1m)>h?1fe=}^TJDLrP-))^I|u);f&_e$Hl8jvHNeI7&1rD@9*jYX zHhUYDTt3xdbL;s>bTZ>Q?G?4dSE4k40F<@b1tvhS2e<~ta%i%b9=051Ylg>KJ{7Z9uq!=&)sPJyVNx-5MM8b&I` zL!A0X*Fi`jX^t+*hG*20;HMfgmqs)l(b$7aei#l0Z&Ou1{Z|A#wpk}M0qc^F0_eAK z%J0D2y(afrKKnYX(Q+N1)i23msYL*o*=Z8$ z+ZT1LHwofb%+E*>|3@4*#PCSNu+5Rf{wzhM`GB8KIh@$b{s~v_KL9uFr^qb_DV*0E zee8c)>GN?hKMK)JGcS?i~&2AH|O{NR<9pHbc_#R`h+7FErHi za;8BHYw%`yXrHf#YXbN1gU@BCVUrGyNuH>ui>`yioAtr!d7v|kezBfnYgkbrR$W~8 z@8KBfP00=KzYUeT7|Uza$)o`E@B^W0a{wKQ1eBgr)|*)TP$7P=GX$-_66vl#Vo;Zp z!S^{Z{UGPg1@wOYn3={td_Bi&IC`)Uz2JTDP*2~leHg{JmKj!lX8plIwcI4VW(Nvi z%YBn!GAn@}G3w>JU1x-wzw26=XZqJVy`RGKGtcW0OL>kqPkw=Pdz}@$k8`2zd^w8N zo`RwEv9O-|X`G46q&lWY_>&bS!qbl6;v?mIZQKZOfKBH&F&a2^_J=z}kmxz|$<4YE zZt+*n%739~$v5xY0kdm=nH@v|6FUftuV_J6D}Tt~f6>osiG7ZbVfXo=zp6Mpr%>5D zTGf89?iV3NANYH3efr_|{a!2Kr(MQGP4uFRme2OlIRL4tJ3@2w&W;dr%=LAy6pzo6 zxPIVE-(N+R=E&KvQJ3}K(=B%7&%-D}>N))Xauqx@D`hgQ77e&V0*;d$;-Egec%6*u zTpWkrV0&9cIe9o7Jz3bWq_6v<0`=sw{c4FL^hN|T=cwm#7`y(Ef)xNa5q!MGgS4hk z<`G8RBZ$Dwf#x{cYtsw^WP0{e4V`*)SV)T^CeaX|J`4p;hEA><&F%Ldqco{aq`dW1 z$yQo%hWV3%OKh99q*M@GSNdo>1}Fx4GgYA$56A1}6k?gUv`R^8rBz^^esAgnp?BM8 zx8Rr4+``(|A1RCC_%e~iKVqqIb~>YA2AEo>02A4DUa&4-u|B+?`r6})LnOS}B8BwP zL3-~KplUs{>oH#Awz$*gth}VxBX2*?UpT8xwzWfBI|WV%ky3lyGHVW6EjyinsRK=suLXz)2E z{~CAgQ+V+O-Wt#Z0K*b1Wco#y&PzZ=U);Q_ffkCRld)N&k$D4jA`hf|65!wssPtqk zsLxIIE>oDx{R<^i1IvaaYV3nVYIwaw1jF`!Y~Ox5&kDj9wDRNllr_#1!i=l<}2 z{D=S7KlkH*&$s-l4S|`-O(B#G zOET9nm@3haYXD~4p#JHB_L<+9!Q}z3=3dOs*$ziCeJ-qD%q7lI4v2Kgk~$y6xv+W= zg?cPOLecK5ixJSqeh~(IC|PZuh@jqIv>q29xQYPDG7=c^`guNs2!IthmYdb`5KsN` zP`H6ji^!;NSw?uQD;xdpA7MPhh&X7mD0V|Fxo-Jzo)Za|KbZh5NsP^@@DdlD`5gE1 zk+@9B$qLxKURhi4CebA#J0f)a9e~048V^2BDW#I?pjV3us@Yj*hG7odEXEbLQK3WD>-G8@|KDH#pMKVnEsM&tspTd_9X>R?6YQ*p>p8 zs8ZI3KP|};hFZeh_vQ=mxPQ`YKO>fo{LH>ZD|p_!H}v9?h}Tn`(Z~a5C7MrJ5wAW0 zolWo$atTRQAeoUjQlRbYzJJxb%0RVY1*%kY?-y8dYWV<26DL9FOjsC)iV0r7_xrzu zNk7I59{;pPwSJ5Wocg<;g)mVZK0ZYQ4TIkBIS{jgkt(9JiYR1IMmR$7$;4gD52Ao% ziqZaW$_+top)b~4stE1lcR&Q;bFx_A3jonmugffrNZjv~(=fh{E{2 zfGxy@LUQCrxWVY5t(V@;=!-SUC@nJ4dOItm*y`a$$*dbu$}F+XKQ>d$w%kT`;jDgxH3M zMmNs`TxWeHS8v7L(cN+T%6Jd?=Y9+Ffy!mBS{dTLT7&}2X4-1U^pzd8`M0oZd??#r zO=~m^eUJ!h73Jh=07;6_gDfgEjXk5Yi8MZ4`j;zbYG!OHMrw}yP(4UXqp%#*L8#Tx zEKe5){eb?0OxL*(|_tu{kOmGU;Wqq*bn{jpZ=Nu^SgfI zcYWR0eJyNs+6*2JarFSDwgIdv9i3b?rp{7&{v$_I2YZq0wCo&!lYtHB;`SU-DtY8H zw&#nEoUazdw)4@*!27cY9nMt-?g}Qvtr`J-43wkS-s{KcqoBMjSNxtk)x6PVi@O=dOM|aR+cQ%K_fq z?WL4gM?XDaNGI@cw49f)G+FaJZ7m}o)12?hJ}-Xo4oD3sc;d6l&O6~a_$QhT3sYx> zuB2YoyIsi6*sR-6-SZVp1&`}Q2U(At#y(DP7|)2EV7lZ#IbH~jvJ&9cy6 z;nqLIb`~WSWzPM6>k_9iF}!($}KL8w@~M@%#>tMeo~FdiW@;Sj(9a zDGMx^$6z&Tg7Y)}px6}>e*ri{CfNt39XO8WBu#>z%oU>}KCVQq=A0LRi?tXQaCY>5 z$6(#L3%4KVW&Gw1IZa7Re5o}w+tdUfaOu~be_+L zcf{_Uck2;c3tdG37^biNZ29a%_qlTo4Th|uUUX2CKY^nt8(_>jCqx}#7o59t!(TBG zdN#IJ3S&vE=;WOZ==(!efoDGQcT;;=;`md?k>_W}j@-_53z>lA@p`z@-0o1zPX~3{ z_E+3!F~_2;9J#Zlxo|^m297O6ibHDvrfVz4D&bY{7rXGWs z8eUbj-x;^&%nv}#Vb=Azy`SLDK@}MHVkV>@tvn)g83c;g@$ws-E z`%qwlz#!<3>|#Gj=!G7Pz~cf2ZucgH4Xp)kjK+;p`Mp`s07^KgSi&(XkMXOJG9x~= znJVG>dFf1lFG-~R+S=k`ewi&X^iO@-;KBa+E}AED3*y|^teB_VL|7<@khsxxuAk?- zt7>?6nZ$EkIW-Q=S&q!mIoL+)<|C%=-Cm`m6Dq=4XlaqWOEN78eRjPZsBA{vVg}EJTifL!H*E1@Q zSEeF4H)`Cfr&zbTqLJy|Yl$?2(Xww#wrJi_9;xMW&#=LH8=%xpx>?#!7Ubu^b&-nW zw8C&4beGzwRjI1{QUm422V9qKbx%RNk6%OLmQuR4yg>mkQy@v)8gmM8c(I0-6S_V? zHLt?3#PBy+NzO=pulO`I3#$<`OohZfO}u^l_+R{yKl1PV+yCBA{-vM%;upXEAN#Gp z^*g`gJFZVI_bHyijh=RQPQ|3eIcVIPHw){9BgZE7@Y~;nfalzfgnS`UfQniNicZQH z0A%WQr@+gS(o$G;Ar)&|2leLt8DuHGrxCTlLmG!EkF2=j=nBd?JBRBNX3 ztq2cUFMp*S7~m3pYN=^+K!P&DuqtX#P*&SvNgwlT5t|`z9s`%aFgU)7pG62|FnmO7 z1gl)J&-Dj1#xwE&n25060F!R!^4VioA0Bd{iSSf1ouR@@yMM%INAqd^;aw(dQPh$LiC{YwF1MrK2%2EwO>Re|2#z&Ug6xd ziA1{+yoq1YPe=SGI`{RLl^y3X|GAV`@9);4hD5>FMb{lTLFX+Grp9&VBXxGse=rXm zCEKo?R`a<}KKa&P{jER!Q-ArVf9j`S*XujJ^EbXed_bHF1+u6)Po6~U`c+P$%%{zM zx%s@l>l)+6LB31pqL6)apA-4xbgNNeSmcuVA}K9pI}KM`Utu8SzYCF>ZuCDNMaLA4q5EA-!c0$N6BLc=0eTpy^hiO>c?RRf~P;1t{-_r1ebuTUn1p&adWA3pXlQ zBQ+#%r6xVyF<0quj~ol^jr-XC8WGzKT$z)0<)FqhtIdW<-eEKRLLhY+O0#7Fc(H-& zD$a8%hD46GeW^$LeypKJeqY#flj+0Vmg>&Wkv%!9~RN)qd_^ZaZ^L0ck2L z<~R`%PIoemWcP?9Za;2ZF=byyd`ScF242pzkMUkPz!Rw0zEA`d6s@8s={)h53+`st zg+Jg6yL(Cc4cc_@x#upf+dN=v;*`yMVX~b==~!8Wz0PPU-yqq(mYS7U_CeYL_Baoc z8j#(8jxazsYWXZ$As2Qvvl?>euLkmPUH6u9BOr39hRdzaW1ozC_3l(qf%mh!qnU=o z*RWNo4s@|F7ph+<4Ew%aphl3_JzYZyeRa{j2Y}kEbmO_U99Qu zOSWCT)+s&!*qR&E&8noZyWG2RjV7RB$etU-)z@%vU#z)Nn_%yy1VKF(A}sH+A^*@6m^U8d6hgc;BtYIiLPnzmV9jV z;DcM%qtSP>I8w|XlzjmrM%grq-D>naKl@jI_6Ps?pZM~}``doaulXInV}*Qv?aCLra@sQMX>aFW zoCJPw1fJ|W&+D7z=lqvBy*PDFP?Sg?|egia&ft?*%0WH zjdSfto|DuJ*gBc?y_;d?x`RLm=h(sEQHJ*J=(Lh+s4r~$&jH%6YM7DtPWaUFC*2x` znsiOsVz=7EjroWZeV4IUGknY&Kkc?>y^xCQ!0P_ZTS~d!T0ml^=ggCb=Y;EiuZMe{ zgt{xk@NQ<*pT&-=@_reulIZSxe%aUl(%=2Ne)q5YHNXDv{+3_$;d7q=%1b1sd!UrU z8D|pDfUNXBsr`oD5wY7JM49aVmTnI?cJP_qGMA%?yE`O zBi&C2Ww@ETLoXDtX3=pV-75)r_640X>6L8VtcR*UX0-&pcs&)Vv&kKUp&D*;`NjQL z=Iu0MNzS*(G3|X}9KLas?8N~rV>F`Y$}g`wy5C|xsSg5D&o44(3eL+G#+>@<#YG%9 z%a6db%8opbsUeOOjXQZz>%J1cI`2(?fhOpYA0xop={K>dyFRgp2gS8n=3rO8*d771 zH|mM$-E#w>oRpuBiRY3_7si+VnMS=}T(@==z@a#tF&>#vQSs56@S*zFEh{@CrP+V#B3X(dzz7z+Z%|W z=7`p#E-N3iReGWBg-J_1K1c0aTe^BOXy^)$bejhlawYaamKH61J#X9_49g)=pCvOn zvGj#SaVD!^yTp!07h-8bt{Py|#(+ z9574p4j;;mPv@%;clRuRTHds0GyEzPoGCS6%vA;<|BjG?X2ef-Z$A zPB(53QLsZ?r=;gsNj@tyGr0PCW5WZ_=HewPuI7Ec!D(VEC?P&Q8q|Ko!OiD9RmL1R zkc28@6$Sxr&eh#ihUgW`O#{n)C)opDxZiHDy6^kbo5b7w>7V-HKlwBN*U$W>-}0M( z`8WM7g=_A9eR$2>@d!d=QI_)@eYhGQIjI z-?xKRK-Ijyf5ilbk6w%1dl>eU1;rKM->r@iWWggOK8cnDX07Laf-?O&yQ%g&7Kldw z9=Uq%S+UA&WMtKx`)ukS0)><%_j`}7QXbdTWKZMM%^9q%kjzFb*1&F(p>u-p6C4t4 z{ahM`U!gfCxm@BJkD|;L1=Aqp~ACnZ^+K>$WN54FTe?8{IFI|mIh;-}` zx-P?uGlzMNIK2L^bQSNrU#}Nf_kA1oqh?0pb|#5nZ>*Y8M5e$hbSo==W^i?n8ejz|zik9- zt1$?AzC8#8%J_(O&h~~DgBx4+V((;=y)MiMcP#-+V_U8CO`nr#WU~Nqfr|?ebMBFc zs9|d(pFTb7o;y0vm{j)o#LltCSX$vvOj?k`s(FKp zT0&Q%pU~|%MM8f?d7(5E^^vq+;G250#=~HPK@(wCJV{(t;^Tv9pW_2Lf;~M71jnZ` z=u3TY$H0H~ep`pF!J|hMMO*Ci7ay80@EKgn@tCtzy%<+`{eyR_^sZ^X;|aAz&cId~ z>_(BGTp4NVj3;g73{4Asd;@@VP(r%ML=3;Pk9_}p_Ih?dUV#!HRr>#rC+e+ykeokp zDuz!PiXfxCxPg^XnV!NXHdFyGTV(rKEpvE`A z#Zmj5haAW`nm#4Fai4kbIKLSP^`5tKWS_pVEAmGgO}3;$xSxLd5e=5oLZ4g=Z~SJ$ zPxw4~Tbd~@Pk4dL`@xGx!><H{pK;`%8h(!qvz9Ptc|nx#NQ#U{`8D2@)Lu zfw{N*PrkCrk)3L-HL5LK>|vc{aRA-F_P7TC03ZNKL_t(jw4xX=!#^bhXO^}yH=<=u znA}dYrFes^$ajD2Z`ArTbBH6THVfHEzRO>)g;KRIaD%&6E~E7L`axc19K0rDN8ZlGoj0g z;n}QfGce~q6O72mzTK`hs&Qzj(cwQ93%3d!oJ=({_Qc;7i`4)W(qgeZdHfzFKWhJ* z*vfMYw0n55fx0lwo}m)2r)OAI-MFrR@4j0R1GvDw2UJ(68-0Pe8qLd&t(hADctD50 zU0&xPp^B^f7W%8a@%4dpyfwr? zAX!1OF7-bEfN_NU@S`YHp=l*^HXO{1gga7?D?P20R+jC6C%gXTx6OQG96^@as0SG0 zX#9bF{Ww2%y8Gu?`GX6>r|(lXv1`@GKC!g_G0)ZDfGL~@Sh_xbX^5^*a&}WRXB2)c zxop_vz45dG=gF)3&btF!PbU0lem2l>eri1+e&+iF^ETK3o^y}T3Rf!nZ1S746$p$x z;4Cp$$S8Om*-SJc@F>{=)?2pgTg|q~9W#$5OR%tFxDArtyZ-%{Mh+bXUq)ANU<;z# z5m#ZRGU}P{U3{fb zd9*3eCG#!LC6AEB^z=+!fSs%Q#iib>A3yz+*Hm9nZ9zXN+m$fYO@jt%~_pbecop0k^FSUEWA9lyYlk6+~a1CQ~so_Ww)urHUh zp%fJd#5hE9RydrTS>V-Rj@>b9EsWy`2lc*VOXr-8VKbA{!P&htUsyjz^sBG)mFEZU zIg0fVi_;G)CvuWRCV>Wz#e-trFfJV%n@p0I&MSqy3-N`CU?*$I(t5}YBvE1(L-BcD zkKDV+?1%BbK2dLKa65M2=0R`bOFut3!Hc#-n-lv8Jo(P&y$5q(^{MQyXdlq)=NbGu zj|qq(4&wSUp{-kH?{bB4x$w?@Ljub2|s0bZIzf|5}suH3Hijc=m->YQ) z9$Xb9zYehV_vIWDQ!x4pYfmx`Y+2qPKX&)b3m;N5fmQ70=C~X1|C9A@LECLE72Ph z^v+5&n6hHT<$*_(qSN2wiAVtI5ac4)yavI4Y`x)C0<6_7unw26OTQEtKYFC0}W*H^?zN8cxb zAzX&)AzKj*tr(Uut<9yKC=Ga^t)R?L1|!qdDZIX-veU~Ze#n-VAa=#6!#F&z^gI%# zN1}A*7{^62T0Hd|_s<7TdU$-^w{uIi%dSR@XCH{B9#`gf?ju6#b#mF6J9tYgw?v_u z+tI8(X=OOh`)aD8hvj!WgDeSYvhjs6<9w9B@o#!^xH}r0=UN>4{#Nr_GC0U&KZ~au zy z@H*$KBsnJge>8m#Zs>MEn;CZ4X0Re~zI;Ugyg(iiLZxl6zQA`+#LLh`KFU%xN^)ln z5!%#}swwQ&V{RxcECF2`34-nd-Ji{NNw=9D3qwCr8;Us|-;of=xU|mrFjQjsLa)4U z)ba)Zb*rihYOLiTezUnDpbDkBScuJ5Y3<6?5Dun|r=S6@O|7`+#oFouss#^dss^gN zJ2tHQ&mC=@dQl<>SpX`LB!-8%raG+s9$KYtLF2_&HK39!nwHo(*>b`P0QI&DIh8(} zy__Y~<#XD*|Av}K3|x*%7%9}!V{h^ZTTT)zCCDtv<$HXR%w`OBXx8q0H;W; ztKZ6@C|w%x3iL>$zIXugxC@U_G}rq|Nf|tdSQ_WA$GT1q<&7H8owBFLj?2n)-s2vi zIbTnRBP$G^SK}u3Zh?a#C!eG5P=m2=@8pn_dde@53j-b8eoReUM>kZ0PfO4WWjyj=PuE$d_L5%hkyFIc1Yg=1ZT&dKsga z(K`JUfbf0j>O94UYDJR@&R)q`sxZROzI6n=yRgT{Wtn8TI&T#I3Ljbj5=Sd7gUq05 z+MJh{OeS)j&F$He+vdA|sEE%97?xc1}eYPEY@EFA&f4ag<#(}|&PV6M0gS)J%!U!#l$K1WNQi9mIgXP;rS8;>9 zvTYA8IznMM-CpWJ5QCG=mhGK`2qm=Gf!VgzwqU_Bs5lK_u+Ysqxf z*U?84#*y5oCgMOvcS8;yiF4U+d^{C)x7)h7&|mQLC7nm;%ylB`G*fFt0(o;~=K3Xd zIASWsTTE{-Ha^aYYg~Rxp6U%#jvTlU-E}UA3`!BCFrJx=g%YlFj8{mn1Q+HwZ}KOo zvywD%z-~T1@?o&dtS4!dN6n1=b-7_D67vDN(g<{3_D&4D=|f?y&B@=;ST5Izx#BE+ zD6IG6eMA>K^6GAvMZP`aU^;k4XPu%5qsn|%m_gZ>Un8ss*#;9Q+^e9iAD@esARTFs^Q}B-h6(Py=;h6Z(Jjvsh{1FHIBPjPsCL&GIT||o#foBnwcsj2 z+z9O3jv)Fy`|1K`JyL#Fx}OmljO@aVW6(M~H^CSdh?x_sYUttrA|&kyC$FE=xbSY~ zr_9c}K~p0navIX;U`2t~@t##5fp-G-xGIh01{EZ$kCQl(Eu~G;sn-%jd;f1sJJaA} zXHE{Q6&|xJK%6f-9{8B@XtnO#` z)?Vaa{j2}ufALfQ`6qwv*Zz@j{f;mEKfm+Uf6rHQy=0(FDNXt7h-QI+>j2)l({(KK zAb$t-?ff!eRC7UcXM+NSR=rfK;e?3x@_`0lFl=)|tnn~umf&*S3*IPY0x9<{02BE$ zC+|oZiW4f7j{F?lj}bc=$}!l?(j&4UnZ=hfJ$ip+P-Nl3!{LW$)f?JAKQ|yb+=BrV zH{YYKm|dQH!T5URL>#3&zC?tQjgc=U8hZBi>ov~5`oKNE*9X>}wea?mWAeYMQJ2!!pR-=-i4Xj@e zNc(rb@c;h#KlkT;?Ngur^rt`bLqGIGFK^$V!`D^j-?#}Rl?%$DqO^^c3Qv<(@L1~k zgVwyC^nMP%xgSVd5vD%~My@)^N1bUM$bAxrDe>7k##TL;c17&T`2x3UInTHnVt0U8 z=zN0P-NSB{OCt(8F;lNI+(W=EU1Dh;-(529Ep2OBQu;n~0H;nrOn>oQ$T2eM5ZW;- zuaKqX@Z;cB2i7roIK0{#=;EYC6H!q>@54aD;^RIzT$$=bfBwSllT|WN2SswtE|@xc z1kV8a+lyUc?~#C!56scrHplm=*{KmmH%S^`6&K~`1qkV$59uV_yBS#p&4%C2yaNGk zm1vJ1i2fS(zn$aA$7625?(LEE)0ZKdpiXzb$j&H$qrp;cN= z_vH#%fBxF5kz*yunebA}Lyjgbl8z$S8e#Uc0XnOc=M+a5>*PF7HHD%7?(oS;MsNzo z^gA=LOz`pKa`+U-md4nX*YAcO_oZx$ZhugqwELu^mQ(O@e-23^>~Y^u3-%YEq*tKz ziW)xD;2>lcIC@kAURdALFw}hiH5sIOSuWJA?0$BAX+A z@@B$xzDyc~H=?Z9DK;}FIc~VBk;`M9W^BZ%;15Jgo6H#kHDGLBmgRVsIJR~%p%o1U z`w)|@bo|K4UY>nBShYv0yQ?kZHocz9bXms@-}%f#ha71&?l#l^;65LF1at~)Fpd#h zB-5ouAyQky<^JkXPZ~!Nr^V=n7{llx^+D^jOz>EcOPl5mn6*+PyYpswHxAY%CbihQ zQHv)&S+!X3-0UVIySh4{b|{{!xFHLhMb*gWXQ!ACjPfxtxD{&Gac^Mxb9M|+6jOt4 z8BiiuwKfY+JHIjzDWm&}+H?-G zyxH2?+*>51o|%rzS_-Iq6fJ<;^E2=@VYKP~HzR;I%Xvo7<%k;CV~oX3*Xw4Z{adQWxeIYTeGysy_8$A4MD>mymC z$VZ;vQjTxGu@X^iK@RU_Bcd8OprhsIRSaNr6~$AuU)3S9mcRiOhiu)s2^z z_dfY6pZt|ie)3m7`77_eefyo?@m=+R{S;$zxHY{Kvei;`bzwPEa9tc_P|6uNIb?F- znG1KBd>UjFzO{ZEG3~6CR7T7gN-0i?LvK3rL_q>|-WMJu1TLS;#XKieP_unAM>+$ct8~fgc;E`|Ertue;Qe+1+kleAz;n%n~9}0Wqt)fjvpbXNu zT&iBtk-g#88YnUvAS1d)`1o`P-#;4DcN!_iBl`0#8@*>6(nfzuDMAlGQUzlj#arRe zW}ue>LQG^C`8Hzd;D3;%6lrl>oVjl0ClG0cSRN>c!|y|H1h0`9!6z7EtJ(b9{?se^ zFy7Un^Yh$UuQfwVe#GbmKJfV)9Rg#gI9!*3NL)YuBuF1_)( zg*w6yBB*&J%hMntGc+Mg29Z<@h!FueW5VaAGylxDbvhn6R?e_OVbH;$jtb$}3wa*E zC@%9!R?3QO$-uE=L77Wf9%03isaQFoj6FTAaZF)mXsS?Y7{%e9nxT9rlu)FY`G>)^ z0HDS4zEPFd^$eSO$xa_GSfLRxP2Z(C1z!@(L>iDShw=5sPzi22Gr>g z6l<jxfouYDD%qtaFYB4-eFe zyFep+ZucL$#W2y_c8t{v_Re#0A`S?Cna^7!)GJp5QDps+PuBUXO;ap0n zu|g`1A{MA^hNS@3iu=syp~jcHiIDSnh|PMRBgh?2C-Hgy0`A-1#HwRAG%NltVjLg|M~O(;eYfWf9Z?w|KRt1 z-yiwof8rCL_)Zq9RylnFDr!~m#%U8`hKd|E<5|o-RJ{&iUuNhdUWN#y`HhD-)~f8_e6P}I6 zEj>63EQ3_z5Dw^645JYv<1GNneYAH@A;aq`I_iD?|of6y_@_n*z^IV6pvTrhu zI%gQ(&G{m%J@PGBW5P^89MV_EsQ3}!v2Ky^In6Pwhc%ta!2}O@$-F!_`uAeQp?~=0 zCY+k&ve?g6u@`)}jOQ!!w1FFbJu>cVwi)f73}sPi5=r?G~}S<+&^0o0TgODk%7CDv_`7p+@A>n%_^_xnN@f`KUnhiTqoIA zpEJJAjb~a3_VI!oE;{c!{E{U5L8?9|aqPi_pk`}Q1FWc2qH0yz29xV2e&SDJsqG-F z(X+|iipX;``U6U=bLs353u~(;9x6SID z;+1=Z-cAc=@+a|)u}+TFGWF!-%ZU(j*q#o^1$KNJ)du27+yb(xd6YKq3}(MLB_lj31A z$Xvu@%nZ$Ma81|B#Ysh=6K9}P2S`X%X&;~2T=xs~fCEka;rKKnQX*T1GN(msNO7L) z^gPVp2EtL>7v+t0{UJzfLwyj!vY}JtnV$(T!fiA?aRY#7f8a6fx}IwaavFSorl=Tj zUxvAU_5o=Ilb0f^s}qia7bklSk^xG&e}fX4AtV)>*wRw`@=GO0sux>T|Kh z1!-Zq+c_j)ql%)o--22l5nAq=OuJTN zr3BgB?0EyrPK-j4s59}!ps!G9E{{Cz#^PGebEx;e@+%Aco=<%IM}Fi-zVVyCkyYq& zBmSbt9T%S9OPQLu#>yDJw!bF>?VD67^QhI4+vTt7sl;&X|33Wqv=~H&pYzBE3!$hU z=PnECDg^0Xb$xF)Tnt{&x3rNjp~_{V3tF#QoY3AjpUcg7Fr z;JNir&2vfOId!>&Ct5^)oMvh@sN5U82S3a@V@O8Nl9n77AI&=J;4Tmz=q1=mFzd8l z^L~H|zUpHInp_Vq=U098-}kNG^3k9Bxu1Xk-Ispg2mi5e`1-H!(==hgzP%Cy@~BO$ z*mW5MUFFSj_j>{v%&uAI3dLihPgEv_hJ9)<1fdOAO_09NlsHEvSlV+e98T*p4y-=4 zc^7FMx#WF5OqqDEuOGRDczsT0xG|29s6g!1;b9p{POx_nk#yx%3P`Xw!XP|%J`Ya6 zhN1IgH3F_H4)P)PMXHex`MxwZ-o+P4!TeO)&AAZR%j-m?hO25?U0(aCobR=XJzeZz z??7EowFO9?hvR0KYUIzzw;^)Nt4fC8E1_FwCAS(*+;H{m+o8jYKIbVzx3jln5Lzl; z{z}~*dYlwKN5l1+oDHBv?d-Vi2#%aN{Xs$}H=KX<5j*OsL4))+Dx)&;1Vat08XNp`L~_TNJ_bDgfHIC)l0yaXMcAS6XRfj3a*0*jsGqJDC{;qHw^ z2;4)I@4&Z+urBEd*m?5~^#<2?!#&9i8}-6=6Y>I{ZG4O;>J87_LOn%?f8T*`k@EI} z@jU=Ofj3Ok?}FaNS*|DQg|5F88_#h9zXRS<(``=g0(9{d-*Tq_FY*ye9qG(PMC}nZ zn|PrEt&-e@TL7Qn8`q-}0G^X`@)X}-tC#Whc9Vbc9q^_wlU(y$0vmieQ)wre%{P4O zeIt;@CxGw--qL<4!Cmw~LQn8b>dg@Iil#WOmiW&~|$f6ub2jRhydP=3?#ETG|{`5IjfhUN2PZdD;)yRWtLnhc5;yJb^dL_%dog zYq3e{9oAc_<;Hlfqh63U^hT~@L_26k5qfUEAv=X(Hp4~WS$HAMUn=d*#f-&UOG&{$ zS~~l`V-3k&sj9n$dShP%K)e&EszN`TFP!o-Xme2wbT?mOIuxjF!38|4%oollerl0K z>sc~iJF>U^#nKiZNIiGSb>^h-j(o$Z^PVA3fZh>r4LU`#pY{`Q_g;@>l$-vnDAO>Z z?P`kZ=li>=)+%hM!X4d>0fa2?001BWNklbUjubG|k9+p!>nmK7722cQ`B-^|z; z?RIbUwSaj(InHz9tkr5uQhehWr*4*|^GdW8hcs?J*6kop2q!Hs^?bx-ardzf5_io~mr-{M_hcLLJpLB2wg=g`N>Fv;G48rJ_!i=t}&8|IGk?~t#aQfpEq$l|{QzL|p zo>Z83z#E98`14$}|M%xV@rjSW_uhK~1_OX8Bpd`@R3*ly1 zW3?SRKW4PCxD@v`(`wU?8=Py0wcXWe-H!k#&w-B>`<#6e>T$_ix3UY+dW6dqyeBGn z-W+SZcisPGDrYerh0OF*Z*MGeK984(zxH4K3Vrnz5^<8)y`Gpp_xsrIIiJToKaKas zJaWngiw-zhU^SA9PXbK?WYblW#x3&Qi18-GeMU-v@K~E8mliLHeXRE@fHwkvm=lHZ z`=$~Xj*N_4f~FlGgf1R=rTdsA=K9f7QB1`&!U^6stznao2;@U20NIE!0Fr#;x_LsAykAV+)uUx*>W%BHPa`UB_&%m9Mn1>U*GETWQelzU)Eivw3DZ%7c*^%TNph57yy@@WJ=KlkRImci8G02sP;u#q zJ@xCydw1qf9$gl#6Du&@)NxY7Q1hf$*i8&_`mQQ+!d+18>g!Mw#_fd=G|y!Ev>8xj z?>IMkkjH#}hewd+0r|^l-2eo`40m`wtip^0S*)#0zHX`9CWWFZtF-KP9Cw}le3i}y zN{RgU0TUK6d=e+!4^vqIRWtKNulOu4z{pphXYMbAwa>munOivTdagH<0VI2rm4TL5 z@29y>lht_IyFDJ8cmc05T^3~dhrknuOT24nw``RLKF>Nw*IaiQ1ZiV59Zy&sRn1hP z*;E7MGW$GbN@r~|9GDlRIQx%_9uSpsZ5)tBYj+rK!yAB5!mi`ta!sx*sQfUe_*YWE z?cs8=VtB=C$+VtH170a4pPZXntc9t!&5&$T{4>}0XqeegBS2UcEwok%DpX7EH`Hvo zGO%o*%3l2@+~^Kn^!)KO8+0E?7TSSe&)gLYTcn|LH>oEu)!m-$)@7GQOa4eYCv)^M zFazrs)DAHjl|nUL>tkbN#!<7hdoAZgqH)&gwwy$epShwD`iZ=13f0`zXqJnZxdd_d z%rW9&826Y-Q~laAiv$H?m*BzfEv$)+G;~tX+sd^GLfqJNk33%&)>3b&CZ6V)Q+MjX zM?45vVgrk6j|=Eg!AZ$dZF=WI&Q4V1ZSJlj-u&Z%nV`_C20l0l?{<@}5%85?|MgG( z?Emt=f8yi+=y!d`$HeNV>VX8&o(rY6b+^>p`FOxPYPG%HGETYlPLEL;J;RzgsE8>$ zG8EjG{7D^%;NFBNoApU>1X3P!qPLd+uH^BsqCqloGR)lU3$XeZE=$tkU}vss&Ud8z z=t17cj~>BsA^Y<)()-oluP@j{G;g0vN|uY~)Z8t1OS5D7BX~P}f%|LC-CX>Cysk&k z9NfmZ=PzpM4=y^-*6WM&=C_Bv{^I;1AdWT30_RIc_t%KYfvG3GU+9xtkgst34*(K{ zh=qM%%24$v!aR{_l|P90=7`~F!BF3^u{3*WFp*9PAq!w^a|IFt>n$Uke7~ZIG@i}1V=HuKLT`4eLkP3`kfjWUm4(JtP)z6 ztjR|`URB+5alYYRg&JnZ{9XsmW9o{bk!`QnV||E`|A3081$=InsK))#%E&Xb|R zf=3W#A7V$0usEVC_a`PD37~x@hsJS)Z+z%BrsDi#aUPs}o!QWX4$Q0zhhMr)LlC2OZepJ|`qXVb zzI_dT3r5LoE7UdW;vB7iYdIqf^$%Z6MK+|#_&9Q`#-%&PH3=O1NGE%eB(yo!GjVi9 z!Off#hrX1_p%Y!7_o80WXM{1x+T7)mCF7hKy!ozro#^_=f#KZ;=+slr%q!bB3asJ@ zs!wyKa}%@9^y)PQtV|a3el-aL#&VEHhb2M+oFK-b=BY>-fuT5X{Q7lNLC+~wZ2f4s zj`4zudeR{s1przf>5$H)=G~TRROv|Vp-w@q!qyJNb8(QHUMr)9`MA9LEpf-TOo?_2 zYdX`=LDw2-CP{cA$g@sbhPtPeeF}!d;2z>)0;uCVq`F(IsdX#A3|%!59^=>sptKV` zR4d8z<5$bkJ6a!|CqY)65}ZY>z6i)v!4==RO4?A#9LPm&pP~fR_P2757GRPyE#RQ5 z!W&TAhXepz$LV9zYOtIGd=pg{(9Sv$3wGq1RHqn{*BFGshBmLYanK>llmDb5o>vqp zIt^e!?V+!JZk%B>J-DNH`0IM?k^NP5^e~jTx-fN(f?`^9G#P7Le)L51PSG=uKvZ`; zXv&D-MzMq~N}G)*_;B_ll>GAE3$-Ciiv$<3Hw9^d8$K{rpyI%pUT~lHwI157?p~7~ zw!}>k-J7+xyU@F*IFq`r?ddS?)|tKDYC9gBRK=O;v)SdG?`Dx6^ShQL?6#+*OGU94 z=%((~XqAInF5jurel{M!g3~%O)~y(L_T^n57%|fj0 z4HO$Y4iH9ym4L!7fwkhEfNF-%v(c=KGSn8(?z4(67ANNuLTiglTS@NP0DE`5I(GIC z_|a5M0f$cJ05#M8tZH1lDD4DWAfR@4k?-Dr_h0>&fBwJ!OaI+x|MuVc!~e`b_if+u z&2Qg(yB-GH3qrHq3mWaRht9NtXdsKCiepKhM|DaGVE5h3n>cu)Ml>XbkDN>#U*cyJshak+?| zx@GWu-n(!zb0=&aONlj3gst#}&F$GqZNv5W7gl1n2Q3&$r!Z$UbD*e|iGdF~H*~Qc zqm*fRHEcRfa3^W$7%z3)1wNB-v%8`8<*6`?S^~@NVy~q&t_F&0z5CLa$+g6KEEx); zXh*v<9wQ*e(+QAUUBwp5wPu~5nScZ*2^{U4U`^_8!J2+C9nk1vI)}~FB&~yIm<3`d zyGWBDS0?XfB5)r9Ild^LZ)8oJLzX8DyF( z#|*Ej-)^DfX0f+;=!9tN498pzUaoa|ACku{fA%rpqwK?GVU2=IA2$#ukO+{j}PA5qM6mKt|WOqyeUIbA{tp{1Vx z$dj>;MlSjM#xAqGslXpxrg->0_c?ew*Ewn@>x@1aInYoibK5{wM{n$&43+GfU^eQ z13pF%>3$vYHy!)x{7MyzSrfG&tVKhtt_K(%IoHu=Zl}meObWF+_uE182}JbFCmfUq zU*GBl!Y*(Dt_xl0R_eoBtOax@db;5h(^Ntb^6VxMnbb*CUv;opR&6L^%Ad?*;kog! z(6lt^k+^~$=kqyjrwRF75`AI<^G4@0h18!({bxrppWGMPH))QThE=v0cafPSvul^d z&?5IRYiDk!Q6$cFoVp!>z-D?WT=b&^3Vn2%Iifu9>L>*cWE?+`2$d?c=>k=Un*3Gs z%wb5*z82nOGv3*~aGtY@A&2os~wB2{s7Bu2Sw zdcg}a1Lm+#7-<9^oDp|WlBMhA3A8!lJ5`{jK*$xe`qo?$p#3sA9Gp-?Eb><{@zdh*+26afBL5(e)o5O z_YeOoKl<@ce8(y#VgjODnWoNa^^I7aV5`pj7e+rOCKFfXX@|SL_p3C zI5zuX%OJD+?+#a=u*z`oT%W_@RAP)OxUOT;&L)_4J$0gd#POm8^oOqrozMbqA!{<- zCPw>T>-64nfS4b{kphDO?yI=S{VvFEcfMZptXlc}C819YWCYfP+jB_Q6Qf3EFL;04 z*<_qI4g^2T({+|d|IG3=YrhtJG|PB#^3bD}aKT05n#bOpz6`0C#+mD$`qIwzSB)e! z_dj?BiQ2)GyTKLM$co0Ld>_}WA-&Hu7`0#sle2VCvyoUR$HjKhe{Pv^W(|Ly)mBC4 z{>E2Y0?_V*vvKyp(@Z8=(?hKYQLD3mPJY?rRWfobpeGwaLhDyQ^{ap7fA}kZ@SDEr zpZ-IC=mLr=R9uucp)D-x9rVVKzFFjRNn0eg@B(xaA>_mfIt#>9nVhjbH0MFVSKsde@7t{l1wTOIk& zx&Dft2SMe?r_zrIm~+Kzcc11}aUKJrVYE-T>a5cRQ@C)fGU^Z0r=StC4S%)AwZcVp z#@EK#!!Py*1^{ag+VJ{sgTT}22VX8}0A3(vCUcn&MG^+u25_FU6du<$m2 zIYn-yxNP?YEysQ|Np#@7ClwE_#K~Kaw`GW_g}YsrG7SOEUc;Q@Maw!*t3+OSezG!4 z=-?ms4~d*4aN(k(kj9-Yq8|Q_-KwM`%LdpXYm;Dz{{)#XQ4)GR2FiG4=KPMK$#b4j z6}}p$qc5D4wvc7OfJf8C@bem-7S(}kp?%)LL)POt=M4Nq(s(gcmyo;0vW)XG)ZC#J zHMyLzv#Q;OqY^!Im&Rjv2GwBf%)Fohvn^IdR%F?;)gj)v7)BJ}h!Nel&`?4l(zr)q z%zU|NbAktYFey_~iKxzmaLn4Tj4wrJjA0pJwNbU~9KD!QI^@vAq&k(_DO5GXB1iPVFTE!3TRM;<+r{p-LrWyc~|CU4G13*-)aB>`o0zf_O16eY4C$dL`R!b`vLwK!Y8v2BYMYdL2tjjp^uU z1+7DbqY|P`AYxB6XWm{;3AA_j4nsrt)o$0=S@1~%2m{7pL0PSeUBDJWE++$(u&c(P zGSn%98Fvn9s?z$Qs^f+(YO4xPhqj~447)w+-n-YT z2RuYXpy#;TdBKR%Ju8Ll=eu0XFR-Dl!fwJnAt2N)Rivj!$~PMA?kn6-ZC1JZVzmeL z_Jb520N9PH#zxr0-TZDE&KW0(Z#AHT(9R}6>NFMv?NW83$(t@wMYRA_g_*qCtUPEUdJVl_1he5m#Kn}6ef`^$gnFBj_jf8hK7$RGQoAO7%%hvmSQGP^*K zi{nX=&VVAt#yckX=sqbUD>U_-DW<4w?VrK-*i8Fs#0vT|a)kw^4p|d1y1^j^Z40MP-V5<>eTdiRgO6i>zOt~-k8b}T_uf$f z6YGe>z~7G^=27tR+F?Q_3T&7)46=$IJR(0b3WKUOFy?}Rnzz7Jn5_%Ij$wNYg}Hp; zhVz~iO+0}cVs`DOPW+2FSV!5M_3(O?5$Us?{_lg-ac+M5{kcCZyCWGU63N>WUYX$$ z&8MHjZ2!Dg@@7X1A1_OSTDDOE_ofU{S`7Or9o1qSpUP%}(W(xuZyj?QLxjcIQ4AGp8X+BU5=R=QF%aa&x2j1`fRLkidRd$gI`V1^QM=Fc!2uOCeQH{l0IW3e z3!PYF0BL(2Pi~O83AUQ;ybuoDfRG8Gv(K9Jb}N87ifAk+q4 zcyXqaCuG`%f!YQ3#4xr0q)y$wQnw$Y;#k`_e!82i^54mmh=nU}r6%<<_6y>(YT^+t zcER6>f%uz(o;%)>5n4W)EUDsgA88{E-72aMW8UW&&nKso-Hjf`@#ftf(__#{v_d}L z5;AsqeyESU)^w=Ccq3g*wypwnL=Q+d}gEu`687&gE3}iMFfmIWGgq2MZ zSfecnj~FZuQ;{-TPT2+DB=E-}3r}i+k_C``ilHB!&=-Px{T87R-;y_`#hkFuNfnFN zSL%Exgy}(CCWj<#oq-9s;Lm|L7*;1^5y1@I4^TO3fb$9ypYiF{4BW_`=(@c^BshR7 zSy^82t1H9&2W6US;S{JU4?h@d%d3*Ev?|k@iDzflq%%uz#C*=puL}+rnPyQTaEMq_ ztVocZ`Pg)UF5yHGrw9`MB9$)UW(Fh=nFVI7N?>@%xRmX2(jVr~nSM6_ksiAZ3M(1; z|YoSQmzeHT9zg*e&8$-3WmK+13865+HXCS5FHuZ!L0E*^m%Xn&O_ZcHa@TGg2VaqOw4oIn`#_T(0~%HkG-LwNL~q9yVj>I*E6d zGcswc$bn)i-7)j(c_|s=ervK!kgCY5W0gkwr4l3LG)~ylAR7n!;r2ZY#5f|I>&Qw| z)HLC*S=6YL{QnHi$#WD_#_NgS`zCI!8*~o!sL9(hbC_guF6$oqIqGa|vr)s>Cpb3S z{0P@a`_*=g1fB&6msqy@R1;x13OFir7VQ%5I!f`T0(|zzyfk>{Py~6s%e9{o&WB9L z%XppJ&|GlHO+3SN=&vW3r&t#(8o>q^j$^e3WiiQx*`ka(ERsy{=|I?dHAnY#T_@93 z-Ve?dFf*4f`^WcZrg>dSr+^2e)ruX^v&N~^R2LIhvDJ8)AZLs zVWGfc71tw)+wqn8Rein=^9;`P6uLmVq0sY0_j@@7FRWt0|LZv3ap=>#1Whznkusw< zNB+zXnIbI3v;P&!w|i8`qAI9LHNAF@Gbl=EI58$hh;}fdDOa=oE9MyJA_k859N33s z0;fy6TW#kHtO%?+@;TuN1+yG{Ze|$)KxVEx9N>%`COw)e$%XAl!2Mg}|2>R{fkh6g zg#L$w1~<=j2G-SF91(S?i_Epswazl0!9fC-kSXBS2Jn(F1{x-XMnw_T_(BK*T@mo* z--I@<80&>paUN0U-D+B$_qaEQs$fq=M`VKYdSf>!f@GZA05f451JY*Y$M!Y!QZjHo_xF2iJxd5ZT$f>tgHlFX^ zy;G9?-SE{1Gx0x5^33+}QDc7clo4IWui>v3&%g_ftLJjmpZjCf;6Vj<;1jd0_0s_44cw&8rNn{eKp4^5G=tMMVwA!d5?iXx6fM*RjFOrT2Su>pjE5wC+l0X zbb!NAO%KRnD9ek-7I%Aa?*uPE28nyf=HJ% zrhW7!(hihK!ZUE4a9n>-xpypjO2ICab{#r|83AqrKPmsbl>Bw(^PD`qTmrvaPJ7AA|Y1shSjumnsA%@qf!S;Sn~JT>LZ@7 z}Yo` zb5(cB0mjcGB$D4ruQ!%yxw3J@rO&U6<)UcsWE_U)hdA{fL!h0Wes`(tS8_+rn@%w6 zy~;^3rt)(&0q?WpDyXO3m0RF-qmoG<*GsAbQtRI6vXSl%bvVI6gPO#o-HxQHw#{@1 zlgKZua#ehGZ9#y;>s9H}7rO4D40zlkl;ziQ3%bcK0o=wBV76~BZxu@38#DG~L9y0a)#6K$?u})Vrk?wYU;N_F z{LIgM*T=u}TfXI651lsK^Cb}0 zD)Vn9^sLbDxjyL|mvbM-*&WPd`R}fRMLbmtw-FU1$ZXSTobRchOy$m`Smm~Jz7wTA zY(FS>qTH_pUDU^23Ph09(TuOYaso0My_2U9=e_)_`hCxu+XuSo9s)RMY|Ms>*(1Sx z&bLqwF})1XN2nfM8Te+TO9g)P0z;|xV<%mRFJ%0Dopy2gjX% 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

    }fZsvu-gioN47_9>|-QW$3wOqLVK>d^W0m(^! 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ⅇ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 T2ku;D00000NkvXXu0mjfh7tyA literal 474295 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

    U<|H4+@+iXRHhqcq-&aFrW!6RN;@$P@u%%R1s{} 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 z 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 YC0lWh#tTIJ87BCE*GT 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

    t>C@-pQaJ0&Wa$rluXi5$qh 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≫=t3S#v`+Xuc+CiFzS_tU?{cNpgz{Lx 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 z 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

    R-kSy_v!9-(8 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 +

    High-level High Resolution Object Detection Pipeline

    @@ -18,7 +18,7 @@ This helps reduce the compute while maintaining detection accuracy. In smart filtering, we use motion to help identify ROIs, which is ideal for surveillance and applications such as the test use-case, drone detection, with stationary cameras. Keep in mind, if camera is NOT stationary, some background movement may be captured as foreground objects due to background subtraction algorithm. -
    +
    Flow of Smart Filtering Pipeline

    From 892671308b6fd780118d5023296c69b675787fc5 Mon Sep 17 00:00:00 2001 From: "Lacewell, Chaunte W" Date: Thu, 10 Sep 2026 00:13:35 -0700 Subject: [PATCH 15/19] Update pipeline and fine-tune docs Signed-off-by: Lacewell, Chaunte W --- README.md | 11 ++-- doc/finetune.md | 12 ++-- doc/pipeline.md | 144 +++++++++++++++++++++++----------------------- doc/sample-ui.gif | Bin 2142492 -> 3421434 bytes 4 files changed, 85 insertions(+), 82 deletions(-) diff --git a/README.md b/README.md index e691507..9fdae79 100644 --- a/README.md +++ b/README.md @@ -6,8 +6,10 @@ The application can process high-resolution video in real-time using a Smart Fil Please see [High Resolution Object Detection Pipeline](./doc/pipeline.md) for more details. -
    -
    High-level High Resolution Object Detection Pipeline
    +
    + High-level High Resolution Object Detection Pipeline +

    High-level High Resolution Object Detection Pipeline

    +
    ### License Obligations @@ -55,8 +57,9 @@ To start the application, run the following: ### View Live Detections Launch your browser and browse to ```https://:30077```. The sample UI is similar to the following: -
    - +
    + +
    ### Shutdown To shutdown this application, run the following: diff --git a/doc/finetune.md b/doc/finetune.md index 379bd46..3fba6a6 100644 --- a/doc/finetune.md +++ b/doc/finetune.md @@ -2,7 +2,7 @@ This guide provides details on how to fine-tune a YOLO model using Ultralytics on GPU ONLY. For simplicity, the use-case for this guide is Drone Detection. -Therefore, the goal is to finetune the YOLO11n model to detect only one class (`drone`). +Therefore, the goal is to fine-tune the YOLO11n model to detect only one class (`drone`). ## Drone Detection Dataset @@ -23,8 +23,8 @@ The configurations used for training on 2x NVIDIA A100 80GB PCIe are specified i Feel free to modify these parameters based on your hardware limitations such as VRAM of GPU. -## Finetune Script -The finetune script is used to run training, validation, and also test on a provided video (optional). +## Fine-tune Script +The fine-tune script is used to run training, validation, and also test on a provided video (optional). To make deployment easy, we provide a Dockerfile which has the ideal environment and allow the script to run with deployment. The script has a few adjustable arguments, so feel free to modify the call in next section as needed. ```bash @@ -42,7 +42,7 @@ THe following arguments are available: | --dataset-name DATASET_NAME | `SynDroneVision` | Name of dataset; A directory with this name should be in --data-dir (-d). | | -l LABELS_STR,
    --labels LABELS_STR | `drone` | A comma-separated list of labels (classes) for model. | | --yaml-name YAML_NAME | `drones` | Name of file (YAML_NAME.yaml) with data specifications. Be sure the `path` in this file correlates with `LOCAL_DATA_DIR` value. | -| --no-train | | Skip finetune stage | +| --no-train | | Skip fine-tune stage | | --test-video TEST_VIDEO | | Test video path for prediction. If not provided, inference is disabled |
    @@ -56,7 +56,7 @@ To avoid modifying your system for training, you can use the provided Dockerfile For easy access of host data, the `inputs` directory containing any input videos, the `finetune/app` directory containing this code, and the parent directory where datasets are stored (i.e. `/data1/datasets`) are mounted to the container. Please see below for instructions for deploying container via `docker` and `docker compose`. ***NOTE:*** `REPO_DIR` is the path of this repo's main directory. Also be sure to update values in `.env` if using docker compose. -- **Docker:** For this option, be sure to build container first. You can start the container and finetune script via run command. +- **Docker:** For this option, be sure to build container first. You can start the container and fine-tune script via run command. ```bash REPO_DIR=`pwd` LOCAL_DATA_DIR=/path/to/your/actual/data/directory @@ -65,7 +65,7 @@ Please see below for instructions for deploying container via `docker` and `dock cd finetune docker build -f Dockerfile -t lcc_finetune:latest . - # Run finetune script default values + # Run fine-tune script default values docker run -it --ipc=host --gpus all \ --name finetune_container \ -v ${REPO_DIR}/inputs:/watch_dir \ diff --git a/doc/pipeline.md b/doc/pipeline.md index 822c348..fbbbe08 100644 --- a/doc/pipeline.md +++ b/doc/pipeline.md @@ -7,9 +7,10 @@ HR video streams typically achieve higher accuracy in object detection, therefor To solve this issue, we created a Smart Filtering Pipeline to significantly reduce pixel processing (compute) by *automatically* identifying the regions of interest (ROIs) which is then forwarded to the detection model. -
    -
    High-level High Resolution Object Detection Pipeline
    -
    +
    + High-level High Resolution Object Detection Pipeline +

    High-level High Resolution Object Detection Pipeline

    +
    ## Smart Filtering @@ -18,8 +19,10 @@ This helps reduce the compute while maintaining detection accuracy. In smart filtering, we use motion to help identify ROIs, which is ideal for surveillance and applications such as the test use-case, drone detection, with stationary cameras. Keep in mind, if camera is NOT stationary, some background movement may be captured as foreground objects due to background subtraction algorithm. -
    -
    Flow of Smart Filtering Pipeline
    +
    + Flow of Smart Filtering Pipeline +

    Flow of Smart Filtering Pipeline

    +

    The current filtering pipeline includes the following steps: @@ -37,6 +40,33 @@ The current filtering pipeline includes the following steps: ***NOTE:*** If the video resolution is less than 2K (1920x1080), Smart Filtering is disabled as most systems can support this resolution in real-time. +### Configurable Parameters + +The following are parameters used to fine-tune the Smart Filtering pipeline. + +| Category | Variable | Default | Description | +| ---------------------- | ------------------------------------ | ----------- |------------ | +| Smart Filtering | SMART_FILTERING_PIXEL_CONSTRAINT | 1920 * 1080 | Smart filtering is enabled if video is larger than 2K. YOLO models typically can efficiently process lower resolution without overloading resources. | +| Smart Filtering | SMART_FILTERING_WARMUP | False | Warmup all components of pipeline | +| Background Subtraction | BKGD_SUB_INCLUDE_HISTORY | False | Include temporal history with mask generation. True: dilate masks in history and combine into single current mask via `method`. The final background model mask is generated using the union of combined mask (if true) and current background mask. | +| Background Subtraction | BKGD_SUB_INCLUDE_HISTORY_DILATE_KERNEL_SIZE | 15 | Kernel used to dilate temporal masks if `BKGD_SUB_INCLUDE_HISTORY` is True. | +| Background Subtraction | BKGD_SUB_INCLUDE_HISTORY_METHOD | or | Method used to combine mask history. Specify `and` or `or`. | +| Background Subtraction | BKGD_SUB_INCLUDE_HISTORY_TEMPORAL_SIZE | 3 | Number of previous masks to maintain for temporal mask generation. | +| Background Subtraction | BKGD_SUB_MOG2_DETECTSHADOWS | False | A boolean to enable/disable shadow detection.  | +| Background Subtraction | BKGD_SUB_MOG2_HISTORY | 2 * TARGET_FPS | The number of previous frames used to build the background model. Higher value: More stable background. It is less likely to be "fooled" by a tree swaying slightly, but it takes much longer for a newly stopped object (like a parked car) to become part of the background. Lower value: The model adapts very quickly. Useful for rapidly changing lighting, but may cause moving objects to "disappear" into the background if they move slowly. | +| Background Subtraction | BKGD_SUB_MOG2_LR | 1 / BKGD_SUB_MOG2_HISTORY | Learning rate to use for background model | +| Background Subtraction | BKGD_SUB_MOG2_VARTHRESHOLD | 50 | The Mahalanobis distance threshold to decide whether a pixel is foreground or background. Higher value (Lower sensitivity): This reduces "salt and pepper" noise and ignores small fluctuations, but you might lose the edges of your actual objects (making bounding boxes smaller/fragmented). Lower value (Higher sensitivity): You’ll catch every tiny movement, but you’ll get a lot of noise from compression artifacts or camera sensor grain. | +| Threshold | THRESHOLD_VALUE | 127 | The threshold value used to classify pixel intensities. | +| Clean Mask | DILATE_KERNEL_SIZE | 5 | Kernel used to dilate mask AFTER threshold is applied. | +| Identify ROIs | ROI_BB_FULL_RES_PADDING | MODEL_W * .02 | Padding to add to ROIs to make sure detection captures full box. | +| Identify ROIs | ROI_CONTAINMENT_THRESH | 0.95 | Input argument to filter_contained_boxes used for removing smaller contained ROIs. Current value is 0.9 (90%). | +| Identify ROIs | ROI_DISTANCE_THRESH_RATIO | 0.05 | Input argument to merge ROIs is distance less than this parameter. | +| Identify ROIs | ROI_MAX_RELATIVE_SIZE_RATIO | 1.0 | Ratio of frame width/height to limit ROIs. Currently accepts ROI if width/height less than frame size. | +| Identify ROIs | ROI_MERGE_SIZE_LIMIT | MODEL_W * 1.25 | The max width/height of merged ROIs. Value is equivalent as MODEL_W (expected imgsz for model.predict) | +| Identify ROIs | ROI_MIN_AREA_RATIO | 0.01 | Minimum area ratio of pixels for objects/motion. This value is in terms of pixels in resized image. Currently value is set to 41 pixels (1% of width x 1% of height). | +
    + + ### Testing The current implementation of the Smart Filtering pipeline is optimized for the test use-case, drone detection. Drones are typically small in the video frames so if your use-case of interest has different objects, it may be beneficial to test the pipeline results on an existing test video for your use-case. @@ -115,7 +145,7 @@ lcc_fastapi:stream tail -f /dev/null You can attach to the container to debug the filtering as needed. -For testing other components, please see [Testing Pipeline Components](#testing-pipeline-components) section. +For testing other components, please see [Test Pipeline Components](#test-pipeline-components) section.
    @@ -144,36 +174,6 @@ Edit the file as follows: ```
    -### Configurable Parameters - -The following are parameters used to fine-tune the Smart Filtering pipeline. - -| Category | Variable | Default | Description | -| ---------------------- | ------------------------------------ | ----------- |------------ | -| Smart Filtering | SMART_FILTERING_PIXEL_CONSTRAINT | 1920 * 1080 | Smart filtering is enabled if video is larger than 2K. YOLO models typically can efficiently process lower resolution without overloading resources. | -| Background Subtraction | BKGD_SUB_INCLUDE_HISTORY | True | Include temporal history with mask generation. True: dilate masks in history and combine into single current mask via `method`. The final background model mask is generated using the union of combined mask (if true) and current background mask. | -| Background Subtraction | BKGD_SUB_INCLUDE_HISTORY_DILATE_KERNEL_SIZE | 15 x 15 | Kernel used to dilate temporal masks if `BKGD_SUB_INCLUDE_HISTORY` is True. | -| Background Subtraction | BKGD_SUB_INCLUDE_HISTORY_METHOD | or | Method used to combine mask history. Specify `and` or `or`. | -| Background Subtraction | BKGD_SUB_INCLUDE_HISTORY_TEMPORAL_SIZE | 3 | Number of previous masks to maintain for temporal mask generation. | -| Background Subtraction | BKGD_SUB_MOG2_DETECTSHADOWS | False | A boolean to enable/disable shadow detection.  | -| Background Subtraction | BKGD_SUB_MOG2_HISTORY | 2 * TARGET_FPS | The number of previous frames used to build the background model. Higher value: More stable background. It is less likely to be "fooled" by a tree swaying slightly, but it takes much longer for a newly stopped object (like a parked car) to become part of the background. Lower value: The model adapts very quickly. Useful for rapidly changing lighting, but may cause moving objects to "disappear" into the background if they move slowly. | -| Background Subtraction | BKGD_SUB_MOG2_LR | 1 / BKGD_SUB_MOG2_HISTORY | Learning rate to use for background model | -| Background Subtraction | BKGD_SUB_MOG2_VARTHRESHOLD | 10 | The Mahalanobis distance threshold to decide whether a pixel is foreground or background. Higher value (Lower sensitivity): This reduces "salt and pepper" noise and ignores small fluctuations, but you might lose the edges of your actual objects (making bounding boxes smaller/fragmented). Lower value (Higher sensitivity): You’ll catch every tiny movement, but you’ll get a lot of noise from compression artifacts or camera sensor grain. | -| Threshold | THRESHOLD_VALUE | 127 | The threshold value used to classify pixel intensities. | -| Clean Mask | DILATE_KERNEL_SIZE | 5 x 5 | Kernel used to dilate mask AFTER threshold is applied. | -| Identify ROIs | ROI_BB_FULL_RES_PADDING | MODEL_W * .02 | Padding to add to ROIs to make sure detection captures full box. | -| Identify ROIs | ROI_CONTAINMENT_THRESH | 0.95 | Input argument to filter_contained_boxes used for removing smaller contained ROIs. Current value is 0.9 (90%). | -| Identify ROIs | ROI_DISTANCE_THRESH_RATIO | 0.05 | Input argument to merge ROIs is distance less than this parameter. | -| Identify ROIs | ROI_MAX_RELATIVE_SIZE_RATIO | 1.0 | Ratio of frame width/height to limit ROIs. Currently accepts ROI if width/height less than frame size. | -| Identify ROIs | ROI_MERGE_SIZE_LIMIT | MODEL_W * 2 | The max width/height of merged ROIs. Value is equivalent as MODEL_W (expected imgsz for model.predict) | -| Identify ROIs | ROI_MIN_AREA_RATIO | 0.01 | Minimum area ratio of pixels for objects/motion. This value is in terms of pixels in resized image. Currently value is set to 41 pixels (1% of width x 1% of height). | -
    - -Once satisfied with annotated results, you can proceed with running the full pipeline. -***NOTE:*** If you modified any methods within the test script, be sure to update the predefined code to use your changes in the pipeline. -
    - - ## Detection Model This guide assumes a YOLO model or fine-tuned YOLO model is available for detection. @@ -189,6 +189,42 @@ Please note the model labels are retrieved from the model directly, so the model
    +## Deploy Pipeline +All components for this application are dockerize. +Scripts are provided to make deployment easier. + +### Start +[Optional] To make sure there aren't any running containers for this application, run the following which stops the application and prunes containers: +```bash +./stop.sh –p +``` + +To start the application, run the following: +```bash +./start_app.sh –m drone_detection +``` + + +### View Live Detections +Launch your browser and browse to ```https://:30077```. The sample UI is similar to the following: + +
    + +
    + + +### Shutdown +To shutdown this application, run the following: +```bash +./stop.sh +``` + +Or add the necessary flag to stop the application and prune containers: +```bash +./stop.sh –p +``` + + ## Test Pipeline Components We provided multiple test scripts to test different components of the pipeline. Each of the tests can be run as specified in the [Smart Filtering Pipeline: Testing](#testing) section using the same video `anduril_swarm_8K.mp4` as `SOURCE`. @@ -282,7 +318,6 @@ The arguments available are as follows: | --no-custom | - | Enable if using Ultralytics YOLO model | | -m MODEL_NAME,
    --model MODEL_NAME | drone_detection | Name of model. Required if `--no-custom` is enabled. | | --type {object,motion} | None | Filter by detection type (object or motion). "motion" shows the ROI while "object" shows detection results. | - | --sf | None | Filter test by Smart Filtering pipeline | | --debug | False | Enable debug message | @@ -311,38 +346,3 @@ In the case of testing the Smart Filtering pipeline, to display the ROIs, you ca python test_pipeline.py --source "${SOURCE}" --scenario 4 --sf --type motion ``` - -## Deploy Pipeline -All components for this application are dockerize. -Scripts are provided to make deployment easier. - -### Start -[Optional] To make sure there aren't any running containers for this application, run the following which stops the application and prunes containers: -```bash -./stop.sh –p -``` - -To start the application, run the following: -```bash -./start_app.sh –m drone_detection -``` - - -### View Live Detections -Launch your browser and browse to ```https://:30077```. The sample UI is similar to the following: - -
    - - -### Shutdown -To shutdown this application, run the following: -```bash -./stop.sh -``` - -Or add the necessary flag to stop the application and prune containers: -```bash -./stop.sh –p -``` - - diff --git a/doc/sample-ui.gif b/doc/sample-ui.gif index bf45f24f28a7d8ef960837b3233cd10f6d5b6233..eacb03f4a199ef2740ba24206a948975945c45ee 100644 GIT binary patch literal 3421434 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

    j5CZ<8U0}j;wJUEo@MbO0;1;}5e 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%0D%Tf-}^=AKW+03rfI+M!$n&758ibwWL&=&gM3 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
    1. ; zSWfPgDjO?=Mt8ch()Z*)sZU~shr0)veIu+ei4+#=phn; zNXo7BT!aq$#q<#9Z=75a-yAfh3OUFKcAKRUI=SX2N$Hce6!a$x4J9=vQc3hl4qUO= z$^^-oKoRnhoUulQw;4eSx1A-D0$n0a8m`QsbpkPmd7@1M0ZUq1ZmYRerbxg7SU7cr zC}2^qTWfO`h)E0vK{Bt91RGSIGE|`sf=-Y$>nXE1cKB+6i)TN(B*B0-FM?rhNKxCL z03Bya%;^#TqU0{0vJL5x*HG7{_OwgIZfoy_7wybor537R1lr;ip4k=&l_J56 zx+SJ3y{L{`tm6=FYv3L$`2U7K~37Ma^UTee46$n<0*bXg*u z&FOp9TkHa7T-p)A?6M<55%iw7pacDGM5s_3t1zH1BsL3j1G<4Oi|M#o7H>}=f)OeY z_{L+hL$}3jk}&x>zrBvC?1YZ6)t zwbThiDVY+#^Z&cPa}iT=r8(O(QED9v>5)JDkqX%}xA_qZ*|XBSn>|93O@kyy+%!-7 z!c8kRNc_TLI;PZfH7tRFEntnI37XTW0@+B4H{gu`oDQE!15!i-w_vI0kRYRADLi-s zPB;n@dIK{U12ZrKma0WT=mTE_#!I+_J|IS7425C51Y`^aW;_Z!Xg+8}islOiXbgqN zIE4y|gxN3(X5r0)rr@ZLs;G;4gEe@AK3Ic-97u8jkJ(@;g!H#o^fz*`#oO4w5gIv*TtJu#KnXeu zgS5qkZ2zI9*okr637IP~hsn9`kPX=wI2F6d+t5Fjf&=jo5AZ0B$}t*`(HNw;qBLj{ z)@Y#@;>U`5gVaEpt5QXYq%ouMs@Xcc?f|+i@PaDvx}c+vm4U4-z{;@m8q1-P;ZP37 znmSC9kIA8eD_|SWVLZQ4OP=G(%$Y1Bki58@97nqXE!Z4DI&4B{EJWJ(B%*>gO#jAqB!!ypKtjQA0wWE)+$fQgu-~zOftQknIOk5_`%YhjX#od6B7*UQb z4F4Pd5Y5av5BK1Y9nk_UkdNf-54)7k;wKJ#)DjgffPvp98ZG;Q2y)#{lo*L_((yR zMV4w%mf{$joDBf2P?{V$+Q`uT13(cBKoFux4duT9G_eW{mq)KrQ<}*GIS6f(bF8s5j`WsJ*yHhtUN_6%^MNaGVRhH*^wuZ zRK&C_J0t=~j6y~Q9Ywv=8(9!ZRgN);5%qf&h$*r9MRS% zz*gz((rndE?DS4?H3LM&)+;zwb+t=F>JN8i*LQ7C0QmxJ<<9RE*Z$bf^|aS=-PeBQ z*YLaodmV$_m=QD}*slQ)^DNKxT+#8IjqSvZ8Q~Zq%~9Ey$pBSJ4UIsG4gW}&R0^8x ziU<|R?HtHHXdwz(1C#~EU!2KOoY?VX&xu8YnPpI=C{P2f(40Nb@yv~doYC9ZnVn3$ zF+c-ZRM3qSg!;q-uqoQspjbReNsejH&4CTg;nhKPR;*1+#Ds#VnJjw@p;bGlC*`0vaF!!X!++-7~`M zR(8c(LUmTR^;*$1+(b>wL`6freO7e6%WZ`MclB0*Jyv(^+q!jIcYW2$g;dV9%jDqP zx24mvb=xs`Tg}9gX-(BDm;oAi0pA=}-RT|Qu>!ZPR6YgQ)x}h`z5kI*6`MmX)YT2s zb`={PiC*=@PR^Ci=*>=Vt=D_SPWQxC+r7^0jgjol-thF+T^!$XE#G<-Pc1luGtgJ@ zEKm8}*Z+`T`?X*4yk8uhMI41#TvS+soXPT}4VQ)3{tZzBmY_=*NC6g)06mIJ;Dp&Y z$YLzWm^IG=9pH#fT9oYyX8eO>G{#H#1O6;f6{X1rrC5b@#Z&D9=a|L(Y|#8{KBaZf z-=K~Bgkc<>kyLe0`KVs&jNZ}(U+W~|B9_kHfZs7K-fBhHFa=z{d2%-=J}Uw;*4J4oO8UD$NRgJJy7HLwFcxaJa`=M*i_VdR8jR7PcdK1o1EN$`V9@Pkm0 z1WC|?K0s)MeuG)u=Gj16JTThkV~wIU0|fm=jK+hDR{uvlXjn6V;XA;CK){2LW@t08 z16|a`lh$5aUgc#j&vfQlnP%qvt>5ijTqrPuGq3}lUSC=MX@*_of7RtXcIo$hUo;NS zT3$~(Kx$FGWN3r&)J_9+x)}}7yq1NeT&gG}JUg@mnyTlQ$wqEnJYCBkiS~kd@ zrfTl|YI2p%rZ&&C9?vvxU-IN>TaIgSJ!LeOgQM>1WOnN6{b@e-)*Q&)NYl}!Po7?8 z_tjb2=4q=&Xr7+s?ey%DZDkDJS)3)%(hg=h@c#qM_5*|VgS_5FJFtWQJjk@B?Rzdr zo=)o&?E^^|#(36)5KhKzK2QWTNR0;XHNb=N9&hme?gPzX{Y&W4(8>C z?p&tlwLZ_Zc5a2%gDOXDJMaTNFa&wlgM$WiH;{wu?gK5bZuFdHi!NdRH0W9$VFOj} z`u+m|HEuLk^E5Z^KltbR#_j%0Zi5a5{*-5fMCg46Xg%omYB%Uh$nIfeMr0iK|HkHV z@8@#I^mJc$W8CL=A80=?1QC9BWOQ(WmV^WSc6T>~`j!L-N9cF%Pi+rjcYo(g&;tig z#zqifP8h~USVn%X_eN+0Jg9gDNB`+v>~IMeap&%XM&RyY)B{G~?uLKx{#3?no^OO6 z?*;Ay=jP{fFL-$8?`ckVbay^vG|1xa`8`N;z~*jd)c1tH?swMq6`ybUzWM&X_U)Eu zc}{am*8^BjXqf+TRcG~c-o zH*UJ``TXv7H_(Hfj(g+IZsWFRgqC}%2Xnyg@_-I#wx@Oe^mpWLe7gVoL$`tCvVq99bLDR8sn$+mF2;hU^!ldr(XQ{5Cr0!X*pDa1 zMu+oIZ-dyM^gZ}_Iq3E&$Ny}$NA8g4aP&s{Zjbf+&hOZN{aX)rV(fN)Zte<3?t=dJ zf0l&e4uwDX_xzr8<;Mt0ncv7@KYQiCcPHVR46kHe)aW$Ia) z&}l-IR#zhIW5x_vmrqp+N-KyH+nqoOk~Fzz4;@K#_Q-K#$I!sO4r}%e)dvsIzZg{p zRoKXD){_(;Ki-P4qyJBzhV0)u6$` zjk4Z$Jk|AUymB00@^jQpR)#hUn^d{DwnjaoIewm6*&=A&Q%8=TN6zroE&-tRuChh z9ORQ82lZ$plmCtQXoo}<8N$d#m)J;=9i$=nkRKwwSkYrw9e9ZyKap8jA2rzora%Un zC`c!GK$4LmcARnNXIwQxltG-x;3~4sw zScm3hq9>j}LX=Kvh@!|_5fC)`C8fzvk$5L2$WOmkL$O1W+)Kf<$ry;-b8D~sE zIi-?Mtw9EwZogl>v?m zS%9JC>ldLgF~!J;JrXJ=+;R)<(0CjfV$xec?be}gTFX?MPj6@C5KFfKCG2f@;PI=d zn4P8{ag~SC2_&WF1PSY`8zhjXZT~IzMx$q`hn6p0QtfSvjr#cV$=eQzsf~2%s41ji zZ;Bwh`aROrbb#N6Xciq0u3x`zN?T5ym@+JhRw3;h|*}}pwn$Kx1dDQDfwMuu9 zhU6qn8caxKUUE2!93m7a^TXIo!<~t+L`{Vu-P_FLgC5{4h(crm8iaxnpD1N;T)NJS zfFy}PS*wDfdq_;K^QN$!1aKjFA(1xXz)$RuD`DGL7YSsypFA!lhq5AQtmKEbZE0O2 zgNdK66Oof(&VE?w2p#*U2RB^CCRZxbNMu$;k*w=&ek%nd?IZ__ltLhKx}Ts*2NZ+o zp@Ig1gd!vI6Q!i_OoDUViFhKC%zf}p8zBgi9@9U^ZKYtC{6r~=#i&NCB_|Mbga3Z? z<0L{E%vy}n9qO(}6i9f&Z$^8Ts?Z2VnV_*C7=)FqSXHP{lmd*K_{1h`Cx~8ULMJ&v z1uBFk%Q9W!juEO*8`{9EhGk|>qk`2XhGoz7`AV4SD^^S}Nl$7P1YJhLCQ974ufm0* ze&OL`Uwq1T?A19H3br;@EuW<*NA7fPfS~j5NJ#jhJ5vlOW>m3By5KV z?dV}ndBRe+CL$*@z3n1fY>^&mxSe(~>3!gd+z zV8#vy(I#y^u`7d6kWGcjN>b1Hw$b6{RhIcIc;42K<2^`kKKZCDOV~RyH4m3;=>#J( zb0;^DElyfOZ8u$-iQC<-5$&@bbFM}&OFhOT7fcrhk<^IWoo=Og705JknX6r~uYK)9 z#jt`oTav`94GaUSY4)u4*}ZC;vmJW;J_=PGYRJ ztBD;&JK8m!{dfZ6bPiU7rPv~5C={=gp5cfeO=?m@A*@Y2$qF$5qExF49~7j4yry8X zKq5Kfz)*xhbAchr%7xS|ZxldS%9sYrMYtsv>OlljiX<9>!Dq%yDKUK$xi-jWiG)!} zm34!hy5xp0RfG|Q*}@UTh*!t z`*>1+>@?pX@d@^ALV0+2?k4b1EhtOZ6u0XHDj@OAq(a#yc<59@&U9&yj46z0I^uXL z1BnqEG_4iuSerelvWHTAtQ$2& zDFDO>NDK-IHM26?+Y^H{uvfhsCF=tPa)`OK6Rd}bA)t@CrZWCJKM1>&tD}2`Hq?rE{1eC@84zhnsBB2oWbpHlMEwB&rY2zJFOVG^9bOaZf zm$V|A5?nGjBPhY!gLlnGWT2HW1Bpdodz_spgv2*7iC*#CAWAnrPVfM6Pqbp((vJ03 zh{rak#O-l-MVnZQx?s|iV7Z$+F*6yL^~>$~>>*X!_SxR}m_+Uw+;Hg3QN{A2 zO4n;~!{qOF3NaZ>Rv6cJArr4$&y7(J`2pOMWCg($+-S_094yt@4cPB3!XiM*BoJSJ zF&xgJ*Tf*x#syQ~97m0)-;!j>WI)Y~RY}%y7e6gYc74ZzJy>HDo^xb|@z_NBaMSHk z5E#`)lPN|{bzSV}7)21zlf)ZsyvBvG1XNg>mj5gj>Y)Vc%}*Px2GNa1!i`pIJy81y zi?kV!dFV{ru^kKG0XbDnYoXcL{T)Sw53?`}nTf=M;MWf>8Jaa&w^#<8V9tW6-late zMg0b{o!#=B$(iWcNXf|&(b4<_#*SE0w#Du`H3N3dB@cmPX-o3C-m1Q>>CGi z%Eb7ftL+NJQ9>qA93-GZD}2Ht{NM;GPoy2yr7;447=?|n$wwiIXhGNQC|xV$obefB zCO}*!D4i#m31+a>XBm&H9o0t-n1CS@QvZ>dC*+Rf=>>7@MU{M-}O)9i*6u z9gL!AIV9hd$gaR+^m&3qnwz!U4nhtb4N1aWbi^UX$@DG4CM?45Mcl+q90z8?B47ff z1j06DWCVGNiQU@0(aCp3n}{UTAF&=#Ae$lqMQ=>VMtFoww3{ML(kW$yOk9yGN(Bym ziOe|8ihWdRWu+oLjvodY(E*YtF=eG~lRtG)$9T&kR@#`w&GlB{KLkOZ9|7h6eG zfn1FrAW6IdTN7@A9c;o9I29U76;)Xk+>uZa@+DtBO*^^MJJki1{KOB&n*=Q;lT8NZ zkOXb9$?eP@Zz)#4u!xqK76m0!-~V7q1-``4Tu{8h%A#-*Ke5Rp8kK3qnrZIJK)m83 zUc$dgV<6N)AV3OD!q!i~Nn?=@V>Om>9S<#$0(-?D5Z)NAVM4j#Q#GpN5$TzC7{a?z z&n9|8O74pEm_jSq9wfM9OHsmlB9nPS0w&0tL6DO5wNU*O3~MnYsp&x;@FPlkLfn}f zBtTsB6yJC*f?E>caER9b8K6NtmuY$?r-;r{(Ux+dp5v5an~aJb4A^(^j;P#Da23P> zY7{D%3VN1XiYl1ka0d--CId;31=`{+4%qQ=;4zllfZ^nAZi0!$Z4gcCt;Q=CL5Q;5*C#%ROEENlsz83!Jfol91LbxVheyL-8 z1~%EmY>o~qoni&<*4}8z4kAu{8O>4wpuFj!@fbl2-~eG-84A1s{87-~F`3^@gdDVi z2Y5gjfDavV$A?`8BWx3s@!_Sa+>}xT7H*Rs#M+&0(*=FWAr3@7n%4Af<>I`}proH2 zP+L~sS(c8V#x0LhT-qnJ0y)K+iRI|1O%9n1i!|Qo9wyaxr3-nbVr03D90d+gj)-~* z3#a5_1pS~crsPS^Xs=*fD?De#>U@YBr*<5OPN?V2Ai3v%i{S6 zQ@#xbZIdj)TS6UCaQ`j>iX9-Y^r$DWD@rbcfWc!aX2qlo#~85Ic3pyJZh~+Qn>$YI z#AJfc8O5ng%B0>SlvS$nfGpbCK^|;U9z^84G0L~iWch_>fLiP#(3J*H)_3tB>BQFZl&7@m*X`|BN{*kr zjmlc`?Q`baiCwHf5Fm)X8oTzFV#3vHRnTiOoAqVMQeDq;PSr!GbidXDFS-D`ehzsWJmhvqnu4Pt0!q#$=L5v$C#VZ5pS;C$Pekn2e?INu$f*G#I zo?p^G`Kst_T#UrJn9-4I(i*yx{bu3K6Y|g$8aXgY( zrpxRWOlu98Xd%&lGM&9Pf~Wy3PAXmPZK64qrR)Z%^r)jTR$Q#P+Jjw2oxw^e-kEWp zk|bcJntTH4sSCZrYf@F?DUd==+*oB+CiqUPF18fAj+1&RFs~F9T+T9txJXFI92U}s z2LB(-pLH5zS>;d?psOWc9n?V{{N*3(K^=%^(Mrz%pCm7uSbt%w@m0(!V31li2~YrG zK%T!|C`4K?DilH`6yv}a!X&hmDfHUwfNZ5f?c4suA15wxgj+@$V9|C;e>OBqVgk(G z^tHz9yuwSvWbtPpM9!KUObW2Y20{?i+ItFEAY`Bj&g4F#qtZbNhn5J*lJN4JVoEcx z{|pF4SqWd10w!ffICAJBYN(_d zMI--pQ20D%-evI)4%m&=B87I<)F`Tj9D-u`F)}%HN}e6N%&>C#M8)l#uypSyIIyT- zLUr~iDxAW?L8L&)*|$wLiz3D#9)TsoWxFE!l*G=9qkV{vF{I7s_a%q zSz4#4ox&-g0=1Sdd2=ri;vztP8?iv2I$o4=}&AG02Xj{b`zy;DN~oLMM##9iTV|E&}nf zI5|y%a2_)1p>zWqm!6F{>+FgK^6a-|pu}QeAp}Am?o|UUQQvL}NHfPq`Ub)vn0DG}2=foZLu)1R0m?nzQ5fwMGBtgk$fU z?Z~5L9`pFQcTw%Nzdq=Ik-{rv0*VKDBQ&~K-EopnO~Gw!;yQ~VNR3@U>eZ&(BmKrO zDsgZYbf^pp)8%ZrRW~H?=N%MmPXFG-4Y05xBaYpM;5^cXL~$b&!mzCZClo>*pm-tN zK_J`#&=*1`pu+Anu)H$xKx%Y}1UWL9LP`qx2o}1S_k5TOdDfG9)(bt;I0s&Y0Ti4R zTTw+Nai~%V7^noNn6qRd*T@6wmi(@EYHF{++Vp6tR1T3Obm>{#0+qZ7FtNo z_Oi&AV>-Y1Pz59K*OdRB1CoBSJZdK^%arVaALA-(9=IyrSh zCEO^)aqo#8w_~4JE?VYMMbIJuu{#3s{R2d(Qj+Yrkz?nK97CZ(`Pt*gkDN9W>Co|G zh!G<_cJyT2^a-TKj*K>ygwzSusa2~wb)p1mQ$|K0L6&S}QcupDka$9B#4}LPprl%5 zx>Kl7BU6(0$dR+B%^s;zB{7}Y6zf4d1q+@@_;e4QsujsjZ5sb|k0Cib7eQK-C(k0e zi+)1VGk4J@Qr;Jh?&@}l>(?}$p`e@{m`}!cI6jR*7#FI=iDQPaAWU}KiNge}>tTvv4 z=%UCNG%%;SJ~5>gQ?_d4lkhg=>7yENN)NiYN-F6_w}k)fFpwo;0D^~qlw6X@CY^i| z$|YGqLqnJ#`Gk?GN;yOlIu7}=jWEKPh@z+-W8{)dI#JWgm|9ayB0AcTvm%PfqQfaS z?t*c)+pyduCp{e#F{4jly3vywYqJBA_wsO~jzT&)MZ-WQnItz%7SWW`Knj@z6;E#S z1QJa%X;YC!6sbg!N$yajHX1JpMUOL}@X9MWs&eWnF~^+qDM&Q3t57Q$X^#<@@HnZJ zR#xGJl1~+riKa_Fp%KlFINDaDM(C0&kG>T1WV1p%A;l^=C+hOfFx@3{4};`&<147b zVz*8@!kXxetMcrrH@7xvi?wCLy<;#_+WO76zv}-8d43+l?}6gd;ox)ay2ht!rzrgCT~?y1@cD6%v!{7~@tkZ?(e@ zovhu2(Y#>7S-LxDoA_o(sFv8RQ*YaP(-%8jgw#e$`Xn{3w$f8uVmoS1Pt{uMW7)Vz zYb3TwAo)+`mbKleAO+=X8E}yR*TalH9+WwhRt&A9ElePptuKfdX}PgIn6h_HV4IS} z4@oYGEHaQTaa#|NVg$6t8Z#W#yG%&k+NbpbQN7Jg+k6@lByxz7_uiqjL5F{47-L|^ zGpb6GQU>y}6gtG5Q(d$k6SXCmHWW3o#=`&f^?5SuB=ZaqKPqa|u^BOhE5|UBiKn`} zldd(6*mEOXR8Z-J)k)UOZED&g)lfQ`a?5tO% zenC$vKWg7?p0gPF^#l^ASj8zgv57+D#zTdoiRc<35@HF9BCEFu5ekif2qUJki(QJ-l0rmFH>y&^t17dbLflO~>sgOa;NsMLMffLkTN*2c_Lqe zgC0}J#w~>O*k9bzq81v+5N;@lF1PX;NW^VfEy+Y?%;QJ+Y|CsNX`zBplaWU8O*MG1 zgW(JZBUIo4VM3xJZ}MP=$#FyyjIql0#-y({bS@NCF~sLQ_lXGIWr}(U)sITzxKd#P zpFiqOdSVEqO;jnLKhl(uaPW^G%wTuEQz-AIWRmk4Vk%=1OGU;M2C|IFa_fAYcksE0 zQ!zpzQrRK*o~N!ceFYq+C7l=;P@Pt&k67y_ zf$Ezbx&@Q8&ae=g+L|X&p%FLe@~L*vl|$-PQ4^)5IS&mfRNnP2JnbPNAYx2M0&$x~ z_~s5(^e83<_D{YDY^a+$s$6TQsYwKavN6g8N1RsK+YPgm!Py$7Rz-NS^l-3Uy`Ue}LQ;EFiyfJZ3BXYs# z02i?lr|htY9^f9Cx~C91$kP*@xva3*daRMOFed6@6pd^G9k=1=m7*%@cO0ik0_LHk zY#ty88%ISPJ!hFuy}}dt{Ddp$$w2XOj7RM3I053ujY!c>Y|bkk5SD}_H{r=vx~UrN zbdr={be(KYHHI!gj3XFP-;;f1qQ=Ze5AoU_l%*08jyN-Jb14L@bQ2ik3I;=qcvVow z7)HDVrVz4*RdfFr5vtDAp);xyOsWj+mdR07*XOEz(-l~N)Tl+ZG{GodNa&IL%A=y$VKHAC^z z8Aha_qQFn=$(#v=kdOTfUYP8--9X|}A$SI;CGK6J$6S>~-ES@0DV|>_(){;c%bFq;P zx9_$D80cUIHsJBrnFItFpaDXU5ouwKSkWGi>C}2yE^d6*D1=a%%3+W)NyVhEJ?NDY zoQ`diV>15}Q;Y;lk@?Br3dJJ4>cMB;c^zfJwjsHAk#U-B%RgI@p%ZVdHYePafLj9{ zdL_pQeAcDlHnK6sT#50QHLfBA-ilM8!Z1JEjwVrfo+^GstKqp82N%>d9O16CQ+%a` zHgObDv1UQ0F@%Xux)${PO%H82LrL>R#Jd~fML@wL#eS=6JC@88sPK;>klh)ZQSD*p zSvJCu4Kh+W@?jBE6(&}1HAUFWXS${}9g*S^R}~@;dg824Y}%G{P*R$6dbXS4vGScEU<-Mi1zvUrKFzJYeqRuI}o@ zDKg?zcB8y#q!Ab*BO;^kNFt9`;}P!)9E;Fc4B9^Re3c?-Wj<3iabX?#i2j!oj%6Am<_|nhRk*@{oLR z@*qh%aBH!e$lbc-Mcm8Lv}21zi3VdS6(i1+maQWl30AtOI?lxu`~o;?EnIwK@<;&{ zXshUahLOAtBz=(9?B=(s?S`z-2q^(2tR^t%Y-+x!EiNT0--t3yCM7x{Xsi%Jlt;wk zuE@fK5~XY^6yh!jgBVwj)_$!eg+<$xX%6X-4m~kEtN;dXzz?}D2L1sCdh!2);7$?? ztE4ROE?;*R8k32(v$X*QBizDz7ibfM}$OZ`=S*+GYZq>{#r;?8YuC4gzf&0SAp!2ifm8b^{e! z0Tt+I!ql$~wMO6+p#xXXF^6Pe(hCjium0HZLL96*Kjk`Gp%VxOW)MOg?ciYU1^|6h z{y5_==m=KG?>BPL0fW*n0zprB=@FeGUJl|Ht%YoCYbLsbH{_y|CWilpa3&35CsSB2 zRca$RgF^l=A>J+&0N>&*{K73>uockjU@lGpd64{mYXSB1QZ!?j5JTVW=85zN6~Ki$ zdPYdjPcEV~*fc}9nhPmTK|V1uXxhRPs$%RcGl?h@1a5_b*1|XM239_c0T&QPy~}B6 zVkQ8O%&uiGuVsZuVF?l{FnJ6JW?%-oKqwxTEW=!KGHfVe4KRPg_9f@=}3lU#m7JA2V= zwu0j3BIn$o)S7}y&?YX=OsbEoq>XM%5={qvSU#o;C{?%%{=(m2xgt{nlghE0u9b5o`-uV zF$|I;AxtDffW{U3O`u}+LgGpB_@gFfVufxNB>3YyWW)ayNWm|WOVaX)yn&CcdC1 zRXX7nVgxDRY;~2ZHot0% z9Ogs0G+X&X2C4Jmf=g=dfUY(nxIFZ^>c9?4MpdNkB}NMp8so0cpe^H+BXnuGescwP zgF5^IF75_KFyphLvhDH2$UhQU-w(M>$2a=#PQ@^G1x~XC(HCREA|K$U$}K zVfyQ5<*xy)!?-Xs<(|kdtRq}>Gfq3KDbxae(B%ITR-;t0#5c#rCJcoqQb(&qh1+nf zB-G4xu<tTh9#BRbt8j0_Kn<{D7*Kx?xVSpdFjh+7j?pBTW<5s74y>1c zA8R)RsId;kF;^?!Ho-6oAwCuKpTv@BwxWneifu`%ff6DiIwDnA4`6S$t5%bW9P`F7 zq$X1Ialqp{xJ@=PDASa8?oObhf?yVfAb}JVt|x8+BwC{<_)(FzHvdkkCd=)_q(f^?VK0>Mhzrt@ zddp<T>v@0Ls zf{q-p;Ha6K9*LKE*=P1SH`@6QI)NylgB(fplA?n*XzkftHIEe%fhX%!@(CC9;2_rZ zDyD*k>v?@t#6SwqBWlENTgaWBL-1@vR0fW+)XcJQ<1z6`Xy-_d4l<5{%~Kx7el`i+ z6m1bK%$~%k*)$~I^lfJajF$)lup*v9uMjMV^P+GCgMRAQDk1MfWA_OOsrG(Pdu zMi20~{vs&rplwc(wF$-veTM#wP-;>o6Pg7drER>dW`AE-fxqfPP%QX1Nn6=aftRfg zHUSmHS2uDaKr+t*@AL;bZgLo*a~{J2pO2SjxR8csXv7q_kShV;*Y&jj;t*9P`27!U&e*exE0 zBOoYl-6e8~sHMXPjTmGk*iHXMn9!{Rl}6|zBV@+KY3SCdD2NA?{PGdm`uU-!TZ`f% z6Hr0nw#$UORA6f~Ygls<^i9k1;zne6Hy?38_#2OcOLWJov?wd%Iw9jiBVy%qK{==~ zp2ADOq_!j-L8DuNqb-PnTG^Or zLnNOqLr*C~t=bjw37>K!D9VOc)SN`S!rj(qWoCk=QB@lGL+~WyIUvbZiJHj@j$wr2 zMji5tc9u4@9ccq2m!)HlesV7G$q0|N&R}Rfna-KHL%Sf*I&j3SiNgw!f+#4ZEi%F^ zI{D|EXHFzRBH|W<)8{Se?`Ll^T#U=vGaihDgwKsYWJx=bZwx%}+!PKsNf6z4V4w?> z$WbAEEz4vNO5y(%Lg6Q73dPpYF4TgYICrxpd*_}a?c%R53ea_{_j-X8VHSZXGsHR= zC%zDHOObhWE^2tK;u=AEiUW;51#8*eH(WnDO}fm-6aXW z^Pmwlq`7+cHwrpj!Zln>rGX20ArFwJD5l`$ybG)#c>A2UYNNsNKoGPYAWSvNv&fE} zGYAu&F{mdHq(F=6)VZT5kRpm0F9xD$F%YIjn;?Ds7%~&2O?nvVF(k*2964dyw4rlG zjv+&C?706iw2~2{oOblMfyC(3$)ZI!nfhdE(b{HjyHQX{^IQX!F$hsz~CPJ7X1L5_~n#Bt?`IO#&&>p+Ps0 z^#rw}k`ctakf>tK95UqQK!xrUG7K73t5cmErj)aXj-=OgV$*4}M^2kC2<6z3L8H<^DC>BMEO_B*En^2O;B#9}ah=*@w z2;z`0ig*$xaV44Ak{>QYiD{kqs8~f(;&m2{6;(BoNL*s&B9S1*80KX{LZX*igk>3~ zNr(9e36DOCmI*4WoMK5OcvhkjL_^|%M}kDtC3sL!zv(oF8?3_0S(2YH749aDG(!Kb zXGfa!?RD3A=HaD2lB(*JcTg(oN!VdE>+GRZ@F<#AQ2#*X-@Nbl+d8DzXRn;}Fe zJzCYKUk=$^TchFC35uOy#nT>pye5fkBiF`YZmh}Stg}E?be2W${+QWEKK@HqjNNG% z$QWIWkq2mn{Oj*xg#_IlBv!B)KCW2ME8H8^`Z84&vH0a@#bL{@^m2z*bwMqdm_#RnL#ROT??;AVUL{aL zMIIps5|3dRP#OUVE^fwto1$3whSa}J*r;wnqhiN4VH4KKW;U~-mO}qtq8r_0OAkNG zTt%=FKL1T+a&79!0N>>qh~yzOqj}SFiW9WV(4c8hi=-s~F@rAHArA(5iL~kyn?KA3 zKXeG$e?oDI0Da^`tEv}d(B`1~EF>oj%Oo8QLQ6OJP$G9|;?HQ;p*02PO^WCQDxy>o zo5@dx!pf!QHd3!<0_K^}+=%0N39owDEntmmR9JjSJBa}6NvEJhXaLh8DRC)L7a=FS zc53NinU)g&_v{;2EHx1ZM+CjxBPP3h++Av!N>EgKp<-hAWl_(K= zDpqz`2ugIK5}Bz@v}V#Dnbc6sd69HR%v>IZAF;Sbji@wH2o%a9LQoLbIyvIxZumbijtf*66x zyAkS|YEcX4jIF0|LrC#P$gupZxk+rnfkPVcs zp#0)0es+Qq(XCg9hIKh_>bGopp>L~N)n8Zr%x-ZZ-B+pm&CyrBISbw6*qBUcOIvKY$?oF04UCJ zp7&>NSnge>ISDdBWPuNR$X7;k8LSvCh=@ZjP$c7qG3Y^T9`Z!d+yWiK!H*_N-IvOs}bl(%q_eA0=FM$L}f6U5tIRi#DpQIAPWW_6px1H_Wk18D1 zLr84ZUc1;1E|7j+Q!kT=(ov!kdT4|uTQjneeG>m6z0uV|Qj%#rmiN+8KG$2n5U`uQpG%W{XFqUL&W86*7W)FV|g(NNn z2}|u#Ly9N_CJ&;J$BNp(3S(HHnmA6tY%^dT0Z~_jvm<{AGZT10j9`KjCyCs$o%o&z zMjVXGXU=HDx%^Px1eM1@<*`xE1kEH&#mr|yaV-~7a5L8{C}rk5VCSZk&d72mwFFBn zVu?31rPNMyD`LWdtHhS!#aaKFTjDR%nUo-0;oY|Zczyqn=A=fO2s@+%dKcBub+*t_f&OQA@n4sP&-3h}^|(8P%&554C{ z+H@>~#YJCZrJ2AGMsRhCoJzEVsAw+5_vRGMI2oI*k5~-R%}A+e6Mn@iIDx0%+2~7r zN)WN|-ODdBNkenyD8^K7E=jcJjg4)?EYF~YAp4|TUW6EkPz91l`R}IfO4eaAqb!i3 zuobO1Ra12|qM;dV5le_cYkx2UVjJHD$)*yB3}UruNlWxEIRq)~@Hyq^&qHTh5Vfea zAl`86>0p;G;=;mVa|bLicFxcO2cwl!nB)#S%7p7kygA3Mx4aQ9aqfQfv#}i5bMV!F zDt0CAwLCK9Kc|2Sh;(GZRXLC2YJ>m7IngCtn1f?z;UN#vBG>jK{I^HTlTI0-Z|THO z{=|59FbQb|2^gkf8deA6bz#VqVdu4AX<=C<))&(RQ5&`=5uq3GL?Ep;91u|mrm_iX z@h}dCapiSLcL9NRp)U=#Zy2F%os&!6gmEhtU3$S$hSYHqK}-MlJW?!OlA=?6DBjpQKQl#hvOj}NETTK zk7VH^B$6ed5*L+06xISL*diH1(j-kXGacdyxd(U{NGve3fk<~`NC&1pOr*F=5h_8?emOwh{RAL53 zaI7LJld?-7H+5+BZ{ei}B6A3yCoQ_d6S(piNL5up(;PJeMFGcgb_g0kH-t;|5L>ng zrf>?T03A1SJW|pl&x8aq00cZ>9zsxzlH>wnpd*`N96?5UMgRr-A$o?e7IlCfp1^>7 z5*1J3d42#gq9=Ma0cuo6Ytgd^L8cQ&)G9$1i>CupVTM1WGK)Gibf_>`{F7&1VVzV_ zMtIg4=V@Jxa0xe&66;B7cZ5lpVVzf`XPJSE(KB5*);X7$M_kxIM#fRe(Ljt*Mi(TY zPxfL?1|lXGCzJmm8ig=dt#Ap!tEg|G^#@Cv8k2*Y9#`PW$(=1wBmSwnUu3|22L#RxXB2h!$wd%&DQ@uh3ABraE8 z-vtpf2pEZkRG5*e8IlROh6i=2w&1Saq&w}r4**n6wA1AzUe9%d6dvf zQtEP9T5%o8QXKCnkh6t>ECpc{Q8aS#3atC{p*qjb_5Cd;*}&9WBQVh0{_NrEyJMKUP8lqps9 ztVjRJB=J@yWz`WAmrkgV3T*2Ldh#L!b5BFGO>ilYBEdrsNhp~yt{@XKed~RbK}!M$ zfX)=EGiPGYg-sr^Tn*bSSj)0-g?m$4kD_{Z-lUpKgQ}A>Y$%Whl|Tsv>Jvkio71uf z>-kJOmMN|S2~w3wibY3sgb;xFGuM+;kzxfr!!zANVEAT4-6CMS>nI+wO#mvOqjEoC zguKd|KI&t8DDfN7DHO?7WkFF!_JbWd^*pxIdP|`~pAZ}Y7>T-@2mDh}*ps};>ptu= zLF+Rj%&~WcGiN%4X9E;8@+PVjF=w~7u$REPSaoOcmL)G^CW&O7ZAc@!<2v(K5rhA+ z81i>IMn-!y8FP8cI!#6p)C!AAMx#NRqMeaHAmI}|njq2XqvzTP=i|R6VUcW+5{(+B zKSO;d6~kCm85+bAItmgta%ocnKF>oYED91gdah488RZHU{itYAA;PApWU&Z7Z_%Yg z@;a0TXetGuL4-Mau`#TGmv~a3yfa9isfCxw!A=Be@Rnpn0WFI963S(y)R$>8(m;Yi zBgvx}!6KkR^czU4qa&;mT(l{;_6cNHSf)91>GT7wc^<^5x$0p9F@Oe!h8^J|6juNR z9>f}wU<#KI8oxLq;R7x!l%p*HyV*#tNcArMGe)b2ft`UWTcWY`cv%ReQ7r$O?#G9pYxBKf$j$V+D3 zRZ(R2R-nQrH8LVM^0}Mvx!qxl@!AMM;YX)rnIiZ-kD^ru1AFt#Rix54^h|H;mMmQL zc3;9(GGcGX!Xz=mln{XmTfrq|A|^yid*&$5T*L@Co3v8~pDD2Yig8Sgy=e98Dyc zpdD(42@}naIwKi)AP5vjJa{6m*ix=8l%1PmL-V`5M}53urbFtR+4K7mebg29lPt>H%hwUF z)Jm=0>Ir8CKjBH7ArXd7ENR$@o@yq)eda>f0YAmzakfYm9l|+#v%b#T82VEY(-m9| zW;eook}Wu3;_EZeEh$})-IEB5IuyjijY7%$+31TswztjY4Hra`xZLgChZ6|!x+&<* z8Jdbw-fLaT-H*}vn7?6tQ{iW3X1yUn(;1BtnPC(Z9UzOg5_|vP5-uCsJT^W>-X{6v! zrw|t~4&zMx#~BXRZrz@KJgy-g;_S(uU@bCxUlB+O$Y2MQ7+ zd=p3h8Y%O-$0-SZaO5!F2$w(#rEnqkn;6Jrns>khLU5{q{WPs*14{sCI`nobk=R`$ z374P;fN{N`vL>0}z2TD6E7L63>J?hG(fAzBni9_JMpet}SE1aF;|)@(o$0*n+M13X z@yaez73wOKAx_ol?851x&f2QZQ+_qSP4#x|XpWfv+RXpU%e7vtK*-EQ8OHaNArzGt zUHDvAxN$q1ZZR{Iz8PM3=uXLGZv)xhm3LF)>7_}hLP~-z)+ow?6&DxcELj9g3sYIp z1w>qe&l}A}fPz$AKjRVD5P_POcgxG9JI=tbx)C9_Aij@+F_- zVIDGIy%Hb()vp0lIEpXV5g;>t!+vm_D*qZH-?tin^C}f!I5d^;) zEWdXK-p31^l0M$do4jI&S*+bI)LP#t^cHMU-k6=*3cVDB&lK@0F7kS3=gZl^+1iaC zQlIYl)T+>^5c!B7`Eu{AcHi1|-^=O4>8{=RqL18*pPg$jXAmS99g(qxK_x=iqWV+b z5`-MpGl3!D-fveV<4#}Ov>9+L6jc`d17^&-%PKxN7Q;di&{1$Dq&QP%2Rlkfi?ucK z-X9Qdii06e5wW{GgCL~{{gY8gZk#K*A!?v@Hf^ITrH3sSQZA*`6jFs0PhPGU?h~J& z^Df~MOzx|vdnALvsHNDU=j3qQX6G5`;S9}ga!NRiG^qIC8crGruFo{yJGdGgeW zlA=tCrdF*~XGx5IT>pLjHv{ZgvSrPlwPEAmk1d4?W!khU6C*u(?8sz^v(qHElN2es zb4L**NSh$h4U}imBEp6j1$w*)Q>98%AxVam2~#Gh~Sq`luhfpEdt;#y2G#tK^`k1;kJ!woy^zylA$AQ2Igx(YKc6T&btu0`4~2`&&B z^Qa?_KrVYMk32rC%Pu?IK&cHO_xNL|Ht0Cy5J^({@Ug(|sDr}|yXer4JlyEe4K3X` zqsuO}(4tE%Km4&wGPm@Q%QJYas}G$*@$C~+XL`kMiBf6xnMrr~Pk47#jR1!u$ zk|@!Hk`l63j1-+zqfH6D1eO0uGU+5XN(vbRi5b)?ONg_UW!5aO{t==JDy6leizlod zX~8A8+H1wNBHeMRU3Xk`rQH_ZcHJ#^UVEpF7hiq1<#*q4`vq9v zdcD0@-hdCD^5AI;?qZ8}^M%-7e#fXoVvD=@cHb$b-QwGf`*nC?ez#CKVh*_-xnwFy zCV9gxq6C=YglDceWr|Ur`DBr0jyc|Rb65fibuE@sXMClcc8hDjeOFqh$-UNyC!{t4 ziYKhr;tDOG;Q94w;FG&_1+wcD?D!;@4KlMopi@f ze;kTz^?su6x2u*Kb#1APyxc0D=$CMKih#~tKT$tg78M1dF`xjb>;e{Bu2mkx>)sLb37+{zIhWD{wKl}FEhd+B3 z)Mvqd?!)h2_yib({iV-<=Tjg0z860j$j^cAgCPF4M?nAC4}K1e9|Qv^z837@1s=pf z_gcV%7mRO#`J-S7$@jnWQLuj-gy9J@ctHf}uZ1wYVGeC5zy$X2e%*V)3V_&x5{|Ek zE$Chn!S_BF{LlXd0gPV;_t!)mvfzmXyrLCfNI?MVkc(g3U>9*XKpV0E2K|#C3UWxr z?ZE&A4RnDT#hASu#GsBjm_Zbo_`U{0&;=z-AsEkRL?n8zh(I)C36tnO3AT@s6MR7* z<+ndWF7O3CV5ALVfW02X0F!x)Vjg2)gJZ=&2YG~_C^fk~^)YgNqGTWcycj+k7O{o2 zRHP$Gsl6S>fP6?q-}^FHNg5VYhVV0F{T8`C0P?SUBy`^>VfjD|mhY0Ad;tl^S3U~D zF@wRhKB+8nc(m9Q-2(?S!5L9w32#Q~-L*dO=sfB9?qg4=nw>XISIC`-qB7K-vSdQ63AKEDD` zfR@y$WQD6v!)n);9u=%ut!YcwO4WZbfC3I6Y(RBD79j9ov1PfzKN=g^#-1gzUwJH8 zDw|l&cJ_Ib4d`Y6k=e13*0ZPWEM<9sTFtIDw5)|~Y-KxJ=$V$b(1Yh_!D8EHf%XPm zy>0GUHp?vD2G_W-742*@t6J3_*SXJyZgizPUFufXy4S^ScD1`*?snI^-vw`Y#XDZ| zme;)JMQ?i5yI!&&i@ooKZ+zuDU;5V9zW2p%e)YRw{`S|u{{?V>1w3E^7udiDMsR`^ zykG`5*uf8maD*j1VG38+!WYJHhBdrl4tLnY^tI=QMLc2>m)OM6eZYxTykZu&n8oyT zag1d=V;a}k#y7@sj&;0a9{1SCKL&D;g*;>;7um>1MskvsyksUf*~w3aa+IY!Whz(M z%2&p6mbJWPF2i;LT?TWQ#XM#*m)Xn!hVhxzyyi6r1OOrV1O*BJ{{Sq005Jg50$>6F z2>$^82^>hUpuvL(6DnNDu%W|;5F<*QNU@^Dix@L%+{m%xKnoKDg7iqTq{)*gQ>t9a zvZc$HFk{M`NfV`pnmBXn+{v@2&!0ep3LTp8!atBkFHk@@lBmDnkWterZ-@kwZ7wpUS=0?JT z4`N8nxUplkh{Z0pN@%L#$Cxu~-YnBWUCy9Giyj^G@?^6?8ZRZyy0vS#kzccnExWeu z+qg4_%+0&E@84-3{JZQrHSpuelXE4myt(t|&{f{_aM5`5>)5jczfj?y0`1_#i~q+i z{NHMfGRCW4&)C9ws_(-?U{Ak3%?r$<>b1|mzyJRL1}I=|*2UGtfCwh2Tzo+^Xw`uV zMkpa^v|S`zehXFjTzV6B=%Ga2m6Vl+8M*i2Me&`eVsb<1=9+B2hS!)VDWzqbbk@09j&|m$=bn7_>F1w-1}f;FgcfS(p@=4`=%S1^ z>gc18Mk?u~lvZl#rI==_>86}^>glJThAQf)q?T&xsi>x^>Z+`^>gubo#{VkothCl@ z>#exvs_U-2_Uh}ezy>Squ*4Q??6JrutL(DOHtX!O&_*lmwA5B>?X}outL?TjZP7(g z-f}DMxa5{=?zx;nf$q9NQFjm)?8Ynay!6&X*kqS&_StBsO_dO8x9#@ZaK|n8+;rD%_uY8st@qx16aSq{9%%T>z$i*&t@rz&#qZr3X#xk1mjA%@w8rR6iHoEbRaEzlI z=Saso+VPHf%%dLn$VZ}~sgHmRq#y@L$U++OkcdpABD*qxpf~^~2jEB~Bl5>ZYUewa z4AsLjNvcQwkCTO}WJNTH5D0-1K%Vr-Brk#jfQtDZVIXG}NLsn#Rkk!WA!0Zy8shqoxyqHUc5Q1{ z@JiQ*92F+k7)UfKRgHgG;~Rxd$ukCmjDJi6A>a5%WU=v#Zw&Sz=xB&JwDAwlb|kY6 zxrR8hK@QQ9*0ki(A1;nYlLg|8 z5?^@3)h$agF4E;L%eW@dScaJi(p;5bga5@Ff%8G85nVcC#I`Nw?nP{iXKk!@y#GZD zHLOvMz#2NSXz8tF4Px6ZD+JG0CI~Yuf@q#J_$PS2uxtmS4QF6OxfmWuG2;6SV1#-i z!Z@x_yd2{TkGUkuW%Za}ZIH!AqZosgv7*IxMbS{<>@%XV?F&D{8EKA2mj#mCf%sY?BUTHpSEA;Hq`Az?C@gcC z%aX++0~zNg$uss1U2SOD8qobogE?E?w@`!A#ZLHH#LIvfMl91da z&%lO^Z%lND?}YAn=DAb?Tl9sbIP{_6?4%X{4o{(pVoFda$ER<>D*-YoY=}g|qxJS)uqH9{*y+;Ui zBkSiz^ClX^ryYY8c^e06#KmIEFb$?B7&(`J5}^%v26~7US%@Wi|FB`wCw7%Lc>|Gw zt|t)WhY*j2c?=O>nx}IPm=Z&`5OmjI4HjAOhZ81fe+FRG}49PWW*LM)BC2yL>5c@`SYPJk%))M)q5Fv)v3dG85sBr22w`~~s1mQo5o!1h zhDL#EcoJ&3h5rDCIsfr$HrNq_7cBPx5zFUoCm4w1R}(kLWidg0R(BBApk;|D5bo!B ziwOUnJc_inDCjpBEVSa(gV!%fb{Kr{*MiaJIcLd>xIiYz_xP)lvb(>Z!>(CIW z_gJ14YXx|L1fhT{ae^sG5Wk>Y&~S|xsEq}|jodg9Ggx#U)_Pqx5#Kcs-vx|$ND|AS z06##$zYSxyVWlV$y$D&1CRyib5Wm%1{q=BhQGXMGh1YS5RAB`~A$30(X0pf;8^(9g z2ob>0iLdsM0s#yi0dAoNkQ0Fp-*t}_c7_`CDw^1v4aYcSQP*H3)%P&I;oQmIffZAjwO)}-@uXC^^P%#5_-51nT8I(^$o@-J-G}% ziH+Yl5NnAWOUV%^b`s@~4ud(EC4ra=qnHSl5nIpas#OYhju`N)n{W z5zC379wB84kx&_-q!j_5i4~rII1G(NiyHA<+J_MLNfS`|6#jW*|M{U25e?dD66^^P zHTt6y5u|pZrX-PC$Jr6tz@`}Spbn-G$;lCH!wUb<4dbPu3_+pw`4E1(p$%yeTN)NG z`FbO&5XS#kdMApM@3;}3)|(kYo-rB`VIL8k^m4UU(2hGkg>(G4L9jcs`x-!Kj?_6;8Rm=3WFyvKRYXkrNGTYUMh zG!d#TaSeQWUiC_^L6NFMp{aX1tPmluETOCzA+RqY4qOleOzIQ?=Vt)du(SFP($KAc z5q2fvdEbDFK&WYLNu{+$5DU4km?jv;>R-ni6w>+=q{aPj`tyO^z+u#K(aHmmW zh^GJec|(Vh(J+s1L7&G+5e52rsuo`xMspIHfHe3N-{q8zIF~MJANuMP@(Qpo!LkYw zwOb($T~Jh0p`ellfj9fLayJwhS`w28pcIj5&c}ganTaX}co-I_LE)6?kh1l0vOqx& z=%BZH3lmP84of!?F3S}#%LU40mov7jVY{=b_!GEE5-wH@hbp6{iHZYZuFzVN?qfR(lWxs}&5xQjjUcYlWxF*k3{U=8VukKa%ZxcXSf zMS0GE4C%J0c^JSCk#+*i5GhHQ0=3rav;uKy*;^#?P{S@N51@6% zX2He_vA+r-#8;6GTPwRL!L#z%S&S$SBn(@9jH`BGeHDSn7E4)DhjXg7SR?-`gp=2b zeCWK+Aipw9!vc}OIPnh1(GFZm5M>+|?=ZUQunv}t7S9^KG#eD{0E|_6SV<;rZJ5f9 zF>63O5LFpy+iP1zTM&+%o9hU@w3fdDV#6$P51srKn0ygNEN~6s3p1gPm_>K76%HK9 z4cwp&)Qn%2oRWAHHYNRTWRWf(xCxj1Xsh%&w8W?ZCzt zUCc4Dz#4(c6n)I!3>5gvx)AYnpjxK?Wns}}4ndm{-JBM+3tkM-SlIu?!W1#ia>14N ztPndb8f7dG@8HG}JrnC3(hQ-~X)&^^*<;`fF!P{u@ z(l4>Up=^n>8p7sa)OLZ`S+^5O+$MD`wV+kEByrDu>ldTl67B!s4pPk!VtRVi#)uDb z4hL-;BSwC^%n>1q+c81eD{{te-4f&}+YnKg?ZB_}5f7D2$=(NUPzY|-2wH~ydC+|v z#1PIoea!Wp813xb4pH4}@!*$DphXg?%RpS;P=(Tl4y}CUE>t45yBl6S1z7s5#s}qS`7x~lk6YE4?d$!r&DXXG2GT?;$5E%CuVk%1e;s z?&UVF=xfmqx_%K9ZO)Kh5*%$1=&-lO&bJb7qoLtxV0wa~rqD+?6tpc}Dv1z{>JYVc z4PgDym!0egfz$#4?iS(3y$%)#JP_p$5r}@e@}LfnF6oj^6LWnI=`ioattevIfdWBu zi-ip!jDo!y6RiFc!$6h_0hAFzu`{Nlh>4^%tPtsr5bI77yq@SW0o3<(eME2r-ap6?*f{RbnmA>Z3K|g3i5X zeB&kI?iIoDb|J43KN0S{@%!)(O}`N7P}&}mx^rz2oxT;>U<*246MdUn_g<5pI1nRt zpW!CpZd(?R*IA(6SY*j|VLuh;@aHt_@Ued391-sc5%jeo-@}~o8lMk%CQ%* z^1=#RoDB55F6%=f52!B|e7_QvnDLWt5bytR%-0VTsT!wT!Kt{=QaKT-h|i7}XnC(z zU7+u=l$U+&*kR0H?I#fq4IV^@uv$Wf4ILspmk`~*i3Z#K zyZBJ!MtK`GUd-rGm!*BiIjmEtddYqZ`_-C3Xm|e)e=}!L+c$0HyvDwZY}nd=b)|}3_OIAp(akxl zbRJ#0#+xhQO-H&Ddr(aGLH&Pq()c@oHCayK>Li&KKIjfeJIdj0@ z$o?a1H-ZH8Dz$-*BM8B-qG^ph2Ooqm!jVdo(4nPD>INuox{Gj|f2bjdn`5|eL5K@ok*Ef;0fqr?)E$1;*46^+71FLmy-&??+XGj7N+b0ixJ zG%LZvu$gT&g1)g4n*U@=Zn-HBa#BawRwbx48_zOmxXog%W>-uNlXO_7AS+)w_oRCQ{)$3N7xh*&c(u%C#1g5zX5o>r5tpEf3Bs2zU2l9fryNgP z#u`2G8W1Oa3CgCMo|yS3np+KO(4bPC6V_jw_od7uf&l|}%af&(SVA$oU^wWF;5^7b z01Jz=t0te;t1$fd<8%L|g}q7Z+(CIA&_D&TGx}z+$G+@fvRC>UQ*Jb^awiURdQGE? zO=@jp!>sZ#t&vyi4&L3YiTkO8ay0d9V+GsUaK#UDr{~2N&xRV!B0nhG@WvyPqzex! z=bz3G+iGUT;@nTKs!0mFWH`C94e6P`9#<-I8*TP++pRSFc9Bwd@XKpFA*+VcpNH3%Qw$KNcTf8trk9`ZGMn_#176}NhtjH5D~yeVE*KleGoq2dhX8JA z0OCfGBs8#pfKUHy9-I#13i6J`&Ci6xvc(BWlDvZCCR_~B-dmt_kYWU|WlFjs_DoWr z)2$>(*FuOiMiL+5w5e7zW7Uz2l#Oy^;~PBzqF5|bJA+ULCR7~OOIq?0?0^u2Dgkje4xEIKSmYRq`XXGkL&HcSXMyn+>Na3d`n z>V^gjlO=*M(j#BoS7bU88N-xtF#o`!7&R%O6mIfVFOuO#jCdMe#Zh7H147+ zMX!vP3+VX zqg>m_JjWrfv*U(o{rIU@L#&4(vso!PxNs!qLl2?G-(n}MvH-aQ*NrD58MyfYU?-4|)8hM90 zfcn&%$%L&Q>BdC51lKQ_bxRT3#)jTnk_6()AnlqC&~k*Gc-8|1hPRyQ&$e`;f@mjWaOHIlsl z$QB{4QYdeZR1RvYtpJ;B$T?}Dh>3WC|Yj8JZlM}~Ieaer?Y7(6zA?{)73l!_x?01+t zZD(Wf1L^QdVn!1#LcZY}?wuDY->7SD0o5{WEW|2!A)FCybeh`K#&D%O6=p+g5M^aa zohn=_cAzt?$-0%e{m92YVqBB^HZr*X$kIeM$B=|wYQ&qVD?+-l-09THZ3hWwI79#B z+lTZOP6J)9K}xIO0O_@Hrr1HR+EFu`QK&Q!>L%kt8(kAkGLPRG;RzB>mV2 zoL{^TnbdbOG0q3GFo|P6XGt9@IZt|cY+R2Zx3ixm&mj}i4ec;`BYq0de-cVvkpwAS zHrmzacsQUf?OFx+MeWDz16m!!BLbOsDR9HNhg%vvnA7LC0fqVNBc&>7g1 zF=w9hjI4vGBdzLyIK=sk4sz6UMbKUeQX9hADh!xB@YYCO#Ub2RCG;T6h>wD+#vHUn zrKxDDOH%K&(oOGXnPzm&=hU{iWVz${Q5mrgY8p zxVaMMgUoES1VN&^FX-2eup2f`+g^0N(Txm2cO-K)2%VzLD0vs8#z;>{oekr3gixKL zC#n26H*yD`tU~j8RBO@i5<$qd8rhX2zEq)IZO_^*=aiO+BjLllYY`-k9jzGqlM9x;iFDHT|9KBO2rhnTQ! z>mDW24oYK+58Os7sYQl3N9;&PhJZ!DC^|kHp)7$8{%Z(4#Ey8#o%;(!KjFuJ=tm}F zGO^I8ulSO0c%Kgm3J*C*DB1{W&<EZ# zh~r2(S86Yi`a7Wz#{r?26|%xjnhd5hiFGutc8I}wBeChI4#qH#bkMO!D+nfI#)jBH zk_bk93C0kyHfy;G;OU8NxQe5?3ULC(WBib8!HI0>B*kHl{2>>qm`1fIh>bi5;kz!A z0J)duRvqafkFk2WGp7^hk$XVKndxJ z3Up2DyEy>~O^pyD-Xpy2kQAD{%M)@8RQrb=Ob`EaNC$IBkuQ9lq%;Vq#0hHfkS|e4 zh9ruFm>_1bhG4-DXxKLBONeYqixuEXcrrq*s?CE4pb0ZinB2{wS_&VuD-=Np%@`7M zkV^^ihWFuyCV|M4a7fQQ3u@2?|IAFz%*=lv%e7o4Z`988L{0r^l$GR0kV=b`^dZ%m z&FDxB-7Jg|RM5=;I8FMU2n<0pLj^cT1pA=FtPH8A4#ob zI0$19qG%8XX($G00ETLq5?P_fhd73UNK^lUSkoq5#l-=jssJzR7w?`e^3V2PzGk8 zQ8%?y2+56dkcR&NuhUS5swxKHBaXVLz7MPt4b9WVsl$U%w!-KXOj%WpSPqQmnT!l#N8 z1|f)P=+;{UifLdxbtwi&1lX2wroxgS6*Ad+OqO*7rj!+pkU$5F?LX|W2I^!P#lY8% z$O}>HsxwuTg8+uBy;_Zsf`Wk9p*oG9B?;qn2*6d0QrRbt6-!OE2DrsIi9(9M7^*!r ziTsMSS!{@Q=sBSPLLgj}P;HJL(w|JX+~qsM z-Q=JST33hY2#}Bm$8FM_iL?KH$S>lGGnp`-ooNU5geYYo9Ab5d*cBz_W!{nq3o7^r z8z=|@^C{IGo3GN|yZpYxphp12GnpiaI`fA(6TdyQh@pZ)8_HRmabAq7T7>A{gt%M? zsoGc(+lhLPTq}?9f!v4CJk5i%rUPE#6$zJps`|B(9ch6dn1Q`z-zF=G``zD7;@$9V zh}-oDg5!+36bZ^TKRHuh^HE=vFp2pT8)wK?DVbfHF$RKoJGP473!Wbi9tjPe9~4}P zSgSLH!^g&P2mZSWVyrv=O75y%`54h#X)m&h_Gx!UmRUVhQz-F6}GVdA6=KPRq5yp+MhGf9woQULS z^x0=58)YD}Dxr@bVI%2a;KJa^Jp9eg07VFihK)RDb(D;NX{Tq_ONM|B9n9wqWu%@1 zx`gN)j)Kpah1vg!Mj20G3R*6VTP7P|5F+XY0v@nq2Qi|9B~vKm%|-${zf5VhddKtG z3|I#1x{hbvTKDikF2OKz& z{eXr$iD|Ν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�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

      %hPK&<3h(2x$9Zq<+Q&bJ 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%0A)& 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 z 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 z zCTbnT0>&HL_YERC33F5(2{a39X4rZ^eT(K&RXB=|!#n|b723?lhL6jCa) z$96MH;MkBn&_lifdc17e78Gwx;7mPTtd$4VstSxUZ9`;I&7L^F=k~s8kgqD*uF44iQK^5{OU8 zKPWX!X!0<^_l9u_N)|Ffc%6W3HB8UQYJ)_;>?)39F{Uj#KZY8k&)x~LkX&@xGQLoqfe#QB^?tA?UI za_%3JG0%kAr1=1+bfQtanrBAiPlOh23uQzG)c@>(enjrhb^bUbQOzQ{AO;U&x1JsIZZlsW3_+PzCrt^_5bR@YFfcsrD_lw%B?7&YAa_} zBE_*8-TjLj7h}GEcK@ln*KTjTb@1M*l!tGy!F&7e{fqa|ZsK_O5+}xMH=eqK`4Upi zR}k?(dHd{T4lLNS!F>J-j(*tD=D&08#wJ!h+abA@3!&bmz5C!uZ`Vc|u>WgEzMqJKQK^M?T1qLVr1CMP@eC5H zt0cXesywo^0qd%7uv)LAo<^F)TCxQP91TO zz33dZP%6n@lh(~hEqkf_=EfVVb55diIR6w%C_SMQ(jiPijY?8n^Sy|>CMT}=pJ?7P ztE?ocBnhf)$_WlRM*r>CA!G^6>|7(;sunpq1KTVza3A|8ToXgBPoaAN>>_Z&d*X@fZsfW-C~;ExbL;27sq&kleNDR8 zL}|LACgXC>=DfKKr)~6JdUeY!)T7e*T&;j1PqLVUq>O#5(UzHYc8s0r7%PDP@doPA zCbnj+wb--hur}|?ldcnCJL(6!Jr2G{HQRq+<-YjC5 z0}b+KMfqJuoOh_4#AzWgGyh1QR^pCA#v>i>P=`Fwv5p{S$Q$Q4&JKBV8>;Z5AtHLA zo=CWoa_kRnYP6hlmd3v$QUxm9XrK`P#uXv%5o`5o5qoZ_5o%mc?{^uj{JxEUyiI?OS;;i(g#2>|ii0{^X%whZzHZR-inNT&iyaVY1I47F<3IEXfqB=wa!8RkD?l}w6l z#~Nj2;z@9_)TL>MdQV2o(fX=hQ2)5(WrXkICL<62Sc5c)Ag8@VgW zF#b`yVz@|lWSJc^E+)b?9z?UL^^s*v>ei2f6L1Y#-a+VbxOx~@QqbAgia@qOgtjD@ zg}NVnG6UH-dGC2HlaPqgA(5c&44dnV$3VJZo}#LzIWEdzbpz9!k3e-L@odY~e4AfV z1;<|2u%IqAg8y5CM582Pv*1lTlm`QA+nRwlCGi*ZD<*z7!zA=fBa-0IhHYYQce6;RAA;5 z6JP8bZ$^Nt5a=-kHf2)BN32Qao8rO>Gk8l#in!jQ81R?61@cXT3`(2uwWHDgq7W5Mc$I~@^0vxll934$p=AJztgpA zM7bwmBYx|_8#3*b5ak-%XtU>SpLj zV(nj1C*^_M8IP(|^$%r;4b!A12?)Dw^6lYc9_(f}J$nA;ho~tqw#Sfhf0d+XLj2+wlNbO3+Eq+Q>R0S8s@V& z$Nws^ij}N&9+=nhMzb%C8o3(kXjW7RmG{9B~f6n1Iab(>!#fdviI@!q)Yso&tZHTi|!jy>~L~}9O zh&HaFjf7IP!DY{w|Kg^NB3c8$Qz;&nccansH2$jgBCrM(kCA0`XBl6%ZK^J&jDO%( zNnHKq-(j>(i!dHLl5fa4_jC{rP3IdL&j^mrA8Y+*e>CdPNf>wSP>Rg!;D$!l!U@W{(A>8LBQVA=%s4NIi?Ck9zK2N|@Vu>n;MRH?~qQph)t|9#H$N#j0 zg23t_&dT_xk1BrQAS z1gLbTgN^znJvwe9EGr`*jv)f8LEa%wWFt)MDUci@_WtS$<4)idLQB}MP=4bfsv*Rb zsliAh2tQCgTqLOuXmSonsVYvRu0oD%hudVu2M-XKv}z-!!v`U(1`Wbhmf;aC!Up4w z%Em1)Ja8dCE^>rR9kfm}cm~)0VOcbyX9Vj+LWmo>fl{=@8~En{8HoRiA`_D$UaEyb z@JU1jXCcaEHb!VUK4;p};V4S6P^f{3OlBdtLK|uaH$JaLwr%{1V$00p8UKwYR6@)o zJ`bbRtlsF21r=i1UN8n{0|zsL5%naRbjiuC>LY+_AdqDNF`_V1LodS6O&a3qqHibk zv2=u|Uizhr)Nx(@gBG8~ds4#xXhY!~!jYPAH?~1;0#U)bBY0Bo`f`g79l`^ZLHweD z89I{G5b$9DCO3?RtJtH-pb!5<;wkFIzr;~B98n{>10#e1t3?(lUrrBYaU*=H@OWjD5VJ`7qF;z!EF6 zF^rw%SJYqhs9}a-X2{PBIpmNM(%lRpCDI)NBGN4q7AYX$4Bg$`jkMC;p|pUYfbj)X z=JLDiu65ts7xzCn>#V&`?R}o7E%zL0!j2*vKt*5}DfAdo?C0WGiZ0xzQhm0ue!lu` zJBC8XkwX;zVItpFSYRd}sOMsSDr71BKHS~_d zMr)74!C!6iZ@H%NUD7+k-x=G+*e5T9-VrgR7SN09{G|>{*S}y-FW@e!TgW8wTzXIt zdsp6KP*h;YiG2{mRLrNdi)L~of6I=h1Q}`;rn7KSG7sEb5270=obx^PE(=+n?dIs8 zpcnjXVtoX0aK0f!195$}srWoH71YV_*^2LYHD-LQMx{p&tXm>ZqoQ4|uP8k2oF68O z$H?JxjJRIg$H(NOES)?Juz|ZVt zr6YGP3Jr-HFu_L<-(_8SHm~Ecka@ekQE#Yx4u_55JL}v;i8TnC-bMF5PBWP6sF3dQzha2%))pC z)dLaJqX|8>A(b=&GWnsx^$E~RS`bIh-~oLs15Z`?%iSx6$Cng~+qo9UUAhXsGTPy;^Z_H64p`dQ*1G*MXowunA+Js zi?TzVi>xRIgdXo>;up=5;?0d5#wiM=b~RLZ#Rb&$B0gMjXEyLpI0p>GpUo|C;>F*Z zebl4X8fFqxSxPUkyzSEq(&8Ri)M)fh4fD6TAa~XXSKKgSXLxc>7O6UN$2O>tzUP7H zLo#wd5L=RilI(y~z(A7W@-xfnH{yk)cFIOkqt|z#4rPT`pU$q06Z9xS-n-&UrJP!a z$(kS8E7-+Bq}2v9hNygdb+e!B_l*xI9D*_mWQKnQ3l+L%rgBh3N?_w$^oCBelROmp z%eC)6xOQ4@tgVraa2su@TNC8+?VGL#e{YW4xOYdmU1bR?VM*t}nbC3^`2lB3{JCvo zH*|Ld7i^vhN30cIw?j`gX{k_=5yJH^W&4q2p zHErl6$7gPyG~)cyt!z$-(IUrV3=0KZ+X>x8+42zaRqD(-zoAsWtOza#vKbgl_^6A^}gzwVA zjG!WYVU$B87EcH*GSiD4amyEy3ZHksEzdSZJ*f+lC~RhDXe=<||0T=*J2oz7PVh94 zgE66iqd!kT=V{My<&tmG{(wLPjpJ7Q-x|j*(zZrj?jGjh)i(30W$3 z=v!YyUMovDdvLG^QZy93ZJoTkw}LL@W#Ydq>A%PoD7=;LhP_$S#NThGk8WqXmQh(v z1fMq}7bg=LgWnPDvl?qga4=Nb@0~w4WeaF{KGJd=O>)YEz2~gf5HwgMvH$HZl6aD1 z_1@`!&nJ9kCA|drYEdfg3$wk!Mt$D09R4v;W-5N=+s4Y|Ry4PUchS1KtMXx*44?b{RJ2NbDs9~)k|ot`X_R{9hJQST>V$E=G70`qur<3V zsAK2peR1YAk6uQH;a(w!nV^`oKkV-*MiK&y_#qM+;N<)zj`FaQ`BL(?JiLz_M%xO= zzfUuUg)=s*CBg&ve%?>Ax};6brKkz9AY##KE+;sx91E6|lxAGuEs*x&K=V`M2b0PRNF4g6 z&1D=8tt7&N5B#MV6p;)T&uei->E9vxU>a=6v(>V~bUdob@<~WW1z4CG( zYfk3VH}%Vpa`C!}sGa;3?pNu58OrT{c!xZ80lA>37?~^zM*hxdsWX+^ljlai{YxMGoqlaohwJ$os!+PUfT=Z<5tOs~-kIdx ztV}I4ckwB~H0EwMYQRT)_scJ`chp!Hfi)3_T`{$d;n~|vA$3A88&Ri2@3wM?m*e|m zo`uU!Tev%B$;O}#UaX;$b9a8c9pm7d$Wg7Z9A%i=C5I{sBafr+X-=0Uvu|-2ZhSE) zwLYN&Huo3VozxF<-Ye~>L#N~?jeb_UuW*`&NaAnkJq825<7I^DS=ydN*sd$KjAfpF zba+-?O!PhNz@&)#-uq_D?|X0mzTg`6V|8K`gY3RbKIeLM<`?$n1{3A;kIUz4SyFq! z#!qy_OUcB4hZ!tKNja;O%jj}Kfe{l@?J>$&7R%ZBm$){xKC8{)Hw!zj;Zyfyf!u^W?+zjx26dK3{aTcS=LDPGRhkKQ^7`CBqzv+b`s-4WYhxBxmo;l`uc%0! za$#~$UJ*%RHi$`#rI*BJvq9y;MC~Pdon+}&uWQZGa8>Qa2YknnHa~0=wn%9zp z&nL7po!^_xmV!wB`_I2ZG}Fk(P$%FQYl{cI)<>5_vU;V#u|H9Dq~=5^8PwacfBB9P z6XvQD@ReIosI7bF=GU(ei&Z*Nq%9U=)irCq9-G~$Ax+v%nbD{GR`0tFH|VKlghOr< zuu|D=EG)4#mF%g$v$}|wpSJkw)H28gkNi4O(N~9OD*Hz!-|n5!8~&e!=6?@cW1fV2 z4F*m%v>lEOzbJ+qH2fZ-4awtA@V)lWJS8b)Oi=8(?_;yjC6w-W{MC7EPmYFM-r|AN zFMLlcrQLIh*;aaqF6K+yFcLxORGIzcANY9bjrL!Y5ugUhh7WZ|%eI4r%b-Ctv%tbE zW>fh$WvoMmd7@N8XbMxf=*_MQMb2d4sz( zQNLcShnl=cfBqXcE^oB7AVt7;j@RMVxQ^$gbpM?0@|CaU?&r-VimN>4v^ zIEgnOS?FUQweUX452KJZ&5U4)EjM=w_9LUa3uD8QD{;yiiS%v+xnPWl+bS?+a1+Z1 z$qCwgDMwp@wiT7Nd`JnKAz^TFb!EhzT;Gd|_3F;CitXC>Hze*_-R|e*I02mPW2I|QSWvgWa>Qjj3tDpyn@~t)AgaUDxDf;@UqTm z`m(0Y)rFTHEXJ^Zca1Y$Z#>rZW9lVq%Jk;_@~u1L#!oCk8UrEky7Q6De@2B;;B0`^ z>}WzHmaFHd$V#W1$gH8Bu0)U8&hyd{CDVB4I&0SKNr`2G>tCAIxEC{HKS_R2uKT{f zhZcX(_IrBc@wiKAT#(MQXBN)?DHsa7g9NkJp&_~+pTeE8dEUZ8)dE{2G#&))yYjw2 zQOjhF?bv7IIte=b>9E>y2+#1u3t&w1r-FBCvWVuSJXCIiPg_4Hbm^3QnF{&-K8?ht zqFeVSj)^-tsPH*&w-qRe(Cm|VPGT<+AVJ^!8TsWX|b zdM<8ubr`Dn^6$m+ja2X!Wg3~y)%5hMnQxw8Wt&YeY4Fd9Grp$yn!mgDEOR8mmmB~% z$HVfQnC-9Y|3v3Hio?V!^7_g4Fd5WXE~@QV$wd1B;?gg#t+&y{52b|&UUEgS5ymZC zI@Qq9mPZm8ql2wsgXk$z{VTDVY3;(nvv_Y?MXExoBgnuorwG@oFg5VXgq%20D|Wr! z-X`@DCCnWiHPW?3)s&JXiRS_^#1#*(*?9mjtcbprEBrS>lZ*tLAny`fD{II+b#nGw zT*O8S5vi{_wDJ7$DmLK}@`_(MAyPH*ZZQ|MrFXkRgzIiL{c870pLV6U>uXWK&3C7n z!`3$?Ml_1io@Z<;-#L{x_#Gdm=*Nu=TuQ$zCnH-%m$e{IAPCMPz6Dh(xvfo0-E6B{SeOajgwGVinxS55_+3Mu)4LE5J;();iyCb6M+b zrW6cWre^v66kU*h($}et ze6FAsi_ggu`aoxXwf{S2p}oe`^Q+bP8K}bXX|)g7X?lz^z^*-g*3)KgV^@}{8ALiE zvgW_JTI*O^il3wvEUYqI2_~kUvzhmuPHqEd3gYhku%O}~{rq^KfqQxw5d)GoSfe(1J!tq@ zY*m-G%G@NJmCPQFS0w`(oJUeV{Y3XM)wbUziR0zt?bxxvkJ~9pFT?!eC`l`aaF=g5 zw!9y4Bxw&n@)mgqrP&oTNV}VT>T|iJY)?X}MqUy-N}Ee|u&tJXIa#xeuHq#5ncPom zt8YT{zB^LDk!>PWwrM8fuOJ)#E?wGfdtkGBh9q6YB!B4w4KM(aErQkrI;9vRL=XDo ze=78GjpIG)O8IGvG-iq_owLi)i8B0aV&dK3%2fwQBQ8YpJSgnnmP^PVzHv`}i6nQwUyUs6HZIcr$md^nOAh^gf0phGId0#P>8zxk+&O z+i#`roKu^s;t%{4&E{z97NXuS{my}4CPj{Ik>?r17BkJt=I-A!Z>fY^%rSyD|0rKW znKElWY}E<*ofUIlZqn4Q#WSD7a1rd(1DI!n79dEbra76eAng4x_Pb@1Bgvl+Htlbk z-ddmRu<|~<8Vhy$B3Gxj>0N)eyw!KM?c7hs*&yxIc(yMC{m1Gj*h$~G1u&!VpbdLl1s_l_DSBBwuUzEj|MX*<;R!trr`8W8mQZ(SRdK)MvuQ@;&u@3} z;RBMd2G{XE&mQ^|tl_uhW~;D};yeG)X5OuTFXJv>on7tc@doz)fs#G^8@2)RiP+~b z*n6e_p4&mH?ciTWVl*iyxr;KGfracTZsjkjM;+}~jl3VT>sh}fr4+nb{!-?JM3Ky} z#FWEnsPvUEb{`~vV_52Fck!xM^bvuW^oK#?R<@&{qc$z%H)K;;=1`t}$Tyw2YYP{P zZ;|&jKP?XUMO<#|bh46uuF{9}>V%MV-atpS9z-Vo5IP^}CBxHDz7|bmnb&v$ntcT^ z$0M_#FW7OUP2ND69gy)1(29BuLcqQH9&?92#?Ls}VgoqrLuiTZPt64O=#Z@Cv~pzu zkWf#~K-8}%uSA@I2l=n0cN`g#NJrAbq0+Q6&ZKge;quP%g=WAU)TiQ%^6GH}o&btE zd`=+Agmez&H6X_86PuK~IOs<<(9sH(^P$@uGCw%=KJz)84Wprb>4* zKsX(ZY7@Eh?CDH1X&d%UpgC&d3u&vqOV%5C4cZXv_Q&^cQHwkPR}@Ok8D(w`pv;jD zXkV}q@fETC6*mxNhRO`M4QpBn9>CWbH7G?@N-ws$pAJ?S&m%%w7ApT-%ULX=f^`Ko}+}6%(VD26;^v=qDM-Yfr@9?+(NGit>0A zmGdu33)Pi-n7?5m4U}(fkA$9kKDLXFk!CtFk6=f{m9WQ>sKjw2-sQ2mj%sohN29Xu zMQunk8Ro}3o`VAy-^d5N>}QJ{=#T6@^ocfnr?Tr`A%!$l#@%S*K>h9nF#-%RJe*kU z``fo3!{?6)-H7`W1Va6~E=8L!DP7MztxY4LBJYe1ecMfwTEk;OY!Dw1_L`nYMoZ{> zIr7*E)u1nNhnK0>JeuGB8FvP{g9jk{&-3n)Inshwf6HP1l2U{aA6umYQNBWT5@Ub9 zabvn-;Yk^0|A#a&oFN+q(30VnJYNM`T3KS>cW(77%)5LO{f;+ z(pknvi^|v=G6+q55e^MJBOWjX!jv<#d@>+DX`&c=%?zYb1~uyui=|Ttr@eh;MkQIXpdWQ8{PL2>It_!kmj^XL&<&f03`mvLfE0XKl|Iz{XaxMsPLjyr(nU7bH zUf8$KG;*HW6OXw71%0V$0P-&{fQv~B^>t=mmNN~)6YH4)uPh{p)_l(I3G9#Zkz{5I z_+(L3vIG*Ol%_>#*+cXCb8jq=X){m`Oh$$am()mB?r!7>iU}IaahHUNg29XES`A=8 zUdo7YF=QmKLOJ+2g6#lqOTe9%L(USZ94yD|3Kis&_1q#RJ}=fIQPpHXGP?pV&Y%Ja zlK8D6M~sj09Bg0~8b1RI1WMU_N+Gi)AY5s*Z-%j}oTpt0Ubqaxc6*58D?nJnmQ77qs6M13I2PS{%;Y41vs=MChbfjo2tzORIR7M`;Ox3@3H&lCxS zmWzs19%Cv-2FueKN=vR$ar!_lAO2RhSD6sZlc!zjzg7_J4Uc6gC*6T^Y!_8k(#Ctk z(}2<@OVmRKp61w6sC^Y%Xz^GufVD%WptG^vyyw;LMQd|K>N)#s?#{v|WN6nc zE8NHGAwCsa2DK!AP+@irbZ!k)50u)G3>BM396*mtGfNNEYT&w*e3pMxP5F5XFn|d46gYHUfNgs^wuVK){IvU z5brPMo~-~iRD8QHxqXfJE%?4G%A0{Cr>}X3ssfL#18ozF zRPjOF0CBh429j23e#JPTnZXKa_J`?F=J6{A^3x6<=lO&H%4>CEggvPS)mTPdGOI3P zpOyw4Dl7qfho5%Hsx}D=-?!}GM|8u^yYzIr9nHF<2YTwRJ2`wRKCE|_e?=Yqk#*tg zv>(IgHOiJNS9OH#G(HdMvg^+q9hbPWLYc0$2>O&}!23iSVDlv1c<&x916Z#WOuwoj znW4q;ykCN_(WSHJzjfq(CtQ`Zf^=t~E~)h+zuQ$MG)jNa*^R6GYh{=f)ocE$&M-J> zV?Vb+|4&PR*P8b2cys*O`v?30w!YgH2S5Hp$=F>nB-bsrJ(RxPDaGGF9NL_MXs*yE zxvAox>f%m5f@gTQq`LMLf#4;tn~Xb$B=`XZrn_cwEUzc}@!n@a8dM_$B-$J>=IYo+Sebnf>BlDh92{Atdz8!nlv_#Oghkb}Eq8KRhIH?pA2+4$O$ zi>_licoS2viaafH1KGM(`tk&+#oy_o^TFY~mKfJ@znlAOCm-Keq<7^g1XGihKPEBT z6|oK<|5^z@kqeWj&33C}6B$0W;xdY3;jjkw{)+x_L!Dn!#>I}i&i38;%YU5RGj*S; z{4P*)7s$R(_3=*^EOZiX*t$k0oewB4a@N9oKEpms0&RdZGmNG5cch$A<^a9KY;LAIaE+5&lH`0C z`y8Boirs!HZFVLQfGuCl{{+EtWVGL9Cj$PUm^S-45wNHE-GiaCRVVnio6JRawwV+h z9AN{*=EI0ya2IS;L|D~g>tSyJn0wEXZzJ^k+B`Smq6FKL1mQd}V!965=?py@9n+puE8YY;B!n)YbW)ov+#@Vi&&vL9jOiPjWnf|9oxP=wj0R!6| zsuPs7B7dU7zNzneTL0>Aroo%_#jqVh7=oD30H%Jr#dN)}7YBdaw{D+{_RXGm4ykAC zhGB(w_zMQc~Fk}oFzLm_UKxeOLe8M+hKDzv(q zOZ8jt+VVXTq)P7SenRqvS#HY8{foN?mtM#c>?MB5%<4wvrVMBAmHF} zD2Rgw0sDAhb}#2kUcq!<|K7j7*kQdz{!B<4^zkhOFO(i+%)YEl%jP-Mzb{zk+9)yIpt{pv|94RcQ&RZ3I#+=Z*r2neQ~W+JSa1k`*TSpt8-jx} zy04bie05MbOlAJbg)0kkEdg@TsWpf9bFZ{QuPpBNM%M8eJw%n;0y%kT4?AGt_!`l( z)SfGlm3RK}rHJFRwZ4QI?FUnkxbT_(^pZ5BO!^XIN$5lVi8E3Yll@7 zYUz`k@>v=u?j!&BK!jEGWB(GHT zu$79XduCiE5AX-2Ih^<(t}Q?hrCOI=KNENArFB zt3%q?+)V0%h%Gdv;DTAjx;71By>2G&k0UaSDD3LCI^rHtWJj`> z2>%@^(G%^YsGa;8K(gAka<1I~eDBms8$Q-(PcNo7Vm!PXTOg)Eem; z&P#dIN_M2l)r%B2xYy=*Ql!FeL(M(REpV)}Myvf`g#BMgwWQh~&Z7>3uY*2pOH76a zHR{}OpQ(Eiv4W;}6k+oZw9dRrvZ-zVUF`}hn$yE7W%QBQa@ZCVsRiNrebV{r4{M9) z1o3{lhpripakQrG`Cs*u(hAa04n!N#$&j(hU*gw4MDpxC=g{wd)@ZsEWxX8P z@kCH~C$+`a&K-pdThP^}Wt6toE0c6xO=qJD4{PdwiaL6XM>LiTs22;4o<=K0Eq{%q z<}|Nsv_gX1@YyEcXujX8B9^yLVE+fD(W}0JzKg7296ha~T>FF0XKv*9ad7s$oy$9( zBBy{t>1r?W)e?)#*FnDteb305?svcb2p3$khB{JUy^EO3uBtcQ>R8F{2JdXJo7q3) zUwq3WYf?BZl346A_QF+xjj>jbhiaeo*!EAP(=X<~Tq23gY|YHErw4I-5XqIw0Upg8 z+&6PaL=%0*OY7>nfw6aamj$obTo70F_ryP{-3E}D9atAh7s?dFK_{!zvt`J*7O%$d zVn1}wWR9qDpJAK$V`q7plBIRO9Q`ts_3{H<;+Z@V4OeyaovAk3yv;M$PAbd&@)TN` z6Z>G2b2MJ{3=IU+>?ve4XcZD)z5{60BGh@=$!h|KBi*-IEf?79?mP7f-EhQ_^iO!S zuLy+weFQfNQkl;`dnf52BBo%sKzec+_G+a85)_w0>YxuOfi74DH5bSn05B~X5*Pj# zO6s7jDMRt)9VDX|gI?7P=e$UK)W1vmyIe!>LrG%pMyNXXXgFQIFEP%Vlm(%p!DW(| z0!0k)nOOi_g8zkCAM+()Erq%HHLCA~PBEz`xWe=d0rrxy`Ewfgg-=e-uAaI1SQ!eqfaMXYYy9 zKkh5N*Tly8U@m72d9Z#2w{ZdKV`o+7YyIeZ&75RdXLW&KgEI)x|5fLC5(p9KfkXd) z)Oig>_ekjZsEfB6{@?06yzaB{Z?E4T zjHcp`GPiqd8w$Nqr!BWbue8h2>HW;_X!h9G+A7@ovvcG|-umY=X%07h>Mt zs`K7=KMd`rsa=Y;R~Q}_+ono>CsMBp`(c7FdL>yF5Oc)rzxwKc#(68$*8=#YOkElTK-|9T;po&={roU8nRD31(u-QB{=7|a3|D(<$4?RQX31%oC7RE^) zA39qpx+WJVo4UH#Ypj)iQI9%EW>bB6Q>uk=zy%&vluxC&XyqNN0Z=yBifZ5`Q_0lvU}gPFro+#`S>> zcC}rV$p>mn7@3KEkM@(+uZGoh2o=Cmh>s{mzsAtG2D2aF_>hGAeEVA;5uG*8oPLin zRXM9Q;y}5G{%2pan)=!d4TBA%Su63j>)A*2_}+N{UH|%AC-ffTV(jj+v?zwOd*i#h zkl4>n)e(yY?*@sslONOKzq+k4qSWO6*1IerS;5AfVNa=o}RdaVef*WWehOiaGkXB1g zM%%3gNTr4?PV<#PN$6^tRZ4)N3uDCkNyO=Xwx*WRH`@zd-zV7PCnEUg4;>WVgc!1~ z)?$C+HOuT&{ppM`kXO3O=SPQBOz7G#0dcfmXK5QV5A0G{4E`0aTRb~3*R}mG?^+f1 zVkhlAh-Ffzn=um;4VAx8*9)OQJ^Wevv6G&>IE>vlw`ImpC?cJYcRM`VL=mF!<}MfK zvsvaSin&a;no7(a6>87957}?&r%gbZ48mtTJReqt%t)@bmGPRY49akXG9k6TdSH<% zrw6Cj2;ca;sqawp*;(u}H}w5Vx}K8kX^u*<&r4Gpx7sJ7DEVy%IICd~yt?6O#^9#y z#)@3?KJYfs(UM9}r7z2jlN&ZPB%JoPxb%{aO8|NQ~4|Pyt@=KE@s7=ga82SSDHN`f&Wm_c-Uk`bXB5yoL0~ zj&cc=$N=iXG}-yl2PM_>Ij3rO7!Mf#wUFGI7u z`o^^K-Tx?~Wc>?(lKX0mva@fre-=^?m#d47&Bg~e7or!PHRWUt+c7#aujI?MDUD~0 zbqT`w<6We6LIL5?pQRgND%$>hh+N5`GHSwO)d*K0Zu{r$Ku~ly4GSemPEt}AS4_Su zP@&kuW*Av%3RPKrZ}8A*)bPuk$Crl*4C05xBlbh$*JG0jW&Ev8OO$} zziHY(#=|`Is<8W_&)6PX*Z4pFvHIq9!0lN=P`h>=`+01rYo5H$1NI-#d;P2WaZe4# z(`t>+-M+PftJ)j)7PyQu?Ezoa1Z!kjY-BFBn?QtK@Ujyc8JKp%XvqUBGMnDe7xYJP zX+BvFUY;}z?aGC?1;N9Z_;><(5@>{tM7oRqa$OGP;7(Km)U87Ow`+tx!CrC|Io%htKN{fd$AD_p^2u{(JUhd*{9Lda47c7r5wa! z`TS_v;w>7}U(EA|tHtrKOGm>~BLOvePW%{=0kx@BcjqEg;6$KcEHzExPQ+ow1PC=$ z&VI2M7F~mWurfl;-nbh^y~gQ6?3jD!Marh|QYXG1q{?Cgq+p6?!RH_q_ITVIoGe>e zX>%o|qd79~*9JFdt?IIVGUR{Q=PNH z@i(1kY)`f6Dd$Jd1Q1cc><2Mpo8Kdfx7ovZG&@wcvAp+&@bKd8u_vfR!L9* z*WbsDH@onAeP>RavOxTu2oe^2sc4EWi|IE|0NT*G?Jb1eFT(tiRpO537{0-eBVAtR zQ+4~ylby5h%K*|x&Vm@V_+>trRFnR4y-HuzCfRiM?u}rTK^N9vmh#`%Xf`QTwY%8H z-z~LGzXV=PW?8RsFV`JSes6qq@{}>{-|(lL1`9DalY{r&XkA-PQ2&F#-i^|H^HMi3bGoY46xEbui6?DfbSpx)^f;H)CL{TPA?C3gxX#e~`fAn44I zO3yG0)S*Bi>=YTsULG=8%(XG#^gA)+j`Ir#5%=x6Afdn)0>8LF*aL#*;kh3bnZ6)p~MFHa$ZM4;%`@moAJl6G-D^ash4A<@NDkBrT3<*VfurLd%@)6pjFr?HO zrE(t_C;)>oIM6H>{~AXxgM*%9mGyxShX8E`Hd9=5_L7pwh4J$Wz+ZtBLIcX!M9w1} zY64nHbTAm-fFmu41BHT>wv!N7SkN{OX@OMf01%@|cl*IAc3|3DV#8|kQ6ktlBk9N) zd^DH5SDq|}($?xvFh5TeA|Mj#NEBE_h-LtfI{+68gi3uXkxyz{dg7sUnx=3X{&kwo zk(P!CVNE}X0t1%u2Hy|D-A;oCFM?JE%(05K4oW|~pj2E1i@gRDhyn8GB-RRqu1q4E z43Kq23Fu1@8KeNbNgOdiUPYYZ445M(JxmJ>Dgd*tCW8u6#FW8O9DtZG*fI#n?Ev~a z(###DpA6~48nVCz*#gA&6vhgwa{DuR)}2ImCDbSa~aZ zC`OA4pr;_nMIln;Gm-&|b@1#jE}Bpa1hpkl zV3F`t1`xT9FR%dQ&M1Ypz>ls#D%iw>Q6MJh?P^Av8ecBN=dDsEATA?cml!~u&pt!_GT1D$J#k`ps(m{Zvei7Km6C{!e!hk)3#5|6Yx-v2gwKBm4 zSwx5=N>|{uMJBO*)`<*1JQfFF!NT6j5W<|>^}DbFV8mx8;L&An!N7ZBgu+=tFkcCN zrkt!l7spT<(OibKH=<_a&Wr_Egez!5J;0bUBw;Dhc_Bfo2&2+!qHPyqdvJSf24KLw zcI^1RlIH0Sfl(87a2rI{K)}fZbS37jqH3WCz7=gmGk~Cs27X-wMkIV>RBrqR)x`GI zq}$cBvvs>9)c;^ocUBoWZ$D(lB8k5O(Vf*K{a|*!0)~dVN%lJMY%!?ekpe*@!5@H% zu?FH(0)H!H45~!f7Yl_#3})_j!J8=Y4Fo-wh!0LV^Br}>p~S=uo{Vfl5KKKtqzYnC zg)$B&2sJ zy8vmse0~GLNkb1OD

      WU~RCj2&ug;6E7vXs`>0Xa@+JXU0-j%z+6;7YjK+ z??XlNxMm(NQ22*(4F8+5J_O*b0#mP6`DcptE_*%V&mfttlRCrl25|`k`J$D8%x%ex zpbCcTh0l6XM<@J?Co30+|+18=L+S*u<_*P|zD~=NYe`d>h zeMQ*jTt*@b+y%g#%DCF#exd7lVFEA%JduPjmj_)IEdx-xb$?vS;S>fZ|Dk+sF#tw@ z#qI+f*c?$ZBF-~Vi0gocESNEFP=#O!pI^&r*GwEbD9oE9A`CWQPyIGBB%q(0aZSmi zjMXCP7iDWnM&kCI%a!uuAaMoA)gF?DlxKXnKSx>ec5xhVA}(2=$tsRS1gx#~5iOGd zK7W0Hcgy;IMJXu^#_;0gw{TL}g7Yg%{n0#B>VWP3CwXtsL*jDwj`yv#P>ltm~D`N#T`UQZ|mLr zQSyjCF<`|r?5|bq?+nCr9H8rxCEGVb&6`dwlh;y>yu%03%XKjxfu*z?C*|po)?8j) zG^&a8~YvwVV^Q!;mRbDKp#V_2;S-9V`@W5t4zh=Q;bHV7}g5irr z6>oJH%NMO&LiyP8G&&BaIm79CzJImRzJ*T3wx z)g`|goghoVOMr{d29Vs!e&-(d=5!=1dnK-CB_V$0UCjzsVKvcaHC}f$&0`gpvzpzr znj62GSF@V0uvTcZmZQ5?=CM|gvsT@+RvW)oSF={Hu-<61UZcC-=CR(8v)u<-JePuune)uwQdNw-Qaf-PvTE{9Htx z_=;J|Tl6z5bPM!A=eGy?vS+Jtq293ZGa#tbcg;g?yIs{>2t|CBEZmZ;-mXnnMtQPO zCeV*u0lc0FrcX!#!JTlmZLh{1A99B6Rt zk`sOb>pLVi07(fz+RLNo4*(}Y)<>Qwy@YJ;;X~4X)`u?-iG22qIF&7@I5KYt%Dx@y z3?5`nh2Zsxrc?J}2Fp2X`mH*ELL4x-^u?@}pG<^ME+HxN;5`XjxLlupsuZAO2N`@4 zWQRG%34RqQ*n3WSqr))*os z?5VMbm|?w%38hG0pOS<3*AfuTf-Ih%z+MUQeL8{1`d@Ch-0&O98B&z0>0YMo5jb@J zhaymJ%@1y9vhh5m>Sv`DL(OLaT37((^+lBa>)(Q72>!Dm_C4@8pSTv(XnymJ(#Kof z@Q%1A+;ZxKQ;6!B9V-D^gr*_h&J#h^_d{%26sklZ?R9?Dj|Pqa^~9ZL-q7Vp=<9e@ zBHT|3!e3!Grx1~EMIpZ-_A)p-;Awm-y*l80%>^|$G^3X&`#4fblJL&wk zj}V{lrpo$tko_lhf934OSHC=9C;^Ci2!j{=hV_4YV9Wq&AfiydBs(*4`ur`Zt^*r_ zh?}3Pet(d?;bRI~;e3LcZEALW=zpXl-LTM8Py?7~lh1gOkD~~tzETb) zU}fPJ5^aCPJ9YiBR{;9%$SLybku~rT4G`cCJ}ZYo$XV1bzbhlc6>s`A>1VglF;EnJ zH%EVHc&P0?Y6gQdhXFYvn!l<=XP-x+$>^D+%ePr6!*0>9v4M#k~>31~?3U%`wC|_~~ZecJGTC&3ZVBf9q z7RVi@bnMyAQueJ+dsum<=6(#t-qgSUw$7Buo^tV^t^WHA>LM9U?8&tF;WU+_@ak5b z=YNPT(tXIa?SDR&L_&Q=l=VCR!HP9LuT;&2$l$JjGo$nY)h#Pu=DCk^b(P?JjhOrE(~vw;R{r1)G_cd~f7@C$|{ur~jGvyq+>M8Y^` zi@L?wNKaj2QA5h4#l-Aka)17-_{8d@IYR97q_5vL zRPPbpwzH~E+D7PoPghejw_otxQ0p7$fdc88pHsfwht+)g2zuu)xj{D{zvPF~T8d@8 z3hO9i4UMjJ3dk%;D}t+9?{p$aWMaaLA)3>>3`9Gq>G3k z64~mbfU4wTZXOv4@Jy1x*hfS4FIbcJ2)N;eMa(L`I0Y1Yg7s_lyNV)jjc$SE_<}M1 z+KXg_g@aN0;}rS`c(i3Tj0rCyZ7Rye*$_d(h%e9#$CkM^b#Lp1nFEF;Lp%=AForP# z-LOD=^bFpgTboQ}68cz->+#HivZ3gMFmExgmA_EgkE4^b?mwajXM9kKJ~xh#HmM-CKUONde)m{D9IeD0Z8msq(s)xu@1*`! zd8*PhtXiVRa9zLs48;t1e({#+VT1 z&%q2qKxIK82?g%Eb=_Ri5;trcc`LtIKM25l_xa4+g;f~?CZlX#jgdcg+-3cA`Q|CP z3VE1&IM1?ktZP@nT6D4`ZyC)S!%lnh0g8wggcfmN+gEZ|=V$1P_>mAiCLuQc5i@xE zyHPSh1by`F)<&Ij%d~5brC&m0e^nZm1!L`v1L=*JqlBY;Oe-Ix&>KR04AZVDpBT5J z??--6GOVU)4O2pp> zCS6U%(iBF-nEq^sp~LA}OWobzp#28+V#aG-&5%fT>-t=d`nrE_T<3MLy$)@RD=DyS z%8T0{>BS5*p;2OnWbrgVu2>hhe#DXvJW+OAn*Lt^c0h^0Dn>LkqOlBXM5D*nsK$>a z;$5I{!@jkx3VEB-*KTCv&Ds41Yl~cvQ2zt0-k@}Fuc6$5(6}J3mWZX1!e4U?b ztrSLvOo@z|AVDsOW}}LYWkfZqUgdI#A54%BLzc>dUG_kneCL5s8>j?{MvFn?WT9xg zvl0=ssS6^EWCNubcb05mq2cR<3{@zGb#P<TrkZ~ZS)(ByDL}<(A z|AUz0uln`vQR;kCNDLs z5^*xOJrnVRJRK;$)&^Mjjn=s;;~7gQNQJ*XkgY>y;ZVJ7vc>8Qu|8F-R#x^vfQ{^` z%AFwp9*8;6q3M6T*5||BY`iPtci6hO$fX|0Uw?XdpZrwNJw}K!ek}QeNWSa&ZuQoK zDh*c4{2JG&?>0bhnwZo4C#4sSn1xI4h`e~at^RXGz?=}&BjoQ(QO8eqs;ZtI|D^Uz z2DU*G`_$np6&V_qsxa(5kf$C!AymyWRv{~OH%(lq2eAg#6B2#3R=ny4(RW4MeO#do zt__zPcJ<&k0 zP*E_UC^BStJFhZ78vMGVGchJx2BtE=VCzB4%BmmSlDIm%0F(#<3@Z!ss%UTqCUl0Z zD!XgzwP?_WiPHvavn+z3Ebc2e2qTDo8@OpuDrvw5X_y8wBtyZgwVXSM|JyUdvg(Q3 zZ6ejv^#7FL32y1Ry>HSDz@PgLZS$& zb@K_q3yOt{#2}-$xeBVeIz*umxxOlgKm0#}yStvduWtA(KCB32v@`8c23RZ#;<7_E zsk6?L2-n+&V@NeXBZzQIibzZ|cNhve`-v`ymKIEhZRog)kU=GzNAoMXfzU9jDzUdR zif7QQTI3E?#476hu|M3v@N=|f2&yNP2(f!Ag>;4|Tu6Y7h$zIu|A>$>Eli3!Gqy7< z!$QOc2`q=c>OY^zMuZ4HcH^yYKr>leEvOJk(6Fn8v&K4fuiq;QzLSt5i^9qq2=0Q0 zVj#z9WUX!pFhP_Eos^17G!$FuJy$F&ts1^hWUL4?KN4fBxGRccm_F-hKZYoXDCE8#D=Xp%YRry(;JHH%+5A6ipjLIp}dM#T)2zO23flXm;8xu z(1uWRM2ScTrKFKY1Bx3nh-#=tpTNnYD2EmF2>>++rqsDijK;S-tf^E`#bQ3=!%E}) ziE>*LX($H=Gsdzs%-D-7y$Z#Ipt3A$&Y{REX@oYQV6Sz9OM?K$Yoj-M!-j!F2y-;8 zfB4M5J4{mZ%h)2!qDY1tC5o67K!Z3-Z2&LtD$^LQi9k|>T9^= z+%Kd&iqF)!qzIf0N{FC*x_T7TjFhUyQYuuGO;ABI|BoXqKE%T=^H8O_!C@G?rHBT{ z48b#nP_mRlyrj3Na?!oiKcMiqk$f$d>^li528K+=gDA2Hj0nP_v!N)p_;d>TTnZ9J zQnBobXi$bvJqRm(#PAXd0!@nDOO>Z|R0vcnV_Q(LGpegvRG~<=EECmjLy92lNtEQx zg451lJ;p!#2D{Qlgit={TZ%n324pD3h`>dJI7C3*tnVzncIeNsJc^R6H8eBEMBP!_ z^a&tM#wcA?pwQCK2-d#iL-AyanRK-Wj0j6L3QR?aHEW8|{FKr(2yw7OYO98?o5#kY z!Fo(8VnBw2eJXB4LW#6GhcpQCbSohw&!iAn|DTA4X9&7t71E+2yk9kkj`c%UWV$L- zx(~xQiUq%v#mFr~NuOXvV8e!(O;m~aH~z9&O!c_4Br2jZLT>feqyQ^%{4+&!3QYyL z(UMe~~@6-0HkGpG%U|67d+=lciYEmz;O-OnsRgm^E$^IAQ57JMx$ zk&VlSBv>gkS+0tRG&QRiV5+rpE4XC}tE0GTi(R~gD$zQ#G%JVG z61med-SmsL%pfjjpu^3w2F-%9Lxj7rTCzf9-<}A#9YqJ5jns(PK=zV|zZ%J=SUf;kGFdNLq9<+QF(*6tc(c74L+*_Hp8+89!y)= zGGb?yM%H52e*i7b9SCtq2h<}hZm6|?`>7Ts2kV->q}|NU9j}7GOoPbeSHt9iNCqZF z2xG{rX+Xe@l`LoMhHG%d_OdVQ0xwq6YmBQMBfOhG>{Q{>r_7*6Yk=2H5Qh=wo76Y*r!E)gaAUf)ED))h*HehZQ6T zYh8!hrfdAG?SbH}|4Y8E>*B3QHi%_z#0ne;CABa7a=8W^2>N<2j{C{y1~X=$Gr~&c zL%s%akT1TjWJc_6;w}iT4Ud=$Fp5SBRlZu-ONeFO>+Vhp{c=Rn!ob^V2de(s1M3MC zP=$Cni1gH|J0;p+Yq9^OIJRpnab~_^xUvZ=Q44$A$3_Tk-ofC+Y;AKZVJL>Pinvm& z#q2ygYY6MTHp+s~$=kZET3c&NlLjw)JSZbF9uWO(*BfqaBS8{`pX(9JAm!{~a-f^OUYm`P4o5SEFx8N$&Ol0)&xCV2e znCrZg?fp_M|9<9eqwwKV0pfx9FZ&usM5AL;#NM@H(0?!n!^$#aI|yT_)5~5fBOLHP zb+T;xhp)t{s3>%zP|~{oiGZFrXFM*_u86F1@uP^?W2;5-WH)w0J^Q9_pO8@|2e5p8 z#4qoO07Gw`PBrd=Zr&}5PAhe=&Mv-gbfW;}2kGeBB?|sht@k1a%oME*{)cVo21uPo z$Q2C>JT1O6FH|pxXci({(N|0}M9GTt2&d;Jgtk9_Dy2)hDr4Cfm$bvI+9t~?89T8# z=MJs)U5Oa=;Wor;EE8fMo#9pCS=*e=3>tEpUCN6Z$y_) z2un4=|0>^(t1b#G1@8udc7wQUXUXeG_u94U zgRs|(AJzU2u!P5Tr+{@?$1c_aZ;9uO;N7$q$kCHvww z#AKtsOCJp?BntW+3fxTydJV9?y0zQmaUox`wqFXgw|1adeIUoJ7(qR=r+D&42#Vj= z|JSFJH8+(u{|As4@*m5~MjbJ>GI^cHtm%*EdhbZcLUaBCBMcBelGcL43K4R3u{j)X`WJPTPokiOz@Y%m-(WU_%`b_9RX)_NF0}AwCv}yyjLGwA#nLukj2~LBm z^&i%1&Xh%ChP5ogVguEtT-GwHK%M`p{^Q0?+{A+rN17`qFz-cV0|jG@hSjRT|E(7d zzr`q5qhFSL1&XxTPGeC~z)aG>YW zt9Or7$NM+%-xV(Wt8kLVNLCrYAy$di88)|A-A2RK)7i9P|FkdbI#4R~mEWuhWPVT? zSb~RxkHkii?!U(<%?Vr>k=y2SN||lXj*P89-eCk_G32eq-g*=nIMQYfrsUZ|_BnLW zWwrfd;ba7f^UsF2ohA@Y0&!$fh^vjr9*QYqlp#j05hP(qE5WE@XgGmn8jU&XNTW$D z2{;u>3obRyQZ;cUkTkRNO2`5mwLuxZ_3e{nL$Z|F-=zqebbM z(^*~EFe433+JWWPKgbYs5`nwXB^6v(#aA5sJ;MdNtXW_AP-Hdsow9t3AfY{>o;Z4Z%}VNif1}{xg%p z(zq9`M%qkU(KqH9XpOFsQh5-0+iX*wc@$ClqD5>Pg^ZghBlA>Y|8M?Nj5Eycrr1_; zK}-^%lK~6tLF<6a^FNi1oG;NA;h0*YJ5yU`(7tk6;Xi^N6i+-D9X)Tl82MH-*T5k+ zl0jW@bfQM4u9vYz?!`*wFsKfsEK21(=AL=yge;IUH)9Gd-V1Vb&6g2*h|xObklB@X zO1iln<4OkA-C_ko^%;Qhg*Q3ea1kV5WZ1TI^-1qiv=`78iH?`2ja7rQ)@!{F70KZ)Cp$_U~(mhlfG z3nEYEGE$8Jrlf@v5eL*nb{lehjx+5*N9@KFHQ!mp9S$>=y08mRu`Pq zVI+{WxnW8;*p736Yan7Y$QnCIA@~)JQi*I@Mc&~<|Bsl9hKaJpNRIcz9qvnc{}6%= zl2?(dZH!9U1I<7X_772cBpZ3*1`)eK4lo5S8`sz#syw2%gWT;gcgxG&)U_dry)9-t zvc_31!XJWgqhjWG;h+v85_I4Q9utxVGggMO?GVFF#F*1X=y(vttS65n(Up9tXP1G5 z%rp=b+&{KP5OP379qCAiEVV@u-}vT`6;X#eD2fhLMpPZLjOaTgy32!b@-vkw2R$#i zLW@|`TM&(CJ1ojAbwp-_8Jb~4FO-gUOj31w@u)$PdQ_o`sZc~!R7=klRS#iuAjjy! zO0$X)7AS!w!HsZ$M6CzWM!o7a6}@JI zIk~xr>qhjx9O{v1$rdnQ0X~{+!A$M8Y6mTZF5h%WQ}-3zcdb7Ub4F* zaZxli>OjqNUEJGIPdBJ1f$d2vlTsRnrlY^5wd!yaWGo*9w4kksFLFujuJy7a!pw&Q zgPN$yB#pim8SxiA`j0QBcQn&{|1U{$W0!0glxy3hNDFi8vdFUJDKT4yIXjEsiLIoC zsL^z9c0*f~h(oU%a-F4?eL*F=xZnjp={sZ#e3vB8h&=F(LmT359D*|9s$8|*K$jz_-EhrqD>4x|KRF`aX6u)F zQsR}m=E2*o$bX)}N0s~wk0>$hZo-_A4u#s&2dQf7QgmueVW_F8fk;)iUU23Fx1T%-3z|Fn_uEfVAz3SNnu%sF(6Foq?MGJ2%eo|3KWH{c|Jaz%jJ zK|x={An3@9O*s?mgV*|`Rfm^qe$U8^%ue{KR}J4)0yy9#Um#kx$d&tkuIFQ)QbsQI>fGnr(IIhULmYM|FoFGY4sVphzihqcI#JXUr>Dm9 z7Ri5NP{gq?#Q-J?MhJs~NX|;ATTE#L_Q@DUh+U4fp2dOEXBZhvRgfa7gz()1rm&U= zrUa1*-&@R%CglY+@W%U<20<)e$DzdENnfNio3jZ-;N{L+Oh)(x#lrL;W7Ws#po0W< z5OZ`xHgE&p=|npT|AaSWgWdTbc%9oaQH1AFR%1BYRgf5#Aea;)Q;UcocBKUBO%%Rh zV8!j8EQR1m$b-Y-iW!z5`JKdwxL^yeAf$W{-pOF`oSa7Rn2O=xJ)p+Wtb;k&$23rh zTZkA-5rot@5vP+^og8~JJ4q8wV{5CsG6g@j;W$hZe!03>G^kwCo4@|i>YQ*P|iA24_ z@1|ioAPclh^RldbClpASOTF24hG+fEbkOmf}#Cl9iptaXP zWX%KSn~wOUK@`hRp#9kVvM%YJf%uYIJ;A#P%k8O=-j3LNH z+r5d=HU0 z|0F@28hi`|g-$3s(u9+G2UTLk=UHfaY*u0j1vbzTKf2^KlxH2uL_v~-IkCl7ID@Gi zP{tGtOE^?itsQC=++O5ma4=(x>LHBC64?PBuDsG3vC9bl)=5DGIna}7#70tC#9U&^ zjgEwv4g^m2sE+I;MVJIh4p*OI1fW2~HE~uQInR%z156zRexajx^aN12iFHuPGjwS& zB@=e226T)bMwA$OXb}`z1mN(;R;nhjl7uiQhBd%RSRRCzj0eZW2WxZ)i-gIp4Ma++ z!#!}+JtS4A*=bJ#n?(d!idw{}hDKekl6GcaODu#WrR4A3U`nJzJS0`sR1NT)|5vzq z9Ynp7yRy-?-c&`D78#yIqpF4-l7>etfn-uDq*x|JkR0wI#B6L$gw#-kuuHH0gmwT( z0S%x*01K2MoTug^|xCM1ogkrpEC(0^V$cM84|4>GVC9>Yi z0-~7xX1Z?WkqOMWc`PQQE6AGYL-%jS|Dy#h#AMxTRCupIh*dk%z)a;d)Xy^T2}?;d zl$bX7=7?mCH!w$sXxG1ahByS6)7DmeUT;M-*FC7=??q?SCR`79|0u;BS+;mB?re?N z))tEp=eb@8)yzY@5=1_LFC%`^Y52@jrGrYfTA5s&+y?BjO=|n1h^1O&LD=M8^v;IR z+fyuVoD^WR91KB}m|7rUM*MGA_%RPo!^wIs0JSDd9Ib}n;)Yxc(B%h3I7~(qps^gp zg#NJ)x`kR4P%+?1H6ZfpqHjxps7W%TO58)NrD1T$Lpw+@j=jSwZ>vdp#ygNhi&-mm z?VAr_--~$#@L^2OV+Ga$#rZJ|x zFE+1+!tMs>*w-?VM**qn{{{#)pe7W3Llp5Ks5Z_(7{fpC|M4k4MNb%pVH5=qR_Q^2 zt^wgA_8devc*CW@=^vHHBc|p#YJ^}&vPKN@pD~CIeFQEJM3NO}ej(#(Xt9n|2uQL^ z8(v7lK_v8Y>&lUouO(G&s1!>6Mo`8M)z||}1J6J}vk&`LQ0@}nvF|qTv`YMKN=S$( z3DV4-V&^Rbl_0}9SC1T_jCVxVGuY=oqi`T2a8N)Urp)g~I21c^Q#zQ(7_v-mqGP+| zF?*yH{b59x0pqNJMQmFS727N zlj-daEuRhWG^c2DW;O;%Y6ZMi1W-V!hn0=YfORxD|HWqSgg$@9uCfNTw`@1X z2WfXuJKP*BZ5z@CEmL4bYEw23LZN}M#ofdt&s{|GT^fcq7pU#Vw=!>N+;(cj^(>M! zZ@`0g#sjF)^gm=VMaTnZIyaYOgDpq_k6wghb9hU1^A8Nf$wk$nGEIDj6P8|f;(+x* zAVq0!_E8vxP!I)q@FT>OoOHTRJEkpE0d%){aQO5 zP;{lgoCHG?>yMAbHROjhh0A=KB!mk@i$3u`?87~RfD61rV5@CKkYsCL zM2D5BxCbjn9AZ~k1C>Y#^(cBq97fC*|E-beiCo}C;4nyD+W*lgy}{cw@T>rTcn^s(D_YL`*UN&3?Kn}l;|=%hGh=~K}zzmEVNQP(Z+;_dFOje z3{a#+S~AE*C!6YHe6mK!8C$8@sbDT=kx^=}Viqlff#{h)jJo0C?ckV0UZjreu#5LD z8MMhXMp(RUYs5+AgKWL^t&uqhJ|wQt{XpowH774Y2#;ZlZxZWghKNK2X(UEKea|WB zK~O`qvqv&0o6M(%ofE_>;LPgy|IE^qL&!u6D=rS83&fmUSXg7j%3$I50EN@>AG;qk zvsMH%D8pDt%N_l*Tp%Hl56-=x*{aM$my#@~!cFK$GCj`)G;9UsUc{u4hity~`S!L( z$ism{KT7Z=nWJ3CV?SF`uRPRZ2=e`xhep+DwDg|@o724qmVYBvq)I$L<9i`HJ<4^} zZE!sPQPk?w>hp|Dp**sPNx3hX05$j94t9!-vlvF0&{QBSwYT zoPiYi?_0uu*dC^2SWe|XW!92KOQx{eznU!tX2bcA+_i4p$SLIZQD8!5|3V6Mwv#Et zVJU0YG|3R!!=(>dHvI=w|0O|!4An7g$8es)eE-hwOe-*~Je*-u!u|J7p1pEijNcl!liRA8}x%S^gTDTJIO zjkAZ&q3o`?0F$RNrsP>Lw0i_oNJ5n^>@2ax@F~qh20u*ctj63?sYHRsQt7~*I3rIo z@krAt#2HoMfW{kf{~XPQ4-dSisS@Q;XPtlI`HHsQ!r@4vVTAjKIBbCP=%3;?YA8vZ zriuooky`Stz?MwXCZwZ|nrXo36gp@x^vIFXyJ&{O=BShSV@OM4rWpo0z%(jG8~>JJ zDo}=M0&OSsRB{o+zaA7V!@)$ur@|ZsYP6+E1EaK3hW4TH(UekzM^nHQZ3>-INA-}J zy-rKj)mI-PK`Yg8G7=|56*>{cU58X?Hv1mB5*uuyk@BNGQ`)GwXq<5fBjlc8ZXq=l z(y~4^fyIeCg|snBI_&*dUIhXYViN_5r&btK;#Z&*H66i>|Vo2ar<(i&_uTIyMxic=`5Y7ydYs*solI$JL7 zREgZ)j;f9!0oNQkC7lq>Od65t{Kr^%FZ#>aWu8vyXmH&;G$?agGx?l=1*&l3e+E8z zW4|m;>7BegWoY5YB+PrSyZ^!mae)S=tM7ka-YasgVtc4^(r~5hz{^$c-1E=>YLzKk zTbleITbXLdotXbgr{^>Ux-x8Q)ckoRaLRTFxrM~0*LV83J+q~3x2?~3EopzqzI;_; zvm4g5|L(@c6^D|Bz4_v$bJ&f5b7;SMkur9`rIt#_{BD(RzW9_(R!JSYDRpZxw;axt zA&UnWys5=^dR(DKKXowwS%^jh3tZp^7&(u1EMi)5M~dw6kRh=Sb+AfD1^v>tmS|8@ z9Mp=9Ko>&K?8q*u&lw7o+XKgBrzX0s&YgB zJOmp>%MVf*qK)fdNhM2B6S5w1!z4B@DD7j2i>A>HIB6*)`AUvJil(HLJY^Vpn$j8l z0+MfJMohq^SXiv z#2lw19OUFO9@?<1^+sD^TwGPU3dM4Atw7T2x_ zwv@=x8{RNfZr9u&ns4GdC%FdY*qa9tDUnV0l9s}>;~0A<5a2xJOV&YQcS=L8Yt)e;T*)9g|G1$j zIDJGrVPl9!%2>voQ0XBhu?n&N;gg~I1Z0`f%2+ztlt&3vM1I4`A0=6#vCuCci)l>Y z#EK(?N{lIR1>{2x`4GEus&9gvOFkr|(7liqCn++arb4Ml4eG>{+8m8GeZ&wec$Bi9 zVI^R;#mj-P=%IC!D2T?Aj!|x_nmeKCOmB*kXeDbJ%>1QPnliO)6_Xnr1*$f_vlV?A zrZtXb$TXM-#wDGTNxBImQ>@jEY@|ydZ&ZnMcaose5LPP(%O7Fgs=vcfhPwCjZ2ijW zmV7>>y9{~9J*eA{&eX3_joiyc{{dfec;$2R+=*>N6j`m{mmwgm?0+9Z|H8-o)N&kC z$jik0kHVPa8>dalOVd})a;(F_3JHfyd6(0_RB2Ale8@MoMUrbERWtTg$z-6L67)=? z9McE~M#x9aL80-t!rjTyv=j~X@XNQZbnpL0vzW8!Wngpl%cJsgnFalrfLifKSziTM zfkbeDp_Ok~M`hxUt_sAK1@M;@0!zx2mYx#KSbRTA(78P7r?vSCu-ZIRmQ*;t7$&fW zQ}T?Srex0osjXIU3o?*BFFY+-k#D(EC2L?!r^Gm?laA;Y<@Q)0L^Ug=5I0`BIwo)e zH8M^p^p}QRhRKG3t6lS&D)@eRDCPmoszzlf{(_m-e_|`qysG-@rWL1UZA6+9-w3E#VoM04jfQRPL?d5!7Nxnw1Mn;EHcgq`)=l&rzGx7q zNjgQwvaN{_ZX^}jaO^o9|B+&Ir>c>OObojP(kb;aWa*(PFN8!?YJF}OWlWY3CT;n# zlI=uM`h7??W_{mO+2Vr)r>uZ?@(Rw8*|zY#%RT54uyPP2|109k_>o%TU~ZVhs6=dt zKs0hSocj)(#hj*1B(9R+y1J--L65ES<(!{BBP4^W(o=9FK8F*Q8;Ho?t(ME z;qJc3n#!TUQsU0~P9>zI8n$KdaAJre?k}9{2Q{buGE8k4!Z!lNdWvJ??oTDWZPJ=+ zlnO(ROb_;4sgT}{=~|-cE^xXiurHW`tYl9mR8L@-;*eNRB><=;R;?vCM^i+QGV(A+ zSkU;2FEj@5KuX1=P^zAokXjA`=eWb<9>U+S4_+8TK8gh)oS`G4VL9~7BbFiNih_7# zBgAmRMfMQ6nh=~ykv|S1AyV-#*yA6t3G~oKo7PYcrwa{3$dD+*^_q++4A8SwVl5o7 zCEBp*aH2yTFaz<1fiOiK7Q`)dB}G)I51Rtk|1_#4{_jI5&A+4(bkI&Twn2`>A#=P+ zk0J*hhC)qDu0XWm?oy(ua3VQEf{TztwF1RIa11GQXBnVyC)km*GKl4NqNn1q2@$R( z)c%o6L;g_4R(`MX9s{yu=2iZ1 z8&L-Nn&PL{M~-rfA(GI2-XTTQ!AKCrc3>wV?Bgp3Oyf}E8-_(%%!gSlaZ8@XS)wIN zda!d)1siCm&whzCtf46PP07wsCCWk{{|06zC9o_2Q8Fb5>KFT`U`FG- zBo)r%kWK{NHCGd(jVV-g=aWFGKg9?GI8TPHOu#~fm#*G^^>KV$`& zayC=K1(|{+@Jp!jQXGb=%MPqA=I0S3>%<=!LPj*h8%U-Llk71N$Z+lfFa-i9-?K6LK{1)aJ(q4R z4k>?xOd%8}7?%-5TJOAQa2MI)kp?qF;3_oX4JTugA1E>>i3AMeAsU0iU)lj3BxHI- z$lm~C)=I^(;wD5|L*Quhzm~EZ|B(|qxP#}Iq8q?bArb@~&Y>KB?PqAG@T>e zDUF8ZM^B<7D34i;2Rh1fE&DHhw1N>shBHcx{+_bhOz|Xm^zfh}NxMYSU=-*|$^$p8 zH1=vHa($ z&>ry3sMJR405yzYqmczR4R%?;H_APW~fLron2E zMkUGt5f!f`w!g@#}iT*ANLT|0WYaLj$hba6$h8FjvwqG!sq3a10p}Bn^YG7G@T4Voe`n zTPcGy6{0L6s4V889VS#TqR~PR%O@=Z9h|gtFbLo%&FkOD1mi;5i=fVe z_3*(W8NxmDN;A84Bqfjy_re%wq(Ueu_t5o^j!qz!PW86cFn1yzFi9TV;ej$nbp!%7 zLMt6ENMH4JGUQL2|6sG<{sL@dlOX^$JkTR>5ti0$(=on5C$z(>9IvW^O@~lo74@+= zFv7J&jyd7OMP_4%rlwweBT0%VUIt|>1tMO;VN8q$t3VN`f-4)gMf6I^Nr9rbLWYQr zBJya0J5rV=tYUYgVrOiEJBBj`eU2PbjP%@RS}6nd4r3oE5+9bXCRI`)vi3dE6(=gv zk-RXjnxYF!199%5G6&PG_Q7LB<;*B2FGKLZ9M^F#W2i#IP!G2c54Jq~OrCTrJyed; zu%R1}#Uvu_a-D?mPB&I9%%);zHe%=`e1qnO;Tf1jI9dyw^z1#Rh`_3;AfYrb-)}tN zuZpB6^!&~}|60*T`_CG*q1h5oAb58K`FDi3v`cfXX$j~Z1mghT5HLa0BLjys!BA_% zP+j*yBgt!PyVtw;Caw$$$Q*Mt&LSA)R3O@La3UyI&L{7GZS$ni8nAMVZcY{JyB`htwJ_|BOq$SKXCESxDEi-WD zb1(S8uAYq4%$1^^SS!>a(~_=QS<+i~LS1ip$~-1!JVsY~MVE+qjt+~2S5AZaHakHF zRkndV{{*%vd;%};7maB|VNZ@B#Nk63Szi!kwi3@i>SZa&=r>N6oFEZips69|@i>yh zS(ZaM9L-6N3ploCKB9rlibsXhXIp;C^GJ{cQ!a*$R(b@Qe{c39+QWLl1v|Fml2bw( zz|xQX_R4`#uuN*^%(=dEblAkwVQvA zO~N?mRPiCmXc~<0F|I-_t?Fc@B*%KA5*wnNm&t|8Cp7Y9d0=N9*HJt&13WTg92v`z z|22*j=~9-yfrAy|oAAq&G6Y_=3oxd5)8I2(t@otEbqwx zsJNF?VkIjR>(HS@BC3jv`LsJ3r-c%Jml-g)svDl!M`HUQo>?GfySCeiw$i1%pn+|9@5E z-UGi;9H~3}w=cs@q(C8rzy@lhxnD(%wY29B1RKiX#1#UANwFoUYX7t%P>xHF`_C<( z=I%b$0G8j7cFx-KY`w{8~1 zq=k4fJwtx@qP%dCKUHFZ@`h>+#@$Mp!3z*DBqVz;!#xcYlia}^)?u_CxhoXHNKnT$ z#h6A8WE;2vw{g39RN|pIwDUSIoe7T`vVj`j2-dCv)^sApN}afIg1M8sC7zqcRRRMZ z1Dg%Qs9c0Y|E|WYRC%g2G#;@^I@U-_cA;NYf+aYa)I}QB+b^0tT!ux1|NpwSb`IKi zu2InincI(_<={02lTg>WFUS0bbda>fHP>ba-Im!5(;TZ5bjS=CDnjIL&h8 zLh?y~L_<#f!5=nL(5WkOG$Y_|yfaiu#rJ~4T@hEnuEX2NaC1Ad$b`qY{2_eA+o*vV zlz}={g&L>OI&fJ-+5^;N<|CLX#ag027H8m>pI ztM=D;&q^Rn6ENu$FcJxW((H!<=sHnzPjFme;y|-|IW60RpOQXDkVUW zeOHJ)PQ{g|p^UdiX1KxA4WsZ8|0M*%7^DI68NwJ8g7SOYP>umKw&56LVlRkZC3ryP zKd05%C!4g%$8X(i#0bw;|2LRK$ce&%wa0;ZTv>cP*)>*$-I0h8v9z>(E2IJ1Pn;Wg z9Q8+K5!;(PMp#h2`zNK~3?Viu7UbYDq{xvZOPV~1GNsCrE>NZ`|H+NqziuhHk&L!d<*>*KL#2K5DXrYJZqkHOv=*+QwTL)F4rQpV+CQx#wVh}%te9!d87V+~wsJ@d~q(nvGSf($y?|KNh2HJH;k5m{IehW}^?pluO( zXp%eyy`$GWdTAC>XRnD!Qec;<_|H8ovep-i@cd&Bj*e9%**))sG~-Gt{#a0uA}Ll` zcrYHB7HX-<2W3SUMd{HsBgIEjF(DP>&@%rx`i(UlPa=aCdG z2$2JocHW66MJ)V<8%0yH7m{;txoO-$>I8@q%2BCikD=P9!*=(VApa+|B{m^(ikJS=b!}QNaY$@5KVt_vyDpG zC^J<>4rvM9b=I|6Q8Mw`S`|wA7DQck`JMzPx&|L?ns?)6W95SIBs$YJ;#m1l zfNoZUVWI!@+wa|*Et50F5ot5@quiiF|C3Cv{o@YMF=d0>I5Nq!@yQ-}RaH3O*iMm! zq#Ib!>O!epQLD=tFAdx~nbfamz>@@*Hzfh3dPLDyR3edRle9HO-G>xduqnP)HDVN9 zU(vBJZtqdoA$>0r{L-$3^=TvVGmk#_lnrj;rfowLo6rS-1=)t>a*_-ySp#1YfmlHV zXA)FN@JntA2{1--L6bNzBntDN2k%s#zX0z)*Px4YVpR~NG|(dhs)#nCVGU=zForXf zAq-KKpnv!TLDOhn3mNr|m^8{m?Pv!%%3-09WsFA=8OO!(Pe}60pU-n0j#P~%XenH<96E~%6Y~v!7vqm=BMY(@uGA)vfNETB9L6OkQZuC-y zFeu_BdWDiAs~ibLyfTFq6yygVtR=$sRFV;}f{L}Gh*oeyke%GkCpkMwzcA+!XV|BO zPWeYFok_QlR0D|xfs{FX)2EOK@gL$y$K%Mc4&kM&Ak9l7enhgdxUdl=#sO6{nfIk{ zh>DyP#0d^ZH=adBgm@Hr9JNG(8u;B~H0&FRh=P?zXmQLV&q}CDek49XQUo<(GYQ%P zd9eIN#7SlAC_nax4{zb)|BfCZM?!gdFf0i~H~;93MU-(7w%IBr2`ov$?o^CuWY9D_ zy`V#ifCF0!^(t zt&sfDTU}F8{c=L2cRXtyQ2PgEBT`vCnxrs(@yqu1QBnJeq>!5_s7m-k+CmaEBKn|c z*~r$~vfYRzXVsZZxAGQz76ePxfQD6_p`~TuP`Cvlt}};cp+4&dGRplE4HdRDWh{9r?WI$}Brbxcwn#}ljSVSX@UnoqGLXv2Zmib3M z4r;X!BeWp#SWSsZEVUhlD>NnvZH6W45&2=1B#JSu`$D3a{OS0$1@UNW>7fsJj3!4B zNhfXXw8=MxX>ci$7$6}cr78xZDYCqiv=>h?Y~Wo>8j|vzv?To1??2pjr*h&X z%_)iEN<=l4c{-S_5)RR4h^1+Y_~Rez29ii3T_j+!2%^^Wh>HKQ8h7}YBrKXSO4{ua z7w=`FoEDF_C~Cit^1~jZnTI=wjH9NR6yJGDt4-bMk-Jr6+27IWTzyTFyY&F%B;Smc zDKY?2K(4<7(^Lf+Vy4J5UQQJpT9ur*KFL;>@jR^{x*UD_RfPZH$bYz|)fCy-OUUs! zx-jh7A@OscQ~#nLp)wsjOS()UL5t&emt;xuz%;O!Na=#?+n^~CcuF{Jc9Rr*C96H8 zsO=FCc*Nsrk@?^ORr1Lt`t!{hN1{95`unnGL#_eJ>dWN@j7ccv|> z-2Lur*_hEq34)T161Y*xi`f?m716Ppv!c{Bc{FlGf)8c3*#S5!vJ$ zHh~+jwi2HN4PX)t%OGp$(n>>hPh7DA9Kmbhr-ORZZEZDEo-sEw2qn$7Ti>8LkF+sO zqlCdDBJJ=iv{yBrHxl;OG4kPee}*gQ(iGcgOx}TC#MpQ$R18+PtNr~ccO_xgbw8rbRw}1AZS@l6L!yXbo?be=%6xL zNdHc077fRCXtJnV09X;MClU?f6K+Kjf<_XSXA;43EEvUy-;r3phgp`j7>l8AIT1*U z4@ifL9PW123NV8lhK@e_;;xMGnzdZ>%PCKo=}Cau4co5AEO> zC60xZf>HLAge z{6-OFgN>Vp5*USWbm(GDSuJgJX%$h94(Vo(1S01WQBqvpQuGSlsEyI9)#!-@K+E)caa>!7|^GY=^%V{r&&YC z7$l{OX;E{emnUEN4d!rH--L$fhLh<=5js{hB0-a8Vn1&b-M8o(!391}JCg_sq=7}02dBx4fK1DPYyLP`1;6!IKk zR1uZuDjAnOongeFqvqJ0NVV`-1vRd|akRQ^a3 z#Wasv0znP|95sp(XW5>WgAU!aoe%kq_4b4wnqRYHM28_6Vdojx5dRL=uq$aMj2_gI zM<^2fv`*w8BJ=PgMpC7YRuTN8pAPC7N^?je@o*kNo?rDO%lM{`7F#8;jiBKq$=W`o zL5-aWoALH5f$@qXmJS~y8yk8TC@7f}(G8nqf(6kV*tSWQBPIZoWC+uVJGfI6#C<9O zqmqg+bIDF_E##s|Jw{>t?etJ8W31-a7zEswnH_X0znWQXAPdi zsV+wqa{~;YiYmZE6WtUWnkRJcPA2K@)^? zEvZb&^h4O@HVC_)-?3x*`Jbg_Z~6HT^UyTu5E!glvnpYSNXcVjW16egW1}`|AB7|O zvv4Hgv!oezLvt8(x;l5&4XER>=`s`7u&%-AuDJ!inuIr4SrFIowh9pu)bWFK)3FiZ z48jl%r*ys%Aq>m_ztNSV0|5+zn-CF^ueF3jzyJ{$^#6hd(V}_VYyDbAL_xAo0Yl6% zu+C5o)!Aq?4 zNnp}j@TF9SixQ}!4DPJ2E4)D6qFF zPC+qPQWhj<#~Jde-ynOjNvc2MpwHW3A<>}vKo9t%KXE8g@WUdb(LIiFV|w8Z>`V$NOgEh=bP_j;E-)=CZgFURYyU=Vgg$zK4=amd{E&@gdYL^o&D%50Ndjtr zG>6mDyCfD5im^50j1Qg`HXHR(s5Y!QVh=fj4-6NxXQQ+AAlUSvYQu-Li&20^HgvXO zr)&%|2V@ghU5|0K3{_FtcpP#C?4B4@5gEh`giH_~O%bBaT#gJSe!L~`#1$<-139pq zCT&Z5TM;neCk93mTESG$qp29jTX%dap5Z0L;m{#*O{16&DmZZv$uWKTBqNB9G(joq zN)-5^VCqqp>$w@q1UJLno>CY`)C}Gxkz>z%Zrc-DHO3G7&~BtQ5Bp#(WJ3}4kcT6J z%sBE7iBuxFODyW06INUh@SqQT9sl6)jT(Gm4{I0C6yX>EzTiPt53{Ak9w8a+(1A$o zA&-OM+yt=|;iqo=gH$aPtMXSOfkQ#~oD{Jf-vMQj7$x^>K{)l|@r5tI!5wZ1+d|c^ zbqI2Br{9KjHu*r;Tcfk`bLO@C867ne{!md}Lt0wg88DI$mod%5st*&G z67o$C4?cYQun*SCS|R}t@{J?)KxA+i5Am?qa!1&=YoX3sn-Ni`8eXvhEe;_AAe5sa z*g(~^#C+5=%H0ujjQoBznBG0Zre6B(q5DrpR8yJY`WI3&GYDg6;Qo;I8u5iuYH z8NxQ7M7D+eU>+glr?P$W=)MEuMLb7E^odq4Aw1C+8!u6c9C?3sF|N)X5%^(xqk;_B z@C+CN)79{?RB}(RP7$CN5OA(mtuGRn_U8wXG z(SHA>Y>|x95yZh@6915%XJlC~8-^&G1z~^w{PB2|S20Y(!l5(q0v9bW5`snF*b_hY zX-Fzz@24@XSBh%ZdZq}9yUhnSFh=P6aGC{C@ZAy-dI1k|2X}jY=y0whkAC=jt@w!q z5B4w*aM#y~A9pAw;r#4=6=8pOVH>^?ddn2Y&S2}*SrYWpwFuKn?rsvvB`7gd5Hp`R zpDkBd(hv-BPj!ofL?7EFG3=GI`p`ol45Wx8?n#4I3=Y)3F^c**!SzbM64M9r){PCT z=e-GuGF(OC*f89W+|eq54#ddq)XF^rr-1UqQOLWdcE~;zRW>J58u>8ylIfARL< z4)_2M{Qwa5`v2kkR}h}Qc=*=Ab7!w%LU;xL#X~p|UqW~E{?S_}abml8=p>5#*U_WI zZvV)gWLYp8H*5c@{fpW1A2V#ua{gOZ&{{E@L0KA;_OGZ=q&9&Gb*40_M`br9V*59( zpfamer2+jH?deypUxi5n=G9svBm!)Cw0~o@6(kelcw`%&L%o?pjH0k){PrBswb(YmT2`KYo8Lm zUcPI#CNre2C7!!WP@->%`A)u*CzqeT<1P2Ky!UVUa*6!-wX9bV-#ohh>>kI5uX#at z|J=okXaCP0^n&{EMGQZ2e8G4V|G~3I-+aRO@!*kv@2*`zlO*EIrj?%J=AUdxGwdtN z8gr&6yrRL)F3XUDkf*1ZF-9(6qAI8;5T%iZnQ5Xqs;6aUqwODHE_}+vraVMTCTa@m zYnCZeh)ahV;ws2T4ptO$NFs|Y$c4F-Sum-<{?Vo{p$vm&!Eab9#;a(Gu}qj~gt3N8 zxy%wOLAo@XOPvDg;-(yro=HtbWS&~ENsm-CvLM(t6zV9Wf)eK+bpU1VpW=doPM+q9 zYwo*(mcyqXkMvQlCGD)^2R%s(n$D(qHkD|gg8JFVpM5;NiywUUktaUk; zBL903a_CiufWxODcXqwioq2eT2P9(SYtPJ8WCVa*3v{E*tBv zYM(;!7oe8;WlxWm0%pQ;Pa^6y5Am$(Bs=kHs=~P}oAIBuJYvQcDSC)OD823!cwmB0 zBB5ZPpbYB3f3|73;cu3d>BYJfKB>xrlr1pL&AvKkK+g&y$urH6b<$nfbSp^ZlmB58 zVFvADnKy~vsd=t^fcq-b=%n-1)Rut$M>?T0%@op;_JLGXxsWcXQi+Q5FFbdu9ti%9z+qnr#bSxE_*zytroAHb_OiyKbFujStw_l&BkGmV(QD9zbad%vj2jX z0m?B9>;B3^Vp&L2qm@h4Sx@&Rd`VdGinS6?yG zTG;;t@E`v%i9PVQyZohtYUr?8d%nUj1VylJNf`{rtaPn;t!Q0*vWYbGR3~@|30>&o zU`x6r4PpEPE9;uZx>OV|ggM3;$3U0En5Dvk@QVjQ0iEf5_`{O~>??c$qW?Ekm${iF zu^`S+MiZHM62jqSV|3xzNLXUKkg+6-B>B^ySOS|bzD6Q1TTuz^G8o_qjCxNI&Kmzw zzVvvcAIaff(US9(edsJ7``Cv*B=x<1EX^P5Ye^uL)(@x+WNYN<8vf8$Hms3nYxS8( zbMld>c-+HmRqIGQrp7k6nF%zS$)ab>p{%(~&?bD7kXIV>k75AjK{kmZP$Ni2Kef?~^2&f- zGax+nr_x@rhavX3pG#dD56=8YfeJ*2J4j-)lb{k>=b_SLK3S}Wb-VE)W{|iZ{=0Aks z7m0)uDKQz$lDuJ1IaLE1-jqz>k|Nl-aLk-A>qZvSA(D*=)gxe>${5L5kju6tvtlfY zHB!T;G`^-LW<1F>I4F*86xE70K`5bu^G2k&(Ic;#X!t7HKL1S#2_N}zBSrAx$DxTT zkV(0t&ipYQhfb0_@+sRyuof#^X~ZKDi4Q~Ev5xDutsUri>~`5%5OOS*CFkHqQB8AH zxh$zKetQs#24|C|FhdxPI|=gYgqy6!)o{v~&cS`QFf);+2`u3mY?;5=&;nmi$U2$VnB{Nkr1xf)uAvNG6|e7?tFS=z~!my{%1SVvDw z{O5FZgENp_ZN^R_4&Ko0AKkb{in)bB#v}!q`3;LPT*HikBBhp4l*p!qJePI-!-X3R zbzVc*X{I2>8A}ODG?HOowf-a41+l_`Z9TfT{zxJ@D99=#!ehjS)4mk6My73&jROrd z*3f{)Y+RI>Ul!$w9ziNMywQymJDN!5Kt~o&;_ZJtRw%1+4K{S6jnt%Ovl3>>H_Y)e zavZ4Gq1|T0tT7vH{LZvS+4rGS@+Wo|xgZFA2iyi&5ZMN0p|AbNZzW2pD$|A_xO!te zcc0aiF6wOCr`_Mqh$l4Ojk6OH!X@P!4yvn;cF;S_h#stP$F) z3uPH7x>wm(gmwNJ<8aF0(uAhXX=9!wtQh(WvpYR(k6frHY**poD%_F@*3~A`ymjI6 zVojUG;I6UZC4)bG6{IkO8`Anm(Vv3KKXK#lk72w=Lahw8Xrs~DNJ%%c!7*--QShd@;N zQUk67=lj=x|Mx$RZwQAL8$baJhX4$~aJadfGe8EsCkG4%2mA(TK!z#drYS)N3d}%g zh`w+jz23uya7c;e1HRsI35I!zmtcvexR4AghH6-bn0O&7)6M8-IP#%j#QY6OL1z$epd8P&_ZmPtM_!UoT}7IAbE z3mS|Uw2Y~PrCE}pSds`PN(>3H24_f&8T5$dQ4!0~5c*;qNP=;hc3%(nY38@Ac zi8Ne-23Grur$atlnvi=@hHGF3hq;C?97B&Bm;|$lw+M=wP{M!sucT0hq-wpo0G`PB z3kYKg;#;&qJUFBBV2MO&=WV~I}k2z2NO2QsO9pshC|zoZ}t+hPfzaT-DjDMIoM zVR47*(4OPUOMke93@`we$bf$UOpnL_!lVnqY>C38iv$Qv!b||dJc3(525ca`nHY>| zAP07wm?|8_ylIKw>CD)WL7}igZ2-LoV~lU$Civ2ZBLpEJEJ9}J5MXFSfMO9AsRkaj ziP<;?YC$!Rh@!~Qrp(#Of}n=MAWk|7hHI!1YN*4He9k)wLyt(qg1DFb!aAq=ijKSs zGI36p;ETUQC2UIyQU7X*ngp@&DhHb343prqjt~jWIK}juifM?GcGIjw`>=u_G7Ewr z2#Ofe;D*7N!}7u``IOIcGP1WR34?11CELaEaT?$vn(lGSlUSNfLCb&8#faEN_kf3k z_(hN7OTR?S!xWgrtcwI#Q5FS*$V3Lys|M9Hjp(bO2-_??VGV7lkawIq2O%cV#1_L? z5H$KumOvL{5FD!7yMjE(V>n2Jw26YOi)0uqD7n%L5{fCLi{b3VW?=@7^hCTMJm@S_ zk3hVj;DA-wQLXYIQ3H`ubDWb{3~vzA(CLeqL=a^;J&#B|x!@g=U`e{TEO!_X6N|9P zGRkSd7~v@h;{VH{%Ss92GewWs%)F7X0+~Z-;T@#tu$EBEnvpG3kto~Z9zrUJhmwyC zbu%~HpH9-BcwmRS)Cc(KxLf!K16a(zJkiTw(G``5#Prp{EKFUM2wz=M7nMxX`-_>l zOudjWM*> z3$dC^3N|4bZo^Tr#0%7zEK9V+s1yoH4JxJ_M{!g=(+J0}5Y(1{n{;SUAt9Pgp-`j< zAK>sBR{w<$4ZWIr=-GPMxQ>&Bg7{TnB}`tmi(_TczBB;8%zzb5QCu|ur(H~@W!lDU z(OZSlY>?5y=!R)13;?yv*1%7wd_-*EprX(^+{nWo)y=R%qaVW-dOHcHlgK7g3xkZE zTgoc}`-*m9B8CK9We{9Wdx`<83o(r~JM~w_U6GJPiow{R%SZ-ofQFfH7EQ$qmc5-v zG(|t9NxOjAA>kdL@|e*Xv8e1lhAjuAD+qIF-EWf!a3k5x-BWbGZI%> zRq>FBj-Uux)gJI0l~J(=S?Eh&B}}V5iK{Kve>hg7HCF0fS_D7KuGPwo|exP(L*)c(h(sLJ2{Q7%a`=;S$c&bl-MG062l5Z_FgUgR z4(vDyI-=R6SYlau6_XNOmN1WckX3fLB;GO)6jAHCm~i+U7NY z>}A@5XxhFki0qA81P}lMAb>Vj;{ z$2goPYQm^^wFg72o5<6kPz=a3*D8gEsK5<_#7>W(2C6KGZCKo($OZ~)7-jNAR7MIi z#bA#_)4}t#t|Bc_lZzRdAVC$c6kC!Pwh2bFJaXXEiY3(6h`q5i~1v^a2oZKi18VaHXD!sXpVFkABynB zg1Co#SciOYhkbB|nagljbv=p{nq+4{ivqR=cmHJxl$HyZ zcIk;hqGPBLi&@SOwu|PpiEXIimgrYmzBPcgiKfQou4p>EI|;Nd-}sj>w&Km_0q)Nk$Axnk3}QJ_%WgmEdKhTB!$zxQCR(pYr%;gBIxUm54TGV}T}U0}yC| z&fYp6ZH@NT(Dq)4&S=M!hzN)PITnEMC4lkGUS9zqi*_ooa%j+@lvslpvy(`N zbJ#8z_6P;qouJI!U~X#?%c(RO%4K#v0xEFVYjBmQW}Db4X|_q0;2D2t%em;#h9JxG z!xeqFKgzy`dG_ZcAm4w;UOT>M+K$@seeD}Bh}stD2ngTs&1gNw@uoHH6ou_OhV3@i z-T;Vzt98+5Kn9O~5~E<>4gBA1nd&>~7Ha@f8^IXW)TN`qiKdtd1OD%?*lF2ml53FH z=9KenNCvHxwPzs{dp(f5LE(mxRMc5C3QHZMGpau~DnbwGfB&ep_+DzI{)ZnByguQR z)}$8kewaSJi*FPXW5YJpL(t1G>(3C`2IbVj{)c&}2kH8UjD0L~KuWpD9S|31?n>~z zF0`+JYmXqmCGMWXrl>oT;$3VHR|H;F1zs*jo625@@sNcYXX6`>fE>SQ8^_fe_lO`D z-#aeyf!1S(e&dKvV>kYXi;i+O7I*QTa#uhGXJ9n0B@L^1Ruy!}pb+zVNs)Z?x@f@1 zd;7YR;VWzrnDVX)X$Xw!mJDW-5IN0cW$@&;lL=_xi)x^Td8K$ir1N}W1A32HDROy6%+Vl?>3OGE^C7l z&x0irZJ5IXaWr%CHiNr$5(}}GMa2P`2Y`q-Z{Wax^Zvd2r;Z%Df8GB5BbN^1I*1nC z*|T`@-$acbH-3cJ(W5zwB_Wn<7?NDbmjB%STi5O*%$EBs-gNm9-^-pJ-NB59QD;!0 zLglr)w=Ui~cI@2AI$~fdf~o=n2*_$6Lk0s`5eTRX_TSWhRZPh$3`xn_`w13WYV*V)YpEPD3tv$w; zc`-z5E=~XArcw1ni``VG&i0KoV`!jtcK`mztTQuZ5TkjnY!P)x)7SoG8@w&~@qgQz zZ}ZsPVm62my;<~j4LkOK-nwV&{(XD4{*61T}#)rMx25CX(WzA?zJWoM*#9S(nsk)=+Qwu{c}%F9;p+NbsdG{U`_wP<54^x z%_LzwGa2*~MCjB6U`6XeD3L`h#-x!-5XFIjSUu;ojCRb$5rI$rhrDbMc zVBF#iG6X{NPoTqa;|w-|2Kvu|!vD1wO);fCx?X;wou;UzrY%;@H=~t9;70;_B+Wyc zT2`uWnJI&fG1D-E4Kv!j3Xx}lKGqU7t8JqiH@Sw?op%r&H=VE+f$Hf$1RA@bb;>e} zptH|H8?AgJ=wyQp8f~`OZ}UL|&8e6@RNk*GHRvHX)wx8fd$pQojWyN5)?jPpD*I5m z61rF6iyt*4p*$891kpVB3~Ij5HpO*PffLchh8 z(L*NybkRVk`7}gzZk55Ffd3tPO}B@2W=%AO9mc3+mpN0+WzmvdT4e`Xq>X`_&UWs( z>#0XBa@5`3E^*ONbIq-a3YQ#erk(u{ql`XA9Ag@32hrTs1#8jYA7O{?-4OZe>#v$G z+qtsUS)LgO(vn`f>Fl|nQw;x%Zc%9+K( zMe1sVyoW4RC=R|Kos_&wyTga!KLs20@<@^fXpwy2BOxMrnMOMDBZ!QHV>;>4KlW!O zrP!k>u86~&+S5U2wf`w3NgJ9+-jskNxB?o;2u3yx0}WVV!#9c2$nZ+H4AEf28Q+Ko zHll$%wpprn1loqk9QKh-q3dBK8Hv8`mMn;T?{3+coJG{5njKo?GLLy7L@uMa;W&pI z$YPxAx--V+lq+|~x*Xol^DFdZr;XHW3AIjV$2*>m1UmV_5A+C;Z0W=px1xrB{-KO- zC8Ji!pavCNf-c>)q;9MEhq@{mpBkzSblHH-@L(evdhJeP&oc>wTEf8p{Uc=p%U(pt zF{*}f;~S(piO10KF^!ZcM=&`bNF3xb=Cz|E6`9B|L57YR{X;?R0ZIieqQDbj2z&q7 z5M~sZBciycCjUTziA;1Bk9yR@6%jxa9$oUm_q-_se<{p0n6WizNJAQxaZF(}LO8Rz zr*LA+VyPDA&wtb^B+9eM_8yilgL)`4>8Xx2#HfwsJO_;Dkp?%Ukr*6W1RK^64QdkG^eMl58ZT=4P{vFiyk?~ zt+qi_h#Vt25K*d5iW-v81*jXqGtE9_WjH~R22qgF%|DDGjT!!tGnX3cKM<;s=#kQh z;xL&;n&=U>e&m$YoCiJRF{F}F$|D&4M+7Z`(4{mGNN7!HNV?IE@OeZY6R{Ct-+GRP z9QGYBvj5*ddi0|w%|jm6gUHHU(%JQ-V;!TcZ2$PDz6`n}989@KJoupxe}H0~I)#=A zxpIVCbW2b#j0`haRU64b1RIlSNi`xRRGlcp8qR=~HuhQ7Z!ndqnA;b~lqu5%J;b^p zX$U#8Ar549BRbUJ#(1eQ#ee**KR*^sUwd*hNq2J}3AGw-pYbJNUVLmCU zHcTlB8?$1Xb_5wBk9}-oMUHG|BIF(lyz2u$ zVnB-&&?C~E5RWF3WbrB4L{Nr@JM@u3b@)RcxF|&}es<@sa3$$mS^AllX0h1 zVGr9IU09t?8XWD@=hTmwVZ|hMf@^I{2Uy#P4ko9ko@wkZJ^#SBM=mOj8pF%* z#vL}w@P zxB~^T#~Q|1k?92TNX$AQmQZL!Mr4MRDMV%*p+yKuk$40?^aJ+1+{<|c&RIlXO#AXl*v3-uO6yjW(uP9t@ZZq$tx z%39rdPwh$2uqlvAI2?N@(DE@%H<$xd{n`!oO5~-6OSogF`HDDnNINJ~#Ux^ZB_e+) z2s$X?wKQQtDwyfD2fDO|4#H#X3D0y0Uk`FaYbazklvt&xjsM}G28%t57t#N)i7y9%*;c}+0pp91RY`qH{s+pX%oz>-}T9# zoW&oV@k4A`4JhDZDu}{Urot=8!Yw?CP_)@P00lVIq5&jAI5@>WfI~Qh$T*0lSn?HF zqNP}VLpaEiHt-@g?BX*x20a;uGZcnnK#?{uqhoZ&UBN z0(FRHuE+BEBlmfP$Y_i$RDlcpfKEJ{LHee%OdGTii2vnS&aeQ>5y3~~c*b#*Art!6 zdrV(5jh0JLVrJk2M$81rq{tPqq)y~jbV5;CRcB2yA8lsF!68KVX~fJ~1W&N1d%#FX zzyrSg;RDgklB{1m*n>UDLq5dWob_C682}g%gFQUOfpJ4RBq%xD;dRbukHEt>)M5s7 zB{;A{#$_BroWnYhTsyc=1Z7+~fao`rgIl&C8#=}})QXDIhBmmRGC0FDW&<@!!!@o4 ztW4fhB}lF{mahqz$f!fHl}yEG#1Uf8_hm?uI$!w}5&cL6D0!xJ#Z*J?V8fJW`ea5C z!Ut@o<9n!tFG#_ImELcXDT1h8eAJC`lp#QA9iK2Xzo)C89H zZ{+{1s`gFcAUfFeWuy_P-nLqF{2s2Yqt#Dh}6gf?&xg~lQ{kR{+5p*jFw zz{Ny6RD{T!gK1*NHsIP^Rzq}bL$fx&tlDPyu zz{6M8!}%IaJ=9qMbcIfU!9NVJ|Mg$eneA0(+&WC=WVQpaZYVlL?>V$3v*M+--Q{5z zh6dB6HuQ~O&Zr17gE2&dGK{bYb``d?1n*^rO0ZR@qMUoYZ+sk~3s+JpLW{_{NB{70s-ynh5o{?ik!|kaBt4pLyD*p=0eM+ znjdDIpVP_=lkgSJHAzU&YCW)nK0I>4Xb3y-gDWIKm{1+kDGkzP@>YPtTC!QrScyW& zL)&T`I(&mUxTQ6yXh^j(V{8iF?yaW0kfxZ|GpJu2wuEA(tdj(VH2(uVK!l`vgf`E^%B3%C%B&IFY?4;4v{>ee zR6%CoE*87yHkQG0YoX8?yhd0>L+lYGe1do*wJrddp+gMpN}1Wv*OhO`_tov%ieB>M)jeDK0Qq>c^j zCPe6fJ8QO1IBZBzF??vF>GYOYjj>m?3hE7%dwf`_Jqt(cPcyA+OW3b`h(=6K2obBV zOVG7OobyN6wf|$cCnF-XM#uHa*aOYF1TkG^Wl0G=V8l1YL&H^V{MExWxWX-zVs>ly zc5`=j7XvszGCRBo1G9rVyhA#?!;_{%Qd1$_wKsS{6?n;aH*9R!)weWwRWRVUFYmWk zf5bj1Rd;!&4gzBO(9doo?LY9tP0%$XO5(Hlh&#aVkyu2LkRMJB%tCV(G_x-g^Y(n? zL>1V8m~M87k7;{wu}h@5d>mJNDMNg<#ATpyOCYaH#M{oAh6-lGV&EXjz(>qHaEGW; zJ1lW+mQ3^nbV$4>1q&3vt;fc7ClPz3!W zv)A)`%y{V#N1TqAe2YV^XsLTZsu6i$5I9JJ4Y|H}gd-Gmtz_JebUV*2AercfsUC(7i--^TQ+a#L76Leo}-z++me8 zME{5YmOFf<%l<>)K}a{8Eb|x(IO-^{w6_(4SK%Z|3`xTnkFgl%M+(j(Yhc@P=2u~r zOsD!VWqZjx&R4w(xbY#Tf`&ggoae6 zt-Hrf@PyWD$n|K}dR}^wtTSe`GqIN`JX^$W3V{uLKtu>bXnO=xnN&p8&Qg7ZUG|f+ z)c6vbMvZNn@cgqkluL!21mUBV4zFJYDYTK#alRjr5n^2NMRaB`YD<`dSygId$4AaT zc+1=s_WXzf1?$}!I@B}|Fg+Jf}{1Hh(ESx;FjQ{po z%sVJWLVP9087trsn8|t0u-Q0i2w(F9ltt9aJx9Ymb4GI#dPBt;y;3@mut-K+xP~ja zM=;_|9HnnpPXPVHac6}03wP_gMEk#gh08yM)4%)Ae>7iDJ`lt}$OEne#6N-e=$&uwA-;?*7^1CvYFXdj`clWr&TZz;Hz~mK%3atU!qIH0D#6SKmR07XK6Cb2raj zJhkcO8r+-C-Cu!R8O9Tf51u}J`rsK%EKuKDeyJDE`*&~O!qoNtx&DVwp6ht;Jj+Wb zPu;tB_s$jn_l{lB;_JRy)oS$Hxo=1>YO`yxn$dsPxG@um4Jc7*2V)9UDUe#WZQZhw zYuPgDRf}vPyRH}SwBUodH{yG1`k(wj%BLTO{tM8y+S>YuwvPOvEinNDobVtC|M{<; z11m&Gpmzka#~{Mc67e7pZwqOmjS{OOuNGZ=5ylun8iAt~G>T@L@eZ;^o1AVs=$dP& z`6n77h4hXnWrQ(Lm}O)OXGo^uX6DA1_ldpOX4!1=W2&N{j} z#0CHH=OTv|Q&3ie;8{m9uz4bMAGF_+&7OV|qDM4+<{9@k*j$6{M1d0gC!KhLV`#2| zj{Zlx!|JrF9m=;BN6l=y$%!fU$Qcita;o9-B5au9CYqK=-)_4$v&HtH!^})vo~Re) zXCZPs;-@j((VhA~-3t%?MB0ouh_;0Y-S?t>@fo#wQV-&%w1Y1aOW^7cBFvq}1R}Ar zk5YUKdW$^Xh(?LkUteMpI6^_7C5-`@{_2?eX7#21vHxbsf2v_98pR)p^PURJ?c?5uCd6PX^m;!7za6mRY@})hHQ08NT@b4s+YC;xcZ+$Yl%>3I#C|Gol~~8!B_4 zOs=v)3~n%6|G*hTR0xt7GK4C7G)QIg(TQgH}Wf0fMBaG{SheRbRkbi3AYKJpO`Esd`TqXpK62^KpVBI^n2I!vXvIthdE9Mu zc_89#q+T%!>xJmSkA8(F9`y*#Ma*iDe*Z0GAq5)cLGtC&{TwWe7U@b+JK9lrVAO52 z!3W_4r8{a=VFv#I0y7!gSQ(`cBNZ{ok}$#y&h1Yi(Xa*s4Z>LkVkBh$V8;AHYY=5b zsk9g=hBKT*B`WDeN(Q_U$u2UDhVtc02Kl4wQYetaprfcl>+MktLY>Jl?ll)tRYugL zOLBe1O+YONIerK^L4l*B)-%W!4f08lbc&0u6b(KIy-|*yCB$61H|m5>2k7E}5u$lcXkfw^~EfW?q+(oId1l z7D8o56h!I>KA4Ea(iOJ2cvBi_M>`B<5qN;+AN}&~LptK! z0`a4mF2I3C9OhUfADJN(Yf%9IF~5U&2P4n=k&5VR|D6q9icnpGNj)V-#-ysU; zzR{lcU{D}vmI_@g5||6W%)s;9+6vJUzEOclEptApNZAs;9UsK0<3P$oU#6*l+;$`2 zV2Ea(fREG$!Ho7~mL{GYCcbFrhaQtQ31kw*Z#e=+d;8>6w2$8D2ih%EUt&O{ zJ5-kjtrzLnO5x&FnW`8qCjaH)3qumr^Qu%pfAfg$+GUY`Y{LqP)d*yfT<^xZuOnGC zNSL>5kpwE^npFPBYYE5^f_J2~7&*94qOpt!3gqDb@O8|rfepM&BamX!pa!u5NuTmJ z+!#5kMzj)K!GK$6CnVUY8B)c6j3bCc1uAh5a;LmF(d2`|$fxY#>`jVh9w4@2M-j&s zqkE(vuBj-r$9PMYLvhrE@{mOJiIJY_`Xc&1Q_;2-laBv`8|2iSb&-YZYdwV=))H_$ z>r`VD-{#UM@*af_0zF}tIwYz#2#DsZG0-kBU}3IAmc0*s#s>;MbcZ!0;&^Q*nmM^qM#08>D$zXFC+8^z#~ z%ZT!DhNRYi5|7z7xRH%=T;pc9HnXrq&C8CoWF_$lj9M-V7?StVriXKF{9fU0I| zAjLh(0fVrl9HQmSW+rKph8)N(z^>ve6sK0&?;z9-F7C=d*h*CNE=I^}TwHDf{U$%Y z>LOk$c9=-UY>w!(jv;JLP#i+p3gqs*>L1SM@@mlD=uIQKVM%cBB9uYk6ewh38CaJ1Y&}~PIJm5DwINlq(dAYN-Wf2t1@Dq4gwwOB&*tC z)-FP#1}UGa?;>#>g4jH1_ z21-O)1&!=Wm%i{K9?!R`ub!R)kIErf;!oUw%33nfB0SFHpu(sGA|0|yEdqn+0xBLN zhJZuy8c6?*!so>S5dV!@EWULM}pirsz0^CZHzKE7VQdf^BSy(Kf)xY;7{Uz7IFBKq!SizOB7TqwNeAQp;q^LVor=&R zu%sNN(8+Yf$qfG@Wwt}9aLpjptiR;R`6O`^MG<32aU&qndcGnZipEU3K`eU44hcq| zuuo9_i8(eABmzUEBJ!VtD?$7tH)M6d%0ek+TG=#@7BqNuSD=%_R9da($45I4R z0b3x69}QwA3Q`%r2PNs`AmD*pKx7{ZLhq)L?l@vx?v5eyWr^|uqY`2t?jaU2!Zy0Es=;%p;0szc@ncRPZdwMkcAoQGCN7@yS{^ zf-q)`6w&{oE6@R0UL+#rWE^^?>R1R*FrqZv!4CUn!+z<-2ys))>tH;^!BSKHhR&ObiAsUQfF)a_# z4q_*4FC)^4X{JgnFQT3#@z`PwtGEv&=HdLb>NlX`IkM#}=0c@n$3$3gVR{A`wTdiM|H z`8XmFjiyRJDIdVi3hvWRB}P9VW(f6?ew2Y3_|geMLYlbDKs90scSPc%0d#UgbE+^T z_DCeHDn5=aEkfce9A_-1$mI;o94OQxvxr&*M%S}BH$rM!vTUI4LqG%?nddM5 z!VuZiAjQHef~!-yMMOMA9)2`0g!57Ltxh7eRwGm`*dn{^YoLOT)i&f!oAOJw(@Qg= z=eAQ!sq{+mZeA_|JFT)dwu(H}VePEwGL28W*zhz3>U-4YAU6Ws`12a?R9+`$nTG$6 zAt-A=gTf#XRA1T07}oL7q++TbW&s%@9n6kLOC;QQG$AA-Fapg?cm-H7Qs&kt9wzo3 z@?m0&s?$6WBBF*E*J2!w?jK@KPGapMI*RYi#v|r}pIGiI%5@{uA~~_n!iw)Wk}bJ_ zDJ{zi7Y|Q(z$YWbv%@50re0%983Gc0RW0w%S5@_D04pBQQw#xv9NYmbM8s1qB56%f z5*JS#x}YTHZC=ZEBjz$AGVfkL?;xN-;8N>PnL!!&b(tb)wGLGv{E{R7)Yq~h8+wl? zuFflt#zZJH9kyi{c~vHzLo5ley==B*LzYp*2AB+NYdIw&;DlH!6dFUMHb?)H6zfDp zN@E^k11=VWP-eAM>!ec=XACU`ZXEHho^EJ!Nu|gFSiw~*){dl1sw+w=0^5slsYV_q zmPL^Vc^hO(Pc&MubRKk(?|jp6lr?v{%dz-mKZ=(W4W*=3(S`EwBRF;=xP@s6!lIOI ztG03<-eC;j$86u1C)Cy=# {K^!w;JZvxYl;N_hL4NYpBc8A?O~yY5bIJbo9{`pc zZlY$&10>KvVmqYhiZ3U}W*9?aFOnr`)Z{}KMntnn3~}Wi&Jaa&t`0eZSDqDXGUB0n zcOCXZQ^dkGs ze&@I&^7J2Opz;E?MXm|=oFN**On^fokOLSbmSIT%6(gjfNCq}18Iq})MfJL)vo!5pk&9k`Dy_Jn!T73=;YPGSh=V)YOa zW~-LShL#R@Jp_|L^NeZDR@35exn*nPvt00SF@PAB+{M{EN_b+!l}$rHMrAZqtnZ+d zF?{$xrt!pXM;b-NANt{U#E*6l#^qpHJ=2s{ol#A3)}0T>cp3j#=5gS>5pOR7p+Q0#j3FAn5hqY4fsFxmSSOysH;*(TAu40m zZa8+t!H(z;XJOwnQ#;u=)gW zE_oo*CiG%JjxWNF^Z7o}79-r3KeK7yQlc6j&KWjKCz$_YC;oJ9k*uNFu^38QBa|UA zF=EVAM;pYUXdGA|$^kN8q^gbaIJQc@$ekQhK8!1ZFcRO-hHrIN9$)-EvjS#!5t<{Uf%0N)1 z9`u18T4i}b>Fq2;VK`|a1P{IqB=X89i?tIe^MWb2QW#%^`>1Z6mvIusf>(ajHhgt4 z`tCF)53(!VBIK7LN+M6g41g<$S#S@LA7+p(ViyD=!~rONGQt?}!gTgA8_r=S!Vv6? zijGu>EKI~@rHyGfTI+(VAOa)5>S!(?0;{uy9}oXAL$5U<9!G^V<%KcgG(T7)WOc9c zs^$vOBMhv#j(V>1JvsBsAvUd+R691ZUKBXPB zLPSM0EpppLh8H7xMl&>7M#e!cyqhETLd#=YY3_-p1tL~C!iO|sh^AY)*8vre2sSrj z*grx}2V$xt1|r1MBT(+nW8}wXQB?k8U)uj|8Y2%i5~FRP?xo+kQp&q(XV$j!LU#sd zA3{&ah)mMwb)Pwc8sOC;M#i57V#=(+UX5_ckSrNO+{qTW8+dQ{(DWaxqQR|qsw+cb zBx8cnIMi-c=Z16tGSZ^hGbsNe9IBnm1w}+@w6F4gyEP)r3vn;}LN9nC9AbteHF4*D zRcT%1ljK28^E{Yn5hT(VB+zD@1tQO7km<|8pFm%&g+0#RIDjW>G-?_Fj2!%w#0jNuM9GE>M zN;MU|ms4E-G=IptRbMYuUo(3CB6wf9$MYjVx{G2&VY*c+k)BJdS0Uo6nX8^B=)7LM zN;SgjztJW7S3{KIs#Pe&i8Z35bV)3aQ{NJnqvb9mtWoYO9K$hUC2WGSh$0)(1EUXu z;p34o52Ey%FoFi(B1Rk_{t5i2Y@oq|0+U%YsO%cTf84Hh%hv50xo+eJqWib;-9dQ> zJtDlf&mhQu`Tp&bH!qz)cN;Ux{725+zk34H;r!PwUQe3{UH)5F?q9cu2+O6*i1eYo zgX12qYf821z;WR;4s>Y_;ne@F|AY>uDi&$fs8;`BGlo;EL*;;*&t?tp9Rj-H+tUSq4B;R zWa=`VxYIWo55%_<>E?aZ1kQlXySMM(z>$s!E^wPbVQG~y6BzB_GNjE1IwOt{c~#>A z9S+Rx@ESLY+zg(REAXB9fAT~MtWDMQKlK9Dr9+plYexI&(zVmCF6>sI@sLGMS4|ZK zmPzXg#MeFX03{GwS%uRUb$Q{%kzfvPWR8aaoF&j&17$T(QE@$#RZ${7MBqW<9MzPI z2)$-de*#&^(?Nwbb=d!7zlG+RjymSU9!U3?mLpPsQI+ICOB%!@WCLNQPi0hw<|9&- zZ8qCK_?Tv7VE+X8&r@6;G*y7@IQS4#0}(hMQg$Ka-a}xPxeu6H{&P$hF;v9?g@6Vs zC{-@>Wz0aqP!*kE3pE!FFva}y+(FavRtzvr{lZK#d1W(@cG>;o5JeWzWNJ?S+1Qjk zN9Og;co`in%I0C8mPpwsn z6%L5TVvFrV)DGs2VBZcp(31yUxfpPmnR{7a`Q%8Wd+sU5q)OvfMcF@!E!pI`h*g%^ zKvSlB*}t3(9OeI%l;N|Pmrc31B$%qggN}{O8YK`pubt!4RK3=SpuzKi=~1hI0c_Aa zU05}oxGc9E90{;tCs1w=RqAr2gF#~urVkxT5JH}c`sq;rep-S{l|zoz)0$JOfz77#m9z(KER@#V8no;{QoEC1I3h+R;Xy0*2KGM$;$@>y6K0*( zS6yYb)-?YB4!AUd|3i3F+fqB%*?PeU<9IU$J6K8m?3=G+O{rV1Urp_c;7&&#=6PD9 z8`RHZ`lNoDl?D$SnPvDWoTb7FtBwzuxBoNGJjEi^E>0)i^Ug``sNGJ|7n;hZj9qVp zjyg2P6VLzd2pz`KV4-=_1q%Pzkb}$Mhff>}DqAekK;#4+-ZjZwW6U)L{ZlEYdGXv7 z&Nf?B4bGW91k7^(07i6-aX5=1C4J=ZM#b(@9$`I%FDEewyJCaBf6!1kx3; zxMU+`X$v~kc8~>zr9^DGSb*4rwu8*+9}?Q&Roe6r#{Fh0XG0-UR#dftNCO*yQw!k$ zSQTv~<%nF%jyS@T7bfNP@p$#U{~M=1DAsjTQc}8}T{v zk*EJz*+Uu`t$)O2iBtQIacDM>_z9$dNXegXCM6J^=}aK}`$siSX%%ZkXB*h@l=_Tf zwAUa{9J?9_(*)IyjTD7Vg(Ofpsy0kzaZokxP}Q3ZlsAMhO(cm#3OdF?4iQzeZEY%t zh)&d-X5Pq`&w^G7i$b7^nPVN!8^~G;C^*3t&>GWtM&Ym#m$hsSHcm7k`d}o@e?aaa zi4@(E{87a=K4y#J6Ouv5lq-6SDNiM<6PQwxBP>2dAN5cjXEd6+Dn&*zY7ET6Vkgqn z(XLAqMMz){LlS|+t~PinWXBF-A$2rOcP)%kf?jwU76^eVe}be?g<7bzw4)r}_$U7c z|B;Pv1+6c_03iMb5{*;}M3ia4lvU|B5MWH_QO%JC0S^)$Z%`vVPLxs5<{}P{%oHg{ zVvl-gbPuNG=$9OXidFeC>7gQ3~Xl$R7O zOR!B*&D`QPkii-5AB$4PG?uXzZBz;yjSAec;Fi3tWTdR0f=FI1_SDu|C7J>`<3j`% z$fnduYS^<^nYt7ve&uu^A~}qhmZYU8c@ZHF3Q#;CI*{k;!;86^t{3lkU42ZKb|~4) zajSAuT}2R~y=BtV-Z2mLXs$Ps9IAZ52eY);Lqgtq3`5ASGI@-po0o ztc=5LjunVf8aU#qg@anFb%~l@+#$2@#vQ#A3$)(GS95T7T17zzhY-?E!bw9K09?pF zj40)U7%?r)(povb5f?6(qgw*ur(QgAk9Gm4iX=mCZaL>0jpi!7E(J}Tt74C*OlC`d z`AbUfJdg&Rge79i-9a8RCo$QXOJt&MTJo`2!PIzl~ zA&&kKNj2YC5scfyY^ZFoE_CBaUA_^O6=@bBIy~9M!V-@VcBn)!4v}i&;mynrVSJ+wTUHVsY?5L$GqI{>+oha@)Hh44>n;F z82AwTzz?PY5(qUxI^{c7v4n#0UV4Fl!m)j9=o|Gl7)etWLg6C!HVv-S6#3&QsI-R& z@f=TQ5PzsMR%H;=!3^1O4TyM%-(eL@!4x-@SdS(W{V@{*adsS0D-l8>C^jM)2t!#B zOb3w_T0=JFRzt}HLSEAvbR!lo))ol}Ls)Sd&4d-9M-$yp4$iXQ^8Kad(^OdEC$q-{K8%v1R{U)(uP~X6CnTNKsy8_YnPnaICj_ zvynQF5gLE7FX>n>qQN`FH4w2kCb3r!5BG3!<{tSlVmo0E^I#7dXAigIj}hb!_kddl zAzi_D5J%W&@6Zl-p?6==JG>_l(=#PE7bRCBH8=rt^5qRxfCAWeX>B-?<0Ba2pdA@u zL-JNw*6gb-(hXyhJdcn}l>f)wb5 zJIM)A&Ba9|_Ybc(k5^a^SLiCaw>ufvr2JSc@c|hh}kfqA$Bg8pq zHfme3Gkw&dJ>7>CLFJrk+7xHHeh_g!6@ghYf>#d#D%Vboi zZROBRDFPxoRFjf|4VCf@+5oE$k*9Qt5K?AZT8V8U$W(;{Dkxc7O+kZvWuWmXbMKH3 zhQ=k*g%4Ud5bj`mfTUP`)@T3t@JFawe8pFLdf{*oXOFpJ8e$R}2qh1~=0{+{ajA)C z{}6KSkaO)&o9~(zSy&J3fOqv^8g+sh7G+Uw^bvY7a8pz|@^TJV&?i&@ookw~|L}%L zkptYr9EO+;*oBwlNfSd?Bi^>571$wvXBFYFmIon# z6j~MLKn~+zWYyGoOKT9?pkU50vY<72r#5BPK&w`2T7U-8bq1u3RuLD@ zh${X8mk7a+{un02Ri*z$n}u-IJ0S-TWI~Su;ZXQ05cfKy!{r{adAJS-dk#mBuvc6c zX%*5lCj6+mJOwYs5_0KE9Q6tmp=%XBQYY|HbEeB1-{Jy4rLeG@7Mpgk0;ylUbB5E0Uo!D#!fulRyOFedhRncr+;g!g;Eo*si+M-S!$QuhmN~Al) zDJj}15P#Sd=M!cYBe!mO8im(1+UioznyltF5cA+igeJkV*)R{Wn{yIz$j7ZXcMyLe zoYm@^c9a(Gu`vI6;ZVFe5RYrYBB!_uhg0a{83@&a;RPGS$&se5gBGQN5QC-Xe$@ufNv5Ok4dArNEHVNL)v64 zSb-JcfWYU5fv?D*)1raLGRAGIt9pSJu?Vyv0wRbhKl0-Y%izaTHxN?n$N%u1f2w&) zWxxl_8zpkI8&;qufshoraPfeA5iCIfDJN*u9x0c5Fr2N28*;O^VFyWiMv{L6ffN78 zxw!*6Wp*T@EEvW2nRfvc^WadqLP8hZ7sol9()yH-l%_kprfo_U3dVlA+Y~1$G|+~< zOBIbw$DRKM(HxZmW>hA}P3K9uK@r%Iu}tBsuMx9`8qPVPh7`jQ{>MOXb+<0EWN87v zC$9eli}g`8SVS71_X70DnWEw#67*)DOE1gEaX16(a zQ+zhb5!F%|Jbh}?o21M@4-v1xN2W-kQ|9s+>`{KYG$=WX5IsE1ZOE`l@v!kDm{?qZ zvO*5yK_9CT9)N=lc??9@Y)OL2wwY%YP82loNuy0c5l3;vMyJ&P*evHz*Hl|UkTo@p z_@Dm;Z6YaB6pT|A(lS$lXMrRZiYG>)WBs9wO|teT#nI5v6G~Mj8V!H^$Hm|bnN7`L zTPbEs74j6?(IB?gu!v=OD&ZkRwV1%lj6A>xmFYlcA%P%b;JFbd*(d4W= zk~1Uy0X^gGuTY)dgEG5K@ze;B%oqED;}LfKkq$5-4R~q42Jx|a@v3V<(6}q82;m~# zG2qi%s7xV4=#W(3BDd#f!$zTYVP+24fEL}LmUqpoI-Ki8E-+zr~=?O>xNkeN}%$S}SQ0;i8IFQ6fz2Z~TOiek)Npg%iR9 zu2cA|X<>%aVi!QM8SX$2@ep#7d=vYCaDQuJrJxgVZ`y^9||Jf@(uj`*+DzCW^EOR z_?`v~TSUxM6Or07WHDWrR5NFtcny{X$k#;ym@3xBNJ~ggXd+FKfUgLla|oWEY$OBmFY#0Afgc&33 zKwiUFj6*#)>dVjtVm8qr)RV~wbtDY)j$ASiMWQ>=q-G?u6U@!r^st-uh!0m7QtMjp z2dTqaF+zDao4~Rd=?JjvsBOC9d5Lv{r@`lGAxDciw~k84zw5sK4ABrzU>gng=MCQxD;O~#3=}Kjk!_2uD@k+xEwcJ_qTTP1Z`<}| zgXM$<@_2Rw6fOaUe)}GXZxAfR7f};6d~bbR0w#gMI{;B{9=(6{{{0(x5FWvU2jewt z*bd@BiRu2ev)IraxrQ7Yrc2jOT|9gL_Dw|DFki%f>QahKDX#yaOo%j7-o)APT~3}o zef|U*ROnEm|5y|~=nbVhnmc#Sg!+$TxoqU7{ga0EUo@=;xdwHHZK64pSABNN)=*oy ze{36O>vpZ1w7A^l%58W~+dpq?&2jtJEik&F=h|^3C$TMCw-CQI6#MTnPHU6XriF+Z zWw?LguyMXQZX##UVk4{l`R!{;We}|`JNP;_Y?QSB74!Pf+SZ27c>CrG{GadKuK(># z>6v9e3ohN2Epw3b~s2^GF=){=sIN z$gaw&q1}L5jVB>BL&>IttOG2wZn)tFE-tg_a!ZKnlZhjm%CRyhb;>L6AdZeqX|jp- zdXh5Zvg~d%h(v3MG?Yv`EvLxpsEcwuzi6#u?Zm9d4Q6EUh#eXAB+c z8Be)-#u{ft)n>PBvXRT1FuQ@1CpqP;vYT(b5zMYGy}72#E^BP_A9>DWkG*v;1PsrH z*g~ff@SgR(9iY78nQ>u&^HI^H<$f9h>(VGZO zNjvTuiUzlXgo(x&X@r?((tq^U`yjQQEJnybkqpZ>+)Sp%*p{oR)x|V>dix-_a*gg9 zabW(3N|(yBC>{g7 z^znVb66GNnClS?CZ=QGN*>9(I##QL4crbiQ`F~urkY1&(GkqO$+(GBwkHo<);J{9w zs6^X!stG|88!|Yk_Y|zG6CR3*us%swTE^Gft8T7mNExUBpLrOnQtP8k`CfY z8cF)cRj~0GJ~c!%ByK;9ImidT${HqaIg zBmUzVp!(u)GzGUKzQ;>&>IRGihMNDJ2pYzVY~>jIq*wZYBEv_>}%g`iKgX(t9w)EdQz z+eI59jI0zZD-}K4Ls7yNC!+sEIR$0T-u~gxeCkr&x5#8eERvi!xKR$ktgb>Ax#dM%G|Bb&@*lnvUGK0p zKZxKX9$cM>V&c(`>AB;bK0${&=;fxWK*X6ZYFTE;ktJ45B%L>DWx#ai4V{(sCMr^o zS5Yz`vNmK}#e{5ReN?}naObWla~b(=qK>Cn1RdevMv|t1HIL!sV@1)S23aK-&7MzR z|M+W4>bN~^Q0Xiaft6bx15Jpyjf_?_P7}Ejxltubi^K6rpp-Q-zcF`h6N%_SSPD>- z94@*zS&~+iB$n-JR~rA!7;R2G^$agYgS?_bE*Gg5UTJV+8lmMwqMtCUK;UWzyJ4|5P^SkEGGj5U@exJc$pHo=l><(rbM`lKD`h!KU<<6#LM zYDbaLSayV*Cr`d9vxyJUk0nK)#Gq%3Ui8<2I4bkAI zAz8{QVBSMC))rPB9{J>d8-flGA!{9RbxDc#q1cA_GRgC}5%1Q6(9_8^9zCSBM|$|R ze{4I&DRU>j_S%iHO{Qg*GhcoWoD;&>8o(;~2lC>L5+>_T9|$T?iFVg)OY*~aCt=T1 zPWf1%P*%zZkL><(@&gn^a2wQUX*0cZlOAJet{fZfq{F*s?BYa8)9CAtyg`%geZ$Q@ znZ{%$qb!_A)#Y=X6Ep2J^ZYrHHlMCdp@X6f2;zn|@7c9xstTVZ6)6D%|&O7mgyc_l4+!2+x#BMgG7nvP4**KckB4;K(P`!(xDEEJf&AIu?R@; zm5vt!#aj9xNRk`EkUTa>!0Ga#(d_tIlr#p>5UDS?U3m~ZrA1Zi4vKpA5x>VGNRLa# zqmp4grg3SX-=-n$Z_St^^D*?(Slz>amYLFB6l$eIT{-DKl(>w*pbG3jq!V(H z+6(`h_8<)5Ly28#2nt!BBNH%&fF6|ikZ_Z1`nTSAn3(L4Q zmiq^E!-=Viux87NNlG$#Acs@ZqXAhHd!aXkm@Az*5YnSS>mx$RGPs;zIaJBAXK@L& zn4pB_7hS92M1aEtorp`dt->DwB$5E57!qG7U)Wgw1axVgV^ z!-K#%hItY|^NBji3RKyZ!CR$C%Pyv4hVRO~u84*vnW*R@FRIxTOp%nY057J)n$fbl zQKJ&fFeC|+h=HTyPP`iGr3rS-uH@v$WK*as$qHJ*Tnhfx2Q zaVQ6}P#yZxy`nR^0xCKsAuY*34m>Fb7ThV*$soo znFHc3loJZA`3x50wOR8S*FpzzaKH#_zzdO&ZWD^h$O=4k65ecIc6uZ)*R zvn}GA2=<6Zh}enpSx6m&CG^>kAA`lEiWh3Af*25{n>fOC)XSkzIG$LA9`c55uq~U& z7-!j;o2ZrdP`XXy5i;Zky2v1}>?@BDzBdUNL`xQP@C(f}MxNNAvVgOR$jBWTnK|4` zhe<rCobW0l>pWkXMIRd+(-@+Kx(aKc zBCqhsi5pH;GC3Z(rKcc_rkDtV8Ib9@5K*EX#IPmeE0dI1Na)j{-PAEkI4a-z)Efs4w>6^?NWr}GhyYRjNFC+`TXZukqTY7D{SkJG4( z;wUKlxvrsz64UGv=R%6rFqt>ntD69fF_bPH8a3TR31zT`)?lgl^E8!ezbje|tcgEs zvdYs6p_?>C<*XNhGMum?XxCG#5f(|t7}ZFx#AIFGY`Nk&KUVra)_-9TDzi9 zk9v4hdSFvFB?tk{QlYT^wNxQmfVlVc>np|zw;{yulw9^a0h;&id zb$JJ2b54B$P*Tj7bkZ4eh!FrS#hie+1^owvIY)>{$5Pc338y< zPjU&iVylKAF|$I;mgok0AwG{t3!rPk-gP`y)v<}l2%pR{8o-HD-C3RO%ar(mgkc5A z>Ao?8&xVi_vB-w!J3);_x{x^_IJ>%1VViOYR)_#OF2RN_K@}xLzxKq8wBSl{f(*XZ zz41+nVucmc*fcqL&oVrY^?lEjMG%-AK;lh{xOCZd!8mP6QJ z24heLW%$;m3ol>XsZ}Z;b#VuK<-`DjR0(@joM?xqc(pcpT!_dAEk%j2+Pn1em1uFh zQF8!nvG82!Gi^PeJZLpQt5R}!xN^VApS+0`U zlNN$mGI@wgYQdd_#o?4F2@%N#x0ovGz>L^>oWSZnm@!OzxtGO7iBWCifQAUILJN5Eu}miR!Q=9PTotXtI*>(&pL=} zIMJRUjGd@AK6)0+(+MH#3FWL)RV3cLMw!dlk~PEBpJExT#oBBr)YKS_hf&2FoRE2A zXD+Q6cf$_)rHQ*zSzwBnXfgi@f_t}uQ*7mxm@xFIgK%s(Iu%AiuiL!MO0h_d9j(~R zJ!Keq}ss?M&aNqoxYhZ>`;fCFCrYmdY`2&=vat4@i0zz4b};b-2?<~(MK(62&zi?qlfI7#2#T`e#< zm0aNwx7d)}@(F4|5rNqpG*1a>xfp4IFgMwdq_{E=dJ&ilS|igpHx~*t{s$Xa<9~oq z9#38h&51i=k_W$%rTPEUu(;#zYnp)q)ZEkT>6+-1{0H9t2e;iv@FTxT`@Sl@8kvkV zA_@-5_66OdPy1Wms3+cLhLbFJ2i7N< z+&v_PE?_wKxtZx`NQSo|j!rgBJSmo?fr!Mh24&feWSWc@I*4Sj24NUY02GX$hE)`z zmrHF_>kXT}i4_>gr#mY@<^g&sf$ZzgYpCX)yC5T7H zdBloMIuhSBXIW#n4?2X?3*XNF{u zXfArbrcrW;sC<-sp%=3EM4=6+!R^?f8YfTRRLh2|ZKb}R2x_qW$-jx^u4N*5wA{^I zo=`wNl92rfk#dO;f94ig^z?~X2Nc8C!crDQ&C*)*U#|4G{k6sSvq*jVy(hHa!%g3GWK3mG!yw}IiT zA^gU3<-eK&a}Ly2?q4`;i6Ozc0PVR2K=LTGO+ns}^V&h@Ja}7i8vc`yJNBgG4teCX10FfjAt;bM*4@*OLR|<% zLqa3y_9Ku%3OOW^29aPF3j$GdO>5j_!<#qP@Mg_OZDDhzH7Wfw&6Px9GtD$a5ygx& z(eO0QR|sha(@S*y!%St$Bqa@*F7b4xG((Lkk*mI!Idr9fPw z=~J5m!DSLfTurLYT>oTcSEdC$^GuOHs#lOR%0M&fKhzvn+miomL(Qv9wuc%w-DLk` zYiPQTWe+ z;2ETjcmLd@VY&avVGJKa!{cD-_~V4LDbwK7lT>J&^V zoum{?MolwRqj3pTO-{fjR8&!8hxyanl_ixFSYUA-5=DLW6-`wmVH1u*cM|_q&R5uo zWzeQ{mqePcPdk1PXe8AX7@G!-l#Ma3WllAR#;R7BLBa}Tjc5fG(>OvtMTQ%E#Hwa2 zdFh<Hg($z2V#V9rD_?G^3GXowyu7Vc4pl*Dm7XZD6H%>}bnXF~`+h7uE= zM);FxDI*#z8I>|BBa=~8qce1=)0^m&!!e-=Pd>cUo}{rSf|LX=0x|#MU6v7zs8}r_ zZ~GEa{^X2Fk;GI3QQME^VkK*UNht(590vbErAXPOS_0uv!klC)f;dTIN=leOMn%Pf zoGNs<;n?R66tsI-M_es3NUpB2jk@5kAQ3#@L6DcohTQ8!LE6_kAUTi+DNLpD?jNDH|X_JIdBO)N;jji6-4fY(QqzVx! zK{^$zS=p~T{4+>8idR!N-ex1YGRG_RVjgC4Qd~9Di-{2Oynpm7MhE;@0WriqgG5jv zsQVE)zyqW9VXLdI3Zpol3djAG?2I1!R(}c-Od**lK@m)<`cTs%Zv63&Wi1GO+H)If zR3QdM>k%~rD_GqeNl20}`0 z934SKs-9P6Ly!i!Pd931Qi6=tF4|b=KwhOA0qUiye7dA|zKV zR)X+@AUGNbb{u3^aG}GJ4gN02G}f@+_>?1)GFlFjHrN%j7-~Q&Fm8OOlVdTKoa6*b zZv`R@ZH%fWzxW3hGsRFDM}j*>)m~uMDLw zY%0lVYlvKeT(u$Es0leq0t`XvMaxV9O)_A*m;3)+Yo!XK(07%jkZi~i$OA!@`K(n) z?buYnY{aX=@`n)eA%vOwV{}0ROpphKk01$J(RiSm=@^Aak;Ty}e#!BUrz)}`Wsd2v z22yJ5DTI}VO>~G5+29!wiIxJ~r9v{SKKX{HXEE!k>(~fmsvV?t|B%8AU_ikZGrQRZ z(IAjqO%P+eaN5kU(?Gs5mxqqTCC*?5NN%FrOvwZ!o-tGp$)rM#5F}An3R7tL6x)(G z!-&EyMrKDM(-MwRAbFD8I9<|Zmy}Mp1-U9&;w;n5qG}|8%FA!Z8Lc-}CbMcfwZf`< z5c0NCN(+k(hnzbk?GUV>u~X-4KUdXT2K-Qys!HS4b~=SrB~8Lmt5i7{I<|(&idn zTZn|%2c0Bsfhg@C&n!qZoh^51TGKAwO7O&^C5)16dCNFv+nNqyPSD7NE57p8s7O28 ziDxaj2jPj5dFzyYLY7p;cqkUFayPu#)8B6b4KQ3%6JgLTa&@r=oDHJ3PSI_J$zTRy z_TFW`7`z}`p6#6)YBnHoj2mgRqd{CsB(emfAhO|AxA5nkO9B%?Yel&mhkf<(qR*>_ zyxxG3<*wl5Y&q_jFjY%79FN_#JU;&)&-n+!EA>BX{Z=K&ecbQ3W8wYiDJNDp^s`~< zdu!?mdFnuD-9X^lb-;^$ZCd;gi0Bj>B6UtTI7WbULv3u!3@8M&%^e0lPGJGbHfY?m zDML>5jh$TEW#oyXRGva?%BlI#mULS|92usd08K!$zex}Ukzeo=Uf|me3Phkp!!iuY zZ6$;W!NfZ;gE9C-Wf%i67=u_G*Fdb+SQG>e`AVh$2%SX3O%x&NF+(&cL%liSaK#a| zEuIzlNL7M3}d zUs#-F2*X@d!#8|ZOW@PoNXkHHiF$mENfeIaEdy6PlxUouU(Cf+7(`U`(?CqaFuDZj z71wdu7McBsI*HLGic#PFL^q;fLL@~rkc~WEQGW@U?pZ^W8okg9teF%81#%kP^8>NqG0LV5JQX8H| zH`sy{{DWWhB36dc1%?VWlmw)d%19^!>8Z!HVPig)%HkCSOhrQvZHWn54jEDenkB< z8idGv*Tdl7t-QwWI7tJV zA!A<5MN%}*z#zm68Cl*L*FfaNq>PrA;Dr|=kr!4TG=_#Yl%qI(Mzu|wLj2f2$YenP zL*pZ8Yu1=!`sl)JLZKp97aJDsN+mmV>(WK0iuH4-_Vg} zK>!sk@|unoX^F*>p?w;!JlIr{8#<}pdRjFk?7Q~dSZ~IMw^BcpyrGyH!XiT#XX+?m@xXKcDkzbJ5SGFSS(^(97 z1?#QUigcw${dws@;2IYQ#4hHkzYfVS>W1eS#D@NvFtUw|$`ev>N}SlEri@Cs8N``P zV`b!oGXO?3Ziz~K1UBHsq@L0nXSzR8OwVOZ!zV%}$Aq(<265LBEj zNk|kCij#W(SgBp0iq$FA(=g}8=^-u^E4Lo4rqK`58X7`e!>}bFIpoT?-eIyPkD!=N>mVil zj3-iJ6qZU~JWLgO5rm!otKt60Rw4u|{Az0C%3EX#to9(j5sGMZY7gFpW@sU0P8<=s z&_OsuHK58e2m@wbTU*9WSSTS2>Core1xyT-GZ;gleCop)pyDjCX2 zNW{>GCdIcEn_RGoM5ztxT*DZ8RO|JMXJ(f|;1P(ZDxXr~x(*nI{OJ0)&WH&qv1EhM zsS$JkzLFYk9BMubczFZfE$PM>kMW2DN|oZv0UNk5YaR&(HM$aRgctmvPir(+f;BFQ z-3r=~*kgJSPstbDR>axLjPkt$Tn+AzFqmVST|w+l**#0zsZp)`#;W2U2-8aV{UO^5 zL<<1HKL7y_#OL9@@IcsSkt74kqU=BHfA(O*Dvw ztV&entk#hc#5$TDFsKKlyp8UD#%|?f6ZVr!#3M`a*?y`MMx>f=z28WQkvmd@H>{sB za6@E7#-SSIhI~~8ZHusyt3hB$MBIlsNG-THt;2YT!|W|Nzz0*tkFjO2ubzjBw`=jomz1Pb8QS5(6?%n*?jgNLHlghH7?R0T-PZdIs`V`*j#QCo27M!}h5Ltv&b z+#a0};T401SY+m#09P631?lS8d0en=gzg!ykTPs(2O`)th}Uo2#|Hlgbp_UIjBB$B z>o<7AMrXx0Yzox9#W#eoYS{5|+6qOy1*SM2rd$`hxrH`}^rS?|s>WilrY~3j4ar7m zjFWsr^+wl!X@dq|jnjDp#0UhW83glCt7`=CL$?PSwT2lTY1&aubLq$b>c>$N1Sch{ zH<*XW$kzdpLxPmUIh-}}gw;2kgVjKE{aLU2+Rq2`YU9>5_$mYeM%d2Sf)%8258%Kx z2ev^3Y&Bm^F|>sf1{90Q>a^WSm))K^l2PrE3KakFOT6q2orK{qL*!_N>S%F7cxbfn zMd&@@99FDTY9eAZh$4yhkH*NZPVo(>Nfi{X;nzav{sFUKxux#I&aW5n#asic)4be>Q4w?{;(q}(H9qC7CWO)DpUkLg z2QkT#R7{)@ za6X3K>xJe57D+Y~Unwq)tF=Zj9Lpwd1F(mjYiIDTBE-E4NdzgnPjAZa*z0^tGD(zY zs>o6_Jma*Rg>#E{qMgPzh{N%%@g4_Dw^;I!Ty+0pGF=fe{Yb3>CZ%?3ifph)1nnl( ztdwLZ%*rj|apMt(P{flmlA9B{Z1hReDDcfua4J&nKb+| zX^7lLRSJZH8-#;vIxl9kvrYDp93h(3YG1yPM@@F=P&gF--+ar?Dx{1!%c2<*{+V5f zMGS!;YdrN#v0u{~ua?enXx`+J4vCzmwu~z^xOSCY-?h7|9I<>*M0CzwA4{-OE&NS} zH{6F)Lv)sBc}+T9%;Mk0STNMNc?Xug{N8r^v<1{L7&2{yDYu7+$yYIL#P4)a$$WLy z=7qRWyhRj}dLE0lSnxIsuqHNrb}4$h6Z)YY#3eP@EwTU**eMI6{0l?4$s^_kP3V&i z$uH14KF85C46ztJoL-1}Ld-hQZxrr34P?xrvR+FzIONi}k!u(G+zEKnAHH4Gt&n)g z-gQOZketA51qUWf=Ix)jYzZM!gJ=w5MT-|P zW~_Lvn?{J|1h)H!OUl3)9#N)Lxsqi|mn=uD1orEtMqn6k3e3q8m@#1jnf(hYEt)iD z(*7A0SnMCur7Md$r3q1)PM`mJTGfix=g*7Gj8VKu(Wf%A6qQNLb}b>>jN2;0mH6*r zLT+^5x}^rUt;)3m`M$kax8~iI9W~zNhWKB%yWJ2&w#axOLyZXkkpr2Kq2h|eP<)FMm=il*j)5FBeF3n2t>Af!V5@3f$p@tMSB7dG@X zU8T&(y1$~OgC`$M+R@AYX_>!#uGqNxzU@U|P!Ti=^hM5UpA4n{VQnx55YN!G0Z;Q+9F6!wX-KN=#Ow^V4 zm-t?9#g@{psCj~p)2QHqHcQ8CjYe!*rQ$6cULcSR{~n#^_qE74g$-Ajac%Up$orHM z2h_XwSBmYLzaXlM%~{IJL7*J`2a)t-j(`M&k4kirGSIoCK@ZYTs|JFhmE;U(ERi5Y z1mvIo2m?YF!U)j30z4)EU2aBCQVm2*6u*REt4=8~)@$;Xk_?YOH8#j@yU|3uqUP zYy&Y{Y|&gQH-i|^Kp-c9$mYTrN0CYDG_{jsLPnQIi+IH*6O$l=Naqn{KxlSUfsw(k zL8vdG2#i8x5ky4z$d&}Ek%6jC)|9rqFJUW)NG#lXgwvcICeb3P5e_b6VfQv1v00RK}4}f=cX39*4kr*HW zCn$R+M1=7&2Q{$&B79`r1p}m$4zdg@H8~_EQF2cDU1XgqX=mBqhQi1>3NgX#p&W7f zkLM)>9pZrH#%zS66=I}mToP875NgGXV8%^(k|mV(DY$>+lO^OpSlSZxP;VKli!SUX zJ8MEr5(>l$Ie-BhEwY4buGBqntjG_3P`U+PQ;*&ph)u&tvA zFy^e^yGWkY;njc0V<2ChXhN2gSB%ItA$GmfU;7%QbL=ys7U88+fB8|DY=aud>s^fO z$sNlm^B+S0Xr=&(n%SBha3#Aqm1Y|l+6TIabu8&%LTr|h3#w$byV6x9v6jx4c%xS? z>SDaOQzDmCtF3fuR!0YdRlIhqIpV-&a|-L7h$hc(o{1MiXlSIn4p*Nk@#|c{mXLe= zW4m-shN1zNnGykeXLJKOtw3zb$1)cUD+>OHI+O8` z!?F^77fH^B;0sB_Mz*MhA|q@J!x4Bzl5lL}8gL>xYMPtnTy}BEevZG2SJRV<0WhC{b{(W(QwZiwM5i zfNvsa5oKX(&Lb@tHtlpGDp5hjC0W*pGW5vWe^5}TbK#XE-6vIyX?xo#;qzeZ@@-54 z*-T~IF{;H;5O1s~$K47mER%b=@z#VPfr>Oly1|fq2lpc0N^U-59Ai>aw<6{~xgq=Earv<>!hzcG8IDO!+LyGH#J9 zzS(BZ$Vtweoe*Fk2paKse6}CI9`((J?}w9IOH%IBQbHV>N7P==08x$Kq)s^y@Sfi4 zpBm8i(hlxEM{Zf-E9da z@c%xk3c-y9jW7JFk5(pTE?z(*TuugwD&{i62FWmv7Kj;Yhk}+yXWZ%kTLbeP>b|zC0y_k<>>M#@tJ6F zB`_rY4&;IY@Nqs-J?bVpq9yg5h^oBfu-5A$if|>!OFe2YCCFJNMZDb;lN0bmHY*8gN zjndSk3G+sM60WHJg~8NI0ULrEI)i@Z(3yq_olJ`u=`k25u^!z^8V3UC5`rIJP$8nM zVN7w|;EC(rt~PQpMyAK=y3r-xAr?o;4he202ohf+%UA-1;#Tkf=#DKEUj!fBV+=tO zbIgzok#Qtbf&}er_O|XFwTeBGD+1lB8=of@S;DKv1~`^uY@Q<`XK4ZtMgu=Y9H`+r zsG*EnND)y|ARMurma--8@hKn05~cFkm~kLJ?;o=AaxBKN0I()Zv4%*-p<=`q^H8D$ zaHd`b6V=teULICH0Cpr3Ns5bK2=E>nAGF~boOCU? z;To)A{T!}Gg@-Tb1~$k<`2a&qf$S@r1v>$-MiCVM$;>QeFyt!MLt|nyX?!IwXY_LT zGExMB7tC|mbipY+OCSpM9}cxq&{HE~@E8aM7=(^J@y-`X21b0XL&W0Sj0xKwMbNg* z9a|4O5U{WqVj+Vv67_G=0HYhAK^ufFC?ZuW|AZR8p;u~kS}b)#vmqE3M;Gq~MC1}x z)$bpmltKd|);x+*FLYPlEL8q(QAul00kcKnBN=3LJrc-JMJ8K4A_m>#Dk~yHOmkOy z#aG7FnRL`vOpb5(BpZU%V+dvc`o&?gp)T%69t(vqc8$>Ff=SI(BMxO##S-=u4ial= zS(IhN2$oM+E?D@&S5V|O`_;#OG9zdc5{HNXQ0%fjk^x3s4H_8-M*PtQVhSU|Q(8}h zJS$=q{(%=NFHkWD=MuKmXPH%G&b1qkiqSM@MPb2Zl^ z;^$#it~)j2T&2+l*S2ka_hUtFB2;4kO}JmfK+@A>8vA-NWX6USfJgLRjd>ynfQ z&2}Ybx4t^oB7(uyRuuc7aTvTqi7TRrRpMkNcqLT!nJ{H}Q4?)X14H9$i|?R*6 z3t5e>ox+!J1*Mq0!`F<(Xz_LbKtt1P)Wa}Uf*Kj-G|qAr%Orddj&OQ~wp1_AJQRpA z;)tIKX?Ov6(-s;*R&I@fk&hVYL=ciYsE`^MB`7$GF9Jp}`HsMqkV7_pf>`7NLt~?C zg+;f{$`>V)Cpk)OE*0(w69!;VH)R;YW2lG@=e5w1W7n)^`u;cKY?kJL*BE;CkVIA* z8<;JOcavizd5P*TnYr>rsPrzj`Y@?3JlHRwG5`D+UpBOxX=^*c`5OMQ~-#@sGQ5ph|Ch(yKp%_!O>U^*cGnL?XYBm6OXXZmqw z!E!RHZk-BzSLZwy0O}~yWc0{tf)^2X2 z$5p~8v?WON8u(|Y_j)CqIU)RdwlU(M zpOR1RxrL0mS=ajiD}h=6Dnr+1S!V^=g|=ol4KRvo7^MsAqRc-ueu2}E`cbeKs5c_MTn$Fn*v1dZ zw9Toi1trQW36Bp-Yi7NM&N8CN*Tf_oZ+NMp)Tc|zIc;scq6fmw_z{e99I5BJ)PJ>E zFdVMyyV2XaHevS+TOt{J;jB~8(upl2(wo~ag?eoQurEg%QKXQ1#aJNLoPRmm=jN5+ zxWP?Y9Ru9rm^T(h)F~xGq=DI1kpbGqXT>e*wl)V^Fn zLIi9Rq7^uPAW)$qTz2BqHjTI(+%4kE!$=oc+~Wnpr(axK+he{3Lhh#mbRyo$-kYUz z9K-LvPBZ$|UANv)T0Odkm-P4O7%e*_EZuL`tpT#odOqqQrDyy8LwiNrO%v!?-suO~ z(IXy`_faD*p%4Dy5?W%sDaGtrqSEh3zmO4TU;iJ*oZMFensY*~<(~5&z412jdFKNE zi`#?cy#v*Q$5D8^C1%f5cPXpGM0J1JYC6Q|41FVMxAMybMRMF&(3X%B=Z5{+tn~x* z+n()(HyC)~;alze|8)EK5ko2&8hZgE`ala*q7)z^7F7Qwx_kw90n`EFpTL0x3l`L6 z(BLm$2^%&%_79@Ni4-eZyht#aKxzXyZcL~VqsWol8kQW1(xk(a0==a)D6S;Smoryd z^eC`qLYy3N9^*MMBsGsA4TcQ4t>{RN8YMmisq|mcm;ZPLyGjsiLshRD27`Fan80IB zgAsH((yTzS0;AR{*vHI2EpjX385k)N!5b4fQ2h%yu;7s{1{;s;wLtXH?9bJ7?b6(Q`$dozW&VeQ~qse;P>_Y#Om`N7Xma7G%gPW5vr3C9+}# zl66Af!v~sGHjwQ9 z|M%;>{K3gk&&RBj=0KJuIp!z$pJDv%N8oA!_GS<@n*kNuShVQ|+fzXqMAn45{pFfS z!w6K%WwWqC3Mm7vLJ%_pN#vA$V*v(>K`jo%$w1X5(^aj>({$EzS9lmNrc^Q;M9aDBOxt8O0Kyvi0;DMN|p|C2@d75~F3#1r`fI zl@OBs|D=}?t_&r_Bz(I* zsp?BkSt**K7z!%VN!tuKXlPrW2(5T}9#)i=)2hZ)o)BRf5rfGn$Qn@zI-BQH#8y?% zqUowz(501i1ze1RydlUxsML#+y9u$PNThW34&wfO6xqodlZAt;= zY%@U~$=vf;CqV>rq6H@OAI~TQ2pG^6?dr5ZCRQ}dK->gI;y+zEly#;Qz0ql>0*Otq zK>z-eX}<)W@=soE=jFCQd5KcCKycI@w@6P61jRpB3{*uH1L-Ib7ysBGgm(_HnsVbK zm1ognx5S!@W0gBzkuK>`7TJ2Yx%@eNz$#kV(imYI-cN`5M6S;rMU9e`oU250QAH=i ztcB4A+U$i5PKbMIzZnvuzxq7#rv=vs>9IBzoO;K?K7=&>Mk?L25#s5{{Dg z$g-m9ShyOul zViF_Z`+`MZGRjg7Bnw^;NENQ|QNP*fYX+etU`%R|Bo?FyR476$|KWs!OaUcR3?}>_ zR}qO&=A8eK46Wdozhf3;7nIrDM1Ez=0}5u0ISmX04M`Q$MWv7xiORPK0=i&K%^=>C zP(n!2)rr9EA3{vXiv&_B5nV(g*;tOYj&YU$V=T%nLwO7^fKik`GHN1KyNKGxBgynl zgi{zH-$+pz7{UHSu@fCgM(2~hCtP7~P?)SN_vVDmRza2q*{n@JOA-0`vLUgu-#><# z5Y(dfRui$sE}-Mufx?PN?u`ig)R2DTALB4nQ28h4B8MAq^2*KAZK!MP86g6gs75X@vS%qV*>JmfPvI)Zh5LjZZ>3$Of?9U zevA>OGWCqyeVTl1*O^O}cOb3M?>`D`5%JX}Ya@a3M9L~3Dm$cJf=DkxB7xt6jMA_b zu?|7#QXRP{45AGoGeu5mql-c`!aDMyNT`5kS<3lG7yYD1J&HcYg4hW~aA`q6Ob}G{ zMa1vxWkm#N;)KNNjH{gp$XqL#*g6*%LgsW;Je`|gP{v6k%%Uxr>x*2xcCX8|aeSOx z5z0)LGs!R}FUknPnT@1U$wY}na2*``%(@|)!E!-LF_1S{*&=9=OLZ#zVCn>Bz+e6c zwXIiey@;<~1bc(_-XKG`P!uKqYc5E+*$k?QoVy@`^`uDu2Jd$(Siumzu=-$1;lLa? zyapC?e?^KCDKJ(bL@@L~VoFm+V-BYdadbj(Y~#t;VwgP5MWqcwKwJnAN&@V49)Y}Z z7@`=)1i3gbdVQYn{sk8*{>vHNSXJ&8c_gnEoj_qN94CnaU&a=qS|dU23p=|Z%XSEy z54Nz0sIuq@x%QLSU=V{j#M_?X0w)a{-nUb0`o&=ujdm4kR#*3tMy1Oaw~zR)2W^CJ=e{5Bx_EvZP@aK|TdWcmIYFf<<8i*AV_k5PpYn1|fzNp-TdY zF%CBv$F*^dXBch>hmPlXE5~?}!GOb5UlUP>76E#J(R*4(5Ud~zRl^XJQF{d;2r{I7 zFvMkChIxnNG7B_aPy#xC_zx`T5RVW<1tCMhmu#H^Z;w?F&sG=dW)Osx5XRRK*&!14 zHW3d+ilp=glyph6SP@4DVV-hkyhuu{SP)_$epEnqT=)-r1BRRxcP|x%Y$tcE6onK) zj7Aq2e)oR@F;g?OjL&EhS2z$vFc6CK9csuih&K|r#a?hI5E{pTd^i~n!H)4LkEEAJ zwRdv4#c8?!aB@!4j(+%#fWcjA)nm;yTo~9kk6;M|fjy3(h#?pWB+?ZjsC^ExQOcZSrFhj16a9B1ejcrH#q|Vfdd7W$CPQOHF9Oyc<0oQ>!@++h;tZM5og(Q z2$&LIBu4jG6=PXP-(-ozwJRi485?96-sW`K^9E^9R@ldondlH+wq+8TnSgPd3E`n& zBM`GGL}?&Vl!PN?AW2zpg;eA>PrgrZC zmJm}wh3ms%Pw)ip2RH;_1W@P%%Lt7zm7Np8p09Wjf(3?8x}Mwl7tgqqAO?=P1fRje zhAA;y_(_qg`iTBgJt684no1ETI)XANnvn_^Ly8$*AULhbb_CH;KzgLHxSHM>7)ojo!8sB% z;$ZOxaD>B+SgKMOfu<=ThGD8v7}kx^_!7I?VT+}#|G)+7IfVqVrWPTeZ+ai*NDxBs z1D^vwwo4F z2BbO?8tJJ6ajz6XeI$jO3DK&w`49YxumMXI)ESi&;jjtuksq0&XrKlWo1~oat8j;; z0&%crXarXJ4~523hL%KDDy)LBvHSNIOw_Bfq*zrt7-0&fheoZSWq1w|R;v-9RPh#s z>L?hYSI4BMD`yKmn_REwTn@?$9g;mmG!WJ2Z6m?3`?XH^O0c21i9m8mQ!A>gX%Vf; zspIDmUpryY2$e7yg&#XhsfmjOkv?IXZ&eVJXzB&&6H@}mVQ6ZjAa#rmpJXOygc9?*FKA^D zm4cDGG;t#IXmtq~y(T`CYPA)yp`NH;Rhvp>Wo(jZZ3FhNS380Nfx7@pyagLW2{A8L z*RY*gq-zsN4S_>xps+|SWOesZmB!k%_fr1va%SR;gGJWks6T25!lQuTsaOvS~M<>IG&0l?7%yQ5l70Ktw93 zI)2L7gz5uJ>vxQX1yWS(n&vjFG~%*Xm_#ot5R&y#XiR2Y{0~-Y#tDHVdRIPw^Tus# zrHpHgPXGn{`#0LLH{_#Io}|C*=Tbz#zZ^>t{7Y}qS$}?G1a(ZMXDrEW97|rHxc-+! z1~^sTWYY^_2L|f;^f6LGtR%j#Jov^w$NhHT+9I{&gs}mtv2|;&tjHUM>#{-ej zNyHsE@X3vnvj&l^aI41#@hKufKDhiBpYnCfwq`~!2AtH-$47T)05NrpBer^cS2xtw z_YZbJZmehqcE)`ULBqW(BXzL`OxGz`hCQPR!*Bq^;s$k3ZM##gY+gMOp%5t*EY%W2 znxOdxqSO%DBh~}a%WsVlPoN#z7s0vN1#SHgJoskha|Iz?5ER+aoz31>*O1FD(*oXApq>cH!5G zV7zYYw$oYwG5t)_bHQ(Phs)(>)DR__mRLA5n#Re4`)zj z<2DezJ%ggMiWm;V=;zWGj(qB75PndKsCXa29Nq#!!_+q3#*Gouoe*9al<`v<|4c-}{ED+gB$_Zfyb^vu0USK(y zd=6pS27!`yP7!A=68hZ`XRzcnjMOv?b$!s~TsMRRq31@uDRpT6n^lMo{e!2&_+6x;}(9_EXF)C3U-81c&# z@#z0R;(lQ41##>bVd*c9=2A`-P=?fUAnpGk?SgIxIf>+%jo1UR?9wgEMVICUCf%)G z=CUpjs($4H(dI;*5a>P-dVuEzG3_t^5$U@PUvP`AWsl8 z|Lz!^lCz=*(^7#V+Ov5%W;z2ia}xH%<`KzVj4seKc$c`A*^FzV7o* z?FLcs$Ug0taO^#=-7m514I%adQS{4g5It}AZ*LKPK;d$*_Y*1QAZ#%}4;fd}MH5HxNGi(e4Z?FUGW`jubY zv7YK>e;5_a2>-wcxo_jyo$8BE@;GktmM;*wpZl5)_KcwEnr;Z_-oXOF^yaSeFi-OX zk@Boh5SX9&hR_Gmj}g2d3a3uO!hi0DaQMPM{CEHfcrf1HZ}!vA^Uxo4cYpFd-ViHq z#3XzPBYf(q4iNtY4kTF6pukH92_{VVFBHK({~{_h*eIbSffzMnEXb(Q!HE<_jwCs; zPe_R<1^N+aXr)L!ZVG-Jh>>MVi3Q~d)KfF#KaL}BiganGV9=NXar^@^;~)o;QKe3$ zTGi@Rg)Xoj?D;UN%7R+|{;dH@vdzDd?4}HA;s(5DY7s{;-A)sB2QAfXn~UwpNv?4eL>DJ`eUxXI{Htb*JyY_ zq!Ffb@IeS8B#8u)UhqOBvHnTOtCCcDt|yA3JLtZQAk)wgIXD{#JlmY}gEJD_Bj`PZ zj%&oT@f0%%qq=DSY{@4FU3%`K8l{rNvCk@M4oH}+3J}5AdXnwDf6OzeCpDqB+9GIqr zKKkSnLPNR4@n2rTfYP)GBWP=%bT`Dmn*HmE_0Zit~>Bd@A7T|GS( zh-i);MG{%VI{uN#!3-Mt)5Od@s9b{>`{}K>yk(Z8f}Puxs)RnNm?T3-!fRU9ob!4; zERVbn52G97Q=Fs&uZQHC@U2?9*+D*GI~;tdD-)~Mb`@_aLrKm`s;ss1>` z_l^+%iq9c|3|-M+Na95>)WI{h$D#-m-rw|Kj?puto;7Sa^5}pl& z6xAun=?20!YXxOy`}@TG;x#*h^r$Tg9F5sX(;Tl6q;M>Pp+M576R8y9Abk2ra>#TQ znkx>prD492NZ4*1YIA&St0+&xA%}HG_M%Q@~q@JQ=X6@da=$xP_a5n zV4`rFaNIz;Gl{!-&LVL;7yF>sOBm8bW3kaz+u9?h|1_shy%bxKjQ1L9&SXh&0^L9$ zp}G!Iq;XvO=07k&kwpw-5{s}7coa9tuuTSP;nY{PY(vaY0mU*DQJX>7WfyH)gis9$ zPPJ~r7o%LlJi&1oQPTE6l=+2>R$8Ck2m%8=W>lk7snt~qX|GUdN+bp(ieS)FL!0

      -7eQX!5Bu?R|^tdJrsaw%&*(NAlk%nm}zrymcdkZdmOATRp=nm{Pw z%Yr0TAe|gYD~1C>f+Uh8;RMm_An{c>{UZ}pl^j8)^pTzf;vbMm4k=7gxPS06WZB}$ z;25Dh5TQ+s{|IN5e3Lq~u61_z@xu%W;<ibq$JafDjRYeoL((5 z&zjM_%<7QqsV-2Bcn!}EgsT5B;vrKKQ3WLnz4b6PGBV20K=hy{nk*E19uWu_#bzD3;mlYAG9L9!A=e=#>1d~+xHZR=2OxtIkQ)gr>ZloSf$NZKS>o3Nfo?~rSE6|N%jvi8Uzx{ z%;taYH$&Aj6I===iJt;hIz=AlfsI(6mK;aTO|WjQ2lK=x6xTzM^fEP*U9QbQ^u>{U z>oFp|8tn}G593nhWikyabcQ0HDH%|J=hBPgXtN2~uy`O)32u{-Mn00D;+EN4UWCy? z5jp_!B~!7YWI3XT_-w*FXS7*lNP3`wS;?YLB*;ww(JPx4h+kl_%CfA4H5T zlW>L)B5uDWi?duYb3v?hVUb{5hql$$Rx-h*<=t}LJn5iJp7*W3Cfl491|st+Gg95{dY9O{8Lz)%iPGCf}tp5YBzaY z?5yq!)0dn%Y$^r`Bn!j`J-Bw;!Pn8O7^GsJdyluLGO->1L$+TVhYpjbDQ!%HNJgGw zgj6$E5c+0f%2OqrLe74u#`AT&Lo};+E+d|_D_J1P$@@XB7oT1_F2`3Cd+EWp*7do0 zUo4f(qEHN1En&jmgC?gyTJecFOBcZix+{pZq#tx^X%P~1?VBA$o4w*$&{9cJzXYPY zu@1z(z5IP4YA+Cb3uN*CSaqVI^_ts`h$^Y}cyFkaP0zqM$DIcrYw~x^hP=A`Y_8@W zkc48A>}EHGTQ39UKIkkGIky|Yni(#GumN9kIE1K-5DF3+Ig7KHo~VKr0-BM!2seHs zmxG{$|6;!qVm#5xp8k`*vKfg=B8a>Zv-?US!25^)ZHtpUtCG91o0q9Utn$904Nm_o2V)(JNNT&p3pmXU}gJ^KeV5W-&Sz7f;4gOCYc`6rPGgv4^3 zJfK2@*bOi=5K-!&BAmd3ScGg+E7co_NfQVvgoM}7!f&&Kps<5Cl!`|Z2s)e!%&NSP zfSqp2J}3bWNsxno`XQj;j6U3oDOm(3{D;J%FGBnWwxb9pBS1~83Me~>7!ZOi+O)0k zj5fTNolr!92m=69K&-zlGYIf_JknqcJ-C(}GO#}rh*ry<0mB>V(-KekIs59D222}g z*)y*zh)GaDEtwMBqqO)4lprjKJGcXdkP+#S4vdJ7|2^m{-O;jDR0z!*h(#y_T4Ob7 z%Y<7jy-6XhfdE4>AV)>0gx+8`4V)xN5;cX$1OVhhgBZgroC@;$hiK$J>cEYE$b(8` zJXUPN-4h6VqzF5J3)>n9-I2x?6eqa(4S9OFjwqx_=|-Tcibez|3OlDuTLg+62x?oJ zO-x%8{V2b5xD?m=biU zPr7{0g2Iu(r9Jx|7fv6+f%u%W^z<;1k zfoPR~7=yWsp1fcx#oK;IKgQT_4!#;eJ%e#@kfj}*a zK+N%+s=L8IIT0eq(U*?^KW1X6)>+UI(~n#{m8xi)sh|T?^eiew!sUZb1TDyQTq`vc zRP5stn4&X-NT&i*K!T9QNx%a!JP0m9mptf+9ZQWxu+EVPgn-1pgZNW0B?&fk%&17L zF)Rd8)6XpgM-+W6{6rf?Wv@Rq2u(H3vmv8f$^#*4wLwFh(8$w&@Ri5#l!`$c@Gy^D zL^n9{6aR}U{Ckyx$V45T)=rFy|B5Nj*Q&2(O+~6e8P@p(03s;9l8uC6G)Yy~`Wn=N z;K$*M$&s^)p<+Uk5F-8Pr4fXdifE+sKz*N;sTV#QVakKpq`LrvlSC zwQ9A=EIW0j%ZN+RsX$q_9I@m8zC3_bI1SXz^Hjd-A$tT`h$D!VGnkn@3&bSLzC#Sh z0YHc~9CKw3xOzr{;L&NVO_wAH+2o!eb-Slci;CH{C8Rmf(I9jcv>Bx@F0sc|voE<+ z+MoNXUK*S+SR>PGsIj z3JRj8)7_H2EWG7;0yXME&2gMov#O-+-9W=FaLpds*u%@T(FT1!e?+kRX@gMpp%|J# zqZ~|Iv{{2N%Iw{_|C4M;E;PtmCDkAjHMMF;&duIi%)Nn-i6er;OjX)}&|QTngmX%& zpJlh(f&_O0SbTJm3ZQ>LYh?5M2-4NIm7FvLX&QDF-h()_} z(ivD8zKct$4b9=CkQ;_Lj)9VogwTUIT3YJ z(B!o(#QoAvt4s)1-Bx3zi@RB7yulsIJJ!%Os!GDeB}V%o&zf6T`m#zVTuGK%iAH&_NOs&-yX4QSG)JKA3$jXz~Fb}wOFZ&X;T1}@s zpvqtVV}^X;|M1mbat!0p1xUhd<=(h%;El##x@b`QWRdwIut-mYbFCvretN z;10SU$Dt}zZdB!^SxF_1I2tjJzNx5yNrE6@9IJ|+fLn!V15`wpF=*X_sAVuF2zY#| zNt9SmHDleBX-kIZeS?H6CfaN^VUkFV-RPxgCWz@}Rn`pz!!=y5Y%%k*5JuK`3-W3)uAmGh zqcr_gs^n&E-YVVU5}s3pNF+~ST~5rN%8&(KMa@2-n{BD;zR>JKyfi1p1*YR2+KVv= zu}F=~rQ)9dEhoRNsUNs4g&6)<@_(NzU!QY_e0S9x3BV(>;|bL#ZX=@?W8rVxP`n za2`yx$|fy&OR>7>E!hN>RdG0s@Loda9z8;7e(C4DEaxZqu~ zZmJmZomFLXV#5N5XHJcZkr|uw)?$kAjom;O(A{Vy-#Ku;Zjmt6CU3z@a3U@yh%|CS z>%3(!bet-M5I?X#`!g@ctsc7qj@S6cBveD0Y;mH-X1Z*()Ge^DD)vpFgr_>)|Mq?j zNk7WL(QMM(gV7Y_e;DM2oaTajX7O&$eoOO@24LqFh_EFHevb3D`{%0YO>Z|o$*oOD zfa$6TPa9VVlSZ4nNog3K%E|mRjEXsT_u%?#gUEp{h!9clLdW3<#PoAN z4`j-eN0cRD@M7I{obag7$5NJP18?T!fO7mA>8lv<3Qu(i zX~@y?ig%)GfcW=s(;`d)5BfQ%@Sh()Zrms| zWJsVLfs7da!?-ZiKaK)7Ed=>*(a44WJPA~!Fi%NH{~)pa7t7PMNBoDedQ*-IUp#ohV+{skWzdd`FUi}xQ4by*_jy^q@vu2=!WxF2Szbj%3JeX^?pUb@7cDAFvf#f-2O&+O z^zUq?g|e68;aiz9%bAt`jae)(CM1zdci&dH```0})rU9Qt+?dBivJ)U)I$|`<2#cl zr(XWMws^u?!$iiE8+Di@5+sP#w4Pnzjf9DVB$-B2c>MAA|I#8oL4ur6nSh4ZcufuT z&nKIBx6n;|(b1KAR4K&RQmB!~)JzegR^dNC%s>+dkMY=}k3Z(+0+2NscF-rE@TgQ> z6VVi*kL8&JWlhFC71JVl)J9-e_$d_IB&+Deqf2Af#9f$OG6mI9MU_NJa#D@O3Qd%B zCJ>chp=1(+xgCVbR|}Ep)QKhK*_uE|F0`kOA-eXPp+;qb2PDxQgc>6(+Vvq#WKQ*% z9hh$Cq(UQZYLjRR!H6oG94<0cXxY`Jr^iOW`27G*>FHKeuIVw)EUdl|b>iVOWQ|7vQyW?S7q#NPFsO2%o*6uRUt zbe6eH`DUJ8vGuozlt1n(S+jO}bVx>h5z7z5-NXQSDO(3ydZD_9N^xn1tj*>L=QEKicMgLIlCMU zcX`PKl@6jM2WE~Y&xz3IE|} zK;Y0Oz(JbPJomx8?gu@TYvQy~hWx+v8}SIi?z4$o2_F7-=;H+iA` zQq#mKQOPKIS%gR`L_C0*N+4NL2>Yg{{}A*YCwCN#+@6#(6zxHxX?da{NS-yt8~j5E zHqa3P3u#ES2x%#RsY%&t;t{kA3@;u;iAl#d#76R6ZqES|xjey(Ja2u)HUQh}8~sA2~@C=q`QT#o5> zvy-Fbu1T^qnq-!8xj~VTc1+pgO6pe=uxw9;G~tR7y8cwTlSsqg)YQ;^ilBQj;4qlGO zqDd_Ro7Ftm-XKRzytKth`0`C1jwYvR^75C}B#;pCqKEW6hBExQNhUHRutLz#6p~WT zz@(I;e4;h2CIMVsC{fRvl#_@Gkwjh2Kv0Fa;Rh&FWV$x3rL|&gNV*sTXYL zGr!;z;(M9H7*l?r*6)J%{~!0vOGTc5m#Eq$Sd=u$LI+r)tO+C`5~+!M8WGT?yoH8$ z;njFT^VXh$HZQSxR`ObON)uHoFHn(ePR0_Uhlw+d-Q->NbgI4hn6{WE$?!q0hS6f$ zA%_|^ixuOu5XU)AeH_J2Zb2L$_mt(BJd@v8dXk?A+vGZllZq<-VF}$LR>Ufe&?J)c zJt%#Mt~BA;MPpK)@4-$gI~*}aqKUJo5LY2bUCNHa>t$>u5-pq1Zfo8*HI~!?Ho8rl zK<+A#E%V7VU0@2Ff7IOjTI)|s*~C>xd74l5>?5lQv{WXR36y~LuVnNcSmxOyG2YlD zdLFV&o|EMd+t^o!{}V}QFojwZrb zF0!VAcoD@v9091^O;)8sW)vCOZi#uk1-AIaAOg^bj*a`~yt;Qw~N90mr{ev?dzCh6O?~Sw2R=;_vXIlie8jTvksl_)2uW}x*=h?r_xZ+clZ<;Ij4(us zgT)#fF$q-ixlP9fEur_DglPo|+KYU&d%xfRE`?$|Q#zCum#7S&^+*1V(Kdxe(Ub+H zcn(Xz|Bh-XNU;r-fjG)7J=%A$mZZQ+^wE#F6fhJZvSgok{r9aU(bLNr91 zDGAtsNRa{CVh~6k$Orn&SAZA-L7kldZJ_a)1elzHK=@$g(Zp3)#SyBY^VP)~DdAly zVb(1K?RACo(Lw4l#Sq?`SmeYYgixkLrk(|sD@;P)uHUnm0^ug^j(jj0$T82{T+mU{T$j!irAF0b? zoylK0#iXIipNs}-d`NSdMB-_g{WJzkl!Y5GPRIct*|^!UOim#{f^W_w27=^n*kDxi+XrN=~!5Uwvm+m2o z>&*|0NYTyoV*D+{(7cWOF^wrOO+vm?R~+I&ph80~#33rAW_ZOLE`=Tn#34eYKpNTWkE)_Y+bos|3!ct zqd*{|LPXsjNCFlrOMK`-@FfJ{EQJrMB^xb8Vf;fIbPGp#f=E`QKrBHF=)jH4Kwy4j zVb%p(@kJ~iL{j2~c`bxuE`$|yMHSRUo#};T8j@s&VqK73k7UPZVn=8OPG@$782kfi zR%Twn8DvV}K@byY3PfiT$d*A4Y954b?nPC_MPmNLoNXCp_K0KZg=FrgLYS9h8o@yr zL2_zlHg=DtKnnnn zHqz%oEK&fyK!e7>3(UZO(q|&g0Nw~mg|2V&Ongb0AS?6LQLun z5bA>p1PlO1grWsq*r|_pDfrnZVkRk%=E$WM>5w*QnQ|(B22cwG|7nNDDTm(3Kj>(o z^65V~C}6ZGnXc#yTquH~X^@I)oK9)@C99U|szA)ZAkF8MLMscHC{x@(p)SP(2*d=q zrx$u@sHQ2jcH@NdCrt>cp`I&EAOT%0lDnEIdwyxN4oM9B4-hZ~U_2)P;j6sXr(|W%HfrlZwClefguEs!wg85|*2Kcn1i>;a#&V;z^yk6WXT$!3z}oA$ zrR%ynYrazK$tpz3&Z`huEVS;$B3bMU^y|B7smF%wqB1PIcA>W3DSOUU4 z>c5sOj@Bp3vTVHm>_R+e$|mhXFhB+TgVkcdw`#3j01}XB|Jy+TL5u!F*LFqNl5HUo z=0BvZNeGg6wQV5TK-zkj*>=U*J_g-}7a)Z#QwWkmd~HpvZP?N6-qOU^{%uzru1O?r zj|?skEUu48Yh46p*go!ExNYQ0?p*|~K#;B7n#AVjs$CfFL5!|Ij4t8!4e0tv>2^im zZtd%ugw?|C?9y)S+V1V*Ztm)C-(0}%`tI)nZ}1B5@Myn=8ZQ@`?~i2dKXB_mNPy|4Z~V&d z{L*jz+Ar-+0P`~MLfC+`zU=)1Z~zPN0MGB?VlDyq|A@;X@B%Y%13U2X>gz#x>jN)@ z1ibG;7|;Pz@CI{m2YWEs>F7bM?+5oTOe1>^6sxm@UR0j?*uD^4iE7YLva+(ZxYu;3`_A9V{sO1 zG3>Ul4IlA8IDi#5@fMSD8Jn>;Qt?7OfEZH%6Fac%{=@zjF%H)R16;5ZAA}v7ut4ZB z)!s2p^l=6Au^9hDALH>L?{Og$vLOR9A-gXk`!OFkav}$E9{;gPRPsUG@giSxB%8!0 zV{#`qu_J@BCm*sRQ!*z@aww-VD;M%4e=;PG|MDt(vLK_fDZ{cYXYwtd@-9E}Ezj~R zyRt5;vM|@OLX>ha_cAHVvL(}UFcY&YFLNv7@-QQFGehz;$1*TGvoW);E&qcX|HBA# z@C1mnT|9vIrn5k-GyAIZJF_!9yK_9#^E}&gJL9uF=W{*p^F8bHKl3v{`*T1O^gtVQ zKO?k2Cv-tC^g%21Lo+l)J9I=-^h8^9Lu0f=XLLnx^hIm*M{_htdvr*X^hld@N29bz zr*ugVaTmw&8N+l;%k&qXa|6S1SL`n#yYx)+bWi*AA?-8^2lY=Abx|AjPv7(dFmX*E zbyGX_Q!~X)*922Da2iAPRbzEltFcyd)pb{U^;d&+Sc~;of1M+f^;x5JTKle9t94tu z^;^SrT+8)bd+-wO6Lw)6_F*G-Vk`Dye=7x)Fk?e@ zWJ~sBQ+8#$uw7erW^1-gU+@LAuV)JcX#ay~llEtuc4(jWXs32*qjqbnwrjKYYs+?Q z)AnlHHf-PaZ0B}u<92WBwr}(HZwq&D6ZdW#H*g>Ka3^lXrQa@nd^%KmY(C`2+oJq5$&6_y?Nyy2wr_Y~2g9;r=6eh`_7LFEOTC{>lkq0gO!|*RD)2mpsYTe4U z>(8D4G{h8}P^s6mEX7hq%eJlCw{YWLm1^?>Lb`Fy%5`X$pa!S}FI3n|xUk{Fh!ZpP z08_y~#{v%wbny0pVufoDhPceRv**vCR}N0t_n+W_Q3`@B2{^RtfgfJWo=v;<=gbEm zU?AzBitXPyR|6kTytwh67;sCZ8d5n037M5w1Y6po^oP|eVyKXvXZM4HuWSD#I}`8m z^XSv7Ke*O1L*e7$Qn#odL6WrZVyp)V?+};@FZ+UcIoApCpjh1mIN{8 zl?+;mbmc^1X^7C82AMh0XfQCe074)rWPy=j_UY%JF~JF_LVRWf-9baBlo~-qy0qw^ zkVY!$O%^=y5}7cGZ~|ADdW7brpoS{ysO#;tBdMsSs_I+cL9}Ul5b*zW>OnNFYU{1I z=F}=mg-#V^LU&peEJStw)TlyY$thE!8(DhLup3PPS+3MpdsweCv0+@T5uG+|N1dM4 zz*N?jYc5>aGW4lNf;woKj0ai(j55~Z1BMuwR!5V z!Ltqna2MPFqNDnZO8$}$f_5j-z$$hMi0PFvSH$m9)xi>)+$URVY zWFs^FbEoGJ^JsnO9ik8 zGclPaX05S`_7-?H>RAMN|9~K&20|YKY6N-+dJBCV$iNPIuq5B>NdGD#zyl^FZ5h!} z{V>xI^#KqlB^)76O5>E$$nb+Wte6C`V!@PLFKJ%sVGjR?NW>x<@rX!Fq7s+L#3nlN ziBOE96sJhVDq8W1Sj?gpx5&jVdhv^345JvwNX9an@r-CpqZ-%9#x}a~jc|;k9Op>K zI@M&GdVm0#RK7r1a3E^GmoxXf1<5OPbo&~hQW z%%w0_May5Z#FiAfB{KgZON9KA3(zcxF^5S_TTOEzy>y5xO_EK9Y!f2J>}EB`c}8(M zT6nH{Vq3q0}AT^?n021cwPIp@t6W7^)V9v`u3fsqG3|=i zzT%6lehqApq#)SB8uqXX#b3dMh}gzD_OY70A!H}3D#lXwvgZ*@cGQX4&U*HK0 zM@!n$n)bA)O|5EI%i7ku_O-B$t!!sY+uHxy_O`gqt!{VA+ur*2x4;dqaED9W;u`n3 z$W5+tm&@G3Shl&)jjnX3OI^Y&p}N>biPR!xgY0_uyWkD4c*jfL@|yR&(0wj?ryIic zy7#^Cjjw#k_=A54p}P;MuR!$s5B~ahA~#3~4tPM292_LT^Tq279Dd9Joz0dVM#{j=R+YRm5@=~tyDjSdQnuF>6OZ-j1*=BMQ@@QhB@!(MU5-hvr@Vt7 z;MXJDR+mQd&F)3cfCe#0w@h9j>lr14pFXKE!TYVnmAR%?5f#XzUBd5*+?US`$7HZs z@&S7lyfY5Z_!uKz5KSy)1wj8u@suf|*P7^Ae4T1s~{~964wzWYT{Pcz7 zoas&6xRbQ% z*v~%I45$6>dtZCp=l=iq-71;!cT#K%5&uBce-iXVh5_ss2-Lo15(mIvCGn?7{>@)4 z^uy!;j!}L?;eS^_fc&RL2DlOXM>q^2Yfj)0ghdc>g%Q?vfYu^=3bB9?p#)1o9R}eD z76(ik5m5FS%26Mv#8i4`|02V6P5KRag_ZNitvKk;bZ36Lx8nJ->7ikEg04V?$7$}7zBY+iw z254}FB{&&as1Sib5H_e1Aovhhm3|kIf8i#EA_H^;v4-+D5M)LbB$X3!Xc7b90Az>| z_Vj~zXe$#46FC32Yc+9yfHe@1Q3wd}hKq7sY5ZXWu0&$Z!=_l9F4K$&Y4DplaFhw<~5YO-rIY|@H zK$S^^3~r&6LCFo-;1xMpm85bFMe&mZfeugklqE5GIRgzw`42}amJ>0RQ%MkY`5M|F zmlshC5m5}$kSpjAlt=jwNqHI8aFr+#l$=49(V&n$by@z%Y|^IhTE+mkV*1oB5hUK@8jZ z4>SKcp5n<9KWUZ(5u6#p4F7PIh#3^n@C|P1p4#x9Cc%_@v7Gd^_LkN=F8|rJb3e#bBeNX`{3urWo;}E_#?*dJq;m zp8lDkd!Y>?8lt!<5Ge`~<=_$LaGQ0i5fKU$E1ITh3Mtiar3VqEYLuBWDxJ%4m(Tye zmyx2L`gss;IiUklmCvxKE;t*H zN~1se4^bH@P0E_g>7R6}n)8X3w3?%?>6%`Fq&NBxn`x*tahqw$8Jnq^?~0cJY`ysQCZt7MnSf zH~E)unGoqP5bJQKFL9^r${D8m8NVsC#<8qDgP#Qvp{Plq1Ny24imwl9u%6ixVrjAk zp|TgDuneKAElRO<8V+VloBKJjD9fukIt;~-qi1oH+E5LHxs!Ig5aS>aclxmip|p7V z4@`R)6q}w#qz();4bUkNKT5Jv`4Ilf8MlfM5vmP4*|Gz1r{%B?1tGL<$(d?OmDl5TWZCJvz7z5x%!2pAIpj%YY5Vke66F3|cu5HCqtKz?aIa5!LVu8(R?2@C!Ma zsuZ!d5D~B#(UT0pu>-Nb3jwxW8xsMmy9#l);;^4)xsyUGyXxBz-5|nS;k|5RxCo<; z8-bvIsjEghyqNl+TA82(0k?3w5g3Y?(BPf|A-(?q#4X{qEOD#4NyI3zvo0aN4soLB z(35ux#s2`o4JVCat@~>cshOz);S2Jc#-b)$qs}S`9Jm z5DqF3;0c}-L8@))!v*mR(JK%;x)Kgd5rqs9#Y(|1!N7@u4wTsqrA!cA+!bW$5ZoXR zwv5OfoF15S}caLc9>d zpvqpM&Bmd~K>N)M@w0(h8;C3r3=`?F%LGx# ziyXA)8`2RW!t3lH1YHyx9V92s5Vnv#kNlgGoTQ*RyjcIs68|}qS9zKQu?z}a5d7>D zAuA9ijS)F45Jept|9lbWc@dV$yM&R;gu%)Uk<J0dt(FyU>9)S*4U8@Pf&^~$-!u$|a4Jvl+C7o?V6fizp5e+HYxdcJK zG|HzG?Hc2N4VL?t%PI{Xg5I?Gyj_nd=xz-gC$gUCBZ30s0KEI=t)s z#xBaqK#{TN5W)oU-&Z8usp8vAY@a7fTbl9TZZH5P5r@1B%49-I+b!5+O{PRBR6EAiF=V5HM~M`yDA5 zeh?MD5gHy+f;kY{AhaG1m*dUEKeEnunzsWHve9{~3tE$*o4CA+-8~`9-*Dys5apBE z4pR;j9DbIu3*5z_xpuw~f&LJ9oe_hMNG$)H61VE4c1xSzkfJyaq61zN1Pc_;Z4kcQ zljKVf7j2j0N#X;Fug|>NK%umzUJz!P-vpr!hN}+mpbmSU5)wNQg}zRnWncwf=5(#e*3vV3YUJ@!SGq?T%?07G_9uYfvl;zN*)}Z23ED+WnxMw}m zTygOV;kpB{=+>&B0p`oO$jL%Ig-b}%996Pq%`z-@mZv(kZD}GEDAeshd2{XF{l|@) zEh%{Y{?+LWr{I4x3w9+4H>E+C|F8jO3|VqvisGRDD?0fiTg@!fbyoOJGF*vDK{t$O ztBQ-$tvj0*7%eTZXv_cp;T(u~V9IjnzKtbK@bSTCuG``^PBZgqxydJzd?>VTU4zt} zUzg0+MhxuT=i0U%8@a^A1IJfv{Lk9s^g7#be2FoBOJokiSCdLQIKt)z+lh2Xr2hUH za3$;F@@}O9|G7t?1`~wPu81O}P@{P43QwTn9NNm7Zw52(q>n0e3z@VCvI&|I6WWj> zbS`VCo&73$5J4ON;cTEB`9rA21Fu8Jow90dD93m1VN0C`8_egQCP{>npltr>D@rRF z5)!*-;?qW(XkPNNON7pwtD28iT&g~Uh-oOpfAH%G#(&Nkh)#phSui1?@=Rz)ihjH@ zIsv5;txzIcf-e8iwyIFHQH-X%=_0HI0+FGuD!t9PXkaVI!?LDXW|~O}Dy}0qdFloo zP65l&&xQ{54ldCwa_6%fjZ#ORcba_C%2gc&HrRyFBu=2>D1!4U^AwuKt7xqG(wUB| zaRyp#$n*h&O38IngpK%=`0 zsCy-fS0Pv*s_UM6@?nyvfE`k&yor7lHe%4;-3VJ_kDUnJgHBY)nqofk802j`Th1Wf z&icr(e{8ZX#er1(N5oUp_3xkQFdB5MOdJH2pZT?i2qtzVy7um z(;{b-6)68Lj{iXhWAm1AW|@v~QW-mP#Cf_PiuD_4MgnuH*DjIf?XDfT7p^GLL>W9d zAH5X{ux!8oHi~Yl#xwDss|9M-ppHZq**V1IEUP_@QIzW4a|R{o=A?Jl2&j7mj~H}} zc6G3z%>lOy(jQP~Jtv&pJP0|j2Z}~o^=wZN9iS1CrX|?jA_pn76%r|5o!V}_CAgQW zvFL^RPQEQ}aM^;j=phq5DmDp{-SEPTsW0k*LfuxIWmfdIA#nc+XMLWgrA(m_(M?|? zTP>f{Af8LlsX?D9%3h=Pxu7VZc^Wb_eh2dSMzu+gkDZOcponHff?2t)id z@=b@iNM^_uGfE1ikT8ixG)`5V4epU(Dmk4eMR}!d48(e)1YCU*SCCE`WR)@b;y|Pr zvssRjBCxZXBUk3F_b|jMtMZ0=zR{R4ekfBT`$rRXfU}1f*2_d3lZWzf^=zdkHk+eEn=9iL1S{&NaROs=@1yj#~Stw6HE>{5M^rQ zb!J@I9sz|sd@V7WD~ZQ6y;+cLcGICPX_`aSd61~Bl8WjY_0_h5fW=W7%0!CYn;tY}A=$4rpg`f|`X->_en`x-2J{Ek&FrLv*ikK5jU()AF z(la|4#xRi=krS9;a!;hr$4i{#US)i1`9K(t3(X3Y)mE zLDC{HIcj|HQ$L54;~V7MDx7q=6KqUXs$oJOC;jM?q)x`Gk=5T+4yr)3!q&DFQ6nTr zaGPTtVbe6Qj)SHnC(gFZMrfuY_wD(XwnL74=Rs+%oa*VI~p9zrq~3P^0r24 zs7h+vSJ86zAFpJHmz+otXgMUfeU0HGWtkJxeyNa_Y%A7?T99F=$$|~(O+ij@gQW8O$l^SSpUi$mR;%Bgw$6#&!V|V_El7AEOc| zB2mY?=6Mo|O*pp?apCqz^isfD*mqAZmoOF5)V8F2 z7*8GOKu0;ec#(7TIU~pr^iIS?71)4jAxuu@v4)yugB>nju zNU8G|ONA)gA?T&as?TC=h0I#kv`z>&wBh0%#`qxOmKeCB_sjo^cy}uNCUv1w3KbQS zZ3OL!%CpM<(Q?P2)RH5Lvd-a?$rLL@<`g;;QmthTYCWVH zROS@I4bsL6bzP3VP6*Kzg7}AgJWC0owAdxTMu?Y7H!RMH%H;mEt<0n=9&HGIn86K> z1CCb$0lMLXK6%zBrS)X_4~}X*-;psh%1&1Zkq0syGu{6aoy%yXnVvPCzEi3-r(&i; z9JzeItLGorzBQuLXS*o9ANu20g2pW2fFfo-ksRrO9!85@ukQu&ZaSdr>x8#tAkMqBSxxN~- zzNcB3AIb^pyNG`9!36}ueOSQN+lSNJn+P;E*&{s35IhUKk`hBEgqV_Rz`%m=BK)8^ z4_t`yD2I+1!4Y%6*jNT*nyUCAzrSEHxq82xs6zj{5IWTpz=R+`(7>FvxfRezz<*%C z)N8=%VvwWRJ_)1~wm64(_&&&(k_wEHk#oX>IK#Xch=|f1+EXD_Y6&!vr(44>^@6AQ z+ZGUm7H5#R7W71vdPKj;K7_czhTy?EGrS_yn^@GFgLx1ld53pM5(&&Rwm=HABZxNa zi6(5s>+!kVldo&JjjX^1W@x^O;Ek zk(4?UjyVr(_=fWt4?{zVvOo-MxRmlUJ{7?tbNMlqASnIY2Yx7se&{s?tihG=L!XE= z85@WOxe$2}DWeKjV}~iy$kONXb_j znu8z-pr8}7$9F($(pF-w9OZAc5)F-jH;$}=j5Yg7steNlIF2rO)kn|aG9aZag- z&K}f>({xbo^v)qAn<5>Ej&lua;D%CCQVlhV9%BadQHCk;$%}ZP4)uxj%!pMI6A}4F zGpPocfX`@nhMB;IxWb0{crO2nprIM!3OD_R`)mj;l#0FC8!M5)?js`9G>DG#(}7UU zvmm`-x(4qm)T9%LY*-p;fQ>>eB`3WIM)`*x0D>OCQkAGki6EcE2~lmEFXk(sCyKuh z9f~u#wQ}%~Yy3unh={y|5G1Li=Y*04tus9Nhr8jfQPb6dU^~2k5o+)TB^3x^mD7S4 zPioK>gyRNfNK}DfR+e~yZn}USI+pVwN)f3fOBxO@iw0&0B$esQc+CfWq7ZRs7Mb1S*{3Kl^7vZy$jChw6)w(?{ENC zK&ijioYGZJ2~?`UHLp++Ww=*{)COb~h-9#aDSfs1Yow5ph-bZ2jp$glAhJS249xP1 zzVp_9XxO5ni8L*((rT7)4Od{XQw3|;yNCxN;YV(QS74!rLJioLBiD>6SZYWQdP|XF zfCjjg+kj$-;t~i+{Rbf6few|>W(+?{>I!CJ+7-FGhv>G(>>aHbj&H0ii-_86)eO=h zh$lHv$+*r}^^37RjlOjV;k1afNQQIKhGZ}tYv9?s0tUm0+kZ%1fU1ZYC|dk<4yC}> zXG1C7E2nW?h@;(zGEFA`5dtB;E8O(*y~&uDy0}vYff9FE2OV;YlkD2>g4B#T2xu7C zm9Yt;H3o!;+tn2acd}b;BVC2C0iKLm$>6hXI0rs!2RZ?xf8dQ3aaA*;(Rh2EYeCVA z7~a1yl3wAJdl1Rkb%=LFrH?TP*G2n2G5$4c4)Y7AmVe_hLgD9i|F9^Gh&SRm>sTSkNHbS$rUG&)$V9vUvm=c zi#(@6;EW(xDxQe{)J2h_gI)71&lGZv^<6g{A&GP-HL~#rap<@)HkoG=wfbd<5*Cc` z2;vCQ+|%IGZUV$26o`1JT(h`P_juZ4Y6*04C#pCRn7}k0U_E)2i2aQn-nEZ86^P6z znWRBdg)j$*DT<=tW7m|Q@JK##^B;%!90ffK0xnR$h)2&P!l2v3bd)2E?TlnN;R9yf zfnZiCkl-FJ2$dPC$5kLt_K5SC9R)gMiD=pBC>VL5jsbbRsUTn%-ptfHnjb_e0#A z<>M*Bh!$r5?3zP+_y=`%2+kcwf3?7LkmilhQb1Ca&v@l^+M$P5i-raq1jH^MR6w+B zWR1}12s!2iX#s)YWM}54V*RqPV`w{S2#m&#>8uFDOFeT;#~8a1j3#IS-rj#`W1Vgd zI@Jld=!Qe&VF3=9rnZ^MwXSi_i3BYOen`;lLg}(32y|5I?8Aq9NT78Hkagf{sfOBt zDBq&3VgbcxEBTBsE(nNe%rXwS&1nvm?rMVwU@K`?K*TeGFziQ3IAu7xf4I`3HE4to zY%3{gx_0cicx;Ri>jYs}fp~{H7KqK(>4t5AADDrhF4~*DlF!D7LRO2*zKb2LLxuo~ zc<^ig*70AVNVfJ(hjQSP-iC~76(icamcd z?<<*xk2Xo=#fbcit)vO?0nZ4SE^4tBE0jKJqy7i5Hi+>qhy(eN96@h_C~!9PiSSJx z)n;wiHqXNWabQsr25E96xrcOU@#LYH{~MSFq!*nyln5hk)Gi323vD?}KnJuwvl?&z z8{bTU2y=5w2xlt?hJ)WYPl;6aiAd&N?2ex1_VCtG2Y>Mw*rJo~d$VtI60kz?s93l} z)|FUQ2?d-(AI$O@n@$~{Xo@&wE`;B5p!2A(^V^DVEY+9{A#!1XxKiiU5myvE4^l2Z z^eivVh1k9@*773pZaW-^LTL%0BgyGJusr1AcJ)7jz;OU#2q%tnaY(jr0A!wc<2`rw zvY<)MAViuh)hN^qgH1O(amnMUmnol!uiJ;f!}VUy52>j&%Umzdls3iU4@7Xt|gAK8%_upWQltb#C*7r`o87twNVhER3yE z3;VVRSINa)#F3lSi8TGJ)_8A~&`gOi!WirJL;1KSfd_)1Be-0Oqb_o1=Od*J$&?1`@H%;-0K))$D*Jn+xAXnTnK zrZ)=Df>VqV zJ&8I0t&7)=<-l$N)d>_jQQN<7|Bxb`Sj}Klpi-v>n`-qc)~s5$avfM~pt6B5Xw2wp z_AJ`8YS$Wk`mdT>fpOWUwHA%;)pG{*Ze1sJ+Caenu;DGt_UFIldbP(PRb!{Ao32?S3)|5PZ^NCUY; z(`~omb5ld^?6e_>x@9C$O;(8`5IQVH#gsuxy)~mi%V@LAeK}gCOm+kHs3TWy?I2JL zKpJ@@l1VC=);I8JL*GC$61HS@`dOt}R+#m(C2W}$RMD3I7!LFinW5=(=0q7@#g9G? zt&|ZxZ}#`khPTz3kv;azlwv}BD&)?c>%Hh!HP94FrIE=Aq$qZX0tL-LQ~U!24>&k_ zsd_MAiYPfoGWE?}QOXsgsGI7DC0C_6_~1cOby-?M6@?@#MELMy>p!S08*Es$Nsf!1yDk@D1d{3ln{}ExJmI zn=ZQo3D@L6Od%!XKvT9$onxp9#2A87q1IrSTEQw1LTdhl=02K*rkXx%o@H=N@a*{* zZU5-m;W`q>W^soJ1y>vwno&EK?YAWaA_O1 z;}e}U(RNup`-I$6IyH%yB5ocF-^NtI(~&rkwEx3re{33C0{p5y#1qJi+F7#bKy`C{*TH6K_fVl>8Ur}U5ZAd z4a|-93=9|C=`1??oQK-}MD{Ip&QtFn-7e|>KgV7f!BefuYU{4H5Qj_#Y*{fFMo_~L z=5cIqFuBJ*?m<8iQP3V0G>G#QLXO{I#V9QCThRXDx2a(3des9`d2%ET9wkE{+ThVr zgfX*CQ9~ff=tAZsvNQPc5L3&*Q4jxNv?u{bBAyH4M54zM)ZwK;0KCeASU0xIV2LC9 zSkQo;2$Ydf#vdc83CQZ?Cyx~bH}?S9@<_y?yA33G&r^u}45GvqDG@7_a}ive@s#ap zFI!0LN(yI~u528G3ohu+9}`I>w*cdWK~#r~%ApOVR7+`=Oi2EE=$_N1MT%y5l|&|^ zna^0QBl|#&KRl_BEluV#2>DmkBqBWj3!-Qr#mZO(MbwjyN#u8(lFBdt;lUB2MO=)$ z9(jt9!arsw8P;IoqI^~bMN)G~E34)|&|x3G04I~!B#C0I!o;h@gn%vKU)I)=FoyVN zGFOb^gLHSh1|g-s1UOmN0u0^Q%3RNS+WBc zm0gQ_6In(vFpACc+{GEw`6ft1N~Jr}#W!j>M>_OENppD4nnIK#pJ@R=@yp+SK7(z(*rFfifg2q1v?CqqKu0^! zfev$=)*R(P2RX_ij<51{AS(*1SBbfnLh*Kc6wMwj-#xwNhY z9f;KmmPnbf#h%4A3fW0Y6w4}9>duS)&_^o$u^^2=1cDHR$FcMw8+X7X9Tj#*#&8J_ zchrMI@u){G;W3V;x0k#r-jR-XkRu)6a4|Z*5sq${qZ{eqMiH?wV{q7594*p| zIk*u_mvY5WG%D+n4T7y=RO2g5c5;&w#~dbO4|~6`Xj)om!+*387#vMTG=yP4^)#7q za0M@#?{f{VM5BfxoTLl4b=rg&Exi)KMpFcf-ZY=?zUOqJ7Sn=}gwb?D1nWnF1ybMw z^P|zKi^rMtQ4f54Oiz}E$A&iys7zBh9+=J(sFMdM43A?Sr5=Yn#-VBzr=uI;c=aT; zv14$A0~^74H8!Tvjc$lzMdAWoTJ936>=D}_(OAaHRMy)=nH4SDEe0^4?PTbVH6i7B z+*bIAmgz*N&D2o;#x~r{XU%C@k=Bq=He@8SgM$3~z{ty%ll~$R0$o zWWx&Uz9x`8efFF`HHg6b@eNlb0u+A#JKzH^_`wrC@O?jg;S-^FQ1l(}ihum#U4ac- ze@d8lB(g;RFh7uG9O}1+(m7cPRUK$UBig`#)K|()%^GgwAK_z0>&gC7@1o1RNx4SO zr-It*0G1^4K8w(smO-uj-ih}PG+Oe8b~@!mV)_WMY4EN)1jnNqU_gLC5|99aWFP}< z>Ha^qKalQ&Km6JkKT9%j{_Y>a64+2Yjk7l)G;ATs5}s$pX@nbIr>2S0!uWT z&rpsxP#u?D9n{Gl0~$%tcth6-M^Wh2RG3`@ZbfaK#qgm;n3TrrT!lT@22-&_P1r+9 z=)(t^#(}lTK77OVouBxXpIX46_8G+X(O~w`Ao`gf47T6NVFQ%pS~pORo}Gm=FoSXZ z!&j952j^j#M3m6dAsKTF*LEpkF*sSfY=d*4MeO}U7hWJ39?5wrMLBpw?uDUv^d46X z&AV9z)$kWkq#Z96nl1U8#W+mE7?mwqP&m9`4RW9Q?chY5A4%vS3>pCU;h-Vzpbq*V zGCTt|JOwdygRTw6RurK`SVJ+q4*}9%yikWTG!k~QskOf{v2d1D%#D+lKNmE$`r5&R^=)*p=Nt^iFJjg>lAcG(N z;Xec-HS*vh3L-YrUq54yt1Jp-s<12b>~{eef1?A)VN$B#H!6^a~UpLz1IT|MU<)k&1V`9=EA{qepedGCg<39)hW(tHiVkTx%COQiLB{IOv zHe|y!;FVVz;XrhrQzV4wF=b)sk+wJ?R&1eG6b`s4Ss$?lX}*jQS=B^-bSw!w5-%a9&`izzdTYj$Z-)1*TaHr42;% zU?+7zsYJM?TKJh%Fo;cA1%{m^NtlR15Q}Go*4begpr8?;5axS|BW4mn03ZNo+9ZJn zz(4q>n_}io&Z(WI=^;wyK)9((YM*2ZfPqE;0T2N8v1w=iX964nD4ZNzYy+e|Xb1_! z_<%=mxt?*nMW(hzYGxu^kk4FrB2X9uGmvVDX2o&{gqyWqH7G-&Xv;yy9ziz6^aw<) zdf{EYNaV!VkaFcDF)1)la}pQfHI;iFrU9&JfzIcg;^&)UUuFvbLYi$L+j0K%}!*mDpEJ#tU_>uk>UmU zh)0LsB{bH=m+Xad=7@XDQ9_WVu*woiSSfR4P~DLPnVy}QE>BNb-+M-8y$&pbB4WNC zfu9P1oZch?%x3_wDZV1&A-ZY5+Nt?|X1&l9H5C%~i1FRg|m6^u)R9k_$$F*#3io zBC4E5W`Q2Tx~46HcH?{&s-SkJH6}ne(x>;$tM++cP5wiH)~SEq>o{gW1b}8RtZd1| z#n7_Ek0h6i^dIXY8B!!}crb;in#D&=1hyyzgq941B1J2Tt^wC<<|eSM0!23L)j)KL z1EX#=g)Yw;#ESf^5oyKyiq5~G3u*x`TS%>1+(|{sp+t-thon&$N#kUqt=+b1zG|kO zDk$83Bfr+`3_oTyqODD0pJR&SPfBJFyD9Ppq9b1a0}@li%FtJhSSVe%ue&&;j5rBc zHcnb}F1%EOaUiEu^vM2dYNTdEq(W-T5~o3oPyrk8j1I)-Hthq8F6l}zrkL@4oSSRn zZ&z&aR8$p9Jnc7ekdwNDSp7s)r3Js_Zaa{YKtRygAm2bB2A}xFccPj?>{2f!1aDwi zvT`KIaPm4x<2S0Q+0rLYYG(BM=Q!49eZHv;o1ZD$DI$vFe)jM;3bBGJYQio9G7Q5s ztgrVR5f@(t{ITXI3hq;ELwTKHR&=f!KkioGsLV2R%qp-!L~yf`L>sg5jE+#!$}#*@ zaOU+NjOcOw_DnYeMNG`)Ilmi~TE%y=h(VP9Ry-#JY-yl8%q3jzODsJH?N)L}Vlut; zgc$jynYx2BtR(lTawsQ+IfAeEk)M9nrwztn2EeI9>!*K$9}tIfPByADAOkU6LoifB zd7RK)Xxn(X9;qBf6iWp}O~hB3#Wz4MP*{V#Y%o(~g8+-rHE08nF7Q9JV(DhHHW&38 zzwuNsvp}$bH;)IlJqOU$&p$NeRoJl<(unIS#7D_5r;5&pfa^qf6E1GWI}3zfh(kJH z)liI+ZJEVq#1wxda$_*^RCv-wD#VCc?OB>#JQVWTI9NW&Lq4oSK2R$%xI+0sv9NhmW`v|&4J2wR^;K{3WXAjn%Q@|ChgMJ7a9H)q;xAnk(8XGB)QB=XwH z12m99_-zFtYU6V(q5(82NKbVzP(uyHg%h*IHdKRam&`YK!)cn7Sxdw@vqW%+kk^d| zY06^FdczmWDm8ZnU-*Vefp~Npge_Eo3v5Sk*Og$%2wGJvHZ(V0kk^K$3z_(C2BY^s zOtOrG+*RaHdIi%vfVEjz=OVZN1DU{GpmjH1_aicK{m={On$kTk2#qGs%7tTFSGB4ay50-_Jg07gDZqgodZ6j1qex`2w}HjP*QBG zwt}T1EZeasAERMbS4aB-oatj1DEKY%=1^$}0B8~N1G6z1h^<_xjrcXtBi$^%sIYBi4hK=8yqPbULlyy98NrAmmmFGh;*upWa$Ps*RH{NG0r}8+O z@?$Ereh$21Gkn88JVY0K!M9&AAcH`xZ!&Cywsbaggvv_?dR9m)SNPZ&-^Vr}`&4{` zACtt&I}JHZyP;eAS-5~gY&MW^!!(T0lq|YbyokjHdsjsFrNsM6V^S20bwbF8rl&iV z5dFND9SHLh)T*~^go*BK#M;G_I@m%SM1b~!0T>*?po)D296=nIeH?`S5rDzjhdueR zeH_F+*v~!P*S+1}J>IiD*r&bOyC1fYW^bh`%ZPk$B)dcyeqGVIFLc2_+n z?cYMn{lYDnoDw2-22lLTA%kxLKQerD#TUQPL4z(7L-OAO?ia%?I6w41zw|r5F690# zT)#G)9R02DwNwK$Ji3IdYRl>fx%Y`wh=V$;SIhg12y2C2yn{MyL6K0tA`wQeO?) zY}2e}#cFl`>(y|`z!pOWjcl=D!?OLm7OWbyw$?5h+%_<6Ty${<%AFT`^L(cSGk zm~df(?+hnIEbrVH6#r%qcxEvT(ng!6f^S+rMnV(yFGIYLtNsFKWCYES=dB zQ|BDS1Uk*3jZUkL!NU?_O`?4+9O#{Gx|kt`4oNK0#1rG1<{xXEfh(F8|B=QZXHcxs zMu%MgD<`3XV(U>Mfnp;}FTHMrh{K93?5j3=c#8+0js(JIpW#m02bnlBUMGb&Vj2sQHJQY?%2+(t)r4 zDaM*&qM<0^%aWYz$jRV@vpaQ$jBqw*9Xi%m2nEv13S>bp^0AQrd67kDmU;0-SbM#w zn{Et(nL!Cfm59l>bo@t0eR=#5NS{fz%%8q8TF2SxHquF_eD29-q?1gVk|cfl`34Yy z68Oh}tqp)Efh@CJ$=d|tfQG45;dStwZ@$r{?Rnu2RPJi%uDfox=*G92Yqo(jo4Kf2 z>zaT|4j9vmvVqi~x&V`iHD!@q>>YWAjEC~U@QE_>f945VGGG2-0WyPr@Z9v%E87*} zTn*k8^@kXLJtA`?>sj`QjvW@Wb>I=`o@svzjyP+lL; zK&d9Da~NCu9BsD$rka=F)*F0$$-me9^6^EmUuwEx=D%!=xpbQNDI$Cz`!9RAq9cdC zOr3iw_K$~Ut{x=P$L$1S1rZ^Tfeo~XGb;5D8ktT|6>OV8#NiEblm=A!yGXH$1(6Uk z@Nv&d%tqV+k0p^rfC7n{N1oOXcih4iHMHRkahSs!LL(eTJB>QNp*^;_O&i*iBHi~EsC_eFsN7P2*uy_r|u?SMvxCUIn7$a#I3W_UAh|C-k7=bJZbF*QM z(*`muzUa>$ncJL1?D&s7{zD&jydy;LK@WrU<02(YjK&NCxqsY4kptoXP^$zY1RFSz zl9goO_uOWUw&{x;v$;n*RP#r}yzw9MfE=7?SD4XE29Y*uB(pNIAi-25BN#g%w)Vk~ zToUIu!6PJ-nD!5AG3_4f;7hdZF^-?;BZcv>$2Y=pk9d4z9p!LI&IA%WwZKefbwOi7 z6qk_ii6&r++Li0xHxNOsaz(DOMmc~*k$2QacZnfnVoLb9eei{!oU2Fy3rG)rbWWfI z9jHL~AxMf8RF95K2tE#|7*ZCdmCF){{v5)gk6DtV5CH-YNYGJVRj`Pz*@ieaD6>uu zWTle19BCAZ%^m$?gg6qZvWV0UP))}mvFr;zZpM#)2-SrpF={XWpXNxR{th4VScf{0 z){dVr#UA!Z2RY<14^L%;ZRwCxIqpJ^mwi(pFZ;(g$BL&rt@Rp)0u-RM;S9RH$ctVy zh!F+ln$eVllMx}6)8OckR~pG6)hf&#Px22^Y6zo}A*w+Nc#(TPglWX&SZSsNk;%47 z2s6lmNI@IgShY-0gp$oVW|_#s@Z}=|u~w{h11r|-W1gY<2RcXsn!mBOa~oG!3{iq(vI2`ty2&32At4wj;pqVn`afPSkD^X+jir->3Pq4 z#H*jUV&hhUave4Rq(y-^gT3==TRE^14ruD@T?WxhZ3H?0t;ss1o|GLhhZ@_L0gogi zkFCfaQADbSooFB1*r;eRoM9BvX^3pQU_v%XvI+M^rWd-|LIoqs^pXzS1kI}n48AUZW|ocdH?a@I+6kb}xp7Dy+n zOl9)EY#Q8{hM~UP4HbDtMhhz$+@b+DYa~uB_Bvvkp;?Y_=!nj@Jq){Eier$tmO};3 zXbVjOXkjMiNC%$G0TJDy5yQ#_8g}%fFGOceW~0QjX{lfxvRi@Vj42n@-GCudka%XM zhkdCiK3Ahy-dL<5=Ah1@hepVU@uN8V@C~(ExJVBFiSm=aYll11;T?gz1Gnhtpg`W$ zj+I_j#>@UkL(uU}a&$&M)#gt)>Oziaj9P*MDadF3We`oiv(CtdSL0^+KLG+KA@}ri zL|!}SKuac%10=LV9GsaXExJbi8WE&1j6Z-IXdvvY2;2C|R}T|}zvq5P&F~`AbfnfG zqRjL^*ce9(%{wAH+jN{hZjqW6Ca{>{i_`AWxe@bJ#)aX>J#V&H#X9XbPdXB7;!&G< z5J@kK$@mY~@ur6h1|2%0T`EETRh=bVXAT+jocY>GMCr+12{EFZxzQi3|AQRnD2La* z-gJRb973~A@I{Wq!WJeN)D+=|gYA*o6XT`-e+lVd+bc6;f%Miy{Mg{g03LYLP0&X0 zEQdD?PiYJqL_#61%%uS-kxJhY?+}^OzPxRbaePD5LF1=}r0bB3FQp=^6-Yz}k|cia zQ`dT=7Oo#g%6Ld6tbOf^v_9sUVNr%1!qREJml|ST&olN^n z@i@M6vhJn`AuBH#d-Q`zzR{!i@p8bkGf40MnEj3N!G#eCLGYjz_~{7047?CrGLA2Y zik(r(1!27`t8;xrg=BVw!k2xD^&=#7HOAQr2#R&1~? zOC6+d{~~Vb9IsEZF68QjAX?@hu88^n&PwYFP-i@l@dzxb5<=}Vr8frR#O7{)PGrO9vq|nLW_QcFd^PAA=1NM%0cn|0r3Qa+aRJH?gIZLqW=uTH5wuS%`djzZTW&m z_7Kn_Dvx$FP17LoRBQ&JM&k7_3V42JAWp87@`5z1soYYFydL5%1Vj0FkEIxg(zxO9 zu!(jABgCZ8&Om7fsfFF*NU^NXMsQFb_Ce*wk0OF=GNiBLs!3MgQc+kG4++(G>0UfmIASZ&TvWp1fmwx(H<}mr{ItyAm_5=L1G3&As^y2vI}1BZ!H;eAo^pa zGO?#Ta*>R2k>2g>WUWM?#3A~~BMPe|btkh*(~(e4F@|g)=8_`R5@bH&7~=6OWk(py zY+>**E{2VyE`CocygHbLtu|G^#jO(0w? zBI1FKY6CY;j5X}x9rEEF;!ri_kT70wAlB0$qB24@s6EvK2`fU#45DFDYsBJ^u=o=q zbcsRqK_VlsA|5AV5)(qmp%-Tnfj*)iywWy>5E_mF8j@kY1|m2s0z>hlQD%ewnouCl z5;-eF1(hV{&hI(@E2D$n({y@A9dFR0EFv8;E&zkB{6$~< zy}T_O+Vdi)^C7r_c8<+CCjvK;Bx&^0FfuMpJ4BH(QZkUTwi4p#Bw{zL(8w4t9?Wx* z4iz&_15RfL2G8v;`U_?t?;mXRBA5gpYO5Se(uJtBO0y4l_S7JdVlOf7T3;2lR&_c%CQ%iYGF~$|Gopivl_Pj#b0&;KBI;8qqf-+? zKqI0OAIt((jWs_d9fC|%!*yF7V#dmKFb*>=Dl}FfO-v19V8OJKl%ZFgp&$wZ|3uUx zIIVFUVofbJP%%t*;C1f|qPMcspCUp~pAF>PGse6#L+TY)GI4`uNee}VFCH*i0aIA^ zNq-<}Su&?2==FB2lrlQ!AxM&qddmT$uug}Rg9>vZs6l}UHp9m9AL<2AoFN*RK|>|N z84T7if>T!wgGLChqy(iu@Gvd=b?gj6F!1#s5Cc@uh9WMLH>kCePAzVYwqp}QD|yQx ztW`$;k#0N3LARbQ#@gW?HbO6c)>mdpFis=rRMkV+iA4Gh*ZngLWMFMx+y5qctI5gQjSTDzNoc?-OL4j8hQ9O$gL{C*n%~ zhms@uY#{oGBII=MotjKLc4 zWnqbPB1n{Vcb0P~PWt}U&T1GU7BpV*B8M$FE=<=%Xy-P}!CJKwgCW=pGJqIw}>H?$bzI&X_H zProoYP7H90Q6+z37~UL$Bd)w>i8`dI5~5~~_aPnx2HPQ83?nZKj2vQXMnhRLGUAm*XfWQn zgKHy)<=H){*mQc7g`INku!VWD}jkS{LUws?uuwm$hH*hpD02Ke$BA|@_bDq^=%$$2S*Tc`g^{|8_vP3jYU`_qN2=maG~l|J!SVMBZBodVg~VAA&2; z4C^x&`$&YU`Ye!mmYZXb*?3!OQYnH;`+6OfPiNF25R@IE~7!uoXjWyG}`QXP&pQOuw(>xcfL zC*S2U4dTUtauZ48#T}O-X!^eC5XdDqAmr(_pC_&y^n739 zoYvQzWHIwHnmc4`d&lX!$7eY)3ZjBg(2Sx8S*TEP3xfv#^*Aw1xJC**e^_YGVhyq3 z*tm=9s8}em!k4&K^Qg`BTQ|6n`l9Zrp$cMGno0dcwgFhWiC|^sAk&lsa}0?&tZa_*QaK5AYR$eHKnV)4K70bfsqiygGSO{C(#K*!m;Hu zJ^mXxLc&?E)<_<~UN2=0BgL;QRdKZ4N3pw5d>}|vq{1?Gv`&LUtkur}yB>n1*LotB z(I9Z0PK3Pal%lRNBcjJ)LC*L+|2DQsZDe=cY^kvzz7_>5C}9O+%pCRu>B4l18)Q^@ z+8upEq@>ytOMpruB+xf%x*dhpu1WxFa&z>LCVV3QCP%WKm@s13Q7IB6d$4WCNzf-?8|W9y#6cqQX@ij@`?&1m+oI& zfpNtO6l+p$!ntNUq80eJufS=7cXBN(GGffcK3y*4*Hog(gYobYR7r9lOPcpIxBM*e z-e!gF1jcK3T5U&@j$f8`mp7rxgp3sfRo&E|!qGs16#fl7I8YP=jT$#jRNYbG%o93u z_AeSU>DHhN+$Qs|Oxy@L_C!iEaJavL%m1_MwVk_o>;AR-hmI*ic^u!918W!mdGreT zHV^j?fMEsJS2WT6Qw@U6{g#hJywSG*;7hf=1d>O2;e$_XJw1ewNc;5TnP8;__25t3 zDdb&*G2x(Mi!KIN)N<;)6QghjwusGC%wY46HVSFCkbg4WlhBEMfhAyA9r4#uH%ao8 zjynVzrw)-s(uGhuW$A^bl7MyTR6E_o2Va&5mDAo{PeE7AjV}t+O<`9$^d@94@zW4Y z`y6x`MfUJB8A4aKMqz_2C6=O0@cgrAUL!g++eEtwlvt&6)>Pt~>QwP&r=EIs&N=TP zG-^=VxcR9w)~srcHm&+t6PZ34ITMgGm9r(TXWeCQ}RDss@#-;%K)X# zwYwJf@k#<+im*@dP&754LUl%`)9yt*AEgU|+gL}u>86l8U2u)|n+6L+O^@Gb^R|3o z*ObjpghgmgG}cUPAa>SpQ#Z*S$r=-PND&^C(gK&SM zW#>yTt+-d!P`-HDF9{z1Zo5yBdA` zCTUL0W}fvpPwgk3P=Z)N^G$-gmct{2b>n*fAYfPgLykw4EkqE3*FT6&I)6OT5BmwAt);g0y$|Jsn zgo9`_sfPa&l%Q?@{R11?s1~;j_$IZ?%YpI2;Y%!&A%S2>c8oGf3vGfChj2)DF9BhT z2%?sM`J^_RSEYd$lw9M5# zB~QDfW>EHVLTqLYVdSERy1X(W-cT<>#-pS;pRx^VY{Q4^Y#30+i7;9%G9L)qce$(onrFJp4@95c}bKzN)rzUGINj*2~kG$Xvjk*ie5Dt-bn>g&T|TN zs0g`bM+|sHSiZ!RJ_+SQyn&YN{YaDN_(nN`=t!U<#9QD>>P%?a5dfv*FFK2hJIL4+ z_*D*}i_=w5JlPdADrkQ`@}EHT*A#06)0Zy-E2iFIrFPt7RMBM4K{PTao+@N&w%JH4 zwYH&!Ktz!gRFOs~3zWo+2A=JJXIE55)X?%|Veb4#X%m7vbO4Dje}Nk=%VN}y91~W@ zY|2FwQcu7MjfqGphi8F8xN?x^pSg6O`CL;Io<%WjYOD#YA_@(P0+XUhBQvxKI^y$S(Mouz-tZPbm->xuH8-|B!ESK4VT~<0H8|fu z$IOH_j&BG^#ZhCc(8S{6u#_c?g{hc8T>B(6eq*n8mG1uR`V&|!<0?ePWzt{;;h!O7 zq0elxI}j%}hqOZ;f_)%t+}jsiT%o(CD;ukLHuSRabA;E$Z8tC|u2z1IjT8o#Ob?9{-5!A08UbJKnSB-)KZ0 z@`%SlIK)i)uH?+y#1u^So4b41BX<8imw=lS)WVGOw|%a5xBxAaX!l4VKEkwF#QVu_ zL{DfTjs}Ru4OgMSWot|Jip#*Q5EnObW-!*zi)HL7P$Q(d)wl{U@0#g=1Kd5alSyN*-QbmpLTWs3hSsh*Po^Cc?cj=Zar1Upv;jw-)J+>~Fa$_UJA+8p--A$nQCD$zZiSfy>WN#*$POd#x5bYJ@;cdg@Xub3|R)##f(S=wb zq*Sz7x?K*^_fP2@vWVZ)gShyx1t>72kfeO_!i1P>HNqjsd)o7!caVec9XYSt*0j4pe9Vbx`*vo%Ul0 z5?v06Mq8JAGa+hnRcg`jHm>qE*>Gsa=M-_mL>ZQW-W4~6BS!3}LA6dhA~ z$tQxt=Mxtu5Tf#QSZ5X)_IcY@Ev`2|Eao}PQw-Hm4AxK#zV~mzR8dQ{47F8M2L~&^ zrwz`)ILh}qT@gwlCVX#GO1cLVozZ0-moFEVYc|mihv6OWCn0BcaV+t2`#?4>kzWYG z5}T0^s1ZS@5km?wUp|2j5GN4tfDW_f6z!sIlqVBEWrVMYL_FdDU2aoLaWj8~p-I^w z4)7K<_~(mogAMqXc!OgU;K7A4af>lgf<2-{Mu$s6k|t#VdRqcy2*ZG8^g{xtAOrUk zV`p8^6>w=J5Jm?$9!N3@SU^amfgxC2Hux@)SP(F=f=z)A>M)NUM{9ES64jRx8G#$^ zQ5x@n8;KYc;$VfmR7YCZzZ@8^jzUaW)M}RGRdL*Rc?8;fQYmKpDt{7FkKms14%44QcsSTT(4> zgN`>R6M&YCFY%Z*L24X%PSc=CoRm>bIE(!UnbBY%)e%v)r)jS8dHlyj2*C|ZF{7^K_;a_kUSxjn$(&LagW95EwSkt zL_(EM(VKL6L)UXlvbUESw-8oHZZt80GGQS8^B2jvbWCv$mZTK`M3gh34cW;x-$@gk z2^_1b5Y44VUMP|^F%0$BZ3m|iJo!tXIfwn3AlKvnmO_yz#uI}*vu-v)pIZ?VNAV8C zvUqBtSd@5iT|p*aDJvaXCLWqL@Z=yJCn$r$W)9Io*u*ag!H^b5ofDP}(v=XWl~6B02y<P4>J-U$AVOnff?*)A@)ugc74F#)5;Z%7i$|g#EUWUJ;!~ z7!!%r6q@)^j4~6;gn&Q;vE-;kuH}rHIgS`LuwKy(t0@k$G8)slRiTnk9ibg!nh-P6 z9~XuTT>t|&fDk&Mu9Q@%$|#_J$(b1$WEf?nM4f;GD2jY3nNwHKs0Kh4$G8G>VOMYFat4ww3Fmco0@s-$v87x6WA~fzDRf3 z10GP>ExvUYl*?z)5O#yx5lq@f7O5&g!EacRul}3KMjPscjV$_4g7LqqNoA93WVdY1V~J9 zyI-gcR&lizS(DZ_7t5Iz0^v>cAV)7^{~$cMEx|`Q5yP&6QJkANw{tVH$J=lXb)aSP zd_wdBLLj*88!o_77T1ui*kQPn^F(MnOx*h$PkN(1QkWBWn7A~DmDDQz>ZEK$o$LD( zpKB@_Ca+nFvon#XX7_;9<#i0mS0pJ+tYV|plCiH?g9O7$=m`gRjUx$iV%Rdnn4G~t$3%zYwY7>wO9LIaSE^MTy7ClU)m~R8IsM*34Z4?)5qyixX(aX-C@|}td!wB*X ziCQrjSj+hx73q2XX;pW%e53QJqngs{jA=Sni`xm9pobO+7&J$_e!sALI;jxF z@DED8Ap8j(M}t=Yiq0{y|G+^}BQY|eDFV*9ORACYcE?Kn`8(h+913p1? zTK=QDKZK3jOq!pU)sWewD~wBl(MGVs%{bb*i3wZ%HlS&@&KQ=qof{tIYJ{aK5Mj3r znX3@C{TmrM4L@vwcco)jjV;r`uR1D#4kblEJJujQByI77$H8mH2A4d+*4@#IWzo?{ z6wW`C*)ie0o0JfmbX(!f3QWHnX-HuQs9FHMb1K5a$R{+cBZx3z9b)2yn@mjJ@OxN8{9QlE%YA z%#REcy+bGq`owi4wq2N-3hhHm7=j8t=3TL#F99A9eb!nvH!4G??)`K^)5l6D8d1J} z4@nJ022B38|KZ&>IxlU@7$e{|Aq)zU4F8Y}i)t18ik}!09e_B?S4)lkvpB(LEj}K| zURZ7c?wbOURK10Hf$j{_9_W~>4MR57t*Q-y9ux_(*#coq#m(Q06Ft=6Ny3nkKkOoq zyH#|nQV--HfZga3Qd&g#mk2C0zgGHQy3u+Hx;e4!V*dU6U*BZ@0yOS z?b`8O|4ZUqP`cL*Z+hN?L*H4L5TgP${xp_kYHc&3{2ZIEGS`$2!t_ZASb~Su7 zqri9F6Se+%Qy~x<6W}@`6?+rls1oZ3OzhPdOcuy9^;yVFD-e1w6CH0$mmV&_fY)8j z_n-MZE-iu${tW}p98Y+$=r+O@WfOMm!lmpISz0o^q`-jhM8E{r_6w@7!S` zDILCUlJa^ZHJzm>55{$sKSg|vaz$uKxTUUw#BKuc3xVu?b}=`S3~fUV%Fs613J}`3 z|7rX7Z{Rm=-u^9Q*wEoah!GoJB z>qD*o+EMiimgzrnMIq*kh)x|kuQmTk{Rj8#UA%eq?&aIJuTyT+{y{5PaIoQjg{>|8 z7VV!hYs|DkX6SPvHm1-RGP4F**<{O-7c%?jc%f;=rW^mO_6;Xa*0Eo+)?7{KIF5^T z|6AOU8D_tErv)bt5$CmJ*A^!KcTL$pYTT4>gUW4Nafit^J9U_ip?9$h-_;#Y|8=i9 z>+*tXA%zYM4y%p0sw*ppxcaKW zy$Wo|Jnk=`bsqM#1g@Kh`Viid(E0?s*w?=-L%oh8W{f}tu)RY z+cB?doXL?l$D+|Knj05O@}DGiyOFmi8#eeAR`W5k-YDyASG=BsOft%R;xbHaQ0rAS)fU3Z%4w;z(%RUzWN0_kNc(Lx?5ZVp zAu>5yrZ4Rn($Xg89;%4ZIw5MeI7~;fbyn_z%hM%9OWYH!w!*s$ot@}YtE2!C{HNfZ zl%rK5Q6rvfVzV0hSFfwGLe(K#weqGWtUzW6R*M?K^kI}!F7afDtPzq(Vtv%n*&pw! z#^ob%Y-rhsta;Ms-S(3anrrteXjz{fQzn`pZ;q&#Vs%bzA#2us$k;Q1@d(#k8A?~o zd?Si?uWHUDjw=VzQ(5hW&|~|f@y=q~!LT;eN-OhBj|qCHe-Mo3<^e^vA48hHs8kXUgi!at->IqCFC(NZy3$j49$Ja`^Ct3iqq} zf3SBbQ1~K;=$mKDWst}b3HJ~G4 z0kNYDXKc$fN;(Z+G?PHqR3k}7B2q`RqysLzbpIhn#C6 zDrCrh{8BS%4JLOTG1g-m$h0sSurk)Dh&9Ysr?GkDe&CDG|DM#>5bqVoDc&PgnaUzQ zsYr!#RB?&<45+>D{KX>OxSz^I)DgA-@NTA3$WH1PoE+#-jSoxWON1903?7Ri3-l8A zLTDHWf(eEZSxoGvCc87$?t_Aah-0qhjMaE48rm6MZc1c~e=st5vY}E(hL;S-=%#gL zQc;N-IWUcA$RTYs5me3?EB3@sQ0IsbE3tCQyYLQ0r|e<@KlKsFEo5Vl`-lH9w2^ac z;~WafUtdUbAR4SunJB{|^`e18-t-1}+hdZ>EHl7}+~{XNqvY*6cqXEijcApW$k3w6 zjA$t1IiyiWGTJFC?YT1<39QC4#JRQ6oX|8BWQq%)|H6$ahb)* z&k=!nApn-lbIm+UK}!b9HRh5b@1PuAB;vQe>|`5GvBE!cFoT7rRGFn?sk1y{89Oq> z8O>SVKq*@d>p2MS=$T$J2{t_yslM(12$JoL@guq<%&I&Ta6IQQI zbf#s2*CFfL4b^r>&MM{iAykcsEP0d2NXqPU$w?P%p30E~7D*WM(`ujiN~%$*<%l|b z@Lm-3+Y6}`l<8IJJi4Nhb~p$f=yOP2gIU+Qeq$RSBJN#|!C@F@YB33fQExI>BG}Yu zSMuGKmoUiKD%}oS;Kc7k95X`3P%WL0*^y~K!dbmw1Qj~6_B|+ZshFurt4Z!l*Fd)TF zdEb0!`V1>sT_TS0mIFtZl13P(ne?O=lE9gENm&xKk~RVfjHw1SB9?ApL(uaL$~fa| zzu?-e1f!j0EJmmiNoRexeAo)VL~nZghC-WCCNUQmLA#cmn-|KRY_yoUcQ#7l{G5|J z`#HtJTyeD-C063Z4bj^+(FskG$5?7@X-KjrxNO*vnC2y&(3qibs!n#-J&9CuMjUx6%#P*ola%> zNE@8Nq?f7z>H|ZSYRMptX?E1`vj`dA`aaA3xaULAu^Un3$rMYrwqb47^HgRaQ zQ^V9(Oq(L6R)lFdk0|GLV*lgRxbd0GaS7@U>Cfw`?GQ`h<==+QSK%G9#NfPRKEtF& z7h-_Y7-${mj=Az(NSz)PK8J!Z!XY!5G3gySIz8X{+OVa5hEXrWkGzDfz<Hy1 zAo${(K$!uF2=C&yYzUj`=m>6*iv^^Pz$=m0X$^vCjn{xa;!qAOf{k+^2yNIvgb*Kk z$%(+QjsPqWZ=eQmXcs4Ati3yt?^{1@`zXPhfyiS&8w8yMn5iUi39jCeu3h>|3sJzBAmN%=y{D8PhLAD4@g zil`3o=(FofEsrQBFOvs(7>k#{t{c>g0Qv_Q=$x9XLp}@+_xlJMGo4)-#3CyZRSO_Z_cp#I1nwI~n^Toeja7QBl>f%2GP8pXLVj7@|Hs1OGd z`!5t+G4}$H|7gISUJi)d z!G>@~ypSXtDne>hsw2FMbXk)UguP*8uAMNrGu*4e>kHc(h)AqHS)nVmz%DxElqci} zpjZ`0skr$83b}|BI(tCtNh=3?$CT6CNuj!CSHa!?Z2hz;3O zCAU+ty15H~|GXs=sUIw4E43Jp#tTVG{KNEsns)+|OoEvTDn#r^JtBrM zvh8b*m&^+c?2DfyN`uOXS~ND9xH#a;9x)-AibxA_APPOpM1ndC4vZ6Ji4B&K7>NqY zkDw5|@W?3ZLva`b6i6emEKK6iJVC6Z#DoUsIT4;~r}+~wi>%1K2t@Hxm|8@c;M+$}&lp)T>VJ{1VvGi%C-k zj;xcH{}j$je2K4w!sJYk`yn`!7(1jm#kB(%plD0BB&LOVh|_F{53H%0s!I?774zgr z0vgcZ7|`!Cwj3Z#=xk7?V5(nO1_)(L3jK#-pv*E+hKhus(!;DsO1F<#BoH-;^mNda zQKcqA&Jxic76HNh##lk&u5u1))_=S_mny zffztPh)@D(h0aS2QXR^p8Uh#o6BA+m9NS}xQU%LR`IK((hCj_VreIbnR5`uy2~|xG zK3yZ~Scn)e7yVa=g|Se@#+Oin5s27s z+*UW$Rm3ry=g^LDH7x2AMu)}NIxJa}&4?IHis~d|IJuRvg_cDbg#Da~eA%UXs;E^NMzXh~?a`m@ zh@f3oj_6sY;L<29kr<>fg(;IbtJiVGxmTOmr}aZ+(pZ^I8E1e*|HE5osM)QJTh9?& z!#rCX{968CtG=b7fZ|5K<&%OQQVfr zT!lo4MT_)s3k$3!BvfEy=|2mnr6<_mx z7_KqWkc8d6V3@U1-nHVAo;Y9ntzX|g+>>SA_BB!XW8c0s5eDW9_mLcj$l$ZE;EzxU=cQm0E@2an;FkT0K;;X) zf!>$Wv>7#F8Ah*Mm|+|C2#@SulhEIt(BGHPVbEMcTN%I`E@C4-3&^FF>m?xaT*A0R z;T(-CAO0U7Rw=(B+Tc(S>SL2BDBFo>Il>-L9HB4eGEXH|MTGEeb_V>6Nd3p zlduMj0}s=%6a!8zPL37QI2qaEu{tbfmRKIMiOW4$0=Lr$6RtCJJFjuT8MHU~>8#`ki;gk4W!68UP_G@Wz4jmZ#X`s!|ohTy^rscD+X*k;ykk%b7rDLMrYOcNuKIYuZOlpZh zYJ`jzYKUr~NM9+U5(LSSHRkmH6RoaJD2V@n^q4ZRosh)jsZuJ_daZ zB5H_hsv>T$F%jaOWtbKyxWpKVxbE5(pZt-{%5`Kj|85AQmTkQtZw~VXZeHp1#*Smy zQRIH_z8K_lD`(V;?y<&guF90FPTf8^xJ_AM7j4$PFt%)PE|A<>Q$7ph=22?kg)xP1 z2-k}O0l?ONh!-<&;(+c}CJ+PmTfGsHc)@V`P!ou#aKlXUh%oAs|9W$xw6t~p2kGRtgWg>-@2&A>h%?V{ zl%eW13a0IriTvqsD;IPEL36~(pF3YBYesZNe>1IlbzT_804Y-bA~{1KH&wfndf9c?}(3xFEE3L=!1`d1%E$oU?;OT z<~CeU(hL{v$ad@X<}e!P2xwFVj*$5D{}}BrxcPthg1m_Gknie%PbrJ~`JZp#8_XS5 zkokW02!?0)hCl-}(0QC6gS$Ad7VmkY9{Hn=%ZC_x@yqi3w(m`yaTsHIk3ex*ScOv% zg;Sspvd0TFSctd(0;!k!e-HzPuzQb~RjVgzB;R{(oA)(x1ZBGShJbpG(0PZzdzvd# z8}?T+dvw1?nJ(Vcgk>vx18)14c5Y<)SYNBPXNXn!he&V;QHT{%IE#BX11&)Of1vx; zUx+bq{jKi&80+cD?fa)?nbF>fcVDP??|n7O_l1CiG=PJKNQ3mMf-x{OE-;B4;Q27V zg~)GmL<4@6v3>*knk8oU&l&yn|9Ja|D1(3Sg7n&g!D@)+mxwH2h##o>8;1PpU*)#P zSFOJb>8Dku2YeKH1CBs`fcPhHAi;tL4;u7B(2JOV3K2q#C~+c1f=~Wc`6opnmwz24 z&Y)3oB*~H{PohkzGMCDhE?>foDRU;xnl@)9GwF-qww605=DaEN;7^&H2&NedGpR|1 zS+Xb{dZi#0jRG@H6cTkS*REc_f(?7~n95_+#G-{*R3a~fq6}W6NLC`Nt=p7UJnJ$j zOM!j=*#h<#Wu!=HZ+D6kRk>6-7K)p@owD_1AO)O}AlZ7na1HO{6K6nurFGH5Z8`sZx-C z5xqhX9s<2+pF}U7^oC2Y)a1xNjy!VETSKAIn?PTnk)(e{(v(Gj|BUgE7-K{!pp;@D z=-5dNf_RV=Uv?ShSDux`omac$g62Pc?IIDGVzwlnX!N-!lzA(vN8(SbIpPS81+_TP zpB25~Uy>KX;Zl%6|Na9p-?-XC_IwxS7kFEUEdbuM+))XILhhl$xY&3G@h43Q}Y!LYs1S>`Q4R z#Z(%rcJ&3cTV)1n6;CI3oE^pmPsTKv+tHH|arsZq;9XRex#VgL6PGjSTXaj;5ri~gYra{N(n=fc z>LWf9#7t^^|6)D$K@QtiP<$i}S&+0Z4-~Y%FH-wYwN@HrD7Gz`VUV^2nf+2`8GVG6 z&QtKs<<5xNly206*F=IqxVn^KclEkEFX0pkyBXE={y4RdlM9rv!Zg`Pk);u-VNe+Z zrRp#3WKT^{O>6(iz)nBjc^)6|?e0u-HThXHSwTLz5AgVEXL}iGf{_M3MgzcvA`#Rw4 z!ufts-6m<_I^A>2>>r1^2^IV{g#z|1fjV;n@Vw{12gW2jy12yzeL+EZ(FAHs6Nm;) zGCiAo|FCF|a1=qt)~J7|0S=-2kyi+25JnB;a|ij&3I{T}(LKh524R*&cvuqz!Hy>E zTSyiLBqfLFjUvM_34*2)lO+lScz61VvN63?m&4&c>qxvS2 zn*_D*AB~)dB46^z)71oA1%cv0E;$fSBE%_K_|_70!$pGV?PmfJ96|V|v*6`Si(%;v zC`ZCdnaENgr|jYb$0!|}bg(9D>{>*)b}NGXB40C+;Yj{CkUowsQ7I(IBoA^vrRWfl z{|D(~EoFi{FL)tzE9@pOWs<5<<*y*f8%TtTkgg6ny1)^Y?<_@2kl5CpuCXLV-4^|O=6=W3xVTFxki&U`ehIO~4 zh;F^2!>0cAQ707O*c4L9w#g)^1-ay6ne*9*kklm6l}KezDUyLyX|$sq$aG7RTGfJA zwY`&!8FuFtJiGzD=@o<^X5CeX~LRh{EBr-uHl%Wjl5{)J54T4yMfBic$fyDPKJ2ps_{{*7o4@0?C z5GDu>VxW~MGe^TRp)gFQqUC~E7%VBC$&zy<5FbNCNo6+kng4-a_QIsR2;qcl4RVQp zj10bR9>|Pt{23|ov9?XHT@W{bTOfKsNwmjp5OYU_ zQZuS`OWZqaib&!muNKH9`Vi}apnD>Mn0HI^Z4&qa>>zNKyTsgCk4dp_9+r=PJm38GaLL7FcA>nzAkj8)++U)Hke8(DHDSa-F5&lo z#M%%l$$3Tou9T^hr0x;9dO@K634(N@69#F7y$>_8BkR5GuF`|d2cr0sFhcMILHs~O ze-pl&JJy-ke3vp#60TEZ;;t{qB^m(2W+_^fZv^G9L`;Jd`z&ECvCUL!Dq9?aiM3?NDT9{@sx0}{mNMMVEy z2n9}G{Ru?+J)Q+pf5^eUst3cS76}&?H}{q-}#w>-yvYrbxHkIodiw<-}xOQ zBq8r^qK!O<(1f@X24iX3K0Uo;fUIc#OKx{%Hl3@02V)|jA7*>QGfSVlvUoE->&2{2H zgn>b9q9-oLISR!pn#8@`*(Q8~@fBh&wxWETB1u5qoeiT&sH05;;y?s~NuVT5^kZ}UVowgl zE8e6)3?)rK!Y`)8Ku*FYxFEY7gdfO(7XHIi{sT2;LNRti3`Slc+F((>#1Bry(AD28 zdL>W3;3AHnRl;K=*5XcP;Lqjc&%wkvj)Wk=B&C@m;(bCq0$x`hpi{P`g|y8WMmW#02$!T|bQBr;+!HsU6j+flZJ|NKSZ&4Hst{G@7D=D9qkL^Pp6RODw8gzw=Y zH4bEc+*#+Tq+(7c${|EyMg$8Ar$ksI?Og&N3Pd0j-ej6$TWaB3mV|VYglQt;KXf2k zj3!DX8Aw8ew8U%bUCvhwwLHMOh)ZQhyAS7g;CuG9-fhWp&C?+0+RGvf~3PfqPLRb2r zV-f^?A}4na#3@d~Kc>WlHmANsBuh@jB)FzP7-CO#6UKrMDvsOsnBp=d_OB4zNWuvDizX;1y2Ks`gy9ZE%nC)?7Q`fYZOKZ6*p@^i1VSL( z!AuY>)6xXRPUS=l8@$HEB#hr)%I!=PYvQSdh?=ID{sZTxXB~j;R1wQeaSgk~Tt0`zhP?w*9=J}*O2q97gzH7>=B{Y;vahQ+Y)w#aL|83E zcx}77??`B=@m7L;-ofyeE?BT2O0MWYB(SL>#EHTL?k=3-(!}?=#QOe&YbwG4zXTpG zVj%RdOq5y+N`wZt$_$D|0GEX8Rb6(z1Vzegjt<0Vvhe+?#19OF4h%#lpf60kZ9&ih z=$VA`7KCYDCTpVb5g&viR01W8uNf8s>6P$6z%NX6V3mGlM>ennMd+jkZ(%VnMBmuUbFr+%h^{_z;&a7*A6bA&UroluBBH{M5^F?g>19T#8RD%XWCG`= zp9Dul--_lL3j`-0szB7irq0Nv*6;%tge#8(^}2!Rm9A@20wvr*2X;c15`^&{s6aHR zBEWIpn#3^M=Nk(IG?T=PFzP?#0R|(4AS;CyhwDI0!XnIWt8lG1kA&t@M7^E_CjZ0! z&P4jB58u+cXo~RU^>l)E+E8%LEJ@h6kiXA*d%Fe!_)X;@57)ye>jRO9VkX^dx%1 zn^I$Fh9*`T1Wr$<0`l=hj4wbU#P^!DN|0{{kM$mFuuDUPEsJyqDuM=6wPjXBERypi z{O%T`1WhjoI}1czpD@0?vO!2PR|pzRNbf*!+v8;)FGgaEW*=7z^;cvxLKyW)B-tWL z_0bx{PTQ>gULi@iG-wxgAv5nLNH()VDMjdVOAN6^_OM?gL?4sym-_7Zj@Zgh!|6BIJQ`mqeBtuj^X39ya2<#xkcSFl#Qt9kWM7;Ju5O_-Zi+9Cfs<=etX?n}9(4KaB-h>8c_^X5_h(m-YoI)q0wAaG!n3n|4 zR)l&M!kMRp_`2khzNuY~+IST}i4^HXE;P7IwlS1h*7cfF-dpYef3&L3pdwL)Mck@LX z-bLnNApO=$#0dNL_);?>wz^4FB)$TjTJC`)^t+@x@XZJIK~T2OqXj&tx*iN{Sj4>C zLqtmhICwGrBuH~fFubEx#6L^MlQFX&o*zYYIY@)LO#I);BW5h}=bWDes)zHl3&rqG z_$fni2mYs~Pekvgy+J4*^`6144@7w%HA3V!nUX!;Qv~b-EOb_W|G8gCP7e99+XP@I zei0+Y>O+Lc8h!yk=|Ijgna^}e!?b9mbfkxCd{L^zql9qpHXEP&>!mM3@LE^kt>H6$ z=<7DAQi9=A!o0%-K?lFiS+VigcSNi&H{-r$3}80_iX~Pl#?bZnPNmV$hT)DcPh*sZ++5LJMXhILWHRNg+i-)I;?X)q`{fo+)TYEYCdu z?i7-l7H(X*bLrN7XzJivyLJg zBSr@mJspUX>rJbhtP*^D@oU9Ah2wfU`Ir(Vt5!Q%#fb?p+)lN%9z;wvX4*XvwU|YV zmNDC!nSOREbO(BJ>C>qX9xl+-CrC*3vabH!rDE_W>x?(waSV99ic&7hsMzUEu{i%_ zQpE6|!iHi~8(ic)D5NSXjjqlNOpFro;8O6P+7kQcw}*n`$h(qk8)!3uu9Kv!GqmXI zw1V9Fr;tuoA%(;g&s&kj77rO{k=!ma%Ox3KqOT&s$=pcm@(Q6>Z z6e+~5JIWL4jywd5P9Q1`QmjIYp8RK%Kx}gBJ_a%B|BInAtBmL$Bwqq@q4xx`WTLbP zoa;J)kSnN>v?y{-K!ZvY2$lMV9F$PTLKFy-&I;{_&H2C+^C1Pd6sWvO7rivixqx&C z(nd|MuV?6dG}%2Opx($W;5JO4P+-rS3UY)5^2Qmrnbs!AvIM71Lma9Vm>u zI=ZByJ1t7DI){9$=+%KT$?#CIvizsoA}xBB%webd@605_RQ086RZLYdHRFo0ys0oL zBqJX)n)N($A+oZdR7z6Upefl>?cajJf^0kL0`1A$gcVj7QbWXga*Qr4wTQr=vZXG= zy(Uyxpo=-CD%&Sls<@y&H{zBfTqUxXr$DX^|70adIEAd^f1-Ve--C244=|6x12R-I zA(~jAjO}7J;E$DFdLW|6vnvohd^Fc*z9uAa_7wp+#DHbxz7V65MFa$!&bEi8W`bW`P_g$Y~)r z#*6mgg}fc)gE%j#u)SYW$n`>zI{tO@=zUF~*^*n*??C&MyL208!vy+^2(+ptupe^F zBtv#L==S?;&RyZnshdA^|Kt;7*RL*b2l=1y2q+{-cy4Rbs?OsUMZAi% zM_ZqI(DVpGL7_BHV|6(g1Cf%YKnUn@m~f2)JHo*6@dQ_m7~nzb#1ZfXf_np5U*t}L ztnr+J6+AH-hh8$k7V0ipg^ExCiKsLZ3WR|wnNAY_aWK9x@g$p=5K@lVEuIjKBT6zz z9k4hZk`*Qs4zvnVHi5c_K&KFkm;_dYawt8h&mhHe$s%<0pWtYwh(hthKlUh)KK5{h zC4q$b_(G9^7&4EEDhunW?+zop5&qbi0E950FizU z1PKPoXFmV21cN+*Dj-b@M;`)GkwU>PA{8l52x^du(&a;aX=y-%$AgZn-~}&8PEK?B z51#t8P%&`9K!z%ip~iqOMLmfNW)OoIu;3pqcxqJt!2+b3r=cuTYI2ae)q_A)AW$7D zSgTr)tnx&sJp!y%vPI$(1fd zbTE(`NH+&B$?kNy+g(guz`NlU?|8{uUh|$8z3El&dfD4v_r4dt@s;m<>096FP{6+V z)$e}!+utIB*S`T4@PG+iVDLx)BGEPQf*IUk2NT2w1;)UGDO_O-UpT)Lm;i=3++h!| zH^Kz2z=ug(ViTVjlEo=j@rqg8Vi&&{#xa)hjA>kB8&AgpD9-VXdE8?fBN)RE*ziGi z>|-MzImHYhagh)503<&d${hysK!!};3QV~oSdQ|Rx!h$he;LeSt|yb#i{Fb>S+*pMVA`=%9oaYUrVeCfZ#WiZ<%#qmV`_>7roN^KDvCO_y zY_rftEA6z@R%`9G*k-Hkw%m5>?YH2DEAF`DmTT_0=%%agy6m>=?z`~DEAPDY)@$#* z_~xtczWny<@4o;CEbzbt7i{ps2q&!Y!VEX;@WT*CEb+t?S8Vac7-y{U#vFI-@yC7Y z0CJ`={4>MIjr{!qQMjecKl|MIm*KA5eYu%yVq*_19pBE%s0>k8SqZXs50A+HAM&_Se?kktP`R*rvYqf!Gr)G&(kjc6dp9REPaz{;km1TJkI zwUS^-G-xhyltmc}DTYw+2c80^i-WTP#xj!hje)e#g!l?t|1bp%Xbj1H6~W;Q+oQuB z`jA@W@F4yF(vrR(dPRcdFrpHdcrRoyQ6|-BA(4^@x&uD(idf8|7PrX7iD83F5bWYl z!dMVykgy^a6r*j%F%4-j;~xt&2r=N;kQL5wh|7^;M9!$j-h^Wy&j{e-sQ8a_41|I} z`eQ-9*vCe4#e)rTfm-N?LPy4=hnCD_rZB0=PI_{0*WkuAK1s?_n(~yqa|bGsqe`{3 zLrZo9k07xa%Z8+}D|-Bi0~b<_(e08rRs_llYq`o|8uOUQ1RMO4Nu_5n6DHJ%%QNEm zOqE0vF3zl`ORlL+-QcmCxZx%^$0?^}l2cmI_(m^lg~5Xb^Hr_XNIDJ@PjapEoUZvM zuio+hjG7j2t&0_5`ZxV4qlj0cso=6PN^0;R5>15L-;xME_ zbh?ppd;=Y9ecL*}T9U0YgsxbHNin*b45dcI87iCzRR{9MhXCUrzsRd%7t7ejI`*-U z1rrJt8rjP7B&rF+N3E_(Fn?HfBNY`0Wk36t(USHnp&iIN;^CaQVl}L%eT-&fiw% z%U#`27g2t#*LPJj-tNMMwdN{orihz4LK>;JPSLJ;6LQ?BRI<3Zy-0l_5)bsQo>{);eiwo zhW|h)8r8cQyVec2_FykW=#db3BxIfnS*=0FArMuXHX*@$XLK<8kElj98POo}+wwaQ zd)NaX8g__2>`{+;EQG-dfk!=TED`q#`5Qw12NhY$5f)#@uDx{eUyW8z)=KyP9|va0 zn{_J?=z`-WcXlE{SbOJ!;50Za?&ScjaoCBN8Cw#T%A5t#UpOzsvo`_7NmSgML-Ps8 zn)xwRIvfvo>?0pCCdhH|3QiPX=E+f}GnJe%R(B=3GSr1HmgoBu^x9+A3^o8*v=Qc* z+IG$do;9s^0%d_PSt1!oNCKYH%RfsG(@t5mK;GO=H~)jR@o1-|hs_dcH<`7my|z18 z>kbUAqr(D0fI`%bkO1VwhNR|ByxZpOg9tk#><-er?N;t`|3j6k?DbQ0&5&&$lgAdJ zY&u%GaIoatu?kitx-r;hp%7dlx=!{%3{J|Ra)h!v&Nid#jO>$Kyd&5DfW|Yv%F&aK zTfPUu;J#a;agFHtAL2x%rc)A6g2EguK9t>sQuamwBdW4B9@TGuCX6rg<;{V_Uz|%Du+|^Lo!FfKtCpu9wRFzfAs;V3>+@9_Oz8ay#?Gqrp_ytoa zffTn2jI78?@f;Rgy-Qu>H5&NvlZ3^MCe(gt8&+~S{7X!JE%y42xxfa_YTdaYLYY{F zEsktV93uvKnC57H%8>Hh>69=caq-z+qJE3=8tE0p`My{46(t=3n(tlVTKZVf5^!V( z-@y&0o|7N`L;eRTbv^qmby5A+%LVUDz0OPaTcIjRvSOyNZ950t5ea}-ly3I{@De~s zVKc50La_akOb$w*Y6#ac!n1HxKxm0Qdf2rH8!ZQ@E^Uth*Ya``(cuWvIS+jIK#+w@ zqz%y7CQLj^=bRCW0d&cKN8zGh$k|)Ipn&6BM`2DiG)5`c+i0fWur-g+)r-PDECLr{ zFIUQeMqdEe2(ewLlHdzet3=xN1wKuFBW>xU#1ahZ3)EQ(i>LrxGvJ;X!1skGIT$(Z zXe073&snphAH3rPRP}-05d`xUEHCr^S=^gO!I!-C0_4Au7y)hE-{gCRG7jN!78X{9 z>C9{9%T%ZLp*W%8z^jWU{8 zBLvhBv27%PA`93FcbUXCzqWt4+|CfvPPaPB|78|cI|{j50p|VS!&g*h%3OQ)6r~*W zSl7ToJFT%;@*lAj>Er~=Su(sSCPxtV;F#=~G_r9033hf`tm z9C$kNZzBexakq(awsEzKqTlKvpBAOEbtnmuF^R;|QdK*rEcr*0k z<7RS^%l4+iu_38h*^=SD!PsxNyioQ2Id6-y+SLR*+H>sZqdpk3tpLygV~%Du@?dIG zmNB-?3f93vj&&;bA5Bl_$4EEKGjAI+ZIfdpD_9TAGx`n@2+V_=YBb5>wZPsg#jKMAZ=s2@@J_|%>SihZ?gMKqFut|aR`cq>Q z(bKT`k5H3O&K5MWsID+Yu7=ytmF7GXLH%DDiXC z>sV)r_e0nMcyLpT=FXH1OH%aEd7h-jf5c0a=aceMGU=5PLzuG^iKrQl=%?#RbUNV@ zYxg-7B<8Ayx!!Q(uh?Nr)3Hj9S%EUsPK1?u>E>4H+mc$0N}p8V0~tTV@V2B7x{4dN`%dwv|;)4X@x$u6(+anRxM@ds}WL zfKgol=aWS3o=NS^x!!@0FWDvETos>v2j4nYmLF@~@^+BLqsle;I@i9MWgMBmGz=qd z%(vNmKjRpV9cw{3^+a9uBp%31e_p9zfAi#gqC?whB8_`IO>DMYPuMy4xbj@*prZkM`;v0$6zp+iV z+-q7rBUYY}YIqe3H`!a%x;XjXIowjHcH;-b1)Nmu(nE_ z6XcP$Tw1i6SCcyil0KIeZWkca&_LLmYCYj5_a%l0YXHs@fOjCmQ(N4)-SFYDu8|rnSbAu_uSzc$O!YmZC|! z8$3tEb=HlUZ5KonK<@W?VLgB5x_dFC9Uob`+gLykwtHakj-4EM-7%-OIpUcB+0S*J z%C0Wlh8A3l4+l4-PAGoQ8^mu(IQ9lD?grZ)56vC14w#O^LpCMY{3B)-Aw*bj* z6H;3A5xawX=fEr;V7gpB1TR=zt`D9JPJ{Q8?DXNm`?+%k9(I!^0A$rnEI9%|xEo`c zEGMcS{%E5l;FMkT1P~ z=mrTGn*kQQfREcC2Hi(9$z;V#Zc9QDcuJ~3M`0&`aNi(jOJMgYBo_~&enm$a&orFX z2jUMJc`pd&4Wc!rqjSPYk)zy3JI_Xj+`ARz2r*lObUGu=*kdm9LqSDj6c%GebG@(U z!NF3zUb16b+hgy;!S3N>-QnO`O$z__T(P`tRnDv~2|y_?+j}!ad=TQJ84%}2_!mJy zg$?dYpl`UP@CRtd%-9W_$%k{{WwJy^ay<$4IPwxb zC229;dp0S&J@qY|=y~;b?aRC=Bm(*Qb6p#OcV7(P2-9JD|&Fsmmx5i2y8rb{T%H$Aw$Feo<*6`YZ==5Wrk2I^HG|8rqm0Bt82~i zGtY|7FC~Vnw!o(d`j#~;mpYk0Dejn2^TGe!@ z0M`FBA(wj-I>GV!e=(tkVwE?P|K4=VZWsR_CZyI>_P?7DeOyz-=o_jS?ib_#!-O19 zu@|e2?oEiBG!nnoTt@!COvqozFQv6+wuF?UJx`;p_H(KMuSq5_&#MN(e6ZA1KmQ>E zp&Dl4b!fjgA(Y-_;-q%J%tR`odRR_J)Ba38M-G0sdxTC#r0jo8sO306SJKp*>8j=4 zg!C+*@UXW1-0Y21U{5^5cHj2=YTFWbZ$bq{JWn}wm!rTH{xag|3X47T4=xaK?9itHh|37_56{M^)@Zl6SVq+IiTt?<5F24q*{=36^Xb zep(dMCVfJ{#U`KrUCdfVh~Ymbv}B#HtRsAHLL!N6CeHf*F(Db_^j))8KdejTbI83| zGVCM#%;KpVvXb$Y&&lkvy_RC%8Cb1VruiFwfABmrfPjcb&8XJM$WHk?`$18{e@v)0 zdGEphFrli$vfTeNp`(hD^#7{~eXBbDj|m;u^%C%$)DKcPoivO-s6J_&e0+TJ|6@Y0 zpP5enuO{UA;+Dq^9|iqKw+o#|&C4&DfJa*>?L)2asQY)dAF~6Fh=%xQiA{R8 z0#5;tOuaac#L@wh_m4KuPnW94CGDGN*>Hna>w1E&hUcSE6pzDSqk?dj*K5K0 zo63v{2^MfR-nsj&M12rL=?}-Sc;Zr!pn^Wr5;5ahMuy(UP>%1w@a}B7k?*${8G&(J zj?q47z-c5C2^yrL+KL3fvS&XXYy$My+a|oWrYM+dj6sZnzKf%*Bq}#xzLk-yqhB2AlvdHCvhWQc4 zScG!Ba_uV=BL5;2Y`x-O0{vKmCWAzPPM87(&?Xi#iU3)#%5w^mKu9 zNOa05E5DZj4I7rU9|~fiiNPUYQe!`CNXE5z#o?|rOu)2sWY?K|Q`~BYyGQ8hk4ly6b5~6J`~c#A?2$|EUh~j)C*}8Mb3Ab`#mof% zy(qwfRLByp)m_2K4DU|NUYT2N`k^jM;TB3h=k^znBb9vybty{=+m82={nS&KyZ)0so=#D+h4WUS{iNr;r#=PV=5E zrTX$29D2y|vL=`E0X9F#+ChEMQh%U@T9B{l(>Cf&l`U0fO}x)Qzv=l)n?9MdpYC8w z%Q#f)5JvFGkjlOG-dbme!MmAqkOEDNb zV&B5%{~A>@I{q+AA))*I&+3DHoSR9lI;Hz1euGh7`fr1^z-e>3Kq z7q3hM)pho^`kY!`;&*;>QAGq3187xS)4pYLB5>QVP2^AA}Q zk}BVm&uE3=&o3r?T|M(}%)F|iP>K1($v-ca_sYIWAUY~9?aX|1?V1mPD8nb|Niq$Cox)pK#xP~~Gj-EXydSz1D@(Z7AC1rd(V zKZ@^X%mg9#dahHmrG5okUd7jt4;Q}s=jpu7`TI-9BbEGr82utZC)Js^-u% z7hqGz(pE-!Ufp{p6Js&_R{hY91%vsOdWkqA`QROz6|Vml9pca!D0d!&hZ9Do6T0(9 z45Z4vxX%am_WHSJinIKXaI|vu zl7f`EKpt7VSVI}k6hh_-ArCJjM3|AC>`^{Nus@i-=vzXTrg|oRa>xqsBGur{Lv*ZO zKMd0gODktUff&S8A=VWBm2V;oc68UwV+iNs?qxXSN^ApV#?z-S9fPpTWbkY!_2LA4 zTTOg8FtDRRrU*Q-i=ecMO8p=IDyt3f*K;3FN`cqdH%7T zyH%7eA4L6j$xb+#gvF14L011|8GPW9ds5}U&Jk+#roVL{R18E6~4!q-7b3+i+tAb3>rvsku*9DGP};r$8*vO`h|E?{Gs z=KB?VQy>B7?DfnL3VfDK#{5o`#ft-j9mqu>Mv)GmJtclz33!3R3B%2Qlc&NtITeRw z)mAxm(^9;aQyo|gG_GMXTNb(<>_AqU10vuu#gH~jT6>6u>-ymtNM3&*mB!-i4To%E z8Cw`rJf{-=p#*fGC~;Wzeu}--)=9z>%)k^vi)=memjg)UBJs9k|D7UO#rY=diOuS9 zLMh3GuOEu3!AGN^KT%LNyUex6aAQ??qCXJB1zZVa8 z0ogU+LFbc&&kQp*%ErMo1awhn;>dZN$pXiZf$vzEhpj+j7Lrvw2V#AEWXgv^g$40L&i19;>2>8ZxWJ+W;zP) zhkYS)1p#)zxERwUia1$3%aAqyr#N6t<#BbLm-gJBmmAos48%!>p4FRW_;~&h2ZT+4 zqjL0Q7Qj%I`_Ca8<5u#BoAhHPu!?fP_yH(F2Vvdx_5KVa?INRkc>VS`le^7SjLVGr*-k$&+5;P9GEQFQE0w4cYFJ$J+Bpd208L!rd_Fgf^ ze0v#QO5*@`XV|+RTOQ19foO1=rLcWjsXy#Swi0iy z5q1*1Ba!}9SPWM#aX;;IbU27 z2-YB@LfYeDXW$((@|N3dwBZOdRleQHleUO`k6l-&3Mi;o5KDxsufy_9vTwrBX&kUL z(L^*S>{6iW*c^722FoU{%gKIoC0pVY57hBg$eI96o#m(X0`{%vJ0JdIQ?F0&@dQs!dG0?u(7ZoPf@%>H!|Iy+42{nBf_FDt>rIb`f;{v;-Pa zaG3RmBnUu@HyLVlq<3``WQKPibzn{#eUAOFuo`N+D(g)9@Znv=@Vc`wSP60GX-7#= zbxFrj%;gp|hcb@C84%J04v@WdI$0KH?{VBy2+)z>L1EEAAc!-6P%WEZDy6}x97hoL zio5$#0H$|awXe}}q|#5a4ZF$?zchb;iUsQ+D&ZKd`^(e47C-zrr>#UCxZ_4E$mQT~ zlf3CdCUFxLngHt z?Bxmc*C{NEx4XO3|FX-!kG5Mk0XPG?L%TkHbnkZ6A(>+$*;+}ys}SDF>I`-q1chhP z9HFVIhN!9H3N<^PJHz9}!>j)cW45|v1KRdu$NSg&U4sCL4(=j+$arBlAWp1ziqpx8 z2T>Fb>8yHel&_tW36bm9%qg$*uWS8VbqF5+d)hl-T!4ojawKlLt%v-g+*9+d~SVOiccQ4VeWX@b6>-Ty!9svWu`BL+1|OyxM)S6281lj+K(S z?7E*cqrJ|faNhCVt|eUN@q^g5gcCrO!)Y(frT>9*=q;y|84$GZJL66g$je~0x+Lm#X_1D@B*ool9 zpXqQ%fiYmBGR;rFxWy!}nl^9!6q7ZSmNNupu0tDTE1dvwQ$0B7$r0zt4>z-xK}!T^ zr$$>SF49(`EI2jYVZ-gMkw}ui3*{oP#ouQ%T`o+$-kUz&nciK(om-PilfC;s_YAzs znuo@1Xw9eUhgbLTk3`Rnp-Cp^|G7<<<_^f!EXuBB6-iYQxc7dYh4QU9-e;aQwr}7m zL!aBYtzlXJO^f=pb-zp?HthP9(yZS1Y13|dVlkgpSz#O5u1f*cp{qp;PL(^cA8^py z20Z}#hmtE4%;HDeuG47r_c>vjnO*0K{mNOwxoNSRFF%+ZYn07tKO za1Ig>0=>^e|H1@SBezz=th}EyhoIP#$e%-!{za(N0`7U_Ng}|cb~hi|#^f8x_?A9i zyKiutaMsZ$-0++~r(0~_SB!dqyII&7&`@eTK>rkeHV&nJ4?Ejx!~mO}YlX9|j@`Df z^7Q}?l8t?^i~0ID+%wm&g-%$IS{yhrn!|MujoIh@r$teG1hsjR4@y4z6JKKY1il~B z_O~N5N|W-N#H|! zW{Gjp8&;Wms~A~ZV|GBm-f$<=m|XPG`YXj_wJkC^1OFl85PbOOUSIxR;e&4;?a=`D z`x+R0zS4N*@Fez{=(r=KUtH49;>-LIW%h8u_=uUuv#Y3M^Y7#TU~>%6*IK~%6X?=Y zV2b>{B4d`I0rFEB+O4FoNNyp7|MqL|AAIy7Y2U?jW_^qSzQLjApoy=1=PI)+%fwJORofn zfH_mvN-=nm>)NNHQgiInzr5%7Ob$s#Uj1z*eKk0oZ4Jr3FY5|KT^%VVV?*ILz99EK zw{$biqTco?r0EsZxb*FWw$a=jvzkaL21|e4?Gw1+=O>|?C+KLZzDfM>0{Wh>4#eX@ zUH(|xKQ?8^+R>rLB2*~;&Tvk+g~ zLcbb8ZwbzAgk7eKR=qCkGF9@Wga6^h3DPtbDuwG-KSr%RE|u+?s@my4(62J6c{!AA zaBNs>HuXYFRNzZzsP+11r{&W;Ie*OQ-MXkY%g1&E_4$om8~S7DpOYF5qdAKqKMXgK zkCE8xjd-H2Crbw>HV@rWOXY@hJN9j+P-!+AKHpzGjw}g$*~C7ioG@MU;vLl>}V~fkrukR!U_^m!j@3T`JJT0_LxcNfEVE?+{L*FEP@EetIq_Xw>XWS!r zcX?GXM#4SeAVMu{gIQ|Bs6awS953uVBWZRC{r}zF!Fcy&u*VeQnYW@8>RG#m>t97yH{0+Si?jb1gQyW(3)mhRz@wd$Z=cic5kTTg+@I zBJnK^lFqwgwk8wd!bB?=paIR9d*o@Ms z5vI(oqyFhAmnPJzJ*Iw5Tl9d9KJo8af$zifGF|P4zn3qA|9ET3CzPZL6$A>H%rbwt zJ>;m}_u+XbZ^)s$Sl=H;dQsR<$78RC1c7uEvGD{z*eJPgan|{U&OU|ibuQn_6yF8- z&y^T`Iie}roBGD)+)V9Tn9Jntu5&f7@Rr(cO<}Fby2|~5j+5@c{cMd@d>Tx4Wii7+ zwsY;jSlapKtPJM)^Sw4_7F?29=N9?^jsjiC+CBqx+tHrClXPR`vG2S!zeMDTh3giW z!*W#bKw?LX^_^bHFfFA_u8X#k9jO+Lt392tbar5?q3P?xNm1?i3h;XKjBWF%`-mD5 ztyC@FS{ZF1Us|wBH5vYz&u8B@?lxaMyLqOq)4oP?&5uO_RtpNRgY;!+! z$xKh-8=J_POAY4^ZH&W78YBf(!)z7*+@W_slE`p2qE0-%T%Elw9C(Nk^KBTFK5c+D z|C*9tFpZAHBSkk17Sr=-MoU_Xp}Yh*7&wGg|8x>Ie($b)PIbK~Q+v@vXA%`7efTAb zSExdI2x&rT{K|k^2}&pt#lAT@wnu=&%9&2geu_4vz$_>Gz8Uc{*c%rKDH(pRRL_Rn z(2p;eLdJLgBiKV&buA=9fkjQt4R?U>oYzt+8g#;VZl3f}xU~w|9vMY=mJ!u%jbfM6 zVpXsn-J$asEMmJ4X^48KQ2V&)U*ZT27kbs8{fzaGzt+p*x%;p*3&_8@QHRA|o0iojxO81klZ9^!!-Ozg&7urst=XCFZhT_CF? z5#I>F0ejU z{;pCcK8O2iwOESYDMvJoiN^i!JJ+&N-)Jd@v-=|N1Su8KHU|*na>HnXrmkSv@vLko zYmT`?T@`eDAHgB|k!t8c+-^j!!8lwmI+L|*Nq986`%>6NKe9$ZZn@f<5(l29mVZv!d*gK9*^QVa@ixMXoqLvPVV!9Gr&GP)DlI5mzx zKw@Puf6h6Q8M8x$mU-|@f}C1f-IGQNBj4|-MvKk5^G-fMF)zPA7L7qb&J2l5He-gr zevqq-Mv6#nkynsEOiA>#R-n7QQ)#Hs_$-k(K>LqQITBRPHN^IORlmRWm}drjpr>FP;N1=BM>3c5U&c#!p)HLNFi0$ zDXsUeS&&_DB>%^9#kj}BBf+b<#Tcv5$QBEp(ZnoBJQ^>ld**ZAFe}klQTmHUiWsaq zDWdHX!&>@SHqxol&M6J@WUL&bFhG<~(D>$e{?nQIU z-p38q92;6o)|8Sg=JhZ$^*blH2xIogeEt-`x#7#~@`{4I3e@GI|?d!WL`SBjBLjNA(hQyuN7%!6a}L&RygKsPJSa%w&M6L(CB zPX%l>S|%=!5?QDuFG!*>Y{`ROu5DF#-@>N{Ij2>%`P(+!qKdG1Ik@{zA#ebqjz={g zZ$8MwKG!(f;y#JO(jEF*s}tS3xUGDOoJzEK_u!M&(d-Wvqpr?>BR&^A+-7Z&3$Olk zF3;tWdv8VTQ23i@PBY|0JyLwzpEU92Yy;}`-YSJCS=;H)2|VavfYF;jDK!W|n8=3J zZazw~Ltj*3fl~Is-ELI~a_Ds`!kh4&)o28xcoKbFj7zS4YIWMDGWr`tE0lhAE(FnqFWi%ziqsOGq$**bmw}Q9sJQ2m$p;`;1Aol zXI|MI{7~=HO-$LJ9%Ow9)+EU{R@q2_s?sV3B7cUF(XMVQ5SdBv>>;r8hl3;s^S)3cIcqi49$q`^WL^#^Uqb#NT45 z7=?SkzT+E0MeFrF>b8i%c4ouG7vd-Ows=v=g;U8P3yY8-g840^#mYeFmIB4Ppo}2M z3Xq5_RzK2LmCmkKEUA- z9?~03Xv2asc!88mJ{&cmy5E)eUnOp8E5yzc1{Xd-t|&!o_r2h1@G^hwS@?h{hq7)P z`9U5WGmpGQznj=5sOdnKTs@9ACy-Mkva>JJZYuPWjs8Rny3&)bHBZuYC%KtG6^(=Z zi1MEui)_WGC=?<2%(0ndhXOwl8IrZ~I6#s0ghxgU4W|g-gP!m!qHk6o{H|mRariot zX^VGIFK-F^ZwQBq<1nVC3fSEY$uwp0TgVdX#5n=v1XV`zrvkO6n2UwHdiz%Db2$$) z;sKq6*GDSx<|BU2Anw8LcvU2K???fjdclgA`~V7C!e$?@bbL+d7eiP!IT$}n*fD{X z+XULGVwiB^iB_e4OhWUspJuK-OV@05Yo zz*ZrkK0urWL~&+*iirMq8x5nA3kF5Ib0%PMsU9_=2;#VIC6be`YOVW0RGx7AIb_LL z-cO+Olr5H8s*|{%uw#ITvn0AmIOdHPafm=wkU7b$#K7mli5fqs{|e5M{jAVbPY_5i z{wfdSZBMK+-&HEly=$5l0nAa>5C$8m9;s5vH4^h#CKY^#!xoV1cM!c`NutQ38X2|_e*OMN67J?k=y^v-MmIpJ9u3OYZ%AfxXs;e= z;1NurRAr8BMbz0RRK7McjCND3_(XXZL`<2d3+XU84?`H@ElvAH^D`~HOj|MMNx(eF z&E$%GYRekqs?MR#P2w-Fb5viyb`mXLOdHfb6T3oqW7^|mL>yjNOR}E0ahl_Z!0Qa* z&t9nw79ei~omU$}-_!^>w?e75b}wnkx*xL7%a5*P6o+ZD zqP=3cu5$80gSDk1AlG(<(VJ)orf7#N!_4-q^MG`_c=Wf$uk&%9z4WQ#U4u+S)S>4!P2fHy^e< zN;DrLlxEv$QDYs`Oc?A82W{?|nRxiUyc%bnXH~W~YjkpBymb`Acr@v=;5E*yL+<08 z(YfWJv(EzRt?){6g6oNsgA@76K98ubhKnKj-LRP`b`-wQ3#>+O1nF8efuzh4J37X|Z29?a-E3}cq z(>73+R@D{`fiX*yL=QfI`rMvyet+v@pTB$hb;Qp|(G`+r{Y_ua$jBQ6DQ4c?(2k~} z`tutkEHxL7#gNUr#QW3~xz+OdYFQ_p3weKeb^6J5v^fKac69?ExLEB=!&yGXm_7LX z3_TImlSABxvL5Dop@hwx8E%Ipaq^Rl$|w3W1kA<}l7!1+7F-hIIpsQ(=*Zn2e`+?8m##fF`bI==JvC^=hVX`Lp|lh2-%o zUyDX9(8xpy(uEis``QBnyAPCl!^N(;APrYgAJZ4~53oy!rW5)vX1hKELr`+tAel_T-8yoD z|HbK9 z_%3dFdU!dDT3)E#FvAsZ!hm*@#I5Mh%G!|!r;Xs1+gf=^LHDj|N+M&Tl_?n-oJTVl3tV+w!Rtylgi!m>R|h0v*; zaet&7202FJ*-ja)GTzE#dPvSLkILRez&iE1(s+XU5=B1iKiqh2Cl&ZEAe5v zR|FgkbWpdWoQ-evj4|b# z7szMGbqz&Gs6(=NeE6N8*t;Sh@o?JrypJ+~nG?)+g`AJz%S3BVpl>I1pUJ;hg7bbQ zQr-7CpGf@11yT%5C|>&QrtznC#a=cVvTVRNdwDQA-16EBB-W~NXfd?m>Kw|?MrQh2 z-YMq!N01aFEM)fbug}gJFvQnJq!QbX@gCul*$17OA=I+{CO`*Tf2bvu}28rxcxMtgy-5LucZ7e}ZFriE?25 zVvv2ukn{X4KJ-tJjkzOR!=Ke#GPewfr(1L;IbG^gcjXs2BP4$x`_uqvcy!>GhCdHhFMB=}ABDSPJAA@nMp)hu{`vrFTm~(v zTmQpNc{=gQ~9^HM;Z4s&I4=HqaI)$Ala%9II;^Zz;Y{ysj)Hm zg%y@HqS))4;LKK6Z2Ow!=E+~{(AS=80$u^&P%_JeWS zW9{2{@bxcq{VGWDQ(+^4gBeU2!ETRU5b)|#0i^EoD=o!tN9N&UmLOkaTMI`+RYQK4 zzrshKs$PWri{{(@ve?M@h%6}C!y-Hhe>mqmtxZR*IR^Z^-1Uo89`WLx!r6`ZuY>t= zQ{Mf>Ez!uiisI=E)QQX(FZ<2AgrA>3ej(f?3R2IKJo3Sr8Oy-Dy_WH}-1H9riIEAz zZcIzk+T9?Zc3O8Jr48$^`AV;_b9X^0kAN<{wU*{0e`|Qi{O6g+_ct7c4hI5uES^V& z<#C7Ay>L^cM6=iX>}kUwWo)AWotF94_)z z=CawBL+kI!z`jBxVhkqpR7kiyD^cPoJ?Vi+i>0W$Wk-^nLn9Y`2z2#191R1L7aPR6 z#O5d|aY?Yqhqx}%22ys!75lZa4_2rdN_8GPIz+_2P`Ah?JC;i?i`LE->l~{#RefUZ zl#UkaT60w~)-P{faFkpZ^;M!dRNqSfloUV?Hf0qhEPeOFha7A*+vQx!lhH)M zt}hsL0Us)cTFSI87XwpE{W^vH19gD`$Fys=MqWM*xWq8Suga`Vb5iTKo6TL{@ozJ`t_1#y&M z#u6Rd$;+pv7h1xbn%^g7j2;dYI@E|*H|2t8OP;-!;aWA-)07yR)ibV&!rRJ!@16SCZ&>#g>q1y^=a)T0hus=UmaA)K$*(hhEN}AqC{Sv3Xg+rw@Ri;J` zMNN8csmL#8mM|NYF^DUQp*^VdKjyaSDSW@*>uMH;Un^Yb>NUR4zQonhO*}MLXUg+X z?R~P7^~_@CM~uq5XEmG=)y9lo?Y8m=3z7()Jzb|Sb2({gr>x|{qf)ZZYlDCN zWS4<&6C3R2@wGF>2p@qiaO?)#1QNM=CJHqKya&=(SUokY<1HOyQs8FEl6#!S_rnH* zxr1*dcaC;U@;MlYU$~0&9;>X;$aB`C8(5Co-{Bmul)45*g-Fd?Ib_c()0HMBg*mG+ zz|@Ka)A#)2%q&&ZZRMoc730BYyN3L}Zz<%?l1mStW$?Fm3g#Cli7e;HG#t4ZriVL;7V@u&C!NQ-^SQLL zPQKDkNX2m8bKRyNhv1v+2Vy#;Q%+AcGJ_v+%n|uQ1!)GK9I2Lt{S};Wvwf5cw=Pjn zWiAP>b)|NqM)<0aWrZ50xDZ?uG1gt=NHmP+L(`^Y4fLL+2@Ehz%G%9k%1O4!;ue=X zWHiuRB-=k}7TR+L6Lk#Ax=>%}V0kNV8~P@;idjVvgcJA@{T&Q#NAcB~v z=CEYaT#eu|<$4kS5XeDwIJRnt8C0nwOCZUU_*SF_^pR3Da()bZbgc)x&RGVD*(nCH z?m|hgNmeovf7qkk?nW%|aVAsA=5+e*Ml?H$*H-#DLWL_`ObOPWM`|Yf&-E&+6pXD( z$3>QaSE)P)ZfI{$em)`FU4QwFTu+~dGly=n_JM-cln~VMhyBSD$B>Bz~Dvta*BGMXb+dWcFUXOh}u(byd=Y3v} zseHp9z83Q^ylJ#t zt&jIFA8L4Qa(~9_Z&&7gIf3V$fPmzHrALL;={w+++l^n_2rGq5Ddwk`9=E<`zftD$ zA4;(1wW6M!<%pW{u^y+{8y0n<%qVDjk^cT*O#9yy9>-`Qizrbe*QIChSA=~Z&EMI% z4xzf#Wb^AU3W8ehBe>N!Fd3)TdCS#F9X>u<&2qn4Q+JU$L>`SwlhNX=(?zptpt{kF zVq;Q~w;1sT@M67lWpb~j;fCcTawY2Rs;ow1@f3x%71tuy%SMOJK8UOHI~r5B`+`Z*Py4fG#RWd#@}Gv2c9(?L z%=O4LI&WgpHlTWjm8-N*W6SZTs{2ywxSkv(%0xG}q9P#a9882x-FqL^+Q;Nrps&2b z@#Qr9{jfif$5#`4709sd>`qQZZqlI+>wRXr4t`>sJ!z$&5(;kLzp1kJ9NylJ3Y~Tj z`Xz%JO?)JlZ2DE1Z=?5&N9H?USzgpF>!cw5%-}_nq}(LmiAuh{LBEwdJMok5{_OTA zkP_+}6|;eM-n=;~GKA#gGKjDbZ~z+|^yY4A-;EgqEk3%R*7+(D&0pWhVJfEcelG=A zSd(VXK#!4KMu=fAKho z?u>m9;nqvER0s)(1$`-m{$PUX4j#c1aW4x2SEVZm8qToodD_2vjiE<8MoZfa2nOYl z))HW}&=B1L<4IYPwS|YXx{qZG$&~>r`%GJaz>MI*I_+O1l>z!F!NOr>)61DrOFNR)(Tus(LfzVI zlVpe7MS;*&NRcyzh1GY>T!CooXM#0m2AV+}iQT|C%&tV$8|h9Z@uzz99~kRO zwq>kYlfN&F0tvETcBh;Rv$R*ef|xzNGQR>9%dxG9=PNQTZOS!9395e9tSEHWXOl0Z zQq@&_lCP*_Fi=v1&%wW-E?*L6HgG0rq6*zm&9>00O5#u7(+p6Pe2ij)us%~ZRsOMO zW;XE4WkBo6{FCu0v0v6+sXH7gquLUTI{C^p=ec_7q}n((1`qI5eAs`2m$(B4L~LwK zdD(mJ|J1c#@t(4q#=YT)V^2!RH|{jj{qR-oAp6f;zDbeJt8{`V*u~~|>@SyMOrKh> zCnJADz@=8Ft`jd_|4hPwzqWM42xq9C|Bz(d;Nn=Aw9}f zdG>PZ+kG0YhO>nScPUuOiic)j=?Z;_eYw&sM~{J}cgQB&j-5u(S8bbbGQVET$nA%WM}^0|VSR9*xw0Sr^ z;+kF@1%vleMG^%q&21#~gcC(ji5jMF>XlQ9!pR82^r0LLgZL}ooon%D0@05@lS(;I z)gCzhs>tvQPxGmivp>-2uE7Q0Rq8rr3P7~*C+ zQpgPdZ@k^*S6gAA=lkM80txO8#fy6(xVyW%6fIsXgy2%VxR(OO3$&$3@Zzo|NQ)OJ z)*>0sS!ZV5d(V9_^Je~p{bsMdo@akQzjwuoRfO)P#K{OfIgKdx8hgwNNp-5q^;+d= z;_EGs1I21)ck0ri!k$BI#G#wvp+=s29rg#yQm&x=x~4`LqjWq+rCWvJ0WsLaW#Mqb zaZv!^T1@ZZPU~I)N7K@c{`5FNYPi>4x35tf6UpkKQC}BO+b1r6BQ!WEDrSOp|@SC?#PL+jFa5zE|pv z?(0Az3UCp4_1Vsz7N$J8Pg~299`dw@RRx6|^w8!-n(i2ALS}u%EtgHyaajJbCMDWn z0W`CNCw#;+#q^k(5;2{FJ$-u2spei0&NVBlJ~j)T6>ZRf)Is=pZ7%m~$axv{PBct; zm0i8)R^$R#qnBUfF4qmN6c3Fr>a3pbQ@1tD4>hcNC(++4urOj~vO^gV#tgL6Y)ykd z#*}~bD6Sa8Sm!N}#)=#2DqGBm4SU2U9+X~~&ju>L*`4?NGHy?@(Nht{m!R5@JVh|v zM?=yZgF_lMN>8`7huL(!qxkz}J5Mdc<<)d!4g>ldq24pl)15;E@-%vraAEHd^H4CE zsStMjh;clIb)r1Y>8WvXs{YfNPaz=Ysz+%{^!NH3#mmigR_M}IH-d>D^XzeeidOMA z9-LEm_$-lz-m&rebc{Vpaa+{tU!CH4x#E2t7HgEj4e{vtq817d@lZT;e~Ku{RAs-M zcpl#WFH`kdE&`RK_~_^LKwoycnS3IsfkxybfBEsb?#JM(R~Rocm=t{!>iO^(GHIKX zSV+&@9DUs2{5HBT*pElB{JrHJ8*%UvkBhE^LWu3_GaX*wAN}q;(zaQ1-q)hdr==b3BUFGTSwLY| zK=rH{5)kv8-%nfm+*q-Z7AlxPDzA+h!z^);Z+;P}Dt|Yr#LnSMyp++6hsn8SK!1#2 z?QLNO`_i1s{q4qNu9>1!onyWqpj-FzoI#@tr(>yYk-PVCg2V`M&kExE1`znqoL$I~ zwp!?(AKqVB_+03l34+5~OxFdpZZ85LG2|M}?mj|VuBbmMjIB~rP(BZDrQX(nPC2!_ z7SG#OwJ3iLOd)yAR*0=UJ1BsnOfYD^MUDgghok&Uo$;G$OeP(4$xqNL@_v4d05|bA zxqYEO94(OG)?7+qE`b0A%~t6@N*aI0xJ|HGEc-P+AebR-3iHuw9Oyc0&AFca&vY(z zGlW$EZKmsg@IrdkzxbHg`@5eB+0-}DUpDHBDe5plEcwh$!*IsJ_ExzkH=6rO0n`^@^uMAqwTA0B?=lx{_5CwW$wu62Crlypn_V z^=?Efyh7)kZqil=`~mM!puARFzP21`CVLS>fsbIv8Np^~1BZ5)f<%?4MHx4I&Bt|^ zc!JpD1Jo4a^*0G`k%N^u3p8_bw*kz&qQi#}3(BPm^5DmgiOfiNe!F_xRx^}5i7+ldSJ^(@2 zn^I&P33dzUR9i<&{j9_W63h|*6DEW(nnEFnA-5`(;;97u%x?u*pIGcRab?3xc2x=W zWH~4c;`x4Ou4|`7y|}{eS-J%@?j4f%&lUca_(1r_2z&%Cx2Swu$h!}Nc}D`RSrS1} zT}rk>ek?4-FER{1gbZ9tgquoe-G}^WlcNOPs(}8HrM!~I?2ln!DxhhNRFza;zD~IF zXXJ_T!U!mmea-Xgk5aO@f^CpGR5F9K^}PvHT?#4_FK$c&eLw#1RDQ)6zZ+5;>SimH zBQ;jZpvV~P)AT8>;$3Hz5T+P|l>Wl43gw0D)+vxCbj|JhAUxO$2fZ90-e7YfclOU> zzde}fPe(3x=UY|J@z?Ic!4FxVNxD%|38md^nPQnz>M9Ci;gD+uj;>4;&X>7UHyUZ>kk6jDWxs%du_}Mh4gC+ z@-T5Se|r=L_(p1QDJ_dz+A8pFqA7ePDt!EfTkZJ2F7C|kSQ2p+Y5&nLx!ciwCN&&k zYN?yj>f&$nl`ZBUVPT`N$y2&$dWTt!Vf?mUwacFe$Gx&&dhu%&mt|F!Jsy^SAuu^2 znygT?Y2JuNTV=h(yo2>ZXD*BghNE<9X%15)j z-n0Jc|B@B!7Cz{_;CJFc`wv-hAd&8W%8FLw9semSjuj;>9w>iy&fOjaw4iT9lJfLI z_HRBS2jCL1W9aKI^e3S+Ux3-peGJjPDh_R(IRMoII81#xhm=(NdGc zI3crz)5z+Rthh)O@@Z|fCl;TWbApkn^@R+vC`i3XX*}%qg0XNHYgpNnxJ+oh5#?V z?=|pehdGqg*ws$H*Qyo?)0J}thta|~w&9Lcw`l|%nE>Vlo(|Q_c*;Pmilir5u|k_^ zqE;_jOuNz{4f1aYO)VWLEEhp7d9|adiAK5mmK1hFgiT?on}tQ$CTi!!F8?GezChb| zR3QF-GnHrC*v2Mr)sX-5oflQSz8+ShGA*_hy|H1A&-Ht%0unU!^wKxv?zKL+^mYGL z(f>bX#sAwC{gbR{54HSy+tH~+A>ftq``gV+wEvJ5rR)8$|4UZncQ=*h5zwaB{C~-c zX?|!IBR+q*(??lr>MzDv%fDZYyPSW1@m)A_&u>EfSN;ESMSqg<&R+Hb^2+IdS5{=x zGLKGhtT>6x%yDT9X_4gTf&wM(|NJE?kL~FieDWVLh~ML9{UfN+_&z|? zMBz9roA2|@rZfhKwxI!k7=5Pu|EuUn5bTmq6@79!Y0XnbZ~nhzMZVDUBwK6nEI+!EjUWJu<7BhxNFf*ATgT<%(*>g`nO!5#%c3xKOT3f%Y&)o`gq|?gr zg~ZwK{7NCajv1g{KSSgiy`f=<#ys5bIgx3lu5?zd^?%5Un$?22qu-q+|Kv|6S3k{Z zO}Lx?DOmnqE&Azi_NA|Zq4+a-qHnldl*y3X-D6VfS*nju{~A&sSL%tBmN9xe#u~1J z;9?zM6xeCrl@i+*mIT#Hw>M;w`Ejcv^Km96628MfHa!%4YsM5zjwnYb13*yCGcnQ% z3ImiwLZYF%(WY5Ei?=wUl^Oaag%z|Iqb`;$z9}BMEHrCPoLU}lbvd+l7-S=c1Y;!U z?HC7&`k!$KJVqzmFAu-hemSB7j3I!MR#e$!49Vu569xNSRf-G5%jp-S!208;QKi^o z({;v?Kk=yy;<#1z@TQ$SNlTR@QWaT;os}$Kcc*3J~Pd=TN>NRPI$Vs zdl)`FQR{S9qgu0^PAty=wVu|9@;8fxw_KmNda)Xfe|&iB*-Ors!)9tJ>u&hi-(E+} ztD^(X)Nd5Uq(a>CxeFC6FE*0Wq(6*CaNnh6Sq~Ir?C`mqbAg`W{)jJxj&iYlh zQU3td%JzArPaBi<);^56Bj1~5s|Pdk7d4qTo)f*f$SdDvE>hS}SY7*fL-kDi%++2K z45r!bLQ(Q3G}vv$afDP3IyD;^pOOzneXg%VYS0njQsGGvqU#xaSl zspNBAnGv-bv^gn%=#tBM!>bP-=_`*F3knHW@?$h)ZVq@$z;kxfXX`c~7Kyg92sMGn z#8t`~v9F2dBJ$=N?tyncpOsPqw91hlc8am3`PYFyL{-1w!t?b9pb>>KpcOsEcM6XX zWnr1Rv$Ph974C!~LBVc zk`I^GupXz!Bh8Eoy5lz;lXQMM80HmCleb+1OpV0R^ozS#XhRKvQ_m}jg(AI&_hW-v z=~*#G2Ub`{z0D6qjs8VUn4cJ?QF_Z$Z*umz)%fi7CiEQOTwCbTpTT84uN*wD+2QTA zU*iOfdR#X2TdzVV2j~$c4gre zMM^a0nqLMp=M){IyLE=)$p4ss>)45&f-O{tG#*P2L{7LQ zP3Nxqso{u~Hmm}5z7F6~@pf~gNIG+iO+G(QCUtb`YP*s_9IZ|iQJSENuBuam@X_sq&)}=@f-6u_JP82@2=qi71}h0V8Lywc+JF#lfa1^5h%lN7`>w63 zL_vsBC~ldXtX%NzbJ0T|g8K^!$83L8I&ilsToNZ_0)-@8S<)rAvBT2~$LaHv2gB`I z2rWSvJERoL5G(I}*wGCU7n}|aCunCHh;ePzP39dQ3>vU?Z+spVDGuTp0e7hiH@qe! zY6n{OqJvl|fLLa`j25$?*U)%6E?47*PQ9k5xM`7oztk6F2iO4f$+t^7y@qN1VlE5f zIy@u9kW1aYCHfW2;e3^XjYJPX5(bc4SPvO}cLq5v13R$eUbBlIaDX22*k3MrCaY5H z^V_W~IEjneDT#x0UAz}k$qN> z0awbe8Z+F1KVM6t^!oG9Dz?4g!+{ zb13Qfei361XM@fOf2yY5{>r83%lAj-XA`F{f%D5?Kn5(!WpFMQTA)KMIL8fC+67Yh zn+tY>VIgz1CElH6q#l5X-jBE@i$388uC$pt8fUcd(LB??5mQmw;~{kWIfe9k`8dr< zL>Z~g2{7`EBF}R|wBaJk=0Fr`ix8nk?50ZFYKt{3V2B=OCg#&kFx+$D^VW0Cwga!^N&{WWwKDYr)&)5Yd$VdNKipS5Q|-IlBIhk>v`GY zIpM#MN`mvZSia@g>DAbhFN&)QjQ*8di6#jBBh`^4DG-gIkOXZrRuZeFDw-4jjROC= ztzju3##{}IFQ}xp_mM;i(;}Ww-%-#cqx(~>3z-eGssrVZGD8c9W%J8XKDD%h_(r8( z-7|X6oCv12Ue|Gf`065Mn-i#}7OKBj67(}`q#q9mt-#GL*iz&JmVh5U*l_Pm?^>M#=}v-@r2XZ_v<894CeUaM#75wpV)Y{}QfDk( zKWyREbEJ7SDgjt4@$pr(S2P!wQfInw3vg5yj%YS?QUimAnhQ;czn2oUnFKa;foHcO zCi1gus63m+`JK&KM9gWbMcqPO!KVMh9JxP8hJhcm2xig=p03?F>}sNBMRX+F9n zfgce@o-`jhz`(H%^PL6zfTK>`nLOe((42e0homY!5Ab(eAh}WJOLdSzQs<;Z+{!{> z^%0r#Q79$aN5|YQsy?H~`B(f0;Qn8Fm;ykvwa?N5Fr-Q+0v|jlnUa(Dg`~`tQlpc# z%(M$-0n%6ffJ>=sQ1x|M1H8lKEXx5}J?kbqHkG@P!bj`I zGcw-f2dRCb5}}nssiuA%&cXp(RR@Eb0uy(^Rdc3b$G9U7hk|89tiO}OM#pQB2ThQ zvJy7AOq=HFcgQ}0G9nDL*(VX^7Bc&fpNN@`NDHqt^o#F;z7>d@B;s8lIcm@c^w3K{ zG5m*?7BhvC{w2wMDUsaMR+QB|BXIV1y0Tw_sDE_!{qpP_u^-kVF)kUQ-#;^Ois{r@ z*x4n4aZzypF$pEzB0JN7MD#2c)2stex#zS&o$1-jzyjIv<8lOVj#< z;UQ)zA>f=ZEuz<-=D14C4=k1}$a>;tekM~hZ_J6s%>RiZ%8pp!#H$-ffPE(L3&!=^ zJ)55@pEe#bvb+buuif$77b5XzrdGfF02zwo+eCdJ-R$9IB)Fdp4lb>^9|&z*0;>R zR~ZSUxU}Ja^N1#LZ&-W)v4T@KDfN&xOufST$-KS`%N}haBZi9Bl6{Xn9XOr}Fm?(IcVljmYlGDYFmhx&Fpf7=Wa zDEBFmk^Id-weJyGXa{sm6B{4)Ax?S4B5Pu31G~=#aGRr9*vV-hjz9Ki>nvxZGmS`s zU$6B7YxzJZ?IW$#+njx6df!nP|+>{6j=D)_b^15{V|siOWfGA+Wgc7|;hS zlqS7sn(yNURS=MUn&7^Mp1dHKB{4 zvH>%z%)T?a4lx4X)R2rU>vF!yXptfRH8TH?|J`K|w~n|)wf567`HB0&A$jwa0QVEe z0)h*IzvXi+j%O<})v(B-ad$uLnY{J>&nV7x(s&BrZ7xb)%pUJ{t-UmpEwS(Pf zG!JnCNP=?TfZlx|NYw$RPIbg`gSQ$fT}!~IoXpa~489SkoZCx2G+p#gQ%t5C5AX#; zE5bb+ya>@T2{ghCyyUd_=lPCcp|@lBjHoCH>`uf$Ja~->CM=wq#4JN{Gr4~H5S_9Y z?ag#SC-jF>Pam5NGzjsUjH&_X0kti{#!xzh2S*(Dkm!Nv^TLS%lGn&+HnOzeO%Wm00q0k@7L4^&y|5} z&?^-f9_UwVWn;w+O|N`&qRUn@6xU^5Oq;F~!NR}fR)S)V!;JD8XvG3vj5a8!Ok0Wh zt&doRg%EqGI?X}Vgs@G`ZDMAx>4$E;_oYMNbh0p7vy0tS(+1y{l7U=Wwz9+e*mMO< z627PrHqBqDm73l^dWxiK^gp_`ilg$C9InrJyf(i^pkxw%m-uWA_DOy?4BnFULe;U} z+tK=o{_^njD6==xO}Hmb9;BD094{0qPm>M ze@{s&qV7FNCi{;k9vVQ|tW3ih3NQQVy(`chDR}HF_;-8fW6vFN`LB|)7{^(GU1v8z zbxx91-!aDMHe%kp!+|u07r%G-H3U+q_qn-DN0=rAmI8=qM5!u4BiEab>asD?ngAWb z+{#v+biNBAT{#>PJPrBC)!(QQS~Kt~p9L031W z|9LULfxAkh-d#X->+WN|ospRfozOtg&q}gdwlzIoqbxtG);d94b2$J_)YtR2w0;HS zG4Xf2Tx`xWX7PouH)9sZCKL0O@F1;NV(XXQRx0c1vue*j2TT;T6qwZoGmTTMRGEwg zA2#d@M|}87{)15}wtCIg3NV^70=V} zbryv&(QB3Qzm@#UVWZaQT9t4q!t3m0ChAS)U3C`iyfe#5QB|D3@V8{P#R9H_&3)4K zt5kzs)yB`+x?3!vCRh$NL}R1$+eqFH*7Z5g%y`i?4uPF;9G;He@+$-Nx8Ub&{YgQg zH$1iAlT#_Q-FtNw_=2yy;!Oc#2sJw%1Cmh1)9Y)qzod_EcS!j8bWXw{6Q{YZzoK)K z-OrLq{MmogjV9Uv_o4x7*YSLq<@cVf6hD_*RW_Ubs;+~?e2G;yjGrGqviHmsxYm#I zQm@y`ZT6+;$v>y_i`p#mS?Ib4oGYKN#B&C3HwzcN)@S?b?YrBkQFzq2MkgGEY!5}$ z6e90S-q%_zn9K!5{yL7k$SWm;+!mJkxn#lU88SZDUSSdpL2fYyR3}C zw>U;0w|^`nFI|}#*fvI?TKOt#t`0<$vljhKo4Qqjb6W`ZGs&Ri||fXNJ%D;eydhs)F-U&8eyUJbi{MYOq*jH$V1#0mbe7#NCvZSBwzymm zCQukn=I$!U(*GJRR+^awz>97=rUTa$%Thv!cqRWzC3b zvRDDa3jPGnv<^&!`6C3?rZbFkZ?kwNRAv968C)njag7JF$$4HAx%9k${=KP2nn5^@ zY&WGEi+5NdCSsG&(DzXN zBUB1A4RIt0voY?2>M(qEu-tY=T6%$_nm?iW1G%!?8vile@;YsJOg-E6fXH-NGGoly zu|-&KSrNMnG>N`PJ{jqo?%(v%A^{%I*n|}FrQK%uHWa_m1k7v zhV*nOw_1&8;xb#ut&?-S|F`UbeMj^PgxN`-U*{~^KND%2tzwb_W5XIKz3C6=p1V>O z>-j@>atm`6{0kFpVw$zI8j<}s9d8jQNQygG$*>~yLcv)D#BTkX?&u6TPN`3woF2@4 zM0WgYk0PZ`8?#277o0p;pfM$|!}+PtNk4U*jGhIHX{_nvuX3vVy5&y)@3z?PdZ?s~ zgMQK%D~vv`=H^!QiZE0+vr}`o20#LnyBYZ+)l#BgGR}@Wm{%6yW@7ET*N?H(o3_|u zb?CCmtiN~wGe8xnT}sWd#E6<2wtOlIBJoUc+W|W{@!F>rvBy|^dVz+J#ycwK&zW$&y+v(s=sZ?GnAYkQRZ(!vqVKXK&j`K z`w3o$Xy!Jt_F{Tp7L>1^;PJ9{v=k_7?EYL%LFCm8Ufn9ww^SH#$1RPj4heK@zbb7r zl}vh6X{CzTcJS%LlDBme)t&H0yKQ#4nAhv`Dn zWVG1K$4#*`JZo??32Qfr#4UO1st+1|r`xN7e|k%=&E&6`*>N*QHTuD+nb6%%1`2YO z`txi&<0X#In`5I5Z9tcjJeHMO3H*Y(7oQcwwbskTgGN5rxo9GCeQ-vFpn4&#_pB$8 zL2xy??I}ji?r*1Ff_)p(ZcQwfNS=qu!0)HG5I1tuMc0OR&P2qP&rvm<;e%lN;-lmm z)(YyePW9A=tdu^kkgscb5(ayKGkauZXbQ@8kpB=dm2{0^}C7km)T^-E!55RPX zv&9t7Ma))hi@mJ@r;&QeO;yjX(ClR^le`5(;1?VxLCo@t2$=ywZ<1(6&F0l zzOTp*f#ZnKvK#=?R-%+DTyc2Z;uV+^58f-hL?pPL(Met4hV&;)u1Td(c5zC`dph>~ zdZ*};Boo&p>f`t^Rud4%3h+1@0^g@PAV>$dN;iX*P%uz$wRm2DD?!H}z(hgT*Rv4_ zT3zp!932;4#y<%~;WRvX1$MN?7j5!t)OGY*IP5Ra>+N@Gz^FfBB|q2xzhV7*hzp zwpV@kWwi8iRND}Mrh(08i&j`c<^G|RTW~B8BOwf&k5QiGAPLY= zSKJ)H#u**YIacQt=H~8`c@aJmw>w&tJYI|#ZFd}*>%?xxFF4|0#k`CEjnP|qA78Ad zQqc6Ya|0>y!LfFmfTk-gufsDi@i5Z~CpfTC>j1pm3V7~rhEqMjW2?7NQ6tt70JQ|{ zlNMYPs*ib{u2# z2}}F|F%F-fcKdF&kE?~rS;C#f(>X5s(jg_Dwxy5b0PJkSgG#`w-dU*O_w)l@dKr8JBEnB~$8)>cQSv!Y2=u%BSb!Zn2O1XDrol@u-%(c@vK* z^+Nxqvj0)kiK&e(07%A}#F<>AhMAoDRs)p=U78Coldbn&k2 zDoFh6rnp}a1AnUe$$V3kPIsHGyKx)`PL-L_rfpV|fAX0^&J->ihbLEfscIH5Dc}qX zP)Fg`nd%lbo9$Vy@6jD%1(2H1x&ge!bHIDZ|6())qs6UjNtRH-#LsvDQ~`;Zx^ZNX zCTXflj*J9do4Y^JTJkYBpT1M);`s(9#-V4 ztq!J@n|;+QTWS;Tdq^vF0!(8i5jbRi{KMNfrdg1EDg< zd`62aaptCpoXXhZ&;}FC?kzvdw=KG(wz>fCEjfBi*n0=V634C9IpIDgymTP0I9ImH zU%QkS%f=8U0h;(F^ z$h+Q3AZcKngaH_5jR22~Obn-h5+`OIAv}Kia^~{n<8vJM{g@AX(eMWQ zH@k?Td*ErOI1YC19~R5xGdr0cFxua8i2-a%<*!tW*r7WxpDk>ExZt(pyZNR;R_*QJ z+l{OP8&^MI+x6DLQ~SLPnrHhircf8|8) zai{9rd7D#!-x=)lv^a`GB*KbLkFV%cF`RM8B<^;9v=oOGhEp?n zgzC&njpK@0hW#3GPqp zxFxb|}!0sHp)Tm%-DC#SyEF=Y8)z%t-w-YyL(YXExj$X8U!{7*rz+aYXykItgH+rn=Nl z!y0mR3So*^0Z&%Je{lgCN? zxtwND6%mf>W!s(yxx24pW#9~fSST6ZqIlinYU59kRH0h%&;?Otb19m0CJE0!$*RPm zs+sul2fA(jKL_*g%^rsaLHLR@QJYE8Lg3F}{Rx`9;&-GLmzZgRurse>71 zwl~j+{j316UpI*y_WYwhl3nR%`+0^+*{@5k>U}i(v%wD+#sT?vN?DO8m?@vR~aL%is<{0RAQ79hs3r3FMZeIw_rSnEm-6P zz@PU+D#xA8d3c33fb}EAT`;S?dzjIWi+r63*fQVO;E)5x`!rKz)DI%@D)=cymZ25S zpI0|+kMQu?(Yqc(uUg_=p7>dx{WEI-2p>4@l6i>(4@O}(-idizipK)xfS%$_>k9rv zKte_MbfIEAwV2=W{yB?k+KqfB&x+m;+3;JZv02x<;bvzdiB+H^?q8vK^+#&Ali9tFJ~NN(2{GWcwK`RI7_PDhm76HFckm%s;i6({{ zPQRr4hL3RRt?ysj0rt{J&RZfEQrP0OL~Zt^bDB*idq&Oy#GM*0)m6t(JTk$VGS<2pc zf)z@;ow-TGN~2%zLmb$pEF<>@BIlS_Z$^dB|x0VO-^|&S=!<)?`t#KJk0%H zXguU~J4<6FRTGWAFE>AZ?^_KeibS#f7ULU^6LI_vkwAq1QC_*cBMLe3CaqFn{xlEt zETgMiQzm|)q@Bkb=TD5O(lca z2TzLmkWl*zE0`>&i6DGFIM<5%&}LO+aT3{E_fr9V8hhB=Ob) zxWIP>(a2dgHu!P2KK+Afa4BQ2$X+HQ_R1CWkNM@<9Hlhv;8mT%CFRoBsB2rD2iZeI zG*$_R4%um!8|wjXA*Kw6OIcJ8M&WX1rdY9n29HVR>ye6A6L0Z{gqgp_)~beTMFYj* zxip0d6@iQg83E$hX`#~<^t*TQHrDn}Yr6>X>%4gB?U>w@tYntUefpQy0QpPbT{?@~ zVO?930@VZzuc#PJ!A84ePfTA`Ij(pN-<{q>f)@e@!3GM&&qb1etb7*&bJqLly?K8% z*{KMK)s4}KB0QVIHe$;)G>6l&>sjepJ>gc{f}ZQ)H8h%Xk|Iyc=WTy~u;q5<0F;}U_L>-h z8h%8ggo^%rT=_US{c@;Kam9B(P7wcvs|m$$C4xgz(cCngu}0WWGu8Kkt#@UvSN{`Zcz_P01MLW<+kwX0 zWL_xz0JP=DSrCYeEpXsD%4cwpdENe7_$60OZJxllXvZCD66P_qaptZBKTKY-id}O^ zTb}U44EIkT;0}N2%qmY)){T2Ps|&H7YfG(w;QcWEk=@Iq1wTf#J^0IYSEBG+r{ZBe zZRw%c73uegjP}uZZdvBjZ}x=_QJc`}OMGSg`+k^m!jzO4rfYwFM(m4t-7~Nr@0Ho5V<0vQ z^yU$byjUBO4;lR6860bJUNNd3E0jt`?5vn>2u>7@BVTT6XQ~QZw-I$7i;i;VT-7~^ z(N)V*kJwE?oZD(TEX$euDF!m&*3taRm?JqfkUHMtsk1dAtQ^G!9?FFj4tT?@Y2~O(GT<_@ioagXiM3L4UyfJ=z=;Ur%%gxgUO=ea^8B< z;}dQL9S9Vm9d|<5c5?Sah4%>^AUr`o#dE@e9z6l)6;14q^!a8%0k#rN-y?Q&;$;>V z&+i!&h}50#1MQbolTsk_{K03)CVXnrvW^*qn^q3(*ri|K(VTgvr$LO=8=x2)^I&SS z8H<n@U>E z=ZWOJRNT4?ywsmx!$Omg1P!0XsXI>-K9+!i9$!pZuB?-Va+T?K@n}>1dsI zDg<8N6e$1fTRY26<(}^E@cF41q(r31AVin!Cc2%P!-DPPp*PH4#iN^Zo0`sO$K#CR z-|;`G?`Bc4=a?Ok{N$a7L9^G8(q|Ut<0hxHy!KvFv_%F){%LvAEZ$4&`b)AKkHhyR zMwR==&Rlz=^B&vK8^|#-HN;2%l#!jF)YtM}DE0`V)$>{U_%Zcg@#kGmv$oqY_Vh`% zYCXq^<6Vibly7E2Rl1IhTpY#n?zAu^sWi?#XIB|NpfHXCufHvl4G6jx9Y+^^G{ZQF z#y;5sN|eUt!D32Zu$qgJ5-x=+xrYN?@O6-X^GbRcRpFE zDNK~S;8hz4V^wV|jh6D>Ao4{~ERQ^<#Jcv+hgf0T*q>+#!n#;uTU$oGrphU55|vg? zTgu}1j4GZ6=2z>F4+BHf#f?`Ch-`Xn;cT+X z{4({*Jl-Rgaixk`DfB(75w(E%?S8K2h`s8vk{rLr`U6&5*4tg&9p!mDRbgYpv-Kd3 zo!7RN$~=oTz8Ee(L)N;xxp1S1N+VS-u=pkp+M^AMH#TYJsh_u!wBLp>mKtfP8U+v3 zOgL!4cSU@Zov8Mz0}+5`Ft0YY0za#U^f1+9?z`nYqwcqw(j^Zg3_TAO>Ta1zWt#ho(O z0SV86;0~w^dx8TNi|TTm&3ute-W28gpEhTTe^hP#I8k{;;?SKL#pV;t&`t&Aa1vX~ zI3b|D-hA0K!4R++&T5yh(6$HZeDVVn{Imzm==aUPufjG`l+)c3tSXe*_iRk9Q(K^k zIapS;Iqm|n?hU5e?l@C3KM5o;&FNjrx}nQ)MGF!bI)~Ic<`@NBEMl6m`I(jVf7zY# zl-JGnBEXzX*A@ysSUf*R4QDYWZ842CIk&QuPS)S)QWKcIQIrx+IslBQ3lHUJ6Lma6 zLu7-3W7K7$N`ic8J*0y!ju<)}l>g{~}%0U8b*G;MKa^&6qz;afqZ?e`R z$I_KgvY;nM-XX_4Q1NFOr;zrcIqk0vC~PmG&OT!MPWWhDn%gP7hW@ZhSd(j7j;Gz( z<>8roM=?u*vZ{ZKx+kHBJx?)YcfKULF0@=>8`s7;zffjczp)#ES7n~QZZV{-QogW! z^*7Ut?=w{oYTJiq*s+w`D80<$71kQQ35Ajaz+#H;Uqyw%?>31nm{fGGn*x zmG2UiC4@8lZWoL1d8X=zwocMA%8;oL)Br?t@eZsc_RPwU+NE5bbm|Ph@Qvb~Dq%PE z;7*R0*K0>81hCNq6;{NkSe#&)b!=SOl?``=7P1vI9#5Gmh(eES!T~z>86KKm=>c1{ z=qH$?Tf@vQev<{Cs@)>e$!K_v!%4M`de9*;*3*L= zEJI45rB+z==EhPPJkiFE z!)EvPL+9PX-cCAwjqSJyJpAqJ_g~Q{_+4V$bk6vYGZRAab0e_;QyfQ zF2ACH8g+paL)Q%5%naS#NDe6=-5}lFr7(1tbVzqdODNJMsdR(1bV(?4d2g({&bRaB z{1bbvz4!AxzdA)qx66JGi+ly%+w-I?o`dWysZmr3X-*}B@b8&CZzOpXrQO`6Z5(i4 zZ=^#NTfbX^)zULytNB=e(_ob(PX8K)_|^55rT|B&|9unfxRMOlxwDk+y<&=JZ0yxv_@%8XK`0W zn1OeL=1HXsIacZ=r)%h+a_{O9o`7hUoXra*$~>C)t^lLqL)&ydjR66&aMXc)$;B#kC;lB+5fF<9Qh%M#A#e`qXzBB*FCKIe!~uy^0hR<4p`a)=dC^-}(F zDS+gykE+6Y%x%vhWEX>K6(BbofEciwaIfm5dY{x6Z*rlqt9}aJM*DgC5$#qw-4i$dSipy2uHb>Anf2cL<7j3CX!Hncn>i*Rz+G zLK!jDTl$G*uk@ubTt(0U=v&8gn_W%HZ;6hQwm#6sKhW^UCjV%flU{@g0JG*E2&)?i z{H;EfYxI=w+zu!?-hNw{UB9jB`PP!xWJjUs-u#Q6TxhMF!2oM_1b<4E=y-7$>5#Xu zx#m)~L%zZeGO)DJr|JWY2-L)&4gfRSjKfD~5m!~?#>hC)s=2EHQGmN!gnOZY zaX8HLe3%o1TX?Vo-xN#tS8DfqfilvF->0GMnboV9j8DM|nzkgmjCH;-xT5Zn7)fAd zgMiF^HN`dI1_Ar9_70N5(!d-ReW?!O0q-JTSP*MC@7iNg%Za!+tg)+Z-{aOxGCy`4 z+!i_*1*JFfsw4jBZ^?82o_`=>uC!r|HD07>lS|Ml1dw`a8rTk#%%5^yn=}^EY1NmH z{A(fit`hrPwN&nPayCMYMrX zxu~XXglzrnR$g8J!e;WIrbUHdxpjNF_xj$3Vt=D6I*D4cd0Kr(<4gI><;DmC+pvR` z83tTS^#wVE+xFx6Z88L{gX2>$BButwO$`vmnx|-xSA755`khLmf6tZrgPx9c_3B*u z#b~!@geKWgx)ZGL@6WF+0r8^8am#lNB)_e?TQ0{tw5vM({G<6)c;C`hMK^Hh$G;rF zzXcUPD_C!khFsTmmw&WbYx(db=#OfX^T&o)^j+O1_d)RMd->pv#Y9fC*IO6nH~+Nl zhS$ukRva>HwtlADA<~#0@R^U^l%B9_egGuTdyE8g^pD`WPEN1+RU`9&R$E@u7YY99IH;EkzR zgxHMDzi-vA0rb-OPr~j+;z37isZW*eV7V{?h(fwZs-=898L!dq9l>gE(t_A?9;sID zr~^W!0>;{GJsdrSo@rfiLZ_C?lA~-z>a{1}!1(SF#(HDjnl%*n&sfjdL7KD7xE+%dZ>Aq{(SNmfaKh{Lu zyGKrkLab1GNcMk*D3mfL-r*T{#Ifm0>fA~Ay?Y{0wB>KV-+XSH8xQ-P>xy}-Q2#_o ze<&RbkmdQ*`HXy0=tF%n-s*cShuajt7BCW>0V_ z_7$LFq4@zu@N14F7_q%!cFOl~WGo8)QO$Ig&a2g6@3}HHnjiQW%UJYYMVZARB9MhL zI}=j%y)4tv_H|Y+kpp9H`-?*euP{@$*bfDcQl#@_ugvDjUiV=enZJ&gR4z52(>P*Eo%Kjh0o*~C;1)l#SdHJpKSSt$ z)c%aQLR_kVqjfkgI3vj`K5tVpd)nu*SuTB+Ezke(h;!gEcM+ed$M0lqc=9>yqdCm3>;c4zb z`qOXXvG84o?Md->V#miqbW@bCC9ck?mQk&mbQ9TU=@Zl(*+slUxzJ*rH0a~R;E!>a zLv>D=7sE)&yr;+k*nz;|{-9co}~0CPkfMbUgYqFaJF; zw$(c=mFjV>_o26@wEUC9IDdMpUv?>Svcx8~IPiV5LoQ{#DjCXmnWTu0LVa9p2OZja zxz+TSzr}maw0@k~)pgsl=RV_37_f$=O(^*{2U7vmw2te6${Xe{2NBNAb#^BoTy31v zE(%kUwO&kdim~FwNRM}uW(GjQ!}tDAEoOs9Tqgyw*cG5y_I){3tN_9k zHiO(PuYSd4{1kmm`y=$G;oRO0ag;hM^}Fh z2q1+G%Zb!tdWthy>(BvV z{;zL;3?})q%?fUi%N*&xv12EGn20|1Cdr^p=rN%MYviC%R85gON`v8r70)_Hs$9Y#HY+xrWf% zaTU@Akh_OmX{gRoCKWHTz;iiHr5V;2i{z`c^r+PW%v*}>1r&XXi+ymRIrb+yO%dceqdz@8-lK>TDbsn~a_I2p54nfG7X;se)nvPkD#Q4^^nEj}App#n`zP-7Fd zEpd8MHQ&@H6)n~HY;MWfZ7yeSw8>i02xo5^Tqg|AqEC^YvDUhn@X;nj4N}_SH?Mb2 zqP-7#fBS{gziUAFvyrEN|Gl!g^@!q4;oGPK-m=bll~46TzeX6fv(JMsVG%be#(d;5 zcVE?nzid-w29|PeAT^jw34%Q0_~{>3M)O~$5JYG9q-D^*zYcgx`NZS}lN7>rGkmn7 zKrEGWyn8+4N)O~}MZ!cNp%Avu3 z9-R}Suc+ks$dKtmz7^F;&TVbD6FTo{h0*5&Nw6gsHls>q#iz+%a;(xPV9POAj7E&a?lJMVy0YS>0Ri-Fb|dtu)rB ziBOmT*wI}MM)XOeYpy@hQ+1_&=VDlA6n@$f+C>Foo*lyr|MVJxDoqON?2lwhTD#nu z=lMiHJL@NzH*Z9d_Nw@u?_Eb>)dyqoQhNIVOMVM-yXNC|Q889}D}Y1L%3{&5;LHzC z!AXa9_S3*t?lgRG-0u;Ll2hrPNxY#i4(mh#4?o#q-64a$hz-Oc^4c#6hIbg=h8bQ! z{w^QtSHc-qQdu~UX~iNMzy6ibc>3F@aN)-X{rchdIk^;adZ;}T+2Gu#KY;wVIEp9# zvr!gi5e1!C%$&rnhbFo`oy5f!$<$`}!!lOS_`t6@T0-cQlKARKZbh|j) zSJpc4xoNT%^Yg8$wq;5mQsT)wtyT?nM~w9Q&Dc&2hj9hH@W=4@Dy%r2DFe~F}?Qlp+q-1AO&`&|BXbC)nVHU9cfT*F~*5_@`*T}%QBGwT}hktE{zJCE4ly_qwgd1Lut3Hz5m zs`g@Z7oPQW0;nq9X%AGMdIoTgLRPZ{nNr5&FR|OHkkZ;&oKQvGL;17fT#b3ognOQ@ zbh=B5ib%P5-^2E!tG|6A3ikd8P;X*x_gu>b>-gBUoAMuh_mq=_rz^Y>Tl?ide;)=|wBt=l1Rt;%i`zR85|o%Y5{n zBj^T%P&@*1+$Ly(mg4YtyQ{0E;bu<6zbkHJqMm#{K=BL=X?iOZ5)oQViPFML)3RLE zN9uodaOP=N#wIq*QIdYS@qEeq>RPf@3rb4>)!%==5VM(Nu_W2Tt}#UI6CrPMjjVXh zUHTg8=p}f%E95~WZ0Tio&rlNB!fxv&ydEKv*uoI*6{kcm+6krd@ZwMA7i)?Yjl8TC zBML3!7jN@Qt!kn8j9j}GG2ZSaG1emSAy(_hq{JyeY`*2ye3`iRkRub;TfRui^%mLu zYsp)FM2v0Pj5hwCYsn~nX~dP-TQ9RNO=^r1I*(Cd7{i`|buXs3EUFj(vezp&RLM85 zPr2T3Zdpt7_j5?x9FIe#mVtYSi+-5lr7Y_l@#jYNIZrKEji6tI{A~mkmkY0+gQ8x8 zqLmJ_ZmT@&j3}9#02wOGbO+r#vS8aB^*vBWI9VVyBW!vmw^QDH)yT#COe9T2~sCI zT}5#0GLh(dkrz5+$Euq1`=kJvASWWtnNXfhY5j(n>cSx2 zOFu&}-4`gY=tWhe3q?3*v_?3Ccgy6|BZwo1iL`BWc!oqOeGDm1egyj1Re9^Ruxg&m zXMyIZ1tv=Y^0XC`;n4NK!1@ZgQ4L1lZBuev;RIylsxtW@jg59k{jh z@=>k#2A4QdrERZm-CEVo0hVD{Nn$?P*7E{SZlGx}*u z_Jl~SSxamf`)?W-h(i{%(4jWx7|hd6I*~+<+UL@azFOZ=x-i3BK-NybEUmkFgar4f zzZBb_?_8#lvLpU1I77TF>-Fpm)ivjZ47+#C=l5)u(cRcf#05!o>$DY#7pJ+}WSJJ- z=;L%bOWgcO>5(Fw|6H49a6qj|z0`!ga27?Y_3ZdFz37M}sItK1S=0_$S`u6wDSB#{ zivX|Bl3GO4bz9!^0M|kttv~I4cIiW|e%^_CM(n>bfm1$vB|0)$e}RjVG5Sg&aFp7` z8uM!wH-7WJMIq2GIT8#zVsW}l-@ZylyX6l>a+aDeEO^_=0RbmF$o_ zS@_-cCr5tEkjRIWq~tWbgjL(t-b6TkZ5kUm^Onq9pupp86*ZW&?5h+)~&d2 zMe*k@(S`}(^gHpasm{g?L8;{Jwr~=qZMv&_x?z!+3je6-d%7P6DHxV1oKUX$j+Efy zB%)>e!_O&Dp9W(&E zfrRIn4XzM@!YrabZs9a+(Y1qdG;-?vv+KA-g~<@! z-fU&|L<~`!s%7>c=4M4(blEvz|K*%w(fo(3Av1D|p@;nC{q)PTtZyi$l~wtsC}fx@ zWJ?cRKSZ)xVzHqrg}0)&-pG!>m!T(dE-9Z~5<8*or3q^8MIQE<%S<^IwRvCN!VvHh zL?21_4ypGxY5z`yAAiweSrEk|bZc21y0ri355BvHs29t&ZeiPsWYPe#aB@;0J2*4F z#aJjMW7zLjuL|i)H+YV@EF4(fOS|1sDvDFILrUMjbK%il7 zj1+5@aC=u|8juRB1JeB->1L2B>2`AeEtJehkhvo_AY?wCXQg>%Mn~TlA(|d*m`jLh zOR76j@N7luI29`92OAL`$Q)~QTt6?Seh)P;Ql?H z0nnp3ma`<|38}8HE3Wz;iqswFliLUAYxH{jgdEgv`WW|5yr&!54za{Zd4i@Jcjn>s zef`vR)YT1&==0+zybtV>$_4|r`?*c}7XhSQmgV!-Q9ngKQ{ZMI5XDh;6eSqOgO?>e zh`u8(SP4po0iE zFK470HuLv?H4X+p=M7cdSdV(*zkGlFm+r?F-ea&D z($`T8*;>{TT+FaVR_M4X1^uwec%B+AQ%=20F7}tASvt!+1Usy6ni?wkkB*JzC9*=Q zO5VaQwkk?BZ&)C*30||JsddO+DEted-lj8n;=0RU!zfw5v|Q$d;!S;>VeH4*{kMK$ zs&&@c(J9-(Sc1vek5%&T2f_lo;vG029Nks`j>+xoT34r~^|5{R-RA3P^m>0RHOCKW zTvfmpqVLz{$gk^yw1%SQLi3#DyxH!4Oj^rH2;VjtRvSim>8dA*Qr`f-WxvH&_Tzs- zNM9QvI|pRS`DfbOl+>Ylhi_jc110G#AMnC907I{!SL=(K zmAf8tyL2hD#gZdfB`b!S*nnrKZBfcruS|n@3EwIdaV0VRQXcUrh_ZRN@j%V-xS?)M ziEl0TJJrneM)Y#kGq120Gu`aSLh=~Pa+~uW4%w;xCQE`TOQI+C3&ild+wv@NxY4Ey zzG&XqEs;28rY0RyPj7jpn1*R40cFTtQu}kNtktw=jz``BzbyIAOv3>)xuJnAVuc;5 zG1Pb&59K}H&fC;sdq&IWO}n%LngZmV!d^H4hf*Sjr?@{7mr5)clec6rmYCfr z-G0BMKY@~{q0gR)VJI2(>96s1>h9PFr^oCQL=}$~13Uy^CL80)I8lJ}EqEJCplYTV zqZs%quC9aD_%wd^0aO)FITc z*6AJF#rNj)EXwpO~4;M+@rZKiA|&V;DDRV>rIQ~^Q$uau*aS56|>>+#7r0b8|IL!gUUL+lrF_x;Ho1Bgutn5{wy<3o9`IE;IGzDu;Da9Ck}+c;7!#=K+(J}7;ka9-E5QL`7G zRYb5(m+GhYRi9QqirCv+@mJq2m1Y)ZG-57*Xh`2Y(wetl$rmx|VG{OEna@NH@2)IgSPS5dBW|o<{h5F*- z6RW(ZycJFfAvI&wkA-An7E1Fv>gT!BGevGo^IJMFQI8e_W7g32W*Y>TBI*W2Z+0(QnNjrB+)Pz($5Jh(kiQy|1$_daX5 zE>Hpc{GlKU8`XhUr7!Ws3|B2S6wO|+&r=h2x=Z7e_wrL2eD&1!2kjk8@9}kFQiXfpJiUfB6&cB84Q!Y_z%bXTY>^#`jBBd z(ZwBO_^!<$J8O~j3Ers`f=(1>+2D+ot zGhwDztA)9K422Q7v=pvrMkM$=SnJf>6MS*d0;eEt0uh?AVF1f)35y7)D>6uX7R-PR^?QwJ^O66FO2eA#OaND z_Kt{ONi;o*V_)-sX3-!s$&vP{#%lD3qRQCI3N{yp4wuIT@UV!omrc#BSMzO#$1r8N z&&K9^A)q6GLKypwFuFR33%2k3uYE*ViYAMPltg7zkU5Qk885Fi_wsncVBV{*W^?x&!l`!V5~ zF85@WcmP{I`|mYf;b>|eX_MZnl2(oGn3HKubzNP+G~anRfFb`EOUIQUq}vEn_0^3G z?&Mr4V0myey8{!XGLA>|YYJ^TE@g}h_F*2t!N9>T8>CPMOb73)aPu|2xsRrrB#M_GO7|;+l-6Pb{WEaPx5Ytd(N0~-Mid!QBym`0Wd2u^jaj3P z#j>(LxRX{6q>okf>##bYmEFFKH`yf+}v~;(%vlAYw0A%jJ)Sxy{Hu7X}=tSsvem*LjBU4iY9B>t-2Z%^vvHb`++KN%Ef`dh^t$2CV#H&pgE|HLx4VOt2T?8+OT# zLflzU1IRtGId^|MN@1s;|S-cM8b^Nm_ z80Ud4KTk6b}G^Rhj5;m+tYYT|3t`lny9$i6JPb z`bRVIQ*JWMvU+Er1bN#;I+hOo7v~-2`MT7?c$^{x?`=JH&JF0YMn7H>%eY5~V?8OD zQjQ{OoIt)Q51e!Gtu%Q2uiBSsGOliRoqtyhALk*?E}zS>C#AQ(hCAmnwMM&YsPp~2 zBv77*4aL8R3kVjIdMSpm!q_E`zx)TV^C(qqcY+1r=V+jluI9xp;vGp^C=ibID?jP3?C!-%)A1pFd*r@&OA3NQKA)=C52cJ}|>P)QARwB)!ffZ zMp%Q~)0COGtzY-)AnZNJji-Z1oJ1TJ7RJTEAsJ1KTouYouC+`?+SE=Kif(_e@G6=q zobt0(rmjWkg6S6w5KIpk>Q9_qu4PmOBDiIi?jW0=^O*vv2$G;%k`w1fV0_e2REgva zyC;a#2p5}I?u-i5_rxeM07Yup%P!bpBU_N@I-qAO;V~lOwMCrMXJL^SrZ|0$fTj>4 z3uE-Xa3I7wxKbIJp3Ha=_+04}=o@7>DDZalm4b+otV~RgNSrJv9_2FDs>%*S(?P~U zC!bd>hbTdA)>lR|2`$Zo1UYiCO6d$U`DdSb#~(E(Kj3Hm#5<+r*z_d)J|)0HB9>ho zT56&MZwdk&jqZ^`Qfytj%5=w>iXEg8Ffc;NRJj zvJQcIeQN7V@q=Unc*V-umzmavV0RHR9SSmk)I|Sk;4d5O!iz`}UtqaU0I8<1rZB5v zEU@*KBBV22Q&Xw14JiH+rP|L96(ycrV(BEwT55}M^-sz-1ggQZ!(#$aAp&_9QY>Rh zF06S@^Qs~0+B&X zj|6$lx_N)ti9uzoE5KJpl)PIgN{%VMpzU(et#UhoN`CWHJ28-- ziaOy1K?J3il6k6nZq-jnm0w(y?M?agP8BK~ki=GH(Nq~EMocPN?cY_FGOnNXn1Krh zk^!sbAOIov8jovK)Y%%cTf-Uzu(npEw#~8jb6jm_O>Osh?bqYlZ`gHxY;^-FbwiGI zBXMn4xurm^d1+3J6))XzKCFUHj`*VOZ9BCj6TZ(=uSTq13&H0(Jx5L#3r zfIy`GuT4ZC@gfbN82`7l2`d;5g6D4wPhaWS2Nvxblds(z{Og^AdW#2Ca}TeJgzP?fpK^55K6! z>2Kc<2pL`Utxy0d$>3W96JZz}w}g39N(Q#H^`cF%d6V!ewtjCvR`2IJw;%22xev1*i3`XAFK#yyZvTiax0PTQ7jYfszPe1D&Q-il&B>)6e7 zI_oqphM#qvwEsTqF7xG`A-!05N^iZ}uRZVid-wbN8xjV`f3ykbi$2W%t4&-C02Mhd z2Z{Cni#7p{=C~SV$a20KWBHFZ!SVUz>O0Q}$MuB3qVx5COPi>DK+Tt)2py1;zG(DW z5YsU|!9jch1C~)zX~LHV9M{8TUfs+HuG-hX+g}mC*8pM$lp@spY-N|Eckso*t+$)K zJsS5i{9rRMwDELHScY8$pJO|d;QN4dwjEd9hRwIrhx`=!8+n~q9A-1{(u1)s9qv#r z4ZQkA*Qa3M+7u%YQDydlsjK!#ToDF1xBVq}>H4?LS6HXh;QQ}5RD3T*DJL96U9Sv* z(;L@+HKx;Q|Mq_(N>Q&iKh^jyBfK}CrFdpiBx~OWO}71;pZ?}}{rKk`fk477Lc&n$ zMWMV1#Z)aqAsg*Q7rTH16N&)LN`2Ty7h&WRFFe6$AAaCPI2gAWQ&Fj(F!v&YMRi*a ze+EL*UoDU3U?EG5Bo{U}6X{EdB!e$a3#Z;fa`24DMR?p3W8i}5af^y!MhxGUWz3O1 zu%Mua9|JK;p~%iL8pMPQz}wcwIPEX9$j=_I7?DtkXz~bb@Wmh%{$L`@tOfZedb!t1 zFl2m#Ug|I&0MVQ|G7i!Xb+R_rM;>!*U)W1&rx{5|02xOnMi%uMc|@kC0$)CVl!Br+ z6b%=G2^}q9{7f7Z#?Su{VoOJE%}5n5i5$jqbOmZPvV1lD|i42#1{v`dvyOrw{kxs)N`2}iycMDoT#Q) z3er9-YXwgOm6XwTaN)tN;8B(r+=4eV-En|Y7;jv7iWitUJVdEcA0=4Ert37rRK38< zrcwY;3{efQ{qC>8`;46MasP$_@`^wq1bZ%gR|l*|gDKFMn~{Ha(||aveluf{k|%b{ z2`g|iZgQ)Vo6jz zg~M0QCGI+>Iye;KHCN9%?pg{Xqnt=QXYFBRtsfa*J186f*x%o!9X%Zdn>34oe?nDV}J*8jKEBMwcb zuOOuG6_4x;w)uosM??E77fs^7WcASbFV%6}E_+Y24nXTVA;uW(CiWCJ>#RnisV3PU zfqL-XYd<1aOH(gaxMs_pd!M28d$7aa<Dzn7(w9ZsC7XO6o5C z3pq`R+B3borRdHIS1yx%a0ic2;Ez8`c;}}0mfP9vI(%u&mTc_1-u!)5T&iU9wlNqW zmtf^^s(!6SM|H2h3yzsv+`bACSKF_v?@XCL-P}>n-mriwuCem@)?m?;8`{Ob_rYD9 z66@IwF}#&xpv&(2ZVL9vqMY}^UJSRoyT-W`S8zSv7!fZ$PFC(P;^Io}|B!G5i&d~h zeEI3=rAt5FZf`ye$1~6JuE+9gl8HzLuHOk?3T*rBdkDD$h&m_cXNGsmHCNzD1MPD9 zQzHE!d`YWcwNpYdh*pxTg+gcuQ>pLQXX{NJC-6eeg0YJJ5&#gA>X&{ z{?SB`SafTgH^t7e20$lFSGjO}hEeZEyI8m|kPFQLvkygT+q(`UWI)&Y6zoXmmxwSA zP(e-F>R`MYB|b`taa90@=>t85fa+C=uYM(>$fUT-CTW90hF%gwplHNJQZ{pnns%~r zznLN2_Pr1AH&W8?t!SC+M1*u|i>$ufKJd~UKLOJ_1fuE2LR@m-V0oWHbi_;=o6?@? zzJ%!2J;^cQ0USAVR~MXYG5YkOPtwgRwR5okITiKc0|01W@h8_o^#H68<=_IjV0 zr=THcl0!0ckhA@MXokvUVMBtL4KjZ6YAp)6@i>423{xmP2mrH*s37;8P9W4FXRA2p z+?}AU0zcCs=i!2&QWSE+h~_$*iF=7_b7xx-siPD??Yx)E+Gmf>n-d}mj0gbcih{zH z$%81;crNh~q4~wJgsh#^q4%Vp70vM=L2rh$jke!QU)m&%5OPuw=ThY3Z|5YwXd_+s zc@&WBV=%$Fdv5g+o4mglm!8oA5O2ZV-L4{21C+y=8nieMr-fVp^~JZ)$IrDVJgo*@ zZDl1`e58eB{&6RGFwa#h#>aJ_yQcs>KMvhI!$b%9Rx*jl`>>46vy}? z-C^5;va3AV0QenP7?WjV-4usuTf*LFudJ7gid;!GTSAsvYj&SFNNiA#qQQ?7poo*pHMNBUv0UiWlhUHa{bZhRoCgw>F7H^4> z1MADfnP#;^^ni~6Af~FY0>L`Fz8Wcb!(?9_u`J#V3TYCimPsIR)6Vv#fM1_MsH1sXK+e_X)gzFiq8r01$VMTrj6}aYLwgjdJu$2t zmEX{A4|nqdcR$WT(YVeD2gFcQ46FUbEZZ;sTeyq%E_R`wFY6O) z5NLNP9G+)m9*+y?{>*-f_gy-WqPTu9mv93+r(}iD<$I>%oh#20UOzwLdNA1t3n5HssFni^wPDNZR{#!qMUuAJszin z8^oqp;~$j+4>STv*eD-u3F%03R4YOOvmdHZJ~H*^zNCD|jhrl&fcrLaG@9`xpfgjX zsu6CHJt%#6EAD;AW%%9)-je~q=6xfHwd}?!tG_|Eo9=iI@#JDPJOEtcoiXp@6#Tfxl0-yltB5b-;f}JS|Ay(hY$!`TdK1xR<8zRc8J`>h;E4m}Wl8gb_>4kl_BX?Y>TkkHsuT&pU-evT@?sKWXH5{$12x9vpRP zU5!W})W>-;YwQ9h)#gL-Y+3;9I<#>Xje69EKg88@&H*9XXHJnPO4{c-w}L|{rUdu&jX%Z_~~Ly|4{#8D5yBx(dCn= zii6v{qgzy$!Da0O8zs{_hW)yEIQEDy82MJ|h@@PUn`Nvh_0q{ zQ8!3CXtsRM@@;TCwv3t9Y^aWtQB-%qc0FmIDg7Z{nt62|&KdE^E8vFownWn;5$Kl& zWR-Zf^M{?)yM1HfTkTg&7GhJNJM_rC&|Q4ZJfeTZH7ax{_{5Q)Z6Eda@Ll&%W(PHq zwO1$hg!*t>t|U#~UsOJLLav9j2;LsMGeR04t#f1Iu2WFTh`B;!X4~z8n9S(j)_ax(&1D|{ z#YGa%@zr>gUNy{=Dl_6;CAZ%Zr2UQFbZCFJ7F&Tw=G)Ug zgln?z_uZ6;KxuSLvg0OjM@+L4wDR${I2V7?AxaY--PcK>jXggOyc@r+$UIX$vLk|L z;$5yIne}fdeYm0yVGL-VQkn_p(fuwU_XjWmf8s>Rj|jJzUlOTWRPqKZMYwb>I&ECQ zG57Vf{4?1+P~L!v|Jk?rb$ZzsId)tu)(s#7A=dyTFlDgH-lLGp9gpwmT zAcLV9S1u_%n{i+=LY?@a0VH-fu2nTyQ_v*=+8k|jaM!GSBGi6T16gI@%9Z2s<9PCS z!&errv{*k=^f@PLex67QsAG=ve-1A`u5At0xqcwEJUX~*#uMrR;U5?=e+P1N>pLZb zM0-sR8u1Q#wMHg&e#LpLY2X{|We9n=a$*{<@O-j{+$7g}Z)!=+n$F%<7SfTu>EY&m3u0UWp5A54h=F*7&|dZJ%CQmU9O60O z_n(scyv~SaNAsfXt0&nmrV+dE3t4eU{a95!;d!-MQjD7zLI~5n)*vH!e4zFBi7m< z?!BJ(Oo#$p3hjN>TtOM8*N2)py|h9v+61Kz3(QU~F)Y|mph6-5amGtBs(GYSgMZCx z{lI7Q?LCLK9$Ju&VQT@(_dt`(50=XPj;0I?9+eoeg;?8H4`jvhb3;@Y+q^+e(3*n_f#5~yTcR;9(PPwIp0sr6dT>0 zgts7E!Wrr=u1^Oz(Q@@LO}wo)hWJPRjSSp-?oVc&`_lSus-*w?R`G>wd0ou!bfG?; z*6gqU)!rm`#Cyr}o}dy$^-~sCP2i(I#$-+5Tf}pW)@u2ITUG6I0EWcFvkbE|8t3uv zLQ+7Si_F)-)JEC0XXKgwB9X8+MV>37%moC33?7g@6&UZ()U%hOe9@d{B{h5|bygmW z>ThL3&0KSnA{~k2rD8In#6h8#G_mF=(sUezg*L+*Q-Vc#S81FTt?K|v`DxCr1tU^c zy_lI@hxvQZxOdHjck}L536zAAr%EK`xN$OR!&^z=6(TiNRy>hkp@`zSPMM|}m!t}z zF3ZT4MqQh5J@rkVzb5sKokMNHc!qhUsEH;m?dXksuVOv^z>LY< z+}v|%c#Jkli5ti1&jB~KNfH63@KelT{Oy4cOS+rE%+?G%j8 zdxaQN*cymCVyFBbRa22`pIJSe<5(0cVoA8oe@87(;yP+LOqz>N@9=O+Mpt|mphD}D z|Ic9it=(CsaSH3eC3?}4PnI2-xays4)QmMI-TNy}EOk*dEsEFo8=^$JZWzsm2>S`z zXJ&LrM2$jm!#A$kUob1udz!?<3SK4-a4N`40wOilQ-XTQQp=r1?4#$U9NL)&P>7hG5Y5bOfO znS8?>+&aiJ+NVB&Ffn~CBw|En7e$D4&4Sqjn})nM5Ui=NGs;NVLXyEL&{6RywfR>2 z%s3H#9E~!JTM+%ShcQt>`j!`u9V3;z(piPV$8`e@@ET}vPo*SN@#hze{A z)S@+#VUR5zM24K9hCq(dg)*KeE&2hLLQ<$CIC8047l8*&j(9|Yu<{?SWC#IiLcfYx zv5upwA&K;N$<$=y7+i3{*3JVANbaW`2jo`Qp79MQiZVr|Tn;obax{{FWOx7nc#LT5 zu@2&JGgS@wCPXq75pEzXCLh!uF}0_m%}mmJlkDJZaKR}?0;PfI?9uf!{h<0T$x zm3D3wBq@OhI_N+L0TZ;4g^tr9-5|%j%E^#yY{Mc&i5MN(bw{0uM}Plt#!lK&Pnv`= zHQzD^J{c&aq$EY3#d)DX`03Ao&=ey5fF^j{@tBBg6GM?P(?b72j&{^Y9gZTZqvnMm zg`i_z6zWET7P{1bOtc#&P1pv_f)Phz5hTfD&O5EK#j)}dG#0hOlsL!@whBa+vYd=7 zWrPiEd_#>tf{JRUb4`WBBQh{~oI{$H4>qMLNbxXJLpCxuc|y(T#F)!yErNtv9kEj?-?#8{5!W#w4Oq+G3C*%Wy_Pa62ZN zunQOp`K>^LYZGQLLm43zi2mUDJHZvBD0Zv{GcqX=UI0^=K8nUSu92xw%4VWJLdWG^ zni;Od17DD_2tNV)I`-%bZjedIHsevHdvFsn-i%B>+(FoU5avw(RmVEev5q2rs7T*H z2Z9mwD{&n29ELQKAr1L08J**_5Z#72ESgC)TJ#^=7@Xi#8mbGHE{hW>Mm6G+VzBxo z#ex&uFE|>Lx47jWZ%IZpaIE8K$XF@KQ}NffNXUm!V++`wE;o?>NwwLylBy(~2|jp= z-dkP7A6(f7KVnA@d_b!`X~RdD6;fX;+4nnGk_Uh9LD;9X3_k6E5u9m6BhKEOyX`{5+caDFP9IY;r)u4u3{7e7?xh~aBWhQk1nK( z7O~?;$`aCtDWhV>-Ntku!i`_DfJ@o<)^}xND#d3fwd;!p>IA^I!Pm7{Ch&F};( zxGp|hG~E4KKEN_(a8*G&|XlOm9k=rKMr<904N3sun;G-V(kn(hVy^ng> z10L>RN6vK)4|v2w+3?UgJL(~HqU+opM|Vd$l%5W7i~}4`2S+!$74`E4+UniF#x%}{ z4PfXYJHhNd+2_9src+%Ew9ldBeRwRo9w~3{pacN+D%F+t5XkV$YDPGVBNq z&JLs;*^p&|j!F25Jn|yyVltTi;bVpTLLiUMkH!T;afVp53tZ|rx4b2gCqr35)l&RJ zXlf5O-=iM%c)336VI7mK!ycT6I@p6fr-M4zJ35~`I?ii7s0#-M42N*|2H^|738cUZ zv_OHdzzKu~3i^~?X{$@&tkCiz6a%S$pqLq}qEE5Dpm2s_fQA*Tv=^+9z7v>TDF<($ zKKDBhDakb{IWLGHwtOfycfbeAdpUUEhj_q;b&v&Da6(rAg(r-{DTKl*e8MY~!YZV~ zEd+%w^ujL$!!YzhC=5eah>K52m}}s-dV#S2(Ltbzum*-H9gsMC2cJVdec*>}f(Af{fC$KdO0>jF#KcV0#7h*2O#BB+ zbchV-#7)%12si>)z!)P6v}_N$c_2H3m}!;li8 zVhH2>2z9ugViQhCnXh@+DYz86cVLHcu!mxZ1L&+o?UYWubjgB9DXM&!^mmVGK}Jqrryw zE@%8e&_vT_WmX&dmIcyM{vaAxnT!o>h>ffXSPB?ybc&fstaT`*K>Z1zV+Xk8rk$!b z7JW|a6jcErfB^W12>6E}-O(Tw2qG0vA=S}(#a9F<#~W1$ckRx19MVr5)gd+2Qzg>! zWYyu*24PGF6?=yNVL%2Y6$XEk2?TwJgXkKM^;Prul-D#(Neg)WGJ5(0{2%?qpK)oIPh8Ohd~ zXa{+ak1~0heE}!}Im`d@(4Q!}of-#dgBo;*hhnJ93<%G89n}Dc0ET_kg9X)7jaRD; zTc!oulUzyvOyyJoxY2SHQn3wN0+_@dEn8I7q_hpPVt5864TdoV33X$LuIW30Q;5N% zk8jw9Zz)-an5dPFC5pJ&il7i%kOKYK6^`Yg%IyzYlL|criK0!4(WQuHX^O&#KchH0 zp*=crwO{9K-5f=LBbZ$w9nTzHV1G^6Nle(-W!i(i(RBn>P-S2Qs7LS&(g}uF*-ceQ zT~$N=(eK#2cWAHEy@eNbUGWrE zh8PW4)QwbyqoRi-V0*B#jI^jaUy&PUzXHn!It<F#P81>O0*S#&E!%D{7jKJL75^Fh;e|Pi;!Xe zS$YSxl!?x*9IObec=_a^z$v-uuX|A4({%@7)`xxY2X(N8SpbJySk$D2)bGSpa&%W~ z_Cz{9Rg)aYnkG-})aLKJROvj@aSn!ZHpV`rOpw?HN#5jt@Dtf&2&gs=a(L5+U}T%Y zNJZM`hS=(uIEP%2f=)6HY~Y5u=pDhmEBA}&k04hP`9Xgmi8W&xdH4={hzI;LnkyrT zargyLID$Dw$CwD%hX_Yd)JwmlNwW>UY?$7(r7bK{E^xKz zn2XQ;2hfJHwYG?HSO|HR4S#awqu>h2vz&ZThwbnOe(;Cd_A-B12Us`)1EA6W8lBGH z2JYa7N3(U(VGvUmTcB(JKal9^g#fp4!e7B?zYW2V>TUsxaP$!Kl&TC*-A1u=Mqbbzg7SQl7uSOVwq9-mHdM8#r224;{3FfzD-U`-^R zZpz5D^B_HJnsAGFnqx>S@yLeW$vV1tH6ip7>RaB zhGeh>S%3vum<4D^1;R8^dz?{tv`66n%e%~T0gusBgoXpZ2Dja~jHxJr2qR%tit%EI z)y|Km*gVHLiln#)U-$ApTCF(T_qw4V~AZ@>vC6!h(2+>A{lGVi{04@>*xx7mL8E91$-xSKKxxc##Lmlyb>IqoCrnoW2h#JVq>r{}tFQWcIanY}Ft`QQYe3oS z1$O8Ks0;hC2M4kb``(j1;}bq?Sf*;gh6!>8X5u>Fv)G~zhHg+pd0V#$0#JCa_M>Qu zDvyqD&!61-_HVz9K#PtVk&!O%d4VwZbXWI~I5U~}d6~n!+O9k$@3P^1bM5tc!Me13bXbMbswK8(t*;s~~kA|8DxbCMSSo#LZ9~kp5 zj~0=S6@Mj=Ao?rw2S-#w^V;jr&qtdKhXd08KHGnF0|;%FqwTl)vcH747A4qTiyixO(Y+K1>*{Ed;*7BvxU>LhW)3$J-$baH;g6!$@ zC(ximf$ke>^eED#N|!QS+O8>7koo>unGqu@)~ryS6?68_tJbh$b&f4-7HPPoY0t8S zdQWRQrSX>H>)CH#zkdAo>9dE=UOajHgdK@sFj1WUM2Z(LPV6`im_%R-f^k(%n@!B! zy4kE&ZKt=;p|@qbR+?KjZr8kB`$r9AwtpyRQ?phr_BGSFspZaHTAQ_R+P-}Qc}^VJ zrBjbC|B1J3^PW@Rnyp*6t=Om7K^CpjQ;3c2;>VMRO0Im{=s?Y(Pb#lH+qmm~vIjc< zr@nvr|EU*>7q342{8P_7{K%6|JiHWUKn4adSP+B}M)+WZ8N}fVG~XrD1H7E6iO=}iKlubDwAva`l|Dfa3T>rdN zRzG6(x6fPDEmcoX^yo7WNLT)2C6?ReQjX+Hi<;wAfkyP+Mt7sGK#snRnEH$~(V$cfH2*;3*=Cysbxu!529*!6LP>d4QFr}Q zY*umtHPx773Ao){Nx}(K6)gNSLk`nwyX`*-(Wnr&P`&q0lhTEIZdiEwR3B3QVD;sf z_uvx`KJwu64nFME1C1+*fZ{K}{|X%NV*mOpsXgGt)sr~rh?5R-+MMHIO&&h;O{&gd z6OF3>MB_0wVEwbqG#V@8Q#G)W(+zw76z8d{Ozojb#US- zk9KYrWd#rDDh=N^=R5M~;|@9Td=t(% z>xA<*+~K&Lsc>tD1I{|gxTA17ah(T})|hUZnKr6+oT@dbD*gBuuKpLyMEY_mcci!9eUgJdjsW99dHdsY8aw6-o>eLHqRmJ=M1xYMWZ zKFl_my6;!db)Pxw_)2WK(teo~v;WjJ*FEo4|K2*u%Z(0o=gf!BH{ge}_BZ3O&GtWb z7HK5=qCXyjDd2DylflKcceu&o?+GIpO?7b3#!^Pt@_2;Bl>7r4!0> zhF6xL`Q&S=0}7zdM7!c~u!B8m8VE53z~XpNOi5y039q(}xUjH1_yCratoI&u&;WAPLTJcvl?%5{3jQJ>($-hZRS=glSs#=*Ju5QIvV15qEa7CNg25Xn4Y{5Bn`#mI_9IUYEl$Ve&pjF z6B&>ByybxvP0B=U(bPf0O#TCbHZ@KsH7P`w5ebPy zi3@uS_(5wF@qIw?Vp4iIta~u9DACIY9na*BhuT9P`@oVgrL{<uWU9eVLIcSX`w)H*o!fR;9LQtO|@+fqo z&d%QRJg79Mo1Vm^P;O~UlZMZUx&w+&HK)hed`l^9dJ0FE(xjcO^i1){4;qC@9&#RK zvpH-{n* z>K=tx%hN63ZaG(>21UL9Fz`=~Qx0(uSSSX(M@p$#%we{-!cpnRF{)s@X&uADJsEAv zK(wauAUG`l;&jJWk7ACHdKfCx>(zYcI$zdS_8)V3s88}S#-v2a#697!Esvt!1|Rq+ z0IqL~*PA|eR@6)!_KC^UhLl@`_V z+?Hoyscc7Tp`3++yn)8!DeZ{IBdh1;@(>v-8(f}5C%8I~Dy_L_D%yRL_+?3BWxTdZ z#y@bK3}x7QMjsvRXa~C!ka$tcX35-HB5mVn(OM{23TssAGOqh*%}y;$U;0ozP)R;A zg`S@O-9R_k4m+_}E5&TKQ_{iSr^p!HViDO-aIMd_D#KgOnC1FPj1?xc4=9Z`%D>(1 zlX4qnm`!RfyAn>HS@Wmi6`oJPfkHEtHd0T~6L?Y<7E(GfTw4+MNqEKUlUntp8qSCY zGo<`cuTU8?1pG)hN?n%aJq5@~9m<$7-jp*2C7Yc~N5bc0zMiadl|E?)b>2f+4;Jm) zM+Y}Z2p$!EEH|<`cdgUuHpD}_MAD9?NI7!XwKA8W zNeig+&2%}mwo3Mlqc~~Fw2iAtP^YunC|0TqJ@`=HEm^6{5Bo-OB=k6eM0mev1*^=n>pic9Yt*+ZpjTt8En@-eKXFD)5` z?$&sJ-%Mjj!x+}6RlP%e6k`L$?Lz_ZO_>6B->rp%O-ho>*ux&6V)`HK`Frcv(~~5Q z8Y`$}%lXaK7CGUAAB?9x)^JyT_`@k7p^+z0!Z>}VZ15e?xo)L)zdYt z#o8p=TGUfLp~L>2iOm^B;f;sRRN&Qk7sgFsQ(y^qrOA0+o`osHM`**n;e;oJg`17q z|3!tT*@NVjM>_CZ2d&r*^%zK~PZBX3RJ5B|tV0C`;I=egMMafS7-8{5AoTqI#5`2q z4A5U$1e-Ou9Mnw9xY(2svQ*SjlhI|I5)MUuWLg*E(JhT3y3HRH{si&t(onGB@SuYXHc-e%8e1kWnpm?MoNZf-u%*TBAUjl`NuT&pW$l*`TSmo5ABbo&gqKVG< zLj!eb=_1bT`)YNR#-zcSi=-@N~V|v8m^fT*;FRoUXanCP`F|umc#aeggF46 zC*C5T^~5fT4p5W}FXn}wWTL=*ATBb+*)0S!hzJ1jp}72nJmdpvU57YTlFM+?IeE`N z;0Ze5NjjWjR4`*xjFcj}$&s+)PZV7-atj^8M?d((B%;o-SfU#8QVOmAW5KDElci%) zq#Xc}B2WAgk154+q?8T0Q#HENIY8h#Xvac+(#@dn zLl=leDlym=F`rre&r)!MH?RqEoP$^%1y-@m8Rcb9;Df7~MPn|FD~d!m{3Cg-rBCoCx8ali(7MZ?Fyn@~(>Z4L!#o`n#RP+;LFQdmw@ti#rA8yKb~jr~O5)FMyD2S}{N zWJ+3YniakH#Y5SnROl!SQHRa7B}3JjJz$BBrj|FPCJ6-6-Z1HE9?KjfTy{zp6#AW&3Ir|o5% zw#9Q;m^VBqRA5Q;QIZbDR7}BlhM>uu#=jJDSiGYd1y^`jcFQ6NpyTCx~SVI@NfOon)A)^t@<5ZK1?o+qgSBbueA1$@ zj)yj-10vQTX}apRywQ+46unT8snQk!b}Orn2LV3EMjpiiRjX2n1ZXK~+U+5EO{q5A z;mIVU7GX!c3M{nd4ge8W%T`W1q+oH*Sa9NN4$5m4lF*Dc+pqeLblI4-@*cOUpSq%l zYz^p1NsT;oLC7IRwj9=`2=9_!ryX`5xKq|2U(VlUB^Q~ z8yhMGQ~e<(E=^d;13lPGa}-im2rhQ`;y<`R(?W$eYy+a1=VBRB)z;F1p+-NE7n9+M z<{kwJRUh~zMWaS;JduZINDjE{NE*TrOI^oYJm%8i!#tF#ch>Dcz{49|EK~3;-&)N) z_^lTH#OuCG0x@oR5N=k$CP`drTcuq?v<8qERq?oHivDYJLYrAoZ}?s6P`s^Apr-_j z2gzX`NPO-qokdNo)y2JsJis6at(5p4XjDLn&-CijbP3JK4$}6bn1stdY=KyK9-`so z?Xbo-d;~Wj#}4DL{zgT3l2)fyP6e0$1uey=)5w`C;@c}?Z+n0p*j=z$fZb9cFk8?L z$HA@^nwC89;F~aTQ(VXSwkem9lRHpN0pe}2=xy-);kcMDw~$lrUf9(Xs96B;PY@SK z6fK-IgnEVqPX&cx1qDs*Pzt83ibX}T=AE*(MfF)OEq+6N!jn$~8wm*?npm;tVsP7b zvRF_t2IG;AMTzxj$EiXKB-O9OIa)9VSu2;TB`yc=_F+<s_%4ao?6Oou>>BTb!>XMny~C2^sqSJ21RBW@ zUrh?i98kp4ycO5BC^T@@&p$LodpHpQ_1#*GF1k>%64fW*7024T3D|vu26wMQXz;C+ zMU2!$2lvGLc*~@YhZAdEI=Djw>R3K#2M$KBR@jTZkZbwnGWBR-KHST6bm_6Y@UQ61 zTUgaEO-nnx2hX90c5IR#-w`@^QW95_dR~KS5SPBSg(W}pnb2Us(r3-y&NgQ=TSEgj zkIYzvqC&K7-82!smcv2A#Zlz)IC0KZX9Wm<@jDmZbcD@y1WPS52Y(RYJ=mFdZi^z1 z1v4(QhoNUe=&{s@*enJAhlvEo=aGjrEugk=^vl*OX>+tki!E7e%Vm@_puKjmIftkbcVh2b=QxFHGOZ_!gP*?0?1s%P^R46r2FjZ3r-p_hmEW<}$FU@2dg>W@* z%MuV~FHLL|jy7;ZLS(}%g>_rRw6+8*(JkvwfG9Of&E&i_$-OsxgM_bXMKpNI_I^;* zjvroQhvn8&5fKMBoWpAW%u^sxbc@B3SWnNUY_N<)>FVCxHd1-OT|1~le938hq#$K? zkUEG%yw+qw0GmG1&mD0#HUtMOC6RfWg;%YMMxRN-k#^4+puawi?{IQ#cxS2JyR zP!Lc*l2C}J&^JWUaG<%EH@OexphYVU1Yhc-I$6z4fK@c1`N4&?|3a0tg~ z3^|b#2P{!x7BNS#ym7chA1>3QRxr!n-ox0)b9s0Xkp=2_ba{)BCPRyOnWG0coI=TU3%K0ryyd`Y;0!PcDoSZ!qq(ElOivNsq+^U+}$MGW~!wIY&i@{JH@ng>sAD zv~UiX+XYm`BctE%Qbsyk<@82Pi^FUVIvghLtvF&{wiAasiNS_A1bYMn5EC&`nxFZ2 z2gRg@bXyGnR(BtB6*6La&)a#CP}`!5GuXLj+^|W*_E>B)t>kz^zdCjVdVH?-jsnXC zf(iL<2Rf)jUIXboy02D17=)$NeUJ@`iU(~9DtVWlNN{_VC9+b8ILf1kihTE2T(btO>vo~d(ppwcF#iLg-74<*-v1yuC*!+Ghcd4B1WQ}Jp5VgVNMKNd+;uFHbrVig?foHNCa|% zDMdM;J8gEn*WHs`%HU{PK7L|Q5QcIc3n?=4F`dFekrQ76UyBDY9EU?BCeL$-wh9kcSj zT~7q@OHNb6z42RU`i#+Ww=W;Ve-#_t6Sv6<{w~bUe(40VP z|Ey_?Idf%AgW7O@<0ekrKXNujdLvklC{Uo<{s}d@lxb6^Poa+F_U{|ce==oW6_^$O zXf$ii{(-GFc3`!CW~<4x_LA+lt!}wSUHa~w!+iG~%6li5??ZCxAO@}pk|92P|Lh@N z8gF2_a(yAMB=_@Qxt<2|9rQ@>u0zif3DOlvvEjsnpd%AJ`7dSaaxVvd1Dl#)G_92d zUjC=BsW*kZzoGk=j<&#a+I}M~zMOgUny~*d)8@>r(`DLz4(Y|0Vvn%m%0iJa;P+Uy?()f*_Y z%y!#Lpt~p}$i0vbTggJFs1YcoZCc~2DuGVi3PIZ3Du+SJo;pXyfrNukxdd_l%(1Vj zv|7un*_wLEwy)3{3!1S^GAlf_UczanCe!*aM~Fldtet^))G@LQGqlgBaR{19Om4K{ z#!PM8BD2R8wLGZC2vyo}AQ@-mtsoc=Qs+Z~(!sMJU%G(d2B?&xs;_T`gh{I#i$iKE zZ^-FMH>Lzr=bU!RL5IQO&^oKEHbD(lBq0fE@~Q4n6-ddmq*F#4@xmKOJZ(bM@wYku zX-`y&^pOT zCAmAv8u8e=YAuOhZ8N?3a{ad^IY*)>pM2~|?4EdpjY{3C1YR~MjRm^0rob%yjVE#R zWvQSV-^{hn?=Sn5xPtKNt zlmlI(8%HzS3&S#y4I1Q4D1^`8{voLx3WqmBx!mP^Bao?xBWjBC$wLU|9Mq9(AcZmt zO=5DDf#nYyRT0=WUS|__5wJN9Jc}0>7{;YUEMjpv%0HH25;XqJYXae&K$O7@W<0D( zGvT6+=#spQq3>-Sk{&|Z;SRSw#zjkON_EiWB$&)Diwive2l;Z?L@RFNT~>To|FDOp zo#b#*$Fs>6p29|hv}RLzqgo98#y6^z4MpHdp$rveDx|rzRHeB&E&pvzJo6xD&SNDw8d z# z3}qr@rtq1DG(N>FvQUMkBZ-D9`z8=#T`wxsJjXu&n{p3%0ETTy9Z9dWabHJ_ke2Eyg`la zDCcgg8OU`Ss!GG!Mz26si7*P1jDIA8*SlNZbZjT}J>?z@$p<~jDn{s>(_P8Z zPE}e9D)dRjz(|Y`d+MvB+8*SZ5K53lb%!KXnS^MHoC!m3HxOk+XU}_v33BNuO!L<6 zp?#YwN~W+y8L-*& z1^a4^IW`;Gf8*OrT>Q)KbP6{ZMF{@b2;xS=r`a$m_mEtLSQHx;RNSalz$j_1VhZJ2 zk^Bb^jUvK-yhGpbh(|j><1JGk1mA~JN&Ax0K6$I?8|LUKLNFZ}h1hUT?atPKSePZ5VP{N!d-7oQ)8BEB;!CMUg4hGhtMqf4^&bDkefXF zHicYf>-W~!mCl-@Ydo$Tj1!1Z5Y8H>7;-ri|3?jR1v%pgMDNaN{yEa2km_j4uE`G- zY|!#BBo$XtPLilAe+p+L7Yt$)%FteyPE z!;GRDzJe{h;s#3v=M-gGOroxw0xll0@P4W+9ML)YY&C!Z2ML1cqR=@6sHJcQc3MKP zqJrWCYwtd=PJZKJs)lq*u?wAoW86$a1frm%%##|>)rJotbO184a1@88+=h-V^a?VN zF2|yyr>JZ45(~Tk-j5Rh;S)pR8=g#t+#(sx%^H$n6N}?|knt>j!5W_sd_biZt;S_Y zP79~$H!SXL*wGff>Ow*yL-d7O&?W5HLVE@dC9 z#n-k|vT|`wcqo#@!5hTkfBxr)`l42jp$cX|T(o315V0Va0;>Ykr?w(#P=-9pf-~RG zjf7A@5hDIB(v>9BGU3BqwxQ{KY&u~IAu2N~EfnU)b0yv`Lu;ZPh{Nq*QAVyred>`z z-{!vmIKx@gK~f$`QoMm1)H5llf(`lN7`A`~fIvr@EgWwX(V${A7-cZG3V)6U9hZ|U z8%rhPYQ+eG#Fo%sNG}R`OeGKq@l4bMm#@)Wk1q^~H&Dn@#Pdr3Mc--&htQ!6*Yh0M zb3MNy-rS-rpW+y5(|(YP{b)l;&W|@orTc_QHHfgTjI=h+f>}~dB(u_$7<45p3`v(F zC8#0(R%00=EyOC*l}b`f#}HG=@^E~D?p{#@;ZRdqCIvNzMF*lAcp?qGp*`Qn8(j4p zT$M)o0+a;e2XZ7C%dMA+BOJ+wH^D>Pq5;IjErwvLSVC$$yarj%VuFaPS;KBvlk^|| zTH+hZ%^61V7obx|LPW%t!7z=mHp=lyMYROQXu!^61(jmtj7~t>a`q~NHQSRlX0JWj zlrG)WO;2@PodOy@5qMSy{g^OY@zdp$fnSxO7<%l;CWX6v&vIm?@X(wD012XU1VUxkNhtn<>g@3{3MD{<0!Gs_DO6QP zYt~hL=MgL(7TtFa%zy^jfEP)|nMN&IBEU&;ZQL2Gi2h%D3<|~t-Bwgv@M1nhx z0UEltSu-|_N;FJbE48ZcPFKu7@kdAKayQ!6TFliZD9UWNiyQn(C|HyJ@Yb>aP(Mmc7MG?J3AZ4|wkh6WLn5pTVnAGCz+a#>GL&i06fzU#hzS`rGAc716(ur9>~o## zLZL!pkuDjsuxhL@Y>nbFcm!oX$G@z~s+gl2h!0jP=>jY1DK4X%rh;XCSLs?K3pKDH z_RAo=VM|pPKE#0$QuQ)i z&yr0Fz#NE@I}i@tIa57#ol`>`ns*>|t3<`Q+c zm3z6FJ2DQ07rKD7Pn&>$Az`a~fv>x2eDXS*ySu&nyPYB%QbG!BAO@cIAe6u)i`%i^ z1}vJZ&%isr<$JzIiAQ1pwTBzKt((2WN2BTczX4pgle;a~yR`x5B*OV~VLQB_I=~(L z!MmG*_uIf(M#R1rEcWb_Y*DZwyu%l0z{j()?Xijfv)jM@r9#VDVnN))S^U5Cy2TTu zz$aB>px7*G+-trT#&!I`Uz|flJS-d7#GzC*^lZnC{K)OGRua{#MN?Q6s3X6ZU%eN} znS$O5g2S~0)3BV%p~4uhG#Elck*Pd#x%{xhD@?;{eajrB*SyU+bj$CLoz&dTm!rq& z{LTsG!L=68`Ml2o2hN*Y*v^(3{@TwC{m>D;ejNzV6TQ(Loi-S~YC28FfQ>4E&CVY^ z(=}aG3#`#r?SVEu)J0t`B3*}#B3;K#DG)Bgcm$J1{na~Ik;UBTL>g1Ox|kic!8PWW zVZGPiN=AXA)W?$zg`Fv89aJ1oE0~-)_P5#pG2Pdpy*U={a+ZCHbGX=@V;ivDot*lI zOc_4FL*AO}mZQDgaf=%M!^*kcf44o%p~76|oUf80CG4`@&v#;<-Q4xPFM`)7eq2-2 z&^eC1P5ic5!e+$*9O3spe2TI36yA6TUQEqp&+YNwiyEC5KH~-6ms!KwN8&%MJ>oO8 zlAFWcA!7|KUgK3>CP}^~TAtlkYvfm^P2@c0S9axbzA1S9ig`XHXn58|oA|_9MWj|NKIP3a3xnP%q+U~xeH*@)>A4;#jG^j{99w=bvumPIu0EQ{ z^(t2a?7M#DcV779jWyx5TtLs`!;9?youg*Ttk(I08b#b37m z^JCo?_7C=*;}{Yf^ZiB14Z^7TclS5=-9aC`CuL{cFxYKh=XqhYi@#Y~gYySM>EyKa zr<~a{-@8kFXV!D{fr5jSDVR-iy@3S^-*tk{&o1nwdTY^+*=+ZtX?`1b8unMLPnJx7(T z#k?`|Ufm|wu3*7jvGN#}9W=AnU&HmveuvuLqtN1udj zIay|ht4+Js*m)u9*R)|$^Yzcy?SZ~xo5Up$SCtsGiyJ?VJo((H7P~698_e}=hk^wC zNGg7iJ`c z$3(EuhhTy?O@~}%|4bJDpMpX~SWz+&#g!0h&Pk|HX#}aFN-Y2QMiYY*^)cWVDrOW3 zhc0$U;fpf97-M&(ftX=!D~>T^j|x&_VuI%-RHKh25)=`GB#ySENwTbR%0E&5vr26P zqVdlcJo5OD7y@xA(F{h8Y1uIwl8I)TE;{m>7HYl;XKkw$87EAr1z9ISRklcwC|Z%i z(H9AEIR=<{9y*wrh$iOXi)St>5OxB=kp>(DrIB0}V{GwH6R5P6NT*tlf(IEi z@+rqBR%QI-MRHqIanPrs-ioVTx8!Se6OUC}8)pV|s+v(7%N)_*c# z3T?I4BByAa(q7B|Q7!}70*trL(h44} z1#PL0CHU3PA<_v-8C>vgybp3HjOTP+y?I^v*J6 z5i*Zr6pC_}Vw@bSu`$P#a8|qI^7TLBp0)LhvEk_pYX8aQ2%8G!ERfR{y@4guYI-~n z-v3yaG(KtPFU*8^{&jCn4(ngL=x7i2@avxs*Jje8^+QTiS-fN4O0u zBD%=Lw9>vYsqP<`DqTYACbyIf=pZW^2m)ckELz#>TvMoF4FwXw2)ZO)4TMSZ#0JD3 zj%j9U*&q=AQM9%pafw+G8um`|s!3rgYZajz>h$-*7nw{TDa)5kw6H?iUO(5<9McY}17bk|TbLl50jBB``U zDBa!Ntq6#LBF^&t?%6oIzwFs_cK?Wb&pr2fp7)EI-A}X@RN-YZ8(jb_dn8CupUw?p zq#`is*I)C>^6=}U$K|GvobFLKe<$X92_MOnfn{@g6ES|TeBX7a2=P*>FsVbqNcrup zG8ji{Tc|bSM1+%{@(?a5iwUhm4(**PMj6*{QjHM@S$hYsl?jg8{r<5QHFp7t*wdf; zcEsjpe=`vwE{hMN&tP5}HTiF|O`g57B9CbF_!%`yD7wQr&f0;qdo%h z4N^2lQ~MVUo7wqp&Si&smmpDuVY z?4HPRvyeZ5NKGp>IBAIVS$Xa+709;Zm^1^j6bnJvEA+ zUQ5X>eO&IMs!zDn^)Nl2tbwAWTSUnBl~V=+M`fdq-f_Hd^^l~7%=P4h+)D#KN_s@x z#Lw^Re}-WVjf$o9${f@8n%eZ-4SEyNp&p$tOk%K9M27pAPwXW)AhW=D1 zkf5rmX)T{k zh=kCBKAV*wwt-fgb2)nr>}S0|c7-KiPK1$z<*LmvCH{PN#Dqg`X5%AIu4cLK4Ol)L z;Uv&T*#DomUG56)ut@2Z{2yjJ`t{&Rn$>I7jXF5PL#0WkC;fCJdjRALaz@a+pMJ*u z2-&{-Fe3tsV@r#1lzTV;#Vn!O6lPJ%V5J3~4@8-K3TL_Kki~>6Uj+-MY=iNW1&Y%a z2kIx3(%M1F4sXBb@^_~R;`)~YN?Ud8HDPvcf7s&%e(0oiQ#+GYP!zR;>wLrc9_1)4 zg_yLdv-JWMXNXo91lv;iXMrj^W>B4vKNY$rza-3oV7&4*N>_kg8THwQ z#|0c-ch6g0=0NfW(!02JMNXMr%m)Dl)}#Q{0b<((WWUmWq{jCLM2}E0-)|o#TMv99 zwnJy84sM*$2dgb?0Hv)g772dGPO46Mr?~g+;DDR58u%E^hQDk&0gZhx3K>J**dNh| z4|2xi2o4Lc(>HLmAGkGaT%V-TPq*gX$i`bDoI=BgHVC8@gmz(kH}vcV#wuKCd_R&) zx{nRYI^`VSrswIeONF66_rBOCd4e{FW_)c_e)Q27UEW8DyBwIZ(({fnF1WG?__IuP z2UX796ym2*IquhjiPQ#v`NelV%8B^JDI30!ta7LN02eg(E_UrNrAlw2FG&2=16H`x z-!qnnF42Eqv$jfTtXF z$TF-y(NzRpX)pj8@hAxP^9^I-B~$_!;p`M6pbLbX00Fulz9>fSn~;NH$4n z0M~~%k=W8$0zvNJUu7H$G7)IKHX^`$3K#G4Tgxw8?PMfb-khj>fN3;`TT7$_cr(Mu;jDSi=@QC_0 zO{9=uKobclwF+_c9+m-)PQ{|r^yd*%g5*|l6oFjo@DV&r% z!|Ja%;U*HWxi@i$-K5Q5(2NGJ015AiAXsu*;#(7VSwJFC9)!~YdJ@LMo#_{7DKcQO zLrA;iD8POY;+1todKH|7(~|^4)pEo5@E9hA29d#oL4tAYxm3k4_N<0@oIt8J2j=Po z);JuxLqoyh#8#vOjE;w|$lJ1)CJ|hv|JMkVI7t@L%>W5uDQ!GCs!~Pp(*Z#+_-{sz z(=-Bal2_TVr<^h7RcVBcpa31fD$;Ak5-GZisZcU+lwT(FFt zWZ6+ALS3N!2ShRqi1Y&RU!}W)CXYD*-NJ5cR);kTV%21ZXOJKgMsl42>XR3`}YyZA%`&JsU@+ zo1ZR80sjC@&;ezZ<}Mv(7WA2IgI64e0{L zOqfTi=sxBJ3pD1to1_SxmE5$$Go$iwFs$+zoKnqWi5s@4TENdu`?QA2_ZM<7sEi0% z!rkaQPzAR$O;J;;EWoS$b(*<=jtlOo6kaXF!t;e~^6pkj*>{Ts;jzI|uOWF<$qf;v zu2^j+(oh%r2R-n(s5s&=_$-_J$T& zwCs{c`lp&&KKr@~_(qEIWyc#gd0f8aZ@=Q66!swhk3gp(n=0hbL?Z7>JHd=PDH>-Q zZ{hb5$${QkYVfx;h$~fC(iyBTKL#M54bO+yU|_YYMV!bgBAcQ)Db~QKQXssBLGbNQ z(1Xr1#1pjR_OBq=FA&Xe8B>Drwq79t!eA*mtSo%w*w5lP2 zy3rvBM6pj_N8Lf!`zM>wrkaqRZq9|qiz|TKv z>@D7E%szCENv(x1)x@mTAh#Wxx%mNHqq|wX1IVkyPeT zuDg-&#o5*}Gu)>J(8r!}_zfrQBT1r8ZILj~o0`><0(sYsPC)uj&X-PjDp%&1Gcf_S zD*@SKuTaw>@#(vH_ArR|fN{;jTuv%RLO(s)1+Yis z!$Ly1)cVAthBz*%lalYW$$5W=XyB!xp&z~5L5_9zLbnLq?nUwk`u5N-jd@f6*_r|$@iXUp4Jyd(8exPZv$@OH6XF6pCK=#E1hZ4h z^5scgjgR4_0H?gkiFzO7DZAq|k3f=g#>`l$6u&i4ZBJHyX@R2r;JbXufPxQFyps@` zk2Hy;0k@Nc^3Bpt6?3-@!rn!s9fO38l>zznCAZM*5(GpOCYJ>B`%=q^&3Yi6UEoe9 zB$kq_!2y?;aJwqe_?&`BMnDT;tmoBfQE~2|UN@En!P$ita-F{K6uzh3I%+c0lO$E@w9!7x%b)3VLRAMKK;A<-IlyJtu z7YL%Y!k=UyF;2U^^O@nv$H*vur|-0(kdKT7S72UUfZ}uAnx{$ z6tE5yf=8SMoFDb&=yi|KKC~%U1d$Kuqy9llZRq#~VDbF0_^D3xE`czNP!NwA{STU6 zY%(B!3c{zh5BoME-+57N8iAXZ&x5AUp#8U(}hHwU&`rUuWW5c*DOM1!j(V z%g+UkCtZ(;{=*}3d_djt6sAz}xv7|{o*y>EPhm^&g%*C&ox)Y|^|KHGQPqQU-%>(C zq=}c$IYHz3qSixv{QrX(ioYj@`u?90L-6uA5P@s}qiR#d|AiRJ(<7WLkoZ3lLwrHI z+rwovT+Eb`|2r|%>Z$=U`rn8lYo{`xdRyIUv-5n7gQ;Kr`g^baqZa1(wz`%6bheY@ z@84~=hi}fi8$@h-rJk&lX={rjz#zFugm@MSK3xjZvNa{e@3}PlqBJ9iMgyJ-Z{h? zhC-;SHo^(Ts;nYex#O&#Q)`?sE0J1OmAWV7iS_!kOQx|XvmP1bsuthHF4{1(wbNR{ zS$;rCXe{J%h-oWE$`WOM(r#b~&vUKsFMCex)RZ4oALzr%l#GKt&N&X!4Ll_dm6SP5 z53?;g;^c{S1GtZJhh0>U@|-LG|09M%^l3hlJpR%!K<)OWafGAxOVhA?@0aHJ|3M5b z7`fdOL&~B`|2JYN|9>ZjJn=8OzAs4^cKtm1oYC^*Z#{^sO}#Pf`5ex5iVqzKfzA#h>4(1-!2I^h*t&rm%V@C{`AQT z;_2$(3j*;KxAP}At)U(aeuR5vqLx(e*SGjd>c!SLw^l> z`%e2E$M>azi9T62`_#uPVWH5^KY5c%#CP_Z|A=l&H9((09N(m#t)KL3M(%!lqt*tw zy?FJhCg}Fn|2tx+l+<{nkGkVBE=?~=o|YL#-**{5p^rx>H<15$SAZXIWAh4U@2tpD ze2gd0s0L?6Vku~^!~(1OwJCRqp8vHYqQak}m^T>UJ31vN){Ua3*uyUj>P;N8k$b5Z zJ0x8+3&8C#Diz+OuD5!trUlC(SReIAUpBCYE1_M!-W2mA5ZZP!6_02}N0g<$VbhW- z*f>>3)y%%7=T1~`h>xmL553DU59tN|BN^k%D$T4i*bzABPj)9#V<7N$2r@E-Ie|~; zPJR!`wqK>X`Rza4yGazX9?kb)?Q!{Ql`~h1&vHXx6 z-k(%k`;5nPHvr*($cZ=}U(O=|6|qP<8rQ!u^cxLa%2|y(_Db{RxHL|F;}2k`c!QD- z77nGd(j?TQ1G;`Rw@~>m*j_58*iyAh#)}}~+yb9~D?fRlDHLqu2T7O-o{;WrT3c^=C8s*U1<2=wzB@JvMz-sa5}b z9qC2U?)+g$HmTau&XzP3f*djjG?^_vC4Ak+gbr}Jwut$DpV+5Fd({iB#~sjA`fgt6 zFh5RnYx1o zEI6%L|7M^=sJfjb&)-Ck!p4?zKD179s`;*`Ul=WM^BMu&HUFmitVpmBK~D5B^5X^R zho3aFfs(d*HtlIE+9xNfK3E1SYuG9`w1`ApcLEMCc#V4(&g3rN$CJkA=2RDFTcoPv zx@5Q&I3~!gY*GK`#f0ro4GHCu?DvJv)$C%$6WyvJ6B9GhyfJgiTj~Dn-_#Q-6`6Zm zgvY|*8BR)sIh8|)j+s<0YJ0kZ{fiWNb_}TRv}b@FUa=o%13LU3c6G&gK8b z{!i&ho-^FVT&zI*zARmR~)}`=x_5J&?RO)%U zqVfFe`#soKPd8JL3+Bwf-qN?_U^EPTL)ildtFshclVrpHEIFzF3QNW=+-FDg`q1$L zWs=^(vAJ>#-PBH%U36Wx<#YQ(K7Evqz2z!S z`Fd8B0~7W;o!oPUu6D#B@F^8yQL&Se3jmdxalgtaZkqqPG;$mH#wKtw;cxE;Rg~mN zql4#tM8#r}e~~I((=6}@v&lo|Wd^X3TT0-Yr7$kzcZ+_qfWy|`6DK{MjllZl90-u=1vHdp%3;#Y4#zN!^&VngohMRP>T=J> zt=S<*9DYMAVNb=8d*U#f6WCUpT*VQk_KGv1gElS2p23FXTt6Sq&&ehM-c~6l9)4z!Ol=ls=la{TvS_`{^n)e z1qv25;#M`{R+uZAdcuk|p=vk4+%v4_u;5eX7_}HwvB_iAqge7?@)NIw>I0fbH|j<( zO5LMq67QD@HzM^WoM(gHaxB{Sj?y%q6A?>1(QJ~&byDCr^=h%ylBz5YzjgKo%xaPC zn$MObbz;TK*gf36rD8qP3E!z9VsWIzM^t-TVZ?&-jI;p{@Z7)hs#1zcgl zEKs6SR0vm8N!9&ujw>UPC5fjLbqa&Z(?W5~nb!iDzkAiycc_1_q|L(;HGgNiQ6j*5B*P zTACt-eQ7HRlNzPHV2%rQfji}qf1M%!c?o^?fk#^$Mu!f6&k31Ga|NtYSuIg`Eao!7 zHTJBX3M64qst~_s;55M*5p)z$w9qR7s6uddoI(~QGVgv$e_`P6Ntb2Nm>^#2Mal_7 z{e-luBEoJkohtBt3?lrL#>551-J9>=0(HVbZ;&}Q_y!9SFk+g5`&p=nLwe+UmLrb1 zo!{wfICy^F75Ok-F040$2$}zLrWoVGqmh-qQtb!ExOQTZo;ip%4)Q@zf`3pU2Nuf6 z4Z}O5J>iC zW*y=XYU=40wV_Ke@p2h~;H&Y0h$WHWY#{aFWr4_S5KrT)9($P3YRKJ+$qg3L#!O7)LVYEv1DZ9i{t2#J$~1K?Fl&q!^3MBDK5R4?`z+*v;{E?GuY@n7 z6<4#6HXY)KTV%uikN%`7uAOkXsK`fkQz8z z_;yrs7VV1}W5n`LXak!CcRa$x2-BV!INwqw+w#O&-eH8f9E@}@8S>9Kd`;i0JEo&K z(Bi_?Ysk)>^KGc+rT0sMHH90c6v|oiq7Yy9Uho*qp9mYs!vYET1=ci82m6P+j3}&n zfgR)>ZWhdD|G+l5eK$I4SbKFxVUSS)SZ_9>dC-p#Ud1Yz#ED-+-5x|O2x%RwTOKK5 zyYkc%hvm8=0^ZbpU(19H)oBvfd|5;IuD$4wf{f@SP_vk3&{r|^>XM1ReTYJkhXzp} zHxSE%KbtkM^`^ZA!A;E4S;vcbUEmYekg=9`J*u#=vv=C75h(VC2kVF}+*%Pt8U`h9 z4Eh6QWUmcSMOXqfi3B05X3d%Tn(6s)6Ez(hnik4ZyS$orY^C~w<}i^ltukZvS)$gh zM=@t0PA6B(f1@Wewc?0_xr#`ht#pB;bFYn)asCy48#i8kfYaiH1Ge10`=(zDMt1Opvg@HTi=TzY> z3yrGB>MY#J_34EKec4Y~GRjR~;*Mcqf1t-{X>^UP`ok}%(ao!LPOCGJEdf}60o}o< zaHv?L1~wPK=*$=*WuiDE~~I^;zKUI7PTA>RcyrL%nlN;M0&z{794@ zS<wekbo7g2g%bt~Khne7BM@hmB?Go^*bC*?SL}b(teN z5sTImzpMmg;9d5Eg!l$OYG7vcP1-D`adEyr=0kpYMX)2ajB#2m4Jy0OR5QP!-dzW{w4iIW7F1OH*QN94)Yq#|3cBRCCI;YOxLX*^>`R?V!sLO& z>pKmq@YWFnUivJVafZF|>nJGM=1dKDnX=2v#}jTpN8Ao{CZgwt?_UE8x3I8;PQ$T@ zsgOp4j=}92tu{3(q9STa890~w=+w(O+>J)Ik*Z)G3udzsYHAnL;>T5{_ac?0__atf# z;?NBTGmt;Ov#ND;-xP&#IlP8SQbi9!EM6OfT3d2?TEmgh?Z1*R&uLmUD8Ts`5`1)CyTd28z+t{*4KV#zQTXHw zDpUbt@@!!$%<6Zhl_MIaBT4m+=7kjQht(^--ctM(NLfYRicMcQ%*fP92e~r1NRezo z6JQQM$q(j!V%j(o9l@zX&Q0-1q6>EieRKlTMh`ggQU-)Q_yo}<7W5ds+nK9cd)f$D z>9nMJO0mD7PJjiUWlaNjA=5>4Hh?WJN65UF>u(V-OQ4k%3fxWHAi_cp;o9#UfTfaB zgOhWCFStK5?dr{{b@^!#JlLk+wI=?G(DRxUW*N{At^H!3rja!#f$TVl>HrCb&itTC z?b=V$!=ApuSU;saYJ+UZ?Go4=4L*i9A8N974MMO-v$Y=>wGpb~=xFABf7AcDswSxxzGYAVg z+?SuSF$_^;s5!@MpfU&+asqm{=K|P*oOPnqyV%cvM}a+1#6M@6b!iTYeC-@YP94zl6;ay~EWLPS zMofd=`fo5%m!8Fn#6d@3==w_pj|y}U5ffF<4`gnl+PE$g@a zqQ(^empcVNGy~h=-fR5Ez!r7te%FBMKf$31bQKPe!yfg+H1dsw;NkO#<>lVTjXGlj z5RHrPE7lh;8!rh;KYxw>LM(Vq;cZGl?G3|%S7Wc}u~K>7c2l=53a?}Cp2C1%5W0}O zm#IOsczHfoBmW-#VAyqsmV%k43vkRo5%`b>wiHRh_E9B@ib2SU*T&}=x348pjyc^k zwG^8Ff#-V8>bAaH{h+>pO}y;l@F=9Gbc2LX!*?9vS4Qwfxxi3q%6A*^1DI+pAMk>^Ft(?a9o~PE^purC-P--D4=F8P+5Q_S z|HcBX8>c_T)s1>=j0+Ww3T!^=Dft1${vi+ym}}`oDQSK2#r(ZnF?$BsI?Jq`pE4=iXKty__jBxh;4y8Fs0|C1QfJ9zF!+M2AC zr+289&9Z$Lx~g|i3?YtBJA#JKg`Cy7ehoH2J}^d`fPS*P2C7<7%$#4QdRr zLoN9~s-}ydBERjw(SG=}-eIzM(IlNTk~ihz&*ow_HhRP;!x)x%(#Tl3W> z;xhB+Z<#*$uTRz*gjwGGx$YfrPR-|M`myqTcY8aC^-S^a-5o>nv21pK zuxc{8{eE0ni2jBd%G=;h5H^uNJ9;JCd3E)wI^u9h~6f?rzvL;kb$cNpP!}s(H_oopGg`-x{MRe%0&tJb( z;a+$oJDQX*xOKO-f6PA%C<*?S~`>0i> zA}2(1%6ndNh}Q&JYM9pyG~243A!}{`tW1tQX!c0r4vXh&bqw!bh?UQeSjRbcJ!#v@WFg0~^zS+&)(|4WpqYcDT_{dfG|P`jUEoni21v-GCuFhue&! zg%jeMZow+z{5{2ktbDQppBm08e`Mb*_U8OyIneqC4nCicxTE;@&>{8}+28IXYG-P0 zALFWT*T#Fw;_bbi$eDMc{kPkmnVb!gRQ)rLpHG9MU79h5w*t3#QJk3ZGLIMmqrdu3yk(`%eu3~wSAc3 zxgslu2l{qgo5XPIm@8isH6_tMat@iOvL^BnzsHqqbjD40{FO`)mp`;Hs-yXO6R3v_ zq~Mr;*iH1m`_JpitA{_OCl2FBVuarw7#`~Y@#8Xw=7`>M2o!?WWPGGL!=0Ehh!K$a z-hi|J2pv>)gpi4?d(PdC+As(|_m4@2uf1KY{Xje^nXNJoCge?}P#{hD0mea3#I#qE z(v~ok&YWLID;`@Sr%d_$Of{Zfk@2-&kO<7k>?EjNkWFoZin2KOvGZG8CUA}13AUb= z?5dHTB1uXx;)CbIEQ7FS!(>CsKy3f>KPnMoI!R_Wc*+e(g}eHgN*g2oMkq`6E^i|J z$xz`5UXi?6d+Free%>2XJ0*J+SksE#L;Pk&#)~!VD$;hdI-=m}BCic78%ed8Z__Au{@Oy5mg1Rf=D{`s`5iN{ zM`}%_sqw%^Ot#(_lgL5J9Nsap?t+w*Q@4@?l8yrwKqt?@bwn_cD_s0*aiQh4`k4 zGh96y4n~P?U6t)?Z!n{NwOm0G1P;5JviO7x*WiMfcZ%$AE9F=lNF?N@MMPB@WkLpC zD(0k@TW}F_HPcr!+&9=Nsh584YZ&brC!kO2soXOMRWkej^5*1u1%Z8PNJIaifa&uj z+^#K6KjDj}Skx0A_hr8iC+?LKNR8`GONCRU97}#*nS#TDoC~J_<@G- zdQ+YCo4UcS4m17|`qSS-@Sli04)9Q$P}DBi`Vz+OpABk%rf@$%U}gBmCf-EARaa#s zI?F5HVn_QV4W=mN^`iv!^jq>?MC`L|MVBktFh)C^{{Za*!6%f=9!qL4qt=5Ne}IQ= z61jif7sl+pImw-8yf(z+45o|9BX80Tk(6QwhD-4V$C#e}p8-F%E2ej_TK&iYG9QWF9-a=EMcz#@!Sm@$3B9<3_5Bxf^FZDh! zS$25|a@w19_2>PiTo5rVvxU738zFq?X>}`oP@1ySwa<9g-YFrHLjE$X{9+Y0tm)91 z{1Uu=X;ca9CD(4aMp#~nWu1*z+f8BrF0V4OtjOAGWx)LlnB{Y}!zcLCkpEmaHJ_Gx zYneK6u)eC;pxQWSai^+fLG6&D)4vRAL{%R8RDXr}G}pX;JTNdMr(9 z&;;eNq(Rq=6)59GwB(NC3zJ`{jEiRRB$Z9kT3odGs^)83b%06sv}%Nr7RAYe;A z-XK3-PAUFA&MrS8#H+8wC)}p&H(Hi`HQRgD9R_h0&2f`TOKI)W(uSq4&WR#neSCGK?q_HWeNPHKuzDUy5C$h;Y)xDP zOf$=!HUZ+x8$+U=5DdKaJFRjt5cTo`czLyY-^4!w1E{|Zc@ho3{I2XJN8%$g?4$JD zx2xBS`T3;uurC;8$qZN}rAzbrG(L`&E(cv=i}b$ma{e7SY#&USk!9k>1Ss%Y)M36^ zr$1LDYxC(&ktp=b>(DPy!7b}3+H2&5qWJ^v%l}?+X_TW_w$XHv(F~>0Op(z@9aVd| z_!IB=kiTew$HH+@V(nK&71r^(1C07MHJ_`h@677**WwM6(AK-r=d>a*K$X9jS!I`G zRgV*yvDnA>LkbwkIxK}6qf(noTU7emxvnG9tN%1znMSq9$d2E)0bnc<4UQU*j2Z`< zV2B#ViFANnUFzLk>c|rHj)ULS-hG>&N{`*10V9PduAJyX>MCq;VSJkv^pvCq z(;ME<1K*VKgs#S0@5WE_ip<8!7oCx;kWNw{CKvurM8~FB=kaB?4{YV4%1QuX6u@ec zq#$+7d^LO84k>QdOX_vW2n}31c_GQ~cOz|LV~|%Iumsb+p&p$!b(X1x+!-eti8{My zg&5;)oSB^E`ci<+tD{N=!Py0j=t`Lc1HXhykz4g$w?ijzI%I$g0Ij+?A8i{5`$YH&O{NcRinMDKytr;RDvMJ>Xe`R?yiHc=#blo+6G z{90pIOHb==?gUpjr?KBNqn2rO`yel0iv|-=tM%F6wE7IwX(CnW7_?4(14OVW?I0J! zRh{P7llGPfvp>dFpQb!n^7e}vps@u&6ATDZDWcGvWnEG4ZJC!D)S_kr5(?lE$>BL} z&VvP_BE6QJ4%Hp03{FMvZLN4ahK`g=mbd8zj_P@<2asSh%~`)Uuf8kYXB{ZdqCkka*Xq_;E83Gx38;HuS)m zF>+y=+psQZ5~z5+puh@Ld^{7PSsi*#VzEL%10yJ*L}k($M;-zV9SpN|uw5toNxg>u z4baj^!pS^Hq2XAlX!Yi;*_UXP7utlw3A%`!?aT0f6fPfT7qB{Fb*ZPe9m zj`T80%Ub^*V3R=9nT*C{9f>UhU}j1nC`JsL0#aK?D)xG0%Gv}uKY}z@49K0Adt!=n^CZQT>TW&B zb_w#6CVqn0x0ZL{^Cp0Ry}9j=6~{XiUalp1u@Mn1Izx0d1F{N);Sn%f;G@^iH`LSa zd7>ao>TIK)XLx<}OY|HYz@7Q82CrYK>m--Rdq$ZNRc~|JZ2t*24o1j)X9p@szvB#8 z4j?vL)K3lRC2<*HaH(SE#Z*<5m}Qu)giwHXfyrwxR`5>uaB)GX70nj{Zxe*x)~?Q@ zR;3veE&6A2y90Aq+6RpAnJqpa?nGYhyToZB$SsJ_cmz83pOe?m{A?V5sMFn% zkgUp*<2m}Tn_EA0a{lyF5ff^|Iq?Awjxa^r9v3%|4LJ!jWnNEO&e=YC#Azm9;#;!?SsAw99(3j*J@bd9wTY zi7BPB%?Y1|v0S`uZoG>+hW#nU3}(7eBiRRU)8qjVXHj_)I16O+1bJV^^LrI6B7&_e$}CBUSHD!_>=fT0|4&VxFzMTG=ux%e*u<(wi(R>LEl)SsFb zJ=mp;I8Gi^r-?8+pjv2uW-nWL?AmRQzq0EQ9`77wnrTDwSU=&vak5=6SW=tA^L&iO zJq^{9Tob7iC=) zS2%?i(Po3CLhnLMeLkA+4Q`DrnM6z2-#h#2b(9 zL4`G-3T{XvYf*Xk8Bn8k5C^~_C{Af+ck-!y;*a^=BKHr4UtF0?W0+l?i`*~yw+=VI z^s`S8Nle^pYVJ|>8F(%3H@kTz9zTLG0YM%+?TI@Qq?ZkG&D5`lZkF}t^+@wdk^$6H<1{$kE;UdfFR)tOC6o&$PX1*xL8$|6=w~i;xm~>C7XZD!T zZ7#V8^xbul7-^9T2B!VD&@tgf8aNUcX>G<3lr&-=-@g~HB3u5L2E=Df+Te&OlmJUL zay0gUK8GYPT&?!iA)5SO&GN?hXMO3LQ7Nshm%c$CMBc;?iK??s>vj!YaiD3~ji z$Lsqh`oXioa-1oLI_Ik#+n>G&^gch^aU~Z7kZ4hj3bwB0J9qSHAl8S)nmPjl<_v^pW6wa#A%Dsnmbg+tc<_Yb{Q?bW?= ziIih&zf35(bc_i{T)NTp5^GOLUEtQ0;{`TLm;U|AF4b)#XJ}*UMU!mwz5jFj_M=sN zU=F8Ac@W6b`gF$|#vnC7bM=!|A05w;V>OakuG7yhO(hG%LJ8wbUE(Tb2J=F~9%fdv1?dL`S# ze*R~h?5sm#&6AAN=Py>*cHFr1N>=%c2Fj)ENHuUVhLiweUZdXoX10x^5+0-Ok2)rt z0*&!dU!bV-=?Iy>BsogYFSUsrHHn;8`Y)bGD)^0F0B}D8alZmb72{T2t4Qo~|9hzv z?=Yk6&D^pCKzrgy5WLQp+ubpwRA>9|FL(Qc0PJe9&R5pmk#zt0d^x!)8crknarar_ zau|%|F>Z1{{q}m$SHLM@03gUXStu14&$#Tp-xJLE}pc{n|g%TjTTX=E#8t)z8%DuY}!^ zSdcP_CPNF(b+DMq*9dGX=!}h&SFbd=GIL+~=puc5ZYA!sIRm1UNVAYH#U0H0-89+C zhfzLDXEaHD*o|x#{dyz`vpSCyv%77}y?FJ}!!SYk<=4X3Z7;Wr_1}3G9X`!J-FOD3 z+bDY)CU!MhF8;E(v+Ce{&@JcdmUQ63(CFADG|AX&x5hB>>nq`?MK2P~M|3^Jn)37B z*^{Ch_T`$9ixMlEVmOuZNehf51w?q+f|X8W=KgkClwB`oQiO{at-E*3?${?5Abr{`}n3Qm76nQn-UH#F61HFA39i)lPL^5E_~sX7YJE8OVbi zemi*MJ~JLrJeNtxr1WZluuaQc^yExSUv&vXrB0J5w2kPxen7dxqUVlZMf{UIDY0ft zlVik$$Lz=jLi}he)-2{HD>8)cw-teU^AOQhon}qjg&1?X7%Vxe~b;=$!#HPcnrEb~954uJsWj7>l>Ym$@ zV)))mzrIe*<;jywfBKYP=|S-IK!&!$w++@*nTxLSlu+NLjAFyLj91ykFR$G2dhp4> z4M-G6UzNg=bGcXSmPP+gAN+A0B#zwH1R}EKUfw9a>P4~Xci2)zE=AlbtRsEpUahT& zgTMz;^;mkp)GF@R7%+^pP8ta3EcDu?HCpLiYlAoG!#IUPjAl%p;Et?D{e>UvCZO6H5TgSL^il0ZZ89eI~{k9Ab^ zt{-7ID@1(4uU}Jg$?K*%DK z*D<~C)q(xT{oZeSRfq+2JY$cqO%j2V%tF{>3z38(($M#7MdcUyW52_LXlf?fA-pu3l0oPk0J6?g86$z zj?Cm1C=DIL-jynh|0jHkCjo>|@~?s@!qvIDjzMWzL=)?v@C$OdButdbC)oBI2-+Q! z$`BkY3eyE}?6YSCmMEH?ssNl^{WY*)B)X1b?z?7tobD~#I39dq^lK3RS$#oiRBX)L?Gj|~eF z@o9;P8#3UQwBup-&Wx`t!JZ0ws}-qOW-?DoA5R+Djy@t^3|ST~k=UB8si?8D7YeR9 zneis~EmW-GbH(QBu`@--Ix^!?-tR&hkc&mcFbq6asZscqYW);9kn0$F6x3I)A>i@3 zfcZPK$eqOV_flj)u7zq+hBf7$2X01RSln}Yn-mk-Djsd`YBd=7Kp*kMHmN?F6dTx0 z_6<{HsyUm8G+;NI5^H5Lyc?2Q@P^KKvt^_Hg5^y@@0S!ZP)Ur(7Fpu#Z_py59j`%F zEM;2g+?3Z+qW}<~tRlq(UlpjxtJDBjerE}2TT}&@mwsjlixP-_B09o~3WXIgUlahi zYo1m8PHPL-dxe{+@!NZB^+t*+{da7LO=?cfaHDuX)Ld`rHzh1~; z+(}MtEYzXX!ppwjOM)HRpOUCPYPe!objVN}+tnmnpUT7G(1)y_oM9BjE$@jj065); zwB|g`?g2lPq|RuoKiXu#?FlMZC1Bw*)^21kEgOIK>e0$aqp}5%OI}5bZaGHvY1Cv2 z-6sQ^Xn`2!DQ4byvN@gJfR#Y^=;Z`e-t-QIihv(c&tr2{P4I5>spG*}6%W;fU;+bi|c+9>l1H(ccu z_+&_y=k2Jk`LQjP7*9%bkIDMXlQYV`TasuT$zC}lubpsxz%6YgWp=LRHE8D+Mb6%o z+FfL_$HpiV@n6fUKhV6AKg`?RC!?|5>B%FDi;^H*KFH3`>E$$$&6LiN>`Xn_(Jz>J z5Rdo1W%j~S%)n@24@B?VcP0uN95}EXac^T9LC)tfb1SzJ>5^>8RyuJqdjkeo`Ncnc z*k`Ipn&upBNnw24P-7f^@e^I0rcKW_Lp0lV{tuGjSEV?+P0BBsI&b}1<~?&?F27Ck z?5D`sKb7t+Z`GYmPaoAVsr=25Rd_O8HFPZMJN`Jgcvind z{7o|dPfcs%&=b?oBf5q@6{~|293lK2&(Kwt7$qiiv3RruiD}VsSphSnZM@J&@CtvV z)c?ZRU3JCLhJl(+&~CIFcW7wbT>~`k9vp%NhoC_|f;MiAySoN=f_rd6fZ*=Ik`My) zu=mXDS$ozT%nzu8I;pDl*7MvKB~1-N`s*pxl01U3>={!n_VPobjhkBQ?+Fp4mNLRk z%Po_c%MDhWaMb>}l=`-`{Eto|-cMrRsEfkypl`4QNU?(XA{3zXCFf)D?7q-Am~#Cs z{bxtr(#!buG4avhP*&Cwu9?2h3UJNs;k#<%RRn~~ZbA2#PRe`+&a-@i}PejHHcR z!z6n%d9tKTMtpOlR#By`B+ul@k*fB_WA9+El?*uSr zcupW1V@4ikDBJxhTTQTlM+voy998&HUWOB1D}mPPF89>>4y*n6WGmdbYX z;2Q<5|K=fhm`B}0sb$EfRreVeJP!fGd?&zf&_Jz=(k%4qujJprBPF5ea$nz3t`%NW z0SPFEdG+X%wXh>>3SgVpqCo@-Q#UupPBYx#{83 zx(Qj|Eft&{-GB)(32MmS6*P3yR?!XG_;;E_V-x4b3ahkl_>k%IR3&OVGxEpQ^wV-G z7qXICLmoDC%%^A(?@@PrzuKi1dOHKr^LAwo39^ahxMbu88_}{dOGHTs$lgNRL?D7y z1~t>`QeGvC2%B~Qw$v9j*wWXpL<@Xh&=|EXVTW*DoM8dOm@o-*4W8Xt7e%^xELgv( z(s;Teh*7cf9nCUS7o#BIDvTOe&JBe9mZVf`eF%!Hu6sBv$P*?2E!_dmzCJNg>IgIG zHPsY-`SZo77+fNsYE3n{Ba*qOzkCpO4KSBEfOTN#b?xgtOcFc*uyN!B*2+{^WQ9y8 z%WY7@=Tc0};q;qBlJ}*;5i??`II4|vCvK4$rFfH9NK4hLefhbv`yHa+_;lp6txPK%%nY@@}my4NpHAh5r!c( z9GEuruP#ko!gkK3K+(B0Z2E`P{Sm>SF%}TrMKTioqRjOU$HLK0brk2mGfuV#wfsab zy%o}$OB_cu`~jmx9$`}>n0AaqC@M1dUlNOn4yLE1oEUs)5mo`as_^qrm4aF`Y=k)) zV@{m|KC)H5!@_jy$9eml-hPcUcOV_-FDL7OEdLJKm1$vC^g_+r&ryuYHLeHQb8WP< zykDed%^)DimMeaVOTWb!lb}L}s=%RGC*JDvs&n?LQL>($auU({tr9Dhe#2K@Zw<*o zily{&wcGAO*)*Xu9O?GBAF;&>3#hnGVTj}Cyh=}Jn+Y_>46)1{5=CDe#RQf2QyryQ zF_;zv_95w|ohxW6ZNm{76BhMzG5|PN)#?oOFxhjMMcrF+6@66+N(FMc?_a@aMGWrI z!(Iqk`TME^c{_OpyRwfC7q1RI(Nz0b<>Y%xVcThb5Jj6-%j$X%{e^>^Lq_D)x_s2A z`Ucyao+3}9elxG5sz|j`Dej+*;n*AGY38fcrbDzW-}&?fdgjpK_){VYuelsBT8^Kb zU)?HDe>jg*xApmJ$&=cEN7a8Dq#lDWJl@CHHg<`;!tJ96vgfl>1?Mu z`e=8lhZ+)gu+rnE@_oe%?fy1HZ;fI%-_#%SwXlw%{diJM>D91<4V72XMMc??X>pyS zMBThIU97SOH*jU0Nas!t@xf!YS0zs)HXZi+#Z4@7>+G7oNnaLr+k_6@P>ogUtIy!n zDoA86b;?bdR;AW*dgiie)>iMe>V@psF)+%8yM^(J%=G?^So`ueb*^k>5H8U`Z1M@4 zKIHt1D|Bi>?t4e2j50H0XF}&Wa;VG$TkY+7U>!G*qF zapl63gR?y%?J_`B%}O^i4je|dsYd3Mx=yju#Ner<6{l8Rlolu2PuDHUyet_h8ZWzg zXv?&4nF^5S$Ccy%HgrDhqSP=Jw~dNeKUZQ5S2ahAx5U2S+L9uxQu3M+5?vAWQt5Ud zn$tpU&1G^60p4+3s`giK45ZMcYtU>`WU&BX7PPN!)PTu&6PrKXMwveS$5mM+1>*?IDrYKbji*9UNk5_ zoo!fzbXcUF-*X*#Ej@lK)srJ3KBdfv9m3L*9?S>Ao0ztxnp@GWC=ZZWeCx&zg@EQ&q?)w4v{ z{)j+>zInjJyEy@x@3)-)%--F?)k%{-Ys*czD)Wd(YQc5${oqiQveuAkmC9&IPi!CP zt(Z1`rWTS<@$OpQ**hCoKZeL1Ja*a~b$F#U^_qIsINWnCFTsf&4OR3?C$LUqnsR@s zg@4`MT42;%F-&bp&RpUJ2n^evPUjdI7g~h3ckO9VW{NAwTYdr#Cu0g!q{33iV0RwB zL2#{iXk7v&)}KCH>QUfz;bic%h>y@{q!nRt!;MBLVg1dih&z~8l!G&acj0JwHmVS` zVR8Id&}MdUwynPGQ56EA8FQsDqMpd*?J~deyQutB-@;nJ9xvtzKPsN*#A&KD? zuVy}V9(jpigcut<(e%JumOrY>n4}vHoy1TyI!pC^34=#A_7mbxrM8pcfBL5_!&^Rf zj&$@yu!F;ZK?@#uw++{FL*}=?UB5S5bI4kAbhsV8v}{@Jk9F*~NwGf(NEpMN`bTS{ zb5r4jQT)vWI>||ZF^T&q?;szgI7R;SF$rJpGPB6eFYWDFA03Xg%2G!Q4PpxTg$*X$ z-2wL^nwTZGSL`E#q2fvJ_V~iKSThvw1w-jzrm{zfGyCD+s>2nAQrGoS$_F%`VaF<} z#|$5;eB_LUWm32@qm-p)hc7*_;VDJ1eX-*_4dMGEK^4+MYk@iqKxC=RF}EV@(eM|Dk;7{N z*j>V76Qy58vAHW}hTYEjphu%p|3(#=E5sU#y*t`9SkoFq@kH+u15{Dp2_%ylC6J%B z+nu3pjV^nbj2)1482_LsX}e2Vl#h4;mofq(qW@E6@wKp95z>n3g>-(E3E2*ez|+(SgU*K=Kh+gu~@7zVxrd=GU*N1LyifzGdqS{SEydST;NCzS#V1+(BNTF*-Y3 z+R{^T_Gbm>305lBi|wdL6)t-`{_^1PZNENx>Y7U>r;xo0s*b~OEX6wNS+PVtRE}JO#b@FudY4kuZJ2n`6}J-JCS_U!940r^wrfyN5sQZEZM>PebXMMQ@@O$tY7s zohdA*2*Z_i(?LH*f~ZP(H|@!Hnu5v+`SuiW-wU_~5ITyts~@bmfP0?^D{^)&lhmpA zaw-y;BtB_!AH{X)TP+oV6PMvicgHKbyjb2^ha>#S%6X#$k|@!*#?CCAda9yX{FkhYv&fN%h@C1z(d_se&)6J?b8#T=D`6x~bcOG3R>fFQ>ZEq5 z*W3iKH%GrZ0m3*SJ4WRhaC%wr^SKDC=Z1jdik3rBg&o2z>sX-_ahP;cQ25MB_y$tL zc1DZ&-`>S%Jg~SL?73~%qjtT?Au*RAWv`q{2*{bLC63P@2N5^08kHqbXJ?|fYk*zQ z+U}}UHmP&gf+UVuR1{gqoKg57thm(tP>*GDB5F2d=Zl0``p=0fs`l|{8SZ+KR%C|z z4X74zqinCwtDy`YB$Acu%mQhwt;MsQoFyF3@29AV@@3( zni}fzeIxfyPp$Ev+_}D#I{8R6c`Vlxvn-szaenKu6d4k$0e+gw(DF%t7^9&p|@DrX{619{jRF9PnKfW1na#blc&;>J45!Hx{$+VvYX-#XpcRApvH$E}t zsMWSF9DXhr9$Ofm?$-YWz~6=+sK)YqqPBJqr;h`n2kO^#hzIyjo9*y znkm^y35eH(vXf!NRX)}dw^NEzzUQd)Yd~WI2WgNkT4L-lE@4WVYoTng6)VB|SzLx{LekC4*5RA!V2r#DpK?J6UL35wOlI6lR=;kbTn&k+)-~0w!BA ze4d1s+poOBwU+oLeOmXK1(7pujN#e7VNpf-(^ExeZf7vMGK}JF)PQ0APP20z)BqBK zBWIgI^_mO!y%L(L=vUrK=3XutP;v&^JV5%=J(e8nA5cI#41oiNLXz1c9K6Qr{7=Tr zFPoAzFVjbJ51=gRx`YxIEF@0rGZEYi$S9=%h4!z+PD*c2qb=sV)1oV@*(*ZF#eJ2) z>>#EfQDq7_oKXb!W))>aGyrwyJswP5otKe+7S)?Y$;>!{*CfUAtT;qf%ACqs5?{Yz^Q^<&G z|Qu0xur*2eHA_B?%b3AcKCTBWE*4N9(~8P)H>_~|^|O2#HX zWr>CI4vka2(NO2g`6qw0`>CNjd$Qh5BM&lIL4Y2er|BD5a8xUT&%=QG!-T%lETQg3 zK+I?&BRlgc0u$6qpAe!So^GElQbWX}y2cqTg0he6Ui+Q06S5oJGMwgx(1lt9 zRMDB~#kj&T`s_=VEOm#FS*C|*T2=c*LTv}x!IlhJz}LWxuP@a-c|&^C{BhSZtnMoU zEHX&ro}Ab^7lBm_gGY~xTuJ+C{wpD7dw0r@Ny+#gItz*B;4zEJ`FNM(d%>C{Y?o{H zy_{G2^wcZz1;RCDeRpC$9DcK5^;{aJM9ULU z;Av|nzlOccrtXh&rO7HdhYqio2BmeTcoKNRiPtYbN>{UICoSNfma?{_h&j|A;xMF3 zWtlISElOf{^|cO%H8y8I*{Tlb7rW$cbQ)JgY8Hv3@bSiig@#qKziU{&=zxHRd7U9c z5%a`IjPkzySI{{!enj}}8*Z46t#X9#vQ72h^1g=GJWg>JwNSk>?rDs4hX5YPoFvW? zL4~3lTa3<_q);rqm1VTWeQjttb$ zZSar70o z592G{2wtuF%Ou+*jdq6Sb{Z7dSvm#!#`JMwZ98pG%E`GAEiZqJ1@}_Zm#Jm6XyLZk zT8+hFR5wD#vr%y=i6_=wILf6OHzA4I&C1fN$FWXtH-070>DGulGcWUx84RY1L7Yh^ zrWRIkt@$I6I_cGIC4Z;L6)myWQq7h5=oc(4EF3B3KI(k|{7eUHLIv=YKQ=Mm#E09< zP8zZ2?y{m@j3i}zCx}^0g|^9MG7#PM$m;8N|MD~Zoj3-r{)Wq|6oG@|eheN7la8a?bU4)fn z@@W7vViJwDm=-Qa-UOkTEV-upd`)sN^AHPBx@6vz;UkcF+;&_Okfne!0N4T52;6l# zE9bRSTGy#`E#>Mf?5k5vSmhN(@&H2&8+lVmkX{(~=CqmDxxKM6Rkd?1%~W1#1slSK zdK&^+e@(MHYKUv&;Hm(g9u#ZFgrCAttL$p}T@Pr?u#@+&lc^HBA#!_^ znGDPsfm^w9Nxh7MMvBJaYhS($DT6lVCM0RybMb2JuH18I^OOO?wbJmkm|1W;p?hJK z)6Oc;dK8@8JG|8{P769Ei{)wv6&6-A6Cr~P`BekSm=&aHfQ&$n{=dUt55){o$2hoU zlL9vZGpzB?xOn7NR%*7KSCd)+ymD8Cw-&>V!9>{bjFnGT>#!chPG35w3a3yml% zyb^h)Jvw7;LSV#C9n{VneAeQkcsbr&g`~v7o9`$XL+>_R%NVBGo5zh2F z4Hx^RJV04$XC3RuQ?_x-UJ6}d=dX_RCp5S6_9Xb7h%?Op=Hk6}sRbEmkj(IBUcuZt z0a|(;601zC3jsr29r}wyS41e875{0HzrJQWlzzB>cRS)U&Mm@fGEB4jN-R~IL!(NB z(F#;$$J2(w*a11=(F!F?;_>6lqo+@$(OB+5QR|lrUYgkI_vC>TV{M{8$t95ZDReM# zaug3p^nGp_<=~=Wk=3~t@(yj={L1eh&5s@a=sPM&Ui=t{fJk#IqPS=DK)V_+@}37P z^yGhIdG7k3CZ;!2t?Dpmb3=+p#;c(OIj(BH_7o%Zm@f?zGyx}M00OWjbE`rW`{0_k zKP!b7t0NOeLK~GC!49SQ8FDNqpQud1w`aBvm8V1@n>=LZ371-xgEdBo4ikznMxC_C zOmVef<$QR6%GhF*r09h=wmD`qxm`^v1EHcz3t9%@-W1Ke^8;4PTH1XchLff2JkhYZ z8$K^O!{9sqpwxvP9S%pL#)mR3cf$VTdL63-dc$iX=Hfav>z`uUSM}vX60?|ZP^Ag! z`DL8t8HuT;9O&il47>?Uww0-#qecR~Ya3E+DYU7sBB+q{ko$7GYC0Lf`g=Z!c}~0% z$QTNncBEe2c#Fp*zaF86LGzrUdkK_L&zpx~jS#8DwHEi9EUrj;1N{L0S~vH##zg}C z4RLEM05{;0|c(WM}ll&9AsLfm6;fcdj z_X4GldfH)oroV{Z5z-my(qN|ROT}364c(?f>ag?$zS(L*NSK#q*0WJWchLXNjDa9l zu7%!q!XIRl%2S@}NdGSI91Oyo2e3T0qeI`@Ke`eQFi;>c{S;6vEbuG|R58V|=y6=g z&smPYd?Y_lHSxm$AYZ@3KEV0>8j0ep;r+|p`lA-|ACUtjRJ?%5;Yf#FT8qckdDE8L z?P=Mjg^PZC%<37Jz3tfHMcH*O!ZO{)z>(+U3$uPwlXGRZvKaDqKd@%XsAmSE7PMJ?TG+AoHbBJTJ4nu<{gW}y$l&h5 z6N-3SVZ-0qrK!xw+32fE=YDH`7}KGjk|`9m%7Ow}`yIzLB;`ZQv82nj8Ai^eehkOs zzf7~cZ}i1q4kX_-UDKd$llcw3JHPS~ohS~@Kd+rCciAsQBsj^6+%=7S>9hT& z5M*G8JZ|8~*zl2qu_Rp?s&U7>GU@u^H*+;4o?LUCMJ)!%M%FtZieAl)F=zbK!RMC< z$I5#%Oiz^%sOKV(()l_$EU z)$CCwqjivytA?%o8~34XaAgtKVKf98Fq#!63Z)vxVF+y^N{cF56?-k>5YW+;yF~J` z&yatNUaw#P^O2sNjd4f`eB&s4DX7G1Z~o@<&|z!bfDD;EA$`JB`Wd$-6^HI0_%?}Q zp^8l5{z)s^zV!Xg@zs&Nd6k`T1s`57U;6h9{X&qfXJ95Th zICkDau>v{6uw#lE_za6VsU&EZ?Y@{HC5$`pGo_*RnC}N!=_v*@#;mfp-4@r}OsZq| zpqzrm?RC@=hX==DSgv1xF0tSN*L$t`KP3;MuHK6hlid6))obSMkLPd6u8f$+KfIHg z{0L*N_H>fYLl-kG>|uWvNO6H$F{+! zd}k@MMH97kc+zb%TT!MyiWD;ro+V$FH;3lUjFr=>eP%$(Fv?Lc4TjV{$fUiltLdP* z9oKjkn13$L$6TuI6nC}$$RYiqMSQn4!vujcoR`Y=hVLOCamhVl0z-oqqA5v34GKx& zrWAtg@Y@Qegx%jBt?tF`Q~z;rWuRXw>da!KcDL8Y3{dER(`t5W-aSP8)8}Zp;!gXo z-zhQ*hY?zk(t}eb@mOq!Om9c2q2~_Jqzd>+i^$>WYZMcFbewxln*GnWd+kXcD)-r6`?r96*j>t7F%Fqp^GJ-3@77v=I_1=G4E0g*bdpQ-Smo27{P)`f>dv#3nEorbTN%0lo z67#T;6?Y+}G5yuC;&9{-`epBp579q-l+`r~sjGM3T4)k$vNGMne`#y=b+B6&dQC#x zyiNMVMJscEG>)pS_6mQL?cFrXDE6zad4(}9fjOSb8Jm}8-L|z+Hpp)xznaZMRoZs6 zQ6S2>L;i(rI4jqI4l=j_ndse}dK3TKXq+-|PxQ;4`>qfd>DI3&T7`Vh@PVzf)-Ci+ z=7ZHev*!a#NvQcAZ6yhYy~QrM70_{hcVc6m5@pd^@;Lm<4)Yc5)u*pDdIwTi2N0E+ z$mf$H^P%r%^y$Hom>YKG` z$;;17WGKF;eK$485X;5s-USm8*FT+Db@G?!L03BzXRTjWf?q=qGueVh9bJ;(roD;W(6HkL`69!;wVn#-=Qn#iQ|5;uQNIrx^yFA?-;-(K@?* z2v(E-n-~&sTI*Tm{UPOw>c_Vf&2K*yhY`J&%OU^~b`{ALjYYdr66c56C^Dr7!lr`Y3l+|K?Leh)7gm>$%U%K1l zDU~SM`_OA`!VJX?e3H#~{xqp+uJt$__lW#ON|qa7yTfb|QYOE&DSZiUQ4hmJw?}TP zNWLFZ7jg#LZ%UKPFlt0T%LA;U=&=~z{`ZCRelrRO4-KM7S$&Lf+=QZ9#|v#LnZ$bG z%2~v7W8IY~D4};I1=5;-vxa@y8MjFR(^qawP4tfL`Lq+;QYJ+cm(IwTF}13@D2plE zW}WPmf#P+lm2u;T%@W#TFZ+_OY*E-+AxORoeo;nfBXG zE6pWFusxF2fMUf-y5b*LZOzeT+i`oNR%7R-uju#9CXl|mn+nq!=L?hEoqrRFhMT^E zc~JiH?FtUK#UiHW{5VV}adY0|7NZcW+^VjC*gw2Oed&*jsT!5>43fbm(O+BHloH}3of6F)>P5Y?6TNV5BIpn*5FHBtA zOPLmFYNf@3wYuQ5KbXg9;?a_=sx6m--h5F&%-hxO-?^`&wZl!Vi_CEq$Fx3`9-^}u zrNo^0qQ#N?BU9}--zBqwMbBjCWL`-x@Dm#NO2n31G9AK6)ahwm)F>lFw&wgKnQ> zgO5Cuxpxiv(L9(4vLS^iv>l`Gn2I;PB(0w&c?4Ay=< z1+Ny}2Wiv`G?X{15Uv(+7q8E&NO zqAZbibH@>%ERC>s!z0eW9g}*HCv_~1rX=MXtG`$CmC;kOe};UKk%UJ0ix&HLM3IdH z?XOL)??#2&I?=}aB1Yl4uVVJz(34!un|e_Ix2 z^?I!#(+EWHq3jT;uY)|ZhYobi8Nlu4J{z=hojMN3x+Wr!IONfx3*BatQGp@sbv6RsKk-iEjMvl`g+^?J3jW zEP|R%?E+I`4c7P8-9al{iDNuzG{}$v*YaOp=zf&5>!%>=V+_(7y>YC6S~DIh-2OP) zETRlh0LLX?5!SCNj;ct*FQYctn(vkLN*+kZx#qD?=S!$(#R#Xwl8BOcj;Xzc5TP+` z%`zeK^5*2Jg9_u}NQ4;<=jvQhF+2k$iv}hklEUq;P4})e^us51(8QruvtVPjd$(gs z*Pu=Q+_keouhE>V40>y#uQElY!*IM9^z+O3r>zz49R|p%ndv7{6y{UpkB~Vbro<;j zI!qb#N-Q5ZtNh7(-X8@2PJQ|;_)p~N{HG1PbX!n5U4{EjGEVu>{KJSp$Z}+v|AM;( zqb#v#Fa?<0WVLrUsZY=rQLNuTe;gLMyCCWZh?-mtl5|@%#=JFM57}-Pu)h20f^xR* z-1eK+!8a_#l3)tXveJnHN+v!Bectt#!aQA79p^b1xdd{ zDa5rouJKB(B2qquRR@EZga1|q<%S|N(Ra~o%Khkm$(dCAU9di$;KH5x#0QJ&0jr9j zeZx~8N_E;j4(eIsHpq`xeDeT@iV04V@S?yDDH~M(9FQEDpgVFG@5SJ(F<`uPGjQy5 zo(24P+gLwNm}-yq4j&%7M)SP|eA5cHN@EH+09F);^^b!~d4fdGGJLs{2&o=5`o=*i0Q3OEs7ssD_YRFu@}0rlm5&4c-~7;N zoR7Xw`|KXRQ@URSN@=5@H1(U+vLj(Fu?;mJx8&C8(*s6*0$?**;0-5e_PAmoj41L` z=AGp~nUh{=3J6Hy5%m$}I>1&<6LjWN^B0g5COz}&iLbMO{$sR#bc#QTR`8f_sQzV-Ow$^H!12pAJOF zLThJ%LCHe*6bW*5`(!o{EDQ<6oDW3_!4%lR#I`3SCnMsv2W4o5m_kBjctehg!geAF zn8v~RW1j?kg9E@}M~#>m5MW$CfchTaqdz#pjijgnPJ9igC<+r~0mg-e<68o(@2PB+ zLMV8{u&;pzkU$*(F`+${;5;CH8;INnZrfpG%mMS}$Z75gN=dOqR=`3c{z@J8jkMRF&pc#8!3k-_sJ z(KIlBR#GI^n-y^OcoaG`I#N2Os3F*+0WLUBZhap^Zy9DU0ykWYnYDvcxySMN#!Y7u z>)ZT2xaJb`h4_6J{L#$jm3`_IEuE5W?Sfwz$n?YcpUhG2vi*is4f{XRkn7P$W>jLR|x zjW?+Y0;H)#Pz{JA+$M4+Vcr{noQOsHzK6#5hxIXIUVTprf*|G$!D1|d*7lf3iy?Ys zMB0^M8FVR}yfNfPgcZJ#)qsS&fiP|(aQqd}1)vct3tBM*Px-!y5CO&Wzyk|IF;9@B zIa(n@$KiP6Y3Ks!IrlFYhh!DT5dS5}a!bqSi7Y=(%^660?*P^?irg2DojC%5Cq(iq z6Eix(Kc0|cM@8tYf+FVN?~mnv9+UIGs6O}j&VLDF`w_8PAbAJMK0AO#XX@sC=pQA* zV!tdzz-Nmc#_G| z2+RT{`W^#wwt)qR++6oKl#_7ukW8ALEQ@CNwn37HAFxvNWcvSYvpn^0&+lEiqT}N27xFcT9iBKTRzCB4M18zG$@%T z!lg0>-w#-om1E={vnvoJ@zP6O%ivZ@A*=>@lJmq#XNeSr3RHpqI)GW&2p*$>h+rVf ze74$d3foD7pk;7iV@^|1EdF&qgat%%T%^w%iExXYQU)3N=9#`O&IXq%Yo`!d=KB^# zyLJL7Vh9*w2-w&NGIo|Ew}OJ{M2^7e7Cu?ongqjYx{7+Z*GSPcp^#N-{wKR+Sx8nz+vh z%_dMbCd^a@xt)@`(1BdUK$g;&;>Mtl{!#DmD=^)G{@X~5IIT)n-i#EUiu_kVeKufe z7BTm6E(&i=4y0OmzAWja3gtEMXI3_Q7+WKV(+cw2CNS%Yc#i^X^98B3Ernwl$$WXPKR5@J1Q!G0VTFDy z#6*cDI}xjeH3H@wUnC}DU`+$fb!d8ZpT4M??j#c>n7bC zg2M;=e8((S>^2H;J29+5{V#rc2f&$KR9~EBP&8}Tpd9%MNH`wvc}BiF9^vc|!NL~K z*bScR0%jVO#m*Hs?_dZ6L+L4+F?KpgcB;6mn-HK*&dEk1Z9r;pE$bOr_%EmuG5pxrIt9zP}?62~7ikWFrR)gkQANIBoh8Itq0n^bKg^@~^tol+kj ztcM>`eNI96*$*UYQvXF2BrKlj{2#K{Q3Q0D)oxJK^n;yfDi#zJU34ZA>)H9m*76JK zPGfHkakTLOY#{y_s}>%UfjU3HMoOq#lZrdg2W%Wfajz{r?JQg?3n^?zh4f-Ws;F}? z1*z!8YeCH>U||kwx>tk@525?tqghD@n%xKRiW;cbNDm$BQA~mYcT&T!Yd6T?9sdyu z{KJ0`2U+(IQSCHl_Q#i*pDTQ4<5tbnO@(i z>N92FmuPw$FiEr1G6)7NQ^8N2!7@}?W^7ZqJDC5u1t0qnb5&0ZSY~lywWbD7Yt7e^ z7PYBM5UQW_c=IG0pQiFO5HI)4o+Qn;YtH~1fx_&a)Y^kdSi~V$g$D+CM38>O_E)4h z=&LiRSS$!#G>GFL0d`#TYWEQJMfX3}E}ZB&k=Ki4;-GF5kODQ~+gy#`=V6-vF^K+G zTTBI6lZf=o!6b7*wgfjt46On>&WG`whSs|0@pmw<+kN{ufmG?EPzB7mr_0S>`nbn=<+Gv=~3)n?Hd9>cAMs80SVgM!eGl zQ%f}St!7gTDTtcx``(neVoJr1B|hEX4khW<(OnRHt26QQRfH0FF_k} zC(tj_vt9v#8({4Grgi($gzRt1js4%>RQQg^uf`Mn=xD8+-iC!N;azMynUvK~cbM!1 zCX^&Fn-OmHl9SUwT5*ZvyNJW;Mv)fz#0el~%1+?<hFga(B_`0E@ zW5=I2q|~_Ea&8Y3(uEzeRmB;WKZiweM`|WH%OA42-gt!b2og5|0M8aE8;2rl+cho+ z8^3-(2L@6&u9MRov7CW#bB|^@dTX7*5*){CvHDp98|aXU7x@AfNYYnPX`N5Qy*95B zh+M-fnstO9Bl}M&l6o;L$GLf1`0ZOhi=Oe#AAQ53F46$A%|M&$NGn~L##|WsHX3sh zK<(;>XuOH>YiD;Ap~U1Hw^1kP;4^{w3tso}x_xl_7m$1Ig7CmT@%0DJ*B7jo(XMXj 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ᕽ|W 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�E4a0-)2wj@PxuP&Ir$L>&yF>8og z_{i6c$yBD*I#Y{|)-PGp4wdg2!Qz=5@9T?|+Fq9GXZ|Ad^^;A`kz0&pHM>y7a_iGklwzfBSo&dx zl~66Fpd)uWCW5&3Un!l^R>@rku*n|$Ma`}^Xsn|*oGFy93(9eV?5YP*=#t^ta;F=7tAV4~<$fDnJzzqC&9_r;&%FgiREXaH^ zj$g@W?&~@HS}Cf(H)>MYX`S5VYNa@!D#sQ>>2{`IPFMAt=C;tbsW?Fn7O@2*%o3kH2a(*XB4OoB41DS-q?dlm{Gmo(JF4y zlB`GkzKynGMnUcB8W4~^4$u#sR+4$dZN^8fPjfz(bn+RUeW7W4{{_hXdRcphTNc~( zW1T&AY1Hc0N2;Q@LS=pt1rZIo=4MLCmY6LM{86CJc=CHhw8q) zH+85?;dW%pn_R8owJ-5C0uXAGPU-j?an%;xJbv|Cv<$M)LAQYjwpb5< zw#ncmj`+vOIolAQxaW_w{ZxhxD)o0Oji_s%*iYH@k}#XcOCvB^(}x4mmS+G(^@Bja z1rNVSBHi$#gf-Ym)uG%L>~qp*$U&2;urLA22>qbm(oO*2+8krO4hYnn#4Zd-(GvtX z&}SYLxi&`BjbCs_K}$8O?c62J%EH;*jl8F zC6=OBDC?m3GtTT=7tt6KBoRGz58>kIZWH-A)ykAnF_G+Ub-brxKA0Y;BgGx%J#bBF zWyh$Tc6=5Ys64-;>M6(X&r{uS6`X?;*C_EE#Yc;}wDGLCC~SK69@a~*8>H0qTKlsN z59(5pKg#X0qL^s^&|9Sg)D?DUia4XA;b;;z%3mzIEF@>E`pmhSV;e2+zN5_%bx)Sl zhBvMPql>U8r9!n~uBX3wX5O0KeG=nmUSvD8WL`03Z`i?N+2#9)lx`{3#uSaz0D9jO zU%gRNa7sMc5z#tuN;e#y=Gzam6&#U#rUHv-n%FoRz(%3sV1Z|u9|~!*KD33`;rB@2 z=~87G9~Wc7X#dh>E&9l1BGl8%Rf0GfBox1NAm7pm6+rc0C(M>0yIY8y9*Fv+FAywW zg@A)Nj5UXE5Dxs94Q)h zd-sD9Q}o&hT(+|}_<8$%s=w!)*F8kUvV4?&I)1=7;RvL&eXR&rvxuuaw>S-Q6?Y@WbL4fzmNM=nez5T(ZCnY#(t5m{ubMs)KSZ^T9p zB_S`t^clfn`(X8|ge=X_1cO9^2!Li)L_;+gQXR&z;maEqo6{Uhq!=uf3ThSv2l&Jn zNG46fy~XeGKKw}fDB%05?8DxAVnsJ`{upB8ucp^^Ych1@uz+VZ;QDQDKNlvrEJ{NJeh)Pf1Bde2)8(9aI5D zB%nyS6)}Rf6ywILJkgat%D1JMqyh|TJoT5-xw%r)sj~d5VqmSFj@40I*@UyUg3^=V zM?tXHMuf^FQJHjlO;+lwjbOkMkTRA?lZjiY>LVI7C{j~;-yoh7p2@D2#mfacxFc!3xtiP@Y%*jmZv_u2SwK{yY%%j*#hLOCF*NHf70 zUaml^Wl&_ZI|Pq;ITPQJ3B1Te5FeTt%EZlUfEVYJP+&+nWJtiFlm~aqZ(#!4ntKAE z!DvXK2^+a+Eg)}AfV2=nk3Q&j6BM_fht!=B$Q5}2${Badmtg`QfO3(!5TMZ0f;L?s z8U}%i4}c4)0BegvP$?cUm3i9YEvJ=>3{MNw1R%@{CR+eU_F(a@Y~WHMAT@?unc%w1 zKaLapkrTXQh&SX@%7Pa^*5lu!koKhq7*?FvB2|dwPZam6j6neB(ozz%gpLLU$Qlv)Xaapc zm(#)jaa2ihl2t4vVcaA@17;GbY2uq|yvpXvMZ99BIQ%@x0`!u^rXDKKeSAbVINZO4 zPbx3I82C{VBySXk&rEV{2>v>m{?-UWi&4elR)ugaPtlA|*F;n?w0%opbDIak? z9C+X5f-!-$SE(g@VX-kWA44{BvOnh`AJmcIqdV7v3wjbTOTzkl@v(A2oN+~QDWC%o zg;#UtOj>4BOT~g9fx=@7x_?8nLnWOQi2D(@y{D1hqAsASuH~*yQy9E_O7!h47g?&F z0UsSTwKiWVQ%|ZGp&8$|x$vm1lVnhdyh+Jn~Wg*)Y0z<*bdPCt$iXT(_5P3#gp%Q z8G7&*RLhn$Td(}brfaB?B zrlsoZmSW&`VyjO-pd>Nq34bQqmur*AU1>t4J0$5H3z_G6;#6*=>p8yXbi0ZQ*r*;nqTq&h=Y?=B(@c%^ zhYYu54Vl+AG#kWgIuWs444`PWBgYeMKjBXDj|VNKGm$gIT}9{I52kW6hmt21#dc>S z=Z2gx@jc+lV}Mj4lNL_+d5j3KwZO;QfU1q@QTfN(<`&N&R&W3n2x)7QekuK+CzB11 z>!39AeC9- zq23t;IFBuhC?>Cr=fIr_9>i%>upUVJCm%mul;lAObjjTM<+@lYzBwv0N5rYB4pQgk zFaePoGYc#FyVKs`H1k&!bgML2p%wCMIuO2H~TN72|xZDVVM;#3pES2xg%maQIr65){#57;@aRPN$Viz748tE{b#mqF7XD zmMrLzalhFa+1~*pu}vzffZqh-Q}%|ZIG0l=Z2sG#1IA$dc>F=fK?MhpD#a#t*g9uw z5xZ(}o$VI2lWM#_V8QN^5W4tqljhR^z@~ z(Xzv8#CDd5pvJ9js%Fh&7ujjK!_{%dmv}7s8q*M#5599IC(FmEt=-2=9Z8xZf|@dP z3!|Hc4p`T3dxzKUDJ0D}7xWZ>RRGyXfAK@&KHfC&`Nz#J`)yDV0)08VId_SUCJT1z zKXqQNR%E8m3>Uxo2^NX1l1hy}r5T3CjnKllfbyKAdf-tkz$fdFn-`Bm=}k_DHy-P zzd8pCv;}YpZ*+Q(!x4q}oNCP2Qr_X5w!2$I;r+Ru1C$^{YGXEgZr zCnk8KNmgFd4V`9(3d?()YI&F^-?$IDjNmiaQogmAPF~gWrghKfLfaRz<(5a8Vt9G1yZ6xk5r!e0Qf; zf`Z~^1#7)ShTr+^Q6M4xFIg$-pR6>DY=ry@h1^q8s z$+q-=%1YLTp8q8)eQ&4gvec^dBDI{G>1x{R4*0sYbH7hH`3b~DWj5OlU;k`PBqA^5 z+j=~c&6DRTso(Zvp;#uXo^{g+yj1cHa^OzgK@t68&@XEm;zs=_o~(*#0P0 zk-p|AO_l%jpR6R$bey51XMg`)zN+VV*|A|$ z_kWX>&VTk@{YO^%z2^99;Qo8vufga4A6e=B-&fa@v_1e-T)L|IYk!6&EPE{W309tV z!P#d*Y)7K2G$8-oMVsxr9m25%nqaV}84UdQj9gjZ^7o3Sf>;`kw!ZW27X#ad+cguP z%iDGHXtqBa@3Wl$Y}!>d{MmBqy8N^4I>C0gr`mQy7 z{5Luy`y<|!$nibk5oaUS0{DY$3H;^@PK88H!-(+-NtWPrX+k8S4CBj;DY`WZ)&tif z1EFCcxv=dyzft0p1OH;(i$41)L>tws3BJh7gymaN5nL=m zRum^{oSLERn(=?-4HPmzHz$X(u2P~XO-lbySxJ$tvrL(O2Zz*(L}`!;j}gyAk&ifQ zY9Dop;kxcUjlw@!X_@JDW&7Nd_SCdqFSqBqZw0HZ(u~notMb42Q2Gx!xf=2;6o3-T zZttm?*=#NSUySs2yKcDuETo*pgi78jr8x&90;}upO8&0RHeGiD)vO~earO1l54Cd9 zqk=Inf%fy>y*CAYq_mKKk0=P*(hbwarE2{Tbl+R>yLM@g2|^ir6pmdO}|IkgtA zEuPB81*9Id#*B$WohM zIz+xZ$8naI7+DBrd2fv2JciqSb_iXknmsAz=I$}h(Gp-=qf62y4HvgID1(hFR!d`u zEd{>Rt?wfQ4X8AdVj?k@Wx~x3sE+Npq%B3QI<0T` z2k0u3K&=VN-dFK68?=Axm!_0Tvk_FCbK|bBC#}Lg1;PsXt|dgbNnEZL7LbwJcd0ku zhqEq1rhslzrFaJ+Ku*ZmhBYH%Y1O*;!!mj-6;JojAdHm+dcX@17#_mb!i`u+K-!nk znR9TV>*gQe`zcYYHG~s)4V!Tt=Po_Kva8n#=_givD1>9xX+%w6!+o}TQ9^llB20Zs5Xn_beHnNb_UuGZ~Msk-vHZB@9mTFlh@E%3L8P% ziAgit{);hD+_e^`4t6LIC&bVDN1(&DVKiskp7;bA2a|SA8H`*2F(G89m{fR^Pj!;g zGppio>2Z`#<#VA}&~q3r*g7{lw(lT+K6eBMagzO*dF;1%9E%6EOkcbK3UxwpoM}^{ zNM)ZSTrx8$WZ6<*#a%5CKTJ1SaofM; zj^jV3T6g1Xgo|SltU~C!qWIh4iE|21WW~4x{PTE^A42-brEwqUzNG%~>3+HOjTXDu zF2U)!F{L=F9@x>B(IMVZf%_S9Ct+JA;>sJ4uG}|C)+=Ct&@3aH`!r6`)|mLl=v`L9 zg!qrHkff#L7qW7JQ^e)AdXi86$nBkGwCHN;O8{qj&PA7))a=5Y-Rn2JWIFXaz%xHx zp+9WXcew3nPV=8_5La@2a;n?=*qDmmbNr4Jw(fbh?t~kDU$TPoe^`|Of~6Tex~c-M zsc`S8{u^U=!4y~EHE169?%TK%2*DvhkN|-I!8MIrf&>!WAz0Ah?k42Q|ezuR{GNw0uSUL0d4p&1mp49K5CFMUJMp*8!eF4?l*7 zopgXtpunL|_+1BhXfAwM0JuYnm>`Q7nNz&>0S@87JTqi(4ZJx9_GAJ#7r7Lxpm)5~ z8K_dFC3O&BaI>0`dI)kOEeu+Q1`!8Kt|5WjlEDxC;HR4?Bo+u#O86xdxO*qHME zhoc!qBcRck=D;bJCVFv1MDX% zAz-pS@EUF0X(jl|Fzy%u1q8`~%Z|7!7yy6fXmj8J20R(Y%euusz~e6M;+4$-W%Kwe z+L%Wu@BoQFh5$T*;A1%GU<^!i3%r$mdoUJA<{OE=4w&K_)O>$GLn}6C=r&ym0zW?y z|18@A@!Xq|R(hC#;=reNh7_m45!vSUA)e1og?VVy`WlWs5=I?1Mx%LJQ&U>& zd|F!ymLXDl7kT<0?DV#jwBCWVhNd+8HJmYc3V|SG%nV|`#a|>y@PHIcXp|_5uYib_ zN`HqU&jj^ z-?@Mvf-~{Oau}*|m~_@8VfmVh5+$^lJ};_GOYzx5P0)#Bu`2vicvl@ z4$P{#z@|Cps43HuHQ%v0^MnOPE>>utii8o3wKf($t)rB&nX&Cwv}|bINb0eNh%UhQ zdCndp*-#X+4i;$W7VEJ>uzU)2DPZJ2NLaK;C`cu6b0k=Eu>%eUo(>Ru!)|;_{?na$ z*$2E{Zx=oYUh4qwHRZ&zmY`(kyOk7b;FK{fWZJP79toBd4rXSimZ3n9Q}2MnP$Xn{ zUPdZ%$sjOb21N2{ikGm73NfuEItj~wvE#wJ9Z?lKQ7!w$Sa1Ltf|S;r=}J+2A)j;Y zUic$4e}ENIKv8^-{p*w!=}f5PK&~9QqYMQHL$Emf240R>(|)I`kk9xX@f;&-0B?b`Vg5DOp0Db?c%(UD1qWRy$i7G{2)x}<)x8UDzAN&wD8b;WWD2X!Wi1&i zDb8M~L59_!iIrry=b)@*7Ti_1ry}Qs)=XPe=it=N;$ZyqiN>LLp04Frw!}X|irYg1 z5Jf;sbD^tz1IB$ZpJjFGV4*--4H{QTr%=9CSm8)X8P+|3Us+Ahh9r)Qu|5V2Kck9J zF1eq@;F%xJIQSqM9IumzxT*TcT6`r`$qE%3>L%O69a`a`pqX1kO#?#*w+b_1qre;~QmFT|fdfIR0N~>qzZ)&z|NtJKl zRQ$!4Ric1a#aGKg=#>#F}vlNGm&vXjU2Qo2Y za)K>uZsdQd3qzh*YH}63q)Q4a!jjzK^v1q7BQ~_G$3Jc zr9%?K2oWhI{I~g_9|VdDgc4MI`_ISrmheXqQ@vnuz)&FfXbhn155Gdf)hmP8x)VC= z7vkw9ASyLw$#dT+63^E*%-YMyUQs(=mi(&%#G3&DR^YY+ID-HcVmZ+k#U7suTfzsB z_95E3`Rq6tT<)3{I`QO2HbzFeBix;i8lROdaC!1A$E4uML`9{?$(BCC=kF9z zp4uK5J~pLu`RN_~cSE8+W=)2|ehpL5OWy~(b80PYNdTdtTpu35SWBtyID`5(Aip12bn%UYgj z7)UcuKHY@Pn)il43<4{pSZT>~8Q4A4FFyhv;acJpi!#)?u#s8m2!fUj0+!@d3?tM5 zN6O(2+buu96g}c3dg*QrOgB>2VNs^?oEhcnA-6-TKuSOv@4OuYlK7OLI3T_cvy~!{ z;At({2m%5S2}|v(kWWnab{qd{!w;eHr?j{-h8-i#h4~a?!HeljtdK_^V6_~Q=?SS& zf}A8Qe(4$f5R;3^y&*SY%}BEuO{Rq@xVDOfGZQhPuD_+Jzcu0}o(u|kuv-V{HYLRW zX69@<`VFJS0AodfMP~Q|7r2>gxq^1N2a4AY!*zU**CU441K;j}=hRw9mxH$FV`SFP z8fs6qND%t*Lq)q;x4pyKeNrhIWlD>s8Ox7`@kV^T>)fbexrv#XK&a=`8{KGlCHMjY zblij;8rBULZENZ*o%(3U(^QGRr|}=>bK@%1UK`jYe?gps5X#e=XyD!}qTq3zT3lZp zv6+INy?tGMD*a`%aXA{%QJ&P(0r?gDh2`QL3gA)!H)5O2_`u-9z+TS9yO+D<;wu=) zW5LZ}qH(6zSo5*Okx!08IcXCnM z_hUDh+?pM~Xt*G6Pa&zS;((6*-C|9+8ldg|{K*IOU8^U!05l5KMk#pY> zs{Z7!8RX>FbWZ36@Hgl;hIjJudqm&vMiCT>ayHv=)UQ6h%|5?*!D!xyKsx=nCgz6@ z`ahJFUaDWKnDltk^ELCNsBXz8a*%!}#G2evOy!gMP?Mszqn!DA_42u_v@4yw^h8db zs=g<0sgUtLfVJxLR3<~Qeov}KsZ6@wZ!dI8%|q?#uOpdKX__2RFX7Vi00p@9r?kl@ zx!g3Z6aA`%nopc!Fp$ zZY)=3^9=ejKi_{pUjFTk`9lA}6<#}#1yF(??>0o|+h1JkKmEA7q<`J;cWl1;kRaj({=M7q6^_!wQOo^}rxc^G>DDln4j}3b-nbg$bl%}&OzdQNE^Y_?) zyym0mfyap0ko?2>h-fJ@FG59%^lL4<&G250!ZMLnt*Qd22Ht34#h+TWkK}{fYAP}y zXLVKU_=_xCtfS&IRiyyu9)~aab*gVNlzNYm3Zp?8J&%OO-=W->u+v!8nY&PT0 zxL}sQE-y3?l@v(9o|aqCjIb!Bbidmt^~LWeEpG=OkpAj?|HibM_~_Ou#7jj_re-nF zgOg{Ypv9);q}PK{|7^R(wml-ugi+;5lf$|TXlK@^!jx&X?_Am4!|9vuVkoJSdh^3U z`|Zm9S+Fpt>}eqDTe&lCUKtVRX{phCi+-&v^CWxmC@k=tEz_q^MsrMPN=pqKWlJVh z0`+?F8}|T7a+sDS?mroe$JnOri!dy@MaDwP#Y% z-2!xP6(Ry@z5h8=Pja@uUtA~2@(^dNUVe(l2=JC2rT-X=gM8i~hJl0OOTe?HxGf!n zZSxVgNk;;e{41u_fH>mk3pBbaitI$u8)hN{ZnRITjnN8Lg@lsLlDHC$F@(~u2$N!r zqV#1U@&6_>1)NiYZbI*?zKN-y*(m~B#`tYkNj`FW8> z>Ea7nk1RRBh)$5%A4~~xkq{B#w)k8-PE3y~Ju`+c%T}gIl28}IktjuAtcXp8%#tPc z>Qp#-j!t)wnMm=WJ5nyETl8Tq<~{h$*SH5GCN#OXLXs0<34g$^xR3|y?8agzbR^?1 zilUV&6!Bdk#$;S5Au{0Lc%OmpqcJiPoo|1L@;cP%>c8|K=Q(Kqb_(XkL!7Qgx>KQuG^-uC_>u<3A zDoV&>Fw~0J31#&x8L{)hyu1)1}%q7Ry4DD6_u|yF;lJ>dWS9%ziRv2+;kPsvXyI z(QRtSQari!B**7{0+G?aVrOZnT<;E6TTmK?c8T_dW6En&Ha)9aB5Bk}i@l#p(oe21 z8l~piz07zvJ?F~n+GkZ$`@qOX|6i&mu@!!bY`bi}i1Hs*>klUkZRImUvA6aY4_C-i zrp`uNpRRdUHBYDW>fkS;h@GOGmS-M(Cdm)jryy%6(=|2bS zOlv-9qf@J@(T|#Iet7&h1XyoIw%7cLG?`~m66%Oy0aV{**hrGCd|Ep%jc-JsKmWI?VUx-!R;w4JIn9{wWVmh@?_~bC+S|$U z!C>8m`IA`eW(PC=@2a+!pZx8Asv0bi_5V}VEDp*W|D$THSNjLQIxyG{EB}yK9#-`; zmL66Q|F^0wj*(3Kzf`TlZ7S08xM{bb^tk!3{=Zetws;-%r>FI7W-*owl@Bsac!R+X z?@0YF4)4TbDuZ|7y%mQ42Fq9_b`oe=o%WEKmYw!exg4JM(FUMYlUJN)~wp z?a9OWm<;FR#gvxq*`ug9w;my^fqwII%?o6RKKr`z4aUr%?34KIpNj{7(fV(`B} z2?~PR(7ObTw~2)MxM)y#Ap=2qpXX)DZ5WQ`N`k?KM6W3pj6#zP!H4+!;aNpfuyfx z$kB&=-XGcDElpei4xtCDe3XeB0J0hxiQh`l2LoDbYuY#X1N}opg;N{U`{x4N)>TQxDk#~vwGzEHD z%uE_hixEGZ_ZY|>XKFS~v6@WIguM~|m8ghv1%maq8o9(Iy^QQHbFW|RX_U3Us_HZ> zU!q8*T9x1x1+IKPquYiY%J@WLi~|P$Q`K;=POfq(Re?mN9E(j+NGeTBzL*coh>iQX z$Ed(Z!ID!Y(tw)uNOx(TBNK4NGCg~>Iu=)E{)lCEE|rc>kY1=gVl-=tM|I9bR`e|a zRK2*HE?P1E_0PI792Qj79;X3LMZq$MN>#>TGmUp+^V~YUaoRKL8gFA&pfXZFbBMQ! zVDRFJ#AaT1d`}k5c)7NS1&fR~Bj#Vms$wDvBnq82SfHmSYQE8^ZtT<+84Ja|ffn*b z@=8MjimDSu1q1QSTN)~}(-8zpx#Bx(y(;A;(Rn00R3=*?I#EuM70ufj)`NipqY2Z! z&dwExWJ_6)-;8&qp-=;rrLLYsg#Y2?3t=*=2(V@J?=PxV>JA5u`$80Ml4Yf&O0zQ5 zSK$7F;u_4lVZKHc?Z2s4wM9zh7Fr&Bo+Oqqbd+z3I`@z{L{~r+|EUQd>=aTc#7+%; zq_DLP(p#W-`}OC$D-VNYmby1$8$TeuuL`C97Dik+OtIo@ zA3*!5aZR472Q!c@NKu#;W9X)jCWbxw7jfq`+_nEI<+bkppvnNwt;|6lx3~cNmbgWu zat(1mPggb*wKrbh&_Pgjv;F435b^=ggiKlodzMaK1mZ>MvSrFYnFuDW&{Rv$FB|L{ zTNESoBKHE7!Q;ZwzvLxoCj~CFymyShQM;$H@6{}@53^g_@wj$>{#8rk-a4}KCjnLN zFh9qBZ(Y25GBZ(5xD<(5SGC#5u9vU~dt$@?3r0K3t#l?!v3X!#sv6O2eQpX7e6xp~ zSukC_Ghx?XHx$%)|G+5c7mrb!()aHRtWHH6J*;n&V;4j#og4mjo7+d-i>&9>*Zm#I zH0zHgU)bhv`Aaxz3%pv2$Rkwy&7xqunS--En#gY_B6#q|nDmo2vU}m#fmA~3_x770 zE`OB(QnV$OA;zh0BdwDW8sYU1YvOHH`5<&Qh8OPrMgH*%k5G> zIXoT~*0(2^tu|5VU1DUusctFPnv5iGUqiulf;%|i=5Fy6eZu%x#qzPi6`i-gvtNy5 zHwBM^Tm71-uz{KfW%kdZwo1(jm}0^AK|M9i8H0D}$0=X-zayonhzz!_ZHc?&H5ZiE zyKnSUbQIUo1=cb|o1Gl1k-EwIX!*_RB(cRx}{-;s% zZ_&ChMBr~Kg-E^`X3`EDdMOnkfUoNGxwD*D2)B^~_rE75GZju-|E5pEO$1QM+C>K{ z=kKFTZ60WI42XkF8O*~kR$uNAdFavkM9kuk`nat#xM7Ziwzg0(zIz*Y>S4R$2~<7z zr$G%3kn_6FabJwj<9u=Mb5SYRPK1S&FezZltx1?;JFo--cIZ((5$D>u=i-T~m z@bR?K!DL+bft1G`_;5R#t7lm2B^!(et-r;mWVS8h@fWJ{CRg#pt-^b|W6-vVKWvIe zp6~0i7R{Af1=IsqeBe{UG6E45dGXH~^uX<8nDKj& zNST=-99Tj|OoYN;!7YrCxmV`63}2O>d!2JIP_!)mLms46N~OcZ{c#$Cyrn+|1&!J% zqxRrEuLkh<RU{z`5F&Jo5 zQVmsHZA4vl4(dZ#rMJfSX&Mea%~R+W_=)aoH6x~qf{%x;5{i}$>MnxRFhc$@+m9pR z@h9U!1R#Qqgu>gPnj#V5tuQrB$bqENkYxBFpB*}~Z;YAwBe8MimbqpyWT;ZFpwA#{ z7q5jcXhuwVa?7H5(_&^#Zyh}XBBw-N7lUR0b@m2GsSn{3h+Qkh+Y-R1nJ4TF5;?yC zE?gl?L|=#2^m_XhG4P!(5lI#c5N`}|Wd{Ms3{nJ2r}^rb<($6~-VAiC7ccJ;=u6TG zK#%FW0roKUF;1bwFolI{h;fh`E^*W`8UHE7|I=wK#<~Sc74+{b(19z2>k7!L$15TY zUD5EzR0+X|3CZf$^O%pG<_dcLGXffiY6?QKFFe4rKrh^^R2#2Z($h{5(lHh2XAYT?RB6DD zd{>-?K#H8>3g>yA!6!>TWKPBjwuD^(n;r6H>e^622q6pPF&^)4K8VshW6tpBd`e2g zRHWj%rW6T#2!ffSB#7jj9E7e8+CijTp)J3%mHE8O^HMM?Up?y#I}5!NZ^uL)6+H&~ zCh5;jbRvc^YGG8qVDjo*+CrX^aZhrGsZv88=;0J;je4^dJlInKfg%C0HJV zz0@VK)`1v?@N#0uG;HEAG-RL{{WSOrqG8AlEs7i5OcmI-5tUQ2$4V+?!JG0=nDbF3 z(T$*$3%{JwKT1gaJ)gEEmKNv+LlaNM90ct`a==26HCo8%JZJ$9l9x|cNQr7U3B{04 zUr8Z!;D=c1@?~g{2ZtorHDzC#f`(~9!*;4CEJ>)up)+G259ST@v0_u|lW5ID^ISp0 zhJ|*B;-WOc@VMLPd*?rVn_tL*1_jZ^47`f?3bWjJ8;e|uOI{M&X4kmzfW>c!iqssaVgS5;hxMEAIiC@2FL50m)nXk4J+hqCqp2^4j-6=~VKc z(EJ=$NS=HpDtAdPD`W=--mz2nYpC26E9oGvNBDePd^K-eHd}57T9CM01$9fs@j}Hs)byW*siGTbnM=1ZtmRX4x}OxdYYK*PsqW3Ii_Q4p+0!~AHg4Jsl+{~`>p*u*bN-T23|yp45TdUxUXD6z*|zbKwEYus*RAS zFi3-0E3ti;y?rfCT$sWsXwC;TVc2f)wLPde@t!itqXd$FQHWx1_C2(aFF3w+3vU*w zPMNZ_OkP)sva|8NAylqxbF7Z!ur7!7ceesKyXQM%>^tp)+8!LdHwI=(2ftFR&vOTF z*ntDyHMn>*z{v_1;4N-ju^W}$ep@ESlw~DTpn0E$AeMYbz0`m-NXCAwLhGLw>tQ0U zB>B!wP)9KA6==011`*v}+SF4TQod9Iq2YrJa)E}qKn6>mR<6Ev2cUlm3Dd!O-Tm>3 zDdlF#piNp$g0MbUs+{#jkd}KVUK)5K8oV0){EUO?5F}qvjdad@DvzVVr#|4AL-2Mb zIO!934+{2W2X`EF!AD(1^z3rLg3Kr zkfGy6{Qa>{d8g4bRJ<2#AG}fDT3HbpraB01UgHPgt6CZ~kkHC=L3v;12GzE|b_4c?Tv%vbE zs}`l}5Y->LkRc@Fflni*Kg=kEO4SZ(|6sv3|1_?yfx3kunL>~kR*;kE1zQW9bFS$M zkspY)SrqQ+Te0aX4&bB~92Q=0#sZDVwL|-n334!-2^KFB=Y&al#Qe8GX-{Ao+ zq8j6o&p!yD`g^&~vy~ZP4^WMWEH)<=Xs=|1&CiJ`t@@-5?%0&Ll}|!@xj8aW zd_la_edHdXjj_HCJ@5v!^|xpJj?a*s$XeJ#f7FBW4K1Ltymng&0A2v-^*X`R8p(=t z1892fvH!@f{+kDsp8?$ZqaKYKe1Qjko~nsqhp>4;paQL^;>$qxESgH@H1*Ppah(-0 z?%JQkzn8G7<7j0Ex9Ma|ciZYH@d)~$(w zF{vvvO2GTD{xdlEYv!_P{PoyG9 zuLC9HT4cUi>E(#xLW)X}T&}&qd=<9&RBb}~x8C$2P{SgqNj)N)1KhX>Iza;egM%ea_ z%MycEHp6$fg8$77Qgua8>!dIsxH)OKDf=2E(wF$-u14W0UE+tbCqdT8}=z9R}aGorFJ~JP$8ja9v3J0xn^|T?ZiFexdaDLjEtH+J2$N zd8uf7sT_474FGTm0AB-#9-p(efqQAdjLOe*Q~kH;e=!UI7JWE^79Ra%dhP?98^S@z zo4D)$c)SQ)mU%NWA^+CEYFmV!w=te@hGIWAHRt1=arAptS3 z8Q1uSKoIqNe=?Pq5&@XN%Lf-O<(w}Ehx4UsVq#TK%=|T zb6*^5-sa8REW8mETf|%M(@RKdHOY{LA%Ez0)9K$_lriGJ=mnuq3=PTw1ug^T6(@A+GA0(FkLm8@oVuck@n zMHDTkVH({4A!4!q_-VyhBS^K(f>PM{O zs1ToUL^qnQBhxD{?ZHCHMX%>gj^zDu8AN&ZF3Saj*P*Z6i`ucA0cu%qR?Zfe=IBwG zkD};&>MAnJ+>_pe6QNWn8Uf}ae>S=q#U2}Dp4X-Ce-1MtE#4PWHg&Pch&cAM;AWr` zTQO0)tc5_8QyG^^lqV#4*0SDdP;#IOGNs!siqL6?#E{So z_eu1S(QZs@(HPNm%|&dhuE**P_c0L+4S@@oJ%xt;EC!hm0oYbq9aqiG)?n#()^)Sr z7E4c8R4@y^Z`8A{CpULm8S6G>AFTJa?H$PWFXXbl?(6U(& z@xqC$AXy`MwEaLJLi6RZLhmIEvZGX&BCT3rHiwiK;jX-f)nq-N*hG^%RNz(T0aIpC#z z#ME(*{gKwW*!d5ty9qw!+^|Zq^K+YWs;CREqd}69-~Qc(<;&&PFK-=3uApvnKa1Xej6v$9$&49}~(JhrdAXFr>FlBJhac{n&cY*Zg6R&`GL< zQPOt>SRRk8EIU&d4X1}j%ZQ{K25?9UVicw~D(GK1unnu}z2D%^+)rkuCgKV5Wke;k z!Lv91{Zi)c$v(ooIf`)$(U0*boh7MHyNdllEa)9pQKUyJ{R>wUOi?F$G;AR*6dz#< zWRx*w$kRVF{8}b@bflKKYZEc*p*!p=|Lsj4%U>yp)L}-( zdof(@k9_>e+G?I(a(T2@Muu~rqBY11Ll|sKxitWTj4ZQpp;cZu+f`2dF1tV2Hd+4T4G{+R4u;+Xc zYw}`mIAS|_ruK&y{97GchPVvjz+3>A-e`%bru7WRcrv8HUSoHnEr29WjMufLi2=%6 zqLLh*D8{S8pt2+bj-jv+B>t_dC{G@@KEBC!9Sk=1l#_;!5as)5*sAcNCaP)Jdux~^ zl(embkgdzaOwhRA_BR?N@77YuN?8bfNr|j{#in!Mx?jEF+w|j4cip`mspt*eVpje! zOzfZW=}|4HN?a@+{0H7)85$PB{-XFA9Udb|%)GoeIPI>e zVv_VAw9MBup!G{QR!s3vx{`=_1C69}eJ&W^>W({~lU1<33<24Qqm)&%=SI4=f*8w# zTFb9H`OXfcEn2FAtfOBSIVV3kN{Wk2XOE^Up6oF|3zR~3k599f2sF+r8&f>W{Hx-% z^xmYxDr#!@e$f7&PsXk%i~3$9l0BEyc8BR0+LkGR`Pu#b&up^fn+`BhCzTsZE|e?T zH3*F;%TA(Wvk}`(1(%eYXiN`(t|rK!F+h(NGzAL@7>v%(hOD7fxV0p{6n(0f&Kcm|_vP5TW$U{lK$8)#uZTL@yyEt+GFPmyiEz>OEH3exjI|7=HH zn?v$G^zCMG1DU*M)?(Y_z?km3v{PY!N7MT#{t5qQFFN89Av4fa(I>Gp|f`sOc98Ior7 zp_8YzBa;?;9`^3{L1?jGh?wu2Y_Sk8c#!G@g`_VwK6%m@A<>Jw0Q%%tKZAeL2m8IXI+pM5~iJ9fFu$+R2EIk zRd(`2;1@BBf);Y{-w$HpA zRTFOKQ17@ErCX&~TPV)gpCRikeNNa6n$>vl`Qk{e(1;=XL@K;sRa+bwk?YmW`aCb_|+5gR#z1}5y&RA495;*LR6 z-jvJrIGzTj6;W{Jy?aapdBB6D^7^L5sK4K1derveMMwXWREGKt{?HEc8XL+Tq9EH3 zQQc@M8=yGj%|HDx=#wEEZ;gW2Xwe@#DI=H{%5m6C#>jnSBf^oQoiGnFI=J9v8krH@@mznrnz(bF=acsBlLz}5@&rweV-ehi_z3u4#CmC2}+5dK#C}q zDz?X=Z!`H~0)8P1!PDH-yU4e_b0 zRdf?3`K@sjmAZTKx-w~B*qtT45bC&qhkS=K%WKS(K@-AsX5zc13LD=r35Q^bgi4xY zOBM&Yxnj0|3i{#`LPa#I*CB4!(Ya1EYjA_E@fhTsOc$G*?Tr7i*heWeN40!FEtazB zy~rRJk$S4#=%=ZQ0@o&~OEoLWHd77lOIBPo&rpauXL>r0!z~}84HxWKN@s17Z+|l` zaTs*LHh998G)L9v#hfWzr`By1s+u!S6r;f~k`0rM%xa9M417^{Z(e36DHtVkgo)Z#(IgPr%tiX#=onQ+`Fq;*8~2n^Awv6)3*>x=!*$6hEip zP|U_2r=7~&$7qryNiGUgS1N9P$I_Deagr->OxWF!$l5xLW|A$dF*QXtp0u?T&oM^G znUteEWUet}EUlH|{cw&?+FKNyGd>(A!4bGW4y~aP!q{$|uMOYQ8m#IEO;V5K}T^i&vri7P*>Gix0_MVXj?j_k=E*X=Fm<#V$ft41>HYcmB<5xUtnvQLRj&G8g{=y3vk#VJGFvaLF4$2uX`gB z4Ng%)*JD2Ea_CD5DsJ^>B#vfyXku?RQq%=(FUc(pAApHeMvAICHjP@cZ^j2|sN~nB zTK*;BGRi}xjdp8H3L6g!Xjyi2f{6oTfq%5RnbGk*lj(vE`t?uBB#3`kAjem zF-&2c$mjQXaw*UY;!tUl?K+Z3rO%TzLqXbqc;2Ob%UVmNZeG*$!)KPqM3us6^Ru8~ z$!AfpN+nybUGKX7O;*yjPva(SJ_*KP6s$lEmByEh!&r3kC$%mwDe5G3-%CwzBq9;V z9lY4K9%)Uav8W)y30SPpBooTP+LyC8L+o1w8C)q0)qv`s3nQ9PTYnrTV}Ow+(=CGwop1L@Igq#@4)Ij<@JKd z=>pfo*`GMC8F8LRs$XC_eBKmn-~MDiN?Jju=xMVV?}MK}@-~mAB^g%X0@2Od4UNTl zcPrfqD?K@W$w+b%;x4vMT8<-C2Szx#fxh9L@nJeR_a0YtYBJ?2T6u2wY)ZMq7+~NQ zHhQ~)Mohy3qOF(^*1k};M$!*jo9|~si6jjUI*^fw$t<9D{Dn^2sE#>f!ft^vSW!AD zBc--pXI_^fPX!JUADjwzK_ecRBnGxW_=()w4An}(PBWol%4s#l7oXm;&wj^oF_-s9 z#?-gP&4jBfUMC&h>!*%=ot@&_+1(`Svt!;FID$>|e*>dpCbUjpTFcbipGRcYIg|m7-CWf)uj3sT+jDhpE&-A{G2)6d#z2~4eQ~H;zRs9@_?ADbx;E*W>25UK0 zM4ox~yW}D{XU#3A`^5MWS|hX?;0k|3cXK}r6Wg72eJ<&glj1x7iRpTrauIF&o(z9m zW!9m@b$@rFDBvVyT~AETCUoc=rxvREy%*<8v(;;p3o3@&EX=#?XqQsE9)FGR#%0XR z2ZBKjRO8!+zU}ZbySWtC2+9gsay$&(8 zdayPqw%dM89=keB3jJNOk~yic!q{@W3%^@AbLqGCMR$zG2sL2-FN^%R{pLB>18BG_g+k!?7 zyVfrqIJgcC1nyq1K3{K1>-Be?eZ3rf`_etKk#pC6RKxkjbm@cO#qLC*+AkYwGy8ZV z77MFKDF31Dc5}pil8{M%&{kiM)b+??yX{u3r$_S9YWBv7`Aq_y{(n6f?i@QlQ6@YVC1Q2BeKZHN{v~@(DQAt#43Nq!{<7ti zui^T?F(FeUjyRi@UH$`Qm;5;86`_dJ`tsoi`ld|>Juf%)h+JKeWH9H|$TAsynz@S9 zO3i5Ok}#gi+w=M0RokDW0d(7<)SuoRYtU7IcA8#%KMZ=ccm7x_e`8ERSfuEm?A<~d2*C&6{m=ImHn z&A)yE!W(rZ*?6x~hXW>rV4weFN49LDx}Ki}KKM<%W^_1}P&j-^=0+6bNCfB7DU%}~ zAn4`$9`oHw5_`uTGvof|59h%Ik&;a;d$5_6&duNe4XH%r_eRO@&b}LzgvI?*`WPPK z*vsTe&eDmJW?q1b3@ttynNvUGcfk||?S55A`-KmrLh z^o}4^1f&x>C`j+U_bRvCLE3#HUfkYRMn?i>H3P-ded+eK z=gqBt`Exyizj3YFVcAkT#i+yG3?rh@NwX`f1BB9=yF2&ca#Q_@&d3}1Q}_B`t@J2$ zUz<}j-NGK?*+TW48*HZ0l+p>_iEYr$+GLUe-W1(nofiKIELG+xk@)V-gdVtHdSPnv zdQU;GRGm!!`}KxBQht!c;8A^(5-VZ-x0liKBWNDE?DZPzrBaY8Q2Xnud(yzSVcJsmEt_lEt4*X?xyY-lKe9irSm9YU zblyxjo=yziIi%p;YyEP6u@aX1m7d|QwOiAr-lxEIt*_daSlwJO=JP|y=&($8a4(8j zs)d;7m6!zirE5e{^E}BLm=H!--p!BQbmQ&y_E#>!<9ORT8jo**@++z?Nv}XOw4MZ= zJRe7R>rSGW;OqbindT3Wjtw{V5ATGGaR8~j+uRB~Lwa38S?}w%`7qNT&F+PAWc!E@ z5T8aIX0$|;t$#eN%=zI^F%avxX7|jKla8t4)vx2kUBY4S(bqGRy!Rcd9K;KjWp^q< zE+EkLf#K+c_<2iI@t!=Bc27o^a0PN>Pf1>4val=pzRJcqDE(%#0+DD53_H-r1ktfw zdR7|q9qK*`p7|*H!RC3`q4}To*{%j6k;LL0E7C<+!MyL1%|BNw0n@Gz9-^g1c_910 z{Ig?Sd>>xKAGyBzycise@&DNAo(UPfoxTkH*p|=tgU3{I`S|s-4)3;yRf@#YX;(nx zc+zia_eIO|mjR!ze$a#flvb74+G0X^y$r4vyNQb4^-%NYqFxjv4Cmm7^E7x5FfaLZ zR2io}?Klm5R?rM*>{i>`ma$Xj0vjE0>i zhwJn64qlMSuAdq!-}zz2tZusUXBC*jzfC?9xE+7fbuMv(v+8YqJ00@-&-Z~)t%HU~ zQjJ}gx)V~0#a1C;B^jaGRMWkHcNvMlSD;^!Sq&fVF00SGPMr4)&s3CR!_{S3r)6a> zS>*4I^7ScP6{V{mGyU0lRg`4Rg$YecdCjl0{3S)OoOUL~Q!Hbin6_P})n3;A-(NhE z^K4nHbRx{nFxLG%CGXr#G2V6OEC#H!Ovy|lVx^{ENTnDH#aqjiV1}EPaUm9xMeZ?>Lu>I6=XgQVG2u47hHiEy3eKK&4-B@2hO19HBzF6Ui%0+SG zWN{g&ai9}f&#jqW4znr8K577y4Z+v~i(j^EXw|VkU$W8Hvf;+ZdGzxQJ3C7e{YK|D zw!S*f(}Q6~bpZQaFRR%Cqk5_CNJ)#E4d-ni1M|4ZO61clV}8a>UHwwuP&Nq@714!d zk=H0XNbC~>jEb}j;29Y{r=7fvPYQho%@ckzK4m<~ta;hv7=hqCR<|WMA{)S^#D=w5 z6Km@yyyc*3_iJf$IAVQKYD*_3O2~%%aaRm%;$a5&v}$3V3at{G*OuCcDE8<5G=kLZ zRh#HCcE7nTYo{`eTzU08J>i{~vi$f;&ExX&ic&Hv^3PSY7=LK#z_>H4wfV_3Uk*|5 zZ)cdXD6ZLc>~BeVmtSVEwFKI*;jtGvaTHN(1;>?#Dy^3{*-LID8#-v|1`nyTj+;FP za-vy{Y^?NMw4{I9E*02mopS)U?OS4cj5W$@={ddu<=NKcSRgywOW3xY>8xTqy1YFH z#oLSQ7!Hk=bz~}fsfr_m>#Jo~j02Sk13it+y#ifuh33$X?3ja@|F{b)jnjsf$Nd6J zhaz*?&JO;rHqcRfiOuZ3&!hdh579S~_zE4XaxE`5-!8Dg0)?i<&I@5jYMR|@r(O4h zIAbcXJx-!^NgwNZ1v0P_;k8@X;^3FDyHMpAXt3lnQ>nhRTfYD3_2r|iz#<3L%J7X` z(=5bKl;+ zXl+=IeL2bhBOhuP`f>PAce@c|^_&Z#q6Sn#vN|asF3Ltfcwj#|hH#fJBh&NY9i!k{AHk`*+ zBk(qmJ^uKdRS#wk0Wgb(D8ndifhHM+W*Vwh>j)y8>l6^P57$^M>w}q7qqLdQkJlp% z+(-}9!RQc$Z6wW*pI_Q*TH~-z^$fw*TG(A%26)- zn0pUB_i0b(ZOs3lX72y4MES1J)E7EQb#?iDmHhrcX70yhmH%PpNRjw*x1zkK@Y12J zNPTAY|CgD&@RmCp_CMuG{l@hlGpE)J`ZMCbpD*x3EQRCM|I^G-yPuD%KB_G?nz6rX0c;=QA!XAi{nJysjxGq7b|7$k@)S! z;S^vELDdzLvoiGApOy@1B_EKmi^$MZv;Sq=bS)wFtc$Zi46&n(W($ML#!uxRKP&LNlTvW((F*KcmUwWgpZ`{xZ{K*_f zCQoj4Z%d}D$thDbpsW)$qIfiYZTwCgv~v^b6m+P6!y$*P6AfLjtftC&&G4gE?+nhx zQ}o@U@pVYj3^wWhc0BS2ryEypP`6mpxJ%$m>fn>ImlHdD7rECSrFk}GR{2U*Qtq$G zUm4sl*o@$K?sV&D`YWct?u{aMpHrD%wY0K*BvN~2vOsmUMNfaPl6ZAU6&Y;&`QOH# zZz;X~lw$OEBDp`Z15Z-x?|U)5e>G0z>m*m2%E&7RKKN*Uj9-Agvp!8etwjgMMd4}E_KF6=|`asK;r8} za=iLOKID>65cc*B8xvmHq-u4(IN4##+|0)xB110ttOvz8!7R&3-u4Jk+du&R2QvbV&+AR5^VqKRD~V*5}nFSnZM`wc~DHlrL`nzgZ@9|5u*X~g$;aY{(nyRzqqj0^>1JL?2tXKCbT^5(k(w1so*o*t|w9$Gu zRH_R}Ip;xiw$0D5j}#X9Kov9Q2RXEt)AkJ)%o|cA^#6i2oc^WQKxo@m7_a1KUMrSS zTQGYKsK@H;*Nt{>X?){=+ppjD_gS+*}4h|AV?7=R&~n(52OPiaTI5XRhZ z_CLBwv6jx}Nl!_SaeZ{+81W_Iv3tM#x&dh6PQlBt^%h$~8B6}J5e_d1a zs3gyXjT{|~)n`KuoAmb~9#5XVGD7nG@DIt4v`0pQDa3RrRU=_sU|o*ahsBZN7q*)m z?$U!^f2b&_D*anqT^-(slv$g8f2OTl!RSR9^iDMN{#;w9CxBR0nW8FO*}&vsHWZM6 z@lea2^x`$PgFA>NT+TbH6%c7b++6YR}S<%5Mtd*9%dNs{t5)0G{U5U zg)33RfZ%w{Ed6n62!WCpRR!cB0mwNU7@mr9iC}tXSW564xvfeFOa- z2Z+NQxOO190wuP?1^HX`NHhR46-d3;Xf>{6FYwVyNelvMa|?Z%d}owQ#%8n(Pt-?2 zj;p+3)!v|Cv42$@CcB<^Y00QaZTuV3r8$z)Y?2r*)|DI@265W0z0|j?ntzC@Av??X1DMTO+wv0x_pXxS>f=5qW@w^l9B2&UA zGxBY;2E9}e#a={?8H7#gMe-S83gAvB*yxz1-!p3>sK-#Nivyu{8Ed5A*G# zo#!I7+hQ3W)R~$Jg7!%+U_6%?ny~@PcQk^8&Sx}MGw$S&oTkP{aXS4uA&shFIcvci z)y|1i%Urqw>BSYyj=K-+L(_vG?bnc#0z~gW58WX~8(&;nVF<{p}k3ac{WYkp(ad8O~kWo=R#2QI&9@Wzb0g*|_)l#?ph{D6K@y>fa) zDo`MzDa(*-1PyB5^`)qVPBeynGtMk?c5NCWn`W*ZX05nvc8;4tQpuHfQh%&>c~9-F zISc_03qlxU$?m5caf_Ra<_ zBAzGlp=p@BREo@yQxr580isk3^;m4MOMqVK={qkra6!ReL`@czY`kk<>J{gZEJ8*l z@@ij{YnVbutiYs7ZDP+Mnjvl9#bd|I3m)E-?e}0%KEQD+|&wfJ^vT)K) z;%zvZKqhzy6|V`l{p%aC=K|60%t(7L@W-nD74_L#IZk9kof^b70aE423`?_yy&12U6T9qMiFM>~p<&r~STY*uW1v+Mzy)s4ZCcTcB zxD_PjWFS>tC<-z2o}DlQVe-is23vKmwD45MA?jXrAPR^yEg%WTDouWeCVdD&KJT1j z*O<7DDElH#`h{?^8a6rI?EP<=42P1$BiNV{Y&1F+vVRUT;|uIPBBu|V;e667(KCT> zJz;lO>|;K~V?D7^N6H;G!TV#PGp+-R?L^tRBz*>u*F z@?-zF0q_gbdP3m`+e>NE>+bnN_mX^~0_QoBE7fdT6%u_0KCpYN{&YX-x+6FgZT72` zqO#>Y?7pK?{3W%f$d{#vd%x zKPu!j>>o+$P|_gG>Vg5|A?loz6Ww5tsXnIii<#fNM;N4=fh}N<pNPK5a%YR{ylW(>7kKtx1PA5H3M_5i ziltkSERk<~dXA@sI!lvt2O3vTX4t=AVDtqs-m{|t5%+-kg2@rz-s7()6LPx{=!aQa ztkTKQ`q4q{Eoey#$n>h)JS6fssqAtJa@I7U3xcg2-jSg1;n6&s=tNrRJu78lsw7=D zjme&7+BzIlNPhJTvek`v2SrhNf1>=SRsTFaGiNK2n>@a)FTW5aQ}{-pWA*82pON;q zwfDA&cf1hwPMyW7%un(~tN~%p!>8D~g1nGnLEGX2$hk1HXrP(M+nRdZ_aId zkRaed!BdupE$m&DBAVN#%&;esl;c_a{Xb9vVX_!EvPJS@^tFQoE_^`n50nbWNoI$1s_#mYq%C28L zzcJ^(1Pi{CJh8nu&_8+x;V*{>;2T^h8cccZkUlw$OFO1d3ufg2$8#8uL^uvGg99qb z`<%4+WYRvrq}t+|zQxMFTj9|Zb9-k&ezNt;#{Q5>`;w0bqK$z(Gtk6NILD2YxvP&fo!AhHW+WJ$CcK8wy^lM0dEhtA5 zoKy5MiU+#;lEx<-dgYLgHcR6dvlq>|5J=O+JTpoWpymk|(%?0KF2B@zxH?I3!SNqy z{c%_e>>L8ZjD3R1UHxj(^4El{TiyOvhcI@L1^R!cH8NrZQuE3RNvA*=FEnv5+MwYb zkZ(L>8r|}~64d<#Dz3+LY!BXM*4$1d;iinRd>Q+(;+sIz6$T9oNddpbP+_rnuE<7R z1ON9W%1mQj;4jw3@c!pyEu6fx{dUY4j*$6NOVV5s_m#f=#-$z~$shk-TzT$(@mOky zDqZtcDmzZ(s3q)B)J&G^yOOlz=^q+2n0LPJtgb5^iurlZmtO_qlz$^QYrsxy;L+;> zHYDr#D`G0{v6q}~icCg-_SkAm`|N+dyM+2yLHNdjw^?`)ulz~jUyn7Zpqz&iC47o7EYMt)9C-3C-^$7IYnY<#uAW1xGRNhjB%O1hzJbno;NOz6n z-BUKzqHw$^BvU9Jo|Y{BE)FMu9Qq~}?K1S$T8>y?gh(7DaKPIhuyUhPNJ@y~-8+k> zgTP-y%)FJz<#+~YZudS{!Dv}(jtA&?e0~+tlT55Du^=-vi;qx>IxLVE>gi7~w+e#Y z*rX-9Om%sEK0F5w!_6;vQ_j;>IeV9$cViK5J^F#I&Hi2^SG^{Ih{^{&sUcb3yYmx2 zTZ&6ox>hKa`C$o4(a(cX^u@5|k=eIstBBM7(M}>MI4i>C{%~FtxHdlZHgLupAgu;f z`d%L1PA8(T&ynOiop%z4{DEGe8PS)1%TnDQ?$G$b(6W>FltDIp8CdJ@RZ7Wav#3b? zGRgq*6=82#S6^~j(VwpACP{Q);yc4q${_Y>Dp#cgjlO z`#OiL#}>d>gCQ7qA;t)rntCg*euf;?bhKQyAO3w7(*L3$&8_uxVS_D^C&mq zgrfDs=*V$jyyRU`4NVV~wIuSIkLbF&KJNK!8d{g)DCbS_o&0Rm9W(CG>)cPiYxqR_ zt_g+p9Wf;45WTWAeiKY_4l(E8ZcS{yeLVGR3LV2+Uq9d7x0CO$w_S>5P`~2megYnG zR?B$0MmapqXZC6LUN|1lTK6&hqEy-{-E+Gl;TpBoW5gL+_}$lQV64Z)+q?afna@}j zl#rd62ier`XP2!*3(Srs<1IulW-lkAfXR zIqe5$MyjqQO^Dp>r1uU%YM+%JG5BO1cb?9V)&YIgPv-|82W}9GytOlJH7)1_lRI{t zqACNFSppa)FtFlXgFSCN` zL?m?S)$ryX?c!35)bwNlib4nyI#L?*Gmbv;@dt{~sZw#gk@UZ;s&Wl*UQ0bE?6f`{ z#_79KmAe;1xV2R9s3kVG`=)d>q%AY3?3c(T+PdSpG6e9CjX=Oh?HpoLLsGHJ6m?pp zes*3-CX&qTL2P-=UZOlSJi>G8WlTYe!zrFz9*^-FQ)&5=!n|)qz+#$e1Y}jU8UN<6 zAz!5N_0Ji{$Ai(%mExOBA4I7swCS-Ru!QnPo)A6L3Q9F-c$)b!YDYZ(PwyR6QMoO2 z%Kn@?>AQM#QKK=j2s{WfTee03Pj?J!YkK3;qCCeerR^a zMEjiLQB$#6l+zn=KI0)!LzOnG^P5awKULXVY~882KHl$b9CA_q>Dt<{H1|`xQO!?d zDS^oqM0^0%tec;u9_+~`agRzROhy@Ho(r-49TXPZ*ZQ04>w2xO;{`mUi>-TQtY`)_ z$t9mow3{-Ri5T!QU@g7b()3H0c>C0yicePJEGy{}+LBdtWu5SFYq*F}6*hVUsUz918DHD7leZ-sW{jZ~?)>H6 zIi7S;Hz+miou|`P40g*oH)Ly0kvU&Ch#9eEKGK+Q6BX)BS|YD};=?DO0R=Y+M$`Ob zNY*#_ONFy($MH>Tc>nqCbOXBF7sF>R+z_&iSjsAo8%6~5?lFut9MG%NdiYNCF~#OI zJ-&qKfA5YODIaTM0?;^zi%0?hL&G+QU|(_he@T_9p1yFBedmGF)izyTAEu4rZx&D4K;3TA(xO>@8L z{?^8)h}46u*5Z3$pNPfEZNauiIkYb=fFe~*u{0DE2)>)7h!{9Ko8a&I1EiU+GOkv0?Jq z=1(vw?eR8e7oUF+5>EC#`rKdPmO5bjD*POP+Q2+A1Ki~?GmjVaSwTwXmkZs~sO9UY z+70!;!tqQF%m_~nxwvcmC|Wt!m4i4qZXoWde&UuzpF&-_Qte!ogodjK)PrSCKkpf- zzODp*F(xAO=QkT#$|hlN^5MhGO$Wa7#L&i z6J?X^DM-O$_RC(YoE&`3%zjOeUA{}cA>-hMd(ClEjHILa_l7VPE}=))9^F>&stSMf zneVp*k;fbYSkT>73-9=gBpi84XqG~>)lJ;N$8(*#s@m*UC6~lMaOm%4YmlWi+z}8d@Io|26U_(3(qp4zG{KlFe5|uDc+E=4AYbDuwO-jf(p7n_QLb6LJ?wIQi_ywR7mfy6aQ$Ypx$axWY67)7)X^9L z?$p;OU?1!ON{;wtof56>-}Z*gx5K+ax!-SGcHKjat$;$Zu?tH=xS7EEY%z1 zB@_-KciGqM6<9MibC*n>i zLm|V_tXyg2v9niIWfhB=2_iFsAgzjEwvCuS9#MbCHQV-WQw}HyeG$_wj6j!GN&;!p znLThx-O+5pLJ7V{K+iTcb+higL=^n{V3z_4&eKz%r?9$@uv^2Ss`{LL^K|v^V38h5 zrb8~VE$L1y*SNSn0g{vDjn-6qj#glBLl2Fo)u-36VDS>no+!GX^r0dM+`W?6K9!!F z3^WO)i%TE}{t~?MV(MKZ?h*t|-4M8P0Wi-bfgj#~P450ovNf2SsPZ-j#k=@Dv@XeY zueF3GMTtzHz*apL@+}-rYuks?D$Xn!0S1Us9iR6~YCkVH?0J3r2)z;SP@G&-kV`c!i9#$$oP-Vh|2^mw?Swr8q96q&)TJ}B9YAju{?xttTQ_#cd&n#~ImbCQg}67>NaG@Cn?ShTA*Rb%r;ap_ zq{hOlG~(_MXTX$&HySHvI>p^TF{_YwK0_p)Vn}xg()I8AzQ#%8Qh|J@@%d{lN+n=d zdxI++MAG@RYf;k2ODK5idlzx3M|bSw)T|;J($OQi@CB;gMIu|pyuh~R#FIB#EKD(h z(&|d6fbOJfam{DmvhTi=hx=&0kOqP><7(X)Klvbbp(YF z%n%_sF0GG}ehc>Rq?4s=3-`j-%Y|`9SE-z5@~|}JRaN<^jv|0YmE#PboYBzTH6Y65fPAGI+Ad@dTedhoaEFA?wp*WBzN?JR`*T+CS38COnm=8sdIcsEJy zbo2OP{IS`H9{*3@j}Ek|J^ao@m9Rxnj>f+0-^&(D#pS zwOMY0$ThVT54fohSDHs4U`zuUpbGF01o(3;PimM?iI`7y_KsgHMG+G9FxOrZzbIh_ zcn&Qu*DrSHCu7b~Qz6Er#B7G*HC6ihV_Qmn-h$8zR*HcWB>wux;rH)InP?E%Zqmdi9uk*Rlf_fB2pAdgzcDhVaFGN;{)J;07&9u8~Dcv%FwH~03ie2 z^3VZ{Y#pg+q(D8h*}l=^PAeIyNrd~FMHLUxvCxE_`B)(&-Usr0K_B4f1TgVNh6JjL z36+FE>O%ubRAf-0R$HtGp!QSdvy(S>SXM6Ex$~J63O{2Xdqsu=Elk&yCv%xS_GE2^ zHWT0$^;m1kdxk`0KjZekxDFW+ZhiGk)h$EO`0f#-VY=LxGJn{2Y?Og&$#zj%pX~0D zSO>^%-SlX95l1z+!x@<+4LIll_x^k1cY?3#_rWhM-aP8LE-leh|B3=@M}|AVPA5d& zyEMok6HRBWx&$OHeL-a2TmlEy6(`AM8RYlm3>a@YCg&$UFAbkVzE)*JBKE>jP8fti zX{eS%i5|du+-dqBgp_qz&H{OdpGhUfrW}XVs`wZ_T;^=#Oe7)pyA1g73(vs;nAeqi zKqO7Hz5O)C8V$@oJl&VXdloVViX6*O??Hyl0m^?OUppNj29U420k550_Pm_J=K!yV z4yrwz5M6*!EOh1rTEFd*tX2 zMKBr==v6#eEQF|V&Lv9CJpk-7KxPcyz34%X-n)qrW%@A}iMgx>qbxC6V9FCaJ7xc3 z6>O*l+E7Os`06&ZC>=DInm8{0DDb7CS0hSF-0fegLyXpDY^n#!X;YMd*!Wj`|G!$; zN5L;n$VEXw01Oad1PFvlQM~#6v*LF!3J}(aeBFqoJVged0K!fHq1V5$0Vlz0zj3%z z?;d^$C3`OUpJ?7tELmCnRTd9Jm-%^hmRTHx!BFcS6p_%~@O1&z_mIWIbmA_L{k^Gt zFL9KXdlJw(&S`qIS+8>Hkx?h1pm^fh588`QjDMVwelUO+5a1)A@_F=)e zFI`eRKX6;Pbi1uMdmJErMRn#4MDmdW_(_oh0%xoMKmZmJ;|C`Q82fEhT^2Tk41<3e zJ#naop=~8Iy+3LvqU`r0DhyVrcKR9jk3CHPcv(wTD0L)G_7rjSGqs!ywdes0mj^rL z=6#)vAAKxr>Oy*^#wwopJ_va&>IeRh*=(`c&Z1nDB>zG`zomND!BD3Wbi5!gA9BY z!RCbz8vTvEe}Jm;Po7IuFdmAna!mp*&aX+Vju@ z3ArTB^}gvX`d;@H8X8>643E)E!_-Ya1su6e* z0fyIZs6rPUG6<=_c^zcvsZDz8@te9afJ;@BU1gwmiw#Zi!gd7pWKAA=&I19w!8R87 zx5l4+a9KxN>U1(f`v`cSc+MFjPyBRs!3Y#gv*kOK5)e@uga%v?A;sV*^t*WUv(O-> z(B9R6D8bO;l&dh(+u~Ma7_bOi{v;em!Tsb-ROMTwQ(5>Ld6!{8z3M`33Tjy+F|C$V zXu$KuaHwIBEutHI?({pw5mn8W*^ZE{770@Ru|ONP`1ZA_4%xhXDb&bN7eOu<(ZNK~AA1o(B~Jp=E=iaantNNfw`+ z3M`+6jnAESVvCgkO)p-cMyWEE0jO{s02!~-3G>$nk}Bl3H-`S~jhXrP=K6$nAdwd1 zM{d+WCmuO*?|nGa#5Nc{S5{vj+RW1G#;I}7Mm

      {_59#xkBYjb4kDBmEkvr?+RsJ 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≷P(v+t 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%0Dee+2)L*j8UXVJZl%DC9YW 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

      |# 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ΞSh^9@Y8>jkGso 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

      $JdlW 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 !b6t>fn<#g`t>LF2%N}x;CAw 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 K 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%0A^%$O;Q=FFM0t)Z7Co7noFGGS0j z|C2p28g0uHp-BwQOtv!8adi_f-ZEs>e}35-5Bja#MCd6;mRu)R;TU;pNSVS!I(AH%THnkzs@xrXrO8@FS6ACG}UFJ1yB0rAaoj&<VuoJjYZF8U?JFVhHn(N{uLE%Hz^C#M6yykfTu24Z#Rhud)yNj_E^e^KZ#)eexg6HiKC0K zQdO3^2$V0Hge{yb33Ey)k)gp5i{5bu7ad6=fMrJ-(yCK;>$q#Q0KOUp=Qn1KzS zRHSzW+Rq{v=(35#WlxxKPx9=uta#yNB6?8{BfGJUth8%^)C|cqk)z6%xGgApBuV_J z){c3ciXQ)<2dhB#$)@DcDO1{JN}#hhaM?&;^ukRa#iS86kpxWNdJw~8cl5Ah!{zz5h<`eiEK|d+tV^aIqzAvfG0{KxUi9e^d;saBR<|(9P|~f ziq&xp7vqt-ei^Nl`iWFIp2MvdDFrd#FiK)Lri^JYMLQTujYixg5m^QWk?n~hE+z8I z4vlDu#QTu(top2JLUWjrGs&OAIzg|xY^)*ahApH}(vs}|Wv!7R=Rfd4(?eHO+9$>KCi9prv}zlbE0IwsDUHWUM!8mig|n3eMGR0m=GdcXM3%qO z#;?%guBcQcBH1O*dK$H?;UJH!Cn2w)LQIm;rm)2SD!fZpR2zdISjHF{Bauk4E0OJD zxV}Pxo_@8G4gl@Azcy)yOaateN6u40M$wQ-I0vnscxhp=lyNPik`?(}DqE7($~L$W zGnbIKDMA76CZ$cdtLTF^#cdjc#qHl}br$ zP^y8zpa6OzNyU_l)U2CNS))lD)(u?pQ<(N_LxC^;a5F=^Owy@0y(#R9H_)M4)(Qp5 zBym=(6qK|zZ%nW^v&@eF(Po^a<7Xl)%Qkgdj(^e$G1$;0Pje;>kz5KTw4(7-jN~$L zgyfFI5f8LW(&Z+C*CZ{YAWOPj5@?V4CoJIq+DX`BIOkrN)y7!|u47_C0V~GG@p#8^ zU(${ok`iPzbPCzLPX4cB@*>8t8yA$Nf9+K8z^KykYps`I@KrA zj!9`eB`!osyh}6_rEXIHlpLjK3`*KFK{`nS3>2*A7)neh5qQvn3n|1m ziD%}^pst~3!XsBAV)43iXZ(^OM@t{<+sDg`)0p5#2{8msu)m$CBRZ30t~5be>1i(! zbgX04IY{C~FKTM(`^TOncbq=(0eQ+3UorTFR^RgERv%LdC|gX?+Tylpn0Mgw5s23qplQ zsL~dZ1KF|QNst{6%m5K4Ax@D0j94IEbUdMdD464*G{QupMFn6+t5?uD)f`@+|4Cs?sFVj*h7HEb+3ALGRml|w zNMilkPHBaytsuyhUn<>Dt*H+YHlFbGQ9d!2B^u2)@Ex?MT%=qF0P3C->YgZWjjF7X z^Ff6g!WGC3A{O!)7fOTi^&d@a-$W?fNdz6VsKd{=17*ZRmPjJ^v6cOjWMY^Z9o0=J_@nErk5J@8-t;0QPJ}(wgGA7SKA0p+sESJdLrW%+ zaGl)?P#jKh!=oJva7@INHAhmhghq&sQ>a5m&P2;m$vFaL6!sy=fDW$ZPzDZJV-m)Zyx!%+9a}Ua zJWOR3PQ+fOgzstpg=FBvmW(FHkkhH0VsnrhU0Q}y*rA5`qv&!A;gd_!TnL}LEL zy|Kha`qfFKn`TPHl=Kxp*voLH(|tt?P{Bw(+Ju%ZM^{e7+K@w*z=J!`L#lA2l+eWR zL0%~e#c+BgPWVGyiswXhV^G*&I=$O|s7e(`1U;_iRtyS$C?d4D!_R!Ce9lBc+$Kw$ z<7e6n$8Bb;)QEKXnNv`XITRfV>6N4ujqmv$ajMD{erIudWO)9By`U#wl}d9kUw{O| zKgbtQ?Bsq*rv*iX!;#9UoL^BY;m?c%Fq*`GQi(py;Ehg1a$ZYNS!G}Z1qCta>HWjg z&C8B)qdi>zsE6`{J2Gi_(k4xqu}^0z79%) z=YF&U8O^AfZjI%1Pi1z`+k_3Etb+(;iTG_Nhq7Q-Z(0wA8BvW@X&uqdpu8o{ru5%bT49H+HIg_9t(J9!!K^XVQ!J zUkQgVqhn#;DnVn$Jl{rW;VxM_UcVg&|QqqeK1Fg3@J%; zM{l10n*qWKH|8b=%IIJ^>Pduapri;l)K=xJ46WFw7M0FFbO-&lmqf6i=)LKUzSHo< zmBjjoaA{{v-3VT0={5~oeJzQ>QI3g;2U5lg4A}#mx+$3k1@6TPzLEr*PDBj8s`4NS zRp8yMs2d7ZPMkHU)R}~2*xQ+3cZb}#`O(bnf)Wek87D?dY z7(Ng`BtsVnMXI8N)JjCK7}_?~9Hxv_c#RHQNNY;0=$*-gIq++95Cn+`YRI9)mbl8x zwGq_-UZ$PR-3cb>P=*?&PR|72-{$V2#6y*&-K4m~wQ|R`^g~>bD2XJFR3%Y@*$7uY zOa4NMJRszY&ICH_p$@T>NfZR*r3Ct9Zj>CbwK7M~MsU#>WZ+K3J7i{NniD}^b7YP7u5xB17^;1Wq8g+qeOwqOHwprB(YY*Wm`Nl8S1^oP@uE=yqlu;kza zdAj5c^-RpV#24vEJWPrN-_Se&8Qv@~mketsu>=wS!@WTdcGkl$O6iWiB$I}pxt&Vh zDC`jWn2xkl5$|W?-btJ^XWeY!M`Q<;X~hMdP)(50I}Gu@%<)=T@OCnB75(C1p6aKP z1PjsMORWQbB674yp*%Dy_{thO$y!vJ(}qT6DGqIY)hHwfZ{SXyA^Qi%%EW4^h%DL0 z4NsRbaLxoluT;i81zt_tBDU`g}?OM3Fql!d+mR-|-?1CvB68%=+`gHZlMfaRx1 zVr*KT(?m#VT!o)LSh6DpS*=A~e~BczqQsyX5^j)&cY)1l0F^WxN#2$JbCmevL;&-7 zZZpUkvm?`1!lsTn$XP+8(bsZ}0+P`XgRl^TuNk#znU+LLs-zn0N3#ZqK9HZA$^&Jf z67!`_FKX|`;I4lhj^W5gQAy5HaE_K)#wzDBy1tH#iiJL>gb1ZhIJkq?HFJQJp-|8- zH?r{{+6xJTF*hFyKIm?6#Z_aFGYbW$%l7R_%y58I3?NB_hNOnhDNkXzCK9(T>d5m} zpzv6vLz>DgSwmyBKJuA*v{dYJP=sbl%jELm4%|{vss(}gLL57IzUIP#mZhc z#XF(pl;X>c8Z}VhAV}XXl?tbgdNOgTHBKB?GqW|65Ds9I#GN=%lF*kF2_VV-EKsmt z@S1H@K=%2t5gL&MS&Rkt4CYfhp~#Ix%dXYSW#~!ljGMAxW5{WsEH+K#wPhrXAvuvT z$Pq`$M9Id4%Ed84U*tg_iU?T;mNW&6*x4sCawE3{^=jOvmc&HU%MzC-Y|{jkCNLJChc?;>2hdp{+r4!+vnX;x>PL@5qtFbrWUFF?CI}oPKd& zNe#GTxTAyb$8bU^TH1IblSG7?auV5KANF-qM7T?Q)A54;&2!dAHe|SNu-q@A11cq~ zq%_CWvGsL`+=)L0Z3D%Br-VI2CA7eJb8I+8ug~L^L|^R;n%^@@e0M3*uOk^QK7ct* zh$wXV2N*&LVIY=7Vud&;c}+OqM7skTg3cJG1CZrVmJ}-N=b2+`?#aTrc#J>y0l`GGd(?pR=v{!4os+6{-KPj&-{98L|Q3pGq1iVJt#5Py~5>|~88c9`r z%2wB)OrR$CP#yRb{K^S@w;u}1I})l(MB+Y$ze-MolKYYhXN^-yQ5PpS51$%`=6BD7 ztjC0(#{{vbM1jWzYw^JK(fbNk5IKYzlp{B1CbauG&*!8B)!#(OgM}t}JH3BH|v71Euf!cT#r5PJB1ZT57v}a;B7OKSnSI#W?`EQ`kq*XU=)U1loL0*XMgYdE!Zk z4Nk>tE>DVxql0xTN|jFpXG_E~_b}y$J*SudT}q~;a4LLxRyxi{=y%$6To$$IziH44 zg-%Z&FC#ch6!?RW0SW{~mUu(SZoSczG)%;c5AO%Sj6>G z==((Mt;m(bbx4Pz>|;_B2;$2a&z;GHD)Fi0n9pTKk2MXl5K^-xxpe>1k#k4xpUX7D&)79%*^*uR$1Q19ir6AD{HN9bYQlH(5<2|(Z{1ddToJ}Y+x6hsap3-iV>_2_ zUAr|ws)VO69>J0(=Yix0vtqnYIhWZ+_t~5;>EcXo|?YQ6MnpRiPox6DJ1m=!ATy8kw2ZNgi2X`RE*w5+8 zglw=M^ouI>fgC8Z9zBC#Gh+Xzj~`#_3iqWfDEYiX_BDYZJs0$-L;C}Xwy(N$YSXF8 zvSAB0{Uma(Du>#+$038>NvAKw@>TguwfUL=sK^!jYr*G}^5za)307ps{8|>KdsC%Em*SC@XQcgp9N6 zrwGwWr^=r~8%L`sD}-{K(x}vBw^K zP*Uv7zQ|LvDjxNdXA2aBnBfPL&hciTY`QtBoi(k>hME8^rK&4=N-UF1yUH0W!gC5* zryPTFx^a}CNu$;1nr)8EMyhkY*`_8=|Je=K88x)()JTac2cj?W zm5U*+VFv;a+Q|qKJ2Aqv zo6#M5*!jnudWa?HJBv8er3$iAHLuPajB|YADBP!HedZN9=i8lzrsZC61HrVL8$hEZ?KeyQRLJ?dWZZ zAZzkGb+%vuhktDUa0wcNB1LGMo?A}{ae}xZC!3nHS4gYzhn{dlr8Bao!lp}G2G(T= zq8ffPW2Tfag51%V<#7L^bEMljf{zE82Qe}-Q*U^8kmFHgFa)~EWo9sgsz?P>Nb=S| zF1V3t%!nJ1a$GmaA-U?AxKg!{`gJ=UQ2TRDm=AyoVNX;3} zSVlCKF+C2wuq$Jl)T97N5as>jK?DKI$A}l3C{jdDEuvUSk~pjy1@0us!V{kgk`IPi z2RwO$hsrYI4~Z<$H2$Cr3+S>9g(U<@7Lmr8JcyrxbT1)^BZ#-WR*({IWP}=tS6#?Q zCT!@dh6;KA1~#5SkZI(`h6jNfQcxGQf54Aw|G4Bppf*38xNjh$JV-YNxu$s>hKU2o zpMIWrvA9VjZFQ?#Qv7tkcreRu8tKR15;Dg2Y@sV#)5xrThLsIs16Im36ZiMJbaK;BFz#Y6DfL2i6*5bh}o-P=R%s7E^#AVq#Qc1 zSCFN0Em9pE;o~BwDWJ-1bLWv^mkuJs6e3K0(Qqm!eK<8|6vLgV?PNXGXAP%X)?4|> z&(Q*EkamExc&+?LlhSd!f>!3BXZ;;V6(YchBG*QD6=sfNG7kaLV;&aENJb}uz<;Rh zGaIXnI9BQsnmCqHb5uw;HaL)F{v*9yTT=aI7T#oP)6mDM$A< zNYj64T5;byS2wl+VfkA4ALszrz=&uXNk2}q^C>X2dfAFXDb^6 z>t36!;wVSOEM_^22%c=jM3l(*!*#(@7OetImjtGXAxYcW?vlz`eatTO<@1i&GD2)j z16G-)6|i@@Ez5FapOtx+oJ$kBCJ%?42ifYHR_j_G{xE9%_Mz#dhLdMh!x^$Ih`HEp zE^E@Ive)2-H)!jPm=>fjdXfoanoSoh?RFp>cUWIy5)awQZg-V|cWIi0D{q6lB9$&k z_cYDvc)O-1--DFR(M=Z}TSwEARNuXiqcj^PHJxUPhA;>cRi#fYDOZyk{9Ho~Zm28N z^_$AcH$wG)(9F|0j~idK6By}|jgYCN2xX4wPm4$(6$v)VA9-oR27IG9;)uC4F%AKLJ`Ml_o)Z)C7%g&&BXzDN-5*q9uwh$xMk0O! zF~EWcrR1whEh5@sQv7V~oP{6C11Ac~K28Ojc&jEJZ*neT=e`9UUI#4jAv;up(Kbv! zjE$eF!v74$6X}A}@&gDbqGx)|gUF%1v~U%l0}3|{8(gs>@Xu+cA*vE$77c>)2m%y2 zVvfvCA;`*De5*NduPXBHRQ&EDX0RZdg(7}}D-vl#kjC@>9Ox(FttN7VrkW5In~*NT&=HaFA|^+uu#Oe&5h?s{+&0bs$}c0n>>pAu z%y!6=OiLOJGUgaK`I#l{1o`X+WTF-5E*TP|fFq=6h}$}Km|EeB@wphL6XlM3!ei4_mLU!i6S@?An(YY;t8Kl@83@2Ak|SC znvkXzvNEjX4~K*gCoWo~t0WU5H^Jj9E#hdHX55%bIGM@+$ju4w5iH~(NCFe34x)t6 z;azq^F`_fFJYzS=VGK|pK5(LOA|=x1>j5L>F%J+j>0*((!5k5r6eFAvy%3Kn z9gO_+;}>6ouP9?y6clch2gyQ%_zXfFsG$n~3a2Wl0!eODBOKGo8193D3i~uvBJAZ< z%)uOD$TSeNK6z9l6p#FvAvP-l8W^y2_)WF0jOGrKy$sSx+tE5gLoAWZM^i#M;ekXa zqK2%YhBk-++c7q?!6@59@NncaK4Y7-iT>2?1;b_PKuxhK;>-|Iy(%LC4-O~NGyKA@ zG%o2vtrXl~MJbs|6`S%Orl&uv%GO+O(*o2g38FwBvpv9t9NOV^l93|nu`3`ZZw$>k zo@yZO=&7=*YEmy;T#jA1k{}l3J|e`QKyX3)3EhaKM%jWY%q3To;xT(PDGrhi_o!Q< zDI;iu4y*B1o*`M8@EN|LR|AzmlnFNfhxAD~;^|Q5hn6ABvWzKcZdz-~HS@7Ol!ZtD zuS6_{9lQf#C?-OG$0lDBL&0^^!W8_>WQ^hrKgk<+@^E54z3f@L0_o<0=Gx0yC8A76v`^a$c+ ztn&U8_B^nJRfnWO^}|#D!BepfME^k^#E~F2H6hIH!K8s34%9#qc39cs9DI`?$O~?Y zVocbyC<5eMX3yrjDyQ1iGZ12FaY7)VFlSoyAjWh|?afK$l^+++D%_CWup!})WE(CJ z*9wMAZ8Gz^lw*-{(}olbiF6|WpaF6p>$FAJE_NK$daGNpenR-V6}xA z(Cw-4?`q)ZYKAsatL8rKXct>H$olK4F7{#xra%#*%l?6Nl$Uj`s`U^8A^Xv8T>=;s zf@-vkAguR1BvpM1u2hi%7-F}GYO_j&WFs6ztXQ>m@y<->gDAuyKZ*_1=-1)i_98@9 zAug8))#EUU1vVN;Ypah>&nzCL7HY{sVTeTVIH*OVK|k|}b2DvxFTyxE&p0!0AO?oq zn2H_2RUg}{ZvUZ6b!e;q8m}V45Xi#tB6H@1 z?l)REWw{2TlXKP}s?Q`gby`lwi(}&&5~mu{&vdTU)}SU{4Ki;5^42EelZ=6IQ3Exe zbcJoo6AR{B*KvdY(lB-I^WL`9U@}b_DEN>w;1P_7|V@HW7ODl1g z!D3jecGorNc!x7$d!yk|0g`27kvtK0e4h$+^zUl!^BbT>8&Yi-%Yh%~SaG!(BQD8f znL!w0OBt|%rX>|>;5Z=~d3hfiCnm5UvZb7}=T#jyJmluC66hk%l9uO!*uGOHb!r=Q zD#C1zL$=r@nnWfzg@I!OAJ~Pd)k(HY2cH%&o}y-+tf3vJp$Xr0BWO+-l!0)K*$IDn z{CciQBQmsJ%1yCZCAsJSyl#-%?Bu@9dp^5kR z+@M&^ilS#>;~q#(Y;8kDlR1N2d$dns`e@jkl23L>g_ zXdqSv$`W=U2-mP%nj@|uD#n``k^w4akJ$F8NOUSdDD$RRXmmB=EZ5;L@*AtWLU|)X zs;2_LA1A(OMk-VnED^%I-od=oK^)%Ul3yDqye%K{C%D=)KSbpkqs28mq>;)E$S_z) zn>0%Q4;AYVfFA=yRab%Jj z+;%EBtKH7SzQ=f|r748DBbb6Wm*jl1bl&+uDmr309sB*hahnju1YRs)5Q1&jyO&j*yVHWcr%6%$su0$RWJb#OUC9*`` z{T)tSA5O59nNA{loGAzb>EL?qH$CzNY4Q)EW)wzEu>{T~|7Z!q zI_ZjJ6ap;XcR?jlay`Ewa45DDqJzl67ODUSbRc?61MS5-(>R`wUBW4IKF~WaBA9u1 zMS8(B>64ZYl)Bm54Z;(7oTmD`bL&DI3}4fJeo-A=e9uXpztc0ed4~YVMz+WM|?68wiS zp~8RK5Mm=JP2j(X2NOm^=xiB6jSGu8TL==NwU5!TAsndC7&B!jL%Mwb2{R_hkHw0~ z{AUd3N|wz2t^D`#rqH28iy8&_?qAY>>Rh5b3N`9WcSWBHB_|FmI&|rzdi@GEtXQ!3 z{>_Wm^`E$ZSjh?P_LZEiD*tpOw0jipS7FkWO+#pG8q2UOp;@%zjR+ zh?}(CkmSWdT^^|MfW zGf6oBdpV5p79GuVJhqt2k2Yq3{}<-Xnx)XogWI1T0#`7CQy*wB*sfFjueG`=Sn7xa2XDv5xHPmTF53ud0FLa#VD?8 z?dIP=g?25l^@O5Lb`Ia0r~HZI(%l7u@SvS zWqWqdKKwJ05vgO^ij>b?fmhM5lRggE*pia|Q@5>P2uCpZYRA0knkN+*y?=igZO=Yp z-#o_^g`SpN_qjcjE_`!mET>1U1^OCzjInJI4zaV(~WYV zQ?(^P>>b*T8}~u6Lb2^%zhp#9P_q}G(aVEXyRE;$eeuEBM(?n_e3IgDkGwSA4Phw# zlFTAIHAq3!rNM(hd$y!mCS2q(d{nq(MoJ|6yWhtdxKDluZ_^!c8a+3O@>=r=`kE>n zGaSWTgc|VJiAkuKU=v!iXlT*yR}Fe5NF7S1-TUNTI3^Kb4I(+ne(JtE&tmo}L!spD zZ?xU>@(U~H0NwU$%5;!)Yhk=iH%s$Lq;$;wdCY(Ke{?uhj*Zr@_RmuDIH;e@XN;gB zNrfw$r{cdvjPf+5zWto!cAT)RsOBGu^>Fen_?-)1-igzhfA^<8GhTqEgQ?D5&DJO8 zr!(xA$n`wg1I#G$lP&& z65h{T?CkT`s1N}4xl?ibA|};{0xqG5%U*viUNzI_?y@%G(M+GI=ejjyOOr4Ll!yLJ z=w)9;@k+B$O$Djk4`WGD*IQfcXMVr-+s|^?Ri#~0f)pDb((u$<`YgFdQ8j7C`lF>j zu|+fP6pDrewmgmj4yqu~0SK<*!i%)BEhN2ajOXSkj##}(*IbZhuyscwpN;B%(~{-P z;bByIiX1h?3*uRmvo*9n2wTPG&GVH|+iExNw%Z;+5 z&GcipWsx|E3DD*|}sQ zsn=#0q)TMkB_Iv7#@QyRbLp89>a{e6_WL-M2J|Asyd1wLKdm;`DaFytqp64()RyoD z^37lT5FF~K@bwWYHJ1k2E3%WT$w$uD=07z){|A2l6!gVzR5OF1WDoRrMcR&@na;)q z!d-M&1N(8Uu*9=35J?DoOUVD}K@4A@oR`pHxcn40C;idv*}h}VOQm{1vS>YD1w-vvEH} z{VFQfVd`Z4I(E+-reo`MLAbUdMPBsubcQ0#hJlX-r&4ANj{;3pj#^ww6*!(6RbUzY z1AUAESdk|KH!keWJ8bHoQ|Hg4 zG@rdL!pbn!Z_Jc@`a^B4l8bc03;EvorHfm`^j-H=lvQekFk!}||DmuoIkUZt!aMo> z^w30I?$u!}giy%OG(t z>UfPCC?a%lMdPx?w_b30)7!dsrrWhux6qg|Kd(FsrCwV%j#j3Uef|Y-AS=X2aU-pA zmLH<~qgU2Qkar~l08vf;&TKXpK~P%sB3b#d;YeU4m|nuAS1JzOF6psN~?FX zbmhC_pYQo+=iWUyLp(}Kkk(rh6S2c3o-+;h3~_avHSO;>ZxVj!7M}$^^+Upv`z6h# zupj%joAs%nYqUhK3VX=i(wEo|Ta|@pi`-Nwo%KLs$LHO7=qbba``bh9&yIPD+8z!G z-UM&g|4t=*O&U&bZb+VL*I4xaRYbFXiYk1W5F*|2$5LGVxupV(jL*x7FX7DZqGJR1 z>*2~?m*=j!rwpFI9xwXCm3=YiPQ$r}8>5Nb)wMDow^k;s;a12_FJt>j9F2F72}iTD zC-9k;EmQr&_3_`%u+zbR%eM+t%iWb~y5m)G&lPehGjdLg-YUh?$lp9eCTIBj!ad`Kcr4S0{&N?)$r5^$C4^H5c2*dJRdU@y(n#SIO{$5E@&4FDeoO#b;OjwOY! zV5NN>K%xI}ecz#W2}x4M@Tn2J=c41v5|~;4o-#a;{YH#+ly`@ff%+Ger!0{FP?LID zbwR_IV+Zve4nL+K7acHaG1HN5Ri&2!yR&HWlLtK?4gT9`FP{)3*B6*A7{U-}I#8?` z4G%HDVpm=cexsx&qZ2Iqn08+>_bLg2532rk(=oas`-&0ja;OG-OT4m)kSBRAIQl`% zT5lvC_-O5K$P(tMLvO~QDTCA|DhSId0XtK|Ko;Od4X~v*%`gS4j&)#AS;PwL`H(9( z7X(Xg_PP!RzHRzVrOHIiA#;R~-)qBvj4*7rpd%XC*qB=_rPCD&>cR;H)kxfBTG`kn zK;(YHY$J+MBjKFXxB>ZW@QM9U1|4m{LUDPUtpCuSAVu@#s7Ob6^g0{e!i;^oH_iHR z%oR&4uS@Je8TrtknBMJ}3rf0XrQpA5v7CjRyRLEgWx%@bV?U548WhJ-NED>RzF7v` z?})fui!3-tz66o)fnF?v$Qa?VW0-cRp|=ZHyj9^Z?}bTMrL5#r!Z44JUP9qZwO+H= zBCEBDu6Qs&nUrV6<$JzEUFb_$>1ZO<2N)F@y@5HOa-xX>`*1CIC^2mHFkX2j{!IZ& z>OIZ0lG;Sz$Kd`XX#%*TRf>(%*mG@1v5Y275x-FUGD(=q~OtoD|Zk(wDXvMJLCiiaNY z-38CC$aA_$h#)Q5(n8q~%3PO$6e)OCX8Y9W33 z%;>Z{!DWY${II4+E4hLm%O@Uu45Ro5t-2&M4J+WSFpViMv>)RXu+5{_D&Qp{s_G?l zsV`chf*W2!4W)|TAV_TxMI4F5!YXR5M_yBkRxINV-+tr;lvy?b@G{inWop7=fYq3T zOu?rZgercS$)z1xYNHa#z+CFmUx>yavQzo=x46_CS$Ld4>_y0zeF+V`#0v}n0)1#I zr0A?7i;Xls1@?bJV3(Mh#cUmc)&Ie~$GoMf*{tIM6%|>HOQ>D|U{G6Ts-I`_J0qKb zudEDSo05R5K!D%A(Ts9iOw%;XlIaxXMs@V z(P345b-6rOc|`aXS~!)%J`M_7L@_>k-y&7mj>()NiJBsTPrbbJ74$lYN(On{#R`V) z3NMig;0qyaC4x|dtoj*dN<%!C6A#^61fBkoWW8av_9hO-iC{?>0EzGJ4tZg$TA~C9i&y`pZ)y1U|{UH1dx++xVAg#3_zGo-o>8neS zY60;!@k!U)8WF`N}fl< zfEV@3n4=S2+iIBwygP9bHzFO0C+eJO3dHEj-u#4iuH(VXIu>a*F(M6mWEgLu?=ZUG z<>PMq!qvpO*N4hWqww;?y4CFPO0#Gb42$7EaGH!d{IaP3O!y3R0Hb2$n-yG!l??R& z8upclTrLZsuLNc$di^tjh^K73whd?=qR@XZXMmh3s<@s8_HMJ|J85HuT`8R^-K(b^ zw9zz292JcnfOb4Ck8jg6aa?tcfPs^qHnV}j%7N_CP8?418L=|Lt)AfHDoqp-)?^*% z3WTg1lTd1B`)m<3T zyVYSKT5>1O5r$4+!C+7wUu10tY%1<8Y=!#;qHAjwH+*hj=#ZU1V z_=Y#0w*Q^zcoq%VW&`Py{)Qby&GB`)r(-KoH0}SIsGg2rlr$i)%j90yBa!HSg1&Jx zWZyHAiPqVA0@NsBUxl0|o+mRN_tRE_f}S>)(p-)zO-&qK8d&BeXYW&|5V5*2BcCv$ z0zjPnO~*j??^+K278%|aoBZNf1ReO4jMAQTlNR1{3LB_0eZ<%iS5vHZLwXpvEn?MI zcd+_nXP!IgR5qaQJWPn$@GAbl=bbj8l|as&iF5R;3ZE$_=TV}*&#px9rYfLtv&+nE zw)PZu=tpxSPG?R0;xxMDW`cK&lN1k3hWJ3k@PZUiZKfw_9BKB&m2D{PYnxCG!1;nS zj+24A%lWq$sk|wU!X-|v;etW{pqK-wtP69flB%z}5Px9R29w{NpvhQ{U^K?0ZWCV{ z$;%|gW;KbXpS~To$sUVR#9^sk(5eO;>EPY`6AAW3K~gVbl;JVI3j84szK*)HQFcemmZ3$LvM}m=7CIf8rj{xq}|a=G)g> zc)!cztzxrnn7OpTzkmIFyS7NTL14DUYqnOq`i%}k7EB9Mi~{@t7~4ZT@&Ptc&5&DB zf9i#YDA?p-?U7e0-Mu9nr}90egYm}#QuJ`9)gcD0wJWaepD*Y}&(=Ulg0xFmZPo^| z1CXG1I_27KcEBe>;`1VRedjk7X7@~7S{PoIvfb=GOW4mY#ee(@99rK;2jGv=u?^<{ zo)DM@H(Pbo0k`I++!p@FOQ^rPZ2ybH;B&IK+*(HTY*vWf*axUxF10emEnMP|XbV44 zgVY~5Tv#|jULDQOf}H7(L46=1m*c@RNpDB=(F*K&%hY_6a=kxD|QQG7ECyKjp(DKm&w6Q?rlvrhKMA6Wu`WCP5Ac`N;YHXKvDx zkEBB{&Ik(5-XOopV4k&M?j4;6Bq9zM&n-W3;~R71CkAX^(zD*=0%H%*Pg7@RE(D2} zyXei6f9IBH$K$e(aCb*S?!F72M?iU#pw;C#TH~}_^Bgg|JNg|zZ3aY-?n*Ny1Ygjc zLg088Fd35_-mNpLXYfpVa`=C1n-a(|$Ez%s6W@5iJs&s`PGESZbc{D3c zLNA{X7CcTI=ua#@3xS@Ib#q_h9LGvHa zeWBz@o4qZw`#zAp!u!*M*s~|ku1uV6!kkEBFUVZcPQ*Sr{gq? ze`dTt&N9Pslao~Ope7z9XrK!cg|XEvpS3COrDtm8EYf@AO`{BHg;?TZ8i9Cw#zcNF7^ z_M(YJc#=jmqWMh5TQ6TJ2gW}rs~(mX$Ypy!92K{@m3~slUXvhKqVZp^DBf+CQ~ct{ zS$)s_O2kTPx;ZO>WWwJ7OqDpW`k(1Ho*i>8YTcH@&9RM4UHazjg9s-Na_u{)@SuG9 zgYmpUq(0hOu>B)<^fmw$3{isPe6x=KUwWG6;Xg88uTBrYaUC z66+H=ULHh@f|k?Jv~#zU`JNs({5MK-2vauwnNX+uuvN`oyvv8v&UnW0RQMcWs2bPz zy!~yyx&*A6`2}AE-*^ZXl{GAbDR7YQ#|)!efdnWr34u>z7+>&dyHlk_==M4ZIm%Rj z`CsTA)>QmUlfdGnq&w|dMar=?O-5;9m@`jg6(cEfl<+TvZv;Wo#5XX^hnS&Dv+=kvVhh0OK|!>f`^o4MNjQ&+@))Rr1g^^>^9^jk``6Z=D0GOG1r zio0~G?C>j!>(3^y9g*6JA@xjH&$cfTwMWJUdh8l>Jc|TDqPvJ!C}y_Rd(e2jSZB0l zYCbKa-&n2JMN)G;^sT73{$qxFsr$oiuv}cQP~mUIS_WOE9i4fx(e-$Sri(gx*ml8Y z;PwkPVo`DGKk8b-M$sfzMCQUwR{#BwD~&vf`T^HC((zo6JNd$H1*G$8G{l&JS78B2E6(ri!UWM8HX}Inu$~iBS|ItcWINo!nQW90G>vye2krb`b zA@GK%K#W54dwzETqqmwPkuCk-SRD5b#37H6^=&Z1hzYI=Yq2N!A${w95rk7sS3B@? z)h~Z-gCnE7S<3O{skfTROy;nh9~q=k@we* ziQeeX_=}@(lI^H5#Zs$g)nraH%3?4!YdtLR<_kEeZw{2=fhUAx&w1*ry2ghY;lC1# z9F}>7)>qk$zCrql1U#M^B0IK&m1T`A znk7eSrHOg-4_nWBNRB@;mMf8B>Hw^Ka^mlZ2I)IsAeP)=IOX$KV;F4-@~s-trhP%` zXP(Ry!ecBun~x6-tBAE*{!JY-$6XQsGtr=7|f_&C=hfUt~n8vA<~| znqQ!vlc;??WMwR3D(&+(PU4}S3BM|n$IP{t!;B$5Dtd00uwFGpDk+1uPL|eYgb5{V z$)@vHu5yr41^zD*LH3?mwdOD(acI`5*+TET#ot68YWeUntzAtePnq;<%}nZy0(C;P zO|v+qn_&5C3wm(k_Kw|o~;#c1qxNs65TEc z$Ln&d*kfKI$HAJ3Yh4SEN4e9-eQRcsBNmi!);1@7IWdaVPyx$E(y#`RBds=QQjpmR$2{VlNYqwRLMbTzm~tI z%vt(Sv+~HN1u_gp6ByWZ%Fxn&>aKKW?pl(R=wx7jB2R*U%2lvQ^M?OF^fr?Ny>aHo zJ4E_vLb|f5k~R^HXPRzFBBF@cWG+p{Ms3>sa$dO!6MPN7Ux{KEnZUwzNt1#8;^TWxEik<>2*(6`Dh;(B`; zO=Ko`R6gY~Hh3^?VS(HZdI6d6m z2p7I3kWYiP_0x_*Rf7D|Wux}7ub-Xq@U|K|gJ7SN{8&S!P-a@|dN|o6byY2Ht+Sqfae>?@mTP`O)zMLZZuNf*g##+dFun`Xmh3 zF8km^JNoKYEk$+?u^8If77Y|?0$j+6vHiFAM+H~lG`-JP^{ zSvuUbjcAwtBny1jS~z&yf5w(!i`5d0DCj)Zj+8qI@xf-ERIjRm0s#iC`-a8F#H}M>3o1UP6+Jm;z(D-K|!g9gheL_?P z(Q~AqS|j)7n%gi6?wnD6hd+~A|Y+}UGGBR~N!QZ5@v0D%cC8wxf+RC=r z*1m-X?&t0Z9YXFA7=TsPFWJZ4*g&R7TI6pdGs9CFcEUv+415@n!adgx_2#qP;Sl=9`cqa4z_2EDk3(*<^G@aM^BL-NgrwS$KIDW96$#zy`fa6Tn! z`BB10KyaF+_>w@BHxWb^2znM2Zn>+dPerE7*WfofTy@(W*xQhJsTA+rxC@Nc<&%GC zcq9_&j82AYt+7RKu#24;jV1@{cyQxsi7e3Bh(IaD7*nMvaS$ny$_RCkKaWb$T~a|~ zH5VehR6BhCRxz+PuvTikuJ?IpuS!gBBhN$}Hv-NWPMvfN2oMuO9Yml$b10i0j)~M)8!%Uoxl!Aynz{q9 zXl_vcz3OL!>LY{0hXjEt#WgZdRjOj@kTm-b&qqcukTv1%R7XR8^~+uy%*v|Kbo?H3j9J6f-H zjJO!zOm(*XOc8qVn(3kQ5r^%0rhW4XqvH{Wt;R>AKT#J&UmnggHfxxC_=Q;#d(xNyv5{D0xFS-RNYL!X|v z;{K36Z_@>%&f8C$X;|yehiS+=iFA+`U9VhF7u~E5eHT5ZvqYD@I287meUh=L%YNej z!C?VK&Z|cp*8XaU(yHoenAYp`f8(%hpQ`>}a9Cx2;``6B3ar)FbE-mT*Yg@#OmYj_ zdJez7>RVO+T72zw_UjRc<@&umv_CTgmFKr=ma@xomz9>93>c7aB|;CP z5jY#Xci64p{r}F$$~ZADd8$gB=3^7#{Hm2*kAhFxZHnD!03b1t&$bSMf4W8hk7n1h~Hl4uj}Xl{lCjFDdIu^9i}wM zKz$Xiq*@3|8y#d3y^7F?E+qY=G{j+e6{$a2NZ#^);;`;~Fv=07VZO|(XlvCX>Ln#! zGPNO0LKjAw3BG{*UJ_2P?6)7=WdRY`5CK63^%Jz&Gt?0Y*U!p`E*!qmXxe<1klH}0 z;oW!zY8;}l$w@k|&5~ICdgeUw(F;i8h-$ZdGzHa$D;i>6RmCUeK8HVcd)3MuRlqFIoc+X@s4-0wDQ033@f&x_q^ZI z{F{A5Q*C2Vayw6EfnlEKOwoZ-vK5;N$AaBg(4q%ana|O#sA)alL5G zIe_@u3o$^~E%~#3MQmW$8I+mD*pmLPeQ*5K?jOe!E7P5tSmRK`Jk97*bwP2jt`q5f zTcC-4x6v&_zunwYQrHUHvP&<_Jt&Bmd|0!GAvz<`i_ z4Cpn5`BKaGX6hL!Zr2_@0|)&9>RIO+L7a&sH`-mAH6H z#R~Ltg%2MQ$#nN($Au-gV5Z8OD!id~?7Cs08WiPl{djY07l-4z=$ijEx!Agzy$J>F zM$ke^_rx!5{RPqWLqk~_y^?d~TFeBu&9u+oHWdW#>{8EFmUSN&1MeAciN9$5t{3`@-g1(~RvS|91x!_`$(TL69f%nvRWa7Kd?Jfmg%Xk}A;a+e&jke9l`5v13 z*-RY$c@1(9-}aZpFz9a61@5qvoCK>I$Y>cC&D-X5{o$zt=fEDea;xgct8dTdX}3_0 zwOON)uI`{)ntNRX?vLAxv~Sv)vB^Qa3n#1ocY@5KP?6VzS4)feuMvlc-nS3 zF9&-#b|%Npho$JP z^`bs7SDNsQRo2}+jApZ-O-7_yOvqfFIjJYAeRa+<;ga|jCuoH21ql7kyf>RQ;>>}! zu;3rEW$XubLZ{Rs=AUZ+*mJ_t>XY?*sD=0kMk0mt^S3qRGaJJ<&5T`Ag%w8EPm_Iok;2GHTkQR7{J*8-eocgFO=&6|L7k$wSwiO zf)46e&@{7+w6NtRo+Z_x4OS_@Pj053;GvKI{G65an$^~R2t0XdwTRSD+(Y4wzU5c) zvlFtH?Q^5Jfja#WATNeJeAQ!8(1nZ!R1edhn4;2B+*5x!rv7%3BMHRr3scgzV`bGp z9oC!nqFodM&M%>l1p;awrt@f1XYoa{J;eKZtLKDlWWGc8e!swbQs&>{!Bg^1T_}fT zg)oJ1FXbiQFH68t3%qd2Nn{kz4CiaERnqKx^9|wEmJViR^~REhtmMPq2~ZFz0<_H` z*ht4W`am`=*}PEH3m2zDEf4ggFxiVOc1^lb8{_viX6+{UU<9@eMB9--$k}|iYW29t zEuEMRZJQ!-rHQ-sjNHCPi<^De1Kf`g{9)dJ(yyqd8?2OOvi{Hymf?{3-!$YPeU}jX z?RRmnkulG2;?~V$w6?+$7sHk)?0=-O9rq#+fe`o~Cpar~W|WNeh~k|?3+ZY})27;df-@e&NaM*1#DMl4zBp4o~TE)gcK3t}v1c(qPqPDWWdm_06bP zE@oFPeqf~U%QljE1elU7O{x#<6!zCTQ`#xhAu?X^F-raaTJ^ z_SK4dp+nZ&``$&~JUt?b&?Q6}9z}?R+M34*#>Yq_bzX<-gpDK+%o^u}f~N!gZ(0C8 z0u;M7t;GQ>J%S`zFI$5knYAD@T7+U^g~d36Qk3E&wbJVV!Ek$T+98DDY_BJySrV;T zHWo5*6wMAiQ3m!h0M_@=^x16cE6AVAgya0&KbMfdm(X9zh(7(~k0ds@NSy`|9UW$! zQ^DXpJz88**!?>vidjg+A!PG?HpC?t{`frJ)MrgL!H1@4QZBi$W8jz_ASEnt+k)Iu<~}XRtzd^<+vJs*+qsD7G=`Wh0v~64 zb@2^pScZcc%|6tp=4*|^{5Tu-rksFA@PV#gAZk9AM1Q68`FPi!|yenltrnT1d zt{rlvys|#Hbb4V+V*MWWgMd=RwulS){#vByww67W-L^%b46DEgnQ5y`$!JCHUW@k5 zz^N;NYLfn^68KSCONInsuDjE!70xF-<`YPD!Aj^VzXlJOu3S!9_Y_yr_R$%=F zlz`__92Qcn*zTz3;=#T0ema$8qYOB>jEnhK##~s%vz41MUjEPr9_z)8=O-&$0R}YU zLMn7o?Z7mv<@6t&SIYpNo-^7slTJDToe!B;(CrWb3?hJ=e}JB)`5L;7r0tO6y9(EW z6!<}ltS}v*HUb8Ch?hA?9QTct@yIZ5%_PIXzC&j189kO3SMsd{TRC_xEtEP|qnAw;)+TzEg@0||NRrq0wx^OD z>U|8+z9})}wgXxT{oZNSPzHrjvjVYV&15XbrwT2*im>gOjx{NdjePAcBLE{k>(jnp zU>k{IxckOt8`7{jn6eQvn`J5ttM}A)cnM7Qf(H@avpjEF(9B)rNawFvop7X%Oe%>j zu5oLJ;{!)4*d9H#QMdF3|v07F-6qIX-Y)!}RFdIW^yMAM_iuh%v@vLrk=#eCL-gqY2r zbrKj@?ZCf41>DV+? z&~F3}a~O^pCvDb-FCDue3>yYWMDVPWe+=XCRuZFcp;2pW;wrhXtwxBEW2l4{nuOu> z(7|auU9G*sSiTy3%<;S*PDqii#jhSOzxDA&Q8pO?O<7q}@uiT0HyU5HD*jmuD2%lx z47Z7N%+>uaNiKxT6W%WUIEox5OSh~&$YaX<^#x=~e&v911~_X}utylHXpopiz; z0wQNW{3sVgDO`T)TILc{-aC_r`*EMmOuo&Ez)KjiB8i?>Cc)_f3RwJy_JI&_-6fuW z5J{2s>|@iHeFx$T_D+BoyHv2uf?PD)^6I9lS6l)R6 zg2{W19PlKgs(=k3aKk8oIvm{P*_`pKe#o==NbikZi=%G}Seq5Xcn{r0cpqHqMP-J+ zTVB4ko@GgZvgJT;G3sD_P*YTmmdoVDH|XsQG+Av0%j^rb*<9?LUNgZwZJnNWs=jjR zYmbBJU%uL_hu~#_WumSKESI3elwxwvVi{V!>1=>9)nfja_Ma0y4|d=s_^V*_8}jxz zVo?`}3edn&Lua-Ez52w)^&}6y4$VDVS$hGbIOL^pmFpOPZAw_xL#~35J_9dcAWpMj ziqNq|*b~86Jyv^Ck^X+csx{}JIA)VIQ61!o4j!@Y(C=B?I$wiD!wsoeZ7;~`=Eh{q zo7$1(ProXT5YVIAAv6yZ=?MJDUvD<6+My!z|F?q1_yz`lOX-6C`1|RXNYRt`kPGLX zP`Z(kx;ewXk0+kiXpD5*`ygrK2Hcu&ofB)4O1djeGr9Jz&O$@eWES_C!9@F?%f9Bh zEazd2cVoA&Degrj`(_-^K=y139&I%Sb%3RN9jo9g-}cJywsOzh^7L;txCuK?D)kT$gU60Um3lj?C=v%dP_D6gs{wk17>3Ht~G6Kte2fqH-<`@)+P zJsMCU+o)c_1JpeOtWZ)P?$9!M?TsZ=tE3F&1QB=U5zcOZS$Y z&D`$O)@FJvE5Wp>5%#HB^N1#F>5Jvf^To}v3i@bIc868(aS?Cm3D2d(IOLQED&PZc zk$_&sm%qM;wx0t=_b1GSkK$2Lv}#dw6@-Q`Z?7Ek5puX!KBBn&omg>$2bG+;Y(J(1 zC#zX_cA*!6<^mdYCvJu!1c`_KG3Rd}!0Wxl2eCRUmfGu5Y0w8h9cJ*WJHKgQx$FTt zkKyaF|MN~hjVk6?-sydq@bo90h(9xsH=lFQfjlg;%Zpx!@js_i4Jh6PIE;DroB%&-jzx#P)S?WxL&UX2mgK8$TJ)@z7I0q;*A^mC;9Cn z;1c8Nzx-a$KRESoS)EM!{QoY0y%lm=mx?6gf=n)5Y%9dlz4(YjrS(5JtXii167OD* z8+x$Lo#3bC%g8nLM;!LmfqL$X53z&48@5|e(oK(18a1Ov|F4++H8e!2xA-tF#nAfw+s+mZC9Xaay1Q!*j*4x(_s0Lb!^1s$^8Q@p8r?5- zfdb7=Y0YyreKGxcs`yf9j*Znz#z#3{-K?{b$+1S{gnB^rY^+ujza4Lg0}s|8s*#t~ z#PBJ5c9_aO^?fPj{)0gcUMerpY_hqfb zoEDG*Jw4hg67p{{m#v2l^>3qNx2n6PaaO~e27VmL9*wf@a|n7QZ3RmHw{P$AQ%m|e8IgY7ny^E-!ZWtC&i5equYz9!@3 zxJ}_prfubClBb-tQ=}*BZa1f|a=gALC>Fdw%=nbsx{_f z&Oe)*(p80H^~eX|3Wl*8z}4&R545ER zVmnS&Wn0b3x9SX390ui{Pf#kvMXvN^;q1>$MXA#h>t#!<2WVD+NmOiLv@K#FTv3hz zR+k{h$XyqqSVhbiAlT@vJsWwFpC`7x1@U#CrT6Tw$K$k%YwoYA5ys`s?C0;UIe*@8d(RMlj}IKla|+;k{|$t1Q7k;+j3`QNx(ns< zFnG!MT`R2(XP?{aZ;UgLlwM05CYJbqnBO%a?P$ZGaT z(RQiBa=nUiF96ce*glrAMJP@q%~7j0)}|#f!98slS2Gt09@TK5-jy2WiUm-_3twxz zhU`p!W$Hzqeyu@|Vwm0=>R~^sv>{C=B(DqR$^@H*??*?_YIL`72hst3GcIM#og<~F zd^qJLX}Gvkp!O5hMe~I6XciGI$U6f8Ru|1k{`5eKDV<^t!V*HALsI%M7Wpu9EkdnE z=~UfGExuhN%yZSm*6)IBdF4egoka{(P^<#$>bj13aOWD`)eCL;?pv+0{CRsRFtFyU7f2DkTw)ROMVCLS(U)GefjL*;4hb z$b_k#{NiJ`Z{iP{N$Zkd(RKm5T6%40)0!~()2(imrJ98o{an42>ZzGaLkLu|@EcB2 zOPn%+18R`oEZNLjoEWlZx^d#`f z=^=hNlTLyPN{@Bzj-b$A9M+#8)IqB`Tgdn)t91C!6M>Ik{(D=3o!7dUHQ}7Eg5gJk z+q6T=GM?az#uSeV@S!xOQ*y9kQZe+GP1X*|{TY3`FM=W@%KT4s){!AJB4NX$%wynqHHj{qcslmJf&fP^p)F-q_rmNmaVU7Zsu1t_u8G|>k{5i9>X$3JFOS;xbZ)KmXOf58r@V%0|A1L|l2`+xn z>vb;8GRrXMoboD+hMWJ(X5bZ#vtj{mABv7-;u7)}uGpjgs_2ntj0Zb(c^oNY8*D6- z1K`Fj6Cx%I66@b)^0CYP^uL!w)ovqlvM`g<#CM(1VVDevfCfe(Yz{??NT&n`AcSp> zMp?1tskwF8+hXKxxV^CNRBhgB(G%&7(Jh)D>vzjC2(fQ|(R^+hscS4Qz{Jr}-8FS7 zn*&0N{+nbe$-oM<`nQIex8S}uIQ$7(`pe{AEe6Q>cVZSTCOX|a_eHKBjHmn z>h$yt1~G`0-BzR>{d3s%DdHGf{}Kc8ROFHF^$! zJXO8ctNa~eRbZSpVqy#|Q(1J}Q_f?;Dgx5*omJtZK&kE%vE-k^1IH3+uNcqfz}in` zk^)E{o1EQ}VtfNw`1y)rD4V38KjRFNoBauTXC{Ny0DIS#x&$P03^1+Ewy$I|8CBAc zdgIw+;2R4ECapHKRY)Zgb&JW$?!hGlt9pfA*9b50^S>5rFp_O2tV$?qJ$}V~!qG|c z9xP284nJy9ULXh@3-ihcJMREijV;zBpyWD*^_du+KOk79>W} zz-?hcDYX`nSrksarhrb`jJCDMXX;S$9jGV2!JIi6T~vxs&|p{4;@YGf!pyEGOk%=5 ziqp=nQKHh_>$y?-=z{GdA;;8iG9qX{GB9+=kP&wnogNpK) zJ*V>B_zp(zuvpXm->^|8fvEI61~?(o0BW6HJa0y*>HftDgCU`S+UzhzTdF1(QAKi1 zFzAl^XBKc|OhAthPR3ut{lxIAEh660P7NQ6(;rQKc{&wO`F{X?K!U$D0DDB??1@gq zB*=g*sPHY=0-B}Z24>g>umG8Fa0N2BO~FCTThIr1$gUA-O3(}uEULy!k;sF2hw<|- zvz(QyS%CO&_NMZdrlWS2YE5ICbYm43hmBtwPQY`jHEgQIQbBf0%(75P}@_ z3G3VlbvTifSO<%|#Mk-l)ZQ;`Hki6k_QX%P}}Igbnlr9oAz zX{n1*AqRBmhF@3*5v4A^Bu1n(F-gU^q=ZAfg2PFzGZX7Iy)ppB+M90D48{}HI1QB- zxfBU9)sINJRSk)hkh+Q>O9jzC+#t)d$v4YYo>Uhyzz>%!_bQ zY?3*iU@ZDX7=JJ?HXRR7bJbaq#D9<#9`O~XlC$3n}vp3SgOV-B2fAdXwW5a(1vx;u0+(Iaf6M}sFZmTQdgZ3D&Yoxf|7il z#B|!6#%K>qd$Hq$2|wXaf#{Pa99Wi+lGm7qXi%u7P@35)A+==;XQ+l-kcC@#1uyUd zOIX$n0EIXZgh=27R5%4vc!gMi1z3=US+Ip!(1m{h2PZnSUg!n8JOWTKqQ;GnD9MvO ziPirCu*lj6Y_qm{7%zWNOn>l)cyK|=d$hgz8=Z^KpHM{aTAP1(N~*OPpTSq#&w+R1#8aTJQ#`jQOI6+(qx$8ZM!m|n<`TUAg6P~ccHAcHi( zgFBdnK!Ai$Xa!P;g;%fzTu9%+7=~#u25umRX&8oF0E4=sTx944iXs-_fR_XvJ#C7{ z&A^Ayzz2QE2Y=`Xf1rnd5Hv!2JftNz*hr0gc!zuN6aUfOfp}VFnc57V6>R(mZ9ER> zXp`0vI!zo1A(c8lG0xv`4k0D2!y{~ z1zWI%TsQ__@X)Hc25LZ(p#g_l0E5E1U&sxjvks(+-C&DIAP*)HykG$!n1TB{4uI9#aN|>t;FCY8h{NfIuf+Xm^TA*SCm|QIG1*@qOPf1wXwPlLnCWVNjf?-UKXfZX`jW$;1|BA2% zgPQ0Np|7Va4$KNYLhguL6;9LaQw=hg3oTTLeHLmN7tM)Wb(RHp0Eb=(2AO7tU$})? zCM_`Z>p~7D(F057t2VAoc0-=d<+}ws1)r?STka*F7fau10UHBW8uGnL!Q-+_) z3vZf&9k}S8D9MUY&emv>F?-Ujm@OJs+imElYM|t1%>Y+G25=w-WLTnNkXxOtrKNHP zXebh7=xd@%#VS^;n1)=iV8^uZ=#JRs^7?8H(rPzp3V_AGpR(x4er%}Iys_qqhw-Px zK&wGbY3N-KjiCl{(3oCO)*}Ehxn2fj0NPq|h1mvL*tTsX0$Ov4tNJwn|5vDMAOah< zt_CJtY=_S5d(t2RAs2HY78_(B+R5tUHs&sYnkG4#e~<>>;tGfYuD;k9JHiHHsAP=t zD32AXjxw?Pts1ZZjEYcR#(r1n2B0Y+VSJ81+er$Su^su2k=)fONrEKu$fN<0p0nCe zKjkEBfaS3enW4#BIvcDAhikZ7|J6im$*_*>pi68h z23d%MIG6J{2ZJ~m*E`4aJV#e_m1`rShHk*{?kIeH)pHT?>0?PBr=z%9q9Q8$J_%;lDJ`>TUk|<06NhF@@t)Z)v|z$w%5>~T zkJgi|mS4-NT|_s^M*TyThwj~5HK5DX1gy?tyKr%&FNaN;n#&ct-6LgE76+<1?eWx@jA40^$%b_h zj9|!yKX(e_3A-dLbeE`I&G7k@QFIWGKWT{WfxnALZ+q8>B)5p;d-}3B&Lq`Z3mA`* za9F|#U59kI8X!`9V>yd#;F<662Fmz{kG~5!`3Bywnla;w!H^FdeTmyRUXS>jaf<5J z5Y6zi24)zRd}e)-fSF}zjP*)%bNMWRsQqG)x1NZG|7b}%olj=qKq{v46=W4EWnK@k zafxf7W;${Y0$DeK7>9uf2iw60CfxRQn9%bfhjfq+u&EYX8AXAJ76Qa>-rxq{O^R~J z1_5`9?Lb2LkdF=Dh_#=rAC$b~z^?GZ9iejO<_3s=0tXTlSghK?gasEeZ0HbJwO`Qw zL6b<)A;ydtfjLX&Oe4sU1tAu*1}xe?Ya&;&Z0YhPOpV&Kef!5PCeEB1Yih&z4V%Dl z1Z#f#R_YC)WaG&Hss$dntXQ#sm@{Lp zOmHGa#>zZ1{79LZGGQF5?Z|K|(oc&MSwzJ=; z%@#*_FlEpJeG^Q+4f(m+xZ4a*W7fbz3_0KcjwZ)A%wGAf_ zI^~@6%{k(T;|)=Rbu|-=WBpUpK;8&cQ*+*g_>YZ7(RkcKC0bb5dF%aCo{<8DHzbp{ zE#p{Z&`1UneUr6T3^34O1`L*129`{d{}@??k~Per6(*XM$rjsDX|~oOMmKRc(1`z( zW0W`N*qBy1*3ekZH-7rrlQ!k_SK~R_=s8z#Jf1_4ac;&`q(kiegW-YfS*lZ;k~T!2 zeIW67)s+DPD9|r}O%$r9$)MHXKh$_SD^3y)R1~c(b;{784Rv$pjBb6mRzo4Sh%1e3 z4a5zw720X%kGbBqbjc|QFeN> zYfHnz*A7dDW(3nqf$!yd)Cz^QTK)*g4Ccd`K0}{1L z{<9=L>QP&C%Pu*y%(kI9M&&}|(skHn<`$!M)V9g`k1}6}?bPCI|6^LIgvhN(`P>!hdnkc?lt_}Vd{RHa7Jkya97 zC6To4K^;d96RZoh`#G94-54zC8MT8irXdAgCqpBS_|(rqA}rFuIAMry-vae+p*!gX z?+()sd$#mIOgogjNQ7eR7}N||Ev}V;9Tv?p>0V?xlOhvD&DSyY#GP8QnjLHEt@&9s zPSaD|P4D5kcivyWt3I(n{}|3J&{6gl^yohV=evQ}k1mK)hddBh!1N6XfN4nyjRrG~ ze@H`J%1}v9+@~LbaL+&cxky4Z$QtvZ?@YN-MmAv8AR7&)LN27nO}Jq;ZorU7HjLFx zys-@$^3Y@qgvo|<60ILz3LbhnBL1YsyuQezGI*&J5&!oO2R0;Lr(4)!tl^BssHHLU z!I)>JA&oI=!y4o2;BAueH8l!E8Hof0QjYXsM%uuCbMYP-P)Ki6KE|5k;5y z$v%c0q)T`wkbN{UaRaGeK^AD21KtC1|G3B6Xg8$cBnp6o`AVSrloEpN{clLqb`+b5retW2B3b!nykRH zdhZ#ZK-3niIObECt09OlUAPc|E{iq<0pvia!37pblQ4e*V?!sE5pA{xQ{Nn*Bz4j^ zOJb5P#_OnO_#)0G5sq+I=~JNofs&7qN@KKgUKgbYQP;%uJssQ=sRmk5e-hK5#azg+ z3`ZQ|1eK0kn86Gp>JyhL^(Dr;7DWNGq>Q#CANR;dBLmpfDH23uUnyf5+4-(|mgRv3 zQA=4TLnw9H|3zgJ6rpRlF(+^MFnkIcT|o%i9fRf-r~@f#cW$Ck7YJdi3@IcShiKTy z^)9NFQAbB1OI3}$;~wqk=wyjVPU@*7F@AJcboz71(b^L*H<3nd-dQ8@0LnTVaaLOc zyHiO0BO6h-VgB}h@f!wqt5g9|8VF8e^$GRHpC ze^7CaWFv{mYw84n-Ta3ppQ)%Rj_W9a`bIQT?6bLI@%jKJgl2uX@@L zoC+ix{~6}1Lu}LyUpUh)F2I(;1X4lDM5Bx<#c!J2anX!)3V_Omi9CvS4|#wTChy3q zR*mMFq+yFEgjy>Gvx}`BvB)kb&dA-0QWTZha89jp?O8o@Wsr<020FkmQ2fMF8nG0| z4!I_Q8A)K6v~I#diHSYlF=xBTqj!5YV3Avsw5Mi-$)quPAVSC0#%=T1$85&Vn4y1w;Y%{Jcgg1xOy4L^L z|Jy*!Q8Xl9%OBQq5MK77>ogsTt%N#dtA~`FhIlz7h#m;JVG^nN(#p>8nN7~N5QC&P zlp7PY$-yb84bNu#HZ*cDL-OWrhk%=6`!HTV{tTbo#p#$3ti(plm_bjam) zaUaM%d@&G$BN8Yz0Se$@d3W2i$=@K^vAXiH53OtcJ!%gVSr$GS!w=peM?VMI|0}-` zvd)EAz5h-?{XpUmMWV9;Va}sVlArx$Esx^M)R9<(6b_I@E!$1gE^RxcEm5 zVBXMWXrs}^&<633|9QGJ-q>ztePA9o=f^XNtq{IqWf-n((j8DB32b7%mmdCSM#C9e zd|LU-4>DyfOyk386U0x~?Sag{Y3F%r({-NkJ(Cvw!!mrt)3gk1CEh?}|K6#IV8p>h zHEmTqEQxz8jBjknbj6;?g@jm*kr>gFTI|R`n9uoIiv1vW$j-1r^pa1}wILlecrJJ>@!;KMy6 zWK~(yx~ZW~fTTUH1V2FHKj@(z21e4%S)Vz`c|hGi_+d<}fI99(Z{do&tOJH%V@`_1 zQ~aYt2qQKYi5pTMlVBmKY~f4XL^*^*+#H2AAx=7E)y4ILRt`iza9kSV;6HRFSb`)@ zq$F6{g)Zu%c$A!lfXR#11qTGBM!?OCJes;JN$SC)&0&Z+AYMZtN!sb0V9wb+5F@@F zh&oM|)xkt3PGv=sh}}U}VeZ_+B&1RjM8=uq8m?qtJQWRA{{~-#M{vm{5&4LgA0Fa!(9Zsm)jeLVS$V@r>rp(ZZRyCdK0cB29rcUsK zS>^?6V#G-%#UZAfbt0H~qQ_w((rgSHI(*`J zKBZ0gPws41br!@^_1uH>gFUQUDbk8XNsM0BMfj9wVBks&%|Vhyyyb|3zvpL^*K7!8~cd+{C~9&h#nX zA#x*};irR0qCE6ylLSpUeA7s|nhgGy>1Y|tR0xh>3)6t8l?H~ac}f+k<%PT^L5wB? zc|$ii8_S%IeDK)M5DYpT487P7fngF!cB7YqW)&_fox%t61gWcmMl~D*BF$bw%&47Q zLpjXL$=m}b^=C|cLm?tkI>ZA41{X**lK;h~r*z`8Jd}8SLy4pV!O%{d1WkZq>5wdH zND$br=EOjX#L%>;K%``IVnmCD$!LJaw+zyu^ii_qkWGApls4A~B2qn6Vc%R-gl2?Z z#6x;)N`n;-7DM=tChgcg468=8|71(}YC-4&z3N1fEl@f*-^ujDF)Ztl zSSmprgLI(L54DzeF55tC+M^7jNF<@|+=dg{#Zn9j59aFu{-ufTqw0Mu$k>RN@e4FY zl_H7eMJ7pmG=#mfM9WqNL%yL#{KY!NDTMw5#IByK@Ew{Y18BVH4~f-aI2(y=pPPs) zLj-F>*sM;JDwB|#w@RpA2AZhOioar5vCT|7U`jkRQF6(HJap|5*@HH2< zx{kD*+gmn?=Y&h5O~xsu&L`={nzja%(nUPbtkGbSq%H*OagsFEgIOlcJ7~(<@=v%a z$x|qjjxt~+EsOw}8bTkJWK`0=}z3U)#K{=+$xZsjgQj94bigMH&VDQ(j z>MD9>ThZ|Y9&%&fJSp-Lgistz#mXiFS(J{N=!D{6s9qA#B~6R&F9~Mc(%pj%z60$b zkG#St*nGx(I72ir1E#i&GngNBc>|wnaF~p#%i`cR5`^+f=&YFoxQ&C;;>(bMs`M^I z&@8a`2}I*rRW+T5#v0lwhA4jR{{xc=CJw)YI;?2WgolnX5Q+|oepLgQ)Gg^)!!8xX zS=h$n0*2B)Q??53MXtlaJjECfM8$zym}V=UJ_tIjLmV^T;%#GLf`nNP%}ZKS=>o=n zKFBp;BM5N%W(3eS2}`{wr3!>Ig&+_huN7(;a_2WvDEIb0e+xWny%#5?eA zPPW6G;YE5J1(c#O0RMvkJ2O(yNP->3qugL~r7}a%=}QXc=RB%QAf$+LV=1<-PGqpC zx@xXW4Xb>xf@y;Z_Y6=y|H_Csh0^v;Ixw*`Uh+$TYPkwTI-K!uLMQ@C7zhS5(>_zj z6(mTsaNKd+DZfX3=7cD}2Rk9`4=KY<^v5Lkh1zA6A`t`+=ZdYW2RVZT^Z0T>5UP=| zM;Z@BPF^YLBrBz;a;^>I8{V|kC1!@=1Ue6dfk`7-wU*NO@HBZrBEJ>ZDLt=|W z?-bo58a8ov_s@+rNs6U%f+eMpAVX8ka5ID+E10y@(N$1oZ|8PcHw4dtw`3o36v?4JoQF7U!F>^ULmU(Co|;2M zw64s^NEZZaTS!Zj=90cgALE$1oyQX$WMhvtd4?s6+h=cE>0ma^W`l${R6+U%h5@Er z41oxVaX8+s|AdE65$rgaiLeB1-#1+ZxTg&8@}>B1T^x%a_*mn1SoU02TKQ38W1PWR zKj%t%YeaJ*&V9|mEcS)b;+Vqd$-{D0UuQ%|9l6bX8h@2IT@X2w?wEjMIG}&1&Sj=% z&bS&{X~rqBNFut8D=?M2gkzyyvKkp%ZxcbZMVph3F}Q@3{tcfSndRlq%)p;T!ggh# z!{f5VIN0hE1-2SXd22&vpyL`6Bk^6VI4LXmmV5bGk}?ZhIciJhmBiylbpLwkONJM*?tpq(_mYfIt0Lhx{=@LjT9c^#-oKuQgEiUMlb~o zd$F~b`)$}GUT|b2*2SES=#T-%{RQ`Li-)nV1Pa*Xo*&RT$iv?t&Zpd4%geP|GVDB8!7BM$CgdjHwF4tl4$r z)Gx$hr^${B1j)yQp`ooh9Gx_tL(VSD2bVoF3}IhfH(f|2L%`p{-v;bBAaZ$N<3g!x zKfHO`{MuI>ztcL%mh!B8??70*9*$XtCIef4^Lj-gO*3QwTc0MnKCf)tDFGOtXeNHgN zH_0}Pay6RFgFOsQJ`g@<;zVuQv8MzwHrs{cw}v-#!OKx#U2I1&1w8YUjy7~YKxkw3 z?O#EI2N5PzXz<-ahYuk_OlQtux`-DaenVHVoI!#H+nqy5@t;M59XT!}iIJs2Z3j`J zY&nx=O`A9W-CNjhAwQfp@v)4zui(&l29F-SneQJ_rulgOln{zr1< z;(sz_!aNDs;m402DQDKK5NyKEo7>v^htHn9c%)GWEvTAizI*v#zm5%>=Dg1ZvEu%h zTdGdB3wdYWH)iuT!P`W7HA{OYHH6lZ1ODxBBWRP=-DM8h?Y1Ua!e<`TuEd8lq?UrsNern(Xr6z-0`MRO z`_Ygk{-#@qDB;FHL983vat5K7!qm*U6${Fy9Brb@v#XU>st&O4yi1g##xPp%F+6ju z4;nn*E9kvS1vO64gPuA_o_yRfFhgUw}bK7T& z7-GoGt`WDftFE@B$&CGuOQ*)eRA>DJTO=JBlw(Z*|B^*z(y2!+G9?x1cfO|GAgLJZ=341?H$J z(V=W+N>b2k#F^|LKNsTDyo=hjDchF*vJcUfwp+BYj|+l2|Gu*SoZ! zZoPHSt4S?&h#N*XEhwLN)-C9re3?5+9#Z>*XdZol|9MHTw9tbz%x--4<{M^9e6g@{&T-bQAE%uO=5eGt49Jvb#5*O)f=<2zalq zJ;&F6 zAs{}A=Bm?8Cm*z$Nxzz+6M5{z9u9O!?Y=@Lq4{HKnh{BK&S5U`*@qmFDD^$p`#gNEgj|B3bJlP4Sz=7#6_o*#{9K23H@ zeKSF#rL2OneL7dJKXQ@iX^N2QyhPX!Lt;iAbng-!Uk2K@AlfCU6D3hAh__v{Sydx^D z!=0HRR1jJ+H%;e=9n8s%L+ z;-_#@<|SrZ**7|w5HAtMq&%5uW_o8Zzz8#Ts{)W|=7kV^+^;V{t4>Lq2^hOY)27t& z2-*lKGijy;8`vPMVVPqtcG|~B>Ga-X)fuVa74cF!bqAeS(8%M5-OzFPaX0=$2x!w zwsSaa&XoD-O?;BN5muQc<%qFrL0wb8sMaNNqqbB&!VMwkIYyYuWh6Hvr^{8 z-pKGpBCU?P8KkxQ@K;V^w-Aup2bIA%!oo)3OAR3^7I@E&xQ)SJEf zKfFC0V779U&84*G=T25OvA$d|EL5PIDIEF@`} zeWy&2{3IL5W!*LexPS-E#LE7dg23*@qUvZP)+i^)W}*t_AHGIC=B_PZq^qLL0HD3U>-Z{!*l` zyhLBTL@Ds^BG5^C{=r3bOx?hV8>|5eL2U(fg23t~3+={)$iZMRZ`gb)A>LslaG?ug zfKK|tQ7SJ|hz}yrW@V(Tkf>#b(7_wX;qP!l2t%kGEMoP%V$`T_1?z+Ro+}}$&>@I! zA=vS5G*K$fMv(L(>EL7XOr!)ik*y2@{tn_2 z5n|(l5I+#E6BFVbaKQ>@Kr)`F=pr(+X4gy zaYGWZC0Yni|B%NS6b~cp&3uFe2Z^XsmL&4ZM)LB)^43q}KF{->F(FDLCwdDf1mg|o z%~7IE@w7o>!o<3cX{1JK5~VJ&ax8~>79!!8gg&le8av(Nakst{y`a*#2V4^?j~nLI%Ya9EKIay z9>&Ba|M_wP6=K(>Lfx`qMIgrR?qVJjq9HeAN}_@slB3SDP?`QgC&92{NRT>|iP-7` z8wS!KN`x^NA{t~(r?AeEa)j_nA?Yis zfT3netsu<8{B#O6JMSlf@^=6;OhC$1R?ahMB;)KMU0ly0USdVAp&J-!NhZ=DDDC`U z>L)^vC8FXS+C&^S;)6^rJU4?PqS3kR(G9Ob8+Ps>x@rf-%`FJ4 ziBwBitij#f5mEwCDwa-(c9S;7%PWv)2G2$}A7UATXc;!EE!m^U%%WTH4z*0gp{9c~ z{{4(eWa@feVsvA;PA4 zP$oVoZBmHDG;?GUbA%8VFJ?&5eNcjYLaD28Qz0N_=?LlZ3W6ekOt}U$LfhgO90G|x z2_e+fMC@c4+>3}bvL%vXv!o*xKaardb0LnV%~rBcl`~IpOfXPF)GRGNM9pKQ!YLEN zObqB~#tt_O?&jpHGGudDlnFkUb2>Rj&-U{ms-X&tWFD!KF5V)v!jasvMeibI9H$aY zA=F#)DI-6tPRor%UA5aN5lsz(O$(w;mtj~llu6`KRNaC~4MO0gLjLvF}~7ECSb3 zs9}u5CJ&-gv?09$!#m3cBmY5JG2#*NL|~JoF%B^lZxRkw#wM={Bmop65|UhfwI$y4 zB7k*61P)Ug)R6E4{u<&pY>xAy=1uxX7V}FX+I1$H6S<0#4FM3Vn6y@_^zu-yQ&8?A zT2_y00u`G?L;#eNGK)xZCh_1RNpKP)xKA01EE<>rYQ?dd(4(g=BT4A;hoY*~v@0UQ zsl-tAV$thY8%04C!WkyCE0YAYz_hqTP8Ff`A%cQ-5WcDKD-kr1(skjA{oY17zBbnj#JQ3(=_q4 zCTlWLVPZY7p{Qc!t29ku#r8M!v*A_v^c z239ThYzrb8i0mzMFdX3mQm_jgM^tjG2_od4#M655hL2P z8CO;B{*5;M=GJ z6+z-Zb~ZDJOXNoGYI?3=u8L+pf^xwJN=fpEYa&UM0eOm3ARf^g98n~V`25<#o!m=b z&C99&W+9T~BMkT-gyD66!WxXh8Z?(ZgaL_ZkTk1UP!wrcxN=iMvohJ(Ch}^+Bub7h z0&#Bw1V7UoKJyzWhNqHi4aEnL0wtMlEQCz9SsryApaR+`6AYCzC8I-SspMCf>V2+h zaw-%Y$uS0L5^5#UfRpwcrA!RabC3R^g(H)Z zJr&1EILs*Sa%E#O#=9l}P0Su-@ITg%~};_DxrOH)$_ zn6Ejcq3D$Y#g~5q9YP`<(DTMV!cg)uXtKdBisS{!H_*ItU{hu;+5>YTLR_lB8oyBz z>-R#5nnp9(d@#k`(g#8{5>HADAzXRf*0)Ip*dVAu_~!0d>XJ$Ra|n||9ze{bV{0MY zL3uC2tX%OTfTu+_B=F>>N8GxJ48krtx^Q$-oXbus|5Aw+@1;5ls-SWNum$5BU=$W{8V;Od0!xD%YMROE`1JBcb6JV!2>vN?cHc z8O&AYxN>9tc_Rb5C4k|x5*sU@hY173QDdm01*HUyxhuwlw>Lt#V9P|xV@I1%Ch$0H zL^Dr>7q2O!MnnQ`$^kw*V%o0T2;~ z0abB5(J>uNv5gNRHd!JEZqY;(Po5z=4yU40|AOvdd5mHOqqFh(a5QQByhXnqLP2{f z#3B3BVgwuPo4rX}awEcvn>f7#b^A{&6A3Q~wnry3j0mj~rHA|eSjO;xZC$1M>82O(nLLQQ7iayh=-Hr)fpAEL6M zb|j&ezMY&!!7d@NJnUwI8OtsUr?t;l(17lNC-||3n_DW_=4%f7A10kj;5oiKw=3QQ z`D_yT#5<~IsQLj)8yGm-Wwro{KruQ(YL0B zYeL9jMWRPy7P*<4SK3?x9nr71Zdof<|5kbxqi4a3&mg+nyQ5*x?_$ndf~do>VAp%5 zY#pA4NS?<1)|V`Z;v#C5p*Y_%8I&QmVuyFX9b_nk?= zgruG|My!C+J3MI2#}1ye;Z6B_ zLxd%>hI1j1FT?{LBs{g{S5c4=?jgDw=KZKM&{HJf^Y1*aHCrittLRLhkF)Mc?;@t=Kec2UlLOdoK0vI-Nvw{I|LJVbw3{2W8;06q=OE@7wtxl10yG@;A#(gK9G-WL zxR4xP;40R<*1YPMKIQjSas|uP(Y`*exEMYbAws?&M3N-aI6_fs-(~HY!tm;zeeS8m zRMbACQ97jY!_F#G?i5K$jYCtC9U%_CAdaES6(4I+4Cs|B>9I2o#m!OTNwmoi)g?A& zqM@>vqw6uk+-t%)r~z>*Wq}jo-Jf>zoxI7lSR_iw?T3vYwb}J!a1kn=)(vv@!b^?VrMh3>!Lh2u&eDh1LF9Q>HDU!h{EfZS?4o zp)+j-OKPj8Eh4m(6oFN&|K{@FOPLLwDGa%=;zNSYlG*(COWDJrM2i~zM{OarnK~Wf z{AZKk#Dg1;TD^)jt5&V(w*KqpHLOE&VzZtjdiJcsv+ByabqH2#HimKE+P(YF+c|CD z{(al_?^?Nk;qO=n#PI$vR%UsJhLh1j=mPKAr zn>BC00SESe4g5ClSHF4VrjQ$C^v@N_dt2Nn`-OAQr~k*EeBN!`yiJyFo@Q$OgMtwM z2w_8e3VM}HG#DL}|ImZhG)NOn6=|edG{5}A*+LUirO<26i3JTX{~WW>G2Vrh)PgR) zXc>Ckl%vgHi~(28aXL!$4R64$xX?Lz{gW1vM1FIYbyNjMNRY< zeg6RIqB}4WRTq6>&ZW>bVTSe2dkP&>#Xm8)`K4A*S;mY|%0v^5RCqE&5LK!D6B}^K zBqJ3<$_T|7XRp;J)}S3S^k|$!#V2W{c;$DEewS%8rH*`k8r+$)eM72_ef4#pR*ID) z-F)AbNzHH9Bt?yPwJOBrL)zr(4Vji=b!JhN{#w*5R=5Df3_lPnX;c>RY0*HCQlub3 zJ$`d%had{||C3wJ9MjZ^xH7BIu;iY5)MPXAm#byge3K(zInIkJa851+m^OPIcaBa2 z;x!jw{87W6z~v^DjFXXS)vkiUqN|`SRzO@SGY)QKCsoSSsgQ|+hN!1PR3-Bo$qQ>$ zGQ}#doRxaq%+()o+HtC#H7HeMb9=s0it2H1q0`krL8n*WLNBw&T+!Rix=o8iozyVP zQs1SHEmgRn!+{A-{am5EeGO>XxKY^Igbaa5)rNL`ODn!xat-&n_eOnJj_;zh5=QvF zxXoUE>r3R2Zb?VoH`K(}*Im&KZ=)g4w9&HbFW!2x_Xtlv=enq7byIb!?NGoHL` z?EU%rTc)Ivs@Vv=!|lyQh9Qnx1Xm`neCjym&>g%^#gJ_LYk5=JQoW=`o&DJ*Xm8Ts zTTE7!goH*nAp;cYR0Beip>Bm78Wf{Y)|q6y?sZ53jPE>%!@Kw|RgtMnsYZjnz`Up% z-H47jh!?#5yh@X1v${7Sc2jqXlfipsqc1xQPT!1_7a{egFc;K{j+k;1E$L-GV9^T# zx6+P<46TkVdk0~<5QEH75-W;2or8ojvKIy?8JwvTC_8hyQw|E1VgZrt-UiD}%JNs{ zD2MWnSSsc8!e+Vz5kY^|Zi_{Bdh%ElLgt|4QLmf0K%(%GdW|D+_P zV>TwUgn!JyKq_rWO4SKafJ%*^n<=SHZ;I2LUIsl zAuDe$GYg%%(VORr)ER$^+~ne_waN`CNTzlW5J3Y)Vxw+zgF~E#0gg)eNCB5kfHU?!7Vyfh6kO|g|mUy~HTBqbp?Ub2~I7oRA1IKKP+RbTRzjC{qCZ*DW#neR+V zCwmzy6E3TFWofW2Z^_BGqVtN4ffPI^)M*Jr7{lh=Up4d7w2H3u|Nic0XRBm`OJ&yJ zlOIwXJ@;8N!&O-U(hyGv~B8AL*_JT z2)?&+^R*f#NIc*6qy)YdIRZ!DIn8;?Z`z_{FvHx5I=8|f|7G#J0Lkd8(YXHpW$>X4 ztK>)bN@KfDyA{nm;xj){*`tm^mlK<_>=jne*_-KaBb;u*Xl`rK4tC1PkWm#+IERwX zkhYa2;x3MkLd22vhiKO7t|h#1tPs(>hdtkt$~mQ}K6sHMmeUW(a(?k{8BI!_WnyQY z&1*_&zi)EqI3-*xGtKx4JKi#|GnSHdQQ2ua9rP0KJ#fw)dz}vaDC*UGL$b}^+2dvw zQ@v`4bH7gS+&ogJ<^ATi9$z3an)30rK5%ByrqOd2^A;w5jj7=ag`oc*=?4xka8U*4 zi+}!`i+kYlLUat9KP{xt|9@CvUHiu}=7$Toz%1LRdX@nT z|0irYG%WAtS~s>Zrgd}vmw%K~cUn<_|DXz2!GMEjfh!nN%2yN#cvH|v6tJKQCuk}7 zHiAX*1^@5`J2(a`NI576Xai<(9Rh=8k%GU%3r2w=wxAHFAPP$87Cq>L3LyqS2sa_P zZ(7J;PKbqHxNoGCSds7#jsORapb%(CJ3sgjYzT%d!-bO*fLb;bx}|Y~_ghE!B5AM? zYH&VnvIPneh;K-U_Vg&Rk%VD!SXjXd5K{(T;05{ z@I7b{9Fe#XkoXT*xH(tg5S3VomPjsos6l||{}7tURG?@T=|@}*(SA@xir+&8uGk)B zW`O^fgI5uUL}82nU<)z`RaDT6IWz^p$SkzDIl6U(#rO|VCF1Ab;f6XT3l3p} zU$TQcD2j0K96vY)TObBkm<6b4g{Np2(Rg&apppNuksL{n$#`J_St+n+7dFU{{~(GK z^Nr|&hK}$ELlFw0030c~5ao!H3gU)tc!d#3k^k_FSuq6|364+2k1nzcxzKP&nUs>! zjVeQuPvta6c#v>FlTh`NFZl*=aFT9u|BiQIlfjV%ftUqsm<9h(mS-sjS>Od_`46ht zmBa!CP<0D)sStAskGfEl?E#AP$Y3Jb5Ej>naRP(>D1@j`6jAsOkFb(8c@?5qmFl#W z49SO+d6Nq925(@Q?eUe*!3FNv5Lr+KS)i6{*$`JSi8Ka^sre6}Xphg4j38-Yz~BqN z;FpeIn~^|<>=zk?36KlnmqkH-FR2h|kOpXg20i$eLqU^Y@R&NdKPkDG!%30MNt4E@ znF$#gr}+?6Fo+7_nF_&{apR0_GLAOogiWasuxT0Hh@LkUT(kHkF1ZlxX`A&~h6}-o z=Yp6^C=09b9FEC@M_~p;p#`+_|BaMskq&{G&oQ6@%9z37j%~sP+8LBiu#Q1F1ymrE zsJWUQs+S$An(CQQPw5b`5E-_ah72L1Y6u*;@SY2C3Jj5(4Z)%;x)71@27Y)Ha6p`q z=mpV96xNxN*tt#!`Vc^>AmzB3!eOE7_zxTU4^9B3?V1i?cqHv(2yxrwnRN>p`ed!sPVb;*i3=JXzA|)!_4T69uAsqrLAl=>F zFi4kxNQ0Dg4Im}m9nuKQ=J(wDIre=V`^B@LH~T+W>)l${_q@)}UohX362M-O%gvC&0C0;QphQ$q0Q`7VVA=i1dqIfF(+y#1BDz6e;6{4FQ zh?4Y+OVA0eMno-F={IIUU(yOaFJX{|f@I$mX=Fy5Mq!>CnaL3*Ue>rsSR4O2b?CD` zU^bMts3@$lgj$OxzfF>X}RDmS-6+%5)iusNL=MXd}E_ZUUuxL4~Ry8xnjB! zF`5V~gto_+@skd`^ zJ`#81EA@V8_C#$CPjv~w9{^$y`xaUFF0N|mv|I+A_)3&aGw1v2Yh2M%KwCWvK@?zA zqPl5C$yOaeTYdlSTxozxe3-5^b`7&OD*3nr5EJo9Qez_Z2MlC#fZ6RT2(m^FiFY*1 zApA$0r^!TRm+22z$!o_{WdqJXMF4wWjApp8c@w!~D5cv!T%6QW%u*>aU%j9iYG=Ag zYw3qlHyFB{9U7R|rcnvu1aa;HlYLJY`@>de)s<){q>ace!`~#nu20sedZ?B2#-G6T z2;a30@LOv90B?dAH<+{s+q#px>{2*zamM}wIPVoH#X4UlZo^UFsH6@_Uh9g&D|R>R z{s%KqZ**I4hFrs-JHYRBa???NqV}L3E6ViH7HPg_IU4E@ODRA8(WUgYLfcz+2KY@Y zn;rdXPnuqu8juy2w*17a-|Vad#(&mV{fsrn#Aof2LkWLM$5y92EHbEyBucB^r=>RM zZH3$mjsIZDM*vM3P}&51cjGA$#>cv$!w|j74cB2V1DM4+EX6y_klw&Y{I>xe5RG;@ zjT~ZXc31JbZg7W*F~LX`KD8}*@+g5cyy<%>|Kl50p$I8F(KbT9F1_Wh*YIB>@L#WN z$@K5{O3nmvdsyh&b_yqUmC`nOI&=-@66pB051Mq#R&^Wuc4K0?)yccwvJkAT;M-RM z`fWWPWeAsMea9QXuMF@!BGA8oTJ@gv2@ug3LF6dN^{5x7(MN>t#W?gOJZTCTe5zGO zlNCX0kLV3*)^{1~am?rg{~*voVF9*8CIW%-)_g)rRv@K!wD3F;0WG@Y* zaSzmm66YtqtA&`#k zj#eIUMuUWjrnIObShw+Q2{~oU2z)mxI2$91?Xi!8BL81rvD1)4)95GWi#BSKt zag5#(7_3Kw*J-Kant@K+aVUJ;tP0G_KmH_gR3dY3^Z$L0<#2uuF^$_oEConI~l36IX*y5*JIE7 z`+9X$>Ud1Hy?vm$+id<_g!-g+Bzd&wcx%L@UFLX+FJVyea9Y`9Kns{=4s^pkmCg&s zaD#l0VDDN)SX%%`WwieCA41hXYeY8X!z1I5P&^GdTHo z=qdRlOmD6yrBe$Kwm*@rJ{e@Rfb9%wYagZ)n}Jq!vq6RSAhR&O!Gd`sk@=+%=x7=i zI0jg7MK3;o4o)2%SM(sqT>#GQ77uS1@D~;d9S1Xc7Zy}_7$b)WW0#4JSM_42(#6*Z z`IZHTmd!L)u0HpnZ+mGXhQ29J4m^6QUJlSiEJ!&{>!I3tDomOqr|mWR6r0zKjTa&9 zBR96odcI&n#|^^cg+K>_)XJ%gA%6AN!TPy%i7fKJ`(VM$sg>mERTaX7a)O|?&4=+5 zGs?4azVqTQeuo|a1?pQ|;|pBzt5C;28!zg(!GSc7?PTOsOw4u?A2@y#d}ud# z&zcX3s(5>AxgQ*`=v}Udg4+Aq9yDpQ*Op)Z=#C-U- z8@XO&DKU#s^a&KcH6AeE`DV>Kik5GYfj;}-VgikcnURL?h~5GZ4goX+W|0WB1NA-S zjT@X*RS;pMNL|{&@PhFfH(m@+|Mc6(7@Z7O-`nLos0xtL2kPZka=UkDX%c58Xnf+> zwGrb*=0iX{UqWRBu&A8THSYIVAcR(dB{B|S%V&D%<3yvuC&NG@F<;i`ks=1>_xNeh zJ5CJ@@DfI6^X)GW_Qq>CDDUNY*Vy&DG0?6TWs}#8PxOW?9P}BW`^HGubVo7s=1_|7 zsw5V?+6urPpC_qKTYOt=xjpx-1dXX(Y*iDKb6>0f1Qre`VDBiBMu373l*}(S+I%m@ zYtG(&x+OxRhrOtuL&4)e&qeTVN~*4T`N1weHxISu(jNd>G#I<+rM_tT@x zQXz0w)lc=o%hX|zCuVD|>S%fydgg^MRGKWmWI16gGum5gN-2D1!+A5K`2%SppA~Di zV$j18=@gH|5@Mb592eV&1A-S~(US%ub(Q0BkUrZHzmTLw?|oxs!(b+w;ot4u>` z#uQS?z69=7o^>fgngq`#inUg}UEUIHF3h8{p83|g@9kkSziy?tD@L;E-!YDlK%Nf? zz02M^@lIcI%1)poEr^`^{tZ=5XT6&(?ncBCgTi04tnl9(HRUcTaN92RCgXfBm2+TZ z%PwDLx>evU{OPExUT}_3s)9qJimy?g7W5-mtau-xMM!$|D^1LmBO;0r9PsFrh1m|C z!K)`-M6V$h$$KSjUwa}6nol& zbAS*ED=V*5qq*uzpaVbT9?tZLu&TVFp(#~JBOL6@#}BUNAC4sa_vEDlCV@mfj4W{* z9eR2lrV>TAOqQ$mv7Z@6BK6lsTUl-I5nFOA?vLM?1FnF+k{^Pp-)f(2j>qZ{^f0ZL z`wj0NDB+(NCCaJvX@{5Br0tj#3JzBeAama)_NqkH4zM(=e;QMIoNvBg+V!&@&v`y% zT3`w(JX5YFPXDs1ih~ZOk3Fqiy)%rE4f8lwl7ne!8Oc$;w^Zau;hpNAT&Jtfc^3@q zyv!8)q-F4hJ?)b?#WRW-q}$6VP>8S)EwxOPu6+cHKgMdttZ>28T1-_U_Y0ehf}ib7 za+-UuRB+rw6{A?hFeq$Htm-%F(X-aPBJ=clYNk?7{_R0=lUBDvWwEuBGo7N9h;3;9X)RmPd*pJ?NYQYeMOETH@5F&IUH{8a z?{jda6zSr0{Yz=u`$z)U*q|V3ex2xB#9G@3a&_*qC$jGi(+6V0zA~}Rx^H`rq>!t< zcPrJ5q4L;npJO}cXiNhSsd4Y88;$-6^Nam;RAV1d%9;^-ofZjNVcZx{IGURj+6?Uy zenFjMR~z5f5)&j+Rh+_&GUq$N(r+{v(i?mJtA>80FESc>PRCyVhm$qAY)x& z+LpG^N%Db?>QG3>-sA)EM>@@-aTPxU-h0@FA!T^|Vg=|~qM)gCF5T?3GwUFQ|F&!ed%-bW$sp+Q2V$riCh^UoX7-7Ep@sxRzp0d2zP(elT2(Fk zO2<%Z9Yli0mh~&93Jg_CsF|B_yTcrVr0Z*s~P z%YqJr0!bN@ah)M$HtWIBph~TH-s1@ssz~{VRcEaQmILO`WDr^kC+H9s5+>7z0hZ}* z&BzRgytu(lX^&a;nguhP{DBm`Z0roPGrJ7C{6sBIli}}zU4CIm`uCR#FCs!CO2nRl zbio`7sJHxp!xJ+t`HAU}dS4*{&Oc15E(&o1y~r;=pz2R&;ar~y$V=sIRCd$}KDNHE zEcq%Aoidvmd%^m7-D*;w>Jxx@Xog)&(y&i@CY&Z-l<&Z<*Y#%HjV)8*BfK-BoFH*J zX5P($x%-D&V7=V@hG4fMd4IoAw`upEGFD+aG>+o4jyLH)NSky#$P~!PNOS82o8GPN zHO`8B!!CDe%~vRs!Y2)Be{+s>{%mL2WGb|wn&%TXdiV-3nT~RdFunNv+WNvEZ3Np4 z2|ZBt{z^5Uymrxnco?gsz8w1M&Rjqdoe)U6N5?YkP_|@ar?R%oUnefiL~z~3?xiUt zK6E0({XpkC2OWE9lB@zz{LH4T7-C0uxG$?0S09v1cH%|wQBE*HwI+>|l>dDi8F6bj!B zZvonRTcW9~zS@?Sip@!M1LVtrRF|E7&>j)T;<;+W6Tf!vB3cgF%LUR3A<_cJbS9w? zEM@c26iVD1JPgQ{2y}<-56h6_*}8a1W>dk${8@9))B4@%Tb6^PYJn2Vt1k z01HqoEY8uVPJF41OUTt!GU|x_lk~EfE7lOEJU;eNd7a=}Xov6mM=~(#mE`5c5JuzF zAB5bzHg8O$;W^EFIWHkw2PJX(i;dv+Y{emP8*i~^KpZXMV?h6=JMYfmyFN%$Irl%* zaX587h6f)D-RJkcT$(ox58XH27jN%e+6dkr`Lla0L%m(Q*xw$9TX?L}V_bXX-u{g* z^jLr7{bkVN?MeEk$L4d)mlNR!r(fAUw+$(P2goa2Ji-T<2i)HGfaMsr{{IPJS@rc7 z5k~xN&QjI?23USC7)t-|faU&cZs9S4E75THU8M0;(KK3fuMCZ7_9xcJE`2T z62SC9B?Zw;V;nQz8=suyW6*H2Ir_DZp69u>V-#13&EmneuuGwAYdD5ct+n~;Wb1=l zjzYWRb!C6pu1f=R77Hf1GzoBUU-r`avuYNYT+(L@--anWkD zcwC`xqy&Z4TC6;q9wi<>*Y;Yxx-92u#|ncUo)X&v;SX!rT2Llx7;g-hxWQ}B5V$n zmva*i8urq(?VFCeA09TJPTCx{TyB&ew%(lY9{zkl!2Le~OAve6|8Kz3)*_z2XV-K{ zc(d$eSnOi&WQ5!fbUG?cX?Kd2|6hP*a#^ROkaUYJL`NuH>XYO&LY>&aqMQ+O*n&9s zHcp?yfmv9DeE!oIR}P12)8I^l{dpe=};r8tQ2jupA&gJm-Vk!9X z-Q`*`rVe`}zPUo8?bVw2wT7KI1J04@c8H|^RQ3ctrXEC&)Hu$*>xyd#fEf8mNWRl1 zbA_XxN<%;_Ls)^5KS8+)zNBw@0avF7z5zXcM%znj^6V-9e0e#9Z2JD)#ddfLiw8V6 zUXrA9?HJ?8@q@P;LtX9x%h}QY30Phhlau^6z>?2G+$h~#^Fo^AmpG_G2~A$Q6+>4x zY){p{_|j)omgFMr3ZK$HAlis+`7(*!slyf;&Ir(&f zeWoZ+xtc_$*dw3YB9+!zA%BwY)9h)UQ-8|M|@Elzl`M^ zu`PIlYNt0*{Ep~vCV2|39HBb8b-t}Hn30f#YQ%`E?8`%`;rsm()NOP{k`3gMfeRt2t6cAoNw|_6A?8tL`f|xU z1cJeSB~f{j!9v4TWpW(@iF99jy4E;>IKubVrXq6B#2OQ{#scuZjfOt55+zI8&_L|2 zS^0U;kUk|m6Oee$ZIxP6tR87CySA)ZtbbPWuAg0}&Qv8>K!66A-?7iNid7fX zF8e029nG;b{5|)T5X$4B%LLcd>E0)VqnVB2MM=RM?)3_f{eHoeGpHiT)5 z>2CA)3Fp%?dbn(kYm+ z3cmiMUxgX2sjWYou=^-ypxkGwLo-zFuv=pg?;(}jY4=JZ-kl=m1s5YCBS?H+lr7PI zx9;b$DW1=o?ef83%mGqNNcboB@O*OOe?{~rmw*K z3uUJ`&oL@`LRpQZ=M1j9s zCAl*OxP`hMK{q{Gi~p!R_8?yYc#(bmazErrUNea=hpP&0PiLHI0!!rK%j)oI^j&9R z@K9I?fpnCxiD~V3@({tShM9n_F&Z@nklw0(j8y=C0;cP$%Aq{q2&5o>;c&<7z!-mq4cJ<;oJ`BUeM&^*LGUn&u`^voeeL3tnwCk`frdYcsnfYY|N94Vb zZHaC{kY+VdbrOSzZRj$0&M^23^d8yqmR5)*+3R#w@U?A^ilX$l9Jb!)0<()jz*X9t zZZNCfe9Wt?8AQtP;Y$wX7*5#x%6a-T)~C;7UO#j1-4m9t@zwdk33o?=&F}@=XcmII z_-NPK9!tCsc^CHj68Ynf;FFnQjHejue5P+@a*PP8IczPybniew@k%ZDC=G#zShV5s zJ4DSfPvXb+tJ{DUfeX&?|_okhxTKG}(pBo4teJIny;vG&gY@5- zZF^i6#A-xb;KMuyT!RMj8Xi){(XNHZJ1z>BR{D`fo`{I2TKzrDC-R=3|ClK>Ngbd+ za+XWc+f+n7er^^y^p+oGCIsT>(EQ5*Zjjfi2M>p`KQw+g70X?#18J7nTaPI7ypf#c0oJFw9^m$g%aqy2e*$?w;~iGU@E3iE zgIF-gQzR;wIbwia8y2kAZ}K-_zuWN#^!5krN_()seS%LG*+AmJF{KYS@&T?qypBSm z$bvL7h{QXYd{zh`xCCwiBd5>A6$PYO(x36#-JyKG?C=LDHnMRaXmXbm0rCO%16rG8 zX-pF7x)Jn>lIzjdoT)_gf)u}-EuOqT86P6wL6qe{m@Ud0BpEk{!E1xJHO zuS02Kr9kNzpkWW)L-MrDtzAdfmfxj zV8LE4d%fqR%GfkCkW(E%B(h>bwR$1t1RPI701AtD57^<02>)4e&Gky-`8LgYA7aFM znmI{^zi})!U$THPw4XQKs3V%xH;o`R35;1*5T1O$CQh6xkb+&E_INqdp-Smz-=l=$ ztkiSZ=@$kcGni8_hqx8{gaYZ_45iNx;G~xntN%&T6^Xh0{aRN3*%-)eDiUWFKBfnc zQQ#^l<|h|rxLUGjPEAC(kpu^%BAooKa??jTpl$*JhEE^)Xs5iX%AO_37CZ55K)MMd zzqU)IS}^;=Nt28Ga>JM)br&2L)VT$GC~v8+Q`D$fKjM9H;@jWE$40sGvowm=RFzjS zJuWh+S*Go={9=rvcPN)34ZYwFoVFkCRi6W2E>J{eMx)}A{$_K)gBh7p4aRbqKIT2k z3+keJZq>-PVkKtdM&j#6)hteNfDvJV?8fU*62*bC6S#ODx(!#n zV*a5(QDF%m>E-_UvJSo8LAu_sTI`|-t{S8{(6 z<=U*YUd8v!uY%Q!>TPm{H1U-;l9ap{uP7tY_U(@qf>*u7swQOhpL8Iet<3OfBwf=7 zn21PM`gP|Midf(ha#Hxl9wO9#X2gA(U7}dk#6h=za>?RhF6Y^RZFyg zpJh_xe8wk3^mq&SVVhgUZc;_`%5+z$as($SILlUb#7>yD%uJUREJPatr zDH|}$d0CJBnfO8p`DcY*f7fywOUs z*8Z>jhY%#y!zRNjV*8yRK_qqO$)rgJTzRGNWKq^4B1FqI39dVZzYh07? zhQ!4<)Nn3`+NM_b?Y6vd)D!JXx^VpNx$@Hl-bqYB&dbVpQcCT_4IiO>d>7MM$lsz< zP5fz(#gDEOjA3fE!ZzK{`SsVaS>3GX+W5yW<_;0Rj?}-e=O=V=n9>9LM4naEY&tJa?u?D}L4uScG z+i(gb_)0*M9UFt>4R1(iZu}RNojO`eq zG_fw`Ca#dL#j+#0wq@|fEHULK&2b*AEM2Dfbq)2rZJL-bXi?*jIH(Hr@`%CmI79mcb~T!|9pXMU z5Uw$XgY`?ucyzm}e@I}=4>eBbIK=NbPAc)cUt;iCm6EER#LzA&2R-Q;?#N4xW(Un8 zxWpvwSLj(^+-DS&rjro%UHOtjTcXjGx)>P&+tR3u%oV z7xg1V#!4bGcOae{;ok)E_r&m7H-nfw`=fAepMx_X}* z1?B&DHgkJRb^K$Y9P9VbuZ!t?3sagSejQ5!c#E}FZ>iA>`qe}R1e8>&Y`_A^hYV5@ zdyei(7a#aa+Su~**!c}(ZA{E3yjE&OBRbyY2Pox1(^=`z&djs~H}lIY2% z8HI3ap~Zd6Wi`C6EU@A5VsnCd(}ZN{6AuMr)~1Il)rW;mdaMn$<4vC|@_@Hn;+W<2 z5PLrL)~#=OTi$-HBHy7e8AyYPDH9J=mgnJuZz-G)RI(4Yat~OO8Dg);H%4Q(?9rL(qrn^4;A5u16F!nCwRdR1Y7* zgvah4e*pOFd4T899IP-3zL%s{>U_N*dd5Z8XFnN*9+T=BadLiupYU+weIk83$}#nV zLE?}^DVjz9h+k`jTrZpZ(TKp~pH#Z-xV(s&m4Jej|2(%9+@43)MC%E#$FH}pP68< z62{`W!2YeF2}H-Pw~o*0ka(?!EKVmRUW?@8i!?PbR`p79#su2mn3rTPjc(Y{w{K1G ziTF;{;D7y)ccC~puKf5<9r1OsF!xh9IK~7|P4Cp#32@OM-FD19V7VmjhX-YlPElW$ z41&_X2zXtoA$<>6zU@lUSp5%RsabQPvDO>xC7(rRNwVJWje6Z0K&{25top?69{h>54i`Uch?)IbG-^b!u1Q8G@Hf+xJWhxmYyd}O?inrqd^&m$y4l*I~MHmOC ztx%3rJg>B$Kn7R}uBIK{(Txr6Vgu9z__~9Y6Zk}~?vTgamx%9`vW(sWMRAG_jgknV z2yBN23JKimzEnEtP*HYc&1010-ElxS=R0dtr5x<-``IwQe)PZ{PpZ5UDyKPAWqnvU zP9e6t39Wp0a483W#@h8>tzFQOG?(I^R^D*_#Doo|S4@FlJBR-^KtMC@NZC@kif~z7 z^O@A&7!=D>yt5*?$T6)3daY9C3I7+dny&&nx@==*u9fZ8{f*W`I+fLEe*ccb-u|s? zOlxyGoMOpJ%K9ddaPq5m-KmdAvB0(6bRe6^z?f;cz95s`$NOTZCbYKoCs6T+j(GRj zdauscER}vk+jKjUx6Ye8)h#BGQaTM*&vt5l_K*->F1UZ=7d8$bCExzR)+uB8E)Y-Z zl5sD|Bqd**C5x&kBKrE0O~jP&DnIUvo#mjaC`GR!Mws|GD&DwSh|kUDSDB#NwOQ&w z*qdR?jXYI2;l=|b_0*DV;CZz{oR46*RWu@~7qi8NntTWp%T>Fv*t!cUYE(XRcH0YZ zW$T@bvN!J&leQzAu*EI*+S<+NnA1O);pT42sW82EUugqtz9(sd%04UTr0t+#Zj@1+ z`>HEVJ6F&e-hFKUc;C6(QJa>D0IX zN-MVQc;@3JhW}4maairoRI00(4^$oJ8A|8d?ro&u6&HWKT(R64Li)i&oOgRRFN)83 zzr=M3r#10DtzTWNMvb|cO$JW z?psiE#nGeI*4uwOzH(FhKOWrOrA|vycmzt;dZ?e5{r=HLFUscS@ib{z<}GP% zlr+UmZZxRRaxKo0m6Fu+G_;FFIZ#i1HQ~R~iVk_c5&~;x{r^^4vED7O-zeFwXg=TB z{nm#6aIdn9!e+0kmo1%|(g4)8r#iy*pS1F}Uq)q!SX<`DTv#9y^x`?6ItU|<-fz(O z6@1XRSG#-AbQGp5)qGmOZrpM?na3j;ytey6Ef}~wY}+Y6{!Na%>HbLW5C4Qi2XHYF z_?lGC_V^c-MHye_jLF1tH{$!5V=qgxZM8p9cG=&4?z+9dzCx|sCxZf0wkQ8Bt%wsm z`rp%v+@rGzZC$&krF`$o&n6$6cArfd1wT5UexGc2K4V!}em-kkw}1Y}q36-X+@~qK zi+R^g6}kXQS4_E3w;WtxZ83n-{ywd+S6r@;-Hrl)*l0ngbUcx^$m;Lzqv(y4d#3pV z0GW&d1V6oH+T2CiU+~RiYZG-1ov*0O4+|O?u#9iD$0@ZNC0E>j=I=QFdI9`{w}10; z&r`y^GCUjkhPk`BIJ}R0kemku@@?2OM?N6s9Bj(oHhj?|Umzj}mtDS{Q2)q}YA^?1 zsJETi?Z_ViL4oAtCC4Lk0*Ywp2z7fqC>oCfr5qnXz=b|Fy$(U-B`9%g*9YIXDv<>B zNMg(kb0;H>bO^0Pu0%u;OSrHP7R1+tG*Va^b$Wj>O}fv)&Gi@7&1xv2h9)T`Q`f`0 zRV;J55E4{xjDYG|7=goAl2Q(OYDpvLn#ou3n^9xG@7{H90 zg%{5+M;wd|mPYDr%lLWp#bN7pye!L+5@KQ@WPhzrA*Uy&%kW+}_Zf(c(@Ob5f<LH5&zun}U*;00)++WFWd>gy4{nNnk~(1BM1Rh(XhsB1Hk7hB?q6_FQ$ zB$%Yi-RPFCI0|7i(h~hwussn;`NT^Cyg}i>T<1VOLwIroSG&JAVE_r{5=F%HFy=9N z0FaN~A=&OHRc69X;YCGQz$7dDGafv`Pqmb)mj5N0heBAnJ~IDQ)cFhp(T?OFY!`Ri z>4~>LW2D+)lW2X?C+?*4G$M9egVZmNWxp~M@;Zjhzs@6rRBwn8l?W+_nLX?Sjg z#wW05=LU@nV(~eTigtLsNSrQ~eS)Rrj8cqh0Yw-=(K580R`1R^v6MKK1E*U4-PxE~ z1eN1si7^HEg{V)sq^*gY&~9u4P5mQ0wm$wRWihIE>cK{9M}ftr%R;#qU4)!f5`(=a zWRz>2%u!Vl79Q~@=*w>5;i@Q?!BvKTmp$U$f7box*zXT61;u%*P3#?B(teZ&$$5nm z+0(8kpVjocxdo*bp`hFs-E`R7_!5oFP+tdTTB~Awfg=Bn5SIIuE(5P;ghr7uJReqR zJ!gZYi%{wx6Z{co2c$wF9u|+^b>wtVC!Kn9+C>o=HuVSw+?~YJSR!dE#ug9X!~`{DUnqj$8^7B~+3H?A&yF??=bgGBezo74HA^x7(chL0g zom?a51oXM?5Vbx$|`lk^XP~&F<;pcd_5aIevU2hY{=*%HZ2)=(%3yz^I9+IX$n8FQsEP5>ytQ zG$$$_YL?8h?-|Huidrp_V!%9T6c4b^6Mt4jJ2f5Ep&Pd+P`t`0%C6ByDH&DVvoSK^ z-k4O4{)o!)Ar}o5jZLy|tYBZG!#4K)T{HZo6c#|YOaVG~%RSFjVn1+ZjQs;=+Gt@9 z-?M1^k_)m&yxOE!nzgKXD(U5V+t7R*6Wv@=$#d0j(0Uy7vw1@(TBLb|btB_(T#wXC z3U(JlYVJLJo|TpDQ&1LSnWI562%h8a!@ccq-6+AJ7Bh&EI)A!dC*6gPTqz9PlJ=(G z8uvSNhe==J`r;2z@>|NdFi)8N*|+N}E<8iz%Xh440;)U1V6szi4rac2Q?x zB(9e8tS}DeniltRLWvn}JUaAtNdE&yL+6%UFyh4c^1v(I&ln$zl1a0LLTGsq6bN>s zgx?=o0|PO3*vF6s9g8p|?C`-SaTi!$GT%fS^t(D9-;%I?we2r;=wl9GY!e8Rb;U-T zujhElPFXTvz`i@%0Inoxb;yPb@JrC24CQTP?0&W6g^wbxrQ|y;RCu3jeyan0J?#mg z+<#Fz;PgT*1cAvI*Y{M=_phOCa=zFS?i3pK>=HgEXfJGdAR(?RH=ic~+~O;nhYh|b zsjvCWsQrq%`P7m#%Gq|M$CeNk1oib=!xRDobriO8fUQvI{rYZAxR>s1u z?=7H4c4G7cuO)UMh!WZ%=#;VrNf8Fdw}6x_zhW$JDpVv(KsX5>lzh|sL9gAccoe41 zpQs4xFBpc?9_4BA**^q2>l0=u8*QFqGXg-1D8qY4ZN`p?S*T)Ia2=huY;aKFL}=@z z?qCeU(~BcwG3JvQh2?8q&n}LLzS@YPbL+k$vzj_b%u+PG%64GM2eTCEf({^B4xkB$ zgZWy9>smx}L~mZgQeH>tVL1FBZ~$Aq5v~`|g(IlzWT5dRl+e;=UY&Rm;SQGvW{;ph zC_YU4SR+K-F*zT;IomuC4#I;+*e(au%7ue8{4Nkl*wSB?j$l>_B#yO^X~2R-&Z)fH z2ZzsTQ9XdLDn3IPsK0=9Qdyc4xUBI;OtG8K^gv(hLX(0Vb+2Ih-FCzEzSzFdPF`rD z0$_Iq*%q|62Pc0hhB}5q`+DO|Ea6F1WE#D3gjg{I?UBS)uy%=H^D8&(<+Q?OdqH&a z=&{8z0%&P~AD=^bi$kKWASA+xy;d0~mkC71Rv{an>|f$syP>n<=Gc}Vc+>Yzp9j9H z&zd?hmR!&(MmD}fHgVi21DLYDx`fmeS~V6~g;U1Mgd{UeQ<#SW7der&7U39&Y-oEV z%O&i}2lgG6hHaelo5VWS70z_!zY`RlyPXnQZ01C5?WPA{Hof2K`O8~;-mx(Ex`KJ? z`fTMu*N+m|Ux&nSqDFi^ABfnYiX8<*0Yb_&7CAscD8n8Z44Tb;F`Lb;5d2^k_$!`M zu$+y{2gA`KR&Ip16qp?phva<8(pHRA=Za=6v{vT~nq7)x(oZmE%l%`O@N4sn8KKJz z5Q5_Ztq8H67LSiE$T}!Cqf3c?krIt=OTop;j+{xHdyw$17^q0izR?3JLt(Y|172=a zp%_AVcw^DeIGbp>bST<}Db)c_BaWoRK1l>Rzzb#BOp4aA;b!;xn(XSGRMJTm=GRby z-R{}PM(l6_`#pu4YJ*M{SgBd%4i{Nv2tvDgfp*caczia$a-aj}x#%GCdV*l9D%iz? z^p`ZBaC~!ak6=@xKqObrM~-qlV$)%i4(1&!w4`|@Sbx_Q+8OywqK%&b~ zrrAKV*+53F0z8!GH*0g89_UnzE3WV7(bNi%W7ddx;ji-$1WiznZu(q*`JbJyH7Vuy z!2>RlL#4#MD?}OC2xseu*SOdUxmDt6IOU`Q4bI7sOHZ*-3v!VZ{$~+aC0+rTRN}^9 z7aZNR?;Adf96-_xkgX3lC!j>@r;pA8W3#ZM!pMK4Me^5Gi(KL(OP=3rKX_UL-wPbe zYd?IQaz{}_jO%{xqD+}B&Rp{$uDs6IstfyB=cCG*+6#P$sE^iau*R1#$1(n7vs|-q z4fB2m`~&Lgjq`9ttC}=F5@QFjhkmfpfdCd((jg)Gml^DCaS1NT*c!w$G5%{yQ1GR* zz`v3mcJsAS;$N>nKcTd-JpX|Khz-pve)j^uco9d^i8Y%plblU-u16Lw;@91J3Mr%QS`u;FU3cHlGXE>pUIR>t(C`!q_S;Cv;|uZ zkN$W?9fbj+xP!xg^I9I2ekb;IR(H&93kO==;THx7dL{BdIq3)JuVU@>cmt_P=fwri zZO~BEBEoCY=QHa3yLop*wmb3H-4Z;$(yQy1ZS|DCZYa4$g>FN{sR+=4?{UZ0LZDIY z;S7ClkwWC?RLDvGPYF=^2fIU*-yi_m@a!?S8hotsW&_6CU0NAs%6-I-XM91MyZ!@5 z-fp4E<&&0_JKy0*pGl>H+mdf@23uYg)`B^FcnqS}UjsbpO_a+%<{_4tWay;0dH!X- zlNhimPHgBxd} zc&%?JGUMhl(s!ZWY$9+LB7He(YP%$UYKi;?JP)|!&`PbF>j!hxL zUSGu={6!qxd!R)(uulcVr~hDTx`SP|Kuu8>>vHy$67Z}HxXGykBR_G80GCVImpOwr zsNO%zy=MG&hKOl3H`;u%EBH*{SVDjiT;) zns0Ax%Y=h$l!1I}RAU*TXgDtLQ#5+gC`WM8i9B6f+PrZY^^ctN6=t1n`K~Vb; zUTiiwYRCi)yE|eG1hIb)N-ix5Un)Zl7WG9=_Az31`fA)_y|z(Z^2CL7VRJ{Gm|zRu zunxlZSe)1p%Z#SA8`vP=GL<^!9`1ZC7f}KZ)Tazo7cMVO9RjsSB3b~t=jCKr6*P8e zvg1$K$`rFI3{Djk%LQ76+37$P0k)f7`%_+u_cxcPYp|`uH|>g~2r8b> z0j)~m&F*9P%jlV%8Z*Om7AU8i8&F?Nvv5P&CO6@(m|+O6Q|GKCobi6JmH$~UdBGv` zOf(m}$j1!-=OtIcLV8r~{)fp2zrv_j{@r*J7o|kBEQK|!ydPY#p$nMdwe%NWT~J?5 zeIByuu!_Ar`g_NVi35g^_ml8~DVF3Z%dbhw1urx%QdUh;hNCl<*H(=EZTO)-!SIM( z|0Q-`^i_gaN(436a2x&dgdKF#0SZ?j4z!F#iCHeu=VD^~g$x`0Q%i_0Jsm|-SLB>l zf&*?ZEN$mv*6aH{Uu=!JG`+#NSS&aY|3MJ{Y19k#8y^PU8fPy?K@A2hSK%B1W9UZSFzcD+pCC_!@gvgnN|2x+w_w1oeJV~Q8BpE zFaV3({%pL+kV!v9#QxnN@nM8@FK^9e-#V>)@{7x)$i6~j)p^iyIGodb(ZOP2Xyf+b z_qaP)PE$#8Q#?v>Wq(tuk$xEF5)Al(vpH1X=;1*zJ$-`OXx?3>LQ1o z)K^6u*-slvjd}+>KJ3p{oU-mBjNGdqcqw$btio-(gM;Rx@m2JV-g zTjkjkgn3ud9uHy<-@W+q5BF~O;=|(0|D=`omb|%=A(+#laowtwjv(+;5;5T;#ut$= zsk``#Lx#S%M}{vv2x3>2(w@@0O}LJ1sAfI)JfAz)Dys384!m1)*51}EP{|aX(Ba>C zX**dX@-O)8U5)n$)r<6?y+whbSJc+ugCely)v??)*-v zzdU`(+aJpQD@Y}6CRht|?AfIIcdbRE{B}Hu;(M*N#&e6-vdHv0d;jl=f^+4l`mn#B zssoC&vfA7)Fn?!iJ*!dnnW7InCgn+7#bQa#td)!Z)^^U;eSYF{t6lVAo9F8GWb@nN z=ZxPi-UQzSXgjTBJG14o-+B&MYd)3Dtc}={`lkI@?w>Q`$)xu+wa&m{_BoH~7C+8E ze~5$)$wUENFvTYhS|_TwqcnS#=7=K8IcpHD`K1lV&xU@hBU+LHzE~ctpIDVL6z|^4 zcG)#H1Z9k?evhH0?K3XVb6;o=7Tqytu12|^i&W=iSh^h`S7_1{SeH^B+M{AtG=h=7 zlCyCNL7IxHjoenb_RoV)k1YzFLu`7Kg%&@BrsgfN0IJUp%R;%ytKP36=6POOxof8II9 zAjxEK?RaY5?{hyHsmD5#G*pv{L^^hfY-R*idlWV#{&lRV3o@6|DP*%6-_P07<{w6J z5@^=4dK{&0W`8*fwP5&?<*~&u)saVGC^qF8njJyam}K~czOj4I=EeJ#jZk{V)5TQNhX=UkHHw@ zr$gzlV@eXBgNM>O&uyNjf7mhn9{^22vcGT}8ASxpnscrZN5aScA;-dcDJ;jEbCecG zopatfM;>*4BnbaWBta^ONUM+Jx}@0@@{J^EjWp7revUNBp)i$vNFI{xd1oGX>}iNN zb^nQ}r7_9=GRmgzhG|_i;qABZHccnY^_Q= zo>=OA;J)w1q*=w@i1@g0hX+;`N;8*h|QYQLp2 zsr(+j+U|7s-PRiC-zJGQIvSkD(?0^*Nj3e!jDrp(r;y?2b$r1JS0I$206yk_Es;h! zHiiwYsI31hD&x>wR@M-rw9G@5Yngx)1eX9=1~VdB5X@ruqMnt58z<7yjfzH&98PFy z#Z!kkpe8k{z2i3fn2l|SR5h+`jatm{TS;O9IEKvcZuy8wo7~nAe9X-u>-Yy4-&aMx z`N$<=TMC%Q*cyCLQ9akWP66fElw{l~D09RkcsN%PM@5QN;b4`dEQbxdypAWPn?^L| zgPCYp!x`FWq*g$8x}vOZF{ZjC>&gPNM!oQMpOjUjGK0Hsqy{yo>;^fyQM_O|4SDZ? zWwFlXJls4lH`06JZji;2X}zyZUuM$%Y~Ea7VY`5f6C4!y)cihdUV3rlSn0 zj9~wo-%h-@IGpG&kKb$vG#DaI#z_I3=VZz`>U2X*l|w>8D@r)NF%Ce6Xk`I93qyoO zF~>B-93|n9Hj1H*WeAj@0!3LRNd_`(3}b<1F<}Zn#Fd`G%Azx@Xhvx`mvc1ehS^x! zj=VvRk)~2<-w2}9hB&oi8BuFVMB)*f*fl6Zq*!TdNZzu!5;g9oB2SX$+`RY?Y7R>% zTTBma*4Qt8U<92{{YNqSRY!920IFBr$vJE|r#X?stE!ohtHKeEaYSZ69fF91T7?&f ztkof0QJ6EFv5aWQm9AJ>hBO34x=i-flBzqafkp{R+To6{qb#LheCLhbm1cK5Qsw_S zzR}8ayiy&?`;obr2fbQ$mX;E6NIoQz58x!nm}}JOKzgZ?@1g5^Vg%}w+9bv>{-l1| zl1>!Y6UUcy3#-3fmsI~z1>kx|lKuLj&bVQYIkC#Q4H4s54|JIj{*zVcn3G!HVqJ|C zG-1WC#z4U<-tZ>WD-IpTKhpb*6K*JF?ge24vr?6d+9if0g5ikdvLKCO=o=NJppNsbQswjDAMj@TBX3X5Xh02nQL9cEZ2r;bVNyuRTc!w z%7ikMo3aaK_9D+cOGci59&4b-x{h$H!_ez!PWtYVK6}Jtm!idoLH1#feMEX6mu5&m z_K}c&P}&}!Hpp_$wbYh8XNq`}M>~?^4rwA2n*U%m7-?J7#_6^su$eIzmy&B9^H{hJ z`87{+Y|dUcC4}=*N1KB94{sDE9RqIbI^1fG(}Zlf{}{)FCS(q2o|qxr-H&5bgx5u# zrJw_4NU*0;&<^gEy&JlZTj2eo(4442_x`UqwxREvkpmmyxP>bOK5+kn7u?_nN4UTP zehY@Xg5eK$xWjKzj9dI;;uoiQ#wEV+TYN*BDY>cpu;mbr#H4*$bl={ldCWEagIqnC z-*QTlrr%^5HZxgBymqn@Gx541<)Ce`eNv1I!l~&00ESS2K~ACHI7`Yyo;uL+j~+E- z>gdQ4I{sPZzBHF1Oddy3%|VW}a!%e?DUep+nlQCz#UT-Nq-N66mbpX9?rp*Q-BCqI zzJG)7-S9@>=Mv>%B;p7S$-qAn(2@)!KJg4mK;$Jq`N%gu14lRl7%~v~BV69{53&5@ zJCAwGTmA^HKqmOG=bLTzQh6d*Ui+j8U0A=mwqc~T*W#DUp4k7|);nQI&d&%XiuhFL zLJ4crm0uC2Pi*JoKqyCL-&4>!;e)^&_y_T+drU??U|XdJX6p>g}f;OY=| zyIq0_toNK-wcl@yYAoeg&@{@Se{7V)Li+{~2|)&800YINyaPNyhd{u|Gr$E*z=o*2 z&7-`=J3s?)g`uj5Xeo}9dk9r)iI#ggZ%Yr4;0M3i2kvMHemFjj@SA7R2p6jsDB-Q1 z2)gI9L5N708~m+vn7VdA9)_5@mLP{96h9&(hp{sUb2u_@D-Bjj3c-4-^m~Z!IbUsf!ryj|Yy-~J*P&tPfu)q*MY@@w&7(${U42MV%{HVfULl}+Vpogf!^^>4) zct8BG7>y~4`qLnd!9Sk)255K@WN-#GltVa-Lk6V7157*vz{5HGhsLu;JKVg|%fkz_ zhtpcI-E#;Je2JIC6W&S)nxnaY;0GAw2`llbmtcv0m=cl@J}rq7+FFN~GctxqK2Ur< zWw3>R*fD`Dpnwz>r}>AgGeshFm2&_$R0PN&{HOm{R3+hg5L;Q4DwM*rXe5U469j^a zvwDwkD~r4X!B3sKB_yh9@I7vBZqbv!c-EPeKI75VHjZhhwswG!Cbfb5=jvP5tmqy zUlfrI$(VU_k@5o&G%UafY&@Q{LujPN#+$|i+(`j2O2o^6(A-G`h&-MYfYm%oq69}X z3ZL-7B9SYJ+;a-hQVN{VO@^33hv-e7fJgtA@C_t+q9|#T9-OABTLpV06uGA%(!BA@e-J@;@V0nJhoFMB?reu|_$PDV!uH^bz>F%xw8g}v ziDRP}i0H+P(Z7s|OvUiU{NRT2g9iWn{07TBN}ya#0uX=*hybC?0HDOvJ9SW=#M6IR zO#{8g#1lp+N>fWeSJD!1XehnSj%$h{M*L5P?-9tBdUGKO5Jf`gn@{t*_4G{r2jO`<|FZ*vD~ zf+lD>vLtJ(E4#9C(5gT}6i4che!_~(=p2VI9j_peOnDExlh4FRi%MBZT*(jo+=gw~ zPcV2;2aQt#2!KUBR0u_Y42{tR z`5_w%TOW;h)p&H#6ZO>NAi4kF)Ko?cRWd0irko}Y>RLyjV3>Z{IWlafn z+jec&H3Z5f-Uzk4v0cs0gHz4?My14_*zk!|d)V}-N>A-gkDx?L>-C`J7F8GI&)qw;?E~`ThyqP-b1KfMyuvG=z zzNMwhdo6wb!;4&DAVo&GbwIHR7ObR0}mtq72Gy#9JNp5-m}e5IeD7MUTWK z)#CHH#r+B0n$iDDP1w0))eeldhJ<4vbd#e=h6<8kr4R;S;DQ&p&c36i(hBZWxQ21) z252b1TSx^!xYNqZ(`#Hj%pA}=?Bxl})6T?KIn+b3T#sKhMDOT_s?2Fnwcq{y4lr`* zdG=Wfb``$(9o6`q-x0s&$_C{n>VCoN1a7{;bO=6vYIZ>fY8u53HZtk^ha+tVmz_SR zDMkNR^lhW2(zeoUhwutC(}?08owfK#Ts&GECTQozVGH?&a8Sm~a0R{|={kJI?UuuC z1Z>IsZU_8jd+4d^014Y}>6dPZ#zm+2oy#Ky!d3ydq!^EE&@Q)D)dx z23sJm*It((^g%@qu`zjBWxHUh>s5Vnnktj#!`6# zHJo(Fy&&X4q6w>sY%3FaiwR*NN5Kq5iH4B;2W4RGJ0UlZOpjs!bK&~t#&L#UC|Um@ zAaHrn%V%m*Bm2j4+--IyD)3W{IyZ+D=_p|dsk2zC6xQ#u_=>H_MYO6MhR8u|IP`^9O5~yE*25V1;TcC9CKG1Gl zyaTPnc<*I<$M<~KcgwTJ3v~s3pc^!H3UZW(ehj*c6^eG$hu$=1JONLT)u;bs_lalS z-DNHL|QMsQvQJM#V9C7PZ@3ag;YodUI^u0 z_yrlKz{aCfKE2aJ#Z%0~-m)kA&Z9sBFnh9B`?f!V2srz)cYDm6`?n{1I!#K7V6ozO zieCz&c*yLg@P~!aM2Db<#-TO%c8F$cE^*_dvSWx8VhEDwipsYWsoM2i-*sTn_)8WF zxH=f9Y8f0@`E`+1qCp3(5|+~s7R8@%>yp(Z^C@2P(uR%gM;;IpX-V^N5GTHy?yw7l?NV3Qwg2a;tm-h<^hAVG~$zV6=e) zoh?)7@FB#A5+yct_HS7+i~ovERK{^4NM^?VDHBN&B+8U3SAMkiugbq0D`(QIY4hel zXgGI9Oy|(2z;xn-3PdOFpEz_5)%|12bRfBZ0Z zS~-CU6FS2d*5E^p|JpKhi>+?7Z+P#z?N%+Ewq>?hk;3JQjDi0Qpg*B3;XD^;U*zxSy`&avRKivBK+0$pQU%cF} z`|Yl$Pv5_M$shLHiCo~mfA}8eyT=nHKY`P=$CH@-I{2MwXMXd1GCX>PY%>CL#=c=( zU~g#x`)5pAL}BUoKLiHNnJrSx5CeY&8h9Xr5}`v5gA7Xb&p8hcgieG?DWsHzL1FmM zcoIsajY8jmh|M<)i_g5IplB?3@&jbk%0k6 zfRacOUXY;%9FAC$$}O|JV#_VN3?t${-*j`$G}wUS3>g0i7yt@8;IP9^Jl)Mx&pi0p z<0hQ==p$!u)5$p}JhZ*Gr#<}eqmOaVsr21W)(MmkKKUq`;6L=l1J7&%)i#hm{P-g% zqbn(;l|$Vq1foDC4kT(yDmt``T$zG|kwqB6_Yr!`gvE?R%BXrBG|Buk%M||raVxOF z3fq&X0!4KcR!fQVltP>u>!Cu$hA2>r16A|QG-HYS3^t&KYU)4GfGBFJ3t`h%G<>mT z*IwziRZcp^Xfq8lNM?}15w6?<3oEbmtI8vy?6S)(yi79;I3#A94LY8NQ%q@Nnwbte zR|zzaKJ)y8F~-wr%<;w<>vIo2^89m8K38?@=Rg0I4%8f@(G6r>KGF5F9eCgMqwzrW zNN1Zv#0@(UIT=0+l1tvYRBc2Yi90k(92H|tG0{w2bw=RP8jXJcczc&NvU^5LeaU`}8H0QkI%{9RY^NK9RATtcT$Y2wW?AUPA4LRL} z^Gn2_sJ2cz>#QS>$@1J|@;%8XS6y|-pRC+J@5u8`^zt-MQ>BE0H{CwUL0=%u1G(eS z_>yinU8Hautq?agG0rsHGjY^v)~?>lxIq8q#t+ggRlI=1{sJgKm2e7g#^MTs=w_{f zd_^n@c}6%!<&uJ^=vo$O3kE~Qmbs|wE*#uTU95o(YHWiV-{>4NkZ}vd`~wuP3r8?g zca37)!WPc>#W1+F48oN|8{y~%?%071h!M$m>{tgp)IqbEkj#1lX~#XFC=l!QqaXK> z8O{`f98B%Ud&!X*f{-YX)wH8K+yPoVvM9jzMPwT*0$18T<&ZcI&>`+|Mtib$Ah8XE zkN-&8AHg!TV@xDKJ*Xoh6Dbh~6-a>~@s>jhcQ~(|2t}cCNaY~uHEYx;Mw08~jbbzn zZFFuM)u;wGkWmaW2m}F$UGL814%MiGc=OO0 zqM$Pnd?YG5+o9gctdl&HeeZ42xh5DHWwG*^aexLK2pb=g4Z(3zeu{hutYDR(XfOkR zr_u;~;1euc@lOgZ_|-Y{Igzs^=$pu57NbbzkZetoT8;Bs1S9CR5`AMWmRwrnFc+hB zr3-}E*oHT#;SF&);~Te#!@XRXLT3QRqqlH{E}&7;Yh6nl-}uHl!XZ;I8DLCjI@8Af zai)4mhhrl1sZZs>vz$KfP|FFHKmHNE1QE()PmIW<{;`kp4X}M|bQU$jxj*>nGa}Vu zTGvwbk!aK>Sbl`aI0M9kuCo7iBJvEDg(762Z<^>KA`5a?zkytGg}XKY<9DNs)unvn^~XHqfI{($Z`Ip zs(xg1XjJWHRMi&|X{E#(bOebyZBn&=n53-{VTLlCp$vBR@vQR1$o%TqzZd+#w`{#_ zuxN`O>0Z*SA(~{2xGE63Mewd?b4geT7mk96&>G)B*SYLMjelID8{!g|D-xT4`6{-) ziM>~1^NTNhHKxCb1w#Ug7!KgUgJPQHEP_4D4t*?m!Ny52XMrlRdJrn9&P7T13`IVa z#AblwLT6}dh+K1^HEcd`| z)4{4wS>MW@e{?NDB}U0M0%QXMmAc`jULQe9SN4=w)4Q~iU(gM+Hf|k(`e-8^*z$nJqb(J7xBm)`; zk4u6!vk{em+TnH|_1%1e4y*q08_)2&-^=k8@Ur?J;rMZu&@zo4YR-}A_&7Iu_zi1t zV;kIH1~>oOD?8aeO&r${M=?V4k6wU-^d!HlOAQYyz>L?I?l9Atx*-&&EbAXvX-9<4 z@pFMhv6{S(o201*zy;Z?2)1omkX zPH6vxr@>7Vh6i!wgh0q0G=LwYWZDAhSp02a{B+2V&EHcYkU1bwQg8@2m;*MH!|WVj zLU_eLWJ~@O-rsaxQCtH#oC8qcVK<;d=1AHJEzmZILm;k~iddc-1tLezK)i!;+>8z8SxO`yNc6`3tOnL8#MNz8;ItpGU|++* z;@e4~s$4@d*y8(fp)RV50hu63ARZ?^RXd=={mr4~RGeN#oaZ!3_kxK zpYen}?&7fE)q&{56K0xDr%}YJR z*IW`qfrzJg3gR(jvD9CuM53dOBR7bHr*OkJu#sCbWT!NmROlNqPKZ`42t-^W0SK^WL_#r2G>{!tLIgoRgj7mpWL~D*kOPg4(@J8J;6(q#RTLvo zluugZ<==pc0>xU!$>HjSiaFFDKhC7F=w026(?>F-Qp{SG=%%aA8)a2uF zNO8i;Kdi$Tice?`L@+jmLnueo;Tc5apgcZO$yl%)Y#3_LnS z3VLSh4bCwN#5jOl-f)Oqfg#=$&BxuR-C#)3K#Pa0k5Uw)zD-0s2v2g#WJ(x{Jz6J9 z_@GVXqj;i3Y!-;8P3D89NQGW#ruamFg2X!-=%KB{sp;N$z+^b`VE{fvIgEqhjfXp+ zLyN{|P;5nk#wdr>B#7FmRh*hmHfN_m#S@VOC+?n24(Uz)*f!O~J*5BJPE5yhVkm+r zp_9IiHQZv9R_XqfrGY|(g>2J z388er>5L{PQaXg5Mnr}{90Em!(XeR&Jw&I5W2K^pQ$dqL+zfUyYLboG)W9lABm>iY z=YD|QLqwt!(CUR^=|o^^@EMvyWKn|@g+#34Pe??QYG_e>lOu)4fUX1$LPs{i%&S6# zvPPyQp_urkNay(K0*NcRGD@`0goR`Ue@e$-LL5*OV^lFHcu@b<)tPCN(!|yAX+#{| zcQ|OduG)?j6ooP>u0l{6hF#iS>VIz;qwYOv4^q^g8FOe;!2UC?B!!Zyy3 zwN*7#i;4_t$0i6H*+LbF+ES|B7E%{~RIGwP6RVmG#ykX&LPT+1NOHz&5bgxMO6)^4 z>`LHGhNOc#q(copgrSI{f|e|hS)o43#nU*g+jxpCSi!S|4#>r7D3U=Ec;kj%4;6E>)*LZJw4p>0iYg`O_wO<4bovvjJyIs~iw9^L+JT^Qt! zS?1r~3c^mM+^z0R@abSC?L+|1kfz1Ck}2Cd%g^@SB9B;Xz ztjbR1F(fLiw(U&_rFLA5M1<~%g2bjGlJ41_>7c_^n9TV6q(tOn=^ihwkjp`yeA?}X~I&#v;s{-%Ve zY$F{4YV#uGEmA40-mguV&O9Jg0SFFHW5A(A?`xV6Hy# zlYzKVB(m@RxNLZ!<*3;L{6;A`)Lu#~U7~sILy-SzIOwk4n1kKi9t?jijLIWOOh@z4 zEyp5A)7o7?#*bQ7m*FZJpvo2V{&4&{ggk&z_wdK2vM&w?g;o^sOgQXHNRv&tFs<^D zyy%l!BH}-EF&Q6-I^cp83<#jw*4MSKbV^6_O-Lf8$s(sm4dToIx9T6`7!Ox+crc4E zbU_72Dc6cC53_0{OOF~8AdeB|ejpDi)9y`7GA4K7M948jJn~LFuz1RqI&1;M74n0^ z?D9fb&vH?^4Jw?-9>C$S~B51DN*geo+4p@se{T_iwq%12t?xC(|=kg0D_a(Y*>Y zreHIFkcuOrB6t9lG2h*EVx|Z3Gg~DCOhEL7q64!K==~mALnDap5-4@pggp~w77GhF zz75{Os?SigO1sVc9)<2X(j`K~J}C2k=%_GX*gU_@c3d%nB=AaO=nVWccdk!|gj}W? zFR&=_L=g0?Y_v*CgX9P`Tj4`LB*QoZ&^eLPh52-pK1H!~>U1u2dgSkRA&`rzqP#lX z{b}(2OmqBrq*S++JaoY>2apcLwXmdMhxl@)h(<~Xl?P{vE8{gcAnt+CGG0eSy4}MV zi~v3*5-VI@VkZc#eTIxmgdJapmw5llHvZ%Zba?Rf zusC%94KDoZxd6o$o^O{zq)|%vZh{>8nO`QDcNLEU+CP~2qr+b?7TQ$Ep59!#rxQ4W zxHZ&((KbxUGv?aG-gQgL}v`{*lVcznG^Rz0D6^H-R<3a{Op4~wD_{`;;E9u zO-uWbI~PH3xs!tE0O9{bc3}GtANzF>?~y}0 z1kfwUM96wOEO<`4!%+Fe_Hu}d0!1+?t*~dG&y(}lC(_UpyviH+bI$Wqq`eBx4P#n1 zM0EYk@Ok{u`b-q#(@Q)}e0CyvJENRDhx3A|chv&xeMC$}MBr68q(klj8sy$_Aw z(}V~czJZi|xmN$vep`N~&^=DH!zJ3eWg{L8eveVcpE-y==ktW0K?L7NY0|HLBF)3k zDMe=w*pDfZCx(2(bt=2de!|y;b~9=s%YMTRW7b2xLQs$MD1^zlH;Uo7!Uq3^!3_0d z@-+#>F(|w7J6A;3ggdZf-bj&PBHcezWovfqpI(3WKLkH)!ytE6jO8M%s`;o*{zD+; zIP`B$CoMpjGxv{RL4yYoCRDhPVMB)xAx4xqkzz%O`~KmxxRK*QfB*Vn+=sDaNs}ib zwo8Xn;m3koSjJ4)O=eA-H*x0tw-TMibq(>oLrCu@L38Q8=~TLuX;X;(oZ^HUwc|aO z>dsYECv^WQSE>_>5~TT+Y+181%Mnc1PM*Ph1m9}3`mf!=fd%g_%zKt^->>*c`ehhc za9MQ+dlpu_xU4a2%B(S#9I>vtcn9D9JDix{xU`c&hsG%~v*?Vb8EQ0381>D|tzpMz z+16b_uLV~Y3@4kn#dDm?vOZnfEIxY>@3s9$d~k2)sB1r$&M`M$zVYf7RDMus?Sbn) zPZxjiFk_Le<>gENj`?`^Rzz#8?wr`KT1HWo7wB!&J zOt=QcX;4Cfz9CS+#ncf;9pDIZhn#}SF>t~W|CviB)u#IAL77&RXgh-LQH@02%A3)~ z$&&wCtf#E%;_n}H*11c>hc3L)ByJ{(kS~`2BdA5mWHiz_7YO=6$}6!%D8z-rQs^h} z_R3PQA#1`XMW&uSQOxIrSQE<{XUvbngu)!qs4m^)E31OY;n1(+sG^6U;{eSQO`XmZ z!UjVbm9ox;2qfsjNbNL;QiR4CtI>+YS&2-(^r?s+mf+cRI)At@Rn-yYBvQAuatudK zS^p`rFlWZ|ldn?e`KM5)j)SMyRe3w7i+^x{jT)J-A=cTn%F(7(Op~fG$LI{2)>(&q zEN-Gux6MXkpCfvfb?Fd`@P{Ib?f~w7S-h~9r&DM1pDyq8MAS#ujU-|!y zXV`xZ<~P|NX0Vc9*gg%n-GsuC_MmT~ImqIFVg>PGg~UNnZ^ybkR=kh=&r#%h#s&RHL>fppR@H+wwp@l-GyGH%jX{n8oQx(@XRtwp%FG! zLAb}8*wB4h(wao5or;*Dfn5GMazo)Mo7nW~CcHInsQyP&f|S%;bR8XsX!13CC3qgR z0Uq6ToVYgV^w&+@m^UE%GzlFfO?@Yx)@1^o_Th;yUZ;@{(wm}k#F;(M=;r^9=yT(@ zmB!hOJBNmPDF-)5`H8+6$nXZ|>9L@0qu(BGoGs#gLT6%Ee^bUIazCe#BwNQF^ZyZE zex{pMD}w0EO-?I_GX7^01KMb6|IkKO##bi4ln!r`@rLtaQX0!8Fd_kT*3~%JGB{D? z8w*s5O9+C(g%IW~-J{6&2!gy2&JaN!WLo@;RHLn2$tC*m$C(lm55imqZ55HBjeuB^ z5zcUW2*Dr?p}3I`EfF?UbO=<^q!4)2V_W`Ph)`OjwvU-Gie)qiGycJhX|!ffQX&aS z`r*Q%6w!=zbYc_jm?tz6gc;T=h`K`aj=Bj&C@{?9N$ht>=io6Rz#;#mB4g9Jgjhpy z=s8H{AW0TX>corA;s!U^m&rqFZ#tb+75zl%p3tR|mA%>IKiW8=EcWJ!PKjkqbY(>e ziDQ*lqM8j`8O)lzG7myPT-wMRESrWjtanY=01}$Pe5PN% znI&R&^B~Ijy3xrnL!(N)$x$7m zvt_nMpHlpXO}kQ%SxO04P({!qof_7Mka8m15DPb_DyDf-B|?YkBtgac4~)X*8F3X| zj*_|%swD+U9}Qto(7_pbz?DyHvnY%j(%RLC*`52PHJfo3N{us z)_5#uo%p(MaARKCVCb6&Le!j0?nATNENEdH+lh>&9N8epJpF2rgC zomRHR)m&g3lo(AJQ;{D+Qa9F0jV+*n2FA7Sb*1-@%rYu-o5U(2uR)V+9IH{E#qN2H zlnv%SOpG*LYef>tjcmwQz6Ie0%FxS^rap|gM#`<`$SVJl_5S0(+;z%;xnWi`Zi5>R z&F_N~a#^L0rN7%sj%q0a+-p?0APY6?Kb}C496*?Q+a+;tw-v{xFgLsm@rEs=V1pQ( zn8p)=D2WQJsuxLkDZC)BYzAE8sCZS#j zWi4-+aK>EPHEz47_i~v&EG08bypd(52eD&x+Z`WDC=c@P1g+ z2)V|01ruo!W#t%-F7>Okl-L!gGb?+VF|2W&N1FeLqs75g5`1zUY$#T9t#W1zr5U2? z*sSsx!gh8UtJ#e|Qw7v-+QO}$oox=%RFv;%wzk2&ZCJ8WL;pZ_xX~@TT8|se=Z;9B z*W?X!v>F8=UQ_|-+xz79)WJ^B>^zUxI0hH$-SoZ~gVBeE%>}oY z7&m7-8_M|dKU!Tb8V6YGGVvnM4r*Z2|Q?_gC_1YH2Xj7-gXWGT+8ac z2E$!vX@w+%?$=eg;ElL5yiWx2#0v&O6hDg?V;k~*p*o``UzS+z{YH&XWiqZYiz>vR z;+;>Wm=&|*g6MElp{EGpyH@#se3%-VcYP~$PLOj1|MNMy><$}cdQome^>_Y#9=Q@B zqZ4HM=3Y#>uUa1LPoyU`S9vltFXQKDa^0dKhmy{(UFUIVgp+%DMQr~M_2OCetRKG} zb-1US`$s#5nR7wFP9cu2wZiNDCL+?}kHo+)H zB6N=+dd+i+Yyrh@1*2${C=e&G>b=%#p1k4V;;+w^rUfCw0G)#x5|C-?ul0dkS0xuerv7xm6+?)) z*f0&vP$4W)DduStH;&jok<$PCFd4Nj8063xIY=9-fg1^eYP4Y+1nnTIA@HI?49~3z z&q5d@f*rRf616dbl*y+)k)h0NA?mOus&5~U?jfvk8qFdf8KN1>hzMIT9*ai}Inh0k zjSAfn*HrHxxDX*{Ncj+C6SXcIDYD4E>lVdfo<5M&1X3T*tNAw4GzjuJ9?~XO(jYpq z9~UAC{jsP~a}lFoSU+SFS4aQaTj#CMu5_D(@b< z#xYC67y7cee1UpkDl*&d7`6d3HRtkB0v8^$H#Requ#hpIV>LGgG)>dlIx{tI1U4n& zy>Qc1hC%)y0uLVI75>2roXj>i5;SYVE`JaUcatepK{y>^Hgh5wlED}p6E!IU4gNt8 z1i?7HGb-XQ8MdK0BjOl3%^)sM;bI{sr1K$^;oknCJr9T_-hd$L^E>yg8Oie`eh@ij z;}|Xv7i0k;SRpFl6FU`RJqscd{^1SG03ybqAih8h6yhN96W8|BIck$H5cDiyp&&lg zCcXd-uHZt2EJOe4<1ZxwJ4w?-UDP3P@7ufqMP-6UDZ)k_;zL!zAX?N}Lg66bU?Z~N zMV$&od-NcdB^L^!5hsI5mqHXc0!nkj3(6u5{((Yk0w%Tqzlb!7jx^@}LE@T1Nf|9B zzVsm~uQSDzCE(x-WWq{Gq&p2lI}IX2DS`@I6i2T_PYVJzb74a(qS;3A!~ByVHgp>z zvoirzDMYg-*0Vru0!tY}PGy5m3jz-A(;(b*BAD(UsGw69Vn~gXPoe2d8-f?80Y1?a z5Y2)VD569cR7wd#3^tV@YLzj(APcAzL8?Fs@N^-Zpi5ncQkx<~4+1(1!c_}GJ{zLh zzRea8;ynMm=2oY}QXc|Tg*A`tG$-7YSPkMwgL6}E)mjmPTw#?XB(?K8w6RR}e;yPi zg!2^gBpUWPuHa$y z^(+>ZKKL~>Bo-m+(_0%NQ%fR9Q6gh2;$6QYRSx7_Cl)k*K|Ht)Gy;}kBZ6cb!b;)v zAOyi<$s%9J16!Q~Wm7gw+Lc6JRzew~UM)go3*rrMRyt(%Adq$=e$`Wd)<}ZZG%EHV zpw$(rR8+5kOQ+V39)T&U)<)d)X-y(s6~b(##Ag$NXB%P)93oixVqw4bN>%}quykl) zHYWefR#g4sS3A`R{y}gFBE+7+YZ=0CZz9Ajf^j7RZtK=L{A5H)>I0brIwT7UeM+bcR}2 zB3{=>OxGX?R|*)AC5qrCaCai`^a+gMcq?LbC4>Zew?UY-J|0i-vS4`)f=bVoZ3&`v zso-~cBUrNlZl}O>VKu~(mms8|3aEg46T%6Gmnq2Cad85A-IpNbw;t{{X%6;EF{Ho6$Z>WE-n&x;Ylc^RT% zu~>*}LU4~*A)o+%pCuQW({m& zX%9k{yUCPIBa>qSWo;QD*7qQAIVzggAhckYAL5e{;z5I%X<$-;8_n8LY!5upbMf8IN}n(^;?4p55U=>ANnRP z0U<2fFXH(j5c(hxnxTIan;Sx;JL02t0;Lner2oMW{NN!Zp(FtMrByn=GP*uunq?rt zDK257C8H4zf`%31r4M2cl)|Sa;-+u9AeLG&n))jm!J-=hs2_r;VLGOBdZ-EKss9HL z>e(bBx+V;PC2Cqa`hcn#g{pBFC$ichkeVUp$ztayy9|E%tVyq8h6L7+?4I&T-;-fF2 zww0m{4C1aqi?=D8#Acfy9D70-;kBpRAU0vDCzUs}K%pyQw9O(93c{p2fwegTxc>pT z&p@1wo0-pIy?f)i7s9g1>(olHeOb4%}IQ z6F7HzrzhbbG6Awtp*3>)5*Q)2DZ&&?;U6|(wtaiUaU#JLVzd7z!Ve_DyB{JHKs7h(~7+rA5;5DG%L#~UXwydpCC5}F#dal0VEnGt|m!)2QwYnx&8ecw2|`&PqNz6_x)ox{4?@!!V#W7*%1;8&8-me?2elai#tS3Szf;ateIe}o z(*J=H6hhWF0@f+Q%`H44ko*%qf!7P-(5t&53}FvU+7SPkTh3|wAR-!|y9v}`tl`yX6>BFKHg4Fb%ax#|B=z96!GA)GxT>b)U$Iukzrn0kI9 z6oDYH-Ay81GCKPokQ*V`z9Pi^Veo$MZ~PyK-YNK8xbvOF%YE{rLRp1d&3D@6{kb4I z+v-^Y+sB;hbv~5}pCT;3pul;r`4w0`x5czrh^%3Bu(!!S)T} z5KLnBl`875>+ch2r#oT79U}1`!ucygUjIS+b6ofd!pkWhAs*ZyB>k(m9{f2X?hT^+ z*;`7A-yyi$CL+Hh4j(lF!TocBElH}3@ zh`^*vo0e$zv}%`OSHHyU+Gc8;lO}C48`Nm*f3U0Sp8U^KWrL0vF5^CoUZ%#jo1xcRF==nfT9 zqEyL00UCq}TSrk+o=;E=bcPmZ5aj<9PRG^M2znNt$5Db8Zb;B?uD!P!fB%TcVOkp2 zlnHE-0T+^i6D>kwLzT=}(mxXlKav@zFvGLBcDl zAZhBXP0m3Z?Wkk))GSzv_}Kptl>Z1K?R^cM>K&(f?$ywm4^eASwkQ_s6CHTfCXq(U zDT!>g`tHkbzXhdc<(MI{Yn~@u-W02C10kdcLOvZliNpVNA`qQ8W#Xbk>wS6@xmiJ? z5r27LHk(=8`iqy7D6fpu$vk-LJ`514P?>NL0K(UQW^h65P&~bZ4g3>NEPTpOG|{(KS4Ldbz8kD zrjfuR#VvJCD!UZ4mr=ib6Rmj{YEd9CQ*HPiS_M*w-45*?(%-8k-LgaP!Q4R-_`=V z<`>$ZEpEQ_QiV?sqYjJYgC=gk#)rN%x4`hR1^`Hhif{)YPR@=Z#JvsJ@Qi%onD2f8(9!1LAME#>{ z5W2G*sdzHOz_8*TxBp_x|2ziG$%q$2ik(7bp4#;VbEW39=Y>ycmC8Z#h=Y51wMa*% zU%8b335$I&N*g%WPx@2YQ)#P&8G?SeyD3Q`wgPb284QMYrf@paCMQr+r0OWBL432y zbV4LJwe_M?CXRGM264tijh*12c{H_`XTEaafpgPc%r9N9iDimIj;w6u6)_5ptSt_* zEG|f&E`UPZ|0&B(-xnUxoOae=6Fh`Voru{#)1iA1*b+~~UA{2vmht0J0zRYqA74=H zyj^&*rLw@^A_lZfY9a={jmT(Azam#IgjDSt2R_x|CDpKa?1+|t#Oif+3W@c3k17o* z5vX|A!;PD9lky^_iwqse3M)xipB~jZ4!^^^{Yq%7G~zc`TKfuNH});h@M!`3r)nIO zlnb#z%^O6!mjq!^e-f@lX3*fo8PuxF3(g_SwX5O~Ggnu^Y(H^5iz*VMsn#}#{pwUj zSgc-zt^NKPv?12EMn0flDWiyt^$xf0v7ocgXe?RF{Vt(oagCYE&H{4gE!-&Cxf{P} zu@~@%$$iKG(iFQih>Xg`MfYi$oF`E!`vO@~PV_AVa3@I0KsgNR_Ut>x)09nGzXpp_RsV86_t=37QZ9ee!s0n>3CzpDMZPF(AQHi=x9zzX$dzo`PA?q+O`c_{6+Xqq!x{Qfp(kFD?(>M`!(kmwg=M>(^Lg?O+ss+ z0JR#6&o{PspUXdwXStA8Y%a8VeV5A)^qXJljwE7wz?zV?vD6M*NanUah)k(;jTzTD z%|3tq@E|h11pG}~>iI8`>78CHxRX)*KeX*ZYHcb1Cq3P768(Dyx~6+VG4BXHGK|0? z8otk7+_P80pHWBILwz1cH~fdT?XYbUWmdV3eERvINagd`*Fk@TyTcBebe$uan9oF% zC01aVYu5*cExr;gv|qXV3KLvu7IAyZ#TL-@O5~|UV*anN1bVz9IuN6v|a6W50d{^^7Y1{uNk?C%`3Kce$ z3oq3(>e_R+jk>|1erTww${_jk|4!S!7^e3-xfp@}I942Gi;N!C;N&e+8RN5gHSECq zY0{I5px!oWQX=M=*OW}An)~zvZQDCX-o{Ww(UiEZ*%b2l^w$@?|3TaS{Z&K}^?Sk0 z@AUso+x}l7)37gwj$2VwiM}bw|IoJM#m}yGlb^dF_R^nke0Y~(|NeSE&+jatLOr-Z zEU_fh?dGWRrLzs5^*ctNA{?u;oBxPRgR12=9z>>B_YE_91~e?hVLK)V!Rsp23YWoDRT=(*Ipe+WY?Garn~lhEl|NI`w%G7On;fAn0S) zy({zu$Kf~;^s2As_hV)DGD<>DvdG`%dQVsanHI>9&jBghV#>U<+hZBTw?@b zaT1suU%)DyAwy@_l$zGLL?=8prW^P(t%$gsOHE_^Y0l5|O6_u<=VRkW?LXf(#6O5k zH6~0}erB{zmOt_vo3Oa~nb}3iDiEVFX-#{XMQ(s4lsTqd%4Gnbc6rxKB9M%`h02+Y zdM8r&_H#H_FE;U&nndXs7JYOYeD>s>>XajNP9-XTHJC(H9A`RW)D4F)xmO(Hfx&XV zw~@P~>6IsMc%svG$)0M9r~dYUICvgxa&p=hiXA`HbbUqoPxe}YAh6)p+y z2Ov;9z$Ze{1F6-yP$)KY`#8&pCKsS|W)O!~fKb`LHwPV!ZzlEqg&xMy6;3S^MW8G2 zW&Pd;AFeP6*G+ywmOj)#=%|eF{PbX9%8*x~Mp4mvhGA>_lH`PiMJbIMD_d>@h`0{4 zquOEIa*N`l?CPmoP16y3^K78xUTnrNT7OM%Y%&Q0le>V8zh?7YJMY&|05yB|a}`DfV>}ze0+4Ql%375b5wChbg+@h;n)VK9uCX_RTx0C>$sNj$ zhy2b1ZTsKl$QYm@9C6dfVb4c)*oB3U-1Bf=cs?+;wN;IXD1`o8(xmErD-==1l2^vJ zNB_2Xd?0qXGF_0-Ihb|$5Q>txpZzb|wgVa{Og{LET4xu-^g85&Lcv9nJ=Oq?6pyN6 ztbW4HgMfFD>oRM0?jTxWK>X{>Fydo43;$v^d;s-JfJEt_{qUMQC1kjaXvg6)9RV*C zyHuPCrgX5ip<65(t}>8KcD8h({*on98xtNM3P(_ptAo!;%oHj!QR}HQa;YKPZf9hp+kjRS`XP2^YCzB8)Mv zwJ~>#9SDSb%l&y12!>fb9@u6A#fh{x+VR)7Z7N|TTYEY#+y|8Jg!%o*+diAS*{TPA z>34rp!BF?DAcmefyFjG-;tmqZfuXp8(TI@uLs0_i#?or718OScSWg~l5_JVO`vjtCw7D?hnqRLJN3fCde> zPRn|Etgd}o!V*`iwMs}82G9&PTu+Y(xx4h5bHqMDjTi4Y$CFFbm30HF+RlE@^}JYe zrt)1T_<7_>Zu(>BOt@fGCLxb?Z>hzo>-f{oRr_D*%SYHDi1Q7~=fW#jl+wQx2%lWp z<4gZ^KG6LRi}<@J-p!m+|DjCulp<{4`nF&E3L`HTO4{Viwn^V7eZjxr6K8M-?|AuH zxc^782Qgp;!{z%4f487a;{Kw3ZaCNh z6ezcS5LucUlx~Tl7#WIz+JXLp7s9|{YEViED6Kf&u>;W+ z&mlC@u#p6+Xz$74{PMY*@{*f^hrLotBq4SLkw*m3DoSW43RE1-s2EBs7+F<9LISh3 zRP<_AB_7FmBkbXebK${!;G7>rX6(;&s6c|*LgML@95hhGWVp~NB1wv)?)xL5g5dR! zZhGou>c$Q@*u)cIQFezsuYfT}TgV+uGKudlkrND@ZfrlRU~m1&@zw~M26W+W47cYZ ze`*Xfs-Sb{f*wKbDy|^O_~dJPcDY}|b25VPQ;>`vj6*2B;q;7*Pt{f z4jrcS9C6y9Egay85tzxl*ME%SE~&MauOO?HPzDs~EHq@(n2I0(DrQUtkc0x!$u)!V zIEvm8e;*W~_QF*zL>I|480I8T{nYbM5owA^Q%2$@{?ubYH(zx-FEJ>(l3_2I#P~Uh z@E9?fxZ@Bs^x~5}ril1~IRYN>Q0Yrev>}S=^VSe|*XD%cNI>U`(#XQW&eT*#Sg!8s zeq5Q($_~zQRnP^0@;}s1{Kfpj9Q`mK?bNs#kM!(@INmDZhfPpXCiuq>FG+ZDQ3+=H zXJq={+hwCU!RiOE9j_U1aw2pFE=A~=fd4$ z#7*VOPGT$tmpM^c&@M$IzA(y$D|Pt3_q6!O3`rh5onj`lWhQN@ga(wsX}H z*_#(h#LwK9pd^?Fa&hbk@x}s}S%WO_ieirnVry3rcO8oB;bATqkFiXyk0>0lmJ$6! z+He(Xy8zy^%-u8!*u;il!iwZZvm1T=2e6Ph*u_xn1i3y`?X|>+yNK6CKuR`vuNOR& zmAaoC&n;*NXs499wzCv3w>z+)c<)Je<)aHSV0*Jn!AU)agQ887f88!+p;^_B}Vulu-OYz;3k{kMCS1ow=Y6 zMe-dhhLzB1R*$B^6 z@!5PqObN*kJ!sMmB#E}_2eit{stU#IVEqRoegoOr0>{%*?QW5bb7x^1>_R^l#4P8d zc%;mEplMRjtYfbCcF@K1s=8Qek3Vm4^+|%c%6gn68+ob*rFht+pd&fd%**cUaPZDD zl;!Z<;vr>RCH3@pXlG!_5xg`xt46Y~QNKMFm1QJqJ}Am|LW z2!O3wlKfgByF!1&xBA$?Q{!_%@*dqzH~Z1!_9F)C6ZVIK$Jt3l;o!F%IYQhyT%gvr zMwd!7DL~S02PDYK$NqhiPJxn6jFYnC$5Kz*MrmG?6BPWre zLfyj78c6;mC;ov$J)K!vsu{?0pl=tFGabb6IouX*swO&=}D&AT+_X+93 z_X6QymIq~nnL2%%9r2t%?^})vybHUfhR`5sN`fWmidF>|Z;#FzOe+uSJW0u4OZu1Y zQyDGf#+hZ=lIUqeX$N!EA<{!U039Ko7GC?wnmPD2LF%<1sXs=OB(1I2Mw-p>j`V9# zA8jY|y1>vQDE(mArz$nrR1r9T!L{TL=Ion#Py^do8S*hAaXsjH($`!!A-tMg%(qJW z#0hGdHDEj0aSd`qXu}p1Q1zLkRLpfv=sH$P>`QE->5q&k5G@v8-JT+`cfP7!Q4B;5}J_qSw?UK_)oITf?;wuujOVcwb9Vv92!r&xq z!O|0a1>4u0aaaA~{;7t-Rg@);|2l6rDdQ`CqZe!LtgkE7dGyu6#H$Z~VH=kHdc4U> zbze>U{F}1B`sJp(bGTS`EkgAdNS=cSYDqCb`#*#Q?im5#k;yaP(I>{c7X-DCOi) z)=lML8}y4k)P_ES(dx@n{V67^)dha4iFFk_3|-a1RhIn4vhhXL64--s7Ol+X|FO>H z;0SzX#{bp~x?cAv>9{iB%268?Nsuz0j-3m`j>aN}nfTTe117!@!E&j-3JG@0g>R8z z2XG(G=@>&X<2~k4+m7K4r*Oy{$4N|B7@%(@A3JU}A4NWSkH<$t|gwC$?6m#5rpGCBhi1P9qeTTe+}>rimMNFS+< z<2ZHT)1|p{7Zs4BGI3~)qw|`kAtS+Le|oY(ag?`)-{p@F-UH9ZhjHwUR1V`8&oLGE z_|U`tDL`+|4?^Xbeb$aVoHt8VCpV#~zSLl1H`ry&l*+-%Rt73J*ACZXCnu6d;J+|U;S`8I-ayZ@iGKvpbK@ohdR{k zU(fttNcmyxvB{Y`SW9$@!GxXSJ-NKGJQ?2jm=|(9FB@M?9pTEye~1;wX6)iVvPWH< z4WwRyRZeZF+B2V0P|6>nJ-zWMaOu^A3`R`Vq6yw zjosl4G8zA`mo9(ZjeTlj8~yes<{Z2oFmottzdSlIeGbMuI6gL`LCQm&eFvWZ=!OVF zeuhDQVtq>OIWfUN{_1@LTb_?ocf z90P6p%MC3v*-gVZm({h_>Ci-MhaL?*XZWUF!Va0luWO+w27f;q+Tde@kk2(`&@iM=1-yP?+M8L^w|^xSPAxp zB^x$X-r!zula2l;oD98kAdHgyu_^OL#)|S+=F>yHlK+TIW63uZ{8(}+*)k1}4XZgi zp0!X@d^dV;-pHX%{W)hbWg8GNlmVq_vT`YGQTg-OtPa&Nua2o{s_V;N3$WD_UcaG-`5wa3Pl|QcZq)cbDTK9FXuGRioq*+EmiB z^v{o7(Ik`0j6u!pO1lu5077s1^Gmmz-zjbdZv;ck^N{BbRq=-`|%7v!YnTyRkiLunTVw>bnaNqwTQrRMp%gN&~(| z?8k&-EMq*W6=i-ubEa9Q?%S}*j~%ElU60U zFdxP|8ZoP54lltb(h)K6RxJW18BD>2!N1;Vx|IkM-YHg;ql>I3lN2xazu#~=SaG5?dK+hN{LG$hgP&vi+UsdXeV7MMP;sw zgp+oWTVrfx{kk&6ZzgUaX+O~AcTQS2ayXExb@E$p%yCXLKG!k!tWC?A%UXNYtfr}z_cvE}8|Ik3 zitX6Mf$Y{uCM${dN%095*&*#C{&pm7ODREpwPGDd&HBxLydPf^uaKQaZ`l#@b)h?=M2<{A`sc?UMFG=@M&pwK8TP;J%r3O`J*S-IG zkv~0tUE6a{<6mT@^!RXoy_K2HZ(WqhOW|D$O+&8R;P#ToZjxGejcfNhMOAcVBQo28 zh19q+j+U_gG_*PMxWQ{%F1UKmV}e4+ZE{@l&k|AltnV5n4spod&U2{-=g|vf-kUD; z`>RliKsv?w6d4>N9mb<9BWweqN_i_h+HP)DQJ^*0DxQr7(`pHOM(+3w<5~F6-eYeG=#NNY-!aAle^nV9$mN zrfqj7B7!LJEA2=c?`BrUk!DW)QzC^(sTgrW6=)L0>o7$T{Js8GbyZ((x&q-*vILy? zP(6=`e(INssa6R#mhMvYwVDvx>#En}we+*aq%b18nnW|LL_jJ~xD1wHJSCLTz751z z`N;rFDWxO7Ruza|PVrP83dQY2u`tJw##5AKo9pMvKqWN+#W6X#n9^7_f~WCfD*9}B zHMWX;8gE|^D1#Q$A2Pa%Z6f!$42?%X$=2=q@c02bKGo++{V5v&N(Z!YJ!&W3=Kqwx9~-U=A*NMV3P| z+4l~b-|9Ff{4yt%_iT*UwZDoyVP{Cg+V&lgHgVg?xWSiLncm-;{oOmNiKAta$J!n0 z0vP6Jm5loW66B2H-Pn}dDhKI%aFEofN1|8dK<%-5p2)#$sbA$Yp}$$ia(g_`wtkBD z)Lq)0pa*DWWB?=lu_tI00uCxs}CFAc5*djrDp{S3U%v)UCRQ$ehTrC(Cs>MT4F8x#h@PE6~82#8`bmUqTX>( zJBR-zTmO(Mqm3i*^ebFKw5W^R?KqFFa)F26^q&}EU%r)V^9qF}76RCNp5#+XN37=V z*ZEEMb>QOa#@}Ia>Y@|{e!qZ*`A6fynyhx1kmMJ_#n=*3RlPXjTaw%EyXG*{484fd z3np?-7>zvx$#eQXI1N?+urd`Zm2-=QowH3r`#vd^ENYKNApnOM3u)S#HG$z8OP{?< z^p`kMBQZT1Q2CjfH95%f%b#EtB$Q-N)P?$R6~mP;_gk>o-N8{Gx_}k~FSWDaRG|YV zK&e<+asR%(@(WlRd;eouCYtdwxv9ZG$)y@%D+2n|k${0g{LZ`1#^QGJgl_%%S3x>q zk}`<Wp?Q-K6M^` zmHYRWD(VIUy_P55x=z-zz*;%z#)iVNupgcR&g;pz*}uHgtc({~Bc~wGxrJQi`)DdL zFT9eq%>n*c!@NWab*h-}JvgJN!;W&qhlNtwt}XrH6cxj8ny{B;?qxvO>4?B8BEDtS773O+C)RAL(>1HH+JJvD!UD z)OIS2)f6OocH2uV5C&0}#3Yl+UtacJl68>K%VWb47p(Hqd>z?d$nLnu0sit4sKiHfy<50+V`0prc< zr_cx5SpsReKRq%WkYdBa+3JOf^uX@qq$br!YX`9Ku_TFAL(B$5?_x%UC8O4QvG5To ztbJm(eap$9F$Drla09hcCu#|f@3%F&k~LgymCgyEaiNPn-&V!N20B*`hQoVxyoGUj ztG}&CJEa1LBN<%ORq*bR(mP`yoM>b6wl|$>;pC{x-I4n5Bc<~r_)shys5;EHErLxo zG#)FfX5<2a6}~6;Qlv+SUN$EvmT8u2vQ>SVj-V|v;p=E$5&js?N|G;rvWB9@jUE!k ztHfrg#GyTg8}L{?yT`e@pJ$T9c?M_@&uH(Cd=xw&%BKk<#}Z}h!9Q;e9+bm{_h5yM zlikTR5D(YOXv*GohIy-}T#lcnjarA*`|H(*j;b%)bVcZC^)|O9vW+S8B`24F>!7?? zRTJGJP>g161eF3K56eg)VPQ%8XB?@{0uhybTi~lhB%c)0g$sFbDne$?!Mn^l-zK(`>1oiCKH7X-TX`q~|m&!+M)7C&9{!!OaL{FhU{XJBf5-G1@ zGF|AWUZ7lqs;~mY+FU>wje=Z5vi#twa($reHqd+qPfr3Tg||uYje*W60x-epdXy1`Fvk=p~03SM4!> zQc%FpatzuKP=$O^6hWmom+OHnNG~}x{(#@1s;WeGptrd14z#)gzPbXMUPl{B;6&ZE z#!?%lT**|8E;br;$gF?4f({nolcp{8F}TEB_0Og!b35E7GE)#ZPb_>517g^fXR5Ok zWgQv+5z=^L)#kPv|YNiJ*c;d%9e9lmMNl;x3mp` zhrC(6(rK3T(Ql2ycAw}i*P>s6J=ctQ+%;Oa^YS!X?TOlPOme)}N$k1A?Xi%Ktw6g6 z%(4G$Zi`GK`)U)OaS*C00#86ti!k3`wJh57tAuX&3`cn7Lk`ASbMmBW7%2L zwep$^XsQ?e0t;C0gZJ5BKss1mv~1&j?X#E99@bbeN!U28+c-PjkS?xI$nK@%Z0OD6<28-5r*BGfV}C-ZltCqvrfK2rKElZ0v3?# zL3sKofPUE5WZXyzR3xiJ1Yx(Ocj=b$)|N6>Gz5tE{3-_G8!Z9vV8yqB8f{ZpSUtDg zrYvZt_O+t1hzXG}pT{4&N-!^O5EE_$4gt2Z+skbS|t)!AdgaXq5 z-J%cpc@!7W*njH*cl)rMh892w3!sGsP&nM8?#9#3<-jv%5kISD#Pievc(Jf#cNo^Q3BckRWi~>qS= zRN@hmd$-=s4)jLB@vX(a<9oYIi+%dIrtFQFBCfr+)E_*~V#Ne?!yU-{XCKdO({Q}X z*FQ_usYWrhn&y)*M+zL@U>zISnUQM9IdAoo`9{AELpJN@+B8HPXGOalA}vuBZgAe6 zYljaeG2)54oG=uJeo|XWO=^+z)u_-MwM6H}e%>RgoGtx#a&??I*51Cg?m`XBNahze z=?c>E+{WP>Y079YYus+GVB^Y^kjn5avbs+6qi?ic>BAYH*(nRpv=!-nUgxF&O4j}E z)e1_)ZL>wDp6yhwymM_$&B~ZNZEYvUBsr0mA@*2oHcKw2OK?w08p@DiE7hZA4%iGK zslZ~RYzQxjp6NLc|57U-evdFL+&iS0qBs$ z_)ScgN6Egdx9aQ>1uHT?9N+qO=`5W3f+f$K`Nl1>m#mXoFanjf=AP(qg`_UL_*~Gk zUn%-xrdz@y&e}NcIRYshBIAMuGQMpfkBezJe?1+yOJxuf>`>*`!1a3^gl;?S+Nnf0 zo~{77f2-KO3Oe6TJpaOjI^sfNkPdDGV(6~VS%({RGcced$_wC_hB`0lWWK)9 zH*0t@dE+~YxxVZ(d!Vzq&e$D|aW9Md-1xYTkK*tz_RzXIqR4)^WXTDnE44=_y_cS9 z@`KYriRK4od#pjqg_xDCOBTxh$CycEw1CT}@JiqC%0Ir5;zS#NSS75?{mIeCHR$c8 zpHGD*sjIrayw5p5^*?M3#d6yfLmM$&x<2Lmri*sa6ToW%7AFFWGrW2m+-|p&Wgesa z?VMsHR--tAid54+^T(eBGg`?fJ1BMO+_ysKMkx$ zO@&q#g`-dvOlaAd4<}IMVf>V58!8Fw5Box<=>=;)5jD~uAIY_Wc27hrw3yuD2|Sw> zjJg#$^_O_R_$Z^r$Dh+vz|b4I@=6hsKSL0>)h1V`5l*e_`zbyv)33xIk|vZ~{57le zF~0haeUUDKRReIkFSu$t&ej3{mBYr2J#xPe6@Bhrt$sPhgg^ZR=_~=Xb9nQ;$}jDl z0-L>awKBiY*bIZNzw%5IQ3Ks?QH9U|1-(%uNam6Ut3cFxhwEP3+ayp+L@Ks0-wH}6 zuY)x2Wv1uNrWo#xW~vy8J-*%5b_s;I%Mxg{RpK|yqWzB0J~23T zm9`5kZUEuG#sEqA9M0kWQG`@NE?Ll3;TWQce`J}7tMaZim}j^4r-i~UxHWHB$Kp+! zLuZU9}o%`>pQZyT7e18*t8e;LWya8G9FX1^{;d8B~*R$_HQm`nS6{ zQ~eB$e=R9nX~=7gJYQSB1wH0lX?CKBy+fYcjE8&B@qBrAvT1J5zW&~4lsHS+5`%@? zu_|8t0W$!=<9$TUXR2tkT=_4pGnux9U)WCM?BrV50lnVpL#N*EeK?=68bNt@n)`8S zMb3?0qN7Os^;#?1i~qgpYY*HH#b>JTSKD5H>t?{HUC_6C?T`M`5}#@R9sXk@pPj3I ztHT#}cg%+NaY6SlLv}kK{NI~5p|9ThViFBS@1w{sD=5$nS;7-{xLZO~P_7hJ+JHeO zi!rV=ZJ`kbYG#Kqg#k;O#XB#s=%P#Mw$dW~Ks1q(r9Vq7HK{ng4|hAN#QnhROM>X; zyzxu|?%UnZk{c)fQwkf&1EmU6ihm$d7`@Cr`8DN=DaoU}(nJ+Z^8lM7zmZz9zfKim zCKICrD}%`09S%$f5w`g9Q&B&qV$9M7h^6_T{h(l*LHl)@n8FY;{`CV zF`uQ1D#5gPQPf;s{P^8l>1A7to|mmsnp=kOEOCjiNv)%Kt$pTc$pG7camEKGl@C%e zd-FgW^o5VvZmh1PCEf37{eZwuXy8%RTZ-o-9+X`7R64q$nAjTEZ1`C9)*m+2S*N|ql zTeAOBbfD-0Zi|7g)H6!&i~4h;JO;@lHp$n+c&|P|_^+ZE03wPct`C94$PQ z`CU0ud}*g0)#zVBf@{H)a&d)oJ7`Jj#)=@H0y2V0h)U<6J=3|`M*NwF6kl*d5PAT%Y| ziCsA;;ugPK?hC)8Kq)PXR1uHTd974K7sBQkvWNY) z;*K@1TCxJ0_nFxCw}bSe#;SrW2dJ}UY224XZv67b>FMZ{=s9(QLR!)fGw!T(Vzh^G zayTrX^`B+?h-50V5sXHQAM9Z#EhLr)SYLAH!JM;CZ22Mq>o12zsIrH}j{~)ceE|GMMt|)(5vW0y+ zf*ey+xH#+A+Sy;e@bJ{rAmMl>KRwv{1jRa}&md)iZfP9m!|xpzkMG$|>hA>+{3wOG z6gW{5k4kZqs=){5NpifOjf=gg#Qd@KQK`&!e9@n;RNn3#m8in!w{QsM)Lup!bJ)K* zHb8xtEW~MguARXBBLm1n4(1(^wDl&EYZP4SnR`OJo;C4ey~F^+BH}G9#2n94V!uXj zTSBIzE~@q^8Ndmkde(qF8|?6Dgx0o)v5(WEMZ4Z7{>9`Bi)9}4X)9d@ zE%au-LMi_=4st0@OS;#%Z0TK2|FP;tCQv9!SLcv4`1>$^#pAu+A%zgQ3mDV#!QM-953IA_zS7^syYMqv3xN6&-Z33eKc#}_xeRHSN|f}EzQ`3l zh<1*C-q|!IwSW!rx6R!F=$F5feQxbIlR=~M*|VN#BYXb@szTc*&=q#-F+@+^l-zeY zN%ri?xo*@7ZkvSST8hTQZ%jvjIcD5iZ2pmTX(5Nv3lU56WEU(A-fKC0XGI^Wu;+y8 z8mTxXaRroww{f$Jy{dyl1%>~jSXc0ib5ImJCJDLa4oY>e%xtE9g)$M{F(W4YY?-Yn~Wng#IQ?Gm8~R}+a|SK9kj{!oUO>fypouOE7ubUJ;T7X0rR)K^!}e3yQjUCKSi&jY6V1a^Ur zGD+WjCmYgQ6)GJ}4hj5W{sih(Hn6iCS|aVKAMF$U?@#)mdhdP=tSa=SXg`S0xaiH@ zUXn9UA*Z^W6vZ2$$8Dsuw(MQ`ux6*xS8k1gFylXC2Z*Go+99^}RN!pcwMuGGCf7I-P~#H%MMjZ_e}Pi4<>^=ZHPTiM(n4Two> zP{n45sh654up&@d=nq>att(UdgH)$R@4W zAZ(-a1Cjde8b)(*d7}g}?(DIAY&k0l5=DhQy%Xx?M~WiHR(1#S>aztbfb98i2lM01 zDitQwYH{a;s0aeYA#*0MB6)wrWntZ9@-VLX;d5{>+=Y5?cQngp3x-NsK-^Js^XStQ4W8? zH#a>;Kg&*m$ux*Hiql`Kc{cd2HnEm^?VvTIqFN=AQm2GgFU8Iwqsyebe?h#GhrEuY za}6@UH5jzVv?<9P98V-urcp;ZNP0|=fyEtqJ|L+#E}!RUN`n-o9=BIvQ=+a(O;1d_ z(~}V>aq=#+_Ws^lW?fLCGlOT3Q0KW(Pz@DS7N;*dqmG(!8X7Xu>_ZOC8Le9FZK^2E zjIcy`3RM`JqpaA5iO`gM%+KeFHoM)bk>FZilP4dy5uDM-)3ks}A%Ni$?ys3mS!$;# zVkd;mg4-mm5|-JQCGrg^fXsW95gujPUak;z9->$Z`N`yUEC;2A6U)2QiC80%qI^5- z&t5qgT~W=!_jS=G;aNk$ZXeWhzu298U{`*T7yaqg41~eZ_!WWELro~C^79oa?{NJ~ z$`&TYAgJT;84WiFj}^_Ul*x)E1r@Nc!1tbYRODD0S$H`kK&S7Eiuy zxDMd!pne@$?BqkgBc;G&zz6knp_j2Gm7PIYO!0KZ^I*(DX(BZZ?I zX@(lHCRUKa6;^S0zB+HvaBuf>dFd#<=6pfksDD^5)dN*#?=rbwSK*D5$gTvEICC)1AMa{-Hu*J;vDt&Hg1tC|$oE?VQO|B(V@ZV#Lt2mRhqUQrJ+ z72->w1WgX>&BF0cljo&Tw9gbEiXH0;R8fKl&5|cEd3?*yP?K-Xr#p?`M60# zb->!Cbkx#WMNZ)nTY#!<(sTXOGzG4j!w9?}Yi=Hc55E4si~dOeyJi6!@pBqw?-&&+ zcRIBSQsSC%?U@EmHh+aZNs4p%gxK?Sev=qEJ!bxLJUa@b9W)3^g&Zg) z8@U$v%~n2>OKu$p;5u0lPAL+7!~ZJj7Aw&pVM6U>9s-J)CC9$j6zFjcIjmL6`lFL+ z?ThjJ0d8|KF*HwyGHWCR)b%A!G}Zt)qr2M51S5ilN6!SwizJ5HxT*a z$xj}Oy1GC`?Vwuc|3=zfKeZi&=>o@HLhxWoaCe6S!Ci}&;_gs{-8Au>EPOq$?1|BrX8QAqJ$d|?x=(Zh)Rt>6OIJX>HYMT1lBjIL?J_$C;E+XAF zUUtSLhj~*)RB3L7J!%; zNtI~Xn#4>l9dsOKKjSEnU%@}S7wUB8!LIewtj+{)Ije7y>?LUH<`ro4ANg)J`(SwI}cW2 z8I`LlCNPM3>`aWLkE^W;+ITnc#^!2r4P{|Xesp4?IOzCdv;LGidiz-{{A{h$>;4;c z=T|H%+k|MHqT$Jp#3Apalc4qs6^vZNU5#{(c~ZBxa!Q0|k^#7f(_v4VbW%n2!sn`R zWA=-*VUND`5R@p7yu;<^2fx%V#l!Mc$ewL2SlDKD?@BV><$7w~+O56&o$mIiw`?w- zoaj#rxKHJ8FMYq~0D}vDngykvuye}#FZmbPF~UD$*iPCb^h3vJKhB70m2A`-vkZRk zfhClCaSTQ05v}S(l>zp<$_vAq|G6=b;@_9J~i|u`{a|pV7Uyuc;^qY@Zr0@IP(B{9ILB>{(P4kek9mI4vg= zMLG51h}sP>QBHOItjsaf*Ib0r^NMh-rIwy(zJVJK=;AN(oid6X346tlr@}(cm&V~t za{r57Cf>@e9GM))9l{z<|C$~>c)o%qEM_pNyy{cVL;)juyyEAQXA6D<4F}*Tj)?!$ zA!c}`a$2tIk*R=TUj3@Vurp4~a;}Rv&|x*hH1$#g#M-PhMt_TYIHpVtC5NbJmk{ZO zFZZ^Ws}rGkl%r63j&4S{)?gNJ(6n+EVcIk^7jUB^p7{#+cCAOv!ed${^z!cJQ;YET zffcyqu5g1Qr}NVTkl#BUCPPPIj7|=Jy5iUM;35>4JfGe=y<%U^xC1)7XI2b|bKZbn zqg(6TiZY%-Eaqn)z$?I(Zg*`w1kY!a4N_91<2WF>SrnNcxKTCwI-FJkU$5a&**>;0 ztiDCw@r~O15~rA_3aSf&lM&YryL;#Shx_8o2G20(lp;4Q`pm{Jv+!$KNEoaH|n-B>JjZPjSB}N|E z*G@#4vH|`jbTN;y6^Pw}*(*rI8`48WydwBBh~jN#6I2M&ViSP$ys3}$Y@MPj)f}Z= z@y^FGH--2TcjZYFjMmQh*bC`>0!-n1p=OZ5+2ySwSb7>h^wcXss+6HS@TlKqT{=xx zzm>?ry*hB2H|pYKG0B=W8G=?ijzXL=5NU`bIP9c+ZAL~Qs1PRMWg3O7y93XCk_`}h zh@1vmww#=y1z=G!$aYyMm`z*pX|5t@V@y{V!=p4H8mZGuV>;!ht11y>Yo;pqL_(1y zm(u7!4RR*(*6g4-{j7O9q2+xQncz9Ycj8eZrwUMG-+g-e9PN049ciyh4#tAuMP8}Y z?5~`AAt5NGSn}{V%OH1;z{f3GuPeMTxvwCR77PR+WYTPB9PANna8Cvs319h@df7zTdMaNzcdqy#SprOPfP1? z+fi>Qe*>T_`k-?gN%9eVKrqo0y@#X9{`M!-qV>2j67 z?bRh4>u@At&`2ol^(-*#K4j*+XkYRWHC_ZN_TA~tC1iV+4rcZ*aTjM={`>Wc7eZ!( zc(8`*;I1Z>kA)&j49(VeLzlO9TT%L%H)+2P8{2J!|J5@Q)!f#I;E+t6+z*G$o-`^k zEf7sq|HwzS$7GMSZAA4(|8Bm+w32Jry#Q*wpdiX}buejYsae;q zeD#RKr57gf{DSDrDx){{bMFUss zKb-qX12m28W6r?-beYHba&B+VIWvBvIDy3G#%DLd*{*jtJx&>`qDA@K6obn@ku-c6mIR&&@h8>w$$tH8= zArp`sN>B-!5~Vi;(?BJ^Cr}3xv^v#Z;`bgg`1w}fHOXA>qdxhAwzmq~Y)n%!EqIs& zg>(hNl9Tf4CG5nrgrUnJ}E)%=95Vh zyy%CC0`#pz^91Is>GWFGBz^=Jg?D4b9~okbF8(VH`;EO#bjedFL#^6M6*)91e&2Me zztjF%0ikz)dlVc|_hpZ*fdPB_$fh@z*iMalLvRk)I^Oi|lBe!$>Mw<>HXP zbF;NaTiZXK24aC@3A47kDTx$g6st~9uuO$4jh027d)vXzp9nK2(1U_E(+aR&{c)1# zg67#_3EMAfw@OKH5&dMc(CbWQSzx6)y!fY-n-B1=6qlnO#^Co`{sHi+)0uB<7kIQ^ zZNAfE9$eY!DxJg6H8QT)``LPf^N-NhJruMSMfI(Fd%nmCUL&JN<*yXSXg?4B#7@{lV1~-D^siDXoP(QWWD{C0Fv|O@%u^^MeUxvZI z2q7pn9GR-z0@Pl)5=JPH#1VwDzk0%MWQ>MRxR+EfA0LH(7J;w3!Oa+@mK){#WXZ#{$ zY~rv5%r+JQ1yLT(9YLNG5CIR!&CG8UZuYzFBD8D3wqN|822aG@?cy+&xsR{9IbgtfnJ5@ox5MmuqI$I zrpvNq#b$>W&wJoO)nP#$&mT&=a}TDVl9_4AJ)L! z5XyiuCD)at;%X`8yNAnN3K`*Hyi+LiE#DrqC@BZdmg~Ivv*!y{VOP_dz+(^&xP(M= zK^C{^$y{me<-Z-sFtj7N<;ioADgEZs9+LhVd@hI1A0lU+C@C<@h^QLEY(RY)N~Y{$ zrAN|*v>snR7v01o9+4mw8&78VV3g0~nZbf)r$I+S`ONHmPe^?Yci{<7@cn(JF4mrRNOyhUGa zGDMoGq(4b=!h%zOLLkE(`w1vAqRPahE$9GC-)h(&Vo!>D@$88oZeR?|t|Z8~npyQM zad*jw40ra36q1ju29b%yDr5)|dO?2;<7P z+kC_2tq!ukS7G0-8yaTC{sO6dMwRbZxCTA zXL+df8@|FlWLko>Zs{oyi&Ef<8;Fyi$`~l$?kc+o(Z+2`!zJ{JZOXoF-BG>QZ@qcmv@)5`c);u_KTM52 z4^S`>@L7<|7HjK!Su>>VOON3}TEl2u>EAlD&?A;kRbHj=U3&2`dYzG2l53;2uYIM@ zaL)5}$kS+muncB0T^=~vi3(d%&Fm9At?ga9`f0feLBY2LVeg*;wsD$0h6-LH%}rITY5abj5cnK zJ z`@eRzODn=MT27xzb8!ffNUVtyKjDM7ydw1Bdh7be?0lZW(%0v&@%s*@C}Dar5k?(X z=4TZKbrF~961f%nSQsO{ua)Ada=n&y=}48;tBA!ei-X57klL+u$_k+_K4dKuQVi!X zy`!ULN*g@~t(AjP5Cn@v_eMWAQY(9zlE89I3khaK{F|ngZR9^Plkp%##wd5X&b)04`@&CnTd=z zn%FG+Z#lK%LjaTbmjT<>;5iZ)Xu^VeT*UR75{h)3m@PxWp-R~pT>5L#c5nsqOaTd- z%671Pj@qZI_4g#}$oC0#?3o~ZUCgR3DqlEBC6sbty=LX7LCuz+aDUqT{T5Ukw86^#79OOTB>O>wJE+C67`EFN|k14o94t_bx9OG)c5`T08QRYKx)XC>;v$2M~XxwSeT7kby40X z4YC&iLG-)CdKx`9ch{QS)PBuym*)_d!Fq<)Pyk;xJZHe&w1m!Fh<&8>jxBwa1y#(x zA(~SlXIO7`YB?(^^yq#5J?wZ4mVU9`VuUt-*9C(}fAkZRd*7DBk?`PhlE+QCZ={9`V7$Rmu{}O>Z{UGs60yx*wX(8NuV3Bhkz^t}H9HY})C$yU@ojUT(?%@zPxV0jZdZ`5TY55bRT#1X z74x~3+cV@37+S2e*?&IdqqbXOcc=u)?Q?G6`*=n&K@nl6avps8bMXS6D|t_plw=GHzC zQjY%UN&kNJngGHUIJy6KLK*5@gkvs^=`8&>=@kSie>c35-O=;gg5PiOV5YKg@sd*( zYPUM25Hu(k;P82Onp>`Q`{ExhMc7+tsfB-=;GrG#s-)m7EPi!&JXa}oUisPXez1gvlRR`WRQSIEWT2u$l;i168qE73O3Z)PwR-gZ`$+)Z+S`}~!{pygzV&Y$b%IJNCG`|Q;Ss=s%Uh>!V~m-FM| zalcnfER_`Pe4BL5BifJdzdUcn-|cwfGQ691a$9yqOiL5IDiyHh(X>j7_gEVaJaMRY zz|DDW68B^G;-B1d`vnS|_(6VH1vo;RLGh@+n zrf@Y(^(6Ff(-H%FDp^KrUoL!;n&rIF5I-)IorxMv7MwMLt(fn4cqv=qIcDF!OBJN$ z)m@d6*RRBv^TiIE_E+cY{4RyVS^ixX9hkBBPliBaFZcmx_A>A$3Y!*x%5NN z@TANv;8#3DQUGbw-(yo$LH(c7C9I`ytMmfAtNc;RhUP*TaFjDtAD$Lw)o`B6)Ks`R zDUTySjufZrzOdT_&Ap3d<{}=?eUqm7dIgSG2*dYvZ7W?0h)RRaqy=^14VIiEsTj}D zRAFY9>qH~o4W2VS+&_NCwzWj8naQ7`)Apn*^D%fn5i&Aaq}RZ#bV#a$ zlnh_|L2?LdI;OYZP`gW>Z#NAU{q*;N_;*@wZkf)de-=}n&m5r?9KplAQq_M1;qc@4 zu4sv*t38c)ui0fsKWXw|IMn}xQGR=!Y#lW$ASTnP;DxyVfXZ*ZuNdl2$uvY^YkOej z(EKWC7D>FPVW+k?o+L7H!uM3#_vbWone>h|folK36dbI0|k z#~!U2q?*;9J)4QvudF`meYT9ELJd`@M%S!L&B7vQf&yG|x`*2>Lhx00tDsNU3c@g^ zp6&5UD-p<+RP8{#6Zo7?U_t?%TVxtMZ9P>Wa6zQ)(hYSg?@UFp5aNV^qGb(kpXUZ8 zQUDC6_oL*PuncA$BIZ#PdN5`)KE{q5jhJYph%+Rd^6?Zsv=nPCr2!9U{~$ord?@(eZL3#HC<}1 zsk;3#jiGU4z`7rOce@O|eZ(ch4*&ygorCOKl}W0@#&A;06;$e>X1T6dT*o6p0Pkjk zAcX@^NB~;SSf|c5g`^ND7O4(g^2lo$pMfDo=5vu%Xq!5d2*L-3LqQdZky8qyJuH$O zb=v&FrRKtL5p@vchR!>0*YGa8Sy3ezftiNp5S>=kmRVXV%`$GiWF4wPhdsoFZMjk( zu~So@?Oh>^ZSeD+Dc8}sG3R?By#VFfWU&20g7ilfu`qh-;3Ln(15hUBLqxrk^=>v~ zm5sw6r-M8yHR46c`?40cT=hnWA72-nki3~8N29EORNVU2q!_8ob5;1ed=;5tkJ)~v z^BR5_iD-|7VZDd|+ou1b{72S|-F)p33Q}b{(r5#vHf4!8m>@GUwK#NfHJy$X2IyjGVm%-CaRZQ^D|kKd=R(yVv#+xCn? zGu9hO=+Mg`e`2g%V0?reQPb6;CpWK`x|o<)~-U>7|0oRhB*FPq~~KQIr{dL!!h}ZnT*%O3Cnh zlPUCc$e8p}wht zxtJ(txvknBzP>^l1r9E5-}cCH+1@$DzAi}X(&v99?daZ2JA3z@Dx)`8h5*ge&3~cv zJ0{AX0Pa1N*x6Whv89dygH#D1YH6HudE#a-7?4x|E+KflqndUv^4=KNpHTvf8}rx?fF1u#a2^%7TVH1M#tf`I(JAg;TrENgR>~5Az06js^3RQ|&dn|MOB^ z60oLN33j#!VXh2eSF&YTbgW@=<*sykSCj^Fhzz;sM^lm}4l7vyvp z{bPiSlo%1gudPRD5%XAzpL0Y6vBqE4!cR~lt%QT}?_xBGqK1#&Nba(KZ;S&ZtAu5W zq9ps}Wx#l`Sf4Vv1nq;EifyCA;(m_lie-K5@8Cl9h&2ya2U@cPjX?%kNYC$Hq`Qy! zN^x6CCNw_5(|*7J?>N0MJ>i4!%Bc8vQA*S{NjY8#ota60;O5RpM7L3&P$_924i!nU zKaO}L)WiJ&<4Jyu3Fa^1RR?MYehx_);?4FXX==W#Mi6FzG)o|;1v%c@-Uw!0H6>C>IW5K1C= zE^}CkEPNy*Vp&4p!9;&NN-#QkJK63PwwH~6@*MCTw|#OOX$tMY$KK5B&{cP3hlG5u zOx{j_UsSr#fR`%KL0&^AU~o0%`K!^_PC#E_ZmcqM&b7^;a_Z0abS&(A48>%K z%%>a+{CVt@oFdWHs_Z!yz@|<9cx9f5e;%NyKzf09SM(#D%&UKtByX8qk*X<23lXAA zqMsu=($B|(@dAJ?$4mem;qiW46qzE#R-tY(E(MOV`1fS3?7|(UOp%N{9hpKa{UUE@ zVGHCvB&QGviu0GHAK)p`IW~AsE%HlE>1-@=ZDwFMrf#|*d=380WvtA6!rQ)-rP`5x z{oQ3$tJo(xTj!n`kb@`62CN0J!tF}m1bB8umk|b+ZV{D>qLk8k;MI=d7*~tff&s>b z=!gq+vubMt9R0^*57C&9zCz`WMjWg$MP`2p+W|o{o>YxB;UtG(G~7#QCZWq3 zqnj4iR>AAGnu6g;PK`O}UN|+ZR<(p4b(@Ylec-B)mxWY}nAEuZcSLQBEIO)3gKTv@ z$Sb^$r$+p?Azh$B8@V1O7#CF>Pyyz=#i4zjR4H=b-DPg8PM%Z+;NctZ7LFcAQW0Jd5CGm)h-IU4~Uw8 zxI1FlUSNn2RS3(}kBLY_}k0J0xOpC8^+_RH5jT zNk5f|%Xk1z((QPEF)VROT~vv^semcsR0ct{+3#y}b35Pmx8ADMUtYDUj+Sud;I?bE zh~m<2-FNU8b*cRAy6XfqNJG(b@<$qrivhq=Fd!MJ6IHtdvRxjZYm{Wt+Hc${zYce5 z#6X$rX-Y#Ud}thv>HIv|h?0!%&rUip31)Y4-@@rb^mo;W10tN<&E6A_CgJwXc7<&9 zG)ObpPJOOIpHhTy@i#R0nW zkh)e^LS=gNqzG-7Pe1P#<-V^^Vgp zd7kAF?jU__b+uz7?e;L#;|qTLnI!@<_P1>sVg2YUU1o;sA^U z)XQk2tvwJOIL`#`^fuUa3CDIdM|Md}41S0mW)*6=yn+i{!X2b*6U?bu@kj;Yh#xtC zb&o_p)lAH`&;d=eBQkYaxadnJ4fr2{SoeTmkAxcLW4Or;x=FPa56!ewx(N~*b7He@ z(i4Q*tq$hX&UnD$#&%uEG%oJ~LVC6@bw)aLc0{{@7>`w6i&$HNgrpZF`Vj~_n~SiW zqUHUji!~~-G^!~HkaHo%h=(ZTBb*kx7XaF53hvFQ7HFF8lbT?_+qwnCjbH|KW=BcV zTL}^{&WO$>Tu{;$!?d5BrWUV`H@tS}F2L`5PQ$+GG6HGQC3J~zbiNi+%BMK*O+)(y zcU2JiW%oBv4O_L$?cscK)u-X!{m_Xjvy3pWjjVH{r5V=z&;W}U&Xe>ix&Xw8lS;=L zV}ASfQf0wg(*3gXt$Qk>5qi`Y(X1gZ&|c-!>$wn%e%#oWS;K24;~yBJ zz-MWq=9rr7!JWhW=nnkB37qFxf^C;4ND@mtlH@x>EhpE(GVOyZ{b@9;#E%=|uYWQX zZL=VW1Um_i1R#Fxhi3BE3JJg!K2hrv06;(#C*IzLPums0 zjhO9O&*yuKw57woGaRz1JJ-(miP*Axn-0oMssA2*6hv_pbf;g&NRs>V#)<*)G!u;T&feFD1Xj8e^Sq7;3pM&8x6 z*gfC`q_|^)FMEKlP@MwHxAg}C7MQ{o`>l+a+C&wG1Y@f8KAt>>F~oCElxn(Gr;DVdFs~@ZPSjK@L|9!B{vObyV*m%=R@i1eLREXnFqip zFt+d|=BF)8O$Y+J;u%ms15PC%YJNo(?|#(!Oc-|o=$hH||9VtH@D{E?YS(y(&^mox zFOp++^wIo?3AP{Riq*-CS*^i5M@!q&2de1<#Ru^%YY-P99Zz!rGLeqsw$2E*u?uFg zb&AeViH?LJr{ICJ-U9mVnfHs&geJ7VTei=BaADVcIybKPmBodb(zuKKnI20Da9#iF zOoKFY_QZzvEaKvvRraWM`vNui45jH3Ty#`^L3B+EESkkC08_=yULxWkj6bn5`_F7& zKH2B@bw7?Ww>BRVh$RVt?~~q3a09#>0iVpV7G51tHt??1Ux1N+L7HxG=dN@ue)Ak+ zC-s9^UM{ol7hKiTkZy2YZO>u7CH(W2@QVvQrk?AK|H2L9{H?o}6K%=ofOHO#`ROdl{V4s&cU(1E0!`HFuxHSVSdGIffWb9iIYAz{`ps%7n|*okk5_! z7Z>1o=BnW0Hd~4$xdG%Ccmkvn& zmbmmA$bp-rzVF6M&wr(fpCAJlov+Tjf4mR)bc%}% z$bUxQGZ;3SGlgQ4MpzC-Z81jT;D1Un)P|M@#ldf2MxiTa%HWv3RaD$8I-bfKjdeh%~u;3}hB1n5?3muc9nxfkk$=T;Ip zQxH|qq(T&J9ZR*p>4$-2bMBe>N(M4mzq!7?(<`P^mYAG~Q~mz?ZGSN8dmFUNw`Q^t zdn|u;UtefcpkDtui(Wamn$o$pjR1LYeXsJv%XvDaIDx7m$ez~sqIZ-^RJj#z*T{Kw z@*MeL&i>cGZD$6;2{rGkI0keg_s1^zsn~2PopE2;_yg~~WmEEqBgLY-RT~U3P4XQO zOAX6$P5zb)aMo1)IH*Y=4DqJyxUk=gyq3#H=zLF%udeWAbbiqvc))jFp~|2gBZ{UO zqtq1X*F2f@4VrhtJg_3}z}2YHWd#m4?V941?74D>1Kt!{gO!Ag(0Z3u=Cz7idQM8f zXN4ihT~whYp752f9E~p!Y|w0yDoaQyaac(0H)#fX4gjN!&KdznWEY92U?NWdAy941 zdb*C`C!hT&PWDcGS(3`>xTuu-OOOxjfyEaeTu$vum^WmCtq{G~1+2!~zhRgNE@3dzm-lD-`BCx?3+i%=SSjlJt?Xa7jC(wYbhS@1jQV5N zaP-BnfHC56;C~rl+WseYgU~@114idy>L?PpXKgE3)T5dNqREq@Kc=~Yy0l7#TsLlz zBP1EE_XTDxw+_B`|2y*PbiZoDzXg>;)98|4M?duz&kReQuk+#r&!IV zuUW{;lnA5@{Yudg7aHnEQtB8sn&U!JLQK!jADR~5le?ZeI* ziNE-qmQ*i_lm&Y|*OpQk@hjO5pRK$83VBr{UX!V@t+I7{%ZNF_djf7E zaBlNPu=X-ZfY0BtHhx0sc0F_ti=b?deA)S|4DItHIL4g_jbGc>|njd29 z1vg3+IK3STYFU^yWwJ?20_+hJtASh0LpY0l2-%XNh%k8v`L+QyPKZWSLzN?b$hfO0 zLGaLzG}~lS)Q|g|^hwo72juqXnUid38WqWM>27XWvUQ`FkRvYvv+HRBNOn&#M}{GdS_mI2#BpYW8N`qVYk zLP`pc@=^jZR^sCTXyanx0`cUj60$$`w?+@WOk<;IiQnU?94JhmQy(J>Gy=f-w&i(} z7ItAM7EPfsS7qFIP+dHVDeWaa6@lYL$2gVr++{Avku{F4X7NIZH7}lS+g`-0%i)|e zJ-(b%JvINUNpNsTH{3$3zrqDT(RwAf}mMEHK|msHYV zXHj^9nprPPwp<&w3dh{5``wyTyp)=1O@Gb zo|2=!R&L z3esy2KXqD}Kl50}i`E63K=R~Nf}mBa`yGx;EgW-g-QY?s_ot7UB_ zMfqo~>v~tps$CdsUu&^YYR1eMU0h2oOMOq1Swg(OmK9e-!ozpa2spZQn6Q}3YgNlU zlEA66CMrLSl5&ADLE~-I>PdNN$1Diz;=4VQY*$5cpM6T8?D=?8WiIiw3O`${63C5x zeuw)#8l3sxC1X)>J2`ZXq2?~(!)sWya_w@h8_DZ^Jz_=)`!$pL(h7FwCahy0clOa? z4qc9%9JM$b_V4U(lhiVj*!6E^9NUyi?4l0j$Q2z@go@px4u3To-800HZoE@lD@tIv zOvfLg%LvY~Q%m9^zF+s%^V1(;>WEV~H{#XZ`&uXU^@1CyKc=_+!Krf5!yD}qt%=<) zwb*{>$4}OdXzh8Efhi*;AN+P@q{E^`Kg>xCBYfresuGVLl*}CXGe>>7(P{<^n=dW+ zZWZgc=>qEvc7_5^JRz9vg|J10?UJk`=9P1Kzl5>_7hDcaW4wG*=76T?m$dUFr}cO1 zL=%sH(m@nco+j423YgRY`59rMlEiIR>{c0CwpYB}Kp>U8&$M{6_f)L}o7ms6>8cMk z;h)1u%{rp+7F<(`WQW~_I+W&%uCxPFPmgIj-CJ|RiR!|-50E+i(wtApZ59Z5{8#*8 zz;9O7)TAqr^I9@uOC@2nO(@dH*YzhpjA;9Uxj*CLdH7crc_c|^FwambuqmLiqn5tq z%}12{r6q7cpBM21-g~*vshz^bfTqtGI>dFGYs+T;XgWh+v{EWbKkenQh##)r!FrBA zZ-UF{@GU^d)js*1Oc&3H07Y-^^j>bW9hU9BThhPpAvAsTOPb0Z%K4&q+(rw1t`c$j zUt4s%K&kF5p<30;O40M{>{9(W{W)DF+fCQ0Rdkj-GXZRWYoNQhDSxiJtIP@SsS>_- zQ*;^Q>)xR?QGugbQa57iB2_;oZ3VQ*eHzQqjHvb86jC3O8v^L%o`(J8QbxqXoX0c8q9Hl}ymP3DP ze-o|%yBheVNfmqWf$u3=x~rct)wuDHK0&|xi*WTzm?0{9B2-LEvaTfd-*I=sJSBlL z9{%cJ0a9Auyv!kjh`?7>c3vlkc`q)cXlO_j7LvshT#^$!-Y>WwbFe)W!y}gmCuykR zN#)^Fk7MS=rJvA^7XQFHz#jED5p7b7tv3+&CJrZTfa7LNDp4ukI6FqDFjOiDOOFA| z(YTdqBgS-(z!#VKUG@;`ZoNSd#q6&U$lM6q8cGOYG=``9%Y{PaMR}!`BEG5s3k8;2 zz^IEvlCK9gZB%ew6f*hjXkb(@g?aF&9wLgY;9!cekVniQ2>?|VGR2(?h5cAyP;j7o zFlGNJR`S?Zqf+(VK(IS<0(Df_BPIzrDtTzEs$Y>DY3!pl@~2YVR5j%gwdj~yrTDa{ zoYttUTF{4fXXQNm;IO0Mn6YuRl%PQH#3)h-l}t!JLsVH@Mea>(Mc!ymlrjSti=j|u z+g@b=5RxB-3;|5AE~r#-U|~>1;ZjU)15l{$f&;Zw+x1ji z_U%z^7EgVST79GzXfTtks~k!DbAP>`??NC<3d zrN+X6P%L6L)3L^)uaN+Hl{}@U;^9~de#eb5kCJd~6e(Y7<>u1y|A%tD{v44b;&t+W zQLYz*UlJ9#wWL{6Di{6_<(dtwcl;m9b>|V>{@;`oidIK&kz2Sa!qhBYF-7$XC|0U zciozd)td|^sCT!Yt!K;Z{Fv_U_}xnAysYrl4Zqwq;iP{%)6;pKE-Y!v@Z8gN`|At0 z-dzP!_ut=Jb$=1BDwov44CrPQcQq8CL@1<6M{ zvH006TIe8-baMZ$fxARAu|Ix4Q9;(EdD61?_Ot5clvND2)YYw<0n|ELR`Dp8@V#`y z0E1F#QQPDF%=m2^8x<8n?1OCki8jj|=l0`+T=x;y!#wY0hr@iogQ~-V4}XpiKL=s3 z9TkR=IUW^7F;yQG#|gbqu1N}P$E9idFO+MRZT0^z<*L&rPc9?5e%iXI?{wC-l7TMY zzOlpb=6@(xTz%AoauX`(NqaYt?tDZX*u#ns`Q0mC6#To-(gXQS4{^obXn@SFH{6e< zI4nPim)R=+6+rw_g8pBWD|bTh|4^=x99Lruna)?^EETm^6C53g&IkNs@IHw-rE&cyA!i@!VY~?bjwt*i84cc7Ix2ssd}?&Dl+T8r87(^O_r>9lq!r z3hlqB|Fk;yW3#t<6RpcGzMa3u|EzQI3-z_QHegY1P%7fO5fyk#l}1?%3mY!t3JO+v zqa1dDiUxDUfPs=Nyjw9oU_RDwiCke-tC88jg(orqsO9JPiiPoygB%NdZ)N0`5Atfe$2OxaC7 zfhz;htFdqPd-^C)AjqgRUa^8~luV6)p%7QPuN1&CfUa(ksr7WR8W z^J>R*@@9doc-KNDr{g&VqM68hL)j=qU!{}o$g#D(SgNO@c(HMny*%B#P!K@(hqc zugMIJ6g$8mo=#c;+@Um^j-X40RVpc}%zI|bf;aCXMYK-vTlKzDPF{`(otMN1E-r#l zqerBQA#oN0N)+h93hD#83oaja=~$m)`FwBjg15ZEGwvgN=8gdC8^!85!w8w`;QW&3 zuQdq!Dw#gs#b&Lqpe5-V))*mJOl0yBWl3i~6d4nSCzCmngw-LCxE$=t@VgxK>k*Ys8i?(Mn+sBC zaJsX5*@Llj|4o-TzKScRWxSgyDz97qYg^%(g=vMQRs<5KZ_uQEeOG1|=D>;18!FRA zfu;7=wg@5bfb~>!ROsQ#xk1}NymQ!hj{Z8ghG!Ggz4=?pkG(Z!@e4oE=u5v~MmKtP z#w?(XF0rZio(h{+FHEA?RIU#<8bwT)y^-H--i`MVD3Dn?OnN`-cp^DVr4O_9$?k{ z1yASm*!G6J0ooZLCd9N~;#PPz=&6oH1jjYf*0n~H7=I`Q4w^msK5SECz8l3yzR{>y zGm>;;Y!`|b$a6|D5uGfnP4y)WjdwDo>t+IBeo_*_&>;wR_i23pY3z;eCh5H6F4bea zfR@Tff(GNYvIw)+64X1kQyK4i-fLX@+jt&?V6C#7(X>fx;OM*PS$)C#$18(IlTj2A zz>Lx-Xq=GaAX+8c#OHu1*C?@g2>RQZ@MoNR-i6eLzjPE^^iNfmGqZ>A&}RXN+h;ot zfVEaG;}va`bs274Fo~(=0gF!+Zi@R)?{$MULxmyCLD%d@STn5eu4^3crx=aT_7Tgi zaDRS_=_5lmHDa09cA6bvDIna60Jx}#X}H6qWNYh;;L@`mI{Apuz4l)sY3UDc={JH? z&P#CpqD$Ohtd9*X8j*tt-rL>RyC(y$MdO{W%t9AU!I*E!++GX0^C@;6v3s<>Cp5!v z|5dRgK=fCP!18x>l9kPzJLj@T&Qe|&rM5I;R5{>N5X>LK9(qcI5$h<9o^Ul zdUHb6!-kK6+ix2>y0aGw_khadx1*@0M;qF+P=%D)HhRcjW<@Ee==s5vEAe1ht^l0c z@pyT~l{7iyJ1Xm=aG|LR^!pwD=M{m7C5n_^-qIU3=((g!k4nH^niVzTsrn)l^1Y5d z6Ktpvh0rJDzT{xeWa$db8LvQbSU>suwDAU8c#ts5BQEr$_Ghj18ue-95#{--xeq2c zdOxLuM0|qiGu|vU5h#}FZeZ$uln+FK{09JqKzhG{T@iBlS9ML3dOy)$H}+~bMOGjv zTXiOaHa2ZDrhkD}UJ7Ah^yL&hw{uVPd_qxuh4xh3zzkw$9c5Kl|95^LMuDa0bfz{G zABTVcAa!mtLMjnnV0B_or7Zmsir3X97nQ0yq#|SVfqoaAoyuUj=)| zaeD*d4*wum(*RTIH4W+ZVO>!Ub2oWavwl+HRj>9{-%t(*rVZH;Ti4bbyS8gpc!FEU za-QdU4WWEI|1o&rrhyD0gEwOfmlPG>r43c5iP@lVV7Wo>jPgLCJTU2~JhqEqyS5b;2f zf|nAGD3m&J4G?J+`Xzm=*ASBzlN&J&(vW{#`4imWl~<99aRq9}Q<8PUTlXjx)^%MZ zmVK-^5F|H~G$|;S2vSu641Gsc2lkg7sSr4bHIk?h@(?GuXal<#6gAa@JB4=rm=M4P zXxQ)!*_V9_aexHzR5Z97N9PiMi4k?znl?$2ClQ%+ITy1@Cq;=E9VdMIcUrLKk2z=@ z#ZXw$@N^@gksRTg0x^)VDG&fj5Y3qo2zd{fQJWg^4)*|%>L8u>@DBO#58W9cqKHj? z|3PO;xn>F>h5Hp-Pi1_?!JZ=lZrOGb?VyJ4fSj-C5YIUgk;xeCK%E@%4(~7!0lFZT zxEOM{n+)L$O*jyPXd9YI5XxW;00nYNXzcUk*o4Z;@<>uDSb)`BB(dzA*CI?58?xe*6xlm59DLD~`PAf5SOq`NYH z3$YB=aClJWq!Q{JOJ{bI^>7#=XXhYpCTbB)?_wSeq$*X;UJoTk);U%she679?GScL8&OQ4!gFU z|8Ngy8X(tj4O>u|bJ1qk2#*H=qiPkSFzRe&abU*E5?qC<2oa15aSrrYr*|qMvI-N{ z8K{K1AKZ`(T<|$l@t6%U4A$7DO_in#0edwDdqQ=Z7BQt>$F36bfjVV|j|P=#0jt?U z4b<>3RnedbF|Y+O48!oN5)oy=#bPJXf=GuEkJ)UI#&-qLRN!hyxf&P3|6q;5X`T?_ zfjRbN6gv`(R}9r4v`z=H32~wNIARG%RYsc=V~3Rc#E3wqSrfVt_!VigHxkRRTGEwy zDglN1m0xy-5YqS(#%T~xn@?DV3^%)o$)!^d8m`$TVhY=|;+I}6NSqw8plljk9*Zc= zdNNtqZvv675n)^Dsb9}lQ|@UIJ7%Nx)wmULp<%g{G>8l{yO#N;S2XqwaodPJTZVs2 z5e_SGcDsUNR$^YYmj>Ys2CKO*QBx(B5luB)we@VcJGL5uma3I&C^2^M7q(9}5Hjm| zC=;fN(qWLL4U!dW3SnXaS7QmgymCnr1IN4^2XLVpvr$o@^e9kR|Hpbpn|)99nT2ap zv}F?E+giFy5|t~qW4VXKTM<6Ru&~<@73Pm1=@4)Aa-h1mM`ng&Mi4*S5L$*=2Yh}q zfxMEkYdXTML}73H3lYmG8jH$`ekNp@WwpD4v54|~;-(H3TWJR|!4>hjRe`h}QMCw~ z8Oz!nfqM{}TCe}04lztACCZ#XXR$B=dS5{f1;!C>Mq<&>m<>UOyEVFw^1=qe#HAu` z0_hOikXu04xJn!t_G=KvU=Z2&zXbdb1}0K?Drcwb7b+YPfTn1eg~I*C4Fon&vZxM~ zM-Y;zSW3oWUuBlg(Nrw_TTtd*-wPPm3Nqpu6<->{>3|OF|6mRcH&*shu>bJ72l01f zXNz<3orA14t_gH@C=pj|98KkB!kQ4ymVn*W82tb;XZ#cdS;Oa$$OvJ$vSw3d>>6oW zm44i0t85pU{1!LtF705)hpUIqQGJNXpuMNWYz4@dk;)jOlK)W1Qqi9^yjV>p%PBEb zxZI*&A$$Ghh$}0(hK9#tb++;u6Wy7w4Ux(Fkjl<%AJ>}6>I^Be$Zf2Luuz4~9MN65 zi@QTrb_JYewX72@HWH_{U!NSvI*|{~oDcgj&k*s>T>-69G04~25AE#G4lNMY>YSSb zR-LKO8{t(qMuz6vURk%4Pc_hTL55?u%g)-wCh?sR|IH8*O%VKm9sVE??c5I-jnQZN z&JXRK53Q%zSS8ZccIEWMBI%M#A(w`C`UFx6eN+ZCUz5nM$LNNdg#p_~KZ#3pgm zLi(W;O%!L^&i~L4487JGy${-XrrpV*0C^7YP}l!J4jz0Q(ySHcpoi6tp#z{HLMQjfSsqE zwuf?5vUi{eZX^ zTcuv?6V;1dYsghKhH4gZ&;opt3=zmQybu8z;u0~)Y%LJ(%+nGb-PWqn29eY7;lTgU z$p%4*1>Pw3ti~w8w>8y^H3ewql~syHZC3|v9gDt@HnEW#zWOK;*igARbq%{+5z6|@ z@l6mzJrFs~**tx%(e2P_O%V0%9WqXNGcKm4!o#6gXG(5i5O{u|C1}qu<@l?v^=0A9 z`&AmQ5n%QWzpWA^t`ZN;)(`FFS^f|6|9u{rT#^#3QvZ-!D+TF~UJ#O9C?bs!V8vk1 zCcG1i4cY)`(=g=67Ji>zTiaX_bRH4SCcLJGva>u9bY{}Sx)7-znae8H50U5tu@Agn z*@*6)wfgJ2?j1*3=Bc`)PT|!A5yV{a=d~fdJ!^*8D{ESXb`y>erydbwR}S8gwq;d) z7`_pEE)dL6fLH+YD4Yfq>n0`Q{!J9LCI6tLAd;ww8_AFTrUvGknLYg zo*L2DDsgjN(c_Cf%e_dNqR9+uzY>HEWu6ZF+VJF&OoaEI5Dt&`pP}(*LJcX8wXZG_ ztaWw&E)d^!n&D1e3LX(K|KAdxf5bCEXe7OG7FqtjdHyfqW~!^Yi@y?*Uk=>x{RVO4 zbTa0PF?Qo#5ky<1IhOhW@lW7Dg2nzBL|6?WL52+-{-gF#;zWuMyH&)PQR7C2+O#<| zC-B?9k0S|c`}WacIF2nJK8yD6nYEbFXlk<=)8)>V9>0y`##1Oyc|(mJMVeIU(uU}m zK84zF+ct^TTtX8Ft=d1V(6Ca3W{_(!uUyMUMJv!-TDB+8Z96yeT)Vm2&RHvm_g^`c z1j)6{sI8c`Wr7JC2HbM1K&#ryc`G-OTjYNx2cG+miSyqPW%m16g@P~Me=0QXLhHkg_b>Gf;d&@GXmg*}u z!K@jq7z9;%Cb0q~GA|{Pd}D|kr_2G4LV+}6D7%01si-J{Km?H?dw}H~R3^#9vD^j`Sjw|w?psoyV zB)h7+tji7wlINZ<|H&@95?5?!9~&DIGrKVb^6*1B|A|MQIw{(&N#W=bvQz*(X_o_K}CgU!$FN z*b?*EXPy%UiszkfABr>58L=hTS!4fcw%q9kA_q`$-(^UriIRB=Q6AuhmqUE3#73Zt zL>l#{bh;6zU~$q(=NwygJLesB-g!r!h$EKxoi@X~C*yob+-GBKjb)afjx&~Lo_YQW zGv$jjZqq}P-(*O}f!y6!yfd3s*2ZLUrn6?^l#%xzM2`xRqM?tHcRqoX_E|g)pQ5?x zfgYr&|D0^Pxw@Kfw6-gqcUJv|)^f)A23NWqmiV4`=7}+#c`R<{o?zF>M;?0EsYjlD z?&&z>X7$mhWO?vmhn=<4i3e|Y=yAuMxT9Ui9(V9r9B&l=ocW)qr4EhUj&&C3+-B|R z=S7OV<2-e?m>FmW)n5nAndZL12GWPH!MdAnd_w6Pa>xnin{b8~e)w?QStogT8jq(Q zcgh)xe)#d{d+_<$p8DM&00AS7e@I~k0&$c86}Z5R9EpHeyGA#*v9*+(BZ9xU#Vra|C}eaH z{~8_q1~S4SLJ|fK93>QCIKZL8aEzmc;aCSa)&WBq3QvUJ7{?7q7`z?Y@FzP&1~|SU zL(|1gU)urH<`@{2ew1ig&B6z>oHdYmpl*p*Ov=5mxJBD35F66q1~{i zODsnOueJ?waBYa;NJIn-kO58#Bm)fjN~kWePTlnqJ1KTLT_Rj!hi0&!(56JP*P zgrkU>!zJbf!lXyCWp8~V(||aY$X+^<8MY{9phA+&iC{w;*uVxi$moqR@@|Bg|BQ+( zR|!jPc9Wak%m66#=tqoLk(oj{Q#&}6jsczXoCN$w3w|(z1iI6nRkFr6qVbJ-h((tcsX8q$!4HmsqIYS7dp*qBByhye-&IFys0T&OD_iqLOr(~|??q%1jU zfKC3RlT6)Y23#4=b+`jW@dy_~wqwq%t~8|;0o23Pp)YiJ>Z^++U={vh1JJDJtZ>?8 zJko*DbH;>q%)kcgpz#f8$n+b;zy>jTAy8Q|wUbV5C{c$ROMx&I0SNfV|0cKj$$|a@ z0Z@Ic051DeQ-*UK_85qt6v>ao{82MW`o}pyx)*_X^{oN?#Xng0j~T?^Gj4rtJJuo6 zM@nNFzLiEbYC2qJPGcJ2=mk$ZyVS=_Zge|Y(4@walaIwN0+LGE$68hZ0x$pq zzT4cWc2=Ai#p*=rM-V-_Hn##Wsx1k9^#teG|zl5@{weCAWk!<}j66J(FJ@6?!P}Tq|wXGhlZ#ieSLvvf06p!HPs>)+c#U8LnZb=` zXd@9$g*A3r{oM#ecGnpo_N?iw@MD8F&&&OFh6g&z%--9~Wkx^*nww`@hQl7t#z?fH z6(g>9d?VDskd?|YnZ0D&>yBQGR-93dudw}`1s-dz!yEX`DtjF-nn(5KG!YOLMPf2LJ4Q4<`ixg5 z^zVv^T5kZFzIH_$eN8EcQ2R6inzSJd#ztXuAK1M||F9d^(BR*>8)L^Bmc-;W>{3UJ z-KG+Rvf+jPh>d@IFkd##tE8$u!X?^=SS(l;JMif#Qj$@L|6Q~FN4Gh%nAB{={UqNI zhvJUKXvj2PII)H^@*j<71on&9$cAi~1zC^;r}CIhWAkzR+=q>yU>hGe3d|ju0%8^iUKQ0D>7{n#~wF_c*H~x*|=pJx+55ZD=qB zSq27M25T6HV4#Lz2nJb51*bZy8)+z7iU%o*A~e~EVIjdM44@aFEzfAb)6kP0VG7@% z5ZYskBbkPl0u7armzc1M8jOZ$SO(!jkeZ@~|88K1UML1Y$Own}CRG}Ug))l7vMx}- znf`GJmgzGn+=xvRMA~q{fml68S;4d@nv~LzOS2TTV2Ob^x8}gT8tkjVXuWT^26E_y zUO)y>04hCXtX8T(Qbfg6TqRlpt(_qxc$qdwdcTp&u|^7%WDqW7+5v%3ze2o`k8mc_ z1DJmxM9w&php4|Q%Rk|A2C^syaX5xxpfEtFt{KC=hEgTyvPSEoKyB>CZ|p`n0|jSc zmVDS2Ut|hf{0H{aibG_k{M#4zKq+(#4=yo@2%!-M#*rt$m&|Eg@nk6TuAGa$Or(1|5n^QdQ=Lla6i5}4R=hYy!wc`+Y?)Gg4uY8 zMbt=Yn+WnF#u@Pl1^b9<&_88hhHkKhRG5WSIE7g#hJ(z2BVeN=AWET(gQEn4qg2X7 zV9KV9gQh$JQ#yjCq{^za%B#f6taOEe(5RJ63Uy>hw|mE_v4+Md%XjIkU*Lij0D^%~ zN&V`gNJ)(b5eT|uhz@@(?p(l7zgCBhse2}#*t0Q zp-p$_hjZLOuN(>=;fh9kKW6$%|B}eGP$|C~Q3kUU2xZ`c8AvkS3=gU)#$x;qms&@f zvIb`O#Agr&;ra!{jDrt50#Ja1B1nTbfP?cC1yz8BS+Ip&00!YH&H0(1%NqxQGJr$~ z2lQzl?1_i@L7wC(&HW@Dd%y?MX_kKQ2mYBNfA|LmZBS)l2nTgep`fXCWIM4$4|{?~ zk|<04!=f`1T#d3>ax!J@5Eu(&J|-o&d<9EM_utqgJn`J}E7!8yn|3McBO_o?B z2xpPd2_1^ITgNkXr@#D5|7Ng;;QR=6ERu-$hh*r2<|I?l0FH*R9qCMrBl)7Lpef<{ ztxuc=VJMVefQC5Oq&RSeYoI1-+6G^kgt5`w0FDTdf|2N|lWs^XM!SRRi3usFz1 zb|{nFL=k!YoR3ixX1Uo{eb9ZSRfnwzMG>xc>V6=t+Q5FzH`ltR`Gzn_E50A>V}$HjZgeZ#dL*R&;@6NhFfq2R|t!=CEK+vh8Z;_mn|H+afrGJ zL}K|BxWbluxJ`U5mIU?EzwKF{#RxMM*kqE1;51lZ4NiF320CTV&>P8b2qTW$7up%d zN8t$ft5D(`Nt>!NkMIa^IH8+UB{vevI%1+fvPr^U1syp(vA~lNULWli^B& z&dhv{|FbHONUWynpZa}8f+ox;56mhr)i1oS$TSt@FD;=RAOVXMN`@~R; ztS=jgfvPMblr9j9F8stBx&4QE&LOr=+K62;0EI&24s+hI5+|`GqZ?1f{LVKGdluCJsy--G(S$ z|AttTV@YPyp(wgq$u#T=>V@8k_|0ZciednUupsG^Hsqt&W*VUiGGvBGeh6-ug(`@F zx74;v{)hMt!3lZ@$8d~L;R|Axv-Bq;Q6SZ4DP* zBt+4MZU$#>ZV16P=hIW?FnZs!TPBQ4l5#i){jl)V(hUo5Zr`C5a;R(&|A)%faE4(R za6|EPAT)A7Qt`&re`qg@LJRmNh}7m3jIwXEKYqMZ?+cUVr~oihH^DX1|L=kBwvk`-lD%2XL1fflmHlt?KpNStAQ90{m_qH`WUzguxYDd54DKx}uO9&(jP*0lz1tkT>P0|Ec+hV-y!Nm2{N= zcb=G5tZ?CXhl+Ct>_~n;t6;R_%#`BfxRj@cD~WP$SoxD*3y25`Z`cNxw|RjWY-W;> zqabyuc^+a$A9i^Pd(WIDY3~tdZ(7$4JRhDB-=%*@IjCn6T+xkz&y`<~5s8Tr(nbo6 zGHqjKAk>-&dxV!hW;>OrDJyKWsQ4|IlBpfZc%?`NIi36Dblx+i@F!ET9 z&M^5oWi;`{eP!^=f$(&hw-T!0ZHJhCfv9=uhh%P${-D4GD{!ZsSF(GsmZR^Cm9ipq zFbCZThjUo}rWc6eknVpNhv*)NaNzKP2RC(s7|g zZ>P?GK7|^*R*)M(qz0A#W7>3}Q=~|{>Eyz~Cf2N4BW4`9GUe8fRKt=DDX-wZvSHKx zV{2}mxqs!-O+1J0+&aAF)|LDB4c#|$f4_wbO!(Wl|G#+8wfmR1ow|Gf=T2wK>}e4Yt9rUu7F?361x|-v+%A#GUjw z(V@x-4kbv=`M>7_rAMzm{ol1MGiCtquGXUW@Zt?_9`CT7z;x*rwrz{9U^;Y{2i`S( z?%TQi`1g+shpw+>ko_~?Kkc0L&pT@6b5A}87HA%X63uoKMi_DA5l0bb1zR;JT~rNh zErICOMyz?p4L8$(rQuOI{o{>MK@DV7a|bbXBXUO_L>-S%HAN0JT>K*hi$x}sk!}Nh zVfX%pF8Bdqvb&7T=w33|Nn@ijyULuQxJOtB{<+c23nR`WLv${ zW@eQ+3E@P!f#p#&cWQ;wZ7O~96;DahBpXuFD5Vl?#EnbR+>X4TM53C&YA<}cWYhZoU>_lY&|$oW9t}LE3j%2 zYpQs8B4m+9uT?0MiD5;vj9Sr7=&WDZqGsNb1cAuWZsKv|=r+X7bPZ26B6Mk{I2zPr zK|M-`l)A`9NYkPAeiWv@YAqztIOX)mUOH5rGpjsv`f8dwUjFmmWdv47PCCzN8S#OY z)hSs%WT}%eK@0a=mNs>TE0MUeN7oN#{*D+4KblNt z51)gJ6rGZ86E;fW_&M|M+aDe||BboRPCW6B;z$r#VcLdO6!?;+HEkeGQ_<)&D8iP3?<25V)%kv9kAL(|Bz78ML9=r^XC|^eKdgM93W-NG69+=aX2u z%sY5t1ydg6bBY=yHl%pS|5A?3d*Z_yBNeHtgG6#NBRgFsjTFp*T#`v|?8wugwJlbT zM_K4V$8#FU%$FqS9!C2I5SsYO&n@Y5-h|0ClLjCyhQw+iD@ZT>l#hK7Fm6sN=A8yb z#gvdUoN6JEmkwr6W4*%{R+vEy_9@Vpgfc?h`yT8PN)SdGBpv3!+sHCm5O|tLqIa^! zF*{-*Iby|-0#ygw#+D9sG)80tg-A7VQ3V&=z@E#XjW&v*jhD*wq!yG7%i{8nbV|*l zyb&JnTo$cwM6I6ED#+3T88IP#%$GKG$yrvp&uBQq8qRRWGN?+``*kC!3VaWMvPh66 zDU^!~b%-K`g{-t>|FWHqqo4Oo#YX zLmT#s&J2iGo9Oj574c>{>Ity{4Wxeu0WV0*_|t(*l7(LG9D^R&q}NvADq7j?Kva>9 zPt}-Y&+1M&3QC#>WoF2+0S7j~Q4C{v`gNVP00 zXtQTnc9F$NZI_POX*{&dErGHH$PgK_mNz3;iZ%&6($yhZkW!9tY!7AWyG%M9WX67Q zn;`vQ|D$+OhsN=SS}Up+w_0|*WAoVYPDm>Y2XH-_N@r2Jwfsjntkz|36GYBrG4LlB za;1=jn3$71`0DOaWP}`RJl8FYhO6C|Oh1fla+~D03$kctdz+GI{CHSct(Ht4nm3@q z+h^si@^3_WaV|%)6Bn-XC;gZp>liIWOc&RkbDTwaLP}2R_Y(OjDKO%g%>nvIa*DEs*KaZy$ z$>=j7fVJ}l8Oo%igBr^U58u%hv&p-z565H#GI^9U$_QcWpkB~hs-hUWUeki+% z5+tq|clxNEUL-!tBkstm%w7y4nh5n{8#4A&Yi(K)Brj=GOzHpB5L)@c8RQM+D|ysvoI`484?&c}HJBa1b&lKc#(;%WI>dutrJOqn5tl{8-F41~tO!K>|HWKv zk4cqaNXQkFgrH44UUvv!O`I6-{e!AiokQ54seFoX{DyFtl5xmHw_FNwG>(`|)`Brp zJvf-1nA7J$#0ps%?Uf(rQI<$JipzxxLeSE}G~XU3gsasA6()o}9Aa$9S$rH)KO939 z_=yV^#4(g%8L|?j_{0wZ4Gm6&e+}JR{aSZ0R9R37lh_s`{uwVN7@rNG`rQw4OC_Me9G@Z z!|w$pn*~xwV8}(>7;q#XnAn6spxiF<#v@J>4XGD93dBO}U3-X3nt+i(aAd-WW9I~# zLY8E5{ewIf96rDp7p@vxZQxT$VL<>^9Sx!>O`^S=%rjQk{b++S7)PXhgNw)pIa=XE z+|er57-1F!Kd>5T*opU9CpEr@cZ#bF*|?6uiG5YNFS=R2sw{`^X6>f~;^1iqxi?+K(8SwmkM#H56W zMM9Xe+wR77|2{rq(hAX&@Pcwftpw90)m7|4;SoOL*2qJFJcXi4A8- z=6nw47R5zj=wl6@&F?%FjUvPWn$E$&&;h=Lswo&tyhlwcVB)85)rRV}zQDfNBM@ zu~4OohoEMm-jwM@VMHdfk}@C#ZgA*mv{2g=2s()59qFif9HDn5BX6+jM_AU9VkCeR zoMbNHpq3vEl?R-b5x?2Qmja_Zac1X$YDmmOC60`oGSh96N`OI?NHi5kRt87f-3#Ta zR&3-)bf?JZ)EjOiZ@8&!n5$!`D=Q7Fh8$*-beo-(|D4n%M7e348NnqhoenS9rEJuT zbs2qB@PI~C~OoW(o@18-2M^C1vM$wWoGTz?MGK}bddQqO>Z6nCb{#o9#0?r3|+ zXY@IgccAO9E^S$qoIe=ay?WajaoY@`h1DwCKBIq0F4PRNO;vbcmpVMsY_&r?MB3s zh}B;>MDTjXIjHYLm;;c#uL6g#cdS!r$}8TUFdJbU3C~t&s_>YmY?CD4FkNa*yh9g| zRs@+IGik3V>WY1Y$M{mNfvMimWH4FC{~AHS>p+ZyLs=I4YU!%PZ-nSn#EP&L74LOk zr}G|f5t^>^ep~(aExPgVB$?l;sRdyc)DecRku)C&zmIv=#8MTBvJ3{lI59zZ-#3U% zHNJ$waPUJwp|2US72E9q#|A!t#t;?bK^z`|V#dJ*+X^eIpB!>o@MKxcUw&BbG=)(9 zB?Rr#jZ1XuI1O<@ysgI&Aw*ORMk-iespxnt3?Ub?hS-?^by|a!#p;CM+l&TV0d6g; zg*V(VAgKjtI84LHLtR`3`jXD42m^Xr12ltE9^o;I9Eh@155d^s8)wD8U=1qMvXi96 z9qt36k9|5Gf2+(D47zQ|ZHlNZ@=4KklYC@PR_1~fDDmS+TT zR!|#4gjG4rGE?ppl*A=qtqD1F!yA6z6H6>Zmqj@ES`|wk)*{6G%0^of1TMQ8Iv>P% z9WOACMts!{8_Qw}-q&c1NohE2m%tF4VS_+o12Y&dRv0u^uX?mv3GJ2X3g|uez0- z(QtPJwmNP`u#pk3)Sg!WU7mOcB)3N;um$73#^F>fPatgbMuz|-SgZs#4D3MA zrak3%ToKQLytkj=!#p$?ny00FhelTHoTiR7Z=Bc;8bry}qp0okLs&IRkHJ64v|5Z# z&9GABJ&*PvY&GNc+Qx=LVGTk`;FP3BL9lmN+{Ql=1R0tN4|I`z=+O-3gc{rgpUV+gm!MjG$P&Ze%(%oQzFuyrp+bYP7^s zibrau1BQqE=|o1HC}g;M$IHJwBuhrh(d15jnme8NP7#R5X$5M{R{I_3H9J*4BwBdP z3}dJqIfSCJOHI*V!;M^n(d#_#de88VhY<&FGCryl7s-dH1Q|wa?05bB`mhk|Cy5um#;!-)u0Wmrf{%e!c&*| z)fPB#wQr8KeY5tDn>lX(#Px+ZHXU7bRa5@k*AMEuh3)KWmY5En!jkbY-rJYdB0i`L zZ=3u_vFkpI17FWpO|xCqbM4gK`#pRh=%xsnN0-hJ^f$R@w@!!4EgScNVlQ(Oul-*- zbVLb~?-+4l>VM-Dx>tyny?UpU0R#TWIPm`d(E3Zvsc4+ZYOrb$%xbLcC@ZHv&CGG| zn{uq<=A6A85>B*x)KTa;?b3N?qkrBh(X{1e({MzGOq1xQ+~86vC!PN3>7UjV|Ds1d zbktGjL>Q+7?H?iSD>5^022w|y4m~7|T{bTl0%-(eEir%ZbBo_IWUsUdh(>t@}5MtqLQdy7=pp)0AJQax$9|Doo-y{_c8 zoIZ=R)zvAV6zJFX79uJg44=G}--fCw#;^TAW(;JwmU$LrJDqv#*e(C@=0UjPwC1XX zF$C8);o{jR9(&sHwBhndH0~!!g}bdE;rv->pQNL*Z8oT&il-fy93BW#>9AFZoJFth ztLlx(Loz9Dsa#cBD(w@;-jCLH=o@UT<5upsrhD$Qd$k!);-S)9NXlow<%=0*;Ib3I z1Px96u(YB%FhRklE&HErYUWC8Y0cUTt;!X$iBg4x^Vz8hIp@e9J-Rs%+RxM|4zXYFjp|Nd86g{ghHFMYq+ zw@NIXc{WR|z>Kd?fvo8-PT>DZW-_b_J=T50qU~z2{q+0>8kGm4)}U(&vdglrs)LT} zeB>QaQHjp}QIhce#9rO-9Y=`LBJFWSQc9DGJ2nNJbhtwu@<7Kr9vHTBhz)nlL0ww- z;SeB!t#m&r2i&T)zT{0uR&gU?SJ1+Zz@d+aAM2q)0<{pdkZ*bnN{Tg{!KWl1Yfgxp zmaJ+RnO|9lZp`slLpt;us4S;S2~pP-8B!t=F{FYV@kc+7)({*0M07w)hh5m?juF`o zE^Ql#H?l^P2_~sILJHSDRAQ;9K&>J3cvIk7s1$~cWs$?N|5ITOQasCzFf-+V-VZUE z$&MfoOUV1lFs7jpt%&R)(Wn`N8tD`vfzfo~(hV1__cN;e!zf8PBVUB_A-j19I=kfI zJBY-^jvTNe!g1w97LpIs%!FSC8{Y7^lA6C+V_K18j<>!Ms1v58gyNu3EHxQU9#XDa zQKF{6qJqSK6bM>!LXb7!IVI$+%9>?5ksxF84|jwRSUsZUKR?pC8foeu8Dxk{>fsQ1 zbp})mu_HLa=E@Z|4r3Q_5sI#j@gbdZM~ zs!E5j+7RC812+z7BS;pK(1!R7FVb2Vl>Q`;KV{>DJ4996KExZ>VHBgKIR~U(q!9D` zgP9EBP(!{J57Tr(I@N%tW)LQ=$hnm-dqLecrE(6YAVgO=wJZ+H|5*jSNoYdjt2l+}qDrY|eNYPRb@-&b zH$nFyGs#C8C1Ta3qz>tEqZan$jx| z+HC{j>DhYx5TGVTzvf$9l=`bwg#=hKsJd%&(xo*z^2?C)n8_Ne(8Ikhao%t?!I>9 zHQUifHogMAX+|l`4dJt^=B+i*=8?s*59yGt12yK zzVt~;+hF$DVCy`QcjTEMS4?5onR1O++p;QkQ=)0&USJHSF%1E#QZ1fw)&i90=mJfo_{E3$p}0knSzj*$T-uO<0-g=J-n-3?CAbNUV7 z8*#aXrCZJZ^}maf^@ngFI*^aJLc|f4hd8Etd1{Qsza!wW$oGf}!Lx#9yfWi!r9e+z z$jePG5XDLT&dIww;iK~li6llq3=#jS3bYKBDGTO5NrvxL^F>+$Q}+Z^=IjPSj{0K} zYOqFgeOZHqCd2uWEcYZv`ZTf?H`WtC;SU5{;*Z# zqrO5b`6|tnL~UiZk0BBb&%Q7RyW;#9ZwKEb2|KF@!wGe)$~2e+_xK5PL?cP2P$@)A z4V~iWAaT~xLt7jytld>mTtT=eaGV)nhBLUs;2t2j1Pd+!f)j#k@Zb<&aCd^s0Kp-+ z1qkj=kYK?HBoH784zszp?$+I{-G_bHs`K1cr@H&0yT9-MQ}eBYIam^HV=xVCC4jfolwG3H?#g{q|SE7xjUVb0&XFdYO}6!*i`YH_@N=+_6#1 zKmvZp2jkge89$ww|x+;WIg`@_x$Hvp~U^ z{?`cur8~BsVab>0@J`za5=TV3rL%de0Ot!EhLY$aEW=qh&a6FQnH00m`H>PeUk5%W z*Oi<#wDiegs383XAL?H&nT}9=A62RaL$NGH4V>ynI5nS()#wg=4R0)P) zrJ`dQhDdqw2*Wh>9yfQ7B^r|X6M@Hj`zYmSR@$TT0jCzU7f4ze5Qi)i`GA9OJ>#dy zXeYiW<}%e(YpL+O8qKl>P3Y4#@jtvT-M%#^flyHjhL54_(#3MyUIt(a> zRa`_0kPYhf55N^+zEz=xa!v5(+&p}8oQu2lr68@wG4ZT)>Y5S(!Y{|u@G0oL=yV+i z&UD8pHoV!64m-VF5lcNViX+Gq`qG8r)Q)h57^p>*$3EpFWh8i4EV>v)Ih+Q3RuCOw zWYQKGONLQWhsk+5Mm8f9ZJM8?A|}ZePuK^{MU$n7Nkg`t21b5iD`Q18*QtFApKQd@ zVvIS#*hfP&XUbuVUq;KMG^)ii(N=wtpWP8tB!1Uu;S05H8lS%_s#TQoq!GJd(ygM3 zogBj;uoV2md!;cRt)=l!S%V(;fHgfDMaHN|`Bol*O!q%EnG#)^mdLY53c@cUUQS@C zU$E=a|MhVD<&${9fKXtn+7WnV`x8$N<8$4xq$M>dE-G1BmFT11&pm_SP{wL>KJ+F^ z+#Q=69wP%qzOEBS5h&MS0-Ok@hw6DrS%gmUi0&qVA+hhlaQmKe)?0_Pjf=|B3};%j zg20!`-hI2tqfZsi$DOVGe1KwleBQzyx4(7oDZF!5|YKzMl@UZ*9bC#JHuSBo^ z`WGxKPiaLcV`b${RCUP?v~u|8_u~bP-sY%24PC@nX=eJ)x~rQ6PbFBV=x-M9kGU90 z8`S8j@e;R(`iL=FebAmSopb(p^;_;2Vz4brd;#uVW0r)Ehu^*`U?3*W>=RiEZn4TG z^JWmfetk;fD(m63;OU}t?Sukfv*e}_1}p@<&#3@T;0r7VO_mTu8|6ovIg2JU#$^bx;nK^Q&ro8MeI z2nX%*)xpfJ=eFz^mfVfG4z=)~N1?XwL01|@V}^!;wE3=6 zWlvQz=Wt!u+32pMizupnm!irXM>R9*qE&NtMRm)drD&2#Cfj22z~s2KY4od+!f@dB zvTJhGh0BUwPrrWJ5Sx@`lJg(FvFog;o2j!K!RY>&%wpBW_<>~KLhXHr*Oug&aw>fC zK7;5<>;uS@J?dh8M&(6#A_CtK4K!L(%);mka~1DAoUIQvM!~@>=M@KSMwuDJJoBT8 zKGAVl5^)G(TE_P=Ps8OevI;2*-%N>>URSkd6(M*F9qg(Yu)Q3)ufL>mhbD378OP>_ zmXH_c^p(l1Uf$gn^Tq4guqc`1F)1X)rgP83v-Z1%xvci%lHL_J%^GnKL{eQ~CWqC- zFGZ;=Ix`_1A*kw5n$c~S3ahDB-3pNdxlqVcUN)cP(%ki?i7sRVOXt4>2c@vSF|$T^ zM%0T(wRD84#E<6^Vr!MHa$I>4{0E1Iw$sg|3zaxKO;>R}OB|HC$K;M3s;kp%Z;jxF zYgKcRH_GCnzm4HIIg&(KI`liLelDh=CXDf79Z_m!`v0K&Bbv_kY(HV{nzhP8KT+1s zC^SFO+a=1*aw^O;w<#Id4@-7FMszaCp zcg5jkj7gCujQxJb!hqQZGzU$fkFZOj8?M!kZeo}w_H%)$RbuacN-ChaVNBh(9lg=- zvcCkw1Z5}#dXxn@6=i;VGM~ji-}O61>n{9`k!tXlZTD{w;lgLy9aq#g1>P=2=_-@s zT903|tiVBK38ugw2~|!F38-86`lM(hZk5t(&2Z@CEQZ&UDA{_~V*b;5EdssS7UfYV zzox##o|dD|9a_F(WF?|gojd+%Op6c`?@+B%34+Q`PbSb;^wL+AHOZ}~$u*{l>oQ9b zrdKPXI2e-$$FRYq&f{;9`(>{semkeJqv*n_sD#R3Xk=|AyQiu^9Bmq#;4+SW*hlN` z%Myy|2xH3|+@8{w0oiWh`Wv-<(^d8D$am;`!YZ#en4nnb9v(J7l7u`--2M_AHAnrB zh@!HlZbx72U_@iG@(vK@6a~y$`c&HYY4GGzr5GoXv^!^{Ie(tMqtN3ll@fnt>fSAz zV<$76^fj@MxHje~FQ$(;^le%;OD*BcB+_n8NZZ#j{{HUW0c;y=y$PeG*5&OTlQ_G# zo_X+DB*(Ks3En6P2AbW)mtTHo^g`mcd`{^tWpFhmhmvk?((MF>jfI?6G|5A6_9lor z`Y971b|*~twtt)~nR4Qs@sn8rV%^G}zH14aqSjShjjTyM2&mTtscSt=tE@EJEBGpO z-79FYIy7)MF9i`>@O#-+To-@}C=7iV(`)LC`vok(gd>3&iZU!qqWfo9kmw$zD+t3Utt|ipG$}6$MEy@S&wN^Dc=05 z-y4nz=(%r8Se=@Rl?ZqwSgq*r*zbwiz2p%(E_0D)BF*Y_aGaEGak%r5xH4GB{xtN# z@yh4>_Mlzo=v;lfN0>mc>|1EJwe`-pHME8!*~&X(DFizK=b}&tAr5~coz(O8=CezR z2N&DfgY@;_LMrM;y!-LtyHNFpw>s%P5?7rcMG?Iff}`-8C=62%2bB?wr>Sfaakp)4 z5lK}L1@{|q>k9=izMc(4B1nJZhjKtYDeZa4_Oz9#g={Sogg1S)#6?d>t&(solr_lt zCmD*96j`#0BB86+)@hp0z&7bRkArID@Kv_~X_+%V8wIZ73dRVy^B+Pr(}Eb=9LKs! zdZDjd%-DqdAlQJcYJBg3j51x8g+>I6B9s5_zKXr<1xc)Zagp{*T>=)DN_JUJ&GGV> zCyKESWjQX!Rz-QoV}}JeoQ4ZV3qsyUQlqp?|suj->MH zI7t(I_ddSn`L!h}&~qJuX#~}^70t%mbDLx?qtwi47(|IJ*{kuMOtO8@Y_yHN3cpd& z*e=x&XkXCJTWs!|_CL$hr*l!*L_<~T`Rxo!3QbP@kaQo#fALU8bX;ZB1miFCKFJa= zd3T*Ro=AB`+-)@bM`t`v%P)hzF!QQ#tZ?(E$w%IvvV@yVN;@o$)3Tk)p&+5oY}3SY z0sL+?b`!Da;O|l78KgYHB(~mFVGZ4`A>@f~B~>U_Ttnm2kMr zDCDim)Qrj%UE>C7tk3awW|3rsOhlppLxD*{J}Q*Ai>h`FNK@+oay7&U-vpunuHpu4 zvb{t?Bu+waMoly2z-x0|l8{Ly0HH0PV#N<4vb#|BaAuNL*rS!5hC{vBzFL){^!Gqn4^DyV2Wu_~gC~)c?EELEw_J@|)%&3IrwbRzj zU&x>|V5!61VW=(@#3`+OPJ72#l@-d*j|%K;*DLmHR}UwdMEcHIJVWS>1;}9`vn(p* zm{gzPLzJ};4M+Ly^8olV8o=S5DBM9Z=9qNGXYY((kocjS)${ z^YifKXR0S^o4V{OAJ%jOLhIuiJKV5&$!Fzd`V|)qP=~#FgosP^lN$@fGz~+igT^{rjzb2c>1TDb7EL@PNd&83Livtu{tf z^eJPkhWh?`Q!k@Z-Z@|~6h6L%{Y0=5?{cG`tTDul?ws5h{~-O+1HRe|@?}6L<4vkF z2Y8vYlui=n$q47o&14N34HPo_Sl3H*ADJ?ASL!`vC=AF4p0YDNM)8PB@NyPit5oKN z#!Gyt2=KaYz<>=&pK0-$XtDPo`rOQo1DV(e2YXP-p)zF**pR#LWSH9*GM@ZtPvpWU ztRI!KyYF|S?H8Gigkl}WNLTmM$sn#F@^)GhICoGH{29_wx4U~{dTImm@JA&i1ad&- z>O6&IA?Ppels>!a*RtnWhhm~bBx{9Z2)dSeDim!Ie~Cr!!n|psK}v<^B#39aEVpxWYdC{p%gH0B$S7pKkQULo(Bc*G4Yuk1RxrXsoIMZv}aYlw>(&6`z&cb)I{pQTMkE9?@I?KIa$duA0h%javbsz3QykU{eC^O{`A8` zR5yb0JWLBQ4n?*mV4=S3u(hj>wX%*5pXmIp`s_%?z&rf`xA<>z+^f9}($UwrB(CeH ztxvCo{Y!U#xZ+cnZu#=J$|i3dl@MZY>s5sIf0V>#Lkn8eHUB%vlj!Tt)U#tSLQ)4K z!mmi~{)yor>4TnzUq`%0g2mw{%Nu-yc)kPqoiG}(z+nDl_HNVJ=hNmQ$yHbl-IF0! z9@)+N+s~lKaTMRZblz6LW4MTM$BOScwQKs$+RpWaQqUK<3s$`S=)cT39I{Wzq6U4%=Px6LV;jR{s=#K==6JRf@QZa`Vk-tED$^dyTP$r2?%Ws_*@!h zM&>f$?rrik{LldK*2f`H24>4CJVgO-b~CkhCO%&}CJ-#Bg5p&c+>QbkDoU)$>ZM~q zqfZu=565C@41vx?4nFrO>O-9B0fEt>tgxUVM05m3G?d>-I111SiT#HP>S|$CWW`po z1BqEETd6D#T{e-V3;WYqglU% zlYEIQ(het9hGC4v9X7aP@H=?3#y5$=w6tECwObxWvs!$o47IaC99lIh%jRhTT?$W{ z$SJ;Gy+JX6GL?a+Q8*={3``Xkpyh~&)BrhIOn?n2x+FZPh{evf#M}w>lf^cukESlh z77E4nJ;PBJ212(|WMHY7eMwSC<3)DZ7KlWtg63SvlbPM;!*T*gJAF_?Fg7xgzXY2S zEGRtY2_Hx+uyFFW17sbDth77_SpY#cl1s&OD1TZbE~#sXD@!GX=SUJ}d4jM23MU>U zDCS28{ra3h3_gHMq3B2MCqm+FmjRXad7=``*5HaAmEm=jjs?TJxF*bW0|NhL+lT?z zB5(>tM>VThyWUVti`adgtkOt3pKU#|(5#n@Svc;Qu#}V}BO2e?ghyX;?^((>^_fKO z;CEX9omeV~K%lLPfV~P(Yy`_Rg4NxS7jeKE|0&m$u%sBfh_CX^4%u~~In+lf@62=V zkhnz1%sbgUASG`Qnd^v=W5<`RnVRR(OYgFUgVm6~c0<{!A~53zY;geZ&Tv^_cnNNK zS`7|(^Pr+R+=N+>?^yw^b|Gd%0fu{_C{gOp*QYLM|2p%5%^0R2F%;mjg$s_QTXV?0 z0rU8yAqTgMh8haJEkJ%2MN~V5gy#iiXJG6(FvdBU{+94K2FRZU7ch`e-VzQw5Rr-# z^BL2?V*vrYr{u=PzZ^(5Y>k6wFq10JrTNIN4` z#HYwl2A6e$rPi3h5+qu8gugl)Q{RF@_)#B%DnDYU)n~865waRLPluba(j#cp3TGr4H zR~)UOYB0;&%G@omy?@Kxew~yW-dz=Lq|7Huxh5(9MgYZ~{3d?2rIdr~LWnQi&px6kLpkZWyfQ?x-~^w^cM19C6lN6VOXG zUvkw^D4Rq6E0=Y-nsddmHn*r-vAB3T09+;xJ~ifL=%PpBlURM~wajTEW$edBGv0+iCnbnyj~h=_%Y$K!nDD^?bS&Sw?pyw9Hbh19n@=wSi4=d-qGrKb zYb7ahf)Gg()Ai4|?%h7s436TR-y1qH&xf%aK51AET2J%_qgSBZkhatmw%ou+6Lvp> zdJqk)kgt`O8^GrVuq9hC5zRR8;c;ZK^-r#Bv{4ivIGq77y)Q|*r;L?kiA`qnx(A~3 z$X9Nv)Z*z%B!+NPP%JM}N3h&+Ft}hC;$5{`KrUJiTOg1w3A23#eqGasb^eKD2mJEq z2x@kmnrPxMWdIj85`r8}06>Ujw#+V$FszzMn)k&yD4UB-~_dRi+Ixxpg;$l+h z=tKf&sH49tLRTOEp3{6!FkY8B9c(c*&JXqhX2^=0+t)ya{)J9?@Q=p%fcvx*62$mG z>|+iv(UN=#u+HtBopzF=<*5nehUEg&JCcAL?ewosP=E>Wchf_aV9rx~yMUS9x& z=1C4RzFGTvP#@KqP}7pco9_$2zX3zc#%h7SI+OTpEh!?WY&$!* zA#2qh>$x6t7~2aW?(@;{pQ5=|q;}A8U^v9upry&L(iW@o4ItNea2&&zU$r!saj2OS z$C{E)pk%(a5dLq+ueyEF$2Z>LI(IKUm0e)m*pQW7kf)u`?^~W1*vxADiivEduPUD9 ztSu|5>wL$0E=5dN+2a#PzAr^weK&KLw{>q(%egw#zE-zsyd}!GOX9u@LNtS%iDLQo zu=!_*gNXc+akn1`i`SP_=s4DCdqUi|pY?zC(cUnb>^;6kT0DX~AzLY_^CI`aOdh$> z=8T`r{w-p;gnDVz^oy27n(Q2o9p9{T*BoxjzSMblPR*EX!@x2pp#E&v>trc-nuFd& zWKCks>UDcFC!m%LkJ3Q)R~?L}>A`7?rb07aM~b3Tq(#X>g! z<5=xX0eqKJKmM_}*`J_>)1&Q7)i^M25_>GeT2*mzap3e?BJ0s3K%RK?Eq21@8Q{m) z$wa%L_G|`tHvf_qw&IXmph2T21&|k<1gBh(2iB4nl0PRT1t+1%@6`dq=b6i@A4JQ8}$u8^Sfwz>Z+M6pXLy(y%1r%#7!7WpS?V> zti98}AZ@rLgV+4;RBu?YoFxnA@uQxv9XS{wxs8e!Em6ihJ26l3Sy);mw|9Twlh4sAOFxs} z#Q7n!@#3B3q? zxLAt95vx{(+ayV*fzhg=Rpz_L3kE#1=5s|FA)3irDlxphelV%riyAsi673o$@>HgF z1xrhgN*XDh$xe3sW33wE>MtH@WX>2VVqrZr6`vC^z;9rZ?YeOam`um93?pCC7pldN z(Nasf)TmrFBUATYYDzOv6Y(fhfuHvm#d32184O42#a*2DFJ;21a{uV?d_t>IeUHQ)kFFYL|RA?YLZ>@eqTcrZCQkk#RQlD}1hF_n)s#vly zE7f7oOt)F!QmCRm;tklXP5ro}bw2o7@`9v-EwMj;iNOaJDgu|V{cxn|qNL;dRiCu; zEbRsF&4@|xh^6cVd}2dK9fM!C*#Ig(-24qe2Cn9L(W*iA;hfoVP#7l_bhP>u`?SCtF-21aSi zla>udieXJZTC)T2>oajtPly+h;spjnX>ydBHDhH+Zy5FcZj5%IC2_4UKuf?J%QCh@ z+I_9S7pWa@#cV}6<*O)Irk(J{+KPJPT2XXZJMnF)743>Mp;?W0}f5LX5sN0JH*ENZ;3AWpF}s0VeSZ&z!9}*o)Y@PW)EUnr< zi7rQ(O;dEDwRWwIi$@(z%)2x)m`orv9e)`<))Rt>PxmvKcRNydnU0kmezG%?%oHUg zd3mZh#EYx4IoZ*4I8&si;WODRA(m-fH5~fpRx&waKKXu0x{j*SCBQ zgFLOhS}?JenyXU+AL#6G)7>kVJl{StswrnVYa0M~W_7PTS7>U09c7#E# z5JM!5ch;h>iv_wFG2MIn9cd7hc_3CBPP7uqHq36Nx%}?xo1*q)#cm>nb~#K1rn+wx zEPG*ZjZhZ5oJnBC8C@{eq~l;gFoLc7u>DL!WMerTne&VkG&v5kq=j(yWwcXcv~p-5 zl?SxgWO6y**dYJ^OLW3Nem2c2a-IB_ zL}y!l(z@>bcK&Srar)_OnCn;9pCt)^MBaHWqWeCl#Z~TY?;qFC zSa1IhY7o=CI_oD8`FS<~C~^OnL`PwlX9m(UMV^l^MA3ZxjQ3VIVwAmbNMW4&m#2X0 zlQ!-qHLjWe2Z@g7?-yMI=f8{pEzy}r@%-N;x~p~1W#_96->^vgO-X#z_|>-%T;A)g zaB>$>4RyM@>z#O!)9c-2CElC8bOV>0{Vb-^0XdQ68+lo|mE-|wWH8rBTWgf~L-1TxpSW8 zX2S9t88n_)Je)@rlh9OL<>8n|wizM443%RPsm3QYlQzP$|eC&5V##PCT?j>9dYfgsLif zi|6+y63)5UXT14jQx%FL<8v|E%_R(w%Kwn)Qgi;420NMC#YfL;49S4(Nfy*h98+l4 zPXol|wxmPQG;(zIu$d`zrQWH2Db{DE{@$S|!W#ocMDNn8J>ZHYtCGFZ-IZ9b*W&*N z#0Pt}RAcxJOBbLM*wHvtV{r`Yfd>u-k|NsDW@jZ>aFGTl`-jPf9K?krlM2ONCt&?D z!S#Ni11cA3{^5>rKGusON`c!FyK&>tSD$fwg-5Otf5k@BigM0v*sq20U-UO7^?cTF zz&CvTfk@paaM{}_DU#&fo>mN1`%KCfxh(0T)BH0i%x?)!P7=yH{_cKNv1 zGyh#N7#nkI+LJ>5ON)zF%DKTHp1kxYy`QfQ2)4s0TDy)&qkTWlZ#s;U_gp;S3fp3A zgawwgy*$AYVc;?db)qmeqvb)U#2FH0F4e4wUBnZ5Sd-%qj#*7L`etgImH%AqU#X}M zaPTk-|FYDe2gUci%RO+DvO;w(LmE6)Bnv&vtwz8NkwUDKfHe>{$a6X#*f3{Pm@dXm zPd56h3I6qs^5rWGGH1jmPLugM;c+YrC$R(ngO1mWH4}f2V_+U@^W&HE2HQWYS z)8O%uVIE66<(1W>Ep#WqYJdF42^yQ)N6b<#>NnIIO!PU@Vq&-NU-Pz9izf@e;Htuh zbLS}qZg6E%ebP!)DZ&+SD`Yl?Ct|m`BBhdD4Kb-NhrL2k{O5IBVyoguJi|jfU;PSI zY1Ls|h6Hs4&wX z#(DMYvfmj-q|;v~d*qdf)0Hm^4tJXtjy&IgLki-1kM!s#lVmk&o7KrKfPRQ$qP6%P zp;g>>*`O$2qpA4Q-;U@zvQ1%><3?ORi#OR*Fyj|W<_?7uWcZS4@R&;WN9<6oS6yz# z4~)4_K`tA_9?kMcS!TCrwcGLC9(1SCb}>eWn!qRg((e$wYxXu(!)BcvR)xYhf+QcW zp~y#8d)E=!B{*rITJ7(WZ`For?}(c)^7TULm0#kn_#^S(^-5Hp#6+CO9}O(M>{;%X z;r-~>`z`5rtXCw;{NuO7hE#f{0KJcXFps-BUzEsL6vGeHwts|j57V5ee|wVa`zz|_ ze?zwe*4TjT!{GS^KMZsm*GqyqG<^uW6~22AWnZwHMM#65dlD=d|4N9#fV5-Z1$BnN zfawv9((WZg{q&%aQGyi3;PprsoCdvdKFGM12|g!7*h3g)+(a|@Q(_IYO@LR&#X;tNRN z*haI29HQpTREJI3mi1UfBT&iFBIml{5zCD%cGay~RK#0x*A3S?>sYkr6(= z7Y+8gS&+S6NY-J%fs8c=%)n(k*i<3%g|7|1wu`7eKxIh!eGB4r&G(!Y`U;TjZcEVe zN+II_dTrv?+(Qv;z%HPtsYo!OMF1`{)^3kyR&gJ&v&WQ$2Kq!3okK0&Lf3k+xl#3M zCdjz+5zmJe!>@fQ;!D;cLXJP$NzulHb%%hSGd0#ejE~7go3?=5ipkPtD%N>&n_Qek zF;q|mFjGmhxXB3X_tD;u#%KtXA0pZP7w9Nz+p(yxz3j6g6KCuoDj)_}R%RwyA}}qm zh0TfHR1%pDIbmu;sjr-4z@h;+gb98e_FqYF3`{l{Ae}3Kh8|STLHAWdy19Ecrgj#2 zWinN?w@;;LlFAcHuPE>~^t-upTny}SH2WDWTjQL-9NPrs0IZVdHgk||gd{b&k*X`2 z&lCldGZB`nP*^)~s(BIc|0Y4Q7>7jU24(+Nk*OHYFCl3LvhS=>zMgnKq3gXF zSm+_%X_?Tu{P&Fz6PXl^2CKCXA)i!$pbnGy*$_heEL<^LWOm3m?Ev0BpP;V={~n~0 zjtXc}a-#Z*N_Mi7WDSR9+{{@*cOxLnxUuVSf=@P(`e@ju8_`&1;D*Y3>zjDIP5|H} z%tc4Cq(IL@yajFv&u5{(%}WI4_0`TO41{covjKm0z~8VmmW)2D9i~3wqap_T#qgdz zrwD>9ehQ}iRiDhc4W04LkPyJv{7OzSV)J1c=!=fPMC5&TFT`#j7`O)3&7rN8#5150 z@OCkmf4SQ^G)lRg#v(o_wgi=2a@1%LT7mqhoj|S$$ljMWpy00&zC_oTx;wp|X{sT( zsm4qp>q&vLC9!I%t^NsW>CDX))M^y4|1LVTiWm21t7h_b7IE^+EL zD&lj1@ZWw4&Ea~bT8c4OMuc=;7y)=xVje5mG>)^d8!|U;iQ96@b&QEl>!FuG!X*Rn zFEK5TG%IC0@nc2^foPy}6dhk1YzNI_$-h>+vrTsm1b`uFvJx(L!H;A0w0T8#V$8*m!{p+UW zPo%Hsy1i5nxZCdyJ6U>JhXtr;GE*EWyE{&C0{fIac%OsADASL@(EYgW3OR)Rn zGp%;tscQJLZ4lLQ&#=j7Y6}R-ur2F$fUjcL>-`>6{jB3ReLUJ7OKl(4uZot4C>)!KCrMnX%Beos*{KeQ>)Ujwlr}2FjEuF%+UVt#5&hcNYmbS0 zz3+te6DT?CCzo|jA936N_vY~4JhB?5oeNt5;@8olRr5k5guQ&<42@>Q@7ZMC~>dOrMNoPpPEkqoUmi>;M}Y*x4FMqX`ktzkutx7Kq#j%#_;Uono`f z0Q*s5(^sTBTaYw@PsG~!tXH-UH1Qi-kR}J7ymfBDqYUV|6>7`FnJOV4HV8#{jN!oo zyddZPI)Q7W5Icb26>X4r&*221M3$%Mq)oO4{pX10W>1XX6Bc;st)7jB_IV;Efojm0 z3(Hho3Ze4v4_Xb?7pu^dWN459l&)>~!os&C&#qGlnus4OsDh_Vxi^;r3a?9&P!uyUSVs;^6>}ZAwL_OcQSO%=$3tIyaHb4>iKz9 z>QNC7tv10d7BG>7f*K1LeT2GG3{qT+;+#zW)THm$^;`ZzZrDQS>L)4P+qjm7eGj}c zeLYKZNjdb1NFpI?X!A1sgtrX9?+`)@HJD*OsR$Q|i7D`o2Z)&>yzX7O4Izx7{r4q} zU>H3t7P6zqQgvFnzPB+N4#DL%0#UT|y3UKYT5I=O zYbd_2*IG5fQvU`op%~v=^vbDy4^!dSfW~m)wkJ`;c0)k z{auW!QF%#`r%cX?=v#8!2z6iWB|(i{#mpJxZ^lvu4dv5=xV#TUzZnRx83;pekje zpn{?;rk&Hnt%=(^FpqSsGi@O-HB9myw$o9t*r;A2a9{St))T8EI?aQnO|2L`5E^c* zVD+sbj5mp21CKKBo%TaK^hUM^T9Zw3b2wyaN=r@Q6^9lcPc3yQWuQ!(4d4QenJ?(@wn9JS+tPUH!2Gu*U zh>^o3+g)f1?5le`i6)qT0J@*S^lFYc0(yyRV8cTYq$aG2wn^}O<=%WV#(7ik1b*fM z%vE?=Wk%+T0v(&2B^t1_AANL^`u?H^Q%=UKiU-1%ebg2+q+emJ+{;wdtxQ|!t+CyoB_$Rxurfw$S4yJJzo~$Z}BoUd8?l6eNUtsk<|7A>Z%7F(6fq~hE1BE zZSei2n7biCZr~&Cu^Mj3ciKSOlhhOs@JHg1HpqJNG6v#-5_aE*`rL?zFk-K|pRh?mez>GMw@=nuoGQ=si@A&V2SAP8E@$v2r$YzQ5V?@3{Q z@FbNglWzjNKjI6wVu_-5iJ~jDR1g-Wj&+|slSU%9Sbb?rFgILB&|Bv~IeNbH>!4rL zntB0i+ryeS@0w;3M!)l1;evy+yLZjK|KteDn?b-z^Z>zr_I1}&_nEcnn zB9^AibgfC%Kw3s$?bw@oK2+egrrAxXFkVLUW?ZE%&og|ljK*P9 z?4r;OgQg-6**>6{?T{7YG0ypvIj+cQbQ?z^p;Ok5VZxiaN&V@JCs%F*RNS4FY?s(p zBsR6-fZ}d+{$sgtfXv$w*Kv3Sjm*>yTYfMaWCGPtm7|_a=}??9tgUP^!6)X@4tLZJ zucv;>{Oj3jR5?T>G`2_^;$P0-r*o2~9&D^YTvM{jT|r@|^+$P01ibpU;+){v}QI0hiMs1^!#8EzJ_$g}A33{iLhZeV89Ox-dQ9yV~JnX!zG%w2i#U^H@Jl zPjYNHTQLv5lW<8@_w*;$NhX6kFyvY3Ud2;E^AVqB}4cNPPjjTwv5lSBH z1|NsuJ)(_u+$IdrerM0v4D!uBSWJnSeTl>?#~o16zu=t68j`UzAFD2!;#@I_yU z+>3+IR`{*n6n7c#50PZu#g9P^C>o2Z(GiulUagQ+<|4Gp5e*N42o_!QJ{e!bY5kMu zNR6S`(=FaPUoJ**;DU?LlVToRO@{(7EBmFylVv*BK-VJZ*j{l@6 z3g2QTnoZj9DzJ%*jfW-Ot*|IdI|?qFzAe&8p_PaqsnPAjFVM)|lqnFA3d(}g&v1=C zzV2M0hK9e8+&_?*h)HcE4sc7g|Q0$o6loC!uCZ>JgpF{ zJtgUWN5yBhx|yi3E%aS?LeS;_E$Ytf*+q&zc0UuHt|_kMmb=D9vfUdQuUNXj{L>YE zyYxQYT;`;2l23S+8f*i`P#WzP39b|k461`{BvbGXZ%<6BZJA+_WOS%=cuDg&5W8p( zEO9Y%patC&R~GwLcXgEsIh^L~WIAEIJiOFajm_)&cFlM(=Y5gS&^kBjuVM8T6P?w- zE6G1NLVNt=6{$Nm&7)9|9GQ9m=uJL|4v}29#GZx5nOM%mGv1QegW}6<|u9`4JU>g?y zb<&o1G<)PH-tIfwFjLH2-7-9zVi+^+OI>U6R<%Qg_ttnQ-$oC&EK?9BQ6EVee&-gk zCD9Y@m=(hjp2QH_vWjd5$KmEI)4U_B_Wo8at`$jw56aKz_deo)iM@4e_kw*Z`#wPF zS=TN?PYA?6IZxLK7b78WBxBt;5HA9J{|5kXK#;#p-X^Lq9N_3Or#b!QF&~7}E*^-A z$9!WI8z9Bdwsy9!J?2~3V;=BeCWB#FkmJFcRZ?CSsYBu=SPv^pKInml1nA*%%wwTL&<{MiZ0S}KhwKHJtf@u5U0uVroYkcEd z@Pi%npr-90jF4BiTO*%IvZ@K9a+62wO*nV~5L(U{snpz5)_s(B>q*a+@H)KWB{t3k zK50!4#M%bGal$n{aTyof00_W1)L*>u3_$!JQMY&i0)T*P-&hy*m@r#x&M(VyZ_V z0s}!n)wzD{Y$Lt$MmK-}xSsTl|Ks5Z_{Y;VZsW{r-T+tM{KO3qfQ%bF0Ucl7Kk~6W z*Zl(?HkbQMER_3Uk^hqSa?vxX!<1^k?%EnG;WbOXVGW-%ANg2TpEk$=4#p?I+FJj| z)}{V%hhzQe823KZwa#@jOaAm#xAw+MUy#&?9^=v$^DP#r(|J72Sp=bK-Edkaa`a!- zn)*F5p%{7F4zO?t-vcU^0~jT1hfd)sz$1uTAw0udz6wN~Y@j}(yS@O(KFz~E(7QST zAP9^j2-d?m0tf&U481eUw$RJA8cQ*#6G8C1HuoF7`181W7>MPG2YrAY9rgeF8Nwz*mu0YqXkZP(fxz=o2PV^qQA3AxAO}5bJI4~XYA_8jtOjiu!w@4w z@DeX=fEG!!G5^qWycEQ^4+OtA)H)5kxqJV?P%Z#M6_($eXy$Q?rgk zo&Hgsf*7(PYX{=N#Dg#;ueinxp_PtN4zkFS(-5VX!k#P~2y{S)zu_rssD?6ZM|NaK zY|sV(!3JxPNASAGa5yo@gSuptL8JRTe-yz%B*cvCLxlq~(d$PS)Ha7py%%go2GR#$ z>IW67hyN5R2;zyvZM>9i^p9Q{kqgT(=>Ut1X)=IuDW0+m_F&1s!-i;h$!`EfRHR95 z_yuGbxN1|#LQF9kbGV~BI@NPX)9cBCSjJ>*$e*k{iaSJZ^SJ#Z2%Rzr%-J1}v`RF2 zlOEWlaEXtC7)O!7J2WZBf)K)wD9gF1i=EK9{wN7BbOx5F2EPMCd!);~s7Gs1hFiD= zR{(=Q)V4n~${N%Np)5+HRK15ox)r-T85>43y9KWzh;SM#gRmg`yGo5v!pj5=S^*DP zxr!-ti_CP2lJE&_S7EA*j?$kyr^_K|lus7c+r|U#Nl?@WxWB2F^?#mY4>-APBoi z&GLu_Yw)|_aE3>ThPOOEdxS#gz=m$P25gWt5Zs7n`^`&Jw#HOCOXE*&QyqP%NSR{J z=G=(J`iGP-PqmRweS?)>;DUb;0t3Ymb+n7!7?2ME#bwY2DuGQ7r4mqtO=g%ZoSD8_ z@Us5&!~ay#7EL&g^9R&X&H|-Sgn$o=2}Q3AOQ6yQZ($Ow$(#E>UU z5h!GaCv;Ngs|IdRA8W`44AccMILO4LI%zvZEp^c^WjLfe&KCLyv6?9&^#}w7y#Ezp z(8W572O$myLDL~zi?u)ogm{Jk`BBi|H<)CGX;6kLVTK<4JJ#|ATL3R}z)2K?L7;5N z$(uOBoV=hEvlL6ph9t~O)znKxfFrmCe^{YMn$wTCmAe~=TVV-Lf+w@+3j-7mBpp?g z`_a^d)yw$G_Arf_fRys&Rlh@rS%?K&c!gPThFieW8v}zQP}XH-R%MNYBLIUqkk)CX z))kA^XrSAbZE-AiZ~!~fG#63{9J zEHwaEFsjf(2G#-xfC7iu3Mkfst=yWe;!#;cN+@u6op=zas_X}**^XD)us10QlXNVz z*cNGE)#4ymlXI7Y*i(E352FgNl<+lactT#Q(vtm#Td;*&NCgzj08mH;GDre4fP=2J zgj9fqS&#)=aE4#_hPxu8es~?%L53sfR9D!CtJ11^2vD#R(7GL<0SYIuI#YfCRWg+x z0S#J@um)&gjhwwZ7HLz*a?t4<+$I}ZgFuvL_=k@zh&#;?RNT-GeU6vx+-u;5Xs}Jz zirT78F)#pIOArNAKm|@fg;S7)S+E6OfQN6m9Y2~qoU(_ujesNYwExy|uHapsI3gZ= zFdd0%A-g4@M=GF5ik?V%T*5U7vM7de zUkphJI5ocGBZqGIPMK7ne~^W$yV{$~hF}PWV>kv}kOgR24w8pd@4!gz8WCqW*R??rQ?)K;kQHVS24;wf@dXcg z?T>S4hn~?CipkJ20X%N#(@=a4Ztz}gc$sA|R*GW>cgP0%VFz^(2U+-r%18%&P=_qK zhjSnyd5E2VfCjhSSbP{G{;`*j+KhR?2Rd3F)L|gxm7W4xUjG*=(=}#cguvMZ#Tdu3 z23Cy*R`uEIEtWR63V|33ZXQl#utk0hgn|ZGaU&5 zqFIE<<&)Uuf~ZPzE2nFqhMZjnHZ5jbiB5`O1`}RSXYfp`NRef*k!f}c6aI(!D3)c$ zW{*f_nP`&~L17p%Vg9JmX?c=v*pf0)H?tv8mS|_$>^E#^v}E80`ixXp_*i5>2KLxa zSAYia`seWaXNrZ7eEtP6&@mkZqk90Pb~qS%k)t?zqyL#Tql(^#nO)&tkZ-8t(YI-;&LY5$ObO&U>=ev=Dk00w91p5l(_wBa7G zY>HseM)W9)=eEjjNSS}Y6r;UNpB{*A=m;tGZtE6@q%H`g`QgFOOJfCj2s zmEKvEta;_7!Iv_n<$|zfji7IQA*_Gc9n3lFQ~Bs&F~#i=O}0)EWH#oI5H`Xg3>R^c zWH<)Amhh$k?j2Ex4Bv*q*32i-iUPmPbMOWc*9s>o@gCs@bMS^lb_ZQ>1yBHmM1b)b zr|}xMaT|AqVi2KH;hg0n2-Ws#f}o_M`0Rto?fc7(BR2@k4LDV-ENBci0SSb z2s_y+YG4TG9*7mD(CYRL?B+=7u8{3+HUCOns&e=zXVGWg8VB;)t=8JDIo~a8qAJ^! z3Io;%qoK%NK8jx+2qnk2fe2{=j}?N5W_4}rkYGo8It{llVZBZU2-g^L5^Qqa303PG zo*S631LP*2>6 zYlxicNM{h|kOo5s#>SALEniMahjMQ_cVKsNP=|9!n10cDDTZN#`uP}6sC{?`qF0Aq zuNQlGZ z|7r0jbN&Y_;4XAlicbd!Z~q1oENJi`!h{MJGF&*1-amTvAPz)F&|<@k8Qc9!$MGMz zgz3`+A(&fK(=Ej8^xh|c%bwAy4{P@qP#)SM3x~?3C`({<^KdjQQNh4TZdunCVjFrcx>>o4t|Huw3of`7vf!qet|EJ6}dVCp1&18Wo zmdrH-8VFcrh+)>vV1^xbkc1UNIH6z{UeirCwnz~mh@W*MP>3bU7TZ9vz1Et3A+Gk$ zYDF0|Qc3ENWRgYc`~!}TJ$AI?k20N<4p2a~zO1WCwPK_vd;CqaG! zO5&h@YF32{U@Dr_hV>B?=c17!R2@P3M9N}C7yVEWG+P7%#mE>6)xZN9j8dQr77h zYC6Y}BMvzQcY{vBtfn*0Oda_cD{C*JhEF{4P?}S{0ap1BwFPA7Wk=Cm>hQUl2L4obrZJ<351nAG>o;$RmnAuWA3_nOJ%*efl7VX9v zOKqZ2Ka5a&J@6q1L5E85L| z)S50j>gYL1WJl-(j4(+b;dXUJ0UNX??&q9SPB}bTB-}v41r?M*a(mWq>ZkEdP~li+ zspUWAO%qq(O%v4LTx*>kBDtisnN4CPdQ&-Q`+>h0<~)0wS;BNid4tZ;iE8)W zLH`H_eioW%CjY-|aMdGLv1(W1;Fm?@W<0R{s3PB}4er!&j(_k5H@30OKcti$t2J;X z0A!1Ik~2A#g=aj>I@Slx(+x8@N=?B+4`%Qqjt#MJN(a25K{U6ZY$0S`*T`BzG-r?- zhAxGt*_J^RM;h|X%!p2G$U4T+5O8=fSm!t(L8?=?i<|?91UZM?zV;Cr4FpP`IZ{D@ zmp1^yql};FQkJGCGU-`wD}&QcWwwW|Ef0AK`P$bg$gfPrC_vCjrFQo5kN-|` zMwDCm6+!%#OKil4SVN9FyEBv4atAkb{{Z`Ntwbgu{X0&`;4M$Tg+1 zz=JGsn_7b;Tc%N*_w5H#@ah;i6&1FGyyGJ*@@6`dBFltmFmTh8#>dDMy?7=Ci}2)3 zAir6zf)o-vX+dY;>c>y1;D;cPflLh-8c$>~WMg5or9?xt6nxAxW9S@NmaxGd=;_MIYS`4Wxu^-E0~b zuA_~p(}$%BvJYB<=`~c%7AA9x2rRQ2!`1`2n0+ zAqgIYQb{4}%-}!Vfuefp10PE{$W;Rr)ej2OSa9tsEC+%q&#;PI#^h;SrII6Gd?>Ob zBuJLBA+v|pF|t#tXF`fP5Tgv^<=~?su z(Htikj^5-EFL&f(AVRQ#S?RhT%5Bp=C|ZHQ7^ z5MJ^UKGT&AvrZ~h0-6%KY~hF$crXL^(l?%@9qkLNq+f=FgC*jP*I*F>UK0&CQusWu zG{i)`&m5M%BMH?iL)A*CaM!cb@x?!0AcXo3q?hhl)`vN47j=lWEB|HHjy(h{x_%H? zwyqJ~$jTcY?cgq+uRVy5@@h5EidZ8}sjP^{G^S{fsmMR>Adt^U8H7G-GNYXDk`C<6vts_c=?r=JH4d% zQICPpLm%s2h^5~B4|&J+wU$B@5bit>VfaUC<}3((Qu-OZWyiZ06Zjh&U663N(+HAe zNzXHwA%{7TgBV_R9(*%!-EN|$$D36MgV-&Nd7pGNhG|I zUa1r#vYt#Scl}N_pEey-mgFgFSQ~K_p(&6`o&# zp5AT6y3reFblL@eMjJgvv)!Kv7DU!@NFY6k)=7%}iQNcxg*zY}LAb+}DTIpP!#vpF zmj%vu?31BM#W)d1sU!^Se2v_!MvlG4@7YCwiT~SFBw<7dAXIcQy^g> zAOX@q(3MQ}%0(d`KTMz%dJslI$qe#S3>`#G*u{gK7)Ep(+cm^rk>P2~T!6Kl=s*dS zz{Bj7;hl-Ya+S+*q@dn(n;rt9MhJ%#iBcL?3O)c`3Kh(ARbpoVQr67G^z|A;e3=st z#3wEa=MCQY)k`~2VQYAuBHq~#34}AfOxBRg7yg5ulB8tu;LlNJ)K-B9WDwH=qK$|#M0EaxaB&3v1y4b6UOm)V1~T5fxt#x{ zW=_RMJ=KO$Uqg0)AMJPvlq<|anPrEQsmW(UGR*I)H# zPIP3XnIZLQ%3ZY$l04@J&HtV}R3Sp7*h3uOyg@|x4MaU;*-Yvilv+n#zQY1R=AuZV zXQc_hT^m2GM*%{}gLoWgr-xL{nct71O&Q9q;ezb0P7Q_ zMYMDk)3}d}$_AyNL(%C7Mm%hJvW2s%$wvkVhbqK7M5v|EU%385(%x5)UTjK8C_!*X zM<8ie{nZ6(pp*WeqJZhRMa9o11>*IerFiH<_+p8KV1T)4@>m0X0Emiu)>#tMN$Ji& zq?9_`En6%Wge6wT)|c?eM#b1eJ+Z_}gac_2?r8zbqVWW9C5zfl3_^Tg*Y@AgCd*Hz z#%tu@)by=Jp#N*Uq=h!@rdb(7mxNqGv{}#E%R!7NL9E6<6{n=A(K<-w|5VAEKG~fH zZE1yS|LGmqevs;cVgycw6yj?JRqm90?Lx?sP#)1h{A*XRt!IhJmk7ixPKC=>-`j9$ zt!C%!aV|q}gq!AN#p2h(b%szhXNY{-Z_(H9h6wWZO5#bb%SEn2&@U)LRhD*zw}MG* zco+1d2exL!WnETISxz?`PBvUGdO(NO+{SY#Bly}yJEX4B2_NmshS{P9-z7!=rq269 z?CJ5t%f;4Uop7ZnMCN8$YkF2}a8f=ruWX2}iTqoyxJ80}k7jj)I503&$m8z{7g10j zz)Xi3ZU3-cP$feMN75=S;%3JO^X?OcFuX`E2^Svz7M_-ous)2Qiy0q%DX$cB#abNB z<&<1wVsBD}gl&++I#|SUG=-Fe4X>m|gEoZxMe!K#ao||WQjlKv1(-D6i*^-qv+^;# zG=^l1;}@yMLC~r}Q1Ohoj!it1!f32^G;Bf4;U^W9?jmyPi1FO982NGW;a%}SNTC;N zpKI)IR|VKHbOHK-vR&lK=lt9cD+KhNGxRNH;217` z_5at@xU;_LGC^GKX#{U%T^|+?uhq^kJ-NaZH{#B%=}|1kl-YLy$_jtZ7FBltP1&{C%=TuXIK%b5v+oyUoKDn;yB5 zoA1fA|7jNp{$EaOEi@*JDcu-8PsKS@L5b{#562S?GsJ@kOn|s0PADxxq?FWZ3U-*^ zKqxOd@C0eWv*0~#<0|Apa4SovQ~b7GmA>04Pbmri^YxJ)$PV;|+Ms;0)1*)_FuF8B z?86wKz?1w5L+{qKCPi_~r=nCzH;hB6P;91TN=fMPLaYfn@EAxpEKC)1S&uSTK>u`S z)I)4slJ6;mKD1kCXAm|QveptrH%m=*=yOB#!xm_V1|`fLFVtbRs6t>yQYQpRb0R`4 zT2zBlL3D6uxKl%Tjrj^ULlCY?r$%*I1U+YVuUHC&?(0@Ws2$Q7`2xzx_PYXQgbJD;5JW3I%%>Iy#+yCxl}|rc8oYe z$anx11V;488^6sbakX-rIpYRM6y4RPKT#T+NJj;Fyu`yO+5?4Vpk3r@@0s0#*UM9M zaVp1^JZu39OgL(s1BqzXGyU@aWCMXH1~tHUI(>S6v&ABHPdk{yIz)}bnfUe`#Ia8W zvKUpjop{cLumx)e8P2(?tyUX(E<>bPSI(=UFN(W5Gs?!(#o)SKsQ(pU5C>WUimy-2 zH5A4*ppRgTPh?FySEvMLSjENi1miB6;WBQtCwz(QpoxkV64Oh}!9#UN#6%FpohOCh zvO2CNbdhTZJ6sa^arQ!ZS9^*4R=~MzGzx^EH#pU%V6Z$35qDRJMP1wx3u(hd zj^LNI=0l{2c7ITHr@F-%FIV(lY&gE&WPMXKo8f&oV6`qog#Y+fs6!VtWOh(0(Hz7r zONHK-h}mmP`w5kNdk}$lg~fW%v6~Jy+}F-~#xiIH$PGlvvJ92oB(!-4Y} z#)GGjVnvG=6+*;VvEDy=1L@I&2X9?QjsNa#v}f<%%6a%$63mx!V@;bBHM08$&*063 z{V?+LIdrJMcmG)UAozo5({17|UK=W{X;quqx)CHdkpJ6OirFZ78z}H1I;#Y;S{-** zEy1+|$6*WiFK#$&L*?GZSdJ~hX#bo6{~EnO?#byO~`)8D~3&4&BA1 zJQQNQjtL!Fgx66Y!P1)>BEICo}4s3(hNi*TXYLW9qukN$ZHq7Q50 zP#+HGkw>1R9@-2a4+qlcGYus~2tw8p5~?QKhW}DWoqu#3Xh#@A#D0$l|!EV-iYsjI@A`3OS60(aRz07>Fsr|4a%&>nDgVQiK zt(nXjz3wb-AS#g*NK6wBY2#`4P2!m|d(@i^3spAmWgV z_@)E@xkgxzJ&sPpbb#x|oCY=46QT9Uw1~{OQog7dYu=30=ESUmhM+qGBP<$hqT%Km zaklvw$l~X#YQY*0a-VS zh7o(5BpxhThwPr@CkycgVyFStWk50-k0it%+M~?Xw1SX$#0@pm<5B+X7A0&_)9?`G-D$X(E336F>k}!x`H`NH(sqLysjW zInT+WH@f8wZ*UADKVryAS`!m?0m)D8Ad4GeNDzkbD;~uw-cBlVqR9XUh>Sv!!(13g z-k1;}UHM-4fMkttFrz8z+y4_eutKF>si}9k`rb6cQK$PU3n5*?ADM9Iw`d51F_?3c zVzAX0o+*Zr)Zj+Z&ZoYv@CKG0gCzMDs5VKR22?Lu2McTR4Gj9^COHHqJpMk5NfO4nqeQEeSqsFasNR`k7ufNEc~r zQW|g47HW*j7GY3DFVg77U-p;KI#H%ggV75!xIvAk4#Z<~J;yd^#g}q~awuLAM><+1 zR0*+UMX$kQSZ~5pix_htk|jz96XG>u=7S(SLDbva(a)NMvno^yoJISBQmf!dH3VU; z-xPb3aByRW)1ZnC)5;ss!4qXQ>1aielnpZW)NhZ8BNA(PP8!~2u0-ivfI0`){lLkJ z*03!%rh#4Biq2@oVJC0Ci4cJ}1R{_PlAj2oS_v8CcL>33Q25czzO3=2e6h|t$YN8} z^mcGL+6X$X2LBO!sB|^Zt4VzN*$obX*KwR&gl?q3S}Q2#wk8g)J-L1YDOG7kRLzTUC?OUaM>ytZ zPfm(+$t`W&JTe8FlR)i5l)`kBpZO#MQsY2Rp$s|Fx>XI`*1iKltxupc%kBc{!o+HB znsH4LqyH*n8Yw0UBbj01e9lQRmQ#!}{=rBRt25cS5=hp>Yu=QZg?;}BlS1B$5a_j+ zU^M{`mzsoXawuus;2ZaL0vaon)y+n)y;o}?l4NeLh<95F=REXF$P)cyH$d8kRAPgr ze1f>d@F7-KVq25y)KoIy$o0b!8mqQ~Pa4b^P)(Gb5N1#%Ko0%KfC31`fo$B);Ipl5 zm$c^~wQoY`-P49&@(<14E9M&E_E3gts~H++=f)W;4Q~spS1Y7!HIYYk)Ip9OaT6iv zsN0T01K{5hBpvFIhd9Q70w8F}fZes;n5}}1tPq^71&0rr(s8s|SLLJwDMvj;%bV#= z7ysgQXEuw?UKPUZ9dkAFi!r7Fc&-AQAj(cRuyTq_X;Tl>+IDPgZdJlVGh2SL-&!+ zP3$kv;p6xdd>cOtG~%kCCQj>e$}Ty|ODv5q!%84bv-anMZxMOP10JGJQgN(tKjOso z%PP;ttu;nkOE)ha@5l~zxQNW0=K7ToWR*?&c;|}&$*or;^U1geev$(*Dlhx&PA_;( zPc-Z%kWFX!j@T9|0;K`)kS*hYjo@O19CoT5u4cz-BH?%gd353*21ZSOhWLIaPyd>v zpkRoQ+UwcU%l52o1}iJ^j6^aN#G=IH_P|aJnqDqy|w2$71nPW(5CX1R0I<{^2O(fyz?oENm!fq=6d@&jMBLF#mGN6m3Er zNJ|he0!0oBA>waAz@mI4N|MNdbiA`bfqkYvNEW zV+RE@CGEy(wn7}L1cK^s8`3AQs^S$d0wyV<(mF&QU_-&A<{y@0a>RGmr7+B*sWsWqNq3N3t!BJSJ%LvXqKL z8PIPUha&+svMK`4VkneJ(8Dz+Zv_dCXYiz}_-8CJ;?5w_E&tD=E^ER$eL^~`qPH^c zIybEC$f5f9%4}rL_CTa502DP+^MDjYON_=!9H<*yiPWfJ=n~>S2Wce-;&0=UzkPA_GC&92%g~6 z8?s0qV`fKqDtN%N^PKc73bes+f;BKr9np*_6Cx^$4RZ!!Dp#=CC^S2pqAsI>0+THl zLyYWHO;3NubAYC+3eY|NLK`xX#mb@0CiElslr0d0l>d@V7_>zhu)$g{@Gl^=CjLW3 z`vR{J!hjGJ&G=~k6k_Tu;vPf=!7_y?rj$`0$P-8HmHq)T%SRj}$?j03HGbzug9IPm zHP@nHTlix@;7UJYwLd=Y%V?4hPxK;`O&F9RBhU1zGXKzCy8$fh6_Wli zX9bNSCgvR`Mjf!RlET7uo5F?iAv4m!9puj|#Kdc1h>;p(lWJ%nZ}X_maQYM?W+~!7 zr~+k^4RI^3;xab+9Y0q(S*Jsu&Bs9-r9atiChk{c^*CxnvBMxLI z8Khp*0^nc>DzNs2RFa%#_q=@fnEtXz#H5NfMjHO-Vh#2$4(a3=DLd7)j+c!iJph7MC_Q8WbZ~bcZP-8oaeBNDX%nWRlhnfE8l6L>X7esejJ`&=gLLy`rBd zBSNfWi@OVD0FinUOJszZAUe1z)WQ9_D?v;PJ7$R-Ho7KCPn@c^_`)YJQkW=e@nRcN zOc7#fJF=zKHesU^Rvj#xa|?2qg_MjTru`Hl%$E!af|Mk-q?LH6&qBS(rAXe-PZ%{w z`AVM({55Rl`s#iuKq}C>Mzy?yrixUFyz=xSR6gvlkNnaQ@Ey7J_ zcv$~~PD=>_%0 z3My)JsV8H9iTXAMB0&iPB4`I(2C>?<;FOBw5`&r46~E3fg~_udLt+nO)D_jkj;@Vdu;zGxtR|C7*iYo%(9tVoHV<5 z1j3gWgfVTRp>u^Gh;phRiO}qS`x}4R_QUO z(WscAu>WD6gCrULW39+~x_0`fqxYzUdNahD!*clwp=a?_t6?76NL+3pwE8Trc)Axu zdmzSB1Ti0I2f7o2eE$}Bn+9SAK$;oQ)SrC2DKs|vY~ti>k}9U_0VSs}z*lhX`k<_V zgfa3K$q*Qf0h)0|7*t$|!jJ)*%?vd>1}(VBErPVjrJkT1&G-Q*1o0i*2zAsX8?+&U zs^A}l0IXrid(8T6ts=umPC{dtq76QdEO4(VK!CWLG6`@4~CRDQ20eou(^xC3QIwpEu(rZ9xib;Pk|) z3`dT6`vUz~JCHZxKf3HO?9SX(DeMBZgcf zCwAl#T*K+6(*HTnQ)$<5YSj9?;?kX6O|(Z+S;K0z!f6P&IgDo0jfT7X;v8(j3S8g@ z;^?o7PeZsW0oD7p5yC{pIU$TI&%ZP-BQCcJd)XPqe5rLP#L~QX^(JKW@+KV0B?BhC zB8;~Ju^j!{)#P^+jBeiHf){m2FBL1MiWBqsvKc9)El=*Q7uDN4=)wmvDu>uu9?xa^ zdFwkNDvn~a^Vhp@GwL`Rlp%7SQ-y`$O#QveCmPBZvtg2E;XK=1B|c(&*_Z1#L3~Ai zTbI+DgNHa(iG{(MAJn}U<3IK)FkD!f|3Pt`L1h)U@Q~wvTs6Llzx17M;6VpOTi#C5)Cln*`IaU*W zxGPFhmp3}91-1?dc;MRkQdghXVEi z;-A2Q1PdAzsO+G^g$x@ydN9$$w1M~x-7fjfyB9lCIvK$HWo{d3wfYC(A}r7C>cv0%!k z1GiCxm`|a)cS~(anGxgP3#)9S7HhjunX!Mym@$*~Pnun2coY8fy9};FW5V#_WoB%y zuz$el3Y^Q9uwR0c1zZ02^0Ma5oCp5omJM`gZ$i6e>*fu#>COX@UcA_i8|rQ$wGFf_ zQs&Qp7>Pp7wr!`@3|ReS$Ja-s=3ju_Wph(&8GU3Dbs&`l5;feElyn?a4+8ZPfKfFkV2Ub6B#v1;thHi{5GjM0Ks6fU7mkp< zM@~xgu?`Wi*{;$uXDQH9-+KVRx=Yhtz6prIU_8VO|8C zXR--ITbb7YM-oH8^~PkJa^fV=3)}(0!<=#&79M*8;q?}eo$2?OH0U8TkdT7i2VQ+o zJ*sD%I%buTaw+?irM=2%ZLMd9B>x&~$#LTi zM#?d_o~apS%cO-O03;-T&R+m^DRF;m&ySW>ZyQ@pJch0U?lK9^HGs84u!NoN$?+(vk&Dm^O7tTaDyWGA7^Hw5j24?Mc_M#204hr z6irAR*)U5ArSgl#$dH1)5|)jyrajA?@P$0=A*Fl>#5k307KzJ&KyqNjATlI@zfvH^ z1XP)VM2pFzbMEW#TOI+dXSmi?50(MdC2K4>zZ+5 zh78R)5OR8Ro$PFSsfU;8K@TqzTG8&fF8`n{d1&!$wyuzhM35?NX`J{Y zN0Sziq>@6W&;ChMm;P&@I_;@X50X>TwJxPU^%+l#ic}N^wV*Ohs>hU)Jf})ks8c2C zx>i`#tZH>mN8M`Aw&~Tdigm0?8ku04x*6qMl&oxRt6N16l*+i&$`G6|h1S$TpO6jo~PTTyp9vVlRtXE~3?hOERpCvPq)M zik6Pxv{GIH##oUyWV3=9S7(6JA+EGZK-4f%Y~=eHF=)OGXjHMI1vVv5m0_ zVBHlw#h0@Mpz0ZZfT?G0*{bW_L^`q?9F9sGDh^n?c%k7 zu0cc>I6H;P*+w#sOp-k-dE4DVHd}o68h5_&(UA71K;k&qrLbkp3MqC)iEEH#=$e4j z2Iiyz&1X`}nINOCHMTK}YQm;hnX~q(yICXcdZQ3UwYChC=iFY_c*Ut@>t~r;dT`A= zQsKs{wm`sXq9lL3(mfm|A;FFEf^$3~yI#5S_yf9(b9?5_S+dIiYHo+%R5R9)`H5W) zbg_k;A;&(5&wIwRo3FDuoEyl|RsZ^Q=Zx{YxfpB2M|*XMc)P?wOa`>w=Q~_cyy$Ut zW-w*XDABvy*5GC;k5A3qcNDdF)x z#_jTz*8HE$jj#vESJG-^K2;{upM&0gc`qM?Lmc5`-A3iY`i)wiZYFFW;^K)&I~)J~ z=xjb;FMGgw!-5ruJY>H3GV!A`>fb#l%YRCTH?7zY9x^||Sbl<>P7xq39MH`vrgMrg z>ItuGd#1B! z7S7loLA;5+%f*(X5@7LLl3*(w?(Ln449G%8<3&dhY(>~85)-CIGgSesPEj%=K=*Xi zJqombI}OhzqFpBvLLRlQODtL?^Qb)BDw;J|2jrkETL?v9TM7sPQf5tM0}*Ne_Ib$JBziR83*KEBC@$2U2sCEoq*J$ zgwN@d2ZFz_X@FIPN5fw*kXAZCdwsw$qWm#iHxZvGOHdKvFE6I3n;xB`jw zcF(CVK`mU&!y~|lB?hC7h{L6bPT~)JM^v@NBZTUf7CuM(@}pAT>(+r(@|I zw&#KVLta58JwO>VkSd={C=?4t$9)M>&UK2&t%~by2i+D2Xielz@Gw?O5eL*SR3!kD zoOxPA<)H?+eG`VSHw$qdOqeQqB}W3=lp$PGx10&m+A z2(3YnoI$43FA>N@Z5k!gr4#}*NO|vNZ~M!`Vq9oPAkE`xfME$>=cazTVIW`vhy=$F z7H9g-X1cvhAQXxt>P`122`4Om0TYTrd6Pz7BHk2{LUl9r&~aU{$qIG}R3?camej1X zlpZx8cA17rotXCuk-?40mb_iDrvg`*1)Dkdu5zM&JX`Ng|Dg(anuO~Lz8#3c}-UUC@7;VC#*X#-#s7`^#Y!ESghELvYQ+jK zvr0=O^%Xw_70reiLQ(+<&LP>HCiV1RR!MuHZ3G@|t@ z8+&OScqtJ?M|x-OGA&Cq84yZ#PRZj4$#ugA^Y@m)HcLpYbBydVL8;~QP3VKFBG%;y zvlW0}6$raTXyX+SHAO>Al}cDsL7gTUxyF@H>k?vbQb;gOs74m4PimlW+NF?`S)2Zsnr1)9MPZ-W*+_YBvq325LX8KMxJ6s|j?ga6VNEFRRG#(@I?c zWhT)yMp(=o@2)aW^3G!Mdak!Zr;|e~Q)L zY5%NNdMuv?9g8S-k%00r+mGbv3lghKR4@9}%h=U{kfg-DNs-9H2Q7sM2TW1babZ2F zANCu3SmVu35ftN!pF)zS6o`n0qM$CXPkFeJtEeU(<{vyLIUNI^KeJEjEHQyFrMSGtuQX?p`y`LQE~4nYf|{9c#(QC*(PA*}Q1! zyUNo|%^*bM!pxSbQ2Tkr$QDrV8=|wp5Y|7)>CV63&@sZ?A3OT`Ed9+T1Kb*BT@+o{FGrH#{o@_a+dWfx$u@bffKLXRSPa z5d&EL$>8>}D};Bawna{;;bF&=|2vR3Xq+VDY0kU(ndTm+_RN{~O#C-uyg-^430ZHd zZ7qA+)jPxOx8SCCUe@4s-L}s{UG8U%!>g$F*tkCRckG5;Fx~flWnhA0Fn`{ATm)E< zms8*n=#=K9;qLD0WSy#2@;OEL^mGqhbo=^%7CYZ9{xu($ZYSCVr!k|#H^9#uX|D5F zlcsUN?jb``&wJ1dhoY;GKCrmQu{2F`VjaeIDm9Jv>{8rI}zvyZITpDlX#u=tvu=lihB^&{RFxL zygma@GWweG20l0SOY@Q7b@kH?^y>BYoUC@I33eFJb3WAsh^`S(`hiGqlC+{uoP3`Z zAGMLD6fYm()dg(0l9I9vL2s4G4U+uco2C!z*zNlB=qVQkK(8Gxjh3?y8w?w{S97Zp%-p6Yjc<| zwLh_OfPaFD=z8pM2GTh(-g%V%9yRLI_^w#g3jk*Y&|VYD~|1 z;+k$Se2r?DUPg(!e(qN>ACr z$4o6V$*R!v%4>@7(TH2>#8g7Bgxfd@J!D-hFy*pL4VV`!JIbA%_r%+My%D*+&Y!*Mhz z(dVc0Eq#j}e-TCh5U);2Sanwfc6$`_SFjcUQU3cje#(Rh5?mt$*GN(btcF6D()vCT z_AchbknL`>(v$2B76z|2mT^5v2=_iZizT+1g-qlkd;Y?_8zgOdae{r$*nEy)YZxli z7<)`FX|bN)M3Pf9BC^)se@wEOOZp3uP46OxAl0Q3PRMo8Kcw<@t|}U1aj*Z=ZnAmVNk*f0I^m8hwPA^!a8Ab_sc07 zpPO9)dTui9?N`y;eg9U8@JYf>c7&kIJmjj$%?eHcXj+Ga z6oCVDPKm<#{dz_}dHYOlT+vdkr< z+^*G`Wc`+J(R?>LUIKd3EoD z$QK3=9OCK6UnyRH4CR3I(^IyyTha3pmjX_G%o{JLdhBuSGylHh*{~zSY2&)K^*ZF_ zm?>rB=K^9O{o%gE4Px{2KM>-t#_ZWKFBl3XiQ`8OcmlV#R*pX2WFjF4o|Fj>fMXou zj0qVJTq0Ti*5LzrH#pe;lIZv(;))b8#Jn(likU6tMCiWVHa2CZ{BaUU?44iSM&)Ci zjKAITEJvRp_<^~(-7XWG$~}^UnPB8>2|DG+ecF||sy;35Cva%T#VbY?u@~AFPJ5PI zHH6=(Clm#zOBx<@e#4h;ZMCa||(T{t#t_ufIhloE7QNDqF5Ati3!Ht!*`Z6^Bj zn7y|%mj4}zCQ!v#m~trgmP=<}z5Eg7McEp8y?KiqnPXl1>7i+X$I-@B8x_}5<4d_f zhipzU_qC2BpMczUyU*btw0IUQWLP~rCBF-sGhY6ZlMXr3oOstZ{8O9EZwPAL;HrU+wnLAl>xriOFSiYX72Qe`x{pYjiW99?DMO(C zx)typS7a{Im^f37b|6S>C)BcmfZK)yHBiiXKS&#C3bqfJpv4IZgExG$jrIR-xZR6h zmzg`2C%4popWshw)|D07Z+5B>+@hc0f5~;i0CruiGrUGB!gAo(-z>totH?#({*vfz(JC#=d72*da4$JtrS`s@ zT6cUBUnHykUSfu)B>?U7UUNVh}Znpa|1Zt3d!|B#%C0R@kwoL(tAy*N4`Bt=F3 z3*()baTB@Ze{yhG13292^(@l3YazjsU>2`s>P&aHspu!wm8eyLEXQxCKQ5JBf1N_* z&A6syv&Vb_0`;Qn?1%fINFHrn2XlmizNR^|2xi=jJ{;u6uX)#cL9bkBN`pPM@qqh7 z_z(|Sbs9oA+J5XVLr^yz`NQ(kctI0(@=H*&cx|BMitWefkv#vRm)@(<6ES)3?z`Y> zp8ney~T z)f7u5b011+eVxO|Wdz(bDf`iL7yE)xRCFECIH~2Y%rP;g4~-pN-9{A|;+N8;O}8KE zhOjE~v@&tt+xh2m}}Azmj-3^OdKU0` zjwE9^8||5liuEzadE!XZg2-%-(_GdmALQ{p+SatUqop)7E-GRY?J*Rhs;x4R)eY1n z8lF-O#wUHKdeIejmnb1SZ}GnCT$b@KC4eTB%`f+L`X z-Jr4&c(jKbzHuerIO>i-Td;U};Y-;wiz^lPQX21Y-yGS&860|wf$HHy=xmF#4;Hoj6^Lo&V&p%I&F!5 zRY|+g#_jX(7oxGh``mJR73vyopYf=V*wj2!cq=%t_M?fMGy;;^ej$*ieVi7EU z${)9pdkCco;&KPu0aB#-B&$^-1}rs9M}v5L8H+))>^yx`oC1hH%@ak7XL$K^!obFE<}ubJyBJ8>|Z55AyG8tFH%O$ zpi{y~)j3A3MDN3eJ`mGdjAlpkPNU+wY_~Cs*Q1A7iV2Kb?|#UGOvHu7Cf~IlE_z3q zgPhaFj#k@!1I_C@cfRGuhLSM}NQtPh`8?Lws@D}e+np|b^gYAI~A1WscbWfiD`d0hB z`})`6cT>@8-qRkU*dVoDh^m_Bf2xd)rbn`TO@0=dZfAqkj&)~=2OdXfPZ+}a&PUkE zVm(H=D(lY2_=YL%#s!D@E++0T{&%R1yY;_6Kl_b4UO~X{d!s_7p!%2U;uJ&!P>E}{ zps$fkCxNZ^uF0c-jN#MA-_p%8gF+uJ0qF?oy&eLE2S?07@Pf8-N%ZT^vMabO1yLV7 zuTA?HE*+r*oV+?@JSJ;rDhod96Yo^q8NF9?1+_Y!j`}`%&-Aa+gKNdGpQ9Bi1i#;i zS(E>yj(p*C_3f}aQu|Vhi1wlE<+S3jjLFm+G^gv2Ub!!KEGf^q6{h}q5kxPhY%tvx zhv6ym8NDz-=<*8+wYUwiEec^~rpv_);eWBrY$B_y6|>JFVqvS9Wmn8xs~JaGQBB7* zYDd1tmr4O*#Z0>~=Ql{oixyNzSgU|IybjdFXiD&$O2`FfyEqGv;&9042fk{bt{sc> zxu+v(e-v4g+$IvnrZG}Kih-mmB~A@pef5TtP!|@J)n%)!Fld6tJlb^(q6kWGt>m>IrizxNkq2NyWT@7s3W9 z$zg@=;>8x7{yM^rLpk$WUia&amau2{Mxj& zH_5H)4nOXnXJg|TVprw&>yKQuR%GJ^gpV$n!LnFPW#~fDP1b9}UKghiXP=5O3!Iu9 zp4g9l^M63Rw8i$XlS|JMUoY&|i)ee?@BXtn2xse;l^qv(Mz@{MWh@~7@7Sjt%18G1 zXCFl&Mn1FHe#8abuJdmwjF|OXxS!!W0;Jo+x^e3n3}|$Hs=*nLd3ha3FJ+HkrP(d)3&M(zxc}iEq;* zmxAk(b^SOo#d!K73!z0l+A#IdxJg?ybN_tp1CloxE)HlsTV}A)OG*9ugGfFZ>1_u} zN#T+td;Mq3rQZrfWXQ5`*!VI) z4CvIUoFvT6mR{*5hRci)3-9KZmeGDT>@t@R2UZad7ex5iyPT>)=;+KgMTZ)ZmrQ19 zr_X*T2}s*he-El4x#8p$lU11gW8-k$|Mx5RFiwK2ZeizM>FWoX4aEgXDTP#}Tl>!+ z=wRf;GI7zfA2=Fs#ye3Sjjsg13c@W^L(4e;F9$aS+W1)|`6ove)1NQ|wLWUZ=608I zh-aYa|J>5R5ceCwa7oE29`W>!SW_Fhyo#&*PeYz|vyh?4)8eN^22OTHZX_($|8^*p zRsC#z!=B*l6ZFD1cHOt}jUvh;oG>;_?e>IC77DsPgqH|2RTWoaH=XkEOI7FNCOCny z@pom@k_>l}_Gqn{2toynv~J|nerIT<6F-N;LkL5UIB;@`2or@_idxPwJ9B}kc21oO z9L0X^k~=HAy8MLg;JK}&z~24D%pwsu+y>Tc#MWXd1{VSCZUbhABc!l?6sd3>Te8Lh z^1X7{Q`Pw89Y=?`TcSsx!;Jl%)~M&%Hn6R zfhxlx<3y>EQ2rU%-XPT`b40`)xO0Z}g9U?>7=tVcpnBN!BXFC+C+{(W^X$gyUj#s! z5^(bHqDz7ZHp-fX;A1PF&I$&CJww?Fhc}l=PmvyW7YP(-g1QKlLzSbw8n77Xm*~WO zpu@J8k`TEY7|Ds~z~0@%0^aT9-|&KDsr4;C>3zGE25JBjom>Y$EGXN7$+ znPomje@_x5f@V30D>X&AgS`5ZoTwtKWf6#QOs7M~bhT#4^}-gXVQ;4?lpz)~MHvK9 znCPZ7Y>Cm$9{CsIr~E3<)g=I)*mOy5?xH;cEqo|;*S3c$n?*hIOO}{lHE<4aeQ+Y| z<09v`k5*C+tX2VvD$S!Yu+O*ey$wLA0j4`4Gx+`j$ZTrwu*Qybo?ukEb5@jfUhM4c zLG6?9p=YGXEH?3&ue#6_N|>=YO0^o<#0|hD^9Zcd2=NOb)>*#=Y1@~P-@OoI)$mWj zi0>%~99|(iuKCHmeJUogKr(a;afO-b&u7bd3qGA8i(hcP41D4SZmM7TY{Iu8 zC0x1%>D-7fG=+m{afIIPlvJ>V#%F@>T-K1*!#T*FEa&r%Qa+YKI+j#vnj%k@GL9zr zryPVT58p`}Fm46=-e&&T1xCijpdafi=5yOL2Qoy@RU4wNkg3Qb+Tl6fJZ}a(xPH?l z-R#0~1J@glEUjMHkyIJK4FdiU#uDX<>TM(zg7!1lp%kq6?cMLYpv0;D>2bXc^M=l` zMnGkt=DT>RzKx^-8dm@vIZEl!ZiLD-f`000F^X*>Ll-0ViZ+$gEzVvB`r%kAW&9pcndRHhiHf?1rZzp2t+K)TbWebL2^ z*HS#Fl2x+~TsY42JQ>kUq|tLxN%`v_HlD~F}Dq3jm}YNX%a zuQi{pZ2~DgH|5AJyDDjx_WVT*vo%A#8h>l8jx9Gts+Q;OnE{M%!*KGi5XDbdsA?EC z-%;zjtGOCNC+tf&de6b+bYt9;E_c6}l1DoBAX$>WrbY{mxRnle_ieqtIpCJr3p|Ku zCBE(hZT3=mcN++`(Vw-FYEn-fFiN`t7d-%X7x&#i`D(j;g1x483UJsE(tE*X2JbnH z<;}ogPabRIyRAUjKCr@Ut`2_1CdDu`-3=v0I__AZ244%h)rpfZMSpX$tQsWlg+cG? z9yG#LRkJdF+U1WAQPL06g~BM+saG^ac9zL4$NKgo;D~64 z`y<%lyfT}xH;nO7X9OQ@l?>3uCmdohA~OR=jrL`7^fa$^1`)r- zlc9VUXqDsiCbY|uW5`fQ6y;Qh+;AR*qDTKmj7?r6{+&+X`HT|vP8HsEL1IJK@+Rr6 zZT2;~H2od0kAM<-s_q43ouQTf1o_qU#8o5W@)|gUQq3KZ|F}j()zx3DA&?9+1gZ5z z-o1IvhDG}yV;<$E|9uia93oe4aA8I*Y-aur_YBEfJx0S)Nd6w6)B>)Hm~NPX?`sH# z_XtPYk0^#hR6*tH@|ZS1y=yQ{viKAm`aMIagVAoxx1XI>Gt<=GhVv1{-gL;@3zHHS zs0Wi&GQl%i-WA{ZJ|bX?sP~BV;EIjqVzOZP_msu`?5P;tIXaff$JX#DW0?Cd#BFGc z$JjdS(e#@-$8|SKp?biUN+Fa$LRE`h1<%(^XtO-QY20mOJvd8R~PzONt>U&#sp(yJo5XD0bc> z1Bs2+bVj*)*WfITG%)0J7&H10f~#hYv1aYSs%X_Y?VxC-eqx1yr9Vm7A=(usqK=&x zv!w6*;PB1d;OxCY0<4{()3RVw{V%Mp3PnUafD#&EoVM;i@{W6y{7ISbo-A}6o2GaaR1opB1)A>nd&G!uAiO+Fi7Q0x$ME3zStEm2UyhR z9v|X*zfm^Tz!-C+gcb;!1}qi!2#_)*z3)}?TDEu(A1DV(%8b$Jn(u7D8r*^M-~)^`cmqdqq*&J^>94Z5Gx>8?%5 zk~be-njMDe^U4A&FgG^orJb^14{R4|I~dXPqtMeem;BpnI9cld}HYPMeoof z;H|*0rzP*02k;O_{<)`q^F2(+-C%J2`#Wx!&NIN*z-)C27^F;}{Y)-si4rqhCP~$o z6heP9xZ1xt56}M&n)w+eye?o3_kB&CZ)iOx_+eB&)Z`v8T6D0O?}*ltE1$s(ks1vI z<(7{^op7iH;Gj$rW|$1a^CZ_Pzw-EbS}{}1@S5sGmU=$o+{U#PW&OcwxLryeP z73C&?j90+TT+*YRoNqJOH2Sg-2TA;=6x3OJ;g|fn%R4esQPk0s6t4wE#RIrmGO21aMUwxzE5pkDq?|N5Xz*{*kGe>=9j}e}9ZOEOvRF)~z~^4l~15#}L;+ zW#-|@cc~YiDQ%m;8su=E@x4sju;hTZl4s(6E$?6d{YLLOJ3B7+7k)5K`ysvwBxqk3 zjFG96&5ajm;i2X3$8HC!c80UBIx-(*mq3L9@K!?+1=IPd{GAu1XUcanXdn;DYx+os zGi3YYY8mayAQj;}Eqrg6AsVV;Yh7o@T)q!^_VRqn`l}_jq6vN2d}%`=Z2^XfTuet0 z+BZeQ{3zc6G&U`^N@(28oB4aY>u_gL*SPS5wo^q$07^d za^+&!`94*t&*_BNdhE+uwW4y;o!greu*7*$x}790#X=cas}Nfoy+4EBg2`@Sk<@i; zf6x|M)i~rd$I%#jwp_XOTmas-^~}v8fH`!dc)0L|@>@r12YX6Mo76kWyNrQb-n)hV zYb@DTQX~Q3FNEVz@kOBXn1)Tq-$R2Y0LMMg#mKK=T2-@D?^#q8SFwWI*Q&j{$JW`b z02Pl{6E*ncJLA1u5WJnU`>Lfr9sKI8#h^d4Mek0fP4KyM=W+0loXSE=+ri-iq2HhB zjN2|uIA1w+lm?gvA6S4j>qJ%q)?U3QzO(lHh&#~dqlN8ICfebW-ttxAyR4GyYfa}i zu6s7FV*U@rZJxKkK$07#z>D4aO_DcJlG4sJ^|)S6LlmRlf>c%HvZt`amca*BgVxLK>qOP5i8gFJ@Q>7~v@& z2Y?+^ON4l7Ws+Ktj7}!re{tkcnXK(o z<&agDBOOhmmYGp!ci9M*)!^!yqW zRbe=FRFkpRm}AvkZp*taD59T%j2NuQFO?j1_hk{u;N6Fkw8;sX6!bWWYGv_vb@?+Q z+;i{1?rUkuK2@{jR(_jW{EFHIhKh6xjm63%3dw#cwqoDaz`qu}$#mEWC?3bS=$A_w z)EIuMF&aG3w>V2>pV?<3n%h?~^n1UIBw{Ebb*24i6cfJG!*{G+>pzQp;n(6<_~~-! zpas2{=*PzJT$ECB1s@&|%|;2jg$pS!+MDjGq;^V$T9Q@!8<_0GuKQ9H^QIfFAk1d=~>Yyy0*a&}XM#1}mnytlF8gasy|wmX6~C9vskzEqzn7 z9yEHpTs&pEiJ30>Uz69lj;xOpm%;}^7DA`++Wq-X27OjPW{3T(F)A<~$E@NJ7`NgP z0BA@L?Lyd;8+~_i=d-Jwt+sCYc;ukmqCYbhj3-dT~?5W&NDXt2U3PRp^lAt5

    3~!FsmF1ii6VeVqeEX&in>B3&4H}FV&6zc4 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�yukb2kFA@G) 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

    mJo}eP+pOGf&ow~ zqQvZ~!fvVRpEXIe>|f6;eP1l=-DD5``-Y7Kb@d=xafW`iHI@k&LlhxAoTV!s*BG z_z%~8WZXk*^HDiA*(0Ra^~}STsYlY*tm(b2%m7Tk`Cy9S`+0s8g@yKUC`?XEZ$Y@L0L@!VAxT^rIh+qnw!dK<~jdYgY=&^rt|)+xS%ecu)v6mA8L3uW z9FtGjRT2PT053j{3maZvYa&>*==4&#vTNsdVYuUt+onyM{^1)xsuR zt0{GQ^`lh7-YM2T{@9S7L`H6}9W9(=4RU9e?6}1%X<#8+mKp4?9T`BWtRI&;|hygYKr7S^0 zCdA;ch%tx+z+UV1lslhQU81&kzYVb(p5Bdt$NJ;;IRFnKEtq zgb8g`=gCX4kP{T=s*6rLeZjnWE@97d=2=Ugf9B61rZP4*G&*8N%KLivBbs8du5GNwJbRGG%raMS;y|`Yu>%)_02u%B9_V_I6I_w3dt|U?Gi45VBXEr(pm?5qnQ2Ml|f)X^YREKX-1qR7xDoKkZa| ze=Oq4rP9dQs0eP^ycGlqZFQ{r+zZbW(pagS%NLW%G4X!g8|!Dzp3B095J9O|f&kz_ z#1kWG$^rpJW75KiPz5xg^6x+dUI&)K_U)04H;5YI^Ns)k3aWC8Kwy{D81$swmInyRS-?vR4X@P(MR>rmfGLJAea z53Dn0nstO=OCw`gAeYZgp3-x0|A7O&z5Dj>Yin*XaV)^zap-pE1vuzu)G8E6c#XktF>7iqvXB?18eFzMcakfQh08ioymeJZV=nM5I=kjvGGm;?t`|5U0f zspL+|$k$945-RQoMj--3L*8iRG>BpeB&0y86_Q#4E_5TDPJ#}NpOjf@Qq4)+}! ztUAc&bEVO--Fx>GhZ~@pIPn1D9oG6&r#p?1CJRAC0!YCKn-a{NZPE&u=^07*naR2cxgOr1LA zi(mTJ1HJp#y}mA~j%?n%ZO67f%a$)a|J-x0zWSKRxu+;}0M0J6iGO-P^a{bI)B* zJ^pB0TWe{oT5*-W!~G`Wh~iSIOemF#)7Fmy4h){P_{__$xYFc|u~aD~+qUlf$?dmp z+O$PjCQq99ftx;h`Ma)(i!CE1&mJg30gs-HMG__yFQ}a%Qvop2ke>i+>=1w$5UlpI z^^k_D^nU_PI3og7DxM8CHCSuX!U(kkUUkz1G{uJ)IBcx(JWVfz;%<ucrRSLEP z!##Umtz1?hs-QJ&SqLH=BzpDmwJ3CbVyEUy3rgBv1cM{VHG2%GW|~3k3mHJf7}jQu zY3+LmN~Bv?%}YNXeUEpHYp-JMCHbG9s(%kE_dytIY`HK2YNukrXf{qe(xw5`aVH`G z-b+MQJQJC6wd|bi*s=BDM;}IE=lGMK{M(QJuTM2LG%kB(={LUe<+7`ABF1@P92g$C z@7`ZkM#~Y=2j2g|FMR$>`6&L)@9zE1cfWJ!VDJ6+{c_3ar#81VHZ;VD>|G*K`pVaC zIq&QX949}z^+&(^-F@ETij}W?@IyB(UVQF%zxTu2ethfeudfD#4}a_vS6_O0M`src z6mqe19*~lx+SJngjqiNxkq008$xm(-k*nWz%_l$k>E_0U$kK1`{`p&5Hm`bZV`TjTW{>9Jp zjm52--WnL_FE$iW#3jzgbhvl_-+uZtANladM@pmr{Ewe`bHip+$ieX7SHAMKcfRwA zH{X2gpFjT(gTn*6cI?==;q{(LS1w=r*QHBeFcG#kw|(n-KRoBmGY=j*{4Zbp!ppC| zynNZRS6*3u)#X>(*b0U9LUq$H#m-r*O44OedneY>k;3f=${xY?WYasvvGq#>fHRKy zxb>G&#cQxUnDi{fmLhQd(%LG<`X&26mT;ZfgY?=`HbBsI92cCc|FzC2U<&2+8Ui=c zh+rB>P0u8JHiR+i!wln36SHM-+#@~T+WXV%4sQ-)sl!izNCF-ld2QsPZ4W?uk~(5! z@*<$kPEdk&w+BW77LNo7X;qn`|1|MKs(r#NLP+R68*24W z46qj>3hPai2rNEePfa!un2=BK02TsaRlz)xvKom&t1fkVn*Wci_YAk}Dy~IG)tqbX zaPm2wqdKW2q;3=dA+>S_1V|_#vIHhwr_cA=z7Egahr_!czP9nTADQtd(G*ufy2QWM0vMeVi=6B!NvFE_v1N-)jbXUS5#1LXg z_Fq+7}j;1CI=WfR3S={;8ONZ5)m21(JMhI zlBv};;|9`JHA)OANz#Q?Lo|`*kb&vwwrUbmwn~-~lSG2XqAbgzEXX_7h*-y(n972s z=(M`+?m%a#Y*VWpD+wC46oEDc_f$TVKID)x38R&!bD@+kXWvWdDv-ty5h5&+MU=?Q zL~exL(BMF)-JY79s_S4=x2s;gd)L0hGt&#k7YvV#w#v3L3_2uYPrlP?P0X9u9cXXe zdSvguebsbTX%uJ>5t1m;w6x;ij*@W}Mkg3*bw!LgyvfO8HIfigLT zI`0R&gY9m6a{9pJp8X3u9a*4IXpD;J7-hGMgNG)krm}-gU0E@P5UaUf(!yaVB^rkn z7f47NE{O`*ngJDt(pkxq$t597EejAjz9>8=Y1Zsmb3X~xv5>~7#A;P_2QL&w)GtFl3pWS;OLfuWHQD3|~& z)Pcxa--$$oz&0HYFx=IEQ44@lMT?_BP9Ts;ehP?LQ`E#nP$He4oh6Zhb_vRCcFife z#WSgho6)?6MrlMi&B!08{1*z#5>puKOaL`SdCB^5D!M8p69TtFt-hlF}1lBYK&MO+_E`uyd5BG*^g>$8YDJ308?vY2!~5G0D_Q z35bcUl(>CJ@Dx&74?^lcPunUseeY>b8yOyA{q2^V+Ksc5h^o#;Hh`RclLD|&6d9v# zV*K=E4Wgy~+-0aLTym!g5ly~DU_+Ui0Pz%{!~z!A_pj;JXada}E^5zo}w=jEeQ3J{XWK|1F?^f34DQlU8o3v&+Fl;1^ERH5V?d*?JrjNz%LpE$5*Pt~h7 zo_OM~e*Ra7h6m~(mt1h+L-*eEjch&t7hZ7bp~D9bgmBF2 zwIki3-3RtQ{O|+MKlA)ar=C&=VREW^@=2#&_MZ2}sHNiz&OP_v{{3HPdNaFr@1E`T zMn}iraoRfv1_wn|g$FysOINI7#HpDXk!VZ^cD!)mLMFFp;Sy$2@c7vH+V#hlPD%8_ z3od!?g%|f9IPm@Ne}Db@V|`KFdB+`7Gt-^!z&U50S$5k30FmK9Fa<8A*4W6%|NVtO z-m`1Z;NZaICzKMA3Z5mQsMyLRpl8rcF51SN$So9*H6%Dg;#x0;q&~)9L4a z@>8E;M~>aEeC9L%{%_xV?u8d$e{Jhizj*xYb1%>k0}+FIu_EPxt|xNuzU;EeLz6e& z{9}l|<)o7?zw!zw4jq~#jUY@OK6v%DSN-{4{IyCN!1CV9-hb}-@1lq(_3pj9UU>e6 zEn8k{cUmG;hcGoYWz)rpCC1xps5_RceZ{=`$^(9G$VUU=09KXl~q z;dh>X+WNN~d-u=oX}8K(Uwx&j^rjns66-h{vFe!BOBOEN{OW7nf$p;9%X)WJLPvi1 zgCCsr&NIgrOynH^G=0`NVAcNSq&dHHrfww_WPA{*=A!*|t?8he#zyA&F@2lPVbiCt zX@*neU6tO@x#xi9{IXHYF`%XiAWd4|d=^JSBXJTz845s|8rC@*i` zynD}XfH%D5B=3tl)^{T<)??zcqn+Ll*TStFlt;)(5|C_Iy61#HZ+ zhjY$!4?I{y)Ew#(BpR5)L=h24t*iLXq5#M*$@p|WX#OuqVd!is_+G~Cq$HR4lE*OCA_MLvI-z|HOo*qNQ}#utr#5} z9U2%A&}^&^9i9g1vZYJe5k;p0$1JRxwjD^J5$e>qisTXr3dAHLObktACx9bV!NTek zk(9(Dbx}AKi8hi-qEkweXAn39Mj;}kj>roX8o>mOOx}*8j!BeNBcfAMacQ`R88ywS zMD`<^XPldD=-aFmizRKF+*_NlhsF$9oQPcHP2DSVsDrB3H5@}|mF<-)R&3v~eb4Tl zufP8KKxG#2W&Rk{+y>DxbN` z#9HlV8%A4|Oo~v`rA|I7)vQ=qU7Dgp#Du7-P)`LBoOevD1SV!Uk=P5fzSM=CiLv34 zmM=|y&ViU5Y>t`7yoq@ypZvD@6HA7N2gfJIO7^H~ja8I7H{u!-#)$Q*iYOt}y#lmg zbZlZ|Ub`%{g@6iRA6rBS8Y0!c<&Igo`dyd2e`@ERAt~Ff78O);Y!j88*7)%F)~&B^ z-@bj>l4TRry8P?5?bvx zvs0FKyPKBc(LY3RAaV{GdohrzNL^Kxh8T%r2oMpVu4C*4BA3SHg&=iMiK?NhWwtjf zM0Jqqncl$g*q%N6!sHY?PmI}Kz4i5}ZLhy^|NRf&dDk6RTz=)IGtXGOWTEMuYLHM# z9nkG?=?Q>Q;F4mxu&}79@iQyfvY#pjF3NQqPFZu@@$bFjng{Q?<-WV`div=n4;(p6 zo`+k0@%W-+kKM50q>~peU)dfQe&Uh)zx9o8Oh<_lHlB3yS!bWm%u!`}y1Mx%KlnfY z`X3POl;y^g-tnQ2e{S*8r6EYKPRS*uHm)?f4y$dM` zs7Uy3PU-WiB(_a1IV?9DK_;4*{+Uguf?W=UwO<=+!txZEW`g=rCKN!^$3oIj^zGOU z{E>ogPJw?$G`JbpmmFit6*Tv=lafh{Q^X zdb6s!d)ICe6^R?)y0P7AJI}<3f>o~^QC84;;MRg~15Rb{Ozajpv0 zjQ0ePMyR4F96K)96}}`#QKN&aV`Pvg>rBMuS6p?&cW>CYZ{MxA-E#eP*LOSJ`|rCi z23@n_nA1+*goKK4^EkM1UdoR?{^$eu-}~w-n_t_y_0YjXM5PT^u0k-!B~BSa3f7?D z%dfcdrW+4dAwVQ* zR3`77i&mCb6^$w`LRKtYL5|B-5o096F)LU7;+f}Wd)2F(w=7-q;y?e(xAyPd-*SFt z<_LLSy=LXF|Hf~HNRbqPQ0;Oa%!Lmmp^in{U3lTej??%yRfxKShmQRFcfR%TgZJ#( zwR88*9Z}Hj3{CfXMOiXA28bOI3&Q*b3kpYNx2uZoz_3IOQI;-U8AaOz?YfGc?f?PI zTvzpMZ}!#KUW)?nTTlPuxsQDGn)YBP%!K`W_qSSI&-BXXEr+L%jOu8A8q!fIF3tI8 zAC5}V)X|^rCz(wYt0_Q9P$*>+m_FNwuuQ23>7_Yvne+{=_MI;E@vd|TYW9^TdyW2P z*10D)_tLbV4^y^xZz`lUwyil?wcdjMdCvJ1oS=-JAMg|n(lYg;zA$__Yc(86(qN<^)p z>P;2CWYC^{d!Bmov5PKwSL`V<2N5QO5IwtRpMAPl1r=;O<&-Gu91|Cw8KNviQC6;6 zy=?i?ty_21vw1Y=T4-Zl+iDdb6E&*E=N< zBI^$%M=TT}Y@1M32@WJmgqWFwmf$;!B9v4q5w9gic3#yHky8i@$TGu7>{87k?^*?v zRTQjFl|)22*o;}?s9M0r|3xbk!DXM#K$6Nf$)Tu7ifpP(dCqU&01$F>9%Zs*GD(aq z*xNTLjbXC+(g`e-T&=bgQdO0Tf=9>4=FgvZ;K2UZwryFuWXY%>l@Mc42Nx~RhS6h) zQi+kF#L8eJiGi)zllxW2e0vgA1exgGTuZ9pWFcZeMT8v>4Gk?>v~>ISH}>w^yMN#Q zR(k8EzG2>5K8v(ZUy1 z9XhR6x78|&0;wwLv!~2@RYXiAnb)0R;WRcn$ILD>l7W=007=S3VH9&B8_#84h;pw! zgNxD=vo#rXTHOWn7ZpWOazTU|HB^ZTM^0_DlcGD&UB7nisuio)qucG2rRTyc+oLh6 ztU)WP06WLt`O=j|XJVe~_)fReRj6_V$g3xt-QXewg)bK_UOX{08V}Fx-MsnG-kpT# z*b&%!9-kO5i(>b_U5Aex7#ST>6AodaG-nzlChKk75K50b$+uX8a#Wk@lgYm3)FhKB z6o^qmt=bDa4!rT$i!bckd%$_Rlip{lvu~QnwcfN(<7YmYl-*_zAVch%i@-u&Rb_q5xc~aGt;$br``SVwI5!vV61T5>%}LYc?eTfBz#XvlBJpZLTqCgHS>#OY^}fH_0ueKso8N zrxl-UE0bt*5K1?TGN_WH++>X@`KZR(r+|(yw;vwV)c(OPSs?>=)9Vd!3??s6eJoX zs3SVKe?P?lhuJD9Px^9rb|&<>7CZlop=81 z(6-lI%ZXG1b%MyM>O!noh#ak7z2Ylh`O4q^?f-kveRuEPwOeaJRloG&3xD>-KYHka zyT9^xf8Uxv;fo>{3IauOOysGmvw(h>`UPiBQ-Z`fLIok>1TBRtHswjyBQDF~9-nOrSY3BOa zIZ}&s}B`Zfw!fc%j*|pBOnp6c( z=aE=EnfK?Sle|dmQ`SKSa&^Og-8RG_hi)>1e)nse>zjrhnqu>|_^{l6?zZ(pjqj zqL$tuYII4#%BW8abqrElC={K#R9}+9lLU*C)1$IJR!^F}WO9IxEJZNjJgOkZx~^ld z=b}apPd@SRc^92mIzQX%)nXKKZ9C_Q;n~@`@D5C!R%@WsT`+Iqnl@m#DtX63aX z{8)^!nw^ab^3*Ci|MK;J*z(#|f!=lR-4|c_9&UNpE)_zozI2}H*=L@H%EY{hW7n_u zEz-!XvM5^}B7oH~4|dxpocPvPx7p%bC9rS_wMIj zcu`_aio(0Wp~12&nY}9=vn!kf#IdiT;OLwUg^@bOmUAu@Muiw8oGKQgq~L-;9JP)S zLZT7?jdg$$6>er`_V2&?l~4Z4=aw#A_QVrUe&^fY9vB#mu|EE|6T9tle*ELsKh1qzq2OmyHPE zh(jS(neZeEiqR^A*1bM3++DqV<(@ZoDSD4Q^x)ZNpX1B+!Grt0{r^7(xYUv_@C9EJd9q-%1Js4w}wJnVfo}sKiPIt7!*D zm_Qq)^$(FiOca?QIAGb96|Y zCI>avESZrxn>rV|``vU+%4Z8gl?l!f2*hr|;w7)Y{`%hCdv@&DJ~%X(=V1xwh!0Rl zBAm4P)Qb%Sazd~Pzm6=lZDNmKvfRL9)Bpe=07*naRE^pGG}Ip=vS#A+8Y{t(8yX#* zn78od&6{6+ZOiER=m!Kp#pE}`lK2K0mCYwReP!%Toj6FyNAqmxMhO|hPR7IU6dK z9v$DYYuB#rI|oLG7c5z@bm8J7lap@O&REZNoz0~s261+MN}L#6*~a&=j)phZyk#{i z^G}w*C@YzCCXuKRtQnV7R1ifqs8+EKy~u+!&>mnmQfGw1!85VIs(A2)^Ue(p3Dw;7zGk<}$>=ss|6ls8rnBW4ho zJiHUIS}`3^38L}Pk$pe8^Om1J_EZ#caDVmXKX13&b*N%giZ-)=>JXy{Go16iss_Zd z(_lVcn7k4ZMMtIDWO`?e2d2Umo>&WC79#@#JnlN(cB|DsxNqOg%*@R082}NawQ`6= z-0cobjE!$P>x`?fy7sJho&l3W69Lm~6&zD{plmtniP(ONP=JGjm)wH_vDtG3s4^TG z#d)?09yGFG$$KvU@Wq#1%}kwEhdriyJz|ZuY7XkM0&EmSGJ6n}lpbsCW_wDG2fN;g6xQZoTLTVig=j)%GAc1BS||cF{4u56 zfCYC7SP0H(izP#&fT*}cw;_gY?*#KT$fE^r1|a6l7)Fcn)`3q@MiBCpG$;ka@HV(k zjUk_+L~U~IP)jo;bAtK~=0_!D4ht>U(KMrZ&Mh<@R|XQ7_CeTQ^Ta zLAZHDQAr|Lh?9~{5}|2~Dre=yqs(l+3phGaZ+_mChUY(TV(B@#0u*BYUbSz}6++NP zjWwq(rd6SOG-zPsJ*_Z8gx+k`>-Ab?8z52Ix^0`Nh}6uUh+{2*AVO8$o347UC{(qY z?yWgy^&kF^KOGwxjCHS9#X3mY>9pJJB@5=wR+U)tClaEH#3&J}uJGPFjUqu+grWo^ zB&o(&gHeatRt^CnMu;-`7!@oIWXi=#6eN}|f#UDK;{A8reMhg?`{~U$u3EMB@ZlpP zN>G@}#dhVe|9)9`7&D5pa?zr^_KmPH@KlHJ> zSA`%VF$8f%5u}b4ocA-+lT0Azf{jHWkl0jhRJ97ImRc(HEx&v3-lA~Kv~a=rz|hF* z6)UHvX2wPayRB}w(|YHoGX@3*AlfcVNfDZeB8v46OH8_!hOZe=fP-gU=qx7})6B}i073{gdciik=GJ!WD7t3-(^DuSpIl2DTphfr6& z5G8gx142^I&RlinN3Xo<>aui(E*&{CO`!P;#)d}*NFx#QWCU$CJaTbc8zQ)UASKbr za8t8x&9x>jWRoCMgCWj^{j?vCq1gc1&$#;p_=bOzBf2@%l{tItm-cJkut$HU0oyd6 zN4m&gI!?aa{4Yai(b#uN$uUy)ETSTs!VJY6Q1Ph$$tP#mk;D2qY}$O1+P_WdFY+my z^GQd_!;0-@2rHtE1|@>G@Log+M%prVvLg|s&itf%f>eb>v~rR0_>-F^(LU+S(2nHT zJpADB7(n3S*4yvwRk-GZA6m3{!Sw8mG82(&70u)F?3odwkScj%!uzkd>WRmnYI*<0 z_Ba0U_kMTzG0XPu-Me%5ZVFOz`M%5ESJ#1=iHV(4RgJoH_m2DSe?Wx-!n@x6z6&qD zP>nyJ6hiRKySBgn)xZBLF`jzj@t0rOymZMDL={nS#Dd*>_PxA$ORVF%b;pm6j;W-_ z!_GXkcZFxir@rm&H{J9TBGgeAEm=N3HV%M&DI&^D!cozSs_J4D*%vRr^wMwq+UJVG zGdor-yz6v_ye~iZtDisRXlm8EZ$?X%ChsP4(R=U@8MpWd?LjqTp)m;dsA z-EsRZ-WN|k@uXvwP_0_J3TK@KN3)dx%qj(^As~^|ISN78Cx;aSpia1U-aAT*j-6+w zs6bRzYWvnj?|#?gk3WjCec#By931v4>`s0u4Xnoy3xBnlFN5{Vdb7A~6_sDN2Cnw}dmQMCC^#?I5sj5dzG#wa4J zHYw4>C!KS~Nw;2k0)bibpgBXNR4gXcoPQ?)dr-FPIRicl5KKNkznwmrqHv2yq0qDw zvvhsV>$I){G0h(zTe^JND=)vid*_a2i}uEYwsmt3(A;r`=h+Wbw}J+jj5Xb?DH+p>8XfP#hCG);SU7 zQ4y70QnKcAd`GryiBT$0&cK8fUUN_lq_{~TWL54oic6iQqPI=vV&$CeCvq*TOC9*m z+B>LL#1f z?iXM9qd(fcXSaG+7CzJgTuw}kZan$qYp=fcl8Y~#H*efIQb0t=F#!jU)K!pywj*MW zQ6a))c^W5CPDB-UKm-{q$jWR*SdIc{RFSgX?n+0QY^Y+%uJpwe&E9#(?c29)o1K~M z4t73#?MH`4#zGzTA2|G-Z+z{RTW^h`-A?ZfA2qX@US?n%5w!R=H zNK8XrO=ZM_9Y>j51C9b`LXFlb1P?XUZUB&Gwj2}nLa2J7AZnE^TMSAq;+pvMmQ|;2 zBB5r|JBW0@avY12PJmhbko-ozA~;da+;d zBF|7&NsR#@Yq>W=YdC>egCaD|F&5(oW+_06KJWhT? zo6IIXCMe~HkOTfEd)MTJ@*&dq_p^Of#KL=LfPdlH(aKe;+MUky?Cg_2|M{z%H=lCq zDYG*@sJ!_6voUJnJUdT>rOQ{8?M~4PM$J+N=@uGQ<-wmKz5 z98i!86hIVWY{Lae;R{EM2vs5TWfGX+8QxRLEe{_;Em15RocvZKDoXRDQ)qGE$l-?{c}PMiTJ0-7aMi{W zH%hE`?btard58h_aO^Z9CJK!x$aAYV8=rapx#ypKl1u;A4JTiDu#vt{cR=RHAyXj&ImhGbytmd&%XGmLht z-G1`PC!T%g*|OCc9UVO3xZ{?uTJ^Pm{)fUB2ZEB%{3FK@iK@9TEP@=9 zij@qZ&iWiFrg|lbv9prIOYTD>wgm=|^Nx#>HokS^Pj9_-c6yqs>W({Z9T@6<{G-x@IJqY8pn ztyViJs#{O65=fX>K@cIw-WL)Bu@AGg5F%;es9?vQTI}C;)_D&+bkE-X`wI4e)U&WT5O-~R3Y{uh7#rPsHN1l(ZQwWT6WnpC-$?7s5&JR_=-$W5vxBW#c%@^O@NW3 zfF+9L7H~U+ri}_EPhwF|l#IA@)R&dqrPb4OBmNqFh zI}?q0%(~)zgQeNpC39&^^P@7{xzxs7b5w}}X3x}ZcULS~zU}oL+js0-ylC6f<;y`( zi4vljO~+P$j}XTMIQ9KoI>07A*6#vw$Xqh|R-@g47ko#Q4O@ z70aK0@kIp<4i2`;R*2H;%}SIQ#cPh_SV?S|rtgOZ$?1l0a_=RAQ#m5e!)AOs=;vm4dnzw zL=jbCfNBX;6MUixTck>qCNEm!MxD~}1H6i5}!CdJ@wK?tS()3mCMDICdK z-?=~PLII+LP^D39!nyolUYtd(Vg&BhF^CQilyqGj*LJ1PzKlA(3$FnaV2^91po{|^S%=z zlssEcAV`IXiBxQ%5RtPSm92vBn#z%R(G)+YpIigZ*)}zI?x-mKO~ppc_1F26Vq<8U zbad|9b7)#td+#4b=M>=c(@|FC5Mv0UL1L6OYu0VpaKZ!kKe%W2o{z2Zo0_ zk3aUv4}SDxBC0}A>}(wZh|98ctpem?t@k~6|C+UHRvfdO zxTt4(f>28pOsCipQ4u3FN?k=GP1waRT(IEGv(Dc9>MN6zlLrp%D|~UzrnAN;#^;`6HPde!LI$Vn%i(rT4Xv2w-A<~dAE%-eLvS+lb<^Cl+BG`;~> zT=Bk>PuY0WPi}nrnO__^GF6nt#tj>jkwERyw<&?4E@lLljGCT@kczExYW&FaEY z6~h^4oS`DUs*)H(3=$)l9CNE|F}pg{6Qd)lY9odT96rNdB5I{;IN(?x%CPpHT zL>!dJiBJ7(B$nN1p@`mCq@=8fN=oF_MNtQ}#!*&@}Q_Vpjl%f)$ zq--SDriw#K;*wMn$PqIW*u=q*%`B@%oA#A7jS_Rxc1eouQrU1$*&7*eYf`T{6%Zrs zWg=%T%s`3B6UABtG&VNAc=4hwufDQv$L@*w3u2@y)X_%hG8pPTB-%u{q;bfsV6On1 zSAyYuM>k6m8q<;tiv>$;8FjKlOdxg=HN?Q=+pW&hB`bFB*s*8t?n8%<3=Is%2!%$< zJp@2wHTw})w!BUAPYRe)TWUfTSlI?OnLo%dF+fp4-b%(uL%y6AiI_`Pd(V}2)2IX6 z%pU;iBqB0#BHKF%2?5mfWdT9eR7HjdN7f&I{N4lmLa3^$4xuKHFFXh_ z${a62pr%mR_bAzIG{6lJY<%k+^dy%Y^Pe;kV~)}}-%`pWpX`oC0P3A1?}<#=6Ko7g ziORz4?N(ZAt&jmk5uk#cDq^TYsDt5)4M9MmDun30Z?%fTd*R5i>FETQGYw&rI92-s zQIJXu5mBQ^>`7FhMr2ZLw+5FjS+RA;wwE@)IB#O2+iF*Jj8Q^_Do8*+b6e)znCv)} z(+n|NnWjC=s;Z%`LzEimAQBjky@#WAS#$>mS_4C^fi?i=d^*@%Qf%6#BvGxC2c)*B zlr%)=RLwGIK%RU}6bMd84G&i)_xjdXe)yyBPtD8}-A>VIty#VP16N&j#e3ho{@B%) zK#57xa4H7_6oVX|s)^9)vc{Yc2*a=}!|^PgCmR^a)YNlX#nj!^P6P?!DX3kx3rE|x z@B6p!{_9K6JqyxhOBa6Pqn{Wb9XoPp>YjV={_0o$X77Q6r7w?Jv;NwTe)cWLoltlm zW<^UGWz%`eg%uhKUV zI_IT1fAvf8_?-7C-*iwK{-S;AZDWD$DH$bI8}tx!OYwHR!nvX-r)Q_DSe4?7mLKSL zhlYke@ySo`+_~qKS2y2#?|lzE{BXPNnH>p-I#hM9S66jiPt0HV>CgV!pM2qucJ11J z`<=J_;>jmnQS8{etL{xLUA*G-P3KLFjWZWj9b>E_A|SqC=ghBjs6!-)5&(7Hbq5Dm zE?>p$Vu;`S-nZ_#=k`DO;-8&%`WZ)hRTb+x)C7?z;+*$|k_w5nGWmS%?C6qrzx$>e zf4qP9fyg{GJb2zYXZN3un2u;hhge63M@~KEln3s60KoUYd&3WZ@ckHj-NC{66Z3af zZ$#)Xo_+GN$@h+pbp?@>)saGqc6s_ar~l`VR&Ck*${jzw^`ZM7EZgnFhYn3wvnA-H zcbs6 zIkpPC-GU`cmaSiR?EMcu)a`b@^)Fxh-gmzltJzk&+bTK|rVbxE{K~5@uU~&$RR<8j z@XnJ`Q1PltPGXD%as?a&2^S`Eer*T%~2KWIq7bn9^NN==Z#_}OwCf7!*5Ux?U&;7 z4oWAI!LFlzlIf$263pGq*}o%4%{fJf**qkmAV*UD{oUmBSy-ycn)6wv%gy;dfx$V# zr3TOMpJv|PM|B{~y^MyxL)mg?l0$P3`q!2bT1|Q`S<8hJJ42EBc-3UBteKW_MaPPn z!L+>vaOrFq3^j}&DuLk0+MrnyXE~++b}R)V5OrXn`|H2{Ti0E8L=ele)#-F&Eg$~i z2OWQqm^tS?8gn+m zzw6!ac~=ybC`Om1Z0nh=lA9nYOY>5C=J;2B<uA1%w?&MuxAr>Z;2>@PWz6 zNdVnW+qnX4u_o7{zV^c(Q6X|{ql`u5J@0+rW$(X2qeO{yU5m;`KK${Ie2lF3(mFOJ z%90h!|Kv+wvLdbXPNEc^p>+DDGf#i#8HcB)s_Ck1`GKK^%)sH4K-0aS=a5-{7v zFrY?AG4_E)r%*>gbWB`;$)<%%enKgfvc%HF*;9ENP0*K&>6?sJGHjV2osCcOg$d=$ zlO*gWkSY^O?~9>`6!sZBN0_q=bU4w zoOd+4R77t$MvXC5<9y_5LxUh{CV5&&2&E*sY)By-0FqY8ixw|fxNym~9osg){OU2Q zRxknVG)hxn`{m3%+vx0QEG|E)0Rc>nm7%7@Y<4)My2enW2q?o@m~S$5Nu$mZI>?){ zcY!h-3)_lH`HnW4{7Cc2tS^%(jXhF$*zooUrvsg#iShZ*zwpAVn_n614mhS5V-;%< zC|4oVg{C8DUJfbVM)E~=Vx}~TtVEc-W8W_v)j^ilkg_JtHgmD6qAG$IfoS2eBWHVz zl?yJ35@j_FZAzJeT5w|P+F}6}4ONKNM&gK6RK&T0Ih~Ao6{k*N_{RSh0A?8#~_Ew(X6D^A|zX`ORbdUvO z>`o;3p6q%Ozm{#O8jsH~L3^}ewyHIRG~zq6@)RITv|!8>PQ`u4TB#NZ?(lXV0m_O< zaO%j#0FtN$sWP;dNF+MjoBfaf{68RZcJVxp<2s89sM z0St{qn5|`MswxXV&~l(?xtNvTfvov%qxMq5U>!qb+TkQDEG!5Ph!M=rsi-2l>8khS zlTSW$->p>@qQ*{Z@QI)Q{DFt=f9mO{UU=@ggZmD$<9QPcuKnmI&OiU+R@v^=>PP|2 z!tLh2#Uv&y6?eo@4Lx8ofrKQ!Xgqp>LPAPIK}qBzsnrt!Hqi|Pi1N%#O{&8Kh4W5{ z2m(%|ciV_fn>c0qwa!^)AlsOlZd4QfIm_AYuBDX%t1O#tx~9!XM8vswRxRtc^g3mz z5HuYt1c=Ke=cp+xQXx2{=&c%HXJzCuPN)GPNr^Pr9V=AK?5CJeIX`#lo4uywm*!L` zK{Z;x`IqU3^q2Zfuyt%4oJFQNyH|w1{|GW#z|A)Wz&2K*Y z>@)ig?2WbfmfP^wQ?I}NQ}284<)Nx zrFR5()m2wL`S|0HKK6JBb>V%x(;68Wp1)xJV5c)YIB0X2J;9eW(DpHQJMETAg!xp4 z0w=un#8s<5M$7W_vU1 z)~>tm)1TY6W$Ty!;xBvk^z+X?S5-5jU4oAxb}e}I^1#lZAT_274evrtAGCwzVPE8{rJ^a zUtng934e11mj%`wv+9dq{L}Az_uKzJVQ(6%S$18At+mg+-}lC<>YBQ`yQ+F7*%Qeo zDbZGBQLrRaLm~u01XHmj!$#x;aRSImti*O4$B6@2imk+sM9x4Yk2BvokKwl4QqHH!(G5f_|{A;BCi*g=~##CUw=QxoGo)*(Z4bTF%Ys_h;SO4}$vdA$8SG zVh_bPp%UhJR=y_excGf>^Tqvo^1$LWaq-#yC!3qj#b5oS>0pOVi#Bd8j%Ev?H$1Z0 zD?$a_Fo|B%0?Z4y3`NA5&m2H41jlK4q4xhw6ujq3O$xO<30Hr5KsH9!16&qG>?UKf z78Rj-Whw4ebMsO|nDFYrff>$g^h-6_I$mlyYMEN!aM=(E2vS9x7 z+~lOWyD=WQBD>3xFd3~NN@a=-VL!(f2#eGq)?zdkR`&w4V#UjJT>ZqsGOmYV9Ag>Q zyJMI>Ls@$yd%{S|@^Z7oGY46yCr1qky&4S_&Kfmr#Z{to$K9Er49to+q+cqG9>6H!54BRk8YO#~ZXY4~!cxlYwNsJZ zZ_VwAfB`+vaTJN35=u=vCKpjMfwuC-^y#^f31LAh$Pt1(>D;;VmoJ>Z@zz_fzxnF9 zvu8)MXed}Mwj^?4(vTf(Yp5ChYj5xbEF01R4q3$d=o#tyhp*2DVY z#~yzB?Hg~s{`$Eyhe>P5W&8q-8F(pCC|y zQZK#o%GIk^eNvr*6S%W1OWE&fP8tgl-FVg8VVS2z^LhY?v|#!|MJY2jGK%NXvobC0 zMAB8IO_ig1OSOo5TVH}SRm1$EwYZqqI>HPXGUo)U6=rlyQzar3>`-+b--`3q-v&s=-xk@w!e`SQyzYvR$}qhg?| ziX}sRG>bmhNgm`vi9#`XhEhGSyQbD@AQctb6Sdv=G_7|A0jRZm1gEMy%z%p8P%aQK zlT?CmuvXFp_X?W1M56`qtK`YpAw?s2y!^`Rzw_I_3ooB~{^LLY^Z(9|{P2&QIXsxX z_Zpq*O&Pgxmz(TlTW_CC<7m5Oj4EZ14%uP$7=ok)5aVUD$gt0#YIt8JldF(0k=x_r zp={rH>+Rq8-~N~P@4U0KJKVZ6z4YoU|KPv>2b<~W` z(aFZagY~MAQznBua<7|7DN}Oa$6~~;&t?j-!3BY8XO|J22!N+K8WkQzjsmP0yvB%X z(B*sLCX9?1Z%I<^h%$34BYPj!i$S#nPr5q{kspSpg$M~Qg>q*)(UJ^oLG?C#!XrUS zj*=B(Sq~p#2to<(+M|nN8tYT`Gfn$1a5NEB9MDBrN)IL5UQAoItIs9@-mPe2;s0lU zc%k)GNt3%~ph0N$ZytSF)l2woXvVB!zeJL?)1p2Y&CO_2I_1g8RZhrhnKkLHz`_5f?@S)wEwL3oh zXFmIV-}ilA`NJ=L?T@~8Qm3oeuRj0Wa}Qj*78m!5AN$cCd+I|U_Q@Z8?2*I0y+|~9 z=%K5B_m}?OojZ5$zyI>J>kk>>z{fxS{IC4Czw!rP{Ngm#r=NM|!%u$L#`2&1wZHoF zfAKG_)~hETeaulO=l6d4)BoK+{56*zfAsN;Ft@~l9a}@H)Tr@KeDc%#hx@J|iS2z> zl%*2@!ABo?{J;D=|MgeD{?#{LfAiAC3(r3Hv4jnU zc=B)j`JemQUH+e((n#f8>9J4Uatb80DoD82|0R z^zZ(}PyFQWYW?_=AKu&DnI^w@`O@F}`+xt7fAGaG{{H9Re*4|MgM*Jg_ssWx>U(z% z_7z5ogQcI>7Du0>NAsyz1l8I6$@Z~4+3gsG#i8bD&L#}Qw$+mB4lVM+v;mr#+flRS zFo?y$nIq_@occbd1?tvrwYXD1xVrbic85K_sthFkX>_cZLB2X2^RS>_Z^@m0Jz6Ojkv3NiBxdR5DoP{iqYQ_xJF%v3^x7osSipIGVYXmt83kmlsLscEt zYtdvj*nm<{Q3`}I#GuVo5wv-*Bt&OEMN~Bs)m?1!RJt#v?kUBdmqPy&qmmVzjyvl9f zj<4oJjnl6-cPw*aGYM(lSAAb3a>qEuffAfK+<*Am!>_#Z+M92_b@%4o?Pj|wt3twQ z!Lt(;oHY~3qjBFoP$h}ReILWOg}e&@N%=xl1kEW?PL*PEu~sjua`ED&idFfzhAHX;a0W-F#i%Dmf;^+qHX%#l_s=m1Zpp?{B&1fdV2k3ewGsKeQ%hPoh ze5#tNs$dr0#C(U$C%kqA&dg=$}k`8NQp zRU8C&VnBhWAnd0q%7E%ZX^&Y^D-Dx@8t7gHS}Bu!DE!J-zqH<6|H6Ox3qSQ!pS$|t z17jJcTBkaN*CJ|MTe@yVw@_PM|C zmo8m-piY_Io}{1T5DEV+kRwLRP838X6oO?fPMU`<$OxuI-FV>C(RCFup9$y$3IUhj zy)#kuU{xZOskYE{2{(KKh9Eu#NOP(R1STN5u4j@?f|5QFL)e{>J|9iZ6alw9=>Y;% z5mc3p^y(s5zzM2Kdin;zT2kDJTJ(pf8A%jv11PAdHppSKCSZo$30YI@!FV4?QK5Py z#zQ=+Q40s9fO~HJNEJwGdW020A&~S8q~|GSn&?gVM1F$Lh^?gvXhv(Z%q?Ogf-@nr z1jpjgF=6m_#@p)%WVa<2M89IRek={omeWeJf14r<*Swd*2yht)Cp0v1Sets9Lx!`z zI4f71t?gO5rj^{ZuKIs+;LSKukH@jwiGSSB2j6YtgmCv#?CGbU>90!~1}nw(_V=Io z&__P>;inMUBnF3`c=AI_g|J?aL$UMg3!nb}f93oB)c2>K6oCYx5T)SJM;?Ckk%zkw zbms`2zwf?Jf8U?9NF|IGoQ~Cc_4ISkKKrqcX6pfIQ|m`Q{M7JNrZya|HZHW`X7Gz%M$Ou_P|g4#E;L@y$DT25?|y@41+y<{rV#hKa9oR zK7Z-_5B=~DmsTWFtJ7$rh{0GHB-1pMM;?9T(MKLp6tU1c=i?5>fu#UDyXz-E^r6Ah zv~uCvBi9~%?2*_b4wR`p`}8wJ?(lJExNzZoVe;xrQO2XvEX`ccV7~wyxOnl>kAC*g zG;-rS9iRNvCr*{Q37NME-GAxwl^^;MB=nZX9Sv|`Vtyvm)D{+O6aBSdpr2u7EuUetgbk(oR^ zSIZpbl1P6{a4c`6q$%UW01#OW5?15R*~0@XJbSqB(`Fc0mG+7NIvujXJQ4k9``NdV z2_i)l&m{G*{}{e5WhgD@n9Xm?(6SduEKz=!?gEj!2FRMIVD3pAB>ew85Hw;VtV@6$ z9^?Qd2vcTA#xNrp5OhrmKv{%bA})yvnFYlT0JB9iYI6=Ihc1c{W5q-p9a{D#ua?g=p3O~i%p^3Mg$jo$T=pos` z%sN#wJ9F;*#VhxJ@e5zLdGqdiTuG>r`5DbC0lCvG1dz2`^_U~O1IUclq>uGh2_V>sPP7{`$+Wy!MLG&Rx7n1|pQ#hx(o8pM}h2lV*t=#GFko zn0X}AVsZ^7&@nJ4jwL#@hw;t`#S1VgsL8rBA1A(Z)P+AUG}ijq<4!VK6@tqCS9D)apdxLUVF=iRA-+b@g*I#>My&g7O zFJ?sbt>1X>#(HL0 zxqRuNmtTDO)z@Bg$IjvY#O-$4avYkPNjq+yxUeb+T1GL=iVHsZXdFf>g>=CuVT(cV zs_ll(DWdwh7c&_-yn1VtI2&Ej@bB%nUjMD%_+MXn{ncW&yIybH_72x)&)@gx`THMz`0-DE&-Xn2 z+;i6+ef03`p}d@Ir(j*oj-60l!hQrj5h}TJFadB_Q4mD}OuGCapfk3nZc$!TJ!UdI zNjezN3Xi6VhJ(YAP^DU6ObXW%#ms9uh!N0kw93hs6rp%YSqk6XW&u$Tm<>*fRWj5) zY86Up9pjDFRZ??>Dv-fka#wMBQRL28m50T}n22f&3#kC54k5WrSpfu+qIym^)5H%@ zEtN!6u7rCP=tgw-mVoAL6F_Uy=9ad3q!xIy*BprQ69fXAIa?t#Q^sdOevW7sE<_U2 zAoW4U%q%LS%pswy0^0y(y9 za?}I{Dl6eb<+P75A2QfSviE)fQhyIfXIiPPBU}^rt_&uYR%ql_2Uz2To{U&FMi8BZ zHJm=p^`@E|_!U-vH-JN=^o43(UNbPWp0jxseY507R%C>sohn7zTT{w$&6f9Q=`aWI zH_BlJ?lz2>;XyRG@CCw?zA1Xbl-hbMzlA(iImp}|?Lx~l*TIPS+i{8JQ?_+%&;^=b*n(u; ztqxih2gxF%_ir!_Fm-8|&)f3}T4ZUyH@kVy_Ar@0l%rqDolJ9>pVu3dKuDSboX(a7 z-5XDhPcC3;9UeLyz1S&Y;pUpiF{a#@ggnaXvaa;wYo5VxGW+KgE0qxZ zPyOHze(d>=kEFzlmo8NIF_Jx7Cb@O(KNzZ938RIWb2CelG^VPx?Al|7>fTRID(ygu z;~W=eS4@C4z=5bg4$;8uV^9))&v~>oON>x4L_9W{S!Z-Z7_55h;lNB@pwSAvw)M*S z5lIZl6oL#AgzgZHy@P&auy0TFrT>w@$(xONL%iQE# z;|NcYpE;6);!Jg23WOp)W}|ZOC#8Ii%=2*(^bVGF8AG9&!P#r%{dq2GKKc z65d8I%!3(MN3-x{nT<~O{H>%0x0VbOf+bMSiU4?2g#vn!*P}Zp$H$ui7{~SA!QTD$ zz{59he*J~7z5mXQLKY5`YMn|c09%-9sTC6}yGI)}xum6xQmPQP+LX3~VrMmwDYAYm z>C^W3WOH(IT)k3Lz?YI#B-CDLfIR52#XJ!cW&tqGc6auN)y_Nbz4yg0{eCIs=+4o& zvkE+@ZntO8o;`PXW*7z)Rj*;axWX6`fJpOE0tTE)P@W29P-PW%hT+16E1!IJZ@ss_ zx87T=$A|8}@aFaFue|)~(Pl&WG`XZ&J*tu;o7>%^yh%`i#E5dGW_yJ^nW|5lX?wD* zo2~Ed!cCR6O55skgS<}RRl2OS6k%9Y^oQ7tvSegIuLRQFy_9e)=p}N?X~OAd*X=; zm+wDVuY)UYvxV15pjiac5xi`Xy5SiElc`h{Gp8A&7C)#PECEA!G=`7*^9pAY*TGP; zX=bE^2s8%^eX85-)(ZD`Mu(eF1sO_(mlAE=s#8$5W;07r*cinXtf3buKtrrxQ^5&G zlIAEDNDV4Q6c#t2l%{;m9dZ8yoA&_V{MUS^Z4{ogK5`%CJ!^*tXFn_(WJWpUBvPqX7gJDxV~<9hULmVmV2 ztm&*%c4J%3?%j05e-0teS8hHEQdKX99YQ5nJ4#I3)(64n=_1gCpz}fUL#pH!P8h6r z$$j_z_kQcQe)9{T|Ki^64$Yo<>Y2~|*`Kz;+VzlKqK~P7JL*ug;nPOtXHKG%|5Wc9pXH) z6%6=KCzk*KAOJ~3K~xK!btF};T5vlrA(AXs=C$fzKzrr%Hf(lSimbM-^Dd8FN+x>yt_?dV1yrTJs^kTHD;6^9;Mt{L z+V5dFTJ$4{^dxv)%tBD^tC5B&b_XP~Nc0G@r*N`_-8<-1p<+y*V1ZsRRRLADgaY-e?jvl%VxKBo+SjO!Y9CMW8aBt_};DPi^!P@we zz3(TZJSrj`Ir$9p#^D7CUKr`!_oV=<0VKo`ZB^-^2_zvx(gdR#-9nGgy$g&~6-z7_ z5_mu{Mh`NRJW>^yiY>1T&q_QR6nO@1-6PF8rZpovn(dY-Ni38gDS7x>Pl!}xI3Ogm41)v3la0v@8Nuo4C`f!rvnuYo_g)#6vWDuCC=b6{{!%w8 zX6x>hD4+mrw%cJTNY*;-j3cC5ckXPa%`grmo#Kl;>ZYLjPJL{c?uU~)Ro8S1xH($7O=Vsk( zX~9v7J|F04ycA^|3@SBi54s4PRAHJFL36lG6UNa@3~~e^o1f1HfHLBq0X3!loBAsX z{%MAX*2T(@s`siKgPZtS7qdHCqW0%T5)P@GI+E zbGKf9{pPJ(@7;L+=-hcLh0J||)gIaY_Mys-zi}c!@4XX|-bXS2?H5p2bxj^y5!{_|p9k9G*Q`4HhYEC)+Kf=_DDI%fagz z;8i!>;{KGXX-EexlgHe>anqrN?Uhk52LXpirdd!D(qgyf9=Cx@R$N*Jo~!m z=cSUyu6m+m2uQZLR3K5YeJeDi2OaDzk$uzp<^j1+)O$?K_K=BWnBef{-8bJMt=QV= zBoXNCLSVPH0myuKQHHErGa$@@(9)4Op%&vrvrz#`p!R#ucViFk5AsO*Zk)+fm?P!|NL^q@w;~=d)jr$ zt1hg8c7+~=U*v;FifY%lIiT2$j)=RbrIP4&0&#Ioj|$AgGv|K#bARr_x!)XDtEZlM z<|qHPpM3V&XRFjq>PVP`_4X~XEySkwGpp5v=tHXHviiWpf5$m)&K{FEA!F|utcm67 z(T)5wMN>;0ZxvQK{{XmT80s3fFK5CX8G--6>S$^113))Sm-9TMEBp>mn(sBcFE((F z4r;O8d8g*ObqCv!Zy zX5(=&59yTZo=M2DHO{r!o$bHe<3=ssNP)R9jC|_eo|@I4`J%r2~=597O0>?_vIp6 z51%BfT#m<#L687OIdX;z3oro!9IE0fsZj#C&OjqH3JjJFfI@w@=T#Tjc~n5at7B+jRbg1hgcLoa z!X^#wpg3C*Jy5@XJBUH(5w@(cA$X=5N6clik%}w<7d`ZBUzY1Xq|wE@T03t`n-&Je1>ydK^{GP2>bsfBxjRUE$9UuGl@4)?A<{O})r{TuJT^Uj;!{?-?M z{|oEgaXb0`?rN&~*0sPP8@WMB5-@5t6x86E;{z62)%1|hp!CO-6R412;l}u}mZg*y?Qx&Bu zH&?xR^s0QmK2~AMv*o9z@YvgKZ|MVJJ64^5@Byvz~C^t1`>nU%f9Jh#yzq@%ci$U~b<#K% zISXxAj{!9fqh+&(1oz~%vT7W;IoiDX)|)3At;V%+MX(xFjDwNI%4i%)wA5>Y5~Auh z>a;N^Qd8-M3M&xZioCE$)r}6H29-)Of{|h{!VCt%Wd%t$5$ymXoKveTq!|UMCKTVI zrJ%H(bo*!$xVIXr5I|7MjdYX)Yz{aWRoP@Lc!y0Mcu@^jl2Fmk3-_J>_x^+bh{JI1 zzWa6#_k9bOCa>G0TG(P!s8oR}gosc(swJ}JaGC{CI!G3Uxlp}Z;T>8vgV$hPaU&3@ ztI~~kc!uX4CHPWG;1rva36(p0wjKw05ed1xm?i#G#^^Q=!fUmRZqv&E7kv`Vur&@=R>&!_im(qBF>j=!nXybIpwz5>Ac6y#Brh~W zJ<@NR^~Xl%7s4=TXxe=_ABX0>hpj>M50{oDa<`v(cFZ*2YOsLXQ&6T5;~o|iKX>FPjvs8eG8?i*ht%%}4F)uLL>^k!d$cG>=U;R82IbN`eh!>;`n&rQrV!KW|ZLdt;z zX7pyY8h`fZ{=&ccQ$IZp!|wjhIE;Nw`t1{-N1OTP#q@`m(c%yX@!?Z$>T(tqrqObo zefJ58tjwMx*c$kFhN4>_adu#v1>by2v<|>P-yAkYhlbSJ>DUkNg6_) z`YSCUcKdZ+_%4iMc$dBk_``WR{B|A)6Tf= zRpcEuU*az9qM>1wik^(xQ?&+4fKE=fUUC2BD^EZD%&V`xVnwgN@ft@n8&*5x=FZ8< zwB6g^KRkP8H4ZIt0V#xY7bWZxB3BIrRu|MQ3xNxX*knN_8xCcdw%FE*wG`pP>uZbULIk)>^BR)*r9shs1^8m{ej%VNV|fVL-9fZT^+0JJ$edjHN5 zyrQV6r2Gjp(5y+o?!~Ji)lHnKk2)$(1w@8dm;jM#GE35U_VD<_&M`AoRt1!ZGT83^ z-tOM6D#q1VHEpJ87=|;4hx@w+x88g2g>QZnD(k)V=45hJ78VqvMarTBB{r?Gm<0=o zh+1nT;M5vf$e5-np!Ka+L%Q{J+xiwzFveG}W&vw(^6FLKRKTM-Md;Z@hi??t8Dla>Rk#&DOmF9I#&Pj1EwB zy|Y8uW_z;USqZGuR*B^=1uRM5Zh?aTAVHnG}hH)sR3@}A#9%hCpP3{WD zeG-ZYxd)FbgBYRKZIY69MTvo&n$=T1>d`H8l;spEt%P4MKsJ~h(cqw4i^{BG+f38# z;|at#3@v#g_JRQ@0$Z1DMd5n|K`U{v05cJF0+3nvUNivQ+q<;C7wG2pxK33tGfx9D zl8WFVcwtCp`yiNi#GO2v&PSgx6Dq1XAVh_OWgs&c>Dao25b#=~tS4YPWSx|V?5O6F zSa@=D;;Oq`k5+tw%#DVvb5%$=yt*RqNkED6hD(cISEC{?P+3{mt&FMu0C6`JU(a1e5fY`{`c4Iruwa7002Mtd9{ zuueREVG?D;y9-M$!VdXwkEAJ%Q4}L34@{(+hdRg-|4>gRiXLHc?}lnrqO^YR3dNpY z4i&F=yE(2sr#DIAfGCW-gdAF;V>>$`J0*w{(CPXt)Ub!(;A~pOz}37JFtegXKn_iS zgA+THk;*IcuT!U{&ttQHJ1Yb9fi=glyIyD}*sRjHxI?jI6I{OgU4D4aFL_4q{X$yP z?V>#{*@EP4UFKDozuO1gO@n}3!-y9fY|&Q?X?$@J|8EW`*{EyVt^=A?)hy!NjlejT z)wp|ju)B1KaL;t8smx4eYg4hg|tK))}gdI5mB@G$}!y2dtebpUwZfb z;ZC2PzUV#w{?w!`{`#(m?(`e&p0OhL?9P~swq$*x`djI6#d+|svxY4Bacf4f=EzQ; zXe|xTykM_hQ1>?yxzVY)X;NVM*uT1jr!8kcDXA_(cx_M1PgH{TGVC>2Cq)i zE7J3CQxeIc`Fg`1S?JL&*FmFM?ozZ0L3ji4tJe9fA+pJXZQCGyn3c}&7liHmc|d%Ro>jP zOg)IbL`_=BqQU^1KxDsA&NcN((xw<6eCW!jKlMGYyz;U|R>a0@RT&7VRv$|-W35%H z)u}pFuN5{xKCaBLoi=8aOtn_mu--W=!`{x$rE?c)MeZnyPQ5Lar5ONho5sE?>F)$xnRx%{Q;s&2;DZ z_U)tht9xN7Whhpx6iH?_41)@$Nuo*#RxYg8gV!3gmYbMCY++Hx57_I6jRwXwJy^0AB{Hru+p z8ZTYGZ#Ap{Lp93CL8FyogB6-5oMnk~h5~0Wl9Q^4I`fc+s2~fO+55rF=p?rApdcsU zH7217j5a8Nhh|!F%hrj2MdSthEFDDLJ(=zt*THO6N)XUP*{j^FM*|xFaP=_Z;f=%7 zv-TY3j;QaKiun|c39|4&$@Ao*S(%esVQ@qE@Pxrl7LjfNaxXx26hyLI7`~PP_B>Ty z5w!SiCxM83cbOBgI*A&*c$g}|Rl_Qj+b7fH*gvqLL`W6{NC;E<#BW6gL(Z#HfeQyMOm)%7_F8PT;j1+ot1C!%5}s@&u)-pf7&AcI zQ`;C@$FdS9VWb%^h&;o1Jx!z*_SGCC&CztDT3u6zQ5EJ-*!gOtbOvO7ex%lUc;{%r z5C&~cuqa#V{WLO!*_d&-oR;orb2FN|j`XkEW@|reBEM_8g&Wo6|MKtdfaC)wLegB~ zh1c;NT#9>KhItGh_$~kFmsATT|=F=R^ z*LQga36S?(gytcs7n!zC_3Bijwd%>GY1?UjXfAIg&rle;CSt?>(n84(_nGKMR1bU3 z4?U+Ru=#7ueSXSJYZD!2br$cUK>#fYq1j+8CwGF(T;E3!dd0Y-AM=vT|;!JUCyTh4GXW%`O zEmyb?gY7KEfW3jImVY9pZZd8r5x0PF;Tn%5#Yo9Px<>3bv53J2h7ivk4QcY!Aj`vY zB?!ub4qs769*!1UhFHKw?Z759iBKX7ZAZdmb$YHsgbE|bJkKxEaSsh;>2-C%PSVqz z3lQ0Y^enS^WYHKVx3gtzIgHkbImdO35spLnltw71bd8eFkwtcTuP9?>LV?knC``s) zp`JoV+0HBXYVVU-U?8~Sjs?R z7|P|n3l}b)o3_(tyZP4JH*Vf||GqPahiA_Y>tT1bvtF&I>P|0t#^Q?VFrgqY$`R7V zS7MOiTg@qQnAHWcP=~6TU@T*iqm=R7xwB6_^X%2@*XaVy3b)%j3}(f)ClgU8pYGl{ znYLBZcA7RPCjfT$cMouOWCTLx$hwW(IPqliZDEs#BfnuqvCAx~bF7YM83FN5@7^)pz%HSc<#G zV#7Fw7<0*3Rzo4py-x0CX0(XimQwb1c8B%gCKH_Q@B*VssMlEjkfHK)wOu|816;T7 z+`a>p#&KA=*I{>{kHcU-Xiy0pv+wRaV+s9u1rYXcN>a8)#!*> zAw>B=BvwUPI8dk>-eAaInJcNDXu(w4?8$&ml5fS}4oJr*)5*3DgAMEAf-@?4R4fw! zHS^876~iR6=*4Rph;@(^ZUxYQ$QrjIs?;>;LI+h4)}ZN7xt6XwY7}x?EiiY;tax&` zH?0y4;Vtf%76OrtTe8+2$$A946hFM8d3coc#q#aizhHwR2J7TJnc&1-@MYJ{`h@WoP4cZJ&$2Nt^aRHphu z4LA1^O{K-19DvoZa%W@w)HiX@i#p}Lwab$CeoeFWj}|{Vb*)qG(Bf;I9H;#$vNc3& z&(J2MXLGBe~L76QYi2{waZNm>v zoBF>&&%o?=7i_8y6hTDs#FTPuvG8H>VX;H8nCY(d$uRIl^-OuT!@O7~E`C=FWn{nH zu8)-$GhD-H=a zu>j75b8BQDLWtK9Ft;Xfh)o(Lsu@Sn1ZF*a|2!Cd?+0YNvjS8KGEr6Wc}4$J#pX6m z;z*B1L?h(^_Cpm}C!hV#TeH}zP7xiHJP7=HD-Lla0k*U$2P#n-#%O4{G|?|N7s&=G zYq8sX7xM#vqEEmW)&V(0nxYi*HZ)W(KOgfZ8**JR1tJNxOho~}N+fZ!q&FgQx`Lgi9`HL6#_x8foWrK-Pi_$|t{b`|dP->*VC-1Rus> zsKc9Yz4gHQfh$+;-`U+M1{;gP01KY0u?#7N>0wK@UT6r&JhyCf7Mf$)^j6b~XtM}_ z3KpfN(WxX*wpOtMBDgV85%c2&DN|$vMI(Til%bSTxU=3pdw4k23OKDKq%?aNTKnVx z03ZNKL_t(J!SPtDG?$MdtD4{D#DTV@h^fwoY#$E>V(#yjsH9h}`cy0c-iv-^j4HzzxL>n9(1;^52~H!p(~m9V?>9AuSQa5WiN zI1a4uqC3aacA9qA!&vAh zi;8&%N)~>_=_MlhyNRyJ(fB>nbR!aY?QWcb$pO*QZWHBSm_KY;CWhFtk@IYbG7{E| zyc>%MnVYBkU$b65O!BB&%8-Fa*+wfp%H$TPSH}m1Esr-_($DM-f-3=VmcTJUh&Dkh zxq~|AB0c$msZPcw<HY{ZX%d`h@lws5~ZRhn|Gu?6aEd6Q7TO2;=%~yiu?>XKQ9>qF7yz zwq!v&M6?DwLhBMDI!H^%JpeqQ709RHHESx>t!){!==);FHrssR9W;k#>Gjys7vTKX zGQ`*hr9i5mmQh!mV@3Nvqp>`(*n^U-|Nl8*dlm?%v*&2d-SbdTn=Sr53N)y5GHX z=WAd8+IBlV{^;YEE}ci?;mTpE4QX+UG*W3HFyraB?z90&st+zapcr@?W#$^QueK1F zWaC`|I0s+5*y$^;NMM?got(XPJwY{7Fsin-?v$j7R*ww!l{&Sg_wJbQ{%5neI3KR= z>gE&0Ic#=Klh>KZ+;)G<)aZ-Oc_7`6%NwdqWPdd<<*3c+TR=Fq0fm;95LQi-I2r3& zY<_DWUf8sYYb_^(r+;mGeYsUX_%n;0h4AXv@0U}1qko3&MYa7D1;jD6QF|08-w|mW*5QmO2x*NHDx+u0e7!Kz zGwh3*AhOFjCgLPym^qAmSoE8qd-R8IM}S$6%fPg$0e42Fr{^_Wj6o z4#QGvDcWtD##2`XPc6_=?!%k)mgb{W52+0U`?s9z{<<>Z4lOB7%9O*lBB5Wha7}Hk zfS~zvpRbRmS{UAw$vb?GOnxC4k@E0v0wpf#Fbhgbsgz4;Z%YC72eGXL3Jxm{M|jJz zciPF0M9Nc}tNX7BZl>aow^cRE{Gc5o7%Vv6vZkWoKfup`PZ!tEgVN?lXyOGh!oA@P z6r3E<1X1=bn9phU8bYn@x!hQ?1Vr#m)(a7lfp7{^l^NsuRvI~W=!zz(Iw;v~m0ak! zPI%ug^sX<=O2g*qpj82e6weG+vIWY0DX3xoXT0|jCL`OulOzB*7WlvtV zybD$l+-|lnzw*le^LzjI?b~;*UA?xmyEop!(eZTi_B)$xT@B^r?%i8=Zx3s`e);Ns zXYQNi7W5d){i+-S(p;~l3`R49YBjIgoNNe|v2bNZOZWt{X-UYK0Z>V z_2l-gz16-C7}u*y7q9qb-<%x#IE-ZongO{BLAX$Ao$9t~JE34$uZD4mWQ5oar4TLU zs>f)=R(Pn^ESS&)jR2f97tGB)V`xP#gB4VlyfUIsRVNn#Tk zj<=Ik4-ZzbQUdg`U>*q2wE~4Ci%Uj>R~bsw=u;6Klw5KdN@$EYqpng}SzE7tC>A)Vkmw~zkcFMR&RZ@%#4;~#qV`Hyl{f(&8C0pmJs(eJheQnpaB&6Jy^ zSq15KwcGSLXjcs2?bK?p-zp4lqShB){O0d{{`Vff{>Udk@ktIg_AYmEy+3X>@m+Vz z>9^I-aNoF0WrS7^k9NkwNo;m6uqb_Q8myg#`OnU1v4H7vDB%OBxq;pEWDBx4(5z)c zj}^@v)GsZT;*bVmJsMYPL-!e^8+aW7eBfP!pS?TgnD zLyOpY1W;NWFgkI!=ga#Acpg#C8Jr;vD!IC-u%lFkgGCp&TqH}w+OH}~Fl|TzhM+{?5jR?{r!Nd}|?acD8*1SE!F9JBF`XXA_ ziy(SQYCVG-*2bAgb$5n?J>K)~Y_A86wmZ#yLNw+EqEQvS26GSqMp<33x`(DtkFhY9 zBMRn~#u|GuXF=8|gkXpkZ5F&a4L@S)YY`lld^+7J7EAB~Fd{g~CL7mjS@KZU&(jq3 zqHSMg16vX(Q5q1nplo^^7@}G1|Hs*z$J?4#<$=#y@AvI}&bjBFJJhY|QWNt~RX_o1 z+YF{q1jfhqa!y*0a{i(tO_R!21UqBnpxM zA{43sC8AbtT1U!;(3?8>gC+A{ARb+3Zd^tnS~w0MJSY-4N&vGu7MJo1lt2z1r6g%$ z&;T&>(m$n%s^%AqsBWakOyta}D9TOVEdMZJ!Uh!&qcRaxa$|g9#ST!%US2?&St)3+ zTCIA|J`m!-nb{>KGD$KyCAD57)g=fR%euG#Mr%y$*k-D|*c!n)G1%ig!7w1Sc;5p< zJ=k4b+&O>o;>B9)T(P~oV|5r)KcOYn4IT%Z>W#XnY*RPRs3WxK z)c}EdNyO+HSYfr+3aiG&upE}l#bUX!frAB)9bezuTOK<)D}6uHa&c#8?_lrZ-o<4d z$~+tau}qL6l{75^gK1BzQ7F}0?s>Bq-<7Vv#HyHzhCaM%uFacpa*>%0P&Z0Y^Z01qW&BA&sXWfIto2Nh;(B8PM7E^rj(L^BOr z!rw*a>PH;OWgFwEM=O?Tr(lA~n7;Ihn|!LQ!^HIT1w@*{X#9<@)RDknV6|WRl9hk{ zYYzPj-;~L3a>)U1__F;-jh^-P5To$q?rFTLsZ`_G&? zvbHhnwCl^Po2|{)76%sLHWjTnd-mMLbLZCP^NZ)t9qcdqz7Hj3s6r7_6mzBQ3Ku3Y zL9sgg;UB*3wXgfJ2OoU!JO7Wr`_x-*KGH+goY0Ck#sQK76JlcF`UAO$)NEcziPU|D zVr;v`#r^lM2JmgI>PM? zZGxJ~_Snnh(y1H&CNiounvs`1QVyBJGW{^dD&qH(;PwQ*N#e`#8Yx+P@F$mGBHMO7 zTUl@8^G@%Hp#pN_tRBG0L7a@1G-Ng%Dgw>%81tE*yT4;)4&Z{x-%Rr-hShgI68X_l zL^tBdJhK~{5KNzYys1m);P5NGFcaYsZ?`}{;D&cDa!i{ghLbX?#{k8H$t_isBku-) zC?uLtQy$aHcflt*lR$<{11 z1Qbz-jpqr%8v*rF*-0^QbR_w-k%td>g1&l7cB*KFcVbCQ8=6qE5RK2ZH+yp@iC;ID zNBEK5NYOr2mxq1Bh>uxxC;uKV>4Nh~fbzm18TT_=Oi#F}p=2FeiWh4|F%Y6wKpnE(MRSyd2wY_LOZ?U@1*Oox!?cw9(S@7WR496SXCpiI2u!=~}5B5jdI zr&hM4qewZ*21`v2xaqG~oH%*ywb!U&wpJc~WP4DVudj)a%Ry$dt@T;o_tokQ{X|uS zkDxu6|ECafwsmv1#A<)^v2R^yA`F<&*y63e(%({uSkMDAep~z{!R6ocD{8evKWT_qOCnkym%l&nyt zRcFx_K;2OuN&fC`3Ii9y0*UhRaYQHP?%wE+A`oU~Gs++WYVMF(CREzw-jFTqL=Jl z++AN^`|E%G>u2*K;_M=I3!laTORv&mkZM+R5K+irb-4SJpFDH_{aSRfzqDoLu+TD7 zpweI}1==3S*O1U?C2Ihv15@{H$FtLxMDN%UCEfl2M6}vKO6QsUX`r@ItA?U6cn7w8 z=O6#k9UuA-2Htny{neJ533eeuGCX|Gu>`{T2_sliMYugcQ`aJwYHzx&?AjHJ6kjmunDm=U<)3uhDidmc}G#S5n=)1D=&(zj$G2bSg zrU&HB#mlB=3Tu(=abjo;N<@S6Y^51$(^t?0O<{~C0cq~7JbqZ?mwT}B=;k8`Q%4Im z>F%R_6D3SYhLGwhvS%&qQntDPZhu?A_2>XB7XBVW3}$2( z!|TSQ8O1!Vn=@MS3luYx;uwJ*T6I1dP2fCA2`ko@$4GXgGX&!ivc(e#di?@8vAW$q zvM+4v_uyQ_I5%TBjD+^Q(KIgk=LFG3rioB!;m66$z8uoQi$aS5QW{PmhKM|SUK8m& z2VtdoA7FR_o+8K&7I3E}H@QhrMt z(DY-51)Svi@iqNp0*z8iCNOHJKpM#|Ors)tiX$e;65(bRYN#)-A0(%)JlV~jzBZqi zzEsvu70RVmHR-#Vj6f}8@6H%Z4^KuZQnIAf(M&(}6KjsUR^y?ydwy%!SK?{4%aNXj0dLA3S^li6VI zaUW%AC!IQNbIQcYQa&*rgKMq7;^`&_x09ukOpiB+7UB?#BrAdn^&M`4(s!p%U%R%k zZi`_MUUl_B*L4TOP%FD4kKfy$&(^NL<{D90tzCh$2s1q?R4D~s-8t+v^{JtH(Q)|k zqA1OwEduY%2S7whQL?DYiQ^}pb<1tTa$#c2VF^)H>7?7(+}OFe+jr$!D9kpG94WJY z;7~N0Xcy^#Fx(*!dPlNq(0*QPPTzmu$3J@ipWmfNkDMqoIWm{I=v)!?D-tR= zL**19xc_rlJ_GY>!V>CbR)Z}X-b zH?~gB=Idq_&EY%=y^;$=C4mAjWkZS#;Ic}QYSrt+i4|HE3ihF0>dX?A#bHKMI)SS| z3e-Jt1fpu6g#V1fN(!N54G?g!tUJ3)R9j!`ARf7nbv%JP5m@x1c|#P=^@XR|-@`>! z7L;p-JiPUK*x}~X`z9yD@NYI4Frb22RGyrC>?>Z)v$rq;Fi(UsgqrluyU1jDi@OnZ zFRM44Cs-B-l}lTn&DYm@ug&UA04_v&sUTp|6__ebSVGKerHCkl^(Vm6*oi6|eVBek ztx&*y-NhUHvRJ9n7*?|SsZ=j5V}#PYC#s@|(COy`t8>HQ{0@>99Dbn`g~8YZwet{2 z$R`yVy}@eCqrnT?MC^MS`qJczBfaKu;)bMS7hbLwF;^~eyyAmz8xKYc($gMK7hD*4 z8ae^g6opJGW=6zY{g4b@!J1$n31hCjJiL+TL4-F+lIdCuJ3drQ>ti2|R^jNmhBuo8 zjYc(77+5Q!LM28VwraBY6(+GP*QyhIKBDnVu|>yZ`8! z-(LRmwfXw-lSc|qw zPkw6O3n&G;to6}H&z*hr(W3ge>#p0|*}m(OcT@1RCqMbbi4!8av%UDjeV>2-d*5^Z z;`t}s^rYuJ=Xuv$eF{q}eP@B;aqj~Ue(a-n{`u!WJ1mEjC$6~hiBEje6Q6SBiDMA# z?eE`l=N*6gr|%?(`E0(kyYt~YKQs&nPkr*!#w5A494}cPms=i(X6~`xU0p>hA36q` zE{R;=O{X*8%w@5?N%N0my)|k5um2MZ)7sz zkxi<-!&_2g9Eu5B_GTL&KQLP0MB03y7R>}qMm)f`gAYXFiq_-MOB(x<@$t#6E-h+A zsfdMW;&y&)Jx@I#iPl^U6j;nl%8cN%=Q{JQ1Q38)T$%(O!;g0Z7Z#}!9<25C7)4nn z88r=VO~iUst|TS`ZpBXY`<%SV2<+sye3?f7$0kYAIp$x9r~*SgiePX|8{7^-U z784RET0AbuxM_>h9c*saRY{(=*?fde)Hq0Uv7v5lq~SV|F(7E3fT3!}Y9>-dwD0xA ziDOo)n_CJ`371*vQ3A}FSBM0N@O>r5$@`glLRuY=cKo4da188c$es~EI$V%O$>j0b zWNh14O)-MvNve6F(5sVhzqaIq5SYm)CLvT5B=U8}(dO3C+1kuZ7Q=y1);HFM#jrRS z`gzx>s&;E@Yiz`Z3>gVTS~^JjkRrN5zhLpT5gQ-U#+0aHD$pY8JrlJkfW>m5QjTtI ziegyQg)QduStkWvQE*F8>sr4KFTn}AGSXnVKqy|DJ&^`gdMOlTcT!J2{z-dhA3b~j z=kEV6cMOZ==IPUGC$^+)_@MZ$8X_q;nvR?2`l1d-E@4%MrAJEZ!j=_-EKAYI$0@R0 z3=j?n%jIHm@qshj_uRX9&yjiVRhyxC4b|q)2Q%Zx8|#UGCMLy``$I z&xFci45mmfa!Y@;FFSMR%ve9jJoXvQBVaV81jF4FK&P=C-C++HI?q5?cmtHiT5GZP z+&!K_4WU>Nkq|{uqF`O5tC+zA+H5C_Vt0V2(mTben%Bfr6|zV<7=~)tm`hhWB}qj! zRlp126i*VXT1}*gC+>F;feC7eL0|h?)c*?Sg+WZc(nJbupc+L{y`fwIjnYw~9j0qa zjplL!fmk&`6v>XJFp|+_6a^|Nz1AW8NHFOPr6Bt2rjUXl9O{zIY?|m8fuO_ZsH!3( zLJtk#0>8@beVchQ5b03ZNKL_t&z3OwEr zg3@<(TvbMt%%&9`U#1_yg`lMP9s4l3;V>fh#6BRY5*S}pltsg{T%9eGj{Qa_iKRJ8 z`ca#OE*zEeiaMCSMss15@BnJ_Y&_PNdFlJj`Q0oLO#U1%B`e<+PVXY`wjJ5728;@c zX(34rX;Y8mwK+LEGX^RFb2|kLcii!zfANd|;(hOZ@Aml%d;5#M#opsiKkjS)mlyn< zzxUmzt~ho6+=X9$(=Wd5ZNEDVR{GgP51sju*M9#MSDbqN8-C*XU-A6qpdu(rRCdC* z{PtUZ{`T98=nKE$MSuSve6MQ%v5$V_wLkpoy^H%__ktIG#q*#4^Z)$+df%NNJlI>z z*Vn)1YrghJe&ollzUt&74?p^v*Z$B)K71!i*B89=9e?+TkK@7)^o%qVX@;|-m`@jF{tFA1{qUE=L<2QflO}}`>sZ-zn%2)n} zU;TIQdEa~1H`c%B`+ndXU-V5Ew|9Q#r+@ODfBep~kDfKwQpycCJ>hTujc@(dzxi@! zQw{^({?2#&v!DOj&wl#TbyyM@mUXr^yY<%FUj3R^-~9AjKKGf=z40IY)SVxF|NdfN za~1O2D#oM2dTvO^P^=Dp^TQ<}}0?4h5Os)#}+N{D8~8 zMpvO9PPea_?9WkP!!cA0Oi?TRt0sv9+7?@R?kFXI!mxh!bBwu_htN;(QQ^e0UNf z*(j_K68YQV!p`8TyBOPyNGsegk<{i-k>e8?gal*&MYP0%_L5_HpAIJAiLB=N=Z%^e z_o?2n2o+FK*N;)V!{HPlUXCF~)hTwtNEpvA=B?gq9?!@@sy<{DK=!388T|K{7t*Tt zd2}~}*VECgrzFuMkChp2gXfu>wfjs8PoV_eDmGTQ>eSOh35nxld`gld+PY1OcX~a- zRvC-eQi8JW>#C@?BywB<2s0DW@viSf2BkLc$2${ROXu_T;{*Z^@_Sxpvzw7ywMmLG zMTp}TZHp5PD~#4?%IZj)h&F=OV&j>c&onnDa$}UwbiyXOGN(oFPl9g7H?fg|XzW5b zxwCe&LX5VuP|{t5bUurTHw0+DC71Tn9?3(KMOC2QY*B=L=^%zq>rz!kiqu*|kf;Zx z1!1(iniHgxB9rxVUN|nK6)$l(!A9@6w79%;Lo6dXBRus_^DCj%R^+}!l-mz(EeMgV zZyn@&7w|^RXxZW6Ix!ivcFwgYEu+k(@1i!|rmR~vDP=z6<`EdYaD*bgk_~UFB$SPH zWOE@yrqmC|%cSs$eZL(;fs&s9X+L;< zMBjN~tWvb|#wSWaDI^C(Te2cW6kfZ!Kq^g@sA`=DUZe_R1VE?>yUv@1n^BUU$Qo|Y z4wae0lfI6GO{7#-5j8BW9voQT$;MhAgJ>@3ARaU)3xqHidhVsy^s<_u7^-ANdjAZB zz@wOM18D(W#fK4}LQCUw!i1$!++Efv5LEi0R=P_zYO{E{yBqSF#JxCk<`W5E1q$;g zCd+63X1Vu9M z-F>lQu%ZGnFRY>is(DWUufU=lOoJItkw~3^f>!+wDo}h(M1?jCRCnP+OxbA-)`F|I zXwuj?YWg^1@)QpssYsOZ3B?k<)BQXWPIMC4Qz7w<tE?<#qJOqP>?c8NB;fc|Uu4JlLl%NNI44wNAHX?iiD>zxe5cC5Zdf!&3S)XU=@$6Q8g}ee3W2?puEA-=BHtp@YS+I5=1=7XSWN{=d^#UHz)p zyn1nPaNifc01w$z9c=%>`#yL6?73?48^7^u|KunB(a!$vy!20a;!PJXUcBd?d;Y_( zzWJg1@BNvd`R7+&c>;p_?*04&58QWd`@$RF@J}9m@Czh%F&ymfUD&?(gRl94cf9lM zsLRc@^|C(Sy|DeMyFdE+*S~IefA5vActzjq!w)_9vp@63yFd5Yxz4Y;^4b$8k6t)? z;hy{MdDkDmV{?7&r+@aJb!%m3|J;(U>20|f*5`7tyKh7FwxW|c`0sfor)u@xOaJ6# zk&H_vt;%>?R+ea9#y^`+|{BO06B z@1e&-b5u`9M3WJP=v{tEL)dX6JtN#%PLEW3*!S*(Z)lEaNKK`KHZ4y zGg>X}lMz;5W=NQCHv)o7HUB}ddeI%40OkSGjGw2m5hP7w+A5TNiM4xHET18P!tcT?^rUd$$_JC3&PLhm@y8`;sW<;_|4{ zR3f_G&?9o5JrEpCPvTvs+sBPtif8YU5HBXrsFufZC42DM&%<1gVan8?ym`8V8w*+h z^MYF5X+CThQK0I?*dTo&MQ}TE@qifA0Eq3m9Me(Ng9bsVo9bmq%U3rRk1)pSRgm-c2d z1{gNI??yqO6gd5$MSCOPH*X|BK|~xvWdTtYUP6*dFh&qDI{*|fy5^K*b02`TY&d{4 z(@s4)JOFONyVEdTIxS|q;(ff#%SA}r`03Xi#Y^OxC#^->f(}*OgnEb;u$_bL?t zg~jvU1%?T=9)K73Y0^KO8lt93FG5O!gAKl^)bnG#Lxwm92`1H8yCSNcLaWsZQx#$7 zHjrVE#MU8QNlA{CnGIHpu&l40xZw$eJUrXjdE~)!pa1l^hwkg=GwEl8`^?M~WF3^+ z&AMS2RCK6AfF0$q7(}2ZHY`-jVC+g+41*ZDUY3iY@5`{LqMb;Yug%u4Jbmnm*Ppol z`t{AtgWW|0wPSu=+OifmH&DFeD27lH-rc>;g{Hv4!E$$L^S)o}dJ3SCiL2%UEEc+fZoaz^Wy4ifsymMuJr)@j zi+DYGB%4a2d6G`(@-8GNbb7yxs0jg77|cln62W}NGBM-Ti%Ga7FbIkl zc#-tw3bD7p5W(iW(@q<;$d+dAHuP*71#9fSit26aB{*~yR=iQAp`sHEN-=u5NFZx5 z6bUWprFVm=5^V(v41^Wasu>WV*M&i~TC`aB8;XGFM5z@l)l9(>I0R%>LFX9^EXc^d z_o2-wuh(e_h1)7DAv`s37c$%#N)Ub?mv{y!M{S>=1eKZpmI;K+tCz$TMV!e2f&()z zQKG%1pUL~rrJNMF*7JVR=^6Db2m&y%sLDwQI+wMCM-wzAn`&;N(k5yY5_CTW6zt-|sR4Ca3uS!CCBLLb zT?qhQ-p*P5A}%>*WHnv#WtpCIRiy(+CS?TT1tN0p%)@W|>3{mkyFcB}`!D;_FMq`= zUva~A*WY=^M}GQe{?E^T_U^a6?RTF2oM*rIMK6BQOJ6$MSpTDU{-M>y4c9;Ad%piw zkH6uDTc2^WbXKCSfr-E>ta?{c=}UJoEVSzn_Vzt+_t`)He)6Y(;%#qx>$~6mt~dYN|M$DT>pP{Co!yJI)`Q*s z2e;3iyz{r#T8fm;1B-Dt+(9#+rRfa|LT|Dbm8Lm zn{NNP+n)8zTc7!?_r3o=fAa3T7K7dPWzYS`|M(5po<4p5{rCL4H^2F#AN|NJ&%9Z| zt*zrf`s1&A)9tsv?QMTx#_Mjl?z_MHd!O^{XG`e-v>N&UZLfw4R&DOfIEdPWUb<9> zhE&kp_buM!t072<(-rA1+lGxZ%?%j+Va&o(l7>Kwl*FI8)-c%>`A!I;OP{7~!pUy) zZ;Xo?qkWE`(5|d$uEy2J!Q;x`F6gEJS(-y){Ch-s@m-gN9{vIVi?}6P%&TSZtb*?m ziLT5~`}Ht-mP8%#M~;17hXPZF69~+f$T>QSRY7U0T1bhYffsww(A@5V4gC?>_>3Aa z%~>3sW61)sX!VV1EV=X?VSA8y0JphI(DcOkk#S6uYZrq5fsFATck|deL8hEo|o`?#H`^TakS@W0K^PZ zoE*(aj~LIB_*x~7XK2#c_dY%zJg?3{2-}@uAqoewgjue!egFa$ERkC$<2(v0y>2%N zSq+A_=hD#o5WuRo{`NjE5%O6od)M+Qnj#-Q^7$hw01Xab^q(EqTSz(|2d|eEp+*6P z1JK2y%=!f$L9pg^6i+`^McVG-t->R0kVKm%b4Cd~f`s5SO~g|;B&P1NfZv#i!~D>* z*c{g}&0fd76q=>akPLhz9%f`CH%ca4XcHo%Ae{V(-0Cr~Qz?Wf1{LOrKubG717~{e zE=%W-BU~RA8_au?N1mji8Z{6wK}wN;-#I#xVr~Lca=>MTaMI*t9vB!h<#C=eC*hC} zV=8__$jRheko-a>_efKLB2v&EYrb{EjndCI&t0?g$hm|4Z44Dl zv&Fu29f+Xw6;q1TDlA4(>EN~Bi|;i8 zkV@+SkOjq`a9}j1C~m}gTh&I|f^^}zaR#4D%*DbM3m)5&wVBjvLUG!JM}4)Zxm(NB zOUp^~FNXnLsa|BE!WD34A3)V>l|%&_iD0`#oz&)WV^H_pnM4u;sEP{d0HbAN4~4q@ zZvwXZ;;VSp;?A;=T^L60Jr=dVgbINkED6!Aqdltolxbp8ynsS5*SJ*aXhs!dQK2{m zUaC+PDpkDCy3nd9uylGmC@2L2VXf}IkmCE*DK8zRlEP|I2#Od`q@)d<^bV^gMT=0B z6)fTK@FG60$!i1%0Cdc)=%g}mRO^YmGr`mZeMln#T6h4>i7rieE5Qg^c$S@HIe#J> zv^y&D>>Q-65Xy*z_bdR%7+wN|m?dvJgY@(veW{bX3UM0Z)kF%Tp$oiN=_n8*uQG66 zJfGirghawu((bUKPV@W>U&3+4sd*50o@Ru`VU^iX& z_#ghEAG-Bfx9;v8T>H4|&Tn6Q-RoYv7#45&t>1jX*S+8yUi{+ii|60*NAD=q>ua|y2`RZ5y;H}TRb=LP+ojm!szV&4n zE^I&g=$SJQKXmIgr(f|M-*Ml4U-;1b|4fVh4`2Ev-}CprZwb8r{qOtCXFhF1z3~ax zebY-{*7g14ZoKZL-}16Q`IC2_-#+^XZ~y&oeCan{ef2d^Xu)DQxZ(QKulbSJ-Ezy* zkF3qR+2)&n<=-q0_7}tOt>5zlU;TA2uwnVi@A!^;@4N3;{_Vec;GqZJ^1HwFq$fY+ z;)QJk1ajA1ANjRk|JA?tSN;I$Ko-C14L98Mzklc7nf0^zTGw~;em?uEul%Y%{ZIet zt-t^KX1M9bCw%o+|Ih0ibE1kv$k9BzbRr+)H3b=m;>d?)G{wPXuCV%xOjb-gvdy#v zw4Uyq(Ks7nX;^k`ku@W)#mm|^8L)kPg=1)9+Gbd4{Bw1wa^4->V`-VAWEb`La1Mg33GDBA-eo4A7YxSSf)oTR zPQ6sH2Met2n3mrT0<0Dt{@`4XoG)X#IYdkJqxDQ$XDQOCUBt`{WQ7N=VtEN6LNN{_ zLBumSd|O-1`LfJ6^hN3GguZMAWMt9XWPghQ7SslsGODyoHd#PbrT?li+>&ko&>)Yd z%$n@umAxI)+C+};x)ghC5(*(EGkl$^HKbD$FKMj0ysfYZRr^A*m_vHX3rA5x2h|~r zR@jA!+D1R`L^Ki2GzE~v6DB5H${;XhQ7a;aSQ4fZ>9&Mf`27M{1b@ICe>vcSNZY2@ zLu?AlR{{gp2k+Bm!wTkc^G0(fM$nlKuj!Q5iJ`sBv;_Wu52rWjD`GE7a7MFoZ`=sIQToFxTW|eg)>Lm)rgkD!A{B&-X7Z}AzTJ>gaYOqcOEK;iH zmq(7T74d%8QbCxADynx6x2m<7Zw*@nG;&)zbAfjEhJ)qaW`CqF(v{At&$|&S#r>x_ zZvtr}mwB#P2lG%U5~_Yq)Z+_nCuTU+s_Nvj@Vae#=Y@fZLtu$oAxb%7gS zI{sn?jh^xu=x|p}UDd)@1}UOIHMe64tw0Y}3bcByUK3IC z>96W=#LR;EMF7+;Ow*{E4@je?hXQaJCvY@laJ?cagghaIje3D>z#5?s08Cn39FItc zWX04ZmXM;^#~}0QM7)GmN5;jdLOC!-J!d>jJ0>GL!iG6a{mm&Y7l!ufvGwy;)& z>XNm7*_Ryp_ltd%hdyz=N^6J^y98C()S{R%EtPU^^JL%cN8&G#UQ3Mq9e(! z%-{(%Qc10>1b`xQhd+oL7&utG&EcTb{^Er*8rF4p-M%BJQ z(&^_v_u1W@+I90s9y$Ac-}84jw>Fm5E}Y*stLyV4_ul*Y&wT3Br%s)sStVKP^Pm4! zU-PwJ%{svB+=Yvu_~a*8>#SRU%WwYrpT7H#lp>1z?t28fHlLS2d;fcPF77<-)@PkK zcKm_+&zw1P?u~DJd$7nrS)>?bvP`$GGi-~FXLA(f7t4ZPtyh%5fdc0%V==2K|ANwL=Y}9X8gIb zh}z>gX;;R@M6{=5AZD&^u*tKe^|vw_QE7SFYgA+duHS1Elks@J~J{ZiLJjnVP1W{A}|XHp%nG;j|Jn4%WKt5oEk0CDUsja9B}cEgF>GL1m!p8H^%|F zdO}|ZNOixRUnlKfAo|8cH9zm`UUT13&wT1iWTG(`f|=tdikIsRWcooKqM)K@Iu`*cy?K`yPkh7?;E--F?~_ zZ~F3K5J*y1g!ChjUaH1n@ilB#>0FQS$VtPKVXB8gOHzatS16oS|g zOzaY_H$k<*9XCP|)lNDT8qGts;^j*GCe0wAppt4?;2wkjQ$#gt&ZUYF1yEVtvFI%h zl}fUo^)`rZ^mV?5`FulVt?!3gt5c;s5MDi?35!Hk>eS?p$n7FH7# zv#JmaK2oo!MxjDk4aJ=#A<@TrA4nRb;KI)C{$hA|d;ddspIzH1^O+u*mG#+d)>B0~ zffX4DwOSRdCdMT+YOWHoy#c9^5}ifN%o+MbSWr?7P=gg`3A#JRS=kz!+r*+^dxgPs z0!c^(y^slLs*&*qWT8BNnMOT4rzD1z?j8VB(@rq}fJSPmm<>D_mIXMv-nm#|p|F)s zPcLwRdHX34ECPYTq-qfk6!AXr8Y@p~5ic(Q1?!+Fv;n1o-1{!hI4E5q39+H2 zRe2*@WH$=8H;Y(_7AqA*RbXid%8Lk4J19B|ikD_hKW{Lm+)U0OL-!Gaqf6KfkpmfH z4_hF055?anR|e(TwD+igrA79p z<^v|*jmbgk;+0eXH@+rF|MIWtr=x!QqF;NAv!r%w0Ppa*+7ycz?ELxj0G3v-zyA7R z7~Js)k@;+P{P;WPRI_>&0^j$yidWFJ7MP%pl}4KwTKW%KB!bnJQ+?M1t;$XZ__9%_RN{)^kYj!AZQ_CEAyADFN8Lp7t# z=5wLh68i@iQToA~TB%%l>MEsZ-?7&Hy}g~Coh7vcKK!u{3r+fBiwe=wmHk~k*gsed z`%iwtO+WCOAO6WVy#Aigf1!x(Y@h%03)`Q(TdZyw001BWNklX(vVw#WecTadqgYKbz@xcvdd|a-&)P!s8N+tuC7kcaHNN5@EW= zCsF3<-5gqfzPBe(OAt9T@f4AD9nchq)>hjmGM<~4TqI!6;fEWCsTrD_d=OV#$&^n* zQ5%~0n=7ZxSeazmw)BTa1dZ-p&z%7Ul>ucP4_ngQ@+twUC(ke$3~B$98*hY`JRXrk4P?Eb?4$;^(y-7Xv^<{DuIq~=-`CV%P>I2F9ZvBoQZgRzonhm7 z5x4J&$L;(vfvU~a^Y>L{qyPk&r6w=KV-s=bGWLuRW~&+soU`Fm14+#XF;2q-ZXz~r zgfAbW^-?3?Wy3-`MKOQ69T(%1U?B``uZr$P-Sp#SlW7zmTYQTe zVcnDlqa2{L>-&HSNLr<2WJzNu2rxKnRMM{zGQhm165&r}HJWNEJ-?JxiMDWzuTV8e zR-Or3q$r~Tx>v-gGPuRk%gm*v2ci|l7Z}xI=em8)^mn-5rz^gFMWPH>9n2d=_#k-o zgRzE$(9F!LYNMAXQhi7HJ2j+mc!dnL`g5*0TuBUvu2jnK=TL4 zfe?XGA!M+`g%PZ#8ci88->P`K!wv)sE2@fWEfk2*qqpp@$A%+=%D6xgIXrVEp#OIRErTIkg|O;n372}6ZZy|@WTRFGgtl2UzU zJR5>uY~B1Jy(nAovQ5k?OHrYihw+^`@6K6Ji$Y476*1Q3qSKA8lOCm0HCic}>J@Ii z)gX?eW?4HC0Hvs9l~KP9(yXZG{1Axdl_IQEkXB5gMyVvtmdau2JHczksYE_=^>yJp z+r0V-3R#EBQcCfXqh0W&!wD&HABCt^k2lsDeK-|@;w{C&@I|LO72i3GBxCK1JaS?0 zj!!;Z=2pNWT|eu3<@#E`Iqx^u%6zRmGVAB_GV6cy2>f zxG=Ay15wf{O7WJqsjW;zP`!-bfLfR}{nI{Ir}Wnp*RJmbBBr1xixJAMLnPWe)HJy7 zBZPXWOqb}z3-vRsZ6Tv*P`i4X^%=8IQIyR(T(k${&}SiK9zB0P&>Y9um#GRpijFKo z$!UEav-F?DAO7If?P)3ayF9qx)Qp3*&Bzp4bo{`#EwdtsE6zJ{|K?{$#OpJ57 zoN;dpT4}0)!0C%IC`G^{2_ z{}8gD{C4Om9{ajq zh#HhYhF0ZZv7FD#+I%*fb-TNJ&wJjNf6L2WKGVMMI(FE(xVzljpRLbsx%ru}rD~~= zBGPwrBMP;0IiIg>tZ#r+w`|N0l) zcH3=l`@P@$zz5#@sZV|S-p_yG{O(R2mcQ_(UwGQnp7zpj`DW>R2i~>T`E0#(S{J7C zh!K5}dHA9eHF>Q}Sbi4>lzI4!<0_Jd4FiBr=A1}FYqF*qo{S@8lre!cebB^mEbkA&9x@m^Ej6eRAun_kVWhnq2|;I$l$Zryc3ixJ12m7wqCX} z_cJ^H&T}_I`~ZkZx!cKcejn=s@AR&S{%&!}d>Vkd<2;liW4!ai8M(@EYq>yoeXf>CR9TG1Zcu%9uUE3oIu`FQv>S;x69~LoJPVUwxx=vhhey zJa*R#Cx9vd49Qx}v=l&=%KV7T92*u$n21)KWx(@eONHD+i)xQBa^#m7-J# zx&kxvB8BSRb3urxI3f+kt*D8y2*T~-M28|>X(HdDIwGN6+y(|?eBd}!aug{LFCFI9 z!QBX64og8PsvuN54(3ec+GfO^pTviZ(7v6kc`3;1-O~t8fX5SoN8wn+Kj&YYLcjWJod6Dk+pD zs3<12aG+3h=@lSr*un1BtfF95C}=`0LW?3X7{YTzQTog|rF~IQYEseVNZ^n@9SM zSwEZ4W<~qH6pb;blM~Ec$&4mw0BRML?DpmxUdL+NmbvsEaB-)NBLSquHkxWC$xYFX z>s7P^vo<|E^U9�Cez4umas%3`51ne0F4QZldfc)g4L3s#>Z6FvturL!Bgei!$^P zYr7fO%aK@D+$MGrrXEu2T_#jfky=^Q1Y#y)g{9WoL#);SGw#Wx&}-*Zn$oL9h?scx zJkrgf26bW=J5ylrGw2w0vZe{b6X(jx9Bsf9LRU8)qi&egiyhJ-Cs|XaWT?%tlu;TY zjl7H(f%U-s(Tz=tm_x#jP{nNL<^{q#a z%s%kJ4}ASMyy#$AAARJUS%ry!YxA`_R2rg;-DO_QG@h7ekGVcB^YLiR2C+rPV>nqe z>v|Lv!DIlaO*LbMKg<&R~&02Sc}sr_vHR8?bJ)3C6*bHoBfg{n{P;B@HR%1 zhZ((l5t#xa^K7-8b&kMe?SScr6PtNu4E>KV=G-%o>1YlQ{PRo|7$215z_l|aNhu_5 zdz`jc^M*$6DVmf@$R9!cu8bp2Xeff_{*y{x9FQS%ZiP`<;?t;6Jy&YGR?U1=6S+2ov46$SV@9frz+$5 z+j(4BG4pF<_c)KtCzKut5Kl~y$ZU&^xpE%Od-RgTq2gkCy^~c?(_=E@AsLxxoQzw5 z3LBS=jQ7tVYcOzv=gEf)KF+A#OGi{FjOKQ(t34ynIlC<=j%Zcc+*xkPWauhkPy~?u zelRX8m!e_y8W0T#)6DjLA)fbc9%w|=X!hm;!5}m`vNBX}6*WkujGK1iEX>(Iq_&ac z9`K-vuCaz1npNwMq9J5LNRJ0K@#C2)fnn=V_YW2ipF4Nq+}UAR9yzvk?N!%qtgksj zR1p!>8ptnlYE@vYg8>+Z;r#jSi#r##wvKHc*)kYlf+FJek_}$tndnq&wV@6WcA}~! z??|;hp#WeRy=5zKYGk}e<0UK(hVAX`i@Q6EgGHy^$tzB79X+C@XkX|)C>7OYV@3=| zyAIS+t6ki`@aVbo$Bu5EIDWF9bweF02Mnx>rHO**`W}cFk2iSeN+CdxN}DYX_Vx~z zv%Xg;{ag?B50=a2+I(KR;-mpp83v+5Vdpu{W=j&RgL+E1i4$8QY$=3A>%J-jVI5{t z72=V0kHMD!b>W{2iSLSKz+i)QeYdd1&e@#{=Pv9o4rcS&(eL2S8PESLSP6V*f;fJhzc zqmMkiK3_X}^r)dL5G}<>qan4cQp~G&)AKAUNb~go5vWOvJ$PVP5$U}~5rcY!Rj8G; zVW_q&C>YH992x{wv{NBaibVB(G>DCjOSfX9w)Y;CQJnFuPmTn>W``}@Q8&f?0~zV*1P`5Mt@}9Z*I&sx_h^RA3J45FRq@miRgJobW{CcE-ecU{=mZplS+m{!ogmILys*lM$)gye%Z!MK>(Vj*>)NmnUryjmk~} z%xbDa8C|yl4?>H3kr$$Rz#t=Gj8<*QBSUsPO`Yp~UtO=ebE+Bb(abO|>{0lD&F%+q zx?E(gH?$`3ytN250NSu$7`|cihTm02^lGEUoJIqYJ00Sg{~){`j(3SPNJ&7^RPCr* zCvsETh`N$#uJi^!nC5>og`{~v!e~mw;}H>Q+U&6n=1V`BsJu%!0h0qR{e9&PUh*+7 zbJXQuhc9sHO+5EYZoB#BXFd49nfHD0J->MS?Jxabzlo-Aed`~*=}o_|TrQ4pZN2!# zFFA4Ycu@se&GzeZu%){>npY;!BvHI^xYcUQx~zt(#f7QS7;K%Q5HW)XuZk*J4HcBS zT$oj>a^HOqJaF&luDIf=r#|(`r%zw~nNRKA^|25Ct6%!XmweMpHa3pD_5UaA&0{S) zll!n=)pwS=z5Vsx&2Dy+)Nr`WXcmni2^wn|OUew4L<$fnN+fGZ3?o1cA^F1+U?&I+ z1cComWJ7Ws15V(`3KBktDufP2diSQFY{$oG?i+_nK4&K2AWnCe*C<=fID!%k% zKlXdS_q)w%^>=^sZ%u~9_x-^4J-m1K*Z=n4{*yoX(;L^X{pWw>uYBSAe(*Pb?brYA z|L}K;viy-R{m9S#>@Qrrba8uYduL;-2uuikfA~i)eBu*3 zgMqC?jz#q*xU>7#X8qraHv7v z^&{!2)Koqnsnsg`KYn$}mr0|d-uIATMk361_s_hCP9i0loo!+AW$aWz5>u%%kwePt za7p>bi4~E^CcU5YOgWPf zQvR&FBaj^)M%2#7MH8DNecqnLbeNE`#Jp>)IwnYgfJ9R>gVg=_a6Oe4%`C&9{-ETY zcRH=fsn0o((I70}J})Fd9zRm61_#%7$N>-{>gK1*|57UYt*TQ#xyAO?k$V&FD{on4DtsKu?kjG%8OOK^5p#RL{TL`qah?f;f(>!m1i*m z%W_Mt5G)K$N&0xH+>{S*^G{}pNnk+=-6om}nUBh%|A~W_{i0dEtSjb^7Sd-#vba@~ zUddl4ngoKmuQU{Ve0=);d+)vR=37Sxk0|hXYx4`=^My+n&Wq@3*%nnOn5#nxd#*c>aZFuHP7q2F6(xks^?& zifC1p%pt~DmdsRwv0AJiK6vz}-}uJ<-u_E3esX(vYqeUQPEY5jv(wqMD$BjyoiQdR zvlX&ju9&E|ZZLnD|O5SS3LUg*Ip znn|FNmMam#=4M%%qX2{evbzaEWAv`=LK+-d20uh9mZIRAQbHnO*|HW2us}nQn2bXa z35BO#3rbZnylCr478wjqa%X`8mLA8XVAeLWd2pQLK_HR{H4YEFxkHf~0TGh@ zOR`ExZAtte9zfxZAx`3fj#u@7PaKON0_Tg$)?`&@nAWU2GBEA(ksMx ztizM=;YOIGlEO&lmmNs<0VFN$bmUBXKmWh?&+i{RI=p@7Lohx6 z{BvLa@|VZsu|$34Q?Jy&RY%32eC<#ElfV3*{^U>o)GzvA+Btxh}n>@Bdvp zAhWi-)LDf+Er#_^cYl5w#HN$ccN*o;Pj)oqqhjx7Tb0sv(;-jri@GzUPYpC-%d_Y| z-!8*vbi+g1g-B5}dz8$o%d?kkUnBJ(gPh*n^scG>=hK9F46mLEl%-(4l9{9AxP=M9 zn=IQDd)83?8l@+9=m86-x>)hhyw4T+T&Kyf4|k8RX$Cq;MM4HObBG=)BA&u!H?c5q zZYc|8pEO%6Z}5^KA5ys!Mb3u@8SsrHU1x5`IRvOCA27Z9kYrTl%S6y%p~!L9!` zU`0;FYPBT1XQ=?b6Cs(EWo_f_$|=ldkrd1OgR`d;aCb@0S5J!ps|)Akpf0FR#AHQk zGA48H1~C-&zO7bPzy=$A-;g^8Y!OoJbTi%*YR^tx{x)D8n7e_&UE!YpOt#D&Ty>G) zpXU@1PJ7zK0rldZNG=_fD$h1uOD$^{$iV*{@^$-o3s6JiKZxdVH-2sX$^n z^tm2^?{)3DDbjP>9mpT0FtWEAqELdp@8uVKj%+drAaKtv(q#0c_S|j&iIOu4-EU^- zIO%LN<5(fuhy(;x3&xv@BG(w2=r2fzUXw&j);o@)zxD8+bIt&OdTFjqy7p8zP&CUXiV!ec z%+KweyL9eiv!b?Yjhb9&>H3dh4V1hlzgg9Qhj!uqBo!qUjiQXx+2YN&-+KL9-`wBX zyY<|yB2=^G{K2D#v)N2yyPUVg7>w%a=`2Q6b+KA5n`X7UyT7-$HyqW>0pQum$(_4* zZ(VGyjUz+iLs5b)v_$BvKWqs`@8$0U_gYTlCl<1 zh-lyd3dg4>ufO^F?GN6&bm`j8?nYIYj~^d~>a<-pWyJ-G%dqoWMgx@Sj>y6 znoP#KJ3Dn1T9wBK2k(FI;q-Vu98F5*wu!4nvuqdR$*^r?wO9>C!>TNfPfnPNQC+W^ zW)<7fXtcMtUxtDTa&i?x)qR!0b+Z9eQzJ;M;6QAZG&ryq$_AypZT~Juv{ob1ypJa9 zAfyz%wxp4d$SQV2DH@$jg*aH!76id6=@VGcvTIZO)e4eW!E{m(jDBj_&ryg1fnpR9 zOC2K80;FXX2E*aTM9%Gj1I1PVZQIzkak*-zi{*5-n$G2T-ki?clZBox+C?L$vv{&t z$-^l#DI*j`V6Dn9C}=V$hIKg_*26(L9u;*Ns-h^1U|r3lk|;r9tKMUfjFx~dl4*4t zyu&L40B2YacsWFIxh~AX>emaD!3-u{ELW7U-Y2#j-4`|X(<}ydhuk*Ymg>*x3e-Xs zHgL<|^QaJ;YsItOxaa&v>UM}V1YvGW@stf`7GyKOuTPPgcs<;bCbS1Ew3}T`sHtb~ zJ1fqN7FFc(g59k$*82FD=A`8gLnlW;3dsB!m*~)YhE->7+zs@jP*WcXCY#@F3ZHiK zsekc@zu30TZ~gXf|Iz>V6{Bld001BWNkl_nmj2JURU8R}cU7SO4{o{ySg#*}wQpZIu7zAN+$y4-UWm z?KdUra5Q}Nl~;cL7k}x?U-=0FMdkTox@eZlI6gU!O^dPsP}SAm&hFp%8~^Rb#^yi$ zy?^%P=*fp4e9$(sv9Q2|I-5e{r~BIe*gXV?%cWi_Pg&e zm%~B*>Zf1*)nEB*H*Y>iMNt;`%3t^k|Lp(zr+@GV|0+uS@Ppg0{pr`6)snDrcGA~> zO>cheLeoe5)Y*_{FZ7X@>48}4HXijakatd^d?rlu5tr-IPVFnbBhtmn@(ufE5S>dc z3q}Hvc+d1SO(lCLh_y7Kw{;G zDI>;2ZTFmJ2S;S+Qz0y>Y(;2u9v7wB^_sQ-<#i(W`lO~LiL79J0M@7oslFPeAT6wE zi@N>|iFB68Yp!JdI<5!3sUSR9?RoOXCn86;rfFQO=JV@8W>I)EKU2l&c>utgsyLg; z=Eh7I$uMJSZtzq^1RlnqdplX7)^)H=F<16_M-uA)A)Bbb8Bl&GXQ$ zdyiz7=RfUX0-S5;`R!ICPK^x$kVGI5;B^GxRsSK8y8O({nn5ZGXg6R-!2nT&_07nc z0%loD3km>vZ6+Y4NZ0}@xMT!?l?9gYP6<)3Vf5q@$Zslo3RRKLVJB)kW>Att-Q~3R zj;5=UyF~y{!GSn7tNDC(^yH)}2REO4{@V2$^Xc>(uYK)}H{XV|Z6nH9EtedqDh7dR zwpvW*^9%duKJ%H++`4&dG#W>V^Xc^7{k!|S`_t+1TW@^(^!T(aD-gDJw(8;N;iLPf z$J60(2oN)mCxd(U9~Gha{_p+X%U7;d7_d@{sA#PUI;G+Fy#GBx&QO4viJIkXdhgD? z~l zV;qi$^OFTJws$rTA0LB4QSjzu{P^VPg!hvT9OMJTv{F%d|uh+WGdM&a2>B*vde zipS5kyMqN$+wl|k? zb@1ST1CNJ;*?cx#Eb77F)mLAgOg2VgAWH1j=#Y|vAZ>Gebok)ThueF5pZ)Zw#v7Z* z$4BqH|DF5y9-K~3CzDaLT2)0goD4_R;LhC#inv%TLI|Ju#EY-K@~L{S48-F>y}z@q zv3c+9cc-VP#CZ2R@3&2J@$&h_Vl|yDc6YYQP`-cny}GD(Hg}(#Jb7|@{PHJX`rhyP zK1{|0_4;`ZXx8i^XCS4sLm~O|h@wNwD9TKc5Li{rWM4&8P$gjkfg&q3K)Kae+971H z5Rmt9qzg+Z)bXSBWAK+Ad|jSj|>4U9L`!7t5stUhP&wS{QXjeIrvUX^`$>1{WuAn^aK`R*)hxg{-b5TO$B+KB0m4 zRD2(v;$oEqQhsZvBo$ECvUzUd1#zekK++5tO6V+MJMSHgQPo_po(E=jf*W7;4uEdyT(4N5y+@w+h zA}E0Ba`2-+`sZJM`IUFxdHb!m-g$ELH8v@~e@BjWE`0s!H*Z$={|NZyhzq7l&{Ucxc(r7f= z+$ewfm;cKz|M-``@%69W{_wVl-gx%L=Rg02o40P-u%qa|_ftRl;wN6v7O%YeDg{bF z30#JY7cc);fBnDtnV;ll@m(d4=3Zhijq-?O{7Z}z%uZ2rv8{``;q_*dTe z);HgJ`;EhcCmgC-~iYY&zf2E9ml z#(kpMEOl_3o=d%@R}grPa5^|yLU>G#QgijZR>{6kAIK84e`>pF>Xs?10$A#K0&c9L zVx_1(%i5)KFIaDFh|P=?IElejhGQG)rY*68(f2YWPoq7u=73wmP+ql76`AjpxaJJa zDPRE1D=1J_>FTW*MNOQQpvimTQ4Yg0DpnMn9SgIAaKJmY5t3s9K+ez36Ua6}q|n51 zPoaC8FYPG{74vJSc)p(-OKVeKKTR=bWg-v@Bzb3ie>-Eu#xGe8r_guW6u#MPoS~N~ zkl|ngxW3)RGbKb}_3C_Uq(;>Q@+!oB9V{Yk~; zG<$@sw42*|3Nsgd&9Z2VZjE{#w>Qv;q(Y>@K4@o%QV7o{FehX5rFjxcy)&IiGHbeh zO)lAIyQA5&aO@PC9}NIll{Ln;iTCc`uZJ7bEDsKzoE{z#q*Wn8vuZ~hvb%jrxZ_wIan z?}NKS&3v)sGCV$fOrqtWDC^?Aci$V1h5>YXayp$&k53MVgW>ded3>@6VS4BO?d3GK z+RSFtdQcC>^}&Oq+i4^B>|T%ag;wpfUgDz&j~SF2_< zpG~Ka??04gb#(Y-c04^G0@3Mgu5lGxZ5Hz~4aFgrPs3m06*u&fq~!$%L7tHu3?_a8lauv)b{ zJ3CA?oh=v3*=#XCIXoE*2d78H(c(CezH;r=^LytCb}h%6I9!NIqQVkmKq%@0Z8M)Q z%c@;0R}b$$c>ja%wDb04R36XggQ^}4MpY4(&FbjrsBPM^t}b1^)JSWwpuknd)yedD zu{!bF2&aB?(jish&p&*xLsxWBVsmZhq;64~i1$x&~%pa-NX*)}#aazbN(`EtAR*0TAB&0z?exIQuU~z3uNLDHM$&Y z4IH6RD3ivh90V;S5LqcCW6*d>NP>`(L~Fp!ph!fb4Fp8&72|_3R#>4CikXg|}(TX;0oK08rRXbZYN5{+Kd2_O8rwf@c+tq3{ovS=S z6Wuc%nChym3$E*OV_XmFa$JW&U6oZ?7F-u0FqD`Wm>Cgm; z+BC5Yx;ZJGs~KUb2ex%tNQ46^2`9rUC|YgVip~=}G!KxlQmYKa7OV(rSz%<|4-rXN zD1ypBR@I(JqcchgzOv%+3n3w8kqD{?8WDoCvy`lDqXx_BB18y@7i=Zcpal~^!8@@! zUmf0GJ@;crBF3pEhc`OIU68qBZqAx%lo|}>nI`v&nF5Uo*zdxzNQDk&PER87 zKK}72{bLYXH<7gd(GJk`&_Rmqcc6~aD0>bE_*NogpGHMMRaehkzkcP~)gS!gpA%9j z3T7mVFoWu{xP0}>m8(~6J19XQA?4D5z^aibfUZAt*}+g`TQ%N`m_I^KmPD_N8l!m$yhS(=g$*w0YC_`o5sGeUhR` z-G0nBAosX;=J?u;JD`~?<+SnoC&tcJ2a5am_Pe|Hu(w0ITdaL0-z0BvLsW^Ug1(sX z59jj=Kjdq&rgzt526Wfxe$zZu_0cN8?A5^nAwnet>rLxcHFbCCB#xrj1PyR^nw#j9 zq;`fEPx#w}rPVb^$DIn|KRHb}{SYqQo_0)~>RU0>-|yGW z1Cq|OJbcMsCzqIx|E+43_`^fpPVgDFd9a-iMXs~Zvs)BO!RsSHR5{gOCvZPcJ{^Aw z*)Fm^W1g=LCGUn~&uMlDLA}L+F}VQp_y=3PAxQ@n7Kt&jY8`$U&aEQ~i46&HwjDr} znSe>GWJ!}PXbYxPEVH0#qR#j#fz7VvV8ycouk8p{d2pY_{8%&+j|-a1qeBX#$0w5 zY@#*eW=-`dKqNFCjV@olc>B)XcfRw^@${5PA3r`oNffzRwQ;$ejD~~JIJWKX?#8rS zZSQPXW%1zQgXNvYa<;6BYUliRi)Oi8ky6Bpga-AXsH#CxAD8p_VzoW4%OV^e9+yQi z+!$?4Cd;Y;WWHK07N=a)!_lCq>+SvR$>yjWltopQMYwzK_M?Z7T8Z_jt_JmBIN&lI zJvrK#lv~^TgV8)n^XS3Ba5Ox3{`}ReS2jl*2ZzV2<+8zom>j(;lvNNJ6r`{tAQ1F~ zky2m4Dl1#P^T1(aG}+%j|DAW=edEnHkB(15z@rC;i&e9`w-w5;JZ+k0vAwx9*&4?f zE?(Lp4MkNBhXXD-lqCR>7-O8xXK%jy_Fyy}E?7hX zWpCc8=5;kn7lpuNG3n$hw|0Zk(0C|F8X!h@IEa;fRzS_fP)jo=%bzF95E5%9VvSlz zAt(yc7M8~@POvs^6t%|8FNh$6VL7O4uk4|oV7FW}O_cd`Ia{{J^Y-Xub-Ikli{*6Q zETT*o&Ee_d{^Qd&YA6GMqU56BVOb3-9u4ZME+>O9tc$uXhGjtom&{Bmg|N2v zaa0Ct0c}MV?J^LL2c>5}8+;^!s0N|}h4;M>5%Q{n5<+1e8d;(@dxUtYO%R6yR;19S zx-th6qmT+NyFO?}25=D`l-4lVWvyC7|5F`c$morW+$a(NLF%Zm}ex?Gw^9$?{;tbmlVm!MDG=hI%s*OYd~xL=XG$B z@05WFr6^=~!`|cMQdA##A-L`O^o_NTgVF_`29Vus^}e6D8_s@I0tF68R`D9P1JLm) zyf9*M_Mz;kf}qxXRg>?&^WT%VJ4`40MY0kSH zkVdD$JOw?1Msj$i(Ggf!86gG5kl-W}aglA7JRunubZh-lbKm`-y+=%+c4MeJ5Z%Yq zP6aY~BrS0Nx=6KO^2jVy>cmq@xLv!OcjqE6IAw2Yug-=(wJFyQ&DyJX7`pFJ2YWi3 zxA&D4x$Gdvnfvtwg(h&7L$KQajGo>5+J6-PMYDA6=05$XiU33~KmxYfD_%sCdg3_^ zHc6lywC-XD?$xxF>ZnM*Hk1Z#_Iz48UnqA5+f+qmP0h}jJou^Ubg36DSF3KS>{U(@ zzDY9GLZ;$H-GHQ9G|!5QdS+FDc-Y>M6(#hiLg~1%A107?J`x8&=#>?7#ly~v@*44u zh?L;H!V~m0463eK%#rUQZo5O~5I~_2_K>*eSDWHUl3dd&sj>&>$$_13q0U+00L$$s zW(Uf~3sXOJR@)99&+p)H3Mu=g;KwPcZAWR&g(Hw*Qlxx%nBL5T$VW9fh!UvJGn&i+ z5Lrmv$CN}u3Smp8YWU7e^#Y*1(md(<*{(_;qJ}#F@#&yu{+1cKm@3h0J8f}f*WgL!1n_HVzDEIfa2USI24jL$IPBzZ% z?#FH2JGZy7IkTI?t!WfM%Bi~H4*+S1y5zqthpo;lqu|V0VB2%9X1j(9M&ZjkepH z+kt}}iAZ8KM@XH}5z!JciT$b|kjKmvfT&sv_c9Q;91Q4%=bw);-nso@vsmz8^vv~Z zj4;_67a`0p&YNXB7}Wb0wrBHLF^96)-#Z@)9*@S-u22jhIJbL#abv~M!Kki7wZFHw zySFo&&c5;5Ys;qDKX>8T8#m|k#e6n9J~^Jx=NB(rICtq>7?83CW(I>G+PbkPAXbz- z+1PyUg%_g6_ujkx@Zex?d+Yh!4|L02WQ=r5-g=0rNrBt)VLA(}9Wwl&DQadS%FPHD|v{Fz;! zs*pJFGGLsfyQoHJ!Hk?y$ChR0d;@7CJld;954YesRLZKXn1_SGc{Zy+CGcw1wr#U& zaCADKE!*jAbuew_jhxJvix$gOoSsaN0HRY7~GIlr$QYgrE?lCKF&PjLxWt0u>4j;Q$abt5=va&IG6+kBpHZ zN&*K&Od`yXRuoDcohLYW5O>LA|G`byDD1;>CmJ3u_SvWF%js13*j} z?64pSjG^J$&ul%z|L&wGs>8b6#hxVnP=&)lVD4F+Pu#{;_0#W zwgLp{Vfc(@`Zq}%f!!odOnyx%qEKS$%@w7nn4}f3H9`JRMoiipH9WTXQ8Sso+uZ{O zU=n+C{VS9vE`b835{S9Y!kNn_H(R=LeulHN_q2s~cKN&Ubno>^AiaW@NLyfi%XQnE zi2CET7x#Y2P^OzY%aBc$*_!*H=c($R&w+Dqh}{JCM$<#p>5a6k9nEEZPSTHQM83BY zyhxAV^E0OH(6fdqjYfM9-M6R-U0gId4eh(sfla@QFx+0XZbC?IO-k6Qe`oEDNhyb# z`=?p+RCMt>U#_&JdZZz9&jSh;3FcPyD`-@!#I6GCplpO_ju1{wc)aK<061TrK$_*Y zG1`?n{hB9-&?>yRj9B?HRnuOc503=jvaeI~EOYAY4ieE+Y8(kgrCes}{1)~;sq=t* zo&u5h^Jw3(N&cK{_4&+E?)6;QKkt3cRkIIUm54+VF&*ZVbtM zUT;-;UU2)t;bioABUqz&cQ8puYEW2|>Ij%uB1(=pQ;{m; z5Lq8VcUCwF!ql&CN(G$1X}Oy=KVAsV<_9+a8ti;pb3t~8fz7`eAbDJXMtCIK?(5g5 zl$-+f@scG&dYeMCJW`#nbnI+DT7D>b&SXsDH?N}rN^AY?lQ+Pw>hF{1av49x^|)Cc z$_j|6i1`b=C7W0=BR>PwxaR0l92c(dvO zYTK4MOh)6YS1<1F?MzQ+1TJch4aUQPkUn~FFdWo_Q5hR8ho!Vy4{F31iefmb5TzBA zp}KbU+0D(}3m47}$D^icMcWVtqtW=nrM;>e?QHEn^X!dV&)saBhHuqn2A=MImK+9nPLWf4j!LJ`zVRH7nKQP%CM z9geH%biqVig`3xJQUT-WsR%R87fa?a*%&P6O}mnMTx!(iYQ@CNyjZTvibsRNbh?6~ z8WpSgYPnhwL1GL=*qm$(ssRySym)au8lBE&D!Q>bfnc&bxqtia!NHTQt;u(P?(=)Q zyRm7P&HUDl#c)(r)i4Au3a;v5ps=^Qtwd3y$w;<@IRzNe;$$v!HSPU0A5ai+03vAt zjaruFmCKhWn;XZ^zp!eXvMk5r5pzi_%h{3w6-5Enx~`)tqJ|>G*eYl^9B>h0)7FFX z=5x(+}!@$XFq%4%GI`A zZSC&_5Hz+c-Q1Z}MHPdvSbUG%k*rXamXyH36BB|$0z_P`GigD}5||VcJUvTP(W;fV zfGQPaZb}9rLfPb+2r(P*g;%)q)5{=56k96lPV8~)u5!&sH{U6kE=mljt157>0)-e*cz8*a6*~ek_1(iNGMoH zAW8*^hQ;wdod50}6DZkkL{K6}`Po;`E@d=b$>6!$i<|ef0RJS8@Xs$DH3^{b345x|b0aLgA(>}=e@x76rF5Npp z9&$1(=hSJhozyKPfjq0RyGd_Jx~Qptz2oPno$ADoWa(4?QSy%Kuhdg(`qYAbq28npc^iZEh@1>jBf;VvRH% zB~6iXq>!~(31Ahkxegc{wCa5}XluWOu84c0ov`Z!bp60!7Ebb&s9(UPcskKJ`;bzo z+PH?IiDKi{u^4~bCk@U^^DfO^!hzG)HI+zCQC5Epi(sUUVSasQ!*Ski)D-}5ePugG z&1;a@VSaK{;jk3~>ajBv?v<`$w_lIKS`}p+7Rx)&w27>*H8N|<+p1hfhX!js#A%49gw;o zWK9MVTkSch8zt7E*9Z)GLsEa9;b*yX|7Av-+acyeqGX?Fy10`ptU!Un=p7m?uMr4B z@Me734P|b_{Ci5V&t!_H1#thhuB0hr{-k(1`Cw;W{0~Y5k=P0jTl_CJOGp?DtMPEuwoNDkGsU(Av=|I-+`6Hn(n?jALUD0A-+g7L2t^eA z#7i%}@Zt-T;W&g4t3eUMd^Q^mMjR*={dS3ygl{2 z#^r+AdBbHWiqN(yOAp+JEVqkxD&CtrDKV>sN~*&7T8TDBX- zc(vIU%w<`v+Lj3W`vX=EWe}@626&A+1+1GkklMd{q9r4%ms|mgC_t1osF8CwH#aAf ziAJGqM26nYBgKSQLRB8My7mfV2o4Hn+x`I#E(-g$q`oSuI20@BYkZ2KC_F zx&5lH%BqYpLX<5r9Ed7K2xO)9v~8o#=hJqzk{DaTXgC;;N7bO(!p6?d1|k<_pfW^} z(8NJilttCs7s(HA(c#oEGX&lojq`~R5iX0JoxM-K^hxIO>ZMDQ$!NZynuf!=Zktsb zBUoB$RWwjZq!L9$I0Rc+QDL?aYC<(c@aEyI0G3XsN=AqwmmtK1)abc&#HWS?f5r?lpIWRTdAJr>b7eYHhU`fD}Z9m9?|PER9N` zhc81SlV|wi!aeta?-=OzmCiadJwV+wDROmXTlLi2LanO}`G=iq1|YQ{vV)gh+VF-s zb`eby6y)XionuFU5hFVDIq4>%+=k7eaUQa3b+%nbNom`IB3I}oCI~YDB$g2qjMfEq zYC_LR@47KXE&E1v{y_4$^(T??b8DW^p21-jM$a(q#8@8&tiAoTR?kn-|1S0Zvi8k& zkdz~HJ+=7}&#{JY69)R|r|jDwdiH|a+2xckk;-w=+7xt`%2)9{m@5>fzvZX&I>s3y zrVBXMO5FPV`QAtR_oVfS<`n$$!PA*>YqCMoUQTpJqdBE&$w*4~%$)dsq4oDQ;rz9= z?F~AA>+IKh6ZH`$AbRt%Hn|`7qBF~DowuHT7CYq`oNKoPlqS<3?#%S2i=16;`yqQq z(wmYuOq%_4@&4myq?l4diGQIuV%|4;SM*U!Y|J5B07q&n*rf$xZREgCY3`gAr zQVJyYctT)bX}hwT{8D#A0xstr3kxF^6?JRD^Oo&gc{N(2P`NOql=n`FaFC<%0C|tK z)b8E;gcFggnS{Y@dd#0qU4a(=aAw=|)-PrK&b;ic2mS#8Ll zcTuADKYt?sLrDGDRn>;;`!8+MjOPIaoDO(M-K(+sQouN$*2R z$?PN~r+~Rv*b5Z7@OBVv6XAVX#ba5_1aBnh_5fu&!Acld@`BX~%JeBp^>=L3d9F4q zNxHs(D3#7LEU)fGQh0A)Kq5q;!hNSa`Kd^?hVsw0v)u|}>dkmxzobLICgVIh0{8v6 z6G^+Bh2)yhD5&Z(T9b5OcDlH8@7{xZ_ax%{g`M;Jmsf3D4eLO3@bK|#Z@d*mejs9G&!6e$8ov05%Cqj6c%N=aGfCyV)fwoy!~dLU5(m5sDTpcrL(dUAO9;KBXJ zv)TOewJRH=Nl!|p69_28cI>*UNr4s@0tC`vErOyH1sT*LCI(aGxo?4~9MlRm_aFg9 zV1?x^6A`#5lvE^!P(UFn!D-E^9Kfmwfz(?Ws}Um+LQvZc8kjg0c2EL{DT-EARWK`o z3lfpdjjiXO8w4)ux-6JbRtl-=N~1)PB3J_pveG!&|)Q38HgxqEI0s=mXy8gs%jhzsu(3UvbDKA91W=`V$;-hMM|+< zK`BO|R){H-VX>GuB1{wzmdklr7gb#)!@+=x=XWVoNuYtz0?NuFLIh)rApouUib-45 zKq--4z$~H&-f!IGxx$KQD`31E)q*Me#ADjpy29@ z0&9#QkX3^ZL`s2KBP{FNOp{Eb6Hzc}RDcmcieWVzjfY#?2*DiY5>;hIt;nir=ksRO z#M!(#oh}z`oGoO!XqFr8vloXUgdFyDDQEgxm95$ug%I2oEG4N#Fj@tP)%8=0yGO6r zM%KYh2`nHkqC^5EYPt1$7bZ0>qF2vNR-RfETp6k)5fn&O7$hWO(Oh-s4hsvw91&Tp zVTvH2h%uo>+ctp!63gDpIGoaGlcqG)YnhCGek{nR&V6^I*liq0s?EyDT?JQK`O}oN zOp1tf7DbXXmQF!N8SJzk`TH)RtcapNl=Ra=MXhdqvk!PC^Wh)z&^w*;4W8=#HsoQyoTiBvm2`*#Xg4+iNdP z=HS!st-o{jL;WXy>d(ovbWE-pYOD{m|HZ5}IveE7Ei-EB?6>X{PYt4fo3&4U^k+N( z;u|hqaNS1A;^xeCx+wel3?N@@?PhsseE^k`!F?_BDr?${gpP2K_>D~2t(@nxdt~i} z*Zsn4?vk@VrEzID@ZN>#%-pXHG*6kXP5If4^wh@6x5GQonoUZQD|EXhxM5ML1DV^Z73~st| zhrj**sqR&`-m0BGNgf-ArfJl+{He-|XYM0CkjFYGm2k6JaF#;n`*Hm(%A70u=Rl}C z0bI}KQ%69`=n|!@tN?&4Q$Znq|K4`%Ew~+!)WkNwl`B%FY4zSWX~Ua#W>?f^_&A95 z&1q|811EB_f>W>oR|*6;4OTGGmp7G>)DVPH z?xRsr-BTbQ5w%=H^H+g7SBv{SnR_(_{AlJq(o;L>BzONsPc--^`(EGV#q3;(W)Nzk z5^%7UR|>Q^U7Q}D-hS_cKmOydBFc-OetB!WeK2&wpUJt;#U73cLt)HIiTT@^P*c_Vs&gm2!7^+bsTk(!4 zA!T23q5-A!puAyiXZev%)wy6OI`tFev?rB3MZ@T%ggoo8kd=x85gY)hMrk65QI#Qt zVaMHoN>mD2P+F}w2S}upScRRB(K46w8SN`w6aGD2$;tX91YdgsVygrV*8SRdj@`$E zF4#O~irf=YR7Ev#=#P;R26a`3(gXkzL}F?cXI1MG1|~&BP&zp}dGlLu96UZ43 z;`Z$i7pwWDOP81P)naj4g|Z%w+Ge?2#=&T?wKEA|qEL^jqbJ89Vi}ho-2QMh7+tt@ zUIpXfXgnUYtR!sc=YK0*T4DAjp69Vv)4uECr3x4(MY0}RXLl@5Ve(9 z4~p2zN}A!|9_68_fToPkc5z)4hqGV-g^x9W;nk;+` z0R=Iiho|o+Sx+z}Zd;U`HDGvILBXtnAm$1Od5w5dRiVgC5bv7nf7c#!N&z-^Jc6|( zg$J}#tk?v0gBS=JnMqkWI_4@^S_NwW3%eh_RTL2OEju$W)w2o7-tBw{u(7xfvHULk zi<@HPx*&-`qZql37Sa_ohg+Zo>tEn|J$lI!r9_M~71}Ba*W(;4R$zI9))!Zt+@rqa z-tQfxIUPRbTWZ4G+0-NRz;beEW=0%Y!~h@?^BX9%1zKAJVX$x)MNNh;Wl5S1c6WMr zNWr$Y_I0g0!PDQ!G)OWURV`PBfK1ZG8C>-ATOae%Kl4*h{khu$^ikjM%IvHP-~P8hIGy=z?e`9=oc(a`r(`Ku{IY|JboNq6NW1$`RE zguMRbyM_`;o|3)n55vh&ID=QahjkB7ej_i-8vf7U(C%Y6``e!}hi86UTfp_dc9j2h zuShZq(q5po>)@#e);uAw;FfPKzozuYpy{2y;gV_3X~A{vIeNGGh+%3vlWBP!JaknT zde_N6^#QXl3wM755~qU_wuf&IPd)9^$5g=U zHFkrgbo?6m@;%Q6d6TWf->n_K-xpIasXljp;i|`%2TM_4cH0k5dkMyDU&2 zFH+;SR3gsdZL-%qkKJ|ylP3LWz7*I#BapKH-}|(iK275SYXl0Xbimx1q3@JsjHyratKVT+^n9|v9t=*te7yzq8sJ4Gq z;qe@?T^RDoPx6qnOz#KVla#{xi@MX01aAJ+ngU4@t-FGo95&ImG25ub5>*xTuo{iV zMO9V^dz(8V?K|Io^U3M_m6u;?+8Bze3T4wahmRgDX4A)y4nBDI{c{&~#~T}8``Xuz zk4`@M(s#Z1lHC5_!+-OKe|Y-js-TaCx4RIw9wtPq7+%dMa=rHq1unwOEG z2@VD>wFE?35mqFwHaHWI&2gyKgNr1_X4L>Z7>)?^@c!d>hVRZ#r_1H){o8kz)7ix< z=jOA;@xk$x>lZh-w-JlobK6jUc<=snI$JJ}-+u4?&B^8`Uw(cyiz2+YyD8Aa!zWC| z)ytP&dim8*g$EBFz47`Rmo8oS|5G4J`|7L6Vv!Q9mWC)%q9iv! z5K#>v12K{a4)Oy6=phdQ{9q?fiILYlB*;S==fyxQ$AB$MjvV#2r6^(K*b*H{mer6V zDU!viV%2Tx-nwG|lk2;$e&vma_wHY;7pEt?wk!`GzI}4CGoBdyFjrS&1_}{``5JnVU={KcgfSx7_r#LhZ4C@p zZW0F(tn@0<_Zg?%1SSb1vwE!d!U<#gLFwILqE>K$vAKEJYI4SVaF_d@#`Cz}sa@I_ zg4()+GIRJsL@iO1d6wGoYtsSsi8fA?X+f1 z8Ku#}1TJ5>djZ363QS_GV+ilp&+G z{cr_zjjB5^QBndzuOO60zd;ww85L*TlCIppY+%nctP*x^O*Fm!5*xc+hVsaco zojrskA*ZeaV8e5hm=>GF#DgY9phW612+C;@(ORTNX7u}hG^sZ8mHErjN3OiTbORJ? zn1$TK0SDiyPajK{@1KQ@?KhOxaeT^Gex|i-b;?Wcnq;4R9XHoEgAQL7X2Ge0VLZ^8 z>E`7qsl;l-51@qd0gh3-ATzyXJF5~Gx+{6OiD10EGm(HAmy zfgLRKEXE;F5toXVhNVrKFn3QSURH+9nh1Nu4`)n?`6RI!+PiA>fh7Hhi6G6ZP`XXB zbq>4nR?*Qj9#6G2TnFe$zYgtkS`McM;Uc?f6(uN#zL&HyOLmvOSZgwsE~c`or)5|5 zWU`?!4A;-$980x0Y_*WkEADnrT=LSgn}^;TsNiX>FR)VOMA1ODfwt;yvcir0GkqMW zTCO;_zt`nRW>9Xh+<;0o>tTluTAKD_N~r;fu!wb4l>_W>4uK_Ox+CPCAVQ!CVJ1R1 zZ4iAcwD96i-Mp4qTx>G}^UGQ#@2Evqo@9-ayw0pQ)I%xTd2U9S$OO+G#Sm3fe_Jt9je5x6qz^uzdWVyULh^f%`l5_n`cls5M z%dG2QB4Dfgx?m+%z|EufV;Sj{N0L1}DF+H%$0au2=}K8ix6G$LDcCY4qB<`?Hn@+i z_SiPyxOn{J&aFFWZ7er8zf2K>YKJjwo9ULT@pPvJzLAx! zQV|_ld(zoZMl+enbMbL-Lxsp`};Vt~r$lSe!fRYpy&inLQ554>|3jFiu-Cl`c45lAO9&J)kxaB{v#GW)Vzhs?Hq8NLlfuOYB%Zw5bR< zNTFGT8RyU$rX4L$Zx-w{Nq)ZW&)18#v}yM$`_?)Y3WM=_diuXi>6Xd#Qn3SIO+e)Q^LMZ6^;N6ZC)%am}NI zP%r6V6V&^br%76FZ1PoW)MLw9gB=AUq+dp?VFr&;fWk+i)ddxf*eY_pU3qp3eLT6-Pw`65T=_`EIeg zX3}bE>k{~XBala!<+F8CfS+-AAUt&52C0Yh^PIEUK<9Zm1QqroYG778{QL5ohdtX$ZbAD$1f7fE{1n?y^Iniz^F@cTIE^Tr;9g( za}AMaCfB_5y@8d<%k%SUyd zk3hF`rXfzTZ(#EKl&ta=YteBhQj^%JMj1nqU>i$MGBpIa8UKWX%^1I^!z-z1Oi;cu zJeI*rLegYe5)9eDeV$A19IJX5hmDFwOQk8`6zHn>a4DdpLw3hTHkqTIi9Y{S3#&V+SAX?bn5-(#C?(XfnVjb1v9=5Wh~Z=L<*on%DNOR3 z(f|M;07*naRHwe>weOjy7fh!%BX%woyV_ezFMk>lVqz6_7H)dnZXM4U!N5or=#cH) zw%~&l*RoH0xQxnJ-wip5x3#F!`socOXmtZ3n$gMvXJp8%@jrHbt;B4Vt0c^LTrv?d zcA&bDidI1iAIPZzP@$$-o5+x&Q5nPzw*JGPu+RrtFK*LTs%2{{N`(4y>@c;!gDWt z#x1B zwB@aPU%Pqj_WcJBE-rNK^rV@cUB7ng={sj9r&BGM-28bZiMJ|WH2ZRyf_5D6RM&g3 zGRw9d7CWZpDmqBTF0^jj$xTRQx^+t5CqqEd2$}$TKs~}`+JnO4M*tBEU@l+GJmlmy zllj!k%T=`rb?J0Fy8TXUcJ0~0?z1DisV58yhN=H<1U=!_x^C!I2B z-5lysG{RK$7bjadgj1LIR8U$9^@1FJ{o1ugZpRKo_*%orzpJk`kN;w3(X$f zyMM7?Z(hH#oV07#&i3nL@%l+?TtQzio;-Qy?YDPl_V)dIj~+Zcxpu-P*?M+zrgPsn zUaaSjpPaw@&f`0$&#ZuG=e(e}kR%r@pi9}s3T|qE%wY=%dCN?<6|m}WN`?hJ4zq_F zj-=GQ^o}%5CSM?mA2AxLm!1_AFH+JBRvh>X~#YS`l(A-xdy~QamrWheGa_KGl z&u0a<)fPlQ+KbveDd+cx@PwGo&J6TlsQQ#%Sb%yI0Cn;9^m{ zFw&%fH{JUjf+=9`uGLb`7?z&cjKNqttxQ6z;;;kpP-gqVA|}pTV`R8M)~=o6r{;G~ zOb#2~UUzQ?o_;ta?c>j`Vb;He1Y0eD2kWZOtf2Dn!Fky2bdJn$^T?n6b8Pqt7y28H zfNpxa&q8&P*xZ0)06#u=O+Tq0uFWpsC~S|fCa=FIoOtQWm7nqE5(24#X*j@^LpW^! zHQd$5UIUH{_Pn_w;Y*mA$Eq*Wdk3N(%qghMtZifZu7j;QSV8_Z#m$7M)mPtN!jvd4 z9p3q`csjI+(z>@40aX~GCnRKi7R{0BL-3ToT4~5^hvHgCuK+72IsK}g$S;i0v7C7Y zz^9;DR+gYi;W(@$1FOc^L5)kT&P=ncxB_(xKuNC}=P4Aj9H(YcEy$A&mX8ZeORtSw zwz^0F#n*ykpzP>i_{WkJXarC&tIOBg$sXKMkWOE1=X;&M02Xm>>MoiP#bQG0MX$z6?@k(=Nwd)wY{HP1f^=d;$U`9?CV%zxF2q|x3MA#e z!I(@3>;?K#?q_!BR=$On-a1as^8zTK&X>`3lOQYMQpusS?qJ|YqOH;)IdIm@!`@LrmpbBv)1PkX!$Q#xVH!XKJj3h%}C;r6ck-E>_SI6pa$^@>qDLr05Dn7CZ-O$ zuIr=6??}3H`S?*%edEpNU;5zn>(}UZ>*kFcH?QBle^0`b zC-2^W`1TI=%+q&1{EZ*Fadu|pquVzd?CEEoKD~DO=)uGL58iq5?h}w7_`r*A-Mjb2 zFMrvL_wU_5-|wsAMPHtVvXq?9L056i|;LERtr-MB1v6k*Zn*tIB9v+OliQ z^=mhX<^1B&{d@ac&ph+OQ%~KvdG_Yl-hA@zySv@)shf9hp4~ZJ-r6s#p5WT^XE&aC z>f~hi*4?+xuJ4|0cbWdV2HDt!um8S6+SX$vf}dy79uzr|#T+>z-EMot`}P-0f$ddG^Nj zYvM|pF?xD&xOc-~Y$>KJX#$1h2ESOvos$c-MrM!H!?_L7{M+fPdMrnl2DAfY!9-kPeTG8|R7~5D8%tT33~cxXdduv@}vj>|-T28?soPAg7SQ(SZg+^kJnk zf+>}5FI|2`$*NiBrR=|*$T0a`OeUB|RDqAA!)?;ovMPvaAF5zH z8XVqN7h@WNi!z53^wklzCeL!^85`lf(`ZN|gO3ws2lsHTdkH5w6jUK_ntU!sUuDhK z)N@s?@|1s|STTvU#~RkXVD=^?8_b&kcmvmn-GZ%4^yd{pYxzvG4ERCFiJg0AfM5zw z7Ikwnw?8p>m0PWRiNHQm(e^HhMvgB@7Q#)s^{u#*vT+bXmTD}P6?tXJlDG(B+5lFe zRUks6RKoSz!~L9=8EoMKQa5e{onrT43rrQi%e9%$7Uw98G5No&P!k3=ODkNWmU?7s zC$HUk-d*Y{)<09<;jkYMZa&QVJFNl*Mq%g6|IP1*5_%WpE{&d0xOA0WDH?wO*xq?C z+^hu657zt+Z)dW-_ZjW|KbLRimA@SQ)B@k@_8ABRqVF@0SrX&+dMQJ|mg8aqUjO?l zARYN=bN_qaIh%rxj(jlEX1}(x#Rfv#pH#Rs*xxjZu8YNw+-mRW9<3vjJD9+g+nxff z`mgg|PWyoJMon_icBc=_5FDc&gPw*3tgjW!(CL1{D*Lo@J4-Z8_YOfdG!ChD0QA^g z`VwnJ!+KGH2-B15(&8+T#pHq54@3%40jlVB=6!+8KH-ti-&1^g-n)p2lOaPa^PS;m zjggF5w7i2Zu(`3Cn9LNV^5HkJ*ag<`&V{}gj~Kcz%*f!VP*qSy^DxKuOj4rypU3rz zb7b+yUblq_EiR}&@KEw2l{YFC40*JPsR;9ulBM!l5FN-I&fbb8PHg8EoZ#iMg zL{g>C!`KlATgZ8a_dh&6d0ROlV_k)BVnc*YMqXl+oR0Zdy?}0WC>aYDo-=n=j3Jtt zhlmh>FQSt*xHN}6AYJ#Y_`pOLh7?@z$^P&vc;?ws;DP6U0T8viH;A-GV>2>MHi@_# zT3bq*!;QXG$R-L<2fhCtBmikg01?=Xl9PjUC4s1ri45CaXuFe>8)w&EeCeg9Za?+h zvroJD)Sail`xD=D?d)th-935d{P`E3yK()@9c_8;J3juMANhulEW49CckVp%+;boK z&?`?pb?1X0dU@H|NAAA83cg>jT|WWaS6_YY^SvJ7?}UCakiQ=73W0vh+zNvh<*MO;oxxnUsG$D`{>Rb{v68 zdQID9zRw5eWFB!inW?VDfQ#@b*UdUm#nL+~8g#w~N{uU*nRZ8{?6FZ2Nfdf85dx#J z79m#IPa)lVDP^ZpnCl$V=+zToeXqhe1VJ*JqPr1gxM*fB+_-V;XtGtWGGOhgme8rj-H2-I4IPk|+U)C90kz5o~^2q+Z2s2USz)MRSw-h;kX{(N?f z%L1|&h0K|=+8PU{q8fb0T3YR9Vlpxf+|@t0)`AE7q~J_jhUBDI;He`I}o8u7WHvF^2{S08;bTX z$xop@u&Y3}My+KiSbO~u(n6&N8Fk;14{!k_I0-Q7l?d6rR}8+7y`l}dfQ)VMuq0Pm zARw&cp7MaQ6BUb4ixd#$2blbVQ3fLArI3vPlR4H%$dbcWxS_!zb6W!H^bp3BK7QoB zQ)w(2CO;Ix>HlB~e6RevJj$JP_CiWozf+a4mnYl92)+hxt4K)HQ!J?^#ggJV2!SWk z%*t(%HT;S$ptw==cJ)rCDiJbkL8jo4iS#K!sHkCOsu0zkCf$Fe=j<&<>mGue?}s;D8i(64 z58tr)yDL5=%dvB&A$ZgqkGuc3Gd#YMgST@#>%(!b2E|~l$E+ckFV4$9xbwYst1#{I zZS%@BgYo_LpW|L!g6ZMwFBzT=r(Anb_&-gmADM%B*6T+0`T?8?^ul;oZJ|$hV8XO< zsB&LAJ&nEUw`hh{R{{$yn7*7LWN|wa_H8N83^s4x&a41cA}2K66T;od#%36}?3i!^6C?(Zj+QO&T_@^GRk)0IQ5ms0FX zC6Xa0lwOxez|cQ3VXuo-PAv~Jz7)8XozZ%f=h|Jj#!QuigzER63UHDD zFFqdCnxaQFA!e{5bD%s=iWZ6eY*k@TX!Lsrs-JZPh`KDI{{nR7VyI?;wPO{@7-f>X z*EJk0t2r-nK`N~*E%~bmL_zZi&S#|&5LsF$WruXW#owx#Gw&DcsAieE)NLdvT0FFd zr6Frf7eQeD9K<3m3rZk%8SGG`=)cU&oa0#}Vob!bJVvO5hgg9dy@6S!FSb`X}Zt-zBrl08}bzkM)KwC~* zj-g^-gVrP#`UvXH*W8JPhnY>;xeu}#d$nMX~in{y}LVQY>1RArlBy(h6X;W z>>nU#=JZhBDiIn63ympo#65~;phOU)_P$S}sJmH9YqAiv-t+WYqqx$o=w}L9ToM;V zX|4Trn$gp_nL+*l+?`9ZQMf!Bo?CQZi@uB|XuS{{Nvx}zF~UlGMI{&j(XAX3xx%@E zMiRP^oiZHK8H5!4(bX0T$S|BhUWek1^6a1KDQtz$AZnt+J&QFoAd2LdsSnVXqa8KN1%pxSB>VJ!HO;`&? zpP_>gSAzA@iLOKdhlSy?+6)6o`7_eZqH1eEYfmtoJYIxjrXzzGCOuhEX3wCl$qUjz zMIe$b5W#rEeQweUa!;4pg=0lEwI9T=q~H?#>c?5wpV>jF$ulRJ{yb0+0;7UA5NX}n z4tebJz8c&-H`N6&A_oIVTlU{ML4UWVHO}zpcAyjtrkl4T98Qq)e+Dm_m;^6BcwBow zHtw<23lltf{GRO}WpJP7G)7U12zC2_?3hTp-w!MgGZ=C36gQ6#5$zBV)0g*!$-zU1 zwugB-wUDu&1A0Z2#-2^+G`q2{SXy}v<6_o5N1cKV;Io=~@#thYD03vzkH@-2T@F?1Uq}Ww9atr0HAHA__5lug3P@{c zfvHFF9Bg|Y=M9M&u#=#`T$fYtP) z)SywnFv+btLk>q#D!q`f!f1(PWv34Ys&c!=@IprJ1Kkjk(r?TTDQ`0qiBY7OMPo+a z@^QooqH(klO3#@%)>TJ?!BW-z3Bd>1GJo1KufFWJ6|pFwQU(G%QRtdPB()_2?zVmF zd^XJ;1XAJ5vIDu3wE(N@f%!0HS+2_a-AkeQFl-(N;OQ^7fv3$Rss|>>Al0?pc97XO?D=AX!*t#_QLv0cUWq8R;iC zTb0Gk7GorMVrE=V#HiLCl_Lz1M=LExWci9^5wzUd^~_jFH*WxiKzhI4Y|RL|R@z1U510K$oBjG-dc3bi0UO;w`)VvDtfbg7po%S{!Y;EWDy=pA9d4)k(=m;vAhQ^tiB8vl#>~ z&>At_%7f7I+-OIvLNn}LkTnB9O6QS=E48&rpY9_2j&{WG@;b zV(Jc){2hSz8mYn7qx4`DXkj|!Bjhd0%D3oRSsB>j9*LIkk)vSlVwg`Ng~Ets1Ku{E41y!zzto7R&v>>@f#HEWgm9aj?x3Z->GOjOaK+vTO z01T5xUwjb1BZqTNZL)OClMxK1j?OjHYgm+lz~iA;n!16ZY;*Y6vWefd*NF1ca9 zZPFO}*I-gL|BV8Uf*B58G!SN5Td+Niw~uFvc^*zzTL2ti%)jZU4_r_l@GKz{=xEcQ zsUK12G=bmMJ=MY!7EDXuM$o|Y4vd7vVi)s`z@uw+Q|B}aCrS8CkqAnZr5^5xa@^I6!{_dO3fX+3;lXkB&uJL`^t%g9nXT3KT( z%l0Ij_nJ(kK1ZH*vf_Ykh2bhg=RMiiI8BK)g`a?;n{J6({lsK8V8)3=s9W%eEDKmC z6M0(AP=dHe-d+4L`lzF97+H6xl=Fc!%)G^Ebk#{>�~80%Sd!1=B_$4f6=S8qo(n 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 z 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

  • utoWbVFLE#oe&(<@n8CF;-tN;_Q~xPR<7 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 &j1gtu44=}HgIJ>5 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 z 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

  • Bs&E}tS*nw^ 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

    {7yFs_}P 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�ZAPB`0Y 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%0A5TuW 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

    9Vk@3noKMoPo#~UwX|v8oGZS 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