{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# ESP32-P4 JIT System: Complete Tutorial\n", "\n", "**Demonstrates**: Native RISC-V execution, C + Assembly integration, NumPy interface, cycle measurement, firmware symbol linking, and complete introspection.\n", "\n", "---\n", "\n", "## ๐Ÿš€ Features Demonstrated\n", "\n", "- โœ… **Multi-file Compilation**: Automatic discovery of C + Assembly files\n", "- โœ… **Automatic Wrapper Generation**: Memory-mapped I/O argument passing\n", "- โœ… **NumPy Integration**: Seamless host โ†” device data transfer\n", "- โœ… **Firmware Symbol Linking**: JIT code calls printf, malloc, free, etc.\n", "- โœ… **Cycle-Accurate Timing**: Native RISC-V `rdcycle` instruction\n", "- โœ… **Native Execution**: Zero interpreter overhead @ 360 MHz\n", "- โœ… **Complete Introspection**: Binary sections, symbols, disassembly, memory maps\n", "- โœ… **Smart Args**: Automatic type conversion and memory management\n", "\n", "---\n", "\n", "## ๐Ÿ“‹ What This Tutorial Covers\n", "\n", "This notebook demonstrates the complete P4-JIT workflow for ESP32-P4 dynamic code loading. You'll learn how to:\n", "\n", "1. **Write mixed C/Assembly code** for performance-critical operations\n", "2. **Compile and deploy** native RISC-V binaries in 2-3 seconds (vs 30-60s firmware rebuild)\n", "3. **Call firmware functions** (printf, malloc) from JIT code without reimplementation\n", "4. **Measure performance** with cycle-accurate timing\n", "5. **Inspect generated binaries** with full disassembly and symbol tables\n", "6. **Transfer data seamlessly** between Python NumPy arrays and device memory\n", "\n", "---\n", "\n", "## ๐ŸŽฏ Example: Vector Scaling with RISC-V Assembly\n", "\n", "We'll implement a high-performance audio processing kernel that:\n", "- Processes 48,000 samples in ~25ms\n", "- Achieves ~22 cycles/sample efficiency\n", "- Scales a 440Hz sine wave with configurable gain\n", "- Demonstrates floating-point operations in assembly\n", "- Uses firmware symbols for logging\n", "\n", "**Architecture:**\n", "```\n", "Python (NumPy) โ†’ USB Transfer โ†’ RISC-V Assembly โ†’ Native Execution โ†’ Results Back\n", "```\n", "\n", "**Key Insight:** P4-JIT enables rapid prototyping of embedded algorithms with the convenience of Python and the performance of native code, without the overhead of traditional firmware development cycles.\n", "\n", "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1. Setup & Environment" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "โœ“ Environment ready\n", "โœ“ Source directory: c:\\Users\\orani\\bilel\\git_projects\\robert_manzke\\project1\\trys\\costume_p4code_binary\\P4-JIT\\notebooks\\tutorials\\t01_introduction\\source\n" ] } ], "source": [ "import os\n", "import sys\n", "import numpy as np\n", "from pathlib import Path\n", "\n", "# Setup directories\n", "NOTEBOOK_DIR = Path.cwd()\n", "SOURCE_DIR = NOTEBOOK_DIR / \"source\"\n", "SOURCE_DIR.mkdir(parents=True, exist_ok=True)\n", "\n", "# Add host to path (adjust path to your project root)\n", "PROJECT_ROOT = NOTEBOOK_DIR.parent.parent.parent\n", "sys.path.append(str(PROJECT_ROOT / \"host\"))\n", "\n", "from p4jit import P4JIT, MALLOC_CAP_SPIRAM, MALLOC_CAP_8BIT\n", "import p4jit\n", "\n", "# Set verbose logging\n", "p4jit.set_log_level('INFO_VERBOSE')\n", "\n", "print(\"โœ“ Environment ready\")\n", "print(f\"โœ“ Source directory: {SOURCE_DIR}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2. Create Assembly File (Optimized Vector Scaling)\n", "\n", "We'll create an assembly routine that scales a vector of floats. This demonstrates:\n", "- Low-level RISC-V optimization\n", "- Floating-point operations\n", "- Loop unrolling potential" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "โœ“ Created: vector_ops.S\n", "โœ“ Function: vector_scale_asm(float* in, float* out, int len, float scale)\n" ] } ], "source": [ "asm_code = \"\"\" .text\n", " .align 4\n", " .global vector_scale_asm\n", " .type vector_scale_asm, @function\n", "\n", "// Optimized vector scaling: out[i] = in[i] * scale\n", "// void vector_scale_asm(float* in, float* out, int len, float scale)\n", "// a0 = in, a1 = out, a2 = len, fa0 = scale\n", "\n", "vector_scale_asm:\n", " beqz a2, .done // if len == 0, exit\n", " \n", ".loop:\n", " flw ft0, 0(a0) // Load input\n", " fmul.s ft0, ft0, fa0 // Multiply by scale\n", " fsw ft0, 0(a1) // Store output\n", " \n", " addi a0, a0, 4 // in++\n", " addi a1, a1, 4 // out++\n", " addi a2, a2, -1 // len--\n", " bnez a2, .loop // Continue if len > 0\n", " \n", ".done:\n", " ret\n", "\"\"\"\n", "\n", "# Write assembly file\n", "asm_path = SOURCE_DIR / \"vector_ops.S\"\n", "with open(asm_path, 'w') as f:\n", " f.write(asm_code)\n", " \n", "print(f\"โœ“ Created: {asm_path.name}\")\n", "print(f\"โœ“ Function: vector_scale_asm(float* in, float* out, int len, float scale)\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3. Create C Entry Point with Cycle Measurement & Firmware Symbols\n", "\n", "The C wrapper:\n", "- Calls the assembly kernel\n", "- Measures CPU cycles using RISC-V's `rdcycle` instruction\n", "- **Uses firmware symbols (printf) to demonstrate symbol resolution**\n", "- Returns cycle count for performance analysis\n", "\n", "**Firmware Symbol Linking:**\n", "When `use_firmware_elf=True` is set during loading, the JIT linker resolves symbols like `printf`, `malloc`, `free`, etc. from the base firmware ELF file. This allows JIT code to call any firmware function without reimplementing it.\n", "\n", "**Note:** `printf` output appears in the device monitor (ESP-IDF serial console), not in Python output." ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "โœ“ Created: audio_dsp.c\n", "โœ“ Entry: process_audio(float*, float*, int32_t, float)\n", "โœ“ Returns: CPU cycles elapsed (uint32_t)\n", "โœ“ Uses firmware symbols: printf() for logging\n", "\n", "โš ๏ธ Note: printf() output appears in device monitor, not here!\n", " Run 'idf.py monitor' in firmware/ directory to see output.\n" ] } ], "source": [ "c_code = \"\"\"#include \n", "#include \n", "\n", "// Assembly function declaration\n", "extern void vector_scale_asm(float* in, float* out, int len, float scale);\n", "\n", "// Read cycle counter (RISC-V CSR)\n", "static inline uint32_t rdcycle(void) {\n", " uint32_t cycles;\n", " asm volatile (\"rdcycle %0\" : \"=r\"(cycles));\n", " return cycles;\n", "}\n", "\n", "// Entry function with cycle measurement and firmware printf calls\n", "// Returns: cycles elapsed (32-bit)\n", "//\n", "// FIRMWARE SYMBOL LINKING DEMONSTRATION:\n", "// The printf() calls below are resolved by the JIT linker against the\n", "// base firmware ELF file (firmware/build/p4_jit_firmware.elf).\n", "// This demonstrates that JIT code can call ANY firmware function\n", "// (malloc, free, FreeRTOS APIs, etc.) without reimplementing them.\n", "//\n", "// Output appears in device monitor (idf.py monitor), not Python.\n", "uint32_t process_audio(float* input, float* output, int32_t len, float gain) {\n", " // Print processing info to device console\n", " printf(\"[JIT] process_audio() called\\\\n\");\n", " printf(\"[JIT] Array size: %d samples\\\\n\", len);\n", " printf(\"[JIT] Gain factor: %.2f\\\\n\", gain);\n", " printf(\"[JIT] Input buffer: %p\\\\n\", input);\n", " printf(\"[JIT] Output buffer: %p\\\\n\", output);\n", " \n", " uint32_t start = rdcycle();\n", " \n", " // Call optimized assembly kernel\n", " vector_scale_asm(input, output, len, gain);\n", " \n", " uint32_t end = rdcycle();\n", " uint32_t elapsed = end - start;\n", " \n", " // Print results to device console\n", " printf(\"[JIT] Processing complete: %u cycles\\\\n\", elapsed);\n", " printf(\"[JIT] Performance: %.2f cycles/sample\\\\n\", (float)elapsed / len);\n", " \n", " return elapsed;\n", "}\n", "\"\"\"\n", "\n", "# Write C file\n", "c_path = SOURCE_DIR / \"audio_dsp.c\"\n", "with open(c_path, 'w') as f:\n", " f.write(c_code)\n", " \n", "print(f\"โœ“ Created: {c_path.name}\")\n", "print(f\"โœ“ Entry: process_audio(float*, float*, int32_t, float)\")\n", "print(f\"โœ“ Returns: CPU cycles elapsed (uint32_t)\")\n", "print(f\"โœ“ Uses firmware symbols: printf() for logging\")\n", "print(f\"\\nโš ๏ธ Note: printf() output appears in device monitor, not here!\")\n", "print(f\" Run 'idf.py monitor' in firmware/ directory to see output.\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 4. Connect to Device & Check Memory" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "05:22:05 [p4jit.p4jit] \u001b[94mINFO\u001b[0m: Initializing P4JIT System...\n", "05:22:05 [p4jit.runtime.jit_session] \u001b[94mINFO\u001b[0m: Auto-detecting JIT device...\n", "05:22:05 [p4jit.runtime.device_manager] \u001b[94mINFO\u001b[0m: Connecting to COM3 at 115200 baud...\n", "05:22:05 [p4jit.runtime.device_manager] \u001b[93mWARNING\u001b[0m: Port COM6 is already open by another instance. Forcing disconnect...\n", "05:22:05 [p4jit.runtime.device_manager] \u001b[94mINFO\u001b[0m: Disconnecting COM6...\n", "05:22:05 [p4jit.runtime.device_manager] \u001b[94mINFO\u001b[0m: Disconnected.\n", "05:22:05 [p4jit.runtime.device_manager] \u001b[94mINFO\u001b[0m: Connecting to COM6 at 115200 baud...\n", "05:22:05 [p4jit.runtime.device_manager] \u001b[94mINFO\u001b[0m: Connected.\n", "05:22:05 [p4jit.runtime.jit_session] \u001b[94mINFO\u001b[0m: Found JIT Device at COM6\n", "05:22:05 [p4jit.p4jit] \u001b[94mINFO\u001b[0m: P4JIT Initialized.\n", "\n", "============================================================\n", "DEVICE INFORMATION\n", "============================================================\n", "05:22:05 [p4jit.p4jit] \u001b[94mINFO\u001b[0m: [Heap Params]\n", "05:22:05 [p4jit.p4jit] \u001b[94mINFO\u001b[0m: free_spiram : 31388992 bytes (30653.31 KB)\n", "05:22:05 [p4jit.p4jit] \u001b[94mINFO\u001b[0m: total_spiram : 33554432 bytes (32768.00 KB)\n", "05:22:05 [p4jit.p4jit] \u001b[94mINFO\u001b[0m: free_internal : 384063 bytes (375.06 KB)\n", "05:22:05 [p4jit.p4jit] \u001b[94mINFO\u001b[0m: total_internal : 464119 bytes (453.24 KB)\n", "============================================================\n" ] } ], "source": [ "# Initialize JIT system (auto-detects USB port)\n", "jit = P4JIT()\n", "\n", "print(\"\\n\" + \"=\"*60)\n", "print(\"DEVICE INFORMATION\")\n", "print(\"=\"*60)\n", "\n", "# Get initial heap statistics\n", "stats = jit.get_heap_stats(print_s=True)\n", "print(\"=\"*60)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 5. Compile & Load Function\n", "\n", "The builder will:\n", "1. Discover both `.c` and `.S` files automatically\n", "2. Generate wrapper code (`temp.c`) and headers\n", "3. Compile with Link-Time Optimization\n", "4. **Resolve firmware symbols (printf) from base firmware ELF**\n", "5. Allocate device memory\n", "6. Upload binary via USB\n", "\n", "**Key Setting:** `use_firmware_elf=True` enables linking against firmware symbols." ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "============================================================\n", "BUILDING JIT FUNCTION\n", "============================================================\n", "05:22:05 [p4jit.p4jit] \u001b[94mINFO\u001b[0m: Loading 'process_audio' from 'audio_dsp.c'...\n", "05:22:05 [p4jit.toolchain.wrapper_builder] \u001b[94mINFO\u001b[0m: Generating wrapper for 'process_audio'\n", "05:22:05 [p4jit.toolchain.wrapper_builder] \u001b[94mINFO\u001b[0m: Building wrapper binary...\n", "05:22:05 [p4jit.toolchain.builder] \u001b[94mINFO\u001b[0m: Discovered 3 source file(s) in c:\\Users\\orani\\bilel\\git_projects\\robert_manzke\\project1\\trys\\costume_p4code_binary\\P4-JIT\\notebooks\\tutorials\\t01_introduction\\source\n", "05:22:05 [p4jit.toolchain.builder] \u001b[94mINFO\u001b[0m: Build validation passed\n", "05:22:05 [p4jit.toolchain.wrapper_builder] \u001b[94mINFO\u001b[0m: Wrapper build complete. Metadata saved to c:\\Users\\orani\\bilel\\git_projects\\robert_manzke\\project1\\trys\\costume_p4code_binary\\P4-JIT\\notebooks\\tutorials\\t01_introduction\\build\\signature.json\n", "05:22:05 [p4jit.p4jit] \u001b[94mINFO\u001b[0m: Code Allocated: 0x48210AE0 (576 bytes)\n", "05:22:05 [p4jit.p4jit] \u001b[94mINFO\u001b[0m: Args Allocated: 0x48210D40 (128 bytes)\n", "05:22:05 [p4jit.toolchain.wrapper_builder] \u001b[94mINFO\u001b[0m: Generating wrapper for 'process_audio'\n", "05:22:05 [p4jit.toolchain.wrapper_builder] \u001b[94mINFO\u001b[0m: Building wrapper binary...\n", "05:22:05 [p4jit.toolchain.builder] \u001b[94mINFO\u001b[0m: Discovered 3 source file(s) in c:\\Users\\orani\\bilel\\git_projects\\robert_manzke\\project1\\trys\\costume_p4code_binary\\P4-JIT\\notebooks\\tutorials\\t01_introduction\\source\n", "05:22:06 [p4jit.toolchain.builder] \u001b[94mINFO\u001b[0m: Build validation passed\n", "05:22:06 [p4jit.toolchain.wrapper_builder] \u001b[94mINFO\u001b[0m: Wrapper build complete. Metadata saved to c:\\Users\\orani\\bilel\\git_projects\\robert_manzke\\project1\\trys\\costume_p4code_binary\\P4-JIT\\notebooks\\tutorials\\t01_introduction\\build\\signature.json\n", "05:22:06 [p4jit.p4jit] \u001b[94mINFO\u001b[0m: Function loaded successfully.\n", "\n", "โœ“ Function loaded at: 0x48210AE0\n", "โœ“ Args buffer at: 0x48210D40\n", "โœ“ Binary size: 516 bytes\n", "โœ“ Args size: 128 bytes\n", "โœ“ Firmware symbols: RESOLVED (printf available)\n", "============================================================\n" ] } ], "source": [ "print(\"\\n\" + \"=\"*60)\n", "print(\"BUILDING JIT FUNCTION\")\n", "print(\"=\"*60)\n", "\n", "# Load function (smart_args=True for NumPy integration)\n", "# use_firmware_elf=True enables printf and other firmware symbols\n", "func = jit.load(\n", " source=str(c_path),\n", " function_name='process_audio',\n", " optimization='O3',\n", " use_firmware_elf=True # CRITICAL: Enable firmware symbol resolution\n", ")\n", "\n", "print(f\"\\nโœ“ Function loaded at: 0x{func.code_addr:08X}\")\n", "print(f\"โœ“ Args buffer at: 0x{func.args_addr:08X}\")\n", "print(f\"โœ“ Binary size: {func.stats['code_size']} bytes\")\n", "print(f\"โœ“ Args size: {func.stats['args_size']} bytes\")\n", "print(f\"โœ“ Firmware symbols: RESOLVED (printf available)\")\n", "print(\"=\"*60)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 6. Inspect Generated Files\n", "\n", "The system automatically generates:\n", "- **temp.c**: Wrapper that unpacks arguments and calls your function\n", "- **audio_dsp.h**: Function prototypes with type declarations" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "============================================================\n", "GENERATED WRAPPER CODE (temp.c)\n", "============================================================\n", "// Auto-generated wrapper for process_audio\n", "// Generated by esp32-jit wrapper system\n", "// Args array size: 32 slots (128 bytes)\n", "// Arguments: 4 (slots 0-3)\n", "// Return value: slot 31\n", "\n", "\n", "#include \n", "#include \"audio_dsp.h\" // Include generated header\n", "\n", "// Wrapper function to handle argument unpacking and return value\n", "// Args are passed via a memory region (args_addr)\n", "// [0..N-1]: Arguments\n", "// [N]: Return value (if any)\n", "typedef int esp_err_t;\n", "#define ESP_OK 0\n", "\n", "\n", "esp_err_t call_remote(void) {\n", " volatile int32_t *io = (volatile int32_t *)0x48210d40;\n", "\n", " // Argument 0: POINTER type float*\n", " float* input = (float*) io[0];\n", "\n", " // Argument 1: POINTER type float*\n", " float* output = (float*) io[1];\n", "\n", " // Argument 2: VALUE type int32_t\n", " int32_t len = *(int32_t*)& io[2];\n", "\n", " // Argument 3: VALUE type float\n", " float gain = *(float*)& io[3];\n", "\n", " // Call original function: process_audio\n", " uint32_t result = process_audio(input, output, len, gain);\n", "\n", " // Write result (uint32_t) to slot 31\n", " *(uint32_t*)&io[31] = result;\n", "\n", " return ESP_OK;\n", "}\n", "\n" ] } ], "source": [ "print(\"\\n\" + \"=\"*60)\n", "print(\"GENERATED WRAPPER CODE (temp.c)\")\n", "print(\"=\"*60)\n", "\n", "temp_c_path = SOURCE_DIR / \"temp.c\"\n", "if temp_c_path.exists():\n", " with open(temp_c_path, 'r') as f:\n", " content = f.read()\n", " print(content)\n", "else:\n", " print(\"[Not found]\")" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "============================================================\n", "GENERATED HEADER (audio_dsp.h)\n", "============================================================\n", "#ifndef AUDIO_DSP_H\n", "#define AUDIO_DSP_H\n", "\n", "// Auto-generated header for process_audio\n", "// Source: audio_dsp.c\n", "\n", "#include \"std_types.h\"\n", "\n", "// Function declaration\n", "uint32_t process_audio(float* input, float* output, int32_t len, float gain);\n", "\n", "#endif // AUDIO_DSP_H\n", "\n" ] } ], "source": [ "print(\"\\n\" + \"=\"*60)\n", "print(\"GENERATED HEADER (audio_dsp.h)\")\n", "print(\"=\"*60)\n", "\n", "header_path = SOURCE_DIR / \"audio_dsp.h\"\n", "if header_path.exists():\n", " with open(header_path, 'r') as f:\n", " print(f.read())\n", "else:\n", " print(\"[Not found]\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 7. Binary Analysis & Memory Layout" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "============================================================\n", "BINARY SECTIONS\n", "============================================================\n", "05:22:06 [p4jit.toolchain.binary_object] \u001b[94mINFO\u001b[0m: Sections:\n", "05:22:06 [p4jit.toolchain.binary_object] \u001b[94mINFO\u001b[0m: .text 0x48210ae0 290 bytes\n", "05:22:06 [p4jit.toolchain.binary_object] \u001b[94mINFO\u001b[0m: .rodata 0x48210c04 223 bytes\n" ] } ], "source": [ "print(\"\\n\" + \"=\"*60)\n", "print(\"BINARY SECTIONS\")\n", "print(\"=\"*60)\n", "func.binary.print_sections()" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "============================================================\n", "SYMBOL TABLE (Functions)\n", "============================================================\n", "05:22:06 [p4jit.toolchain.binary_object] \u001b[94mINFO\u001b[0m: Functions:\n", "05:22:06 [p4jit.toolchain.binary_object] \u001b[94mINFO\u001b[0m: call_remote 0x48210ae0 244 bytes\n" ] } ], "source": [ "print(\"\\n\" + \"=\"*60)\n", "print(\"SYMBOL TABLE (Functions)\")\n", "print(\"=\"*60)\n", "func.binary.print_symbols()" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "============================================================\n", "MEMORY MAP\n", "============================================================\n", "05:22:06 [p4jit.toolchain.binary_object] \u001b[94mINFO\u001b[0m: Memory Map (Base: 0x48210ae0):\n", "05:22:06 [p4jit.toolchain.binary_object] \u001b[94mINFO\u001b[0m: โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\n", "05:22:06 [p4jit.toolchain.binary_object] \u001b[94mINFO\u001b[0m: 0 โ”‚ .text 290 bytes\n", "05:22:06 [p4jit.toolchain.binary_object] \u001b[94mINFO\u001b[0m: 290 โ”‚ [padding] 2 bytes\n", "05:22:06 [p4jit.toolchain.binary_object] \u001b[94mINFO\u001b[0m: 292 โ”‚ .rodata 223 bytes\n", "05:22:06 [p4jit.toolchain.binary_object] \u001b[94mINFO\u001b[0m: 515 โ”‚ [padding] 1 bytes\n", "05:22:06 [p4jit.toolchain.binary_object] \u001b[94mINFO\u001b[0m: โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\n", "05:22:06 [p4jit.toolchain.binary_object] \u001b[94mINFO\u001b[0m: Total: 516 bytes\n" ] } ], "source": [ "print(\"\\n\" + \"=\"*60)\n", "print(\"MEMORY MAP\")\n", "print(\"=\"*60)\n", "func.binary.print_memory_map()" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "============================================================\n", "FUNCTION METADATA\n", "============================================================\n", "Function: process_audio\n", "Return Type: uint32_t\n", "Parameters: 4\n", " [0] float* input (pointer)\n", " [1] float* output (pointer)\n", " [2] int32_t len (value)\n", " [3] float gain (value)\n", "\n", "Memory Addresses:\n", " Code Base: 0x48210ae0\n", " Args Base: 0x48210d40\n", " Args Size: 128 bytes (32 slots)\n" ] } ], "source": [ "print(\"\\n\" + \"=\"*60)\n", "print(\"FUNCTION METADATA\")\n", "print(\"=\"*60)\n", "metadata = func.binary.metadata\n", "print(f\"Function: {metadata['name']}\")\n", "print(f\"Return Type: {metadata['return_type']}\")\n", "print(f\"Parameters: {len(metadata['parameters'])}\")\n", "for i, param in enumerate(metadata['parameters']):\n", " print(f\" [{i}] {param['type']:<12} {param['name']:<12} ({param['category']})\")\n", " \n", "print(f\"\\nMemory Addresses:\")\n", "addrs = metadata['addresses']\n", "print(f\" Code Base: {addrs['code_base']}\")\n", "print(f\" Args Base: {addrs['arg_base']}\")\n", "print(f\" Args Size: {addrs['args_array_bytes']} bytes ({addrs['args_array_size']} slots)\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 8. Prepare Test Data (NumPy)\n", "\n", "Generate a 1-second audio signal @ 48kHz sampling rate" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "โœ“ Generated test signal:\n", " Samples: 48,000\n", " Duration: 1.0 seconds\n", " Frequency: 440.0 Hz\n", " Gain: 0.5\n", " Input range: [-1.000, 1.000]\n", " Input dtype: float32\n", " Data size: 187.50 KB\n" ] } ], "source": [ "# Audio parameters\n", "SAMPLE_RATE = 48000\n", "DURATION = 1.0\n", "NUM_SAMPLES = int(SAMPLE_RATE * DURATION)\n", "\n", "# Generate sine wave (440 Hz - A4 note)\n", "t = np.linspace(0, DURATION, NUM_SAMPLES, dtype=np.float32)\n", "frequency = 440.0\n", "input_signal = np.sin(2 * np.pi * frequency * t).astype(np.float32)\n", "\n", "# Prepare output buffer (zeros)\n", "output_signal = np.zeros_like(input_signal)\n", "\n", "# Gain factor\n", "gain = np.float32(0.5)\n", "\n", "print(f\"โœ“ Generated test signal:\")\n", "print(f\" Samples: {NUM_SAMPLES:,}\")\n", "print(f\" Duration: {DURATION} seconds\")\n", "print(f\" Frequency: {frequency} Hz\")\n", "print(f\" Gain: {gain}\")\n", "print(f\" Input range: [{input_signal.min():.3f}, {input_signal.max():.3f}]\")\n", "print(f\" Input dtype: {input_signal.dtype}\")\n", "print(f\" Data size: {input_signal.nbytes / 1024:.2f} KB\")" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "โœ“ Moved to Internal SRAM:\n", " Input Caps: 2052\n", " Output Caps: 2052\n" ] } ], "source": [ "# ---------------------------------------------------------\n", "# Move to Internal SRAM\n", "# ---------------------------------------------------------\n", "# We use MALLOC_CAP_INTERNAL to ensure it's in the fast internal memory (L2 MEM)\n", "# MALLOC_CAP_8BIT is required for general data access\n", "internal_caps = P4JIT.MALLOC_CAP_INTERNAL | P4JIT.MALLOC_CAP_8BIT\n", "input_p4 = jit.set_p4_mem_location(input_signal, internal_caps)\n", "output_p4 = jit.set_p4_mem_location(output_signal, internal_caps)\n", "print(f\"โœ“ Moved to Internal SRAM:\")\n", "print(f\" Input Caps: {input_p4.p4_caps}\")\n", "print(f\" Output Caps: {output_p4.p4_caps}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 9. Execute on ESP32-P4 (Native RISC-V)\n", "\n", "Smart Args automatically:\n", "- Allocates device memory for arrays\n", "- Transfers data to device\n", "- Executes native code\n", "- Returns results\n", "\n", "**Watch device monitor for printf output!**\n", "The printf statements in the C code will show:\n", "- Array size being processed\n", "- Buffer addresses\n", "- Gain factor\n", "- Performance metrics" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "============================================================\n", "EXECUTING ON DEVICE\n", "============================================================\n", "\n", "โš ๏ธ CHECK DEVICE MONITOR FOR PRINTF OUTPUT!\n", " You should see array size and processing info.\n", "\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "โœ“ Execution complete!\n", "\n", "Performance:\n", " CPU Cycles: 1,050,950\n", " Execution Time: 2919.31 ยตs (2.919 ms)\n", " Throughput: 16,442,267 samples/sec\n", " Efficiency: 21.89 cycles/sample\n", "\n", "Results:\n", " Output range: [-0.500, 0.500]\n", "\n", "Accuracy:\n", " Max Error: 0.000000000\n", " Mean Error: 0.000000000\n", "\n", "โœ“ PASS: Results match expected values!\n", "\n", "============================================================\n", "EXPECTED DEVICE MONITOR OUTPUT:\n", "============================================================\n", "[JIT] process_audio() called\n", "[JIT] Array size: 48000 samples\n", "[JIT] Gain factor: 0.50\n", "[JIT] Input buffer: 0x3c......\n", "[JIT] Output buffer: 0x3c......\n", "[JIT] Processing complete: 1050950 cycles\n", "[JIT] Performance: 21.89 cycles/sample\n", "============================================================\n" ] } ], "source": [ "print(\"\\n\" + \"=\"*60)\n", "print(\"EXECUTING ON DEVICE\")\n", "print(\"=\"*60)\n", "print(\"\\nโš ๏ธ CHECK DEVICE MONITOR FOR PRINTF OUTPUT!\")\n", "print(\" You should see array size and processing info.\\n\")\n", "\n", "# Execute (returns cycle count)\n", "cycles = func(input_signal, output_signal, np.int32(NUM_SAMPLES), gain)\n", "\n", "# Calculate performance metrics\n", "freq_mhz = 360.0 # ESP32-P4 @ 360 MHz\n", "time_us = cycles / freq_mhz\n", "time_ms = time_us / 1000.0\n", "samples_per_second = NUM_SAMPLES / (time_us / 1e6)\n", "cycles_per_sample = cycles / NUM_SAMPLES\n", "\n", "print(f\"\\nโœ“ Execution complete!\")\n", "print(f\"\\nPerformance:\")\n", "print(f\" CPU Cycles: {cycles:,}\")\n", "print(f\" Execution Time: {time_us:.2f} ยตs ({time_ms:.3f} ms)\")\n", "print(f\" Throughput: {samples_per_second:,.0f} samples/sec\")\n", "print(f\" Efficiency: {cycles_per_sample:.2f} cycles/sample\")\n", "\n", "print(f\"\\nResults:\")\n", "print(f\" Output range: [{output_signal.min():.3f}, {output_signal.max():.3f}]\")\n", "\n", "# Verify correctness\n", "expected = input_signal * gain\n", "max_error = np.abs(output_signal - expected).max()\n", "mean_error = np.abs(output_signal - expected).mean()\n", "\n", "print(f\"\\nAccuracy:\")\n", "print(f\" Max Error: {max_error:.9f}\")\n", "print(f\" Mean Error: {mean_error:.9f}\")\n", "\n", "if max_error < 1e-6:\n", " print(\"\\nโœ“ PASS: Results match expected values!\")\n", "else:\n", " print(\"\\nโœ— FAIL: Results do not match!\")\n", "\n", "print(\"\\n\" + \"=\"*60)\n", "print(\"EXPECTED DEVICE MONITOR OUTPUT:\")\n", "print(\"=\"*60)\n", "print(\"[JIT] process_audio() called\")\n", "print(f\"[JIT] Array size: {NUM_SAMPLES} samples\")\n", "print(f\"[JIT] Gain factor: {gain:.2f}\")\n", "print(\"[JIT] Input buffer: 0x3c......\")\n", "print(\"[JIT] Output buffer: 0x3c......\")\n", "print(f\"[JIT] Processing complete: {cycles} cycles\")\n", "print(f\"[JIT] Performance: {cycles_per_sample:.2f} cycles/sample\")\n", "print(\"=\"*60)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 10. Memory State After Execution" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "============================================================\n", "MEMORY STATE AFTER EXECUTION\n", "============================================================\n", "SPIRAM:\n", " Total: 32 MB\n", " Free: 29 MB\n", " Used: 2 MB\n", "\n", "Internal SRAM:\n", " Total: 453 KB\n", " Free: 374 KB\n", " Used: 78 KB\n", "\n", "JIT Function Memory: 0.70 KB\n", "============================================================\n" ] } ], "source": [ "print(\"\\n\" + \"=\"*60)\n", "print(\"MEMORY STATE AFTER EXECUTION\")\n", "print(\"=\"*60)\n", "\n", "stats_after = jit.get_heap_stats(print_s=False)\n", "\n", "print(f\"SPIRAM:\")\n", "print(f\" Total: {stats_after['total_spiram']//1024//1024:>6} MB\")\n", "print(f\" Free: {stats_after['free_spiram']//1024//1024:>6} MB\")\n", "print(f\" Used: {(stats_after['total_spiram'] - stats_after['free_spiram'])//1024//1024:>6} MB\")\n", "\n", "print(f\"\\nInternal SRAM:\")\n", "print(f\" Total: {stats_after['total_internal']//1024:>6} KB\")\n", "print(f\" Free: {stats_after['free_internal']//1024:>6} KB\")\n", "print(f\" Used: {(stats_after['total_internal'] - stats_after['free_internal'])//1024:>6} KB\")\n", "\n", "# Calculate JIT overhead\n", "spiram_used = (stats['free_spiram'] - stats_after['free_spiram']) / 1024\n", "print(f\"\\nJIT Function Memory: {spiram_used:.2f} KB\")\n", "print(\"=\"*60)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 11. View Disassembly\n", "\n", "Generate annotated disassembly with source code intermixed.\n", "This shows the actual RISC-V instructions generated by the compiler." ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "05:47:09 [p4jit.toolchain.binary_object] \u001b[94mINFO\u001b[0m: Disassembly saved to c:\\Users\\orani\\bilel\\git_projects\\robert_manzke\\project1\\trys\\costume_p4code_binary\\P4-JIT\\notebooks\\tutorials\\t01_introduction\\source\\disassembly.txt\n", "โœ“ Disassembly saved to: c:\\Users\\orani\\bilel\\git_projects\\robert_manzke\\project1\\trys\\costume_p4code_binary\\P4-JIT\\notebooks\\tutorials\\t01_introduction\\source\\disassembly.txt\n", "โœ“ File size: 4.34 KB\n", "\n", "First 200 lines:\n", "------------------------------------------------------------\n", "\n", "C:\\Users\\orani\\AppData\\Local\\Temp\\esp32_build_8ots76lw\\output.elf: file format elf32-littleriscv\n", "\n", "\n", "Disassembly of section .text:\n", "\n", "48210ae0 :\n", "48210ae0:\t7179 \taddi\tsp,sp,-48\n", "48210ae2:\t482117b7 \tlui\ta5,0x48211\n", "48210ae6:\t48211537 \tlui\ta0,0x48211\n", "48210aea:\td226 \tsw\ts1,36(sp)\n", "48210aec:\tc0450513 \taddi\ta0,a0,-1020 # 48210c04 <.done+0xe>\n", "48210af0:\td487a483 \tlw\ts1,-696(a5) # 48210d48 <__binary_end+0x64>\n", "48210af4:\td606 \tsw\tra,44(sp)\n", "48210af6:\td422 \tsw\ts0,40(sp)\n", "48210af8:\td04a \tsw\ts2,32(sp)\n", "48210afa:\te622 \tfsw\tfs0,12(sp)\n", "48210afc:\tce4e \tsw\ts3,28(sp)\n", "48210afe:\td407a403 \tlw\ts0,-704(a5)\n", "48210b02:\td4c7a407 \tflw\tfs0,-692(a5)\n", "48210b06:\td447a903 \tlw\ts2,-700(a5)\n", "48210b0a:\tf7e06097 \tauipc\tra,0xf7e06\n", "48210b0e:\t352080e7 \tjalr\t850(ra) # 40016e5c \n", "48210b12:\t48211537 \tlui\ta0,0x48211\n", "48210b16:\t85a6 \tmv\ta1,s1\n", "48210b18:\tc2450513 \taddi\ta0,a0,-988 # 48210c24 <.done+0x2e>\n", "48210b1c:\tf7e06097 \tauipc\tra,0xf7e06\n", "48210b20:\t340080e7 \tjalr\t832(ra) # 40016e5c \n", "48210b24:\t20840553 \tfmv.s\tfa0,fs0\n", "48210b28:\t079f0097 \tauipc\tra,0x79f0\n", "48210b2c:\tc70080e7 \tjalr\t-912(ra) # 4fc00798 <__extendsfdf2>\n", "48210b30:\t862a \tmv\ta2,a0\n", "48210b32:\t48211537 \tlui\ta0,0x48211\n", "48210b36:\t86ae \tmv\ta3,a1\n", "48210b38:\tc4450513 \taddi\ta0,a0,-956 # 48210c44 <.done+0x4e>\n", "48210b3c:\tf7e06097 \tauipc\tra,0xf7e06\n", "48210b40:\t320080e7 \tjalr\t800(ra) # 40016e5c \n", "48210b44:\t48211537 \tlui\ta0,0x48211\n", "48210b48:\t85a2 \tmv\ta1,s0\n", "48210b4a:\tc6050513 \taddi\ta0,a0,-928 # 48210c60 <.done+0x6a>\n", "48210b4e:\tf7e06097 \tauipc\tra,0xf7e06\n", "48210b52:\t30e080e7 \tjalr\t782(ra) # 40016e5c \n", "48210b56:\t48211537 \tlui\ta0,0x48211\n", "48210b5a:\t85ca \tmv\ta1,s2\n", "48210b5c:\tc7850513 \taddi\ta0,a0,-904 # 48210c78 <.done+0x82>\n", "48210b60:\tf7e06097 \tauipc\tra,0xf7e06\n", "48210b64:\t2fc080e7 \tjalr\t764(ra) # 40016e5c \n", "48210b68:\tc00029f3 \trdcycle\ts3\n", "48210b6c:\t20840553 \tfmv.s\tfa0,fs0\n", "48210b70:\t85ca \tmv\ta1,s2\n", "48210b72:\t8522 \tmv\ta0,s0\n", "48210b74:\t8626 \tmv\ta2,s1\n", "48210b76:\t20ad \tjal\t48210be0 \n", "48210b78:\tc0002473 \trdcycle\ts0\n", "48210b7c:\t48211537 \tlui\ta0,0x48211\n", "48210b80:\t41340433 \tsub\ts0,s0,s3\n", "48210b84:\t85a2 \tmv\ta1,s0\n", "48210b86:\tc9450513 \taddi\ta0,a0,-876 # 48210c94 <.done+0x9e>\n", "48210b8a:\tf7e06097 \tauipc\tra,0xf7e06\n", "48210b8e:\t2d2080e7 \tjalr\t722(ra) # 40016e5c \n", "48210b92:\td004f7d3 \tfcvt.s.w\tfa5,s1\n", "48210b96:\td0147553 \tfcvt.s.wu\tfa0,s0\n", "48210b9a:\t18f57553 \tfdiv.s\tfa0,fa0,fa5\n", "48210b9e:\t079f0097 \tauipc\tra,0x79f0\n", "48210ba2:\tbfa080e7 \tjalr\t-1030(ra) # 4fc00798 <__extendsfdf2>\n", "48210ba6:\t862a \tmv\ta2,a0\n", "48210ba8:\t48211537 \tlui\ta0,0x48211\n", "48210bac:\t86ae \tmv\ta3,a1\n", "48210bae:\tcbc50513 \taddi\ta0,a0,-836 # 48210cbc <.done+0xc6>\n", "48210bb2:\tf7e06097 \tauipc\tra,0xf7e06\n", "48210bb6:\t2aa080e7 \tjalr\t682(ra) # 40016e5c \n", "48210bba:\t482117b7 \tlui\ta5,0x48211\n", "48210bbe:\t50b2 \tlw\tra,44(sp)\n", "48210bc0:\tda87ae23 \tsw\ts0,-580(a5) # 48210dbc <__binary_end+0xd8>\n", "48210bc4:\t5422 \tlw\ts0,40(sp)\n", "48210bc6:\t5492 \tlw\ts1,36(sp)\n", "48210bc8:\t5902 \tlw\ts2,32(sp)\n", "48210bca:\t49f2 \tlw\ts3,28(sp)\n", "48210bcc:\t6432 \tflw\tfs0,12(sp)\n", "48210bce:\t4501 \tli\ta0,0\n", "48210bd0:\t6145 \taddi\tsp,sp,48\n", "48210bd2:\t8082 \tret\n", "\t...\n", "\n", "48210be0 :\n", "48210be0:\tca19 \tbeqz\ta2,48210bf6 <.done>\n", "\n", "48210be2 <.loop>:\n", "48210be2:\t00052007 \tflw\tft0,0(a0)\n", "48210be6:\t10a07053 \tfmul.s\tft0,ft0,fa0\n", "48210bea:\t0005a027 \tfsw\tft0,0(a1)\n", "48210bee:\t0511 \taddi\ta0,a0,4\n", "48210bf0:\t0591 \taddi\ta1,a1,4\n", "48210bf2:\t167d \taddi\ta2,a2,-1\n", "48210bf4:\tf67d \tbnez\ta2,48210be2 <.loop>\n", "\n", "48210bf6 <.done>:\n", "48210bf6:\t8082 \tret\n", "\t...\n", "\n", "\n", "(See full disassembly in file)\n" ] } ], "source": [ "# Generate disassembly file\n", "disasm_path = SOURCE_DIR / \"disassembly.txt\"\n", "func.binary.disassemble(output=str(disasm_path), source_intermix=False)\n", "\n", "print(f\"โœ“ Disassembly saved to: {disasm_path}\")\n", "print(f\"โœ“ File size: {disasm_path.stat().st_size / 1024:.2f} KB\")\n", "\n", "print(\"\\nFirst 200 lines:\")\n", "print(\"-\" * 60)\n", "\n", "with open(disasm_path, 'r') as f:\n", " lines = f.readlines()[:200]\n", " print(''.join(lines))\n", " \n", "print(\"\\n(See full disassembly in file)\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 12. Performance Visualization\n", "\n", "Plot input vs output to verify signal processing visually." ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAAMWCAYAAAAgRDUeAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8ekN5oAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd3gU1dcH8O+k9wYpJIQUWuiQBAKhd5AiilIsiKDYG4rIq1JVFEXsBRERRUAUUERRQJAeIBB6J/SEUFJILzvvH/c3S5Zsks1m+pzP8+RRdmdnzubm7s6cufdcjud5HoQQQgghhBBCCCGEyMhB6QAIIYQQQgghhBBCiPFQUooQQgghhBBCCCGEyI6SUoQQQgghhBBCCCFEdpSUIoQQQgghhBBCCCGyo6QUIYQQQgghhBBCCJEdJaUIIYQQQgghhBBCiOwoKUUIIYQQQgghhBBCZEdJKUIIIYQQQgghhBAiO0pKEUIIIYQQQgghhBDZUVKKEEIIIZrQo0cP9OjRQ+kwzDiOw/Tp023advfu3XBxccH58+elDUqHavJ7JsCoUaMwYsQIpcMghBBCbEJJKUIIIUTDFi1aBI7jsHfvXqVDAQDk5+dj+vTp2Lx5s82vOXfuHB599FE0bNgQbm5uCAkJQbdu3TBt2jTpApXZ66+/jtGjRyMiIsLq8yUlJWjevDk4jsMHH3xQ5b6WLFkCjuPg5eVl9fljx45hwIAB8PLyQkBAAB5++GFcu3bNpjg5jsOzzz5r9Tmx/9a2bduGgQMHIiwsDG5ubmjQoAGGDBmCn376SZT918bPP/8MjuOwatWqCs+1adMGHMdh06ZNFZ5r0KABEhMT5QixUpMnT8avv/6KAwcOKBoHIYQQYgsnpQMghBBCiH7k5+djxowZAGDTqKbTp0+jffv2cHd3x7hx4xAZGYm0tDTs27cP7733nnlfAPDPP/9IFbakUlJSsGHDBuzYsaPSbT799FNcuHCh2n3l5ubi1Vdfhaenp9XnL126hG7dusHX1xfvvPMOcnNz8cEHH+DQoUPm0VpqsGLFCowcORJt27bFCy+8AH9/f6SmpmLLli345ptv8MADD5i3LSgogJOTvKesXbp0AcASZ/fcc4/58ZycHBw+fBhOTk7Yvn07evbsaX7u4sWLuHjxIkaNGiVrrHdq164d4uPjMXfuXCxevFjRWAghhJDqUFKKEEIIIYqZN28ecnNzkZKSUmEUUUZGhsW/1ZJQqanvvvsODRo0QMeOHa0+n5GRgZkzZ2Ly5MmYOnVqlft666234O3tjZ49e2L16tUVnn/nnXeQl5eH5ORkNGjQAADQoUMH9O3bF4sWLcKECRNq/X7EMH36dDRv3hy7du2q0K53trubm5ucoQEAQkNDERUVhW3btlk8vnPnTvA8j/vvv7/Cc8K/hYSWkkaMGIFp06bhiy++qHREHSGEEKIGNH2PEEII0ZmxY8fCy8sLly9fxrBhw+Dl5YXAwEC88sorKCsrM2937tw583SxefPmISIiAu7u7ujevTsOHz5ssc/K6jmNHTsWkZGR5v0FBgYCAGbMmAGO46qtB3TmzBnUr1/f6rS2oKCgamM4f/48hg4dCk9PTwQFBeGll17C33//DY7jLKYQ9ujRAy1btsTRo0fRs2dPeHh4ICwsDHPmzLHYX3FxMaZOnYq4uDj4+vrC09MTXbt2tTpVy1arV69Gr169wHGc1edfe+01NG3aFA899FCV+zl16hTmzZuHDz/8sNKRQ7/++isGDx5sTkgBQJ8+fdCkSRP8/PPPdr8HazZv3mxu4zt/hL+Jypw5cwbt27e3mmi8s93v/BuaPn06OI7D6dOnMXbsWPj5+cHX1xePPvoo8vPzK+zvxx9/RFxcHNzd3REQEIBRo0bh4sWL1b6/Ll26YP/+/SgoKDA/tn37drRo0QIDBw7Erl27YDKZLJ7jOA6dO3cGwJKRvXr1QlBQEFxdXdG8eXN8+eWXFscYPHgwoqOjrR6/U6dOiI+Pt+u99O3bF3l5eVi/fn2175MQQghREiWlCCGEEB0qKytD//79UadOHXzwwQfo3r075s6di/nz51fYdvHixfjkk0/wzDPPYMqUKTh8+DB69eqFq1ev1uiYgYGB5ovue+65Bz/88AN++OEH3HvvvZW+JiIiAhcvXsS///5bszcIIC8vD7169cKGDRvw/PPP4/XXX8eOHTswefJkq9tnZmZiwIABaNOmDebOnYuYmBhMnjwZf/31l3mbnJwcLFiwAD169MB7772H6dOn49q1a+jfvz9SUlJqHOPly5dx4cIFxMbGWn1+9+7d+P777/HRRx9VmrQSvPjii+jZsyfuuuuuSo+VkZFRIZEBsNFS+/fvtynmwsJCXL9+vcJPbm6uxXbNmjUzt7Hw8+mnn8LZ2blCYulOERER2LhxIy5dumRTTNaMGDECt27dwuzZszFixAgsWrTIYronALz99tsYM2YMGjdujA8//BAvvvgiNm7ciG7duiErK6vK/Xfp0gUlJSVISkoyP7Z9+3YkJiYiMTER2dnZFsnb7du3IyYmBnXq1AEAfPnll4iIiMD//d//Ye7cuQgPD8fTTz+Nzz//3PyakSNHIjU1FXv27LE49vnz57Fr1y6LqYA1eS/NmzeHu7s7tm/fbtPvkhBCCFEMTwghhBDN+u6773gA/J49e8yPPfLIIzwAfubMmRbbtmvXjo+LizP/OzU1lQfAu7u785cuXTI/npSUxAPgX3rpJfNj3bt357t3717h+I888ggfERFh/ve1a9d4APy0adNsiv/w4cO8u7s7D4Bv27Yt/8ILL/CrV6/m8/LyKmx7Zwxz587lAfCrV682P1ZQUMDHxMTwAPhNmzZZvBYAv3jxYvNjRUVFfEhICD98+HDzY6WlpXxRUZHFcTMzM/ng4GB+3LhxFo/b8j43bNjAA+DXrFlT4TmTycR36NCBHz16NM/zt9vj/fffr7DtH3/8wTs5OfFHjhzheZ793j09PS222bNnT4X3KJg0aRIPgC8sLKwyXgDV/pT/W7vz/QwePJj38vIyx1mZb7/9lgfAu7i48D179uTffPNNfuvWrXxZWZnVmMr/nqdNm8YDqNAe99xzD1+nTh3zv8+dO8c7Ojryb7/9tsV2hw4d4p2cnCo8fqcjR47wAPhZs2bxPM/zJSUlvKenJ//999/zPM/zwcHB/Oeff87zPM/n5OTwjo6O/OOPP25+fX5+foV99u/fn4+Ojjb/Ozs7m3d1deVffvlli+3mzJnDcxzHnz9/3u730qRJE37gwIFVvkdCCCFEaTRSihBCCNGpJ5980uLfXbt2xdmzZytsN2zYMISFhZn/3aFDByQkJODPP/+UPMYWLVogJSUFDz30EM6dO4ePP/4Yw4YNQ3BwML755psqX7tu3TqEhYVh6NCh5sfc3Nzw+OOPW93ey8vLYoqci4sLOnToYPE7cXR0NE8pM5lMuHnzJkpLSxEfH499+/bV+P3duHEDAODv71/huUWLFuHQoUN47733qtxHcXExXnrpJTz55JNo3rx5pdsJ08xcXV0rPCfUZSo/Fa0yd999N9avX1/hZ9KkSVW+btasWfjjjz+waNGiKuMEgHHjxmHdunXo0aMHtm3bhlmzZqFr165o3LhxlQXhy7P2933jxg3k5OQAAFauXAmTyYQRI0ZYjPgKCQlB48aNq52S2axZM9SpU8dcK+rAgQPIy8szr66XmJhoHom0c+dOlJWVWdSTcnd3N/9/dnY2rl+/ju7du+Ps2bPIzs4GAPj4+GDgwIH4+eefwfO8efvly5ejY8eO5mmY9rwXf39/XL9+3abfJSGEEKIUKnROCCGE6JCbm5u5vpPA398fmZmZFbZt3LhxhcekqEFUmSZNmuCHH35AWVkZjh49ij/++ANz5szBhAkTEBUVhT59+lh93fnz59GwYcMK094aNWpkdfv69etX2Nbf3x8HDx60eOz777/H3Llzcfz4cZSUlJgfj4qKsuftAYBFwgFg0wSnTJmCSZMmITw8vMrXzps3D9evX68wNe1OQhKkqKiownOFhYUW21Slfv36Vn/nVU21W7duHWbMmIEpU6Zg+PDh1R4DAPr374/+/fsjPz8fycnJWL58Ob766isMHjwYx48fr3YKYPm6WcDtxF9mZiZ8fHxw6tQp8Dxv9e8bAJydnavcP8dxSExMxJYtW2AymbB9+3YEBQWZ/74SExPx2WefAYA5OVU+KbV9+3ZMmzYNO3furFDrKjs7G76+vgDYFL7Vq1dj586dSExMxJkzZ5CcnIyPPvrIvL0974Xn+WqnhBJCCCFKo6QUIYQQokOOjo6i7o/juAqJFQAWhdNry9HREa1atUKrVq3QqVMn9OzZE0uWLKk0KWXP/q0p/75+/PFHjB07FsOGDcOkSZMQFBQER0dHzJ49G2fOnKnxMYX6QncmAz/44AMUFxdj5MiROHfuHIDbSZ/MzEycO3cOoaGhKCgowFtvvYWnn34aOTk55lFAubm54Hke586dg4eHB4KCglCvXj0AQFpaWoU40tLSEBAQYHUUVW2lpqbiwQcfRN++ffHWW2/V+PUeHh7o2rUrunbtirp162LGjBn466+/8Mgjj1T5uura02QygeM4/PXXX1a3tWVVui5dumDNmjU4dOiQuZ6UIDExEZMmTcLly5exbds2hIaGmouWnzlzBr1790ZMTAw+/PBDhIeHw8XFBX/++SfmzZtnUSB9yJAh8PDwwM8//4zExET8/PPPcHBwwP3332/exp73kpmZWWkSixBCCFELSkoRQgghBnfq1KkKj508edJiBTV/f3+rU//Onz9v8W+xRmYIxbqtJVgEEREROHr0aIURIadPn7b7uL/88guio6OxcuVKi31OmzbNrv3FxMQAYImb8i5cuIDMzEy0aNGiwmveeecdvPPOO9i/fz/8/PyQm5uLOXPmVFgpEGCjt+6++26sXr0aYWFhCAwMxN69eytst3v3brRt29au91CVgoIC3HvvvfDz88PSpUvh4FC7yhC2tLutGjZsCJ7nERUVhSZNmti1D2Hk07Zt27B9+3a8+OKL5ufi4uLg6uqKzZs3IykpyaIA/Zo1a1BUVITff//dYkSXtWl2np6eGDx4MFasWIEPP/wQy5cvR9euXREaGmr3eyktLcXFixctprYSQgghakQ1pQghhBCDW716NS5fvmz+9+7du5GUlISBAweaH2vYsCGOHz+Oa9eumR87cOBAhdW9PDw8AKDalc0EW7dutZgiJxDqWTVt2rTS1/bv3x+XL1/G77//bn6ssLCw2lpUVRFGoZQfPZWUlISdO3fatb+wsDCEh4dXSBQ9//zzWLVqlcXP119/DQAYO3YsVq1ahaioKAQFBVXYbtWqVejZsyfc3NywatUqTJkyxbzf4cOH448//sDFixfNj23cuBEnT560GHkjlieffBInT57EqlWrrNbNqszGjRutPm5Lu9vq3nvvhaOjI2bMmFFhlB/P8+Z6X1WJj4+Hm5sblixZgsuXL1uMlHJ1dUVsbCw+//xz5OXlWUzds/Z3lJ2dje+++87qcUaOHIkrV65gwYIFOHDgAEaOHFmr93L06FEUFhZaxEsIIYSoEY2UIoQQQgyuUaNG6NKlC5566ikUFRXho48+Qp06dfDqq6+atxk3bhw+/PBD9O/fH+PHj0dGRga++uortGjRwjylDGA1i5o3b47ly5ejSZMmCAgIQMuWLdGyZUurx37vvfeQnJyMe++9F61btwYA7Nu3D4sXL0ZAQIDFyJQ7PfHEE/jss88wevRovPDCC6hXrx6WLFliLuptz6itwYMHY+XKlbjnnnswaNAgpKam4quvvkLz5s2Rm5tb4/0BrHD4qlWrLEZ0xcbGIjY21mI7YRpfixYtMGzYMPPj5f9fsHr1auzevbvCc//3f/+HFStWoGfPnnjhhReQm5uL999/H61atcKjjz5qV/yVWbt2LRYvXozhw4fj4MGDFrW5vLy8rMYtuPvuuxEVFYUhQ4agYcOGyMvLw4YNG7BmzRq0b98eQ4YMqXV8DRs2xFtvvYUpU6bg3LlzGDZsGLy9vZGamopVq1ZhwoQJeOWVV6rch4uLC9q3b4+tW7fC1dUVcXFxFs8nJiZi7ty5ACzrSfXr1w8uLi4YMmQInnjiCeTm5uKbb75BUFCQ1VFgd911F7y9vfHKK6/A0dGxQl2umr6X9evXw8PDA3379q3x740QQgiREyWlCCGEEIMbM2YMHBwc8NFHHyEjIwMdOnTAZ599Zq5RBLCVyBYvXoypU6di4sSJaN68OX744Qf89NNP2Lx5s8X+FixYgOeeew4vvfQSiouLMW3atEqTUv/3f/+Hn376Cf/99x+WLFmC/Px81KtXD6NGjcKbb75ZZXFxLy8v/Pvvv3juuefw8ccfw8vLC2PGjEFiYiKGDx9uTk7VxNixY5Geno6vv/4af//9N5o3b44ff/wRK1asqPA+bTVu3Dh89tln2L59u0XiQgrh4eH477//MHHiRLz22mtwcXHBoEGDMHfuXNHrSQmj5n799Vf8+uuvFs9FRERUmZRasGABfvvtN/z888+4cuUKeJ5HdHQ0Xn/9dUyePBlOTuKcor722mto0qQJ5s2bZy4UHx4ejn79+tk8ta1Lly7YunWrebpeeZ07d8bcuXPh7e2NNm3amB9v2rQpfvnlF7zxxht45ZVXEBISgqeeegqBgYEYN25chWO4ublh6NCh5hpq1oq81+S9rFixAvfeey+8vb1teo+EEEKIUjjeWtVSQgghhOjeuXPnEBUVhffff7/aESNa8tFHH+Gll17CpUuXEBYWpnQ4AIDevXsjNDQUP/zwg9KhEJ1LSUlBbGws9u3bJ0kdMUIIIURMVFOKEEIIIZpVUFBg8e/CwkJ8/fXXaNy4sWoSUgArXr58+fIKheEJEdu7776L++67jxJShBBCNIGm7xFCCCFEs+699140aNAAbdu2RXZ2Nn788UccP34cS5YsUTo0CwkJCSguLlY6DGIAy5YtUzoEQgghxGaUlCKEEEKIZvXv3x8LFizAkiVLUFZWhubNm2PZsmUVVi8jhBBCCCHqQzWlCCGEEEIIIYQQQojsqKYUIYQQQgghhBBCCJEdJaUIIYQQQgghhBBCiOyoppQITCYTrly5Am9vb3Acp3Q4hBBCCCGEEEIIIYrheR63bt1CaGgoHBwqHw9FSSkRXLlyBeHh4UqHQQghhBBCCCGEEKIaFy9eRP369St9npJSIvD29gbAftk+Pj4KR2Mfk8mEa9euITAwsMosJiFEfaj/EqJd1H8J0S7qv4RoF/Vf6eXk5CA8PNycL6kMJaVEIEzZ8/Hx0XRSqrCwED4+PtQpCdEY6r+EaBf1X0K0i/ovIdpF/Vc+1ZU4ot8+IYQQQgghhBBCCJEdJaUIIYQQQgghhBBCiOx0lZTasmULhgwZgtDQUHAch9WrV1f7ms2bNyM2Nhaurq5o1KgRFi1aJHmchBBCCCGEEEIIIUanq6RUXl4e2rRpg88//9ym7VNTUzFo0CD07NkTKSkpePHFF/HYY4/h77//ljhSQgghhBBCCCGEEGPTVaHzgQMHYuDAgTZv/9VXXyEqKgpz584FADRr1gzbtm3DvHnz0L9/f6nCJIQQQgghhBBCCDE8XSWlamrnzp3o06ePxWP9+/fHiy++WOXrioqKUFRUZP53Tk4OAFbB32QyiR6nHEwmE3ielyX+khLg7FnA3x8ICpL8cEQEpaXAmTOAry8QEqJ0NORO1vpvWRlrMy8vIDRUweCIzcrK2GejhwcQFqZ0NMQWJhOQmgq4uADh4fbuQ77vX8La7Nw5wNERaNAAqGZBIKICPA+cP8/+PyJCXW1G/dc6ngcuXGDfa5GRAC1spn48D1y+DBQVsTZzdFQ6IulR/5Werb9bQyel0tPTERwcbPFYcHAwcnJyUFBQAHd3d6uvmz17NmbMmFHh8WvXrqGwsFCSWKVmMpmQnZ0NnuclWxKzpAT4+GMv7NnjjGbNSnHtmgPy8jhMmZKLpk1LJTkmqZ3SUuCLLzyxbZsLmjUrRVaWAzIzOUyalItWrajN1KJ8/wUcMH++B/791xUxMaW4dYtDRoYjXn45F7GxJUqHSqwwmYDFi92xdq0bYmJKkZ/P4coVRzz/fC46daI2UyOeB5YudceqVW5o2rQUhYUcLl50xDPP5KFbt+Ia7UuO71/C2mzlSjcsW+aOJk1KUVrKITXVERMm5KNPn6Lqd0AU8ccfrli82APR0WXgOB6nTzvhkUfyMXiwOtqM+m9FGza44ptvPBARUQYnJx6nTjlh9OgC3HuvNq+RjGDLFhd8/rknGjQog6srj+PHnTB8eCFGjSpQVRJYbNR/pXfr1i2btjN0UspeU6ZMwcSJE83/zsnJQXh4OAIDA+Hj46NgZPYzmUzgOA6BgYGSdMrcXOCBBzg89BCP994DOM4ZAMvIP/lkHTz3HI9+/UQ/LKmFggLgoYc43H03j1mzbrdZRgZrs0ce4XH33QoHSQDc7r++voEYN84RPXrw2LTpdpvduAE8/XQAMjN5jB6tcLDEQmkp8PjjHNq2ZW3m4MDaLDsbeO65AFy/zmP8eIWDJBZMJuDZZzlERPDYuBFwcmJtlpsLvPSSP65e5fHMMzXZn7Tfv4QlpCZN4uDlBWzYwMPZmbVZQQHw6qt+uHSJx6uvKhwkscDzwLRpHIqKgH/+4eHiwtqsqAh4800/XLgATJ/OKxwl9d87vfsucOUKh7/+4uHmxtqstBSYNcsF77/vizlzeF0nObTos8+AAwc4rF3Lw8ODtVlZGfD++86YOdMHn37K63akG/Vf6bm5udm0naGTUiEhIbh69arFY1evXoWPj0+lo6QAwNXVFa6urhUed3Bw0PQfNMdxkryHsjJg7Fhg8mSga1fLb6LwcODXX4ERIzgEBQGxsaIemtjJZAIeewx46imgXz/LNgsJAVasAEaPZm3WubNCQZI7cHjmGUc88ACHoUMt2ywwEFi2DBgzhkNwMHDHrGWioJdfBgYMYP2pPH9/YPFiYMIE1s8oAawe//d/QHw88Nhjlm3m4wMsWAA89xyH5ctRowSwVN+/hHnrLTZVj1VnuN1unp7A558Dkydz+PZb4PHHlYqQ3OnDDwE3N9Z25dvM3R344ANg5kzgk084VFNxQxbUf5n581ly/tNP2e9E4OICzJrF2vTddzm8/rqCQRILS5YAp0+z767ybebgwL7r5s8H3nyTw+zZCgYpMeq/0rL192ro336nTp2wceNGi8fWr1+PTp06KRSRPr37LjBkCNC1q/Xn3dyARYvYxZmNI/yIxD79FEhMRKWj15ydge++A958E7h5U97YiHVLl7qjSRMeQ4daf97RkZ10vPcekJ4ub2zEumXLWJ22ypIXDg7AF18AX33FanMQ5a1ZAxQWsqS9NRwHfPwx8NNPwMmT8sZGrNu4kfWfF16ofJt33wXWrQMOHpQvLlK5HTuAfftQZfLizTeB3buBXbvki4tUbv9+YP16lkSsbCTUxImsbuK//8obG7Hu2DFg+XJg3rzK22zCBJZo/OMPeWMjxqOrpFRubi5SUlKQkpICAEhNTUVKSgou/O9sfsqUKRgzZox5+yeffBJnz57Fq6++iuPHj+OLL77Azz//jJdeekmJ8HXpyBHg0CE2UqoqAQHA1KnAa6/JEhapwpkzwKZNwLPPVr2dtzcwezbwyivyxEUqd/kysHatW7Vt4e4OzJ0LVdxZNrpr14BvvwWmTat6OxcX4JNP2AU1r/xMFUPLygI++oglMKri6MiSiS++SG2mtNxc4O232QiNqqYMcRzw5Zfs+6ysTL74SEWFhSzhxEbbVL4dx7F+9vrrQHHNyrgRkZWWAq++ykYdVjco4pNPWJ8sKJAnNmKdycSShF98UX1B8/ffZ4mr/63rRYgkdJWU2rt3L9q1a4d27doBACZOnIh27dph6tSpAIC0tDRzggoAoqKisHbtWqxfvx5t2rTB3LlzsWDBAvTv31+R+PWG54EpU9gwa1vmj/fsyb6kDhyQPjZSuddeY19AtrRZQgJLdOzcKX1cpHL/938c3njjlk0rpbRuzaaxrF8vfVykcm++ye4o/6+0TZUaNwbatgV++03ysEgVZs0C3niDje6tTng4mya7ZIn0cZHKvf8+u/Dy8qp+26Ag4L772HQVopxPP2WjM/z9q9/Wzw8YP56NTiTKmT8fGDXKthW1PT1Zwr665D6R1uLFrHRA/frVb+vmxpK/M2dKHxcxLl0lpXr06AGe5yv8LFq0CACwaNEibN68ucJr9u/fj6KiIpw5cwZjqxvSQ2y2eTPQqpVtH3iCmTOrHzlApLNrF1uKvnFj218zfTq7WKMRAco4eJAlBps1s301xDfeAObMYXfKiPyOHWMJ+IQE21/z6qvsYq2UFr1URGoqcPEiu3liq+eeY9Oci9SxSJjhpKWxKUWDBtn+mvHjWZ3LvDzp4iKVu3GDTe0aMcL214weDWzYwEYyEvndugWsXFn9jIjyBg9m0zPvKOtLZFJQwJJSTz1l+2t69WLfg1RKgEhFV0kpoi7z5tV8mlD9+kB0NI28UcrcucCkSTV7TWAgEBfH6nYQ+X3wATBpUs0ygj4+bBQHjbxRxjvvsMRgTbi7A/feCyxdKk1MpGrvvlt1fRtrnJ2BRx5h0zSJ/N5/n43WrslKX46OwNNPs2lIRH4ff8zqi9akzTiOvWbePOniIpX74guWgLdlpLaA41jfnDNHurhI5b79liXgXVxq9rqpU9n5CyFSoKQUkcTOnWy0TWBgzV87aRJLjhB5HTrEanuFhdX8tS+9xOoEEHmdOcP+27BhzV/7zDPA11+LGw+p3tmz7IS8JqMRBY89xu5u0qhEeV25AmRmAm3a1Py1DzzARhHQqER5Xb/OVpSyZ92aYcOAv/8GSkpED4tUIScH2LMH6N275q/t25eddxYWih8XqVxBARulNmRIzV+bmMhGDdMCR/IqKQFWrQJGjqz5a9u0YfUw09LEj4sQSkoRScydy+5c2aNePTaS4+xZcWMiVZszh00RskdAABvlduSIuDGRqr3/vv2F5r28gJYt2UUAkc9XX7GEoD1cXdlF9pYt4sZEqvbNNzWb5lCekxO7YP7rL3FjIlX77jtWl8geDg7APfcAq1eLGhKpxg8/AI8+WrNRUgKOY9P4aCSpvJYtY4l3G1d8r2DsWOD770UNiVRj5Uo26trJyb7Xv/ACjSQl0qCkFBHd2bMsqRQaav8+JkygURxyunKF1aqxZ8SN4Mkn2epFRB43brB6DK1b278PajN5CQs5dOhg/z6eeII+G+VUUgJs3Qr06GH/PsaPBxYsEC0kUg2TiY10GjjQ/n088gjwv3KkRAY8z6aTDxtm/z6EpBSNJJXPzz/bN+JGcO+9bNQOjSSVz5IlwEMP2f/6rl2BpCSqb0nER0kpIrrvvgPGjavdPhISWIFSKhArj8WLa1ak0prWrVkRxNxcUUIi1fjpJ+Dhh2u3j0aNWHHYGzdECYlUQziBt2ckgECYXnv5sjgxkar9/jswdGjt2qxuXaBOHeDkSfHiIpVbv54V5a1JjZs7eXuzz8f9+8WLi1Ru504gPr7mNW7Kc3NjCX8aSSqPAwfYNHQPD/v34eQE9O8PrF0rXlykcqdPsxUSfX3t3wfHscUjqM2I2CgpRURVVsZWcOvcuXb74Thg+HC2Cg6RFs+zmgB9+tR+Xw8+SEugy2XNGraCTW2NGwcsXFj7/ZDqLVvGls2uLRotJZ/Fi4ExY2q/n2eeoVGJcvn229rfGAOozeQ0fz7w+OO1389TT9GoRLnMn8++i2pr/Hg2dZNIb8ECcfrZww+z70ZCxERJKSKqf/5h9TNqc1dZ8MADVB9ADtu3szo1tbmrLBg+nOpwyCElBWjRonZ3lQUDB7J+S1MepHXkSO3vKgu6dWMjC6jNpHX2LFusw8+v9vtq1479DdCUB2lducJGX4SE1H5fTZoAly7RiG2p3bwJZGcDUVG131dYGCuYTiO2pZWXB5w7x85DaqtOHfZddvNm7fdFKldcDOzbV7vyAYI6dQBPT+DChdrvixABJaWIqMS6qwyw4fMBAeykkEjnu+9YcVExuLoCERHAqVPi7I9YJ2abOTqyqZcHD4qzP2Ld0qUs0S4GjgM6dmSJKSKd5ctZnRqx9OoFbNok3v5IRStWiDMaUTBwIBWpl9rKlbWrS3SnYcPo5pjUfvuN1YMSy/33s75LpPPXX2x0vRiDBgB2DkqjpaS1eTObFWEUlJQiosnOZpl4Me5QCuiLSloFBaxYdnS0ePscNYpdzBFplJQAx4/XrsD5nUaNYlPLiDR4nhUGTUgQb5+00pT0Nm+uXYHzO40aRW0mtb//ZjVqxDJiBH2fSU2sqeiCe++l0g9SW72arVApliFDWP0+Ip1ffmHXVGLp1o0tAkKk89NP4oxG1ApKShHR/PEH+2IRU79+bGoRkcbffwMDBoi7z65dqdColDZvBnr3Fnef8fHA3r00HUwqyclAXJx4dygBoHlzVjibpoNJ49gxNn1LjGnNgshIdhOgsFC8fZLbLlwAgoPZiF2xBAezmzc5OeLtk9x27Rqb0uzlJd4+fX3Z30BGhnj7JLfl5LCbYwEB4u3T3Z31tXPnxNsnua2gAMjMBOrVE2+fjo5sMYgTJ8TbJ7mttJR9p4k5aEDtKClFRCOsUiQmFxcgNJS+qKSyapW4d7sA9kXVrBmrn0LE9+uv4g6bB1iyJCEB2L1b3P0SZulScaeBCXr2ZElKIr7ly8WdUiS46y7gzz/F3y+p/fL0lRGWrSfiW7mS1aIU28iRNMJNKmvWiH+uD1AdWSmJPYJUQLNZpCP2SG0toKQUEUVuLisGKuadE8GIEfShJ4XiYnaXUlhiXkx0QiiNsjIgNZXdnRIbTS2ShskEHDok7nRLwciRNO1SCjwP7NgBJCaKv286iZfOxo3ijyIFWI0imlokjbVrWaJWbMICHkR8q1ezPiG2Hj1olL1Ufv1VmuRv1640hU8qv/wC3Hef0lHIi5JSRBR//cVOAqRAxWGlIdUJPMCKMCclSbNvI9u5U5oLZQBo2ZJNWaIpfOJKTgbatxd36p4gKootBGEyib9vIzt2jE2PdJDgDCko6Hb9RSKec+eA+vUBZ2fx9+3jw24I5OWJv28ju3qVLWgjxoqkd3JzY1PCMjPF37eRZWezvuDvL/6+nZzYaqdpaeLv28gKC1k/CA0Vf9+OjkDDhqyUABFPaSn7TpPiBrSaUVKKiEKqOycAO8msW5e+qMS2cqX408AEDg7sgvnsWWn2b1RSthnAElM07VJcUtTaK699e5p2KTap26xbNxoRIDap26xPH2DDBun2b0R//iltm911F62cKLZ166QZ2SYYMsRYq43JYcMGoG9f6fZ///20sIDYtm1jo9CMhpJSpNaKi9ndk+Bg6Y4xaBCdXIiprAy4eJEljqQyeDAbmk/EwfPA4cMscSSVwYPphFBsu3ezxJFUhgxhF+REPFu2SHtCSG0mPilH/gLUZlKQqs6NYNAgajOx/fWXtEmpAQPY3wURz59/sr4glS5dgO3bpdu/Ea1dK23CXq0oKUVqbft29qEkpf796YtKTMKUIin16sUuFIg4jh4FWrWSZhqYoEsXqg8gpsuXgZAQcVdwu5OwciIRx82bbCUwFxfpjtG8OevPNFVWHMK0Ok9P6Y4REcFu5NBUWXEUF7N2k2IamCAwkKbKislkAtLTpZkGJvD2ZsfJzZXuGEbC88CZM9JOA3N2Zp+9NFVWPAcPsvN9o6GkFKm1v/5idzek5OfHTmCKiqQ9jlFIWQNM4OHBpvHRyYU45Ohnzs6sr12/Lu1xjGLtWjb6TEoODqyWzvnz0h7HKNatk/6zkeNYYurYMWmPYxQbN7LpdVKLjwf27JH+OEawbZv0NzMBoHt3miorlr17WR+QWr9+wPr10h/HCIT6iFLr358WFhDLuXNAgwbS3oBWK0pKkVo7cABo00b643TvTqM4xJKUBHToIP1x+valOhxikXpKkYDqcIjnn3+kreUgoKmy4vnzT+mTUgDVThHT2rXSTk8RDB1KbSYWudqM+pl45GqzQYPo+0wsUq1ueacBA+i8USxST5FVM0pKkVq5eJHdpZcjo0tfVOK4cQPw9WUrnUiNajqIIzeXtZebm/THGjiQTi7EUFgIlJSwlbukRslfcZSWsul7QUHSH6trVzZahNQOz7M7y5GR0h8rPh7Yt0/64xjB4cNAixbSHycmBjhxQvrjGMHu3fLczGzQgF1b0PTm2vvvP7awhtRCQ9nUTpreXHtS10dUM0pKkVpZt076KUWCZs1ouoMY1q9nw6Pl0KABW7KeTi5qZ/NmoGdPeY5Vpw6rDUAnF7UjR609gacnS4BR7ZTa2btXnosugNWscna+XQ+J2OfQIflqbzg4sBs6N2/Kczy9OnsWiI6W52Ymx7EL5kuXpD+WnqWns1WwpayPWF6TJsCpU/IcS6+ys9mNTFdXeY4XF8fq1RL7FRay8zg5bmaqESWlSK2sXy/P9BSAnVzUr08nF7W1bp20K97cqWlT4ORJ+Y6nR3ImfwGgXTsgJUW+4+nRhg3y1LkRdOzIpuUS+8ndZt260ZT02tq4Ub5zEIAt4PHvv/IdT4+kXqL+TjSStPbk7mf9+lGNotratEneETc0yr72tm6Vp0yHWlFSitittJRNK/Lzk++YvXvTim61wfPSr55yJ2qz2jt1StrVU+7UuzedxNdWSoo8tfYEffpQm9WWXLX2BH36UEHf2pKrYLagb19qs9ravBno0UO+49E5SO3JPaWoRw/2d0LsJ3ebdehAC0HUltzJX7WhpBSx2759bLimnOguZe0cPSrPShzlde9OJxe1IdRLkXMljs6d2fQzYp+bN1my3kHGb9i4ODb9jNgnL49Np3Nxke+YLVoAR47Idzy9EaasenrKd8zISFrpsjZMJiArCwgIkO+YQUHAtWs0Jd1ePA9cuQKEhcl3TG/v23UZiX1OnQIaN5bveC4urPZpfr58x9SbAweA1q2VjkI5lJQidtu0iSWJ5BQcDFy9SjWK7LVpk3y1iQS+vuyCr6xM3uPqhRJtJhRULyyU97h6oUSbOTkBHh6sjgSpOblH3AAs0RwUxL7TSM3t2QO0by//caOjWV0kUnNy1gArr3VrdmxSc2fPAg0byn/chARWXJ3UXHo6u16S82YmwG5o7tgh7zH1IiuL1ZKS82am2hj4rZPa2rkT6NRJ/uPGxADHj8t/XD3YulWelTju1K4dsH+//MfVA7mnOggSE1kfJzUnd20iQY8ebLUdUnMbNyrTZjS1yH4bNiizShFN4bPfxo3y38wEqM1qg9pMe5QYNADQbJba2LKFzSwxMkpKEbsUF7ORL3IsUX8nOom3j8kE3LrFRi7Jjerd2Ifn2SiKkBD5j01tZr/UVDaaQm5Uo8h+Bw8CLVvKf9w+fYCNG2W+na0Te/bIWwNMQPVu7KfEiESARnDUhpyr/5ZHq7nZT6lEYps2tEiOvf79V5k2UxNKShG7KHUyCLBMMo0GqDmlhs0DbEQdjbqpOaWGzQNA27Y0us0ely6xVUKVQMto2+fGDVbjRolh82FhrF4LqZn8fFYDzNlZ/mP7+7OpFlRGoGZKStiPnDXABB4eQFERlRGoKZMJyMyUtwaYwNmZfSYXFcl/bK27dAkID5f/uI6OgJcXlRGwx/HjbLVyI6OkFLGLEjVTBD4+7ISUilbWjJJt5urK2ouKVtaMkm3m6MhGQublKXN8rdq2TbklfTmOXTDfvKnM8bVq+3ZlRm8IWGKKTsdqYudONsVYKZQArrnkZPkXxymvTRtWSJjY7sgRZUaQCjp0oLpSNSUsjqOU7t1ZqRBiu4wMIDBQ/hpgakNnQcQuci+dfadmzYBjx5Q7vhYpNWxeEBfHVmwkttu8Wdk55p06sb5ObLd1q7L9rGtX1teJ7ZRMJAJAt248kpJkXPZPB7ZsUbbNaMR2zSlV01LQvTv7uyG2U0ObUT+rmf/+U/a8kaY31xzVk2IoKUVqrLiYZXPlXDr7Tt260clFTZhMbHSZl5dyMXTtSndPaoLngevX2d0TpVA/q7kzZ5SpJyWgNqu5w4eBFi2UO363bsCuXZSUqon9+4HYWOWO37Ur9bOa2rUL6NhRueMnJrJRkcR227ezelxKad+elQshttu6VdmEPQ0aqDml20wtKClFamzfPmVPBgH2JUknF7Y7ckTZiy6AnYxSXSnbpaYqV09KEBtLhUZrIjMT8PNTdgh28+bA0aPKHV9r8vPZ9GIll2GOiAAuXnRULgCNKS5m/1WinpQgMBC4do3qStnKZAIKClhtJ6V4e7Pp6FT6wTY8z6aCK1FPSkClH2ru8mXl6loC7LvU3Z1KP9TEqVNsSrjRUVKK1JjSd04AoE4dVpyWTghto4Y28/RkJ6V0Qmib7duVrZkCsIs+jrt9EUiqtmOH8v3MwYH1tVu3lI1DK3bvBhISlI2B44CAABMyMpSNQyuUrk0kiIoCzp9XOgptULo2kaBFC0ra2+rcOfY3rrT4eGDvXqWj0IarV4GgIKWjYN+pVPrBNjk5bBaL0etJAZSUInZQegi2ICqKfWmS6u3YoXyCA2AnpUeOKB2FNqghwQGw4fN0QmgbtQzBTkykUYm2UrrWnqBjx2KqBWYjpevcCGiqrO3U8tlINYpsp6Y2o35mG6UX7RBQuQ7b7dzJ6rcSnSalPv/8c0RGRsLNzQ0JCQnYXcXSDYsWLQLHcRY/bm5uMkarLTwP5OayYdBKow892127po67J1SHw3bnzrFpPUrr1o36ma0OHQJatVI6CrpYrom9e1niVWkdOxZjyxa6VWqLXbuUH90GUD+rCTWM1gao9ENNqCUpRSvw2U4tbUalH2yn9EIraqK7pNTy5csxceJETJs2Dfv27UObNm3Qv39/ZFQxLt7HxwdpaWnmn/M0HrtSZ84oX+dGQEkp26SnAyEhSkfBdOlCK4PZIisL8PFRx3DeDh1oGLYtCgvZdEdHFZQGoqXPbVNWxmqVuLoqHQnQsGEZTp9WOgr1KytjfU3J2kSCsDDgyhWlo1A/NdQmEvj7s+9XUj2laxMJPDxY6Qcq11G9EyeApk2VjoIthMXzVAvMFvv3A23bKh2FOuguKfXhhx/i8ccfx6OPPormzZvjq6++goeHBxYuXFjpaziOQ0hIiPknODhYxoi1RS1DQwH2ZXnpktJRqJ9a7lACdEJoq6Qk9QzndXdnF4F0Qli13btZAk8NnJzYf0tLlY1D7Q4eZAk8NeA4lhwrKFA6EnU7elT5RTvK8/Wl77TqqKU2kSAkhJKJ1cnIUHbl3zs1asRuipPK3brF6kmq4WYmALRrxxIupHLFxexGpnDOZnS6+jUUFxcjOTkZU6ZMMT/m4OCAPn36YGcVBTZyc3MREREBk8mE2NhYvPPOO2hRxVlPUVERioqKzP/OyckBAJhMJpg0WsXZZDKB5/lq49+2jcMbb/CqKVbt58fh+nVeFXfg1GrbNg7jx6unzUJDOVy4wKviDpxabdvGYfBg29vM1v5rr8aNOZw4wdPqIFXYupUlf9XSz1q14nDgAI927ZSORL22bGH1t5RuM6H/xsaasGcPp5obP2q0Ywebuqd0mwkSElhNkP79lY5EvbZvZ3VI1dJmHTuymIYPF2d/Un//KmH7dvX1s23bgOhopSNRr5071dVmiYnsvCg+XulIqqZk/927lyXv1NJmUrH1d6urpNT169dRVlZWYaRTcHAwjh8/bvU1TZs2xcKFC9G6dWtkZ2fjgw8+QGJiIo4cOYL6lVw1z549GzNmzKjw+LVr11BYWFj7N6IAk8mE7Oxs8DwPhyrWxj571h+urpmqWSWoRQsP/PNPKXr1ouXBKnPwoD8CAtTUZu745x8TBg8uqn5jg0pK8sOECVk2t5mt/ddezZu74Z9/AD8/bX6+yWHrVj88+KDtbSa1mBhXrF/vgLAwGnpTmU2bfDFgQA4yMpQdBij036ZNnbFhgwuaNMlXNB4127zZB5Mn5yIjQx1n8azNXNGuXa7SoajW5s3eGD8+HxkZZUqHAgBo2tQJy5a5o2tXcZYolfr7Vwn//uuFYcMKkZGhjuG2TZo44LPPvDBgQI7SoajWxo2e6NKlGBkZ6pgzFx3N4auvfPDgg9lKh1IlJfvv+vUeaNasFBkZ+r6GvWXjctC6SkrZo1OnTuhUbp5MYmIimjVrhq+//hqzZs2y+popU6Zg4sSJ5n/n5OQgPDwcgYGB8PHxkTxmKZhMJnAch8DAwEo75c2bQHAwhyA1VMz+nz59gD//5DBqFM0tsiY/H/Dx4RASop4269sXWLSIw7hx1GbWlJYCzs4cwsJsbzNb+m9t9OsHvPsuh6AgbX6+Sa2sDHBw4NCggXr6Wf/+wCuvcAgKUsGqFCrE80BBAYfGjZUvKCX03379/LBihSOCgryUDkm1MjM5tG6tnsVoevYEvvySQ1CQCopcqdSVKxw6dHBXzbSiunWB997jEBTkLsr+pP7+VUJqKoeuXT1UM60oMBDIyOAQFKSevq82J09ymDqVh7s4f9a1FhQEFBZyCApS/ju2Kkr232PHODz/PA9fX1kPKztbF5BTyceNOOrWrQtHR0dcvXrV4vGrV68ixMZKz87OzmjXrh1OV1Fx1NXVFa5WKqM6ODho+guJ47gq30NSEhuO6eCgkjMLsBUeZs9WV0xqkpzM6tyo6ffTogVw/Li6YlKTw4dZ0cOa/n6q67+1ERkJXLxIbVYZoc6Nmn4/wcHAjRvqiklNUlPZVBC1/H44joOPjwPy8oSVgJWOSH0yM1ldQrW0GQC4ubGkNMBBw6d/kikoYL8jR0f1tJmDA1uUoqSEE22RAym/f+VWWsrqErm4qKfNALb4S14ep4rVv9WG54GiIsDTU11tFhYGpKdzCA1VOpKqKdV/c3IAf391tZkUbP29av/TsxwXFxfExcVh48aN5sdMJhM2btxoMRqqKmVlZTh06BDq1asnVZiapaaC2QIXF/YFqvf5uPbasUN9bebgwIr6Fet7tKrdtm9nyV814ThWQNPGEbiGk5SkjiXq78TuLisdhTolJbHaMmoTEQHQAsDW7d6tzn7WvDlLTJOK9u0D4uKUjqKi2FgqwlyZI0eAli2VjqKiDh3YZwCp6MwZVgxebTp2pNWbK3PlCkCpBku6SkoBwMSJE/HNN9/g+++/x7Fjx/DUU08hLy8Pjz76KABgzJgxFoXQZ86ciX/++Qdnz57Fvn378NBDD+H8+fN47LHHlHoLqnXoENCqldJRVBQTw0bekIr27AHat1c6ioratgVSUpSOQp127lTPynvldejA/p5IRWpNStEJYeXU2madOrHPAFLRrl3q/GykNqvcrl3qTP5Sm1VOrW2WmMhutJKK1NpmHTuy2EhFar0xpiTdJaVGjhyJDz74AFOnTkXbtm2RkpKCdevWmYufX7hwAWlpaebtMzMz8fjjj6NZs2a46667kJOTgx07dqB58+ZKvQVVEobzqmV+eXmdOtGHnjU8DxQWQjXzy8ujL6rKZWZClatJUj+r3MWLUOVqkh070oVXZU6cgCpXk6SL5crt389uaKgNtVnldu9W542xhARK2FdGrQmO2Fg28o5UpNY2a96cjbwjFan1xpiSdJeUAoBnn30W58+fR1FREZKSkpBQrtU3b96MRYsWmf89b94887bp6elYu3Yt2tEa2hUcPqzO4bwAXXhVRqiZokaUlLIuLU29w3nj4liNMmIpNxfw8oIqawC1asVGuBJLxcXsBosay780agRUUdLSsEwm1m5i1QASU716QHq60lGo061brBaQ2vj6AtnqXhRMMRkZrCah2ri6ss8AKtdR0dmzQFSU0lFU5OjIzo1K1bGIo6ocPsxqkZLbVHhKRtRIrbUcADZC4fJlpaNQn717gfh4paOwzt8fyMpSOgr1SU5Wb5u5u7OitTwtmmhBzf1MGNlKJ4SWDhwA2rRROgrrOI4Vhi4oUDoSdTlxgk3VVys/P7ZCMbnt0iV1jiAVhIezUa7ktps32d+yWsXEsM8Cclt+Pjs/U+ONMQBo3Zpujt1JmH3k6Kh0JOpCSSlik927WU0ZtfL2ZqsYkNvUfLEMsDtxdHfZktrbrGFDVlCT3Kb2Idg0WqoitbdZfDz7LCC3qXV6ioBG/1a0c6e624ymXVak5hvQAGszqitlSa2LCQjos7Giw4fVWaNZaZSUIjZR87QigFblsObYMXXfWaYaRRUdPMjuKqkVncRXpPZEIp0QVqSFCy/qZ5bUWuRcQG1WEbWZ9mgh+Uu1wCypvc0SEugc5E5qbzOlUFKKVCs3ly0Hr2aU4LBkMrEfNRamF1AtMEtCYXo3N6UjqRydxFeUl8dqSqkVtVlF168DgYFKR1G59u1ppNSd1LqYgKBNG3ZTgdx2/DjQtKnSUVSuSRPg5Emlo1CXlBR1LiYgCAujch13UutiAoKgIODaNaWjUJddu9R9Y0wpkiWlsrKysGDBAkyZMgU3/zfRft++fbhMnyaak5ys7qGhAFuVg4ow33bmDCuYq2YtWtCqHOVducJOuNQsMhI4d07pKNRD7TVTAJZ8uX5d6SjU4+ZNVtNOzby82M0gwty6pd7FBAQuLkBJCdXcE6h5MQGBgwP7oZp7jMnE/oZdXJSOpHJUc6+i3FxWwkTN/P2BGzeUjkI91LqYgNIk+bo4ePAgmjRpgvfeew8ffPABsv5X0XjlypWYMmWKFIckElJ7PSmAfUkVF9MJoUDNBbMFQoG/sjJl41ALLSR/OY6tgFNUpHQk6qCVu11Uc+82LXyfAezu8tWrSkehDmqvmSKIimKr3hL1T0UXNG8OHD2qdBTqcPIkGz2mdu3asRFdhN0YU/vNTICdJ1GJFSYzU92LCShJkqTUxIkTMXbsWJw6dQpu5eai3HXXXdiyZYsUhyQS2rtXGyeEDRrQSioCrbRZTAwNnxeovTaRoHVrmqYiUHvBbEFcHLuwJ9ppM5rCd5sWEvYAtVl5e/eqe0qRoEMHYM8epaNQB620Wfv2lOAQaOUmS0IC1QIT7NmjjTZTgiRJqT179uCJJ56o8HhYWBjSabktzcnNBXx8lI6ievHxdHIhUHstBwG12W2HDmljNQ5aGey2Y8eAZs2UjqJ61Ga3qb1mioDa7DatJKXo++w2rbRZ+/bUZgKttBl9Nt6mhVkRANXcK08rN6CVIElSytXVFTlW5gqcPHkSgWquLkoqSE/XzrxX+qJiTCb2X2F6nJpRmzE8z6bEuboqHUn16MKLKS1l0xm10M/i4qjmHnC7n6l5MQFBmzbAgQNKR6EOWVnqrwMGsAT18eNKR6EOly8DoaFKR1G98HDgwgWlo1CHU6eAxo2VjqJ6deqw2oCE1WVt0ULpKKrn5sa+e6nECrB/vzZujClBkqTU0KFDMXPmTJSUlAAAOI7DhQsXMHnyZAwfPlyKQxKJaGmYYfPmVDgb0M6JBQA0bMiKshvdpUvs5FgL6tVjyWqjO3aMfeZoga8vkJ2tdBTKS00FoqOVjsI2bm5sNU6jn8Tn5Ki/iK/A0ZG1l3BjyKgKC9kNFjUXphcIdRILC5WORFllZex3oebC9OX5+rJktZHxvPoL05cXFsYW9DE6ta/YrCRJPn7mzp2L3NxcBAUFoaCgAN27d0ejRo3g7e2Nt99+W4pDEokkJWknKeXszL5YjX4Sr6WhocJIk//lrw1LS20GAB4eQH6+0lEoSytTHQQBAbT6jdbaLDycJayNbP9+VthYK5o0AU6cUDoKZR06pI0i54K2balwtlaKnAtolD2roauVm5kAtRnAVkKuW1fpKNRLkqSUr68v1q9fjzVr1uCTTz7Bs88+iz///BP//fcfPD09pTgkkcjBg9qocyOgkTfaS3C0aEGr32jtYrldO3axaGRaa7P4eJrCp7U2o3o32vs+o2Ln2utnVOxce21Gn43aWdBIQEkp7fUzuUk6ULNLly54+umn8eqrr6JPnz5SHopIgOfZyCNnZ6UjsR196Glr+h5AJ/EAu7PcsqXSUdiO+hlw9qx2poIBVAsMYMlvrUy5BKifAWzVyNhYpaOwHV0sa+/Ci9pMewmO2FhaUVYrRc4FLVuyc10j09pno9ycxNrRJ598YvO2zz//vFiHJRLS2kUXwD6gFy4ERo1SOhJllJWx/2qlLgDA2mz2bGD8eKUjUYbW6gIA7Ev1xx+VjkI5paVs2qkWaqYI2rUDPvpI6SiUI9xkcRLtrEd6LVpQnUStFDkXNGwInD6tdBTK0kqRc0HdujS1+fRpbd3M9PRktXmM7MgRYNo0paOwnYsLO9fleW2dO4kpJQWgFEjlRDs9mzdvnsW/r127hvz8fPj5+QEAsrKy4OHhgaCgIEpKaYQWM7pNmxq7nsOJE0BMjNJR1Ex4OHD+vNJRKOfCBSAiQukoasboJ/HHj2uvn3l6GrsO2LlzQGSk0lHUjLMzS4Aa9SReS0XOBRzHEp8lJdoaZS4WLRU5L8/bm/29+fgoHYn8tFbkXBASAqSlscVXjEaLNzMBdq6rxXNeseTmUpHzqoj2EZSammr+efvtt9G2bVscO3YMN2/exM2bN3Hs2DHExsZi1qxZYh2SSEyLSSmjr36jxTYTVr8pKlI6EmVorWaKQDiJNyIt9jPg9km8EWm1zYxcJ1FrU/cELVsad4Sb1oqcC+LijFtzT2tFzgVGrgWmtSLnAiNPSb9+HahTR+ko1E2SvPibb76JTz/9FE2bNjU/1rRpU8ybNw9vvPGGFIckEjh2DGjWTOkoas7Io6W0muBo3dq4c8212mZGPonXaoLDyCeEWm0zI9e70WqbGbl+m1bbrH17YPdupaNQhtbqSQmM/Nmo1TYz+jmIFs/15SRJUiotLQ2lpaUVHi8rK8PVq1elOCQRmRbrbwiM/KF3+jS7s641Rj6JP3JEW8WXBUYuUH/mjDb7mZHbTGtFzgVG/j5LTtbmSCkj9zOtXizHxhp3RVmtXiy3bAkcPqx0FMrQaps1b27cUaRaTdjLSZKkVO/evfHEE09gX7mlEZKTk/HUU0/RKnwakZoKREUpHYV9jHpCKBRf1lpdAMC4F148z9pNi7VHYmONOVKqrIz1Ma3VTAHYiMQDB5SOQn5a7mdGHvmrtSLngvr12fQaI7pyRVtFzgU+PsCtW0pHoYzTp4FGjZSOouaEsg88r3Qk8jtyhC2EoTVOTuwcyohtlpICtG2rdBTqJsnl68KFCxESEoL4+Hi4urrC1dUVHTp0QHBwMBYsWCDFIYnItJzRNerqN1osviyoVw9IT1c6CvmlpmpvhUuBr68xa0ppuZ+5ugLFxcY7ITx/XruFVYWbDMLKqkaRnc0+Y7RIqJNYWKh0JPIqLATc3LSZsAeAgADjLeChxRWby2vQwHgJYK0WORc0bMhWdzeavDwqcl4dST6GAgMD8eeff+L48eNYsWIFVqxYgWPHjuHPP/9EUFCQFIckItNyUorj2IghKzNIdU2rtYkE7u7GWx1My/0MMOZJvNbbrEEDtvqNkWi9zZo1Y8lQI9m/H2jXTuko7Ne2rfFGJR46BLRqpXQU9jNincQTJ9hoTK2Kjzdem2m1yLnAiDMjrl9n58ukapLmxps0aYKhQ4di6NChaKLFpR0MTKv1NwTNm7P3YCRanWMuaNuWDW81Eq0nEo14cqHVmikCI05v1npSyqhtpuXPRiMWYdb6Z6MRExxa72dxccb7bNRDPzNam2m9n8lFkqTUuHHjqvwh6qblIucCI37onT2r3TpggDEvvLS6wqXAiG2m1SLnAiMuKnD4sDbrbwiM2GZaLXIuMOI5iNYvvNq2BcqVwjUErSfsW7QwXrFzrfezpk2NN/JX6/1MLpIkpTIzMy1+MjIy8O+//2LlypXIysqS4pBEROfOAZGRSkdRO0a7WC4pYVMWtVrLATDeHS89JH/btjXWikVCkXOt1t8A2Em8kVa/0XKRc0FUFKs/ZyTZ2YCfn9JR2C8oCLh2Teko5JWWps0i5wIvL1b3xUhOndJmkXOBiwv7fDdSnUStFjkXODqy9jKZlI5EPlTk3DaSXA6tWrWqwmMmkwlPPfUUGmr5FrNB6CGj26ABK25rFEePavtLCgDq1jVWfSKtj7gBAE9PY9UB03KRc0H51W+0nMS21fnz2r/JUr5OopaT2LbKzmaroWmdhwdLcnh6Kh2J9AoLWXF3rQsMZMnEwEClI5FeWRn7bNHyTRaALWKhh895W2i9yLmgSROWENVyPbOaoCLntpHto8jBwQETJ07EvHnz5DoksZMeklIcx+6MFxcrHYk89NBmAPvQNsqyzFqvJyUICgKuXlU6CnnopZ8ZaeSNXtrMSHUS9+3T9tQ9QZs2xil2fvCgtoucC4xUV0rrRc4FRpoqq/Ui5wIjTUm/cYOKnNtK1vz4mTNnUGq0JdE0SOtFzgVGmqailwSHkYqd6+Vi2UgrFlGbaQ+1mfbopc2MdLGs9To3AiOVEdBLmxkpkaj1IucC+j4j1kgyEHzixIkW/+Z5HmlpaVi7di0eeeQRKQ5JRKKH+hsC4UNPy8tK2+rcOTaEWeuENuvaVelIpHfsmPanggGszTZuBO66S+lIpKeHKZcAO4n/6Sfg/vuVjkR6Wq+/IYiLAz78EHj0UaUjkd6+fcBjjykdRe3FxQFLlyodhTySk4G771Y6itpr25b1MyNITgaeflrpKGqveXPj3IBOTgbuu0/pKGqvcWM2fc8I9u4FunVTOgptkGSk1P79+y1+Dh48CACYO3cuPvroIykOSUSihyLnAqPcPSkuZvPL9VAfxih3T0wmlgB2dFQ6ktpr29YYU1T0Un8DMM5JvJ5ushhpyqXWi5wLhPpERnDliraLnAs8PICCAqWjkIfWi5wLytdJ1Du93GQRzqOMUOycipzbTpKRUps2bZJit0QGehpmGB4OXLigdBTS08uXFADUqQPcvKl0FNI7fZrdKdIDDw9jFDvXS/0NwDjFzi9cYIte6IFRip3rpci5wNNT/8XOCwsBNzeloxBPUBCQng6EhCgdiXT0dJMFAKKjWdI+OlrpSKSjlyLngiZNgJMn9TFjoCpU5Nx2knwc9erVC1lZWRUez8nJQa9evaQ4JBHJvn2cbpJSRil2rpd6UgIjFDvXW5sZodi5nhL2gDFG3uitzYxQ7FwvRc4FRqiTePAg0Lq10lGIxwij7E+c0FcywAi1wPRS5FxghJkRVOS8ZiRJSm3evBnFVjIBhYWF2Lp1qxSHJCLRS5FzgRGKneulWKXACCfxektKGeHkQm8JDmoz7aE20x4jFDvXY5tRP9MWI/QzvRQ5F9D3GbmTqEmpgwcPmutHHT161PzvgwcPYv/+/fj2228RFhYm5iGJiPRUf0NghC+qCxeA+vWVjkI8RviiOnmSDV3WCyO02enT+qi/ITDChZeepjYDxuhnycn6GilllDbT04VX69bGuDGmpzaLiQGOH1c6Cmnp7Qa0MH1Pz/R2A1pqoial2rZti3bt2oHjOPTq1Qtt27Y1/8TFxeGtt97C1KlTxTykVZ9//jkiIyPh5uaGhIQE7N69u8rtV6xYgZiYGLi5uaFVq1b4888/JY9RjS5dctTFCm7l6f2EsKhIP0XOBXpvM6Gwo15qOQD6L3aut/obgP6ngumt/gZgjCmXOTn6KHIuqFsXuH5d6SikpZci5wJ3d1YnS8/0dpNFqJOo58LZervJ4uDAvqf13GZU5LxmRD3FTk1NxZkzZ8DzPHbv3o3U1FTzz+XLl5GTk4Nx48aJecgKli9fjokTJ2LatGnYt28f2rRpg/79+yMjI8Pq9jt27MDo0aMxfvx47N+/H8OGDcOwYcNw+PBhSeNUowMHnBAbq6/lK8LD2TxsvTp8WF+1HABW7PzGDaWjkM7Jk/opmC3Qe7FzvY1sA9hJfGmpflcs0lv9DcCy2Lke6a3IucDLC8jNVToKaeityLkgNJQl2/RIjzdZAJZkO3NG6SikocebLID+R0tRkfOaEfUjKSIiApGRkTCZTIiPj0dERIT5p169enCUYf3zDz/8EI8//jgeffRRNG/eHF999RU8PDywcOFCq9t//PHHGDBgACZNmoRmzZph1qxZiI2NxWeffSZ5rGpz8KCzrobzAuyL18lJv8XO9TYEW+Dtrd9i53ptMz0XO9fb9BSBnkfe6LXNmjUDjh1TOgpp7NunzzbTc51EvRU5F+h5xLbeipwL9DwlXY83WQB9txkVOa850RYW/v333zFw4EA4Ozvj999/r3LboUOHinVYC8XFxUhOTsaUKVPMjzk4OKBPnz7YuXOn1dfs3LkTEydOtHisf//+WL16daXHKSoqQlFRkfnfOTk5AACTyQSTRschmkwmnDjhhGbNTLobStmyJYeDB3ld1akQ7NnDYdo0Xndt1qYNu0Dp2lXpSMS3Zw+Hp54St81MJhN4nlf08yc2FtizB7jrLsVCkMzevRyeeEJ//axdO9ZmkZFKRyK+vXs53HOPNtqsJv1XaDM9TeMQ7NnDkgFaaLOaED4bExOVjkR8e/awv0k9ttnatRwGDap+KKkavn9rYvdufbZZu3bAd99xGDFCf8N/9dxm33zDYfRo5dpMqv67Zw/7HNFbm9nD1t+taEmpYcOGIT09HUFBQRg2bFil23Ech7KyMrEOa+H69esoKytDcHCwxePBwcE4XkkFvPT0dKvbp6enV3qc2bNnY8aMGRUev3btGgo1OhHdZDIhOtoFmZnFcNDZmN6GDV2xebMD6tcvUDoU0aWm+sPJKROVzE7VrOhoF/z3nxOaNtXfnLCjR/3g45MlapuZTCZkZ2eD53nF+m9UlDO2bHFBfHyeIseX0pEjfvD1FbfN1CA62gmrVrmhe3f9zS1KTvbDE09oo81q0n+johzx9dceuOsu/Q0l3bnTF8OG5SAjQ18XlQ0acFiwwAejR2crHYrotm/3wauv5iIjQ19XXiEhwN69fsjIyKp2WzV8/9bEtm3eePTRfGRkSHMtphR/f+DQIdvaTGu2bvXC4MGFyMjQ19xtPz/g8GFl20yq/rtliyc6dChGRkaJaPvUqls2Tn0RLSlVPgumlbsF9poyZYrF6KqcnByEh4cjMDAQPhotiGAymTB16jUEBgZp4ku1Jnr1AmbP5hAU5K10KKIqLAR8fDgEBwcpHYroevcG/viDQ1CQviZjl5UBrq4cQkLEbTOTyQSO4xAYGKhY/+3ZE1i0iENQkKcix5dKWRng4iJ+m6lBQAAwbx6HoCAPpUMRFc8DDg4c6tfXRpvVpP8GBgIzZnAICnKXKTr5FBZyaNTIVekwRBcUBOTlcQgK0t97y8ri0Lq1DotKAQA4BAYGVbuQjBq+f2viyhUOCQnuuqspBQDOzhzq1g3S3Xs7d45D164euqspBbDzKyXbTKr+e+oUh9de46mmFAA3GwsPipaUUoO6devC0dERV+8obHL16lWEhIRYfU1ISEiNtgcAV1dXuLpWPLlwcHDQxBdSZTiO0/x7sCYigs3HdnDQ0RJ1YEXO27TR3/sC2IVXZqb+3tuxY6wmjBTvS+n+6+UFFBTor82E+ht6e18AK5pqMrG/HT2t4CnU39BSm9Wk/zo5ASYTBycdncFlZbGRDlpqs5rw8WGJKW8d3RsTipzrtc3q1wfS0jjUr1/9tkp//9qqrIwVOHdy0mebNWkCnDnD6WoxGZ5ni1u4uVGbSUWK/pufzwYOENj8exXtlOaTTz6xedvnn39erMNacHFxQVxcHDZu3GieQmgymbBx40Y8++yzVl/TqVMnbNy4ES+++KL5sfXr16NTp06SxEjkx3Hs4qu4WF8rV+zdy4oE6pWXFyt2rqeT+ORkfbeZUOz8jhnRmqbXgtmCyEhW7Dw6WulIxKP3NhOKnbdqpXQk4tm3D7qs+yho144VO9dTnUS9FjkXxMez8yxbklJacfy4PoucC4Q201NSSq9FzgXCogJ6ajMqcm4f0ZJS8+bNs2k7juMkS0oBwMSJE/HII48gPj4eHTp0wEcffYS8vDw8+uijAIAxY8YgLCwMs2fPBgC88MIL6N69O+bOnYtBgwZh2bJl2Lt3L+bPny9ZjER+LVuykUV6OulNTgbuuUfpKKQjrFikp5P4vXsBCT/+FCecXOip2HlyMvDkk0pHIR2hzfSWlKqitKXmCW2mp6SU3hP2cXHs819v32d6brP4eGDVKn19lug9YR8fD3z9NfDgg0pHIh69rtgsiIsDFiwAHnhA6UjEo/d+JhXRxqmlpqba9HP27FmxDmnVyJEj8cEHH2Dq1Klo27YtUlJSsG7dOnMx8wsXLiAtLc28fWJiIn766SfMnz8fbdq0wS+//ILVq1ejZcuWksZJ5KXH5X3T0oB69ZSOQjp6bLMzZ4CGDZWOQjp6bLNTp4DGjZWOQjp6bLPDh9mNCL3SY5vpfaRUbKz+2kzvF14tWwKHDikdhbj03maNGwMnTyodhbj0nrBv0kSfbabnfiYVySc/8zwPnpd3JZVnn30W58+fR1FREZKSkpCQkGB+bvPmzVi0aJHF9vfffz9OnDiBoqIiHD58GHfp6TY/AaC/k/iCAsBdf3VuLeitzUpLAUdH6Kp2z53atgUOHFA6CvEIa3aovExIrTRvDhw9qnQU4uF5oKgIsFL2UTeiowGJ7+/JLicH8PVVOgrp1KkD3LypdBTiSk/X940xoeyDzJcwkjp9GmjUSOkopCN8V0u0yLsijhwBWrRQOgrpODqyPqanNdL272dTtknNSHaq/e2336Jly5Zwc3ODm5sbWrZsiQULFkh1OEKqFB4OXLigdBTiOXCAJQD0TG8n8UKRcz3z8GDFHfXi5El2F0/PnJ3ZCbxeLrwuX9ZXDRhrOI6dyJfqZHXwrCx9J6QE3t6sTqIeFBToO/ErEBbK0YOyMvbZoeebLACrmaWXkTc8D5SU6KserjWNGrGEqV7k5oJW3bODJB9NU6dOxQsvvIAhQ4ZgxYoVWLFiBYYMGYKXXnoJU6dOleKQhFSpfLFzPdD7HHOBUOxcD/Ref0MgFDvXA6MMwRaKneuBUdpMKHauB3qfuieIjWV30PXg4EG2+q/eCbXA9EDvRc4FemozvRc5F+hpZsSNG+ymOqk5SZJSX375Jb755hvMnj0bQ4cOxdChQzF79mzMnz8fX3zxhRSHJKRaQrFzPTBKUkoodq4Heq8LINDTyYVREhzUZtqjpzYzSsJeTxfLRulnwmpuekBtpj1GOdfX0/eZUfqZFCRJSpWUlCDeyhlGXFwcSvUy3pxojp4+9K5dA/5Xu1/X9HRycfYsG5Gid3rqZ0aYvgfoq80OHdLXqnSV0VObGaX+hp6KnRvlwqtFC1bTRw+M0mYNG7JFZfTAKDczmzYFTpxQOgpxGKWfSUGSpNTDDz+ML7/8ssLj8+fPx4N6WqeTaIpeEhx5efovci6IjWVTO7SupARwctJ3kXOBXoqdG6HIuUAvxc6NUORcoKdi53ovci4ICAAyM5WOQhx6X/1X4OzMvr/1UHPv1Cl9FzkXODiwcy09jIHQe5FzgZ6KnaekGOMmixScpNrxt99+i3/++QcdO3YEACQlJeHChQsYM2YMJk6caN7uww8/lCoEQizUrw9cuqR0FLVnpA88vRQ7P3pU30vUl6eXYuenThljlBRgWexcy4nTK1eAsDClo5BH+WLnTpKdyUnPKEXOBT4+LAnn46N0JPYrKADc3JSOQj5RUcC5c+y/WlVWxpI1RrjJArCae8ePa/u8yyhFzgXCCLfGjZWOpHaoyLn9JDmVOXz4MGL/V7XyzP/GUNatWxd169bF4XJFfTgtn/0SzeE4dvFVXKztD3mjDOcVCMXOvb2VjsR+RqkLIBCKnWt5iqlR6twIIiO1f+G1dy/Qvr3SUcgnJkb7F15G+z4TRv/26KF0JPYzSpFzgTDKXsufjUYpci6Ij2efLVr+bDRKkXOBUHNPy0mpGzfYiFhiH0mSUps2bZJit4TUmlDsXMsr/ezdCzzwgNJRyEcodt61q9KR2G/vXuC115SOQj5CvZu77lI6Evvt3Qs89ZTSUchHOCHU8oXX3r3APfcoHYV8hDbT8oXX3r1Ap05KRyEf4bNRy0kpoyV/4+OBJUuA++9XOhL7Ge0mS1wc8NFHwCOPKB2J/YzYZt99B4werXQk9qN6UrVjkIGchDB6qCt1/TpQt67SUchHD2124QLQoIHSUchHD0WYT540Rv0NgR7a7NAhbSdoakoYDaBl+/YZZzo6oI9i50Yb+dusmfZr7hktkaiHmntGa7OYGO0XOzdaIlFskiSlCgsL8f777+Ouu+5CfHw8YmNjLX4IUYrWL7xu3TLeXGWtFzsvLjZOkXOB1oudl5Yaq/4GoP1i50arvwHo48JL61Oza8rfn9XR0jKtT82uKSen2zX3tOrMGfZ5YRTla+5p1eHD7HvZKPRQ7NxoN1nEJsn0vfHjx+Off/7Bfffdhw4dOlDtKKIaWi92npKi7amH9tB6sfPDh42xRH15Hh6sGK5WHT/O7o4bibMzO4HXarHz8+eBiAilo5CX1oudX7tmrFG/Al9fIDtbmwXec3MBT0+lo5Bfw4YsAdywodKR1JyRVv8tT7jR0rq10pHUHM+zRKizs9KRyEvrxc7z8435+SgWSU5j/vjjD/z555/o3LmzFLsnxG5CsXOtLhtutGHzAk9P7d5RN1ohX0FgoHbvqBt1CLaWV5ky2lQHgZaLnRv1s1EY/duzp9KR1JyRVv8tT6jfpsWk1JEj2vx8qC2h9IMWk1Jnzmjzb622hNksWkxKpacDISFKR6FtkkxOCAsLg7cWrx6JIbRqxUavaJFRi+i1awfs3690FPYxaiJRy1NljZqUojbTHmoz7dF6mxkx+avl2pZG7Wdarrln1DbT+mejEdtMTJIkpebOnYvJkyfj/PnzUuyekFrR8odeZqYxlxvV8snFxYts2qjRaLmfpaZqc7RQbQmjAbTo6FHjTbkEtN3PUlJY/Tmj0XKdRKPeZBFGJGrRnj3GvFiOiGDf5Vpk1ASH1vuZERP2YpIkKRUfH4/CwkJER0fD29sbAQEBFj+EKEmrJ/HZ2dqcviYGrZ7EC9NEjVbLAdBusXOj1t8AtFvsXKi/ocW6SrXVsCFw+rTSUdinoIDVnzMaPz/tFju/edOYN8YcHVkBZi0WYb54EQgPVzoK+QnlOkpKlI6k5o4fB5o2VToK+Qn9TIuLChw8qM2pomoiySnc6NGjcfnyZbzzzjsIDg6mQudEVerXZ1/SWmPU+huAdoudHzgAtGmjdBTK0Gqxc6PW3wC0W+z8zBmgUSOlo1CGVoudp6UZu/6Gry9LTPn5KR2J7bRanF0sjRuzBHCTJkpHYrvCQuPeGAPYd/mRI9oakVlWxv7r6KhsHEoRip1r6Tud57Vbq1hNJDmF2bFjB3bu3Ik2Rr0aI6rGcWzZcK19gOzZA3TsqHQUytFisXOjD+fVYrFzow6bF2ix2LnR26xZM+0VOzd6m8XFsdG/vXopHYnt9u0z5tQ9gVBXSktJKaOP3hCmpGspKXXiBJvGZlTCbBYtJaUuXgQaNFA6Cu2TZPpeTEwMCrR4i5wYhhaLnScns2lsRhUbq71i57t3GzsppcWpsnSxTG2mNdRm2kNtpj1abTMjn4NosUA99TPt9TOj34AWiyRJqXfffRcvv/wyNm/ejBs3biAnJ8fihxClafFDLzdXW6OExKbFNrt2DQgKUjoK5WixzYxamF6gxTY7cUJboxfEpsU2M/oIDi3WSTT6jbEmTdhnjZYYtTC9IDwcuHBB6ShqxuhJKS0WOzd6m4lFkul7AwYMAAD07t3b4nGe58FxHMqECbOEKCQuDnjrLaWjsJ3WpkBJITYWWLxY6Shsp7WphlJo2xb48EOlo7BdURGb2mvU+hsAK3Z+5IjSUdhOKDxs1PobwO0aHFpB9TdYbabsbKWjqJmcHMDHR+kolCN8xphMgIMkt/TFl54O1KundBTKEYqda+nz5swZ9pluVE5OrK6WlmpbHjkCtGihdBTaJ0lSatOmTZU+d+jQISkOSUiNaK3YOQ0NZcXOb9xQOgrbJScb+w4loL1i54cOGXv0BqC9YucnTxpzlaLyOI5dJGul2PmlS1R/A2BFzjMzAX9/pSOp3o0b7DvY6Jo2ZZ85Wqj5k5dnzNUt79S6NSvXoYXzsZISlvzUwnevlKKjgbNntZGcM/Lqv2KTJNffvXt3i5/Y2FicOHECkyZNwgsvvCDFIQmpEY5jd02KipSOxDaUlGK8vNgIJC0wej0pgVDsXAtoCDYjFDvXAmozRktTHqjNGKHYuRYYefXf8oTC2VqQkgK0a6d0FMrT0vRmI6/+W56W+pnWVgpUM0kHoG7ZsgWPPPII6tWrhw8++AC9evXCrl27pDwkITZr2VI7xc4PHKARHIC2ip3TSClGSyeERq+/IdBam9HFMvsdaKXN9uyhNgOon2mRlgpnU5sx1Gba0749+57QAvo+E4/oSan09HS8++67aNy4Me6//374+PigqKgIq1evxrvvvov2NHSAqIRWTgh5Higu1s58eClppc0ANqLLyPU3BFpqsytXgNBQpaNQnpba7PRpbQzxl5qW7iwfPkz1NwA2ikUrI6X27WM1Ao2uUSP2maMFlOBgwsLYlGEtoDZjaOSvMYmalBoyZAiaNm2KgwcP4qOPPsKVK1fw6aefinkIQkSjlbsn584BkZFKR6EOsbHauFjOyGDT1gi7kElJUTqK6uXnA+7uSkehDlopdl5aymopGb3+BqCdYuc8z9rN2VnpSJTn68uKh2tBfj7g6al0FMoTPm+0sF4T1QFjhHIdhYVKR1K9CxfYioFGJ9TVKilROpLqnThBdS3FImpS6q+//sL48eMxY8YMDBo0CI5GXg6HqJ5W7p7s2QN06KB0FOpQpw5w86bSUVSPaoDdJhQ753mlI6ka1Uy5zdmZrTCl9gsvWvHmNq3USTx7lhWxJYy/Pyt2rma0+q8lLYziMPpKiXdq3ZotZKJmhYXsM5xusjCtWqm/xIpwjqSV1TjVTtRf47Zt23Dr1i3ExcUhISEBn332Ga5fvy7mIQgRDcexC+a8PKUjqRolOCwFBKh/FT5KJFqKiGB3ANVs1y4gIUHpKNSjWTPg2DGlo6jarl1Ap05KR6Ee7dqpv+YetZklLUyVpc9GS1oYZU/1ES1poc0OHqTaseV17AgkJSkdRdWOH2fnSkQcoialOnbsiG+++QZpaWl44oknsGzZMoSGhsJkMmH9+vW4pZVls4hhaKE47LFj2lh+WC5a+KI6cABo00bpKNSjY0d2YaNmlPy1pIV+RhfLlhIStNFmHTsqHYV6aKEWGCUSLWkhkbhzJ7VZeVpoM/pstJSQoP7zxqQkugEtJkkGnHl6emLcuHHYtm0bDh06hJdffhnvvvsugoKCMHToUCkOSYhd1H6xXFrK/kszYW9Te5vxPJtCQ4Xpb1N7mwFAbi7g7a10FOqhhTajaUWWOnRQf1Lq9GmavldebKz6i51TYXpLDRuqv9g5rf5rKTSULWSiZpSUshQczOqzqhklf8Ul+SzIpk2bYs6cObh06RKWLl0q9eEIqZH4eHUvO3r4MJtXTW5r3ZqNRFIrqplSUePGwMmTSkdRuUuXgPr1lY5CXcLCgMuXlY6icjdvsno85DZ/fyArS+koKicsJkA1U27z9mYJcbXW3BNujDk5KRuHmnAc+30Ivxu14XlWn4gW7rDk5sbqW6pVVhZ9p93J11fd32l07igu2UpzOTo6YtiwYfj999/lOiQh1fLyYjWl1HpCSFn4ilxc2MmgyaR0JNZRm1Xk4MCKZ6u1CDPdobTO21u9q4Pt3k1T96wJCmIjyNRo3z4avWFNRARw/rzSUVhHN8asU3PNvTNn2GguYqlNG1a3SY3S02nUrzXt26t34EB2NkuaEfFQvXhieGouwkwXy9ap+YRwxw4gMVHpKNSnXTsgJUXpKKyjfmZd+/bqrXdDbWadmmuBUW0i6zp1Yjcz1GjnTupn1qi5cDb1M+vUPDOCbmZap+Y6ibt3Uz0psVFSihiemmunZGSwO9/EkprbLDUViIxUOgr1UXOb0WIC1qm5zVJSgLZtlY5CfdTcZrt302IC1qg5KUXJX+vat1fvxTIlEq1Tc4KDEonWxcaqt0A9JRLFp6uk1M2bN/Hggw/Cx8cHfn5+GD9+PHJzc6t8TY8ePcBxnMXPk08+KVPERA3UehKfkQEEBiodhTqptc1u3WJTQqlmSkVqLcJcXMzqgzjo6ttQHGo9ITSZgJISNpWXWGrZkk25UhueZ5+PtJhARY0aqbdw9rVrdGPMGjVPuUxNBaKilI5CferWBa5fVzoK644cAZo3VzoK9XF3Z/XR1FhiZd8+NgOAiEdXp+EPPvggjhw5gvXr1+OPP/7Ali1bMGHChGpf9/jjjyMtLc38M2fOHBmiJWrRuDFw4oTSUVREd04qV78+KzCoNnv20HDeyqi1CPPBg6zWBKnIw4MVhlXbCeHJkzSyrTJOTixpV1amdCSWLl0CwsOVjkKdOI4VYc7PVzoSSzduAAEBSkehThwH+Pio7zstL499btONMevq1VPfKnwlJeymGK2ybV10NEu0qolwY8zNTelI9EU3Saljx45h3bp1WLBgARISEtClSxd8+umnWLZsGa5U8wnk4eGBkJAQ84+Pj49MURM1cHBgd9zVVoSZhoZWzcdHfUWYqZ5U1YKD1VeEmaanVC06Gjh3TukoLFGbVa1FC+DoUaWjsEQ3WaqmxvptSUm0mEBVOnVS34jt5GRWO4lY17kzO09Tk4MH2arSxLqEBPX1s5MngSZNlI5Cf3SzyOvOnTvh5+eH+HKfxn369IGDgwOSkpJwzz33VPraJUuW4Mcff0RISAiGDBmCN998Ex4eHpVuX1RUhKJyGYyc/10Zm0wmmNS6JFg1TCYTeJ7XbPy11a4d+zJX04XOoUMcZszgVbvKnNKEmg69eysdyW1793KYOFH+NtNK/+3QgSVbhw5VOpLbdu3iMHIk9bPKtG/PTuIjIpSO5LadOzn83//pp83E7r/t27N+1qKFKLsTxc6dHMaP10+biS0hgfWzLl2UjuS2HTs4DB1KbVaZTp2ANWs49Omjnu/fHTvY96wKQlGljh2Bb77hcO+96hn+u2MH6//UZtZ17Ah8/DGHUaOkaTN7vn+3b6c2qwlbf7e6SUqlp6cj6I6J705OTggICEB6enqlr3vggQcQERGB0NBQHDx4EJMnT8aJEyewcuXKSl8ze/ZszJgxo8Lj165dQ2Fhof1vQkEmkwnZ2dngeR4OBiyu0rSpC9avd0J0tDrGz5eUACUlfrh5M0vpUFSrSRNnbNzoglat8pQOBQD7csrN9UNOTpbsI7i00n+bNHHCb7+5oWPHqmv9ySk93Q9lZVnIyFA6EnVq3NgRCxd6oHfvW0qHYnbmjB9cXPTTZmL330aNHDBnjheGDlXPUNKDB/3g76+fNhNbZCSHDz/0xdixWUqHYrZnjx8mTKA2q0xoKLB7tx8yMm6q5vt32zY/jBiRjYwM9SRd1MTfHzh0yB8ZGZlKh2K2ebMvZs3KoTarhLc3cPSodG1mz/fv5s0+ePHFXGRkUFbKFrdu2Xb+qPqk1GuvvYb33nuvym2O1WJt+PI1p1q1aoV69eqhd+/eOHPmDBo2bGj1NVOmTMHEiRPN/87JyUF4eDgCAwM1O/XPZDKB4zgEBgYq/qWqhH79gFWrOAQFeSkdCgBhCDZXIdFKbuvdG1i4kENQkKfSoQAAjh8HWrZUps200n8DAoB58zgEBVU+ElVOGRlAaCj1s6oEBgKzZnEICnJXOhQArFi2vz+H4GD9tJnY/TcoCMjM5BAUpI6CF8XFgIcHh5AQ/bSZFMrKOAQGBqmiHlBZGeDoyKF+fWqzqri4cPD3D1LF9y/Ps7+hyEhaIacqPj4cvLyCUMWEGFnl53OIiXFVOgxVCwri4OISBD8/8fdtz/fv9esc2rZ1U8VntRa42Vh8S/VJqZdffhljx46tcpvo6GiEhIQg447bOaWlpbh58yZCQkJsPl7C/ybQnz59utKklKurK1xdK36AODg4qPqCsDocx2n+PdgrIADIzsb/VmBUOho2LS0xEXBwUEEwKuXpyS52AE4VK6clJbF6BUq1mRb6r4sLK+ZZWsqpYuW0HTuArl2pn1XHywvIy+NUsXLa7t1s2oze2kzs/hsYyE6c1ZBv3b8fiIvTX5uJLToaOH+eQ3S00pGw1cBatKA2q07btsDhww4ID1f++zc1FYiMpDarTocOQHIyh+7dlY6E3RgLCqI2q07nzqzUwl13SbP/mnz/5uSwmraOjtRmtrL1c1G9Vy//ExgYiJiYmCp/XFxc0KlTJ2RlZSG53PrV//77L0wmkznRZIuUlBQAQL169cR+K0TloqLUU9CXCvnapkULdvKsBjt2UCFfW8TFsZGAarBtm7pquKiVmgr6bt3KEomkal26sLoXakBtZptOnVgtMDWgNrONmgpn0/eZbdTUZrQ4jm26dmV/32qwezetsi0V1SelbNWsWTMMGDAAjz/+OHbv3o3t27fj2WefxahRoxAaGgoAuHz5MmJiYrB7924AwJkzZzBr1iwkJyfj3Llz+P333zFmzBh069YNrWkpBMPp2pWdiKnBjRtAnTpKR6F+amqzy5eB+vWVjkL91NRmx48DMTFKR6F+ajoh3L+fLUxBqqamfpaURDdZbJGYqJ5E4vbt7OKdVI0lEtUxYmLrVqBbN6WjUL/27YE9e5SOgtmyhdrMFq1bs1UK1YD6mXR0k5QC2Cp6MTEx6N27N+666y506dIF8+fPNz9fUlKCEydOID+fFbN2cXHBhg0b0K9fP8TExODll1/G8OHDsWbNGqXeAlGQWk7iL12i5IatOndWx0n8zZuQZK67HiUksItUpeXmsimgapiuq3Zt27JkkNKKiwEHB8BJ9YUHlBcTw5KuSjOZgMJCqKZ+i5pFRbEpWErjefadRjfGqufnB2Rlsd+Z0i5eBMLDlY5C/dzd2WeSGlZOO3aMbozZwtGRfe+rYS2xffvoxphUdHVqFxAQgJ9++qnS5yMjI8GX++YIDw/Hf//9J0doRAPCw1lCSGn//UdZeFvVqcNGlfG8sskFmupgOw+P2yeESpa/oimytnN2Zv8tKbn9/0pITmbTP0n1OI71tbw8lnxVilCbiFSP49h32vXrQN26ysWRmsoSZMQ2DRoAly45IDhYuRgyMlgdOWIbIWnfvLlyMeTksJXl6MaYbdq3B/buVXaKalER3RiTkq5GShFSW0FBUHz54//+gyoKMGqFGmqBUZvVTPPmwNGjysZAicSaiY1ldwiVRG1WMx07Kl8LjNqsZtQwVZamp9RMYiKPPXuUXbmD+lnNqGGU/c6dVE+qJtQwm2XPHpYcI9KgpBQh5XTpovwJ4cWL7M4bsY0aTuKPHQOaNVM2Bi1RQ5vREOyaUUObJSWx6Z/ENl26KH8Sv20b1SaqiW7d2E0OJVGCo2a6dgWSkpRNSlFtoppRQ4KD2qxm2rdnRcaVRG0mLUpKEVKO0l9U6elQdAi4FindZtnZbHlYGoJtu86dlU1wFBez9lJyKprWJCQouzKYyQQUFFBtopqIjVV2pUueBzIzgYAA5WLQmpgY4MQJZWO4fBkIC1M2Bi2JjAQuXHBUNIaTJ4EmTRQNQVOEWRFK1gJLSQHatFHu+Frj7s7O3crKlIshKYlW3pMSJaUIKadpU2WLw1IWvubCw4ELF5Q7Pi3DXHPla4EpgZb0rTkvL5YUKi1V5viHDgGtWilzbK1ycWEFYgsKlDn+2bNAdLQyx9YqjmM3ObKzlTk+3RirOY4DgoPLcOWKMsfPzqbaRPZo1Ag4fVqZYxcUsJtijsrmMjWnVSvg8GFljl1ayn7c3JQ5vhFQUoqQcjgO8PdnK88ogWoT2Sc8nE17VAK1mX2UXB3s33+BXr2UObaWxcYqtwrfxo1A797KHFvLEhOVG+FG/cw+Sta72bQJ6NlTmWNrWWJiMTZvVubYNN3SPj17sr93JdBUdPt07cpu3ishJYWtREykQ0kpQu6g5BcV3Vm2T69e7AJICUeOAC1bKnNsLVOyzahYpX2UbDOqTWQfJb/PKMFhn+7doViCg5K/9uncuRibNyszVGnDBqBPH0UOrWnduytXv23jRmozeyiZlKLPRulRUoqQO/TuzT585Hb1KlvSl4Zg15xSF8s5OWy5dQf6JK0xpU4I8/PZsHmqJ1VznToBO3bIf9ySElZLwtNT/mNrXbt2yqyaaDIBWVlUT8oeLVuy6apKuHwZqF9fmWNrWViYCZcuKXPsY8fYyGNSM3XrslkRSpQRSE5mI49Jzfj4sHM4JcoIbN9OqyVKjS6lCLlDdDQbsSQ3uttlv+BgZYpWbt4M9Ogh7zH1wscHyM2Vv2jl9u004sZebm4s2VBcLO9xaWSb/ZycWIHY3Fx5j3v4MI0gtZeDA6u7d/26vMc9exaIipL3mHpSv778ZQSEGmB0M9M+TZvKv7BAdja7wUL1pOwTHy//Ah5CXUaqJyUtSkoRYkVYGGS/67V+PdC3r7zH1JMmTdgKNHL65x+gXz95j6knbdsCBw7Ie0yqc1M7HTuyehhy+vdfGjZfG126yL/a5caN1M9qQ4kR2zQ9pXZ69uRlnypLn42107On/KPs//uPpjXXRp8+7Ca+nHbsoAWN5EBJKUKs6N1b3i8qnmd3vOrVk++YeqPEFL7Tp4GGDeU9pp706iX/hRctw1w7SvQzWoa5dpToZ1R8uXb69GE3quT07790sVwbSvQzSiTWTo8e8tdvo1kRtZOQIP+NMWozeVBSihAr5L7wOnoUaN5cvuPpkdzFYc+fByIiaNh8bXTuLO8IjsxMwNeXaoDVRny8vCeE+flsmoOLi3zH1JtWrYCDB+U7Xmkp1QCrLWFFWbmmpFMNsNoTygiYTPIcj+fZiH6qAWY/X182NUvOKeknTwKNG8t3PL1xcWHT0vPz5TsmrbwnDzo1J8SKkBA2ckmukwuauld7fn6sbkpJiTzHozarPXd3ltTLy5PneDTdsvacnVk9sJs35TkereBWexwn75T0nTtpuXMxNGkCnDolz7EOHABat5bnWHoWGwvs3y/PsU6fBho1kudYepaYyD6z5HDlChAaSjcza0vOKek3b7LrC7qZKT36FRNSiXbt5Du52LIF6NZNnmPpWefO8q0ORjVTxNGrl3xL1v/1FzBggDzH0rP+/VmCTw5//gncdZc8x9KzgQOBdevkOdbatcCgQfIcS8/69pVvCh+1mTgGDGDfM3Kgz0ZxDBgg32fjunV0Y0wM/frJ12Y0RVY+lJSSSVlZGQoLC1X9U1JSongMtvyYZBq+NGgQO1GTWmEhm+5AUx1q76675GmzsjIgJ4emOojhrrvYybXUTCY2+jE0VPpj6Z1cF148z0YD0FSH2uvbV75EYkoKu6lDaqdnT/lqFO3YQcudi6FjR/lG3WzaRDfGxNCmDfvMksO6dXRjTAwtWrAVXuXwxx+U/JWLk9IB6B3P80hPT0dWVpbSoVSJ53mYTCbcunULnMrHlTo4OCAqKgouEhcZ6dgReOcdSQ8BgFYDE1ObNsDkydIfZ8cO9vdBaq9RI+DMGZaAkPKjJzmZ1UMitVevHnD1Kkv0STmk/fhxoFkz6fZvJH5+bJpscbG09bkuXGA1blR+GqEJ3t6sj+XlSXvT6to1wN+f1WkhtePsDHh5sfqF/v7SHefWLVZrz91dumMYhYMDqweWlibtYkNFRax+lZ+fdMcwCo4DmjZl9bmaNJHuOGVl7FyHbmbKg76CJCYkpIKCguDh4aHahA/P8ygtLYWTk5NqYwQAk8mEK1euIC0tDQ0aNJA0VicnNhImIwMICpLsMPj9d2DSJOn2byQcBzRocLsIuVR+/x14+GHp9m80zZsDx45JW+yfpjqIKz6eJfrat5fuGDSlSFzC9OYePaQ7BrWZuPr2ZSs/3X23dMdYt45N7yTiENrs/vulOwbVtBRX//7A338DY8dKd4z//pP2s9doBg8G1qwBXn5ZumPs2kU3oOVE0/ckVFZWZk5I1alTB+7u7nBzc6OfWvx4eHggMDAQ+fn5KC0tlbwNpa7DYTIBqalAw4bSHcNoBg2SdjoYz7OisK1aSXcMo5FjCl9SEhVfFtPAgdK32X//Ua09McnRz2jpbHEJF15Solp74ho4kE35kRIlf8U1YID0n41//MH6MxFHjx7Sr7j9xx/AkCHSHoPcRkkpCZX8bxkwDw8PhSPRF2HaXllZmeTHkroA4r59NKVIbL17S1sc9vhxICaGpqeIqVs3aU8u0tKAOnXYdAcijoQEaWunZGcDbm6Aq6t0xzCaNm3Y4h08L83+CwrYdAdvb2n2b0QREcDFi9KtBFxSwvpa3brS7N+IwsLYlMjiYmn2bzIBly8D4eHS7N+I/P3Z9DqpVgLmeXbuKOVUM6NxdWXTV6WsjrNvH9VHlBMlpWSg5ulwWiTn77NOHTZ3v6BAmv3//jswdKg0+zYqb29WI0CqL6rff5d2KoURubqyk8K0NGn2/+uvwL33SrNvo3JyYhfMZ85Is//ffqPPRrFxHEtMHTwozf7XraMpRVLo0AHYvVuaff/3H9C1qzT7NrJevVi9UCns2UM3M6Ug5cyIo0dZeQK6HBSXlIuupKaycxwp62YSS/SrJqQaAwdK96G3e7e0NVmM6u67WfJIClu20JQiKdx7L7BypTT7phVvpHHffcAvv0izb0rYS0PKNvv1V2D4cGn2bWRDh7IkrRR+/hkYMUKafRvZ8OGsP0hh+XJqMykMGwasWiXNvn/+mX32EnENHQqsXi3Nvn/9FbjnHmn2TayjpBQh1ZDq5OLECSA6mrLwUpDqJP7SJTbNwdlZ/H0bnVRTZdPS2Go3tEqR+Hr2lGbapTDK0ddX/H0bnVSjbvLzgZwcICRE/H0bXXw8Gx0j9rTLkhI2NTA6Wtz9EiAqiv1uxS59ajIBhw9TTUsphISwVROLisTdL8+zBSYSE8XdL2Hn4yUl7LtHbFQfUX50OUysGjt2LIYNGybrMRctWgQ/Fa6VGhzMpvCJPdd8yRLgwQfF3SdhfH3ZMOnMTHH3u3QpMHq0uPskjLs7a7f0dHH3u3IlTd2TipMTUL8+G+Yupt9+Y3etifgcHIBmzdh0EjHR6pbS4Ti2ApTYNdw2bmQ1GIk0unYFtm4Vd5/bt7NVNGkamDT69GHJCDGlpABt29INaKkMGyb+aKmTJ1limW5Ay4u6CCE2EHtFN55nJ5h050Q6w4aJP1pq/Xq6cyKle+8Vf1TiX3/RcudSkmI62G+/0Yo3UrrvPmDFCnH3SXXbpPXgg8BPP4m7T5q6J6377mNT7cS0fDkwcqS4+yS3SdFmy5YBo0aJu09y2913i5+UojZTBiWlSLV69OiB559/Hq+++ioCAgIQEhKC6dOnW2zDcRy+/PJLDBw4EO7u7oiOjsYv5a5UNm/eDI7jkFWu+nRKSgo4jsO5c+ewefNmPProo8jOzgbHceA4rsIxlCT2xXJSEptGQXe7pCP2XPODB1mhSicn8fZJLA0cyJa6FsulS6yAOk3dk06vXixZK9bUohs32CqJNHVPOomJbASHWCu65eay6XtBQeLsj1TUrBlw6hSbqiKGoiLg6lWgQQNx9kcqatoUOH+e9Q0xlJayv4GYGHH2RyoKD2dTwcRaKIfn2QpusbHi7I9U5OvLRjRdvy7O/niefT/SAhDyo6QUscn3338PT09PJCUlYc6cOZg5cybWr19vsc2bb76J4cOH48CBA3jwwQcxatQoHDt2zKb9JyYm4qOPPoKPjw/S0tKQlpaGV155RYq3YpfAQLbUdUaGOPujqXvS8/FhX1bnz4uzvyVLgIceEmdfxDp3d7baiVhTixYuBMaNE2dfxDpnZzY1Yc8ecfb3/ffAww+Lsy9inYMD0L27ePXAli4F7r9fnH2RyvXtK97Uot9+YyPAibSGDxevePb69TTdUg6jRok3WmrbNqBTJ7oBLbX77mMjP8WQkgK0bk3TLZVAv3Jik9atW2PatGlo3LgxxowZg/j4eGzcuNFim/vvvx+PPfYYmjRpglmzZiE+Ph6ffvqpTft3cXGBr68vOI5DSEgIQkJC4OXlJcVbsdujjwKLFtV+P0VF7G5X8+a13xep2mOPAQsW1H4/ZWXsbldcXO33Rao2YQLwzTe1309ZGVspsUeP2u+LVE2sfsbzVJtILo8+Cnz3nTj7+vVXWllKDqNHAz/8IM6+fvyRbrLIYcQI8RIcCxcCY8eKsy9SOTFrFH3zDTB+vDj7IpUbOpQlf8UYsf3119RmSqGJKAp56ing8mX5jhcWBnz5pf2vb926tcW/69Wrh4w7hg116tSpwr9TUlLsP6jK9O8PfPgh8MortcugL1tGJ/By6dIFmDGDTXmoTcHC339nF8p0t0t67doBU6YAhYWAm5v9+/n7b6BfP2ozOTRpwlY5vHUL8Pa2fz9btrAivjRFVnr167NpRTduAHXq2L+fvXuBFi1q11eJbcLC2EXXpUus/ex1/DgQGspGExNp+fiwFcJSU1nhZHudP89GEtMUWem5ubEVKY8cYZ9t9rp6lZ3HRESIFxuxztWVlUTZvp2d99srKwu4coUGDSiFTv0UUpsEkRKc77ii5zgOphoUpHD4XxaHL5fGLhGrOIJMHB1Z/ZSNG9kwenvwPJsGJnYBbmIdxwGDBwN//AHcc4/9+/n2W9ZuRB7Dh7NV8x54wP59fP89YONATSKCUaNYwv3xx+3fx7ffAm+9JV5MpGoPP8xGzLzwgv37mD8fePll8WIiVXv6aXb++Pbb9u/jq6+AJ54QLyZStXHj2IiZd96xfx/z51Obyemxx1g/qc05xIIFbD9EHk88Abz+eu2SUt9/T6MRlUTT94hodu3aVeHfzZo1AwAEBgYCANLS0szP3zmKysXFBWVlZdIGWUvjxtVumsq2bUB8PBVeltOYMbWbdrlvH9CwIRVeltOoUWyair1Dsc+fZ6Nt6K6yfIYPZyu62dtmGRls5A4VXpbPoEHAmjVsqqs9srOB9HRW0JnIo0sXVr+toMC+1+fnAydOsBGpRB6dO7PziOxs+15fXMzanFZrlk+7dsCFC8C1a/a9vrQU+PdfWq1ZTg0asL6Snm7f600m9n04dKi4cRHbUVKKiGbFihVYuHAhTp48iWnTpmH37t149tlnAQCNGjVCeHg4pk+fjlOnTmHt2rWYO3euxesjIyORm5uLjRs34vr168gXa8kSEYWEAJ6ebPi7PT7/nN3pJPIJCGArquzbZ9/rP/0UeO45cWMiVfP2Btq0YUlce8ydC0ycKG5MpGpubkC3bmzapD0++oj6mdycnVliyt76KZ9/TqM35MZxrLbU0qX2vX7BAuCRR8SNiVSN426PcLPHjz+y2lQ0FV1eL7wAfPyxfa9duRIYMoSKZcvtiSfY95I91q0Devak8gFKou5CRDNjxgwsW7YMrVu3xuLFi7F06VI0/9/EXGdnZyxduhTHjx9H69at8d577+GtO+ZpJCYm4sknn8TIkSMRGBiIOXPmKPE2qvXqq8B779X8dUePshFStakFQewzaRJgz5/TuXPsjnSjRqKHRKrx4ossuVRT6enAxYtUlF4JTz8NfPJJzUdLZWayFW+6dZMkLFKFxx9n01RqMBsfAJCbC2zaREXplTB6NJtOXlpas9cVFbH6iLRSovwGD2alH2p6r7W0lLX1mDHSxEUq17Mnq5mXk1Oz15lMbLrlhAnSxEUqJ7RZZmbNXsfzwKefcnjmGWniIrahfCCxalG5+U6brawbvdrKrdXQ0FD8888/le6zc+fOOHjwoMVj/B1XL19++SW+VHnBrZgY9t9Dh4BWrWx/3cyZtasDQewXEcGK+SYlAQkJtr9uxgzgzTeli4tULiSEFdD+919Wy81Ws2YB//d/0sVFKhcQwJa/XruWXYTZ6p13WOKYRgLIz8sLGDiQLac9apTtr5s7F3j+eWozJbi5sZEz339fs1WiPvuMlSBwdJQuNmKdgwP73X/9NfDSS7a/buFCYORIwMVFutiIdcIIt08/ZbWKbLVsGUvWe3hIFxuxjuNYjcM5c4DZs21/3T//uCIxkYefH32hKYlGShFih5kzgTfesH1EwKZN7CK7YUNp4yKVmzoVmD7d9hEBu3ez6S21WX2F1M6UKezEwtYRAYcPs7od7dtLGxep3EsvsVVKi4ps2/70aeDsWXaHkyjj6afZnf28PNu2v3yZ3Y2uSeKRiGvcODaFLyvLtu2vXQP++admiUcirhEj2BQhW+sUZWezOn3jxkkbF6nckCHArl22r5aen8+myNKIG+X06QOcOsXOK2xRVAR8840HlXxQAV0lpd5++20kJibCw8MDfn5+Nr2G53lMnToV9erVg7u7O/r06YNTp05JGyjRvPBwVnTyhx+q3zY/n60oNXOm9HGRygUHs4uor7+uftviYnZnrDar5ZDa8/cHHnoImDev+m3LyuyfpknE4+XFkhy23KU0mVgS64MPpI+LVM7NDXjlFWDatOq35XlWa2XOHBolpSRnZzaK19ZRoS+9xL7PqMaNchwd2UjeV16xbftJk9jNNKpxoxyOY/1m4kTbbkK//jor8eHqKn1spHKzZ7PPPFtuQr/9NoexY/Ph6Sl9XKRquvp6Ki4uxv3334+nnnrK5tfMmTMHn3zyCb766iskJSXB09MT/fv3R2FhoYSR6g/P8xg2bJjSYcjq5ZfZncqTJyvfhufZB+PkyYCPj3yxEeueeordqbxjFmkFr73GLqzr1pUnLlK5MWPYqLXdu6vebvp04IEHgNBQWcIiVRg+nN2l/O+/qrebM4dNc4iKkicuUrm77mJ1oqorVP/552wK9P8W1iUK6t6d1alctarq7b7/no3Spjp7yuvQgZUTqO6G5ooV7Jyxa1d54iKVa9WK9Z2vvqp6u7/+YqNuBgyQJy5SucaNgX79qq9L+t9/bJXFwYNtHNpNJKWrpNSMGTPw0ksvoZWNhX54nsdHH32EN954A3fffbe5QPeVK1es1kwipDwnJzZM98knKx/a++677ASkXz95YyPWOTiwNnvxRVbE3JpPPmEjB+65R87ISGU4jk0teu01tpS5Nd9+C9y6BTz8sLyxEes4jiUv3nqLTam0ZulSlrh68kl5YyOVmzePrYKYnGz9+d9+Y1NZbB3pQaQ3ezawaBGwfbv15//5B/jjDzbihqjD1KmsL23caP35rVtZ0qomNXGItF55hfWxNWusP79nD6s9ZcuobiKPp59m54w//2z9+UOHWJ3fzz+v4cosRDK6SkrVVGpqKtLT09GnTx/zY76+vkhISMDOnTsVjIxoRVgYu2B++GF2h1kY3nv9OluatKSE1cUh6hEYyE7ix49nJxhCm2VmsmkpV65QQXq18fdnKxA9+yzwyy+3h2Tn5LCh8gcPsjpGRD28vYGffmIn80uWsOmVAKtbNG0asHkzWyKdpoCph7s7a7Np01iBZaGWW0EBm8KyciXw3XfUZmri4gL8+CObAvvll+ycA2AjNj78kLXjDz9QcXM1cXICFi9m547z5rFyAQBruy++YO32009siiZRBwcHdvNrxQr2WSjUTCwrY4/PnMnajKbtqQfHsc/E9evZd1pBAXvcZGKfmZMmsXMTmranHoaeqZyeng4ACA4Otng8ODjY/Jw1RUVFKCpXxTXnf+uFmkwmmMpNYDWZTOB5HmVlZRVWmVMjIUa1xyr8Xu/8fSslOhpYvRqYM4fDvHns5M/NDXjuOR7durGkh8p/pYZTvz67U/nhh8Dnn3NwdGQn908+yaNvX+21Wfk+oVfBwazNPv4YuOsu1maOjsDjj/MYNIhto+O3r0l16rDPxs8/BwYNYm3m4AA88ghvrl9Ebaau/uvry5JP8+cDQ4Zw5hpEDz7IY/JkdqKvgjBJOZ6ebDTAwoXA0KGszXgeuP9+HkuWUJtJzZ7+6+bGLoh//BEYNoy1WVkZMGwYjxUr2OcktZm6ODuzpPyyZcA997A2Ky0FBg/m8euvLNlIbaYujo5s2uWqVcD997O7KSUlQP/+PFavZuf9avr+1Stbf7ccr/IMxGuvvYb33nuvym2OHTuGmJgY878XLVqEF198EVnVLEuyY8cOdO7cGVeuXEG9evXMj48YMQIcx2H58uVWXzd9+nTMmDGjwuMnT56Et7e3+d88z+PGjRtwcXFB3bp14azi2x5Ch3RwcACn4tugPM/j5s2byM3NRUBAAByoaichMJlMyM7Ohq+vL/UJQjSG+i8h2kX9lxDtov4rvVu3bqFJkybIzs6GTxUFllU/Uurll1/G2LFjq9wmOjrarn2HhIQAAK5evWqRlLp69Sratm1b6eumTJmCieXWjszJyUF4eDgCAwMr/LL9/f2Rnp5e5cgrtRCSUmrn4OCAiIgIeNKYS0IAsL7LcRwCAwM10YcJIbdR/yVEu6j/EqJd1H+l5+bmZtN2qk9KBQYGIjAwUJJ9R0VFISQkBBs3bjQnoXJycpCUlFTlCn6urq5wtTJx2MHBocIftJubGyIiIlBaWooyoaiGCplMJty4cQN16tRRfad0dnaGIxVIIMQCx3FWP4MIIepH/ZcQ7aL+S4h2Uf+Vlq2/V9UnpWriwoULuHnzJi5cuICysjKkpKQAABo1agQvLy8AQExMDGbPno177rkHHMfhxRdfxFtvvYXGjRsjKioKb775JkJDQzFs2DDR4uI4Ds7OzqqevmcymeDs7Aw3NzfqlIQQQgghhBBCCJGcrpJSU6dOxffff2/+d7t27QAAmzZtQo8ePQAAJ06cQHZ2tnmbV199FXl5eZgwYQKysrLQpUsXrFu3zuahZoQQQgghhBBCCCGk5lRf6FwLcnJy4OvrW20BLzUzmUzIyMhAUFAQjZQiRGOo/xKiXdR/CdEu6r+EaBf1X+nZmieh3z4hhBBCCCGEEEIIkZ2upu8pRRhslpOTo3Ak9jOZTLh16xbVlCJEg6j/EqJd1H8J0S7qv4RoF/Vf6Qn5keom51FSSgS3bt0CAISHhyscCSGEEEIIIYQQQog63Lp1C76+vpU+TzWlRGAymXDlyhV4e3uD4zilw7FLTk4OwsPDcfHiRc3WxSLEqKj/EqJd1H8J0S7qv4RoF/Vf6fE8j1u3biE0NLTK0Wg0UkoEDg4OqF+/vtJhiMLHx4c6JSEaRf2XEO2i/kuIdlH/JUS7qP9Kq6oRUgKaPEkIIYQQQgghhBBCZEdJKUIIIYQQQgghhBAiO0pKEQCAq6srpk2bBldXV6VDIYTUEPVfQrSL+i8h2kX9lxDtov6rHlTonBBCCCGEEEIIIYTIjkZKEUIIIYQQQgghhBDZUVKKEEIIIYQQQgghhMiOklKEEEIIIYQQQgghRHaUlCKEEEIIIYQQQgghsqOklI58/vnniIyMhJubGxISErB79+4qt1+xYgViYmLg5uaGVq1a4c8//7R4nud5TJ06FfXq1YO7uzv69OmDU6dOWWxz8+ZNPPjgg/Dx8YGfnx/Gjx+P3Nxc0d8bIXqnRP+NjIwEx3EWP++++67o740QPRO7765cuRL9+vVDnTp1wHEcUlJSKuyjsLAQzzzzDOrUqQMvLy8MHz4cV69eFfNtEWIISvTfHj16VPjuffLJJ8V8W4QYgpj9t6SkBJMnT0arVq3g6emJ0NBQjBkzBleuXLHYB137SoQnurBs2TLexcWFX7hwIX/kyBH+8ccf5/38/PirV69a3X779u28o6MjP2fOHP7o0aP8G2+8wTs7O/OHDh0yb/Puu+/yvr6+/OrVq/kDBw7wQ4cO5aOioviCggLzNgMGDODbtGnD79q1i9+6dSvfqFEjfvTo0ZK/X0L0RKn+GxERwc+cOZNPS0sz/+Tm5kr+fgnRCyn67uLFi/kZM2bw33zzDQ+A379/f4X9PPnkk3x4eDi/ceNGfu/evXzHjh35xMREqd4mIbqkVP/t3r07//jjj1t892ZnZ0v1NgnRJbH7b1ZWFt+nTx9++fLl/PHjx/mdO3fyHTp04OPi4iz2Q9e+0qCklE506NCBf+aZZ8z/Lisr40NDQ/nZs2db3X7EiBH8oEGDLB5LSEjgn3jiCZ7ned5kMvEhISH8+++/b34+KyuLd3V15ZcuXcrzPM8fPXqUB8Dv2bPHvM1ff/3FcxzHX758WbT3RojeKdF/eZ4lpebNmyfiOyHEWMTuu+WlpqZavajNysrinZ2d+RUrVpgfO3bsGA+A37lzZy3eDSHGokT/5XmWlHrhhRdqFTshRidl/xXs3r2bB8CfP3+e53m69pUSTd/TgeLiYiQnJ6NPnz7mxxwcHNCnTx/s3LnT6mt27txpsT0A9O/f37x9amoq0tPTLbbx9fVFQkKCeZudO3fCz88P8fHx5m369OkDBwcHJCUlifb+CNEzpfqv4N1330WdOnXQrl07vP/++ygtLRXrrRGia1L0XVskJyejpKTEYj8xMTFo0KBBjfZDiJEp1X8FS5YsQd26ddGyZUtMmTIF+fn5Nd4HIUYlV//Nzs4Gx3Hw8/Mz74OufaXhpHQApPauX7+OsrIyBAcHWzweHByM48ePW31Nenq61e3T09PNzwuPVbVNUFCQxfNOTk4ICAgwb0MIqZpS/RcAnn/+ecTGxiIgIAA7duzAlClTkJaWhg8//LDW74sQvZOi79oiPT0dLi4u5pNke/dDiJEp1X8B4IEHHkBERARCQ0Nx8OBBTJ48GSdOnMDKlStr9iYIMSg5+m9hYSEmT56M0aNHw8fHx7wPuvaVBiWlCCHEoCZOnGj+/9atW8PFxQVPPPEEZs+eDVdXVwUjI4QQQvRpwoQJ5v9v1aoV6tWrh969e+PMmTNo2LChgpERQgBW9HzEiBHgeR5ffvml0uEYAk3f04G6devC0dGxwso7V69eRUhIiNXXhISEVLm98N/qtsnIyLB4vrS0FDdv3qz0uIQQS0r1X2sSEhJQWlqKc+fO1fRtEGI4UvRdW4SEhKC4uBhZWVm12g8hRqZU/7UmISEBAHD69Ola7YcQo5Cy/woJqfPnz2P9+vXmUVLCPujaVxqUlNIBFxcXxMXFYePGjebHTCYTNm7ciE6dOll9TadOnSy2B4D169ebt4+KikJISIjFNjk5OUhKSjJv06lTJ2RlZSE5Odm8zb///guTyWT+giWEVE2p/mtNSkoKHBwcKgxNJoRUJEXftUVcXBycnZ0t9nPixAlcuHChRvshxMiU6r/WpKSkAADq1atXq/0QYhRS9V8hIXXq1Cls2LABderUqbAPuvaViNKV1ok4li1bxru6uvKLFi3ijx49yk+YMIH38/Pj09PTeZ7n+Ycffph/7bXXzNtv376dd3Jy4j/44AP+2LFj/LRp06wuKe/n58f/9ttv/MGDB/m77767wpLyAwYM4Nu1a8cnJSXx27Zt4xs3bkzLYhJSQ0r03x07dvDz5s3jU1JS+DNnzvA//vgjHxgYyI8ZM0beN0+IhknRd2/cuMHv37+fX7t2LQ+AX7ZsGb9//34+LS3NvM2TTz7JN2jQgP/333/5vXv38p06deI7deok3xsnRAeU6L+nT5/mZ86cye/du5dPTU3lf/vtNz46Oprv1q2bvG+eEI0Tu/8WFxfzQ4cO5evXr8+npKTwaWlp5p+ioiLzfujaVxqUlNKRTz/9lG/QoAHv4uLCd+jQgd+1a5f5ue7du/OPPPKIxfY///wz36RJE97FxYVv0aIFv3btWovnTSYT/+abb/LBwcG8q6sr37t3b/7EiRMW29y4cYMfPXo07+Xlxfv4+PCPPvoof+vWLcneIyF6JXf/TU5O5hMSEnhfX1/ezc2Nb9asGf/OO+/whYWFkr5PQvRG7L773Xff8QAq/EybNs28TUFBAf/000/z/v7+vIeHB3/PPfdYJK0IIbaRu/9euHCB79atGx8QEMC7urryjRo14idNmsRnZ2dL/VYJ0R0x+29qaqrVvguA37Rpk3k7uvaVBsfzPC/36CxCCCGEEEIIIYQQYmxUU4oQQgghhBBCCCGEyI6SUoQQQgghhBBCCCFEdpSUIoQQQgghhBBCCCGyo6QUIYQQQgghhBBCCJEdJaUIIYQQQgghhBBCiOwoKUUIIYQQQgghhBBCZEdJKUIIIYQQQgghhBAiO0pKEUIIIYQQQgghhBDZUVKKEEIIIYQQQgghhMiOklKEEEIIIYQQQgghRHaUlCKEEEIIIYQQQgghsqOkFCGEEEIIIYQQQgiRHSWlCCGEEEIIIYQQQojsKClFCCGEEEIIIYQQQmRHSSlCCCGEEEIIIYQQIjtKShFCCCGEEEIIIYQQ2VFSihBCCCGEEEIIIYTIjpJShBBCCLHbuXPnwHEcFi1apHQoAIBFixaB4zicO3fOpu2ffvpp9O3b1+7j7dmzB4mJifD09ATHcUhJSbF7X4SowfTp08FxnKTHKCkpQXh4OL744gtJj0MIIUT9KClFCCGEVOPIkSN46KGHEBYWBldXV4SGhuLBBx/EkSNHarXfd955B6tXrxYnyGrs2LED06dPR1ZWls2vWbNmDbp3746goCB4eHggOjoaI0aMwLp166QLVEapqalYsGAB/u///s/q88eOHQPHcXBzc7P6eyspKcH999+PmzdvYt68efjhhx8QERGBL774QvYkXWRkJDiOs/ozYMAAi223bduGgQMHIiwsDG5ubmjQoAGGDBmCn376yWK78vtwcHBAaGgo+vXrh82bN1ts984776Bjx44IDAyEm5sbGjdujBdffBHXrl2z2O748eN49dVX0bZtW3h7e6NevXoYNGgQ9u7da/P77NGjh0VcAQEBaN++PRYuXAiTyVTp6/r27QuO4/Dss8/adJw7f59BQUHo2rUrVq1aZXOspHLOzs6YOHEi3n77bRQWFiodDiGEEAVxPM/zSgdBCCGEqNXKlSsxevRoBAQEYPz48YiKisK5c+fw7bff4saNG1i2bBnuueceu/bt5eWF++67T5YExgcffIBJkyYhNTUVkZGRNm/fvXt33H333fDw8MDp06exYcMGtGnTxhwzz/MoKiqCs7MzHB0dpX0TNli0aBEeffRRm97niy++iL/++gsnTpyw+vzrr7+OhQsXIjMzE5999hkee+wxi+ePHz+OZs2a4ZtvvrF4rmXLlqhbt26F5I2UIiMj4e/vj5dffrnCc6GhoejVqxcAYMWKFRg5ciTatm2LUaNGwd/fH6mpqdiyZQucnZ2xadMm8+s4jkPfvn0xZswY8DyP1NRUfPHFF8jIyMDatWsxcOBAAMDw4cMRGBiImJgYeHt749ixY/jmm28QFBSElJQUeHp6AgBeeeUVfPvttxg+fDg6dOiA7OxsfP311zh37hzWrVuHPn36VPs+e/TogTNnzmD27NkAgGvXrmHx4sVISUnB5MmT8e6771Z4zcqVKzFmzBjk5eXhmWeewWeffVbj3+eVK1fw9ddf4+zZs/jyyy/x5JNPVrsPrSotLUVpaSnc3NwkPU5WVhaCg4Px5ZdfYty4cZIeixBCiIrxhBBCCLHq9OnTvIeHBx8TE8NnZGRYPHft2jU+JiaG9/T05M+cOWPX/j09PflHHnlEhEir9/777/MA+NTU1Gq3LSkp4X18fPi+fftaff7q1asiRyee7777zqb3WVxczNetW5d/4403rD5vMpn4yMhIfuLEifw999zD9+jRo8I2//33Hw+AX7FihcXjLVq04Lt3727vW7CqpKSELyoqqvT5iIgIftCgQdXup3nz5nyLFi2s7uvOdgXAP/PMMxaPHTx4kAfA9+vXr8rj/PLLLzwAfunSpebH9u7dy9+6dctiu+vXr/OBgYF8586dq42d53m+e/fufIsWLSwey8vL4+vXr897enryxcXFFs8VFBTwkZGR/MyZM62+n8pY+32mpaXxnp6efJMmTSp9XXXtRCwNHjyY79q1q9JhEEIIURBN3yOEEEIq8f777yM/Px/z589HYGCgxXN169bF119/jby8PMyZM8f8+NixY62O0LmzTgvHccjLy8P3339vniI0duxYi22PHz+OESNGwMfHB3Xq1MELL7xgMdWlqnpOHMdh+vTp5v1NmjQJABAVFWU+XmV1l65fv46cnBx07tzZ6vNBQUHVxrBixQo0b94cbm5uaNmyJVatWlXhdyO89oMPPsD8+fPRsGFDuLq6on379tizZ4/F/g4ePIixY8ciOjoabm5uCAkJwbhx43Djxg2rMVZn27ZtuH79eqWjc7Zv345z585h1KhRGDVqFLZs2YJLly6Znx87diy6d+8OALj//vvBcRx69OiByMhIHDlyBP/995/599yjRw/z67KysvDiiy8iPDwcrq6uaNSoEd577z2LqWflfy8fffSR+fdy9OhRu95reWfOnEH79u3h4uJS4bny7VqZVq1aoW7dukhNTa1yO6Gdy097jIuLg5eXl8V2derUQdeuXXHs2LHqg6+Eh4cHOnbsiLy8vApTBufMmQOTyYRXXnnF7v0LQkJC0KxZM/N7r66d/v33X3Tt2hWenp7w8/PD3XffbfV9Xr58GePHj0doaChcXV0RFRWFp556CsXFxeZtbPm7AYBly5YhLi4O3t7e8PHxQatWrfDxxx+bny8pKcGMGTPQuHFjuLm5oU6dOujSpQvWr19v3sZaTSlh6uPq1avRsmVLuLq6okWLFlan8m7evBnx8fFwc3NDw4YN8fXXX1dap6pv377Ytm0bbt68aUsTEEII0SEnpQMghBBC1GrNmjWIjIxE165drT7frVs3REZGYu3atTXe9w8//IDHHnsMHTp0wIQJEwAADRs2tNhmxIgRiIyMxOzZs7Fr1y588sknyMzMxOLFi2t0rHvvvRcnT57E0qVLMW/ePNStWxcAKiTaBEFBQXB3d8eaNWvw3HPPISAgoEbHW7t2LUaOHIlWrVph9uzZyMzMxPjx4xEWFmZ1+59++gm3bt3CE088AY7jMGfOHNx77704e/YsnJ2dAQDr16/H2bNn8eijjyIkJARHjhzB/PnzceTIEezatavGhZl37NgBjuPQrl07q88vWbIEDRs2RPv27dGyZUt4eHhg6dKl5uTeE088gbCwMLzzzjt4/vnn0b59ewQHByMvLw/PPfccvLy88PrrrwMAgoODAQD5+fno3r07Ll++jCeeeAINGjTAjh07MGXKFKSlpeGjjz6yiOG7775DYWEhJkyYAFdX12rboaSkBNevX6/wuKenJ9zd3QEAERER2LhxIy5duoT69evX6HcGAJmZmcjMzESjRo0sHud5Hjdu3EBpaSlOnTqF1157DY6OjhYJucqkp6eb/ybtdfbsWTg6OsLPz8/82IULF/Duu+9i4cKF5vdfGyUlJbh48SLq1Klj8bi1dtqwYQMGDhyI6OhoTJ8+HQUFBfj000/RuXNn7Nu3z5y0u3LlCjp06ICsrCxMmDABMTExuHz5Mn755Rfk5+fDxcXF5r+b9evXY/To0ejduzfee+89AKwu2vbt2/HCCy8AYAmn2bNnmz97cnJysHfvXuzbt6/agv/btm3DypUr8fTTT8Pb2xuffPIJhg8fjgsXLph/J/v378eAAQNQr149zJgxA2VlZZg5c2alnzVxcXHgeR47duzA4MGD7W0aQgghWqb0UC1CCCFEjbKysngA/N13313ldkOHDuUB8Dk5OTzP8/wjjzzCR0REVNhu2rRp/J1fu5VN3xO2HTp0qMXjTz/9NA+AP3DgAM/zPJ+amsoD4L/77rsK+wDAT5s2zfzvmkzf43menzp1Kg+A9/T05AcOHMi//fbbfHJycoXtrMXQqlUrvn79+hZTtTZv3swDsPjdCK+tU6cOf/PmTfPjv/32Gw+AX7Nmjfmx/Pz8CsdeunQpD4DfsmWL+TFbp+899NBDfJ06daw+V1xczNepU4d//fXXzY898MADfJs2bSy227RpU42m782aNYv39PTkT548afH4a6+9xjs6OvIXLlzgef7278XHx6fCtNHKRERE8ACs/syePdu83bfffssD4F1cXPiePXvyb775Jr9161a+rKyswj4B8OPHj+evXbvGZ2Rk8ElJSXzv3r15APzcuXMttk1LS7M4Zv369fnly5dXG/eWLVt4juP4N99806b32b17dz4mJoa/du0af+3aNf7YsWP8888/zwPghwwZYrHtfffdxycmJlq8n5pM3+vXr5/5OAcOHOBHjRrFA+Cfe+45nuerbqe2bdvyQUFB/I0bN8yPHThwgHdwcODHjBljfmzMmDG8g4MDv2fPngoxmEwmnudt/7t54YUXeB8fH760tLTS99WmTZtqp3la+6wS/mZOnz5t8X4A8J9++qn5sSFDhvAeHh785cuXzY+dOnWKd3JyqrBPnuf5K1eu8AD49957r8qYCCGE6BdN3yOEEEKsuHXrFgDA29u7yu2E53NyckSP4ZlnnrH493PPPQcA+PPPP0U/1p1mzJiBn376Ce3atcPff/+N119/HXFxcYiNja1yqtWVK1dw6NAhjBkzxmKqVvfu3dGqVSurrxk5ciT8/f3N/xZGpp09e9b8WPmRLoWFhbh+/To6duwIANi3b1+N39+NGzcsjlneX3/9hRs3bmD06NHmx0aPHo0DBw7UasXFFStWoGvXrvD398f169fNP3369EFZWRm2bNlisb1QQNxWCQkJWL9+fYWf8u9j3LhxWLduHXr06IFt27Zh1qxZ6Nq1Kxo3bowdO3ZU2Oe3336LwMBABAUFISEhAdu3b8fEiRPx4osvWmwXEBCA9evXY82aNZg5cybq1q2L3NzcKuPNyMjAAw88gKioKLz66qs2v8/jx48jMDAQgYGBaNasGT799FMMGjQICxcuNG+zadMm/PrrrxVGn9XEP//8Yz5OmzZtsGLFCjz88MPmUUiCO9spLS0NKSkpGDt2rMXottatW6Nv377m/msymbB69WoMGTIE8fHxFY4vjP6z9e/Gz88PeXl5FlPx7uTn54cjR47g1KlTNf599OnTx2I0Z+vWreHj42Pup2VlZdiwYQOGDRuG0NBQ83aNGjUyF8W/k9AHrY3wI4QQYgw0fY8QQgixQkg2CcmpytiavLJH48aNLf7dsGFDODg4VFoLSmyjR4/G6NGjkZOTg6SkJCxatAg//fQThgwZgsOHD1tdnev8+fMAUGF6l/CYtQRSgwYNLP4t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fdGTnE6njDGWnT/QlNG/gHXRv4B10b+AddG/nlfba1vnUKqyslLNmjVTVlaWbrjhBt1www11npzVpaamauHChdXGCwoKLPssKqfTqeRtySqsLJTNZvP1dADUgTFGZ8+eVUBAAP0LWAz9C1gX/QtY10+9f6OaR2nRNYt8PY2LUlJSUqu6OodSgYGBio2NVVVVVZ0ndTFat24tf39/5eXluY3n5eUpKiqqxn2ioqIuWH/u17y8PLVt29atpnfv3uedy9y5c5WcnOx67XA4FBMTo4iICEs/U+r5wc8rIiKC99QCFuN0OlVQUED/AhZE/wLWRf8C1kX/el5wcHCt6ur19r358+dr3rx5+stf/qKWLVvW5xB1FhQUpPj4eG3dulXDhw+X9P030tatWzVt2rQa90lMTNTWrVv1wAMPuMa2bNmixMRESVKnTp0UFRWlrVu3ukIoh8OhnTt36re//e1552K322W326uN+/n5Wfob2mazWX4NQFNF/wLWRf8C1kX/AtZF/3pWba9rvUKppUuX6quvvlJ0dLQ6dOig5s2bu23PzMysz2F/VHJysiZMmKC+ffuqX79+Wrx4sU6fPq1JkyZJksaPH6927dopNTVVkjRz5kwNHDhQzz77rG666SatWbNGe/bs0auvvirp+2/CBx54QE888YS6deumTp066dFHH1V0dLQr+AIAAAAAAEDDq1co5avA5s4771RBQYEWLFig3Nxc9e7dW2lpaa4HlR89etQtjRswYIDefPNNPfLII5o3b566deumDRs26Morr3TV/O53v9Pp06c1ZcoUFRUV6Re/+IXS0tJqfasZAAAAAAAA6s5mjDF12eHs2bN68skndffdd6t9+/aempelOBwOhYWFqbi42NLPlMrPz1ebNm24fRGwGPoXsC76F7Au+hewLvrX82qbk9T56gcEBOiZZ57R2bNnL2qCAAAAAAAAaLrqFQlef/31+vjjjxt6LgAAAAAAAGgi6vVMqV/+8peaM2eOvvzyS8XHx1d70Pmtt97aIJMDAAAAAABA41SvUOr++++XJD333HPVttlsNlVVVV3crAAAAAAAANCo1SuUcjqdDT0PAAAAAAAANCF1eqbUr371KxUXF7teP/XUUyoqKnK9PnnypHr06NFgkwMAAAAAAEDjVKdQ6r333lN5ebnr9ZNPPqnCwkLX67NnzyonJ6fh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Xnr77bfd9t+3b59uvvlmhYaGqkWLFrrmmmv09ddfu/Z//PHH1b59e9ntdvXu3VtpaWmufQ8fPiybzab169dr0KBBuuSSS9SrVy+lp6e7nWPFihWKjY3VJZdcottuu00nT5502/75559r0KBBatGihUJDQxUfH689e/a4tt9yyy3as2ePa14AAKBxIpQCAACoozfeeEOtW7fWrl27NH36dP32t7/VHXfcoQEDBigzM1M33nijxo0bp9LSUklSUVGRrr/+evXp00d79uxRWlqa8vLyNGrUqPOe44svvlBxcbH69u3rGtuzZ49mzJihxx9/XDk5OUpLS9O1117r2p6amqqVK1dq2bJl2rdvn2bNmqVf//rX+vjjjyVJx44d07XXXiu73a5t27YpIyNDd999t86ePStJWrJkiZ599ln98Y9/1BdffKEhQ4bo1ltv1cGDB93mNn/+fM2ePVtZWVm67LLLNGbMGNcxdu7cqcmTJ2vatGnKysrSoEGD9MQTT7jtP3bsWLVv3167d+9WRkaG5syZo8DAQNf22NhYRUZGavv27fX54wEAABZhM8YYX08CAADA11asWKEHHnhARUVFbuMTJ05UUVGRNmzYIOn7O6WqqqpcgUlVVZXCwsJ0++23a+XKlZKk3NxctW3bVunp6erfv7+eeOIJbd++Xe+9957ruN9++61iYmKUk5Ojyy67rNp8NmzYoJEjR6qyslI2m02StH79ek2aNEnffvutWrRo4VZfXl6uli1b6oMPPlBiYqJr/J577lFpaanefPNNzZs3T2vWrFFOTo5bCHROu3btNHXqVM2bN8811q9fP1199dV66aWXdPjwYXXq1Emvv/66Jk+eLEnav3+/rrjiCmVnZ6t79+666667VFxcrE2bNrmOMXr0aKWlpbmubWhoqF588UVNmDDhvH8eV111lYYNG6aUlJTz1gAAAGvjTikAAIA6+tnPfub6vb+/v1q1aqWePXu6xiIjIyVJ+fn5kr5/u9qHH37oekZVSEiIunfvLknnfYvamTNnZLfbXYGUJN1www3q0KGDOnfurHHjxmn16tWuu7G++uorlZaW6oYbbnA7z8qVK13nyMrK0jXXXFNjIOVwOHT8+HH9/Oc/dxv/+c9/ruzs7POuv23btm5rzc7OVkJCglv9/4ZkkpScnKx77rlHSUlJeuqpp2q8Bs2aNXOtDQAANE486BwAAKCOfhjq2Gw2t7FzQZLT6ZQknTp1SrfccosWLVpU7VjnQp0fat26tUpLS1VRUaGgoCBJUosWLZSZmamPPvpI77//vhYsWKDHHntMu3fv1qlTpyRJmzZtUrt27dyOZbfbJX0f9DSEC621Nh577DHddddd2rRpkzZv3qyUlBStWbNGt912m6umsLBQERERDTJfAADw08SdUgAAAB521VVXad++ferYsaO6du3q9tW8efMa9+ndu7ek798e978CAgKUlJSkp59+Wl988YUOHz6sbdu2qUePHrLb7Tp69Gi1c8TExEj6/g6n7du3q7Kystr5QkNDFR0drU8++cRt/JNPPlGPHj1qvda4uDjt3LnTbezTTz+tVnfZZZdp1qxZev/993X77bdr+fLlrm1lZWX6+uuv1adPn1qfFwAAWA+hFAAAgIdNnTpVhYWFGjNmjHbv3q2vv/5a7733niZNmqSqqqoa94mIiNBVV12lf//7366xjRs36oUXXlBWVpaOHDmilStXyul06vLLL1eLFi00e/ZszZo1S2+88Ya+/vprZWZm6sUXX9Qbb7whSZo2bZocDodGjx6tPXv26ODBg/rLX/6inJwcSdJDDz2kRYsWae3atcrJydGcOXOUlZWlmTNn1nqtM2bMUFpamv74xz/q4MGDWrp0qdsn+J05c0bTpk3TRx99pCNHjuiTTz7R7t27FRcX56r59NNPZbfbq73tDwAANC6EUgAAAB527g6kqqoq3XjjjerZs6ceeOABhYeHy8/v/P8du+eee7R69WrX6/DwcK1fv17XX3+94uLitGzZMr311lu64oorJEm///3v9eijjyo1NVVxcXEaOnSoNm3apE6dOkmSWrVqpW3btunUqVMaOHCg4uPj9dprr7nejjdjxgwlJyfrwQcfVM+ePZWWlqZ//OMf6tatW63X2r9/f7322mtasmSJevXqpffff1+PPPKIa7u/v79Onjyp8ePH67LLLtOoUaP0y1/+UgsXLnTVvPXWWxo7dqwuueSSWp8XAABYD5++BwAA8BN15swZXX755Vq7dm2TuWvoxIkTuvzyy7Vnzx5XmAYAABon7pQCAAD4iWrWrJlWrlypEydO+HoqXnP48GG9/PLLBFIAADQB3CkFAAAAAAAAr+NOKQAAAAAAAHgdoRQAAAAAAAC8jlAKAAAAAAAAXkcoBQAAAAAAAK8jlAIAAAAAAIDXEUoBAAAAAADA6wilAAAAAAAA4HWEUgAAAAAAAPA6QikAAAAAAAB4HaEUAAAAAAAAvO7/AUl+EaBApLUaAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "โœ“ Plot saved to: c:\\Users\\orani\\bilel\\git_projects\\robert_manzke\\project1\\trys\\costume_p4code_binary\\P4-JIT\\notebooks\\tutorials\\t01_introduction\\source\\signal_processing.png\n" ] } ], "source": [ "try:\n", " import matplotlib.pyplot as plt\n", " \n", " # Plot first 1000 samples\n", " n_plot = 1000\n", " t_plot = t[:n_plot]\n", " \n", " fig, (ax1, ax2, ax3) = plt.subplots(3, 1, figsize=(12, 8))\n", " \n", " # Input signal\n", " ax1.plot(t_plot, input_signal[:n_plot], 'b-', linewidth=0.5, label='Input')\n", " ax1.set_ylabel('Amplitude')\n", " ax1.set_title('Input Signal (440 Hz Sine Wave)')\n", " ax1.grid(True, alpha=0.3)\n", " ax1.legend()\n", " \n", " # Output signal\n", " ax2.plot(t_plot, output_signal[:n_plot], 'r-', linewidth=0.5, label=f'Output (Gain={gain})')\n", " ax2.set_ylabel('Amplitude')\n", " ax2.set_title('Output Signal (After ESP32-P4 Processing)')\n", " ax2.grid(True, alpha=0.3)\n", " ax2.legend()\n", " \n", " # Error plot\n", " error = output_signal[:n_plot] - expected[:n_plot]\n", " ax3.plot(t_plot, error, 'g-', linewidth=0.5, label='Error')\n", " ax3.set_xlabel('Time (seconds)')\n", " ax3.set_ylabel('Error')\n", " ax3.set_title(f'Processing Error (Max: {max_error:.9f})')\n", " ax3.grid(True, alpha=0.3)\n", " ax3.legend()\n", " \n", " plt.tight_layout()\n", " plot_path = SOURCE_DIR / 'signal_processing.png'\n", " plt.savefig(plot_path, dpi=150)\n", " plt.show()\n", " \n", " print(f\"โœ“ Plot saved to: {plot_path}\")\n", " \n", "except ImportError:\n", " print(\"matplotlib not available - skipping visualization\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 13. Cleanup Resources" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "============================================================\n", "CLEANUP\n", "============================================================\n", "โœ“ Function resources freed\n", "โœ“ Memory reclaimed: 0.70 KB\n", "05:22:07 [p4jit.runtime.device_manager] \u001b[94mINFO\u001b[0m: Disconnecting COM6...\n", "05:22:07 [p4jit.runtime.device_manager] \u001b[94mINFO\u001b[0m: Disconnected.\n", "โœ“ Device disconnected\n", "\n", "Final SPIRAM Free: 29 MB\n", "============================================================\n", "\n", "============================================================\n", "โœ“ TUTORIAL COMPLETE\n", "============================================================\n" ] } ], "source": [ "print(\"\\n\" + \"=\"*60)\n", "print(\"CLEANUP\")\n", "print(\"=\"*60)\n", "\n", "# Free function resources (code + args buffers)\n", "func.free()\n", "print(\"โœ“ Function resources freed\")\n", "\n", "# Verify memory reclaimed\n", "stats_final = jit.get_heap_stats(print_s=False)\n", "spiram_reclaimed = (stats_final['free_spiram'] - stats_after['free_spiram']) / 1024\n", "print(f\"โœ“ Memory reclaimed: {spiram_reclaimed:.2f} KB\")\n", "\n", "# Disconnect from device\n", "jit.session.device.disconnect()\n", "print(\"โœ“ Device disconnected\")\n", "\n", "print(f\"\\nFinal SPIRAM Free: {stats_final['free_spiram']//1024//1024} MB\")\n", "print(\"=\"*60)\n", "\n", "print(\"\\n\" + \"=\"*60)\n", "print(\"โœ“ TUTORIAL COMPLETE\")\n", "print(\"=\"*60)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "\n", "## Summary: What We Demonstrated\n", "\n", "### Core Features:\n", "1. **Multi-file compilation**: Automatic discovery of C + Assembly files\n", "2. **Automatic wrapper generation**: Memory-mapped I/O argument passing\n", "3. **NumPy integration**: Seamless host โ†” device data transfer\n", "4. **Cycle-accurate measurement**: Native RISC-V `rdcycle` instruction\n", "5. **Firmware symbol linking**: JIT code calls printf, malloc, free, etc.\n", "6. **Native execution**: Zero interpreter overhead\n", "7. **Real-time performance**: ~5 cycles/sample for vector operations\n", "\n", "### Firmware Symbol Resolution:\n", "When `use_firmware_elf=True`, the JIT linker:\n", "- Reads symbol table from firmware ELF file\n", "- Resolves undefined symbols (printf, malloc, etc.)\n", "- Links JIT code against firmware functions\n", "- Enables calling ANY firmware API without reimplementation\n", "\n", "**Demonstrated with printf:**\n", "- Printed array size (48000 samples)\n", "- Printed buffer addresses\n", "- Printed gain factor\n", "- Printed performance metrics\n", "\n", "### Information Available:\n", "- **Binary sections**: .text, .rodata, .data, .bss\n", "- **Symbol table**: All functions with addresses and sizes\n", "- **Memory layout**: Visual map with alignment\n", "- **Function metadata**: Complete signature with types\n", "- **Generated code**: Wrapper (temp.c) and headers\n", "- **Disassembly**: Annotated with source code\n", "- **Heap statistics**: Real-time memory usage\n", "\n", "### Performance Results:\n", "- **Throughput**: ~73M samples/second\n", "- **Efficiency**: ~5 cycles/sample\n", "- **Latency**: Sub-millisecond for 48K samples\n", "- **Accuracy**: Floating-point precision maintained\n", "\n", "---\n", "\n", "**Next Steps:**\n", "- Try different optimizations (-O2, -O3, -Os)\n", "- Implement complex DSP algorithms (filters, FFT)\n", "- Compare C vs Assembly performance\n", "- Use more firmware symbols (malloc, snprintf, FreeRTOS)\n", "- Build multi-stage processing pipelines" ] } ], "metadata": { "kernelspec": { "display_name": "env_dl", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.21" } }, "nbformat": 4, "nbformat_minor": 4 }