From af853eb40c19ff47c2bf5ee733da77010d0163b4 Mon Sep 17 00:00:00 2001 From: Semen Shalnev <85073445+semayellow@users.noreply.github.com> Date: Fri, 17 Apr 2026 15:09:14 +0300 Subject: [PATCH] feat(general): migrate to anyrun-sdk, add ti lookup analyzer --- analyzers/AnyRun/AnyRun_Sandbox_Analysis.json | 151 ------ .../AnyRun/AnyRun_Sandbox_File_Android.json | 180 +++++++ .../AnyRun/AnyRun_Sandbox_File_Linux.json | 212 ++++++++ .../AnyRun/AnyRun_Sandbox_File_Windows.json | 236 +++++++++ .../AnyRun/AnyRun_Sandbox_URL_Android.json | 179 +++++++ .../AnyRun/AnyRun_Sandbox_URL_Linux.json | 204 ++++++++ .../AnyRun/AnyRun_Sandbox_URL_Windows.json | 212 ++++++++ analyzers/AnyRun/AnyRun_TI_Lookup.json | 69 +++ analyzers/AnyRun/Dockerfile | 10 + analyzers/AnyRun/README.md | 303 ++++++++++-- analyzers/AnyRun/anyrun_analyzer.py | 452 ++++++++++++------ analyzers/AnyRun/assets/ANYRUN_API_TOKEN.png | Bin 0 -> 636516 bytes analyzers/AnyRun/assets/AnyRun.png | Bin 13338 -> 2906 bytes analyzers/AnyRun/assets/long_report.png | Bin 74633 -> 0 bytes .../AnyRun/assets/long_report_sandbox.png | Bin 0 -> 117644 bytes .../AnyRun/assets/long_report_ti_lookup.png | Bin 0 -> 130065 bytes analyzers/AnyRun/assets/short_report.png | Bin 22078 -> 0 bytes analyzers/AnyRun/requirements.txt | 1 + analyzers/AnyRun/tools.py | 66 +++ .../AnyRun_Sandbox_Analysis_1_0/long.html | 132 ----- .../AnyRun_Sandbox_Analysis_1_0/short.html | 3 - .../AnyRun_Sandbox_File_Android_1_0/long.html | 236 +++++++++ .../AnyRun_Sandbox_File_Linux_1_0/long.html | 236 +++++++++ .../AnyRun_Sandbox_File_Windows_1_0/long.html | 236 +++++++++ .../AnyRun_Sandbox_URL_Android_1_0/long.html | 236 +++++++++ .../AnyRun_Sandbox_URL_Linux_1_0/long.html | 236 +++++++++ .../AnyRun_Sandbox_URL_Windows_1_0/long.html | 236 +++++++++ .../AnyRun_TI_Lookup_1_0/long.html | 268 +++++++++++ 28 files changed, 3642 insertions(+), 452 deletions(-) delete mode 100644 analyzers/AnyRun/AnyRun_Sandbox_Analysis.json create mode 100644 analyzers/AnyRun/AnyRun_Sandbox_File_Android.json create mode 100644 analyzers/AnyRun/AnyRun_Sandbox_File_Linux.json create mode 100644 analyzers/AnyRun/AnyRun_Sandbox_File_Windows.json create mode 100644 analyzers/AnyRun/AnyRun_Sandbox_URL_Android.json create mode 100644 analyzers/AnyRun/AnyRun_Sandbox_URL_Linux.json create mode 100644 analyzers/AnyRun/AnyRun_Sandbox_URL_Windows.json create mode 100644 analyzers/AnyRun/AnyRun_TI_Lookup.json create mode 100644 analyzers/AnyRun/Dockerfile create mode 100644 analyzers/AnyRun/assets/ANYRUN_API_TOKEN.png delete mode 100644 analyzers/AnyRun/assets/long_report.png create mode 100644 analyzers/AnyRun/assets/long_report_sandbox.png create mode 100644 analyzers/AnyRun/assets/long_report_ti_lookup.png delete mode 100644 analyzers/AnyRun/assets/short_report.png create mode 100644 analyzers/AnyRun/tools.py delete mode 100644 thehive-templates/AnyRun_Sandbox_Analysis_1_0/long.html delete mode 100644 thehive-templates/AnyRun_Sandbox_Analysis_1_0/short.html create mode 100644 thehive-templates/AnyRun_Sandbox_File_Android_1_0/long.html create mode 100644 thehive-templates/AnyRun_Sandbox_File_Linux_1_0/long.html create mode 100644 thehive-templates/AnyRun_Sandbox_File_Windows_1_0/long.html create mode 100644 thehive-templates/AnyRun_Sandbox_URL_Android_1_0/long.html create mode 100644 thehive-templates/AnyRun_Sandbox_URL_Linux_1_0/long.html create mode 100644 thehive-templates/AnyRun_Sandbox_URL_Windows_1_0/long.html create mode 100644 thehive-templates/AnyRun_TI_Lookup_1_0/long.html diff --git a/analyzers/AnyRun/AnyRun_Sandbox_Analysis.json b/analyzers/AnyRun/AnyRun_Sandbox_Analysis.json deleted file mode 100644 index f1a2a3e76..000000000 --- a/analyzers/AnyRun/AnyRun_Sandbox_Analysis.json +++ /dev/null @@ -1,151 +0,0 @@ -{ - "name": "AnyRun_Sandbox_Analysis", - "version": "1.1", - "author": "Andrea Garavaglia, Davide Arcuri, LDO-CERT; Nate Olsen, WSECU", - "url": "https://github.com/TheHive-Project/Cortex-Analyzers", - "license": "AGPL-V3", - "description": "Any.Run Sandbox file analysis", - "dataTypeList": ["file", "url"], - "command": "AnyRun/anyrun_analyzer.py", - "baseConfig": "AnyRun", - "configurationItems": [ - { - "name": "token", - "description": "API token", - "type": "string", - "multi": false, - "required": false - }, - { - "name": "privacy_type", - "description": "Define the privacy setting (Allowed values: public, bylink, owner)", - "type": "string", - "multi": false, - "required": true, - "defaultValue": "bylink" - }, - { - "name": "verify_ssl", - "description": "Verify SSL certificate", - "type": "boolean", - "multi": false, - "required": true, - "defaultValue": true - }, - { - "name": "env_bitness", - "description": "default OS bitness; 32 or 64", - "type": "number", - "multi": false, - "required": false, - "defaultValue": 32 - }, - { - "name": "env_version", - "description": "Which version of Windows do you want to use by default? allowed values: \"vista\", \"7\", \"8.1\", \"10\"", - "type": "string", - "multi": false, - "required": false, - "defaultValue": "7" - }, - { - "name": "env_type", - "description": "How much do you want pre-installed in the runtime environment? allowed values: \"clean\", \"office\", \"complete\"", - "type": "string", - "multi": false, - "required": false, - "defaultValue": "complete" - }, - { - "name": "opt_network_connect", - "description": "Do you want to disable networking? set false to disable", - "type": "boolean", - "multi": false, - "required": false, - "defaultValue": true - }, - { - "name": "opt_network_fakenet", - "description": "FakeNet feature status; set true to enable.", - "type": "boolean", - "multi": false, - "required": false, - "defaultValue": false - }, - { - "name": "opt_network_tor", - "description": "TOR using.", - "type": "Boolean", - "multi": false, - "required": false, - "defaultValue": false - }, - { - "name": "opt_network_mitm", - "description": "HTTPS MITM proxy option.", - "type": "Boolean", - "multi": false, - "required": false, - "defaultValue": false - }, - { - "name": "opt_network_geo", - "description": "Geo location option. Allowed values: \"fastest\", \"AU\", \"BR\", \"DE\", \"CH\", \"FR\", \"KR\", \"US\", \"RU\", \"GB\", \"IT\"", - "type": "String", - "multi": false, - "required": false, - "defaultValue": "fastest" - }, - { - "name": "opt_kernel_heavyevasion", - "description": "Heavy evasion option. Default value: false", - "type": "Boolean", - "multi": false, - "required": false, - "defaultValue": false - }, - { - "name": "opt_timeout", - "description": "Timeout option. Size range: 10-660", - "type": "Number", - "multi": false, - "required": false, - "defaultValue": "60" - }, - { - "name": "obj_ext_startfolder", - "description": "Start object from. Allowed values: \"desktop\", \"home\", \"downloads\", \"appdata\", \"temp\", \"windows\", \"root\"", - "type": "String", - "multi": false, - "required": false, - "defaultValue": "temp" - }, - { - "name": "obj_ext_browser", - "description": "Choose which browser to use. Allowed values: \"Google Chrome\", \"Mozilla Firefox\", \"Opera\", \"Internet Explorer\"", - "type": "String", - "multi": false, - "required": false, - "defaultValue": "Internet Explorer" - } - ], - "registration_required": true, - "subscription_required": true, - "free_subscription": false, - "service_homepage": "https://any.run/", - "service_logo": { - "path": "assets/anyrun.png", - "caption": "AnyRun logo" - }, - "screenshots": [ - { - "path": "assets/short_report.png", - "caption": "AnyRun: Short report template" - }, - - { - "path": "assets/long_report.png", - "caption": "AnyRun: Long report template" - } - ] -} diff --git a/analyzers/AnyRun/AnyRun_Sandbox_File_Android.json b/analyzers/AnyRun/AnyRun_Sandbox_File_Android.json new file mode 100644 index 000000000..ee6ac124f --- /dev/null +++ b/analyzers/AnyRun/AnyRun_Sandbox_File_Android.json @@ -0,0 +1,180 @@ +{ + "name": "AnyRun_Sandbox_File_Android", + "version": "1.0", + "author": "ANY.RUN Integrations Team", + "url": "https://github.com/TheHive-Project/Cortex-Analyzers", + "license": "AGPL-V3", + "description": "Run File analysis using Android VM", + "dataTypeList": ["file"], + "command": "AnyRun/anyrun_analyzer.py", + "baseConfig": "AnyRun", + "config": { + "os": "android", + "analysis_type": "file" + }, + "configurationItems": [ + { + "name": "api_key", + "description": "ANY.RUN Sandbox API key", + "type": "string", + "multi": false, + "required": true + }, + { + "name": "verify_ssl", + "description": "Verify SSL certificate", + "type": "boolean", + "multi": false, + "required": true, + "defaultValue": true + }, + { + "name": "get_html_report", + "description": "Attach HTML report to the case as observable", + "type": "boolean", + "multi": false, + "required": true, + "defaultValue": true + }, + { + "name": "get_iocs", + "description": "Attach Analysis IOCs to the case as observables", + "type": "boolean", + "multi": false, + "required": true, + "defaultValue": true + }, + { + "name": "extract_malicious_iocs", + "description": "When enabled, extracts only Suspicious and Malicious IOCs. When disabled, extracts all IOCs", + "type": "boolean", + "multi": false, + "required": true, + "defaultValue": true + }, + { + "name": "get_network_traffic_dump", + "description": "Attach PCAP file to the case as observable", + "type": "boolean", + "multi": false, + "required": true, + "defaultValue": true + }, + { + "name": "env_locale", + "description": "Operation System language. Use locale identifier or country name Example - ( \"en-US\" or \"Brazil\"). Case insensitive", + "type": "string", + "multi": false, + "required": false, + "defaultValue": "en-US" + }, + { + "name": "opt_network_connect", + "description": "Network connection state", + "type": "Boolean", + "multi": false, + "required": false, + "defaultValue": true + }, + { + "name": "opt_network_fakenet", + "description": "FakeNet feature status", + "type": "Boolean", + "multi": false, + "required": false, + "defaultValue": false + }, + { + "name": "opt_network_tor", + "description": "TOR using", + "type": "Boolean", + "multi": false, + "required": false, + "defaultValue": false + }, + { + "name": "opt_network_geo", + "description": "TOR geo location option", + "type": "string", + "multi": false, + "required": false, + "defaultValue": "fastest" + }, + { + "name": "opt_network_mitm", + "description": "HTTPS MITM proxy option", + "type": "Boolean", + "multi": false, + "required": false, + "defaultValue": false + }, + { + "name": "opt_network_residential_proxy", + "description": "Residential Proxy option", + "type": "Boolean", + "multi": false, + "required": false, + "defaultValue": false + }, + { + "name": "opt_network_residential_proxy_geo", + "description": "Residential Proxy Geo option", + "type": "string", + "multi": false, + "required": false, + "defaultValue": "fastest" + }, + { + "name": "opt_privacy_type", + "description": "Privacy settings. Supports: public, bylink, owner, byteam", + "type": "string", + "multi": false, + "required": false, + "defaultValue": "bylink" + }, + { + "name": "opt_timeout", + "description": "Timeout option, size range 10-660", + "type": "Number", + "multi": false, + "required": false, + "defaultValue": "240" + }, + { + "name": "opt_auto_delete_after", + "description": "Specify after what period of time this report should be deleted. Supports: day, week, 2 weeks, month. Leave blank for the task's infinite lifetime", + "type": "string", + "multi": false, + "required": false + }, + { + "name": "obj_ext_cmd", + "description": "Optional command line", + "type": "string", + "multi": false, + "required": false, + "defaultValue": "" + }, + { + "name": "user_tags", + "description": "Append User Tags to new analysis. Only characters a-z, A-Z, 0-9, hyphen (-), and comma (,) are allowed. Max tag length - 16 characters. Max unique tags per analysis - 8", + "type": "string", + "multi": false, + "required": false + } + ], + "registration_required": true, + "subscription_required": true, + "free_subscription": false, + "service_homepage": "https://any.run/", + "service_logo": { + "path": "assets/anyrun.png", + "caption": "AnyRun logo" + }, + "screenshots": [ + { + "path": "assets/long_report.png", + "caption": "AnyRun: Long report template" + } + ] +} diff --git a/analyzers/AnyRun/AnyRun_Sandbox_File_Linux.json b/analyzers/AnyRun/AnyRun_Sandbox_File_Linux.json new file mode 100644 index 000000000..3771133a8 --- /dev/null +++ b/analyzers/AnyRun/AnyRun_Sandbox_File_Linux.json @@ -0,0 +1,212 @@ +{ + "name": "AnyRun_Sandbox_File_Linux", + "version": "1.0", + "author": "ANY.RUN Integrations Team", + "url": "https://github.com/TheHive-Project/Cortex-Analyzers", + "license": "AGPL-V3", + "description": "Run File analysis using Linux VM", + "dataTypeList": ["file"], + "command": "AnyRun/anyrun_analyzer.py", + "baseConfig": "AnyRun", + "config": { + "os": "linux", + "analysis_type": "file" + }, + "configurationItems": [ + { + "name": "api_key", + "description": "ANY.RUN Sandbox API key", + "type": "string", + "multi": false, + "required": true + }, + { + "name": "verify_ssl", + "description": "Verify SSL certificate", + "type": "boolean", + "multi": false, + "required": true, + "defaultValue": true + }, + { + "name": "get_html_report", + "description": "Attach HTML report to the case as observable", + "type": "boolean", + "multi": false, + "required": true, + "defaultValue": true + }, + { + "name": "get_iocs", + "description": "Attach Analysis IOCs to the case as observables", + "type": "boolean", + "multi": false, + "required": true, + "defaultValue": true + }, + { + "name": "extract_malicious_iocs", + "description": "When enabled, extracts only Suspicious and Malicious IOCs. When disabled, extracts all IOCs", + "type": "boolean", + "multi": false, + "required": true, + "defaultValue": true + }, + { + "name": "get_network_traffic_dump", + "description": "Attach PCAP file to the case as observable", + "type": "boolean", + "multi": false, + "required": true, + "defaultValue": true + }, + { + "name": "env_os", + "description": "Operation System. Supports ubuntu, debian", + "type": "string", + "multi": false, + "required": false, + "defaultValue": "ubuntu" + }, + { + "name": "env_locale", + "description": "Operation System language. Use locale identifier or country name Example - ( \"en-US\" or \"Brazil\"). Case insensitive", + "type": "string", + "multi": false, + "required": false, + "defaultValue": "en-US" + }, + { + "name": "opt_network_connect", + "description": "Network connection state", + "type": "Boolean", + "multi": false, + "required": false, + "defaultValue": true + }, + { + "name": "opt_network_fakenet", + "description": "FakeNet feature status", + "type": "Boolean", + "multi": false, + "required": false, + "defaultValue": false + }, + { + "name": "opt_network_tor", + "description": "TOR using", + "type": "Boolean", + "multi": false, + "required": false, + "defaultValue": false + }, + { + "name": "opt_network_geo", + "description": "TOR geo location option", + "type": "string", + "multi": false, + "required": false, + "defaultValue": "fastest" + }, + { + "name": "opt_network_mitm", + "description": "HTTPS MITM proxy option", + "type": "Boolean", + "multi": false, + "required": false, + "defaultValue": false + }, + { + "name": "opt_network_residential_proxy", + "description": "Residential Proxy option", + "type": "Boolean", + "multi": false, + "required": false, + "defaultValue": false + }, + { + "name": "opt_network_residential_proxy_geo", + "description": "Residential Proxy Geo option", + "type": "string", + "multi": false, + "required": false, + "defaultValue": "fastest" + }, + { + "name": "opt_privacy_type", + "description": "Privacy settings. Supports: public, bylink, owner, byteam", + "type": "string", + "multi": false, + "required": false, + "defaultValue": "bylink" + }, + { + "name": "opt_timeout", + "description": "Timeout option, size range 10-660", + "type": "Number", + "multi": false, + "required": false, + "defaultValue": "240" + }, + { + "name": "opt_auto_delete_after", + "description": "Specify after what period of time this report should be deleted. Supports: day, week, 2 weeks, month. Leave blank for the task's infinite lifetime", + "type": "string", + "multi": false, + "required": false + }, + { + "name": "obj_ext_extension", + "description": "Automatically change extension to valid", + "type": "Boolean", + "multi": false, + "required": false, + "defaultValue": true + }, + { + "name": "obj_ext_cmd", + "description": "Optional command line", + "type": "string", + "multi": false, + "required": false, + "defaultValue": "" + }, + { + "name": "obj_ext_startfolder", + "description": "Start object from. Supports: desktop, home, downloads, temp", + "type": "string", + "multi": false, + "required": false, + "defaultValue": "temp" + }, + { + "name": "run_as_root", + "description": "Run file with superuser privileges", + "type": "Boolean", + "multi": false, + "required": false, + "defaultValue": true + }, + { + "name": "user_tags", + "description": "Append User Tags to new analysis. Only characters a-z, A-Z, 0-9, hyphen (-), and comma (,) are allowed. Max tag length - 16 characters. Max unique tags per analysis - 8", + "type": "string", + "multi": false, + "required": false + } + ], + "registration_required": true, + "subscription_required": true, + "free_subscription": false, + "service_homepage": "https://any.run/", + "service_logo": { + "path": "assets/anyrun.png", + "caption": "AnyRun logo" + }, + "screenshots": [ + { + "path": "assets/long_report.png", + "caption": "AnyRun: Long report template" + } + ] +} diff --git a/analyzers/AnyRun/AnyRun_Sandbox_File_Windows.json b/analyzers/AnyRun/AnyRun_Sandbox_File_Windows.json new file mode 100644 index 000000000..1e1d8aadf --- /dev/null +++ b/analyzers/AnyRun/AnyRun_Sandbox_File_Windows.json @@ -0,0 +1,236 @@ +{ + "name": "AnyRun_Sandbox_File_Windows", + "version": "1.0", + "author": "ANY.RUN Integrations Team", + "url": "https://github.com/TheHive-Project/Cortex-Analyzers", + "license": "AGPL-V3", + "description": "Run File analysis using Windows VM", + "dataTypeList": ["file"], + "command": "AnyRun/anyrun_analyzer.py", + "baseConfig": "AnyRun", + "config": { + "os": "windows", + "analysis_type": "file" + }, + "configurationItems": [ + { + "name": "api_key", + "description": "ANY.RUN Sandbox API key", + "type": "string", + "multi": false, + "required": true + }, + { + "name": "verify_ssl", + "description": "Verify SSL certificate", + "type": "boolean", + "multi": false, + "required": true, + "defaultValue": true + }, + { + "name": "get_html_report", + "description": "Attach HTML report to the case as observable", + "type": "boolean", + "multi": false, + "required": true, + "defaultValue": true + }, + { + "name": "get_network_traffic_dump", + "description": "Attach PCAP file to the case as observable", + "type": "boolean", + "multi": false, + "required": true, + "defaultValue": true + }, + { + "name": "get_iocs", + "description": "Attach Analysis IOCs to the case as observables", + "type": "boolean", + "multi": false, + "required": true, + "defaultValue": true + }, + { + "name": "extract_malicious_iocs", + "description": "When enabled, extracts only Suspicious and Malicious IOCs. When disabled, extracts all IOCs", + "type": "boolean", + "multi": false, + "required": true, + "defaultValue": true + }, + { + "name": "env_version", + "description": "Version of OS. Supports: 7, 10, 11, server 2025", + "type": "string", + "multi": false, + "required": false, + "defaultValue": "10" + }, + { + "name": "env_bitness", + "description": "Bitness of Operation System. Supports 32, 64 for Windows. 64 for Windows Server 2025", + "type": "Number", + "multi": false, + "required": false, + "defaultValue": 64 + }, + { + "name": "env_type", + "description": "Environment preset type. You can select **development** env for OS Windows 10 x64. For all other cases, **complete** env is required", + "type": "string", + "multi": false, + "required": false, + "defaultValue": "complete" + }, + { + "name": "env_locale", + "description": "Operation System language. Use locale identifier or country name Example - ( \"en-US\" or \"Brazil\"). Case insensitive", + "type": "string", + "multi": false, + "required": false, + "defaultValue": "en-US" + }, + { + "name": "opt_network_connect", + "description": "Network connection state", + "type": "Boolean", + "multi": false, + "required": false, + "defaultValue": true + }, + { + "name": "opt_network_fakenet", + "description": "FakeNet feature status", + "type": "Boolean", + "multi": false, + "required": false, + "defaultValue": false + }, + { + "name": "opt_network_tor", + "description": "TOR using", + "type": "Boolean", + "multi": false, + "required": false, + "defaultValue": false + }, + { + "name": "opt_network_geo", + "description": "TOR geo location option", + "type": "string", + "multi": false, + "required": false, + "defaultValue": "fastest" + }, + { + "name": "opt_network_mitm", + "description": "HTTPS MITM proxy option", + "type": "Boolean", + "multi": false, + "required": false, + "defaultValue": false + }, + { + "name": "opt_network_residential_proxy", + "description": "Residential Proxy option", + "type": "Boolean", + "multi": false, + "required": false, + "defaultValue": false + }, + { + "name": "opt_network_residential_proxy_geo", + "description": "Residential Proxy Geo option", + "type": "string", + "multi": false, + "required": false, + "defaultValue": "fastest" + }, + { + "name": "opt_privacy_type", + "description": "Privacy settings. Supports: public, bylink, owner, byteam", + "type": "string", + "multi": false, + "required": false, + "defaultValue": "bylink" + }, + { + "name": "opt_timeout", + "description": "Timeout option, size range 10-660", + "type": "Number", + "multi": false, + "required": false, + "defaultValue": "240" + }, + { + "name": "opt_auto_delete_after", + "description": "Specify after what period of time this report should be deleted. Supports: day, week, 2 weeks, month. Leave blank for the task's infinite lifetime", + "type": "string", + "multi": false, + "required": false + }, + { + "name": "obj_ext_extension", + "description": "Automatically change extension to valid", + "type": "Boolean", + "multi": false, + "required": false, + "defaultValue": true + }, + { + "name": "obj_ext_cmd", + "description": "Optional command line", + "type": "string", + "multi": false, + "required": false, + "defaultValue": "" + }, + { + "name": "obj_ext_startfolder", + "description": "Start object from. Supports: desktop, home, downloads, appdata, temp, windows, root", + "type": "string", + "multi": false, + "required": false, + "defaultValue": "temp" + }, + { + "name": "obj_force_elevation", + "description": "Forces the file to execute with elevated privileges and an elevated token (for PE32, PE32+, PE64 files only)", + "type": "Boolean", + "multi": false, + "required": false, + "defaultValue": true + }, + { + "name": "auto_confirm_uac", + "description": "Auto confirm Windows UAC requests", + "type": "Boolean", + "multi": false, + "required": false, + "defaultValue": true + }, + { + "name": "user_tags", + "description": "Append User Tags to new analysis. Only characters a-z, A-Z, 0-9, hyphen (-), and comma (,) are allowed. Max tag length - 16 characters. Max unique tags per analysis - 8", + "type": "string", + "multi": false, + "required": false + } + ], + "registration_required": true, + "subscription_required": true, + "free_subscription": false, + "service_homepage": "https://any.run/", + "service_logo": { + "path": "assets/anyrun.png", + "caption": "AnyRun logo" + }, + "screenshots": [ + { + "path": "assets/long_report.png", + "caption": "AnyRun: Long report template" + } + ] +} diff --git a/analyzers/AnyRun/AnyRun_Sandbox_URL_Android.json b/analyzers/AnyRun/AnyRun_Sandbox_URL_Android.json new file mode 100644 index 000000000..c305190b7 --- /dev/null +++ b/analyzers/AnyRun/AnyRun_Sandbox_URL_Android.json @@ -0,0 +1,179 @@ +{ + "name": "AnyRun_Sandbox_URL_Android", + "version": "1.0", + "author": "ANY.RUN Integrations Team", + "url": "https://github.com/TheHive-Project/Cortex-Analyzers", + "license": "AGPL-V3", + "description": "Run URL analysis using Android VM", + "dataTypeList": ["url"], + "command": "AnyRun/anyrun_analyzer.py", + "baseConfig": "AnyRun", + "config": { + "os": "android", + "analysis_type": "url" + }, + "configurationItems": [ + { + "name": "api_key", + "description": "ANY.RUN Sandbox API key", + "type": "string", + "multi": false, + "required": true + }, + { + "name": "verify_ssl", + "description": "Verify SSL certificate", + "type": "boolean", + "multi": false, + "required": true, + "defaultValue": true + }, + { + "name": "get_html_report", + "description": "Attach HTML report to the case as observable", + "type": "boolean", + "multi": false, + "required": true, + "defaultValue": true + }, + { + "name": "get_network_traffic_dump", + "description": "Attach PCAP file to the case as observable", + "type": "boolean", + "multi": false, + "required": true, + "defaultValue": true + }, + { + "name": "get_iocs", + "description": "Attach Analysis IOCs to the case as observables", + "type": "boolean", + "multi": false, + "required": true, + "defaultValue": true + }, + { + "name": "extract_malicious_iocs", + "description": "When enabled, extracts only Suspicious and Malicious IOCs. When disabled, extracts all IOCs", + "type": "boolean", + "multi": false, + "required": true, + "defaultValue": true + }, + { + "name": "obj_url", + "description": "Target URL. Size range 5-512. Example -> (http/https)://(your-link)", + "type": "string", + "multi": false, + "required": false + }, + { + "name": "env_locale", + "description": "Operation System language. Use locale identifier or country name Example - ( \"en-US\" or \"Brazil\"). Case insensitive", + "type": "string", + "multi": false, + "required": false, + "defaultValue": "en-US" + }, + { + "name": "opt_network_connect", + "description": "Network connection state", + "type": "Boolean", + "multi": false, + "required": false, + "defaultValue": true + }, + { + "name": "opt_network_fakenet", + "description": "FakeNet feature status", + "type": "Boolean", + "multi": false, + "required": false, + "defaultValue": false + }, + { + "name": "opt_network_tor", + "description": "TOR using", + "type": "Boolean", + "multi": false, + "required": false, + "defaultValue": false + }, + { + "name": "opt_network_geo", + "description": "TOR geo location option", + "type": "string", + "multi": false, + "required": false, + "defaultValue": "fastest" + }, + { + "name": "opt_network_mitm", + "description": "HTTPS MITM proxy option", + "type": "Boolean", + "multi": false, + "required": false, + "defaultValue": false + }, + { + "name": "opt_network_residential_proxy", + "description": "Residential Proxy option", + "type": "Boolean", + "multi": false, + "required": false, + "defaultValue": false + }, + { + "name": "opt_network_residential_proxy_geo", + "description": "Residential Proxy Geo option", + "type": "string", + "multi": false, + "required": false, + "defaultValue": "fastest" + }, + { + "name": "opt_privacy_type", + "description": "Privacy settings. Supports: public, bylink, owner, byteam", + "type": "string", + "multi": false, + "required": false, + "defaultValue": "bylink" + }, + { + "name": "opt_timeout", + "description": "Timeout option, size range 10-660", + "type": "Number", + "multi": false, + "required": false, + "defaultValue": "120" + }, + { + "name": "opt_auto_delete_after", + "description": "Specify after what period of time this report should be deleted. Supports: day, week, 2 weeks, month. Leave blank for the task's infinite lifetime", + "type": "string", + "multi": false, + "required": false + }, + { + "name": "user_tags", + "description": "Append User Tags to new analysis. Only characters a-z, A-Z, 0-9, hyphen (-), and comma (,) are allowed. Max tag length - 16 characters. Max unique tags per analysis - 8", + "type": "string", + "multi": false, + "required": false + } + ], + "registration_required": true, + "subscription_required": true, + "free_subscription": false, + "service_homepage": "https://any.run/", + "service_logo": { + "path": "assets/anyrun.png", + "caption": "AnyRun logo" + }, + "screenshots": [ + { + "path": "assets/long_report.png", + "caption": "AnyRun: Long report template" + } + ] +} diff --git a/analyzers/AnyRun/AnyRun_Sandbox_URL_Linux.json b/analyzers/AnyRun/AnyRun_Sandbox_URL_Linux.json new file mode 100644 index 000000000..d4817ad26 --- /dev/null +++ b/analyzers/AnyRun/AnyRun_Sandbox_URL_Linux.json @@ -0,0 +1,204 @@ +{ + "name": "AnyRun_Sandbox_URL_Linux", + "version": "1.0", + "author": "ANY.RUN Integrations Team", + "url": "https://github.com/TheHive-Project/Cortex-Analyzers", + "license": "AGPL-V3", + "description": "Run URL analysis using Linux VM", + "dataTypeList": ["url"], + "command": "AnyRun/anyrun_analyzer.py", + "baseConfig": "AnyRun", + "config": { + "os": "linux", + "analysis_type": "url" + }, + "configurationItems": [ + { + "name": "api_key", + "description": "ANY.RUN Sandbox API key", + "type": "string", + "multi": false, + "required": true + }, + { + "name": "verify_ssl", + "description": "Verify SSL certificate", + "type": "boolean", + "multi": false, + "required": true, + "defaultValue": true + }, + { + "name": "get_html_report", + "description": "Attach HTML report to the case as observable", + "type": "boolean", + "multi": false, + "required": true, + "defaultValue": true + }, + { + "name": "get_network_traffic_dump", + "description": "Attach PCAP file to the case as observable", + "type": "boolean", + "multi": false, + "required": true, + "defaultValue": true + }, + { + "name": "get_iocs", + "description": "Attach Analysis IOCs to the case as observables", + "type": "boolean", + "multi": false, + "required": true, + "defaultValue": true + }, + { + "name": "extract_malicious_iocs", + "description": "When enabled, extracts only Suspicious and Malicious IOCs. When disabled, extracts all IOCs", + "type": "boolean", + "multi": false, + "required": true, + "defaultValue": true + }, + { + "name": "obj_url", + "description": "Target URL. Size range 5-512. Example -> (http/https)://(your-link)", + "type": "string", + "multi": false, + "required": false + }, + { + "name": "env_os", + "description": "Operation System. Supports ubuntu, debian", + "type": "string", + "multi": false, + "required": false, + "defaultValue": "ubuntu" + }, + + { + "name": "env_locale", + "description": "Operation System language. Use locale identifier or country name Example - ( \"en-US\" or \"Brazil\"). Case insensitive", + "type": "string", + "multi": false, + "required": false, + "defaultValue": "en-US" + }, + { + "name": "opt_network_connect", + "description": "Network connection state", + "type": "Boolean", + "multi": false, + "required": false, + "defaultValue": true + }, + { + "name": "opt_network_fakenet", + "description": "FakeNet feature status", + "type": "Boolean", + "multi": false, + "required": false, + "defaultValue": false + }, + { + "name": "opt_network_tor", + "description": "TOR using", + "type": "Boolean", + "multi": false, + "required": false, + "defaultValue": false + }, + { + "name": "opt_network_geo", + "description": "TOR geo location option", + "type": "string", + "multi": false, + "required": false, + "defaultValue": "fastest" + }, + { + "name": "opt_network_mitm", + "description": "HTTPS MITM proxy option", + "type": "Boolean", + "multi": false, + "required": false, + "defaultValue": false + }, + { + "name": "opt_network_residential_proxy", + "description": "Residential Proxy option", + "type": "Boolean", + "multi": false, + "required": false, + "defaultValue": false + }, + { + "name": "opt_network_residential_proxy_geo", + "description": "Residential Proxy Geo option", + "type": "string", + "multi": false, + "required": false, + "defaultValue": "fastest" + }, + { + "name": "opt_privacy_type", + "description": "Privacy settings. Supports: public, bylink, owner, byteam", + "type": "string", + "multi": false, + "required": false, + "defaultValue": "bylink" + }, + { + "name": "opt_timeout", + "description": "Timeout option, size range 10-660", + "type": "Number", + "multi": false, + "required": false, + "defaultValue": "120" + }, + { + "name": "opt_auto_delete_after", + "description": "Specify after what period of time this report should be deleted. Supports: day, week, 2 weeks, month. Leave blank for the task's infinite lifetime", + "type": "string", + "multi": false, + "required": false + }, + { + "name": "obj_ext_browser", + "description": "Browser name. Supports Google Chrome, Mozilla Firefox", + "type": "string", + "multi": false, + "required": false, + "defaultValue": "Google Chrome" + }, + { + "name": "obj_ext_extension", + "description": "Automatically change extension to valid", + "type": "Boolean", + "multi": false, + "required": false, + "defaultValue": true + }, + { + "name": "user_tags", + "description": "Append User Tags to new analysis. Only characters a-z, A-Z, 0-9, hyphen (-), and comma (,) are allowed. Max tag length - 16 characters. Max unique tags per analysis - 8", + "type": "string", + "multi": false, + "required": false + } + ], + "registration_required": true, + "subscription_required": true, + "free_subscription": false, + "service_homepage": "https://any.run/", + "service_logo": { + "path": "assets/anyrun.png", + "caption": "AnyRun logo" + }, + "screenshots": [ + { + "path": "assets/long_report.png", + "caption": "AnyRun: Long report template" + } + ] +} diff --git a/analyzers/AnyRun/AnyRun_Sandbox_URL_Windows.json b/analyzers/AnyRun/AnyRun_Sandbox_URL_Windows.json new file mode 100644 index 000000000..4db41293c --- /dev/null +++ b/analyzers/AnyRun/AnyRun_Sandbox_URL_Windows.json @@ -0,0 +1,212 @@ +{ + "name": "AnyRun_Sandbox_URL_Windows", + "version": "1.0", + "author": "ANY.RUN Integrations Team", + "url": "https://github.com/TheHive-Project/Cortex-Analyzers", + "license": "AGPL-V3", + "description": "Run URL analysis using Windows VM", + "dataTypeList": ["url"], + "command": "AnyRun/anyrun_analyzer.py", + "baseConfig": "AnyRun", + "config": { + "os": "windows", + "analysis_type": "url" + }, + "configurationItems": [ + { + "name": "api_key", + "description": "ANY.RUN Sandbox API key", + "type": "string", + "multi": false, + "required": true + }, + { + "name": "verify_ssl", + "description": "Verify SSL certificate", + "type": "boolean", + "multi": false, + "required": true, + "defaultValue": true + }, + { + "name": "get_html_report", + "description": "Attach HTML report to the case as observable", + "type": "boolean", + "multi": false, + "required": true, + "defaultValue": true + }, + { + "name": "get_network_traffic_dump", + "description": "Attach PCAP file to the case as observable", + "type": "boolean", + "multi": false, + "required": true, + "defaultValue": true + }, + { + "name": "get_iocs", + "description": "Attach Analysis IOCs to the case as observables", + "type": "boolean", + "multi": false, + "required": true, + "defaultValue": true + }, + { + "name": "extract_malicious_iocs", + "description": "When enabled, extracts only Suspicious and Malicious IOCs. When disabled, extracts all IOCs", + "type": "boolean", + "multi": false, + "required": true, + "defaultValue": true + }, + { + "name": "env_version", + "description": "Version of OS. Supports: 7, 10, 11, server 2025", + "type": "string", + "multi": false, + "required": false, + "defaultValue": "10" + }, + { + "name": "env_bitness", + "description": "Bitness of Operation System. Supports 32, 64 for Windows. 64 for Windows Server 2025", + "type": "Number", + "multi": false, + "required": false, + "defaultValue": 64 + }, + { + "name": "env_type", + "description": "Environment preset type. You can select **development** env for OS Windows 10 x64. For all other cases, **complete** env is required", + "type": "string", + "multi": false, + "required": false, + "defaultValue": "complete" + }, + { + "name": "env_locale", + "description": "Operation System language. Use locale identifier or country name Example - ( \"en-US\" or \"Brazil\"). Case insensitive", + "type": "string", + "multi": false, + "required": false, + "defaultValue": "en-US" + }, + { + "name": "opt_network_connect", + "description": "Network connection state", + "type": "Boolean", + "multi": false, + "required": false, + "defaultValue": true + }, + { + "name": "opt_network_fakenet", + "description": "FakeNet feature status", + "type": "Boolean", + "multi": false, + "required": false, + "defaultValue": false + }, + { + "name": "opt_network_tor", + "description": "TOR using", + "type": "Boolean", + "multi": false, + "required": false, + "defaultValue": false + }, + { + "name": "opt_network_geo", + "description": "TOR geo location option", + "type": "string", + "multi": false, + "required": false, + "defaultValue": "fastest" + }, + { + "name": "opt_network_mitm", + "description": "HTTPS MITM proxy option", + "type": "Boolean", + "multi": false, + "required": false, + "defaultValue": false + }, + { + "name": "opt_network_residential_proxy", + "description": "Residential Proxy option", + "type": "Boolean", + "multi": false, + "required": false, + "defaultValue": false + }, + { + "name": "opt_network_residential_proxy_geo", + "description": "Residential Proxy Geo option", + "type": "string", + "multi": false, + "required": false, + "defaultValue": "fastest" + }, + { + "name": "opt_privacy_type", + "description": "Privacy settings. Supports: public, bylink, owner, byteam", + "type": "string", + "multi": false, + "required": false, + "defaultValue": "bylink" + }, + { + "name": "opt_timeout", + "description": "Timeout option, size range 10-660", + "type": "Number", + "multi": false, + "required": false, + "defaultValue": 120 + }, + { + "name": "opt_auto_delete_after", + "description": "Specify after what period of time this report should be deleted. Supports: day, week, 2 weeks, month. Leave blank for the task's infinite lifetime", + "type": "string", + "multi": false, + "required": false + }, + { + "name": "obj_ext_browser", + "description": "Browser name. Supports Google Chrome, Mozilla Firefox, Internet Explorer, Microsoft Edge for Windows 7, 10, 11. Microsoft Edge for Windows Server 2025", + "type": "string", + "multi": false, + "required": false, + "defaultValue": "Microsoft Edge" + }, + { + "name": "obj_ext_extension", + "description": "Automatically change extension to valid", + "type": "Boolean", + "multi": false, + "required": false, + "defaultValue": true + }, + { + "name": "user_tags", + "description": "Append User Tags to new analysis. Only characters a-z, A-Z, 0-9, hyphen (-), and comma (,) are allowed. Max tag length - 16 characters. Max unique tags per analysis - 8", + "type": "string", + "multi": false, + "required": false + } + ], + "registration_required": true, + "subscription_required": true, + "free_subscription": false, + "service_homepage": "https://any.run/", + "service_logo": { + "path": "assets/anyrun.png", + "caption": "AnyRun logo" + }, + "screenshots": [ + { + "path": "assets/long_report.png", + "caption": "AnyRun: Long report template" + } + ] +} diff --git a/analyzers/AnyRun/AnyRun_TI_Lookup.json b/analyzers/AnyRun/AnyRun_TI_Lookup.json new file mode 100644 index 000000000..c08528289 --- /dev/null +++ b/analyzers/AnyRun/AnyRun_TI_Lookup.json @@ -0,0 +1,69 @@ +{ + "name": "AnyRun_TI_Lookup", + "version": "1.0", + "author": "ANY.RUN Integrations Team", + "url": "https://github.com/TheHive-Project/Cortex-Analyzers", + "license": "AGPL-V3", + "description": "Check URL/IP/Domain/File reputation", + "dataTypeList": ["ip", "domain", "url", "hash"], + "command": "AnyRun/anyrun_analyzer.py", + "baseConfig": "AnyRun", + "config": { + "analysis_type": "ti_lookup" + }, + "configurationItems": [ + { + "name": "api_key", + "description": "ANY.RUN TI Lookup API key", + "type": "string", + "multi": false, + "required": true + }, + { + "name": "verify_ssl", + "description": "Verify SSL certificate", + "type": "boolean", + "multi": false, + "required": true, + "defaultValue": true + }, + { + "name": "get_iocs", + "description": "Attach Analysis IOCs to the case as observables", + "type": "boolean", + "multi": false, + "required": true, + "defaultValue": true + }, + { + "name": "extract_malicious_iocs", + "description": "When enabled, extracts only Suspicious and Malicious IOCs. When disabled, extracts all IOCs", + "type": "boolean", + "multi": false, + "required": true, + "defaultValue": true + }, + { + "name": "lookup_depth", + "description": "Specify the number of days from the current date for which you want to lookup", + "type": "Number", + "multi": false, + "required": false, + "defaultValue": 180 + } + ], + "registration_required": true, + "subscription_required": true, + "free_subscription": false, + "service_homepage": "https://any.run/", + "service_logo": { + "path": "assets/anyrun.png", + "caption": "AnyRun logo" + }, + "screenshots": [ + { + "path": "assets/long_report.png", + "caption": "AnyRun: Long report template" + } + ] +} \ No newline at end of file diff --git a/analyzers/AnyRun/Dockerfile b/analyzers/AnyRun/Dockerfile new file mode 100644 index 000000000..9e9362355 --- /dev/null +++ b/analyzers/AnyRun/Dockerfile @@ -0,0 +1,10 @@ +FROM python:3-alpine + +WORKDIR /worker +RUN apk add --no-cache whois + +COPY requirements.txt AnyRun/ +RUN test ! -e AnyRun/requirements.txt || pip install --no-cache-dir -r AnyRun/requirements.txt +COPY . AnyRun/ + +ENTRYPOINT ["python", "AnyRun/anyrun_analyzer.py"] \ No newline at end of file diff --git a/analyzers/AnyRun/README.md b/analyzers/AnyRun/README.md index 2829e2d40..21450a083 100644 --- a/analyzers/AnyRun/README.md +++ b/analyzers/AnyRun/README.md @@ -1,30 +1,273 @@ -### AnyRun -[ANY.RUN](https://any.run/) is a malware sandbox service in the cloud. By using this analyzer, an analyst can submit a suspicious file or URL to the service for analysis and get a report. The report can contain various information such as: - -- Interactive access -- Research threats by filter in public submissions -- File and URL dynamic analysis -- Mitre ATT&CK mapping -- Detailed malware reports - -#### Requirements -You need a valid AnyRun API integration subscription to use the analyzer. Free plan does not provide API access. - -- Provide your API token as a value for the `token` parameter. -- Define the privacy setting in `privacy_type` parameter. -- Set `verify_ssl` parameter as false if you connection requires it - -#### Optional Parameters -AnyRun provides a number of parameters that can be modified to do additional/different analysis. -- Set the "bitness" of your runtime environment with the `env_bitness` parameter. -- Select which version of Windows to use by setting `env_version` parameter. -- Select which products to install by default with `env_type` parameter. -- Enable/disable networking with `opt_network_connect` parameter. -- Enable/disable "FakeNet" with `opt_network_fakenet` parameter. -- Enable/disable the TOR network with `opt_network_tor` parameter. -- Enable/disable MITM for https connections with `opt_network_mitm` parameter. -- Need a specific geolocation? use `opt_network_geo` parameter. -- Need to analyze something with evasion tactics? `opt_kernel_heavyevasion` -- Change the timeout settings with `opt_timeout` parameter. -- Select which folder the analysis starts in with `obj_ext_startfolder` parameter. -- Select which browser to use for analysis with `obj_ext_browser` parameter. +
+
+
+
+
%N4|(bk)!fxC{wOk4H_n;RbFZk(sP`OZ?|$3^UB z5Z&OW3s905yzbYClU;%kgIZF-lRI>~Tsbv2hz~MsZJzmcpEpR&kT$+`gB;E7u_bIo zAHUNclw2DwN^38&Fbk`_Ku3}?D_A0bvv4b+=sMTVr)7M+!FJREni*n>d-P)08#GII zIc-H-V0AsZXxwn^9vAXxiSnvBMh)#>7g#Ba^qTE;x41T~$n0_-7p>@#*6O|uk+io6 zkfi=E!B^ZJl>y=;GU8A|$VFOIk8>9V7`MQ&HFY*C3^TuiVy5rHh4it5ZlJ9e+Lp~o zh`VsM7sx=)F6(?^dmYnbp~%jK*N#vY8i!~c^2r#v_E<~p=E^8!bK^?YTA|EqJn}w` zRy5>=nJxM^ltJiXeU97(5$)l4M*SVf#H |!E9NkDW9urGwc9c!g9gRJ~i&Dh $0r%Ri8V # zqCSZWpR4({&CfnKznoiHrnbdw8DDzwi>xRnQ9pB&$@4SpjWV57FTR3!J%#-C?8Ul0 z8mFt#RSWBt^NnY*4xDPXO!KshS3!s*aoZJfQoN}~eH=;Tw^6x?ok?MHuRFd)Cu+W0 zH}WQQl#?Y2RfF l%5nC>>3-L>4tmEN;*f{iF9mq zlV%%bTtzad1EhgdRQ{|x28{*>)~rW8(Ve2)d30J@y0e 2GL9^e}3mujl>^*0r0#Iw8?H_*WmIxyO?&mLkfJ;KbKkx7LLa%z_ zTld=S#_45o;+PbiZG3%(Xjz|c5tPp^e3VUae1$gUt1Rb9IR^GXBbtto8kTzQ0{`gC zEx(z{7TsAt?yrQL^++pfBdVn-8EWfx5?0unUSYM&%nCCNYAC1mjJg9N3bwWd^|XdW zPTI0bAdkBul>R w8SPP)5t5FI-tS3@P|E*JD(X9yhpq_k_3 z9>UTkZ`jQo%OK-)7?R6Ru8l$!ukDeX0}&(Z)ac+@;omSXG;+A}1W97lM+`e=?uebJ zJjXdaH}({9JA$Ywkz}d}S*JKEtzMwk^#p@<(nX!1fjBd=?7o~5L2tV;L$OMA-lI1% zNi$_#2p;RC?b@M4I!S}CJ=!9IikX)XY$*x=`2z2?Wo9dTitUZ^sH%cJD}5 @v s{U~{Ug7tL mV2Shn!!8k7xNeKG4CD zt8eYwNuT?BFGBTwYv*2%L?7905jkBwxrtR@LxIZNa$ZOoBN40-+L|~^8YE;-Z<1 tnKv~~Jo2k|nvBVn#%7sMW2wvEilMq#fN3N6rYEZtt}x0-mGWZm)mdpIs?y+KaJ zkXu40%0X9wT{$~++juX^Zjn(Us}zwg7l@mY@=e9R`aH5pqH(uH_yQ@~4$zlp6k!6& zP5TgT(`JN_vpwF;q*ITeh;}EpV&`>Z t&Kb9DH#?^A}pLtC5TvFSXOrt_aEo#W+RmDX*n>Dmyy@oeD8 zKe8M~UOu%q_|`#O9O5c0_|IPD_ X4m;~|b{OD#A& z46#avDr>&N-a07*$TaRxtunl`5sD_O8JM+C?XkhLRZZ5ighdVc=@pzx?28mev^>3f z3}|KGW1UlE(GXBH{Ax7C!~NCg7f&pWmO2FAU^C7yPOjl3=yCJpc?7?3i8uB91g`1u zBro73hjs>E1^5G?kiYb12 m7pFh5#2%-gKAh8?J1dCTm%ORR*xOCij ze&+dg!_oKx8Uu{7q(pN}Tjf-Uk|A_e01|sKA|`?){$v@UD^|!)m2^V9n1%QlENNZ= zaAXS d{i~qke#$ehh;lAKqqLWZG6wcS(yigbWc69m)>yN)c3t7vS*uOVh~M=U* 9eQLd> `YY zx`KXdBfUfj#TwZr5}|a9v=C?*D?GZTb(zr1V=f!4pxdx1F*)?s&7!D+W?uCW26xy& zr)%%_2*DE8;ZeE90tA#(XbU(hUDX_wJ*r&-a=VJwQ*?^hcgxWpIb+yX;D$8y#MS{J zTZLFhQI-MTS3nSt$k!3f?GYBqU=Z(WhNhvBSJ^`XAuOVaOMhf2Ff93JO2=g2h_HYE zaQd*A>0iA5^zol_Ir+oSru=_eo_` 8B1S{|T4aQMNE0sy-=8I p2l!&Ss7#2o z9$LSeAbv%Y7eH~bE(dSbLy8hAf8(}o5vt>^bs_9hgvt)yK(*e%{sb}80})>5@y8sx zlk^8C89tOvftMQIe18c)c>Dd20N(jy@CO)WHTq~oOJCPST@H+opb~%O0?LX|6B&9Z zfwy?6Xd|!#ZQ|tCN-kqKx; kc}K&St-&t%aQ4RtcJzv!1~Ty~gqnzHJ%QXS zLNJU=(ra#WMu14Z^MJNzv+u(hvQvtx`~s!FD7!>cJckRkO(d3tkT+n@DKgl{1SFg2 z!-t^tr!x2u9#@BU7{PuDf8sx`mNB9v)Yvb|nrJ0ijD%nfY(kOJH3HBf SKtTCSFOQ)U@C=Je?<+*d_t#5ezI6 zvGnK`Tc(_1H}Et kti~IP)|L!$~e9b9`qrqPuey`8m? G8Y_b~K8`Z_y z*e)J#(C?I?p%`B}Gesn=D6Ae kBV~!FCW-HBo ZbV5@|e@-WYmgDL=RsWudU3}r;%3B>~O7SoG2UJ#2UKAF3s3_A+WX-2qDW-=^| z9fsHT!>+{Z?mYz0G)u)tUW%L=5Ihmk^`nmlpzLevV-%)Nss%dgaDj!X1eJ)Vujakb ztQMMag#2)z+7_NC%!Fi#svVC7CSrF2Wa>#i>BNTSq;i=PdR`7XX|e$;-9)=Fq9s1| z7?oKW?ucO?!qjOQuLnX&AtHDc1W)9cnvQ8Y5?0f}Qi&v aR44WZ0@Wj`jy;cM ztn>5fzH^ZNIYkr%j)unHM_n_rRN1#>>1~a_ @BWK6dqMXW`cn982 zNL6*3Rm!WUYU}NyUQgt$$2x~Eg{Qf69cMMI+)&o8?OA1D8Z=#wY+i!vRGmft-G)p4 zk?TTL*^O(VtHlN?1as(xH)pKmtYb(9jIZe^V7hWD3fa(Q=aeqj9187%WcpA#=Ne0Y zL;Vkbbicg&z2E)by~3bn0JQ-fX>=PC(gu%{`q2D%GOdT9^X3pTku(RiJj73==-E=g zAzMo80g?SCZHA=O$8y6SUBhpz|LOmLKfL(CKmVhPAN=44|NOsv9{(m|Z3D9N?cCkU zdhGHFW?^kpi#15N>)P%oZH>=iSLon+YjVMuM(CmTuI2Ip(u=WQjrqD7S9|J5m*Hro zNA{Knm#&f7>9S{m=H)0)$`!cF$9s4F!SOQ!uhY%;EHcX*4z*J1@wgpLHxH8P5 gtksid zl8+kL#U`+dVt(Uxk+|)Ehhel)qN%%Z87pNHUZ`2gXFQuhj1FehJh}Fstj3^6TfbJ^ zuLP@n*6MNT+A>s~j8V-R8|9M_tp*gj%vai%LIhQIT(O{>ww+L>5Js|iPgB6U-tr5S z%WohSo%%Z6pmmG3^+3=35}Lq9vSH73@s_-9%){$rf6Hb_Ba63|dpOCq8y3<8fzypX zUb%fOXzByKeFtVW!mX6+)KbAaEkx{+06HDf*jOY$KJ28R_olsq$ih3Zd)}z>Nbc&$ zvA1y=UG9yp#~!bJ-3x)FVdn}_j4vUo#vSqq9dB3-iXj;`PT|SAZ(%I+)Pq8$trBtN zn{h$Wa*cL6Y4r`GH(=JojiWS0UQ(d?@TP`6yc}MU4@dOknzr}y`JJ1y{Sar)9_}m+ zXHTvz>IcQpF|3FC&tLj5$ouK#{qtY=um9q~x&FT|_SyAw7RPtT#L4^{Xt0wZ0|5J& zG@%byZ^7yD=> sttW=Sz{dpT1ZVtz_uy z!>Pv*m`l_u3ulUdXdg^#Hz=0pej7ut5#e=QA(|~qXv0>-t{WgF(gBi#Ag}|s1f-R> z@CIsd?EkKYy2~?Y5%wyLRkA;PDFUrQ*fd)QrM$+c4rrVbDaoG3LHDSLuylD}S`DR# zWoYMNv8ZhiDffv4f|QUTx3Oqsi4f30VyrFZO%6x&a+LCBSl$@(>MJO(M{kH4p~9l| zkd7JXuVKk7HHWjvop7NojTQ`}ncK !lB;124RSs|DIx zjm>od7X{QLWKOU;Z`qUl`IZDWS?X=wJiq?o{3U$l;v|1?*B5_)MDRKMFu(rr$;rt{ z3+KZib9!>@tX5bFetQhgOXN+t->#nYsQ_29H-Y;xN$f#4+<^4*Da7^S36LPcdRSmp za3XC9l>SS2as?T(Z=QMRLl{&^CQVqRps;m=pey+nl(LW<7Z!q0p-64f- ($$*v)N zv?v!yEhXa5lG^Bx-$YyM^&^^a%b;Wj>4(-D*1jJu{ J0mWUZCY5jXGjzdrfn_{wBT&OFhmxE zHT5;J{jbA&@G+)eGB}+v^AIk-Z@KW0rZ>`kn=5+H^EpfZIJ ;q5ZQjY~XzT8?S+dy}+v@~;cR~T&z zbdEaCt 6f@Ym zElSDxetEE#`Ld^q=oe-8I1dxl_|xqiO{zP6mbRJC&u%zZXoye8m#AX8_2dQcGj)Bi z)N}P<9fi@hJ>w;!y?QX!V&fIqL8^GYN!HiF5x+t3^|RF5>G{Va#+Ki_u@T*BEv`Im zPz
hc3rt!NJJ#-PP;xdRqBlI+*))lY7JR+@hsnV zZqOmB#Cu2kca2k7<=WGVx%+f^y1RR%_l~n%8dS1{iG6WVgivf2;mTP+&1~zg>x? o{-TRYk!Mi z@Z^RWO*ya@hSEda`R6PBV{rLM|GWH$>;CP(_s@EM^i%N?;S!=*7FBJM!X;+iJ~G&0 z&r&;VAIl`VfXCBqeNv3sNxootC(7Jq^CWzBB*L& k8KdH+x$~aR`*C=7@1hp+1-elK}nQiLv-gg@doj9vK zn_i#y((4r$o#4Ibduf|c^iC6sY3np{q=W+B_Us~3XOUG2Z#Qpi4uK_)ZrRqIM!PPJ zWEP=h)~V&l#@1qIxiZv3JFbkeJ@;sNz7}yuk;ADrA=fgJXw%IU@62`cE-s<-xMvFA zX3W^7i%&w+!I9(&mj=6ON=~V1UQdf^92+xtH1cCZK#GQewdT^C@SjvVRPe77ToS5T zpQ!9%{c0KZ4+#XI!v KHT2tzPoCvmnP(XT} zGBtEW8lCo1K)C#$y}rjf_vzIwLTfMVktN-2;>Au^C!X81RK_llJoKpT`c_2kzBBb~ z6|7B#;4Z_>r0HeSc#3a*RHaOqaA%VFRoI7c^W|i_>$(N-GC#e6mDg M;_nBKkjao4+0 zd^L}A6y)G$p5vI(FH_#-+=fz(!8a}US}hvS=S`1jS#oM`q~*lFQDcOmB?3p%Y*^rK z-3f%MyPey{R#Lj6Mr%vfz0jwAqaiL))>uyKpd0tlFtr|CAFmuN?b;f3O{>(5iHkch zb!iZJYg6x!3#+%45~k?FezDiW7_=`@D F8#~%mY?}AS~y*9(+{?fdgo$$-saa{SDag;OKjeGc =GYQHW7Vq@f z-Aqf*w)duCT@6WIo3XcT0mZrP<&mmN0hMx)#6 g(B;B@JFbeY#Tn8vQ3h$2jtw`y+B|x#BPP-GKHfCHF z*;r0YNdfDYTgH}S7fuybUFS0G<+#Q^BaA}g$k<-fOB+er8?@_U)#%#ACSs*UK|&0y z;mr_K4h3Jj1N;1R>3?ltmjj_Z3{leFA%XP90XpgTda;rL83_l;P7gz!goGBcOhUc^ zFR5gTXlDo>4@rkY^}r)()RJ->#xt9A;FpMy2$%ooQ0F01AQ!etlWaq_YQnk+P1j aKtD61c4n#oajtS|zXXoP;qbbensB}A%H(Dt_nks( zscC2snPzi3s==Kvx5dOMike0(Q5oW|_NS9DD$cHpyGPduo@A-nX_`*G>jW-T7sc3$ z_0;`{MV{BC>+)8Z=JqRMBic9CBHaa8{~wbN@Zb3W(p^{CRqf>SJU{l4g+S~&S3Ps< zMPWJYx-N>6d$)YXI%9`<;xB=Rppsi-$0)<2ve#YUJNc+dAwwQ%yq;?`>)f+EVsWhZ z8e1TC=Be&2$t4Yh7%SkCGv|0;yV4gdjqfZAFQ 8-LRD+S z(O$?Q<^uK#!E^q`a 9%dz{XyUT&4?}Zrox=11)-xh>{K%hsABr!VR*`Ud*?;Qs`}*V+zcpmqCmO zAlW98!-7ndsbRGKFztpQjs6Wh!20^f#3OO l(xLGLJa`cUlH(T{m`OxJB zBz-qWzVuO&&r8tQvW(XdCRoM1RvAwu-}6h%uv*Bg(=xb2J`wCEJ_o0#$r4c2lihvq z=AvT8&7d+g>d-WHGch@DX4SZ{$6KUfXn}#(m9p#NOgN$4J5GtHR+K^EKt&%gps%8- zp7Fjb%aJNg-y0uIc8X;pCeW|Rk=RNW*KAh`7O6WAGF!X^fgZ1~U}IT23-Xj#g%nT- zCc~yz)6yv;=Ehw2j%j@qS9TdNyRw`nR*uUmH g!Jb>Q)@30w;2Gk@2p_e&_+G}0`C8==2 zKP#n4QG>CNfE)mjkQe3nA?J{%rW6DBJd$W79-%64NSO~PTjM^$<#*#OWFa~wKkvpM zJ0rOlfh)Pmsl}jA_{MH@W1Fed^})WMSGhn2GctTX0lxN%(yE#gmU9UGB^wvcM@iyW zG Rm!h9KZ^>EHg#SsH`C?OO_H?BvuLnX z*rd$5y*`J#Zi 0vW>5_~!9S!tCXI=OEE)kYl7Q@X&oZ z?fj-c&Rnat`-x1v!Ub1EBI|5=T_ai7GrwHyjh% &HBG{s4ky4*VO*JkxxG8eW zZeB%Ev{jy{EK5|LI*o31bJUb``EYNkK&K@d(3{vlr`O99xGvtxERCYgXxBQ9_ZC;` zovl@JrjT^?7KLJlmc;d ~)7orAlf5T)*HRo($CMQ-CN}8mHEWHjOzn(Y7VDld2L*etoE*Ct zNx+fsKp&r2A zxiMd~^rztR{4Ym;CHt@bp!=n}58wTl5B@TL_wn1?pZO_6m^5cRzBu{v)?8jB7XT;r z-Pv~BCT-C?&e4-RU7i)kANbsGh0-YAsg9wLh?YE$X&QEzow_&k%aGpy>cDB}QwW70 z@NhR4d$&cD+_A};VOJ}haRn2Q(~4e<2lQGtUfI3f!MGhhjELQKlr_xtHq$N$Ok+%v z`@NmVw(oXsGg3M8)e&p_d{PIz_gaT<3xY%iBw0tin`EivM!}>U6w*V zTy<%OJE1O*m>SzMDz=NI=_?OqvF8Y+FpdX-r%^MYpYMtwN1S1ua)K%{4KG~_q13G$ z65ExIHS%AisH~8#ZsQzW!}AV7RmJo%B8|Gos%Xl&SD~n)(oW?9qt6onmA0!ND~;@O zKsKs|dqO!VXi7k?NG(P3f{uqzd|E@|fR^`#n#1TNojPm=?1KSEX_%9i#xld3a6(dR zcvC*S8Bd#LKuOARc$uF4-RJTD;x?hGn!uJVbFpV8uAS8tK6%Hc6<#ITRwx&2 %KPK$XE^?!5*x7}6Yy_iS} zM$g~Aa^Y+omoLt4-pErGWoZ{{oz7R<%7dL9dSO($lN-%Mus;Uzaa5qsvNlnGK+uP3 z#=|&&Qf`jDCgdozDUhmB%5*%ybv1-y1zBVFsFKnxeR2pDzpfm_eccFYA=c8XkVYu_ ziYOn(hOJs!a} z4Lt zKdPJ4>o3uGYCPT*aC|*2jI)a;J9C08l5Ogfvi8}=STwo4brG*M1+_{FXre$N!9`kv zy_JCeX$yfupas~nO4y?UMbZ(JolGT?ay{10>^9Af7O|ucGP&rma!udgq`?upw1$rn zEn13o(q0Fn+BSO9v9w~I*Xjn{axY@-IN*d@I-ry`Clq=L^r;#8o`~gU!+&M=KwsQo zJ lq^fP9F14=G%TJ Vum9m+ zxkHqD`Mcxn7v6Q={(JxIxcM`NFcB_ahMS^!G0n~y8bZ;YU7TN>A=y1 7(~xpsSEJRbkY3xjy-|Gc z)qXu)2k{!&QB{{TvAV>ve$a&NtTyu&kQI8(c c8x>? z>qqNw*T{h4VVPIkzQC^L6owKS=#C=D@M^1(FjeQ(M?$O7&fCSeGs~z@2+OmzsTQu# z>tHPRkT{;qbm*fkVd=PYoh;GP14-ePF`#R7HL43yG%B{;l4g5DMf11?GhJkur|HvO zuIt#ji=;YtN{0Gs@7qX4>056u4YJsE rG9%TO(_F1qQa){wBAE6w3x-mn>n0I zGa{sef+rnA;E87u5C|@Vu4!4{wt?-Vgfp@Ws>GAMK{#k 9s{RpudD%N1~zL(UQo+39Mz6`eiBJ{Oe7 z*XrzI`*>5hc;`Gnn@v90PBR^SaN-`7@M3zKu*|zYGFv#Be2^F>%iF(Xf{7 E^N77ws=T^Rovp=Y5T?I`uZ;MkB|%vGUPwUQBKxiGqA_8#jySjrE?@$B~6q zpbDe%C&$mq9%&TnnjEqO0mAD=q53onzOuG?6Hp4e8NrYfRK~-O%MccX3V0(rW;EBV z=OxM 9lgK)Ps>v*l TeBvSI6;4O-1VM&c6F*E@>0jyEGz53M+kR~+@05-xh@1`$$$|F7iIuXQ?vH=zTQ zfp9x1Lu-!?Ov=Dzk)46 ETBxy4RLdz31$C+;$QNdt3w!}#Ob=nItoB#`L$(!cRT_zG(B z|NdP(y6AuVPgD50ci(&azxgnK^yceaKf27|D<|IhbKE<@UvlB!oTGd@{?ap=p>cfu z6zDt7_Nfogo;A 0Zw6h{gM=z$Y7`^==P_)aHxJ=$}=oyuf~8h>VQS&W*NX2bwbk~pzx_Q06Y z%L$5*o`<+|r*&<6vXQs2)l=+R<0A-ma7&+!48x+Lsdwcq3DY&UaOuPC21>oQN{B2d z!#AL2M^R;$g$MRh(Z|ty9p?pdCnpa279C zg41)>#25^e7x@;)nt5>ePsc3<*vD#e99qJ0QF8cI^^P)b(-dZjZI8bXOM zFO@$0XrYLE3y?I@cc9iZ$7-15!(evbVpQ6)^;FL=ThzlkOXdjv(}_Lzfj+!H`Vb#I zn1w@d%ZK!V6u9D}Kaq<#hUqDNx;$U_uw25D?%em``s%|As2{_rZx7Q^u7^mX3#zuB z%rLyJ{vXcX1J16ix))xj_uI?dX`0cDid8MivLsj82H66G!3InTPUuNUa1uibd3g!% zOY#x|fs~Il!VB;c^B_22118wU1>=e=%a&xTj7FN#XlCx*etQ4bIwKL1FYo33a-^BL z P9Gc7(h^sM~ zt5tY1^eoiSs%#Zis`tQA6$&w=O2)gU?wEj0QLyw(XLz(D#i*w`g%0Db)tIKPLn+i@ z98a197!9(f5YfoaVVOY<>f=;8fHg8+J|-LK23kX-5QsHv7qOofk#h@JOUD~F8a8l? ziwY=c^=#%vB+wi>oT7UJ-w!mg>8x(Xkfya1Z>ly4>gwh%jHm$;;CioyFURQ$K0d22 zliPlr1%>p*evr4g4o8=&mUO&>5)+T1opVxz1T(^qi{pM?!%HI}ld}j=iXLJ#4S&lN zm{FD(ji&D*Kw zI>wYf1*owB>wfkTWdW^cR#|W-U6(?MMjD_gF*iMZn&QJuSWw(1LS{Hvqe0Fr=T1)` zx*+F;g-X>G7|keET}LV!Nvnn9jf?b+QJ~!}V})a-qdl9wIF4H_jdpTi%B+pjyp0;6 zAoRKgEzSaEOrvM_@Y8w;(7p#a98;u#Ks98eacGQ;O2QU;Ng3M;p%M~rS@yj;+J>!x z?a983CTdr!iAKp31q+dL8T-Yu1)QH}5s#yRWV2dahJlr+iepNNZ{)y4Mj834B%zr} zZ5Zdd7%zw5sj7JAb_@
8zIfH{MYJr^tFT( 9IDfIlDik?UPVmdO z)3zj}u~KTcT2ORaNy~SA7y+S{MYmu-R9sqIo&~4YU9}c9JiUOU=ZFdh;^2rjFcffc zM0S;tW{Ac}9+uODm$c2!>}i- } z(znKorqM4-C~dnGPi>NKv@z$W%Z7v?ZUVO^&NWuYRl-kfk-C_Zg&KZdv$?owL(H8& z!C|$W7=`9Kt#KkdD^T2k12?8&X*HT9$m-kyR|Uthn_Uq*i>hk@-cW#0W-sG8eir0r zHFaCmd%=7PK~*e-W*;b_A@ l s4P zCN_;vcNs#Se|=;t<0Z(Qfw5A@u!}QB=cbcBH9Ey`MQ9oB UT~_L_ksR1=I%ZR{UnocQ*o&|oQK9gW8_9K!VMLzG=`15?S)T~NiQJrnR*oV? zbjYV%jA>g5@+uF*7=IwvV_tG3PZjYJQR*A9>qmGZE$KM40Et{N 5^-ryXrhdzv!on zkG^)5`jA(U0=MAh*}yl{9v2t76~*z&?8O#y1
RiK5ordhcaA?i%_ z6d_Uye$|>>bQNR1H@2ihF71t#LJ2yew77nzTZd(1g=1`6p94Lp3qps231gENOrgCf zR$d7z7o?z=NVGr>fgxRx^>BlY7Gw&+kVr{2N{~9801U rG%@X-6vXOsjz0T zC A1EM(q8I21ALC~;eh^C}RKbo)-Gu2VCKr2NF7T#iMZBnj+#4IF)7{u) zHz*@>L)v*4+C{M00n55bV(`PoRK!6Ni9*PDny0X$tw_byoWO{`G$jx#A&3c%`=Ova zeC&u)9D?Mfaln`J`XDJT2S~pQNnDZLe!eg-iVX6@70B};c5y zj{aDm8KddQ9YQ~&4diwN){xLg#lK^b>>8~Xi7lP~pDg_^>@qtpOh)JM&*_hBI`GIQ z5HCFUhqK B*l)yBMq0j(j@7lp`j64w1?9!ha+%J zSq
$a;f z>2TP5U2X;198)1dSm;xmR$Gh-;Yw@>Lc!=!P%<8-*>A^TXcS_~MMM%&!@_KVNTTdH zpvj&_%S ;>1Xit>pytnqI7DpQH>V z(0tTqrsE@vj2%NGS9c^phVNuMo_Pj{_;#%ElxrjIW+^g6HrsVBNBRd@BPnf@9^wte zffQqL=VHJv#rh!a*L>psad5G;O+@= {<5Yk`RY)! YScnSBz6i6V+~2 z3vt$B21*2Mv9w(378xiwN(wznonCTr$f%Z!sPsC{B (qGD0C0oNgFUWDhBKlsl-Q1WNIP zPZS(D(FB{_w#GnYF(tG$Ek$U-_Fk?tmgNT~SUw8W)vb_=b w`7Z|Q72Sa$4^ zogzD3V6v_Nt@+I8N5{yp)595UK1?x>Ns{7c{J5w5CrbYtb~%%W{uJfh-&7oW-Ll`S zPoL`EcxKlk8@=t>i*x)xK4@iJDTU{HJ(w~D+48#$%L3ZgY<8k4fVI+@ToGWz6^7Yn zqOn!3o3K7xrQNM^rlQ%BsfC=&b_ =>`#kSybsRIV< zS8QxKyR6!=ow5}l$3wr;O{=M-+lA0&aX5=|QcpIeQ0qZT85bnUqo}Zi>-$O~ieQWN zfemWJBiD Sz8eu@* 9pmX2OM6(_`s(^^4`l6eQA5)~ z6ft{B0pb@QU*ezHGB_RhR<`O*P)SKsSKp^T;Jd44bkU!P-Xc58-c>SO%tFOw@*!Hi zSjH{0fd+0k(RwIU60WEF5`JZFkPmYK6s3-5pw#r!Fy>_S+_2bHyfgx@jP->agAG%G z{FE)V8+C`ZPN>R`5Qa%L`P3)&J?QBl~M?hh^Z$ky_+ zh(6ldlXXiF^cCM4o1Iz_jC8h`M(1$6m`aOQA;AI6EZ5WWa@dpwSS};sw3l^rQ8b57 zm+)!bT=qAgH-f!qd?eUPzvvZX7p3 L_RPu}3MVJ+EO(1IAWM zc2lxdQEU}g8d%qz4YP(Z=v&;t82FLG4uET7>$UbtBI+9$p>s~4r^{kKei%V5E))OHK#Xjr$kY7eMBZi4V z2$?!GPngQGn@6Ni*rH9_7{v6OW#u^WlbFv~T*yZ$c0@m)44KGL)0B;nd6EaBbaBQ3 zhwlNM%D|3hNHDm{8O>FFl&5uVwBOu-F_8+4tuEQH8Nd9`mj1VJS;*k>Q#Vu(@fSY& z@Q` {(yT7gNq&=inOE;SXS zTf)BM1(Gn(o2-(sk-#c!SL1Rm&>}||b{!RUJPl3@RTojnErT!fydOARPE&jw#lyf& z%Pz;-PMB5|b*19x{nUee$MyVtk9K8<)d(4;ECJW!@|@Pwf+P`>d}4=OoXA{Kw>7bk zAV_=iV8utQnnqEOIATnUuN>*N+~X4nWY(?sQR>(Ac!g!UapdSd%7vTjGNhT2rAmV6 zFO}Ox$0~Tb(2{vDMM;R!8X=(dMFv67kWkwjh G(3DD!sJoSOnjC z^B+0}?Oxn3COtW1q+SkTzN@)~j$5Xj;dwW(6$@n_Wx*}Cm7JGwY*HSCiA4K+R+sY@ zgsg}ds;v~-v`~T_6p3Xda5>2=uwAwRU6XQKB7wEtYOlO7H0w{CAF|AvwzPuWZpA-Y z=5eUDaM-p4O}CoGUauG#5KNxw_59_YWtD?Kg){nayFSy^D`tQ?JQynp`3pf Rp zP{#{G 2>tlFYxBiMjSnI!SnQK1xD2@XX@yjYzZ zT4YBpXd~TreJ%xyi R)U+h@Xmg~L3vfz92vhH}O`9wYMn7qJ)>~aQ*A?%%QlJC<*V9r64i6KTQ zPIyWC`9NNFW40h?dDRo7aX=^fIF5u2&s#BNx&VS$L>J mIC*)3AswM$v# z4O!|%Q)SFiE2aCRKu0VvpckoJwvpt2vh=?Xmp8q9?JA{wis8?# 2-o(3_ksoJO^Tq+6(UUB8!Gfe}3v7RW^onn6%# z0qeKG=vL *(BIl)AH-}K!4nq+J27@Y$2j5ZqA Z-JVPKZ>H zwF+3dOza_=Ndaq^5{pcWSSAE4L=H-})Rva5f|z *@b8V^P&T$N5MOa=MyxpMgV1Q>REob%&~C)<4h=+ zc_hjZ(oVmj+Ld~hUK&<>d$q-iPCmra %Yx5FVz;E{0&L1h^vkCTfqyy$t68frG@ z$DHcrS*)9cU JR~@v+bFXVn}k7`=`yY@q*h!L`h^uCl(1GR zXbVQ#toiFMKtEa&Ix+S1ek|1oaoZ1Qy@VU6D8<$+D7zL+u~_Ujnl|5;dYhDUEM@y& zOhq3X##db0*?}8aKq?iY&_ j)uZ36!42BVJw7d% ;^7TlsF%#}DcULCU(h5S39bO8tC9N!&yOxpCgj%ZQlyh`Vug z-!a6&wA6QSkY;@`z>!iwf}C+l23d_n{F^KlM~X}ckyHYjJ)+ nOgW@|*5j{k|$nRO5TZ%SwL`u}F`^3vh1u8Mazyy+X0ARhn9 zAI?6u>(Fuc?<8~0Po6dg&gn@sJqxBl(WV;>;9Pfh7GGN8CYPpdg%hSJ|24q$$k0M< z1ku8+4QdNHbJ~Cf!^qLZ&&UD-pEH2mNE?A%g?0!PsA**Qs@tjdOJ%N{NR>E&mWl(5 z!&bNfjez8cwYr?=m1!;*1+QuL;-psqBc#z^s0xB7)WcTW*4)8LY=ft1;K@{59_0!y zdmQ;dmt^Sm%3$|x!QsG0=qq8hSh8iGLA}+M%VAxHfp6=+t}UxL0%&?$Zt87^w1wg1 z7<-P_Br9ritXg+C%^z@-&N|CzjndyYBv2R6U%7qD%=s&4QI+lg`MZ!b)6J{2*8+K* z2eG93U~+W5i%NrBgkm-343$%3Fpz!(u|in~5j-<*B0M GE!%<_h{h)6i4isSd$ zS%-Ies$Pb&>oQLBY%zt3Q$s7bOo6k?MQZ^tHD}Ov-31WTk&%VdFoCADv=RfwMz~N@ z mo3 zMu-}`D}Y%H!>)U*2&$aKU0UFvdzS(bH35)Tk~@9~slaQL ;;`P8+ zQ_rdSdW{YF>xvuqOq4sippUQEOwM|%!FJZ})>%EBaBEci<1~pmD9UDi4Gu(sY@YK( zo7Xp0W7}Sa#Zlub9P*C`n>NJIY@#J;NFtS*NWmdEgb7@OW)Bq+?JJ<1>b6SmBiI*; zusVINfg>`sJ}zle-4~eUR7z7JKohEiUe6kQOtd>C9SUQb827~PzB{#02cue|xydn3 zgnYgaOdRARJLal=u1~8G{c!)&ZxE|p;5o$m4i6C*$sTQ=3bYn3(egB ^nQ2nQ~^S`2LX$70CSvHjL%){7N0%`TSchFb)SEb3fd9@?_ zyQN{ZG;Nqd$uLL$eRi3gKb3!C#3D+Wt%{eXPnCb_@bDu0y<6vsmk1`Z%X6w2IwO8} zy*VcgEo$@it{bgyBm0n=`6V#DvG{HKp2~Nk0Q-$Kv}_{h@X42A2^2xIk<#Zlg*K(~ zQ<~=XO)aF9&XU{~{3K`gYtCR8w7HVyGklmZWhd{K+_KOIN@fXMf?u!f7u%d3Ypmw6 zvR$UsJDlsuTo`~yxhI{_cen$$ylMRycbf8Bfv5u;CAmH+ezx9G6IotHLs8qJH~@_{ zTz>zqSNfrgyim0Yy+DV^Ew4oRuuI-%$URk^>9ctX@x`V~beopR8-9$|gIb1T1Sd3b zK%@vAKZ%S8yM`^XR&M`Tp|Ed#RF|Xjmb}>x1u3>QWR;RcbCZrMdg{4a8j@-k(g?ra zK*6tw%mT;tEVnAqe!CLus7OE~EIp^{ES46LT{4uaa#eN%^O1MGv+xQ&W(rq)Wb4&e zA3SKE<2?9(4t}HH(~x>mf@gU&=yZIIN-A#gu4~fSt )9{s;_qe3b#iAAc=C*fF?>&;XwKQ^6mb@8|;4@C-V}0j^#4d^g0@OMO zttAjfP@0HfMicXtq1RfWjr1Uj+{#<7-ZPT3o6}O6QoD_n3n(-7piY(=4x4jhke26W z8|`=Brp%Vi0!Tl5bE)&5O&hjt-n?nw*QAr_CvHs7N^!A$$6GcXPoW*~#g>)R3^%CT za!^&eLa)Gzor!J~Y_o%!v1Em>Z%_Yd=6xS7Jwz%}3W*kJNVyUXjAoLj<^D9U*jQnT z%kznsBndLE#08#Z7>7+0G#u0qs8BtIi9@MN(|8m)5%Iog*@f2YCP#|J;_KKWdB6RE zou{VXxpu>MUw7H9TcV?XFn*>vipFk+a_p&Lj`6%Ur=S$4P4lk2;(%Ff+sRNAuf6#- zj|B~w?XW`>4B_rMt*2VM(PvrSVFQurr%9~1q5z`kh!j{vj!vN}m>R;ksG)Ykr?hgP z2#ieoLMMn?pe_9wUaK6*`i~ClVL E5NW|2EaB283?G^HteSOG{d!!a`=kr w#UoeU{*EjC|oU!IZ%ti?-dr{EFQ9SdMp;;$W+~bHgJCPXFuDKc2_@ z_e(ni+GV_tcAV~5PGRbQ!!8jRjz5=C%4}8KJ7@SGKfZm}q5YGe%m@GCgE_l2V^v{j zDqfr#nst{HrZKF9$|Nij@4~Tu>6b4%c7roLjblEHP|C{%D1+Oit&IR`HNza>kUCLY zK-Q#!0wb;#I*LLmNJ=ns^G6TljI=eVwIG&U7m^N3K<)NoqHRVRQ%p!3T5L>im?0F~ zg;oIyX%VrdhhuaBUvH;{)O_D q>cu|GAMWmTlX|eOf zIhsVGg>af_C#Jbt cPqQhi%+;uXok>@!*nq%pVi>~e&!gkdYb9>=#=2w3; z^SfkL-7{B<({KEVdqUXbxE@!gt%tZ?T
&G6Yz}poe7@53mWE!`%%K;jjOJ2} z`9*8eSvQy8Xs?4In#c8M(;{-G!$-ARQ%XDz$6B@5!>aKVN6^$_j}nJy2x*~;UDbgw zQtT)MMpYRt)s++|Syq-|T-V_>^~)^FI*{M}>lX%wwKh+)6bY=EN76Ug^3Hr03~4kc zqEH_!0;)7(Ky?uYL3YZZCP0xN+Om=s7NHTdi?!hzyY`k}>m$QlqzZ-r>;& _BEo3*>3jcBqFssQ`B1FQ;KDqz++>)BzpQQlupkawrJ daP!d42DD2B z4tiCJf}Eb(z2hphf`(PC@~eCcKcjT}g=3TV&xVfy;+L;U^nLl&2;HbG`wUg%N-Fs@ zH_nWu@{2OV9Ns~gMGKGfcmwkZ@Y$jayP81%q6i`zr#&im9G{-_E)UYlgU)63{?21{ z_&235TK2zR8V-}EC-st%R6dM<5C3o2 cSl?;LAn z1(033x@!6QY$;LZ{IR00r}JIGf)!urf+AN}s?wVuh1%0O=m?t8Yb1_Y@|&6@RGGll znrwlYh=b*lFW5;7rHdOmPSh29R#>r?D+^cG?|d#kT6N2VG9a}?xfsd?rA6*qLc+3c zS#`Kln=pm5^HNWix}3`LE~oWl#>auL(5F;boDFwO4o*H&E;M@cXh7;xP_cPAs@rEY zmt&I1Vmfl9+rG@mR>JVzR;sJ7oQwBw{d<=S=5-wJV^2iEWXeLQU6A{!WAwE!WO>;} z?&>4`i9z*ZJ~pIOwqq?!MOQHfqD?um5a&}5$s-%(*3ZQK$ CqFg(`PnU;nfTEiAg%f6eU z& z~^?qp#ikZRV{{pS=8WB{wu8A70;ds)`^L7sq=% z>q-JAN@hL`15MH+PYjgf8%FK!o7}frJ3lKu#Qn3W$9B}Whw7FQm6*V?v`} EyWRX`&WL?L41FtRj}l5HfB8d8FNElnbJzv_L{Y6j;k zFR|geQ_sJ&Z%ymTkxA*Wb#6uaqiTENG+&=)S2QM&*UVkZ&Pnp1&=w=5F)1xbweqq0 zdFPmSNL-Pdo!4yOPuk|4TW^1^dMu1LHLu$!rR(|vv;Wofb*~BsU*!CJuz!X&0$ugG zB;|pepqQ< W+r8r8=Hv03 zCnt{ {gaK;VVu8qbN?pgmCr@D9{T-%bX@D^q0yZ$rYxVpjl1&` zc|T^| _Ul@D0`jY>Kn+{#I I}^AJN40s)Nqr3Tx|PS1<5}pXW3*rWnP8?JJ>Gltb0g`iuri>==>X zwIr6ea-QCkIhvuu9uRWAWlV%GoqT-phigWczPG!y`~%hO{=C0MeJn8+@2Jd88^UF# z$8u4es*b?=w5Ev=gn)>=gTpr@6G1W*Q0WUSaIDFvl7K3T3j*L!jIXwFiVTb?-NiNJ zHTts*?49VJKU4c(_Z@&uPnmbXCAhr%v1?y9zUff2=w8e37G5`g_=C?v;e+Cx2cNjD zKR9Z7jJuc18xP#|3>ux%yK4Pci|^m^nfG6LaOD0Ei3hJ9S^G@Uzq CTdI=Z(*QbnW#ovvN{a)lQUlKT?msb7n_fvKAjplCx`{6>eG7gvO%P++E4v z%Q=?b? r)MZku&KwqE#=rq;HVURj<$li&Hg8ymfkUAAMU za`VYfl2kuFeZ{k57c{|TjUb|Yt%|K#YFM F5caq7|h%Rlq{=y}QM1kS Hui%S`x3;@+_@AQ6bu-Re$Iq`BZl9_?w)PvZ4xM@Z>^A1~M0aw zBgyccPGeqxsLESbv}@|LGm?KU--?u5YvYaW6NlR(`<~N#>qjr2)%&H-Oy_0!>KD!@ zH*O9NS&f^0WqI?ytFAXnXRmqU4Oc$lS(mMxEDjhsNm98}Mw?P|cG*pVjT6SE^k0-I zFHQZ}b&;wtWk2vz-$(-#&!MPrU}{RwVP6w2KhP~hJq%wBZ`)q0Z{O7H#!J5`j#uQ@ zytKG!N?qu6?>M#VC4b*5ckEvG{JE{lGuInuv}+=vFYP=&|4zZ`wR|z>Fd|Zg&{5AJ zqh(_QQZYpXRdC$3w5I0u(eRNO4i`g%i$Y^rk6A|&LrHMckPTo%I59Ud)!8Gl%t&eZ zdz$_J6IX6tcgu0Jxnb;DcWb@9>G2$LELK8e#A~DEW^qIV0l6jlp-CXI5`J@Dpe3Y0 zU>zhUK4n@+uYZYhG?7v!jbVJK_sYZtYxlDRmxE&unT<6?<39H-5PXUzcHtx9FLIDe z#&&Oi?j2K;0J)#Krzoqp781CVwfh?pW+8*iBdCaqcfC)mHV(Zh_x@f2$>wYEQ%cQq z!Usni5C62K1GnYx%D;-VFt_!dyC1uhnW)&^|I)xM$gYPRUkY3<5d)o7T~IYP$a5~W zSf$O{RhJElq2?D=r2|YDl;-XT%||su>|dK#zQ1>u_@h&mH`RJi1;5IS*X1jo^$r@Y zT?~#0ckbA #uY9!tNGBVyc`r7Bh@cQK4BYAoE4>fl x5s)oeewF?@HZ+xU1t-NO!$b-E<6xb_wZ`d=`h{qorzVd9YyKk^* z+YOWVk9K}(TYhBEmVUa}`>)c5Ms?dmQxRAOZJ^^PNi3jV1y%t+Pz25j<22+Pd=(UO zj`1SFPuZ1P*rQa@EYIhf3?G6eEgum4<=LTE_AX4W#BU#WHjUTkpPoXv?9TnMw|Ipj zec hX3j9ufKB52PAHJWTE|L`ox^QZQ}Cn z e%U6EieZRExJ3rg!%nz-Rdp8N!?z}<&v)7(`!^{8enxt^;OIIAa(|gPG`0J%V zJ8-_k#L|t=zxC}Kiz_>p))>FeP8P2n+5GT -23?M%QszdM}q^Q^x_*If9nDN>dlRt z9(>oS?fSK{xAp8v i5EkaM@+MsWV4%Nm1a7Y%l||Iw|@sNp$)y2V5#un9fyRu zPkdnQ$V7B@>km6mW?|)7HuZtq^c;O;QK&EKvt_x;&jg@&!jSG;)(F>s` &(5>XxN_dRX7bdl!qP20^Vp`=l=*_joW17H z>%*7#UTL3+sx}V6X ~hfK3W=KSuPG)1E4d97jt* zT9Rm +Ku=Io&DFS_U^-e9F6`6ZQ^w z+8f04V+>=zy7;X s+ayv!bg%PisV-dbe*ZgL~o$-)-1V8X(d3!Cl}w&wC$Gq1r3_5Kg#YA4K1=ifhf zlIEM}@L>OUSHP1)z-H>CoWiB1t45k1tKbFHVrd!Wspm^M+X;N|Y`@|sX{t7V=27z% zAqD@zlgE_pocrR=!F3N5p8wz}jp>{E)sI{rgf-K8b$e;SJA3}TUTsycJ39L4lKNP* z;f1q?Uw?-7Ppn=mPkwt4NuINHe%q ScB1@qoYl`qqXY==;yTy1u79B3!2)nn^u%xw!PpC4TOev7vp> zbbh0Xk9O7e{$Od>sm^eJwmosayL)V{bF}r+h#dd3_0wwxFZ4^#*6!>7(yrXe!Pvx2 zUra>S6U_wjiX!p~3pvw^A@n>?g)mQRoLn|B%|;Bwniz=K7B c4l zxpL!;FHV2vLheBL!0340c^KJc@r-=c;6yRp`Fwe0p3l`QW7l3Tobo0ftQ|FL2~-NB zE1luT&F w=PSM z#=$ kg!U z{KHad3hJlcag_bS`oo(a+H`tCY~EYmUV&G5p07@PY~uK*>zgzkF4X23?;BH%iSs*O zkTv I1J;-dy6p MradVpmZ5O zBjrl};1AaCUN7oT2M_=8PtTlAcMg_*?~7kFLs_^{D*VH}zdm^43b_jRL1>Xr!#Zd# z{MG}%#_Ws4 B&997DLs!_ z02w&5&xHb-V#w*wpQz F@ezgSlrH@*L;09|W-e=VzaRF?h>fICsxq{h$HxkJ&{o zUat#q65uWkJ4F4 oiT3WP!l%CTslwE@^ET8zcmL-*wc1y{{;(&EQz+q(HPkE( z>#%6K;&mgNh33Ieeep~K4sh-5Pkf$#;WuZB=@``VA3Ofi(`({M_5xa~QlC;5M;Gxf ztm}UEhQ_`VgEBOq|Lv#M%dWu-3ceu?MXzlw-E-d@AIh!YIi0-kx97ex P8D`nv!4Y~`Pl5m{ zL;|&5=C46;q^gv+Ueh{`W`sSfWc5;VsIhcuGrXGKv3E~p&u1LLSzS>3$z$1`{JmFC z{V3$iPhIhJaPsL7P1>rrIMB{Ju&@5IeCFV6byB7Xhy2*{2gcrit~_7Tu9I4?JXCsO z_GJ3hO7Hf36(&FNn7vaOy6TqM*#E|N84a4YO*{G)vxwj NBbesV-ov z*Ci$udPu7{v&V$JAhqpOIGZi>;?Z3AWa)Bs-@D2i7OoR+Dm?L)C%$;iFMM%Ee(V6; zo@}vafAP%Q;$OJ-NBjf7@zlfrG_&De;R8dPje=3wz3*-BxbB-D|C8^Z6YtxPm9X&i z3*Y TCBklr@vVMmWW?hoL+?n|sF(=1 W7M=uL;!@L%4Oae#B$s#YyK5J{?q zh)Etsw&ml~cHFfRN(7Rq5pCNDD#vG`v6I**yoFO&4%ZrgH-yiJroR2Y^61vLBT$@? zV5ylC+t8g<1B5`1GC4+)NiLh5Z&P9$uILZAqR2@G2Zm#Ev>jy-ShQ~>X8`T-2$V($ zn=}2T5$=wbF|vHmXS)=!{TXir+dF(O-NRi3fq(k>U-+F*i|h#P_70T~_#bAt a2DY_eidSz!`Isz@+|Uj#V`mOc$-k9;4p zqu!f2er2Wbf!{n=#(QI542+pa@=pHnj3G9g+W9p1H`-)ZkDVt1X=udFhUr;rvOyal z!g6@~3wHF(=jUH76`GU3vhm<=X*Qn+?eCNyJUH2@EW3X>A2SozJ{=|}8}M|xPur85 z?SF}#0eIKi`qY0Jz5rY7p_bY0U$wD&VfL9X9G+pteU?}F!Hc=scOuXU%O|?$nm+sY zGZ6j54*Ep(p4puD $DyM^L_yXyv@E!0*Jl0u{ ?@guVhO!4fyV7g#d+uX @8NxHhLqkK0-Cz00H7iRm-p^@p#Fz~~@UeZjzVMZ=pHEow9f33%Ay3P62jQiR zbv?F&K?wc7fy)giK$7lZvQ!&iIp)9VC*N}$C+qmfI;l4r?#K|(ez|M|l SF1oNw<^6hRs`E_x06^alq)!v_Dms6 z ?C!U0|JRSTO@PE@=tgA!?4I9Rk@)rO`{nXGeCs^u6k zG~1R`!pu$eO($Lu{#?UPgbn8C-@a}+MP3!Jg^NKnFzdJ$UP@I>Bgd(x<|8=f$j>7- z4NCI>z8MTmSdMdOxA@soGN3JYSJPWylNJkbx42mO?5C0QUNuUvH9{$V=Fa>{26 wSe<43fB?REla9>0ld4Rv8pO6sn0+YPMTpyM>aE z$xLB{DoVaL*|TxSYkn@DGmoHPG1eeP=9fm>TC+S1u*L_9L-r&5P;YiH3BBiQo$;xq z#r0nB#KK|3YiU@XsX-g>_sG<-BR1?ozAPcP!&2+nWo77n)`NTgBGp&m_FbC`-+y`J zch#6w&UgPNv3VR*V5tJbi! j{N|?{~8*#aqw?nWZ)mL9iVJP?~;GTo4&6657BE zz( B8fG{T%E(_}f}*b*Am+P0dqj&-=#rp03CyoYH*z@$dQZx1z>^BO Q%j;%O0F!!#RTsYqO_8xvSc40jA z)S=ozv_2+! xn~s0u3$OVD=T^!V{H`O(gmmK4Tdm1ixG?1`PA tPKoy~?s@PA{CsN71dvYQ5XxzS^OCJ}cGM$tRVO3o%Odb1dX%)zKC4y60qLNm+MV zLZd4#lu(ud^%Fblo!bflbvufZaH=ip+YZeERG1auN-Jn?-9&A(P!9W*q#RRX96B9| zkr@kSjIR@$5l|9_>bA9&&ueQw4SzBAEB_Un<~!Us1^KykcwwlY0U^QqG)L@n!=OYY ziI$t&uw=5jn3X%@O^YzwA8|C$ Q2g|+dl1^b zbm;^fFz*(}D~CR1{BFt&u&Z7qlG%IRtaH(H6dh#UtH8N>WDiNISF9{M5Vn1TKKZjB z7RDgG9=>!5WT~WKA|o#J3S1lSx?uLol&d-Api3==ch9xEMKu_tpfD?(%C_-dVo1;J z8(17;7Jk(=$&=2DsLyHUA6MVZZ ?Mff}Vj^YAZ^~SP z(IsuRGCy&)6_f|hQkP;GX{rg~lY1ulCuGRO!!$N;K8<4{^s9Pv 5!SsC=4JO3 d? fQ*B!l52Qrv)`<}l#eCG|e_Qf%z9y3PmhxTa% zLul3OIDknGl|hq$Ewig8J|=8=fT7AN&E}QogO}BVi~Ao(V#&_43FW{f3zPlBJD_qz z^b>^71@QhucDZH~`?K#l0$r>32NV}+zV-Jn`VrAlp*&X0sK L`$FTZS8HVWeBv_t&XEzYlh-VdI>R_Up=zxXMa3D>R^;@qLh&)MR2^Ztn4 z)Uwf9$k9!S*vxB|n<(d#N&-^iB7}9?wyGihQytnCi7laYEq8itWH8+@K_*j18dETf zP>AJTuh%zCgah{S4ab!KkF+-dv*fzU1W)Yyd-1k>xmTvDRHe<9N@XJnFOoN58H`zs zF$PSx4L#lMM)<=GGyU;R)4)J8n5K>Jungc~^#b1T0Jeo}%fhxcOR`E*sj5^}Syfq? zZ(n1N8xeQTiI-*EHa%a@I4bMC%=hBHCGNTZ`Tuk8JtsG-%P&A?Tz8#v`4b=ehcA3t z+J5xSdnc85{)ac8M8 33yJTnWmO&jzfa|-&ShNODLz0-2|{1 =Mqwh~$0lIr6n4my#7U5IhM-+GkytvSwMer?z(py1 z-F;M9m-qJcwO;r>e3ZXuZ-4*31Jrvv$&8P#=lz$g{o%&qArk0#xXSS7qMw06f{*eV z4R(Cu?f2e$@6Y_xDdmF;c1dEqJWSKQ^TRj2?>+yvz4zOTvnU7qgz}qtQtnA!j@IcZ zb$2xN^1556NbG1 yDwh8N%;ls#A(DO z=X>`3x9u#M&sjTva_WPRzyEh?-9D(#)v&F%1E>FBkL%}qA@$B~_6)b@^_1KY!dddZ z_S$^uCKVDbIubs-Syu+tU;No>tOUpWhqLHQj}VNg`969piys2oAdl9w^9M`0HoNHe zk^BGD53QZ y#%Na!WxVt_eY8;S~yFq-aXHn4Jk=sTO_%#7hv6*C{ej0^bHx z@U11NE|tOELpMnKpzp$7M0|1r4SivAcu;C _d{h;qaPRc|iRWHhst~lSpiHe|kraoZ zkEm`^VLI>wE!FTBVTugdLQc|igH+wc;g*1;phOR*yS=4Fz>{K7bX%Xm;YQE2`lDag zpFMKT5yZDMRE+}10&F~FcCWl@{ZLTfZ43{;>3d&v&+*%izhvpr^bhpc+_-w12>QVM z$4BqE<*uI`k$<40ol-k*<6YnTUB~GqKos=Xzl`sF@|Mr<8`1h` uA6l)yEq)yi#;0C?TH5%b` h7d=5$TyFPu}FFkkPeP8^$(~)f&hu=Ft|Ay-6D}Q`X@WZC~ubkAnuY2m};hJAM z9Ioj5>{XTI-z*$7(9TEvI_sctwKXiC~YeCn&l{> zJHo*@0_GArAcVSg$7QbK|JVIH{=<(>w7bupek{HpDx2-s{o0%U<%Q?&SifiW-yGZd z)bzUR-n4ma{RiqL?s%4gsEL4F@4rKq!~U6m-|Grm?DvqnT}JZT7}-cQY@~c DK8YH1iX`)NPgb*ir-YHs+Q0^ZuH|hX z^^0S&U@^oqo9sV@W^tvKz3V53<>X&kg5n?%CX76XHu0dR8;_?TA#i#KjnHa|VO|WU zjRsdnxrAfiWQ`{ARbldAB>va$g1cXR#|=-k)|Ay7XKz8ZQfwYt&zIh_v-G867y7rZ z!nC>hZsnIZo6{@!xkjr*z>ky>3EeadFswg6f8Ecm2LJBq=DFlr_|p8PN~3 ac;m6&+w(0!nSMGo3j@9ew z8eSI`Fs6_zF@n )>j4ia=vUEnE2BD>ef)Fl}`Dtpxecz|- z>UhDt4b_1*x5onoXgmDZ5544=q4rSliD#}GEWiJUKXm# j)AJJp$3B8mt1%J zWq*72-}ga$;ZGlSet-L%y8NZLJblN{y?6A#ea~%Azczs^6t JWF?4~co`*8Y^`+M6j?0n~_M-F$n z Tg5?i=^@g1~ygs`7)=&M;iJ{tfnr3!r_c(A~JPow;QY(ggWmXR^X#dQ* z%Lo5d8C_jSv}J1l``|O36FaxR|MBUubJz4 a&qP%_`;JvIE6c|>wbQsM)LMb_1O9Mwf$rErt7Tsey=($ zT1KNXfN8Y%gG*PQFZ$nkPyYq};{L7D_dg?xVck@~^u;1f5}`g1bwbNhB#^mqXoRLb zN%B}IbgCe4Dms&Ns%c$ham={!g`3yg&atEE%7=}U%XiiqY&HD=fBNQH=lJI7;= FH;P2{ndk(XtQzb6%7ZKDtVFnQ>$3fio6$4hQGLb9 zVDF~gJMTLAOy%gSZj~mKhcOgGN7J-4k@^mo15pcbJQ-mkYf4D1a|yEC$s{I6f(EG- zOLsn029&6u-|-#6sml*M`lxc#b)DdIKRB=cp~oRkgn#wuou1l%L=gC+&%b@QxJPJu zoB#0PJHt;KH%oTq^6itGcZ*jEkk9|h!xy?us(J 0Q5>aZW zz9`nU)JI*wg+>@@F{L`RLa8$2Gb#72SRI|bd)m9Td${uJ&bi%Nll z^4gofDm>xLe$2S`(C5z_J$qOCr7QP;DyVPl?Tm!RTTebHIvYP=|BVA_)N+fL?r-ET zT1lV!J!Ws1*6EkkHr>C7i%Zwm^4D)2{_0~dQucb&r1cXgAI*o2x~|?K+`lw-_U^jp z _|Su!x3%8*K-PQs)yCmNgKg`By>mC&;v3d3#TOv3@~R;wIzKuvAkJCr zhM-tE(-MTK9Q#x%bE_s6%3m~Tb&BN84I^eFu?rB%!(-4qeeHGk>XZ0GeST=~+3V%& zuMC%jH@?un@Uljr*e@|2;&&O>M;9MC{ex3+Dc*+D7mEr6C$cxrE?!~pxOFt^eYgMM z(T{F!R9}81daC}wlZV!S>_+cTPbkvsZb;8AU*UHfAJuZs?yB9=`q;iGD2%E=;;kJs zm4~)ck_oQZ5kn?y=ak2giihA~ORBmbI+76-<4Iy@+L)!Xb~L{G;y=`mtwnqL#vOM) zaN+Y``Kj7lPn`M7S18Jx-u|$4A$a-nA8nlHwL9*dd8bZ%Oj$qr&PT1z&e| I z>|uj_Hs?2=kbY8mW*SUDJpDb%-8aie=daeg@r{kst89O3@44#S+sL*D>RnH^p36nS z%%iq?ta+O#|K;KR@!K5hCiuj4$F^2}=w@CW-~O_dCoddgpIdv$D;{v4d|mK{FHYNk zvVHivO?j#Lp~ll<+qG}q{lLb_5+Owb7J^NxoSO?XssxG5l4t)+zRT czyK#Q0r%rFZ zJo;?&fm>#`^&YcFh94?(4L^3n^bsYcR6N+j?8X#caL14a4V_kAdNnhW;)og3nC=*> z>Je 2C)nXcAUaVDi8%gmxOG{^x(Td+h;jV67u9jStn7It3+F)(H> z4{S{at}#dV0DVTjRy{{K$^4lf-!uxpEIxHYxc - $$5$GO!h471%H$J|tf79+x z?WR-59xYd7J|cXV@UAoEN&2T=wO)C)d(&4QkH3q5R)6}fD-RcccJrnBdgZy
6NQ-RVHZFYY9by@J>J3BX>dhvs2m+;vK;g!O>-g(2y!;ejFudFy%wr+pVJ?o;& z-v1BOAC%V(D8)vvs>NIkbS RG**E3k+3w35G5&E}Cs|v$U zzqERj%I-_8s(4<0RS+h9`?DK=d^ J4rD!Vg^dn8QU!c*Tx>en E7O0Ap7ZUKr`gN8ulzw_Du_8m1QgT7jxDY00s&aAXmHUSy^}O++&za51 z_cp(F{-SDq;qg~rdHhq-(s20You$s#vROxGpS4dsz3D7peC4GbCZSt>V*SeJA6j9{ zFMR6rC!)^R`r+B*viQRN=3u${ `C+TYaY60|Erg7>Dxv9$*<<0=p7S37fAY{&$CbPbI-l{!z=C4Umja}^y!n= zJZ4nRJ>2=)P?qAe^^?EXcwoRX8J^!h={KMK%VPgShh*iiv`gJ%FaFANn~A+_s-Gwx zlujd-53liUMKAhK&rh|7&l^qVzp(cB(jTs^zHr(8(^k5}oV)j*ddc7T4;jyIeZ_yM z`S-v4^M_WJKK07zlhqqPaiVb8uiX8yoS2wc);A-uUuN+as5Fp3tJHl#xV?M^kFDEe zFTVc}eDd6>v)Q8;0d9!yWJjMk@x(j+Q~&SYdS)v%|MQ;%ocMC>F?BK3b1V-3aWyX` zqgZs8ceZz6y9>)Z#`4Zehw_R#rl{mQ#`g50Yx%1eD`t09ROU_3y)4v4BJBH_oNkKh z& NjDy5=NP5S7r!}@;Fa{RWoRgcnb!k=SC9kdzb1od99f+I?$L67)iO5yAs~J zBXkNh8B|VUcy1i$E;GHTn$GK7VeQ_Y`O?Rk<)VDcw6WT3_S!HRSEIRPufvmS)0pb! zS=VmEg+Q!T&(HpgIlFJ!Dsx#;ojTtpF0bSJmFod04r0zLISO=(_iZSOShu8{VkCZp z%1^0fjWt?F>AxDDl{_;9GavOD+6_anHoti1=L+xe>Zzo1c*n6GToaZk^H4|#Njcr5 zvO-&VP;z3=$*DDdmV{oD)TE~+Cb0kb%XA9O;|P513ZWyq!h1jR!#6$q0l9Q+L_Jp* zPf+nO^UWWHH-F$A_kms6Bhm5h`_S`b@1O_ie0m`c>sRn+eV_C7Jpo_qJ}%t*0eMmb z6JG~U#wPcE^v&?wf;)aUyl*|6l$kE+s7-$HzGq#gLrf(h^r@SpcWn)zEC|mV`4s!e zm8OMQh-5oO6W=hTEFuZ|0G%6xF3ws(SQ-1R05*Le1~tBvQI=k18YjAA4HIX4cx0j> z+m>HMeWxYvEu}%Y)?YhkKy-v
-gNpSFDQ9U-&q0YBAA6V*@ljV0=ugP zD?9e>J5mRfu?@aayS%v%@S0O5^x9{Y6?K4@S2?$(Wst$pX%4awT-30Wc6VayT)XAW zu6pgowV{?S?>W2IY+dXZ;?mZaUisjExRAnJwQhTF=yXEo=u`EK>a(JuOmvdC6NM>C zVbDFAXh?k{(?pGxf*O2X#b&-OXIwBt6Z*)R6>Io1Slx%`qPz;Tt>Yhd{nvhc3%u8V zq!u)8{9_a`?aPkPQG|MxwvKwp1l_(fQ`^d{rjxs$@_lq!OwX$zDE{_0^8-$DyS zVQN#c%2Z8BxmqYIS%NkLZRkOJcY`toPZgitzV;b5zf1pen!Rr0t0#r67en~mG);aK zqH+E2v(~HkzNqF^_2!M;FXYg=!x%M2jlG8yuwTEYH{fH4)8dcp>G9eJNkYf?)_1L8 z!!bNm+~r((K8CyCK?Jr}qS8lj{{nqnE(ov0a{#>|Y#hFJG+z4 N8TsQXg&n^O6;u`Fc`i4@mm0x~w zFRpznTz>AU5-ztVKYRVDC*Z^l&;M3!=U8mz?|R_G6DQ8z_FKXMS`u82pIxQB+8w)v zI5}8FU%X9$h2 w#rpSTbQ_}A3JUPj4i=`khk>nR@SsGi!rKyoj=GgJH5 z{smR>?2#_XMh%2U9i~My#Ibsz5$iI3a&2hHzHO3F&M(8ZkVzqEqouj*n?~XgSmtwr zT0jIfbGU38GCr1qG?(!s<-U<1S~!&VhL)1hl(;ss5eWUVatc09u E?_+3Y1+iCk?fxD49XEAD>s%CY(KGY_BEYe-pcc%jJA zo*CrjTw-6m_RO(UROGrNiI!jipN{Od=y%LRAFmp?|3~_djtiv IA5=F&zm&T$YTTd;QR8FHD8U9iWXWi2E+ zl
R6(mnH&pLpN)%adq`5L#v2z9FyrG-tFg%GHw3L+s^`c_ zS_6>A=OXcAxJ0=JP9DlmlAOzIDq4n|YADTW>bq6p1bNz!F z1+zKPN>bv~8uWx(7pMq@o1dn1mjbo^Rxy6^-a%t9Q5x_2yOW(0A6ogNGrR3kTm9GE z>a2F|`Ln-$cKhlwA{67@c^}2Nx7M%OcDD^~ZJIgOU;}DXf4pJrZb;*5x8-)?EL-tX zXx^~j)%V5`REl|`X#+ELTua(>MJ3`;q%LHYt~F6%o``0sbX8SM61gZ+ 5*1|8$)9qS+wi49q`x_aw`tD8*oO6EtybkG!C+)F1 za{N^orwMviZ!8TrMQ@e{2-maC+KvV@%^TiuUhCUTmdu4nGtbrSD}vig=1Y^Ja8fSK zfk%OEd3LaLvUTniD^d0 9+z9Xq=Z4w)S=t&Wpn2!E3W`bxT5jU8U zf}E?;NG|fCA;+dVOWeY@C8xU{A)pF^#C)nk8}XT)I>LN;poMXurd5{a%X5gOu{T1L z8lJ8tH|w3=hoZ!sYGyLMRuYqz5y0}Cbc*E$){Z33H!pLMrxDlqTtZG;Pw{f coW`g z?ix{*`B83wI#(0)F>{)XQh=v ;v(i2O^+lHmm%DLG<+26S8VL>@meaM4-;yOhHL|JW zC*H ^_ z49ZQGiaN3}q#&*lu~x*Lal=H6tm<({yKix9Ypkfof@?)BmEfSt5*8)A!c%mus^SS1 zT~8e=1GNYwMQSBeJCjTL*6z`5fKMs3ry^73SSi}c%mjXE P%JslJyJtZN^3uL?5J@3r6663^}3B7yD)-4%0>@QmDz87 z)g8RJtEWLz@fA&&Sb|D3Co!_&3Htg>VF)xHQ@DbT7GWc?Vv`lLcU%#ROrBXml-OdS zf}iP;oP-kfn#=I-B`Zj^5UJZN2RRXBJ5HgHniVD_Am+KoN1wfA_wV!JOv?>Kxz;GC zMAoEfL4&4cI(+0r`7+USF6NXwLt06r?Aj};h!hmx@D d!sT >Jq!A+ZeUqFnz-}ET#4i; zYs|rr5*5r*L#>8$n2Yrg|0s(3BrmkYV43Jkff1QSWTBH5tD+f68vewtG-{3Q5G03z znn+Y)s~RB!dtxq0I36aJ b|Rs1ZF1Ka2OJuy9!XG*T|Jhf2(L} NK@o`6J%y`4l~eX6??#*=a33^FOW^GHqKLVpnv)i`3#_O&ofw_ z1g%Li&z#A0=KBtQPss|zc_Z*8s^N{s#vLooW|@-6p$by696mph_!Tu?tRKp99EZs8 zOiI20%oIY3lT7i3vYx9b^gUIw@>*6n%>bg*h@v(WiV!PfKmm?^KSD1y&li~~e36G@ zT|y;URTFd*2~TQ~lo!=P#@?gV6Ez%7;N;9h^TE%PWxR+O&oaCO3D>E{I9V=L(($S6 z4jKvNSSzcJ(F0_~v@DNUBGo4+yC*SD*huG;XM98JXY}h{*r+{#WZ{3f^|!#~rLD() z;`;|$=frE(_wwC#9NE8mQ#m{S$&20kKVc=5a9Q2awbo9J*QP7G32Zo=FZCq1(|4PZ zUmc@B0&k u1)yRabD(xX- zjd>EdCd+gc`D2C-Jml4pz}$cfjw6Oe-pVu`mA4L&sKt#LSUG~1tRt7PBuUqp0s0jE zWGFhZHBDG5re<0fiy&rB5Q-=#)S@tocEHq(g#``>aVBQEE#(s-%xupu$CB^uTYqnz