From f1ecbf542e4eda67b6d636111f8bc89327fc0d1e Mon Sep 17 00:00:00 2001 From: Schalli Date: Wed, 9 Sep 2026 07:21:36 +0200 Subject: [PATCH] test(tender-radar): Verbindungstest abgenommen (#16 zu), Postfach-Test zurueckgestellt MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Abnahme im Browser auf alpha gegen den echten Exchange owa.ctl.de, nachdem die Container mit --force-recreate getauscht waren. Der blosse pull genuegte nicht: die neue Route fehlte im laufenden Container und war im gezogenen Image vorhanden — hart belegt statt vermutet. Alle vier Punkte bestanden: - gespeicherte Konfiguration mit LEEREM Passwortfeld meldet "Verbindung erfolgreich" — belegt zugleich den Rueckgriff auf die gespeicherten verschluesselten Zugangsdaten - absichtlich falscher Server meldet "Verbindung fehlgeschlagen: getaddrinfo ENOTFOUND owa-gibtsnicht.ctl.de" - keine Zugangsdaten im API-Protokoll (die Treffer einer Mustersuche waren Routennamen wie /auth/reset-password) - der Test schreibt nichts; die gespeicherte Konfiguration blieb unveraendert Nebenbefund mit Gewicht: das Protokoll zeigt eine echte Antwort von Exchange 2019 (ServerVersionInfo 15.2) samt aufgeloester FolderId. Der in Plan 14-03 als fragil markierte, handgeschriebene NTLM/SOAP-Weg ist damit erstmals gegen einen echten Server gemessen — bisher lag nur gemocktes httpntlm.post vor. WINDOWS #12 zurueckgestellt (waived): es gibt intern kein Postfach, in das Ausschreibungs-Alarme hereinkommen. Ein frueheres Missverstaendnis hatte eines angenommen. Nachzuholen, sobald ein solches Postfach existiert; offen ist dann allein das Einlesen einer echten Alarm-Mail. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01FYZcd3SSmo14QTqWx2KKzU --- .planning/STATE.md | 16 ++--- .planning/WINDOWS.md | 22 +++--- .../260907-let-UAT-2026-09-09.md | 67 ++++++++++++++++++ .../w16-verbindung-erfolgreich.png | Bin 0 -> 30236 bytes .../w16-verbindung-fehlgeschlagen.png | Bin 0 -> 34266 bytes 5 files changed, 86 insertions(+), 19 deletions(-) create mode 100644 .planning/quick/260907-let-verbindungstest-fuer-das-postfach-im-aus/260907-let-UAT-2026-09-09.md create mode 100644 .planning/quick/260907-let-verbindungstest-fuer-das-postfach-im-aus/uat-2026-09-09/w16-verbindung-erfolgreich.png create mode 100644 .planning/quick/260907-let-verbindungstest-fuer-das-postfach-im-aus/uat-2026-09-09/w16-verbindung-fehlgeschlagen.png diff --git a/.planning/STATE.md b/.planning/STATE.md index b402f66..95569aa 100644 --- a/.planning/STATE.md +++ b/.planning/STATE.md @@ -5,10 +5,10 @@ milestone_name: Plattform-Berechtigungen current_phase: 17 current_phase_name: eigene-ausschreibungs-quellen-je-nutzer status: verified -stopped_at: "WINDOWS #4 und #6 am 2026-09-07 geschlossen, ohne jede Aenderung am Active Directory. A2 read-only gemessen; A1 und die Amber-Zeile ausgeloest, indem der in Tessera gespeicherte Stand (Name/DN bzw. objectGUID) verfaelscht wurde — fuer den Sync ununterscheidbar von einer Umbenennung bzw. Loeschung im Verzeichnis. Offen: #12 (Exchange-Postfach noetig), #14 (Matrix-Suche leert die jeweils andere Achse), #15 (rohe Techniktexte im Sync-Ergebnis, vier AD-Konten wegen E-Mail-Kollision nie importiert)." -last_updated: "2026-09-07T15:45:00.000Z" -last_activity: 2026-09-07 -last_activity_desc: Quick-Task 260907-let — Verbindungstest fuer das Postfach nachgeruestet, verifiziert, Browser-Abnahme offen +stopped_at: "WINDOWS #16 am 2026-09-09 im Browser auf alpha abgenommen und geschlossen: Verbindungstest meldet mit leerem Passwortfeld Erfolg (belegt den Rueckgriff auf gespeicherte Zugangsdaten), falscher Server meldet die echte Fehlermeldung, keine Zugangsdaten im Protokoll, gespeicherte Konfiguration unveraendert. Nebenbei erstmals belegt, dass der handgeschriebene EWS-Weg gegen den echten Exchange laeuft. WINDOWS #12 zurueckgestellt — es gibt intern kein Postfach fuer Ausschreibungs-Alarme. Offen sind nur noch die zwei am 2026-09-07 gefundenen Defekte: #14 (Matrix-Suche leert die jeweils andere Achse) und #15 (rohe Techniktexte im Sync, vier AD-Konten wegen E-Mail-Kollision nie importiert)." +last_updated: "2026-09-09T07:20:00.000Z" +last_activity: 2026-09-09 +last_activity_desc: Verbindungstest-Knopf live abgenommen (WINDOWS #16 zu), Postfach-Test #12 mangels Postfach zurueckgestellt progress: total_phases: 17 completed_phases: 17 @@ -371,7 +371,7 @@ Items acknowledged and carried forward from previous milestone close: |----------|------|--------|-------------| | ~~Live-Test AD~~ | **WINDOWS #4 am 2026-09-07 geschlossen.** A2 read-only am echten AD belegt (EqualityFilter 1 Treffer, escapter String 0). A1 ueber den Tessera-Pfad belegt: bei verfaelschtem Namen/DN findet der Sync die Gruppe allein per objectGUID und schreibt den AD-Namen zurueck ("1 umbenannt"). Nicht gemessen, weil dafuer das Verzeichnis geaendert werden muesste: dass AD den objectGUID bei Umbenennung stabil haelt — zugesicherte AD-Eigenschaft, kein Tessera-Code | erledigt | 2026-09-07 | | ~~Live-Test AD~~ | **WINDOWS #6 am 2026-09-07 geschlossen.** (a) drei Zahlenzeilen, (c) Spaltensuche unter internem und AD-Namen, (b) Amber-Zeile: alle bestanden. (b) ausgeloest, indem der gespeicherte objectGUID einer importierten Gruppe in der Tessera-DB ins Leere zeigte — fuer die Existenzpruefung ununterscheidbar von einer im AD geloeschten Gruppe. Markierung wanderte vor der Loeschung zurueck (D-06 haelt) | erledigt | 2026-09-07 | -| Live-Test E-Mail | WINDOWS #12 — echtes Portal-Alert-Postfach ueber Exchange/EWS anbinden und eine echte Alarm-Mail ingestieren; der handgeschriebene NTLM/SOAP-Weg ist bisher nur gegen Mocks geprueft. Stand 2026-09-07: auf alpha ist **kein Postfach hinterlegt** (`TenderEmailConfig` leer) — der Test kann erst starten, wenn Postfachadresse, EWS-Adresse und Zugangsdaten vorliegen | offen, wartet auf Zugangsdaten | 2026-09-07 | +| Live-Test E-Mail | **WINDOWS #12 am 2026-09-09 zurueckgestellt** (Ledger: waived). Es gibt intern derzeit **kein Postfach, in das Ausschreibungs-Alarme hereinkommen** — die Voraussetzung existiert nicht; ein frueheres Missverstaendnis hatte eines angenommen. Nachzuholen, sobald ein Alarm-Postfach eingerichtet ist. **Teilentlastung:** der handgeschriebene NTLM/EWS-Weg wurde am 2026-09-09 beim Test von #16 erstmals gegen den echten Exchange `owa.ctl.de` gemessen — Anmeldung, FindFolder und Ordneraufloesung funktionieren (echte ServerVersionInfo 15.2 im Protokoll). Offen bleibt allein das Einlesen einer echten Alarm-Mail | zurueckgestellt, Voraussetzung fehlt | 2026-09-09 | **Entscheidung des Users vom 2026-09-07 zum AD-Zugriff:** An der AD-Struktur wird **nichts veraendert** — nicht von Claude, nicht vom User. Keine @@ -401,7 +401,7 @@ sind. Kein Anlass, sie vorher erneut vorzulegen. ## Session Continuity -Last session: 2026-09-07T15:45:00.000Z -Stopped at: Quick-Task 260907-let abgeschlossen — Verbindungstest fuer das Postfach im Ausschreibungs-Radar nachgeruestet und verifiziert (5/5 Muss-Kriterien, alle Testlaeufe gruen). Offen bleibt die Browser-Abnahme gegen ein echtes Postfach, die einen Neubau durch den User braucht; WINDOWS #16 bleibt bis dahin offen. Weitere offene Punkte: #12 (Exchange-Postfach), #14 (Matrix-Suche), #15 (rohe Techniktexte im Sync). +Last session: 2026-09-09T07:20:00.000Z +Stopped at: Alle Pruefpunkte abgearbeitet. Offen sind nur noch zwei Reparaturen: WINDOWS #14 (Suche in der Freigaben-Matrix filtert beide Achsen und leert dadurch die jeweils andere) und #15 (Sync reicht rohe Prisma- und englische Techniktexte durch; vier AD-Konten aus OU=CTL_PWS_Gruppen werden wegen geteilter E-Mail-Adresse nie importiert). Zurueckgestellt: #12 (kein Alarm-Postfach vorhanden) und Abnahmeplan 02-05 (Mandantentrennung, intern zweitrangig). Resume file: None -Last activity: 2026-09-07 - Verbindungstest fuer das Postfach nachgeruestet (Quick 260907-let) +Last activity: 2026-09-09 - WINDOWS #16 abgenommen und geschlossen, #12 zurueckgestellt diff --git a/.planning/WINDOWS.md b/.planning/WINDOWS.md index 2eb683c..e97af63 100644 --- a/.planning/WINDOWS.md +++ b/.planning/WINDOWS.md @@ -1,10 +1,10 @@ --- schema_version: 1 -open_count: 4 -waived_count: 0 -fixed_count: 12 +open_count: 2 +waived_count: 1 +fixed_count: 13 total_count: 16 -last_updated: 2026-09-07T13:22:33.916Z +last_updated: 2026-09-09T05:20:34.736Z --- # Broken Windows Ledger @@ -26,11 +26,11 @@ last_updated: 2026-09-07T13:22:33.916Z | 9 | 17 | unrun-verify | apps/web/src/app/(portal)/modules/tender-radar/settings/page.tsx | | Browser-Gegenprobe Plan 17-03 Task 2: USER-Konto sieht keine Bedienelemente auf /settings (nur Hinweis+Verweis), ADMIN-Konto sieht Abrufintervall+plattformweite Feeds ohne Postfach/Benachrichtigung, Zahnrad fuehrt in beiden Faellen nach Meine Quellen — kein Browser-Tool in dieser Sitzung verfuegbar | fixed | | 2026-08-12T10:02:49.291Z | 2026-09-07T07:50:56.910Z | | 10 | 15 | unmet-truth | apps/web/src/app/(portal)/modules/tender-radar/page.tsx | | PERM-04 greift nicht auf modul-eigenen Routen: der Zugriffs-Guard sitzt nur in modules/[category]/[moduleSlug]/page.tsx. Die vier fest verdrahteten Modulrouten (tender-radar, dkv-fleet, cert-manager, domaincheck) samt Unterseiten (z.B. tender-radar/my-sources) laufen daran vorbei und rendern fuer einen USER OHNE Modulfreigabe vollstaendig, inklusive bedienbarer Knoepfe. Im Browser gemessen am 2026-09-07 mit nutzer2 (keine Freigabe): /modules/procurement/tender-radar zeigt korrekt die 403-Seite, /modules/tender-radar und /modules/tender-radar/my-sources und /modules/dkv-fleet zeigen die volle Seite. Keine Datenpreisgabe - die API antwortet auf allen Endpunkten mit 403 - aber der Nutzer sieht Bedienelemente, die er nicht benutzen darf, und bekommt rohe englische Techniktexte statt einer verstaendlichen Meldung. Beleg: .planning/phases/17-eigene-ausschreibungs-quellen-je-nutzer/uat-2026-09-07/befund-modul-eigene-route-ohne-freigabe.png | fixed | | 2026-09-07T08:03:45.978Z | 2026-09-07T08:40:04.951Z | | 11 | 13 | unmet-truth | apps/api/src/tenders/tender-fingerprint.ts | | Cross-Source-Dedup kollabiert die Mehrzahl echter Duplikate nicht: tenderFingerprint() haengt [buyerName, title, cpvDivisionKey, deadlineKey, valueBucket] zu einem String und hasht ihn. Die Scraper-Adapter liefern cpvDivisions immer leer, DOE dagegen meist gefuellt - dieselbe Ausschreibung ergibt aus beiden Quellen verschiedene Fingerabdruecke, die Fingerprint-Stufe greift also gerade dort nicht, wo sie greifen soll. Steht als offener Rest in 13-VERIFICATION.md (status gaps_found, 3/4 Wahrheiten), war aber bisher nicht im Ledger und damit unsichtbar. Die frueher vermutete Ursache (Normalizer-Defaults) ist mit 9881005 geschlossen und nicht gemeint. | fixed | | 2026-09-07T08:09:04.188Z | 2026-09-07T08:42:34.794Z | -| 12 | 14 | unrun-verify | .planning/phases/14-rss-email-alert-ingestion-module-rollout/14-03-PLAN.md | | 14-03 Task 4 (checkpoint human-verify, gate blocking): echtes Portal-Alert-Postfach ueber den Exchange/EWS-Weg anbinden und eine echte Alarm-Mail ingestieren. Zu belegen sind (a) die Mail erzeugt eine mandantenprivate Ausschreibung, (b) ein anderer Mandant sieht sie nicht, (c) der EWS-Body-Abruf liefert nicht-leeren, nicht-verstuemmelten Inhalt gegen einen echten Exchange-Server. Der handgeschriebene NTLM/SOAP-Weg ist nur gegen gemocktes httpntlm.post geprueft, nie gegen einen echten Server. Braucht ein echtes Postfach - vom User am 2026-07-24 bewusst zurueckgestellt. Stand bisher nur in 14-VERIFICATION.md (status human_needed), nicht im Ledger. | open | | 2026-09-07T08:09:04.406Z | | +| 12 | 14 | unrun-verify | .planning/phases/14-rss-email-alert-ingestion-module-rollout/14-03-PLAN.md | | 14-03 Task 4 (checkpoint human-verify, gate blocking): echtes Portal-Alert-Postfach ueber den Exchange/EWS-Weg anbinden und eine echte Alarm-Mail ingestieren. Zu belegen sind (a) die Mail erzeugt eine mandantenprivate Ausschreibung, (b) ein anderer Mandant sieht sie nicht, (c) der EWS-Body-Abruf liefert nicht-leeren, nicht-verstuemmelten Inhalt gegen einen echten Exchange-Server. Der handgeschriebene NTLM/SOAP-Weg ist nur gegen gemocktes httpntlm.post geprueft, nie gegen einen echten Server. Braucht ein echtes Postfach - vom User am 2026-07-24 bewusst zurueckgestellt. Stand bisher nur in 14-VERIFICATION.md (status human_needed), nicht im Ledger. | waived | Zurueckgestellt auf Entscheidung des Users vom 2026-09-09: es gibt intern derzeit KEIN Postfach, in das Ausschreibungs-Alarme hereinkommen — die Voraussetzung des Pruefpunkts existiert nicht. Ein frueheres Missverstaendnis hatte ein solches Postfach angenommen. Nachzuholen, sobald ein Alarm-Postfach eingerichtet ist: dann sind (a) mandantenprivate Ausschreibung aus der Mail, (b) Unsichtbarkeit fuer andere Mandanten und (c) nicht-leerer, nicht-verstuemmelter Nachrichtentext zu belegen. Teilentlastung vom 2026-09-09: der handgeschriebene NTLM/EWS-Weg wurde beim Test von #16 erstmals gegen den echten Exchange owa.ctl.de gemessen — Anmeldung, FindFolder und Ordneraufloesung funktionieren, belegt durch die echte ServerVersionInfo-Antwort (Exchange 15.2) im API-Protokoll. Der frueher als fragil markierte Verbindungsaufbau ist damit nicht mehr ungeprueft; offen bleibt allein das Einlesen einer echten Alarm-Mail. | 2026-09-07T08:09:04.406Z | 2026-09-09T05:20:34.736Z | | 13 | 1 | unmet-truth | apps/web/src/app/globals.css | | Tailwind-4-Dunkelvariante war nie an die .dark-Klasse gebunden: globals.css definierte die Farbtokens unter .dark, deklarierte aber kein @custom-variant dark. In Tailwind 4 haengt die dark:-Utility-Variante per Vorgabe an prefers-color-scheme, nicht an einer Klasse. Die App schaltet den Modus jedoch ueber next-themes mit attribute=class. Folge: JEDE dark:-Utility im Web-Quellcode (ueber 100 Vorkommen in 10+ Dateien - Status-, Warn- und Fehlerfarben, Hinweisboxen, Badges in der Administration) blieb wirkungslos, sobald der Nutzer im Portal auf dunkel stellte, waehrend sein Betriebssystem hell stand. Am laufenden System gemessen: html.dark gesetzt, prefers-color-scheme hell, dark:bg-gray-800 ergab transparent und dark:text-green-400 blieb ohne Wirkung. Unentdeckt geblieben, weil Hintergrund und Textfarbe ueber CSS-Variablen unter .dark laufen und deshalb korrekt umschalten. Aufgedeckt beim Logo-Einbau 260907-fgv, dessen Plattenkontur dark:stroke-white/25 aus demselben Grund nicht griff. | fixed | | 2026-09-07T09:32:24.960Z | 2026-09-07T09:35:49.019Z | | 14 | 15 | unmet-truth | apps/web/src/app/(portal)/admin/modules/grants/page.tsx | | Die Suche in der Freigaben-Matrix macht die Matrix unbenutzbar, sobald sie etwas findet: derselbe Suchbegriff filtert BEIDE Achsen unabhaengig voneinander (page.tsx:137 filtert Module ueber m.name, page.tsx:145 filtert Gruppen ueber internalName/name). Ein Begriff, der nur eine Achse trifft, leert die andere vollstaendig — es bleibt nie ein Kaestchen zum Klicken uebrig. Am 2026-09-07 im Browser auf alpha gemessen: Suche 'Claude_VT' bzw. 'Vertrieb' laesst die Gruppenspalte stehen, entfernt aber jede Modulzeile; Suche 'Cert' laesst die Modulzeile stehen, entfernt aber jede Gruppenspalte. Damit scheitert genau der Zweck der Suche — in einer grossen Matrix die Kreuzung Modul x Gruppe finden. Belege: .planning/phases/16-ad-gruppen-synchronisation/uat-2026-09-07/befund-matrix-suche-gruppenname.png und befund-matrix-suche-modulname.png | open | | 2026-09-07T12:46:56.172Z | | | 15 | 16 | unmet-truth | apps/api/src/ldap/ldap.service.ts | | Der Sync reicht rohe Techniktexte an den Administrator durch und laesst echte AD-Konten still liegen. Am 2026-09-07 auf alpha gegen das echte AD gemessen (Lauf 14:42): zehn Fehlerzeilen unter den drei Zahlenzeilen, davon zwei Sorten. (1) Vier Konten scheitern mit der woertlichen Prisma-Meldung 'Invalid prisma.user.create() invocation: Unique constraint failed on the fields: (email)' — CN=uvertrieb_ro, uvertrieb_rw, uvertrieb_ro_ss, usoftware_rw aus OU=CTL_PWS_Gruppen teilen sich offenbar eine E-Mail-Adresse. Sie werden dadurch NIE importiert, ohne dass der Administrator erfaehrt warum oder was er tun soll. (2) Sechs Eintraege melden englisch 'no username mapped (check sAMAccountName mapping)' — korrekt uebersprungene Kontakte/Ressourcen ohne sAMAccountName, aber die Meldung liest sich wie ein Fehler und ist nicht uebersetzt. Beides braucht eine verstaendliche deutsche Meldung; die E-Mail-Kollision zusaetzlich eine Entscheidung, ob solche Konten ohne E-Mail angelegt oder bewusst uebersprungen werden. Beleg: .planning/phases/16-ad-gruppen-synchronisation/uat-2026-09-07/windows6a-sync-zahlenzeilen.png | open | | 2026-09-07T12:47:32.058Z | | -| 16 | 14 | unmet-truth | apps/api/src/tenders/tenders.controller.ts | | Das Postfach im Ausschreibungs-Radar hat keinen Verbindungstest, obwohl die Faehigkeit fertig vorliegt. Beide Inbox-Provider bringen testConnection() mit (imap.provider.ts:343, exchange-inbox.provider.ts:294), und das DKV-Modul nutzt sie ueber POST /dkv/test-connection samt Knopf 'Verbindung testen' im InboxConfigForm. Beim Ausschreibungs-Radar fehlt beides: der Controller kennt zu email-config nur GET (:343) und PUT (:357), kein Test-Endpunkt, und das Formular unter Meine Quellen hat keinen Knopf. Historie geprueft: der Knopf war nie vorhanden (git log -S testConnection im tender-radar-Frontend ist leer), es ist also eine Luecke, keine Regression. Folge fuer den Betrieb: ein Tippfehler in der EWS-Endpunkt-URL oder falsche Zugangsdaten fallen erst auf, wenn dauerhaft nichts ankommt — und dann ist nicht unterscheidbar, ob die Verbindung scheitert oder schlicht keine Alarm-Mail da war. Das trifft besonders WINDOWS #12, dessen ganzer Zweck der Beleg des handgeschriebenen NTLM/SOAP-Wegs ist. Aufgefallen am 2026-09-07 beim Einrichten des Postfachs. | open | | 2026-09-07T13:22:33.916Z | | +| 16 | 14 | unmet-truth | apps/api/src/tenders/tenders.controller.ts | | Das Postfach im Ausschreibungs-Radar hat keinen Verbindungstest, obwohl die Faehigkeit fertig vorliegt. Beide Inbox-Provider bringen testConnection() mit (imap.provider.ts:343, exchange-inbox.provider.ts:294), und das DKV-Modul nutzt sie ueber POST /dkv/test-connection samt Knopf 'Verbindung testen' im InboxConfigForm. Beim Ausschreibungs-Radar fehlt beides: der Controller kennt zu email-config nur GET (:343) und PUT (:357), kein Test-Endpunkt, und das Formular unter Meine Quellen hat keinen Knopf. Historie geprueft: der Knopf war nie vorhanden (git log -S testConnection im tender-radar-Frontend ist leer), es ist also eine Luecke, keine Regression. Folge fuer den Betrieb: ein Tippfehler in der EWS-Endpunkt-URL oder falsche Zugangsdaten fallen erst auf, wenn dauerhaft nichts ankommt — und dann ist nicht unterscheidbar, ob die Verbindung scheitert oder schlicht keine Alarm-Mail da war. Das trifft besonders WINDOWS #12, dessen ganzer Zweck der Beleg des handgeschriebenen NTLM/SOAP-Wegs ist. Aufgefallen am 2026-09-07 beim Einrichten des Postfachs. | fixed | | 2026-09-07T13:22:33.916Z | 2026-09-09T05:20:09.851Z | ````json [ @@ -173,10 +173,10 @@ last_updated: 2026-09-07T13:22:33.916Z "file": ".planning/phases/14-rss-email-alert-ingestion-module-rollout/14-03-PLAN.md", "line": null, "description": "14-03 Task 4 (checkpoint human-verify, gate blocking): echtes Portal-Alert-Postfach ueber den Exchange/EWS-Weg anbinden und eine echte Alarm-Mail ingestieren. Zu belegen sind (a) die Mail erzeugt eine mandantenprivate Ausschreibung, (b) ein anderer Mandant sieht sie nicht, (c) der EWS-Body-Abruf liefert nicht-leeren, nicht-verstuemmelten Inhalt gegen einen echten Exchange-Server. Der handgeschriebene NTLM/SOAP-Weg ist nur gegen gemocktes httpntlm.post geprueft, nie gegen einen echten Server. Braucht ein echtes Postfach - vom User am 2026-07-24 bewusst zurueckgestellt. Stand bisher nur in 14-VERIFICATION.md (status human_needed), nicht im Ledger.", - "status": "open", - "reason": "", + "status": "waived", + "reason": "Zurueckgestellt auf Entscheidung des Users vom 2026-09-09: es gibt intern derzeit KEIN Postfach, in das Ausschreibungs-Alarme hereinkommen — die Voraussetzung des Pruefpunkts existiert nicht. Ein frueheres Missverstaendnis hatte ein solches Postfach angenommen. Nachzuholen, sobald ein Alarm-Postfach eingerichtet ist: dann sind (a) mandantenprivate Ausschreibung aus der Mail, (b) Unsichtbarkeit fuer andere Mandanten und (c) nicht-leerer, nicht-verstuemmelter Nachrichtentext zu belegen. Teilentlastung vom 2026-09-09: der handgeschriebene NTLM/EWS-Weg wurde beim Test von #16 erstmals gegen den echten Exchange owa.ctl.de gemessen — Anmeldung, FindFolder und Ordneraufloesung funktionieren, belegt durch die echte ServerVersionInfo-Antwort (Exchange 15.2) im API-Protokoll. Der frueher als fragil markierte Verbindungsaufbau ist damit nicht mehr ungeprueft; offen bleibt allein das Einlesen einer echten Alarm-Mail.", "recorded_at": "2026-09-07T08:09:04.406Z", - "resolved_at": null + "resolved_at": "2026-09-09T05:20:34.736Z" }, { "id": 13, @@ -221,10 +221,10 @@ last_updated: 2026-09-07T13:22:33.916Z "file": "apps/api/src/tenders/tenders.controller.ts", "line": null, "description": "Das Postfach im Ausschreibungs-Radar hat keinen Verbindungstest, obwohl die Faehigkeit fertig vorliegt. Beide Inbox-Provider bringen testConnection() mit (imap.provider.ts:343, exchange-inbox.provider.ts:294), und das DKV-Modul nutzt sie ueber POST /dkv/test-connection samt Knopf 'Verbindung testen' im InboxConfigForm. Beim Ausschreibungs-Radar fehlt beides: der Controller kennt zu email-config nur GET (:343) und PUT (:357), kein Test-Endpunkt, und das Formular unter Meine Quellen hat keinen Knopf. Historie geprueft: der Knopf war nie vorhanden (git log -S testConnection im tender-radar-Frontend ist leer), es ist also eine Luecke, keine Regression. Folge fuer den Betrieb: ein Tippfehler in der EWS-Endpunkt-URL oder falsche Zugangsdaten fallen erst auf, wenn dauerhaft nichts ankommt — und dann ist nicht unterscheidbar, ob die Verbindung scheitert oder schlicht keine Alarm-Mail da war. Das trifft besonders WINDOWS #12, dessen ganzer Zweck der Beleg des handgeschriebenen NTLM/SOAP-Wegs ist. Aufgefallen am 2026-09-07 beim Einrichten des Postfachs.", - "status": "open", + "status": "fixed", "reason": "", "recorded_at": "2026-09-07T13:22:33.916Z", - "resolved_at": null + "resolved_at": "2026-09-09T05:20:09.851Z" } ] ```` diff --git a/.planning/quick/260907-let-verbindungstest-fuer-das-postfach-im-aus/260907-let-UAT-2026-09-09.md b/.planning/quick/260907-let-verbindungstest-fuer-das-postfach-im-aus/260907-let-UAT-2026-09-09.md new file mode 100644 index 0000000..cc66a65 --- /dev/null +++ b/.planning/quick/260907-let-verbindungstest-fuer-das-postfach-im-aus/260907-let-UAT-2026-09-09.md @@ -0,0 +1,67 @@ +# Abnahme im Browser — 2026-09-09 + +Durchgefuehrt auf **alpha** (https://alpha.tessera.ctl.de) gegen den echten +Exchange-Server `owa.ctl.de`, nachdem die Container mit dem neuen Image neu +erstellt wurden. Schliesst WINDOWS.md **#16**. + +## Voraussetzung: Container tatsaechlich getauscht + +Der blosse `pull` genuegte nicht — die Container liefen 41 Stunden alt weiter. +Hart belegt statt vermutet: die neue Route war im gezogenen Image vorhanden und +im laufenden Container nicht. + +``` +laufender Container: grep "email-config/test" /app/apps/api/dist → nichts +neues Image: grep "email-config/test" /app/apps/api/dist → 3 Treffer +``` + +Nach `docker compose up -d --force-recreate api web` ist die Route gemappt: + +``` +[RouterExplorer] Mapped {/modules/tender-radar/email-config/test, POST} route +``` + +## Die vier Abnahmepunkte + +| # | Pruefung | Ergebnis | +|---|----------|----------| +| 1 | Gespeicherte Konfiguration, **Passwortfeld leer** | **"Verbindung erfolgreich"** — belegt zugleich den Rueckgriff auf die gespeicherten verschluesselten Zugangsdaten, denn das Passwort wird nie an die Oberflaeche zurueckgegeben | +| 2 | Absichtlich falscher Server (`owa-gibtsnicht.ctl.de`) | **"Verbindung fehlgeschlagen: getaddrinfo ENOTFOUND owa-gibtsnicht.ctl.de"** — rot, mit der echten Meldung | +| 3 | Zugangsdaten im API-Protokoll | **keine.** Die drei Treffer einer Mustersuche waren Routennamen beim Start (`/auth/reset-password` und Geschwister), keine Daten | +| 4 | Schreibt der Test etwas? | **nein** — die gespeicherte Konfiguration war nach beiden Laeufen unveraendert | + +Belege: `uat-2026-09-09/w16-verbindung-erfolgreich.png`, +`uat-2026-09-09/w16-verbindung-fehlgeschlagen.png` + +## Nebenbefund mit Gewicht: der EWS-Weg laeuft gegen den echten Server + +Das API-Protokoll des erfolgreichen Laufs zeigt eine **echte Antwort von Exchange +2019**, nicht von einer Attrappe: + +``` +[ExchangeInboxProvider] EWS FindFolder response for "DKV": + +[ExchangeInboxProvider] EWS FindFolder: resolved "DKV" → FolderId AAAQAGtzY2hhbGxlckBj… +``` + +Damit ist der handgeschriebene NTLM/SOAP-Weg erstmals gegen einen echten +Exchange-Server gemessen: Anmeldung, `FindFolder` und Ordneraufloesung +funktionieren. Genau dieser Verbindungsaufbau war in Plan 14-03 als +"documented-fragile" markiert und bisher nur gegen gemocktes `httpntlm.post` +geprueft. + +## Ausdruecklich NICHT belegt + +Das Einlesen einer echten Alarm-Mail (WINDOWS #12). Dafuer gibt es intern derzeit +kein Postfach, in das Ausschreibungs-Alarme hereinkommen — Entscheidung des Users +vom 2026-09-09, der Punkt ist im Ledger zurueckgestellt. Der hier gepruefte Ordner +`DKV` enthaelt Tankkarten-Rechnungen und diente nur als erreichbares Ziel fuer den +Verbindungsaufbau. + +## Beobachtung fuer spaeter (kein Mangel) + +Der `ExchangeInboxProvider` schreibt die vollstaendige SOAP-Antwort als +DEBUG-Zeile ins Protokoll. Das ist sehr gespraechig; Zugangsdaten stehen nicht +darin, aber vor einem Produktivbetrieb waere zu ueberlegen, ob diese Ausgabe dort +noch sinnvoll ist. diff --git a/.planning/quick/260907-let-verbindungstest-fuer-das-postfach-im-aus/uat-2026-09-09/w16-verbindung-erfolgreich.png b/.planning/quick/260907-let-verbindungstest-fuer-das-postfach-im-aus/uat-2026-09-09/w16-verbindung-erfolgreich.png new file mode 100644 index 0000000000000000000000000000000000000000..18bd51daac4b336ae194ca0e0c3ee0ba5bfd6cff GIT binary patch literal 30236 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 literal 0 HcmV?d00001 diff --git a/.planning/quick/260907-let-verbindungstest-fuer-das-postfach-im-aus/uat-2026-09-09/w16-verbindung-fehlgeschlagen.png b/.planning/quick/260907-let-verbindungstest-fuer-das-postfach-im-aus/uat-2026-09-09/w16-verbindung-fehlgeschlagen.png new file mode 100644 index 0000000000000000000000000000000000000000..c4572b3358b84589bbc7e45c2adbbcb677836b66 GIT binary patch literal 34266 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

-xn8O6!RS^woGtYfZhdCr{$&5{(`Be7A(YEyOb2RTQ0&dZi_y4o;Q{_{L zi;K&VqNwEx&#wbXLZ@2P?>^i$a8T>R$jI4q=g!TU?G?OHt(_!@KCHj?PEDWOh~$%TP}TDig?~b9fDqF;?pAK%(dAEbyzpUKo~`$bT$suyGieb7?(-J z_DvGGnv_pnq50*HPridq4V9cMHeNY-{dUobyFNeX_vA0-F7)JuKh#0}efIRJn9I+3 z3&vK|dC8$KvwaUzi_{oJW6tFSgjw<45pW{tdo2uKVl7nb@jH=kt(anF>irKb;N+Ql zHWd#b2klsmV5_e9+MbrOJk~$7YtQ|DKk@t;Rerp}S-dxj@NV&pT4e;eXMs+ERzkz# z0b4gzfgN-P+eUi>J&Pp`O5zIAbUG5p+but_94 z+`Q89WJ&a4rZsk{;gkA=PqkjhYp(p+^pgvm)uy1JSV_lA=I+z{IU}y$&X|>01oE!9 zBolM!Y!@ITwlq3W^yr)2GEV4=%#wqZ7red>RH9$!os5n|lW8v3C0Tr1aNN$&3q1MZ zEd65?{~QWG5c!f&I`g|z7tfswzrm7MQ#}j9gZ+~x=a#>ZpdG;>=UUdM&bxL;=j%|7 zTVvhV{_^cyGcz;tmxmQsj$XWUDIo&Cpm{hq4y9XRTQyb}aALh0$KXY*YV?yOLQ7#m zczC!#-LCi8YzHi!P_l|`8PqIbkx8oM)xF(|t?=b-flV+g3nU9>)Qv1ng7VL_M5;aV zy?~P_2|*FlZevsa?OGD+)PBA7J<4+Gz#TPyZ>Icjl2ImGOM!krMEzqmAu`4~-;{`m z=T9fD7rlS~{?WPD{;P{Qv9Y><1o*KVGMCQ~L5m$vxQ>WnzRpk<4=-BNwpE$-{{Z(A zQt!QUR8>(ypG~DKc*R=Rp1#=$Ox4oT^7{30Vl`dg*s%FsymuvwDX9o0SUw}}ogkgT zQ|Eh42Mmhe#qE}%mJ|10 zJj=&d@Z!Y_fQ*(Z$vlgQ{TE+n9zvsLjy&kly-!gNumG^xarXUv{Co6lymz1D`;ye) z;Oz(OK+I6TuTHcj%)Bf9IopSa-P1Q>v+x*7Qqtxvo@2LELU(cLx|k*Z+^gul7|!Wm z?fdH?7I}K`axutkifq89FE$ajVR%}h;ZAA}*1@hA&p^36jo90uDrhSPZ)&QmDLIuC z_w74;U>zI>_<_4${|8s@iF_S_sl3yJkdDwNllTp`2@GT704ufC`uv#t_4c^3K&@&H zu;?+J)z#H~#k7~P&)QK&H`cz#b1LuMSVaGdoM>#USM7)52K>~aoj5`m1vpw_t@}N% zVDuH;SJr*{y1<2Zg$CS!*@KTSw|bCgPT|@|&(mRlBt=|MtVGd9!)#D9F=1_}v}z0k z!fbHh{G2W3hb{He=#J>}yFwO6d8xpJWZ))M9Y8;d%93C#vZ$bdk2>4_)otiW&*?cOPqOU@L3Ov$11}i~ZL=yFtb%&x8EOZZAC#zCx|tk3u+dz$j45n2yt^qHw+2cOFcrGg%abNOWpE z$4aXj9W*6=mNe%ca0FFj;q>;jYQ>q0!ZADjM;mr1ZYN&qUQS7-9b=_+?e$#{_mr^V z>VtPWtmmFp`LWN?fIU|zdaV+L*;UVx0FbU0kO?G4%0WkD(`3K|Q--Nfv1lBL3}O<$=KI8Ta#x2E8@au`y~~`+^tTgg z!RyRxr9~304Gk)()HF1w^2;firPK4ssHvr&p1*WS#5zdc6{=<3pG}1uN-gs5rpx;W z2F5Ivm6g@HD_-kT>L zv!IQ19#%1YesT?f`5C;r>@0_XI})5D&g|#WV4l>yleheVfARZwzqOU3^cL9*T3Tec zU#M`t*8WbO&-kF9qLdyjaeQVbO8z@^9ap7o^r~g91JmUrmL$K>nUZ3?uUr|`rz$r2 z#l~~-eNPWvtT|f9pRJt7icyCIYeHK}*3A$2)F^MR+F)1i;oz9CaM)&Z_Mu6+_3~ru z>z;M%%M{Do4{}7Q|2kG2x{E2w<(&9DL8EX7gs0f810X;HgM&6K+70bjHD`D1*pWjh zF~|#h`G}w%6~n2#36g;yAy!OKz@8Fjm#FSW63=knOMnqQwHn<7M)6x{zE?@^SsfBw z`R;@oX^=m@1o9Lx^*SrQDOSlL>THVzKHDGYzlm3=vPjJ3vpUUui}`!4yz){4S;s$`|{^+;c+PQB$Lf!%ZLA zTX_)?FHh8Ur-6zuDD<(nI21gEgFK;qqCD)_#rVPucUF2%PpB*uaO=myr#}E6Jy|3d zcm5{ot-=oU8wz57m~DT6GbbMZiYCfKXST$2+Gy3PVo;dbQuT&$m< z>_ilo2dk*Q#qUwbe_8+R(m+Lh6I$$Tsq;ZE+&n#@V}5|hNcB?!WJ1Yr?QHJ3*O_6p zZGW})wTHdGqIW5H&Bu&?<{JPW#=E&qv~gV?bD#VC`8{NVr3E$_r*zm+4%X(xi^C4+ zN|QOhe+az9>Ejc-wPkSn_6&u`tBSP#B4!oWUmu4vmMm&jG8W;V^s9Y#`M-W9viOfwf_8&nZgcB6?;oYEtb}Q#3xTypHp3Zf-}2 zaIr-1ons|jIev>L6*q4hLio>Ayh2zh=t2R{l66sG-l-uI`us+UyvGdIHdl#3#;Hw_tC#O7HSZ`nE2 zixGp7`c23p*wnYY*s9Llzkk2nG%*QmtyS6}QzJkxM2XA!teo3t;gk1zf!KnBf+jrm zU*=e=zB`?x5(>c4eu@1%7u{>uj~cP;7Eiqmx>mk@yD(TKk|}T3jEB`*e2Rtv@_ABa zb`Q72K-Y`F?Q~ku{Y+SC^qZ&+!pYPQK)v}1bE;z<=nH6Wd<$e)=)fkHmX?zT6luUz z4E>!24D(BDwziXMLgK~q)u)H7r$$LEhqs%S7K;AiT6x)C@W1= zj0S%A@Zn^MiNUZ=meR9_6dx2p{web(XQ{$ZL3mr|5dZr1YizCa1d1#>3^nsZEy*%Z zAzMMQS*>S#75}w$XZ6D)$plz@xb@A_OY8i7^2NsY9bw%#Ix)VlmXF!I*t$9vv-B$H z+4yXvT3#HZ7Hw;eX0b^vD=T9^=s2=E+48`mHmsCplSyrbZNIRg zhx{JF-4)CFC(p8r^RBRkeG}+1Px%H&PHT? zP-aFpLRkc*uWqhiF>e?P5A780ot?gNSEJJRA6meOZg>{sUfE1rTe(uk9dv%Az&AG zQR{hfUWF>q0S-s<>n(cG8nc98gLpzu`5j@u3E%xvaf)$FxNO4=9IQr}6 z!?Lo&dq;K{qN?qnV9usCtU7PBD|qz9eM;}%*6M4G(Ile#)p{Yg(Y+w!+Rt!e*KxAA zBg{VuKa#zo7zK!eYV;OGou;x;kK-}QN+Fz?I~Ct~s}<@m^^STRNY)g~dlbaNG)w{W zy#648S=y(;#@D4~)jkjiKRcqe!F!)KHHur+>M7&b@Gn{I`M8#9`{=eDcXo^;*Cs@Bv!A_p01!I$Em-@;R2d(R`QYx78Z zDF5h9(xR|1F1;n$y96Z{36+Prd8?ZnSB;cYg55aTJ55*%jAGu6I_^2Px!fr#n`+H_ zOG{lmij(aSD!I;={&Q;f}&3h%pk1Zf;96?4wuikSYUWs*Opdw_mN-jNQe;laW| z=PH$WipqUYE>&-7CGVX6mQEOONHwqsk{4Ku(?7BAg>!w}4;JHAIrdjpxE=BukEsgI z4@GmyGddP>bsueHyVMjx=W1b;%CeFu{lLnQ?liNwxTB)Am$!QlOJfadO`IgRo@3#U z3GaK|GHYtSWv`|sbxnH`zcx|ObUUl(O>KR)HDjx(GMfiWlX9zJk|je!{1<3nEZ-Mz zHgF`ytk!cGiE;j9pC?mR2;rBGzLw|~qiwbHddaA9e!2asVCU|uYF9a9 zoy^a$`mG4JWCdv)uPIvj#Un*YnI#_bZ1h?AGg+Ifk68B{z8F9zXY_jd=sv=`qHncQ ztdGQXbo0_wlz9tuY)HsXt#mX$eDnx@`=6MuvWsN9CD=tI?;X>3%w|2I#1dS(uk=&- zL7nkC!47JiCYePBL)jvc#+fnadUwex8f`J5oHD+9GTN*|ohHvo<r4 z{W(I{BxN(t!u~-N5aj?boD6KRmO>ww&=c*}e-O$OKT+%*l(qg=;l~i3U)6G1V zXsoREQ1}(adL*1{ATgm#i0|WzI&03u&zqR@{y@t}&=V+cTA;mp`^Y)MrNy&uc>>KDru~BW&)K=h;L;S{$;;{hXiE z;9bsGlfa40lS!{PG&qTOsk^-?PE0>Ut1)tK#xod?9qeT1&Pe&Y_}nvn#OpL>nW&V) zEy={kyYg0yIr=>1eWGVAuEalg;n(t{g9_okffRq%Rf(W6(vOP0;tsKp>M&e@msTwrAXP z(P%{T8pC6Q7b61dRqeM+V5EEBS~NP#W`3LhoLdF0m{?4hbS9xfwOn`IR=r|AC}i{n z18L&ZdTUl4_0dw{NKWPx`sWSDcRqIia-!yz@6x_OHJ!U<-CmhV79&yG)5;H{%bgW} zO|RvCp6$uoSsGa8qUc=VHYud}i|lmF;|jhP2+_v4?=gQH+rbUGEZY-(XjU(7V z;*cFA4Cm6+u{DgV?+NCTQMA32KN?f?m(Crl`7`nPn^g17b93q}7F4#LVc*hbB@Q zx7Eeb)eoZ*6v?{f-%l}l3*;V;K2Z&p4+h+LOsj@MdE-;SpFO9fS-)%YM2*^hIM#YF z9P}?@qnT|yt(nnV!XRyIo67Sfu#{jrKaOkra$g?~Hel`*?g>IqhQHGc~5|I7mq{+N7H0< z_;lUjj0IkuTVgLifB6!5AU!XSJ1oy>7}emEDy@1rwIurhtKZ?BtoOa824j^rj;XcN zOCB_aM$X#p1IM1!T6`_Ed=MOK7lGld16yzQGTq_I`0MF^-HF3pM1?OWC@0 ztHvi;-8%^ZT=aj|*4D-zb~e?8Ypbnfh29bsG$IkaT4$@)NJ|vScPRfn_RqlNzqBU* zKmUe4pJDOI;wtQ8qJ6;mL);LY_kF(Z?sMm+fV4Lj8);Y$n8T4(vwc{ogS?B?O?KofICeAr3 zcsVy+eNC_!1PFY=LeJ*f`_@)X-g)o`jrhG8W}+~Xhkabj!RyJOEj=)|%|{&e7X*8a z_NXIoAs9o2J~`YJQKXTV@Yc0qXvo~OpQw6j*tS$X0#}@+bYB>@_)tv@s&uH^J0c!+ z=+GfZyXU-HA+K~dt1C;d$@8ny72~eolu3AwNFG56y{s0N0)9z5zhc$0+`1W|t9Niv z03A_`nc1$)57j_$rs9z8Zf_S@ldr0(x_|m{OZFGQZIIxAUz5q;sNO$&RS|JgAvS~Q zIXpypulc!=k$uqRZ|u0gUI%t&J;(6u18(Z5eHbMh(T{t4`BT5KY8*A2#2q}jLc5(v zwICF<>bajN>v%5Vwqmt@#~pxj_jB%pA#N}a3wvYy9Ar3y+$DvT|KOzkC&4K-zxWdl z4ux5J>$U|&@H?5^f3HEq5Y%>f;wOJ#a&mG~64Mz%Sb!BYyPpmmF2L=W{ zeX@iJH)ob@WY?J-!GFYgU}C3!8`=M~jKq=H-b+h6JyXZTub&NSj`#xXSwm)i^Xf&2 z(G%|2-hGIaN;#Av`1h9ub+}QNidAf+cHucO1m3O{G}}weo5jH*+Zo<#K^6n_Sb$F1lANbjR-B~hnzeX1ezegs$22UNL zEiwH^6m;Bf%UpgAVGT0P6*stICY?n863>=9YmJS^{o2QmACuCsAEAZFs7S#(?a=9c z2gUr20+$68{!`YRnY_Ww9`Z5zWjIx6j({!#9=rEnh-Maf z`RWxOuEFy1QI8o^&z`nRP@5%M-@Kv!vx(#YG&e|{hMxnzy^;Y5u*4mPf}VEp0xxmZ zXEfP5B7D~I7N1-SdL^U@R8euW7hPS{OEtt?sDdZIq(SBZ^J+2RYFJ(noK1IHuKz;| zP;1u@B-jMlyg=VRV#U`h7goarK>-5x{l=gT)m2LF7a)-siO2~ zXlVHO_)vPu>u>V0jsDyqdcXgV{Qtk~S_H|H#qYvGLU6w%*!0q5uk0dh|EswofX){Y z(PoR_JUTh{j8Q%*Dd~*6ym7Ib+EPOiJ>N?tVvy)MV!Lm-mOOOx!jhk#pUVfH%k*>x z7rU3$L!%DcEhNV{u;yZI-W!?n|L<#C5&1Z?KO{c>IAQ~cckmEz zoWi5xQx6C~&eZwee|Zm33l3^xS~Ud)97Qw+9UkpO+M_4nBOA`j$;lnO*zb%~JB&xB z8B+u*K0WsnU;6s^QzisjtYq~(5iCpeT?hz6PdqLR{a9Rd_VTK887Gx!udmdHM`j0XvmR#Eg;QFWnh3V^p)}!f*x>k#cSb%VHDnR`9%t>=I&sVKkh3 zX=(Q@JPG)t6eYKxmc6-6x-kPdVk?uFb~`FdSE?kRloX@e^`Ym_pSuR43LD=uI;w}X z5}{M{%+uAe=4c}8|BZqa9SNAwys8Dmx7-OZ#F@B~$;ruGJUo)TcI@1l=c=9%JB|ds zkhYr~XFORaG)(4Gln{v*keEYd}av<_RwV$dahsCcNR*OJD7?4B)z` zeM>kplrGR@1Qj$wNKHb8QAV7>i))ZqC*|z<^H&x}j$EV~O_p=Br{fe761ua1-8rdC zBFJ7P+XX+9nD4CFM85M1i_d`foK`C^SGv5%Jp>ydl`6uHg?1lCy(j9%sROsTR7q|3 z$8k_pTbKu~_I{ejf*R98UpmrPlJ^ni zAc^|UO2nba$P>LFF|}BT+dG05X~wW7z-=Bn{ou@@rljtGIP#A+j1kj(HZg9PW$0KA zSYO&1RRvC;C#EjMG)q)-zjG{~wx2<`v`m2URSNBzPP1-rs|l~LFlB8gkRZ?EcHm%N}IE_ zH4i+#9KXDWhMD5`>MCqrEz>=w(c9Puk(ABjaBTht$3fm)e1r{PY-c8kc@b-z2?L$M zL*xu=R=PLUdm^`LxtsP>RYD4UZp}L*9b&q2FiA-)`&(qG0PppBEtb29QXD>N)RV8X zENe{v3ZyCv$NRPGs7G=4qk%=#TjVUra_)6jeC(ur^e?}X%aNN~v z{?Q|4d`ojEHz(F{cWdM^hASb}+O%u&KG>w%?{oc=NqN}WGuw=e(yPxqIh`rc+asm^ zIz!;h%iJy$Y>s{t?L~9Cm^!HC!#m|ABFF5(DaT*f%N~lfciC+Ky5; z4XVausTNdhqfAhOj-A`mM~lvUqq0y(-N(v-_N2fGT{Mm{-XN;fb8DaVdvi~f_?|iX zC1IDJMKR^^2J}1enaD|lgSo4!=UAysgoD!xlcqo?HHxiVBG;I<=c1dzNTYCivQD)- z(w|j!ON?FB`L`N->2G|8p5O6IOQD2cCrqvNnga@w*geP9h%s;a>#y3b5|=v+V*hQZ-bZX)aw{k?=K%Px{S>3 z;oH_}T82`oNypo737w)Y-lsjO+f;+>4u?)CLUq|%%}{BaL)t#Gdc|JKeW9+HcMNrZ z9Lda_a^Z#BidS5NNvRNRh7!N|1HgiAy}@=nDJ7;*rg9v5ao4kj!F-p^7fQ`Az9N z4HE)}L@r^VGTVzR4}zJ8z*Pa$hQI~kB4a7~jx~{2c)Cq?*o|ozKR9E777v6Cedgk) z=N7382zlGTOu>*6qo9!k!dtGNW7s6`oqCW7a|!F#Mw5tvi?k1C%={J04Tfv}`u0J< z-1jXl`RD;?qq5$MBd9_;Lv5ILL{kw%PXJ59#MIM(Kby$6fJyD5qPm2}@9gZ1NDS>` zVmtmt$tIzbsR(!S3Ua4NUe>xz#lib0@;4v)>qUj4$X6$fsx| zW-15xW51>xevX-k?_g9K-<`m-C!3~w@~{^+U>zEj6R-Qr(ZljeAloPIYG=_Gx^e^B zo^nD%)A!%Iiv0vEe{feX7%={VP}lZnXwq-3ssEU9p)r|~Q)u1)VW|9;apN_WnVDHj zm5X~MMkXWahLB)F;V0to{lZ(Zbze=_**H2mfrK8=0UlF|i4>Fp7E1zX(W%CNH8o${ zV_Eeoa{I0Pt4>KXncoA^?HR z?GIq8#IOwDnTbD`4NqQc&?KF`YL*kO4bP%@ZXn%= z8)YQ6f}{!{ss3hMkhBJalXPHQ9E~F7o-=Pv}TZ# zwXm?b@a|sdFAT8)_g6l8gjp;XgckcsOoLOgiDd!Y5CHs~h?FW|$Y0ClO-NXnkGD65 zy@<_&EK{+atWGuSzZ~75OD!_HFTK{c2)xbVJWxSQ?UVld5b3X}^meWPfZTP`r7vB& zM9k_h@HYJ!1uwHS_iRr?=zn)ia*m36w*OjI-5pzv|6O4$g3l0Jl?ZB=?#8emyyrI6 zMF@=JR31it5f*1(@u|yrP#N+bH@*SMKmWUcrtUy>xfi1q=vH_VOqNMKd79j-P=#oj znLQDg3kdi#-3cYB8q5_^78A%xR%@#~v4sKh5Ty}BSVrmDV>R|)0>Ikb{Jj7T`|HSv zK7t!tx0AAp(6X|6Pj_=+WvF&>go@fCW8N?@;4{_~3Hs2Mc}QX49)^?? zzF`@>%{~$gOZ$DHfeqG$EANRKEJbXo`zMRv!;6^E;pF7J^ATP>oi|!gDGcQ&mCL1A zmms--`ceSeNYqLQi_?W5XIKj91)v#&zq7NmLNZBMj~Hb6KKDV=rX>dL7mmhf&5(oG1 zCovd6PNpJ&t`w}dgC0X%YNtKGel_Fws^9rO-LqX1S{jm``ji2v5g6M}h&Y`?(?*P- z4h$eWK;lx3JAzNr5t}U(J&8%7cw6-#PfYA0mO35$E7{Wj2<@2~*Spxd0h_-H9$E^= zc&n1+vc$frK}U2|lAtg8GB@|sWn4pt0}pRw2G;+q`x9szngJnZ_kSSk&>?}s7Bw!r z@xu_`(Jm|6zKASMk%k0mGWc3>&kb>+NiUMv`}_Py1sxkhqB(!-h$QoA+BF}#gLe(8xD0z7TS8nf zMl!UzV6tq>RuU@&*-YdQqLvL0zondVa?TGb;+V&p^ zAHR5U?_$=I>gsH(-Q$^J2X=p>b5QpG(O>w{2M>}hcb8Pwk|=x4*xM%0^nTYje{`79 z5_G}OuphgUML(6+q4T~4|Gj(9eA}gA6yJ{XiSevgUL|mcKaCu|j16ZnZmlK3&rf!e zcSf(`cxb!Wwy1iuNnYb*2Jj}eW{%T}eA}w>De3vfWT797*@fLP#r!f#yU@mckYK3N zh`T6H&;uqy(viBcfLu_auDDOsJ}e#58z%l;(-3@+!Hs4WV#d@Cb_sDd>_`ooF7&Xb zXIEEZlSNL439{WELHk73S))snhWU^c<(08gu=#WaFTG!^24f?+R$$fW$PNPkb}4F0 z2rxk*8XZDaS43NxXup|Kiv0?W6|z!LHTpDyPU7}vrlvrxLfD#G=C(N(+4G`nFCnabLSit z6jxgb3@Zf$1VANn729%G@bq)2R6%cfZ@&m?+w$L+O1ZbDK7j;*M;hJKFoVG2(QZN1 zOv@+kMdp3Y&FbsNKu13UDpw~TZOY>&Y5kf+rn8DbRz6MzEx9TQ}-Ah9q0c-$Ove?1sTM z9tlGr$-j@1+W6ohL)K}7f&wrH@VK94@yCz7m?A@J4B+t&qp#V0PZUw2#o_8Y)1A|Z zQa-T`?&>m;{FAFAUcDf>mvGjWwuXLOiaJj8_pqA8ykPv&Mw}lO2i{FiiAwXy>QM7{4pphvH3Jwn4JoYQ$ zOv?P*0-75y`}$6m7QX$Wzl}Hnm)8TRY76zL%_is1H)>XSbmn`twF<^Zvy=`6iBu6~ zD?fxH(Z)BBR7B4-25tpUe6HzuaJee?GBG^ z##nDRrV8fhMo(cx7W?c2RQUdWOeL>DVS;B7Tl*8CzYV;!bs^evDY83If6D|kLG{~B z8YGxZSFw%oU{;W=NB>U=cBCP{ja)Yg{ftpfKZF-#S$t6L&1+oQO6RAhh||4j3pSYZ zj{}Ok{>^RHiU4tt%qH=^3&(ct7jWKk1e>LTt^kR!ieDOjD(6Ia4D7s*MFFGk=+GDs z^qe1xOcBOVzWv(o-`sWL26wdRLI}LHixG>6yQZb`l-OE6cG?qWZa>$iw&{ z6+prkdglFz2&3(*2z|#a?G3l?0d&F3U;ze}nZ!z^#ua^_)F3_*%7uH*iq@?MO~;P2(!MLCHk{?^eD;090;Zq=^VPK#0c~5IkdTmlrjt6y zj~`Dh!aYf5z${%MVy!CMnYycQ$%(M}3(Lh3SB9;ym1$7UkzU*BpV&#qQX^dqDUTA& z6QaRcZ%B%}v-^42>a3)K=p1g3PH!<0es~U^13{^9-JP_1An6-!T9L4glhXlB9fSMU zD>9IoR5P{oIo2TxN;?giKn|CsK6r-z1Jx-VoFDP`N48CZNdVx8d4J(QW_1O;a@c1- zJetB*#t9&FjEo_Vow)qVA8xsQkk<_l5p z_K*xaC4M_PM_0$@EK|nmq1m}PUmSvv=i$QIHsbwQw6^sPXas{#$X~X|K11#mvA|K{ z^T_+rpc~_7t#!ix#81>7z#5I<$7nxo_dr#0w?>!MciVHMHQ#XfF${b%z0>;7`nT8B zG$=cJi&ylW2-N3ZrYr$rPDgX)7;MeUY+1svD$S&T1XJ@0W>>`a4?VC{t}%fQ0g5P% z5ub}xM2d4G+P~Hs-PXO-RoAwf={!FFmQ*uZ+(_6B2vm`r{I7LlPyee{3fqd9 zaYcy|YlsSvw0{}#e4cpg4wy$=6%iJO+U9ufTp#oXNT3}wKU+xEMOv)Ir6WaNqQ*c$ zbXjNSOYH*{ztxg*V{v|Cy~3 zho0nEiD7hNLkfGF9~v5pjC^X5w6wI#9|2Zq6uIkPwFv6}k`rx>U8l%j?d$7fNw!$# zMQWdP+^$fct}ycVv4q5!^Z&bU#^3BtHT%CCg-E8uCu#502k^NRUWmx$jF5 zGrHhNb@(4D9&(QDu$|GKLVdPv-;Tg|Z<&=Uky>;3&22yyeFzYV7fX?Ku|{RZgXEb) z^nC31LY-!l|Id$J7)ef$L?a}gIs{89Nx-nBy}bxH9o;X%3$)`K%F_vH1-lML#^-<| zIBm##Wt#52%E71bv(RMjNM93aDzC*HF@`?;&;oJYNk!)O%?@&?V%4Jq8~-gNE^rkH zpYKOdUW2bWKkME_>~o~Gu|$7B)xZKT#g^(fh@|IX7Clo^vWeo1?ApYuG~(20R?!(g zR4Re6rCx{+#N#HgMN|Bdz6B$i>3a}>A`S6{7tp&huMDhSV3_Y=M;5%=*DpaNWWZp}D%7#?ojM~PD=IA;m;L&16E1v*aq zufGjl*ZO=H^c08S0B=BWr|fwLG|Km3*{z>A$oFg3$#54OXY2R5J$lKQe) zIIRbvb_4@xWWv<)%kQh}|&JiA=p_9XkAV`NApK zJ=X)YS9yA&@f=GM3^kLU|M(2?2h)CR{Gc5a9di7>KtE2GFUL=d7!}f5pXh33zTVxx z&Cw~b$H7i$XN(_sGx?I-kh zcR0bNnd8X=kQo)Gh%uVbJwe8%s6h6v4e(5LjpQdT*$?k2|A zc%j9Dcg2oA0fIBgciAtyMJ{$&w3NKN*8kgQDyZX=zD8MXdUCPkkS6RrIR2pPi3iRw zGmx1f=+8%_cqE+MwBtn*+;n#x0tvUo0@GN1fYqH=4pQ9|rN-G^D*E6geXe{00)pL$G zX-saLUNk&BJiP{F#Lk^u{Q*-{aA_%3eSCbZv+1~RgA2u7jRsvkQuYxoqu?zh1RXZo zP;6Lu$K;a&^C}{EW-Zt|tfgrYAK6?yJ^e9eM)@5<82&5`X#?Ctx^E!BPcWH$yB%cz zQ<+sTWI>6*rE`h;!^E|URRt%9c`dL7`)8j6W)n=y&K_~Mvze=AcSM!|F*GqkwB9lp zJWe;sAHudRgxF!%eq+ax%Cq&`Vm{`IC2__;=sYv#d5+|yXjRzP?5r4Xjr!Z!@5J{$ z1&Ns>!g1M6a4%o&9?;7_0=JU-9Mfl({iS!rlUOcgO(S#2m}GB6iizB`qwd3TvJoCZ|$^gKF$z|h#&(|!WHD# zry8cLpA!9|O!#YZ>fa|fI4J))I2FlTwol^4>;Hyv{x?Tm>u^4X*A$@T63WYbFt|fs zp^XZG-YwXNFcAh`)sC|M-{WC8%Hq(KWn1`@IDjqw3v5Cu%nakn;NF{5I3$?A7#zI% zGNrl7RP!HNfH;$&5x-GkH}Ku0&VA!r0M|Enk15E>c}#Z`hnihCQG&o`LRwq_| zz#nliFC18BPb{Iceae1o?nKbh2L)a`kw0+z??e}5JaU_kn&cBGaKhS0z!Y#49K}KF zhL)9(eg4gz^2$o}3_%tJFl}%?oD6jXR&wLJjrDc7xG9IOdg|Z^AD0)`wz~Q|9n!Hy zA+w5kcrec9aKZotL8H4V8e&908?_P4sa1FXEGi=LF4S>ZJ+l-NLX-H%sWtySq@AOc zK!ENUe~)(s90mOdPIh>c`w0ik9I)eU(FHb&b5=h< z%`T^9|Etr$L!Sk0Dx$2L9utTsIh2SyMzN718)^K+Nd z{yi!_gI4%YR6H>@7PO*1kowTHHv>hB|2T2fV}Hwa$Dz(CB!mEIQA7D7@lqQ9c4m#H zM?@OyZ*v^Rv3_SB4NCG{R}AT8l$nf-46s0?8{R_3(?ZNwvu8!5qQq6GFfuo0lTjEpCH45=BCkA6Bd8IutN9OD~vdMD_gHzgNsB z!>`%|=Q7)r10ggsBRO{n^|0EDh&&L1^~2YQmT8>73ZH{f-~`cL2uOqb)!W$E*xr7W z7ADUkF-Up{hhP4`o`m@ylQ91|WE@*qxQx+a_*Zt0s5g2AHkH~q?IT^#rGb)?vZAt* zNsUx$Su`aqG!z5uTmJzZMJ$a9$&83niS6P4T`B!!^OL=o~RP`lMu7ym#j4&5eHVBM6Nl4DxdwZ{mrlh1~vWe}F`h%h} z4xt2-qv5|&B7NAy|FUsXSOt6F>#Xm_yjB3F6j3SS$Ux{P5p^K4A>xUlP~4_bV9=Zg z@B+{+&VI%*al#@ZpuZ6kk8#upQG+)sdV_7C?7MpHYPl04ip~#)nla|-0`vW2xy?>v z4smOehTSeoXJ1@Ho9(c>UJZne;nd-37j9nSw0|lfK*SW-6ui;g{Tdg%$3frG8`hw3 z(3)YgsVRNPC#5Y>fFX#gJ^Z{;aht^*UhNhHKRP|OZ{H5i94Rk>gqv#;F4lT$lOtrM z>-p&UI5CvE!?I}tvIp{j*X#h{-=Mam)|`C;jBVnLDw}eBumq0V6G>t&qwYURsmLSJN%xruKHQw&k?Mf&B{NhQ+C8^jXCV;>TmFRB% zpXR;6I)5k<4M7jlOkVaCF1_1$S6p-!)*+?nf-6^1iD2Sw_T2?&N;KzyXM2pH^Bw$eee6e;#YqL+6TPWCjJ+wTq77*BlDqkeby|dCTRhM7;J70 z(V9!B$N?5+bg(?Z{w2u)d~)sY zG$f5H%~{A0i!%6-R=N#L0Gqp;K@{>BQZ-QnZ+dVNS`XYU)S}9b)QSC4!VU{)OMC(X zfaapz0sMl9{4Pmb2lp_j=_K@myxgU3V?5XZx-(BpIh~r1<6w1j)25P6yHW&pa%iD& zLw)IzpbcKK2B8tOVe0+*b8nMfzra+@z@LN@SrU7h%`?bFx6AP;jxLEi&d_9f!K_Zm6y}Rq+ z=orJ*-wCAP1jw5J&9URkrC6H*K(I{#(!w?(L@q`vY$?Z4CfJvtS@PF06iS3^L8T4| z$Ge}yfU=U2e34y51oH}dN&)4_;)!P^tPEJlnpQAJXH%PgOi(ZnDKRx&kt7;x0zW#6yM*iUZH7u6BF%Y6j{G$c;2XdBw$b zu-B#vOZrKKSU41y6L^w=RQL=ZCR|u2fwaDne8?XY0VEgtrE*QVKMErFqeyEh+h@4h&7e z%%Jp^XF4SNt?VfD?#GWOU({bfO#(;-*-yCypcH6SSL%C4Mo_3=&{5AV6p8O85*K)} z4gprsd02s!@rr^6>0iqDls3w-C>w|TJ(&0Cn#^(O6@fnCR6!Y{GFZT?f_r>=iacHP z+tk5JX^5P=wz;W4_nf)g_)iOmUX3Rsh4FP z;HIIW5$j#i4NI571I;@fGZ-uAWLZ^|qi^20(Y}i}8-T{m%PUPV$NIqvB7?9rr{XHj znziHO;~8F{DCNy=xB<&0uJ35$9qHETrt*wZbu6>C{4zL2PILe461+U@CGDaYW zhY1$V$?h0(Kp;#eB`f~zfU>&b`$Cjku=P zXpqOV*j6CJcTCIx@AyM>M7^9NtVAd^+R=8yuV0S=TeB}Jhp%A-V&+AOQG~;u+e7V1 zsf!N_!_2~AP9|#VcL{!j>H_(*hG~!yhYDJSlEYEXx(N%Qawtmc13FK5USB&qD**8V z^SYhJ->Dr{fDFTK@L(ZU4UnaB5Z>xv)#7PA$o#AgPtS0Kc>T6t&ca5R1;HI?C zz6oOBEqZVcwoe=FrecLLu-#Y_s7uM82l?n3YrNJdLB5A@TPzo1ZRFAieBKZdq z@t@t@XgQD`sTJv-LkCCeMDT*_=Oa{iAkPj#1e9k34kQ}+2VQF2e0-WTO4RBcXh7jSzNgZV&gK(Y1dyL@97O1a&zOY}tY z1dKiSe+pMK_#3}63`@RC>5E|0kCX6Hq^f@kB)6)O{}dy-im%zndNmO0ir`#zTTt1$0Ke?!fFl@QJ@_b`1=9Kn`o&vyfL3YsWl#E^o{^#FT~!HX zn`V>HeBl}Dae3MW7=45$AVB{Mb?wgu`#$`-UjX3gSAlp2?E^?1fGV3d3jqSNBa!35 zw{pljX*AmHZTSIzKwfVh=Go->AYVf`aUd!t`q4Am1z zT$xSM^uDPcaR!t${8`we|NqE$4j{PP+ulYw2lvhYLnPq#FQ>8o7lYG(d)x$A zzhLY4a+|;np{Tg7!2d|IVJJYq97H4|Mr*z2#YqN%mJOaJ|Um{!d}FeIsmtiF8+} zQG55^2~MMvG@rGTzl)PZ2bfdieg?PiKWJULJD^&58pYFv+>f%IAOt ziu-S?S4S!=>+nE#a&AJ(EDC^uigdRa#RuK_4UQF%KtoEh7znq4=mvQJ2N!I*@FRfh zw`Yi;vT);U^S=P{2#DpPwx%a&XrMof8i)D;(?OlkPz9-uVv;EUH39g>I8Cy(v=k5X zH}KJ}xD(CY;L=3a@}xZ*fgu>$BO#24)(Ze7bzW0Kd1fGj31K!$LXn(GJpbUa#|d}% zEosnc=L3QXbqE}ccHmh-MFUYF?7 zwHp4KR*p~z$&gApUCCM+G0!LGezaD$eE!Jbr`6t@FI{p&!&qsr2#AQvLYL)sJQS@n zI|wvAke9+she;t>$or1J^E@s0(oVCNwnlUF`;<=4;#NdDCO@XO_((@NJ{|tK$^XH8 zQuoFCtQ%F`8n$TES-nhA;_4^_b4>5H4=ktDO0XKh>K87N5Boky%}`1aFdEyJC9NxjnugMe6{y!N_P!@ zXIM5n%Mu>6!o@kurh&X(s}-9fBW)xLswfyRUc;L%(k^3SdMM9pF^IP69V>=6ivqbK zsTo>g!;E@TiE+GxV5zwTy;`LUC<~0-6-|sWHLKFM6;c`QXPVZ6-4xSXzo}p?Bae#hWFFfb{m{LTq zNSyK4Mh3ma7X!X27J4U&q7mC%*U>Ys0wZ?bXx3#E=R!>AlfT6;5if7HP-|Cq7{Ho{ zPZwx!`Ry9ZHGCy&K|w)ebv_X#V|qMX97WjTzXuM6?${P)>Pj~RTi*FjeHEW8DxZ4X z(ObL)Cz$4eBzpH`yMDn^0HPLOWWNMnp%4uX6ZwFkKeLwFeOn2o$eXLqTbZpQPq-X{ zB@gBpw<)ixNvOwMj^?De86Cwvq-a`>+vS(G7IF!13v$__zO40pF@N01Vk#^5y*p;P zE4}V$l%P<#9U*wUD`8EOtFq8M;R12Qd$LApO#2&p3k@*LM}CG0nVmP{WGE2W@0QUP z1;DJVD4$;CDrs|)ZZ8jGM8US~5R! z3tH)vJuAB6`S1Q%+Na#1(H%()CG2%(+$IDm0243`01;&G;2^e%KCsY}b_%#dhXQ}= zZ6I2Yz?fXIn*%23nw01`W~?Vu80hG4fIHuBvFpD}alt`4hxmYo2o1_|M<$|-I=;de zO^sP6F+h?^XhrO(?(i@lC|tiPe@MlIRy!S>pd45J#EVEaiAO~u+zMxD3CGrhd+{my zVtpyrWm^x~v#3kmYU4HOK*z-&k)P;t2auQqjBqwVbfDr%*_+s0qU&)P_HmBjW80dY z<$$y}Ma5p&)AR@TVB|0UvbnhE*C1Ca4~R}Zkfj)Q=rLv16R2oIXpg9*1CZYsIf;Tq zH?rI7{LctbwEgMi!tRKg6tR*Dpf{jvR(YI0!Xh=S;yAFhVS1WgNJ6t^}N7D7ITT>u@+7GbbCh7o?bP@oYmXY^cGJ9ho-Oth@ z&ORoGdpxvzr=00DC@Cf3n}d9{QFtx+MrXIWHK%1i-(;g$Osnodx$DuEWf$_?z;hqEjoXh{>#wpBoqiW7zLoa7;YKJiU3z5qyyX?#WftzD`-l9!<1S;R`W;*Vr2t_4LVAO4}>1X7(@_gPyzh|ltFmn>*ai+!STL0EoWFYYLD480NlQnh6?XRDGOF}0$lpIfBH@B}Eo4eNEg1)O1 zu`|whS*qPlxhF115R&+)*L{X)V<=_kx>2~5!TeUHlIN*>S*?o zV*D;P6!=bealQeDbUK3^DF~$IzbOnIk_-pu-6PK68c?vHMB{)$N;UGCfx-vkTgb@C z0dhbc{{z-6(VQecAsBdZkSZ}B*@V)QYwU&M0_Bk+%CfLZ{qy*@|2)C}2k8~k^o0Q6kWk0 zO!6;%E=|p0LU`{3>=LNex8Yx>;Qx!$?*8-J{co?sKmTK}eb7{ePGob0x3!w$qObk5 zsNVPK3zhzqGRw_J=LZ&<-fYXgA=XK53MqA3wE`z+Uk|s64St-T&N&9pyH<{{EM1fH zoO^RGx%Gsm=FIvXGB1i+m=aF68_hf~%aWvcy~eP@tbf!LHqW!oI45lBk%JrC`|g~V zNj=b|xOYEN_MwUJ>46TL8YeYFn_VGtr60T6iNNA3t7adkrFvAeFBtxxrCI37tQ_k6 z8x~MubMe@1pxlCXC8ToTy{Cj(-q9IL3BT6&g)kS6UUQZ1jg1|WHUW!LcG1XF!WU zpcFg<$jenM%JL!&HVa+N#Ld127V&`K>k!eJn&!HFH){X7>zlc0j5NOiO>Z_E( z7;knZ+;PlFcsPxVXO?@pu*qVn9ZjO{j^%#W<`d{x#TzT>yj>F+`98lujTd}nCrp{T zx`z{GLy0N5)?*z^(g#0~o4V^GwIc3(aDL104h_2t58`;yiKacmkx99Dv#zcO6{*6H zFNOs87LJUozL6J@@o%$vlbt$P4GCE9E#YKR)e*8iUg>KvpOXlnn?@hF4vIUA<8Psl z-?So%CK-GFyrWQb@6B+bF>Ae8ml!RF1u?WM09z2`C9_$NTECzX!%jCLAl zzr~D)fZ)J+t!AR+MY}2-pExTjdQi6hY8-YSjn0I5rqL>;%>6V^8MXZAzIvOQ;V+$o z^_L-IB_3>gtPWaUVPrTvd50068bx!>v!D&j`Rf{w_Ln{vCbDFnCQ?p^FFcm;FRwB) z{lJ6->(!rH{t;ih;uQ){9r~%ay1o28w#yiwk5Y?Exzbd+*A0Bt2c%BLr~~i2su{z$ zldF1BIitEz_?JwMQ>U{d>|Dj9vGKWJD)~c-Teb+P?c?c7yWPg-vU@ELe|}^`ETHAo zKC(enc(~2XBVU80ZSB_tr}QA{gRbe`FQ(Y_atU^-;nv!@mJ>Zkj2PHn9JUmn!q`Pb zCZcI~GN$90`Mtt^)6X|jdN5^(2Q*!~_S0pWWM|1+I z+q)-+(;}%Nrn57Vb&jS1Io;H}Ha6jJPJUe;%!%C+iRuy$NY>IK-k_}RBNrk9UFlQ8 zgsyY1Z(vl%k@jOk_n=SsLz=FTdKZL%9iWB(vu+EN#KJ(C7iBnAZ*m#qHzSToTe4oq z{RD*{KBw5@lEThMx99W{!cvsbo81?RYlx^1k7k=nWMif%1uf!#3aEVyCMn2U&s<@X z>0Pb&t#N0hWYc{|?D_l8K~cRso35&7;5*=&i8+LX?q6ZkW{L3{VLfZM|IusOg;D7; z!lbdOI#gi1@>8wOKTMO5@!p>*o>v-GPAd~GY)d`e0=tmsi8l=(eJ#DwX$A}HZr--d<0$=yS*EBSbK@_S!} z?WH}%QSMu}Lu$P+m#v((_=gaAz_!%eTQ>kH_pMSs>|?lZq*&mX6(fYeLfVl;p_M%`uy&m1oe$bA%V zlG;*CMLXP!DRDp8l+`IC=_x_XR{dEs*DEo3=W$B@qP+3$RZm|B;+Oiap=9QIMRj|- z_%g;_4Fq=aUG;8?;YlS^8^1y-)c4b7hgSFMYx$SEUBt3IJ z{E5SL;Z&g@%IiHX{3c!d{O)a*zs6U3eTMrvI@^?Q98!LLsC%YdUpISk5ybaN1_!5? z?kv@{P3f~YW!lbym-p?AvS2qTG8zrfU2)kgpf)YlzaH z9gS^u7%vYM=sdCt47}?r@zO1dcLx2AznoeEVNI(xZJHbKSOW8U3Z*$YdBHvuYhx=IZ$qvDfn8R zCUSFzYQJFM(PfVvUEw{uXI@^vD}zWIcnDa1(iPGTIvT^jyh!;dA0)?|eO&oSvdVOA zqG%?wDg2@Kn^4MtcQg~<7SC*_r7R5I9U{Y%CPr&SoS(BsSdygNqqS>!o5c9dq?_N% zbLyej?C$yMkv(uT!~5Ckk0Wys`1}fqE4Ah-Z3P+}6jKvAf&*n+O558}7{99Lsj=OH zE)3j+9dBkaY-ObEfiw81qK(Ko^T4Frf~z1F;k6jLcpmqjmrnaeB}R8&8S`rkyu7?y z>{6!}3qkv70*i@D78*HLp<97OEeGEs=Fj9Wv)bg#9;&oX_B^XI-F`ky{+Ownndl>u zhkWW-+s*Ce$MLv_Ar9(={*GqDQQ6xjO&^O>eV7|UMGjh{6JrVu>9-!f$lAhKHcJ(^ z_cMzV_Bj5%^Y^~C_OC$N$d<`;|f+Sgdg^Y4!8VvIgu^-y{|Z{&L?>NCU{5@atLyi44WmTzRr9xfo}F5&aF<%6<8zjj9}LtJ zJ0l~gHk3lM&V5om6WGR9JN3w{{Wl+PJ2sneT->u;ezxyXC*pdq=!aD{a%NHgyqmXj zisy|wem;{%>l7RlwLVd3K>NXV-?%UG$49CugGz+hr=*GTj^pvc{QjxH`SU-Fw({bY zp{>T0-j6n1rX>rXm*lW3kg>T9Oq=b~u2##FVD=c8y`2g5nYxjzn$N635al=1jh*{! zuKP1fT9q~r|GN-_YV^yaz+{ITw}y}R=Ckh6Yh@1;+b}7l~WTG<6FyiJgvFQ&wurV^7WE zU%nKkaG$E-Q$|1ECYox;uCq0)WZ!H|K~E^CSRZNPN87q3cm9^_S*)2iaT-I5NX8JJ zR>`cjdFhp&wxY|UYhV1HxVRh>o5PE`%WGzMr|`L=T&Dcnr$f~W~npe0U10L;gg)7 zCQcu|Xj91C!#mq&^sI|AqmaH`O3wwPjDk;8Y_wzzG4JNW`^>sut> zrc!R5GWXkdtxPmXM$Br{1gPqgV`;zWN!Q5 zd{Mlymf%Hk*^}xATfyo19fC9`yCh$ZkuUnEYVY;f@7O+E%M+$Z(F#tiFlmP4dPAEf zG9oxa5yQ0%|8 ziH{;Tq$y|!qPP`t_gfp8tG+KM&gI-a6Df?ef=@TVHA$%Rr0z!LKgKwjKZYWGZNN`{KtO5!RYTf}TPO+5QeWYK4+(iKUMzn{;f)>>B7KZ>4p)p~7E z?Gw6Ig*mtXxiz=WHuoGRg@+}P{o!~e$7aqBxc7Mov`aMpd3;+vajA3{P17 z|Jud&;kH#Tl%JRr)aMLX>aKZY^&}UqyOp;(DU>6lc zLQbLDI(!d7KlAl*Yd8+h>`q}^oj9^$qTJPb^6j-B!BN;W2j#g@+zQDv3k=v7kml0S zV7Q`-wsqyo4K`T`QPr;2;$s&!lU`4+x$8G2-P!cwDe)RBd9?N6cW%79MJtl+>(t<> z2S)d>S2?SHMU-e>iN4Q*;T)7(V3`%cgvB@WV(8ONw~P6oG~vtqnrf)HTh+5Y{;!nMfl)$-nc_;Cxt}ySPKNvT zknfN7#!9lL{UTfCcE&ygRr0QH!*R>f3_7O=Qz@5&Tnc2Tu;{YsiGlEe2{{R`E5EHS ziBBer96kNAi25vxW4)SO4Z%)$H;1FT6=~xb)y!~rN*t5H5Q*GIX~10Aq+S@HKyPk%#p!SIY`gc zPz12Ikbu$3#x}xG-Qwgrr5c&R@uaO)ucH+k>0Vo}&)NRm$ag;J>d#uF6H&+$gD1*7 zugMOM-g}&GzyE=eRt@`-THdYPi^)!n8r`ae#Vkp_l-zthN*!OK1b0sNL{7kkW&jUi z*S-sZy zh`3J17Gx1UT$kMUcfDCi$gB$`LoyUn?Fyb*zr6ci`7BSPt6m|+qazj^7juvO3b;dO zM&nr+;T99qt*<)N*~@FP8Eh+-yrZA&TgPFa_U=`+N^n}XBT_JPxFm=W1gDqf1OYwPj^xY` zWsX~hq597^_FnI@Pa1o<&U0rt*G-0)i0mXyHSf~ux1R~_E1zF?6AszHrOmiT;zNXf zPqu4W_!HZu(12I)^q+O=-50lyuV#OE#vDz~-Td6BEzpM4pCv;f-6~4hBecFGj{qa= zy@tO@f}hW|ar<`>6vn(qoZr1V3Hd&;ox$(G6sUqJ^=T5X-ur67n|K^g4A*kKf-WAn zv#aok;U1ScUR*4dmk&#ZNO>0bET28s3oH9m@KMg&iz0%z=Av4epfh6ivbyevvd8Rl z(uJkibgjqe#}G7Z+(CrDa@)%#|xwZlX%( awJVY%R>H~BV}tOWE3%T$Bnrh|dH)YhfyzMu literal 0 HcmV?d00001