From 3260b476e5fd8947fc02a1a05685990991227a83 Mon Sep 17 00:00:00 2001 From: grayTerminal-sh Date: Thu, 16 Jul 2026 23:55:57 +0200 Subject: [PATCH] feat(ui): add investigation session and creation workflow --- docs/tickets/{open => closed}/TICKET-028.md | 0 docs/tickets/closed/TICKET-029.md | 933 ++++++++++++++++ docs/tickets/closed/TICKET-030.md | 1115 +++++++++++++++++++ include/core/application.h | 30 +- include/views/create_investigation_dialog.h | 58 + include/views/main_window.h | 60 + labfy-investigation | Bin 159784 -> 182672 bytes src/core/application.c | 391 +++++-- src/views/create_investigation_dialog.c | 864 ++++++++++++++ src/views/main_window.c | 236 +++- tests/test_database | Bin 41112 -> 0 bytes tests/test_error | Bin 32688 -> 0 bytes tests/test_investigation_dao | Bin 42288 -> 0 bytes tests/test_investigation_node | Bin 25824 -> 0 bytes tests/test_investigation_project | Bin 51616 -> 0 bytes tests/test_investigation_record | Bin 17392 -> 0 bytes tests/test_investigation_session | Bin 56880 -> 0 bytes tests/test_investigation_tree_builder | Bin 22848 -> 0 bytes tests/test_investigation_tree_model | Bin 17368 -> 0 bytes tests/test_statement | Bin 37456 -> 0 bytes tests/test_transaction | Bin 32760 -> 0 bytes 21 files changed, 3613 insertions(+), 74 deletions(-) rename docs/tickets/{open => closed}/TICKET-028.md (100%) create mode 100644 docs/tickets/closed/TICKET-029.md create mode 100644 docs/tickets/closed/TICKET-030.md create mode 100644 include/views/create_investigation_dialog.h create mode 100644 src/views/create_investigation_dialog.c delete mode 100755 tests/test_database delete mode 100755 tests/test_error delete mode 100755 tests/test_investigation_dao delete mode 100755 tests/test_investigation_node delete mode 100755 tests/test_investigation_project delete mode 100755 tests/test_investigation_record delete mode 100755 tests/test_investigation_session delete mode 100755 tests/test_investigation_tree_builder delete mode 100755 tests/test_investigation_tree_model delete mode 100755 tests/test_statement delete mode 100755 tests/test_transaction diff --git a/docs/tickets/open/TICKET-028.md b/docs/tickets/closed/TICKET-028.md similarity index 100% rename from docs/tickets/open/TICKET-028.md rename to docs/tickets/closed/TICKET-028.md diff --git a/docs/tickets/closed/TICKET-029.md b/docs/tickets/closed/TICKET-029.md new file mode 100644 index 0000000..d301f81 --- /dev/null +++ b/docs/tickets/closed/TICKET-029.md @@ -0,0 +1,933 @@ +# Ticket #029 — Intégrer `InvestigationSession` au cycle de vie GTK + +## Contexte + +Le ticket #028 a ajouté `InvestigationSession`, qui permet d’ouvrir une enquête existante de manière contrôlée. + +Une session valide possède désormais : + +- un `InvestigationProject` ; +- une connexion `Database` ouverte ; +- un `InvestigationRecord` chargé depuis SQLite. + +L’application GTK utilise encore l’ancien objet `Investigation` pour représenter le dossier sélectionné. + +Son fonctionnement actuel est approximativement le suivant : + +```text +FolderDialog + ↓ +Investigation + ↓ +InvestigationTreeBuilder + ↓ +InvestigationTreeModel + ↓ +MainWindow +``` + +Cette organisation ne conserve pas la connexion SQLite et n’utilise pas les informations persistées dans la table `investigation`. + +Il faut désormais remplacer l’ancien objet détenu par `Application` par une véritable `InvestigationSession`. + +## Objectif + +Faire de `InvestigationSession` le contexte actif de l’application. + +Après la sélection d’un dossier : + +1. ouvrir une nouvelle `InvestigationSession` ; +2. récupérer le chemin racine depuis son `InvestigationProject` ; +3. construire le nouvel `InvestigationTreeModel` ; +4. ne remplacer l’ancienne enquête qu’après validation complète ; +5. mettre à jour la fenêtre principale ; +6. conserver la session jusqu’à la fermeture de l’application. + +L’application ne doit posséder qu’une seule session active à la fois. + +## Architecture attendue + +```text +FolderDialog + │ + ▼ +Application + │ + ├── InvestigationSession + │ ├── InvestigationProject + │ ├── Database + │ └── InvestigationRecord + │ + ├── InvestigationTreeModel + │ + └── MainWindow + ├── Sidebar + ├── Workspace + └── Barre d’état +``` + +## Principe de remplacement transactionnel + +L’ouverture d’une nouvelle enquête doit suivre cet ordre : + +```text +ancienne session toujours active + ↓ +ouvrir la nouvelle session + ↓ +construire le nouvel arbre + ↓ +vérifier que les deux objets sont valides + ↓ +remplacer l’ancien arbre + ↓ +fermer l’ancienne session + ↓ +installer la nouvelle session + ↓ +mettre à jour MainWindow +``` + +En cas d’échec avant le remplacement : + +```text +ancienne session conservée +ancienne arborescence conservée +nouvelle ressource libérée +message d’erreur produit +``` + +L’application ne doit jamais perdre une enquête déjà ouverte simplement parce qu’une nouvelle sélection est invalide. + +--- + +# Travail à réaliser + +## 1. Remplacer l’ancien objet dans `Application` + +Modifier : + +```text +src/core/application.c +``` + +La structure privée actuelle contient notamment : + +```c +Investigation *investigation; +InvestigationTreeModel *tree_model; +``` + +Remplacer le premier champ par : + +```c +InvestigationSession *session; +``` + +La structure doit devenir au minimum : + +```c +struct Application +{ + GtkApplication *gtk_application; + MainWindow *main_window; + InvestigationSession *session; + InvestigationTreeModel *tree_model; +}; +``` + +Ne pas exposer cette structure dans le header public. + +## 2. Modifier les dépendances de `application.c` + +Supprimer : + +```c +#include "core/investigation.h" +``` + +Ajouter : + +```c +#include "core/investigation_session.h" +#include "core/investigation_project.h" +#include "models/investigation_record.h" +``` + +Conserver les dépendances nécessaires à : + +```text +FolderDialog +MainWindow +InvestigationTreeBuilder +InvestigationTreeModel +GTK +``` + +`application.c` ne doit pas inclure directement : + +```c +#include +``` + +et ne doit appeler aucune fonction `sqlite3_*`. + +## 3. Ouvrir la session après la sélection du dossier + +Dans : + +```c +application_on_folder_selected() +``` + +remplacer la création de l’ancien objet : + +```c +investigation_new(folder_path) +``` + +par : + +```c +investigation_session_open( + folder_path, + &error +); +``` + +Utiliser des variables temporaires : + +```c +InvestigationSession *new_session = NULL; +InvestigationTreeModel *new_tree_model = NULL; +GError *error = NULL; +``` + +Ne jamais écrire directement dans : + +```c +application->session +application->tree_model +``` + +avant que toute l’ouverture soit validée. + +## 4. Gérer une sélection annulée + +Lorsque : + +```c +folder_path == NULL +``` + +la fonction doit simplement retourner. + +L’enquête déjà ouverte doit rester active. + +Aucune session ne doit être fermée. + +Aucune erreur ne doit être affichée. + +Un message de diagnostic avec `g_print()` reste acceptable : + +```text +Sélection annulée. +``` + +## 5. Gérer l’échec d’ouverture de session + +Si : + +```c +new_session == NULL +``` + +la fonction doit : + +- afficher un avertissement contenant le message du `GError` ; +- libérer le `GError` ; +- conserver l’ancienne session ; +- conserver l’ancien arbre ; +- ne pas modifier la fenêtre principale. + +Exemple de diagnostic acceptable : + +```c +g_warning( + "Impossible d'ouvrir l'enquête : %s", + error != NULL ? error->message : "erreur inconnue" +); +``` + +Le dialogue graphique d’erreur est hors périmètre de ce ticket. + +## 6. Construire l’arborescence depuis la session + +Récupérer le projet de la nouvelle session : + +```c +const InvestigationProject *project = NULL; +``` + +avec : + +```c +project = investigation_session_get_project( + new_session +); +``` + +Récupérer ensuite son chemin racine : + +```c +const char *root_path = NULL; +``` + +avec : + +```c +root_path = investigation_project_get_root_path( + project +); +``` + +Construire le nouvel arbre avec : + +```c +new_tree_model = investigation_tree_builder_build( + root_path +); +``` + +La logique de construction du chemin ne doit pas être dupliquée dans `application.c`. + +## 7. Gérer l’échec de construction de l’arbre + +Si `InvestigationTreeBuilder` échoue après l’ouverture de la session : + +```text +new_session valide +new_tree_model == NULL +``` + +la fonction doit : + +```c +investigation_session_close(new_session); +``` + +puis retourner. + +L’ancienne session et l’ancien arbre doivent rester actifs. + +Le message suivant est acceptable : + +```text +Impossible de construire l'arborescence de l'enquête. +``` + +## 8. Remplacer les anciens objets uniquement après validation + +Lorsque `new_session` et `new_tree_model` sont tous deux valides : + +```c +investigation_tree_model_free( + application->tree_model +); + +investigation_session_close( + application->session +); + +application->tree_model = new_tree_model; +application->session = new_session; +``` + +Après le transfert : + +```c +new_tree_model = NULL; +new_session = NULL; +``` + +Cette remise à `NULL` n’est pas obligatoire si la fonction retourne immédiatement, mais elle est recommandée pour rendre la propriété explicite. + +## 9. Conserver la connexion SQLite ouverte + +Après une ouverture réussie, la session doit rester stockée dans : + +```c +application->session +``` + +Il est interdit de fermer la session à la fin de : + +```c +application_on_folder_selected() +``` + +La connexion `Database` doit rester utilisable pendant toute la durée d’ouverture de l’enquête. + +## 10. Ajouter un accesseur interne ou public + +Ajouter dans : + +```text +include/core/application.h +``` + +la déclaration suivante : + +```c +const InvestigationSession *application_get_session( + const Application *application +); +``` + +Implémenter dans : + +```text +src/core/application.c +``` + +```c +const InvestigationSession *application_get_session( + const Application *application +) +{ + if (application == NULL) + { + return NULL; + } + + return application->session; +} +``` + +Le pointeur retourné appartient à `Application`. + +Le code appelant ne doit pas fermer cette session. + +Cet accesseur servira aux futurs contrôleurs et DAO. + +## 11. Mettre à jour la fenêtre principale + +Ajouter dans : + +```text +include/views/main_window.h +``` + +la fonction : + +```c +void main_window_set_investigation( + MainWindow *main_window, + const char *investigation_name, + const char *investigation_root_path +); +``` + +Implémenter dans : + +```text +src/views/main_window.c +``` + +Cette fonction doit : + +- accepter `main_window == NULL` ; +- accepter des chaînes `NULL` sans planter ; +- mettre à jour le titre de la fenêtre ; +- mettre à jour la barre d’état. + +### Titre attendu + +Lorsque le nom est valide : + +```text +Labfy Investigation — +``` + +Exemple : + +```text +Labfy Investigation — Enquete_Session +``` + +Lorsque le nom est absent : + +```text +Labfy Investigation +``` + +Construire le titre avec GLib : + +```c +g_strdup_printf() +``` + +puis le libérer avec : + +```c +g_free() +``` + +### Barre d’état attendue + +Lorsque l’enquête est ouverte : + +```text +Enquête ouverte : +``` + +Lorsque certaines valeurs sont absentes, utiliser une formulation sûre sans déréférencer `NULL`. + +La barre d’état ne doit pas conserver un pointeur vers une chaîne temporaire. + +`gtk_label_set_text()` copie le texte fourni. + +## 12. Récupérer le nom persistant + +Dans `application_on_folder_selected()`, récupérer : + +```c +const InvestigationRecord *record = NULL; +const char *investigation_name = NULL; +``` + +avec : + +```c +record = investigation_session_get_record( + application->session +); + +investigation_name = investigation_record_get_name( + record +); +``` + +Utiliser les données du `InvestigationRecord`. + +Ne pas reconstruire le nom à partir du dernier composant du chemin. + +## 13. Mettre à jour la fenêtre après le modèle + +Après l’installation de la nouvelle session et du nouvel arbre : + +```c +main_window_set_tree_model( + application->main_window, + application->tree_model +); +``` + +puis : + +```c +main_window_set_investigation( + application->main_window, + investigation_name, + root_path +); +``` + +L’ordre attendu est : + +```text +nouvelle session installée +nouvel arbre installé +sidebar mise à jour +titre et statut mis à jour +``` + +## 14. Fermer la session dans `application_free()` + +Remplacer : + +```c +investigation_free(application->investigation); +``` + +par : + +```c +investigation_session_close( + application->session +); +``` + +L’ordre de nettoyage conseillé est : + +```c +investigation_tree_model_free( + application->tree_model +); + +investigation_session_close( + application->session +); + +main_window_free( + application->main_window +); +``` + +Puis libérer `GtkApplication` et `Application` comme actuellement. + +`application_free(NULL)` doit rester valide. + +## 15. Ne plus utiliser l’ancien objet dans l’application + +À la fin du ticket, les symboles suivants ne doivent plus apparaître dans `application.c` : + +```text +Investigation * +investigation_new +investigation_free +investigation_get_root_path +investigation_get_database_path +``` + +Le module historique `investigation.c` n’est pas supprimé dans ce ticket. + +Sa suppression éventuelle sera effectuée séparément après vérification qu’aucun autre composant ne l’utilise. + +--- + +# Tests et validations + +## 16. Tests automatisés existants + +Aucun nouveau test GTK automatisé n’est obligatoire dans ce ticket. + +Tous les tests existants doivent rester valides : + +```bash +make test +``` + +En particulier : + +```text +InvestigationProject +InvestigationSession +InvestigationTreeBuilder +InvestigationTreeModel +InvestigationDao +``` + +## 17. Test manuel d’ouverture valide + +Créer ou utiliser une enquête valide. + +Lancer : + +```bash +make +make run +``` + +Sélectionner le dossier racine de l’enquête. + +Vérifier : + +- la fenêtre reste ouverte ; +- l’arborescence apparaît dans la sidebar ; +- le titre contient le nom persistant de l’enquête ; +- la barre d’état contient le nom et le chemin racine ; +- aucune erreur SQLite n’apparaît ; +- la session reste active après la fin du callback. + +## 18. Test manuel d’annulation + +Relancer l’application et annuler la sélection. + +Vérifier : + +- aucun crash ; +- aucun warning critique ; +- la fenêtre reste ouverte ; +- la barre d’état reste sur : + +```text +Aucune enquête ouverte +``` + +## 19. Test manuel d’un dossier invalide + +Sélectionner un dossier qui ne contient pas : + +```text +00_BaseDeDonnees/Enquete.sqlite +``` + +Vérifier : + +- aucun crash ; +- un warning explicite est affiché ; +- aucun fichier SQLite n’est créé ; +- la fenêtre reste utilisable ; +- aucune fausse enquête n’apparaît dans la sidebar. + +## 20. Test manuel de remplacement + +Si l’interface permet une seconde sélection pendant la même exécution : + +1. ouvrir une enquête valide A ; +2. tenter d’ouvrir un dossier invalide ; +3. vérifier que A reste affichée ; +4. ouvrir une enquête valide B ; +5. vérifier que B remplace A. + +Si une seconde sélection n’est pas encore accessible dans l’interface, cette validation sera complétée lors de l’ajout de l’action « Ouvrir ». + +La logique du callback doit néanmoins déjà préserver l’ancienne session. + +--- + +# Gestion de la mémoire + +Les propriétaires doivent être clairement définis. + +## `Application` possède + +```text +GtkApplication +MainWindow +InvestigationSession +InvestigationTreeModel +``` + +## `InvestigationSession` possède + +```text +InvestigationProject +Database +InvestigationRecord +``` + +## Variables temporaires du callback + +```text +new_session +new_tree_model +GError +``` + +En cas d’échec : + +```text +new_session fermée si elle existe +new_tree_model libéré si nécessaire +GError libéré +ancienne session conservée +ancien tree model conservé +``` + +En cas de succès : + +```text +anciens objets libérés +nouveaux objets transférés dans Application +aucun double free +``` + +--- + +# Critères d’acceptation + +- [ ] `Application` possède un `InvestigationSession *`. +- [ ] `Application` ne possède plus d’`Investigation *`. +- [ ] Le callback ouvre une session avec `investigation_session_open()`. +- [ ] Le chemin racine provient de `InvestigationProject`. +- [ ] Le nom provient d’`InvestigationRecord`. +- [ ] L’arbre est construit depuis le chemin de la session. +- [ ] L’ancienne session reste active si l’ouverture échoue. +- [ ] L’ancien arbre reste actif si l’ouverture échoue. +- [ ] La nouvelle session est fermée si la construction de l’arbre échoue. +- [ ] Les anciens objets ne sont remplacés qu’après validation complète. +- [ ] La session reste ouverte après le callback. +- [ ] `application_free()` ferme la session. +- [ ] `application_get_session(NULL)` retourne `NULL`. +- [ ] `main_window_set_investigation()` accepte `NULL`. +- [ ] Le titre affiche le nom de l’enquête. +- [ ] La barre d’état affiche le nom et le chemin racine. +- [ ] `application.c` n’appelle aucune fonction SQLite. +- [ ] Aucun chemin SQLite n’est reconstruit dans `application.c`. +- [ ] Les anciens tests restent valides. +- [ ] `make` réussit sans warning. +- [ ] `make test` réussit. +- [ ] Le test manuel d’ouverture valide réussit. +- [ ] Le test manuel d’annulation réussit. +- [ ] Le test manuel de dossier invalide réussit. +- [ ] `git diff --check` ne retourne aucune erreur. + +--- + +# Audit attendu + +La commande suivante ne doit rien afficher : + +```bash +rg -n \ + 'investigation_new|investigation_free|investigation_get_root_path|investigation_get_database_path|Investigation \*' \ + src/core/application.c +``` + +La commande suivante ne doit rien afficher : + +```bash +rg -n \ + 'sqlite3_|#include |00_BaseDeDonnees|Enquete.sqlite' \ + src/core/application.c +``` + +Vérifier la présence de la nouvelle session : + +```bash +rg -n \ + 'InvestigationSession|investigation_session_' \ + src/core/application.c \ + include/core/application.h +``` + +Vérifier la mise à jour de la fenêtre : + +```bash +rg -n \ + 'main_window_set_investigation' \ + include/views/main_window.h \ + src/views/main_window.c \ + src/core/application.c +``` + +--- + +# Hors périmètre + +Ce ticket ne doit pas ajouter : + +- une action de menu « Ouvrir » ; +- un raccourci clavier ; +- un dialogue graphique détaillé pour les erreurs ; +- la création d’une enquête ; +- la fermeture manuelle d’une enquête ; +- la réparation d’un chemin racine incohérent ; +- la modification de la base SQLite ; +- les DAO des preuves ou des entités ; +- la restauration automatique de la dernière enquête ; +- la persistance des préférences utilisateur ; +- le verrouillage multi-instance ; +- la suppression de l’ancien module `Investigation`. + +--- + +# Fichiers principalement concernés + +```text +include/core/application.h +src/core/application.c + +include/views/main_window.h +src/views/main_window.c +``` + +Fichiers utilisés sans modification attendue : + +```text +include/core/investigation_session.h +src/core/investigation_session.c + +include/core/investigation_project.h +src/core/investigation_project.c + +include/models/investigation_record.h +src/models/investigation_record.c + +include/core/investigation_tree_builder.h +src/core/investigation_tree_builder.c +``` + +Le `Makefile` ne devrait pas nécessiter de nouvelle cible, car les sources de production sont détectées automatiquement avec : + +```make +SRC := $(shell find src -name "*.c") +``` + +--- + +# Résultat attendu + +À la fin du ticket, la sélection d’un dossier doit ouvrir une véritable session d’enquête. + +L’application doit conserver ensemble : + +```text +la connexion SQLite +les métadonnées persistées +le contexte de fichiers +l’arborescence +l’état visuel de la fenêtre +``` + +Le flux final doit être : + +```text +sélection du dossier + ↓ +InvestigationSession ouverte + ↓ +InvestigationTreeModel construit + ↓ +session installée dans Application + ↓ +arbre affiché dans MainWindow + ↓ +nom et chemin affichés +``` + +--- + +# Commit attendu + +Avant le commit : + +```bash +make clean +make +make test +git diff --check +git status --short +``` + +Préparer les fichiers : + +```bash +git add \ + include/core/application.h \ + src/core/application.c \ + include/views/main_window.h \ + src/views/main_window.c +``` + +Contrôler : + +```bash +git diff --cached --stat +git diff --cached +``` + +Créer le commit : + +```bash +git commit -m "feat(app): integrate investigation session" +``` + +Puis pousser après validation complète : + +```bash +git push +``` + diff --git a/docs/tickets/closed/TICKET-030.md b/docs/tickets/closed/TICKET-030.md new file mode 100644 index 0000000..a2bd846 --- /dev/null +++ b/docs/tickets/closed/TICKET-030.md @@ -0,0 +1,1115 @@ +# Ticket #030 — Créer une enquête depuis l’interface GTK + +## Contexte + +Le ticket #029 a intégré `InvestigationSession` au cycle de vie de l’application. + +L’application sait désormais : + +- ouvrir une enquête existante ; +- conserver sa connexion SQLite ; +- charger ses métadonnées persistées ; +- construire son arborescence ; +- afficher son nom et son chemin dans la fenêtre principale ; +- conserver l’ancienne enquête si une nouvelle ouverture échoue. + +Cependant, lorsqu’aucune enquête n’existe encore, l’utilisateur ne peut pas en créer une depuis l’interface. + +Le dossier sélectionné est actuellement toujours interprété comme une enquête existante. Si la base suivante est absente : + +```text +00_BaseDeDonnees/Enquete.sqlite +``` + +l’ouverture échoue, ce qui est volontairement sûr. + +La création d’une nouvelle enquête doit être une action explicite et séparée de l’ouverture. + +--- + +# Objectif + +Ajouter une première fonctionnalité GTK réellement utilisable : + +```text +Créer une nouvelle enquête +``` + +Le flux attendu est : + +```text +clic sur « Nouvelle enquête » + ↓ +sélection du dossier parent + ↓ +saisie du nom de l’enquête + ↓ +validation des paramètres + ↓ +investigation_project_create() + ↓ +investigation_session_open() + ↓ +construction de l’arborescence + ↓ +installation dans Application + ↓ +mise à jour de MainWindow +``` + +L’utilisateur ne doit jamais avoir à créer manuellement : + +```text +00_BaseDeDonnees +Enquete.sqlite +01_Preuves_Originales +... +09_Hash +``` + +--- + +# Architecture attendue + +```text +MainWindow + │ + └── bouton « Nouvelle enquête » + │ + ▼ +CreateInvestigationDialog + │ + ├── dossier parent + ├── nom de l’enquête + └── validation + │ + ▼ +Application + │ + ├── investigation_project_create() + ├── investigation_session_open() + ├── investigation_tree_builder_build() + └── main_window_set_investigation() +``` + +--- + +# Travail à réaliser + +## 1. Créer un module de dialogue dédié + +Créer : + +```text +include/views/create_investigation_dialog.h +src/views/create_investigation_dialog.c +``` + +Le module doit rester indépendant de SQLite. + +Il ne doit pas inclure : + +```c +#include +``` + +Il ne doit pas appeler : + +```text +database_initialize +investigation_project_create +investigation_session_open +``` + +Son rôle est uniquement de recueillir les informations saisies par l’utilisateur. + +--- + +## 2. Définir le callback public + +Dans : + +```text +include/views/create_investigation_dialog.h +``` + +déclarer : + +```c +typedef void (*CreateInvestigationDialogCallback)( + const char *parent_directory, + const char *investigation_name, + gpointer user_data +); +``` + +Puis : + +```c +void create_investigation_dialog_present( + GtkWindow *parent_window, + CreateInvestigationDialogCallback callback, + gpointer user_data +); +``` + +Le callback reçoit : + +```text +parent_directory +investigation_name +user_data +``` + +En cas d’annulation : + +```text +parent_directory == NULL +investigation_name == NULL +``` + +Les chaînes transmises au callback ne restent valides que pendant l’appel. + +Le callback doit les copier s’il souhaite les conserver. + +--- + +## 3. Concevoir le dialogue GTK + +Le dialogue doit contenir au minimum : + +```text +Titre : Nouvelle enquête + +Dossier parent : +[ chemin sélectionné ] [ Parcourir ] + +Nom de l’enquête : +[ ] + +[ Annuler ] [ Créer ] +``` + +Le bouton `Créer` doit être désactivé tant que : + +```text +aucun dossier parent valide n’est sélectionné +ou +le nom est vide +``` + +Le dialogue peut utiliser : + +```text +GtkWindow +GtkBox +GtkLabel +GtkEntry +GtkButton +GtkFileDialog +``` + +Ne pas utiliser les anciennes API GTK3 synchrones. + +--- + +## 4. Sélectionner le dossier parent + +Le bouton : + +```text +Parcourir +``` + +doit ouvrir un sélecteur de dossier GTK4. + +Le dossier choisi représente le parent dans lequel le nouveau dossier d’enquête sera créé. + +Exemple : + +```text +Dossier parent : +/home/fy59/Documents/Enquetes + +Nom : +Arnaque_Billets +``` + +Résultat attendu : + +```text +/home/fy59/Documents/Enquetes/Arnaque_Billets +``` + +Le dossier parent doit déjà exister. + +--- + +## 5. Valider le nom dans le dialogue + +Le nom doit être refusé s’il est : + +```text +NULL +vide +uniquement composé d’espaces +``` + +Il doit aussi être refusé s’il contient un séparateur de chemin : + +```text +/ +``` + +et, pour rester portable : + +```text +\ +``` + +Exemples invalides : + +```text +Enquetes/Test +Enquetes\Test +``` + +Les espaces en début et fin doivent être supprimés avant l’envoi au callback. + +Utiliser : + +```c +g_strstrip() +``` + +sur une copie allouée. + +Le dialogue ne doit pas modifier directement le contenu interne de `GtkEntry`. + +--- + +## 6. Ajouter le bouton dans `MainWindow` + +Modifier : + +```text +include/views/main_window.h +src/views/main_window.c +``` + +Ajouter un bouton visible : + +```text +Nouvelle enquête +``` + +Il peut être placé dans une barre horizontale au-dessus du `GtkPaned`. + +Organisation attendue : + +```text +MainWindow +└── main_box + ├── action_bar + │ └── bouton Nouvelle enquête + ├── main_paned + └── status_label +``` + +Ajouter dans la structure privée : + +```c +GtkWidget *action_bar; +GtkWidget *new_investigation_button; +``` + +--- + +## 7. Ajouter un callback de fenêtre + +Définir dans : + +```text +include/views/main_window.h +``` + +un type de callback : + +```c +typedef void (*MainWindowNewInvestigationCallback)( + gpointer user_data +); +``` + +Ajouter : + +```c +void main_window_set_new_investigation_callback( + MainWindow *main_window, + MainWindowNewInvestigationCallback callback, + gpointer user_data +); +``` + +`MainWindow` ne doit pas créer elle-même l’enquête. + +Elle ne doit faire que transmettre le clic au contrôleur `Application`. + +--- + +## 8. Conserver les données de callback + +Dans la structure privée de `MainWindow`, ajouter : + +```c +MainWindowNewInvestigationCallback + new_investigation_callback; + +gpointer + new_investigation_user_data; +``` + +Le bouton GTK doit être relié à un callback privé : + +```c +static void main_window_on_new_investigation_clicked( + GtkButton *button, + gpointer user_data +); +``` + +Ce callback doit appeler : + +```c +main_window->new_investigation_callback( + main_window->new_investigation_user_data +); +``` + +uniquement si le callback est défini. + +--- + +## 9. Ajouter le contrôleur dans `Application` + +Modifier : + +```text +src/core/application.c +``` + +Ajouter : + +```c +static void application_on_new_investigation_requested( + gpointer user_data +); +``` + +Cette fonction doit ouvrir : + +```c +create_investigation_dialog_present() +``` + +en utilisant : + +```c +main_window_get_window( + application->main_window +); +``` + +--- + +## 10. Traiter le résultat du dialogue + +Ajouter : + +```c +static void application_on_create_investigation( + const char *parent_directory, + const char *investigation_name, + gpointer user_data +); +``` + +En cas d’annulation : + +```c +parent_directory == NULL +investigation_name == NULL +``` + +la fonction doit simplement retourner. + +Aucun état existant ne doit être modifié. + +--- + +## 11. Créer le projet + +Appeler : + +```c +char *created_root_path = NULL; +``` + +puis : + +```c +created_root_path = investigation_project_create( + parent_directory, + investigation_name +); +``` + +Si la création échoue : + +```text +ancienne session conservée +ancien arbre conservé +aucune modification de MainWindow +warning explicite +``` + +Exemple : + +```c +g_warning( + "Impossible de créer l'enquête '%s' dans '%s'.", + investigation_name, + parent_directory +); +``` + +--- + +## 12. Ouvrir immédiatement la nouvelle enquête + +Après une création valide, ouvrir : + +```c +InvestigationSession *new_session = NULL; +GError *error = NULL; +``` + +avec : + +```c +new_session = investigation_session_open( + created_root_path, + &error +); +``` + +La nouvelle enquête doit être utilisable sans redémarrer l’application. + +--- + +## 13. Construire son arbre + +Récupérer : + +```c +const InvestigationProject *project = NULL; +const char *root_path = NULL; +``` + +Puis construire : + +```c +InvestigationTreeModel *new_tree_model = NULL; +``` + +avec : + +```c +new_tree_model = investigation_tree_builder_build( + root_path +); +``` + +--- + +## 14. Factoriser l’installation d’une session + +Le ticket #029 contient déjà une logique de remplacement dans : + +```c +application_on_folder_selected() +``` + +Cette logique ne doit pas être dupliquée. + +Créer une fonction privée : + +```c +static gboolean application_install_session( + Application *application, + InvestigationSession *new_session, + InvestigationTreeModel *new_tree_model +); +``` + +Cette fonction doit : + +1. valider ses paramètres ; +2. récupérer le projet ; +3. récupérer le record ; +4. récupérer le chemin racine ; +5. récupérer le nom ; +6. libérer l’ancien arbre ; +7. fermer l’ancienne session ; +8. installer les nouveaux objets ; +9. mettre à jour la sidebar ; +10. mettre à jour le titre et la barre d’état. + +Elle retourne : + +```text +TRUE en cas de succès +FALSE en cas d’échec +``` + +--- + +## 15. Propriété des objets dans la fonction factorisée + +Avant l’appel réussi à : + +```c +application_install_session() +``` + +le code appelant possède : + +```text +new_session +new_tree_model +``` + +En cas de succès, `Application` devient propriétaire des deux objets. + +En cas d’échec, le code appelant reste propriétaire et doit les libérer. + +Cette règle doit être documentée clairement. + +--- + +## 16. Adapter l’ouverture existante + +Modifier : + +```c +application_on_folder_selected() +``` + +pour utiliser également : + +```c +application_install_session() +``` + +Le flux devient : + +```text +investigation_session_open() + ↓ +investigation_tree_builder_build() + ↓ +application_install_session() +``` + +Cela garantit que l’ouverture et la création utilisent exactement le même mécanisme d’installation. + +--- + +## 17. Gérer un échec après création du projet + +Si le dossier et la base ont été créés avec succès mais que : + +```text +investigation_session_open() +``` + +ou : + +```text +investigation_tree_builder_build() +``` + +échouent, ne pas supprimer automatiquement le nouveau projet. + +Raison : + +```text +la création SQLite a pu réussir +le dossier contient potentiellement déjà des informations utiles +une suppression automatique après création complète serait risquée +``` + +Afficher un warning explicite indiquant que le projet a été créé mais n’a pas pu être ouvert. + +Exemple : + +```text +L’enquête a été créée dans '', mais son ouverture a échoué. +``` + +Le chemin doit être laissé à l’utilisateur pour diagnostic. + +--- + +## 18. Mettre à jour le statut pendant la création + +Optionnel mais recommandé : + +Avant la création : + +```text +Création de l’enquête… +``` + +Après succès : + +```text +Enquête ouverte : +``` + +En cas d’échec, le statut précédent doit être restauré ou conservé. + +Ne pas laisser le statut bloqué sur : + +```text +Création de l’enquête… +``` + +si l’opération échoue. + +--- + +## 19. Ajouter une fonction de statut générique + +Pour éviter que `Application` manipule directement `GtkLabel`, ajouter dans : + +```text +include/views/main_window.h +``` + +```c +void main_window_set_status( + MainWindow *main_window, + const char *status_text +); +``` + +Implémenter dans : + +```text +src/views/main_window.c +``` + +La fonction doit : + +- accepter `main_window == NULL` ; +- accepter `status_text == NULL` ; +- afficher une chaîne sûre ; +- utiliser `gtk_label_set_text()`. + +Pour `status_text == NULL`, afficher : + +```text +Aucune enquête ouverte +``` + +--- + +# Tests manuels + +## 20. Création valide + +Lancer : + +```bash +make +make run +``` + +Cliquer sur : + +```text +Nouvelle enquête +``` + +Sélectionner : + +```text +/home/fy59/Documents/Enquetes +``` + +Saisir par exemple : + +```text +Test_Enquete +``` + +Vérifier la création de : + +```text +/home/fy59/Documents/Enquetes/Test_Enquete/ +``` + +Vérifier la présence de : + +```text +00_BaseDeDonnees/Enquete.sqlite +01_Preuves_Originales +02_Preuves_Traitees +03_Chronologie +04_Entites +05_Rapports +06_Exports +07_Notes +08_Sources +09_Hash +``` + +Vérifier aussi : + +```text +arborescence visible +titre mis à jour +barre d’état mise à jour +aucune erreur SQLite +``` + +--- + +## 21. Nom vide + +Laisser le nom vide. + +Le bouton `Créer` doit rester désactivé. + +Aucun dossier ne doit être créé. + +--- + +## 22. Nom composé d’espaces + +Saisir uniquement : + +```text + +``` + +Le bouton `Créer` doit rester désactivé ou la validation doit refuser l’opération. + +Aucun dossier ne doit être créé. + +--- + +## 23. Nom contenant un séparateur + +Tester : + +```text +Test/Enquete +``` + +puis : + +```text +Test\Enquete +``` + +La création doit être refusée. + +--- + +## 24. Dossier déjà existant + +Créer une première fois : + +```text +Test_Enquete +``` + +Puis tenter de recréer le même nom dans le même dossier parent. + +Vérifier : + +```text +aucun écrasement +aucune modification du projet existant +warning explicite +ancienne session conservée +``` + +--- + +## 25. Annulation du dialogue + +Ouvrir le dialogue puis cliquer sur : + +```text +Annuler +``` + +Vérifier : + +```text +aucun crash +aucun dossier créé +ancienne session conservée +fenêtre toujours utilisable +``` + +--- + +## 26. Création après ouverture d’une enquête + +Lorsque l’action « Nouvelle enquête » est disponible pendant une session active : + +1. ouvrir une enquête A ; +2. créer une enquête B ; +3. vérifier que B remplace A uniquement après création et ouverture complètes. + +Si la création de B échoue, A doit rester active. + +--- + +# Gestion de la mémoire + +## Dialogue + +Le dialogue possède : + +```text +sa fenêtre GTK +ses widgets +ses chaînes temporaires +``` + +Il doit être détruit après : + +```text +création +annulation +fermeture de la fenêtre +``` + +## Application + +`Application` possède après succès : + +```text +InvestigationSession +InvestigationTreeModel +``` + +## Variables temporaires + +Le callback de création possède temporairement : + +```text +created_root_path +new_session +new_tree_model +GError +``` + +Tous les chemins d’échec doivent libérer les ressources qu’ils possèdent encore. + +--- + +# Critères d’acceptation + +- [ ] Un bouton `Nouvelle enquête` est visible. +- [ ] Le bouton ouvre un dialogue dédié. +- [ ] Le dialogue permet de sélectionner un dossier parent. +- [ ] Le dialogue permet de saisir un nom. +- [ ] Le nom vide est refusé. +- [ ] Le nom composé d’espaces est refusé. +- [ ] Les séparateurs `/` et `\` sont refusés. +- [ ] Le bouton `Créer` n’est actif que lorsque les données sont valides. +- [ ] La création utilise `investigation_project_create()`. +- [ ] La nouvelle enquête est ouverte avec `investigation_session_open()`. +- [ ] L’arborescence est construite automatiquement. +- [ ] La session est installée dans `Application`. +- [ ] Le nom et le chemin sont affichés. +- [ ] L’ancienne session est conservée en cas d’échec. +- [ ] L’ancien arbre est conservé en cas d’échec. +- [ ] La logique d’installation n’est pas dupliquée. +- [ ] Le dialogue ne connaît ni SQLite ni `Database`. +- [ ] Aucun dossier existant n’est écrasé. +- [ ] L’annulation ne modifie aucun état. +- [ ] Les anciens tests restent valides. +- [ ] `make` réussit sans warning. +- [ ] `make test` réussit. +- [ ] Le test manuel de création valide réussit. +- [ ] `git diff --check` ne retourne aucune erreur. + +--- + +# Audit attendu + +Le dialogue ne doit contenir aucune dépendance métier : + +```bash +rg -n \ + 'sqlite3_|database_|investigation_project_create|investigation_session_open' \ + include/views/create_investigation_dialog.h \ + src/views/create_investigation_dialog.c +``` + +Résultat attendu : + +```text +aucune sortie +``` + +Vérifier la factorisation : + +```bash +rg -n \ + 'application_install_session' \ + src/core/application.c +``` + +Vérifier que les deux flux l’utilisent : + +```text +application_on_folder_selected +application_on_create_investigation +``` + +Vérifier l’absence de SQLite dans `Application` : + +```bash +rg -n \ + 'sqlite3_|#include ' \ + src/core/application.c +``` + +Résultat attendu : + +```text +aucune sortie +``` + +--- + +# Hors périmètre + +Ce ticket ne doit pas ajouter : + +- une barre de menu complète ; +- un raccourci clavier ; +- la suppression d’une enquête ; +- le renommage d’une enquête ; +- le déplacement d’une enquête ; +- la restauration de la dernière enquête ; +- une liste des enquêtes récentes ; +- une confirmation de fermeture ; +- l’import de preuves ; +- les DAO des preuves ; +- une boîte d’erreur avancée ; +- la gestion de modèles d’enquête personnalisés. + +--- + +# Fichiers principalement concernés + +```text +include/views/create_investigation_dialog.h +src/views/create_investigation_dialog.c + +include/views/main_window.h +src/views/main_window.c + +src/core/application.c +``` + +Le fichier suivant ne devrait pas nécessiter de modification : + +```text +include/core/application.h +``` + +Le `Makefile` de production détecte automatiquement le nouveau fichier `.c` avec : + +```make +SRC := $(shell find src -name "*.c") +``` + +Aucune nouvelle cible de test n’est obligatoire pour ce ticket GTK. + +--- + +# Résultat attendu + +À la fin du ticket, l’utilisateur doit pouvoir lancer l’application sans disposer d’une enquête préalable. + +Il doit pouvoir : + +```text +ouvrir l’application + ↓ +cliquer sur « Nouvelle enquête » + ↓ +choisir ~/Documents/Enquetes + ↓ +saisir un nom + ↓ +créer l’enquête + ↓ +voir immédiatement son arborescence +``` + +Cette fonctionnalité constitue la première opération complète utilisable depuis GTK. + +--- + +# Commit attendu + +Avant le commit : + +```bash +make clean +make +make test +git diff --check +git status --short +``` + +Préparer les fichiers : + +```bash +git add \ + include/views/create_investigation_dialog.h \ + src/views/create_investigation_dialog.c \ + include/views/main_window.h \ + src/views/main_window.c \ + src/core/application.c +``` + +Contrôler : + +```bash +git diff --cached --stat +git diff --cached +``` + +Créer le commit : + +```bash +git commit -m "feat(ui): add investigation creation workflow" +``` + +Puis pousser après validation complète : + +```bash +git push +``` diff --git a/include/core/application.h b/include/core/application.h index f0c8eeb..7dd9d6e 100644 --- a/include/core/application.h +++ b/include/core/application.h @@ -6,6 +6,11 @@ #ifndef LABFY_INVESTIGATION_APPLICATION_H #define LABFY_INVESTIGATION_APPLICATION_H +/** + * @brief Représentation opaque d'une session d'enquête. + */ +typedef struct InvestigationSession InvestigationSession; + /** * @brief Représentation opaque de l'application. * @@ -29,7 +34,26 @@ Application *application_new(void); * * @return Code de sortie retourné par GTK. */ -int application_run(Application *application, int argc, char **argv); +int application_run( + Application *application, + int argc, + char **argv +); + +/** + * @brief Retourne la session d'enquête actuellement ouverte. + * + * Le pointeur retourné appartient à l'application. + * Le code appelant ne doit pas fermer cette session. + * + * @param application Application concernée. + * + * @return La session active, ou NULL si aucune enquête n'est ouverte + * ou si application vaut NULL. + */ +const InvestigationSession *application_get_session( + const Application *application +); /** * @brief Libère les ressources possédées par l'application. @@ -38,6 +62,8 @@ int application_run(Application *application, int argc, char **argv); * * @param application Application à libérer. */ -void application_free(Application *application); +void application_free( + Application *application +); #endif diff --git a/include/views/create_investigation_dialog.h b/include/views/create_investigation_dialog.h new file mode 100644 index 0000000..8af568d --- /dev/null +++ b/include/views/create_investigation_dialog.h @@ -0,0 +1,58 @@ +/****************************************************************************** + * @file create_investigation_dialog.h + * @brief Interface publique du dialogue de création d'une enquête. + ******************************************************************************/ + +#ifndef LABFY_INVESTIGATION_CREATE_INVESTIGATION_DIALOG_H +#define LABFY_INVESTIGATION_CREATE_INVESTIGATION_DIALOG_H + +#include + +/** + * @brief Callback appelé lorsque le dialogue est validé ou annulé. + * + * Lors d'une validation réussie : + * + * - parent_directory contient le dossier parent sélectionné ; + * - investigation_name contient le nom nettoyé de l'enquête. + * + * Lors d'une annulation : + * + * - parent_directory vaut NULL ; + * - investigation_name vaut NULL. + * + * Les chaînes transmises restent valides uniquement pendant l'appel du + * callback. Le code appelant doit les copier s'il souhaite les conserver. + * + * @param parent_directory Dossier parent sélectionné, ou NULL. + * @param investigation_name Nom de l'enquête, ou NULL. + * @param user_data Données utilisateur fournies lors de l'ouverture. + */ +typedef void (*CreateInvestigationDialogCallback)( + const char *parent_directory, + const char *investigation_name, + gpointer user_data +); + +/** + * @brief Présente le dialogue de création d'une nouvelle enquête. + * + * Le dialogue permet : + * + * - de sélectionner un dossier parent existant ; + * - de saisir le nom de l'enquête ; + * - de valider ou d'annuler la création. + * + * Cette fonction ne crée aucun fichier et n'accède pas à SQLite. + * + * @param parent_window Fenêtre GTK parente, ou NULL. + * @param callback Fonction appelée lors de la validation ou de l'annulation. + * @param user_data Données transmises au callback. + */ +void create_investigation_dialog_present( + GtkWindow *parent_window, + CreateInvestigationDialogCallback callback, + gpointer user_data +); + +#endif diff --git a/include/views/main_window.h b/include/views/main_window.h index 8253671..3fce982 100644 --- a/include/views/main_window.h +++ b/include/views/main_window.h @@ -17,6 +17,31 @@ */ typedef struct MainWindow MainWindow; +/** + * @brief Callback appelé lorsque l'utilisateur demande une nouvelle enquête. + * + * @param user_data Données utilisateur associées au callback. + */ +typedef void (*MainWindowNewInvestigationCallback)( + gpointer user_data +); + +/** + * @brief Définit le callback du bouton « Nouvelle enquête ». + * + * La fenêtre ne crée pas directement l'enquête. Elle transmet uniquement + * la demande au contrôleur. + * + * @param main_window Fenêtre principale. + * @param callback Fonction appelée lors du clic. + * @param user_data Données transmises au callback. + */ +void main_window_set_new_investigation_callback( + MainWindow *main_window, + MainWindowNewInvestigationCallback callback, + gpointer user_data +); + /** * @brief Crée une nouvelle fenêtre principale. * @@ -58,6 +83,28 @@ void main_window_set_tree_model( const InvestigationTreeModel *tree_model ); +/** + * @brief Met à jour l'identité de l'enquête affichée. + * + * La fonction met à jour : + * + * - le titre de la fenêtre ; + * - le texte de la barre d'état. + * + * Les chaînes sont copiées par GTK et restent la propriété de l'appelant. + * + * Cette fonction accepte des chaînes NULL ou vides. + * + * @param main_window Fenêtre principale à mettre à jour. + * @param investigation_name Nom persistant de l'enquête. + * @param investigation_root_path Chemin racine de l'enquête. + */ +void main_window_set_investigation( + MainWindow *main_window, + const char *investigation_name, + const char *investigation_root_path +); + void main_window_set_tree_selection_callback( MainWindow *main_window, InvestigationTreeViewSelectionCallback callback, @@ -77,6 +124,19 @@ void main_window_set_selected_node( const InvestigationNode *node ); +/** + * @brief Met à jour le texte de la barre d'état. + * + * Si status_text vaut NULL, le texte par défaut est affiché. + * + * @param main_window Fenêtre principale. + * @param status_text Nouveau texte de statut, ou NULL. + */ +void main_window_set_status( + MainWindow *main_window, + const char *status_text +); + /** * @brief Libère les ressources de la fenêtre. * diff --git a/labfy-investigation b/labfy-investigation index 6f07ba39e028a0e3e933897fa05895543f2c07a0..4c62c1986a7bf8cb1cc6d05a931c7503374de141 100755 GIT binary patch literal 182672 zcmeFadwf*Y)dqYBpwWtnN)+)nA_!i9fT)OK!zCCLG;&eAh9MbXB$>p?3>u$sDln_x<<1`Tcay zT5IpM*Iu{1_C9BZ>k6k$$?Db1a{hW-XIg}s&rz5HO=x;POMkMg0&A?5gZ~e+hFW_8 z+Xw#@Xli;})LRjpHe2^2n&TeR^z`;{-Op(q3E6U7&|mJEisH0Zu7WwPFFzLWfA}kq z|GVv9eyU)nHOI+(t-60&Yv(Jx)0*R`o7R1miQ8bnA@UrpKkXA>Geu zo%v>dlqmb(%vY?(-SZE{IKAy7#>HBkR?k06kK2|~i1fBu_j6ijedl8w?eIhYw3}Ho z^n5{f&)4!ft+KANL4Qm}^PP3>Y^%@RXaD5e^UoSzz3A?d>t6py-(`KC>^-tPI`5P* zBg@N%mq%mCn&CBLPZ@s7m=V>LBSu?vi%s~C{3tizEbC~6dmeDK`GMOjE;vYQ0f@A} zv*Cvarr`))0EJ}2FT(_x@Hb$6nee}aP?_+*@0S@r2~Lu!|Izzq#xL4GGyXpT_ztWs z6aS}jGUJ~Pkmr{HdO(8A$lnT(=N1?~M1`mQ)dkq)gaCX#93a!WS_1Hkq5nZ?a}wM) zK+mHB);k9BXPWod0eW~oK>oi5$hm62%=`}y@Xu5B$=v_-0R4Xy;D?O?@|Ok3KRm!s z{wF{`^#S^<2$=WYfO$U)SntdLJN`33&o9IFne2E}0RMdg*7aq;x{eR9S2TeCB>{Fn zKS2JY1M<%S0emjpJM(&L0`Pwgh|`+_?DbB-dYc0L@T&m%9}kfK?*abyR)G9B1?X+x zfO($^@Q3#T>133eem9fH++m;D<*C;CBVY#i)Swz7jC+V*z#_7~ucU z2Kf2e0rTD%FmLYwJ0=4B;U58dV0oD--oFg!-yE>6e+SGvGGO1oCIJ6@fIqAakn@3n z{@(@Y^YnoJ8w33FF9C8M6p)8c5Ads30{Ficz$X$QXJF~1L8Lx zpwE8?#Ob&IJ}_fOfBSWSUx7`={%-~3!+itz922nKmjdub0eo5l?7KR^zVie6pBLa) z&jqY28Q}lF4#+3(2h96KfL;C-AkX#y{YL`Udu@Qf9TdQSet_R@2=J@Y06uR8*z1=8 z`Lj=e-u@DR-!FjA_yBwTG=R^906T6B(3>5wu6^LQA=oDU@4NuJG@)arJf9UH|33rp z4FPs343Phc06%;(z>W_F_`@{;@|+Q{-u?md{5v48?iYYB2$1L2fV^>7Kzt1fkmsxb zzq&oZPYw&PV|jpG!U6qL0sMa+V6X83_Bts*{>K93SrWj1bAaB$0dfuw@P}yud@c=$ zqss&O-xXlr+XL*_65uB@0`kDk0sdASAkQfQ^WFpf9AF({S$}b*{1)xZ2UJEC;kJli~Oxthcfv^Ssg6{7TWeDQGDs zjjL5r7Uky2nDTAUvOO_WaIEqwSeBX%SC>Yk)Ke+sDy^U`l%?`ZV)$(MYgHt&sH7?! z$Lc{4>r_XVMrdD=i+tfn=pv5cSu|W$W|d5xHNB)P;>5+Q>66MUW06_mc@h;e-d&~k zJlC@@fq3EKaCwvqvr0-9R3JDITk%9m3CP}DTJu^RG?@5?Odl{g*IrSTZ!JhHf}_Ic zA~jWrDnyDTjUHGpS%4HNizc`T6{(RLs0LU`EsLX22p1taM(~ihbdk&Us%RN`NtbYZ zK~%3uaR|>tULq;sFcl@0MZ<_{MTjP-JWLm@2rtm-2T(Qg0tBj#lp{2lM4V+9^DT~6 zM@9AMFKZTwSE^NjVfO zR9AyyZ>>(D%&V+XYL(0kMoN8frxLmd953U{lKV1J5|waoQ2bWrygE^Vrk3oe%rm5e zF|)ISGZ*MnmQGW`g-XSqQi`oYlAK7QW}^f(rZSP!mFtutdBiK1sD$Xm9;AeWMz9B9 zoC*R@{;Q(y-~={@>L|jMVVSNh29w`-)N3jBCE1-a=!q-y=1~$j8c>$;t)13$b|Swu zm^H9NBKI;gQs>->ML%58{L0c~wMq=2nflgib0+naP*qtSrK<}!(;6xWw7bC(W6^4C zT3~B-a`>q*q6k&d8b%-FRPwpOcvU>CT*&9OZispk#Urvx_+k&8iPaWjCliN82J@6k zojKC<2xE>5Cli%wO(K|KY$O@(y;zzO!e@?0(-r39?5(w0LnG(R*OJV_3Oe2%C2Y( z=3&W>N|zOEyrL``x2mt?x#cA6dMu~sVfTcNs$Db@DgvC2f{F3)=U}Afbb!*z@?-_h zkFmrlW85B& z>OB*R${Ac}ak6|-I7U!pSb%b1VI&su&9@+0>Eo+8`f=dwLuh@vGM4hwDb`ujrcRtx zGJ3>GW89D4r_m!$cCn+z=&O(n4K7D|{NVye{+!n7;K8^O+T)+sdrw_|c+Wj?+A}?P zu3*ZZx%TXV%hF<`@B=iyISqfR#}3_RaIbpBcm z{8$Hxw#~rbZs6Mu{00N>+;=nM@V!U(FQnwe^}4(Z>EN>syqW!T4ZN8P2N-xW?}rS$ zneB!dc=;GJAUT7iK_B6R0g&8TgQaFEa4M4E$6BpKsvLHt=H&{5b}`z`*MgR;Wb=e!9`W*ubA_;O7|l z^9=l417B?57aI8U4Sbb>pJCu@4E#(3Uu)oJ8Tb_jezt*cGVm7|_*Dk}LIc0rz|S%8 zYYqHG27aA^zu3TUFz}Zc_+|rtse#{S;4d@qtp@&b1K(!gOALIwfuC#OZ37=R@LdLe zo`LT+@TCUcI>z(=G6SD&;3Eb;*TBy=@B<9|0s|j1@Cyz6FasYo@c9P*3IjjZz%MfJ z1qQy{z!w?#3Iktk;9~}Uj)AW<@N*4(m4RPq;IB0BRR%t8;A;$gwSliS@CgII!oVjD ze3OA+Y~WWJ_^S;3Y6D+m;MW@XB?f+-fnRFiHyHS<4SchKzsA6CGw{m{e5--K*1)$J z`0EUOyMeDY@V0@!-oSSm_!|s-w}G!S@YZ0@|Cby1Yy*FzfzLJYHyQW=2L5IPA2RSO z4E!(yUvJ>^4g4(zeyo9SFz^Ki{#FBDWZ)YOe6fN5iGiPE;D2i1=NkAX1HaI~|IENw z8Ti`_e2sx$Y2a%O{2c~Vf!|=@ z?=kSr2L6`@ew%^6*TA zfiE`jPZ;<)27aA^pKIWMYv30e_$Li~m4ScCz}Fb~^#;Dy!2iy`uQ2dW8~7#z|BQiO zW#E5r;8z>?jRt;{Q2E72p$Lsr)+HQ}`RQnJ_oqj#hy;63!yrEbx}75Fy7OlKWc0^dS7oA6wLZy>x6;bMW865f|^ zfxvOXKO&qj@D+sjBODTV9^rn3a|OPb@cx7?foBlTA>8#n5JS!;oJ+V};E99}AlxeO zIKl@KZWeen;e!aT6Zm+-{RyuYco5+{!c77XBz!R8T7eHFdX z7Q({_&lUIv!p9LV7I-P);|UiC94CAN;e3IwAbcX>kihc@4=0=}@Wq5j5Vi!KL3kwL zu5ZQug!2iv3p|nVD8j7*k0U&qaI?Up37N;bwuKBs_`mI)NV{Jelxnf$t|=NVrMh zy9iGqTr2QxgwG;eCGahTiwMsZ_y)pL2^R~zlU&3<;&lNa}@I{1+1^)USz!wuP5co5~mk`bu_!GjH z5)KLcA>qpi=L-B5;mZkI0>44HgmBkaVt>MO3AYQpnQ)kJtH2ux&m-I{@RNi~39l3Q z5yEAJR||YU;RxX-f$t(bpKz_fw-H`IxJuw#2y+AKm@DuNgrkIu1zt+{3c>{f#|bYY zoG72$S)ClbDraI3)M2*(LG3p|=| zHQ{vvA5SZqual#FR^98@~2-=Gsq|9w*JIY-s9-xl4X|HIP%{96V#lB|%(d)7;p1hEwz?$#DXvm|$-OsF@XnKp8Vb8}p0<`ZJD8)1+0;koZLu%@PbzhzOY6I#7w|7_(d^!7}mc@@yn3=JGI!D1(+L94VwcG^9{tB zW!#Azm*cDl!_G+?HozRF#&knfdJF~(#DLCTO+Y>tU#2XUPImR8>2*8(7Oh)m zyN;5-DI2;_CcN=8Y8NUsJxMQPHk?2-kwKq{iN;cIgEyEO%COXazNL;tf&GJ*TDP+R z&e>K}pKPt4{VIIa7XPSQ)@CJs1S#5-&ubU$Ls{yUwJKVxkH&$UhPi96|F^8&Mt3Mj zkKYP1nL;UDXuIeEtQVCFYK_=M%B2rR4~Z0}B^4sfHo&&(xIhfF*zKsN-0|YVVBop1 zaA4uBf}#*Ps(@TD@?d1*q6QjbVo2s{C#!|Ye6XTf^4q-^|IZDoiT>dDzlsYm7W{#4*IL?fcA!)-hxXv38$%~R*&}Fde zq=!Lzm;^@=70@Z;g)7{<{DfHuz4tp(F@GPk4ZxCsru%k(+a!d znsTVy8~(}}Uic83S1Y_XEsbzf>cQ8=3E#94&g7292e>+$i)h^diPsg?&t8jgZG&c! z9tvC8zF64O3rgHzi7wZfrM+Z1>Axf9nx%=THh)=!A8e7_fhfMhVgAy&W)F0 zh>E#74sI!I=LBwkXesQ{aJRH%j<|OBsRp%q;mQxmA~_h%S}SLHf03gQUAbrFEbjvt zGFu(rFt12lx7e-!&@XS zjp5t6QmOjFSL>F&nw8wArEnY9(YZH1h(;P_w}S&TEnc%zC32n2eEg3#`HxZjC3y_{ zRK(NC|2Qp^kp9VCS1<1ae%AKu*aaCHW^XHMn9gm#y{P_=)WA&1kZ^S)17ry0yGacj23%1E+tF}&oLzYu_0mS?7C&!tmHuP zriSU{iWP~JmtcooQP`p|E%rVJhwrF9XKT@GtzFgvH+w*B%i<;p$}T26Tdo({fs3!m8lO1ns?O)?N=6DCFJ=~ZTi<2Y0N5uPfJBU5zIaI$H;OB(Oa z#1lwS<7_0k>9&$XY+nNRQ66qTw`UV3+qb5KthT`TD2EGA^@U=b`FE(ZrSiX|(&bar=H(Fy&8_{_3krk78`p4$+ zz<+c&%16t1bf7tMmLH`2$yPfNRxSC$3v#U8*oo>s$yU1&Lj+6c1_$P6k;^%@Jn#=m zw$q5DoTbn$Gc#`r>{H-+4HmG^QRDS5NTZY97Q3NULgYRE=o8_7b}Y~TJ7 z7o`2gsX~@=1e}h}UDw?!F`)BAV7#;MN!ifWErKH9wk^!c?%Fj^vki3g*7GVdw^~ncPOYn_ zj+bb9r!;IR+*b5LdmkRn8vDNTEGVdr^|?=+Dd)!9l{X?k(;HiRSfnp>jUnl4*k7&T zBCdhjeVz4@xt`~cboQ{Gx3FYyJ>NoEYCR{xeUW2O1tNU59hq~}iM-Ni%sT^j=_sF{ z!j(Kl_1~gg_MynBD$(Q|N3PS- z)T)AF-q{yMLBnDPAW;7yNh(Ku3hOp*3%^z_s0*R70mgNhz5@w8rr&c*p&mQKqDd-E z?xql!aQeK0I277=@-ujR<@fstmY}X)x^UcP3}b|M^#Wvz?Y}+javddC$}Uxw{J`78 zV<~kmW`SKX3z$!aL$Ds-_4pKF^N!M#Qg7+3^W?OrH0pVqUAleh`M0a2Pnbaq=nN1W{w2R=ez4m-GtQ zA@l1@!qMkDqxZ&i)XF+{bd4HqyO;5=y)AKmlKm(2p+a$3Y0NuIbCBBgb?4$k1hDUZ zHJ%?0*?+-AvT|}7 z@8_iRs^au3a(Ya0YUL^l@su2#wsHTnl5=4(L4S0Cpw%8Hrq#DCKY}al#|dz{wJ&$3 zZO61H`lsz{F5q}hd$O8#8>gKV5f&vRS>UbB<~pOb-3l*wj#i|jv%Q|)`ufr`VOxN@6z&0=c(SK4#-Qqw8@ zg<-qS%1r}+Q_>)I1M)GRY3GX}TLDD-AE%s5|jxuldaCKSztIh!NedbFDCuZq8PjoCU za89v&hQKZMDXO;FkRhKZ=Fuof(YfrnH7tV&XA|B_F##+l`;?_gX5pMvJd(nxYi*1_ zpNaYZZ7O!|pwn-#xrK?OZb~gcriK=iPykG_r)yAoY;qWwwCQ~?u|M1Zk4tzIMKtMJ zKs&A|^<>(S7ehMECM%ek54V~e=RH25qoZFt^%$4O9^7zM5&U=RS)JUvti%yOtILYS zfnd?Cl5zUIhLUpt+102*j&h6Hj{RPI0I+!C0Py2yh%8S)@L8_c(bBBqL?d!VI)&nW zIBzl4-QX0E{1w(*=yijf=Wvgmew)`&xE4!kg}U3c*SG7I51G6phCX+=Q9@PcEdLkN zD}yg*`N!(xI(&SGAN^;;U-@qOMnK*TSmruJ?5*WNC;2Rdd&kens}YeamsGO&rRu6p zrN^8bb$#2+YwkOmbDnOlYnLaz7=cj**?1Vz*!Kd=0+HHKTU{a(He<^#s{c%tbzG@R zF+X_=wrIpa*l7^6ixDqI#RE4LQBvsM@u^C!z_r*%BDZzCs}Su(ynq}B1*>8)!HTMj z=%eJ}vd;XHg14#Ndx0#pF|RKL?s<>*>EFaxg!QLLZF`Wfgz}wh$an4gK#W%iNjeAe zy2Rc6o!LLe>sA?NuQF!myL@|?{R4FGXr&j4@mg$)v$KeSDR5Gr-VOrXT<$f$1V0=Y zD)jpQkXeFH+hqMVb(qgOT!-j~%#ntzGGywRkfyWH5hck?cj_L7ggE3tXUIej>C+_T zVIeO$)wMV-IqmJnC1;2QC&oZVBsfV3V*z$MY3c+Qz#69PM@91{zq_ch-#Oweo1qc= zqC;^;aC2|n&U`mHiptg z&UqdvoreJXOA~tcN5Y1%+g;=Ec7PFT!W33HcN+xu>&c73FuYS8qf96obIe z#s8E#8pq#3nHx_|V8RJ<%A6qGBqM&!*%wkO3~?(CTBN%^xeGfpcT4PXY8Dh0a>z$Q zu{uZCwSVSn)GITrIV4A3-AW{Gv}fD6WkkJK|0lcUPj0{j)df!7;9ND!tk^oG#!mBKF|FK$mVQGzE#&v}LG%*-mV! z?T$%t@k$-o2Z%dpkHw{~C}t?u-rg{MCxuat^lNm(HLgep$qzyyV&1@FIm^23+h9#c zn@Xm9Pi>A`cE5-cBqq-xu17j^UdyT5S&T`xVGYeNYLAC}x+E=!U`Pq5Gf+RXa_V`g z?Gl$& WxuT96wWUAQNSaNRsDIJ@s3znE{9|E6{ha9aNvAU24>t^_OQ4K(_?MQo6IJ-~0ewBPJxGGlZA(PHm!>{s&)A;!{A;11?4a{nLQpiuc9 z(!s-cZ;^IAW?V)!z9zzBci|3$OG~*;;zt;wINN?s(Rno8%wwO(B@TWNgB75AH2&}v zB2Y*+=KT$4%c6!Px3MmL5`)4J(Jl5)>7`cJ1dDkN6@o)4k*PIz^Bb&0D=47p4^cpI zfkqaAW$Fz#vUp)LR{S!k9yM$GR-CRk6+ zBEbOFcg_I&kK*gh&@zi&R2#e2i-wNyIAat>H;zAozS?;5Yo$Tk#c9y0x|;fvXh-G@ z={dYtvIePLg%f+o$Dua+@`I^u8J4ey<#S_k4bzHy0NJBD)Y(F$&!^6M51{(tZ#=_! z1MYJNJPIS(rwnu_7^^23>zkm`?SC~797;X##1{LHN6G~Hdd!vROn1Q9oM4JiuOY41 z+Lx$TYP%gd3H6bEIjm_Pnz8dtw=;rBI{y}Cv3Jt`!b23NIUkG8o4(c|`8Vj_-kP!B z_uI5raw-2Nzk4$Fdz1aRS+U=ta3njCvEOgZejgyP>}eVM-DLK=lZJ2XyE3fUzvVf} zFs!+Nh<>j)y|~A)O%C!aiYPqi+z248ey=6~Kp*ooSqYTgUT{eVu>Erst0mf1OH`A2Xhh|z4}LIj6!IoRT*L8*oMN*J@GkoSYw zLA@W8-r*g&;Gu&wBl#R(0+x;aqHGWh^?wpJcFBu0TVZ?WVeqfLged#C?7gGazTPg3 zPN-YmbF;?u^O+zBq!J^Nw)3>BG&=Kgg7J=S1PiZX3|; zi_0k)!&Y(ogVT+Y-6cfY5C6evt0ZP{LgWr5dyu@-B%fsu7nk^qETl)lFz%hh?N-^$ z>AUC(q;j2sG8M5-;%M87k(nz)bP?u-@Ny|rfM~H7P*s@+wCe%=Ie_&r5V(`X0MG3* zychxV;!%q{Toh3ue-t>}v(e=0KHG0{@7e}4;DE`??(k*QYGJqirW;vMn!EB4*9mtJ zwMxo-Z%a?PpmMx%9F7lvyN9oazO`>x+w^hCPMX zSR=fCIl!F87vnS46a}*H{QEF0U1A=RLgQ~72spEeAgS2&O6CIh$Z|WJ#WYbaL*E|H z?B=LUM!k)154Z$9Bgja6Pmi8rske)Gx)Yi#D2Cj{Fe<7yS54#uhWe#%1+zHE? zVivgRCN0&tMX+QRJ{xW>YGKx4uGwbcdk_eVjRLnIl)20n`%G|0A)zmWzhP$v4^l?Q z%>bOd<=mxc?_Py8U0?W4QA6In_+Ax8&|h)0h)3P{P?WQ&l{o$28);xEHicT2QbTGJSdTjGqJYIkw3sYUdk1Yjbr4~|t zEy<1aojoStCl`dk1BIkGNNiD7?icCP!+JQ_iL-f|0)GrZAEtN= zS_m=MqTgy{u2tr(y)EzHHbec~g}3RJ*Q|uwbSriT+%9lKAy~E8pYhHXPg?DpU7fGe zk^GlULfQtYw#k`_{hI~Jmx@Nr0e4lEc8agzB;Uxbboy$HXx1sTSSlUa+nw*Nh*lH% zIEZf`$3N1XvcK|(+(y(n+;=4?TkId>bH~T3e86MHD}diXg-*6Vg7?Uc!3N{TARqZ3 zHsg%}M3EbV$1kLyJ#Gx1rqEi3vnhj~kn(ga=7d_BcQKEIq?{*C$I@>Xjy>)Q%g9j= zT48X!h8+3ZJ|MQc&i~-EB54(os1~lvEM+cvW=@{%+D?t=BKtNFE%p;sxE7+fA;gzZ zOvioV5#G~FBZtFTnXV<$PAA7)aM8#X`y#~^Fz*wJLxvjxhpKp?yYF&Lwq|r2)~IXf zhyF+8YNd=T=yY1f5)Ra=pQ%3E<`u|&&yj9az!1`Rr;vW_tuK7L#LaSUyq-&DhEzpW z(%vL8A;=o@&f!ya#;96$e`UXJ_vG>SjUt@4E#5*l$Y}upLQSejv5BG zEp}~&>cdWtbxBcfDq8^UcvmR-ST2Gh*=hznU%FS9{`_L2x^Hs=yAD-W&TK#2{i|m-euj%gzmbxaq2ES$2KB6T zIRQ`Pz)rro#cp?i9q-Yl6J{<7sfpx4Px5Q<+P#ynMG$(m=F4ytWKgj1U6)nE$K1Ll z-A`n{@N4=z2xUAN?U7@l+jY8GiWZN}ejzXIX0IAEL?%z{gc)ZC+oDH*A zBZ#j-9hOh7V2UY6@L(-pPArCgf2%-XV1IuwV?F*2{TO z0cAf*9>U!Fw!~E`{@B^|v@Hw;d0FUq-5t|mTaYC1G}B%hlhFp_Vyumm{bmFD;dxbK z-YcK$5sfDwFoQ%qPTg$BFv%v|yK6;^6mMd3F5DoOmgI4liaZaoL`mx*+URcPkW(pM zW8aN35zbF4s+-ZL*^S?W;G4!xn~LAUZFU1i7R64?wtquL^(>vB8#i;cJ%gbTT9$YM zH$6>vna>B({y@x{KKO17Cd&d$kp?2 z7ZJIP`-GiL@IH`+PUoudXXv+Yg8PZS?xwyP`_^e8_ESs6TVQ=_H0rD0xw8+@njHWS znk!^+zndwN()j?_5Th}heT1xuifY$_o}dMl)Fo0z#loW50rpNwRpx-NIla2u`7wIh zFS|W9XqIi#gJYU?k#jIR{;EgEC)|!Oo6P-BXx6Uj(eWm?BhtBa+$tszA#?4sdJLHD z33(S;4(ZY3B$p*LAuO+SSz0izvzS-B*cX#Gj&J*#7CN~Xf;jW@z8bQodo+$;-YtFq zejbbqN6Xy5Ncu|%oEXpVSKOh$$ivlYjJY&TTTSC#`4AelrtqFhAa8PPzV z#TZ~nn8^E;Rs6{BRAd2(tkcTbk*Z`QxJ&H4{Uni+ctYS{PZ&Vci-<6;%)t|%x9TE9 zzFKuHWpuhg*8K)jW|R~xOXPPFu+SF!5NAN=4D|NiXg@&7<{?%i=h-J@67m!gl9Hod z5$8`RTVr8vxwyyM&yZV9dUaGc*1#JC)=|UN$%7yH>xwd4LjheJ>kws4#cLVpj7JS8 z+Y{XoWpS0Qd))e4rQ^oFPfVjWMA)-{?D(^zEvV#G*@sX-$@{A(+h4dj+2mE=@+$Rs zeX|a{czFTwP=K}AZ%Yw@!d9+rj4#!Vw(rZxmcQetcC7t8wrhawJjt%eIN}*SLds`Z zQIg%|Wf)%#){Wv7LOE{J3`Q(hj6UWv&%5 zlUU>$_^fxEbT4cYz<9JhiUCqjC*lN-!QOtt(Z&JixCT2Gns@m)i9?lnbD?^b9S#t! zz@dTBs58Z-c`?X@fhD^S7=dcB56^Z&=SuZ}kv-h_@1>&Jhie2wdl+^j(V)s2=m6<; zNDAMrc;{AyK@5DHx2LK;Pch`_HuV!xE%a^D=zBbL z2pjd~p0W2&yxxDN zUn$JKrS}V1#?OnmXgt_}w*O==L~lde9ilDKM7~y~`*>8e{Rh12q|84M zsn+S@D)uXtDru#B7r7oj@jM;ZKATxaDSE8JjP)=D3d4BNeTo#OzlSMSm@E%7M=yM= zeHoDwb27bN_=3lX70-H%PNvjUV2{k$`!uijwdifXBpbHc3>pdwG|z+3%XRK4P`>@E zjQu(vHTqrdMMi9tMaJy`= ze4MN3IiS}Uu5rMV)H!e)*fv{fuP9#D%vThTc(f26zRHchRfvJH+J+xK?Aq`le&n@e zI+HeGawVC}^f7U~?w1~udH7hjY>k!d2V=~_5R^h|$GUs03)lc22zZ6wK7sWVBT%so;Lme2#dlE z_JO_`=I9wNb!XV1XBbFKLm|bO;|6pd+`O~U{-YZMLe@M6XdaDy2fLHoe}2edBYp`j z{_zpyh2tdca#3WGt(i!FEVZ%k{7H@i?IWqX%moOinCvYALBQ^VLH~b?wh)>w(~HW1vSmo zQZN7mEC=m8s&}4v%1KQ>B|Oc31@k)hFDiL7aw1N`!-ex&32Q!ZXGJ1kO>tfnc8YkX zU$*L3;QgjjF&uIOHkEatphY_K9$B?hPUjFVY0i0|+D{$ETB)nsQz8)GAHfqM{a|+| zN9tz`o!IqZBTae3pu8dVKa4Jm)*XI}4)&kFBU9XOOAx>pDn}c z9t0jSwK?kWV!x&A*FlGG%=81m!>2Pq|r9D1R?Mr9x4tv(7Vo+MKE8+y^@U3n-m6=<>0@OTIVZ z8-B{c-h|KjDc{0RwUO5PDIW?Y$q8=}J#x1CwqKDV zHIei+q6j2b;oC4OUy-(vw2#cyVxI+dp^GkFm*=W3h)aCmU*#Q@&vTYD=-~2gBpq;{ zj8fUyeag9kq>trlLiTTgPeW3~1kD&K6E}THn281pQ~3Z=+W!(ch{gmGQ}6!L>4-cg z9WQ}E_KQ6_u181r5!TI=jF}<*ykN_D;k9wtQ;rd}aISVe*OfAtoO(~e$IgSAI&+&k z`!#j$+tj&tlk?RwqYf-c%kKV-$9V?q{J?-Dx)ytpPUMh}Ukux*6xv0tE&YOvMZLjn z?e0eSdJ0nvzV9m@qIW;}t|BDI`|~2U=vugp0T(xgzQ!@!Em0Kx%uUhGim$szO?Zf- zuf$0EMh-i+%3|<=i>R-?pdZ`^&XBIl^i5vQhRc7ZbSWOTW0zXm8OpVF$-tjQ^M0Cf z0&11cxj=~?|0*Lyk2dvsgVL+sBm5)x=19KRA{xI>>?S1_%Ld1HKSWVsswjk|sp2Ma zjXmpb%BR%q9dbUs%dp+Q??o4G#dXaCpaoUT^7fB20c>IV;F;b1z89pvheqb0mV%Iw z@!9nT{sShiME+~jvFNO>P2YkHm_teGRB*2#CD^T^kuCN%3Z|}y#KJQ1b3`GiTn@J99531`i*F|X!p>3(QX_gVh#7c=2B zp8T&<0=N$`yJNNpBf$9uk8aVSTa;GyM_r$SGWA4NlZLTx9 zgUDoV8cRPE_}@vVlN7;k5r#Mv?D>XCZE0!~dR!SCLtE^xXb-h*-Ko&)h%WQ*P1n=Q z{_$^$+hR{tS^rW`B z8-_(Xuw5H|ObhW5apU;Um7k9vqddhg6yD*GFMuvk3)-L}PtJJ!43*+-Fy_pLf&pCY z#(!~vTkMa2&X&oBq-^a=*9%tmyPFUW!8@Ik+1=+x=F8T@z_nWol8@x#zHA-x(p>_5 z5FL2Kk*nk9y5`&;oYG#R`ZM3zfT@JV!BD^4*~lzo;pJ|cg9GP7lD70q24`D#wvtAC z!=e$AHIDyaG<0A8x;OxGf_*2L;~iV)JCa>^v}4v4`(i=J&H9%Np5@?%>F}@3`gN{9 z*&pmH#@zkDCpfS%PsaCrLGlhpd868Hj>Fa~`J}Ut=n{uj^CvyOz9a1bx@}KO*Sjm; zwnpr5L-Br}V}TKM!|;V2Z(|q)Vb7Aq;*Hck90&V;xsQ|TMi>K=*mlI)@-$T++vUfE5eV_A8L>9mIk>k_??P`U7{x(7-e>)X3ea}yWE^@bbMbMjpoYq{DwnOI z%0%yJb{xIZwPTL}G@c^s%b`s{c6*renV->=JNcsni3=%V2HkdvRU|KOU@~pY z`#wLTZf{}QA`j^HJ@iz%Wy%%QD@0||=ZCks`c$`U-BPZ)NsYfx0}c9rXXY1Nn*4%` zae4CH{?6|TYE>e?VfW{C3buOqLyP@ZdYAJ_Cgp+yF}OPmmzL;ib)M$nEAagm^<#ya za+E`{@Qp7YCGG11v>ftY60U{sXzF{f7Yn~+B*XGt7wUhm%e#?#m2x)b{R0;rn8rz? zi}s`RkW+3GwRL}`y4H>4h_^D&i%jERZfBz6V4970QJ4*T~vT-{7NT5K2K{xOBS@ zHh--MXM?a!2u@nPRS`zHgua{*b5twB07o5P<%n}Rzigns&6lRKjc_NQ%5tF|-_g|` z+Jq3}i9-^$_Q&I4bREnz6_XnKNdt|I4Y_n$=o zyzU|`Vsf%G62-|5_9|z_6(>X&utSj^y0Aq9Q@I*wZO6wB9g# zhkDk9?kGfX4)P8F>3K%d5Kc(C^hqaYgC8te5OPbSTsKuEW|-PBq?7?#%KD#ZDK)ai zeuzsXSMO2=Ut${oxAVPbhh;9aTMEA=9?If-j(I8_VO5d@P|3rxDhb4;sQR{U*|&HN zp`q|wxcf*^88iI=N*SIOBKg(a85?dU(@t=EOZ4;z4xt8)7SiFnD0L z)=h;u5Xct0A#LCQ?}uvB|0x=N;Q6tiXI1t3M^c)IYh-BFO>=venx~L% za_T8ijnnxG3{-q6Q!HJkBYiR@{W4XNS%!VB(S70CvhawB1ymSav()KOL+mbb6SxDS86(by@E2x*SnOc z)SQT5&qXkrIoU|9T{@iJMHerdq`*{$;$1X~F2DK1{Z^9Qr)v7NLa#o#9p_H>h~?NY zlkM~mzqfHaVo8hdhHtm7<-rsePB;T%8f_Ynj~b4$u_3vA zs@idW@2E3|<>=x$XL+sLUl>LILybav^1y^Yb0La6hnWs%ozDGLJ>98cM;w$Bt^o!} zBv0>ZDBKP)>mep~(VofEzR^)*e}@Ye@&p&cRk?vxz@6*A(BEh7f|UO7s|MSx>kP#W zH5IprA&wDN2X8W!AQ(r*P2a9U^t|1uYuslU)phtSesw*oVP~PHx;hwZD4vzNHV+C= z*YB5SQdez{3?+Gj>T+J~$#Cj((!{6clHqDSR8lh4937yh+mL-!aGG9q5k>cTl}e{SKu2F0YehJk z5%?g4a4&TSK|ZA&K5=v%2`+uqb&g`nlKd94#4qq$If6oU+=2h$+ApGi`b$-=zb2U( zvvY|t=%s&&iqhlrQ6@1XKF`sbbw-*FSHlpOoSWAlE67mSOus>|#SOv`i*CoI^zTF> zMd0F$|1P1F&Qy-RqhJA}a9C!uEFZsffnT`bwI&FXX;Pn>E8*9!CDVL>@{XtWT^M>J zSJjwzZz!Xb4_&XN+`}(}$d6k7Kw%#U5OzjpVaFK4w&62`Jub7bU)Kf*OGk8$g664) z|Dds}Sm$0+>-Suj1SRDoG1M30gtNn{$!;jzaeCpm*XVwH_AYkd!A}keThO_#yKl}) z*)vz<_6!O~7SGuF(r6c4QD2s35>4Mi=-*svbDq09Yk;6PBQ)WnhM-;7=uzqdIZf6> zl&sD*o%1tH+3sTATxxib<9qnVej1L=E%gYx)#BO4c1UYw_`6{m88jjkm!uZ*Iv$D_|ZK&#g(}aIrbO$1AfI>4 zbZ3*gLH&k~?_S!yEO7FP??zQ()UjiUEEDq0z1p*K%ArmWiR+qsQKP?6J^UB3M@f&y z;$GNW5d*xRle_pUYh=0p`V7Z4{a_&NF5D5~h?Kk#R{*%3Q}$DEKHxUO-{HW84KxI} zmGD0m%&Kr3;dcdg_TBfOXXA=BW~|VCT%^kpIY_o(Gz<)lXE_3_cTp3w9U)eGI8H2r z@X3N2I&pv_OpS-5!0-gQHW{NntEx%8Po>^d!ONP;U*sRob^jq+CVbv}iX-&HlGMJ- z$F0uYw)4i5x^p}io1Ix{2iy!*A};0Hgf0q4X|WrT>31`5fDY(W%z;3**t2#&5b+_I z;5!(=oe{_u`>@>)%+>?9ngfAsu|GtfH$^pmZ(sDRCcKs7cvquv`2CBtVHpB%jyDGL zEX9DHf#-zB4|#^b_}|0jUhW>~KlE~Nk9h$?98#Lv5$hg$^h3oadR(aqJr_R!_N&2krxg>uu7tO9KtdAo)6wJvQIXxyT@ z+()GIT-sRB+JuG$SQKoEOFJC2cA+`P^Wz;F{%McKyz+EG!zd#=Mp01txd=oGa)Of2 z{j$~s7sbb~l1)aqD3%s&5-BcR*wu6$nL+NvWgj%ZOcU(imG6;>gK-7Z)Dy3OJ z7?_K@512#0UdI=o4{+G9B<95Tf=%a@7$ZjFKb5YHBvrKJ&6;l*jOt>ua|+DXD>(wJ zzBokIz1B6`OjdW?dck(GIfnZfJfy|Gl#{71G-Tc$v2aNxPhN$N{8=#3#CDb#nFm05 zGT?e=fN1l9-~ljz3@CO6h(+ST1Geb_M>zw4Xt5^*4`|i{K3%NW00h3y$N^f*yk-zZ zrCn$~7UxZvW&J1T$glA#Q8vESlMV0(|Mjx6tisrp$w(qHqWa46Xd+_e=a)LnHB(bys-!qkeY%IfOqyz)q> zED|cMj8!M%$!I(hDjyn-&#R0_s!JoW(nx4rXoyUdadNOq$B#@GdQ?eqJd#`-sV+G$ z9$gTPh08_q{7m?flfqSrB<3zDERBa_lr*4UWo&UIUL8(EA-F6kbHB-zrOAp&EKwc6 zr?4U%Ee|3VFRV;d1`#iamPJS$?JjRtJPa#ovt%NSoDhpuCbY~M297MONyNjYYE7Bw z=S`ZCk?)L1nLF&Hl1U5Wm9fh5$^}ul%$SnGSOQ`}QupJ?31v`mHMPv;o0LhF6;lXl0Po0lT}smXhkF*Vw^Bw@G%iV?7-LvmZ3wchpG_S&A9o|(uF^8 zTxopE!~V&<8PWnvyx#j?6ai74h%ONK8V=)DBQ%Cb;_=G(@GFzyxDI^7VDGkReV^O3rW*Lvqh@SJvLSsWYK~=aql#IFhj?_e%))GDD^XDyr5|J86S(Xe{ z#VfCfBtm7b=rY>kyqbiy&4>A8(L^YmEX90UWG0qSc{nr=xt3DH?P9P>wPJwrjy-3d zKMk(zUzjK;Jg*vV4!_`<^t`5j46RHqjz{5BJtuL8nEh#zaD0I%wi@c6Um34ZX~aMI z2y2K+hOkQyJ4Ryh$O0%59u_JK$Gj!_O=`}&TYDP(xI}Nh>MakKMb>e9+M zVzR0-Rwm{RCmnSgeB8wc`c*ijJ-dfteg0pfdzDmHMPgu<#t+iyICH&2$tikKMnhCY zl5r>-TVpI4v8H)l!=Wt?C$Ka!fnz9ba@2_-Nf@h1k1vVPz5noV}Ft z{1^P-CeEsZd{)P*5tsi3f6D9I^J7E9Vx+2M2tkiEIOPFq5z5ZL|AN0Me>&$V_lxp! zSB)f6lMA`dVvrq-$qfXr} ztV0;@SDXIs`9(N1KN3@GNB)nMMytZ*SbJ$@#fb9oy!lHKm6heyBYZw*aSL7?Mx7>q ze!hn6{`Bs;#7r-0(8I`nUIw$Kaq7@iGt*n=($mVzk(qUhwo0MCMUgV4I}fj2GJ+ft z`mlB-%R25TlGT;Bs$y@qM9V6TN3h1>zNHT@i-u8e42PRA|Nb}YuL{Ris&q0J@`$s~ z8cIX(!1Yx}cQ!YU5OOR?!h<6u+7zo2wXmPg{&BuQLW zb#lQ1xh=#|xx;qeH@R3}^)z_t-v09SBCG<@l*NIAS2c`buaNz`TV92(Zt z&rKBOL-ESSBWsO=2w=NMdBXp9JNN2&2wmF z;Y66FfYIrSss+}FE2<*+e^m_syDBoT%8FKm7eq46F`}w$zGY;!;eZWhrPYhAn&Fl6 zu~y7ch43n?UKoiaj4n%~Rn~|^IBtztu+$n+v(%~zmo5sLt)gm-HKJnCVrxWraTK2_ z7h8*YR>>rqRUJtrtE_pjg_Vp+gA+=0{*rOys!>^&(!o&TR7gat|2gUySxq~JOBRo! z&U)lgw_XXM-C`)!XQQ#5LT6f-yHgA`B6cx72P+y? zgL(Uv$$zNcb&zNgY&`@t*;`Z3omn_zR%q(Ev(5`uL=s_26dJZDvgE`NcH3m+xX=X? zrp+##85;KE6GJ~f4&VD$f95z}vK$t|U$pE*HgaU=hj?XWqNFOESSVz~Vm@ z6}Uu+(0w==4&kwCl~;{&Uc1u&%HJY2r~#7+`diq?o--RZaoIG{HtU~2#I#-)RRsRr1s(LU!!kTp6^yyP)al~%>ht)1K!kTg3 zv}qG3OgiUuxJih+ij)bIHa)ifSNd?zi3am3>}=RVQ3=Xc?zg8VDh2xFaZ&-cg>c1| zwLJK{2h?g*45;Cu^YSPPb0mnep{T6njOf%0{&~uIPDf6FAex)%9U4-m?et&F1GfV^ zJ<%TLQN7)Xe&9S2Imcs;J@S|HzPk*cT|LzYXHb*>P@g|%G)I~|Fl!VCZIp@8>fIPI zEslpq=Fi7n6DtzEjbe9sZ7b050MqvN~n;8)d4I!UVS+$ZVPSAJTZ!idB{3qK#*LZTX@WWAMCaKqEu=OKKGBLQkS9~jP`J}N6b&95@^fOu0%U=K`ON#Z3^vn zv_~#XrFNk`6K(&!EbBJ3W6*wrb{5)wq8N{M$`u%ocE}=(M_Y(?JK8d|yU^C5?Y}qr zmt#EI2-;a_e}OiE_8GJ*(f+;?-q0R}_F1&YY)z%w(O!twI>@p}0! zaN}0AAEMoXw%6+zpJ!P|qaBR49_?hb&%c53XfN81@n}Cmy9VvGf5CXPd%cPAXhUfG z9Bf(R&<;i$K|2|3E!r})r?p``+9iL(c(iNZ!g#cQdK=@>e*X@}<7wri?_xaKIqzXS z+8t=i(DrJ_c(m)$u0eb32N;j`T(mpT{tay(JUBh|?--Bvz8x5kb`#n%wC|x^j`n-B zYtSC~5yqoE6YUPPQM7#yMZSY7`PXad469d7Zm+}k+dI1nPmhT|oP@cl)Uj+Q?+tH3 zUc`T6@L$m^_$A`b+CO*7{sYd=`O#I`wbqXZo__pEgYjmm8h}5Ch*^{ z!1p}jChVVkQ`V$@du5%Cnbn*tfo=u;O&|Srm%bkOo5HEob3Xb8m%bhNW9Fq&N161C zg)D2@1^gh;Lni$akKP~aCw-Pl&pOZLKL+#*K%e8I&vfatK>x{Z=1+j$2s*!gk4pkCp|?zg^P<*AMzaj1Qvs$AkCfrQlm7|`oLM;i3>S1jU-eP)4P1Nt>+ zJ^fzQ$6Y`0+pog@V2;nK_SO&ji8aCUuLu1E&_m{UL;mf1pzqT3IX?Z)boJXG^;{|H zrb_6^lm80Weq%s?67|sq=KNXbyYkNh-3EQ9kN&YsPk_E2ude>pM}NbmuLOP3wW-wq z_~=i&^!1?cbzLfTnU6llrEdp)66hh5Zs=#1rmr;VSwD5h_eVYY48~vXqhI9G$AJDh z=tE5UTp=s_gZ?$>1t$G!kDdU1U@hX)r~f-${jUUl)%B^=Q|9=r-?;Oy2mOQ_QmH9E z`UIhefZGoG`JnHIb-MP0|Mt%6>+SS|#l_z5@=()G0 zQlF*!s;zuAgmG)o=RKTD+RZt*jyGi*S;sc?xeI5NAb+(%zZ3M!O&+~3a^=j%8SJk( z<7DzT$}kM{&p^KjpWT?snxz&36m>BTeTL#(ROIV3N&19+;|_UXrar zcr>BU_xEL92YIXm{X5XFNw;ZS(zEd3xpMXcsnk^Tcjw8PEOJmzo;R-rJ;<;7qpq#n z4SfvgD|SPl1$yId=n2qo+YNms=)VAcx=;QhSN`>&Zw37hAHB(?ZwLLfHL28vKKcxo zz6^WoTsn%<<@H?w{p(ypig@^mEzACyY{D_?JZqo4LtLo_9*rU z-yD0pa}2=Qe#m2)eVINq7WC<$zm3oC99eI=I-Uc1_T#D4Z9aOV&_lr0fW8#;z0zg; zRzwgPdEam;&i$EUnml+9aS7;s(s_LC@n}b%(|?RGvJCXGxPO@E8-JNQemUq%LI2c8?{MjBKgVWAGsm39jKql zppO7OWR5rdy-d@OG3l2Jd(rQ5&_`kX?LPT_;>x!M^fkZ7KIx-(yY#J~^B-3X$_G0@ z{{r+(enk2E;AH0ekOxH{@GNDza8ZIQ14N$d}W}|#C_3SKKdOl zeL3i_ZAztn=Hq{>%YO~%XFiX6C?DOcSGR)xBe2Opzja*3Fi3u-uTI&9}4%H}Z{`d>1mwoipUHTf(U)!8Y zjr7rvcj;R}e`gEoARm2@OWy(d-?s*j?}Pie&;F1~J#NaMwbs?&V9>97F_=CX^!-{= zsat*HZ+6F*fnEdp5kC0_xbiIrJ&Ak1pn87|=-Dr&QgI)Db)i82-3t1}pbsOTpRRtAg#@~nU_3qo->b6+A;pkwUNF@FW z@ZT8)DfvT~StzYsxE2KlYlz3rQS@wl9&EtJ;xqraeOXrT>^}HJ6WQ`|Nigq|1|J_8u&jA{6Flyca$8()i&PMX?l86&+N?Z%;uG} zL93jFKxh$42!TZs0tr|I2#Fkwi~%8nEt5e68N=Gf1c_{d5ttkW#wMCzuuU*87~2>F z25hi_-}Bt6o|P6}zMud4&iRh#oT+f@-dneB)Flo zFAs=M8W5i~AimRp_`w6>rwxc-IUxSPfcUEe;(r?ucYnRPybS~5V+O>x9T5M4v4QG5Wn5T(^^cuAw(EvNBKSWl=gAeM1D`#>ynGD1dw>|Cbk*G ze`C_QujemL|LF5C4rlx^?osjMK90ZlO4`S9p8Vc3>D-6%_g5nywxaUG)ff30G84lt z(}dn`(emj%DTx{p__#2J?g7M!n z{>R4mrsqt4Bf3@+~8h@SfHyD4T z@n10hTgLy``2H-DzwtYaKhgNJjK9G6OO3z6_^XY-*7)m;zrpw$jsJr2-!lHk#`kBN z{EgpX{E5b&W&8!kUuygn#$RpxwZ>m({0+w6X#5w9|CaGTHoiZ{S{{`c}W&Dqg@6R>mH-3llCmMg2@fR3>sqt4Bf3@+~8h@SfHyD4T@n10h zTgLy``2O}Lf8%!;f1>ec8GnKCml}VC@mCvvt?}0xUvtI0+pZ)yd)sZNw06M)I<$4n z#F1l0j%gh`dhEo}6UR;vldvsFfw(_6OXM~Uj5$?(&YZRtIPoO^@{T&`msO0-0~$Z{ zV*IPVq0?^!hp+l+{FX4r-(?q#wKF(;)lcK^g9%^Df7L>bbu>79)lcL95GxyvU*1n+ zUH7&8Yg%Lchn8vl>oxh8ve5iTjg0XRKT@OY{UuBd(D+-7it(Q?_#3`f|C1)h_@{nT z^Z9Y|t25C2cgBFH1s-&w#&dIDhrbcG5Hx6i?&Vt3Qfv7a{aoYC z{@U`k;?!2-Uw*g7Kklp9oBq}I{TRRT9*wx}Yuo3Rm&N!GKC1D{?pJ4^_0xQ1jQ_If zi0}L_^1Fb0mJ;F9{BUxU^KOmCw3!%`z8^70t6Mg5vo!tp9lF$1$)r5y;qoK zCk|xHP0WMmYz;hj7h#nP+$RLxUji>+*nN&T=y#SkJ|ZA^g@EJ1$D0(L!tmP+PmcbE zuyWlaA-4+L61X~zaJ)lv891m8)XSQ?V)t4z8RY{an=E=uAb6aEX3PpecE+)BLx=i4vAxzmi27b3c~@^FE6jJpRVd`#~1b3TOvTYfG5TCQaIYvyN*x)1;GM z)uf#zklx7+IvRM1C2&Fl;>P?u!fv7SJSMJ!lOiBc*?e9q5kb1xamCj9MZ9!9R^zWOgPaDl8*I9 z8ZtAJqaN>%$;LG?C}dPx{zOvLR0xb~Y*)bfQ++uP_E8PNQD8`_+J8wruWAJJ;de+63E-y(rXUBuC>)ygN_*MZ`e6utC? z9B|XTXQ|?*=5{0ImL2Bzbxq0T_=={)QWXMkFxZ>+6fo>{!*Myj`r{)4g7E}!eDx4EKFnft|Wk(Prg8I zuceb9mdQZplmM7KmkG`33gX-u@SN|cxd{F@|`t5|XPE!G|~naqMPlbd6F zyD|+|wbE39y{6a7{2Ul(`zzqK80ytkYC>(c)^nt>qNmzV19Yy5^~U3GA`9rrb!^?1 zVbVWJ+(0H2;gnbeD^U-TkI9UJqF&!g=hlz^`xt*kKmG?O_Hx00z~HxPG88cbUc&#N zDt;};IJL9?hxr=o)hhCo7 ziS^j**iF)}oi%r_s$)4-tKq${O!6T{h@7xQ^0>mC0B8S9)~JCBk@g>mv}M5{EQ4?p zi8?_k4lGUsUcAOwGX-jFVt28(QpH(d-+VK5H&tb11i~#Kj4d1#SAf1I2XwtWya*u< ziUW6JI{?ksgCg_?PI_AO^-8a($3q}+rRVFFo^7T@4*N-lqr}+=Iwd8Z3}B8PzZ*k*JiV_%PMzFtY%W^{WKDQ*&|uJCybb4{Wn{{;DL z3l#^$%7-B_H67t77!h27NU+R@Gb&nuuoZlmhBG>1Zf@|aEFxnfjx>Sga)yG2r<2)F zP{L$K+g$)9FGJWRr^utg;bbKP-7Tmiiht1kMny- zc~b3Z2%litCnGtWReS{e+@HcpUk^U1>(o%Lq|zIanz}^|9giv~Jc7tWYDWY!J;)%n zQ6=jU0oo_vmHL?)x`=3edgTdq4AIUb+S4k>2>5rxv!{bg`u^_K2&c9|xSalX@*YHj zg-rOoK>k+da!{s~DsWjGWNwATXJ=INn>qdgPxQQ+^5wWy_`&BRg}{L8RFU;nrw)aDGe^ zZAuf3Y2f4tnhNuoJL*S>CCdoge*pjN_M?7E!0QxJCU~;J2YQiPcl+Z^IvQb@UjcF{ zm3sx#X@`lrhyI!ANrc^35Xy2D<+fBph|0gp!Li)S=q!N~J_XF+{jh^+_e1YicsQ~R zm*=-7gcts$rAer4B|ZW)zs9co5tw@tgA<08cpb9mM>-WM{rDKHSXJt0f-oFR^ZVHq zqMuKMe}c>k&Fb??LPWAG5uD}zeSq*UP@UxK)xGSz3UgDxVQP;^%o)8fFZ^2!Q8J@v zIg&e_Me@y|l#-=(xX-f^&rs+KbXhuxpv!`1TCMzLTGZ(=Sj(IE9L1=)z^h?7_h8yf z2v~_j5Ujb>t6`yzsDdkL*lp5|ojH{t5jAl!F@NCI@KEiNDrOefE3Ifrn%wRr^f?4X zbGl9v_o2S?OPmVfZxVr`>atXotWoR##^hf}h3_WML*kJuwpRR9-yz5+$4%GcdCKan zxq6ki1O!i{$q@6I_jAOa%t`0L4CY-7f~QifZF|jpkBjc7%Ty>9-5wX+&or@BVdC;$ z1mUw84pH`+9;=}YiB(&Mbr?@9^7OEXk^2Z1l0lLuMaZ>*cCheu)?BtKM^;0!Y>m#E zi&uHyg$$jwEII{z6db!EY6|&y-$rE(4VjCx=Jr*M7+5Xuqak>UMTzC3%-eujk5m|^ zWbb+~+a}VbUFgk5YAHG4uG4cbVw`(jJ@>kLvUK%i>FUYS)sv-bCR;O4(qLnsjmGJ(t-llDa^Szl zO!S@CPy|rn{#GjYK6>PJ!iU`%$bQpbDUUg z4tj~R8aSxHlI{~3wHj#1<*%+zO$zu@+-(lJWS+HPS zL{n2!29p%6;a(7{t(;vE6WpfnAoK(Ln^}|1R`PU&bNmqaOhs_gdCeT!C(Z(C>WGjU zdJ-w>0T76zZBWUV18VqBOp?l=V@2_XN1lH{JxH3Bm=9*@S$-=Z{41`d`W>_%F~20Z zlM3!hv%01et()Ar*s&6OAs+l7O~^tf=|Pc3vgA)g=5{!t6r#q;a7P!smR?Pe@Q{`g z-G*{zzN^x#vCEkzVsQCoWjf)c=B7C3=ysKn+y zYcW1i)+>;W`mXIa8g%vy{#0Lp(Ni*6Z8tD1nQ$P> zAB9Y|vFix@c`uRi_%zFdpX%F-WNU#j-If;3>4KupjJfoBHzIYGEdw5z=Ep#Wf-Q~f z@B3&z8?^_1&yZgSG+R^Um)fgWC+}vkJZ@!2+R+1uV?s(DXwseFQG8He zbgwu%$K%MpcO0GX{TQjeDq@3%R@&a(3(5Gsu088gWGE$Br=%pDds6>0NDmt%Day6V z6r~q)sfPjMc!QNTSZb}R9bAJ1DeaI4QBKvO@@#`k7ipX~W7NK842nTB3f8I%2H65C ztW9-jh0XW4)g2NSWSMs<__V7m+1YFMw@SYO@rR5Zv8U$xah3TZFi%r0AI0^ZrW!sr zTIjXfPexSzJhSZ{nq~yp@TdA7BPo&Zj8&G}(;(Ftq#P^$!D_u9Vv_%+Sy(yB{cwq$ zNLPF5F0ebElEw#$KQgGQk9thAzE3dic3GOWz0$;bt&Vv2&GzDS#=CEF?;0BKzE>dD z9q+!0h~H7HSganNLJs-<)k7`DnhKH!o>kVN7R_{zmIBfB?%ON`3jgT}K(@=y7PV)9 z)uyWfN1K;x0_RGm=oLV~uyY-A&Tx-TJDtnVP(!!IoT=uBX&eM*Cr}+`C+o8y+rAFrfQFC^*JpUM1tz3yffKUSLv*D!5?OY87G!W(pD61@u1tG^g6*bUkXodSDLFIGH5edTe z8AJ;8harN^ElZGUUWkadJ+gv9mW1A$K(f6Va2;w9g0Bye~K)KsS& zb2%)6Lx~*3QL^F+^{$d@e51M})-rE0fkBAdXdh4*6snRB{KBb2`0=X>=_AM#vq`$}rNx zBs!M!1O)bPN5QhgBxwqh=vdC}O!@>IbER5}xEqs1djEPzpKMMsaxkGf2Tq&8;lk!* zLg`oz7t21Utzd2)wb554NM25b{yw~ykn?~hle=QWmQ7X(mLL!$jtQRyhRk7(?l zb+~Tktn-km()h;9r9hVv%}&dnHRMt+%Mr~!I1i_$k#l>v9h?*at*SZbL&V!Hg0QWn z#TeBs?;KQ#YRf-|NZ_%4)Sw3Lts^lRsKHIIAX47UxQr9GpMumFmz(}q<1!B0eh0kp zmvFMQFqaaaBIuUHy%5E++%FrLaYFVwQe?FEvhB2ohZ#6oj`sgYE3>~vExFsfV!!TB zFR{G#D=3w}t;j6aXMYz7HwVrN@HN)wkYQ&f9GOS4lO`bi9s%o6(}{_ZFyowxUG)Ys zHoIzWO6`0N;9FIw7`q2W!wy>n`4$98Ov}Fp9AlxjXF>mop8Vel+I;7II6zJcnkv-7 zQJ*4eIoxVFA_wQ>pd&vG0GX4M!^)F^r>)n?5y7E|c$}1zqoP)XEsv9Oa&$xqU5}G; za!k~K6imv);W^)e)3T`zJM3sX6R_-M0aD4Y0CTv$s*shqcT`^(1 zV#0RCgzbt6yLFS@c4}7fBCv2)!I9ZHogTs?vG7lDvNAhAk5H!289{sD7laZ}Lvwc) z=5B6SYK}!a&i)kUZsH7rllm4Q<=m;kVnjSzy>qL>62g{uVgn)rVZuS5{-uPEDYt0pcKr_A-zK(oKbMvg52p2 zGt2!2^?OE0o##AAcV_A_2Kg+(St)L`b4j$7v(sF$}a~g;jk|^sQ*eb_{%0 zY7d5^^+6XRn&z5<6xX{Kl0?@Q#*>?6PlryT#rdPqJnT;yJ|N$N6lW%!!ftS+=O~6O zhgx#>VTzb`C0T3^A}EcE8e4ZZ>P!z)`G?no$i0K3yn6s-R_-xyZOgtGp!{RS(~vBO zC58LD??YH0mK6S-{1_3Bhb4v23v44+k(E%uVF|MgiaabS;IQO>AU{l7kDzRY2ZhCu zgv&vrrruY(fy6CC(U!XvRByR&L7~dMh9bE8A?&(VEx5V&QPJ)Qz+2t(po|`O4CFhh z{nw;bR?Tdr*9`TGHW=CmfmLzKQHLR%T8?mQX=Jb#5szmjr7CMMRF)w-24RN;&JsFDqC5l6-L3=I+G$-+BRO>~bEsP$@O5#LL*2n8Do5u~cX(;E z%q{k95V5wW%S9~pGlW~qV}lk%gr+<`^DyWkd?U(OH@<5ayJ!Q#4sq;NAgFY7ZbRY| zNn9BkaB36c%CLxn0(SyH4h3-zMyPNS9CZrB*N#-a{XXQaZ;6&7%`PF_&=g%vvLBM- z22zNlTME|?_Wn?KW1-<8q=mP@$r51y6*byeiTHLRhfrr6CE$=&<}pJ7#|$5nn=ne$ zkjEN7K!Z`7hOOZHC|v2a3J2aULTLwAjH#Phn99A7ExT=4;K|brA~2w21nan)wY93k zNaaPyk-tSHInta&JZ7k5YGD`CQT8dtrfvm~qv2HM7N|WjYKnf?5MhS}Wz*7-3^tGx zM`LlU#G#;S?DU@{nDQ%{0ZiGxK!r3O;=fx>JFA)&d=I5;9G@YH3#}+wk0jnFbW6XM z5UmZ~P;eL3Ddb4=kJNz`)T52M(=!xtdKFsU39_ULc76dtENH!z_!BhJc$|M|%uzE) z+yb@NkM~a}cwb5-O+u<9C{pYhX@Ys5SIMPb=Uzku9@#XvR=6s6ty z9m|0!$O^b=X*sNk$SJJwbW-O+G;#G;<^T2w;NW+m_OPO!0;J3yD8;*~z_4t8wnK8) z8>oEsx@scxy9`}xmF}pR?hmTWu+Z&>xa!yW()2|6NrvJ^?hM_%~JgS+y^rv`4F79j39& z&IFmyK!s$uT>qw$O?WNR(UoX=qg%^K0Hk|up8QI7F)IR(a4(A8789z)r|hc zj3{Jt%z2@3Zi_iDvxdHaMx@TjG#sRiYrON&cf&ESe-=?h^B~>78Ywm#xZ^ z_1RK9(Sxta@%@IhRa`WOs(!=AXVe@H-Ya%%S2SUZmDI?Q-lddggJR;I?-g>lV_%r zBvbBbCD$n?*ZE0qc(-h2r=UbUVw`H!-J4{ow>B|k=_70I4ZjHzzkhG|GmL`V8xDNB z;SBIfm|dXsGKRl&NtTv0bNxGHhqJfwj{-BBj-Iqq>>GBww><#gkCSZ1Y(_1Idm`s2 zaLg6OG#kHNpCyaTLFf@G6ykvbsy>&!C@ZYiEOyz48YBlC15=^tf{3zanK!r=tdbgW zf83@9Q)*&IjGLRB>^@{PG4Q#K&kL9*Hn|yv&Fd`4W^A+n@#(DCX5BB_W^o^$Y|ES3 zW;0g;)Nh-`eRu*gx4{wHEbhba!0_9wTy2}Rxp(xYR?YzYE9|tm8~+t{T7MHeZDLrN z*M{ZHRc{OvBZ6LLz>Q&Il-y*}8^eUL*2=~(F(%?QDQpbu;W-^}jLBB+HU%AR+#83N zVH9x4E-!bRl9L}t*q42wFZ)7Y_JzLe3w_xa`m!(dWnbvazOb^%zA!nf$i1yBC9~Y? zT_;w_Eca`-D4qnHYfao1r@31Tv0LN8Em{wEYd@0-(Oha8O(gEsLhRKT0q3{Kp475f zPu<@=3t_!jPyIW&5)oOfr#>$bN$;3aSggN-NRZ}=IEBUf3*cfF>!}BYg)@abSD3CZwG3~OGi!xp#hDE%k%8CuI-Sb zm*=_V!I6lFbh(2|REL%>cX;UicG8{c&$ zVxcV0iQ|xYKEdXkpYSZg{wNg9@~70HDE@13v7x#OAT>z6LP~z_!6BmkFC-QkBARKP zPvF$>tXdmprTF!collMc%sZE3PEGyWK(ai}4=^wg1zW}S%%SASh2h!E=8(cZWb+1a z6`y@mIXc{mX`6213u2AU^Wvq(dKR3l#4`jB%b#5Z-$Zb3H>*a{6Ohl-Ok+SvE6!EOVvs}{xIIW=dmz`Nq?AS8d@ADR6HT8!8lx&AFTIdV zydRbc(JMQy7L&{K69{o3ielH4P$PE85I^y}n8alV%*QR{oL>y*R&F_j$Zr+!q$awH z0v%moKD@i9wIIz-XVi)OYv!gdV4BF7;9|FCUU+Q`(Ps`#Q5ni#j1M~z&hMZst|K^z)IX(>X7sJ+c?|Yw@4jxt{w~VmeiAlEaBJ!N~fZD zU1K?8;P)dGfC2R|63lRXfBOqxpKoUil2TwtE-vMHitB*G+6b`*9*oO@Wip z_mqtN7Fa()$r77f4mJ-pVOfn4v#fjpvCEk z#FHegercH`Y3VC)LQBGU`6N&ZG+riQyyWRw>Ml4*FWnsC z?#!SzUWy9ac1K3f;XjDgV~m%n9U5N)C@IFv)D6Me=vX0bPB&42oE3`kl3|q##ds;< zC=}x*!*)It<0ZpEO(@1o!D$G^cq!q=P>h!nZVJVCDdFZ&jF%E_acR6v-Pibc$Ph?X zq#kLe=#fj~W$Mw+M%1e@UZ!?z{{irlV!TYP4<0~7(_B-K;<_|mrmihKL2i~9FH?*2 zXHsGsFH;BPUqXt**{}F69BF5YAurn5Idc)w7wWAD#yE zKx~(R*e-)jY?tZBifu@i7Ghh>ZaHcl*@}XrejY(~fu;tRWm>XAq6`rvz=7vpu z8L_n37D-?_rs<4QplDYbtb&_4#s!P8i&eq)m~`x554cWnKj3cgEZ}ai1A2~!D;S7G zi=7X^Z*an;Qlbq?%_o;Lh0A12PRc6m1TXrza%cv#xjM>E>spR*QjC{{<-r<6qzHwB zOVo}oLgDbzlSnYDqkK=-4@o1dqnfe79WhPK_{?4iLq>YCL@JE$`US#iSt8v-C@q-9 zj?PyRPKpJyI5hYa5y`bUEV_ibVvProLuu^$QMS^^_K4m3K7?CKV}fCb2tjFFoTUqp z{TR|~hjng6+((I9J1W>c#;qM2rh2%yhI{bL2NZaB4u|fQzlBJ)qQLTB9kQ2<-SX_EwbMO=h5ykMy5nG zH%@j}Vr`+OCYfiCdmxISdXf}!jyBcSS0b?(91NOuA??qwA&-@ldk; zE5Z2*$g-}xjuS@hRLE&Jt6FBUAMu#Q5X-w8@P>*0aRiB23}Lz>+c}`GxhGu1G^sc5 zY+%>C6J8xd6l>7RoeRX7_PvA>pxA${>~QF=Zg?Fb&oN1a@^%HZynW^`gq%uQ8>Fmn zp{mQ%GB(!4n}UCh49hb!l>y)+vBzab4*<_0c$duVDtKqeVR<*A*2-IC_O60OYVUIL z9+^32b8xv5PMfp6KHa4VL=h<%L+n~|zB^n*eIgn^w zY%vWXRh!!fXcO%>i6Lr|lIKcL$Z-2#n?tj|VNr%>h?j?TNCq>jmPY zfh<@!73nDF9>qDq@;*RWO1+tdMCG8N>nnc(idCAai#P?@*X|_U>NuiFE#=Mz#@_aM z1c<1j$lRGI%pNx1qOd9SD%Ae2_T2-Zz2NW-``OK*+2PE2wiN5HOyU@=bS+(rq?#AQ zWC{?rHUXQo70^aaZ@RUbCQ{aNr1av-+p13PM(&sNo!mVpgB3epch5tXI^k6Eu&D ztE?W6S-l#wTIlB>#%n6idcmHqCPeg&IJ(S=cuMhIwdZk~M>`iA_^CdAxI+rKTC?J= z&8Io^dzzTrHlO#5PK)DLuc|o+a-FGCzXJ#6#jMYYqYG=ULh3mx%g%-UWX(oI&yAz= zI{pAlV&Qnn-9j<7zZ$prV_mIdM=_J=-vd zYgl|~mv!k3k1y@A6^$4fU)m-2QSqf+BI0)hIw-fsJ!n^(Y>jEAz))cgeBn+7z~tsz zV{%Pywkrn0Pta(RdRLs(Tim4H;wJSLH@V3(uEsE&H2Y-kdfn+IR*LL;-EGB4Z0`qq zhP$(da|djU$JhZsMhWx|xX7^c6lq7of$^At;!6Z@2kcFZgz@o^Z-62BW8w@$Cf<|^ z2P)YOds|glK6?`bv+RbwY5A>L#7%a?UQd1}f;QO=!|?n7ssDzF#5=3u2qZhlz|rsh zScs72ya}gx5>rIT$DsHDmg(z}SiBTYDA$N#nSLFS*fM=C!d1&O%b>3;!7_aYQec@T zrL&&SdvID%RnvhLZ@pb;vcRo(t(Y5=Gsjc47Xm}cgR{0vYqIOIa|OI>zzxhj@bFww z5~y|y`dc_vt~|H44nlaG)BIiLMj;&*tX7QPsmbfe`9Hi2)wYSz8<(N>0}JP$;8{l- zK^iuK+aO9EZ3Jo92wp&PksI<*Yy_E8gU=C>3r?BU;q3_P8#0*-JiV{1qm2OTfT29e zZO}FXT7oOI5u{-w5E`qFHi9&41Y?P&Z3Od(MjJsIHUdT<8FO<;FIEBP8AJyKnbRF+ zW^4qkA!8%pX@Rj3{FzW~Bj7=Tu@S5xRNDxC$e^|n@Z~(lMlh2>Z6lDzG`JTT{T}}z zY_!Hkklms2PXL8tBgozmtfl6}MnC~_=7JN$@dYOdn+r}1#}}L!jxRU~j=A6@VROMr z!sddLgv|vf3F`|^+4~y*4H@(Wr|cum6kT6%%0AlJj`nYC1lb+iF9%*IHiGQ>;BiFc zf>ZXIf)rOSIAyObyg+W2*a)(V^M9elv=L+v$o~N;&L82F{sBjkN-<_r3^+VkC(EoxB(kIWvhq zFR+bR6;?t7BLTAvDl`({ser;QXf?)25Ira?92%eH%p^Z#)NKeCs%Iwou2CBS2;~v( z!tmf-MC4SWFfv6dOU_IRW6Cp;7xc=LW{2^p#21GLmYL(UO%Kfe@W(Zfz5U!XZTroqqVuo8KhNxNW>;AaRe6kVKLfx2v7p8C3rd6Lrb#^kxE`1W!m1TaTy+2~@ zWOrw6L?&DI`-}~9wg6s&Tk6_-!e1b)B!o zTkzU1Z0oKjTaGr>`11#?( zCES;2)Si_X-iqqFBRZB4R+9$jo&$3I{%I1XxN|KHx5K__o-8q*w1j3W$A-5OESKm6 zoGU=B^-I$fE=7w$X{H^%SS4j=vm)9InugaA=dVl>SyJ4MmiESr6u4!S!tDTLE5-e2 zX%9PW8UW{xw6v=oP8a~^p0xB0JKSM&c*I?4-RulGFJltBtkPNh4MInI*qJj3m+?ia zMk;B4DeY`%zV_JkPlzBDqLq+q1^DRn9aXSYcj7|mruOXgQ&q6WexBf4({Bv`b5C6R zVrXLxuX$4_Em?wl;@aMHrJ5$X%1wvBwR?+}<&d&@X-Hvvh{jciI99@(k1i!R8@EQq zC+PL&n>1GTyDYu3GmNbys(|BT(+jJ_x)A2r^tvioOJt5snM-{B$>x*zG3vUqYxpwJ zrI`qNmS>&RRt>vq*Y&Cn{!Vt(Z%RP;DAkjy8tc z#kz}}g)-JE72Zi4X#uG#ThRz_QTlNlY0RR%=pL}F?3|?%-X=CxVr6OKNW;Xj6Q*7_ z126+h)_1u-v!8uK7KjlS#CVRGtcDRyS}7OBcwGw6T8F4wF05x))7Tbp*B+UMPuW7Z zH`98AWaS`$=Qtr_$HXL7_BNCzyw(xywJ}&-14e3Z(#h4x=DDe>nWj|>U0BWY!uw)~ zJ}vIzg-m-J+aLcuq~j+a^@Xqc&cqHf_!h*PZp+xri(hhJysa%mEuSrtgWMUmjJD32 z(^mOBW}R(!lGeeCDty|Px3gtP<4LbSsvUdKI1Y=#Sg2%P9EZhWZL5WsiwQoCd;N=s z&~{~_bNp6Fvr`WHK6~^Fu}##TmU2XQX9* zG0sTK{BoQTWFC%YvtGUU9nIt3DyzT6tghai)is;5x;|#r>%Re&-=K;dGejH5LdZet z>60}}`Aju}s_zo4Xynj;u*$LvN^7~i2U`hM!|qybEqEZB4N_VQnRjXCVqba`3L2_R zYeQ?G{)WY}^!SsI_Xw5dSO8`Fye~LXWn`bowv}hKZlcerh==MLBWkCX7^1#OQSU`! zO3D55xDBK?S3)k%c$roIGvxecx8by^%4s;pgc=I@mZ{@qH6OKF)*s_4uAu?#Z4+B) z)%#%cvk@n0`p>FtPLA2!7B>~SetCx>T$cX}nBFO?7_^)GBk25hnb`hT_i~iP-c8#3 zFHY1vWj;hu_0^+$ixdll8O=*IzlPR#PtTP~xoK7YSTNtyWHmoO7Kw{uiSv7+9W6Go z-eFTs$<0t<<(DJ*$O6YEd(FJO1x81ebn9M*6~@^}oiN*obc&V?BF&^oRNBN?Y1VLa z9fPebwivZn2}YRf7;H9dgVwVU-Gj}EcNB{}G}o_bdll^gQ?d1>mo`H|&L%b|^Psq+ zZB8ZqBpncFb8L_Cy9bS#(eR?6?jq$y>x4!D!c^kyz13hPx^ zSoK^W23R1T33>R0xMDy_my&b7%*+fUzCO_lpCgLM#BOi-+(Kao^_Kx)eWn-M=sBBW za|4C_Q)K{HpZ|uVt6=sYE5*%Rc6c3go5dv2pMM$3eg;s$_=cl!wtLb^8j6c=4f6V4|!)9Uf z_6|HGI+$$(E3W99V0U&iTO621e39EZd8&p2Ht;A}ogj_DH>@#_$PY`hnDxpcgHoa{ z@M+{JvuX(`c03KeRuw3s4%&<`^P?GqaZ5&eA66h(7GvDxto8+_#!~;Rrof-G+Q3f> zeBKK5O=dOoMrOHW=;^7gR!?of;?(ACGPP}b$xx=Ynv0NyTcYbF=nJKRu zF+3x_5-FaZ=sZ2qd3vJrHlOIW2VPy^yr|Kaz)LagyaGoKR{Zf10V&Q4@$|Pd!)E&X zgkdxNQ7BJOf8OTPA16uYLptPxQcs5`Clii{+MWbBIF0rs}mt3$oyb<4(Y2CA)iK*3tgB9nb1EG<`L_k2=_p&e zQsPay@OBRjePD@bvqKw5-N}MiIWj`Pm$MR@6RMUmfR03 z#8;4*Bhe(s3SOtG=h=%1;(?ZW10%NZY!jS~7^6`Cv!L4i*R6JDI12%cO-@X=xO=HQ5Ts4&~hh2g`1l3P)p1R3WN zjmK)b?92itQ$62N8@)^yXnL!5pxfcM2oXiGTUlu{XP&b;IB912s|aSh6%s3=y%sY$ z#fVO!7)O@LD{WR9&sDidVbW%$@t4iP2{XNt(#QBNT~pt%k*`}|dS#WjG3jB*D2|nU zmHC}ho=mV5S;|$27asS5WLKs!peUgg)wP40+ef2dkd^@OH(z<{?Os3Alxq%+&j7 z*2-8@-u@|{$01VQ4{8|{4b6czT6zCWO_1lG_F1F({u-k4r~3W`)Hc!VBvBJH8f2kT zR7WPB(dTGnU{glPqthTSvj$HDFTA~6Nx_E17c;2S_Kr<2W^~3EGl+;^59)%;iE|-d zNB?qS2USMSO z0>k0$j!@t3aQKRuP~Yy5FM)*maX{y#;ea1jH;Xw8o`7c1T}x@Y0=Gix_4d1#VYd~I zGm<%vj|iykCV)3R()y-{d_pI!_vZ4|g!JTSHgWjsnY6y$;c%gno?2lh4xe>MPs^VQ zoQ&DC^VKuyp8Q&Z^a4g61V|s6E07a!ccjm1xD8?VPB^(o;HV$M!FG`Gm*cnrPDI?L zpzfdG3`HGHXU;!C>&bMqeFm6*7$QFwLuO|=3nfPp!clf;FcA@b2tF(=S$H>g0Bd-P z33$CaA9irsp|o6m(PtJctlZ%!(UcIul<+PxEAh%igewzA0Kb+t=SZ$hM6g3VMNBTg zg6Ihqa6gvdkQ2ca!3gAIo~66S0CuZWp!!OSP^#!}gryDVQ!gzq}&qkwb+kZq)?Xk~?I!>}mHy{$ta*I5CcUffjU^v}D{&a^$tI-c} zP+v9rAr7t!YxF}LTQaCGXwWcHqaWgU0r}PF3mSi5P+!pa77_GA96Twg(HAsC=$2*3 z=uP}vX8~VXWw{zt_~ACF8v6^BU)g6sO52``LO6B>g>da}p?wGTAJ8cxdo|!F7L?O! zXNIwGe+J~FVG0oZdWO#j$w~Mfi#LvRVvBZtk=Z%FMDr>9s%;N8fyWV^Q+Ou$6C(PJ zE59yKnU?p{HefwpV0#U`-N3T&LV==1-p`@J!iyE;mzgYzk2F(geRHMe(a!CWf+aOy z%~P{uJ9m(g++3+yA8`2~ownwhg0us0YqmVK~MeOrdVo$WC(rgvU@Rc|gm-9;7t7spN zF^QAN;~Od}AXZMi+=bXKDtZ@8S`(kNBeuJW#vrXLao^U6E!45miL*(!r;1KQ+T;Wu zBr5H#au*=hllW~1VoOwxbaN7Hkhc6>4Jt+Ee#<6%0ck|^oO=A&`O2?{zGAHsB>o}ETzq1lY zV6ZA3uX3z9jN5+)MlJ)PlsHnCQmcaP9uGabbx0P$H^Gtm);JTH%<7V4tBs8IWRz_{ zw+=?p9FUhw#2jBPzX>x&F)6Wu?aySYOegCcPDNaX+}b8P`)m>o=`xHZcwQKaQ}!1a ziEMi$MheFsCL`BMggyHTRH|<;n1n*xKj}hg?b|0}*-A^MX0VreMsmSLfg_ zcG6&|?9<@d_N$n`x!Jl->yKsg#9EcC9p3=Z%NwIP^i!z3gJ`siwLLV z6^>ce=#1)jy_Ok?xxyB6g)Qa^Tg(-KI;qa-k`o#`E3m~nd9>$8N$wQ14 zwl-FjXtJ+|$$kS;ob_lQ4P(3hgm8Kt!p=riM8mkQPYHMgVTVTjhG|`?6dHgS^&6K5 z;}DTsPK^hbIF?u*jrxs;m$pL!jQV^By+d2QR$sGNeZ`#m^qd>4~k%;=v~oIjwCc!Sh> zq^Dm;*d>C)Lyp14jt3F0y%|nKz-0fM0q;?GwBh(GB37a0b+LthOCo`H6nc>V?aFaT ziM%6FRR6fjOwgC*Wt#p8gMSP9R%8A3ttjp_wD*aVi%7l(pLR%T!6iq^syA_<= zJUB`mVpwvr5c#fbLC5Nuku% zkh!T3K&t2J6dI5|q$L z+V;^6BM&)Shv%8vm;=UnL}M$lio8x$!gVT&IgV*k%|%`TEaD0vm+1S&U?tlxvEWFl zxaLw^1zFjX(AWlzkd~MI4q8-ucb3x0d)tOA4T-*%Y~BU3I96(J6tHz%{sw|yq(GF) z%1&W7ADSn1_B3>8bVA{jLzi_%RLJSKBw?Ldsclg&&Aa=2Ew`I|(L{InG%)9N+`|t*cBhSVYoC+0uEYqY4i+z|?8jscBbF1K>%s$^G$XCUT@X627Xx>{%9o4kw2^omQtq*P=?oC z`7XhtBMqh%v8gxHM=+-gt)nchh)pvy)NX|)!bV))yq`Fv(iv4~mu$q%%->YuoL8;X z1;bFimu3G(uv9Ni4OW)+(U$HyX*INewhXT$vwQ()x=P<>tC^D~G@t>pX?BL;$;9Av zt2L87XCz9}E)`XzX)(f?Cb!MK#A86zgF_Hh9abY!243YW;VR!M;;@3O)L%zoS+Z4S zEg_#ES%ZUFm~ev?G8){>BpGCQcsJMtjdkd_iZn{j3DYp&1S)hooH*3 z=hP8&dz^;vR1C&`)A{?gK*8?}?ZGx!Q^YXJL;BmDMuuTYtS?-rlhFm_H+Y{Tj<6nb z%97mcpN*U!ay$-sG*{vZJ^HQ7=t!Q=`&T;teI_3$PJXKIpg5na;(V6L>FYX2rq1~I zb-g2#r`R)j_&&n9>uSw{7a;jleILfGMru~_t`{D`j&fv9mK%aRgdOY1+$ql-uEBUT z-f1K)uh6}KMlr$3vr+KQ*R7zQ=+trU;axq>_LCf$peTvU>2}mgh~u|8($M>iQ2ln? z;U%NTLCzqC&jxNVLvpf{q3PwX`0_wGuXQprC{j~ zu(RB!QFY0yFf=W-^W1CE-Y&=F2ij6ka`}?d9~28T$L|9A!J3@9{LxU$I>atMujIIM+fxn0ta9;2Psk_E)s4CUVzCav}L}h5|==^ zsW`gKp9>+=adf`F)evqE4KiBGU~0G-`JJX7{)rYMU#)M25mJOXU5PL};1FrfP$CUa zI7FN?mC^7&PZS-VqeO?i04Yj5SBVm(u~QT0Dbv_-W$|Drd5y|*d}fVFaV}6Ip>zh8 z=RzH4XJC0QilcL+JZt0Ve4ocH7i(th3}YrkH~vIbB=>E9tjl+DwR}6Xe3WOBmWOpt z``wh7L$5yuGvJnSbeT0|Ck%VK`x+k_ zE#0vyWTpMXRKxs`W&CGcDItsaiHY@wtg%l`Y?)OTvP9<;xeQ(3r*ofQmEuw?2@7M; zrq8Xmc**!Y6TNIz$TodJJhX%?{Dr1P&k5f|;Vv@c%>0mtO>50r)57|trpTx2Jgt!5 z)43(A-JeY(1F$xeuApf1WD&@S-(KSaRwJ0<>wLeaEx0q>-ph! zk`XPN>;v`37>aoO-%OBRY?sEPZaUOcmuQANXb)|AXRt0Df;O#pWR$vYF*JzPA(wa8 z8Um~^<)`}il9oo^RP_dNMi+v;F+gKg&LQ=?Un2NfOyG7_366$du=MB9-}@zkH)8^) zsY+l$B<$_DiP-W>1hr@mB9h$}6HGV>YXYp=*oERF!2U7_vg(MD@s@EE*ir$XYTo1{ z@#iG4Y(=qGUZ)HHkQr1$)R`+E0?M+3SV@M%#Nh}!IdP|L!SD@}A%pV;T-zxD;y4E* z>{_-yA#^i{IVEQXaBY457~vBj{u0DfXTr%}Mf4g~z7mlnBep)61om`*yu0BPUWUWJ zI-QP$UT27oRb#G3y@jwxo*pM}Tc6H(-)C4KKZ5f*R3{VxoHy%EVT!p(rH?6XeLiXH z^GTN4ySX%j{Jl?ZL8u@fQK5xOSQgg|WPmtr27L-dq9glaYEdt2aXNK~fczhL- zvU>{v_k@T~cjH?WW65A!)B?UmaW%q4d9WMbqTqLIaQq|Ig{y@ z*9XsI*xQ;8sX~vEgp)_w(7ill{r~@?$tC@ewRFSQ7fsLKCStRj^$xY zv1)f=&3&5A?@u@j2b(28YoqdC5I&C3e-P@U=UMo~(piKY2ZokkPsqIRiWs6og3}j+ z{6-~ud?F@SWTtMXBbEO;LRRJpic}{1KM+x*^3AKkKP2QW$%k8eeBC$i0J0hoMU_aX z&hmT6W2Db3NWws^U?$AY$_ztO&K!FnNaWEVq5T~hyiP}$ms>!urucV){@CkDWm%6Q zl|R)-XqF$~*^;txW=Wg|{H?Q;8N*qk7qMw6wpmOo34X|?$He9*F7L7MPIguz?&72M z%9kc9pH2efQkEofZ~Yg-{HZ?4tCo3Tr6tTOhTX!%i)d-}8MX{$g@s{=8pKF&GX~Q7 z{@VmknUSF9Mqz0+q_n>hqi}+~-^o_kjWewL1_HWNeQ*gPsWm7|WAL_KsRwuX8G{Xw1t);(5od_)CgxV<&+ zu1)Yobjd?=&jRkV@%l_mTn&YU$2IV3VPQSOd5^-SCNBoyKOHw(^|+DXxPg~5RKUUy z;F!;(rbk2HL+h_Xwn^t{Y8t_-{T6$puPA%%89f`5zKTYAr?TQmd_$&ISgj!rcNi;2jrQpr!z0S zEQTo7t2Q}imxjc-i%Cx+AdZ#28d8KSD^C!-3!N4ARF$Hcl(c5gT7@_&Fg|ykcXN&>$=1^x|WF zp?vZZU}+j5rwt$T208zWgaqq~;H6;Q)1-gZoQQFDmEC>^^MdsOsr;$FNf;t+4%a8y zIjR67w0C(AUI%N-kY%qq#H!&mc!Yfqry~58X%Dpf$FxVrw9BmA9Z>iFw)Em38j98` z#oCzS0J|h%tVrc!wz=PdY@uDlk>^B17B6>I-xD#}9{prBoW*+VKW)&=`&Zs`phzjv zHnCI-?RPO~Pq$^@#n;npPCDD#d1@1rhWBUG7QRu-AqewCX%eQ1dLskq#=y)c;0R)&H0t zPN=aw-nSv%FXHGj?|abHFO^I#_L|-0)9Am7qYKLXCf!8)7^9W)kI+2Z?QRpr8)I_N zuS&6|_qbI{enD08qhrZe#iGs;(N2j)>-8>&Xs0UEG!~1h?lyeDS$=C&OTVfHPk;dG zNaas7Sc46g>bse_vE)a^?3dY`H;;}Bb07}#5kEjHy4EmgtulBcX0TLM8&i(!qdio} zj_{9LG-`i4Dq)P4EcdKtX$@Hf^{Q=^JSyF1NETHy*&QU_z7S)kia4C0fp~|ry;Lj2 ziY~)=@j1umhKi$eq-o%~scxD*_Lv^bNIEJl zWhEr>74E}Rl4Vl)iGF=Wmm+y1C0TrvmV}?b<4^U?L7Njv9*reQlKEpMtNBT3W^s#6 zGoxR{`J{O#;tA8_4z!{&64x-B^L{GatzT&m*__X8NPK=wTsioFZ(A4W0`(?&40I%?(UBM-3-Fsezj6EBN9N&500s6TF(R{Oo+ zt7gb|IO1j9k}79*@FaWaOe4rL`DVr}6YEW~f6lH7S^X9;2Z;V}0aK3tZvj7uSoK@L zM8xlC%t~Buo;+x?oo6$YSwZrmp9_{X8))(y2XrnkZN1(M5VukUq!Zsn(8-DW_3JXT z{q)TCb34!t+_Wsl5Sy3;~JTA}tSw%iYBip*f zOrIyaN{)A3YTD;emFVyviNT7YcoUN0P}CxcvJ;|Xxzpg3;_cukB&4D&pOd-2JYS23 zjiCh&MVC-5zJ!J$3Um2;Kpaklf0HC@wty_@f*7iZqwc076(DMtEnqn$)xkuR63Ct| zG1C8D3{l6Eiu6{JE6D3un0m6p?=KXAsbX{UDZCfQ*mWbZ?p0BS_;KsM1Y!PEpWx;-?wm6Fx+>&Z0$7bh z?jcKA78)aP$i82jV#C9FCA_=`b8?cJ!{lyRoQm1)J|2vg-M`J-!gRaKjS`LnK7Z@S zqpmjTb_q6yGy$1}%bl^4lMS*f9nZZ1f+$z)KCak(Ty6JJ+V10T((%k!bIkW`66b-J z`DPAMrX!X$1|0SqrOh@I7VY&HMwfY&zNu5pV%CQUObV_DUwp1eD|& zZ0iiewM?dCd2FjmF0&@p5Os7lC0v18=}`9oh+l*DP#=qc;c)Ki%t_X09O3prt-N3~ zIIN0#d5l^gqdMz}yS~ z%yWU}F+%fPV*CW5-jt3yMJ;}I5_x``yz67w&t2p<+_v&2Tt9|hzZ?WvyaW>0q z0z8sp*_Iu}vZP3IY$t>pS(0U8S#q@4aY&lQCIku%w1rZZln`j4EFpvzVkaR$A>loi zyt0&*@*cb-5GZ|65<-FUc;7d3&cEINmqTBl65spZ`Old%XJ*dKoH^$||B{tY;d&vj z8!`=rBAC@gAvM)spT&(PrX-r1M{r%R$n*7^Q79|wn-%rViuz_neY2{*Me1!HuRB4} z8oC2a=NXLG@w(;)@MV2w(RBd02QgKHYv!XXn=%Wo!kvn{(SF4{@nN5EY+-1bc@qF$ z#a+0p`2?i+)rMv7!*w06Yc>KeUU$fH6)udpVEb zug+h57-in=z!?_uay&q%1_$WW0R9l~Rq}&LDlfN-^}eR)_*jXcv-RG}dr!_^aT+CM znV(JBd)I-FmEX{MwJ^KkdbhFOzc&kstK2;=_XpsA<&PEo@&NonmTp-frTYT#4+ws2 zo`A;!@XHAPQ$_Mx2evdVCrxkDdw&tRCmR&J91{zbNGwp?kFbF9=e;EC?OKoTf$z`CqY=Xn*Y*fRSpb;bi#NQif&%sfKeMB=ffdw$tq`1d9Nu8*;VS z%h5wu!bP(^dA^>HwRpKJ*`r@I3KQ;NMS?>_3GCA>T0z+~=WtnfkYwD;(iE}Ex%tZ^ zyoJ^OhIf>9+Vk4B{NFi9hQn6SdrO$a!0Q|Gy^jMs{-*Q`R+`5*<{5BzXIpqpA71hI zxLticgtH=>p8@dQU(oUo`qc=PYAao}efcKz@7!#WVt^yfGgM!dt$U3iy`u6ipj+ea z9;zHc;q%?kao9`A)mFR*m8+jX(eGxY<=Z~5O)f)U_@^&>mzKYmu>@<&|0@$|`Ke6J zanxZ__uWAE{mf!2K6)pF{J<5yzH%+@KI?uCd)1$T{yeIUKmWJd=o|G5jq|kx()g#N zjX&lP4CKF!`k%>E%L@$9IJ^C~?(Vo(LB>@xL-Y=9W2bH7BYqovo1?VxPQMLFf!~v< zqr};T_in-KK^;=i%-qs3#rKZSDWU*h2F6J69gpI>DT?nkA$-hAZOAO6Q#t%u#kbBE z!1WH_Mu!i*gzjAu;G?^~G}B1^N4O>AzQmz_rPufrSoE)C#P-i9@-;s4$AP?x>i9D& z+$&_A`8g}w?FF{jk<L-I%nY(*6Tm8nP+A19r|1$4-(6xFv(&~7m)gyw~ zZ}n)T)f*zMPWi1aWjZpmU>--Xi%%Z%+pVI5UnmY9<6)VE#w`}pmIArG#1eG9^mM7; z=6knbQNnM<`=79sjEwl~R80^W&DzN5v(~z_zy$Gc6V$vyUa(%XYCC>cZNf(_0q5fk zyEouR-PkaK)aoDM(yQdoi$-1+D(`GUD8kEz$_-m!3VGR5S&Pegyle#x65vWhIQ8M( z0NQZ5UV~y6DQg6b82VZkvC**xT^U`jw2`;0RN_2rqG~9ZpGfii0en^Q+Pr`dS+K;B z*YD%?v*0h@o#^2!qYIWc2A6e999#V?t8oI_XybL+u6$)Rw`<624n5he+*NhZ0dg|? zDZH@?Blc+3c>v$eTmJ+^^5GRO+X6427e_0Dt*eaLs3Ni!8w`{@5F0Av8 zvN{{Gw$8`>I{A+R#rs+Orn2JnTGGT{1jYG|-#=sVYs!k>?TWu6DE?7&;7u(4a$9^k zuKAaF*Q2iZANs|c_tfLg&H1l=Q41YHANiMg*FU?$w=9-R_LjOj@4upfOxFSeXP=P5 z9v>s;U*=tW4skvecy}Xdz|15|74Ejbdb8Bx9{cMG$;I{BUt6-&<*Vcuhq}Cwb--_Y z!8Y8@tf`}}|HuxiKfpErFzH6S+52Hb&$rn26`ul~7s)V!y)DwEU2NY-fGrz;z)mb~ ztO4O}gr2XsfJ_iAv4{>~UTuf?NffCKhWL96nsoX{%jh4Y82|p{<qOg|Ix0iJV(mxU%|Ba4k6>k59sQ zg|4a(IY_3Fr7Jn{uGp4;gkXN?vR)jd+|%hUK4sLQ#f3kczwmmH{(^x+j4 zf0;Mr&qXQz6Wa8+)(i2|rL^*&$8{xV^c647?_xP2xS2E`ciRMcH;E!*T;a}!m8*o)aPqwO_4RLQ_1%20=7NUaQSI}Oa zznC4wSZw6Tys(-?a$8{qhvr50=cjJ1;Mlxaej+_oK_|1;{<@-qW3$cv>aBP;eyv|2 zs`Hi)-`d0#lFaGMhrR;D{A)h21%Rcs6mWme%`o()!7W<7GQ(Gf2n?X^~;a*de za&7KrX|6eX%h94Yv0Kpfx3ifnnBN8(6nQ|mmi?WW9BowjlE84~Y$1&!#ee}-&7kx$ zBbVwaTlyC=E`U^>J`mHVx66VLmoSZv}h=_v2iQu_~r!In~gLsD>I} zL-X+tIlWX}4dkNwRp&xh#w`zhzlwgABNR)%&aW zR!mKuoAA>99zp&o!1ROKh!0CqK#QwBb=^71idfsE8OH9k@+0 z7FQJh%L)>&ngrG-o40v^X3SSLSRkB&cUc(H6c9*}wa~0B^2H9QGp~?c)Jli7VM((6 z5_$5B^0Ue;kc)9b6PD39=KUcW$V~LnscFG6&#zKcMpeaySzV1_qY1Neysjx`9^44D zV^+mmCmiyHup&bq)jJBs$&tdqehI@IUCwqv11&tvGb_ag8HZMg&M-NX5?3?zQ}rRo zty)IQvZAs&rqzvUs?!vxPP3|x)6kgdoKNiyT!u(rhtWcxNo6Y0;@`6T3yXCTx!Bpf zc@YQM;wlZAfPxc-B~BZcI&EAQ*G7j58k?jz>1HXAxD&I9ODNHkNEfurg?PUdTrAUz zDm7K*jzn5q(ZFD~*x6iLeHcnz>-56cf;y)K^;*7O<7(I>*OFhf(N*^CR+F;<%~7w# z_<-T4RF(K3$qqu)YD3|J5Nz7tZw(ETvui6BM(o;3r%C5JO+K>9EKogpXvCc zp;m`%o$zZ#6*c?<3Zg!#$3bi$EOQ#JQF_b<2Z5a+l_^3HwEMgl9dn3mJiwmBN8#@h z4Y;wfIO_A=7__Ed*}0UXbD2+$^ee3L5o;S3@p8z)pLb9UXLq@AL7Ql^N{~Or6%i3} zWuPksry9kOCzN1U!$SnoVG~=e!mV-IuMs??ECVP#fVXt5Xrek)Is4|MufbeCY9$+! z^rb0kikr*K_&jH{=f|yd%=bDC(W#n5jMgZ$I6EPIBEJ^-2D|7R?8S+30w!!a7yS=v!X6CNbI1fEguw8(`nxCWDs4Ce4T7^L$JBbe9zNCI^PY21xfMA z!stjs{K0UAEQ=e;Me&iOi3*f0H>ykgky7K2l>fj`2y4PCkio?61ZRR*Mu*9{ZkVic z!(?^&FgY)3w%2gf#MC~lzAo;t(hA>-sJt60H%r>+A~$=!I4wF^`(h1zV4g$i8mH}U zPPKv@_Cv+WxGRW-*s89@GSe0~cHaz$$8t(qqqA zq@`mXpxIZZg0D>T(&96mt}WSii>0fC?JFmU7()X8Jw@BBM0$@s=;D4r(5k z`gI~VH55Htz!sO73B;av!j9Q3CzXPl1Ie6dBwLJ9qT&vOYu&cvc0_f4ciAR+=7jl^ zPf~=T&5%L)1bbeBtmmi6dO;xTg(~YL!E%%bc{!mWJd~MR^`~+4@-bnC%PxyMO`O)Q zetx;%$%qE1dIZUy$W65uE3A>jEfwL)u-yo^er~xtU1d!Pdd1j!HQniXKp1kTYr;k} z6ihnRN?(kMD`sA`El+!+q&jOO08W8p*2d|nwKt)fRSuWm?ZB@JlT>qq05cdAbxCSh z@0?si++R0JH&!%9Tyv8ez`VLkh&2aN)WGVWNZo(o6u`t z7dywHdEyo1R@?_Kwep6?MOa9>m-+pL5NO-ZiHs`?T<+Xst8@5GV^OW zvfKQDhpxJrgEqM?ddsILVE6Pni$^<>w9AtGbNkS3v6@jt` z3pQ5qfSMycv?3R6Rdp#Lv#R=C*d;>&CGb2qO@XpE~kOg;rvsGMn2thSvInMKsZA$J%NYp)E*rTccJqRMll&l9a-& zF2_@as=b(m`+^JY3(x_Pl8Aw*8I-$a{KWbDyd-ly-*==dGW%s^V}bLeE)5>1QVD61 z{I)hETVn7kFnBuvpl^+;Z;R7Rjm}C!I=R|dJd0-`j#Hi0(k&f!yO6nUN zblMF3#je*xjnsecicO%jfg+>VcI!!0SKaI)ve1WD*7z!7$98PNM&$q(;`*Udv)(?W zr`68()Fjy+XI$Lg6*mI>MVy#1`p>a2&Y;BB`BlIRDBu)74@)CjD9lnFOv*q9+_T|R zg|vuq9J1z7F;r@N;VcJ?Fw`9ERhnF|FJL%7$0lb#d})Lo7}kZ7*T92VOGE-1b@Ky* zituh9U&#}Us>|g0S#H;I$gH|f=X^vFD;JvT1`3;yyL6_{x4ZsiNL(cCbur3JycEHy zuN8ocImMm`10B8WwC+-X4oVYPSMmv#o~sOkr6m2)FUBB$t)1tgoi4l^J&6AFk%*m)L(k1_hJ+lnk}RbxZ$M}3pd zGxR1zH`h$VsfDiuZt2jqV8d3G-tVyA4Knhx@+6=>@Er{{j=>iB&~CSgR)+=Zhp9K~ zKBK5w1ze`k=EwQ0>xpIKi)9n7(@nA*W^)k1fC@Z78N*C;)P%yBD51(hXPSJ96dZ{y z%cuD+xGWoywQ1HVY=M;BskVl^XhgSsanTku*@bcF1sBF452&b5v}(QZikrO+o`ifQ zO;#rJYvj1_1t2%-;$nH8938;F>+tW@`1dya`xyRZGt0B}1wMwDk&pjI*thYKdm0}V z|B4UuD}Ge636sIA1s>|cZ~Wyh%$UL%({Ri*9XEv;)6iw`!nOjQY0ngz_^al)$?V@? z=AAKBr%aLX(|Y?d-kpE1X)UZb=Sca>%z|UYQM|@9oG}Y-G^?h~O5Vwy+hi8J-W2Yz zw}^As2DWP+;QjmzKC=h$k>gcG;mZ7TiSWzv&m_W|Ofmo8P3F8!rf`ydS%d~=!#_@D zvtS|j;=ec!le^?{l*0=t2>Bp$v+^he&%q9{IpFX=cB2gba`Q80*%?zf<(OR9#H%GY zo0^Y;4WJTiIPq+1zj7zOX)@=#&MaWhq%(ZeEITuZHs)3rsz|s)qAtb5?2LTehAUMU z_Nan7W2iIPH}VF1log$Me-D88%bk-kEroUL(lU}ggMlkwP>904<*=H2O#w>MaI7M0 zs&a417FsJZ25;f4$mD)@%hRSdP#P)l`f!0?vB0T7bV$d5>ddZLauX zd&3lVv*>?{cIBoZg?-3GPrcAM%ipOh38C*<;O8o??zSOxM_Hgsl(4ZOv5#% z`M5C;o0`I5j4o6;6XBYaKu=rmFok`l;gAf%!kyA!nBy#W+$_EWI09l+)jwjj<2{g9 zqIMLVF$rr1HRTNC{STBmjmo@xaFvmdRF!`YMa*w2@bT}w;uET-86Wv2{8){T%Jux< zt5GWX3dl+x7gZ@Eg~t+BigNY$qiy`{)zG@sORx!2x$hpEjihP}n3SFNUa%$P?^ z&BN66)28MbQ+>*`oHWZ$vR4?3YqT$pUtOjV{Cb|YW&sD_U8Z=5c3Gj(!o{v+`a!+c zFolmNmoSC=!=wzws_s?)P&nuuM02mHxzf~LlRa;tDLw*R4;ypbG(AkRiZ`*2cmiw{ z&SVg8h&j6lI*_QaRZd~4q+t*E7U0~9J5qhwRS(kRprm|QTPo$ivP|V22X?(c?y0}ZQ(vt!C&tGV3Pz!{GwUazG>62 z+hD9OnZ;@fgf72}xvH7Kr(P5BusyL~;%{@!ZL|riA21Cw#vC;B;ZaYSIv9hR6Q=e7 z)erdR#xAv^r%mH2k1@@e0I$uyc3UF*A$ddDcdr&`P@WyO~$;0rE;^aW+UtF zGsVxt(4F6!YXk|;nO5F~OFzc%1O;z^iWH$}oNDiPfMAH(_{fg6+!H zwVCSYOdYiNm~stq$Z=D5pQ)LG;yz{_rIKu4ti$HODHMDF@uKFHR1yM+N7YyHG@7d}VXCT6b&h;{? z0arDM40NKQJEG#<@OG4+`Jh&rPD0(k$ANI>u~ZD0-9ai_L{ z&+x3MDSsvf{_q*NQV9%1KTo{y!n4UGA&%S)jAR>JB+E!Nrgk=#lsl?}|4apd4*nPt zPSn8~r-Na~Oh--qa}ni3xc)o*`!4>8KDK@cR~h-JhwcS)kSrB2OZC*rYf^|w&CGN5 zm1VG5`BVI?{3SmsfU1(QXC-6L0%OlY9bkoJ_$Z#wkInqxc`C)L@KH61k7^!%S|vg0 zpW-S@o!4p4=kO>c|8g(Qm=#d%R#93;T=Ql%Y`@)HNOtcx%Vz1gU~B4Lpaw1?RD2nN zuEhdsn$>`ITIbBW%o4afv1;ZuFPLR7n8keH;pP7&@Q5pv5#(1M%adq6CG@@Rhv>AGw))u9!VPQ>I4w@8fR8 z)eqZ|gZQ@a3lor9+?`$7l3ocxu?)943st$XaL^QcQS#A8g}BhnUx~OF{%Aw|7O7)& zk^Cr$GyvkF3$ga`yW?}VmGq~Q=3@S9y_z=2q~Cc9}7 z-0LNvc%83qP?u{>@kXh6hpEXII&lKnA~$Lm(sQVvf*mmPpms9`hN?Ji%A6dDguM4GU zl8i|(Uk#?JG#6Q#i!9AW_80uXvuyBsBvt0H(#tQqUarW{cV+T-JYA8^Utmnxh{3^X z&lp1quQi!7Si*!JEPKW*evUIZ*nPx0br{u!_n797bLLdHU*)AHBVSmH39XrzJ+Fn~ z;k;{1Edukxxo1psVS#CQULvn+3}P}O+K4lg{v06T2>M-p7 zsBm2Y*cYQnHU}Y`LXRnur_w}HO*NoMXz9aw1Sb-Tiq_s2&GMCCU`9S-StnZZQ0j@P z1TpM+8umO5d!B|}lL{gv+Vslx6bL0%pri_vRDp&a8}{(AogcmYxRxKZ^F^`q2l2Cb zlphpk_GaD{VV;~pSMZnn66SS{&zZuV{;<2%?G;T1BUqp^Vf>WyVy=F;a zy-FXSn1a#v=kgym^KR5}&e^WHx9~c%ELQ{Lv4mxxHp}0j9^`3^%|Z|VgG77HMNi>3 z#)~2pmB~Q-518e-+U#cJ6M5qv#0e5Mt& zUX5$Z3blj^72ofg%op~W;*TP~a>b{E-)mvts-B4a{z~Lmt~kft6<^jY4f>5f=zrkL zl}UY0U_%0^rtnr6$}z@27mwfeYL?EN0JCp3nKhS~>cZt5d$TeF z{dh2Y2c~SEZXq{g>hgQd1?@ph8ot+zdxb5g<&ew(@4YpduNLS74v1&7~@G6S5_F7iVL$(x*QNfhCjkExf zp7T?;(!zhyYuzk*9g1FH4s0MZ9qJPnml%*xget{of=Z82G#-3uG zB9k^8m zHV3U?s*A7)t0GL9!f_#HN{$7tGDXA!XC4kFxnIH$KhTEId$M?~A2|?L6ig*i)TmL3 z-@MW+&p&UPk*`J0_*P3YM*P|bA7%IeJN;&Z-p+&byVE#%L4S~tXW?nn3_porf*t}4 zGLwSh!$=1%255{UyCuxB!gaZt%YJ6oJcDF_{Q*ZGJhQNheuy&scNEJ zs~!tYvoUwtK;<;IrPxS{dLL=Hpf%Tk&|c+M12dc1e~DRB*oBTDCxL$&9&Iu$$kRWp z4dN3iQW|mkc5`Flb%nd2QU&}&y5YK9Ep*5fMxY{}#rLMdLjH$nYaxDZL}G6t8rWo3 z6B%^wwTje`w_l~>4}K$mS6CyJV!rMvQ`A)a9jvz8H2qLYT|m_3X!oK`qS*v=3(Yy8 zK|~~O_pQ+um;W&CeB(`p!-3_I;NYxve+b?b;S}+)o*$b-S4axsJrtSDuW0&U=HD@= zng2P=XE@Yk=*e)?g_<%0Xp*-_%ZDVol2&SEu__ez18*fQcO?T!Y`wt;BgaYxjmU}O zL*jmk63=^+wav>jrtU3Vgla$-y%aW+B6!*~*vXv+eP$^ZU+kSA++nB}3-Fek#SiG( zAy)l@NbbER9HN=ykYur-nRQWuPE+$k#6E}Z;4Zq$E)>wH+92SnLQ^}2Q(HU=P(Od-mr^=zV`MUajKi>6o&3)b z;lDWPCrvh@(yzs4?TmcHCK*pdY`U}^%r9h>l72f;`ip?7k`o1yz9xhgzQs!a{0zg* z;!P2L6kdji5+>*^v}WgE-P?}1rif0!V6@=h0#-#5BM>$x2{H{R(~aeyaC3#G*9B2N zi<|TCPnMgWHf!!w^YXO0_)bkraj=)E8s-vl?R#;cy_j$m-Gt+5Q%1^4kkZOt-D6gs zEWcWHQXTj`=Dd?iGNv)uSQ6`P5-kzK2X7vpZhSdmG$rA9QN7-apbQ>37*X??B1PC- zXg22{`G@!kUR`_@=YPO?49lw5KKGnye&&T}E(y+N)@cX6b97hD51zeD;Q`Zp=u0ly zY=>Imhh`!6w!B~#eqC^KUSiW#oOa}~HqQCOL#Ej6+GLoHYPDl#5r%rBliw|+|Q5C@7nznQGA&W06)7^`oc%d&;N_G^ zCfDJknwBL;zmlV0$smB=@@ooZ(&Ecq_8RI;^5 znAE5&*_k3dW_K~YTiq?g$uXre40z{#rIn1 zf_u?+CQrnVvJ^7!$l0u1&$RslgyYDIFF3(fo#M@iifVJ?l26{uO1ZrF5yRI3nXv<>)W8 z5klqa1M4P>l`a3VjkSfO&?muo{t7 zf5FtqXM=p!>+V3kT`M5{Y3!%jf7NUNPtcit@Xnds z#jP0e@$h8rmxa*m1x;oNIF21?#oQG2GS`Gfilq{=a9xtR_g*Q=0gds{lK)W5)gy>s z#~^-P1~{tuwe+VND&+o^ra6z*Pd5425dws$(|IMp z90w7PV$v_$&u#^O$nv|;&$(I7fFsU!VR^$pk$3VT(+=`I_XDz=%+Hbe6$~~s#31vt z&jF_U&VI{swKzKCPI(Bi!?Qw(wM|SOH3X>TCmYW3@Y@MJP zhCAI4lk+o*56f`iw6GF|g|!8+7K@!kV`UX%m3U`l>fni(8k5xvY{!!2ZtTL)jYC(e zYrw|vUheoQ2Nq!k*arOFwSEcMGs0v$xvLe1DebUjEofM`gj(8{O7n2=1?2w4WEmWG zTsV#4cl=7E^brX6;_GhtVjG3K@#*LDu>tOeec1f80GpUx?9o#ANVJVrv)Fl*)J_Ym zY%zC)?R088NndRBA!(H15*88A=qMXqW*fbfu@Tn&;0$$Pw2=#=Z&ixilEpmEKf*sw zBBOrBtVF&YoAt1=QIA=uNHwk<5k{eO0aoi})<-E5xGLb4y(mR&`YzVO6dO=}05rbTn1vsx2%)b`^K_8sN*7 z+UWhOFWbg+Y^$j|q$FCy#LmNELumSe>t*!E7h-*8Ku;TlI%+a zN2+BD{Rvqydj6KDF?Bm9_lHv%|dnOv_l z%YX;lOyH!RK(v8PaR|y0D1+tLba)Ly(Fr@oeJH-0S>u&6%I6 z`>~@3HU!TvIO9g{A!b1&4o4L6N*olln7_NrQ9H_{zdUmj7)0BQKa^l+**>gd5B7mD zx}&QSxq?bp%-7`quhlUds^LP%ehE%q1CG*Dw&OcdOtLw|1t%gNvxDN1k3c+uJltFI zaed5<8u!QR{XXO2OJfhfsDbh|V27DB zg-stz-h%|!C8n8cz?s4dQ~Vaxz9GA&MfM>*3-O-?WpT{MSHKebSs^-(yIg}cGZ|{Yr@V6;;jj>Stvta4 zOiTE@h9<&A6yF5ba#+P@Enw4yz+$b8s<=^!o};&63p!%VRL1!OBM|#=rWqs zWn72RNMmq)nlX@x(w|~jb02DWlH{id3%Ah_$Om_n#vhwxG>&l1O@%)DI9kGAZfSAOH%#{@-Hhi_judo9Q zUcY|7u2S4?>aWq&ez`iArR7Sd7Pp(?wT$a1di&g>PNCz*D9z>nXTj%s3^aEm^`qzq zN60(`u`_>gZzR_1KQ1Z$6_raq#LG~_ zWHy-PyijyaH#n=B@xfg8S{FWKIfsTpGT5Dy$zP5~!CJ6|kXsCpRFloYeAG}9pPUyp zBdmKCQ{zK0ZP*&1L9stmtHL5Ag^bAz9>cHdeX+laSB22|Q3!O_M&`010|@<4eLY&q zh5^h}MgW&8K(^3x_kH$UxIb>;Z^mTjS+UqK$WYe}+8HP!eqph{n0uXW3O2dtJsFYZ zh9fN)|4)M>m%urs9Ns?k>S>{i5buTAyuXiO-{|U`Y;v< zH`&>bRy(%s8ED_y)e*nb*RgX?S9_l~7H+mQF>>77xnpd6WB|0p?v0Mjl%^&pXG%v0 zXAULY8y=h)JTN#tqW4EjM+V2oCx_OTCcK^9ds??`cuDJqOWQWIZD`%Ne&eO)Im+j~)TC%crMD@WcPyh#xbv6C;<8j!cY9jSb=F;MCBe%Wr(?rE4$U+`4wOb?x-b z@a01rUIG>#m>nA*E*%8T6N5)ayisx?+9{vt(%5wA*x)!`)fBKdfoc8wcXxGm?*i_j z!HLO zD{V#P7^zeaZwpIWjpsGA;@f)s}9+J?Z5HucEyV)ueQzH(6d0M&Y4KPVCVp z2SCqmlH(nv+>_9nPT>fr3ekk{FLHO5=#&h~-Mp6*h2&-Mex2W)3@Ino;_Nco|#JO#^CU9 zY3LAiEYdKb_>C&4>FwMOAx}-7=$@PzJ9xq??d+YIYA1b>Dk9q`n|)rW>RNoIv5E1q ziMSm7vPw(}qN9UTBV_|1S``IKLzA;8b#!X%n730nzO&TT110Wi-&q1r_Vo3Gd7dcn z*u=p}r{7oY>FC>E>g?Xp1IF&?>FVm)Te71?OdA!RqNN#-E|tWXbWF@18JQZKnVjlH zi-R*Go|0K2VGj4e{@xC>tyW3;Xa^7#B92G3o%DglKAFgx>Csva+xT(9}RHJFl7@oH~qZLm1^#rID$r$tloFR&{k;-O*Lr-m!Jh&Y0H7*b%EV zGNsnZwL9YT0g8L$j1cbbQIii&PC4T#gG0Gc#-!and%D%84^JK$9Gd`&@ySug)3J%^ znZb#n5ie*>IxsjrZEXb2+2lo+$I!lW3R`@2VrELnuSa5 zZtvd}sY*4Dbh-bEp1uLNOD7V?z>$C~WtLdAFkAL?@9OT^+YPEYm^z&VtZH&ZNJYyw zHE)|XMjPM1duvZu=eCl#p3=^q1Fs$#nn8_Fw?G*60`|d*SoAXqd`qzluPrhPFLgnv|}TW+$L@UWub)ZkCyq`{vfrhlsS(-UiVuNLc=n3+03Dq};?VVOKiRT966a4g!A9~F4Mmro6E96kviKvxMicIre7p({jj z2gsw1igAj9STqHbYtHjStFei(nK21RQmU|VzqAzCb4vt7Ne{5trr5T3YX@oLX zgQr)5houeb_S6xy>m51F&!})*lTH%0Dr!!_iXw`GO&uABA|JD1ZxZifg!aRXF*Ffl zNpIWJx1B_c%*;+rl*SI04i1iumyQokO^i*9&RG|HZtv>cUTW{#xo3Ar_rRQm`+9l? zO1nGzcef90yMhA?nxZ3%wtyZxP&0vx?LGo)GB_HS)ij`(rNAvtqMDW-qA!nf&lU5V zDvghUXM^K&61ux%H$$?h5=EJ2Rcg*M+hGv5w)e+%!OGwk2*I8?6XM2bvrJYv~j?a#Oz)=jI;ps?um@DanOopbVS%@?cho$$@%@DIhSwn|L zh7S9&7IFcY$cG64!at!U ztq9Z(Fk!Mcs$b5%1*0I!({1hDrJk$demXHXhWtyN+db>Uqr+ubx`2_Q0*!S(sfxFA z8(hNd)QFu5LkCoM^(#t;$P^Y56SIgM-M~QXtH|PP=UgdD>C^~9(diiobQlREh=dOL zAYxw+UV0GG&(!oGjN6IHS@^54D5%;IRFHnSpR^RzhS*5y>*(!j-_}uv%ITHPY~js= zff8<&San=Rx+Zb`_&8j%xK}T%+!{|N=r8s3c5oIlb2vOKLM?k_ zU1%u7K3Lw^kw9A!>uY~U_x4gp_tl+!J>3#zNOlIQ7$pJ5qrao?>dpkNNQ256i5i?) zl%Z(n>tQ?8E{O%pV{H;jNIT=Jgz6U~mogcYYsZjlaOXBP+;(Ons>$L$!+jHK?M~e2 ziWwc88XbzrjpB4Da1%L|h*@>Q+19grH{`?_UWYew;}|Nz@y=qlHn0oPaXV+V8Wiqm zM-Ypk5Efr1&vqax3y~%mhn7Q8t%Dw%fvKA27@9sYG1NCQJv%<*X(0sVv_d7=DhqHL zD)Qce1d7@zZ+dceYG}mH)r2C+T`O4$lweql%^>~a8XX)y;hU^-x@R~CL);g?;}0)* z)ET5i%2@$pwXLHoi5n1{;Imx}M@`YrTiog~>@ArZ?GQ#P1E3i~K%Bw|&moP8vFStQ zRBlIH-Pzv{nMH6qy^GQlK`C80FnObB78RkVuM?rX1_LnCn%&qrbGQd{o(TqOSREjd z$0dl6Fdjn~-htXQg`70*5ueZ67#?tA+>G{aRkNDLBvi{4t|7*bfME`M5f1vM-Cvh7OErWN-D*w zADx`W?6^qGgsUd`pFpt z$E(8Gf_BF#U(mVfL$FYXBb}om?jn~$%wa|8A!Ova-upnyVlp*k8 zYz6IWhyiDj{>zCVdk(D5>XRD6to>sjIJ}St|tFrsL#GIZ0F0Hg?pdUsGPj-rRK%eLNjqeyO!5e zE=TA3DT?i{y2Mn`YI49U;^U~pcmYt{Y$U8eA{gUsBBTg9eglBCpkpdvMWE3x2&0Km zedr%(?;G&?bpQo;WTZJOuW<;83z-WhH@3ulcq6N35rt@8nxPOjsg}^R*6!{+K$|f3BZoFKmbl`maTi8HL~3lt1zs~ zGy)nK9z)gx>lGqrYUXHZcIMzqb%Bt%N2 zVCGRqy|0g&lC({tB8K_|m(c8j&=jK2qbV96y7>$WlQ-ZC*IVdq>CNK@Uk>qMVzn zhp@bo;z90Era#`$?9?<+T4n~xRFQ;t0Nlm$ytPEJ;fN_ay(`kPXKPWWy1s!AMoGNY zIT6ir*%%8eip-MaYl+57;Xy#&*x?IPh6P`3jk$X)`nW!wg>*}yYsN#q>&OwO&~w#w z1Km<2HdEGxr>DUPE|APsn_^NjomaG`X8Q2h(X-XGLUT1~@CFaULLmH#7z{B4vMOPb zbL3J5=WHMn8b@t}OxlhiMH6x;k=dJHAe!DAu$i5h$?;2T7(Q29vdsa)!Hx%M-s$Hu0|XeDH>DtRGwM-oPGDP8QF+@)>Ps8~z;MFIz= zj*iN#N+<^C_{caE3|mDwp|S`Z>?o7(R&V`aEx>YoYVfEiC89+ntEiJKr9qFv$R2;9 zZLwQ~QPRbi^b?QgTGtrVR+7$36|zW?vnQ5A8qlk)4dw#aD}x;x+QAT^;#Qbev5e!U z1=~!V{~D~=a$ts|jmeU!SqO+wHE9 z4i6SX`3@y>%&|JvpHj#GanZFYwL!YQMNj^vzM!OR?-1;yL+&$fyum3pZhx6x0ialyCAWkpye)B zbR`0UhyaE*b^-4I339+k8(M5A8VZw?)ui-dHmV;?4URHV=-;8>A> zf`*8Rbe13J>*zot2^$OhdiHv1OlX}|dNM$DsbYK#ZbF3a*h^AFy@Fj7U^<#W#L#p@AA) zIyy4K=EkDwyqu~qf`%KgT`+@T)w?~ptKFl9_T1- zZQr(QPp@>LlLIh}7shk|iArn%>rGT@AGc_nhDOdxz}&)UmbyE)aUYH^V-CMP+pfS? zD#;y(?&x^4xzG^Ysub7IZ9hXdwRlN$uGE;L(?>^!pd--fz;E6dOo6AZm=GKIsUsbi z45|8M6j3=T`5kJ=LbBv2K00F}?ucG&Xs)fkji{v`8zXR>qffMG< z09cJ3PMGmu6R|gJSJrOFFe23HhUz)f#}saN`|b{nk0=w)+6NF>u}7lg+av;)OYtT$ zIHV-IU)FIh>0$dNh*ZDY)xNJJn-C;n33rJE%61Vfo?mO~FHg*pl85>I0XfdUO6Ywu;2w@LHR*F8EDe{oTU|=ls zM`}e}0el_yopmos-P4!o;6%}FJf-?hoH8=ymI!KcXm(mcy`#gkM~*}c=Ri+S39AD8 zW$8xDZ+~D;`g$}Gd{&owcJ-k!bzDw#wD z$md~!0eHUL{KC|eA4l^;xRoBww!Gq|ySgMFlgAw8ycVqJ}_9{|elP$SbGNn>RKbSV!CT4yYnF z3P4I}vmsc6AR6%1TuD4aPZ;>}@BoiU9WDr>a#BxgY2*l3uzWLzF)(e#+*Kq40#Uw32wEcPt8c(@lie za@Y;d&L9?NtQh7pR!FzYM#sR+YJ|JBtB0ORbixm={ec|OvOWY4{-}~7E=Ur~>Bb?0 z7aQL6cR~MyI{ruuR3m}SVn9?aZO=I<1&cK5&(1}#Y8w;0+0jWP<4@R4pq404lm17Z0F zlN)9GMJ(j))wCjhbZGNxLX&XO1;0rcIqvMnbB%vPp49F+F0oZSE`#022^|w!b&I%4 zf)P5_jj%U|L5iB8gnB|5DdOxlGH!wqV+{sXiF4SFAo|DL606A=G%^5Ua#stlR>K8e z3Dw9}ZSJur=M#lhtXPuWL7O(pV^Y30 z>a#O;n`jzQtj_Vq6*TPDm>wD%V;&hBbVjg0E!;XK+p)WMfYZ1jq7GS6ziU|f>w$xp zKw6A@7>(M8-5nG^87R(FbW1I&GQ#f!Ta_8r9A?_)3;h(4>P%49%I{NXUa}t%7S~Aql?6#*60KW!-~%opy?2qLDn4S<@Xb&F-q*2X4`&*os@wVa zO}8#!@9FOE(8=#~+(NT)wE)P#iV}u!Z0+mW)zMw*?dv-PIA9>*#y&ZjAq33wq-qGC&lHD}6#0di9;$E?n%m&4V37v`h?*sw)1Bro- zH;t_rM+RlrW9it2()11E9yh6Qd#!AE+{Te^3o(O*#W9rgP!4!DaYx6I>Cs?MB3qV? z4Soq(HMIx?yWQq$GeypLbIf-Hco6OmBi{0xxe-0KKRkc0s_s2;82nAeT+or{`Y17r z$cKd0W;I_`Z5FdTVw<|a)kLpZJXI5=oa^J zqYSgCNTp(71rHWRKp3R3v&XT>Hx%#%B0wf1x^^AhmDNAuq#49o5YxmG=IG9EpQI76 za~8!S@(>Ad^HQmQprg06o!i{}8n#_-P9x08qQpI@rDGd|g5>!O*Ng0uA-}LjKh8MSacR^a=h_Gxw& z;rMnd@P4Nt{h+Q-H;ILZj6R;@qYpFe0A_D|%8dBvX))YNP%S)tX7~O(B^jDLdcs+^ zW7r+c3B8XoX{<>H{Sx6e?U)Lxt2##Htsv^EJbd8eQMl%f1Mcw&KHpe4aJfjPXO1MQ z)X?Pk>=Eqf#HJZ8Zu^bJ#49%)c2`Gs?m8esd2F66all-<8E%bBDwt?bjNU{^2 zHD0Xh;7LgJr?#ja(6o)NsG~&Ot`t+2LQ#V!o?;`yZnGAa`wxRh2Tf=vHbzh4J;r;2 zLiK%S3ern1N!`??ZYgi(~(FxyiD61~j_E#~Tzdk{nI3C2HG zJ7t&X^wiKgJnk~GE`qOZ$Xj;^E0XIDp19;?>$W3%MSnZJu44k*44{AO29RsVQ%@u7 zkWoE&Vr`_d=WwD6L*ui+m3d>C(+>j}EQHg2wEPYey$$ z*KN2IL`a2DSyWiNv2A_yj>9|Z?(!naur>^(nPDU$alyL?Ee?*2@&~nQnit%_GCMOi zEXDQ*m;}2W+FTrhIxwh>%Cx&q9WMu9y-cL(5sA zJ8{zPj!k-_^573SKobUg%1dj&g$#0tFvY~Hu}MA(D>ug`eFo~D257*z6emC36SI?3 ztVW3Y=EK0aPT{b97AM}T17ipVT^F6fjdpGN#B>A@6NN*JCkw3`BoXk0qzf7{CPaxx z0|b6!Vh$?p7H?4k)ohuyg-M)@wXZ`QsG}O1>S_p%d#5$b}?Zl1q33Jl5 zn=wl8?X!#X#(*;2_kb8#Cb;Z8qX|5x!ApIpiC5t^NZVmw*fWO}1xxXoOC@?8tz)B- zSWjdh6^ci}GEPV*?u0g!CYN)HuN+} zO{%A==`fB|VEROck5cUC0>dy#8Tfa!AeAOommrtkV4-Q=C*c_16EkbMWHmv!Ox<|F z`;w`|k3$F6a{e(XC58`&q${a+7N0rH3Y3ZdatlVj$WTJZ5X&(iV6%-u)IfOO1 zVO&ud&Q7hGY(XazS2_L<+UADGWX_$4ukB|Lbq#C5ixKym=l@T9#X_wm>t!lgcj#JnPkZKiy>u+OHKB z-r5y~Z?^F3WAG~h&v;9{Cs%8``ssOB3w(k1t;G(a_-?UyJ{H6CdMQ8Odoou31Ar&d z|0#>-A&aL6zxnqM_?J}v`4o5&QxkFlTpQZDC7QTdM#^G<$^5+Q)f5Q=lQxEv} zoP~ea!hft_Z$9d=UtgL~fF;XY3wTn$HmAV1TRiTCwyQ1v0So`x4GP#|;iQ-CZk$rU zJ+@zOPQibVE$`m3y2IjmJf*y&$Gr*B(esSOv(vsI@eYfJFN7sMU$pRHOV7(JeC=&o z@He*nt1bM(+ZAxDh2L%AAGGi_7JkOUpS18w(80eSS@_?d(%+Bjm)8O-M0(!(S_N#d z@EsQZ1q*+frE|u@e|x7Eyu_Bj7w{xGekcY0NsGt5r|Jre=PN1YpS9)P3uRW@@_g+M z>3=!j$c8@$FY*mHfL|YjpJU;#jlubv9hU#A7w0qyOc27;X=Z#wUcP$+3mA^My zJYThVc3b%0Sa{)G3aGa5f3SF-jp2XJmVe-#T5zu|&)4#h&Sr~ep@m;+;TKvsUwX~I zJ_~=Hg|`aS^QJBQFD;z*j(_)B_%GhAzq>5_aSPw}=L)|a}Cg%4Qxo9|b^mn{5< zg};*LaN@7l^5+c}KK6jZH(B@xEc{&`SNOI1<$VG0BtCrImUrifzr*7B*OcN)qed^Xcs`PX=aYh`(R-{c zVoIj}^HP4X_v~`Z7>obg0&l_lx})%?0r$KH?_J-w1?|@_0B3L)|7*kmPlB&Wfo~Fc zt><1x|0;{{r77jFPJtgzf!~q>e|rl2;{vbsGLI-BODsK)r{qS#*e->fXK#E3v@l=i#=mm~uGitu ztts$+i|5)QEj`~>nzisp->d)|wt9CEo~`qq_-Yut=iOz?-`S&ZCzrnxc(g2kowntF z|C7=3-?s2ySo`Mi{KUfFX6=98_P4rD`SASTDxNp$m$w%1mG(OPb%m4$|L(T%N347gDcJi6;0@jq?=c(aSg?0m%DZ2|_ctt_hi*~W zn7#G=l=A;3_=EYW!&K3rda~=43i*JIhgS&Pl?uMM*z&76@x9VdZ|hO~b{gq@I;H$Sroew~@jP_B;u*5^*DX~(+&8K4Gy3H%Xe7M+ zuPp`MF7R4!{$pBaoyA{DDStx>{52NOHy>6!7g-XHh+nAnUUgIfE{^@f6g=;@c)oX) zmUsI384JJkL4}`d@qaG`&o5Kp)nHB%e^v>+)_d-+6!9A@{`QpeqbcyaQs8e-fj^i6 z|AN44y~1uK5yKXCBAnQtzj+@%a6e@;|rue|}mKzs2HjXioND%K=A~vcHW2 zul26^Z+ffMmgu$cUK=+~S@?Jgp4(I4cc;KVXz_pMs%X2PPbvS66!=pX&%Ygr;;9Bd zllr?d1->o?z9R*GT?%|E1^)UJ_3`J1 zzxG81F#pTHZ>8Y*MGCyRg?y;>HuY=$R{ioe2;BY%eZ3?F-f!`gtO5R-O*{=+_`7Tz z=;U=O1T1u z(LOY#z?TZV);ntFtv6f!e~E=JeWxOJ<9A;Qo~ac0ohk5p1YYaidb8qxyQTlHQ_6qU zmS1S){&HLX7b)edBtEx=LSN^kz+avM?@ECWrND1Yf&W1Y`~xZQM+9E$z55GFytDt` zNh$v;TYlJ15S<<_U8dvZq=mOyUR*Bl5M%7+Rkr-Y4=Vs_CV%58wXB{=}Al zpM~ESYxnUKJl{@%|275Qa!#_IpO*sPDsbe_Pbh)TZd`5Qvrj1eRn{L(rr>!)3j8lq z;9p6B|5)INLq4bNx_ARG`Ar3T+lx* zwt9P)g|`XZ{s?{TPJvIPz)z;Y-(6!=dBUhAFrCQtspYvuK83qSl>g}eMf z^NM6WIZxoVp81lN|BTJ6TyEj+m6Z=!{QFYy9JJ*>ZRg{g6`l813xB8OKg1z_52WDv zrY-;eJ}vi3TmCr<|MH(Hpwq&$D^-pQtifxw@Rb(ccZ&iXJ-Y>N3x&RhQs6gRJYSsA z!ZkL}_QsU*@37^+ZRc^$zI`aA{DUd*$5Y_nPl5jg@J6hoc{X4#*uMQ*%GY}T!{#L( zvG6)1WT^lDXyr0s;TH+q{s?`wr@*hbc$Qmv-D&IGV&R#71#GnN`%>_HA_e|wz#FlT z!h2E?*l@%9N=o@3q`-eEaO8_hipRQ1uVq#8xVSh4{?Ziq9)Z_-tM69)&M%Colz&YM z{BDb9=>f&#o6XrhbiTAt5qMq@u-&DV#~J*Tw&qQwJGq< z6!^gu_^}lDn^NE(Oo2a?0{8ldre-#@P2y>a!2@G_Oc1A?&B)^_{ea?eM|bYP%n>{; zHaWp#l5v1~X>@$@0L}v+#&ZVKcuxFAJUMKSa%@|lTtbfiwQn86W_Y~i~$#{K1nHG&~o5aSo$nW5c)!_Yf(E_0j=r@jKDR-Ch6TIlGND^x#}_1wOA+{&tp>vU+Zyf5PF}Xh;wP z9zK;**2~0U;kfUffpc#yac|myj)ZpZ0zv2(gpZw%p+nrm_jnSZQXc76q&|;xDLYO# zINv^oPNXS^qq%2kk7{e$9PIa1u}KiJu^Nj=NFv<|-IF40NudiAPh;Rl(VgIVq)BX)oN79CIN=Sw6jp zM_hf*o~3x~l*qG`j-5t%w$iGx?gYxSmF6pf{KFK3P3Pgw<^FXkay(#UOz2ZLvgw*f z+=b3_Njh91`RVVnbJAE$PEPaBPDp4|9_Y6Gm%}$++$l6^n99%ZI9o{`je!l@3Fj!m z@T66i2ZizEjvnckR!YuuNW00$+S2Y3y_`~!P=G>mcFnmGdk|e(X?Gk4Y%I<#N-M=i zgJTcUN;zD7nlKfWD|D742xDj3q&0~F>OYp?kLa|*`k1Yii z|3E`LIPsq$h>F8LYdP0LlD5bk&sah-QLK^YD$8$0TSH`u(|Z}0mP$KtCTRy=scA;TQs;{8df*G6XL6@vGg5(m z4eI+f+@nAez>owy5G$qSRm614e56G|_JnIyX6w%7ZuwDpk=Nqz-BCm$;fH(nCOBD& zw~|kB_oXY6v}b$9p6HD}5lqpe2Yj?fPa1P)Z0UotTXuGJZrxVe*tTJFjBx3?I~Ja% zM4x$ziLg8zMq~Q2nHX7u&!^viyhWZVk3AEvonxEwV7fc!G2w+$rP9FeZB7w72X^D& zJU3^-4bE5w{6orxRN;d=ZHkZQg&&<0kw^4Ucp}lS+$%d?yzKqik=m#uF|s`iLSISe zSSlf*OpB6OD)vq^f@d>>r+Cse^il_(k7Sb7h2&EtSiqh-5~WSpA-;!>%SRXp#yxXx zpV%*zhHk{k^!6wUUvDZ><5&JjJ-jqjAzZ)qRmio{ANt8E3Y^Heuq8XKZo@BM8l`xCo$rQd;(b7fRvLO#CiHXBk2WKy>74eVA z)p*014?RCb6)gTn8NO>M+N`ewKC@JEdSXi;Np?P3)9E=W_W9sr36wr~RTSjl-hOPm z;M3=h_D^}^pX-}-BYN_R59Fcb!ErLlJ;%@sw;6q7L^zSd?pRkV6@utX5BLvtVtt7x z@!&{Pn_vV|{4P5Lj|7SG$!ylmeteZneciA%V(uV^(5ug(On7f}M44=190~#+Ylz8! zM491hii{TtVxqDXEfD=qetpa+2jL_ha@T{mh+mX6d_FBkQs|^oztd%YFyNOA`zRry zQJ`)^&SCM@D=>}f)@UH*z%jfi1`Z9}$5-^+u~ht_vtYt*j&f0-4{Y{bI!?u-2|MeR z{7^mSMx#O~vuxycQorX=7N>YH@MJV$0Odct221CZ({w!nF) zz-UQ?7+Pn7G-~vXHz^Cdi72*^+68Y}ixzR=w;ugP^^ONKpnw4u76x3O9#=8PW;HOGT|Voz}rq)+!rmo<$jb^5Tv0*8!}FEZXYpN(-MBATiEij zeHII92NO~|x04RC%fU#nvm_FANNs~42~EeeY(!5qT@j**)g?9y-tm=mbe^v`AqQj6 zn3EIY6r&%l*q40T_jX1{p|cb0jUE3n(-khEW0uijnMe0&Qbi^{tIWa(5r}Uz*-zz% zUo9Mx+G8ElDRs3lPDK`w84NiN9>;r>RCsYC#1=!RdXqz8H4XIFo(-ygCKl761(^b~ zW<=%Oq$o=NQ%tpqEEYS*If2K4x&%?T8$yAZ zj=u%WCY;^sB+i^I(R55q!XxSn}Vu06=jzATXEr-?N3j-#7#_< z-3utyJnI5U^11t3Q9?-yAleu?=yXVx#{U)8L;tu>A}iNmH$@YT3uX`ruXA;y-cAVg zR7D~Uf+3O=HYa`%ob>KGtCxNbM59~a3)!2<3wd4UjjZsy8mNQhaD*OtGp|1yqFi%1 z>m&^JlttgqYTOa6FC6p(?7+VIE-6}^R7As&@QBswHk!p)mbWWM5%?jT@-^_mqGmoD zq_?5-Zfyb~?t^G!qWFEfRo8rb%e51}B{i(1;dk_eF+1Y`SsL63VuXj{;-&1?iMM=^>dWDc-vCkG|kQI*;fMW&Y4Z%tDdjOr}c3FT>hbuHbE(&ZtPp z89iAxShPcHd{dilEQ-F9#UB8H9SEXVhdhad$VqiOHFfHXIPzCVQ3EVwTY+ zarIG8pm_i2A+K%t!~`(tH}J_FcK~ttM+x_)M#cwO!CoC5pCLvpy0_u7Z4`?YZ4&yo z(Hx-=7S=G!ZyVtZlsh;M4Fie$1&RggwfS^H8};>Q3Toflxt1H#qzz5lc!Jtp6FrGS zOVWWszUPQ^kRCv!b>zFfHbzv)cmOtXU=~Rqn7dKzzp_8+N8I(`fdf+`$J{R*vO40f z$!=SLU=Bw2dkQZK!>oEbyc6(0c8$j{JUlvsGfedFu3YpR+Y}>z6_H<12mIz1MOXjB zw!Ztu;|-BNyPeU8U5cw0e*0S<(}|nCHU7E!KehGUx7(C& zP=;;0`gmMR{;t3$tN8WtydwX8YQO)bL4Ui?IQ`s4|JxA#|KmI@>Ar8X6&(Gp9rt}5 zivOQb{p)Rq-8b>`FHXNgJ#QQr#O?5X%+`0`t+rv;e!Tz3Z2hek;gc8Zh5O#psJ~gC z&y>XL-v$`Fn8!c)+YX<_&6 z=yfREZ}-h@!r}VvToU)4Kjmubw`5z_B-DHciQ?+er|uY`+moQ zD1vzV_r>bFb9vl%1r;as7jORo+#~(2{rCK{7IxpO=7lQb((%nf&*0+ukp4dLTfO7H z?{Wq0cf9`R0FT%op$6xv*zYZ8ssGJbeRm$D`)-ZZkN5v++^@qwYc~Az7@w>nSIYbA z=y%^gMH%dh_v^d!AHVe?>;F6IvL)BPJ5TYuw*L7}Fet;nR{0D*c%CE2o~!T9Ybw}- zv_59*J2h~0J3Zog4dM1bWzT{7R6U`dw_ZMj4_DuPH=$U#zB@9k0)GFWFMOpRRt~ekoO2hbZ}6 zkAvAJhJrE*1!LPx$E_Oc)TpnZ6vIWe^zlnxFxy1!!wyu|HPOo?iXSLbM@T!t+sx&70-Lcl-7@#&$7M} zPi%+@s(rTpcULQBy7fc&=g4vKLlH2ids0T?m4>MZ@Sl{`re~j|L$0Y I*iY~O0@9x=$p8QV literal 159784 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

