From c24b6c0106a67b1dbaf1fe3921755a93cec24c95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Iv=C3=A1n=20Eduardo=20Chavez=20Ayub?= <165610830+Ivan-Ayub97@users.noreply.github.com> Date: Thu, 24 Jul 2025 02:13:26 -0600 Subject: [PATCH] Add files via upload --- CHANGELOG.md | 27 +++++- README.md | 87 ++++++++--------- Setup.iss | 4 +- Warlock-Studio.py | 242 +++++++++++++++++++++------------------------- logo.ico | Bin 32997 -> 57335 bytes 5 files changed, 174 insertions(+), 186 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f786340..09063fb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,26 @@ +## Version 4.0.1 + +**Release date:** 27 July 2025 + +### Model Cleanup and Optimization + +#### 1.1 **SuperResolution-10 Model Removal** + +- **Model Deprecation**: Removed the SuperResolution-10 model from the application due to performance and compatibility issues. +- **Code Cleanup**: Eliminated the dedicated `AI_super_resolution` class and all related processing pipelines. +- **UI Updates**: Removed SuperResolution-10 from model selection dropdown and information dialogs. +- **Memory Optimization**: Cleaned up VRAM usage configurations by removing SuperResolution-10 entries (0.8 GB allocation). +- **Streamlined Processing**: Simplified the upscaling orchestrator by removing SuperResolution-specific routing logic. +- **Model List Cleanup**: Removed `SuperResolution_models_list` from the main AI models collection. + +#### 1.2 **Performance Improvements** + +- **Reduced Memory Footprint**: Application now uses less memory without the SuperResolution-10 model overhead. +- **Simplified Code Paths**: Cleaner processing logic with fewer conditional branches for model selection. +- **Enhanced Stability**: Removed potential failure points associated with the deprecated model. + +--- + ## Version 4.0 **Release date:** 18 July 2025 @@ -140,8 +163,6 @@ - The application now explicitly handles images with an alpha channel (4-channel BGRA) when using face restoration models. A new import for `COLOR_BGRA2BGR` was added, and it is used within `preprocess_face_image` to convert images to the 3-channel BGR format expected by the GFPGAN model. This prevents runtime errors and ensures correct processing of PNGs or other images with transparency. ---- - ## Version 2.2 **Release date:** 7 July 2025 @@ -219,8 +240,6 @@ - Core methods in AI classes now include checks for `None` inputs and feature default fallbacks (`case _:`) in `match` statements to prevent unexpected errors with unsupported data. ---- - ## Version 2.1 **Release date:** 23 June 2025 diff --git a/README.md b/README.md index 0d0de60..b67634a 100644 --- a/README.md +++ b/README.md @@ -2,13 +2,13 @@
-# Warlock-Studio +# 🎭 Warlock-Studio ### _AI Media Enhancement Suite_ [![Build Status](https://img.shields.io/badge/build-Stable_Release-blue?style=for-the-badge)](https://github.com/Ivan-Ayub97/Warlock-Studio/releases) -[![Version](https://img.shields.io/badge/Version-4.0--07.25-darkred?style=for-the-badge)](https://github.com/Ivan-Ayub97/Warlock-Studio/releases/tag/4.0) -[![License](https://img.shields.io/badge/License-MIT-green?style=for-the-badge)](LICENSE) +[![Version](https://img.shields.io/badge/Version-4.0.1--07.25-darkred?style=for-the-badge)](https://github.com/Ivan-Ayub97/Warlock-Studio/releases/tag/4.0.1) +[![License](https://img.shields.io/badge/License-MIT-purple?style=for-the-badge)](LICENSE) [![Downloads](https://img.shields.io/github/downloads/Ivan-Ayub97/Warlock-Studio/total?style=for-the-badge&color=gold)](https://github.com/Ivan-Ayub97/Warlock-Studio/releases) _Transform your media with cutting-edge AI technology_ @@ -19,11 +19,13 @@ _Transform your media with cutting-edge AI technology_ **Warlock-Studio** is a powerful, open-source desktop application for Windows that integrates state-of-the-art AI models for video and image enhancement. Inspired by the work of [Djdefrag](https://github.com/Djdefrag) on tools like **QualityScaler** and **FluidFrames**, this suite provides a unified, high-performance interface for upscaling, restoration, and frame interpolation. -Version 4.0 continues this evolution with the addition of **SuperResolution-10** model integration, enhanced AI architecture, and improved code stability for even better performance and reliability. +Version 4.0.1 continues this evolution with enhanced AI architecture and improved code stability for even better performance and reliability. Note: The SuperResolution-10 model has been removed in this version for better performance optimization. --- -### ► Download Installer (v4.0) +### ► Download Installer (v4.0.1) - Now Lightweight + +🚀 **NEW**: Installer size reduced from **1.4GB to ~450MB**! AI models (400MB) are automatically downloaded when first launched. Get the latest stable release from any of the following platforms: @@ -35,7 +37,7 @@ Get the latest stable release from any of the following platforms: - + Download from GitHub @@ -47,13 +49,13 @@ Get the latest stable release from any of the following platforms: ## Key Features - **State-of-the-Art AI Models** - A comprehensive suite including Real-ESRGAN, BSRGAN, IRCNN, **GFPGAN**, **RIFE**, and **SuperResolution-10** for denoising, resolution enhancement, detail restoration, extreme upscaling, and smooth frame interpolation. + A comprehensive suite including Real-ESRGAN, BSRGAN, IRCNN, **GFPGAN**, and **RIFE** for denoising, resolution enhancement, detail restoration, upscaling, and smooth frame interpolation. - **AI Face Restoration** Restore and enhance faces in old, blurry, or low-quality photos and videos with the integrated GFPGAN model, bringing cherished memories back to life. -- **SuperResolution-10 Model (New in v4.0)** - Extreme 10x upscaling capabilities specifically designed for very low-resolution images, perfect for bringing old photos back to life with exceptional detail. +- **High-Quality Upscaling Models** + Real-ESRGAN and BSRGAN models provide excellent upscaling capabilities for various image types, from anime to photorealistic content. - **AI Frame Interpolation & Slow Motion** Generate new in-between frames using RIFE to create ultra-smooth **2x, 4x, or 8x** motion or dramatic slow-motion effects. @@ -72,14 +74,14 @@ Get the latest stable release from any of the following platforms: --- -## What's New in Version 4.0 +## What's New in Version 4.0.1 -- ✅ **SuperResolution-10 Model:** Added support for the SuperResolution-10 model, providing extreme 10x upscaling capabilities specifically designed for very low-resolution images. -- ✅ **Enhanced AI Architecture:** Implemented the missing `AI_model_base` class with robust ONNX model loading, GPU acceleration support, and comprehensive error handling. +- 🔧 **Model Optimization:** Removed SuperResolution-10 model to improve overall performance and reduce complexity. For extreme upscaling needs, we recommend using Real-ESRGAN or BSRGAN models which provide excellent results. +- ✅ **Enhanced AI Architecture:** Implemented robust ONNX model loading, GPU acceleration support, and comprehensive error handling. - ✅ **Code Quality Improvements:** Fixed critical import errors, consolidated duplicate code sections, and improved type annotations for better maintainability. - ✅ **Improved Error Handling:** Added graceful degradation mechanisms that prevent crashes and provide meaningful error messages during processing. -- ✅ **Complete Model Integration:** SuperResolution-10 is fully integrated into the UI, processing pipeline, and information dialogs with proper VRAM management. -- 🚀 **Smart Model Distribution:** New lightweight installer (300MB vs 1.4GB) with automatic AI model download system that fetches models on first launch. +- ✅ **Streamlined Model Integration:** Optimized model integration in the UI and processing pipeline for better performance. +- 🚀 **Smart Model Distribution:** Lightweight installer (~450MB) with automatic AI model download system that fetches models on first launch. - 📦 **Optimized Packaging:** Enhanced PyInstaller configuration excludes AI models from executable, significantly reducing download and installation time. --- @@ -90,8 +92,8 @@ Version 4.0 introduces a revolutionary approach to AI model distribution: ### 🎯 **Lightweight Installation** -- **Installer Size:** Reduced from 1.4GB to ~300MB (78% size reduction) -- **First Launch:** AI models (327MB) download automatically with progress tracking +- **Installer Size:** Reduced from 1.4GB to ~450MB (68% size reduction) +- **First Launch:** AI models (~400MB) download automatically with progress tracking - **Bandwidth Friendly:** Users with limited internet can get started faster ### 🛡️ **Reliability Features** @@ -104,7 +106,7 @@ Version 4.0 introduces a revolutionary approach to AI model distribution: ## Interface Previews -### 🔹 Main View (v4.0) +### 🔹 Main View (v4.0.1) ![Screenshot of Warlock-Studio's main interface](rsc/Capture.png) @@ -168,12 +170,12 @@ Warlock-Studio uses [PyInstaller](https://www.pyinstaller.org/) and [Inno Setup] --- -## Development Status — v4.0-07.25 +## Development Status — v4.0.1-07.25 | Component | Status | Notes | | :---------------------------------- | :-------------- | :----------------------------------------------------------------------------------- | | **Upscaling Models (ESRGAN, etc.)** | 🟢 **Stable** | Fully integrated with dynamic VRAM recovery for enhanced stability. | -| **SuperResolution-10 Model** | 🟢 **New** | Extreme 10x upscaling for very low-resolution images with robust error handling. | +| **Optimized Model Suite** | 🟢 **Enhanced** | Streamlined AI models for optimal performance and reliability. | | **Face Restoration (GFPGAN)** | 🟢 **Stable** | High-quality face enhancement and restoration capabilities. | | **Frame Interpolation (RIFE)** | 🟢 **Stable** | Includes slow-motion and intermediate frame generation capabilities. | | **Batch Processing** | 🟢 **Stable** | Reliable processing with improved error handling and resource management. | @@ -202,7 +204,6 @@ Warlock-Studio/ ├──RealSRx4_Anime_fp16.onnx ├──RIFE_fp32.onnx ├──RIFE_Lite_fp32.onnx - └──super-resolution-10.onnx ├──Assets/ │ └──├──banner.png @@ -248,37 +249,31 @@ Warlock-Studio/ ├──Warlock-Studio.py # Main └──Warlock-Studio.spec ``` -## AI models Workflow -![Workflow](rsc/WorkflowBSRGAN.png) -![Workflow](rsc/WorkflowIRCNN.png) -![Workflow](rsc/WorkflowRealESRGAN.png) -![Workflow](rsc/WorkflowRIFE.png) --- ## Integrated Technologies & Licenses -| Technology | License | Author / Maintainer | Source Code / Homepage | -| :------------------ | :------------------------ | :------------------------------------------------------------ | :-------------------------------------------------------------------------------------------- | -| QualityScaler | MIT | [Djdefrag](https://github.com/Djdefrag) | [GitHub](https://github.com/Djdefrag/QualityScaler) | -| RealScaler | MIT | [Djdefrag](https://github.com/Djdefrag) | [GitHub](https://github.com/Djdefrag/RealScaler) | -| FluidFrames | MIT | [Djdefrag](https://github.com/Djdefrag) | [GitHub](https://github.com/Djdefrag/FluidFrames) | -| Real-ESRGAN | BSD 3-Clause / Apache 2.0 | [Xintao Wang](https://github.com/xinntao) | [GitHub](https://github.com/xinntao/Real-ESRGAN) | -| GFPGAN | Apache 2.0 | [TencentARC / Xintao Wang](https://github.com/TencentARC) | [GitHub](https://github.com/TencentARC/GFPGAN) | -| RIFE | Apache 2.0 | [hzwer](https://github.com/hzwer) | [GitHub](https://github.com/megvii-research/ECCV2022-RIFE) | -| SRGAN | CC BY-NC-SA 4.0 | [TensorLayer Community](https://github.com/tensorlayer) | [GitHub](https://github.com/tensorlayer/srgan) | -| BSRGAN | Apache 2.0 | [Kai Zhang](https://github.com/cszn) | [GitHub](https://github.com/cszn/BSRGAN) | -| IRCNN | BSD / Mixed | [Kai Zhang](https://github.com/cszn) | [GitHub](https://github.com/cszn/IRCNN) | -| Anime4K | MIT | [Tianyang Zhang (bloc97)](https://github.com/bloc97) | [GitHub](https://github.com/bloc97/Anime4K) | -| Super Resolution 10 | MIT | [ONNX Model Zoo Contributors](https://github.com/onnx/models) | [GitHub](https://github.com/onnx/models/tree/main/vision/super_resolution/sub_pixel_cnn_2016) | -| ONNX Runtime | MIT | [Microsoft](https://github.com/microsoft) | [GitHub](https://github.com/microsoft/onnxruntime) | -| PyTorch | BSD 3-Clause | [Meta AI](https://pytorch.org/) | [GitHub](https://github.com/pytorch/pytorch) | -| FFmpeg | LGPL / GPL (varies) | [FFmpeg Team](https://ffmpeg.org/) | [Official Site](https://ffmpeg.org) | -| ExifTool | Perl Artistic License | [Phil Harvey](https://exiftool.org/) | [Official Site](https://exiftool.org/) | -| DirectML | MIT | [Microsoft](https://github.com/microsoft/) | [GitHub](https://github.com/microsoft/DirectML) | -| Python | PSF License | [Python Software Foundation](https://www.python.org/) | [Official Site](https://www.python.org) | -| PyInstaller | GPLv2+ | [PyInstaller Team](https://github.com/pyinstaller) | [GitHub](https://github.com/pyinstaller/pyinstaller) | -| Inno Setup | Custom License | [Jordan Russell](http://www.jrsoftware.org/) | [Official Site](http://www.jrsoftware.org/isinfo.php) | +| Technology | License | Author / Maintainer | Source Code / Homepage | +| :------------ | :------------------------ | :-------------------------------------------------------- | :--------------------------------------------------------- | +| QualityScaler | MIT | [Djdefrag](https://github.com/Djdefrag) | [GitHub](https://github.com/Djdefrag/QualityScaler) | +| RealScaler | MIT | [Djdefrag](https://github.com/Djdefrag) | [GitHub](https://github.com/Djdefrag/RealScaler) | +| FluidFrames | MIT | [Djdefrag](https://github.com/Djdefrag) | [GitHub](https://github.com/Djdefrag/FluidFrames) | +| Real-ESRGAN | BSD 3-Clause / Apache 2.0 | [Xintao Wang](https://github.com/xinntao) | [GitHub](https://github.com/xinntao/Real-ESRGAN) | +| GFPGAN | Apache 2.0 | [TencentARC / Xintao Wang](https://github.com/TencentARC) | [GitHub](https://github.com/TencentARC/GFPGAN) | +| RIFE | Apache 2.0 | [hzwer](https://github.com/hzwer) | [GitHub](https://github.com/megvii-research/ECCV2022-RIFE) | +| SRGAN | CC BY-NC-SA 4.0 | [TensorLayer Community](https://github.com/tensorlayer) | [GitHub](https://github.com/tensorlayer/srgan) | +| BSRGAN | Apache 2.0 | [Kai Zhang](https://github.com/cszn) | [GitHub](https://github.com/cszn/BSRGAN) | +| IRCNN | BSD / Mixed | [Kai Zhang](https://github.com/cszn) | [GitHub](https://github.com/cszn/IRCNN) | +| Anime4K | MIT | [Tianyang Zhang (bloc97)](https://github.com/bloc97) | [GitHub](https://github.com/bloc97/Anime4K) | +| ONNX Runtime | MIT | [Microsoft](https://github.com/microsoft) | [GitHub](https://github.com/microsoft/onnxruntime) | +| PyTorch | BSD 3-Clause | [Meta AI](https://pytorch.org/) | [GitHub](https://github.com/pytorch/pytorch) | +| FFmpeg | LGPL / GPL (varies) | [FFmpeg Team](https://ffmpeg.org/) | [Official Site](https://ffmpeg.org) | +| ExifTool | Perl Artistic License | [Phil Harvey](https://exiftool.org/) | [Official Site](https://exiftool.org/) | +| DirectML | MIT | [Microsoft](https://github.com/microsoft/) | [GitHub](https://github.com/microsoft/DirectML) | +| Python | PSF License | [Python Software Foundation](https://www.python.org/) | [Official Site](https://www.python.org) | +| PyInstaller | GPLv2+ | [PyInstaller Team](https://github.com/pyinstaller) | [GitHub](https://github.com/pyinstaller/pyinstaller) | +| Inno Setup | Custom License | [Jordan Russell](http://www.jrsoftware.org/) | [Official Site](http://www.jrsoftware.org/isinfo.php) | --- diff --git a/Setup.iss b/Setup.iss index e3a8bd8..9fc854d 100644 --- a/Setup.iss +++ b/Setup.iss @@ -1,9 +1,9 @@ ; =================================================================== -; Warlock-Studio 4.0 - Inno Setup Script with Online Download +; Warlock-Studio 4.0.1 - Inno Setup Script with Online Download ; =================================================================== #define AppName "Warlock-Studio" -#define AppVersion "4.0" +#define AppVersion "4.0.1" #define AppPublisher "Iván Eduardo Chavez Ayub" #define AppURL "https://github.com/Ivan-Ayub97/Warlock-Studio" #define AppExeName "Warlock-Studio.exe" diff --git a/Warlock-Studio.py b/Warlock-Studio.py index bcfee91..308dff3 100644 --- a/Warlock-Studio.py +++ b/Warlock-Studio.py @@ -107,8 +107,24 @@ def find_by_relative_path(relative_path: str) -> str: return os_path_join(base_path, relative_path) +def image_read(path: str) -> numpy_ndarray: + """Read an image file and return it as a numpy array.""" + try: + if not os_path_exists(path): + raise FileNotFoundError(f"Image file not found: {path}") + + image = opencv_imdecode(numpy_frombuffer(open(path, 'rb').read(), dtype=uint8), IMREAD_UNCHANGED) + if image is None: + raise ValueError(f"Failed to read image: {path}") + return image + except Exception as e: + error_msg = f"Error reading image {path}: {str(e)}" + log_and_report_error(error_msg) + raise RuntimeError(error_msg) + + app_name = "Warlock-Studio" -version = "4.0-07.25" +version = "4.0.1-07.25" # AI Model Base Class @@ -128,75 +144,23 @@ class AI_model_base: f"Model file not found: {self.model_path}") # Set up providers for GPU acceleration - providers = ['DmlExecutionProvider', 'CPUExecutionProvider'] + # Use available GPU or CPU if no compatible GPU found + providers = ['CUDAExecutionProvider', 'DmlExecutionProvider', 'CPUExecutionProvider'] self.inferenceSession = InferenceSession( self.model_path, providers=providers ) print( f"[AI] Successfully loaded model: {os_path_basename(self.model_path)}") + except FileNotFoundError as fnf_error: + print(f"[AI ERROR] Model file not found: {fnf_error}") + # Handle specific file not found error except Exception as e: - print( - f"[AI ERROR] Failed to load model {self.model_path}: {str(e)}") + print(f"[AI ERROR] Failed to load model due to unexpected error: {str(e)}") + # Log the error and avoid crashing the application + self.inferenceSession = None # Reset inference session on error raise -# AI Super Resolution Implementation - - -class AI_super_resolution(AI_model_base): - def __init__(self, model_path: str, device: str = "CPU"): - super().__init__(model_path, device) - self.model_name = "SuperResolution-10" - self.upscale_factor = 10 # Based on the model name - - def preprocess_super_resolution_image(self, image: numpy_ndarray) -> numpy_ndarray: - """ - Preprocess image for super resolution model input. - """ - # Convert image to float32 and normalize - image = (image.astype(float32) / 255.0) - - # Convert image to CHW format (channels, height, width) - image = numpy_transpose(image, (2, 0, 1)) - - # Add batch dimension - image = numpy_expand_dims(image, axis=0) - return image - - def postprocess_super_resolution_image(self, output: numpy_ndarray) -> numpy_ndarray: - """ - Postprocess model output to an image. - """ - # Remove batch dimension and convert back to HWC format - output = numpy_squeeze(output, axis=0) - output = numpy_transpose(output, (1, 2, 0)) - - # Clip values and convert to uint8 - output = numpy_clip(output * 255.0, 0, 255).astype(uint8) - return output - - def enhance_image(self, image: numpy_ndarray) -> numpy_ndarray: - """ - Enhance image using the super resolution model. - """ - input_image = self.preprocess_super_resolution_image(image) - input_name = self.inferenceSession.get_inputs()[0].name - output_name = self.inferenceSession.get_outputs()[0].name - result = self.inferenceSession.run( - [output_name], {input_name: input_image})[0] - enhanced_image = self.postprocess_super_resolution_image(result) - return enhanced_image - - def AI_orchestration(self, image: numpy_ndarray) -> numpy_ndarray: - """ - Main orchestration function for super resolution processing. - """ - try: - return self.enhance_image(image) - except Exception as e: - print(f"[SUPER RESOLUTION ERROR] {str(e)}") - # Return original image if enhancement fails - return image # Esquema de colores mejorado - Rojo, Gris, Amarillo, Negro, Blanco @@ -223,7 +187,6 @@ VRAM_model_usage = { 'IRCNN_Mx1': 4, 'IRCNN_Lx1': 4, 'GFPGAN': 1.8, - 'SuperResolution-10': 0.8, } MENU_LIST_SEPARATOR = ["----"] @@ -232,11 +195,10 @@ BSRGAN_models_list = ["BSRGANx4", "BSRGANx2", "RealESRGANx4", "RealESRNetx4"] IRCNN_models_list = ["IRCNN_Mx1", "IRCNN_Lx1"] Face_restoration_models_list = ["GFPGAN"] RIFE_models_list = ["RIFE", "RIFE_Lite"] -SuperResolution_models_list = ["SuperResolution-10"] AI_models_list = (SRVGGNetCompact_models_list + MENU_LIST_SEPARATOR + BSRGAN_models_list + MENU_LIST_SEPARATOR + IRCNN_models_list + MENU_LIST_SEPARATOR + Face_restoration_models_list + - MENU_LIST_SEPARATOR + SuperResolution_models_list + MENU_LIST_SEPARATOR + RIFE_models_list) + MENU_LIST_SEPARATOR + RIFE_models_list) frame_interpolation_models_list = RIFE_models_list frame_generation_options_list = [ "x2", "x4", "x8", "Slowmotion x2", "Slowmotion x4", "Slowmotion x8" @@ -277,32 +239,49 @@ else: if os_path_exists(USER_PREFERENCE_PATH): print(f"[{app_name}] Preference file exist") - with open(USER_PREFERENCE_PATH, "r") as json_file: - json_data = json_load(json_file) - default_AI_model = json_data.get( - "default_AI_model", AI_models_list[0]) - default_AI_multithreading = json_data.get( - "default_AI_multithreading", AI_multithreading_list[0]) - default_gpu = json_data.get( - "default_gpu", gpus_list[0]) - default_keep_frames = json_data.get( - "default_keep_frames", keep_frames_list[1]) - default_image_extension = json_data.get( - "default_image_extension", image_extension_list[0]) - default_video_extension = json_data.get( - "default_video_extension", video_extension_list[0]) - default_video_codec = json_data.get( - "default_video_codec", video_codec_list[0]) - default_blending = json_data.get( - "default_blending", blending_list[1]) - default_output_path = json_data.get( - "default_output_path", OUTPUT_PATH_CODED) - default_input_resize_factor = json_data.get( - "default_input_resize_factor", str(50)) - default_output_resize_factor = json_data.get( - "default_output_resize_factor", str(100)) - default_VRAM_limiter = json_data.get( - "default_VRAM_limiter", str(4)) + try: + with open(USER_PREFERENCE_PATH, "r") as json_file: + json_data = json_load(json_file) + default_AI_model = json_data.get( + "default_AI_model", AI_models_list[0]) + default_AI_multithreading = json_data.get( + "default_AI_multithreading", AI_multithreading_list[0]) + default_gpu = json_data.get( + "default_gpu", gpus_list[0]) + default_keep_frames = json_data.get( + "default_keep_frames", keep_frames_list[1]) + default_image_extension = json_data.get( + "default_image_extension", image_extension_list[0]) + default_video_extension = json_data.get( + "default_video_extension", video_extension_list[0]) + default_video_codec = json_data.get( + "default_video_codec", video_codec_list[0]) + default_blending = json_data.get( + "default_blending", blending_list[1]) + default_output_path = json_data.get( + "default_output_path", OUTPUT_PATH_CODED) + default_input_resize_factor = json_data.get( + "default_input_resize_factor", str(50)) + default_output_resize_factor = json_data.get( + "default_output_resize_factor", str(100)) + default_VRAM_limiter = json_data.get( + "default_VRAM_limiter", str(4)) + except (json.JSONDecodeError, FileNotFoundError, PermissionError) as e: + print(f"[{app_name} ERROR] Failed to load preferences file: {str(e)}") + print(f"[{app_name}] Using default coded values instead") + # Fall back to default values + default_AI_model = AI_models_list[0] + default_AI_multithreading = AI_multithreading_list[0] + default_gpu = gpus_list[0] + default_keep_frames = keep_frames_list[1] + default_image_extension = image_extension_list[0] + default_video_extension = video_extension_list[0] + default_video_codec = video_codec_list[0] + default_blending = blending_list[1] + default_output_path = OUTPUT_PATH_CODED + default_input_resize_factor = str(50) + default_output_resize_factor = str(100) + default_VRAM_limiter = str(4) else: print(f"[{app_name}] Preference file does not exist, using default coded value") @@ -386,6 +365,9 @@ class AI_upscale: return 4 def _load_inferenceSession(self) -> None: + if self.inferenceSession is not None: + print(f"[AI] Model {self.AI_model_name} is already loaded.") + return try: # Check if model file exists if not os_path_exists(self.AI_model_path): @@ -400,6 +382,7 @@ class AI_upscale: case 'GPU 2': provider_options = [{"device_id": "1"}] case 'GPU 3': provider_options = [{"device_id": "2"}] case 'GPU 4': provider_options = [{"device_id": "3"}] + case _: provider_options = [{"device_id": "0"}] # Default case inference_session = InferenceSession( path_or_bytes=self.AI_model_path, @@ -411,10 +394,13 @@ class AI_upscale: print( f"[AI] Successfully loaded model: {os_path_basename(self.AI_model_path)}") + except FileNotFoundError as fnf_error: + print(f"[AI ERROR] AI model file not found: {fnf_error}") + # Graceful handling of file not found except Exception as e: - error_msg = f"Failed to load AI model {os_path_basename(self.AI_model_path)}: {str(e)}" - print(f"[AI ERROR] {error_msg}") - raise RuntimeError(error_msg) + print(f"[AI ERROR] Unexpected error loading AI model: {str(e)}") + # Reset inference session to None upon error + self.inferenceSession = None # INTERNAL CLASS FUNCTIONS @@ -450,8 +436,9 @@ class AI_upscale: old_height, old_width = self.get_image_resolution(image) - new_width = int(old_width * self.input_resize_factor) - new_height = int(old_height * self.input_resize_factor) + scale = self.input_resize_factor / 100.0 + new_width = int(old_width * scale) + new_height = int(old_height * scale) new_width = new_width if new_width % 2 == 0 else new_width + 1 new_height = new_height if new_height % 2 == 0 else new_height + 1 @@ -467,15 +454,16 @@ class AI_upscale: old_height, old_width = self.get_image_resolution(image) - new_width = int(old_width * self.output_resize_factor) - new_height = int(old_height * self.output_resize_factor) + scale = self.output_resize_factor / 100.0 + new_width = int(old_width * scale) + new_height = int(old_height * scale) new_width = new_width if new_width % 2 == 0 else new_width + 1 new_height = new_height if new_height % 2 == 0 else new_height + 1 - if self.output_resize_factor > 1: + if scale > 1.0: return opencv_resize(image, (new_width, new_height), interpolation=INTER_CUBIC) - elif self.output_resize_factor < 1: + elif scale < 1.0: return opencv_resize(image, (new_width, new_height), interpolation=INTER_AREA) else: return image @@ -621,7 +609,7 @@ class AI_upscale: # Default fallback to 255 case _: return (onnx_output * 255).astype(uint8) - def AI_upscale(self, image: numpy_ndarray) -> numpy_ndarray: + def run_upscaling(self, image: numpy_ndarray) -> numpy_ndarray: # Optimización: Usar memoria contigua antes de procesar image = numpy_ascontiguousarray(image, dtype=float32) image_mode = self.get_image_mode(image) @@ -682,7 +670,7 @@ class AI_upscale: t_height, t_width = self.calculate_target_resolution(image) tiles_x, tiles_y = self.calculate_tiles_number(image) tiles_list = self.split_image_into_tiles(image, tiles_x, tiles_y) - tiles_list = [self.AI_upscale(tile) for tile in tiles_list] + tiles_list = [self.run_upscaling(tile) for tile in tiles_list] return self.combine_tiles_into_image(image, tiles_list, t_height, t_width, tiles_x) @@ -698,7 +686,7 @@ class AI_upscale: if self.image_need_tilling(resized_image): upscaled_image = self.AI_upscale_with_tilling(resized_image) else: - upscaled_image = self.AI_upscale(resized_image) + upscaled_image = self.run_upscaling(resized_image) return self.resize_with_output_factor(upscaled_image) @@ -788,15 +776,16 @@ class AI_interpolation: old_height, old_width = self.get_image_resolution(image) - new_width = int(old_width * self.input_resize_factor) - new_height = int(old_height * self.input_resize_factor) + scale = self.input_resize_factor / 100.0 + new_width = int(old_width * scale) + new_height = int(old_height * scale) new_width = new_width if new_width % 2 == 0 else new_width + 1 new_height = new_height if new_height % 2 == 0 else new_height + 1 - if self.input_resize_factor > 1: + if scale > 1: return opencv_resize(image, (new_width, new_height), interpolation=INTER_CUBIC) - elif self.input_resize_factor < 1: + elif scale < 1: return opencv_resize(image, (new_width, new_height), interpolation=INTER_AREA) else: return image @@ -805,15 +794,16 @@ class AI_interpolation: old_height, old_width = self.get_image_resolution(image) - new_width = int(old_width * self.output_resize_factor) - new_height = int(old_height * self.output_resize_factor) + scale = self.output_resize_factor / 100.0 + new_width = int(old_width * scale) + new_height = int(old_height * scale) new_width = new_width if new_width % 2 == 0 else new_width + 1 new_height = new_height if new_height % 2 == 0 else new_height + 1 - if self.output_resize_factor > 1: + if scale > 1: return opencv_resize(image, (new_width, new_height), interpolation=INTER_CUBIC) - elif self.output_resize_factor < 1: + elif scale < 1: return opencv_resize(image, (new_width, new_height), interpolation=INTER_AREA) else: return image @@ -1006,15 +996,16 @@ class AI_face_restoration: def resize_with_input_factor(self, image: numpy_ndarray) -> numpy_ndarray: old_height, old_width = self.get_image_resolution(image) - new_width = int(old_width * self.input_resize_factor) - new_height = int(old_height * self.input_resize_factor) + scale = self.input_resize_factor / 100.0 + new_width = int(old_width * scale) + new_height = int(old_height * scale) new_width = new_width if new_width % 2 == 0 else new_width + 1 new_height = new_height if new_height % 2 == 0 else new_height + 1 - if self.input_resize_factor > 1: + if scale > 1: return opencv_resize(image, (new_width, new_height), interpolation=INTER_CUBIC) - elif self.input_resize_factor < 1: + elif scale < 1: return opencv_resize(image, (new_width, new_height), interpolation=INTER_AREA) else: return image @@ -1868,8 +1859,8 @@ def cleanup_on_exit(): for temp_file in temp_files: try: os_remove(temp_file) - except Exception: - pass + except Exception as e: + print(f"[ERROR] Could not remove temporary file {temp_file}: {str(e)}") # Stop any running processes stop_upscale_process() @@ -3602,13 +3593,6 @@ def upscale_orchestrator( input_resize_factor, output_resize_factor, tiles_resolution) for _ in range(selected_AI_multithreading) ] - # Check if the selected model is a super resolution model - elif selected_AI_model in SuperResolution_models_list: - AI_upscale_instance_list = [ - AI_super_resolution( - f"AI-onnx{os_separator}super-resolution-10.onnx", selected_gpu) - for _ in range(selected_AI_multithreading) - ] else: AI_upscale_instance_list = [ AI_upscale(selected_AI_model, selected_gpu, @@ -3691,11 +3675,7 @@ def upscale_image( write_process_status( process_status_q, f"{file_number}. Enchanting your image. Be patient...") - # Check if using SuperResolution-10 model - if selected_AI_model in SuperResolution_models_list: - upscaled_image = AI_instance.enhance_image(starting_image) - else: - upscaled_image = AI_instance.AI_orchestration(starting_image) + upscaled_image = AI_instance.AI_orchestration(starting_image) if selected_blending_factor > 0: blend_images_and_save( @@ -4435,12 +4415,6 @@ def place_AI_menu(): " • Lite is 10% faster than full model\n" + " • Recommended for GPUs with VRAM < 4GB \n", - "\n SuperResolution-10 \n" - "\n • Advanced super-resolution model with 10x upscaling\n" - " • Year: 2023\n" - " • Function: High-resolution image enhancement\n" - " • Excellent for very low resolution images\n" - " • Specialized for significant resolution increases\n", ] MessageBox( diff --git a/logo.ico b/logo.ico index b12d0fd2ad0f66b78d2716b9eea209d56756d278..d8acdb6f75f0f66ff1ad38a39f8c0bf3fd476ec0 100644 GIT binary patch literal 57335 zcmV)qK$^b*00962000000096X0O8*N02TlM0EtjeM-2)Z3IG5A4M|8uQUCw}00001 z00;&E003NasAd2F00D1uPE-NUqIa4A0Du5VL_t(|+U#8gd=vKr%Ao>R4DG! zqH}lmjWKrxX3Pb)F*b(7kSf&i78z_Xh75O?x+ItT|9%%~lBNZ=va$dA`+Qz6xm=RV z_1^dSdjOrQb9JuH)ww!X=jvRYt8;a(&egd(SLfzgJk>YRw zKRHOFNqA&r0?Zn#hnq7K;r&O9u;8OKSo&iZ*p#0EyO(u?V{5uW^QIoaZ|e#C9<)7( zwugG5Eqc5k(axSwv#|#pUyY8f=mAGpb%*W6U17t*F0f*18Wen*3Nzj?z#I2y;l_c< zkkvf~#y_fuJBKHNK8}UpKsf{i$bcZ!5FZ-@YPAYt)SckbxjNThUjBhn#OMQ{aK?V!;$o zLue=keHap0mJzg#&egd(*LhY@IA(MLkrZ?>EKGmh0BdKZL)F@@!2gDbe-~2I;zGaq zz#O%&Bu%toPD;$Sg{fB@D^7i+VMXfbhVrx*&Xsiev8Fuzm-=PtyBe3J?`c|=wx?-n z>YnDMse7B3rS7#XOWS8z>ZFu?&4|#xy_V(adz+W1354FWw-LP$Q^V5qJ+B*@l(rqfahPAH8RB>Z9vs7_XoIiNTOF$t1n$ir6TCs2~hXr&o4` z@^8&B;R!vEG8+9ZIU)&2g~y$%b9FB8^Aii($Y26K8l#7eKcyo^?`wZC+Tb_&JyYbW z87anNrRn{T7n!d=wj}kFn)0;#=A~)Hma^0et~~81qGqlvm9v$lAxh>qBww9-!YFe89OT+RmWyg!Vbve}Q9 zAcjBL4KYV|7=4#EymEFLy{{n6cxZ9TBel!YCNwTh`M$Y44bi#&{}&<0>aGZp82YEEVAePj>{;AZkcR2$ z$w5md8YElhn){tAOSz+_B;~`#veY$**>`ZI<{GX9NofyqXLxVMc0cBP`|Z!U5^pWR zzK?VNE*Il_eP^jB@bCg*5O4#7G6V+Y89cW%gX30oJH@T(`OBUq-JX2xuH^7fUN&~# z9G&a`cLn%M;nAx#Ku4+I+c$K;pX-H~egNEan<04ptS<4#i_!+3D@%J1sq(p&(v&@1 zX-b2wIK^r!Ld;i;$z*3#=hi1)mu`QpRa{A#L6ANP)=AnR4lI%0I3rLhI z2t;O(t#TlwurzEh#?g$YA+5CyUCFoiP@wL~$Jy#_Q*EcLg1X6{v z^G54jm&XbTQ9wkf9Nv6DgPw)Ml5dT`pXrJor}%A{pDH_3mNvMyEcJcF^lK6Go^4@n zJA?C%=e&#IQ@qrEhXlt`88Mx8X{xQRG{t%%Kh?TzuDRjY8OGh~rkR%Jd}=6|{Hi|h zjfaw_z4}n{=!q}svfg?`*XQo5l6z|ni%2wZ7CRt82<^#`L4HkPg&;RW6Lrp)K?B&YFRgQWqoC4>7nwh z7s{vi(F24A@Mo`wmmW%SU3-!wJ8!_w^$$w>Xt}Vxs$U$`{hT34`>CHA!cLT>X=<0I zJ!&aWozIn}96^%X;*#t|CJzAcAk6HgDK2%LLsX0QomgT%z3nH{t|edUf0;H;`{UQI zBtQH3jR_AA?xwy+6UX!uM^lIsWKrmhB9XEjhAj{rNtij-1kc~0gX;$;z`$;?(A^vh zsfh86Nc~3dgX9dEFzuQes8`D5O093CN@r zsMRb;<&^MAvp&Iokh`E@YM+SHt1|~St{pnXx@OoRTg5O7ziKFNL&UGn;?eWQri!6! zPcP4UdUNhT?G4u$BCw|L!UL)3Q$j%@mIFhwoi}6W`g>Mbhy+-rqi%Eq#kkGN9vCdAM+9@5_3ws(@lUgt~fOpjIgs**J8u7xQz%fB)1T=b!S z&fAY9eR|hbakmcW7NZLeAz~5piP0DOaqD`(`;Tg%mr)IIG!5ct8bl%*EFf(4Rd zAQtUsX$Dy8&oM|0se)8hJWv#cK9dFteJ-I;fmqCdQbt3PiiPe57GA$A0d~(%1-_}5 zBQfb_!O8jfbx9BvNdbdYe43$QXK^p+VWNOPH41LI(-?So+2D-E%AudwDu(X0t;*#1 zm03K$GLyHVtxb6BAPfkrht^suvVJ?cEbH@zouW431eoMj^SM-m$R;{Ga7l@;=G{@gPvR52LMvwwY#1w)70tf^|G-6K7 z!MJpS}K1Mqu$LXW;lf!njw z;*hj{+)`#A9BO+rYB5|j!WVq%a)N6%@7`j=fhG2Am;D?H}UT>)dqr3Rj<9NgQw zCTl8^_|>*mnBg-WgdQ*Nhpw51x8*7k5%$N+dJC_+gMa`Qt23?jt1~z5$nQ7iqn8Xg zq~Q1XEp|s?RHO{z)ScOeo$IgK_~CLSv2H_lupanrJs>7sAFy>{7fp3p>eGnvR|{&s zJG1*_d_<)tzNyU29mqDHE1P6oKK9Y%&#oI1H(VS=BJKze}FDl@krm7a5|`J6-QeplE-mS1Bw+mZSmj0-vG_?Xr{03VgX7m)kEdbz4?9%@9 zVpHw9AN9XZeOvS4oma$OA00uek=7c-+Xe!wq>z$N07+7yQqjPuD5TQ=`wM3@Dy;H9 z2CIJRFJ%0kTr(uTd2Qw-Tg8ymwpA?>pIeD+`{e_8TVWDncDaN3UWRAqJoyAC<>jG9pI0NbN zSk3l>(#fgl=CwlkRFmRtN$RbL@fRc8y~Xm zn*<5&BE-bl)-PZXgG(IDFKxy6wrr`}Yv{NFq$QN6^8%2p#?C=E|3JkMOU6q&4>W*T=-d?9)I^@C!s1|aZV=Ql8og2+e`42Bq_-v58z zh-yX&y^VG-;}4F2<@0-oSFIiLAh#xS6Tdo(bE@y0LxmSI2y>CN&vs{icM$N}m+J-! zxkw{e9D@L)y8{S@383QC1}v3>PaG-h_1TOMv{)PP`|_oD;k+WlJ0k_1%WDM%MZxXE z;~@YDIJp8R@WlD=%t_PLm8HDPm74doNOw2qo_jpMG=;A!Olhk4&bVXTqsgE4NKy5} zK`AVKNMz58BorhhszIgx|BY2Ekty@sO^Lur#0WeehKhwf#f@u+zQk1yJz;ai^j%Va z)nL0#-%8?3+ooJQ0Pr5iiFpp~;|ddz8PUfM0;?Ul1NeI?vzlrv2Cd$>Amiq%2Ps6j zX8}$%zI^}#GI^(OpmU+cO0l}i!}RwJXxkrF&P*4dElt1IQkJ?JF?UmI72hZjUu2i~ z=L*futG+S(^4fjLV@*lwE&!5q$D@7OAao^5g3IY3}}f8Mqv4l%RD&eZM<-Ujn??E!gyd0lp%Ox2zd-^l(|PPk;K-7>EDYA3cjZ6$L|7cxO8Ce|80j$YAu%NyuJh zgtl12uZj;mT$I+Mu{`xVTPafa9TJ{*m;R10A7=dOLX)-PJN?#ik0rgXi6PC{sds(9 zc!-WB!IT~kv?>88`u{&3tyGdiHs6o$>jWU(S=2YBX-(Gm{OY0Ayo>p?x1@wt3f zV0J#Y4T+yEb@>B0!8DMx_y=;&0|fZ^JknkSg|!TaSs+klR%6|o0R{z4QG>FYR`t;oFg>$@ISg@ z;6Tfop(~IYZn1mmovJ^g@@~8>pJ<9?vf{+R2UiagmM{NtNC6O~)p_qMh11O@)lfsE9j9#vx5Y36H#@L`?tRDN3P~ za*#>v+D-G;LC~{{EcnRMfmd4B4Exo^@J?qRdd!t~5ma=a4C~G8xe}lInzO}xv*R(B z>(2a=Hnjo4KY+~*r=!r3NMx%V(p+27f90=>(r+Dod#r@#UxbHmvioNg5)p{SouBP8|u^6H`Rh<>?Pt%Tl%@M(0{FzSFy3n!=yVPie^g#JKpTp)uDY z#ur(ZXFx=l0uo|X5F=Lr@gHk=sgT$mX#AcbaM$e#!N*n%yvbTQbQ>?I+=$^_4!=yE z!jyk^KB(3BUA1dBeQdWc#fJl5@iGxl%8{a5@UTO$CWP(omFS zcNDr68Cfd_ojA3$&$O~1Ov48EQAG3n^)T*n94$~lFCm)I88P_3Sn)~%G5thXKQB#a zyR~mg7fnN1`e(M1loPz**>{BZoFIUueuhYN5WfC5o8?pB1eSDkll+^ zePsL6?0>HUjdj?|{NaHx{snFDxr)pixyqs2TRix`teCTef=(vvX~Mfbdw% zH|0w#?>$P)Oi)uj4$fCRYRQ-UhCbIOXaX*hwkGfI!-+&CIFYDdOImTo5L;8lfP=^^ z_0~X#Hc;>cInJ-?+RDl zk`!>Zyh{&jdFm2daZ0nz#rzJ{-{IlMPNc)xrus=QX^Og=n5zInLv<<|{6Z8Um687m z=bo?C+h_+oz99>yPS8ZuR1Cb^R++VfcQL*rpC2(6hnU}|TAuBt-uv3;Mm%Efqw{4u z@4uSpesCc&wNx=do2Dv<*5pc8as?8bEl(<#1a^{of#-?JM&X4EcfKzL;VERX0;n5pYAdZOvg)9c7A{wG238W7y zAS$}kWVq}Wp-{ruyY#@y)xaO?0jp=FMAnw2-Nlup{)|+6o2xX}J%bNP{DzVge&uA- z?)$Haf5XpDhGE|?AV>}g$!Z`;oU;4hlll=+O6Z>CVE)sCps{WWKVy zD6`kjvcb&P?{uN=xY|sFhO@{nprepc8H!FMV98gw{P|T-cMd_hjBeOai7?IPLtMGX ze+ZlAr_+t)X=9Pff6PPbyF2|6P=S z;>K7z^Vbc5)w9zTwUq2lD@_6ca#2k68_{u zN%IpoQZFLoBStf)RuQfMm0!09+1>VMq{1$b`b3CEujtU4FZAQqr5sQfDGYujSpd`3mjC7pDjw z{tZ7Ek3Ds3!r0&-c@odR1|gxi(@z*sNb1x7;rjA>N7-#&zB&_rEyy72*9`vBwmPfU zGqcaJ#T|gL!|g)6{ce)pMPA^*FBbF5K9e0vj-dx&Q!ZYo07fY4!OX_O{iE>zMe8@T z7tQ|oI&sgIX|lytd9q`c0;vsyfi15cO~6;N5sp;g^x`tJ-C^h~Q^vl6mBR#J;MZpH zbrqSm!`i_Uxz$+> zHfM((XQGe5{26V8`XsHr^*L?Z{5BT=i21raG5_wvifIViqr<`|AQ`(BMv@F98f1`= zg!3(Ec={#`1bV+TEklfZl)7@+M8$`D=gKRqa;0Z11!4=AFGgVC3?WMGlr6PuDh`tX zKXyLn1Ta8Awpfks5e?5THSv}eY5d9J?w0azyPkgb9^;A>UF`G0!HUFCG2tJM?w3vg z_=lG)(h-_!>;o@9mK;`9mU@G=G-Wele4A6+yPSNEY`y~vOwAvRPRdc!!~opO7yU!w z=4<1Hjxzsm6?zxtKT*=~_{|!J+J7bNThW_nT8kxrX1!2?>)yaaNb>1|)M!PUX}YcA z``Mm80C)4ip4N-ie=)!1d)bMBU8t*gUI}qA3@C`!{ufF}x=O(MAB^aMOava^2XR5e zdoxL&KSvCk_m1NI%~KUcN9W78oy(ThHx;@4L3Xn_W zz!3lKY%oGZ!n613K`O^J5;wwu<^8DUwV4xz|)?z_g4Mg zOn_!2wI{!zScDi`85Kc8YHZuu7|XJV30W{{Vjw({21PUlcaLPy`D2YRHiS^JlAE&F zZm-=(-kbd%@$^sQmEX^NL%BKk9b)&=PnCOCexcmE@^j^$a`ZU+U2^x7m#N>reSw_z z!IRXp*AAiYjA3X!(mSFN}1d3J)jXt`Qjh6~e%c zB@<0C=ZaIm<%-Q!cE)#C`|ZxY21JWLGi)8wJ?0SvA99750+|BYmXsU_;=lcmWRxUK zdR+(IyJAUt3+!J$fU&I2`qs93XrqV9?_&P$NLmwK%M(GjhWD;5%8Nq15k4Z$Pg#@5Glzc%#dNS_6NCJuO4+a4Zt5SiI=w$kTe2wg< zM*nC=7*V}qx+%V<%sdN8{$_7m- zeNBGd0Ga&>p}6P3iasjK+M(Yg=5ONN(tBNnJvhADHj9x6c!CA=FKq{i2kr_SMujTT#>!9(pA zLVRUr{%D@L`itk2KZ=S}2%RDP0%f2{LTVh*nZ$ur+HYRhKze$F5J5S#vaiarKJy1V z^Lush5hQ;PA#~Q_Rrhl4WqXG8xbv6+?#J-CB7XM_N$u7BiN^q9{ACL2k~KobIUSfN zOcYY>#ho34{uS%$ewc?Tp=-~^1u5|jOH=09N=z1ybY5o_U%83jG0%MFrF# zc4HtI+51Yw_;hFcXbAL|!h2(qpnEsm$m1qBx?&(>S(7ydGru#d&#wC0g3Z5f zUTR!@Ibwb+`JK%=9L&!ZnT7cN&r|hB@4hnjdBprtu|maOG{_Z7AQYV{KVFaB5|3=< zAi?2xd`%z5x-M(7NAEs2o1epRe(dn`h^eKHsxD5mot)wytwd6E5Q<+?-OmwK|cEM+oM z`k^yJ8`MU}&xxGVu-s!vC1={<*9E4c<@0uYycU2$qA!MBgDCGa{qN{k7-M3V+ zXb`;cfLVBqyC-$7Ke6zX7lHZrb%!Zq4bkUHQr_l@jWsSupVRS&9ygX4`J&G?EBdFi zz0q6z!A~Lh3p&00o(m7^IJ~?UEc{v%+_+}Y(@5f1@re2PRbELxcvwfS($nU5i}7>W zK4SW9IQU$pyR860%v%ruOnq6AjSM|X5=jC1FE-IaBPEV&Tnh7l91t{WU_#K8xA6os z1;~`0Lg=DabOa#`mN-+90k1!!4LMt6dYCIV9rbkhVKVSdB?f-+XPT8=4K!wcKL9!U zBL#};WPbOR)suzkpO^#$vbk2{#R>j;wS}7`=A$$xz8MWZo|-9=X}!RaR7;27KMJB ziuu=#cl*Z{F6pgV)g9K&NrUU|HV2$5O}WupY}nHh>NB|P{-#m`zvQ#ziXKL$ubug2 zLadh{I+@>ng#|^~RsX}I;MkhMG`A)z+oN5U)AL`R;g#XnnsHsRe6M}JrM&%E7ihRO z{AkRR@RMIu;+%hp2uXjr{NKwUcvz}%efe8p&Afr>mi5Cn?pZwK%uOSbMx&Pl!XxF# zwCTJj&#y*>%V6d^Mwt155j~6Xt13+&!IhY{+Ljm`D!+q}mnG5=w_ZFyhB{A6pJzfGH7eEzexZ^cAy=HJvTjkI#&fa~z+t5v}Fu~`v9$#Mm z*3La~D?sqn65N;{QC*Id``}S>GGd?Th%g39tHl3K%_>*|;~(wHqA{jHJ6#o z5cAtw9DWYfAKCn?zt#RRxQFT*fJlM)gMt;HP;_3@Hl2SbM#7qfy@=+uS+i}chjPyG z+=BDZ*}gm1ds0u^QoTL3pYuA-Wdb;W0yq3vH&L;tiLFrQy@3 z%`l>y3XZMLME7hCEST6o_UwwGpV=yg)!A0tO)9=}D8K5*zB_KeBJoNj(}K#U_5w<3 zPjSYDSDnkTWMW6t$wS>>-Ru;ip)}8n(I8=$$ z{?3t4zLrK!!+X!*{{2yYRh3!y+A6Zny87iiz5XkQ@LYkq)oebl9VeeX)-OJ<8DP)* z7dtcrJ0R37kn(TeNB#&vM}&sii*5cErj1t#WDKZ(wNE%=K_y4@8 z7kv9(SK;yEDZL~|mSWCzwTUEjS82di}4^d|I!6=zBYw5l%>34D>7Ak7Wd!*9R_~)eEqoxu8MgHKpYW* zq<(Oq+)*3exxAN1Oxqn(r>})w%QIuFYloJ&rs=x8{?3qJ8y$6h0)W`d+b{On?Z^3g z%kg&Uzy3>kqdAFq8NlF&Gyat1-y;dJgO2B~f_>{V!`>caByg4q0!E}>9sQwj>)?%v$@wR1Md0VMoXfDF7%&4wi*`w%CX~wm`6s3h8 z`Z--FQu>cCe<=JS6&8MplO_`Vs!GjQbH%2;9?d+E>dzM&_+vTxhF9;6`v@RfB#n|m z5J-R|JJtTS)`xc|z>JT2!q8F1z`AwAN82if*6g`pUnW(;v$x}c!L)zf#z8l(o7-o8&s6nL>}wKB z6c-($8__=w0l-<9|B?B+BSn2r@@t%ok0%xnLD#i6GOJP%^J|dFnv6)x^UKYAO?d{t zaZZ=APhT@6=6qxB1OT;C0oM&p6#Dj`El*A3N=z$TB){F;&m*c@tmoc+EG{o7P@bS; zln_BP|JgR(7qUXb97$CCldz{OGu^s&*v~c>^SdYfq&cL&%xfaAXP4f#GX9+L{`MS% zoWl>mIRN0u99iA<1C>u<4dCyx{hzox3APnxLh;moY~$L@;(ElWlV0mu5)v$BV<-Z; zbxpds4-8VmO_?!3DhT5K8})DGeAQ>m@v_WD+nQnM+V)4+6`QNc0`v1_TE4ynhpP>B zkKUZLx~nnf5t)RFilOQMHUNZ#O6@o4@eJ6$*i2c1=UP1edV%?yko2GOYVvwQ zPU1u#h`>!6$WEKTy*2teHIz^54WExq53gIB^`U)kpS$!&%)ep~lK!j@r=PSXpWiEs zk85QLv^D|URsNRO9b5ESwdnKTx}W?EX?y_^+22!ZFAI|(FkA;mmJc0it;{-s?eh~$ zhgH4!Q0jwN3xELWMK$}7DKKzJK_{gCqB~hkWIT13`SJC$`zf8j) zFVOQZ-hw+~5ziiKG)?c0H2^=pTJ z!>t}_<1iSm8P2boKA@D8DPq!+Xov`xUhroU6wd4;Au*AGXo(VH8G(`gQj?j)jkCJ^ z$SqH8##%sAxsiYMLG2MyGt}|)WEl|;X$o2e$}O^Be`PZ zPTm>jbA0;9kk{+(jNjr1knntggs+^aSS}G$@$nQ1#3js- zixxSeOV!uG$u+~fa+O23I!m5$oc>gKR?X{=rrZm{AQ%ZSePd64$5v$M4^$a2y8>MiS~u*goHEww9!nBdKq5 z@9M)B8~MXII?LTx#>@ba)4@n(VpOtDyZ?MTC8KToZ|9RS+P78LWR=F6(zxSJUD`*#E=n2yx|q9SCF z*)2|Zd~o$ufFn&+6(cec7;fWNwahl)9a=!u@~oU2XfSZc){5|m1 zM*~A@){h*;tr@<7Up>s`1VY!8V0>LFGWpF51{C+}78~FE+aRFiam}!ogN;(%@qFWo89g*B&%)>2$KilFe6R=$M50bV29VA?+^Qzq$gWSQfhgTfux_Ey-ld`O~oO;)+9yN~lm#|1yj`q-!6 zxJ!SJOg%{(jPIG&%Xw49 z2DX)sBt4O6@%(_FYfu(*W=Q(SY?>|K`PcIAW}hGl*5^( z8Q>3H53i3l3;J$Qs4Qs3qHBb7=T65pT4z>wfr81Vh{m#%caYR?Xesb93L(GK`9|C5 zo8xow6qZ1LIjG~9&R*;nuqKZ+!Lk`$;oX;Xp>=CB-$1H=1MjTwcN^-#6()H!@@(zQ zleEdS-i*!Vw3hx(6Tlk)+?{{|S47!0zO}o-`N5Ur|a^|yYsdcX${rO(^pkaPkUhW?Ha7l z``v#fZbU1Fupp68XhvQ@r73n)r)rag=ChdTX@&vfzb?QMRSLLeXaYj!p>U?iJc27W z9cUTg;i&K{HX_wO`B$Zk=y6*gwJ>=_(OKGie!ohv*x^)t0}d=3Fo;`|wbSMp*)2#o z_h~+^Tz_}l-nUcFHwd^%`s}u(ycY;$w*Y{9LeTCR@?%4~l2@0ElL5nCyyH#os2>@e zp@ynou0X&46jc6{si>|PdAGG<oNY~XM(mLh=cBwv5nqE-w zrSZ-I8EOFtdKgqNf2;v9cc(DA=oJu%OHnrnt-W?HPNS@)rUi)MZSFCD?DgL`RbSOV zgB=YJ77!&;0@2ya?}AtJw!W}pZi=*VZRS*$<8P%~vk#o|izna;jPKUcJNx{M>=OiX z+5&;r$9RMRoyX^j`BMv|+|##E&+)tjJ$SxM$MdB~GeX3dwW>-#H(U0Se zx67iHqHFrA1t(ueu2_bKWVOBN?W(!mVa(llHlqYWLPf}I_&*VT{BONr!@P8O^_BF1 zhVs-$kgab|_*r5Ul709>J%4Vo$@iSHv*(1!+q_ctLe;G1WO ziMT3IB&9BD*k)$W1lYZLD3s3aA9lQA=!11@hOe>UGF%7ax3c$LQr~%P`XOdF3+cLi zNur%_>Ta0^?MLS5vJ?akh$_?hlS{iEp8a9U^|+X5WZ#bMR?N!njcbps>H*+C*bm+R z{`^6l^A`B8ZII%z!i1QAq%gqqcyVeMYl-<6m*jT<09RtW`e(syZmXI)7tB~O_UKjp9Pl%!5{bx+@$SujTg0FkdIZ}c^u3`jlTRpsG zl95~fgB=8r#9z@DnLa>> zN}j)0*LU6Qo^VC~xDNaO4N9XSGRUq`%=##WuCMI&aK+TLx6hCq`$?^{04{gH}E^>7@Dsdq<#y*MMy-X9LUc8{TFs^j|_li zGrPhEZ|Z^@)(&~zwt8r-&AZwUNkj~=-a|aynZAWVMIQTnNqBGXzc&c9dT+LG9{}e_ z2>Rt)`Jpa4I<=dgf|!d)k_iZtg1xoYyA zK!8BdR)!PI;(5L(#=aGpA4~sa!35x!Ci6$~b^Ke8ByR0)V&7$y)S!SsMJj*{iT$7e z+;YyIEAZFXBiAN7eHea-`Fox!%~)hxnpRy~*2VVaOZs`}yJ)3E31OiMqzV5^P2uoR zIovWtBUJjGDK-!1ii`)`^ZYS26dC#Vo=9Bl=Px%#q2u)_Dv--NOMK6_MB#W|LZ~p% z^VrJ48C*r?Zyve+9$`O4>rr05oO3?RfmQ`QUX1SwALdGYXa{b9knO2iIJYN$lAaiS zJvD@{r!H!6i;^HgCMA)ENeH9jkjfkq94w8yE-UH!nG@wCNh;5mrSgaK(yO1mE%9NDa~O1F%73Xg{QII*ux{uMzsyUg zno3NIY=wH8E9{4*ztGxCe=0>oJqQpTpio?#8u*`8{lmn-|1lg6uN(v`=JkwhUNiJ_ zd%nMC$WQ3=w(%&gL7q=kJQ2gydOtNH9XWXh|n`U%={XreNy$RN-;m+96kRtFsQauJuQ%e^~}% zGHI)!ot`$nZx!8FZh(8jkNa_)kNf}+plFAh^CbN2*OjvnJBLI@{rOaHie^D3l7U1< zKzN88_}_Bq6gH_)L$fdLZ0 z*|7hz6%4$!4{Xm#O|q1jD+Gt1%khWj_!;;`6SO;7g6NZ#&VniqAvn=#`=4*&n7`oo ztGyofl@E+VYHp!(phruG-=Qtle%Vf@_hSBR&v-tUX#Y$3D0ONA|m9yu&F9RW(D&%+=rq_p)si6TaPAReIzgSh^;h5V0;%L zAUKed_Ui-J$EDK(qf6{>VsXVA1DB5cSde*Or-{wiOxcJRE<>?mxKDV7(zz z{W-Q~qY&~dm7Rq?=XHDq;2Qtg!0#Rgh0}XSG_4)}Hd1ZtUA_HRwg3QEtZ#|=yQ%)R zR{8s_ZFCP?y;T*Uw*%0JM&a!X$ZlI3z>dJ}(-eFArcwRw%%mVDp=0_3v`iQZ5po4~ z6^|TdT{H5CZAE{(>W}UJWg33v4~Ct(L>0P#Ux7$M2(9Vqzrpja%Y&JIlupvGzg*^>tMZK%9rH-~_eTiKnT z^s4?3@RKG-h0BnJbzvrGbQETEBj9uZqai*JX&6DcrC>+^A%MX}nE`|n0+5E1o`mxs zBtd^HN_n0uOQ{p2f02FcJ&zurTAZ@=wTF^3_;dXsFhT;%<(eWK6exyIpT}vbtY1w@ z%A@E9)VfrEN0*=NvkXncd#j$n4iFsg@3j5Tzi^2wzr8o)f2|E|Tr==#`*07(T))-s zl!+uq9I~rr4zkbSvu`EBG+sVe)Uq$vP9Ckiv)$T#=Sn^M`+E=h$ZmtVy_nwnajSd) z^!=N@Q*262rd7ByP|bF%Mo7{Wy!1d17&gchb*Su$*|y3N{E4NR{Pn|98foEZdZw{`}ycv9E_kD`}h`AXUgO-WMRp-zx_GcrTdoo*}WeIAsMV zm;go>2w2Nfnpb~sd>xYS#6;&bD^&A?xbFeAB8yeErIST-EXcO~;D+HSEdn)39ZB zT7BhLWNqODW%Yt_imKUfDbCJ)Lw;=jTk`!2$13(L8Y|zMGhTi$_Z|6(#UIGeE&oJb zz3E$d_0FlXntd~+wMXYl8_q72T57VTwtB>r%>{_@3nW6yu1x?BvCpz$&MWKBmhBq= ze1#pIU~>E?*?~KUlY{tka-c3j+pM4@ngiy;Y{q2PzhbuVPe zq6xS*3)ccf`<*H_-(+27KKa2@x~gaqajjHL{i%6>B*h|tp9+IhW6`tlfIW-Sp0bv@ zYXNq_d9om7%hPuxWo(|^1%jevpj2FDJ~Mwm30yzWUMO*{#B`gj*l@-j0I=tO*Ia`& zt0(&@LcCCg&}gAk^}mp{Xp#wLe5Mb||H3qS&O7=w-@KHxdfcN)rBB}$|HG5F#J_yY zu(;9vGgMD@(UA`t;}zGd2*q%zm>3ooNo9sb&;vrksotUCOwX_gs#jDr)kiL+2C^iT zrH`YA_A-&fhIA!Ij_5<&c;|5CV-HMW=p|mhIatM zLZibKmtSMt$FEO>)63Ig`41*VGcNZna<~0)n=do}-7DIi;bHO~WRw)CTr?;;HGm7d zL1ZKtR4P9NoFZg%B2ghiIv9@NQjK2&=wO7 zQIP~l#3a(ZC`h15$Vet(R1YOQI8uo;w@|=+`jPpD9#B!ZQxAG9MOL&_6scBb=$OQQ zY2@JBvy>0Mc`y0g?AM5Qr@o|IQT&1Oz}D|&#}ChuHJ@7~5fXds8iP~Cm-qkxQ7eaF z69SOD_mrOiBm{(n;Y6H{H3OUzh_EkZ$<$uVS zr=j;}!kMzPpN5*q9T-lZ#J0>hpklTW>5(?1a3-6 zI%X!|{B@<0LKbdY41oX`y_djQZww7;qz0>L8W;@B3KGE!Da;lWM=@ZCVd0uyEPVU` z0sJXEU;}?BgMf#MA>?FAuM{eCWG`ym6W0?ne|Skbchy9B(WdXEyAIEl)Yj!nnymR^ z4x13RTtqn{yOS};%K?diW6Sr%+{g$#+0rhAUxXb_NJ7zXWyK z_eF}9GBE88d#Ux#f^_t|RdBedi{7%-oMS81+V~`9vlW_LEx!3BMxnod{>Qrgw2~OmEfGl|6$ON%GxT>M%P&wN zsD~lpN z0faajsl14>es~7|FUdgkjt~S4p%6fkW)0c<{wt~Lr@czull#8n^U6uG$^)|{`_3*D zTbeN#6qwRtI{aG75vXwUlc8UV3St=o!o@_paesb$ zcX;zv?D6jfOJ}5o*Or@yS<4NDwlaMq&L-p+)5ruOc&>o3oyw)RuARcXa{o1y0h8jl4)c`V4LxDrf-#r;5xkB0<{V)Bx;SfSLbomT^TF9ThjM2LnMuC#cIIOy!TI z!a&%y(A3RZV*10g+}Frg6&U%)Z;YP{NNz=oJMI4V7AuPuw%@-P2SpPT;oM3y@Y{L- ze_#N*#vcp*ENN(PR6kvmh}lU8aMMVGqe((=M&UvgoY+Dsk(q(aj)-s)`lk{w=Plf? z0LQJF2&IgsujxA_aP^{xO4r6)^! zEIV1KU3My4zVy^0#WFj|&~w?+lZ#|akIk2r@0}?t+VZ_(&hJwcV-L@k-%*<<9a)_# z%i8yoJZs}LS?1C&6+@=KPW5~GPTG9a6^yb^w-^Kz+5iBPKaxwppO(Sza|oC?nuK9p z>>5B6_Ik^anSuVFx&%Dx3J<-ogFDt1D4GP5K_Y~?!XpSsL^t=LX&4M1!3uA%TtX$^ zIEe1^{maU$^FL62wqu%n<*97xj#ZNt*WvH%$X4NhcCGl)46nbI;eVpoc%P+Qch))S zS12hiAOz{p=P8l)B1g{=70LPfLM6XtuDbNASCZnEPD#Ef0Klt9*Le8yMGZWCPons2 zamrMoILJ*4;7Uz=@t1~dJY0{G%7J8=fA%8XIYI@8%Ft1($?pH%D|l)`Hd#ika2m9+5CqNF-&Njx%b(e=*9jE^W6 zN&kEqU!AA46@N+{diid8?$938)rm1wc$$vBXaHa+`_NIIe+GV=Yrfl3l2Y9Q04Bj1 zcrZKl@Xf|Uc*&p9<_I{#pS(t-n_HJZ%e0Nq2(9Su$;N}9wD|x z2mls|Tpo9uuQ1#q`*AJD*x$qDIGlBethwSd2qbnk=8LzSTO?g}^e5@(NW*x1$1KI2 z1s~D${sWX1u7vriiEfr#0$|KyETH;x} z<7DhbzLRu(CGT(!;Bd7Fa|Z~!Ho1DRda5EV&!tVxcc)TxR1yaNBh z2*8Q%uzgW#jHSf9!rA20uKpYO(|IP_6F0?ufRh(+B86Puss8&~Vv!Q)aIE&dgUqSE zSJ^7Ej`GfCmhMu2MW#o;KdwmQmV@tE@#m_x%NDmwoJ&(UPZpmCV0dZ`j@N8lp19hQ zFFIbEE8bR>Cz*V7k@TgN6BXCYe@~e(=2jYUG#iOQVaIF&Ub~xuXvA0%kpyTG2~g3O zXH*D>S4k=Ybjd16(_oXJr~lz>)pOPYMI*mh#^=9BHYBO3(EuWUxsnnZlaPwP7M^1? zI0AyJYVU^SlZ{!;rRJmd(Rl_}X5i^1<`d7}m3R%$FBgiD{-K5Jz^X2I(8u-GBGYLP z?>{=pm6P;mlVYfwujtMKixIvP09s!`sZvNzIkUDWEdDM<(o{KM8t-EA7A>F!0320+ z<=uHMSJq~^Z@cBa*{vD5EwE@SgU{xb)Z_6y$6n^k<%+GAJkha+e9^DR=Sx@rI$8eB zns4Q|e)Bxh`^I6k6d(bKF0zQrjLv1QeU9h z(v&afpS_jd41Q!MIRdA~gs&$ULmNv>?{P~E9Ou^Xvk9H(hfgN1!5vj2!xWv9 zecM=+Q~_7@w%_n4m-oKTwtC1h&r#lPrhpR|@Q{xJwPz1L_bR?t03d4h+|xH8asfaK z!;9Jgjkdr-FzKt?mr(eL~@UyjPE{HtI;S;c%4(IPL;0Zz^PYoeo#5d=Q&sF6}emV4$Z2ZQl zioUNuL?bgH2yPt0!Z$ClAd+4_+5kl;AtVHYlEiPpd(5y^-!b_;Ow0`c;eI4i!#i@2 z2SFnosFZ3EAQ(=3q?N)MW+MMxdH+sU61EYFbWD)?dpCHAnAYBy|owb zAlnKz$KSHvybU}4axM-4+En3lyw!Nod4Z&*qmL(Z`#R2w&QG94__4T+j>0(FAhKHW z#kKA0UGbvr^%! zFVh2>%FN@?30YiCKXKV_v5Eg^Owuv{X`CoZ{-3Y<3k--5ws((=L&~BEa=z>Z{E1P( zA0G~((x|}gxxM>YD+aH1GQVq#l?wo}S|3uD5=koHJlKH8&FNkj8WHGKUd1Mfb;0wE