QYWy^)2Yl*#zAiT?d5 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 @@ -18,101 +22,291 @@ #define APPLICATION_ID "com.labfytools.investigation" /** - * @brief Dimensions initiales de la fenêtre principale. - */ -#define DEFAULT_WINDOW_WIDTH 1000 -#define DEFAULT_WINDOW_HEIGHT 650 - -/** - * @struct Application * @brief État interne de l'application. * - * Cette structure reste privée à ce module afin d'empêcher les autres + * Cette structure reste privée au module afin d'empêcher les autres * composants de manipuler directement les objets GTK. */ struct Application { GtkApplication *gtk_application; MainWindow *main_window; - Investigation *investigation; + InvestigationSession *session; InvestigationTreeModel *tree_model; }; /** - * @brief Crée la fenêtre minimale lors de l'activation de l'application. + * @brief Installe une nouvelle session et son arbre dans l'application. * - * Cette fonction est privée au module. Elle est appelée par GTK lorsque - * l'application reçoit le signal "activate". + * En cas de succès, Application devient propriétaire de new_session + * et de new_tree_model. * - * @param gtk_application Application GTK ayant reçu le signal. - * @param user_data Données utilisateur associées au signal. + * En cas d'échec, le code appelant conserve la propriété des deux objets. + * + * @param application Application à mettre à jour. + * @param new_session Nouvelle session valide. + * @param new_tree_model Nouvel arbre valide. + * + * @return TRUE si l'installation réussit, sinon FALSE. */ +static gboolean application_install_session( + Application *application, + InvestigationSession *new_session, + InvestigationTreeModel *new_tree_model +) +{ + const InvestigationProject *project = NULL; + const InvestigationRecord *record = NULL; -static void application_on_folder_selected( - const char *folder_path, + const char *root_path = NULL; + const char *investigation_name = NULL; + + if (application == NULL || + application->main_window == NULL || + new_session == NULL || + new_tree_model == NULL) + { + return FALSE; + } + + project = investigation_session_get_project( + new_session + ); + + record = investigation_session_get_record( + new_session + ); + + if (project == NULL || + record == NULL) + { + return FALSE; + } + + root_path = investigation_project_get_root_path( + project + ); + + investigation_name = investigation_record_get_name( + record + ); + + if (root_path == NULL || + root_path[0] == '\0' || + investigation_name == NULL || + investigation_name[0] == '\0') + { + return FALSE; + } + + /* + * Les nouveaux objets sont entièrement valides. + * Les anciens peuvent maintenant être libérés. + */ + investigation_tree_model_free( + application->tree_model + ); + + investigation_session_close( + application->session + ); + + application->tree_model = new_tree_model; + application->session = new_session; + + main_window_set_tree_model( + application->main_window, + application->tree_model + ); + + main_window_set_investigation( + application->main_window, + investigation_name, + root_path + ); + + return TRUE; +} + +/** + * @brief Traite la demande de création d'une nouvelle enquête. + * + * @param parent_directory Dossier dans lequel créer l'enquête. + * @param investigation_name Nom nettoyé de l'enquête. + * @param user_data Pointeur vers Application. + */ +static void application_on_create_investigation( + const char *parent_directory, + const char *investigation_name, gpointer user_data ) { Application *application = user_data; - Investigation *new_investigation = NULL; + + char *created_root_path = NULL; + + InvestigationSession *new_session = NULL; InvestigationTreeModel *new_tree_model = NULL; + const InvestigationProject *project = NULL; + const char *root_path = NULL; + + GError *error = NULL; + if (application == NULL) { return; } - if (folder_path == NULL) + /* + * Une annulation du dialogue transmet deux pointeurs NULL. + */ + if (parent_directory == NULL || + investigation_name == NULL) { - g_print("Sélection annulée.\n"); return; } - new_investigation = investigation_new(folder_path); + created_root_path = investigation_project_create( + parent_directory, + investigation_name + ); - if (new_investigation == NULL) + if (created_root_path == NULL) { g_warning( - "Impossible de créer l'enquête à partir du dossier sélectionné." + "Impossible de créer l'enquête '%s' dans '%s'.", + investigation_name, + parent_directory ); + + return; + } + + new_session = investigation_session_open( + created_root_path, + &error + ); + + if (new_session == NULL) + { + g_warning( + "L'enquête a été créée dans '%s', mais son ouverture " + "a échoué : %s", + created_root_path, + error != NULL + ? error->message + : "erreur inconnue" + ); + + g_clear_error(&error); + g_free(created_root_path); + + return; + } + + project = investigation_session_get_project( + new_session + ); + + if (project != NULL) + { + root_path = investigation_project_get_root_path( + project + ); + } + + if (root_path == NULL || + root_path[0] == '\0') + { + g_warning( + "L'enquête a été créée dans '%s', mais la session " + "ne fournit aucun chemin racine valide.", + created_root_path + ); + + investigation_session_close(new_session); + g_free(created_root_path); + return; } new_tree_model = investigation_tree_builder_build( - investigation_get_root_path(new_investigation) + root_path ); if (new_tree_model == NULL) { g_warning( - "Impossible de construire l'arborescence de l'enquête." + "L'enquête a été créée dans '%s', mais son " + "arborescence n'a pas pu être construite.", + created_root_path ); - investigation_free(new_investigation); + investigation_session_close(new_session); + g_free(created_root_path); + return; } - /* - * Les nouveaux objets sont valides. - * On peut maintenant remplacer les anciens sans perdre l'enquête - * déjà ouverte en cas d'échec. - */ - investigation_tree_model_free(application->tree_model); - investigation_free(application->investigation); + if (!application_install_session( + application, + new_session, + new_tree_model + )) + { + g_warning( + "L'enquête a été créée dans '%s', mais la session " + "n'a pas pu être installée dans l'application.", + created_root_path + ); - application->tree_model = new_tree_model; - application->investigation = new_investigation; + investigation_tree_model_free( + new_tree_model + ); - main_window_set_tree_model( - application->main_window, - application->tree_model + investigation_session_close( + new_session + ); + + g_free(created_root_path); + + return; + } + + g_free(created_root_path); +} + +/** + * @brief Ouvre le dialogue de création d'une enquête. + * + * @param user_data Pointeur vers Application. + */ +static void application_on_new_investigation_requested( + gpointer user_data +) +{ + Application *application = user_data; + + if (application == NULL || + application->main_window == NULL) + { + return; + } + + create_investigation_dialog_present( + main_window_get_window( + application->main_window + ), + application_on_create_investigation, + application ); } /** * @brief Traite la sélection d'un nœud dans l'arborescence. * - * @param node Nœud sélectionné, ou NULL si aucune sélection. + * @param node Nœud sélectionné, ou NULL si aucune sélection. * @param user_data Pointeur vers Application. */ static void application_on_tree_node_selected( @@ -140,12 +334,19 @@ static void application_on_tree_node_selected( return; } - node_name = investigation_node_get_name(node); - node_type = investigation_node_get_type(node); + node_name = investigation_node_get_name( + node + ); + + node_type = investigation_node_get_type( + node + ); g_print( "Nœud sélectionné : %s\n", - node_name != NULL ? node_name : "(sans nom)" + node_name != NULL + ? node_name + : "(sans nom)" ); if (node_type == INVESTIGATION_NODE_DIRECTORY) @@ -158,6 +359,15 @@ static void application_on_tree_node_selected( } } +/** + * @brief Crée la fenêtre principale lors de l'activation. + * + * Le signal activate peut être reçu plusieurs fois. Si la fenêtre existe + * déjà, elle est simplement présentée. + * + * @param gtk_application Application GTK ayant reçu le signal. + * @param user_data Pointeur vers Application. + */ static void application_on_activate( GtkApplication *gtk_application, gpointer user_data @@ -170,21 +380,25 @@ static void application_on_activate( return; } - /* - * Le signal "activate" peut être reçu plusieurs fois. Si la fenêtre - * existe déjà, il suffit de la présenter au lieu d'en créer une seconde. - */ if (application->main_window != NULL) { - main_window_present(application->main_window); + main_window_present( + application->main_window + ); + return; } - application->main_window = main_window_new(gtk_application); + application->main_window = main_window_new( + gtk_application + ); if (application->main_window == NULL) { - g_warning("Impossible de créer la fenêtre principale."); + g_warning( + "Impossible de créer la fenêtre principale." + ); + return; } @@ -193,21 +407,34 @@ static void application_on_activate( application_on_tree_node_selected, application ); - - main_window_present(application->main_window); - folder_dialog_select_folder( - main_window_get_window(application->main_window), - application_on_folder_selected, + main_window_set_new_investigation_callback( + application->main_window, + application_on_new_investigation_requested, application ); + + main_window_present( + application->main_window + ); + +/* folder_dialog_select_folder( + main_window_get_window( + application->main_window + ), + application_on_folder_selected, + application + ); */ } Application *application_new(void) { Application *application = NULL; - application = g_new0(Application, 1); + application = g_new0( + Application, + 1 + ); application->gtk_application = gtk_application_new( APPLICATION_ID, @@ -231,39 +458,65 @@ Application *application_new(void) } int application_run( - Application *application, - int argc, - char **argv + Application *application, + int argc, + char **argv ) { - if (application == NULL || application->gtk_application == NULL) + if (application == NULL || + application->gtk_application == NULL) { return 1; } return g_application_run( - G_APPLICATION(application->gtk_application), + G_APPLICATION( + application->gtk_application + ), argc, argv ); } -void application_free(Application *application) +const InvestigationSession *application_get_session( + const Application *application +) +{ + if (application == NULL) + { + return NULL; + } + + return application->session; +} + +void application_free( + Application *application +) { if (application == NULL) { return; } - investigation_tree_model_free(application->tree_model); - investigation_free(application->investigation); - main_window_free(application->main_window); + investigation_tree_model_free( + application->tree_model + ); + + investigation_session_close( + application->session + ); + + main_window_free( + application->main_window + ); if (application->gtk_application != NULL) { - g_object_unref(application->gtk_application); + g_object_unref( + application->gtk_application + ); } g_free(application); } - diff --git a/src/views/create_investigation_dialog.c b/src/views/create_investigation_dialog.c new file mode 100644 index 0000000..c501b96 --- /dev/null +++ b/src/views/create_investigation_dialog.c @@ -0,0 +1,864 @@ +/****************************************************************************** + * @file create_investigation_dialog.c + * @brief Dialogue GTK de création d'une nouvelle enquête. + ******************************************************************************/ + +#include "views/create_investigation_dialog.h" + +#include +#include + +/** + * @brief Largeur initiale du dialogue. + */ +#define CREATE_INVESTIGATION_DIALOG_WIDTH 620 + +/** + * @brief Marge extérieure du dialogue. + */ +#define CREATE_INVESTIGATION_DIALOG_MARGIN 16 + +/** + * @brief Espacement entre les composants principaux. + */ +#define CREATE_INVESTIGATION_DIALOG_SPACING 12 + +/** + * @brief Contexte conservé pendant la durée de vie du dialogue. + */ +typedef struct +{ + GtkWindow *window; + + GtkWidget *parent_directory_entry; + GtkWidget *investigation_name_entry; + GtkWidget *create_button; + + char *parent_directory; + + CreateInvestigationDialogCallback callback; + gpointer user_data; + + gboolean completed; +} CreateInvestigationDialogContext; + +/** + * @brief Libère le contexte associé au dialogue. + * + * Les widgets GTK sont possédés par la fenêtre et ne sont donc pas + * libérés directement ici. + * + * @param context Contexte à libérer. + */ +static void create_investigation_dialog_context_free( + CreateInvestigationDialogContext *context +) +{ + if (context == NULL) + { + return; + } + + g_free(context->parent_directory); + g_free(context); +} + +/** + * @brief Valide et normalise un nom d'enquête. + * + * La fonction : + * + * - vérifie que la chaîne est un UTF-8 valide ; + * - refuse les noms constitués uniquement d'espaces ; + * - reconnaît les espaces Unicode ; + * - refuse les séparateurs '/' et '\' ; + * - retire les espaces placés au début et à la fin. + * + * Si normalized_name n'est pas NULL, la fonction y place une nouvelle + * chaîne allouée que l'appelant devra libérer avec g_free(). + * + * @param investigation_name Nom à vérifier. + * @param normalized_name Adresse recevant le nom normalisé, ou NULL. + * + * @return TRUE si le nom est valide, sinon FALSE. + */ +static gboolean create_investigation_dialog_normalize_name( + const char *investigation_name, + char **normalized_name +) +{ + const char *cursor = NULL; + const char *first_character = NULL; + const char *end_after_last_character = NULL; + + if (normalized_name != NULL) + { + *normalized_name = NULL; + } + + if (investigation_name == NULL || + !g_utf8_validate( + investigation_name, + -1, + NULL + )) + { + return FALSE; + } + + cursor = investigation_name; + + while (*cursor != '\0') + { + gunichar character = 0; + const char *next_character = NULL; + + character = g_utf8_get_char( + cursor + ); + + next_character = g_utf8_next_char( + cursor + ); + + if (character == '/' || + character == '\\') + { + return FALSE; + } + + if (!g_unichar_isspace(character)) + { + if (first_character == NULL) + { + first_character = cursor; + } + + end_after_last_character = next_character; + } + + cursor = next_character; + } + + /* + * Aucun caractère visible n'a été trouvé. + * Le nom était vide ou uniquement composé d'espaces. + */ + if (first_character == NULL || + end_after_last_character == NULL) + { + return FALSE; + } + + if (normalized_name != NULL) + { + *normalized_name = g_strndup( + first_character, + (gsize) ( + end_after_last_character - + first_character + ) + ); + + if (*normalized_name == NULL) + { + return FALSE; + } + } + + return TRUE; +} + +/** + * @brief Met à jour l'état du bouton de création. + * + * Le bouton est actif uniquement lorsqu'un dossier parent valide a été + * sélectionné et que le nom saisi est acceptable. + * + * @param context Contexte du dialogue. + */ +static void create_investigation_dialog_update_create_button( + CreateInvestigationDialogContext *context +) +{ + const char *investigation_name = NULL; + + gboolean has_valid_parent_directory = FALSE; + gboolean has_valid_name = FALSE; + + if (context == NULL || + context->create_button == NULL || + context->investigation_name_entry == NULL) + { + return; + } + + has_valid_parent_directory = + context->parent_directory != NULL && + context->parent_directory[0] != '\0' && + g_file_test( + context->parent_directory, + G_FILE_TEST_IS_DIR + ); + + investigation_name = gtk_editable_get_text( + GTK_EDITABLE( + context->investigation_name_entry + ) + ); + + has_valid_name = + create_investigation_dialog_normalize_name( + investigation_name, + NULL + ); + + gtk_widget_set_sensitive( + context->create_button, + has_valid_parent_directory && has_valid_name + ); +} + +/** + * @brief Termine le dialogue et appelle son callback une seule fois. + * + * @param context Contexte du dialogue. + * @param parent_directory Dossier parent ou NULL en cas d'annulation. + * @param investigation_name Nom nettoyé ou NULL en cas d'annulation. + */ +static void create_investigation_dialog_complete( + CreateInvestigationDialogContext *context, + const char *parent_directory, + const char *investigation_name +) +{ + if (context == NULL || + context->completed) + { + return; + } + + context->completed = TRUE; + + if (context->callback != NULL) + { + context->callback( + parent_directory, + investigation_name, + context->user_data + ); + } + + if (context->window != NULL) + { + gtk_window_destroy( + context->window + ); + } +} + +/** + * @brief Traite les modifications du nom de l'enquête. + * + * @param editable Champ ayant été modifié. + * @param user_data Contexte du dialogue. + */ +static void create_investigation_dialog_on_name_changed( + GtkEditable *editable, + gpointer user_data +) +{ + CreateInvestigationDialogContext *context = user_data; + + (void) editable; + + create_investigation_dialog_update_create_button( + context + ); +} + +/** + * @brief Traite le résultat du sélecteur de dossier parent. + * + * La référence passée dans user_data maintient la fenêtre en vie pendant + * toute l'opération asynchrone. + * + * @param source_object GtkFileDialog ayant lancé l'opération. + * @param result Résultat asynchrone. + * @param user_data Référence vers la fenêtre du dialogue. + */ +static void create_investigation_dialog_on_parent_selected( + GObject *source_object, + GAsyncResult *result, + gpointer user_data +) +{ + GtkFileDialog *file_dialog = NULL; + GtkWindow *dialog_window = NULL; + + CreateInvestigationDialogContext *context = NULL; + + GFile *selected_folder = NULL; + GError *error = NULL; + + char *selected_path = NULL; + + file_dialog = GTK_FILE_DIALOG( + source_object + ); + + dialog_window = GTK_WINDOW( + user_data + ); + + context = g_object_get_data( + G_OBJECT(dialog_window), + "create-investigation-dialog-context" + ); + + selected_folder = gtk_file_dialog_select_folder_finish( + file_dialog, + result, + &error + ); + + /* + * Le dialogue de création a pu être fermé pendant que le sélecteur + * asynchrone était encore actif. + */ + if (context == NULL || + context->completed) + { + g_clear_error(&error); + + if (selected_folder != NULL) + { + g_object_unref(selected_folder); + } + + g_object_unref(dialog_window); + return; + } + + if (selected_folder == NULL) + { + if (error != NULL && + !g_error_matches( + error, + GTK_DIALOG_ERROR, + GTK_DIALOG_ERROR_DISMISSED + )) + { + g_warning( + "Impossible de sélectionner le dossier parent : %s", + error->message + ); + } + + g_clear_error(&error); + g_object_unref(dialog_window); + + return; + } + + selected_path = g_file_get_path( + selected_folder + ); + + if (selected_path == NULL) + { + g_warning( + "Le dossier sélectionné ne possède pas de chemin local." + ); + + g_object_unref(selected_folder); + g_object_unref(dialog_window); + + return; + } + + if (!g_file_test( + selected_path, + G_FILE_TEST_IS_DIR + )) + { + g_warning( + "Le chemin sélectionné n'est pas un dossier existant : '%s'.", + selected_path + ); + + g_free(selected_path); + g_object_unref(selected_folder); + g_object_unref(dialog_window); + + return; + } + + g_free(context->parent_directory); + + context->parent_directory = selected_path; + selected_path = NULL; + + gtk_editable_set_text( + GTK_EDITABLE( + context->parent_directory_entry + ), + context->parent_directory + ); + + create_investigation_dialog_update_create_button( + context + ); + + g_object_unref(selected_folder); + g_object_unref(dialog_window); +} + +/** + * @brief Ouvre le sélecteur du dossier parent. + * + * @param button Bouton ayant reçu le clic. + * @param user_data Contexte du dialogue. + */ +static void create_investigation_dialog_on_browse_clicked( + GtkButton *button, + gpointer user_data +) +{ + CreateInvestigationDialogContext *context = user_data; + GtkFileDialog *file_dialog = NULL; + + (void) button; + + if (context == NULL || + context->completed || + context->window == NULL) + { + return; + } + + file_dialog = gtk_file_dialog_new(); + + gtk_file_dialog_set_title( + file_dialog, + "Sélectionner le dossier parent" + ); + + gtk_file_dialog_set_modal( + file_dialog, + TRUE + ); + + gtk_file_dialog_select_folder( + file_dialog, + context->window, + NULL, + create_investigation_dialog_on_parent_selected, + g_object_ref(context->window) + ); + + g_object_unref(file_dialog); +} + +/** + * @brief Annule la création. + * + * @param button Bouton ayant reçu le clic. + * @param user_data Contexte du dialogue. + */ +static void create_investigation_dialog_on_cancel_clicked( + GtkButton *button, + gpointer user_data +) +{ + CreateInvestigationDialogContext *context = user_data; + + (void) button; + + create_investigation_dialog_complete( + context, + NULL, + NULL + ); +} + +/** + * @brief Valide les informations et termine le dialogue. + * + * @param button Bouton ayant reçu le clic. + * @param user_data Contexte du dialogue. + */ +static void create_investigation_dialog_on_create_clicked( + GtkButton *button, + gpointer user_data +) +{ + CreateInvestigationDialogContext *context = user_data; + + const char *entry_text = NULL; + char *trimmed_name = NULL; + + (void) button; + + if (context == NULL || + context->completed) + { + return; + } + + if (context->parent_directory == NULL || + !g_file_test( + context->parent_directory, + G_FILE_TEST_IS_DIR + )) + { + create_investigation_dialog_update_create_button( + context + ); + + return; + } + + entry_text = gtk_editable_get_text( + GTK_EDITABLE( + context->investigation_name_entry + ) + ); + + if (!create_investigation_dialog_normalize_name( + entry_text, + &trimmed_name + )) + { + create_investigation_dialog_update_create_button( + context + ); + + return; + } + + create_investigation_dialog_complete( + context, + context->parent_directory, + trimmed_name + ); + + g_free(trimmed_name); +} + +/** + * @brief Intercepte la fermeture de la fenêtre. + * + * Une fermeture avec le bouton système est traitée comme une annulation. + * + * @param window Fenêtre demandant sa fermeture. + * @param user_data Contexte du dialogue. + * + * @return TRUE car la destruction est gérée par le module. + */ +static gboolean create_investigation_dialog_on_close_request( + GtkWindow *window, + gpointer user_data +) +{ + CreateInvestigationDialogContext *context = user_data; + + (void) window; + + create_investigation_dialog_complete( + context, + NULL, + NULL + ); + + return TRUE; +} + +void create_investigation_dialog_present( + GtkWindow *parent_window, + CreateInvestigationDialogCallback callback, + gpointer user_data +) +{ + CreateInvestigationDialogContext *context = NULL; + + GtkWidget *main_box = NULL; + + GtkWidget *parent_label = NULL; + GtkWidget *parent_row = NULL; + GtkWidget *browse_button = NULL; + + GtkWidget *name_label = NULL; + + GtkWidget *action_box = NULL; + GtkWidget *cancel_button = NULL; + + context = g_new0( + CreateInvestigationDialogContext, + 1 + ); + + context->callback = callback; + context->user_data = user_data; + + context->window = GTK_WINDOW( + gtk_window_new() + ); + + gtk_window_set_title( + context->window, + "Nouvelle enquête" + ); + + gtk_window_set_default_size( + context->window, + CREATE_INVESTIGATION_DIALOG_WIDTH, + -1 + ); + + gtk_window_set_modal( + context->window, + TRUE + ); + + gtk_window_set_resizable( + context->window, + FALSE + ); + + if (parent_window != NULL) + { + gtk_window_set_transient_for( + context->window, + parent_window + ); + + gtk_window_set_destroy_with_parent( + context->window, + TRUE + ); + } + + /* + * Le contexte est attaché à la fenêtre. + * + * Il sera libéré lorsque la dernière référence vers la fenêtre + * disparaîtra, y compris si un sélecteur asynchrone est encore actif. + */ + g_object_set_data_full( + G_OBJECT(context->window), + "create-investigation-dialog-context", + context, + (GDestroyNotify) + create_investigation_dialog_context_free + ); + + main_box = gtk_box_new( + GTK_ORIENTATION_VERTICAL, + CREATE_INVESTIGATION_DIALOG_SPACING + ); + + gtk_widget_set_margin_start( + main_box, + CREATE_INVESTIGATION_DIALOG_MARGIN + ); + + gtk_widget_set_margin_end( + main_box, + CREATE_INVESTIGATION_DIALOG_MARGIN + ); + + gtk_widget_set_margin_top( + main_box, + CREATE_INVESTIGATION_DIALOG_MARGIN + ); + + gtk_widget_set_margin_bottom( + main_box, + CREATE_INVESTIGATION_DIALOG_MARGIN + ); + + parent_label = gtk_label_new( + "Dossier parent :" + ); + + gtk_widget_set_halign( + parent_label, + GTK_ALIGN_START + ); + + parent_row = gtk_box_new( + GTK_ORIENTATION_HORIZONTAL, + 8 + ); + + context->parent_directory_entry = gtk_entry_new(); + + gtk_editable_set_editable( + GTK_EDITABLE( + context->parent_directory_entry + ), + FALSE + ); + + gtk_widget_set_hexpand( + context->parent_directory_entry, + TRUE + ); + + gtk_entry_set_placeholder_text( + GTK_ENTRY( + context->parent_directory_entry + ), + "Aucun dossier sélectionné" + ); + + browse_button = gtk_button_new_with_label( + "Parcourir" + ); + + gtk_box_append( + GTK_BOX(parent_row), + context->parent_directory_entry + ); + + gtk_box_append( + GTK_BOX(parent_row), + browse_button + ); + + name_label = gtk_label_new( + "Nom de l'enquête :" + ); + + gtk_widget_set_halign( + name_label, + GTK_ALIGN_START + ); + + context->investigation_name_entry = gtk_entry_new(); + + gtk_entry_set_placeholder_text( + GTK_ENTRY( + context->investigation_name_entry + ), + "Exemple : Arnaque_Billets" + ); + + action_box = gtk_box_new( + GTK_ORIENTATION_HORIZONTAL, + 8 + ); + + gtk_widget_set_halign( + action_box, + GTK_ALIGN_END + ); + + cancel_button = gtk_button_new_with_label( + "Annuler" + ); + + context->create_button = gtk_button_new_with_label( + "Créer" + ); + + gtk_widget_add_css_class( + context->create_button, + "suggested-action" + ); + + gtk_widget_set_sensitive( + context->create_button, + FALSE + ); + + gtk_box_append( + GTK_BOX(action_box), + cancel_button + ); + + gtk_box_append( + GTK_BOX(action_box), + context->create_button + ); + + gtk_box_append( + GTK_BOX(main_box), + parent_label + ); + + gtk_box_append( + GTK_BOX(main_box), + parent_row + ); + + gtk_box_append( + GTK_BOX(main_box), + name_label + ); + + gtk_box_append( + GTK_BOX(main_box), + context->investigation_name_entry + ); + + gtk_box_append( + GTK_BOX(main_box), + action_box + ); + + gtk_window_set_child( + context->window, + main_box + ); + + g_signal_connect( + context->window, + "close-request", + G_CALLBACK( + create_investigation_dialog_on_close_request + ), + context + ); + + g_signal_connect( + browse_button, + "clicked", + G_CALLBACK( + create_investigation_dialog_on_browse_clicked + ), + context + ); + + g_signal_connect( + context->investigation_name_entry, + "changed", + G_CALLBACK( + create_investigation_dialog_on_name_changed + ), + context + ); + + g_signal_connect( + cancel_button, + "clicked", + G_CALLBACK( + create_investigation_dialog_on_cancel_clicked + ), + context + ); + + g_signal_connect( + context->create_button, + "clicked", + G_CALLBACK( + create_investigation_dialog_on_create_clicked + ), + context + ); + + gtk_window_present( + context->window + ); +} diff --git a/src/views/main_window.c b/src/views/main_window.c index 7157d52..94ab0c4 100644 --- a/src/views/main_window.c +++ b/src/views/main_window.c @@ -25,6 +25,18 @@ */ #define MAIN_WINDOW_SIDEBAR_POSITION 250 +/** + * @brief Titre par défaut de la fenêtre. + */ +#define MAIN_WINDOW_DEFAULT_TITLE \ + "Labfy Investigation" + +/** + * @brief Texte affiché lorsqu'aucune enquête n'est ouverte. + */ +#define MAIN_WINDOW_NO_INVESTIGATION_STATUS \ + "Aucune enquête ouverte" + /** * @struct MainWindow * @brief Représentation interne de la fenêtre principale. @@ -35,13 +47,49 @@ struct MainWindow { GtkWindow *window; + GtkWidget *main_box; + GtkWidget *action_bar; + GtkWidget *new_investigation_button; GtkWidget *main_paned; - Workspace *workspace; GtkWidget *status_label; + Sidebar *sidebar; + Workspace *workspace; + + MainWindowNewInvestigationCallback + new_investigation_callback; + + gpointer + new_investigation_user_data; }; +/** + * @brief Transmet la demande de création d'une enquête au contrôleur. + * + * @param button Bouton ayant reçu le clic. + * @param user_data Pointeur vers MainWindow. + */ +static void main_window_on_new_investigation_clicked( + GtkButton *button, + gpointer user_data +) +{ + MainWindow *main_window = user_data; + + (void) button; + + if (main_window == NULL || + main_window->new_investigation_callback == NULL) + { + return; + } + + main_window->new_investigation_callback( + main_window->new_investigation_user_data + ); +} + MainWindow *main_window_new(GtkApplication *application) { MainWindow *main_window = NULL; @@ -67,7 +115,7 @@ MainWindow *main_window_new(GtkApplication *application) gtk_window_set_title( main_window->window, - "Labfy Investigation" + MAIN_WINDOW_DEFAULT_TITLE ); gtk_window_set_default_size( @@ -87,6 +135,53 @@ MainWindow *main_window_new(GtkApplication *application) 0 ); + /* + * Barre regroupant les actions générales de l'application. + */ + main_window->action_bar = gtk_box_new( + GTK_ORIENTATION_HORIZONTAL, + 8 + ); + + gtk_widget_set_margin_start( + main_window->action_bar, + 8 + ); + + gtk_widget_set_margin_end( + main_window->action_bar, + 8 + ); + + gtk_widget_set_margin_top( + main_window->action_bar, + 8 + ); + + gtk_widget_set_margin_bottom( + main_window->action_bar, + 8 + ); + + main_window->new_investigation_button = + gtk_button_new_with_label( + "Nouvelle enquête" + ); + + gtk_box_append( + GTK_BOX(main_window->action_bar), + main_window->new_investigation_button + ); + + g_signal_connect( + main_window->new_investigation_button, + "clicked", + G_CALLBACK( + main_window_on_new_investigation_clicked + ), + main_window + ); + /* * GtkPaned sépare horizontalement le panneau latéral * et la zone de travail. @@ -195,7 +290,7 @@ MainWindow *main_window_new(GtkApplication *application) ); main_window->status_label = gtk_label_new( - "Aucune enquête ouverte" + MAIN_WINDOW_NO_INVESTIGATION_STATUS ); gtk_widget_set_halign( @@ -226,9 +321,15 @@ MainWindow *main_window_new(GtkApplication *application) /* * Assemblage vertical : * + * Barre d'actions * GtkPaned * Barre d'état */ + gtk_box_append( + GTK_BOX(main_window->main_box), + main_window->action_bar + ); + gtk_box_append( GTK_BOX(main_window->main_box), main_window->main_paned @@ -285,6 +386,120 @@ void main_window_set_tree_model( ); } +void main_window_set_investigation( + MainWindow *main_window, + const char *investigation_name, + const char *investigation_root_path +) +{ + char *window_title = NULL; + char *status_text = NULL; + + gboolean has_name = FALSE; + gboolean has_root_path = FALSE; + + if (main_window == NULL) + { + return; + } + + has_name = + investigation_name != NULL && + investigation_name[0] != '\0'; + + has_root_path = + investigation_root_path != NULL && + investigation_root_path[0] != '\0'; + + if (has_name) + { + window_title = g_strdup_printf( + "%s — %s", + MAIN_WINDOW_DEFAULT_TITLE, + investigation_name + ); + } + else + { + window_title = g_strdup( + MAIN_WINDOW_DEFAULT_TITLE + ); + } + + if (has_name && has_root_path) + { + status_text = g_strdup_printf( + "Enquête ouverte : %s — %s", + investigation_name, + investigation_root_path + ); + } + else if (has_name) + { + status_text = g_strdup_printf( + "Enquête ouverte : %s", + investigation_name + ); + } + else if (has_root_path) + { + status_text = g_strdup_printf( + "Enquête ouverte : %s", + investigation_root_path + ); + } + else + { + status_text = g_strdup( + MAIN_WINDOW_NO_INVESTIGATION_STATUS + ); + } + + if (main_window->window != NULL) + { + gtk_window_set_title( + main_window->window, + window_title + ); + } + + if (main_window->status_label != NULL) + { + gtk_label_set_text( + GTK_LABEL(main_window->status_label), + status_text + ); + } + + g_free(status_text); + g_free(window_title); +} + +void main_window_set_status( + MainWindow *main_window, + const char *status_text +) +{ + const char *safe_status_text = NULL; + + if (main_window == NULL || + main_window->status_label == NULL) + { + return; + } + + safe_status_text = + status_text != NULL && + status_text[0] != '\0' + ? status_text + : MAIN_WINDOW_NO_INVESTIGATION_STATUS; + + gtk_label_set_text( + GTK_LABEL(main_window->status_label), + safe_status_text + ); +} + void main_window_set_tree_selection_callback( MainWindow *main_window, InvestigationTreeViewSelectionCallback callback, @@ -303,6 +518,21 @@ void main_window_set_tree_selection_callback( ); } +void main_window_set_new_investigation_callback( + MainWindow *main_window, + MainWindowNewInvestigationCallback callback, + gpointer user_data +) +{ + if (main_window == NULL) + { + return; + } + + main_window->new_investigation_callback = callback; + main_window->new_investigation_user_data = user_data; +} + void main_window_set_selected_node( MainWindow *main_window, const InvestigationNode *node diff --git a/tests/test_database b/tests/test_database deleted file mode 100755 index 2a1ae2522c4f231ed1559cc6b60d12d90f28ed9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41112 zcmeHw3wTu3wf_kaKm`(&C{>grihx242vkKhJO&dbfDnA5he>7GlD z$n{Gq#o2H%bubPMb$yj0*Lt0zXTw_*+R#w9?_$VNKYYoF8moj{7ZcBKZl}RddSaaj(YF*(Q}@Uo@0IN zB;C2{eZ)uq-9GyN>4UHJ!4L7#ztV@l*vHPZfTuQOAC*AlYS$9rP5fmaH~ZB4oDaSo z_K(a~f-()CT=hQTqi33r9~SxWzvY8J(Ffn;W6yg&_)~rK-0j2vun&HtPrDL6_&0s< z7yID<>|^JzeeBuogWv0;f2|LGfKR=@@!{|AsrL;Zyise_#KU33vTEyNQ7e%Q#*>x> zY$6#Cr5bQjT^A0tQ9JV_YW6;i$EIqFs)M6JbYVO(Y6auM68`uGFgmomZczwK>pX4R)bg zRavzX&asi<6=7H76o;oB)pfCiQ>Exgu555{s1q)>H3|#t%0^YkQZ8geJlqhBhpD{{ zDfFL3Az8i5s$ROxstHEwfCwfMVFam^aP6&@u&ob9qDDMiA6riGT)iTQc+k#C#;Xxz zV6KhC#!oCRp{sKVmt$4egsYQY9QZs4=^tCDn$D&e7tAT2G1Hn@eC8zk)H$12EK^sE zJau5m@}Z#=ZQzHexrakjXL=r$hndNlV9@iN$8Nh5)1!XIG{FsxLr`O?08*=c40PcgU&CiEyts^IhPm*%FNk2e z@O)n*HH>lLscwCgxbWIXL_5ocM~B%*sSAI&jWvui7ybwre!dGo$c4Ymg&*v~FLB|A zxbRC|_yQNc!G$k$;a9lua_h&`Mi>5Q7ynupzQ~1N=fWT3!f$Zlhq>?@UHGrK@S9xt z<6QX7F8uK>{1z8p-|G^&)rCL7#lO>qKhcHXKh=dVbm2$4@WWjAF)qC6!jE;~$GGsPx$q?}{OKy&mZGK(7aSJ<#icUJvwopw|Pv9_aNzuLu5* zd*JTKomqg19Pth zMlRn@Wm-n)Y~b>@sZ2{)olCgMZ5*dsL<+r_K^C|BcGD)YNHm`E@GO5>sa(m;Xp*T3YHfxcoaR z(~?qW*C*8e=csH_xr58kP??sHI`?pSE0t;KsI!&Jk5ZYIj5;@S`2i}^Qc>qdF8_$i zv_#aoj>~sZnU;n+8@YTtm1#++vw_RsrZO!BbuQuZH>pfZK%MhZrg)z4c6rm@tIL{R zFI#hkDrlVj)Bk^q)2>!9mKY1j9v7eSTb(KB+&iQ3eclRyJ+flan)8tSnNQr`hnU0!* z5wje5vafO4Uuo4kb>^b7HPaS=({_zJMy0dBJZm0j=iv> z)TnXFq_49Uyo;a%1G%)UY4y&src`UFthwJPa#LATpnF1VSzDkT1p}}{V47fCU>}X$ zvNfxB8mUobEkz$+fKtoke&-U%Kbk<(-mTQ1Wle4AmP45gcv}_ki;A~>D)V*|05A15 z@dk;vWl?)sbE>thIk0p377&;N=4Oba00Gt%*tcf&J|jtW-=OrZRr($ied9&nk)*FV z(2kB_OD|U3S19hggu7U{|MIbLqn=+uQq>dUdX80+rjm?{4S|-1C4uSmHqTp=dU#b*zK&A@@cTrO(DIIC(NGlz;D;;+$9R;G}e9>`= z7(uc-aqf20WlA!rBwGl;?K4I4Z~x+kr^}ibb%)AMAId?H%ukPm6LxKvFeyQpv?EOR z^bC_O=s{S}19=LIc4h5QRp;AiBU*fj0P0*QbuOnm*R0;7c+&x5n*6llEf@P}=K{6n zLgH;%)CGfSwznw5Wos9PrLuG8uuIoFm{f%Ym! zKHB*!C3%=gB4M*9N=4ERv=_TGnKj*c9HT#0qN|i>SVS8{G~ZR}{Wy1<8&Q%olw_0u zx+*D>&!diYa5}|?N)U*R{;*re#lF7`#T^sw^}_uqakmVvA#`(K!&Wk-tm(HHEVJFt+5MEBfwXxwdo_*S=^2bbeLo+^E#0H{n8bV=L#dPiBzp#0!z0xyO=_w_EXn9QZ+)H|z18eojs!-f-;E^+${2>8w|EF-rGYwa<4b zzg3i-Lb=+ZJfK>j9{-n;b^akudyb#l?8N_?}3U*U-VK#8BF#D6H_pNja? zA8_ApDR^8*V@&Z6RQ&e|KRv&ue!NZbw>tdiEB^K~*}PkXpLP=ye~|cFiq4@R!R24f z`!$S~))`9t`${}6;(bMYBv*&=(;V0%vNt%g&*DM}&s?QsdC(#d`-$uu?^DwjQApq_ z$5ArVkzK1~Pg1hiNWJ+Y`vA)Zx}0WSrug5*1OdIE?W7%3)XeLgx^SiEx?X|l(#GLR z_CJ-ZinG024-?t*lq>~khsfUT$ab8^ZCt5juMj(r5ZOM;&b4I2&F^^!^?ge6d?mSz z0K8Kuk~_hT8aI;UDyO=yDWSua&~T~lC=vRu652pQ*P?1^-?>WYr3qweet!`B5<@80HQ4&@E6!D0)Z2#F3v`IUiCO@Nw)A{|fwTy` zjb?JAfoMyQfIyGA(jUPhbETG|pHtAa(R-aqre~5`5Fhq?V!(s~LQa(zc12Xy%b#?a{?I2`!VCDqT&YYm(@C_Z`+XOey&x zz&5gn)J*ZH*-6vxmdPh6HMfhJb4ASqO3hxr2n-&sv@K*NHtBDJ-OXF2biIU|G&Ju! zqHC7ux|($jzFl2VhJfmtR;4$3G)+{Rnw6$oMAID6G*nsDqO6*(6h1|Or)cR)kFGap zy4*7Pe5I>VbXAJ3oo}OCuTr-{Ek!>dYRlkv)YafY=H-Uwc~t&hseEf3H}ok{StTk{ zE|qKETGDd{-O63j7WlF=W6un`E$|@fgSCMz2pS1Gni=1T>M=KM#oSbG%|puEY0BJM zas;jbH;K7B-U5F!v`7}8qPPnb_afn@z2g);8;HAQ@Ek%n2U=ZSxP@Ak9!7oBge$zg zi0}qo2U;fo20LvK6(dF8cSK(q*S@F~I*%kj^5lSB{vE8-$+-EkQn5;@_=I~JQ+rX7 z&n6X3QhhhwtECKDoB_z!&6de$Dn;X@<9;ZLo;*lxOVPA)=M&T#d!qa(C{2L}*Q|a} zO_YyP1|7t%BDCpPQU{N27ClMQ(;V2WC&~xtD$_FgDaE~;0Jt9!?%A5VrRZ)Ng(|(B zt^7z+&&}vx9)XH7LQ!byNtAD~LpdepD@un@?r>X` zCRiuJtr8L^s|Fmx${Lz`Z;5Kaerdo>eJLJellDlo6qH8aC#h(dhQ(Ll3iw6v?c#~ zo_x2ZkA^g-OS$kgt?tJ98{EH$)&#qaEjK3PP76$lZt#P6Q#X2x*T* z{uYFQAvLUdtK>_p@+AjADHiY!=ej#@haO&~Yfe!jgHz@ekBH5+j zpvAX>J8*N@x~2njpJac+vGce;50JN8iXNa5-}LmhLTKUH64#bKmEuWOO0R=r)&3(j zs+LgHvg|d@xzMWDt==-x+ANQaVCYZazATqI%A53-ug^UaAA}(T)YOZrEV# z2z*2)f;>o0d5Lk zgdf7HJUTE0T_Y63I4{F3ieV-^)PZaGab9XvQAdH=4(b3em7Y;S`2gztEK9!TVZ$4d*HtXH}=^%1L} zCtgHc^wHY+g$MKWj9jNJSsiviiQpXBt}>qV=oLr{+i)2)ena^oebwvkRtnD)kWdx! z5Iibg{mFk5<1;9tmGj9=z$qP)_sa%F$~ zK!$u+i^_DatWs6+<3*L=nwe)iX+69-@D})gMy=rCGx-Bt+sm6;F_9>1dM`U|{+;<$ zKiz_eQ=N)fqsCA!*v~Tq?$=ISj(Ad>JeujK=5kx)SVHY6EhIN}wNW&&$GSX25dOop zpb2r@7DzLPvw+Vrwj=N+a?~48La|;!0|7FeQx3Chmp=Ic`XoIM4{V*76bjv=q$hLt zNY*O2@k3<~w6&#QQ9|lTTEUHfRwN|Lw)ABfL)^xKn|1*WdnlS$?w-oZud4h~p% zu-`g_bmQtbjpQuN{HkV7jsyzHvFH+>uJ^bc9*fqKx`T&1sM;mO z4p6rGidW&}+yV$-7Wn8jcSMhc0P^n}cITH+{%uMfkZVyF_dQ>S8dRX^BP zCnf2&z#(QKpB3E5i=EsmP6AjfpcZlx*tVY%#i2E;4;jfh&4EJ*y1UtxPb(%)P|3q} z;otyFFsJa1ZP84C@}`|RCRe*i!{>LzduWiiBTQKH8G-}FH&3_)fow~^`6sWSYe^L& zjzjK75-Q+^K;Ur*xV=UZ*G}oC=R%5#KFL6Bfdd#0@|ark$21xsG?nG6#U6FF7>U7l zIo*U~+}U%!6F$+Yo7dwxTeYQ&Xx?sLC`oX>7Sz}719+6qxwdl;)!srAMV=;i^_V8# zgO)V~4y;*y06l*jaZ_*ioGPcCE6Nk(_T~z-{~4J^yqJ!o#?P0$fh1dscG9hD&q?;v zte0{g8VR%1)q<`;jOs%u_GZ?`fld(YT;PlwJ%>m^0VkS|ao2;1%LrJooGbv^p6xvP zv9516$kz#3Vqw6i`qCtm3QCX8)O@>o3d(hy2S2cppJC7nZO}CkRF^!m>9}m0PW0Gx zlGmmLVnfM#Y~o=I|DEBo=>gJ1j{6Lo>aO331; z*U)&6O~>T&a+El5w5)NF{MON^h$ddoWKX=76OSvUx)NNMbk>j2 zBxg*&^s?^P89U9IES0Qh>!m1YAfAQx&mqUDe#WYhxgzSxAIP#TLQx^-*!wW z^%dPT;Lp=Wb>0C9Y>x}4=pvv;!U!T$#yq&vg`G*yZhMZ;i&2N$lM|$@CEWq{p4x0c zj||R13v$dZsv*s7u?L|^w+-4|ZGjJHgd!th`HF7*F=bM>+j4!SX@tU|nJ@39xcFer z>JN-0EiQt~8gFMy;1%$xe*@;v9igw^h)fJ|@m^L`c{{3`T8I9^GQejzMKndVO?35L zj%Fe3U2f>s{e=aKEFav@w$n{yo?ekYsRz?6Y6#Cl`gr@Z5V0j8yO1WQP;rHJKw&P!^@ zA1zP;-&}#_sT9)>S`o?KZP<7J)^#^k3TN;9yr#>J{k8x-e5Jr~*0bp?bf{z})q52^ z6m3FeG zzn`*yF@-+rJ$gOR>w#Vm^m?Gz1HB&T^+2x&dOh%e)B}00H-6?akzQq+ID`Jvt7(H( z!9=*Y+R&%wNz=@^i{{LscdgpzcyDZ~E@@7iW-h#VPI+a(ns|aRKi7hJ zmm2i$*DMZxudR)P1$gr=y@l6CDXSL-<^*O|nltAunp-*Mw6W&w1@kIQ^*U9&`%_ZzBgqKAk#~$~BT00eInpgOa-5mVBs}fnL*8XfE$E@=0&8~poPbps zSXgP5FSHf}E?6{Y`T}#TQ6EkQsZJvjT@JxWZ7>;$MOmNp172&K3ad`g%;NuL;g#h6 zMD@~eeb8DSjwc{Gnq2>-^5%flLF$=FO=Qm)F@gyJHW_hFem>juBc)Xe; zA#Y2(Z%@}RN*|Lgq|;b#`}vjM?w~sZZ-75Ty4BE-JLV+28ScbNdD_XRNTnm)8b%@& z>La)OND`5Ha!I?j>Fa>f=%X)(0Q8EPZlbpBOX*>Ab7?V*FQ><8GMPqh`gi3=QbX7z zba1 z;ytTeUE;$O5nAF4UH7#hjLR|pv_s>;>PR#^J`u)83_@W&9IS;>{;W8(t;w2jh^!sz z-YUoka$WnZ>q(9YL-|~DjEN(A+Axlhu8YNJg>kZ+AiQ~l(%9&+Q;qoxre9Do-NYm> zTpN!hSK{se;p$~mjY;-(LEC~4J>csB7|fIOHAlHe=N;&9&4jWqAa;M4c7BvRohA3# z7ZNQUTV~tmn675surRjFZQ?AMw43Lc$yh33)`b&@3C!uu1U_A1^5-YQ32YOVgJ||l zA1OYFFIZr_VbaatWzcLk^zzFm6Vxm{yaJ!>NZ6dYPrUL@?o}Vgur0|g46Ls_I)py0 zfyq`JcMF*R=eERGUJ?z-bE5IFz*k<6Y>_LUyD+ez(k!1_InUHVWsbpQcpUXXDm>P_ zWcr*%fraLn^T(OzBQ|r$d18#m11``s0%-QhC$9Jb+8G5*bY=l#Rb8wC)#1qTA2tNy z@o*|mw{iIT2qI`y0<$~slrHBy&NUzn$A}ygGGo-`<44tx9~G(`Rd&v(igQLSyh67d zcTvdnxZ5*BqhqP%@krdP3z~HQX^tM17_F?40gSJJ;6} z!VI^1s*$_LSQPD9acKMf*KFTtk}1nk{fxi`$fxBM6@gjh(<=ii)TXDZQ(2;l--M*f z67gbV=DZ5r&yd7t@(1C~x-j?`%$qZ3#`KvNO+}cP@$lDD+aEw6k+s=v{kQx2|Gy?;cz^?T#l?m>5VWZ8r6)0YT*n}>QNx0JUXqr){d!D{Xibfw)T3CRdK zRp=Sc89Lofp!uU$Z`iC}8jRPft_I)s`|E?c<(Et-Hn7}7=~L1RPvf%MqvdngCZWO! z=HD70kto)#>M#;17JC?ItIs>W@6^liydT@#jo}YwGPmG-_rsY?67au%k;yy;_|_wt z%s#+@k7Y8nlWWpbnaoh^H2Y{vm4Gw;3vz%Bfa?K&2lyCZ>kh~R-qHqn z!0+#bJbr()dl%#ZM?VL7z}bLFz#72yfK7mp0S?FG_I-d~!S;y{03QY%iX9v;08RpY z8?X{^5q4rE0h_U7W~wkz@NvL>fEQv<)dzsT100HtIL+AmHwo~0Y?Z78{1Na4+WW)AM(cVr(_!Sq!?7jDjE zhI{D8+Vp!sAM|J@Gwv|A{OH59{F6Wr`*kL>9ril{-VJ}*^uF)sYx&{OyW^QmhEtoiKf>ZHe=g|zK(F%XzslCX81!SdXEN`2=$$rw z73c>*-|eBd+4OrrU-xV#GZ@gZZ=l`2CxKs$_&w7@FShCXNgi>1rAPlIw*Et)KMy*# z;W+xQU^2Il`sF#$O*j2YhkmZmPj=I=O^Y+osG=~`dN)F-{%%v|0>Y`2>N;t{Z^ZP59o7|H`aRSYi#sLj?xEM)^x?=0hd}?>L;r_OKNs{@@H2{?p8B_Q{Uk!i>#z3B?`w4P zcXN?$?e80x;C$9kGkj2D#ZSEL@Jv=G)C!23!TO#9al>kFF)X8 zn7|@|8VH+_zExqw4Mvv`^n7c82+%mE<1%Te#`7ECf!B6-F&E}j0(JfPZ6CKsvtq9- zm&b@BkwLhu{oW!2z*)K8v_3!u>VM@ zU*M?%rwE)a@DhPF0+$QCS>T-l?-TgAz#RfrEr>Uslpu%CoOzBp2AO=UIblligyIS2 z#FB|qN~TPltT}VTJfQm-?`E>86rXv<(Z;~z>WqXBdA)7-5Ojrx;?Q2@Dx@FiJz zy7wTw&PQ76LY(9o#~VweU1T2}m*6kYC^B?DU?l#n#vkd?`Ay@SaFU0+ADv$`eiKe| z*-u-uNzX2^b95gi@d`kmF~lgWQ)Ql`;`D9&5r5Yxg&!{b1u&TS>D~Ht=@VycEZx#Ml;UA~e89x>NkMSBDI{01*@CD&F>KScl z{eKbuxo0Xo-#g(nAMIfKg9|q> z<1pm&THgN#RKC{CRZFB1IR3lx5>D2n*#S?+^x6g`*ER0{Z> z9jCVn{zbY#;L!c@5b!2ry#ICqe{2*iOY$coBA3Ym<@b~-RpJMzV<7MeDUVA`I z?SikItE#2EPsh8!AKB+P`?{>K7{9`Qg2cleLMR-d`1Slm^Pd1bjl07oAI61nHsdvy z126KyU*>~fBKr4=J*KF-(TD#|AN&D&r_VH2+a23ztRUE6+O3>D+Q&Jx0?lTmMT22<>B-PK6)PZ!9OK> zTEtFXGlZV!efanL;Jbh)|18x5LYZZJ=)*q{6V_aQJ05r%r+PjqYK)OS{Ac^%FY&=I zX8a%{Pp&(9ynJ2or;8tSp1j>h&wmL2HNtafuvR9upq!>YlvGb%lE0n6QUkMRc ziFX-!SUvk3umjvv?zvCIvgR)cR90SY&0aKjW@Y)jxt3KtIZG(lW|3TSld|OW6Ts`j z*_%XiNuTL2onwngE)5g?HDqlP$t69(Us~@>fbV;HtHizK3lBS!mfkjE(Su0+#1K8j zM9*7rwrE6lwb<TN+k+hYIUCXD&-Aus+VkUcw}|6 zTvpm`aQlI;DCno^6+!YX|8T_9QML4Y6&Sq?JN+;mwO-9@BXs=YXEeDQhJ8}lVUd%h z0@AY3LK%p*rHEA3rLZuRh*?Xqj|x6@=z7H4w%hh_!+AhzlR3U+|GA^Wi5g^_M6lKs zIA}VhN6JN3DjE;hp!aBtD8)LW-oievP^=zEhb|bqEv7s!AlJe=UO5%diP`ndKQrlf12P>r{KRY-dR4@Mcxnn(FD~91eB- zXA_+ZtgRU14bE^E>l3w(Sv0!Qu&Pv~E`%?V_q5_GO# zL^%zl0L|fds@LG_s>ABai%xDbiW4jAu`L!b8CP(rK8wb%jjT4BDrWbMkA#e3&S?z> zW0wXKOO4{t$|y7_h>l>2{CLV!ut1B4>w+X8XAN~p(umM2=5bO?^FYvI?B3$=QknTJ z4MA3yU?|TAjbht8+69Su$Vx#?pHV)ZrmL)4%@qw+tA0i&3P2SP;8i~pDKc*x^c4r_(#Sc~;6Iy5{*7483e9YP~$K2Nt`TK++i*HAzA z()@C}ri%tXB4OY?YcVaqQ{*+&^15E!K6#E(l;{zXmQRbkhK(YKWx$h& zmeW?7nBJms7s^z>me=dx8ZIWH>&UKu6KHPvB`L+M;bICL*P;7QqaMY{2d?;Q zm34a!8#JT9Z27IgyYt6<>QEdSmU7AYmo5JSNN#!kyiP;Y5#_V&_Wuc3tdjB=CIw_mSwEfM)_ez1Fvkw6fx#Dg^qEuWo#w7eVYvFBFN_zfuy yQt(88aro2r=<5fTt8Cj9r~0qs@J(WH9lBnPIua+k?HWh0_Is*ydX_*|(fA)CdR4~& diff --git a/tests/test_error b/tests/test_error deleted file mode 100755 index 1185635c8f2fac9033677f79bb831ba8d661b8b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32688 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 M9A~8oq!q3I2K-LdAOHXW diff --git a/tests/test_investigation_dao b/tests/test_investigation_dao deleted file mode 100755 index 0234ddd470732e3c1dd7ba53ba45d9ccfe826f54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42288 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 diff --git a/tests/test_investigation_node b/tests/test_investigation_node deleted file mode 100755 index b7614efa3254dd41638e0c2b0d87f582c089bf9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25824 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 diff --git a/tests/test_investigation_project b/tests/test_investigation_project deleted file mode 100755 index 3bd6369a2f5df830c034c78550518290ce4c20a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51616 zcmeHweSB2a@%If7L^LKUQ535y@~RNROAzHj!^=Wqd5I7ZU+QI(ED%X{<7OAZ7MmKh zq;VBr>T9*w`c!Lc#Y!nswGk{qZELKE)cTU2Rl6(JrWG|+Yo71SnREBto4sJ$e}2#B zl}+pn@&@hQmI(>l-vN6T2rii{6EzS zSp8A%$2e7AssL)$Ro2%H2MC_f#P?IF_rjBePD8CBLE`hfDo#{28d?RaOnkX?8=!x< z0{q{BPs~?k4NX37uR-WNuy~ZhYiRP3ZyN4Y^$icYVZ~vpyi}m(>jO0LHQlZ1n;vq* z01@EQQ2Uc~q`wW~PcIxsOt>^8TDl0*U&n1!>J3X7OMR{`Z+iu|E4&v5gkD44-lDhT zHUCL_6~Z?qsRVoBXVk&CG}P@?3SWWP=Y?&|Wmy_(`_2a+^}`pvB+RUZ(w<+xZ{#4f zEDc3%?t?*SjJj{m{KZyv$F`%tIx{}%y;c1KGl#4{wbMVLteozz6W>y{7r-(+P)UlfMuGvf(fG!7uWWKh4M9yL|A6``|bG;A?&K z8RA19_o2TE_yGRA7p13cexP)f4Zjum0RFt!C?9?5eDEC*kWGFQ{5;ev9OeJr76LTl|v_zL@q+W1Q5vX>_!)s}6qsE!2HaHFg+nnr9E(L`BqUZFiKCz>B1B@BSI)C*!m;p*+D24W&YM{mjf5*h zRdw!GLp3$vst?uGMXQVLh~hgWmtk0aXjRyb*OO8;p*U`9>%(>;5(_VPVU|Z@^`SUW z#A-LzUKyr#s}i+!HTLq_y0Ex|ZtWG}xLqBEMUi+Th+wofv^o@tMrx}=b>KJI>Y^*C zHTXH&5ROnQBqttjq!ts2+8Pp48(Cq;LXnziy(VaMHx#Rf1d`*}L46X5USTKV)xgJN zYYk5|US3xl4^Nb?sH%eFmxpTWfCx1qE5>D;BPgt`4K3dQAv{pj{M?Rj-6j00>r_#!e(^BkDu(+Gxar zkQKGju@j1lX?0f22Rau*+~6=()7@li&fM}DGwlgQ6DK*hnY#%^CCC}x z3+b0H4ZZdLwTgrOBSrDLQuC@By|PwyIiUIggnIqE<;GjF{Oo7_OK^i~Yx79b0I(5F z;>6m+iSrl{qxVI6-Mx_(ez?}ieo5m?1>fYs2O1Rp1`mF`;5T~kWrDxmgKrT0CJ+90 z!9U=^Zxj4x5B?>=Z}Z^)A^0{AKL2v1|85U{l;Ar&_%gxo^WawszSDzm5`4;o|Gwb6 zJoujpzT1O;Oz_rEl)k!OUKIQQ557zA1s?p7F~vXFgC8yUfCoQE@S{BV3j|;6!Pg0X ziU;2;_)-u44#Ags@IMiJg$Msj!7ugTcL;u&2mhSlS9fYsTg}Qp8$I~Jg5Tu9 zPZ9iP557Y1Z65p@!FPD@n*`tK!M6#%%Y%PS@YYY=@$iY@3q1Ja*DJb!2VX4sVh_GT z@TDGngWxMX_zi+z=E2`D_y!MttKgeF_@@NF(S!e!;5T{j-Gblj!4JAd+1uv9j~9H0 z2fsk@ogTa`_%07VE_h4MhxB-C6?}mQf3M&J9{i(%FZSSnE%;Io{#n6Sc~<4SYWXA29H_27Z)*Ctv8R*ud+f zMXH-(;4uL^SE+#?=wL0Y%)lRE;42LLkp_OLfzLDW%MAQc27aZ1&o}T52EM?+uQBjP z8~7#ze~f|OVBn86@EZ+0ojvL6b_0K$Mgnd!@W&hY2MqiP27a@Fm!oK|-Dcp281!uh z{woH4w}C&|z;_t_D_yiZR@S@Y8a zcCrCICC>ugGyJ#spMOdz?x?(y>e8J(xQ6ebGA(`69bDc{Wm@v4+qnF5D$`Ooy_w4o zQkj;x=}lbz0hMWKo8HLfJE=@d+H@0_Z=y0SFVYQM{tlICiJxA^<*TVoOWJe=m#?HU zEoIZCT#iwhmayq!E?-7vTDqnKT&|)rEm_kAT)v3Pv{X%7TwX}!d@6T+4#e>Ds9Zqh zPA<=&^3hc8;PTm2rln}Qjms0LOiR%8W-gyjWmsZ2}IbQ714 zp)xH!(+yl6NM+ixq?d8I50z;Nny%pTC)cA)OV4yEm;XU!T5_g~x%@7bX={@XaQRIt z)6z3tz~xt{OiRwR#pORxnU6qTgcJ~X^EI##^tN2OiROb z1(&a+GA#+yrCg3tnU;d-VlH1sWm*EJ16;16GA;em1zf&}%0*PRxV(_cTFRw2bNO^C(-JPdiOWN&OiQ=)MlKJ$&a#$o zM42xdpX2{p-txkwWi4-(HNVwWQ5hWHHvXBiCKQC+PDtqevbIYFU?pv0#tL%l( zb+xKKfq01g19bj1 zZTYvfHI>!)B%f)--V!@W|uizKuM30UpHJp{^H=cP!-b}qF19t=vtFsO&dyU=)- zl^9-@EIj67kS9xKQd7xXn_GNg`_&`_tsM9S^sS)B{k>4UCAg=oy$ycuDQoWTi4QJo z-@yeY*-KPah{pX#YMvUj*Sv0zl{gldPO6^(iLA^1sTwto8fgippi~MTp?s^W`lq7z=}W)F~HwszJco9)Y9dx7O{DI;;RyZFN&PBwTy+^vsTDV6#U={ZW5bdcy zK(&pIt15brk$sR%@zg0$j}?wD;JNb?Z#~3gVv3d{$BaN>Tq`q5h3f*AaEH@Oy-&!J;g?9`gg*R6~iK zwO&a{C@EKpl;4V!5iBKdiAd?yZQTDl5Lwj@fACnD>X{dFIN;ks| zVo~=6ph}jc%L(KT72ZE;`2&!C=qBm%Cl%+zigU1VzAl{0h_gM|fugnl47A-* zmK;QmqGtZw1kgIDkD<~#h^4aTU`GzRrsFHCe-A%?%J!5jnN7sO&c~Qp=Lk#nq>&?v zls=~@eSSyG7&ZT-7U6}CkH`zbE+=I!U>~sm4lDspvgGYD0=YjE&d-JOR?SJdl|&V0 zIJYa#pD50s3TG~5R1jW5oXNuLNTW0QpYZ1k|4GE(9&AIq6zjVQ zwg4%j3wluHXVsW?*QR0tO;;$F+r;7L|Kn)pfNdCyQ z`ZjJ0e&d7*kty_}DRTE>=#ngXYz~3ksUosSL|&#uawfbA+AGc)R_1!e`Ax-HEu0gC zvsgHvR0_1GZa9FX+?~U$ixlfD#X3z`>9HDe^M{~>9o*76mJ1F{+xeKWe!FiT&eoJxkBv*t1D`Vn8#dMcqdR&;!5vIAqYDuYMeiV&U~LiYgUQf^f}l!qMv9=R4X1#iD{5Hc|OoP&+B}i;;=|!`b`$TMB%LR z`LiFuFRqnB*&^xk=UD zuStbe8+H?#`_+ZSR`QVIjxgB^+e5;ADRUPtAapW!1J|Py@9Bch4)Z<8NWV=J*bX~cPfan zffajU`>n!Xrds2*>W8pi{Q8Jus!~kN5{P#T)3L;KaKCPZ)fvCu1Q+)5>pGB# zUz3H~)Brh))#I>y=fsQ+Gn6_nPA5}xIq$+_KM{4-{|(Z=<}74;kJ=QER$1+1=IZ2f z66=p-p`GceBgrh+O6J`K?7NFqyUWCPPf5E+qFp$>Q+xVxMLkwgA5Xr6mOF&{_4lc# z^3Eh7*_OXgs@9DaM4giNS}9w7xU~MP$h)59Ertyxxk@HF@ddrNz-UcEpmgU@CFy1* z=~WpfzZFTdNRna4f%$B8SWzz^b703yLVX;!TX-0a^Gw7|IRQnPJGLnP;fnuf(%Q?y zzxS`)8fW=tgn+2{O~ur8F14NelrX(6O!pGg!6WWu^hPG)0{$VYC!D{+5N2Ri{zgFr zgIv?WDuG#BQ-!VU8tCT zAc^2#!Zc7Zu>*ez2TEVQNc*j1$uPwfoKBj&u)S{|g6*l7_8+n@7s6qgzO1B(%ij6g z+EX}h0VZaa+wSa+;g_wl>b8@Z#{ z==RiZjEfBGyR<7wmK>p2w+QPXVSQY&{)W*Qzb@8?6>A3`#DMr`gtbsuzs0Pa&_3rX zj=QPkX;<9UDksU*cn1XC6DC5oC2hNY(pbso2w_awEKEusBYwQeM| z{j^d}mK>?%O_A0|i@Yb&_%3_BVX z^(~6}Drz2fOcLs#qUOjyVX)aJ@Z~8!j=1d@2%=hl)!0bI)GfjP ze}rjY3aVv~WhlTC-(vVR6Z{wWj}{&L!!!e{G6D>}g8yicIKf}sdxq?!ILFNBO=$ZV zPp4g8|Ksq)7$T`@!UC& z6`Jw&Db3r-lFz2F0b_-4x$r%t_+Wo~>LT=?#Mdsx)UKFPq9MKeLxgLH>EQA8A&khx z*T?<=spIQu&A=w?@@Igm9Kknh2G;$%VCWT)O(6Mi19B3NEe^=@$!u3ZK2OtcvSibl z?Ay!9Tj-N!ant#4bDuZ?d9R|5De6mvdc9DeM%2l|k4hmV6Oh3Il4%Cy#Y)N;C1t!w zX%#82y+u;;?v+T~t|BpW%>0D1!N`|KD0#0EM>2OJiG>X}i@YSslP%FB&`^SLFR!Fa z?pI8UNoO$KB1}sa6Zhm8d{UN~o9AUqJD7QjGl$eJ85S zVH}K4li99dtfDzGS#oR%f!wzUz)g>eo1T7?JJJcpNs9XINlg8`P;U|HTZtM+zqGi@ z1mm_ml4%Cx`;@MeCEr(4?h`4$5-AldCGQNX%{F-#Q-8ZM<2_2=0wwQ91YpBXk!L9z zI5Q4|{Su6|is?kfw42sFV0v1Zp8Fp%1t0Y!OA3@Z;5TRdXIT;_`%{#p4t%-?7yex& z?Gj1fB1!Ur5KS{lum~s+0Y4xC$-=dyXR>6^SO5%t_gdyE zz#ml4pxA~xK z*+B})iPzI`pN#)Il$aBhnA1eesUqgN*Vr#C<~~OZVw%(Fx{R2GO3aJnNU7X0B4(6` zS#OB>)=})6-Q@P+@Ujfiqm_W0lz>O2zsHM!nIs_l5Y;2D4Hokd`<{~b*D)kE z_XKIZM&#YY@_2h(NL9VI$9F@Zg!@7z>4!?vdlK%;MN%b6GVBD8b+2q6Q3}~4d4$};*%Hd$>74!#Sp$d8x$)C`4Ay$r33SW2z8Jl~VEa|Tm zg$F`m#q+kobAUoDSu$MlM1}EGew^mr554?kkmqa%$HjD8UD@afftgw)3~AbR0$f`Mnlp$5--5B z9o=}ggJP}QiXVZ_@6O*!M|_7d;r>Qcbg7CiSH(pXW=|q(A|%>VU#I?oV}xrO$#FhB zydGXeFH7C2T-Q$+W3IYfek>@HX86eyevD=Pu{mf7qouWUKua6OW>@+EiO`Rvpr))9 z1dH+9)SG?Fn%^BzmeWBP{n$wUdYWThZGQx%q4Qiqk`dR!J$NE!{jDHO{Sk#$3)m(y zt>q~uN*11t5mDZPH2D;p$6d^xN^Jn${!6)m0x|Bps)2Idz;IPQEA}DJR|fBDX2)(nASd>Jm!&Dxp`gP-spg zT}E=9l8h$>`DvnkqSqgkKWMNlBt&(~0cY($%8#4-m{{xvrfJ%u($WAClRZqkdk5^fugQZ`&jHjsB; z_ylC8Jr!ho_Ti@O$#dD0@7P1nsUXJ$cT*5Xx=*}{JDl;_; zlP&Mr#eJsQYNkgK^7JwcxDs=G)>*#23#>*kK27;<85!o@n)Fc>&@>gCRJ=#We! zN28n7RC4m_Ut~+EI+ArOoKIusep&gc<5Mr z=&#Q^JYe`6NpKb#v|i-LaAi4nn244orMH@9TGrU8r{!h~60^^e^GxnWUW>YyoF}6K zle!UvqJvsCI*Zz3cy}MB%Z}bhRb6m4o=kj?!UodzsU<>Y#^a%x#3Hga(E-i(mA9yD zC-Y@{D)u{??%!)(_nsBM02E#5@BHu54I2xmh3Z?J73$LmMh=?$RmFLz z*v%DsI=fy~jCU$>g(IOV1`{=P$EP^1LvUdkP9q?@%N|EKxm;GDr$_Ck)IXl3ERA8x zQ-cKg>FDDr${EN+oF-pUbVyZ{&f8Ppp)ypF-teZiFOv20x0V)UvR>(i#K%wqn{2$2 zL!0cyA8)8AKwkBvE$7V>BS%rj+vi$BTm+{)ISP*XHF+mB<{8sU=}LZfn4jjR46MAm zXg3jNowWSsV(p=QXoC|Q`-l9c=Hln616z@P&=k**+xz32r^tuLp)s8+t56LRK0Q$h zj`rqwe}beAYz@AL`>kXJ51*1pab#9b`}`NmTK?hPX`ih6hV{4(5vS57VokM>EWC>k z+_+!USpBI4N3YB<%Y_ch@r2q{T0oIx-k^MEBPW92Nt>fMoKHlYfgT z|F$IFlDUYN4(J%HKpFs$YX`GA#tJ5ZHXoCL5oBMU8x z?P)tHQGC|C?lUVsw>9_~P!FPIb+|-cqg8c$pyDVUu>UY@sy{p(;_$rC8Ggr3-6Y}A z9g(9=q;{Zod#dN)j040syV2QB4+7bq+T~$1LJlL2)6vbuM5}Qi+Ed@9ww;xA^LrF= z`+6^0-C2iLr~G=sv~$P>IFDy1x9m#&2*R-%z2*iW(1dqsO8&zb7yq3=%&qf~TXx7< z*7K>plw%IXc%*VX^Y=aly_$wVQYG4tp3+O&er&O46?+?c-5G49Fg?o~rf$>a`Rw-K ztB5696K0k;D^zstCbyo~O|b(P^YV8nqU65O?2+Bhsoe=UMN!jNk-?b2DlM~Ekd&QA z1oZHsn&XfaJzD}BX0`-hHDk@_d5mE0`8#%?ubme;?}F{k>t4mMxKVXhXO?|LC)0DJ z`~=*bp3z%sjrDwLG4e9}dI-+Ti4zZnV6l+p(E3G|OP|lSr+(R{yXz|~7O4Ax!aaL+ zJDSV78+jh~JN?KZOnWcyO3d7J>81NO$+f&*r4>$xTH#QCRg$)tE1Z2wEoLg!Utd-I zg}7}`g+79M&LW=}r)oyM-Yj+)j{&1`X7JBnGp{TRiFc&t)jOX9n7vh_d-aG)(ng=R zhTXm2KwHj%z10VYmKG_j-cFv>s zlCPpICk7>UL3D6Q33@y%a=P&c7@5kWPb>E*b}XD)6MM>4vVII_j__7{s{Ki4`Ix`H z$)SgT+EXhIaPP@fb_|+hN3NGn-G7u?QP${A7IiS8IvsEvWeKc@TJa8cvT(-;o=18o zv_~L9xe;&RE2Gf$uQMT?XIgxeV4m9 zPmsIx`C^uRk4_WsnvV_OZr*2Q~N9=`Wi{%$(@A6ea01kajo zI!emf+|>4=>8443Zn_vEdb{ZYQoXmEzKD6@v|)PkX(?+?GvHR! z5U0eIESv`mvP@pbJubF5vrmAQo!VXa=#A9oRRC|g^-5ANj}s8Da4_?a+bAv$G_O0L z4)##NndV=3dBvGyaJ(X!=0s>t`_=9CrN|%6`K~*^2DS z)?mZRMR=yK`vY^uqk?sr5) zF;1g^Z=FCWU`4x{*Ex!IeM7j^5vnrR(X~M7st>C8(;J!;9fAd0jR?}dS2C9$(3^!$y;%zTpLi7IzTb(3}IFFs}Cy=yk7NIyihPBg9x_KRci0emfGgaQBQmDElDAn^X6&5WL>l_2&kBH zW}+<^jVjk3PCOKD(B-G}+KzJ~Nej=}no%d|uRDw#Fcq5*1Sc;#yLxRt-rPc-e~Y@w z*-Ow1!rsp$QkjLJ&7M>{KfRYYoDv81>Onb&6KAsU$y1`l);@P=O)`-e;{=#fHM8ok<{y6Ig$Lq7!?)R6{2JJVV@-s@BC%|>;DRLclD z>~lH5(y=*|d07|8r8j7F8!wR@s&J;1-U_YJ#5rJ8XN#m$fmf$r;L)s%PRF}-YW$bx zmBFWULd!hs>`G^Jn*IfJs?$2vgE6DiPfzyviQa}(I-L!bAC+qH(;L_nD_+rw=J{@V zY>IW70MX(b=lklMZ>S@pFR%a9139i=c<3#qxY(W%Y7EZ`&x%GOVf?U1@p!u;7EY`V zH`)tgwJYccF@VjE9yc@85KrJ&M(kiUek+BfXJsEZGa6YPjy3X+XF!-Q-K=PJqMm=q zCA*v;ezK#^N5^p$E2HtKU*(e8nlM#PaICA0h470kWE<<#yJFn*NF*8;owG2G3$BUB zLe=zxAXx>ETQGBBwg$&74A(ep6YZHRW6?+yze!UYwu&d&!AKlxL7;OxZh8$|+(=#~ z^Ua!>(fS4uqYER|p;}O7tDGIG4p&8^tFqOVNAOc9D`KH~v(o7WySxUS0d>sU@)^_T zo8=00EX9ti?TW^5q9z(yTkl3!hU>x&E2AFb=?VO157Ox2s*WWq#xCW{iihElScqGW!2(Bh{!ygBG%+L?xjYfZ z?=Mw?)pAL78xmgA07JqxZY(rXzl<}gH|v;yi)S=7S?sYp8&_7_Ma?4hyEztqYAIBO zY}HE}k9-%M+pWQ+<%=p8Id1jzhbiC9hwfMyoU?fDbm7F-w%&`&8%8wtPEg+~Ua&z}{b-^Q9YvOXLSksI(zIL4N{g@p?)@cy(C zeg$e2G6D2P%!~;XvwnEc0P%zoqJATZy^j0pM63}JU$?fmof*HL>I(GU{xG}S?2~M9 z4qxMkt7=?vF7EWkuBRW!!x`V3ZYLkpb?|;1I@FK*;C#L9B~6T8KSaB|`G5rRh2G%S3)i zyi0ftqQ;s|ug-d}OPxiSs}r51B~3eJy`J-qQyGr*8=FoWql9_1vD9-a)f`v+ z1?0ID%O=xBpyhhPOY|cTj^b3|tZ-!<9fTe!BSY<*H*_a`p?Qq;I7sTqF3im0hm4c# znItpoN)kDU-Nx!vrH+gj{PMWF|Fbzddway^>c(E3RBmp*DpYr3n--5I8nJb2gs#}9 z1+c-42Y5~hH{uCA<2u-UM`TSXG7Uv)Od7sh;iel*NRd4 zP&&KowPL!DOiAkAhu*QkUGG?iZ9+pG&K+v(svMYn4ciV)?&^xxs zm{&Gs>P3uAznKdMVK)=0#=(X6d`p_~;>XFVMsGE-n{h@q=a$mlT4b$;gITV7ke604vu!dD&J`D1rudE~zwMV~23Ufh*B~w1*58ijP)pu?RGWE6acA5RBnuJVpmKI1}Z= zL~Fd&SiLe_AF}Cun|>O4E*;bb%FSub!l`B*eutcYIy$3-XD>`YJZ=rYaP086wh}dvvV_;ff!ThP#&K9Uy z9jHkJV$r&~D*RA(pe7tJB@|hs$dcL!)`0ju^+xhh;9Q*i$JKV5oUy)MTIGUB+nvsbv_E3;?eDaSore9&Ib_~h>w6*_J7oV zsID%Wpwipqi112*&-IjAPvG)KOkQYJnmmO;HDi*GNnMMmz97#7PevvK>Y3H1q}A3G?|q z+Bl?qKB#ldaP@1(_5KlL${!hCv-8K*2|BAad(i9-k3Q(W+DL7@7TtnhuJ`A1+c7e{ zd^y%y)FbFhr%M`TguCKW#{tJr;GFXLf%19tg0sq}SJHQD;+meQPIy=qeE^&)tPxT(7tEVi zUP&AWr4J$7VU!nH3m43tJ7fCHuTHgchV-5K89uH*2fV49dU}fSAllMfdwP}vt^^zm z7`m;ervdQNJMaZBfGv0S^lS#ad{a+P2jDe7=;`SKeC>xlJ@lDK^1KbFh zi%0)91AYqF0oaKrCc6MP;8E-XJf|}skA@cmK7uFdD*z*SNuU8R3AhpPA;8Um`FInf z1MpvfU4YNv{gHzHmbDk}u@nOyj<=*L0BZmn0Gk0f0{#$iGvF@34!{e43x2>Qc&W7D zFg(WxSPVGudGG_C4%h&A6W~U`-FO{%GvH3VN8AC}iWk(o0B5}femt79elPd|AAK48 zfUoQWKj7i7fFE!x;AX(;KY<_cZ-8BZN4^IB!|_HNU@_qM*TE0?+#BEryrdKSfL(x_ z0qNp5wg7XkTxjL2DaaXeFF5(Xw5pTfWR>PO~T*ijgW~xvyLj5 zebnId@{hP;K$CUuiBnIXIBY1e%zp`B_su;$P|dkWW*mQM$fa+(wx%CdaBZKNdHwr# z=b&kB^A@0YA@j)DL~Irzh#E-{92mLH!Ls?di#-{&Dyq=ef(k6 zW6T)!{d7I~?Lv&n4_)%R9Ql)gFWTDEvli?Qf1kMHpGwrzqfGcB1*3k6Qy)kD4%FY{ zs=vdjzXkQB$OU7erz5}bD93+WP(KgPqkZJ!|GUG#2lc1n8N|0;^_@=r0o12Z|A5Os zKXm*v2>1r%mR&CXryTxCs6P%lr`o08rH+1;sJ{>oy+7gN-{$bgQU4L@@jO$;zKgh8 z#XsslM18=lzc^FBMe3`}`aWNCLPW=JY=i=Q4dhgruZ=ZIjeh}i~ z5!C0o>>J?NHwpFkAlK5DojCk`i=6sO;zthl?SIt2hk9T8QNJJc0aHKIeyKmrtiLql zpFOC5AN)7F^t;~C?*QsUm;?Os&miQLb1)as)7p-GeKtD&nS}aBQSYaJCF*~U`hdxA z=pUE*m1cdPYDfMpsQ(1~^!l;We&6wq{##IAfH!?Vb@6}X@b5wWe$?-F@$Yo_51{_$ z=X!b`bJcHg>IY#i8-s67D0S6Ob?PUfelF&?ajyE)o%%}DUyQkKq^o|YQy)it73M%c z{##IgIp)TPT=qTS*tZ4spC6=t59(X-r6kw6_`mJ&A3*)bsQ-#fzrl`vgD@8#z?}T3 zi~na1|0L9ZdrwbK%vE3S)K{YZkEp-XCI7pQ{5a|t?L~ff@n7fg--7z5QBU)r)Bk;L zaO$_9ehStG8(j6xTu&&v-h90;(tkJJBeyJ&TVn``s}z3+HuUgC6FPnNqsz;X7mi1H z)^)0$=Ivodc?9n1Li)tjcR)Yfk%?B{g8o)ttQ3#7AhPd(BY?=k?EpZ!hc5j{7ow#< zl1mr0zppjZ7U47>>0OLJgsL@X{$i_7lhsBzZjWJ(s|-zCWuhhdL{I#55sv=8yuS3n zf9rvb!<2+lfq@299xt#=V1vNh1#T1glE8lm%)eamj}llWaHYT|f!`PSGl7o@d{JPR zz#}<1S=MNQa|B)>uufpJz&ix~MBpz4?hyE#z`X){`LEfH87yTzUZ;5KD?H^jp7JJ7 zxy@64%~SrwQ$BvZTc2W2xx!O!@RT=r%J+N9TRr8cJmo)m%H5vwpljUvjrWunc*?e? z9QTx4J>`2nQxM;^!`EPeg#tAYHY@e8!l*eDbCNVPNC;_eri=lUEtonguuxHXA4{+aJj(M0N$z*`0WNZ?k1y9DkP_>RDj z1ol5o+7~!N;ADZb1uhY|T;OVf*9ufp@XbSysJl5cXPzAxg_YXq!1&2UO9=!U>Dyec9DK`Ex})ob)2R15hL+$9sWqZUQcLz3vP0(LQCg2jeh_)+4TPn z(;sg&Nxth6hF1Vd{vE>_*{TP2aR=(BQr0`!+z&Z*F6aB3t6oSv-a7&Qrt#7&M zX9)dMBNd*{LJaDo;Eh6GD)c(9Js|W?j8k-cW`|qa+mb%Z zgg&6Etv7_eaJ)iLf6zsC6Md7=pRCZk2D z!)-|D+k{@+ZCxSs>m`o)%n$T83w@W+>-p)&LjSEPNm{MLeHz0I|j^-JKh>9YfP z(x*Y@D?NX|A^0^Od=AzHr03fUmEbCoKU(l}7AXXu>EZSq!IxAjJfG#^_5#7@ELM0v z!^3S{@JCT1!o_EIfHw(#`UQ-(E>^(W416}b9us=&QbqWw(ErwlexDEi9g$PJN(tbz z65RI1`X*budBEr3fMLLG(x3sd(GLMVod8Tp8icqlVmT)|>oQ$Ci}8ak@A~2fOe6to zh_zYrxu%~7`eSs#fFZ``S^H}ga-_uJRX+6B2>r-fMbBqaxV_JZ{^vsfsraAI_(1=( z5Bc*D*=2qh}$cG4~R??T zxJ&4_`_Mlv^v_DWe1;947X|-#wGyEF_wRyFpRe%znF(%>y`K$ zrIpuw=-&r^s7n)7IDBCCxEkz(AMJym#`rvI=Q1UiKNG<1Qo&DOq3|+YS(gKUbe|#4 z`c~Cq9V_(L%LMXWsn{s=dY!N7?-u%xFH;zOtn?V;HB|;a=Y#)~4?g9C?_zwOHACVv zAWaOyhCbUk9pQtY>Vu!}gJ150U(5JB>lTTJTSTAl`q2N}2mfo}3ygh-_S|zm^zSe} z&-#_j``QovaqyDO4?}$LMU2n0z99>iQkn0*D)<{ORGR30hwURL;)7o&ay}P5`7=F; zZ1ti4o)3OA@Z_J}o_YKiKJ?G{;9vE@|Ap~+){hn{dv(4&B9Hu;XZ=R-+RqaiuV~Hx zvw^2PqxX-xZk`YQWj^?;eefH6@HaC)&wAf8-hUzZ?}`7lUC;Q)c}eL1B=oW@us-ym zKMdznuGH0ws$=o-MN!MPLshjlUiP%d~znX8`HBoy-U9>7xXV>5@_C^~oMOpeSteT=?2+Kl&=lmnJ zb|@ALt+nx#UTm$koL-l(YZCSKYr$fa@O*x4+(pXI@w*=A)$aw+oA~-YC;fgwZMe~5 z4xcxZ(OSjAU}fcn_Uy&;XI7Rkm~Y!f<0mN|zqdiM@=R1b2YEvzE87IcCQn$JFOFm- zAMYl2`+?sh$;wu&*z{W*c=Qi`H(oEv#&nkA5nBDqNjAzUit-RIpJd}a)5Do@1HFcl zjbpNhLz|=@?9Iwl;>YB?osz97i2}zg9aC$2zq68!T>>KeD=gU!a9&4Juj2U7@>e1l zL7AP*(LrSn-R~Iu`j+15!P}6wep|q%=gGa5Zs9Hprv?3l?UnRB63z=D!e8U00 z8pFlxX}educv9O@tXHK=sZ6bSI}xw8<9JsCFD%tJ$lC-kTb`S*i-v0K)#F(k=L;H8 zZ9GkD`p7`z1uHg$@;$x_g|fYE&t5ovUeFHCpJm%9;aJ%YmI<2vJ` zvu7^~R@#-*XW;8dEPK|4^QX@%pXvS52zo#~V~(SpT~!;Y;n%R}?b%p3oQGg z*en8`#`_c#Y5HjlYs2N)d)V%67T;BI5Q)fW^ahwus4Jg467dv#I1Vk51Eh6zkC=r8 zn7mNe5Rb`B6$xLV-oYiK?B$7w5u6$8F_|{Nw=3$S5gS-UtZg+U;*F(q=9bTxX-_Dc zP*mb5KqD!}4#S&pjc5(ut5TC_z>TWmuLyuNnX{JT`+r<=T%o0BOq;TX(*&oG)f1eu zc)n^aCQt{N=`xCH}7&aRHugfTWzjjxKz5SWpuUpaBaa#Up3 zT@O>`iwHTx8Ja3UoMOi3tUh#@Jjtiuxk0(e~bDGvc=z&Qu!#ho9EX8|2v~-cNpD}#;G-8(@g77?w4PsKUm5c{(cz?Q5Q$!4 zBY%TGBM~oO)rX7>Wp*3Z(Dk)(H~~W^615Rf{8E^w4NfnO=s<*_UDenq0b>)aUS(IW zTxGiw!6diUW`pXT2*;Vyxz*7Ga;W+WCs*59Iwa$Nr!q5vI)Y&j#F@qV#uXX0I3caD zs}i+!HR$5Hu;f;{wW+7@ZV4tSeDN1{4m8@h!u-+&e2Yz;5|PYd#086Za0b$ z%rWc-r?t$e@=OB`1sNb?#rQs@j9pFS)V?LUail^A6K0a`dG46tQGn zE2!x+%E!_MnA=cuy2YaPJ&7l!&=MOEs;{kv1<^R^0}RDL5eB4HL<1S|syEsHIUE93 z9FgNQE_H3d=XG>xI7}6t|N8t^BZ_cCM@yRjr^2t{Nt#fg978$S$+-In&$wuQ{oId+ zx_#X)j-_2!DM~mpbK2L>1!=eqpJ&lUfZEpl`g3eL-XN8A`}#Q}4fS(HAmPiaKYiRl z&+uq|{oIa*R|=ojU(;#$HPq8HLAtD;3v!_Fd-WHzRfijrt@-tHNgC?sl63oC`&SG9 z3=ycGbJ9>h7e)N^?3S0m2{`gefBf+ka6^hO^U``~+}Ckq@&^K{M#Bb)Crw`kG)17H)>rfEvW7Q!`1R*y8Wwz2b1JCY)mS=DH`~{r4{307Rq&T+;B)n}=V2uBsuuLug*!_UYJ_NOb#C$RW5i+(XI1xU}Ci>Q}fqV8n01 zZK_7Y4VqA(mwzYlX8!3Aeho_x!N1qTub(T@FyP_$+W!{nadgQ!fJpUoJq>qKDHHFi zlqqXFx=?{nw;X=`9MPID$p0C5$^Sac^>ac^!tYdohOPkr&-|nB-=?wW@IR#Ln(kIG zARQ}d&>6ovj=uvkv;9pEE51$NSFl(C=fAdFL;CF*lV3kqnG$~eIk*;}`7|8j;n$z% zZ@yP?Xg$6Bx_m15NtU)>pU<}mzivmak-A?z~r(0%8E2 z&j<0R_0jVWK1OtOR~+*H=L!~6a2l6xSEG)`jkaCm2o|@glKwnbm6Waep5Xrjf_ui* diff --git a/tests/test_investigation_record b/tests/test_investigation_record deleted file mode 100755 index ba2880ba891764294db9386029afaf85e4bc251a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17392 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 diff --git a/tests/test_investigation_tree_builder b/tests/test_investigation_tree_builder deleted file mode 100755 index d6cd4844176447be928bb7a3bda21977ee4298de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22848 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 G(fU7t_!_DJ