KJOXu+v5JjnaaUK8!CsqXjwgEqit1|)m`fIE4(`W;K3F}Nj{n1SF;UY65G~B zGY@Zdzj3~p-}#-CFPk9e7rrIqr@t(0F3`D60;KYdL8;m40CKK|%I`NtnVsQC1gN0ncGHAXS{>u2Osr@SDaKKCv8 zjG~X_vsQi~Td?sv*^=Ld!Iv2MRbT6lC923PUmty(ilIwvt22)vso%`I26?t@T~Z$>`z-5&u5XOj;0;Nu zCL7*$`0a-Oe0cIXhmCJpDB@4gmhit$lJR-tWc+7OC~63jNra zV1T$lfTRFB#UjEjvSJa%2LU7m*|+LoJF$)}9f~MAFq9!g5`yWfBh@z#A~et6M)sNd z5_RLmXNh-ycv-n@#+%B#{#}T)TQkXjGR*alFFZ4G`~ykw^nIGJv+mIV2O&`4XN=W+ z4iFv|8L7DRxi$d-BKYK~WO(?F#Ne7D^P9FpbF+KhzZC(%=T9fBLCnBLgh?PG^8Zu) z4-67RKqxNUiG<2mnwIVIeE1qo@%v`|M78bS*F3FOFb9iF0uaknd=^dlS&#livu1Vsb} zQIvupf(e2Yl7;@uiDOLiFq2Z%u?5(A46dGz&( zkpE3rsM|bPNZvuqZ|bzrOrPV?}P6go1y- zfW?i~>rECarw z7p$LQ?tvu!5f48A(g+SMG9ABjRBZp>r>6>i9xmx(#kjl z@@|OflX+Vn>5$qYFPpt(uqWr;i!Y}QFa09#*uQrSU(_lmz?DY4$PEM*xkm;>9w9x? z=VAm7qB<@|RBg=_owMePk2mFuHa6vn=2!|PldAG%A0J*QduHPg@+&JR%QNynAv9wj zV&c0P7$mk-LAZ37|BZkjU!~pYSfm3gxA4u|NKPJnc6X&J~#+;))D)Ee=3~P^nb#k#2ox zh*B?(P=Z`}c_VjpG?MH<2vUAka&YEaCNp1Uh8SSE&)J=5&*;o71EF z{*u18*Q_4&=-Fk1KCN3lq{6Z$YX?^`^q_5ZRs+8p+3${V)Vz;G9=mEk%)#_HzrQbU zD@#XApU88F={c7}PvR-n7w>Jzlk7N^E#10(x~$~)>9W^WO(O68rHz>LQHEj1lD@t7E$(~siL!p5H&hH>WUU-hXssB$jjI@3Yg;|U z!mrBYc;_s>Rqn$%+;jDZy1j-OzQ0|yFGeG+c2yR5TF#Xpu(fOssCT?fTEQk3&*tq z_rRuErU$IW##&pUzNI#x)X1-yqWgs=33EJ62&2p|jry;U!0sjKuzE(SqN&(8&%+sk z=+HugZCG!15vDLJZFejy%p|z=ovN=q_8f zuYEqobhpcF;&z6Bc&qZBX~C^WgNrX9$*AQVxpvxsw*r=&)&ogezT576v=xYJn+qhz z&*jK}J&`S&vTc_9l_eijgQmYjktPEZ#`96YRg&=CixiN!)098H=j5P}5y1YR`3?Mq zu3LRz$rpNkbFp!=%M1`&g&Fxj<{D~7^kJ`m<*s-k{Cr8)h`uZ|u1SS6OH+*qh5m4% zP@z5hZ|!95Ic+R;D^8WfjU_MNB^H=}*2gBBn=aAi+)@A(rD6run>KN-ZR{~y300w%wvhc90> z$f^s?%k9;HEpr2^mYAB}dm`~}o*yFgT(~rB6Dbo=sHP-!AVQ$yxao(T>;N$3mE^<0 z!HNuNv;x#B)n$7ruj(PBO!^&L(d!;t<-jvSR~>grF95*+d;Gn;o50{4LRmqYFOC() zZgaUxbR)~$YfW)CtX75ZUtszQ0f5z6e1{_e)>0EU`PJmF5l}=$AU;)I zitO7r?@5LmZ#4wgl%%|l0HD!5|Gx>TB(L6^umV6DE0ZXIy#&);I%?fAP%QvJ>Gxf4 z-j&<$Q0Jv!c@EOYueTj9Ze`!Q7`;8Fa;nK~c;s!_?xVQHZAw=zr!5oUJlcUrSD=fd z3rb6F2S8fyyU>IukL$uU=Sfc2=1SJ=o+JCZVv1tq$Iqdg60Qb*n*!dtAFIepxVHkq z0r_vLQbij0=2TcSRX3u!#8_=_z=O?jd-L7xvyFfBPG!uGTp0^wM+1OA9%Fo<8?2pb zjJFgUS2_Fs3BCW2)Z98vZ|jr7zI19%7oh3OTh+qhzlTO7fKno}|1=1R1PB*jJ&-U? zc#?Q9?;~Q$`pL>2M;FLX)#VDRCISR0&*w=U(%KFPHpdW6&e4&F^N`e%R^|Yg?JoHx zZDi|7+HK6yUW%_ThUYwzdfG||@@faR$gSMhl?&jVU*LJ1XA3cLtM@y<&zEM=Iz!Rj zAL4nPT4g!rNIa(xx&PK2q3DQfE|8w6$(Q9EUMPQX-48_K-PbbVJTHa9FKCcQDUj`4}1(mA9{Q%*>pXmmB z7Nv}^78;Lx002@yNEQ6#;?`Q@(wQE}tv)Q13nC@DiWi zbMMEt?6xJ`1v}`nedhx>djqxt0w3{wffhz1YC{unKW>rOi+t@9djW-Sp9AOR6!c7H zlC-)uwruYjh<0ira)b^=RZV%4U(V*pK3O|OdCT*6lN$8D4&wPZxG9qo62R`!_XXvj znDYB~tk5tiy!}uj+&n5)a<0%k&+Z7+yR?9_`Fj4@+hZnR^H#3xa3QP!{&y49mYQ$n zmKYki#Rvcv>jlC9F#GM~Ey(^bMTRT?bu<4cC5hloBy^yOj#Pj+l7KFW1OkIAaT-P- z?q$akOxmbk^wn=ZNZt9t%bi8nG^FR)|xyqU!O1H zoAN}wB_DgP?WM0m`Kxn~rem0<=d@klYOc*a641&yDDm1a`BS#LJHuHQio6(H-wr0Z*%6F!{&2$M6#{}b% zXJc-mATXE!v6KS(G8AOySS;Bi1CQpLCkl;11pv??KGg9|#XA1GR}#KPP!Sp#-N8I~ zd;b{35I;g)vFRahiLr@u(*SV$ueTqJM;4V>5skh$ULE_d^|lg(J^!4c&<#K-Kq4c- zFOY&HiiYQJ#7$7Jq@cqQp}T{oQj*D-!CjTzhxbw3`M@>GmtVV2_V#Db%Eo5DCmXkR zlKkDDzfpX)a-!^qrC-Q$%0H2P>p97Nv-D)V`8d7=0+W2_6A&Ak3hqMfCQT*R>$~mf%5G`IXR@2aQP0( zlQ_u!*p`Pi7N_Ro&|ch+cRiN4$d>Q6ufXy71ud_;f4}Rs0b;Ag#+Sc&9+vPjgy;Pus0 zN$}!53E{Pc#*dKg!MS?>BdRJe@wbnNDaO-Eq%uMn#Q6WT@L&sC$v|=}uC}6usWo`= zu1rM1;4}ihd<=VMgTY?p(n0`T{p@A1WHfFoDVGwOL>18mfkuz62C8Sju4J#P2hn|R zA382@)W!tC8SN<_ww&wRA zWxxG8MRsVzx3b#bevn!Y&5>HpERtCp^QBg9F#?DJkw7ieiABCOD0gikR{$AH^J3{A zhZf4`6n;+LaMLhW$@46{dM_hH4j82x!otM=_`MhqgiFpJ!oIlv2mlV*o$(GwAOe8A zk2J>#g|bf^l259R%m^%=Y=A{y=#&jbh9Xz^Pl!R{3_w%!h`#FAk!ljG_>VOIP%7-* zd`Sd$EKNeJngSKgfLKIBP$&%n0ThIW&=3_xqJ0V=Wk@rk6<~~2LRT#TeNspm*_VJP zZ=zxMEH(P9ZTM6D?PI=`K?pEH5O5$(gN(2fjfh30LZn8-L?IHP{ZeGa$nZc4bexmq zcB1iCVJF;HhmzZmqofW(&v7S9fs|PPLC2D~9Jl3o5+5hAZwd5X>|Vy&kMnbd?~>Wi z!Fe8(<2>+Vd=B`tNyldkTczW>o$r<6qF40$5HV8wd(e0IGlVFLrU*IBs98!K7egi` z#1iR-L}FOFPI-I(bmap#XA%#-co*@|oVOLv&U;%nv+QH(=FLAyb|RDP@bUSQ`WnRK z&XMK3+dxvQTlkf8h8i&;jihn0{LJA6#JuH`$PqV>jETe!!>t`=qL_dU#|K5afTid&>p;94Hb2hzxC&g0`f@VN=3Bc~^=4!GwYoX6h-iHie!m z

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 Ef_7LSs{jB1 literal 32997 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