From c2c76cf996a393540abf3c346dd3c8f6c04bf2cf Mon Sep 17 00:00:00 2001 From: Thomas Jeffery Date: Mon, 20 Apr 2026 10:47:22 -0600 Subject: [PATCH 01/16] chore(#3844): add runtime V1/V2 token toggle to PR playgrounds Replaces the comment-out-the-import workflow with a "Switch to V1/V2 tokens" item in the side menu of both the React and Angular playgrounds. Default is V2. Mode persists per-tab via sessionStorage, and ?tokens=v1 in the URL overrides by link. Also removes the per-page useEffect / ngOnInit token injections on the six React pages and three Angular pages that were using them, along with the :root stylesheet-rule-removal hack on feat3229. All redundant under the runtime toggle. No library code touched. Playground infrastructure only. --- apps/prs/angular/project.json | 5 +- apps/prs/angular/src/app/app.component.html | 9 ++++ apps/prs/angular/src/app/app.component.ts | 15 ++++++ .../src/app/token-version/token-version.ts | 50 +++++++++++++++++++ apps/prs/angular/src/main.ts | 13 +++++ .../features/feat2885/feat2885.component.ts | 21 +------- .../features/feat3229/feat3229.component.ts | 19 +------ .../features/feat3344/feat3344.component.ts | 20 +------- apps/prs/angular/src/styles.css | 1 - apps/prs/react/src/app/app.tsx | 37 ++++++++++++-- apps/prs/react/src/app/tokenVersion.ts | 47 +++++++++++++++++ apps/prs/react/src/routes/bugs/bug3548.tsx | 14 +----- apps/prs/react/src/routes/bugs/bug3625.tsx | 14 +----- .../react/src/routes/features/feat2469.tsx | 41 +-------------- .../react/src/routes/features/feat2885.tsx | 17 +------ .../react/src/routes/features/feat3229.tsx | 46 +---------------- .../react/src/routes/features/feat3344.tsx | 14 +----- .../routes/features/feat3407StackOnMobile.tsx | 16 +----- 18 files changed, 181 insertions(+), 218 deletions(-) create mode 100644 apps/prs/angular/src/app/token-version/token-version.ts create mode 100644 apps/prs/react/src/app/tokenVersion.ts diff --git a/apps/prs/angular/project.json b/apps/prs/angular/project.json index 0616e2eac4..3f5e9b6cf7 100644 --- a/apps/prs/angular/project.json +++ b/apps/prs/angular/project.json @@ -32,10 +32,7 @@ "output": "/v2-tokens" } ], - "styles": [ - "apps/prs/angular/src/styles.css", - "node_modules/@abgov/design-tokens-v2/dist/tokens.css" - ], + "styles": ["apps/prs/angular/src/styles.css"], "scripts": [] }, "configurations": { diff --git a/apps/prs/angular/src/app/app.component.html b/apps/prs/angular/src/app/app.component.html index 780a3016ff..fb572efa9d 100644 --- a/apps/prs/angular/src/app/app.component.html +++ b/apps/prs/angular/src/app/app.component.html @@ -15,9 +15,18 @@ [open]="true" (onNavigate)="handleNavigate($event)" [primaryContent]="primaryTemplate" + [secondaryContent]="tokenToggleTemplate" > + + + + so cascade resolves V2 over V1 unambiguously. Remove any existing + // node first, then append so the fresh node lands last. + document.getElementById(LINK_ID)?.remove(); + + if (mode === "v2") { + const link = document.createElement("link"); + link.id = LINK_ID; + link.rel = "stylesheet"; + link.href = V2_TOKENS_URL; + document.head.appendChild(link); + } + + sessionStorage.setItem(STORAGE_KEY, mode); + + // Only sync URL param if already present; don't add clutter on first toggle. + const url = new URL(window.location.href); + if (url.searchParams.has(URL_PARAM)) { + url.searchParams.set(URL_PARAM, mode); + window.history.replaceState({}, "", url); + } +} + +// Eager side effect: resolve and apply at module load so V2 is in +// before Angular bootstraps. Import this module once from main.ts. +applyTokenVersion(resolveTokenVersion()); diff --git a/apps/prs/angular/src/main.ts b/apps/prs/angular/src/main.ts index c8de31031e..91e46900ae 100644 --- a/apps/prs/angular/src/main.ts +++ b/apps/prs/angular/src/main.ts @@ -1,6 +1,19 @@ import { platformBrowserDynamic } from "@angular/platform-browser-dynamic"; import { AppModule } from "./app/app.module"; +// This import has a side effect: token-version.ts calls applyTokenVersion at +// module load, which puts the V2 stylesheet link in before Angular +// bootstraps. Without this, the page would flash V1 on first paint. +import { + applyTokenVersion, + resolveTokenVersion, +} from "./app/token-version/token-version"; platformBrowserDynamic() .bootstrapModule(AppModule) + .then(() => { + // Re-apply after Angular's bundled styles.css is in , so the V2 + // link lands last in the cascade. Without this, the bundled V1 @import + // overrides V2 and the toggle appears to do nothing. + applyTokenVersion(resolveTokenVersion()); + }) .catch((err) => console.error(err)); diff --git a/apps/prs/angular/src/routes/features/feat2885/feat2885.component.ts b/apps/prs/angular/src/routes/features/feat2885/feat2885.component.ts index 7701daffc0..de047f5bdb 100644 --- a/apps/prs/angular/src/routes/features/feat2885/feat2885.component.ts +++ b/apps/prs/angular/src/routes/features/feat2885/feat2885.component.ts @@ -1,4 +1,4 @@ -import { Component, CUSTOM_ELEMENTS_SCHEMA, OnInit, OnDestroy } from "@angular/core"; +import { Component, CUSTOM_ELEMENTS_SCHEMA } from "@angular/core"; import { GoabIconButton, GoabWorkSideMenu, @@ -46,25 +46,8 @@ type Notification = { ], schemas: [CUSTOM_ELEMENTS_SCHEMA], }) -export class Feat2885Component implements OnInit, OnDestroy { +export class Feat2885Component { menuOpen = true; - private v2TokensLink: HTMLLinkElement | null = null; - - ngOnInit() { - // Dynamically load v2 design tokens only while this page is mounted, - // so they don't leak into other routes in the SPA. - this.v2TokensLink = document.createElement("link"); - this.v2TokensLink.rel = "stylesheet"; - this.v2TokensLink.href = "/v2-tokens/tokens.css"; - document.head.appendChild(this.v2TokensLink); - } - - ngOnDestroy() { - if (this.v2TokensLink) { - document.head.removeChild(this.v2TokensLink); - this.v2TokensLink = null; - } - } notifications: Notification[] = [ { diff --git a/apps/prs/angular/src/routes/features/feat3229/feat3229.component.ts b/apps/prs/angular/src/routes/features/feat3229/feat3229.component.ts index 7886af2d9d..a712e5d823 100644 --- a/apps/prs/angular/src/routes/features/feat3229/feat3229.component.ts +++ b/apps/prs/angular/src/routes/features/feat3229/feat3229.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, OnDestroy } from "@angular/core"; +import { Component } from "@angular/core"; import { GoabBlock, GoabDivider, @@ -22,24 +22,9 @@ import { GoabMenuButtonOnActionDetail } from "@abgov/ui-components-common"; GoabText, ], }) -export class Feat3229Component implements OnInit, OnDestroy { - private v2TokensLink: HTMLLinkElement | null = null; +export class Feat3229Component { lastAction = ""; - ngOnInit() { - this.v2TokensLink = document.createElement("link"); - this.v2TokensLink.rel = "stylesheet"; - this.v2TokensLink.href = "/v2-tokens/tokens.css"; - document.head.appendChild(this.v2TokensLink); - } - - ngOnDestroy() { - if (this.v2TokensLink) { - document.head.removeChild(this.v2TokensLink); - this.v2TokensLink = null; - } - } - handleAction(detail: GoabMenuButtonOnActionDetail, label?: string) { const source = label ? ` (${label})` : ""; this.lastAction = `Action "${detail.action}"${source}`; diff --git a/apps/prs/angular/src/routes/features/feat3344/feat3344.component.ts b/apps/prs/angular/src/routes/features/feat3344/feat3344.component.ts index a9c12eb34d..bf2f531072 100644 --- a/apps/prs/angular/src/routes/features/feat3344/feat3344.component.ts +++ b/apps/prs/angular/src/routes/features/feat3344/feat3344.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, OnDestroy } from "@angular/core"; +import { Component } from "@angular/core"; import { GoabBlock, GoabDivider, @@ -20,9 +20,7 @@ import { GoabTableOnSortDetail, GoabTableOnMultiSortDetail, GoabTableSortEntry } GoabTableSortHeader, ], }) -export class Feat3344Component implements OnInit, OnDestroy { - private v2TokensLink: HTMLLinkElement | null = null; - +export class Feat3344Component { currentSorts: GoabTableSortEntry[] = []; multiSorts: GoabTableSortEntry[] = []; test3Sorts: GoabTableSortEntry[] = []; @@ -39,20 +37,6 @@ export class Feat3344Component implements OnInit, OnDestroy { multiSorted = [...this.data]; test3Sorted = [...this.data]; - ngOnInit() { - this.v2TokensLink = document.createElement("link"); - this.v2TokensLink.rel = "stylesheet"; - this.v2TokensLink.href = "/v2-tokens/tokens.css"; - document.head.appendChild(this.v2TokensLink); - } - - ngOnDestroy() { - if (this.v2TokensLink) { - document.head.removeChild(this.v2TokensLink); - this.v2TokensLink = null; - } - } - onSingleSortChange(detail: GoabTableOnSortDetail) { this.currentSorts = [{ column: detail.sortBy, direction: detail.sortDir === 1 ? "asc" : "desc" }]; this.singleSorted = this.sortData(this.data, this.currentSorts); diff --git a/apps/prs/angular/src/styles.css b/apps/prs/angular/src/styles.css index 33cd2fa85e..963ef40b19 100644 --- a/apps/prs/angular/src/styles.css +++ b/apps/prs/angular/src/styles.css @@ -1,6 +1,5 @@ /* You can add global styles to this file, and also import other style files */ @import "../../../../dist/libs/web-components/index.css"; -@import "@abgov/design-tokens-v2/dist/tokens.css"; :root { --goa-space-fill: 32ch; diff --git a/apps/prs/react/src/app/app.tsx b/apps/prs/react/src/app/app.tsx index af954286b6..80a7b407ba 100644 --- a/apps/prs/react/src/app/app.tsx +++ b/apps/prs/react/src/app/app.tsx @@ -1,4 +1,4 @@ -import type { CSSProperties } from "react"; +import { useState, type CSSProperties } from "react"; import { Outlet, useNavigate } from "react-router-dom"; import { GoabAppFooter, @@ -14,7 +14,20 @@ import { docsRouteDefinitions, featureRouteDefinitions, } from "./route-manifest"; -import "@abgov/design-tokens-v2/dist/tokens.css"; // Production tokens. Comment out to test with legacy V1 token values. + +import "@abgov/style"; +// Runtime V1/V2 token switching. Importing this module applies the currently +// selected token set (default V2) to before the app renders. The +// playground's work-side-menu exposes a secondary item that flips between +// V1 and V2 at runtime without editing source or restarting the dev server. +import { + applyTokenVersion, + resolveTokenVersion, + type TokenVersion, +} from "./tokenVersion"; + +// Sentinel URL handled by onNavigate below to toggle tokens instead of routing. +const TOKEN_TOGGLE_URL = "#tokens"; const appContentStyle: CSSProperties = { display: "flex", @@ -25,8 +38,17 @@ const appContentStyle: CSSProperties = { export function App() { const navigate = useNavigate(); const baseUrl = import.meta.env.BASE_URL; + const [tokenMode, setTokenMode] = useState(() => + resolveTokenVersion(), + ); - const handleNavigate = (path: string) => { + const handleSideMenuNavigate = (path: string) => { + if (path === TOKEN_TOGGLE_URL) { + const next: TokenVersion = tokenMode === "v1" ? "v2" : "v1"; + setTokenMode(next); + applyTokenVersion(next); + return; + } const internal = path.startsWith(baseUrl) ? "/" + path.slice(baseUrl.length) : path; navigate(internal); }; @@ -42,7 +64,14 @@ export function App() { heading="Testing Playground" url={baseUrl} open={true} - onNavigate={handleNavigate} + onNavigate={handleSideMenuNavigate} + secondaryContent={ + + } primaryContent={ <> diff --git a/apps/prs/react/src/app/tokenVersion.ts b/apps/prs/react/src/app/tokenVersion.ts new file mode 100644 index 0000000000..942685c6af --- /dev/null +++ b/apps/prs/react/src/app/tokenVersion.ts @@ -0,0 +1,47 @@ +// ?url tells Vite to resolve the asset path without injecting the CSS. +import v2TokensUrl from "@abgov/design-tokens-v2/dist/tokens.css?url"; + +export type TokenVersion = "v1" | "v2"; + +const STORAGE_KEY = "goa-token-version"; +const LINK_ID = "goa-tokens-v2"; +const URL_PARAM = "tokens"; + +export function resolveTokenVersion(): TokenVersion { + const params = new URLSearchParams(window.location.search); + const fromUrl = params.get(URL_PARAM); + if (fromUrl === "v1" || fromUrl === "v2") return fromUrl; + + const fromSession = sessionStorage.getItem(STORAGE_KEY); + if (fromSession === "v1" || fromSession === "v2") return fromSession; + + return "v2"; +} + +export function applyTokenVersion(mode: TokenVersion): void { + // Link-ordering invariant: V2 stylesheet must be the LAST stylesheet in + // so cascade resolves V2 over V1 unambiguously. Remove any existing + // node first, then append so the fresh node lands last. + document.getElementById(LINK_ID)?.remove(); + + if (mode === "v2") { + const link = document.createElement("link"); + link.id = LINK_ID; + link.rel = "stylesheet"; + link.href = v2TokensUrl; + document.head.appendChild(link); + } + + sessionStorage.setItem(STORAGE_KEY, mode); + + // Only sync URL param if it's already in the URL; don't add clutter on first toggle. + const url = new URL(window.location.href); + if (url.searchParams.has(URL_PARAM)) { + url.searchParams.set(URL_PARAM, mode); + window.history.replaceState({}, "", url); + } +} + +// Eager side effect: resolve and apply at module load so V2 is in +// before React's first paint. Importing this module once from app.tsx runs this. +applyTokenVersion(resolveTokenVersion()); diff --git a/apps/prs/react/src/routes/bugs/bug3548.tsx b/apps/prs/react/src/routes/bugs/bug3548.tsx index 810d6e15b9..25ff92ab80 100644 --- a/apps/prs/react/src/routes/bugs/bug3548.tsx +++ b/apps/prs/react/src/routes/bugs/bug3548.tsx @@ -1,4 +1,4 @@ -import { useState, useEffect } from "react"; +import { useState } from "react"; import { GoabBlock, GoabText, @@ -10,21 +10,9 @@ import { GoabWorkSideMenuItem, } from "@abgov/react-components"; -import v2TokensUrl from "@abgov/design-tokens-v2/dist/tokens.css?url"; - export function Bug3548Route() { const [open, setOpen] = useState(true); - useEffect(() => { - const link = document.createElement("link"); - link.rel = "stylesheet"; - link.href = v2TokensUrl; - document.head.appendChild(link); - return () => { - document.head.removeChild(link); - }; - }, []); - function onToggle() { setOpen((prev) => !prev); } diff --git a/apps/prs/react/src/routes/bugs/bug3625.tsx b/apps/prs/react/src/routes/bugs/bug3625.tsx index 3ae0b9667c..a66d88fa88 100644 --- a/apps/prs/react/src/routes/bugs/bug3625.tsx +++ b/apps/prs/react/src/routes/bugs/bug3625.tsx @@ -8,23 +8,11 @@ import { GoabFormItem, GoabText, } from "@abgov/react-components"; -import { useEffect, useState } from "react"; -import v2TokensUrl from "@abgov/design-tokens-v2/dist/tokens.css?url"; +import { useState } from "react"; export function Bug3625Route() { const [controlledOpen, setControlledOpen] = useState(false); - // Inject the v2 design tokens - useEffect(() => { - const link = document.createElement("link"); - link.rel = "stylesheet"; - link.href = v2TokensUrl; - document.head.appendChild(link); - return () => { - document.head.removeChild(link); - }; - }, []); - return (

Bug 3625: Accordion Refinement

diff --git a/apps/prs/react/src/routes/features/feat2469.tsx b/apps/prs/react/src/routes/features/feat2469.tsx index 2cddee7512..514939e4f7 100644 --- a/apps/prs/react/src/routes/features/feat2469.tsx +++ b/apps/prs/react/src/routes/features/feat2469.tsx @@ -1,4 +1,4 @@ -import { JSX, useState, useEffect } from "react"; +import { JSX, useState } from "react"; import { GoabButton, GoabFormItem, @@ -9,7 +9,6 @@ import { } from "@abgov/react-components"; import { GoabInputOnChangeDetail } from "@abgov/ui-components-common"; -import v2TokensUrl from "@abgov/design-tokens-v2/dist/tokens.css?url"; type DataTableFields = { firstName: string; @@ -32,44 +31,6 @@ function generateFakeData(numRows: number): DataTableFields[] { } export function Feat2469Route(): JSX.Element { - useEffect(() => { - const link = document.createElement("link"); - link.rel = "stylesheet"; - link.href = v2TokensUrl; - document.head.appendChild(link); - - const deletedRules: Array<{ sheet: CSSStyleSheet; index: number; cssText: string }> = - []; - - link.onload = () => { - [...document.styleSheets].forEach((ss) => { - if (ss.ownerNode === link) return; - try { - for (let i = ss.cssRules.length - 1; i >= 0; i--) { - const rule = ss.cssRules[i]; - if (rule instanceof CSSStyleRule && rule.selectorText === ":root") { - deletedRules.push({ sheet: ss, index: i, cssText: rule.cssText }); - ss.deleteRule(i); - } - } - } catch (e) { - // skip cross-origin sheets - } - }); - }; - - return () => { - link.remove(); - deletedRules.forEach(({ sheet, index, cssText }) => { - try { - sheet.insertRule(cssText, Math.min(index, sheet.cssRules.length)); - } catch (e) { - // skip if sheet is no longer available - } - }); - }; - }, []); - const smallDrawerControlSet = (

Drawer

diff --git a/apps/prs/react/src/routes/features/feat2885.tsx b/apps/prs/react/src/routes/features/feat2885.tsx index bed09d78b3..c5863f9a5b 100644 --- a/apps/prs/react/src/routes/features/feat2885.tsx +++ b/apps/prs/react/src/routes/features/feat2885.tsx @@ -1,4 +1,4 @@ -import { useState, useEffect } from "react"; +import { useState } from "react"; import { GoabIconButton, GoabWorkSideMenu, @@ -7,9 +7,6 @@ import { GoabWorkSideNotificationPanel, } from "@abgov/react-components"; -// ?url suffix tells Vite to resolve the path without injecting the CSS -import v2TokensUrl from "@abgov/design-tokens-v2/dist/tokens.css?url"; - type Notification = { id: string; title: string; @@ -23,18 +20,6 @@ type Notification = { export function Feat2885Route() { const [menuOpen, setMenuOpen] = useState(true); - // Dynamically load v2 design tokens only while this page is mounted, - // so they don't leak into other routes in the SPA. - useEffect(() => { - const link = document.createElement("link"); - link.rel = "stylesheet"; - link.href = v2TokensUrl; - document.head.appendChild(link); - return () => { - document.head.removeChild(link); - }; - }, []); - // Helper to get date at specific days ago const daysAgo = (days: number, hours = 0) => { const date = new Date(); diff --git a/apps/prs/react/src/routes/features/feat3229.tsx b/apps/prs/react/src/routes/features/feat3229.tsx index a84e8c5285..3d380f26f9 100644 --- a/apps/prs/react/src/routes/features/feat3229.tsx +++ b/apps/prs/react/src/routes/features/feat3229.tsx @@ -1,4 +1,4 @@ -import { useState, useEffect } from "react"; +import { useState } from "react"; import { GoabBadge, GoabBlock, @@ -9,7 +9,6 @@ import { } from "@abgov/react-components"; import { GoabMenuButtonOnActionDetail } from "@abgov/ui-components-common"; -import v2TokensUrl from "@abgov/design-tokens-v2/dist/tokens.css?url"; // Menu actions with icon + text const menuActionsWithIcons = ( @@ -34,49 +33,6 @@ const menuActionsTextOnly = ( export function Feat3229Route() { const [lastAction, setLastAction] = useState(""); - useEffect(() => { - // Load V2 tokens - const link = document.createElement("link"); - link.rel = "stylesheet"; - link.href = v2TokensUrl; - document.head.appendChild(link); - - // Save deleted rules so we can restore them on cleanup - const deletedRules: Array<{ sheet: CSSStyleSheet; index: number; cssText: string }> = - []; - - // Remove V1 token definitions (:root rules) from all other stylesheets, - // keeping component styles intact - link.onload = () => { - [...document.styleSheets].forEach((ss) => { - if (ss.ownerNode === link) return; // skip V2 stylesheet - try { - for (let i = ss.cssRules.length - 1; i >= 0; i--) { - const rule = ss.cssRules[i]; - if (rule instanceof CSSStyleRule && rule.selectorText === ":root") { - deletedRules.push({ sheet: ss, index: i, cssText: rule.cssText }); - ss.deleteRule(i); - } - } - } catch (e) { - // skip cross-origin sheets - } - }); - }; - - return () => { - document.head.removeChild(link); - // Restore V1 :root rules in reverse order to maintain correct indices - deletedRules.reverse().forEach(({ sheet, index, cssText }) => { - try { - sheet.insertRule(cssText, index); - } catch (e) { - console.log(e); - } - }); - }; - }, []); - const handleAction = (detail: GoabMenuButtonOnActionDetail, label?: string) => { const source = label ? ` (${label})` : ""; setLastAction(`Action "${detail.action}"${source}`); diff --git a/apps/prs/react/src/routes/features/feat3344.tsx b/apps/prs/react/src/routes/features/feat3344.tsx index c39cd44f37..f75a9e7062 100644 --- a/apps/prs/react/src/routes/features/feat3344.tsx +++ b/apps/prs/react/src/routes/features/feat3344.tsx @@ -9,7 +9,7 @@ * - V2 focus ring on icon only (not whole button) */ -import { useEffect, useMemo, useState } from "react"; +import { useMemo, useState } from "react"; import { GoabBlock, GoabDetails, @@ -17,8 +17,6 @@ import { GoabTable, GoabTableSortHeader, } from "@abgov/react-components"; -// ?url suffix tells Vite to resolve the path without injecting the CSS -import v2TokensUrl from "@abgov/design-tokens-v2/dist/tokens.css?url"; import type { GoabTableSortEntry } from "@abgov/ui-components-common"; @@ -51,16 +49,6 @@ function sortData(data: RowData[], sorts: GoabTableSortEntry[]): RowData[] { } export function Feat3344Route() { - useEffect(() => { - const link = document.createElement("link"); - link.rel = "stylesheet"; - link.href = v2TokensUrl; - document.head.appendChild(link); - return () => { - document.head.removeChild(link); - }; - }, []); - const [currentSorts, setCurrentSorts] = useState([]); const [multiSorts, setMultiSorts] = useState([]); const [test3Sorts, setTest3Sorts] = useState([]); diff --git a/apps/prs/react/src/routes/features/feat3407StackOnMobile.tsx b/apps/prs/react/src/routes/features/feat3407StackOnMobile.tsx index 7065463bcd..004b6c821c 100644 --- a/apps/prs/react/src/routes/features/feat3407StackOnMobile.tsx +++ b/apps/prs/react/src/routes/features/feat3407StackOnMobile.tsx @@ -6,23 +6,9 @@ import { GoabText, } from "@abgov/react-components"; -import { useEffect, type JSX } from "react"; -// ?url suffix tells Vite to resolve the path without injecting the CSS -import v2TokensUrl from "@abgov/design-tokens-v2/dist/tokens.css?url"; +import { type JSX } from "react"; export function Feat3407StackOnMobileRoute(): JSX.Element { - // Dynamically load v2 design tokens only while this page is mounted, - // so they don't leak into other routes in the SPA. - useEffect(() => { - const link = document.createElement("link"); - link.rel = "stylesheet"; - link.href = v2TokensUrl; - document.head.appendChild(link); - return () => { - document.head.removeChild(link); - }; - }, []); - return (
From a70367a894fcb7f5d02f98fd0b797b3621e5117d Mon Sep 17 00:00:00 2001 From: Thomas Jeffery Date: Thu, 30 Apr 2026 15:25:26 -0600 Subject: [PATCH 02/16] feat(#3746): add notification panel document page Co-authored-by: Vanessa Tran --- ...ork-side-notification-panel.component.html | 132 +++ .../work-side-notification-panel.component.ts | 192 +++++ .../work-side-notification-panel.route.json | 6 + .../work-side-notification-panel.route.ts | 10 + .../work-side-notification-panel.tsx | 299 +++++++ docs/ARCHITECTURE.md | 25 +- .../work-side-notification-item.json | 76 ++ .../work-side-notification-panel.json | 61 ++ docs/public/search-index.json | 194 ++++- .../workspace-notification-panel.png | Bin 0 -> 572331 bytes .../workspace-sticky-action-bar.png | Bin 386497 -> 382120 bytes docs/src/components/ConfigurationPreview.tsx | 27 +- docs/src/components/ExampleDisplay.astro | 71 +- docs/src/components/PropsTable.astro | 18 +- .../src/content/components/work-side-menu.mdx | 1 + .../work-side-notification-item.mdx | 13 + .../work-side-notification-panel.mdx | 16 + docs/src/content/examples/workspace/index.mdx | 18 + docs/src/data/configurations/index.ts | 3 + docs/src/data/configurations/push-drawer.ts | 1 + .../configurations/shared/shared-previews.ts | 22 + docs/src/data/configurations/types.ts | 7 + .../src/data/configurations/work-side-menu.ts | 43 +- .../work-side-notification-panel.ts | 784 ++++++++++++++++++ 24 files changed, 1944 insertions(+), 75 deletions(-) create mode 100644 apps/prs/angular/src/routes/docs/work-side-notification-panel/work-side-notification-panel.component.html create mode 100644 apps/prs/angular/src/routes/docs/work-side-notification-panel/work-side-notification-panel.component.ts create mode 100644 apps/prs/angular/src/routes/docs/work-side-notification-panel/work-side-notification-panel.route.json create mode 100644 apps/prs/react/src/app/routes/docs/work-side-notification-panel.route.ts create mode 100644 apps/prs/react/src/routes/docs/work-side-notification-panel/work-side-notification-panel.tsx create mode 100644 docs/generated/component-apis/work-side-notification-item.json create mode 100644 docs/generated/component-apis/work-side-notification-panel.json create mode 100644 docs/public/thumbnails/workspace-notification-panel.png create mode 100644 docs/src/content/components/work-side-notification-item.mdx create mode 100644 docs/src/content/components/work-side-notification-panel.mdx create mode 100644 docs/src/data/configurations/shared/shared-previews.ts create mode 100644 docs/src/data/configurations/work-side-notification-panel.ts diff --git a/apps/prs/angular/src/routes/docs/work-side-notification-panel/work-side-notification-panel.component.html b/apps/prs/angular/src/routes/docs/work-side-notification-panel/work-side-notification-panel.component.html new file mode 100644 index 0000000000..f95b4c8ad4 --- /dev/null +++ b/apps/prs/angular/src/routes/docs/work-side-notification-panel/work-side-notification-panel.component.html @@ -0,0 +1,132 @@ +

Notification panel

+ +

Basic notification panel

+ + + + + + + + + + + + + + + + @for (item of basicItems; track item.id) { + + + } + + + +

With urgent notifications

+ + + + + + + + + + + + + + + + @for (item of urgentItems; track item.id) { + + + } + + + +

Notification type badges

+ + + + + + + + + + + + + + + @for (item of allTypeItems; track item.id) { + + + } + + diff --git a/apps/prs/angular/src/routes/docs/work-side-notification-panel/work-side-notification-panel.component.ts b/apps/prs/angular/src/routes/docs/work-side-notification-panel/work-side-notification-panel.component.ts new file mode 100644 index 0000000000..be1994aede --- /dev/null +++ b/apps/prs/angular/src/routes/docs/work-side-notification-panel/work-side-notification-panel.component.ts @@ -0,0 +1,192 @@ +import { Component } from "@angular/core"; +import { + GoabWorkSideMenu, + GoabWorkSideMenuItem, + GoabWorkSideNotificationItem, + GoabWorkSideNotificationPanel, +} from "@abgov/angular-components"; +import type { + GoabWorkSideNotificationItemType, + GoabWorkSideNotificationPriority, + GoabWorkSideNotificationReadStatus, +} from "@abgov/ui-components-common"; + +interface NotificationItem { + id: string; + title: string; + description: string; + timestamp: string; + type: GoabWorkSideNotificationItemType; + readStatus: GoabWorkSideNotificationReadStatus; + priority: GoabWorkSideNotificationPriority; +} + +@Component({ + standalone: true, + selector: "abgov-docs-work-side-notification-panel", + templateUrl: "./work-side-notification-panel.component.html", + imports: [ + GoabWorkSideMenu, + GoabWorkSideMenuItem, + GoabWorkSideNotificationItem, + GoabWorkSideNotificationPanel, + ], +}) +export class DocsWorkSideNotificationPanelComponent { + basicItems: NotificationItem[] = [ + { + id: "1", + title: "New case assigned", + description: "Case #12345 has been assigned to you for review.", + timestamp: "2025-03-15T10:30:00Z", + type: "info", + readStatus: "unread", + priority: "normal", + }, + { + id: "2", + title: "Document uploaded", + description: "A new document was uploaded to Case #12340.", + timestamp: "2025-03-15T09:15:00Z", + type: "default", + readStatus: "unread", + priority: "normal", + }, + { + id: "3", + title: "Case resolved", + description: "Case #12330 has been marked as resolved.", + timestamp: "2025-03-14T16:00:00Z", + type: "success", + readStatus: "read", + priority: "normal", + }, + ]; + + urgentItems: NotificationItem[] = [ + { + id: "1", + title: "System maintenance", + description: "Scheduled maintenance tonight at 11 PM. All services will be unavailable.", + timestamp: "2025-03-15T14:00:00Z", + type: "critical", + readStatus: "unread", + priority: "urgent", + }, + { + id: "2", + title: "Deadline approaching", + description: "Case #12345 response is due in 2 hours.", + timestamp: "2025-03-15T12:00:00Z", + type: "warning", + readStatus: "unread", + priority: "urgent", + }, + { + id: "3", + title: "New comment on case", + description: "A team member commented on Case #12340.", + timestamp: "2025-03-15T11:00:00Z", + type: "default", + readStatus: "unread", + priority: "normal", + }, + ]; + + allTypeItems: NotificationItem[] = [ + { + id: "1", + title: "New comment on case", + description: "A team member commented on Case #12340.", + timestamp: "2025-03-15T10:00:00Z", + type: "default", + readStatus: "unread", + priority: "normal", + }, + { + id: "2", + title: "Case #12345 assigned", + description: "Case #12345 has been assigned to you for review.", + timestamp: "2025-03-15T09:00:00Z", + type: "info", + readStatus: "unread", + priority: "normal", + }, + { + id: "3", + title: "Case resolved", + description: "Case #12330 has been marked as resolved.", + timestamp: "2025-03-15T08:00:00Z", + type: "success", + readStatus: "unread", + priority: "normal", + }, + { + id: "4", + title: "Deadline approaching", + description: "Case #12345 response is due in 2 hours.", + timestamp: "2025-03-15T07:00:00Z", + type: "warning", + readStatus: "unread", + priority: "normal", + }, + { + id: "5", + title: "System maintenance", + description: "Scheduled maintenance tonight at 11 PM. All services will be unavailable.", + timestamp: "2025-03-15T06:00:00Z", + type: "critical", + readStatus: "unread", + priority: "normal", + }, + ]; + + handleNavigate(path: string): void { + console.log("navigate", path); + } + + // --- Basic notification panel handlers --- + handleMarkAllBasicNotificationsRead(): void { + this.basicItems = this.basicItems.map((item) => ({ ...item, readStatus: "read" })); + } + + handleViewAllBasicNotifications(): void { + console.log("view all basic notifications"); + } + + handleClickBasicNotification(id: string): void { + this.basicItems = this.basicItems.map((item) => + item.id === id ? { ...item, readStatus: "read" } : item, + ); + } + + // --- Urgent notification panel handlers --- + handleMarkAllUrgentNotificationsRead(): void { + this.urgentItems = this.urgentItems.map((item) => ({ ...item, readStatus: "read" })); + } + + handleViewAllUrgentNotifications(): void { + console.log("view all urgent notifications"); + } + + handleClickUrgentNotification(id: string): void { + this.urgentItems = this.urgentItems.map((item) => + item.id === id ? { ...item, readStatus: "read" } : item, + ); + } + + // --- Notification type badges panel handlers --- + handleMarkAllNotificationTypesRead(): void { + this.allTypeItems = this.allTypeItems.map((item) => ({ ...item, readStatus: "read" })); + } + + handleViewAllNotificationTypes(): void { + console.log("view all notification types"); + } + + handleClickNotificationType(id: string): void { + this.allTypeItems = this.allTypeItems.map((item) => + item.id === id ? { ...item, readStatus: "read" } : item, + ); + } +} diff --git a/apps/prs/angular/src/routes/docs/work-side-notification-panel/work-side-notification-panel.route.json b/apps/prs/angular/src/routes/docs/work-side-notification-panel/work-side-notification-panel.route.json new file mode 100644 index 0000000000..0d8549afe6 --- /dev/null +++ b/apps/prs/angular/src/routes/docs/work-side-notification-panel/work-side-notification-panel.route.json @@ -0,0 +1,6 @@ +{ + "type": "docs", + "id": "work-side-notification-panel", + "path": "docs/work-side-notification-panel", + "title": "Notification Panel" +} diff --git a/apps/prs/react/src/app/routes/docs/work-side-notification-panel.route.ts b/apps/prs/react/src/app/routes/docs/work-side-notification-panel.route.ts new file mode 100644 index 0000000000..909d1dfce3 --- /dev/null +++ b/apps/prs/react/src/app/routes/docs/work-side-notification-panel.route.ts @@ -0,0 +1,10 @@ +import { DocsWorkSideNotificationPanelRoute } from "../../../routes/docs/work-side-notification-panel/work-side-notification-panel"; +import type { PrRouteDefinition } from "../../route-manifest"; + +export default { + type: "docs", + id: "work-side-notification-panel", + path: "docs/work-side-notification-panel", + title: "Notification Panel", + component: DocsWorkSideNotificationPanelRoute, +} satisfies PrRouteDefinition; diff --git a/apps/prs/react/src/routes/docs/work-side-notification-panel/work-side-notification-panel.tsx b/apps/prs/react/src/routes/docs/work-side-notification-panel/work-side-notification-panel.tsx new file mode 100644 index 0000000000..610e067253 --- /dev/null +++ b/apps/prs/react/src/routes/docs/work-side-notification-panel/work-side-notification-panel.tsx @@ -0,0 +1,299 @@ +import { useState } from "react"; +import { + GoabWorkSideMenu, + GoabWorkSideMenuItem, + GoabWorkSideNotificationItem, + GoabWorkSideNotificationPanel, + type GoabWorkSideNotificationItemProps, +} from "@abgov/react-components"; + +type NotificationItem = GoabWorkSideNotificationItemProps & { id: string }; + +const initialBasicItems: NotificationItem[] = [ + { + id: "1", + title: "New case assigned", + description: "Case #12345 has been assigned to you for review.", + timestamp: "2025-03-15T10:30:00Z", + type: "info", + readStatus: "unread", + priority: "normal", + }, + { + id: "2", + title: "Document uploaded", + description: "A new document was uploaded to Case #12340.", + timestamp: "2025-03-15T09:15:00Z", + type: "default", + readStatus: "unread", + priority: "normal", + }, + { + id: "3", + title: "Case resolved", + description: "Case #12330 has been marked as resolved.", + timestamp: "2025-03-14T16:00:00Z", + type: "success", + readStatus: "read", + priority: "normal", + }, +]; + +const initialUrgentItems: NotificationItem[] = [ + { + id: "1", + title: "System maintenance", + description: "Scheduled maintenance tonight at 11 PM. All services will be unavailable.", + timestamp: "2025-03-15T14:00:00Z", + type: "critical", + readStatus: "unread", + priority: "urgent", + }, + { + id: "2", + title: "Deadline approaching", + description: "Case #12345 response is due in 2 hours.", + timestamp: "2025-03-15T12:00:00Z", + type: "warning", + readStatus: "unread", + priority: "urgent", + }, + { + id: "3", + title: "New comment on case", + description: "A team member commented on Case #12340.", + timestamp: "2025-03-15T11:00:00Z", + type: "default", + readStatus: "unread", + priority: "normal", + }, +]; + +const initialAllTypeItems: NotificationItem[] = [ + { + id: "1", + title: "New comment on case", + description: "A team member commented on Case #12340.", + timestamp: "2025-03-15T10:00:00Z", + type: "default", + readStatus: "unread", + priority: "normal", + }, + { + id: "2", + title: "Case #12345 assigned", + description: "Case #12345 has been assigned to you for review.", + timestamp: "2025-03-15T09:00:00Z", + type: "info", + readStatus: "unread", + priority: "normal", + }, + { + id: "3", + title: "Case resolved", + description: "Case #12330 has been marked as resolved.", + timestamp: "2025-03-15T08:00:00Z", + type: "success", + readStatus: "unread", + priority: "normal", + }, + { + id: "4", + title: "Deadline approaching", + description: "Case #12345 response is due in 2 hours.", + timestamp: "2025-03-15T07:00:00Z", + type: "warning", + readStatus: "unread", + priority: "normal", + }, + { + id: "5", + title: "System maintenance", + description: "Scheduled maintenance tonight at 11 PM. All services will be unavailable.", + timestamp: "2025-03-15T06:00:00Z", + type: "critical", + readStatus: "unread", + priority: "normal", + }, +]; + +export function DocsWorkSideNotificationPanelRoute() { + const [basicItems, setBasicItems] = useState(initialBasicItems); + const [urgentItems, setUrgentItems] = useState(initialUrgentItems); + const [allTypeItems, setAllTypeItems] = useState(initialAllTypeItems); + + function navigate(path: string) { + console.log("navigate", path); + } + + // --- Basic notification panel handlers --- + function handleMarkAllBasicNotificationsRead() { + setBasicItems((items) => + items.map((item) => ({ ...item, readStatus: "read" })), + ); + } + + function handleViewAllBasicNotifications() { + console.log("view all basic notifications"); + } + + function handleClickBasicNotification(id: string) { + setBasicItems((items) => + items.map((item) => + item.id === id ? { ...item, readStatus: "read" } : item, + ), + ); + } + + // --- Urgent notification panel handlers --- + function handleMarkAllUrgentNotificationsRead() { + setUrgentItems((items) => + items.map((item) => ({ ...item, readStatus: "read" })), + ); + } + + function handleViewAllUrgentNotifications() { + console.log("view all urgent notifications"); + } + + function handleClickUrgentNotification(id: string) { + setUrgentItems((items) => + items.map((item) => + item.id === id ? { ...item, readStatus: "read" } : item, + ), + ); + } + + // --- Notification type badges panel handlers --- + function handleMarkAllNotificationTypesRead() { + setAllTypeItems((items) => + items.map((item) => ({ ...item, readStatus: "read" })), + ); + } + + function handleViewAllNotificationTypes() { + console.log("view all notification types"); + } + + function handleClickNotificationType(id: string) { + setAllTypeItems((items) => + items.map((item) => + item.id === id ? { ...item, readStatus: "read" } : item, + ), + ); + } + + return ( +
+

Notification panel

+ +

Basic notification panel

+ navigate(path)} + primaryContent={ + <> + + + + } + secondaryContent={ + handleMarkAllBasicNotificationsRead()} + onViewAll={() => handleViewAllBasicNotifications()} + > + {basicItems.map(({ id, ...item }) => ( + handleClickBasicNotification(id)} + /> + ))} + + } + /> + } + /> + +

With urgent notifications

+ navigate(path)} + primaryContent={ + <> + + + + } + secondaryContent={ + handleMarkAllUrgentNotificationsRead()} + onViewAll={() => handleViewAllUrgentNotifications()} + > + {urgentItems.map(({ id, ...item }) => ( + handleClickUrgentNotification(id)} + /> + ))} + + } + /> + } + /> + +

Notification type badges

+ navigate(path)} + primaryContent={ + + } + secondaryContent={ + handleMarkAllNotificationTypesRead()} + onViewAll={() => handleViewAllNotificationTypes()} + > + {allTypeItems.map(({ id, ...item }) => ( + handleClickNotificationType(id)} + /> + ))} + + } + /> + } + /> +
+ ); +} diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index 6599ce45c9..34768508c7 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -219,6 +219,13 @@ export const buttonConfigurations: ComponentConfigurations = { This is a common source of errors when writing configuration code since all three are in the same file. +**Preview customization:** Two optional fields on `ComponentConfigurations` let you customize the sandbox preview without affecting the code snippet users see: + +- `previewStyle` — CSS applied to the preview container (e.g. background color, flex layout). Example: workspace components use a grey background with a content card to simulate the app layout. +- `previewWrapper` — HTML template that wraps the component code in the preview only. Use `{{slot}}` as the placeholder for the component code. The code snippet shown to users contains just the component code, not the wrapper. + +See `work-side-notification-panel.ts` or `work-side-menu.ts` for examples. + --- ## How to: common changes @@ -289,19 +296,11 @@ Result: the Tabs page shows "Tab Props", "Tab Slots" (and "Tab Events" if any ex 2. Add its slug to the parent's `relatedComponents` array 3. Ensure API data exists. If the Svelte component has its own directory (`libs/web-components/src/components/my-sub/`), the extraction script handles it automatically. If it's a nested file inside the parent's directory (like `WorkSideMenuGroup.svelte` inside `work-side-menu/`), you need to manually create the API JSON in `generated/component-apis/my-sub.json` -**Current subcomponent mappings:** - -| Parent | Subcomponents | -| -------------- | ----------------------------------------- | -| Header | App Header Menu | -| File uploader | File Upload Card | -| Footer | Footer Meta Section, Footer Nav Section | -| Form stepper | Form Step | -| Menu button | Menu Action | -| Radio | Radio Item | -| Side menu | Side Menu Group, Side Menu Heading | -| Tabs | Tab | -| Work Side Menu | Work Side Menu Group, Work Side Menu Item | +To see all current subcomponent mappings, search for `subcomponent: true` in the MDX files: + +```bash +grep -rl "subcomponent: true" docs/src/content/components/ +``` ### Hide a component from navigation diff --git a/docs/generated/component-apis/work-side-notification-item.json b/docs/generated/component-apis/work-side-notification-item.json new file mode 100644 index 0000000000..c0fa451679 --- /dev/null +++ b/docs/generated/component-apis/work-side-notification-item.json @@ -0,0 +1,76 @@ +{ + "componentSlug": "work-side-notification-item", + "extractedFrom": "libs/web-components/src/components/work-side-menu/WorkSideNotificationItem.svelte", + "props": [ + { + "name": "type", + "type": "\"default\" | \"success\" | \"critical\" | \"warning\" | \"info\"", + "typeLabel": "GoabWorkSideNotificationItemType", + "values": ["default", "success", "critical", "warning", "info"], + "required": false, + "default": "default", + "description": "" + }, + { + "name": "timestamp", + "type": "string", + "required": false, + "default": "", + "description": "" + }, + { + "name": "title", + "type": "string", + "required": false, + "default": "", + "description": "" + }, + { + "name": "description", + "type": "string", + "required": true, + "default": null, + "description": "" + }, + { + "name": "readStatus", + "type": "\"read\" | \"unread\"", + "typeLabel": "GoabWorkSideNotificationReadStatus", + "values": ["read", "unread"], + "required": false, + "default": "unread", + "description": "" + }, + { + "name": "priority", + "type": "\"normal\" | \"urgent\"", + "typeLabel": "GoabWorkSideNotificationPriority", + "values": ["normal", "urgent"], + "required": false, + "default": "normal", + "description": "" + }, + { + "name": "testId", + "type": "string", + "required": false, + "default": "", + "description": "" + } + ], + "events": [ + { + "name": "onClick", + "type": "(event: Event) => void", + "description": "", + "frameworks": ["react"] + }, + { + "name": "_click", + "type": "CustomEvent", + "description": "", + "frameworks": ["angular", "web-component"] + } + ], + "slots": [] +} diff --git a/docs/generated/component-apis/work-side-notification-panel.json b/docs/generated/component-apis/work-side-notification-panel.json new file mode 100644 index 0000000000..81b59544e9 --- /dev/null +++ b/docs/generated/component-apis/work-side-notification-panel.json @@ -0,0 +1,61 @@ +{ + "componentSlug": "work-side-notification-panel", + "extractedFrom": "libs/web-components/src/components/work-side-menu/WorkSideNotificationPanel.svelte", + "props": [ + { + "name": "heading", + "type": "string", + "required": false, + "default": "Notifications", + "description": "" + }, + { + "name": "activeTab", + "type": "\"unread\" | \"urgent\" | \"all\"", + "typeLabel": "GoabWorkSideNotificationActiveTabType", + "values": ["unread", "urgent", "all"], + "required": false, + "default": "unread", + "description": "" + }, + { + "name": "testId", + "type": "string", + "required": false, + "default": "", + "description": "" + } + ], + "events": [ + { + "name": "onMarkAllRead", + "type": "() => void", + "description": "", + "frameworks": ["react"] + }, + { + "name": "_markAllRead", + "type": "CustomEvent", + "description": "", + "frameworks": ["angular", "web-component"] + }, + { + "name": "onViewAll", + "type": "() => void", + "description": "", + "frameworks": ["react"] + }, + { + "name": "_viewAll", + "type": "CustomEvent", + "description": "", + "frameworks": ["angular", "web-component"] + } + ], + "slots": [ + { + "name": "default", + "description": "" + } + ] +} diff --git a/docs/public/search-index.json b/docs/public/search-index.json index b8c930df1d..ff06df78bc 100644 --- a/docs/public/search-index.json +++ b/docs/public/search-index.json @@ -11,8 +11,7 @@ "blind", "collapse", "content layout", - "expandable panel", - "expand" + "expandable panel" ], "slug": "accordion" }, @@ -179,7 +178,14 @@ "description": "Advanced table with sorting and selection.", "status": "stable", "category": "content-layout", - "tags": [], + "tags": [ + "table", + "grid", + "content layout", + "data table", + "sorting", + "selection" + ], "slug": "data-grid" }, { @@ -246,7 +252,7 @@ "name": "Drawer", "description": "A panel that slides in from the side of the screen to display additional content or actions without navigating away from the current view.", "status": "stable", - "category": "content-layout", + "category": "structure-and-navigation", "tags": [ "sections", "structure and navigation", @@ -724,6 +730,96 @@ "tags": [], "slug": "work-side-menu" }, + { + "type": "component", + "id": "work-side-notification-panel", + "name": "Notification Panel", + "description": "A notification center panel that displays notification items within a work side menu, with tabs for filtering by unread, urgent, and all notifications.", + "status": "stable", + "category": "structure-and-navigation", + "tags": [ + "notifications", + "work side menu", + "panel" + ], + "slug": "work-side-notification-panel" + }, + { + "type": "example", + "id": "401-error-page", + "title": "Restricted access (401)", + "description": "A full page that tells the user they cannot access the requested resource, with a clear next step and a way to contact support.", + "status": "published", + "categories": [ + "content-layout" + ], + "tags": [ + "error", + "page-structure", + "\"401\"" + ], + "components": [ + "page-block", + "block", + "text", + "icon", + "link", + "button" + ], + "scale": "page", + "userType": "both", + "slug": "401-error-page" + }, + { + "type": "example", + "id": "404-error-page", + "title": "Page not found (404)", + "description": "A full page that tells the user a page can't be found, with an action to get them back on track.", + "status": "published", + "categories": [ + "content-layout" + ], + "tags": [ + "error", + "page-structure", + "\"404\"" + ], + "components": [ + "page-block", + "block", + "text", + "icon", + "button" + ], + "scale": "page", + "userType": "both", + "slug": "404-error-page" + }, + { + "type": "example", + "id": "500-error-page", + "title": "Server problem (500)", + "description": "A full page that tells the user the service is temporarily unable to respond, with an action to try again or return home.", + "status": "published", + "categories": [ + "content-layout" + ], + "tags": [ + "error", + "page-structure", + "\"500\"" + ], + "components": [ + "page-block", + "block", + "text", + "icon", + "button" + ], + "scale": "page", + "userType": "both", + "slug": "500-error-page" + }, { "type": "example", "id": "add-a-filter-chip", @@ -1094,28 +1190,6 @@ "userType": "worker", "slug": "card-view-of-case-files" }, - { - "type": "example", - "id": "communicate-a-future-service-outage", - "title": "Communicate a future service outage", - "description": "Display a clear message to inform users about an upcoming service outage, including the date, time, and expected impact on service availability.", - "status": "published", - "categories": [ - "feedback-and-alerts" - ], - "tags": [ - "notification", - "maintenance", - "alerts", - "system-status" - ], - "components": [ - "notification" - ], - "scale": "task", - "userType": "both", - "slug": "communicate-a-future-service-outage" - }, { "type": "example", "id": "confirm-a-change", @@ -1481,8 +1555,8 @@ }, { "type": "example", - "id": "give-background-information-before-asking-a-question", - "title": "Give background information before asking a question", + "id": "give-more-information-before-asking-a-question-a", + "title": "Give more information before asking a question (a)", "description": "Provide explanatory context before asking a question to help users understand what is being asked.", "status": "published", "categories": [ @@ -1503,12 +1577,12 @@ ], "scale": "task", "userType": "citizen", - "slug": "give-background-information-before-asking-a-question" + "slug": "give-more-information-before-asking-a-question-a" }, { "type": "example", - "id": "give-context-before-asking-a-long-answer-question", - "title": "Give context before asking a long answer question", + "id": "give-more-information-before-asking-a-question-b", + "title": "Give more information before asking a question (b)", "description": "Provide context and guidance before a long-answer text field to help users provide relevant information.", "status": "published", "categories": [ @@ -1531,7 +1605,7 @@ ], "scale": "task", "userType": "citizen", - "slug": "give-context-before-asking-a-long-answer-question" + "slug": "give-more-information-before-asking-a-question-b" }, { "type": "example", @@ -1715,6 +1789,28 @@ "userType": "both", "slug": "link-to-an-external-page" }, + { + "type": "example", + "id": "notify-the-user-of-a-future-service-outage", + "title": "Notify the user of a future service outage", + "description": "Display a clear message to inform users about an upcoming service outage, including the date, time, and expected impact on service availability.", + "status": "published", + "categories": [ + "feedback-and-alerts" + ], + "tags": [ + "notification", + "maintenance", + "alerts", + "system-status" + ], + "components": [ + "notification" + ], + "scale": "task", + "userType": "both", + "slug": "notify-the-user-of-a-future-service-outage" + }, { "type": "example", "id": "public-form", @@ -1731,7 +1827,7 @@ "pattern" ], "components": [], - "scale": "service", + "scale": "product", "userType": "citizen", "slug": "public-form" }, @@ -2704,5 +2800,37 @@ "scale": "task", "userType": "both", "slug": "warn-a-user-of-a-deadline" + }, + { + "type": "example", + "id": "workspace", + "title": "Workspace", + "description": "The workspace is for productivity-focused services used by service delivery staff as a daily tool to review information, manage records, and complete tasks. The design prioritizes productivity, efficiency, and accuracy so staff can move through their work quickly while ensuring the best outcome for citizens and government.
Workspaces should be adapted to fit each service's context and user needs. The reference example is a starting point to expand on, not a rigid template.", + "status": "published", + "categories": [], + "tags": [ + "workspace", + "worker", + "service", + "case-management", + "dashboard", + "pattern" + ], + "components": [ + "work-side-menu", + "work-side-notification-panel", + "work-side-notification-item", + "table", + "badge", + "tabs", + "container", + "accordion", + "drawer", + "button", + "block" + ], + "scale": "product", + "userType": "worker", + "slug": "workspace" } ] \ No newline at end of file diff --git a/docs/public/thumbnails/workspace-notification-panel.png b/docs/public/thumbnails/workspace-notification-panel.png new file mode 100644 index 0000000000000000000000000000000000000000..b0bb9762d465c41b64c99c21287e51c836abfd78 GIT binary patch literal 572331 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%0Al5bRt-WU-t*~~CJ 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�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 ^HH2Yt1#+jB8$(vQfWDOUOIt&7T~1#Gr`43J2g^ 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

y>JWnd}?Ld7KBL*8^F)X7K8 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%0D0kbhW)cLtGEb9Z3jYw$7KTf2POc@HQl^5isp z+plhL2-<*@?hApD_ej~SY!`Oq5Mw!qssE%Svq9tdX+w2Zs-Q*bv%%Uq`**_kM|gsV z7{hU=Lx+GP=38W2%Ryl9noe#G-{W@6Sx1D^`C4(TUXI#Xyl`#s$hyBvx_4;s3oj?9 z#X$9)T4G#oPqg1yl6|A$8_uoSq7%y(jlk2#MKGyJhCr~uIq-_t%Db3UIQuNq{OE;Q z5FVqhV=2OEATq|MgAnw`WIKS}YZ_1FvSF$OdJV~wz`fm_WDkbjBWbh|qyWC+sqpc@ zj1?M|FA?Re198HFH(2^^@sbV~ueSTlzubd@as#07>ZFKx?QBj_;=f&jPiQ}z8EqNN zHNW2xXs{-`HlPkeiY?F9*QR}n2H}{)MEQIG_C8me8Q|Kiwt~?@Y*Q}QU=eX7?1(z- zOPX4#d@~g+j5wIai|tNt<^eFO-9Ewz6CNNTI~H+&UfDNk@5q871Fpnp!5;~2(lafx zv;{b+XDoOhYz0w)j_E-6-G8XDMYqwIGkCji*)I-8-Gj-VhKLRp6n-K4ocjQ4VIa-M z`R5MHK=?1!Eo~F36`wHJwT~>!C&=XqCc z_@V?{3TRQ9rcAvs>m(&!R^1BHo;GTiUj9|`5&n?x!3Fn%w=jas_*u^0 z_6AUVW}vOi4*2zI!u;??*;>}L{htz(o*aeU|iN^3ojWi#^YfrGTjMg?ei5ASQ|m> zgqevR*R_In6*?_7es!!u1FKSzpYtu~&B-0d-$Jv2$2;G*FcDm&dMk`xqYk9-_K0ytHUiAG*WhRCX>!W(byBT1^S81x@@Zp1G53F2M? z`?YP|b43khodRwOxz(~vSZ*J(;2-w*XwcwC-O}dPsNZWS<$uiQxt^%Cm%HeYGcco; zV*#=HW-&*gHo2#;W_U=H#t68T{$`%?-FRy@;AU?LB51Ebed2jA-ylsGfDayvg2aWq zO59z-!v*)Hnsq?3sYQ0WJq9}qNcAQaaFM+UjRmrw1xS8SJNYjq7opzp)mW8G!3U7P z7u0U)>6VzlN;xBx%m!3q@|^-ktGT;le(@nY5P*GeQw%ZwX=mtTPM}w>I@$KM9M1LP z>;o7j5=>DAtwmUK3D_B2)P{S2CM-(DzC~?Iz-g)kC6ST30RvPSmhLPs|E2W)KjI3} z>}sUnxB9yGU*Bga4u7RmX@Uk@@(N&V^{EXK3y&H`SGNX2+V>~MicN)hBAp!;_52^< z-;Su6C49AQIqNg*C8OQ@@u^GENOnY^7rpPxM(c95GCN4)tO5|tnJaJ&B!+}JG%1%j zuKG~$F@RaRsWM~1djdwry5S=~Fbe(xLMLe~WjIZ8w7ept$>Ty@_WCS0!>;N0d!wQ0 zu)bS!IUH%?I*&opo=p$i2*wzu$r9rnyDUVb^Y&WJ-x_=7X^!mgJ$w)1%D`XilnJ&#fZ7i|+P3*kx5Pc-ri zc=~+sx=_R>dM3eH@mP^onbVR4KwZU+=t({$q9|;Cb0B;LR%a?Cq_Z0nDlu&FbQ7K; zzdtEhV)OH>VFy|U!E!mob^R?vTK371{8=a&OiEBz5r*n(8Iy$)(ctMq?gD%5%VYHT z`RJV1yyFk73Ky#Sq(pW-7$*K_pxT=#f%gO`>>AqwfXtA#Cphj*&aW}twD`L*+OT%6?3O}8dxi|p=C=ZYf>0eeC%h$`te56^u4_+gjBbo7;*E`9%Vz_rEbpp!R8ib6u11L! z=8Zc6e)KZ^J6ZDMSw9|0P}WS=i2a8arK&DMf0DQLGo|gT#ho)8L($D5-oSvSu#;w(;>ypL3nOy+QQEc<-0qmkv#PzOvexAoK0JVN0VyqOyOI zWbU=PA*Gz?%*sF4`aR!t&z7gCfCf$7kx5j`(N7yyx4ObkH-LBk>Pe zrZ{f?>!-vORW~tul67j)qD+WB31E_(`exucis5RCqN~SNI{_Z*Fg3wsoYNIQ3nW(EA3}sjdNC;pe7*Z^%&s zt83l&7k};5-jsfMEWU)edHQOJ`Er}Qp~87;Y%tR+(Z{c7`EqLUrTeXgdb!F%qxBbJ z`xZ*6Jq(@={vfyv`j-*(Nk8}5glwc=8SqSJ=Vt7=I?#`qwdFB2diD7>pbyW=1-Wwl zl+O|4y*5m)f6@CIVGC$C_jxWl2|m-7?~v`}tDseSN{?{{ABZ&C?-*{02mPKu$(g*O zDnuGOs>+>XTNo$EK2ux^Yn7p8-1X`{gV|0ANxrt`b5Xg-!s`;h&^%M>IR-6eWLP(F zoK#en<0&VuGy)p9nBI;Gh}GN&cBU??qj?bFWSo}3Oh&ehcc4(au8+Lskn~n)N`7|I zIen-pYUX(45Y=-M(_1^0UM zjjKM0zYMTh1Y$uaL}UZO6)P~!F17BRVm&QpW%V>vcQZ3+VjVT(b)Vx-RAl+Co3j*h z+qmDyC34FAb#D!wJubKm_7==|%@POovqT8gboy}sczofk{l6QN;Q~f+v^m~|Upb5E zaHNf%1tuv-WqaPWD3v^ZF!-@yMet9fNdDjR0>Q#!q(Z97UdDdfwl=D|a$E!)a8^-g zKlRWM07KD18Wi(L1`l1MVdss3icu$UtC{cu(KvI(zddVe*l_Ci`$&ogJXmw{EdYTA9vbLjl<|l)@=~V`%Lk&HKc)X?@@?EZUDyvW7S*jr&>BaIzG1Gj`hJE zLKo|Od~=udZ3Tn3^aykwt#{q~!BD`!v{qEEKkhx4S+V6Y|BTR&GNP)h+?NWW!AE1< z(Rz9aGHW&-s@&<0cr@;aAMmFVn!~43bWD}wB&`y1#2AUbaWQ_hjC+z8!6C({w8Nd0 zL--Ms_GzjVh-EmE;aGa`owQ}KKCFVd95!5JdcjU^ydl=m8e&!@&cvJSA9H8iqaT_EL7ZlNi9ZFb&r@P1tY5N^+nNlcbsrY*$?i~hpVR+$JSqX6Xy>2Tpv!XPcJ^VDU?}c za;7ySSlVbe{vjYdzLup9uhz*0&0x|@GM#Wx;p@w)K8Xp+@lHh31OTmQC@mI`0=9r=f> z_8aGKKb?tJUG4Lw;2sAY_`@T5FU9ZQJ!Mc8B?C!hv?R4B#|B87NI2H;T(ey_h$uRt z5ymDS_M{~At<;pIt=I3Z04=pH{7@kH1hTKp6g)x;#uHr=x&`+F_Oq98uw89scrN7O z4TQIWNV5L_?Tg|KYWl0adXch%8|Q+b(RmpgLQ{?bLlOjAd;+w4=x8x;X!%U=C387& zUl6ujT85`TbU(?46L`lLHj5FA^#t1!QKWjaKN*%rTHb2%3;jFDKob=%V7CWAUMJbH zgF*O^4pY$&m6jt^$safp-~<$%Hh)6>PoxzYr-=_zi=KYOA_jE(Khi#1qJU$o5Nq^Nngu5HIW(mG8p zP0#+=jo;X3v?t!IFJDE&cjm9z*Ch-eguXrCIT0ojl77aj{j|Kq^n0As7z=OT)!7b; ztBqlUNn-QuDx5~0>WVnWAJ;lP5uR7G+w5z&cP=pcKlAT5QTCX)37?7|aRw~8 z+r{&?lF=KnX5y*wrcE_T3K))Q_Te+(t6j-r071L_5n0&JPx!u7I@7i*28cnq)e;qp znw6$<+{PF|GpE@UBC(Z?*gmJRL@{~0JG3YjD=k}4Y*9USJ0T&J5~;84uB~ss19c!e4izHl+#e|W%!a<&%JlbUtem5LnLYQ7X z=@T=+U6qFN5iD*BC{IJFtFZEqTgj}Z5uY8Ub{Y$YZ#$Aw-ga#Zx*w?9jZ8=Fk{p^9 zX1K{8MSANcd`^A8Y8xzc{oHmrI+V{)U+^+)7e#@j$&jk#Vf(zr#zi=pMik*ce8prU zMeUQ&%RIOJivmtt8)LVjeCX;O)Z@ka`uI`-F;`ir+UOXc=(`vMhJJpZ5Qa z66I}p?4^k#D&dV-@pvefm*PH9Rq;`9n?uK9qifL+dSlmFz_lUkx0uP@N4BD(!6!%o z3iUs0khDa-efMQQ!(9V=tL9YP0@mo0etb5=`LuoAXnc`+l8!-vaUVFlFTfC(*Z){x z5owr}Z@WCu`lhVSt$&DAkk-Dn`SrMC5$jPF0({^%muc4@Y58yh6IO)8MD|DzrGu7MtA5 zOaiZI3yJa*sbc3R;ZlHSSMmbWR+=F_!abT`7&;#1~$=^m+p> z>9m~bZ;qnC6qCsL2pC?`1TTL-HUF=Dn_>lRx#bMBSMe|rST%kmEc4?Ycxf|OT4KZG zZwHBj-X51mT&!p#4LAeuP4<@#Q4??82%aOK=P-v;oV!lr$#LK0uGZrPlG`J@s0+B; zf_D$+xV8_?>t`2Yf7UX{U#(Fd@ghG@U$$rZfZgGq@d3?StAoGY6%#S(10Giw2K{*u zlIZf$HJQ`uPuvb!2L%41S1NziJ=xn|939DlgN4Eo)pEt&{Fan6lffG6_}nJ|Ve3Pq ze5I%nga6QcJW@bF*2#0pEC^cKl>yBr{(za*V}|GxjGPFqJ+wzA;dv`h!d`Uk|0Mqk z5&qXTH!gaJMBusfGbp{GDG$^utVw(0x915&M&37JfeveD=j}|hUF1uES8hC8gWN@T zvV_#d_QY58&ky@?w^We$P_&=IIH$6VfWtMv+uRet^OE*eK~@j;B^ba}r6mHUrDjbL z=kX&E)DVyY^1W&RH}E)>)8faOY}Asv3+^(uVf%b`S>q1lIt{^q6t3UV5B2YH3;AW7 zyy*UvrO1L5lVOO)Tq~Q!j{~B#^bc+EHs@hdPo@~|W8P#3<0ies)>x z^^0r-HS*mr>`lxm%!9XX%bXZuzQBK!4-`zL-}fAgfwj3NvQVJKK_MdkJ&ug}KsYHp zdiJ}XIF?vZOK!Q}`;+fDqH8x?!AaL%OJH`$;6Q5uRRh@Y1GgvOqw58I88WA3 zrt_#a*JVM9u6Km^i*4@4wT};%xHx{W&0|BgLyYJorGJ|O7OB8EYQ%o#+F?bC<0DRF zDWXdsc)BNmH;VNwuuW}^^b*`r9#210Lbe>Q1b z(6T#8nHt&<8>Y!i>esqm2fjCEWN4Xo!dBMfX~aCkh(~>OhcpbeGX#_slRs}y@!HKZK<*>a zZ_ni^h!o*Ii~OKClEGJe^x3LlMHsH#(HvRQ3-nzy{es0sjyj1+PN}XO??70js<`f} z)1OEp#a{fWPYcTf|iKX`)|gg+>MqoD_)S$96b_E7p!M_tGg{3?Q?VfV&lnZ zX9=Pm-er(2&E|r6auQg9K`?S*y?T`8YJck|9rl=t;ZxzrBA9U6z{`*O<6XIE@w`$8 zdmfwsNzS-!A)J8gymll~B?f%6bu+l11d{Wx`ws}BGB=S}XbNG~JFNDYHxsYUFO#s# zQgEUzd#QjTC1K3F-d7a$aSoTc@5gfkQdh(m-Sy7r{C_ISAQTqyad+#D_S3>~=hT2a-#^yUCmn z`9A*+N5uKaN-gL>p`O-vGjJu^Xt|CH^C-eJX$Ulp(1J$|<0-2%zPK|siM-ToU$Sb3 z@6H)YWyKEY0buMD^S6z5(F(Y~v5@W!N0|jlP@*YOkcRkRLe}n>Urh1-Yb`j+i~4D0 zLsc_hi{wlRR49->E-BXGNrw}d%|oa6kE#_)qK9e-Z5&WgYtk(2tHSMXv~%Oiav`LU z!k2b9ur)3RV&Lu{RdpS&%D7>kcSOTTFq3JOb!rc2?k!Ps0!UNZk*kJ_joO5NhG4F1 zmg>KN8ofoqN}b=atDek=!B;Bc91hR56qeRl&kyNx*tl(cs*c?z^IoP8x}>t)Zk zMmp6Bl z$6`P&sk||ivHKq7P@K_- z24D@dw{=Y$OXGsiklM;(s1-c;BnR_MVCU<`({2V?Yz)A_{Sw)jy#u?h4ut+OWS+@O z(JMx%5lmzLvqM6gg$m=M#>EGiQJ@&vvtca)%!z`$a+*&cXWdi!q>n{6_fPwcWV%_qkv> zYvehlleAX~3%1=)&{!Kwn}9UwI1NXuyqVyWyl%V!A9pK|v8)4$F8fWWF+ph`i*EJH zssPX}mxAaUnd=4F@jp-Ssq6$*hukQ--Kv-JXv{Sq;l-QN_tWbDCS!WOH&f~aRixu(MoWKI?CVk})iDUl;R8>Aen8{M z-3iJ3dzUL5tH6=ZK0q#DGww{S*V6<@Qar(cKMl*erOSfN?{si`I#Bm!FiFYo%`WR) zdHk~T@aRI1zgeR4Fx6hd81$5;=~iA~cvE1j+2pysee(5o=1Su_dBSV`*V}&eMuXjm z(Z3M`X;=KzeBh>llhA+-T^z!(5w7o2v4&mzqoSGOT4eFSfjt(?rl4K`C!ml{=N1Px zKNO^-eSP|{XtG!Yi)S(V4Jvm}$b$;-YCq=5MD^Vx-q5O)&c7~tPAZ0bF1{QP50(+M zl7f+{FV}J-S#cF1yQ&?n_auTPGsvLL7DLpjd7o$nx`5y16|Fb|X^!sBfvpT5+)pq^q=h7*MLfb5DYc|o>&5{vzAlMc399sE&_?|sY23c^l{*Vzs~XqT z2YMy4mp3s4}1Qt*xXhm)AN+DlUTlY#s`P()3rFVxzmMF!105i{wH zqwN#ZBM7-9Jmg>ROB~ZN|9IjE@bzELKs{35wP`Magoe6#+=5PJN&3VU&@ChR0KI5aYZ!|`qk2P*SHDvR67FYFPqb|Erm`>k9}Gvz`HcMh zJ`Whwk0s>6&1U~TLP8!Uj7k@zfi`zVYG|YIgf@y)w--)56%^pl%nV=^KNan{xO#gC z4muMVI1i>nhc zw_fisLH(u~%(wfHK4g-TG2~r}n}G0Uy0a;Ghs6wB*<(;)>ZI*moem#^h`E;U)uO`#uQTD~@Dx zx2?jZg10cK7rBuFU83|UAgL48=((C{I7uiUE*n(!Fud3VQOM6XE!sRm*cE%O2kOwV zVep~U2ukoFh=VNs9_qX7(?@KWbGb87^cArC7ERuhBC0@QnW{k*Ra+hoF$6S8iWa0{ zf(aHzgM-IHRU5H+^k03F8(3$LY5W(nkfzApMpedt`|jnS0QDIX z0ARdG5yx?~J4SahkDFVdJ!7e&`}aBEM(Zy^)Ip1_Z1RBsgU&xRo7#S{8AXETz};|@ zo39ZF`F>Y}Q(deb2`xX>UyDSu&dvZRVjN{REe@4MZjU6OOwry@J*omDSSn{>?+M*Y zpIgA!Hv<}{O1lis&S+{zChhWUr|(_rhfE$JJ#@LcO<`GhSN2W$#ZsiBZr`%Mti2BY4~e$CUaFmVFj z{_TlxNtbJQ(o1vj7G>ZBoYhf;js?+zC)zdEK_sud!&!&fv&$B;PBwe#Cn7Y%#UgF~ z-4v#1!uv_yPoYT0ZXziQHWZ}u@tKu^&d?+5rMK(`ya-fy^{^QeS@i6xn~7g*{jvzP zmZ&!&HxTO#PlJG>734d7`r!cdEppTo9A2f0U*b07tMxJZqq1>xe8gJL%~T5NNx^zaIhsL6x* zy7$e2>o=@3!A-)eadK5 zD^Q#(j%YhQy?TAWck8P$CUp3F1kY(J3-9%oNc*Fxy%~4OxH#oxPMBPUDPlP zHFSvxf^;Y;AYBRy3K$@vgovcl-Hm`Kf^=hmAV^4qlpsiVcL_*0lK;7V-u|Bd`_`Jp z8gpjux$f)QXP>?Iahj&5!08NjYImvsb8;l%)7k5!Y9244k|uu3IbCRZz%Rkzl>K^T zUFP)1)y5T~du=ve?RWO(wOEYZkbi+3H$3>j(cZjy^HwieGbZh~Fu1j8abt^z&N{~u zpR#|I`6Y)Y-mrUnEkOAmK`Jo;Tp<-~D0vobZT;8LmanGjZ+S`t_DyaR|-3z5;XwKOdB~U7W3X$-l3!%0-n~4D-f@uc?uR)6%eI9VBpkDCuN4O@O<{ME#p`R} z(VzQ)b8iohw6<1K{%vTuq|?e8hEzDvSNczufsou)J-CWXBipopgV%dac3+PoD~^hP zfdDJt9`UDc0@1SA=Z$b_Jjf)fCNF5adrUC#n-co&Amc|O0}{k=-Jy!_!modbG4@u4 z&Bf`+HDKpm`Sr9A7T?_vxl_8Bii$SP1WU^Yx7j^UDsBZ*$a3BhYTG z_2O}P3P(@X2>S%zNe{ZwMtOcfQpwWtp2mq9V~oDnjLe~~=ff&(M(-On56(Bb_p!0D zH7>rz+l!?SgdQM0E|~~ykp66W9*2%b82law_L>i3vGm#FDcEk6ZmvYNetNdY6y6Pc zaiRr+;DYUUOzNJbVThkkzJGxNIo()AeRvL?ns-k}(m3y8(;t7=4@prv`k0ZZ%Q#2+ zu&bn=_8-ez78QJhQ5AC=Jdcy{;zxjg)nytEH+=Qqx@`S4?tyMyrsrfJV+6|7F94q+ zhz2uv9i7t>`&>#2#cUMhx?FQ+jZ6e)7HZ*#F&T8Pu9fS+_)tTrpIy~?Sb)$MC2n+) zV9cnReWTQyN`NlD+I1NB5W4wX0@YS#o?*v{Q2Xbo?Fs6OH6?l*f1K0&% zytNuOmgOXY1s*n~wZL<&;S2teRUKwb%yo;FBWA&v8(u@_n`*|}Xojc-E--uws7(KU;dHJSUqsL^bM|J<3ay~cLX9*+shK1>M7I-YK{asq zRy4O+>01or@|uc}WEU(WB*0~$m7??n#^x@$jbchX#>F?ZL&5#Hx2&UdBI4plPV2>= z5l*q>dbwS@RPDJK>T!KmhaThDLE5O=5q9S(oix+hOKlFjB=K65?_@iDyZX1s6-1-& z6udSQ+<$*Q^&m4MOpIeaB&Ad9GsjzaME7_*q%J!1$ni7Rtro6ZSwiwZ=-s&QngzX+ z7*khIt32It{%!KxLao`u<0wd}?dN4R;UB$=+Pw#Tq24a#EYEjCeyI~Q*R5oIk~SZ+ z`H>qmIve!C%JN>jlXhX;8CeCTmvg|po1>iX)VH$fZ4~fgkqcF64q}n)6t{lL+Di#i z;yFsg5~5F~+&JiPY*fayFP2D?WJKyVM$EvP=N==oxma#gA(HKpk-zCgOb;7T*9cfK zO5)@~mD(ORF5=vqZM~-Yb~5u~EY>srz<)Q7N3nsYk?SO43ZzE@O4nW=n3A@eAG{8? z=73DRj!3x+IGw^*({D05V(WPwJIpm_Yx|RZg4uAcSB#Z{Y++c`Q+ZRaFJPJF;XPpN)1alx&IjkG4C~dqAFkJA1TmyB>R$rXYGwiGf?OAxa`bOIKE`({MfzPX{sZ!+E| zp(1;XbO7JJ*tgu$OVP)5oH78*RyPE|YF_65y8ew2#~daN&rm4JX-Pp!?T&7XdN3Dj zSSoh697d(f$iyvsq7SHVD_qjpslaQH$?9ln`ep0cn3(8?eFS1y z7NIR7TO}>cMTg1{SOp$pe0K6Q^P5(!BbQto@w$)y1F(5CZ}OdZ;fri#fGHU0M3&OH z_7+q&ce#kuWKUQNl82#0&SYzJh0T$X9~xa@SSNRJ*CNj8FTQI1w6vnY{CR1Dj?)|1 zkno&CbGPg>vL+*HEm(iRokwndfK=}Gr{1=51CkzAyEo&<%a zr5eLEgQHTzkk30eMBQB1)B!?dAFgqDlgw2SZ;YvH>ZVn2gMs)8Nfh*_>S2QCheSRH z>D4|czzF!a9eMwB&m<_l1$mRj#9?agMX1(#vM^hMDLFpXitXZ}4R-Y70D6pw5x|>j0xUP*?c4ypUiOCb`p1E3G*=Wen0-Q^)-6eoQj>TLn zpVz4L6j;0)Y-C55s3(a;4BccSdGUM%akb{!5;RTlbq)$S&rc}isSvU$zhw-D&ctoV zvZ6A4roRjKP?{}_LdDt*H0$iJeksKq3_`yQOjW&&vJy+E0gXVEtD2)Dw#J?lA^VL& zkrdN@>T4i`{v?gf8;q!Rd$QYez&S z3(Ns_BW+D^vNyR=_Gf)1d`ca@O8TL+DMd7nn^gMP&&Fx@MSlMA%IWc?0=n?R&{i^8 zx5J&|J6_FUP8v(RH`_i1%r*r+Ra9;7QNM6-d=zH%<*Duq=ZZT6;#rd{gS=%qF@@4CpG#yWchk1% z0;hS4_00%P#?My(Kbyd=XY$43Exy1-Z(-9|MxR&;Z^d&4kLj%~0$HA9W3>mxhF&nB zAEhofA7V~Z`l$SIxr8sbVCoNC1GnHs+S?e!^Dd%4mb|q&=zjWL2Uz0wDRVI&&W8~ z%}GDfc$EdpL|2yJZ8BK~P_5&8Sak6xa{&Sk6EJF)@8)rVfGg~R8~ZrJzxqEXQ26f$ zr^fI-TBY!Ig8Ci*(@HUDp=N$Bc$}R+My=89uineJ%hbn>Jwe9tL<3vmtFN=W7ZM4r zE1zbgOje>VA>Sp68?*$+j;7{N6qn|$qNkQ!@3Xv%e1~Xmygc{VR?lS)j4m6EZLS&h z;F-a0A1JPH$=HMd%t%`Fq{y*rhU@4J)KHYHD>{{Fa79c%ID4e@(POvMq8o2SIx>A2 z3#ulVSY#e%6%%_^`JCa6<;uWtU2w}XI(c`-ru+R~A{TMTsZ~v;bwgN70oI)rE3In6 zxoVTS@D;BU7Tp8x`*T?u2d^dfw358b59u%OdYr<-z5E`h)7sNB!-Gn*I+RX|X{Dl7 z&?Q$=?M`#FEh#!q%&Ow+752HRk;R-(-KC!3pD)5ENL5n`-GQ%1ma#y-)ojR$IYkV9 zuf6K$ddles55{}kxgUEH7mpGL&g0_C-|$8){1DAQ^A`);&u(2qer@f*EtgKxRx$K~ zOnUlB%dor+Zq0VqrWA>kGg9xv5^qk~nb&-w`p5EByo-Vxlk85RY1cROjyK*l z>>w#XQ5Qi^6CZLe9WxLsfkc^sIR7pE8QBq`SazR5@*1I~;&YsXy@~lF?**;X?dAx~_Imja&RWVEc*^%*7bap$s{3!|5bb zx++91B=_Wnd*j0BEy!!Uf+9kpdkYLZ6$EsEyd2T-<~~AE2A}JJZGsB33SPvQ}`8o1f@v&%`@MPrJik<-TQ@VNW^W+$2BPQOH^?jI$s$25?O(6ZSNTTtw~ld*>t=SsPuDOmbyMurN^(uIKS^C zDUX!;oau`PSH9--1Hq*3R~bqt#*9!PNQ)#VeZ74h2zI%#xR-=L)}@V^H@cg{BNsbfA6iK$)4MoWKn0c0vJM#q1nD!qm?FEN^j82;BSq*- zvQ1fce=jmj81h?kDBsYIa0Mk1M6|Vv|Qm&AD@87UuXF zJw05bl2w@QU8d(oiKwE>mP?_RYzY06ON0iWAe>hT4n-sC$MJu*&`^xk0IEy(`Pn;-OxaYq(ujVc92?bpV2^*naedx)yAdLeN)drAHS%2fBlx2Nc!%MsTg zZ_lB4je^L!RlFgTo{Nl>W%>BmO0n$2`NcU%RCtBfnGZ;qL(NSl6H{BzTYoIZ6I*nz zo}<##c{?7pEv%Cp+a?!M>Tm)?K(72r@m=vZPRzO~(AjRs?pDI6G?^e@9DL$)Z6MY1 zo)4NffA2K3+3(J2YWLpQ!v{I$I^CC7HmGGset){=e>%2Q=oZzp+W5%wO>oL-&QqyF zQ;W=d-%pcGLp}-uk5KWY+VhjZPR#_7a# zj)glt3?F-)RzjWy)`l8m$~9+1DnK&Iil>`G49L|LT$a^@QvrHVB4;@XVbg?9Ureik1x<$ZKP~VmO$3`Uwm53v6)r zbK}`?I&pC*S;^E;NZ&wd9n@noR{~6woeZv|k0k+u%A}(`P89w;%}(>`kE+=gx?J() zV9Sk1T29$`N`vo;^-&92I}=>q4ZYhyFq8IQi9jZU2dxYTSMNM6Q5=o1ArfcI{&L+| z9Ih}dbwzp9(m<}J!QECxic9?b=$xZ-ci&-ILesQgJqu}QpbXG==GziJhT!N{Z8mfH z&c6r+(HWitXTQ<5fCkExP7X4`uyD_Pzjl;;_<{|);}4(XTQLm9HLFQ`q5zcLb2`}~ z&t2#90)B)Ov^i8vMaNQoOTPLRxa~~{v&nc$Rz7nWMDkT;Qi}P04e`j?(wPcUx_G(k zfIzR4Vq6y^!l-kg=C!V@HF}7*f35R^@>h%vJHQVPHbwQn*UKMN5LgFbQ+OloFrS>g zXG%tG2d8RhirflTh>rVPi02^86^BZ8#9-0%_IF~HmLH!7Vq)H|eUAPeqMAs5D5I`< zDN?MbByLD%IZQ-aC#%?~5JOz6x)7t>e#3q9X)Yn^pmIN^+OQ_!;%fgHS-eRo*~4Vn z$!lJ+#vhfj-nW4Cf0+9uH;i0gFYU_tiHCQWzc{)4?3}cHLDTZac@{ z4CUk2U--hk@bEXxYf0OgQfyM9Agir7V<%!8NaAz*noQoQKJUK(74_?Iw6 z3%}it6|+lp^qqrpqUb%#@q z@r||jb4vRTOeMpyhGW%_u8&;~rsAI_tZX0s)sK(FOjHO>j@;G#`ANXVc0Me0<&(U< z#$>!svArkF>Clb1?LK4mkD4*Vs>g}4AC1fluMg#)k#$_${C1)5|V@wfDGHe0u(9St{qRf;D?-jrokM z8b%U&z^z#32DC|zFaE@Q^H*2?KYz+TC#zu~X0r9pcmk0jIUWWF)m`ruT4+oX-`00L z+2b*{DDB%{a1u8vh{`a-APYJd7!2^r z@8{}RMH;M@hATamWCkYYSs>gy6t4SQC~v#{g-zJt%d)KfAwJGRTZdjXMxy?*M52Mp2){& z=NodVk2^Z2FNHNwm9isIW`({!H_v^|sK$yV&Qz}XK9ao1G;DlLN{LAaI#K>+6!UG4 zSR&`M{Wb5dcm(FX`1CAX051y5Yoq(AD%af3hn`f}}$ z8-M-rfBi(HzORiyZ$lV6jgYOk_JcBWnCv@Gh4^_qQ!yS=PQAevi1F5p-GMmjCg^!y zQ2)qC!UdWMn`iPy$~`%FV){>=(VolBAa?iw{Icq&`xhm&)0ixMBMM1C*c_SwgNwQo zjKGd$+aa}=;SluELgD7wK~Q_|9hx+D7jgWT-^jRO%X;U2X7v zg%6?K<&yu9&3{DS&(+g~sL(V4q@QoS-{(^+g;ZL4>R4{eS4E8dqVi16trwe6ZK!0Us3If4~+6DLZtCctLr|Nr5KqbY1{+NhySN< z7OY__$cmv|Pi81rj?Nv*5*_dUlBm3Yj!q?|lVsnM-l)9vDD4{N;)s-WdK`VlNw|U=-+iNXhQCnB9~@&ND@*9L z;xr?=pz+-4svUHI>$>a$^H~uwiP;yP{{uP$ywE}IKY5UEU@7tz(iwjsbx`8{qV)%S zS1$5+dgskTanv`&6ti!03I*8}qsenwx=WMy59>%Tk|?EPARR+|Jy<5D!?Wj@@s1!p)OuyelF8bISfwcP%N8+)^J3SaH7#iL$= z)TtVx$GP+i9CUB%@Qqi*i=GWc8?~q=%7&kUti<0v`CaQjy7cm@-=lf7&tL`lzoxrs zBh)wI%d_I~?j?^Fl7)N!^Fwv@?=?z92VIztH=;E4GBrJ7GA1AjzkpbITjHgYw=q!9 zIBV#)29RQ&vnGUy5-QaO9i~o_A|nmI@H^uVn0~l zI#y*0dpMnuk~QoV{)Z9_*Zw^T!&!xAy4aODO>eO~p_8Td{Acs2cfejdEDJ$%)p{&%4kB>ywcjuW_zkO(Q<;-*jvmY-XFI0EZL};>9R*V!)AM_ z13MoDrjUG3iG%nR#)UFVhYwG`pT-I!}`F1PjQ7k_;4L`fhSVpyvRPwn2%qxvJY(o0W#^+ zBRjLMcL5Lf*ctu5r(U2(q8SnIs;fHxOf8(rkNfMy#H#^)-`dXRLUKyFVg6brtz#T5 zW}#;NtE9=Y{%S8TLH>)&p{G2P9?75{P@lX;$IU2|tD5#AjvVE8_OjB|LK`5RTRLPu zq7QS*e|_?%F|l{k+ps~bYQCnrxA`_&6-J6{h8-gt99xy&ekWg$q057Gqs#=fmY(B~ zkpO4|A{d&xhL)tqKB;rXfk!U$Jnxj$IN(6(nz@mY8`Yl2A2f6I*bkwP7>)!zWeZ+K z1uHUE;&dL;m&_iXI4JeISKe-i^+k4hkEZZ`fA*=2Iz973g;fq~R5Nwhsf6`?q($(k zb@URHXLm>Vo@wb^`1=0EcvSXS-Xm9H9fN)=EA^|q8M^X$9c6@0&9k{82^NYVyt`30 zF!AX9FBaWWeao_wUj=FAi$`B98kypb>qs7yba_<6hWg>$Ux0h#nr!uq8iop{{a2lc zWd&NqJ%#I>ed~_`;D0JNeKdG3ON*`%y$$Ga&HUamyh9VUQfS7l?2B69_b!dY?pCZ> zG7bJY>ADa4;?nJ7)ZKq(0r=~UkJY%WBTBw&Oy-TG_+*5OR|(-%i2@Bs!YAuMy)xT0 z_|Cr?aGCFsxFXE~jFz)pS8KN6F#V&5tMKd01Qimm$n`UMIGu}Kr-kU$E}3=bpK&H( zMChOtCSPOVH{cPp3|^vk@ukQuBS864EJEYzm6!ttrPNDkcFTrr{8*{03jEXyFfJzx z^BNw>htkL2@M#6PXItacG>I!-YGABztbezo%Bjx8UpvGM#bh1_Di&8L5L4Wl!&~v8 z0vu6>+Y4Q;SEh}i@^5v%i-;;KVrg*wJ|Cgz%AM9Mg^>&_T~hYCo6fq?Q^`a=1rx33 z^n8w?vfvdoX)jE$OSAcGztCAbyR$l`4f$YC`s>($+T{SzUTBsU=fJa8t$PK=Dw@Cl z!5!+Z}!lQQpFMbxXqWm<4NGi%FZ_#wH^} zqbyZ&EHi!fmUy3VbBB}8hrp91<`qquJF9dzWa%?8TxX*FHt(ON9L1}-kUiDpc1x!) zW${BTq-K=*{OKt&QX&fhrE8apWzVkTKWem$sO2T1&4d5^@gD&7FN8!9=gs5&JhtYn z#FEgyGfv0%5Nao}jqBgSPz#Ej`9%01UU@q;yB6Y3S%b&;gGz$1YL&YS+ldd0!04OH zb6=&tSB@V-^b#x7*?n10;e@;%Q@0H~04vB8OKFAP5?%`vw4Rjp(M}g(yy0t?77Bfy zNIxaX-6wd76jQERFiDE-+Xd*qP}~?X3MHlwRPt zs}h?0FTB{8TRc21O;N9u%KiIXC88JV1~bnabyTsipWk_?t9Ii>a#SPw10KSuN8XAX z)Bhb`xp~xS^yw%`L^JYdOq8%g`2Lf5CYs+<59b6dtTG-Hg-KdBifty%U`uU;s636} z@xJhn5;5xZMM3qK)71{knf9EmUYmD(3lSoodimOV7xJ$e)oswW5173YY(Kp8Staj} z$PpC$OsN6Y_TK4O_GilshuZGK*-3IeaO7XB_CKF6vw_;5<+GnH8I7zt8T6&-iFu;g ze0s@6UAHrkKu7R4$M#;C>^*>$k_ItUm^)08o^bf+{w}4Ked!MDC)+hWP;)=4s6XbbG{Jd!$S83><1=+BH&}Y1FX*Lrlf)f#eD&`KkkR_t@GsQ?gMxZ^2q|7soFe*i*fh}hhGLJC zbImB!F4S`-ju6kpO23n;e%;e&FAg#Yg!L&$W5Df{6Y2!ODrW`$J5|3row#JGHT?pR zmg9&DxqZUUhQTaa^tlsmJqV==ZTr0yhW3H%2L-IK`Y|m8{19a}H+CmYn>iGHx7=SI zpXEtZAfRsM5xXtJV=i(#Q8^k~^ekR0Qq0#A#o0pU>~J#!Kc6kGkqNx>G$mLLgSgWlphmN?Wga9(0MHK%M3gDpPq%=Pgh@^B6z+-OBbj3JxWC(^g5jSA z+ZVfJ2VcYJ89-*VVYW9-g)%U|2ZhYVdpVDWkoFv+;W;__?U{hJIoXNMr${7s81&5s zQC|k0&6Ro;>nxJ9!xy{HiX&51o3B0`2zEGq!sLBH#4>Tzb?I|?$kWC7s+CJMe{C~& zQPy?PEU=JQnD}^yVG&w>KfW|IH9hV3YmPcN5c|U3UI2%pZYXSQ7|7xt%Tc;pd^5YjSx{Vt8`XVi{I(QYCUU zRJL=xe*QO?Ss+CADNZM~jO@kQ<8>~U6Pno^E$_XjY% z5eU@ap=`pHOrZwP@CyTDd{KcwLLv<$HCr}vbuZax%LY=;K<4t585jeCfy7~wv#_o- z2VPDb-UX|9-xaFN(hI9y4?nze;?#*S!zX(F?aGS7`+f@p1{m^2!nNB!SH|ii&jfYq zyTrxyM)=a5Z*c!9IflS2nexXhdF!}p%jjnrs67N1O=>-WM8mm5TcP|npwLDU!%Il{ z)~z?7pVK|Avu{>R`PusMQ;g!0*8y2xJ93xOV&6^_Wdhiw+S6z?Qmn!_%A@)Li5R$d z>3+r}#pDfFd20zM+TI@o7I(EnZX*|Lu&)Y(V`H|;jS-EIZ6m$Y{wjyw!RxJi<@RPh zjSwZ<40Bfu`s4m8gVs5`O-PL?w5mNTUGMaD6c!$ld9F`htu4U5T^~S5to}O`Og~D$6O8?+U9nbTo{3rK_iN%?gEoLb~=z5bGK(afr!gzalVoyG?0`b8ipln zr%iLYEOavYlxp8`LCSO*2}g5xhc}f>|Mj1WvRXTPkc!#p-=y1psoSjhFAqD5Q+%EO*Y=;1UM zn)Q5uI2(4-U<6i!;tkp8*-w8aSViMgvd8W?E6T1PLB~c36wSTcyAZ&X*9y~1?TL@A z2J_zjLtFfB)KHUBlb6_QNFIX7Bme)O)z5G9y7Wt*@PfGYaTOF8g zuzJZ7G5lMh+9A@bDZrVYhdZa)C`R|^(3{^`prn6uxVlAcmaScK8>YHO{!TI^{rA;F zzMv2?(al3HTlckW?rv>I!G3Jpv*pURF>cKLZC|ARd;%X)cDO9fOGFcRh&(R z6*@(ekNsyE|0j!&yftUQ1A!*>6mW;dDPiz-ATiM|>BIyK6;{iaczs%I;Q)|}ZpnTH zz26w{*OWVwHpavGA`jc^Z1en|Y@L69WLZ-b$7@mE&a5N6bI)^{J`efGjz0}Ow6iRi zF$uJ5dV=gdK8pCJQ+)KPix~8aSL$qSl;JBEl@?p3{hRk^$OLcC^4ntU(?!V8yyVi!C)dmL(yxSmc1TQ7hBEo4K zx6Ch3!ja%0id)=rf3vZ(l7%9d8f_!-HyUl+48OyHUVhyrGbjVvWy!_|W@FSn*!7|F&X$@*Mu zJ92Wb!{gWiE}y4_+h?<(|{vYTT#?_GoN4GJ6Gv#mO)5Nf_?02rTc_kPyaBsjyV zFAn=H`w$%K50RH`Qg*SyvI2f<5A!mmea`AVnRG%n{zEn0R&X6(Bv97cs%f=FLeB# zt?d`(IDzXsSvE5bs*t)=d2x9Y@(F+K+t7n7R}D5GRdP^u6NfjA!9t~8(Kv(ziO(vKo9m7AiUmZ4-g7=gU7tuAV)HY5X@e@kWulO>rw6~ zsIND>mH61 zg15=Fpej`248i0AIz?Qa@qBvK$-y%-$V3wtAQJiwBqJ)6;+g@`;Kq2&J+enAur$!# zj1=CwJ6F9-h?TyG#LB+dVBH~Z(l1zYY9W+3rJir6h4 z%<|Vcsv%H-`_kDU6WF>MJBIQD^cSe)#X#>ASG-6m-YDtt>wXy=Ypok~W5rNpJf-LD;(UfzpJh!E@ZKte zQ@6a3f&v(Vp%Sg^;f-fUh(ZD6bmz$R!C4tJ$%IQvP39~oGy%MT_4TsjNAQmD^a#K# z842^k*{uB{1fTY1U}!o{_~Iu*jgX2#n=@!lig(^>vZ~1I)YHmQCmVdV)E|A4;A2|D zdTeX?Z&vVMC)2;5FeW3XB~GW;ryhAsd&x(im$kLvbpx+QKE?q}(6XrN9&BcU%R=AX z6&~nfSV)+$zr#2H(O)#cvPZhq)p#(JzCX?3*88f(TYY59;(5bS6muIC7Hpv4 zak?^)rbL~o@j0GO%vSzqYa9z%_OBY7tDK=7m@JZTZeh{r0&#=dbH~p42uz+DZ`mw` zPY~6#hn}`i>oOhu1t0=_-h-SNw+D8UY-3)|2VXuQlyXk>iE9B*G6j6!Jwy7BkX8rW zx`Xp63U~hQ(EaCb3~OxT4}28-AOOM40r{Yk zCog-H5E*&q>$OBH7#Ul7B4NKk=J0yQgpBGDi0W$RL&?Q_)_YW7{7QB`lSN}?VV6-O(2sXC{g@dV*KnIti>Ccre^KQi9gT%Y5(yreQA2te zPaWIYACLRvAkAUdj;{!{0Ox1$i7m=TRDKG!Kh}2;1C#_Zm8?U?<}0S1H9={0eJ#r? z05ErHCQsln5rSoV1^*A3^MAcBr^CJb&)r2DK$3bX%W9Eu4MQok#Lt!l=#P&f8CXbI zu~qSdJD{@z;^xcKzDrF>5+$~0dGBY0nek<@zKMvyY0URLcJ(=T#p~qA7DO;;C{l$P zYjmpI5hJG@4ej20X#7U2IP7p3`Od zdvgwFH7dLTiu_1UCpgQR)z4a1Stk_-RE!scndX%p!QK)aWFRx|Q+1Gbkf}wuuU~W^ zujxTY@9Y+GgGA3HQEn>w2vkq;KjAzxE_F!~1-5fRoDWesjKVzD^c)eer)&NIAy(EG z7|=@W0W|?_tcvI@M+IW4lL+s8CMZ=z}->+fNH@(Ei@IMry^WJE! zk>VZnpcpuF@XCa!8A4*pew|Y#q*<99$Hj#xymbrQ0Sa7sB;?~){I>#5DcveH@Rn>@ zK)vwAVnlc+yI%I?-43w{tYZ;Mi?^iv+#lvV8Cu*bdAuR3rNs#LytgD*E&RA7a_kZx zjk;NX{?Kqmy!%;Ct{kNLgwD+~o?UyG|MlcZRNysKZY#*0CL#Cl_>2G8xBd&eg#Dpp zA7_aT7W92&*x`KWn4WXzr;I?*Hm!B~&h3V3XS9Oko9t6DRH~r@Yxr^yI)Z*9vOJys zp7s|OqMMHXIZd$WlpNFfUnf*G`aXi?5Rvq{{9vHKq{C3b*|a}=O|%wwtPNp>Z8s0Tg^Wg-QVRG}bVFZV^2}?|&la$3w zSYL_H@9tWg>9DkKZ#RWtg2Bj>Bfa1&Q`NCT_%mvFxB8l^`;9eH281pvSTkvJh~1~`pe zzpxw$8#%aXiTm~&@{^to{lPm#-pek*EHQCl3a*Y-MMwXs9Co^V^Ulo-za`~B7Dhp% zdmVg$oWhpTLAnF+(j+=wr8$0MS#(ngX4QapKm7(qlVjkMdduumv2~*8qpk*^x2QU! zEd}G*+Vfe$oQeYM$Szs0?nqlpJHRf2S-PuWXv(aHFTlDn$HdN zZXUS~I!|Cg0{XyZz(PNGiOhWY@ZBn5wCJPS9QEEiN;2z2g?ni-F$)##CAs9w9em3s zxS}pBS2_r+&M!QJL;?@7BFLkq8Sp+HwZrZlXZOvS5$|n0Z!QL=R&|Cw7hT+rF8Eg4 zvzOdWyu+V83eA)H9j$GN&l$K`YVw}gUHIsmXT#)$&_l}AeCP4SB51NDCtT5`T|r+DMjm%t$e6O^#>3W>~X<1$Dc4Yg^d*n+ffj z_jpiWiz$tDxpJQLqP_W;Du4p0_`-k)vWWnS zlXogXy^OtE4ak_fP^`m^k?JJ8%k--W<7h|$!_Y42%73C@rOtM1mojWoe3#-IlNDmZ zNcX77enk6?Pn$@{am_xC?BT8zGfbfzb!}{#OpJ#mluZ=#T|a-8 zzE)6ei_FK#tHtFX{B~os$J(l3Z!xC9A;`@r&w4bErAni6?_ObCzo)Fc;hy$H0zYSc zJL%3llKy?}#m!RE!SHC4086~RU)Eo1hgTIq82noL;K%kOhCnC$e2H(K($jG>Jb?~q zAqVFaBhR_;K(|*DlN5(ESW{^pkc>^3B9Yjr@26#-RO^Sg#M@v`6O2KNb)Rv%-vhr0 zTSkUF!Goc;jHC~@c8D+|6MjF*ti&gKI+^AbbiueJkD>OQg^o#8ey*n=Y|BQljm6^B&Y%4$ zy^;bQkJdDFim9kQMCk9xO~*gWA#c=uP&64Nm@5lxm~;l1pji&Jtw-nB<|zh zxT5-59A#R&z2XR6!5b=#mh)mcRjSpV9yX(;hF~Ar1iT#E7D}c>hgpnNj$fhe{R75j zWp@u2JFYxb)8KemY`*xkj+`TyCA&MJ?F)cx0WjDWtp*LwLMEBW$Tv2+t9f6y;lsqT zWKbw{rl%(Wdyp$SEpLNeY%D<$s+5!HH15Jq+8A8rT4$pYg=9_}-H8{vNjGpq4g2sn z9GYx^Mc6yYTZ37C3NMLIp~F6acz0Tob@p?~IE4b^M-lvDvD@#B>4U-asZF<$&}^3| zHwRr9p%J(31*TBHPY<22JAJoOu?D=54kGXd;!4(*$bi92K!l<>kpiZjj9^1f{0Z#=kk3S@_#U8weSQ*TLOT#dTt)QNqBxFX?>eu8}sbLdEQw(29bI5g> zb+L1t5nZpt}^IP zd5kZJhjMDraXbUTJ$_E8wRTkgnjIpV6SEr7bxJB%7*0vie>MFez@#4}tSqIcgFYr~ zIrpsNVU~xB=UbxH%cXe3J+;_w4WiQzcV5=+$k@&*x>5fU@7Nwv*(v)jh~;CKJ)yRK z+ka00JNfnQ&Wo)X^myNvIW(Prm1V3YaK7$fk&bbcx3d`D@l8v@eEPF&4ZYU4C8#xY z_xIv&v7lXD!eiy7oj{Y?uP$5eq=;cab4^loZC8+fo<4( zaL-R&fHaF^>pn;s$LdG^`2X<;8^_*W8`;<850|scyFzMH%QAjuX!(x2#Pw%vUe=$z z8Z2zElZ**;#ARhZ);w|5&vpC2(u^;9u{b0(1*?!{`|_$&dz-`%c^Gct6gpa&X5KiO zXitXTn&*1*NuXKRN=;;gYeHrHj!~f9jD3`yeCh7bFtgG}5-1imhTDOjQ$Y>NG~3^` z+a2e7J$CH+=^z3lD+zXyGDi~$+4uC@#J3w9^~+647k?e=FQOw>n45}cKCqnFS`f}* ztOVuitT_Jay{W=uA>!>Z)M`#`HWGZ^2-I38n(Ahw)$|)F&tyac9S3j6hjO-$8+Pwr zSw;^lOH0oeSBUOAkD1;(7h1S$Q}dfLg_ypWE5rEJ69?>o@}P&}DBFR2`6ZNvi1Atv zx$bbn{b6ZiEN*l&${xil1S zz_#$QgzS>tY7lh<{nT6AIS2Xtrh^lMM@yWCAiu+2wuBhToQ`)a-GrPo4z7E4+`Hon zD@#&mkI_FdUbTxG+^Q=AtH<#u5vziz z+f!0EiSUcBNxWqX4H?DVW>4vNbgOLEtqmrF`3v*X?pa(+L$|%|~X?aT>8ESf#217e& zbvzx!=t7(t2o9xvZLQHx*kd_*ZYdM7Q#B-qRatvc@otsJqhIJ#cdC|`C<|^oW9{i3 z#`$|rk3YdnzGr=Q;JCh#;b%K1~J^D%+Nk3IeSm~W9S1KM&jTad> z91k6Cr`voU?l9-y_B>nZPO`uif1pxZ@xKY`)u8+wX=uXx;;k3L32 zv+VMdhFDwAcg&iPI|z0&M{Z15d*BgjXDo=ySG;ifZWfxA3lb!Q5Id&vFLhkrknUTu z(#B5wy!bAGFQ)7`8_B>4GC!%>;1cPye1%nUY=0b2Z4sO%mRCpe@uVhQeTtuk=PElJUaB<_&`-sG%yWn4!QT{E{DpS{XPPbaJh{ekqX zS~4yW*nJ$BXDouMx%|ZUaosV#U+i+nyO}o(*`ixO&oHxkS6>EZkBR&2-}r3*MOFQI z^1~Xn@gb&l-LJ$kLrnhN<+dLJh_UHH6o%fTAN@s1W;Y2^@04-4CYdE&9MGL6Dm@;4 z9AXNDDtf0duWl*bw8W>7XH=eEbZt>K#a@DJf2a#OIR$NwKHIyLsB>e_1=-5RXInYXWQe zi^3L|5i3E5(0h+BW=iz)=Dk08(C3kVJwWfC4kuIE$~QtEx2IU6_K#|6Ncg))eDRIC z0Gle&olopvIVa^>nDvs^N+PS_6TMsYcp;CDatOvS*Td)5)<9v7k6kZZwIFQI_w?y_ z{`0v}=`$kKb=?bly7Z;<3+~)7129JfhkL#wCFSK3f%%rg`i<(aM*%(k0_Fc>@+*pLre*7%k7U>;__Lcy@ul zp(n-KkHv9qe1&$iD&^VjkqWj{<@it ze(NCC09ehw#LRu|`v?a}34HZXa9lF4*}o=Am1@_gSVBeBU%FH(uy5gs>EQQ_<-On9 zS^v7$^T{BpZtSpK#FC4tkKK)?Fx^74;&IiUgc%rB0T&6I*CaEeoLhcwI(zXTgHS@Z z5;%2|AuMs)t21ala5_OCug+XTa>U)+7TwuW=? znk~IB>^WhpTg@oGpJj%U<2bDN@RPS2gA3zpwCO%eR^%S~5T5JB`w@cQ0|V8G2?p(xP2K>{1S5IIM^CwfE_MEO2#-2c&0>(nqKa6YWq57SwS)^Ww@worm^y6b zzwIBH6-yVUS|r}gQ{iu}p3a^r@$`=j5!A*vG%(oQEc78^dm z93%5oS<%!>HR;D0D{?wAw{U2H=R+bFE_KY!nz!i+>;zqUtz?H$FkUc9M&;W_SzoM2 z6;PYlac+4C4A@D64V$_br<=}D;zin$1y-3(?I=`%gdN7GwgCv^?6#?4UX|y-aU^HV z-253?YwRnSCM7RzY`RXJgk(=>Yl7}T1EVash~|7|8nHZ5$TYohtTOv%-KGR2wMTnOh>Jl`6Opw~Q zB~R@?ycBiHyyON-Uuvn$E2}ZnAD6w7a4e8|6m+xHKZ`TaVy)NpOyI*|aQM(bgU>$p zs|oz8{V`4W2%YVGZBdB`g9)-^+LRma_<)ZigA`Q_Crib|W9Cw-5PuYPJw3DU_0P|> znPpK_H2?hZEfs3ONzEO_9M^i)A>k|p$|_e2RS zAE8~@V18wwlt`4PvY-qZWUVCrfPvYw8PjywU`7r$)n<`dXvHe6XWJsi2bztvmLe5x zs725*O}ymG?df>bBFuWkn=uIUtRBVKJ{5ezH-~aASGrgA zs(UAP_+yTz@u!r!@Laotpc-{Wdj-TFVA#D405?$)?;HFBbJsIC2fi|{j~R-=1372k zO0!Q|F2n4~wuTQDh`CPj7^f5`N0{1X@_XM{er*=!_)^7N)k@+CEw)gu@;&wQY|=v4 zl$+$U*KLJEFp(PCk?6w8zcprYf||e+=X|qC^(NC$lOlfNL6Pp9jLc@tsST8KrSV*Q z(Gg#5{LHGd$PU8X%;8G)Q#CL!=vZLz&O0oE#W#D(+{=iXQ2HP_!mC-Q&L=NuyH8-i zLzw!sDK?vmv?k7EwQj^;znsu~Kqg3BjUwfbtnV&Z-=-Il|NYYbT669PR0lRxD@TIb zlbm=@L>ShKs}|(_2%p|hqr7hgAf6hG+?U+9YZSdxEA)?|i8Ts6P{{mz6^!$;Eus&F(S5wg;BVhjetQRi`bCWwdQN97fd-sD^G}AlhyChP@1l(J zu;v;J{vQVmu*+%;{T`pFBK4jeqt^fzGGhkv1xC;*MiCR-*cFqeG z?eFyOKOoGui#oCB<4%rFz%y8y2Ao?}r-C@_a=0BhI~b@5Y&74K?m`p)E;N^&E^-Al z$(LE&3-bfry)KwWsTSMb7?V*A;dC+ikM zy4)g7JE+?ORP^MNO&5oEmywd5Ry&Fz61ao2W}pIDHeG71*(~Fh^jKl1KLHm9V}g2x z&W1#gnRoC2yu*pXUk)@Z^V5u(eT%T>^%lK8YH8E8k6Dr**vZy4R+vBJ0@o0)Wkz$` zvZ^bO=M)ArY{PtkyFcM z3%KSaz@@5^!AZn6;i2adm@GHjxzy{VCdxl!O%V26;ev@(8%-X1+35bV>53zbX`eoP zd49|m=pX1P%`y-dy4R$=N9-pv19k9Vc_Gob$N$EICd~VjMZi(QRKz3g z5!eF0I|;mS)4$o1*!-8*$@fXkHLtYw>qCR^awV;uZ(Gmqp%M7Zs_#BNUR-lEd;~ zj8H5~=j+%V-IjG8Qec;V>YjjsS0HlqvvKvo4dO7&h|5H84Qy`_z1MpNf`;YP8rkbE z6PNBQI|yq!Z>Ve@ek1uH5BTc*`l^H-1%)A{z^1F!T6a%$W_%+Wmn7gdWD7{X`7+p`tFJKAlJ+>yG|MZ0-@Z-L-it=bqk#SQZFpvsule{A{?{r7IY~IkeZ?Igve|3xdiY{dzO|*5d z8uR_^UH%6}CfYT_-$wR<0iJbRavJ7?CO&Nfr`l8XHsU76x1%y+x$Q^mu{Cv}cN3H@ z)ddekZ*D0W$g~pU7+SVT zD{42mT{(P&#v_@MKBiT*QsKllA*S6>>tWypWaH$Njd+!(lwQ*Eg>>8HBl*+opFHTe zE;`&QI3kA<*LP!13roqAien0VvZN=Kzw>Cq>|wOvE%pX$4kX2$jeT0o(tG^5x{egj z+NXhH?){_9Pl6tDYqte)S+;lo{e*7fDhxik5otsV+R}&^qlOpVVJqf0nSGnO zPZ)_(-jkQsL9{U)(Yr`?tni`eaS3g$Cl?XXQ+NZsF^JV~u2`M>ycwU%-?F1Xx_E(g zTZ)55XhG{~3T$#8>2>03&xFTTZ}&+7hSko=R1xg-%H6)i8{hbm@voM7E2V*tRtCzO zhp&1t5#+cfYA%oI*ghTD;hea9FMVo#;H7gPPBlGz0b4Xs_`-9$US93~EWQP!R#(;9 z_BrG(vn;oPY*q63`g?Ds7PkXNGK(Hb-l@dp<6b%~%f~jGX1uqF{Ivg+a3E1BEkHJU z{>7`#0Z+2S9?OOT{q75ormnhO>8^ObP|?CK*0(*(Lq&p-JrkG*W~VxQz~Q^KB#LwK zCVRU88>;Q>4PV8Nnz&;+y22zXF)KCGYsJ&G)rwwhN&OVi7q!#q^dK2`8SB zs!U@YzLioyXLNd^1DMrFUvE0h5sL~CVK80GSrq| zRXUovB0Dmit{7BCp`4j3ulC4YU05m+y>Ds1zJ^mkVaj-4@0A>_PM3{?Lf}(sv zDDvziUa1H1WKmq;=k#^0AWw9DYS^oEcyAZqmnb{}6RTIqOFddo)LdPw2+o{(+g)EA z7d@Ro7bxGC;Q^fih4pvCnx_w^-L=wy?OM0v=W2CT_fA^YO{bAs7PXKIwx2`T*%#1W ziq@RjoXhW@!|pibtKHmS$FaZ7Wkyfc1C}XibDr)+sW$1*&kh`Abi!7j+&)&4nM$;x z!&15??VDi;!ZSX^l-6^z6!X=Oe@i5#o64d>tafgS3DE5648S4}J zy^+y7t*gB?Gjc(O>=OEYK09Jf>^n0xVQZ}1Gxge=Ay;9t$kv=tYaVuFCcv44(PvVFAQBcig_``apM$DS40@FP{qUD^+Q z9PgJ>S#JRzESNz89av7I$l}v@{ao z^QlOp1n@A;vZ7VZ#Z-v%mhfJ=`fAfbuiQHrZEzzfN?RbzJx@z@yuA#e3(-(*tg z4m-$Rl;C=TjI(Zjsy1a`8PqRkatwC2FNQIRW~&CKPoF#tLxNun)yap3a!On{_95MC z-orTi4yv1}KtjzY*yxN=4=H$iL;R5TOj?sB9^tu^D>sUb#lBP@gYvjBd1d< z0cc9-F?z5lGYU>@&dj{5t`fiSZet};#lHOkoeHCDrr*l@tRJ?XUTC&D54zChkm-c* zZndgli{eCR!dnD=gqgsf_fF(-zT1f{{B9^(zaRZ`B35lkfA97+f>^dOc@xo5yW@GG zKEIoa1X4S9J-HhAw%%lWl}r`&oC|Z@s7J$odA5w$WE3VFyDhu|^3b^q9bWeY>j&GC z&vUa41Zi+YcY3d?&7}q_#f18;2e=Of7|in1CLSrNYW+oV#ch|UL~7NNEIA{Sr! zSv6j=i)UBx@W8{Nf#!*PI*Yi5cb-cbVVHEcchXHemMb5b45+MTzp7mq;*uvaVn*1! zs=kZJjy>}p8X$hP4PT=_Jx)!7jaoeRZR_Yi?l3~muML*+)`=UX`lBT4gJXC9ndwl& z#+UWDp1=f(GOE-arEdpPEe{mwm5#o2|DZ@&)WsZ-h0S80QD;QExWT2;w;?Z8kx^%= zqlQO&e6A^;>(|s$lgsXoWVwFvs9793GS2ZcyD9w~P_1!YmZ@>)M$4u&nBIEN)mUbS z8IK_2haHA6S;bzVYt;`#v~khBd+K%&vIPP^WJ7h~(6eEzBO;^I++N5iYkh2JJ&QZO z$Ol;bBB`?9FX*W>f zT*q7I(Z*z5Lzi|f5uZ)6Nq)CZ+BYGz!)g!q+5JjnDDbii10^=j{(+1;*9@hXDRnxh zX3uIgeJZ~Lo2a%L0WFpQJUP9YkG4f!C&`C3E?q6uurO0$6tv>l9KO*sE8HxpVZo9& zy87|Dtx00ia&Z6l))L9^JyJ6faPsfwoU{@|=MW2ke8Me_fca|aDV*#Wm$|iMp*yCP_@b>)UesoV+%ZN0RG`}WdbX3k%W#4~U{Pzr z*pV_rwS&Aocf^6;88X%3I-Y-xsBC2KV!Xco&Xh7ebzu9D#uVU4Dbp#ti~HuEnACuW zbAnI*z$=T3-ge}CGE&Yqf;Ri%%I(b`<=x-Sz01dDAmkmAN9mtg+i`lX8Fq6k4_0Jim|mRZZWovbIc~nBQukyeVoBEDIRR zYuaJNFuzIii023H@Ry766pHhXVrk>O79`l89BX^;tnd9tq((RI_x>z^kQo1p3%l!1 z6zdmP`=3_v*X;Ueu*FZSS>G+qr#WbpM>QK#S+Iv6Jo^_v4Jr8M#vs6@{hX1pcy!Au zrM<>Hdmod+Cl98k!fTb5Xv~_asn6zCPPGyG*jj5pz$9sUkSmGL-FjOU8^n4}n{>u_ zo)$aYQ07P(jmcEH<&!WZg zrFuuXax@IY_hj!!%VvgQuuGRhR*Mu`LGnS7XtStak6HxcKlA(a0|r$qQUeq22lyvM zDhQRO51<~wspDf;l_5p4u8R0E1Qmx$_km)yIpT_k%s^4e_y`TQ@Ean#mVCy_v*P_{ zR;#c9!eB>ceChB0pF7!>rHl)!41RT=!=G*6BWvBWSR3rQ{zFYi=>6&wJBufDn9aMJrc?O? zm#VDuBbxWN+wxLb(B5`oiL9Cl4BB2u*uMCLB%%t~-&vJ;$!99IRo1&Q1!rWoQ{Ktf z@en1YK7C-NCS3Q|p;2bxMj1u36f*zgGRtDck?coX>Bm^1cyIwNHpb$izs%50X5OpZ zq?U782WTEBXP6|s^4H+EGOpQDV?NASM>#|zsES|PMg1W%$Ts{!`JNpBb>xG<2A_@T z?2nIZG}g*iwnMd#i$F$e@*4RUF>>0OZTlq@x6XF6Yhq76$@GpX`!DdD&XV|2D(o*lJo^Jh*iwCfW;B;>|TKch#G$fm8( zHWxS)U_A-dG`iTNraPGX;Gqr%`Ak<(kO`_e7g_jZ=_q|>7sw*o$+?Tfj&ALu4oR7k zStBLmAd1-CUpy4>Y4U}N;I6ud%r9x>?l54k7eRaDVn(tb_YZS9wKr@u>B1>x&)c;P z1oThRpXy;Vuo=7;xV~>O`cRlPr<_`Ti=-%a;W%kdENi`Ld$U#La*SECPh# zRCEfJz%t_m-vRcn@O!{?ZyMlL-`g|GL%UaB?-_Gr>j!rSl9Z!i- zT=4&qL0h4!)KE(0#a6!#mvJuAI;n5TT)NbAC}1Ml(oU9)7?5!ka(}toAW&=wSWKE% z;k$h_PX*{r*7Kk4*&Y${$yMTda6C&CG>ynGGF5PmnU85;M>JL(!HUic4Say<`)f1r z=(yauGoSQ7#8lCVis&{(3gnNjv%IjXvu|aD^YWRE#;2wQ0I*Jf?zb_l6%$_g<@>fO z8xa8;(8cH<<6(5&^MYdylol40hLZKvrF9 z%tLF;h7jY{-&|U16Wjszfjt&Ii*GvLsYF>wN@JTZ*rq;NQmMm7yny3Ew9+Flh?3I9 z%?k4nhT>_GWk;{MAwi;y^Zu8k>=b48aUg57ZDrys4|$KSH837L^T9vHwfd^K-2r3w zL>Y;(oNULnZ(e{K=8cktabPEq;_BqJ?LJ@6Q$zM++ikZe7t}sQGZ|Is?at=`M^`Ym z7W4*U}7N-l%%+tu*-|*O&lF>!OXuI(|modk)Vc zN8jOmZGqJb8Ur&v#n34q&AJa-pWXF539&AW+9TcNqE6XAqaJT9zmTWgZ)C7Lo`(?L zzhyK$_~B!p*5D@K^U!KxYazUFK>Jk9T7SySBfd4SnyNi?qI~)U2Io_aH|YEnPhn^D z*6hFs^yRFC7TB3q>x7Q2IbMlYlKV$c9{va4iDzW{tylVPhdPGyguO@k7<&{@;*3g( zRJJ>)NIRW#_VsE8nxv{F*g=gWcMv_e#%0Kr|(fgv_$B)=LO9OBw6d;|tu;JLy zwwy_Q4b1+q$m>@Vt7rVI@802EA$*n=w{Gq>d zgsnmp8A^1JaX#G^R#eY)D5~e)3(CWO%^EKou*HE2#F$;R!Fyw6Zm@vUtv5Go;cA^A zY4yCP8u@8pzl4-O^R4Vzug}V6$F3H#Si3&vh=Y*2vU;Gmk*%_Bkv)yuQS2kfc14Cm zY=5e_onV$8T7O@U`d5sV0ncOWKxwl@vCQU!UfHD42zNqWQIF0*gJlmmc^$T^3d^)p zCX8h?Z3pQtuFk?`q?jOFI!#{FYg#v6$8lFmq?C4D9t*emx>;`ZC}_1vFM$e!|Dq$O z=jGi{EGX(VVxaRbl{hMSWuio~>8`sz7T6K0ER)M#1q zNxr^Y$*EQ=QnJ>Dt(!;8HKrNG?8E>A{O3L7cb^6-rqkwSFSAvc2v?teH`b#0?krCZ zf17R5xsCWJUd$#ULm0-CWUl2y>wO2CLWtjKUZ6*qeFYn1^#4_%6G~`atYx>Cv~?QL zL>`6*S82+|LBXN%Ms<1qLmLcUW2A%M`H>TuS5;A^(Q8=} zXZ_B{K^u%kBI~@SEO+{iJyay>FW=;Uzi&T9{%37&I7NmpVaEs`U~xrfcYGQB=khft zfZ^>aAw5+qYC?OPdEet*Z^r{p!l;_*yF_a0wOKCVd)IW6fhSZ10gg2-&Zh&cpRAFC zt()jJ(_aLmh@<##hyVTT*yr@HJu;s=l1pFr{BvoOb9vXVzpncqfBopc zf91co5uczes&wdQ7W2Or=)YU%ugq68jPpVoub1;tk!r76<{YB76iHlM!{Q2E!$i{f`GGG4B7xA}m=rPlARfuApzt=|BJdZ%>$3iu}U%T1YNcy*lDv%SK-ZbmTFoHqdu)C3i(9k(qo4L>TdThkb%%i{0nMglX7R!JAegAI(J=ihdW7A&U|9!YL zw(glO{Oxo6dI(-_*n+4%`G5ZV-=A>eSB}i`5aldF(Q~`~d;jsc>RQtO`FKwln0>P^ zit+!sPJeqZe&>E&lxF!Xcx9Bh+xi@n^axR7JGe`>A3E|=Y; zN6wp!hpv7m4OYb|N&749?^|#+Cb03+-~Kf6v{+x*g47rPeYO1Y0e=0bU&in2WB31m zfdAYT|NjC0_Xfqr)39Ajuo|e?2x;^pyBM5tc_9$HsU?L=9~9{+H{-ExPcAMr@;PR` zoQlI~6>~A#^K{-uei#X6NK|E_{*RE&{O2vk3PIY)@xJz>|G3U~F`Qm;&e)upHeH%p zNM^BnP;Z;P87a|?rsK55X;0_=oIdUmg#1)a?XT0Js`S5fDq zXsg>Dlo|7$Jc-G!N3PLE3dj+&c=YR%Xbt~gToQf(G?nG{C0>p_gaCc(@Z*UNo&?sqzJ=|9qufIr^7 z>?cS-bYf#!|N1ku%5u`Od5X86r1UgqrGzo&uHdOvzhRhsYV~ow!$iy7zf*>1`+ol= z`TyNtN?~HR7?2h%4a4QQ8)9MU^^04Do~YeB{Qun*Ho={9YfY#^hM366)+ofhMBRr| z+CqQ(T}WZkzt-DyIazC;Zy4`Ei!Z;!g6L1TeLZ3S^_>wqk(_PG4YmGfvMF1$Z)Lu6 zaOsonC5{e7Q7mrCb7ih*!+Y}(fh|A%R|*pNBFn60)h3L2H_hI2{Tq`!;IgI0ZjjNJ~A>vAZ+MS4$gk{)~zQ_F@cpZ{9) z?Oa1!=_#);WT>xY9wY{ep~_Yo-u*k|JPY^$y1qbevxKHXf*v?AW?2)n2bYP*yW>Ue z<13cBtxYwc#}qG6Hko%1PBZ|wS=9Pm5V>e2mq|4@!$w@+()Fk6`&bOkN{ zPNYXr_!lkX9sqmReYR(|y8v3}Y-&E>izv2og3f`S?fz&&`2!~pcw4)!u*u)%qE?`B z_U?D6VN|esbzvQllS1!JtAQRO$OYJgIrd|1*ReRaZt3+&mQdjvhPMzQv*Kf67ysI= z#cJYz2#N2*dkHS1&{ir$z#Z#Umrb#`S{8)4(-^JO6aaLyPN0k&5xfsGPhALw@%zwP zOxHsuX^SW$*EgX@WTdUxX`^5|-UFz$H?C3*gN#NG!tnvn#PlF_m}p7sb&0OrIxcHq z4!L-0>kW6?8D$>vn9Ox}k1Oi_3S=g&97fxodoi~607&N56_R!W-c=E_m}_~=Lu58) zYcAZbrT2ht!X&Kix7W)(16vm)x4M@N73#Y});$GQ%Ollj*7P zd4O=;(QKKM0)A!9>bs!6x=;>tcp1he__?JEy$+Wo#^1iQfe&$Zv*|KyToYR9PCOo> zOgo`ywM>!iU>Ru4}eJE2$Z9fM6nL^zt z^4-d}iF4`51!XQ)BW*bnU`|a%z4seJ`mvj|tQRlNe>t{!^#o&ctXQkK>!j{YBfg`) zvPFjx9vQc@V9lDH!3b7aK?@>2vJ~ z9CVPveHKC|Y!4sVp5=KZXJ@R!QOMY2xETg4wJ#P&z^hJ6G7jZYjgDx~!kpd$F{gaYIc){6>CCzx z?&|oj6Q|bNbxayxzq@6-Jl%(2)_Mc2Owud2%D{e6cp~at(vPK5a(0Y*VFYRsWI^>a zc_e=_$Ra+rMKHtO4ZA%ySAZW^@B)`pjTZB0lb%RR&huVQ!=no9Zgkrg_nj+JJ+@Xs z0xs0?Jcs# z+jCy%#FI}yWphTf_-;qfnZw%yHOrmh z+v}3iI#GVCt}vc3TisrM{gBG@^~IlfB-+x|*u{#F2SYkXjmwTBUG*LE$PH}Z#6qtEApYE+O^6Q|F{T#8J8S(4Jz zDi}rY0EI@;Qy8rof?!&rOn=mTiGx%VV(wlHHYN&FXCPx3*#*7w3EG<#WyF-M+|P$b zt3?a-w%|Gv^}1eiA5MPl=tJ_cb%sFMMoS#HsibVf3ZYi0NytlrtW!)C}8Sdf;T zJb}}f;uN*+I32qM;t#-cfRV-f>k35Gz>>`*Olf3U(rQf*V?M$gjeT3y*yk}*VQOEy z#rSl!`crn?N+#xL$MUkfQ0qGytWe1h>eg_65W%v!YU)JmLoqsLJT!23zo#~~42*J2 z+hJNa8gol}_2)}rwsuDydqOs8d4FKOioi_yLfGc|z;;ubH1OejERsW$EP>lu2vf=! z_QX51O~Jd_Z$lr?M%Nx(@luvQG6pY&Yu70BFUTg9xz&Yn_F1f~!PMoQ zteQs64<5ify`OB#tn2sV=2JWQ!;k+^+ z&pI_r9awUmN_kK8*;+_&{c<$8L|p=*%sRNAPYj`=9Rq6aLWr#nNq_KO)fZ<7^?$dU(xPMSfTe3i$lLX`t59` zy2@ns-Q0vP2%lw}iU(!1{W**3*YTG8g{kz+-?0WTwBuz*#_`{a@~WREi|tp2{C|J( zqoFZGtpO(*?QvU!$z={zu*Hl&^Uj|+J1zJ-G}c>zFbiT1O(e$)I_}(NREogJJ4*$C zkGgi@QEGzLi1`RT_p_T+fy(Xc`Q&k3)1JBEI)ic@qvF*G_BHTnbV`mClFaH4Z*Rz( zIKcObngCZUmeb(_l{(ABs#rgZ%X#601n(@!7hASA#?^ezRYjQuK4HyqQ5c+Y$Jg1# z8?%iM~eXU(teho58N>Vao`o?Nm zj#Rg4n^@)Dq-@7B66~Y>XWV)nmClzzQ^*xk&CA1f++6z+*Gi|Q+qkuGsU_Xd8V*BM zEEQX8qh|8q*6_E#AXaAHi_F zXy$W8^q0XzI@0BXmNdwly|wEXY8f3%gUw8DE@ff)jWFicC|~;9Y50|qXc|I%EJ8vr z=A_1~mN)uGT<(d=6s>S?wrHR9yU=}OCz9LF{kY+k;4>kh;df4I+NeTvYiqem z6tJF}%crCenr=_;Hh-y79r;Emhp3>9j_DDv(JW}vm|o%4;Uz%>t8g2B-~vo%8GyWO z4F#XyB%Z>pnXXU)z5;V~rjL~I{8>5vIB4ORrlo@jnL$&A=5PfU#>?cmi;lMoWbTJ8?;ht%xhvDVH2VbN^zl>7Od%O{Loct3 zpPJzt5*=YYe31Z>Qn6WU6E0%XMnq-`A&cXtp}Ja?H+Pq+8-B;m-8l$(AhcWQh}Rv^ z#lC+&-uf0SQ88qyN25hRB$D@o2gLavI4m5E9uS6w?aqbV+c<}v&5dsw`idCtP4yJJ zC5xF;Ya@TUKgeR(VP}*)S_V$1}iSA-;tT^Gcngi+gsdq zFXqf;!?foycBQAXlF3!seGhjsq7&|DSiD)041Ba1A5W1|><}<03ehRt!6bPmna6Q; zBqNoU!f6TagQ49w+>MU9>MVM%kxjNI6sJJNumJux&!J`!tZ_9mdeZpfRi()dW{Yps zmb+z%#5q7VO!5kzB9$V6fIxy-DV%>pM9O3|Eym7IZiCF-#lyr*uGY6Yo22lRHKtwv ziS=sgz!q|a6t5GQP#R}YxLf|)ywi~2H4TLm!(^fjw|$=T7wGm$-J7C6{f7D#T9#iI zXUx1A&li^_Z-%zroD28aeM!p>BiWfun0>;ZO}f_uLC+k$o4j{P(4Dn$_s;!xH}Nml zdezl=bq5O|XPQ=5?ZGm4L%G4((YPGW^#Gp}xpcy$%O=0Ex(LZ~@|8Vh_J2kk%nw@4 zU$Wh*hIKUQ?6Hu1%{EifYVw&eGj)qmw3h&vi)BxENT?ZdZmwMU0lqQ?kS?FK5+IJ5 zo?nQfs&c#S^%>D+n&UI&ZD&f!h|ktr^CU9*XYXf_W#SZXD^NwV_#hRni@*RQe|97A zrbMe(r1Z%%7U-M&-*6mE428uliX3+hWn63tp`n3aVQ9;8qDx!GMA}vBLneDa zdj@Fw#mM+XOSwB!{~XuXyHyD5f#Sqi+f0Q6PSL1-kR?J0V-!dAy-gQr#|4Yn7Djl< zj8`ND^O>MZN6b=m`Q>cfqo>6`~Phq#CFktdj!!cB_gTp3A zZY9nRs(HRrnRfjmQjmZjE3$1){%7y&zX8$+K9S>Y9)Wyl3ThMHaVN~{a@i(qIUMmZ zEWvzkJyxc*|GNhBWhp{>lrAM8B_^5mJRy8w*t(5(2XJJq{oK!_N@IKx+d!nuRVY?Z zJSD@;$s~*DS#*FXMp|5tU70}n-Wtlr!N%F0`DO4vY`5D;ZxZq8_q8LdH;Q< z6QS#aMWH%yvvObcgX*|?8iWkfu6k{alGO*a=BuKtx`DQnFJC)7Dn;4A&lLKsHkec! zzjnFw^oXDU8_=XrQ?x3U)EQ}}uU%QVX)^E$MuM?AQQ(5#$ zJ^=cFBDsBL|C*P)n%`^igKCTxX>g8fWnpeBb4o-Nci_oc{H15DAQyH?E&|cQGig~o zmrhqKes5VU-CcX>3nqNE!o9AiWBCcFuqwS|<<^;%GG6p(=kk~|Rg;{%e4d;b%=MN2 zX`RQ*Em(#u-JFyC*3Kv7hg$ZW@s(Ak{eIAQ`oU*r@@%lcrQG_5J3HO*RS}8Bi&oaU z;Z$R9jFa<9KC^Aur>IJ=yOSTReKI|R8H}}`irY~H^Nm!bV%P1L6fVz-!s&`45l5+y zbhaBSBV$YBjZrDjiuc*O zW=>*I3=wQP0MDS%6D+-MlTue%hKn-vl zT*?4CnW!=`h;Kr;H87>M^hnE|vk1z0oEOVs(l(5HA`R{z3C0B!0A23T=%=d2L{jeD zq&?hbFb@}gEX?kC(P4)NO(}Lb9^MFpHiiYjbzV9)mTqsYLpA8y@JoWOnjBZQ$LfJm zs@B(Cvg?V?M%IN)tMM6FvlQ!2(2aZT1hV*31+(My(dk9boNW|iDa`@LI?fc1vqmj$ z0jd|ejvJa(a=kX{^TeYq$)z(-I?_{B_Ls_ONI8>to*YZLi+C|gK*@mva~D&M3@4z| zcfnozBYIC%ORK;}f5q^Os+Z4vLdaf$Nk-mS+=$_O&|I1V#W1(z^1leY$PP5#obSn+ z5+?`OnN7Si?;`WYHpR(k}7O!Q|ZmEiEiE zhWYq&pKLl635c{G3yuiVygl=x`sRC#CJX>!Pn{XTT+@7g)zn7j_5K-0^&XZPmt5$Z zFE#sY2@l`fP1%=WEYMz-WYYGsVp}Xq2<0`ITNgydyUd>M&SBb{kxs_$igU2CT?pP z=a;4+Kk#(wrhDHFW)Y{;l_e_%= zW_PA%2H8e4-KxneWF2 z#VL6z*z$-$kBex*634dKZt1chG%eQ0?!#oTT55Of+;;Bhl(=rNjJ>UDH0|IxwvDD@ zG<;x{nEE+@#d?*Ailkqidl0Z8UO&hk&zGm?5ERMVp+j-hY2JmA0tGmgwQ_`RVflBu z1+ba{u1ufgyrOhGd>h1h zzoIQmb}nAA3_Q#Wanb`2_|hVQQ)%nPRht54j+=>N&o1qGoMH=T0)kQ8S&SUNCk=>c zN`L6)O=T1YO4PhxbUanchWlcR(t2Z{6!+(v+6-)6Blx9HtM_GQm+~EZhKnb&9(GkY znhCryeWWse8$x6dEcviF{6yZYTT$meEjCiOnLSYB;a=FsmPlX{3t0H z|2!j0rt?tgJ7VkRnXuvYi%%Vcj@jJjyD;{CaAkh(hb^2EAXVxievA2fcyv1XQQlhCn!OjrBw&#a@*II>~sOYNNrCIXlV3$?`gd6sRSU1o4pY`mbk1V}3Qm;3z z8*%qPTOtGTyJ6iUG!s9gJm10MI5YyPas`mf3PzuHoAQBtGTCzL0|4>2t+R52Wa{@n zLR3$MQ_lL!nz6vXGvcVaxq~2e{r!i?KC4s*)~Eh4#|9+syRDCBZYyLO-m3`BT2`p} z7QM4ihVGp%3iI`chV9bp?Wd6@83t+w>nU`}%#^pS;YDKh6>N?8DFA!Bzvdo>opsy~ z)Vu524 zR6&!OOi5<{Zi?QsOwu-bd!;{0-Cb>)QS&1IyMPue0x?7@3*WQPL)YZ`!CL4(nTM2neG)cJWllH#YPG3 zzkrA~aDyNOzWjTeL4gUN(V_vHv&)Z75i~KIdg3lI(316VyXwVHU!fiswj;He=U`q4 zzH3uL=@a+UdVwf(y9LW4r#nc_Lw~8*LO+p8D((jYTI(s;j+dtL9RG=yQ+s{p=%iGS zKrFwkffZ^EMy~07lpJiwT{3Y+=!9DYh`yxd0GJ-(mE0**KI?DN&IMELt;w}UEi)We z!o~$^=x9>Osr@)F0^^Oj_|$fmBJTm-cV8?zbGYxUsHl5Djp>j~YeF#^dHeGESCUjI zff^ZRIN0Q>mg(R^5jE~RJkj48ojn_3cP3PZRms$eqKk_u-$MH6bByq5iIUk502>q)Ry_R=hKEs?6+S#SPS2CeM)~wd}8Z260k0Zw1=D z+8tKMiAFXi(yl%o;$P!{c4ByT;+U`OrTuBzkKPNCZ67sVwRM8%cXdj`wj0Q093qid z<9>5P(mgzK6x7bxFeQ|ea12612~6W3u}@r~EF zKn(-IG{lB;J2v*pB$=W7^mn!Cp!Bzwi>uN6mydE%;?s@KGrV#SZvl7)O)Imc>q;+6 z*3G#kr+7v`{LS`q)pnd4#rq3yKS%zN$(u9H=#ozl73YH5WAdr5Wv3N;(3WcrQIP;L z{RVcmmO3J2k^YCnaB^+H9__Yb1t4aOrZVSTpX^1pOBgkpzAQ#vdFt#h=~s_>m&}gB zOT=e4mA_M27zr))d)Omdw8GkW>!57Tcabox@e#1J?SMhO&5s5H4V(RM+neAPwgg1C z43V3)S^|Wf-rn%OiwmQs1njP`35yR^mAnK=P`(dYwYzL;D8*h)>rPn=M5>hCr^>{q zwM1pXl3k|vq^N3@2Jhji?2l;GGFvAX=d9_f?XB76J))|3^b7uSsoS-WEb`*Dp~cdC zc}hX}_KtG~cVB5GrK5E-l}Iqxuh2TrNcv3RbnW~I?VuOxcN4spc6mf>0T5kt#zQhK z>qBLch#k%nb1uL{Q|BlN7^xB)TMLL_lKjlvhvG=F!2lM7j*c8|KSiEr&M3?r)56qx zJS*|}J8f*{h;4B@EJ^EUA zAl7D}e9`9Op|YgkKYEC#=yqC15etob}^jOdUTp{r&@w=&&;-!+SJz-}fdt_02qf07?VwgUOpq zJwnH7BQm}EWOG4c;c`CcV6+>Q`&X?#IbsF2aho;Iv?@!zg%Z7gHM-fui-qpW6zrk6 z;y%3OM}#R4u6=ixM0tS%cn=KLOlI7x@CIn$q=}9oAoWO24Ct=@X;j~hrDJBP2a#6( z1n&Z9nE*1`#k zflUXTe4&n!i&jC2f9IA z0!7p=~^ z2%*xybfU#3zd5m|_J|v9)*1TyDu&Tk^xQufkV(rQSyfwW-mml-`ER^^_M9I*$yZ{K zR{QWH++9c*ye0#?#kV7w3@wxw_>2(-**XssWORR}WVM`e^IS4vt8O{J)4R6jXCZ{K zh)v$nuLx5Ydzh+^Fic&Gj-MEfxIF^0;?4Ar*8F;IH=Jbk)h1z(0*-#ds_$w*!lu^^ zdi{#iWl7eF)FtQ>b@o47l8amzziDl7-%poYFr4}s?Fz`F`J(P5hYi3(>}qbj@7#vn zKNwYIE>87`5;Kx5=LV!chaa(rXs>-4L`Wj?K3V)t6?64+z^< zCrXS;9VW|cC=*&2zSHg?3>VG3bb3Hd5Yu~&(0w9~BPuusQ26J`6VNi`lwu%@{IpHg zZy4>vp72yeO0c&l|0gAwH);(6&KESBT|tZD1&~jLI%?z`7k}Jk6pY)1H?2JMsq825 zg;k^XTKG~^;5}Zv;>W9_JSEV=BmkfrNcneO7au=f{3J`K3WrGQm=-NGNi-uBaF)v_ zo>~u>0DculhlOY_&vE9KZ24mg$;T+?OI_g>sq9FPav$^T!_0TmBA2B$GwMuq?lr|) zf`W)M1o`2FLc|7m3eaNOsK?EoFl=E12ekQh){iW%mwl;f)3f@DBj*$s-AZM)=E75~ zi}=AbWp_gF&~iNP0l>d`U}9ft#f~rKDl?8Q#BCL>Vju27`yBbAiw$`W04Whs1hIIm zBKW>`zq9u9sWkQEqz8ze`uJm}z^`C?do&^ogdsMO2HTTWn2mEBX%-bfy)kXDJ|k`LQ|eq5hg4IRB?~p-LEvjY zq@Yaj#W+Fnk~#&q;%=QJo)nUz)b{qRCgq(9UP*rfwe9DP1 zW=B-}_MYQs15t#-OWU2AJ)o*Ic87L&-+Y4EQ4a3V$r(_%2y`-F`6?+L2JC(#h}lRR zgKHvqnaFFXji3|pK=1(agSj;js7fAD4|&sX1C6RsW^-IEFxm_*>vGvka0l(e49_gA zG>aOxoz}lI?6zmCIr*Mr$DCzL?#oTrTH(RPXi)B-E8AG}IR>ZNiXgmrb5IiF+mvKR zjc}G^kL^Q9^3jujL+OCf{txXYDiYGbAn)}7214wq*H|TU{>e%2-kobyqy&GNrc=D< zpf|3;odcfkrb5oyc9l9foeGsQ#3`X8-CT^g2Ty-q(Qgec+Z-n$I$Yih$krs790^^K zd@z5`D=Yuphe*s<9kmd?cHqMOmpk`ND#w`N8z4}D zrcFcWsHYKJiPw(mvC=BA9uz2SI|2QSDP#gYmyh_pPPhNO_Lq`~eKU#rKFPN28Co9|C?3xTDz|AK z`!kHbN$)Sg!%&??cICqYWH=FN4Du3gP!q(#;&~-cWPKzy&auvAY4y>dUa(D}Q+D2x zPp4$;b(Hwi;9b8H`G8*(jD=^w82>*K`>2q<^=lKv??^+oJ>fVB)?B6^<3)!P2hYPy z>k&-vCNS;JTR@?Io|g24!i|CEc^4S$9uQ3SnTBgKjqbA*d?O>|?gerC5%m3(--?TZ z)M-TN;z3M;|I^f+|JDKk`!R&_*RpZDVuuo|4||#|$jqI|yT}y{Yh(Apz>xkpr@~~V)OD%z>r_*qZ7IDW4Gl$;*WUZXi~$~W5@ETn z;njC5BR)}Uu{QRmHxbRhz(lQ*gOq%3T~!G#Qi~eE_VTM?pyc7vj<{n*X=|i?p|Zin8t2#{oe~QbJllI;A_LB!=z~=^+NByHrqG zq`SMjK}qSJ!J(Ay4(b1czUQ3p_x`^)Yn`=bv0N@?X71;{@4ff6uj|?~l^9XL1LhPc zDWUqqu-RUJGRgdRqG25FeL@UOwwwh3!pZ2`=vIvEpE9C(Q?25i=rMth?>Vsbx=mU&i5$l3NV1$CCPPbimB9K z&kq=xD!lA`_!g6$GwA3Ve}7f;YvI}M?3GsM=t%9pT<=5fdzsCYngpV1$N7q>sL-}$ zJHQv<*5AG-9}4d^n(@4{%j5%m@8G5B={MP<9;X94ivk;?qx?QVlLdZn+c10!>$v^x zmBvF!H8%VagRUjO4&uOi-9>f#8kpjZld@=2Qf3EmEe^GUmVt>%txWIt27u;|Ex=Fw zKsM}^#s^6*yYCjcKo)^3#d3;W@c$u>aMfGLaLxO6B$4}yqaf!{quG3hlPxM%ADX^e#cQHN)(u7t75!oB60 zk%kG*^1W|lFNs8E6$Vc(LT%)@7fw6D3DW%9dY6{j+06>hP605s8d%H{cIL&S);*Z!U0E|G_PjZpg{6ho)+M~$~@ zoA}jFEPvfuQk<8}2t}2$t?66LJdF!p+cMOsAdLXYwj?zmeRV@RB?*9JAZyugjT5fFwwdx~3L6)7Wd1?%q(2`)nC7H5@^kZc4foR|!f1xP~_TOgtU{PMv*t z30&Ra@=*-{Qfwye^lRK*C%o^>D*X6J8_9_RG3tk5o&c7bukYC{Ih>VVlIa4D*+6f8 zj!plhZVs?JXvM&}5@jTAF)0|6?e=bkiWSQJ1PBf0Z1o<8O9z&ecb6_-5K(9DYbmXU znfCx%cSuI!dOQx`)M>|F%w+QcD-Ic*UvKM_X9@Q$^aAhwh~fGT_GxwB4^KWqvi`3@jwA%;BagEm3zhm7T?Slpv8QPrJ4N0 zU~nIJ(@^`$BVtXJX$9^-tS%S$8%zwHZLUds$jm*8u}& zFR`w}9zbf5W4$G+hd4*5txKJ(y%j(;z&7>Z1egfgwfz$aZQ1#*w1EHf0vN~@+;~7) zi&EHv-7Ymi$#}*5g$#!eNFiB#vctD~^iNMUlf&4X8O<^XePHh79gNqk6+Wx68p_Yx zbPRz==-s)`Yu_3R^N=tYEVQx|?ddg2;oSu|L6ty{*Qyn@4(IS(uJr@h6NgGnWb5>v zg@2ZDcilH-Q0Jhous;dM#y|p?{2>S@%na#}K}d)9H(vKnkE?@~okfeKcq1Iak!JFP zV^@pY*r=Twv-8N}QosH;wk><3{1Qq{9+|^_)W>V#^lbY2Q85qoQe2@8M1$;BpkzMG zx1)>jIrqNVsW9b+Qz{Cw`a19)xwm(PaRzhctyG2XWL^UHI#2_j3%FLY&7Q9pPz<$h zKTPo)1&zB+y8%R7$f_>(eay;i|II?F@MX;dtU>b_)fi6yVo%@hc0T;O+T)WBut(R+ zV$FgnYi@vY#%d_!ygWY%!^Ez-pWZ~J3L_5~jYemd1dxeXcJSwh+k&W@ zlmQ4Vt?ex^Y1YCj-P5x71lWot{642Ai6xA$+W`*d`-&`02xSClgSG$@ zn7NY2-9bUd)5kSb-?ZpJ{y>}MzB5WPNI=E}bj2#2${A<~4CH*;#b7rn4^PwdvX*|i z>PT(?rjWA$u9$f2bqbUh@3ZDSuJXbY0Ea7sCVRgrm%6Nd6d_8#0E1(f(v$azKw)K= zqbJkG+_If2uECGMq+7OKQ$Fb@cs66U3pAil7%Z@;JbncJ1R2-|!$ZzDcGgyb*-{^< zI(;>wh7Pk2oB))=**+sO!K)e?q2zY~q|{xi-mPr_ut@FGu@ypkXjV}PxFq=ffIGwh zFm%d2NmwC?*8%pGX!vFXuz$Ncj?-pwZE&^s6iB_9gw^Z-lz@JnI@3u&EgPOp_?sjj z%XqK83P~~K0P=7cCQF32{vSn&0+lcH!{09=CnR~mn@J0B*R2Q6e@8CX98mM^=BLYaeFx^b$cRLoo(&x`Pnr3wzEZGM&+ZtzCW5hp_s4Cl;am z#(*%;X{&kL+yt#ip(ONUKXVBMs3?PHfTLk)3cYh(QGwRRjVkMpcEGYTIsL`5!Zkey zf7{G9U?ktkAbq`fcVk>t{L@EtRd%+(ET&{bs64<$WFxhtymQp+ZO=r<2|`KMre?zRD(pB#Cw46pVUaxu&?l)%0AMMFSCB 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�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 literal 0 HcmV?d00001 diff --git a/docs/public/thumbnails/workspace-sticky-action-bar.png b/docs/public/thumbnails/workspace-sticky-action-bar.png index 6e9e528067842403adea2b927d188d4d295ce09d..3b1879875c97283b296d93588b78634e2e81f6bc 100644 GIT binary patch literal 382120 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

OA5eiqYj@}@m1zA@uVn!+*N-4K_47;H8Jpv zGBWfsNR_ZJ4dn2(9Ar8=I$k3afpy4ZnW&tUaXg7`FT3K?G3%t4$q0OFYN9kEs2Glj zurSpx8B(YI`4tsH`#vFwcsYM}-~UB2Lx-_jHg>kRNlAHOsm44ahf~I6&{RvXL{+z+ zu`DwbBIr7E4`&6t^Dwv9zABBV9*suZJcw)^fZcNYbXNNJ#Cbmk1Tkggl>LxsKq72M z?R5L&`qumk6yjERDTg}=Jlr%TO7)_;{-L;u=Tj#qr$Cjk`TByYs(7NV=`WRF644nL z9O~z_q&6!rfR7Zy<;i zs?wO`N5#B9Y|b`3J=-#c**^I$D=RBgV$tneTP|+0r<(g};fLu1Ce7G5@CZwn^jE-P zkFLqn%vGB*-jly!T(#<*5heC8@UP*7e-$LYk8w2D)v!#--TG6!=#Mqkfz&m<6=;GD zR7j-dZE`2&^&ukh3cA8HNs4k##lXMDc>eA4@DD!tyi47%K&L5Vau26^(m2AkYZ8#y zDqYQs#6He(*p5j4r@G?CWJNzcTuGjfFq2hOzh zd_DvZeBGqI_vRA^!u1U znkWA!@<%a1=LM=P65VVBS5USVQQSAa-YiVF^q1wX{!u3tLq9zO4bKNP7hHg3%(z?zR5 z+s@)Yiv$7pUHAbArK=;8Gmegzpy2~7t!`(OdJyaYKqB}e`oAYVld|38LxqkeHNUe@#Dv9{Sx2{B1$pz zXZ^w(5kN>oBlOJA$iSzNP<_%f@X1f6f?vYi;FP5PTPbiH8p}GSGt+|$xIqz`5;Od4 z67Z~}^I4o{JVxOsKo3!)%QM!gfF5crTdtq^Eo{N@XOvt}3xGfP#_08Z&rA;p@RurI z8y=|vi#xuErEc@Ty9NL7+Z_-J*P>NP6KuddE5*m5GoOM0aMl=|i&0!QxDW@Cm_H|j z{-F{ zhQoBE{B|t*tYHYaurG+(Y|B4<968Wala!P+$-@`0+B{}tw`YL3FZ70!7WmYczUmHL z1uuKBJCv*E-z_%a@bJ~qoc7EgdqyJ;e}ocMBjitppMYLruW^ z2b7Og!m~6=Soha^RkPn$BSg;XsOwtbC|xeEsi~ps9eF2@quNNB0 zTojB+ggE3AtZ}~u`kjKFRB%PXVVwwU(3F8#vyK$u;O9qLs9ZoA0@0VOZR z$Oo%|C~Vf^(R9qT~g`U5WT^N!IT0?Iks@obJ0W7IF;eAV?_XXGdoNnhX?rVtmtPU-k4P;gDn zRax0Gngd$8G0FtQ%J|Ie*>%pi!Xq`^mEj`#=+>B_0^_)_u(0>(11;+nwxlzn@%v$N?n{kN~iKpfnnWHNn$e%smy z(FCH$qf7plK;#gN-fX*mrmth+d?Upqdl}y&u)$n7Ia&K}vV1JqU9u(3s+0WS0bC<7 zfprk><1%a^#Yk~}M(wk`EX0?d6fglNC9eg0e0;o7L&!DR((?-}oLKYQ%rOe*fWbGn zp^~j>is8aS(;gXjclUE87YokjbV7W&aU~@s+sYl6WTd2mVnA>-Ho~gh^s?l&7LL;Jw8~Z9o;lf1abj4a#RTpnFDNEQAtk^WA}L zOkbsehK`Po)#$Qi)}t|8et3Z=binh1?ir)hg+371=3_~E$QZVeJ5$!p3l7CZ^U8x4 z)TGWv+lwqvZB8~BNcp(?b&RwkoVTFu($6PhCpp7+;F77-A`E|!+vInI9)-~Vs_ z*9FB2h*v?W8v@}m_BmCzKa})?fPGpFkGV4OYpd^e?_>E~n=6U2<`vxW*7yP-KQAb4 z@RjPL|NUSl(!SB!Zp~S$c{eqkVdwg50NQ#S=)dKWHJr4;bx}}&!m5srj%2N^t)Fga zz-qMOxQxSw0GiZTc#QjPwwQ_AIB>2K^L%LEMH{H`kx#Z!94Fx!Je8;NzUXSNt%KD)t~UaX5> zogExLsDQqsm=U(7C$rA)Dm z^FZwcld};jdxA1VV6Ik>T~nRI!*K(q@VC?_{u}_rTBE104^}(4bM1Yl!8mAm^xS2` z_={9sL!$6T7iV3k|7JY>jr%^|^~H>W$kMJFZj0q05bIsdEB{7HNlL&mY;<=*J6kh*hOvyU|3=-7;pC}>B{#zTgNzX%5qB1t-@a^B)up;=1jaD z`gyBU%o<29OEA2Ziwl4W{k9rNr*BOMv&F`68OOSA&GIPuRT?A!M?u0_0+SW_DaZE@5GdtIVppf`WpG7@V2HT%TR)6^UWz zLL#30x6y4&m|6|(rb~aP!gs}I zHiL@%H~Ri6*YFtQFYw@PhZe>Z`8RA6{%HIBsNRhWeGrc6*M4n zC4|#Bhi8w`DKv@h)aC(zPv2iv<>@j)cMDMw@~7JSq2@=d1cin}8IQjaKf3ZXVBL4> zvId987YhmsybJDq-wC;p5oTRCF3SJw)B1Aa=3mifvA4a(44_|!f-s_<5WDM|@FUev zEx(F-mFkDr&H?dg;^phTT@nNHJXkOA>x`3$h0d29@R>{WL-poW4uk6GwzIMcw-C}V z;FS3sAO1CZ$&G?4*CA!`oBZN_J-g5?EEB>O+Z#U#(@k^PAPWbm)2F^ZItQ+^-(MLa z2%tU088F={6i!vSGy8{MBH`wJ1|I)*$tFC$Sua#H+C7C)*2=p#fSp$L8nW#oSg!7( z^;3P8tY(e_d+~lx;qt2?U`?0gN#iULz95gQ+Ndha0tby}(QNi%cFY(RgUFlN;yTRaHYI z)H=5hp6*l}$HI^<;+XdDk(3bmpG&4&nP!?y5te{8!}9O34L!; z#XEry)#^}KqUR4?#IC<3uytHsty`|-D;FPq>EDtq0LL6~hU3T0;xA@~zcL0Wb}IRz z$A?yVcTRBR!uI~eIW-BK24y;6qJt6#U{qLfx!N84&>6_qGRGMAAz*T_ldpz})#GkjYB{Bz>`hEmo}R1`rF#PSvRKfn&wi{XKieK>j6SM4t(fHTg2J!( zf^ykmP0)&(A}O$(TOWevN#5Dnxwf)~Y4B|aARbodFIC(%a@M*~3<6yV`r~22w1xG#rS{ov5XL=Lq z`Lfc$ix!j$R5o6DvWn4+a{ao|0d{9rYs}Q!k1@ZJSESfYiJMQ8e0B@w26k|dhIV@f z2N=KWV}#~^4JDX}V~Dv^WKYu`V2_;FfI6cwpkM7^>^XA$CYY^PXe-`@nLg^VtWS%d zwo|=V)yb?=E$o6$W%F!au2`#vb^2f4`c06P1dXimfwC)^m1N7}Z+G@KJ9_Dxck6!M z4u~PF%mkz|vAijQY-0+R?dRg1qcqoz6I|&tE~2ntwHUZiCV>txrrdBGbUH>+g<-Xj zxEw~l)%}d(jnN#x_)7qk0NdL;m5;)`mVSjtCg9n>CJB7|i2)12a96=Z=u+a7v^XnH z%p}fz`#bViS=0?M10QVOgD&G%&}$`Hi|Iiw02So6>y=TiFG%L3jSw#})^P|9T;Oiw zPp=143_dfRYqk*CqyRYtQyaJd!kcCD3Ws?=bIRlH>`c6hu&)X$NkKH60Imwa3%b%TD3??aQUKDiNU@BU4kC zx!Ac$nMb}$$M>Oh{Tr@RQ02qwq_E}7`T@4(KyqX0ziIa_Gob09Bh$G?z?3!GS?sH& zcL4~rmeqhQRf+^0=GLqMXhLl%{#9mnOm7uGHFnpHhi3Bm`9#2;uvP#i?<>PH8E-L~ zUl3EWxoM(1ZhFxGU@tJOPcw2anTecSt^n{UI3-Now2gq8pXMH740JHp`Nv(nDkm_! z-~*<|+^7!$n+0pdVHmRg#igPEcB%G^0G&rdkdrUdKW4pijsgx^C$!lq4-fGT<~lxF zImL=~ezaY_VT6=5Caa8YAbOH;6eMsQ^2A@-bER#j&C7lHLxX{0OhfpZTayP`LyR!Z zajm3-qbHqIc~lwd)*bPrO|-&_T&PB+e=pXMEt|cG#DzOH@+EF@?ve{lc4Xf8h8XKE5{=a zeM1?abAlQd3cboi0qpFyieDBl$-XR3>xmykrY2Lf!rq`YP&Son^8U`~A>J5?9ls5lKh2dO^0Iv~-W$O>r6nzH$9vwV&ReZIXiflQ z2B`rJLM_+BeG%kMznb!({92`kjms$TR}ZUkg)#IZl!?6@RIt+Nj`jCnEm0+_=?4Y0 z7?;g~tPiPkViwWwkb=+2&u;?slj~2X?O--84wMx>yl`({Ai4mnnOuh(!}W1i<(V-; z&Q`LmX$u&{&&u^W{MvG$j(b48^DP%`_8C0yE(aaAg*z!alI7SdupGBYOe0Z%qO|uq z_qi^_%WS6QLT>=)sZyCsu4&_Y0EW+tnN?O-S3k=sBL_V@zJnuC$BQa8uL&e8Hr~-V zE}KwV0w2o=RJ%$0!%p1f<>hT!$;P4{mN=TuMoB{4zR-}b?av1oeT{WAszCAb3?!Uh z?iuU5)|&ig^HgY#GOfh>vqjMYv;ESk*UgI(jf9$0!D@t1at$)jf9l{u^sn&=6D`b3 zj9pz{!^;-B&!%0;--KJX7c9bPokG>PzHY-l2(TfI#?iYaI-^77u8;a-zZqaDhs;{&kqdoE}E^qK+BC_MSVv3Re6-xpk0-TaAO?U zI$+{=HU|b{mzdpY36m=<0BuHbTFzsARG>#__KgIgt@RyI%&0B)xsUd8wMVfHD%G2j zlSLD!=)KweR#vXVTMxz62b>1=F4zNjsaSxM+6TInN~8VRH!v0kyu7%sGg~%Mbd1V# zyL%SX@Y@bV=A1U`VTKr@8W=V|8>__E)ov`Ci~y6z&rt*b{I-GML9%rtI?M4JrzpUp znZ>BbbLY-Y+2Fll(yRh7J~1S6{5RMw9?+HdL$;}%NA)m$Ni+bPsuZw;F-8Soh-_U!JR78`Yf*bqc+Cv;8oLy=qY^*r z6NAplqDnoIV2m9x>IE!J3IQDeWH#$ubEK8)ZGKd<5o*nye*nxj%R(xz9$O^TC3Cl| z)035d_GBteCg!mt}u}=m1`5bEafiIn%)&< zv*~*{^`kCRjcvQU-0_mPAn}3I^QIoN=J@TMYu>%f+}`;1C*<c#h6uJ- z#hLP8l-tM!htV*Ot61|nV50nNRzU|RULt)FfV&gA7;BaH^{TZ0iySc!fsz!TDAhIP zf3x>sstYKq+Zh(iRhsKcHx@AigC~msc1+_a7{4^0tK9j}87;ta8M5XvGyo=Wm5 z@N2;fL$o+5^w{9NpmpdHm-ffGVSB=nifr2sdLST6mb=sVsxo3Y->|g}P_2~>K&(6f?T8*ykCSkuYNTVZ!Eey-4y z6I{5x1*U_?0>s~eDpKLaa0A@B6JqCD$nFKtdxLhZEbRbf9dBG=QoVN5tps#Yuw|+0 z6QWhUj!tX*_c)BH_d1e;PnvWRd2}>ff`A1%;<284uFY?t4L|5~R^Kx`)X`=-`{CRvj|bCrAFr{n91cFT+gsP|n3_26ENydb^SOdX z!W`ZUYXxxxQRH5)zCEz={w%jQMBcu1)xvVT^oVdaGqp4Bh~@<8I^TT9C>eFTdQWbv z-OHVoeZ+!;@59{s`pbiM3HeyD!M#M)%F(tMj&?ckB|6BsfbIQKO}EYO-{#tK$WOpX zGi>eGcBeD@;Z_UpB{R+W=%4Frp2I(VJpj!UV$Xe+lbozd@$&U+tPIUEC*50j8I$iO zy~lD%?e;%C5nU?i=!j9wom>7`kT|zfH?|P7Cwy*c)!B=yJ#@+Ykv#HQRjlX!SLfaC zXfD~tt@`lbEW?QN#iw!_rLKe%_CoH~i@(I}^<1Icm=@ZVnkF1XRTP)7kTfb4nHf^r z4ANLtPkM{Sh>nQvA8Q=Bb@&y$R5x#XtOhOi{U>Tt%t&Fq^PRLOs5n~=un^M6 z*6iA-hNs9mtkbSdI*f&W5(;`fq9om~(z4TPasb40H)hPP7@}(cG^&>o;UFe8p8{nx zCzI3$ke04;Kl#3&CL34Ij+viJAt1sCsR96MYUy(Enq+fL0rzi_6^hQo{bjDA^R6bT zeLD|ec$OGRmi(oZdV)fxaa>ZO`YznS)vlLKQi3rj2s)a%D7>u?rQ~xWdqGCQiY#Wu zng>DKa>fyah1O_Vpk`Aq0Lna8yrhGRwm)O%rY^U0Cq?om-3cw5oF_cYZKnfc~ zfDkby>-ER40jA3CO3B2qG($Wo)yg=MbBCjmD#E&wHi;4|47faEAKX|%rK&zD)3`*u zf)pw{uj7`CWF3fU#K-bjw6Pd#Y)N{ntP)yeH}e1zhn@KL^awD4eGZKh6Ed^)aEumv~DzlXJY>t5VCT4|}|wBywqd#(z%eF_cA z^2}uA&_&+Ga;*L|SN)3l4u+MT@Q9?@NjK6rG>%%+tlz#=R)@Okztf6TO&k`gXDcCC z?9H!8bZuXCUv(6FGQ6Ze@X@R!G*%anCn&D2k5cD^Zpuds5eB#36 z@}7|}J>BLgtuAD&+;PkQZBDEd?$y5S@B7x(2Mx)u#jY|yP$4f99BA9N9hL{XN$sr0 zE6Z9bGV2Q19;7prAv2Qkx^cmdbE4irHdEc%~`i1S`Qag@6;et>XRV6pvdx2== zeozDwi9?{HIidW?J+p+m2AHgpU_8HV@&YT$CK$j0Ae1r(Bco3aAD4$lfFyH!3c&3u=GUFf*jYwK)!K=fqlKq*s5lYn1Xo<3;c4g`f5 z{+by}Rg}n9xqg2*XvhKwzT@i@An6^;2I z<5{=;GRm+uDivi1AQB5W^xxGE6khTs$iUkLwpS!?CioreQ`Ab7Q>zl>Fu_=d3udjX z=r|+cW@TAn2{KMB{Wi85X`t5p3gt1^#vEL$BwwWDNGjRSp3Hr&Cuil=rL~F;M6vK{ zzdcG4u24V(EioN$nnjlmsxxTs4erwRSIq?SdhTLV3V0HJl8of4-E!x9M(uVQ zUt&``{R7!Q=zT?eI&%U&Nmz7xqhe$sXe~x?8SoV1zIm1W@t&uOtNPN4^JiA8YcOr} z&Ae{LZv}22{Z$fJEG?f7xe&Dnmu^Dyi$m+`R8_g!|qPnDRr9e zeO%|H(Qq}!CzMuC4!S*lsvL2V11|l;(l+OLklNtfNk$Kz+OKtaH8LJ_!e5zeRiuuC zBqbM3gd1@@8+gt_*h(X%E+e7L(gZGLq$|dY?Pa99oWrH9cfke75Uyt@==MQ5y?Z=XfE zWm^Ywt~9fZ14VQ;JUMfpVs+dh%Pm!$DHPwc%E0aRUOaQGJW%}Y*p~Je$8JoOGe~3t zdD|D5Pwh9nQCKasZ>fzY3ur5a&-+pw0J_|?%TBs{}K9{)b z+#5!9=?C3;bLMoO%GcNDD3T=2SLy_&-(Xc4*hD+BI}MnZ`^_Ltn|Xc&j321-CwW9& zC9&!mvCJvPpHhm$cNTMbYyincOl=Bfm?3qqtFo@jhO%a=-i15Y)X0Y&DZ z5x+lCem8e#dND>CorrGtW7NQ%Yk+7S@)$2Vq@G$B7iU{B5JPp`+_s z)>X&sThW*g>MC|*sKD;1GjGLV97yln_M5|Gp?!eL4vcYo+PLVeD{%5OiX8miKC!VZ ztK!XZ8sA=rb#-QMjNR?BC+LNmwQ&5=m-JRZ-twR_<=v$Dra^|xsHLxma-B#P?_Yeo zaw)=gkVn+som5P=myunjyz6(jHS?XA71^jQ(tNsQ;Sb)TLF`%5AMN2zZ|KxW{eif4 zwcZ+n6*^8N$LywjuVZY)9Ux$p`1ZwJ!q`GSIDB^eE`yfad-gD=X{)lQ*6McgW&-&JA|G?$Gt>;X*_IB=|ViI_baO-5PSG>34q`zQ4v$UQI z2v;KD1i6oj*^V`|Bvv1?o9XV{#ohHzAtN1K8cX$}+A871ktoxbA&(DpxuZ-$C^M6u zRXF$X3$D+CF#dXR{*O}q8}qJO#NGF*hSY)TA*3+OE-09S$+m!ZEZ$!MQEl->*X9DK z!zdIJseT9#G|XIP1>4-#R}EpSb?_@tq^R1q>%c1kxh+JG*^i9!(d+$7d}HhuKGIMJ zc9q~-#45ydNz-OjGF3cK-wuBVky zw_P7L`5x;X%7sGcN@)v@s#DQ(XqJXMNuF{>ubEZPX0*<4O>YhkSFS>GT_9V+JAKsA zHk!m*fv%IeAxh4=FDNp_pBk~F=;;MqPb=T;@(m#apewc$X?MU^e~aqIc@;^q-MfQ7 zzY7WG5+p4x-*4>R$1>WB+ek3JmswFwc->z*ATYa*q|@AO&-7!(n)r#aGzHq=!MKhtA)c zfMUVuiFEHdjBzYJsR8$no35^l;o}~OC0WdcjsUtMfdt)lw5+(0;-L>Z(|0_?&x!sVWml%K?$)xKAYX468>1@qVQNB;x#hEy^0MVmMG5w9bKRna4^b!$1~%pt)p{U<#3?N?SwZ?cn& z>o!C;1Te#^6YIYC(nk~B#=5m37E;=;3(5spM(p{HuJf6!*V~WzICS7ImxNJdV){|P ztmPbM_RPJHDVM@sbYM2iROHI}hBry+loOfW6JEP(^28wRVcdy*iSPXtTVL`Q##1a@ zpkaN5ZE<&x zfvm<)8_E?%U9KzrzS>rjeh6W&GAgCnpt?+Q)3B>JDZ+f7c*q*)Y+f5J`+28f-yR=0 zZ>iT3s~tHH6XW%Q)1W!Xk5*WcMX4=b(1W6|+bic*ZRwD9-*e3z9NYHt>X<^1R)hJL zd)4nia+%reOsp4FmOf*tELHT|Rg*M6nBC9OR5)(?`Prf8dx66EL&BV0?uj=du0-2r zZJoT(324R8)ek(dGsJjr+tpOo6teqkfR|U3MoL*qY30q8T_@fG_!+{aZ&B3?Sw~^C zG)hY9fmPIu+&s;@$9PbD@@2P8$t#zo{A$S!_nucBgXpXzJ~s56(SZ4$?Y(;m zytCcEJk&isvBl^DJ$ik#4kZ`m)=5pwy{f}Tn41=jrO?%Sp{JkwrLr@$1ws0#6Fsm62n-!W;_ zaO~<9U!ky_4r!h4p-GXUjv~`z%jW4f^6kFMOPb5 zlv`ilI6@&th&$FsdaK!;y)De;A!{BSLZP2Q9?8;sf|-$ ztY|dRc))#5{D2kOShu`}SaP0nEOlr3uVa^SS|oO{d*w8jos#U*be*#k!VMIED67@S zKN7y&w-y8?1MMM~1L`UidEgyJBGOrT9Mu}60n$~Y(tjNlAUgEyl2QgzIJ5_UoPU%0 zEl7T4x11|fe0OE|p-QSE^?uh@L)5BrV}YLXXU&@ySyqD;AKv?yj(0k-2O&t0&Mg4B zn3UGb-;eqcV5i>zsp#3{nWvA9q41W7YhnqH#eN`4;d8vO^?OxN?YwdA?i-|D`%fs$ zR;drm{R*ZRD97RtCg`fqnxBwJR(d~xb1H~lQq{nd3@8)GCST6Dg=c%6tN z^}S=@?w9^3yaZ)DzN`b(*u~Ogq7eoStartn7A#S*i-!yWKz4@uQ$~;UpB`;ARkOa= zee%$|3L;}g7LmqXW|gpmu&;1XsVbC};<@^v&76uT@RVv_cTTAu!#-m(1&1Bsx1W#W zJhp_k0Tdo=9L8d5SrFv5+m zlBjK0%xp)9*+^##<=B{6q#P5dW$t{E6UMIfv2cSNAlfyOdj~x_Pn1+Uc8V-k{9(?XO_Gu_$-F>}a`X}rG{Vb}hTUsSN$$4kBwmqH*}Qv0 zj?OM+&TUwuOU~o|bY2;8g~gC!I?woBSMiWjzWHC1DB~iK4iXvsw zgjJPm2(`X#IahW3z|*2r>ggZF&|0lgXfq9Yc8kvRn3{VnSac1_Xd(C=L|>t_mw9xH zx>a)J<%5@-*NEwh2mVhJsh4Hc-(#v9{YGR7Krm7cZ+YeXOh^dK?dQe$$zn3?OmBD=XtmJoLQl2nAa z>zpjDZ`yqA?tSkV(CjX=p0Xk5eD91u{udWOl{j(iNa$I8>4|a`J%MFa&z@9Gl@fu1 zw+|LQuVxoIFWb8>+~i%KpI-Cg z3FqGT$tKiO=u&OUwRB^B=n%2hyuZACInTGEbCO-&CW^FxZ%aNu-q&(6m{yX8TO>|( zy*+eQf;Wv^C#Nb`#HA>-`mC6XlSE+~WPeKgv`B&0X$seGRy1n8uFm%j)6#cJO03S& z2smDzn`v|rQ7U<;*RlGFnJt~62qJj-t)HYgs0OLCNa4;sGj1cmutH6FhV9pP>9Oy2 zMNbI$_%bqZ|2NON_^E~-hu$!!7x{CSQVQmzTd+!lv~-d<%K|>fRmV1`HZyKGm2bEdH1rOz7_+Vh}N;YelDxSL1y3+?V9bh#06u% zG~W&o8>y)5m#`WKOxMf8QeED~$@YLt%h#qa#axbQkWjuI@G3_*q-OWrssXcnFI^2#Pxou&-6Bmn)hLR|n3RpCp&FnIhb7Jx-HJ z35wLzk(@Gb^u(N(WNMjQG9Z`316sm6%Jj*pY)i`F%;)aAE~A;-qRT+DG8QK#J67(S zjiRr-YE~IQhw*4z0g;3@>QHol?oruFr}ABb9YD>j`r=cY^Vb(!BM}uzrk%P3KMvK% z{MEA3F(3+_H2+ZH$830Oxkp%qwE#+S35zIT%IL)~o2FhcE-L#vcFAnzQa*47sIf zFZ15?M}GN>-7Sa3DO@4Ln93Ay+!(a(XO-`$VRyUPA368sol$K%>PiI zQrZhyNmgVz%X!PlUHi{|loelSxMbE6uV|FP)gH}NV~kK0vO*ursJVQL4|SxJKZ_BW zw9LS(^!_IGYm^qffLIJ^okVbm@{*^)7)(It&2|uqhs-8j*-1uuT++Dl4$vT3-7^lw zfOeHTO4E=>rX2|oZ7K{XcOPg11RsaU^kE6KE1&L10F&@3ks z>{X|j6j|bMq3aFAldRC)OUO@q-=^Mip1NT1-LYb&+! zZ#_H8BUv>mB;S8c^h)7Gas?bK0W$$@Z<~=XR{dsT_$%yB%SSJGjzK;nYWAUt?ek>{ zVjrD(j{3ZNw!tpJ)F49M=Y?fC#p!~stDPq7?naA~ZP_`5;*QQTTcp&^2@6g8RZ^p1>2UAb5Vr`aZK&rp?@pn5eD<|%6E&I? z#Ab^TwPM^lF(Os+nTTVePoeu%%<@!kfPaoKze$HP!?BIHlg8`ZGp=pn?#?hObDX8( z*F%3X$9D(K8ei~@fB!VpqUb|t;($%{m6hu3(zr%J(~br>Y=NqgJjP*QH{PgVbjget z9nV9JEAIyJnMN;p?kNn@x!1)4$CWX3gsO>D|f z@T(<(Tu>eKB}_z6zmLOU^@p!w^`x+U&AVM7Vn28%N8JWR!w=97hf9y&$BfSS(=JI} zQ16O0uIOI^P@QImL2X%7^8?gp(}qaT;o;#JKTIGVKudi5$&nNbz}g={q!H(z*R^<0 z)d1c!zYtU|`qg_ZuS4{|&IZvW!WMcZ8K)R^H5(dgZ^UiK&g_G$OaQ&M3rQerx9!}w zn-qUHt&>{04Ztx?vn<8_blhhXYZww^NpS?`OtbK3yA@ffz{evA_Sdo5pMd8UUv(ndnJ7HQ^~hiS+| z$%Xyn4JEV-0F>Im%ezn-y2t6wHgdX^6WJ-yUMXnYYj!k8O7M0`h60iiv&5NIhYs(c zh&x@j1ck98T+^D4VYjISC-&+_)NK=HyPn?m-ehu$P2jr#yfaPy!pfE-?HQFuf_UCy zo~$}E&5mZl@Zb>sBTMNo8D@e*_PW^2fBv?#a(_9|IFM_p|KWuhbTinSQf$Jp=jwDFO^G<6Tc0+VBDXCb{Y@hl9?<(r23*Uu4DHO+I+WU ziW5KDLc)^w03Q4GGcniN# z(@`^NBbrD$+Q|reywU1R(~Yh)s%qq? zeUbUH*m7Q|Tj|DP_HAdvtB~bqbOg(rT}W7;As9A%F+btaBSGlBG$gx^-4n#7QY<`> zW#%Z$i{s>yiKD4T<$c}gK9mjFg#D0CS67MqF~UF#Z3fCid}B#*X+la@Bj+;3DzNbi zb=yz7yB^+CR3=o#-65Ah{)h8&hQ-_FH=*^}yF&SQ%GnciBhJ;yX*A2CiPP0 z=PqMGed!gmDZ1=d&d1dQP8Xb7t!tynP3sANc-Ze;`}LU8aXutmqZ82+n+8(zRu>Aj zPuT+ayHP5hMFHZ(&-#wEngOw>y&gJgw|tx@vfGkW--^BpP20CI-j$P*P?i~j6_$?> z7emV^USagUvP1rS|5j#xu2m6YuGOGSsp*F8(tyFU$7whAhaTH3jlTlYCbf2hE1i3O z+?0aVmnevzm~=D6U5P_oWTZ^Dr{ZKHBGMjvduI;dMr!Tx;{?lFZ>bu9u`>oya5TzK ztTZZs(?IQZ7mG;=KOxC%s(7fsZy|me2D8(l8x)MS!M(^5kH5k%HW395Rq-V)YkRS~ zJF}4W9lR(l^Q7VdMOlX`ZKx2hau~5tUW@O2dBS4WkuQ??eRU!fDW~Pahi1IN-D>YPH4%E7V6k8F$UPzq4WdkZF z&X4;E5`1MvFg$f`o^hH$HE$TGNUx0-&hO2>GMdfP(v_!vB$U*Ai)20{FEBG*C2)^8 z^^pZ)!j_5|W=F5qWc8k1lM)UR^BP<%u4*Y})0yJVYA?4fPPJdASScpBn+y6ome%49 z+TEnQTN^#mbcuIGBB$ViA@9nkx}sslWsMwrS!b)y_u4GIiwWCmRVkbr$n~8af)Z&V zk7#Qz)lHk2X`Z`2WuuKl9~n>I5XuoQ_QRjcVU`o=#$s^BtQ!2ShdSSWJi}`LO@Rd2 z>&yAYN8{EQ%`{`bLNWb3Z9bR8Q@UCB11&f+-mmsWtv6WmEmBlk@YmVX!D^8q$kXZ8J=unM1n=8!qCItl19a-GRJn>1t6;gF)>2t>x$ct zaP3*xm4jU9cAO!xRkzy`)o04zh(8;b@5(ll4H!8dukE_nD&RQV=kgMrrXCo21HWfV zwFD})SU;kIGe{174;3);ic%&3R7RiaS=*r4LY&=X+l;rS z@q?1k^zD)az>&@P=a(30AJ;(Vq0agnBec@YJxQ8^4m+V4?;lc&W?(;a>oWdanERsl z3jx=M%j`$V>42hs2$huzhP-y9$!VFN{2|>Ol2DUk-3`Z(U2s_|>-WFcAg~JN;N*l_ zjE|NTl*ZE5N@+O-omw~hzw9eqGs?HEzr00X$>4lEuX>^f@|R_VTB2f}OOI63Z1w^PL=> zB370=rMi&3V#z}9@O{zsp8BSx#ad^Y*s?BK`QB&SAKbK3+cVa!HV7t=@a^Yx+C+!l|n#YL5mmWmViNNee z7K8XoiI~_|v*QC2Aa4>q{;0di$W1@G3=vM_;d>brWC#IT5}g<~U(CHMnbcEisU<2O z6=YMKyb5*YeD(~s{YXWC>^)ce&{Vzf4$BLbBrkvAgyBOJN#r)xt9i}GyAj|6M1~|8 z)C+If4GKgG4Cp;m`|d951jH$vKi@I1$3wMa6(andGvT;3Ed_o9*T_biP|JL108TyS zdvQowjN>*OzIrBmw4|DY$rab_O+;iw4Uy$4$Jw)6gYw#I3m3&B3u?Q>bdGfIiATo} z^p0ygR82##VWwQgave@&SG~l>Ti)G?P+`ACk10cPHsye^?a5LO<>TdH816E`+&StLINnXtARld96!#etA|!k!e3VDMSYV6^7y!9^Ks@k^=+GjrSKw;q#GRk+<6)% zk+XaV*5S%_IxhS^gOeaPl=vh(Z<>#V*`gp#j5rqc{2tq|uZo^L^|96km6`YfFE{oj zyb15}QAdfyc0|)K{own#ONgLzoiWnisL_k@ds@2L%(!C+q>SEAytLKa|CQV17Ho~= zlnoie9^~#|F^BSQFmnC!e9hd97jiQld z2~)YluSk-<_AW(r_d6jqLvt&QI#mAzhUwk5lZ zEOU~2(^1LkX*U44erm*_H30i?Jp8in zhsfpkSDu&x8ewU5G(xI&q+-{;(SLREibT9ay3}~xe;Ss)Fu@f_nckkO-7u}GL z)x#xB*tLk#dQQq^$BQgfAErohWroZ2PL`pp3E-ph^W{gS=oQTZ#FkRO4OWhZz5)-W z>h|#usa)yKRe^=}?bMUK5Z`!l1QA!7XeEP){u!RuCxB*0D_p?-m&7IMN0I7=6}|gd z!@JeTj4)pw%JW9+?J&Q*6;(rs{3QBYF`;-v$J<9hU+WdC(!0X4kjJw|q@sk}A%Jo# zUD--@ESwmhb|o%c_ftAHQI>u^VSmOf$7U2XL=x42#5AJ;;Hr0G;08NpapJfmTkOGS z0MU|D`nc#N7ZzUlLPP&l>!2Lv7|^A3K&MsZ zJ;Ux@2hOGHx|8{*JDe8A`e){7{aYl~X@xhS>si|P$t|V9M8#+LR?5LMQT`Ty+7<8# zywPOK*^_#+yt~KD=hX6SIYVe!?=dr4Pws>4$#19Hl~pP4F3vN`i#9?hbXZV(s=Y2u zB$Q|klRNXLUXD}Pu3WNk^v24$%~f&wN(FVErW`vPWpHT+B~^p%mS11-D+r8puVDZ> zT0#B>=Ia&NPc(}Qt1mJKKnqh&46RLlIKp{GX!-v9to;E2)4MS17VG@j(W*Qarlj;I zj0n}A#;OJs0i@_=b7hCC&p0ynBbFv={M9sI6ZbZ?!>aZM|L_rL zvL%ICSD#pd^LSOJRssu$d4`1zGWS)^t4|fT6Cr;;Y0utBbI~UPb$~ZM5QKcX>T7EF z#8ii%v??!#kB%hI4KChP4-jq~lzp!e3pndk9K(vl#+pr0E#f*2fQ*CK5SDb6LRfR| z!v}4uh7b3?3K{=u57Yz^AJlF}s4+i*I{zy0>^`msac{3e(?|yW)~4`N42-kMEM11D zxm{6xHaPknJlI-WeVam~63SGf%DXkt){F5EER{cv`U&6xk}xajfKjOp;V;jK-c@;u zA}OrdcVAEA;^!j)Lv*DRj`p4UO!-g)NxWU@AA8yu;&LQFGpe)$N0)cd694(52UYg% zil=A9Vh17Bpp}=~#l3Q}{DSv3b*O$R5AuDx8t9LbDTV}*F7cXnijElY5k=&i$g&Se zH;vRsSU_JROl)Iqo;q3gWg(VNUv4|4L{s}Vn}Z(IQ&7=G#q!5&*>rnV&T6D|&UTb*MS=E0W^uHQW)_WEK# zvjTcZ<{WjBJ5&{4Mywy#O3MGV0EFTK`qu4l*8c!-cGwNEvzNQfdh)Um;Lt={QofGw z2m5J_P||vPX$XIN;{tn z?<6S5&NOm&x^-8}#Etj>Cj(ms<9=cmtG)>R`Q{ zI(5xYD9E3t$Apd{H-OwbOscovcOdPQ8qi91P`}3cmVfsq7}BvyKMJZ~rrfFYnyEHT zi`txlbuy_7igxpUypw<6+Emj!Z_IZaXtv^v&|DaC3cv_$#PGYB=IBlSgl+I_{<3%vVGxDaTIg>@*d&*<2hxhgfw+s_jEBN?_8- z5KJHo2&(cX>L5M(-riYX<8$w@0qU-7V72+^WjG_9p>NWrL@m76FzVLK{gidB94CDf zZQL!kBT@*F!+&3+I~oUh`dek#nI^eKe(aWw97Wy~QCySj%4XCW<2a$tPqke|&l5(I z+Qh+O;gn(?4-X&1aY?bxh?Ayn4_5d+33(N0Rm#<{%LJW~*NQXHm*}|rX^&d=2!m$& zoP&de`U7cZ+4}ouz4rM53F-u_+up)(vsZbWp^g%P!W5eOT+tXR9s+HgTSG&^tP1TF1iO1p{>|ke%R5J z2Rc>(;YWVWNY*BgEX|?_?d!VO9|1itaI@9oJk1P$fLbf$&T(I)@O=B{c>vv;t<3gQ zv)O>>G@I&3Ys)aKry8vqxgVj5N&kdaiAok%Ah*6vP=~z`>a!*(j%=~W zo-L|KR!>r_7WA7)&U^*U{ag96a8cR#t%`jcFOKo z|GG6da?tfcP|o_t^}`;LqFa$MOFqN8OdzG{gqrwW=ve0nnBmo+`<)1H`>mtu*3>6# zR^U`nt2;iO-{i>|!Hk2uPbnbgtrYd5HBn}G^zNaGUk`@)AjoKq6`iyEbyPnZxJVpW61I$Ym#5cOtV;5oRz`PYbkZGW z6+W+e>I?r13;?XA4EL#9+u+H&ANDf}31Rt@``TO|Hck0OgyQS}&QI{~e?7~Ic(W1z zhx~zAKbAL`lR~=J`f*yVo78{Fgz`6^pdjN3x0I%iPPpAPz7?hfl)l8g+2tAS zLG&j+gMSJF%=fCI#VN;3mo8?9o!R`6{UVKtzoTlUM&k*SEO?O0OSK+8UQy0eRuoGblTTdH$8=HMmk`|E)m?3YOxzR5jenP=AdY5EO=)ycyoXw zEMfkO(=Q>%e_>5L?f&>&QmtiF0N}wrj2Bn0yc*P?oo$14Q$q$CDW%Pi` zBir%YEt8JacUi#DH7O;pbM_uBfaeOi)3*fg{@&6Edt~!P_;)^T@eegX>O-r~!5js6 zp;Rc4rPNQT3D9g+O;o!HU0-V{e1bA34koYL0zzQCU=NTpI$`e6oISKzf@U0jWB1p~ z|N4KE+_O*$g0|?|E%=Ibe^!xX!h~88XkNm|wkl9d0vIX{2wN%#?pEF4kl#W%re-T; zf6JBnyAw+xtm@zUm5ct{(LJb4CElV@?B;3$b`q;viiTN+L4A5bf#{K~ti|(;zG8FzqhJeazDul$ zS8ESgb)3p!0BBGgsOFgF9TiCz{}GCfcBh~GRgmzv<$Px3iQ-o6fEqdBVgq)z>-`lv z9GG3KU^%fm*n{|~%!dvE4aLsdKw@ya9f>Oea;BDUC_n}&w8!CBx{#x2DJwe9oADi1s!I(?^bqcn(f0?*Rwq+ zxTEAnkxBTY;I+x7(;CjRNt^%Q9f`s_YPYp-QY4`DQL0pff=DyFkDf_Od_Nau9LHSj z#qC4G!<`eYIPDczNI_#Iil8O?F+|W}hUWING#m-(?UI$rCh3556T5kJHulL^x&6ifDzTLR6%GHv#KqZkIIK& z_OFNh_x}lTL{^tzw-vaoS}PxS0yh$CmHGIXLX0#Dyi4ARDJ_VqFyAx>t1kh$py&;l zK)Yn2&;DeyZK*x9PyX$y`iGrTh(ulph!Lprw=-71{P999K^>Uid?7C6g$&?@ zvV7BZkNsGo_b;oy{N@YoJ^>G^x=10M?tD7EVDn1mu^>Mp|GQl7ubllse=6`khCURw zEY6%Hm0O!f@|gI$lmC4^e*Wv~R`4m;fdP2(z|-Ran=Ym1cEqiS-|#75iVs6!p@;TE zaGDcdwVwE6rR{_hPX3-ODFu}g@?|U__>xDxWf;8~N8FpnObPza=kWWMSp5lPiK5H^ zqHE#q46@rap~5=O*VMoFVUh=r!H!*rdPM6nN9FL%3oB@}=u^@Eexo3Uxtj?XhO7AC zIXq%7$ZEWsJ2q)&t-kLs=lnnY?=7tK9jSv9wbY7-Hj@C%L%E6zf4fzF-sPXH^qD^L zI*d?Bs9}9xYj|~Yoek>Fn*2_@wp;RG4mH?My#(c0cM(0;mqr_;N0@w?)o;shKIaLt z?JJ;F+_9t6c4YIr3}<9AIDYS-T4TT^&UHg@*kclTkyYsXI2Ube=lOlV_nh>ju) zThQ_tb1^+Tzj;jg+$+?N{NAbfz=`;=I#5p4=}mbi^#!TfeJXe;%YDzZ5xyfVEp6C1gT+E^#|cYDy*%d8m8l zmTmGl$hz(rW!)~Ba$D+Fnj^67%M}BQS!I-NI@90x>DMRkj#3GYyNwv<7(C1{-61Xc zEE7~gjxICVCU1OF9btX8>(?3h-+xhI8|YQP{QMP`Z@;aufT9y{(l_%0t6WTbyBgo` zeP-vMv!%US^*fwsfYM>&k*VMjc-YIQ>t1z>#T{px64ZA5-t*2df|{}DA>`e@2p`W^ zK1)f}FwO)*+AkK_M}Ci8K2mi1N}omY=+;8W9p)NLIxDG=JvCaR4x4mOLv<*=`SsHO z-B=`r_9E|g4|zACnJ-g$`yuqB3!ylNq5i#ZM9KfPpO^yiaAm2>py!td1`O{ttTH;P z_gnXkHKJucr{WAdAk@6bJ>m&kWr(F=zPQyX{+7=e%JyJbA90dv5P{rodh%U2yBNrr zoLJa2v>B0eG{3oG_d$vI=wk<{xintihjs&bq&Qs=T(6Pu)tCRRZ`^%6`L9>wF|WT_ zqy{=@a^ZX3FML0rQ_)jdPax+LIZ`QxzPG+jA&)~=%`itI-R}1szx1WQ_A}@z z@9i*s4!9(*PxFpxZ9GZ(BFx78tD@__d(z0A)Sq{7q#N5*RqRskn`!Xc|O~4d}*hDZ`sbEkTY-wIRi2xT={6xf1S^PMdp#;{7lgu zf4$pWi*skY3-WG9H{Wf}Zuix{pT2*H)c?a66(~WToq&esr4g^=C4hGnzr1rc@DTW z7)BlcbwU2S4g6oTbEoJ3zq{2!4QqfD(A>f*opAfcE$;TP;ILm)UH|>(A}J`Xy{_*g zKr`RNzie#o5ST653yS^X#8b|Xe!b#<+W^VyTU}-a+ikp%kG$^0Fkc~uyxXgl@9*|R zn?~RF@4x(iecoSJ{bvuvcOaV?<|+4yE1mPlyM+}NeSZC$zT*@n`&#Yd+epMRG{pQC zUq1pFnWGuSkv3%B?6c#xrd$8F#sBekNGQYkX6rINc(U9r=^wuQf8UYqo+j`+mVrbw zecr_%!WkFfVS^3aoxXOU6BZUd|J~(g*RekO&D`T*8Z6sT)i-$D?QZqXtoLx`efPOf zX868%{@#|}WBltB3@6cK6dNJulV$UKHVM=GniA#TeotjLSX&k2IJjKQGygE0FC;dI zwT0m@R7eBx?;*lXz%as=L;(FmC#9{3vi}FxTCZ{4{?My+q%cI^LL7sa5^3z z0=w86>29sDHS$TL(VJsM$l8xSDDD{OlIr|TMWr?jLbzgAy(Ti6S2H3zt!u8VB??a8k%)&BgwZ(X5%#wZic4DTjfyrBNt3r@tyYi*<_&<0R&&M3QE8pq~ zJVgRO)3J=&r#s+aDG}*}frc*2q&>tZpdP?C*R>w5cfE^g&SPiZu5*D zIua5Rm*CHrholeFLruBU zntez_l3hp9Rr?UR^`pQ%{`4qN@n;1#zG3UyeFibYrn=6Htw- z*3$SF7r=jP?7@60tC}4KH_Ammp5nzA!7sZT(D_WiMpU7zY(~EC2Ms;TU0_DOW_KL@ zQBnVGe5_s~8#7i)kQl2sh44Jm+!)R(pozRe?GyM91q30UX8`yoem%aTjRxL|`JN7# z4>r_RMIkp0<^53+5(+9xE7Y}*ff9w2HPb_cRZtt}0J0klR%(g~0A z7OlK@1*Q;Hz+Ep(wLT3H8ri2je76_zPJ#jKU-i6qnZo$^qPI~B%;Tj3{O=Th@{J&# zY(S94Jy?u|VN-;BYi_7YzPn>B;^(n8b_2^PEyaMytv?f`l-1BN^+ ziB}1Ei(i8IWGB(7ntSmU|DJ-BqaEa zU_d@I%pQM&e+q__M3L2C-N6-A?J9FgbP`q#UG-*I?Sm(3P|#yNhY*YHv&dh%LktTo-hD zHOEEvxJpD3o~V>!dXJ6gzb?ZQljCxGIgQx&Y;^~51_UUu1ald0if%V8p8=Ml=Op@T zBx2JI-WcjnaCJDCz|_&i?giK2BEfmtUWaiKlaO5S*-x&5Q3S(!SMkUS8vkMRFHthjcqwI&lU2SGr>` zEy~qMKX92fv?#8LeLAWrpm|w^n4ALel~U~+&Jibkp)Fs&AT|K3yhiKJR%Y=qgV*-K z#xO_Lbu^wpy!*40prAr2A2b&#H9dipPdbISAO)=TCttn1683jq6H z-rPKdsBbCv@vj`YhTnN*=Y4iDEIWz^CY(RVY-31Vwvcj2#AtVS0(@ z)Vax^#()FZTS@G4WwMkrV3Yj(8kGs`;y@`*xg4cxT&8QW;9U*V+orSzlQhqOYwP2m zt%UN759~?{TQp&MYEG6}+$EQkRxaNGT6EJe9=6~;gO-pJgLxODy+(X%{E_UBk)a6W zQfRrO{LmRF&u3_&Kkr{Za3Tu1akjn8;?4Q$WP%@H(zbn0dVbvO&Mip^D&QB1nxRRU z&Fo8c+b25k@QBuSk@H`RCBT52>V|!ZO^W@j2Wu_g2SeI7 z@*A}ewbStyG+ceU?E%SVAxL<0E=*)@YFn<=ZRXQ@9&{O3Yl9vw z?inQ=HFJi5VTQ!j^Omg@kah+e#P;GTAPUc+8zSDTJ3qLS>Df|w-hQ{Wm2YkhJq0O* z2w1t&%c)KV#xAq6KnF9mG8iCOxGnTzGw`-wuzb}6B*w@*Z?5G%{Qcr>nGwib1)a@g zeyrX;k@Lk=W5AVW>e)+E2&3g3?kLnl;|V&53@q_*4|$~lLMx0uoNF${jA3RBOrir!bkF|T zR=E?`k|ga?eSm!)n^;|j)lpVZR?7uc=nPG&Uf{s&8aCMlxF18@l70 z%!teXL%X+fYpD5a%%=e_jhnsCubhhFokV3P!_)$PNG2&Rp71hLaX&&5_grw2#z8vp z0l&rU3DYaok!T1#wUkkVWg$fpEq?RJ`Di09sC+033D<}vw>a4O@Vj!x5-Q5f7RDNr z|Fm~>X-TD(980k82gZsN90WwEC;x%PN^)k$$5WhdlKA?N()i@g)SjnEGII8N%ybu> z`2j&mM{=E6AA$it&~pgIGU0?DJ)koNnxmyIw7$`F0NW+3)U5~Zmm61Vc#B1+ed8@D z@F_R?_0cC(9o10=v~vvs8u(Z)GNPyk*k}T#UuW@1sGBKW_ItNfrA21)`H@iK1FtS8 zG!RIILeO%1IqGGERHeY(hRDq7E66}mZ7^SD{Qy>#0FhX%yQnQ0LD?(;$w#zL;o_JA zI+;Fu0OoUbFFn|qMoqVOE0f*mdq8x|JdeQ#0YyiwY)o8 zlr1|YCKbD_Ei65%ObQ1QBDZHh_oqMq;R&v=6Li%!qW!bsE{ctNI4;80!;(yp_3FKm zY1-Mu1D9FLTB#tyL@Ccp_f-XnjPf}R6O1#>soIz2lw)Of@EDM$G6Ikhfds2yjQ~}( zmgVaqQu2(=%_Uy4y)k13Ry_~JL41Y;A*9z!Wdd-|lJ=v|04S?2`Mg&VU(>QdKW%4T zsSfoX7x~^?aI*xEmcSZE&!d}U9CwPYo#1WVntd{GE@;d zCeV`lR;JRG94`hLzSTI=*CQ*eo)@!d2Z#dpQ)>p0Ie=^@?jmG{Is)`}s*1WrbB_ve{Et zV&Ajftc+g8Eoif(eAOJbjO_(XsGiFpo zXURiuiAlV`SJej~@hmW}*w>8?wm_sKuYQ+p+F{n2D@;OYtELKtlQwInj#$z(M1rzr z7k!Q`gmL_QYwebd9H9GnhV#uXJ3=3yLuZF?yqT)>{jD48_WZ{56^C~3p6$nky>zxreYW0eO-=*JaH;k0F*mh%3u3RYiC|!&7nxXfchPx!Q#Y>vuEu>?E(8 z7=3FFFg2ctdwUB|XY(1k?T{jN!gs$CnAun-Y?y-kz0NFXJ#-DT10V1d%c0W3pi1<- zDxtC3mS<-Iw|Ne(k7ei5#F-diC#e}t8s3910zQ>yw*@61X0l%N;%Y3rb7pwi`h^oP zIB9oWi*@aJ8U#J&q*C%?*G~3g;*+{ZTxVCoiJG`Nxfq{*lXMS;o9vjdOEu$*py6>{ z6JvRR@KgE~Ij|%Cz&u2ZFYWcybeCo*7LT+ zgAbPN5&ET6x631`FuvCn&4zlZwP2g3*SvfY?_YFdL3aMGPA?p+X-4^PN)%!%Vgo=B+*Fj)JcoC8 z<=nI8f4w&jJ7AMaO}G6r+PzKKcF;XF2`US&0pQcpTkeXf%aBHX7=j#CgU;)pEnV{9 z^45V6#*>qL{j9V#xWGkmBWG|3?{xfg0L6W8ZjG8X2f%9@*mRtfx?GrWs~BEcLTyjm zp6#lq&v!@zd69HEgcVAbFB6ur17{%>ZAo=gX$;UVQnEcykwjaDR1u8xbWgkNJm3y_ zjwWP2YbR$GflSQios~p7upjcgo%UVSfGzL0ThU*1loQ*l(t3B{v%C+E&ZK`fCj#?s z97uaQ$c;{qiIveX%E;E6Kzpe)R=O73!P5GEgdGW^97(I?lw-3DhHm1EHOPE7xF(K6xa6C_4#N|j<_yK-k%4u;Sx?L00C&hWJ?x+dk%|U3G z8Da}3L_}RvKz5dCS*nXGUf)1j{nfyk0>B>ni69=Pl%<`0i!I!w(+D!PP5VmkG7=QoTpx`zH6qC zO@#ZgiQyUcu3#TGVCj?CUzJJhG=2y6jwpJOKkqd~!dQ)%@xDwzlQ!F;x6e&SY^=p0 ziYRUkVsdEIE0<=5Tg00uyIU9tP{qh>glqmo!mV>ZdpWKmkBb#>DAW67NyP9YYMve3 zFnJ&nOK|j(mFH`AxB&sy9^W{VTmU|_0lwFPF*kdEqQTT?eG6Ef_&889WdN3Xr8bY? zL|mK}jn->Zu6eKF*ws(91Be8GJEfyegzz?7*p(@ofby2@rJKl4 z(SsiWGF3OrS5Pf%hv$h1@~mk`d(8;TE6VO&cQ%&A#1LT2o|oU`JVl{6y~YX3u|20O zel8+=zGa*Z&YgS4c(V58AjEq?v1ccF>?k)ron=~(ugen^hNPz)sj_M2THe%fABTwb zJ6)MoKRYY%0BPuhiojs zrFosyyMYI8@>dovE!)Xa)gA;y9@>SauF_FXe&WC@BUJ z(4|w(xX&%gZvFWXLV^_&OA?&$Myf8}GobK%;OAD0%3aTR!ZB&EfkO**=Xax8H>qEiS-Hs5_1jsNkNOJmknH~C85%OS(BI)2a{&ua~8Ote7 zuSS4;dAhf9OG8Xq=QoN>CoR?8B0A|1ycSIi6N3%IttM^??ewV(GKv6hKg)LTkt8*j zFbVe}XDE`nme)fy1j7=(VBmvNwTuh1*N9F_PNrBu;#asn_Xca59lEo)mgu_sLH=Oj z4C)gO`M7P)3W04Fo3OXrz=6x zPCNgpiUF8$T&nOorO!^-LaYvkk7#L;m7~qbqUFUqVos2Gjwc0{=NP<{?UZI80Z+=T zT-Dp!L~1ES^gRP+lswAG@nxfHsmnK}Ld28~o;AH>(xPpuA=^NY;*_mdQY?Kx zmpb;8erewF0E`=*LdIo|jJcBOG6^(_WS%^@2EY?TwF13QPPX)zKa-)|XhWDllZtJ} zkwVbhuNf0q;d<#-S~bHQ^QE+TL?&EeEslCWf0tf4FHFdga6Xmo1>st{q1%FX$LYIP z^lxh4I#DJ9uxRZ9b#CA1P0~}7Pb`=BPa~JPjWpEE^HB*2=HDQ?v+O zIr!fV04ba8=#n#F`nAK>7A|@}ylVQB9#vbL?&)HCQ6UyH{be)o*&V5c8-j^%&?1_+ z4i^ddn@5LAEI|uyUw`O6J}G9}7M%Lty1=hvBr~{5I3rv$O4`WBU3XGG7ZbnI8@Zh4 zN>+Y!Pqa%v%%Uy+jtXpu`e61C&<|O2E>$Jb*9ydFxC;t1l#v7101~FWcp(Wt+_Z;e z?f`J+<;Coa>C_34JTQ9GjzjjrJ&(iQ=+A%@emjT02k%#n#}C z0Ry%;gP|(V+Sc{+%v}md`(WDxHt9nG79Z78LL*!S_zBD~f=0ig9&z-5QIWe#AWiK% zv0N|Y|A=vFkNbHA?DjE4Z97(A-g*p7s$v+&l0;z8{bHCsX13A7qhLSXlP&-S&UQGs zbnjNT4iP~-Gc_)uwVT8y`IzFjZBM*(c<>+XAgM>Mz-46^nO*xlj0qFhnBrfgz{HpFfFTd9$r)ZZ!rOho$uF z?DJCnN_k?B?xX{(f+%6>?sHDcM1si@l)r}k;siV`yF^9z(Tj7zoVK46eG21)BGLJK zq`+XYH*nlq2SoMHS-=I<^Yd@3Ps-hB4duK?AHPDg^O3vn4H0c<&H1({kDp%exz>+u zk~*qGsYcMS(?-C&^!TS>4H{h245(%b-9$j`*0(^(QkXiyv=i}|wgCr;x@K%jd=SCJ zUK;_}U<^it-9tsFr?%@F!axy@B#Z0>wy{GtD&Scai)ATRw+1VMjVdS-x-03@&MndPW)NS@xCay)&$YN4kee%|f2yEZ zFg_$`{*cZ#u(snu8;rI4;+UnQV_Qk`@Y6qdkBiJ&tl}T-1gS?p6d%ivUZ6RfThJt? z>_qJp;p+LYein4+$nd`PRNPn#ec=@M4ct9Rs4@`%kLg)a)fONZtYzFDuYAaDpuBBz zl!(@WPcd*jH$C28rc#O>=JwgZr|K$JkJQ&gmu!Vj*j&o?iLZ1p)W!mJL& z^=GlQ8Zn<3#IQqGN2sJz*RsqAfJPfXTH%wSQBGv55b#MVZUvN%#Ey4}>-l2%Z;A#o z-vfLXSsR%38XL>>neNEc*r>K+tyE$0=`1C#$X2S9Sod}2_JO}I z7>s$Q=X$8w3Sbw;pmw|E=OKWi-mS+?y7CcfKGBVWV_~kggw<1<_mtc+&z#~b64KrP zWVA{I)cTv{=kH?=iNP?e{u41)>Qnc}{pcj@5TXC>hCXNrc<$1tC%XGr*CxjY!3)Md zbT8%fONvhF*amhtoLm*LHCMB3d!iHH_`di9y`6>Bf|lM^;PI-A;+~kxv$)nStlNrR zpHT7sPJ31OYA#$>+TUDO{ZA0Lzo|4(2eR9}BF}+28N-QhmT+Cr?$-W%!QZG^eEzEB zRTMW~?n|B(OxDbCnH|i5PDNGIrQtDv0TN}OYLl)XINxL;p&Qmqd~AinXbC!ey}CAT zgvl)gd~aB}%W`B{6M3#fC z$P*dQ+SWq6dVO_aqFA@8=_-I}9clRh8y=`0rTu6B(?{yV{*2<-YtJ1Up{w|Ok?cd` zW#kICDvw)GN%6kI#b4?8pj0M9OGU)U`gY~5FSM&jbXcy5ub)-$3Ea*93a!?q)VRLNY>QCm|G8nQmqmP zj0k$+cY4n5-ZsK4jp9Vw=i!4@kVOeuiyzN1c8VBU|0-ewfFu44^lzDu)BGe;{hPQX zb!780FF`R5Jf3YLFq%~LJR6!S8Ev!!#-bCckJlSli5M){7SDh%Z%_5&tdKXM7BRXG zkEtL%$3E0lY17P)4*ME)f-DMCFULBm6G&5^o&do09pk!gbXthg%$M^fY-AxCfnhpbfL=|{z+j`w?1Gam9*`-& zL?)!1&0({|_F0#dL4hTDwxVOFe=?(&=4_|2Jd2N}>*ibo`x5G&UaruvN6ivZ-VBBd z&7&>{)=s0y%^&{;fE=N~nU#+x2Osmh;6(f!dVb{I+q_de*Zx-*Y$~a+B`V+ z_V%1d7hA&bZ_fIOZEyKro1T0_G(nKuoPRc0pvn$0xhfEA*wU*U2`2V-$V*l1v?5Sh z=e^!hH zA0^9ExmEdI!t*@X7eySnl4OcnMbEoI(erp$>|zWXc{#vRm$6>O;q5yT zt=ADhQGr?LY&k&RDF5{)MtTMDTv-Y*4f6|m@XebYu;9$oH2(k`j@!ZWQpOeUdhE^_ zyH8RjK$4IRAS^=n(#sB+aGN@F(TN|)WO=g-A0?nGw@*&!A|86xwk_xNwde*Sm;^E|Ak#*Lge~9a32E7aNHhMi4@|oFXkho6GMs>sDubU`XRNcs zn-@}}`nO&qZ|>V5hKz7nop8LngNd1FmxHs~uj=2mz5coaw49e<;Up&(q-y5{UNDO) zt_5?hzp0q^n(I&yV(G0EZaEww8+bzG<8?rGP91jc44L%>gJClg8%$FnVo-bVN3RTz z6Y;SqUCW|R=0Nsm4^7GqXz3Y zaJEIoz}d$!M<7`f)8 zoG4X@J(~7=qL|d^E`Tyhku<$twCSlOJ+OU3{SczS-Uyss4yEf0tzLB6Xc?r2n-%Nr;(W;OTEZhYa^=rRynSWF)NGG}F&i1cOag&!?5QlaR)D-x^AywVi zPHhv~E?C!+R#}!ZjHb?WO6xN*zn#Y}<+NM-o5-xFH2kdw0}Z^ET7kgFp?LV?TN3O` zzkyxMZ@=e%7q9016!|!)l@b9+jU%#ds`g8sH z$GV%oM8Xl9a=wr>?`8bqi~K9u->%62_*lCNU14qg4Xoh6>a8Cg$`^U~*V+!`hq)C0 z_Qd?Jk9H)1;=p>NyK)OF2v_ID&Clp5k(KB1PTy@>^Utnh?Y7$WXDj9lJZp*o(Y-!< z_UsuHMrc<*PV)SP03DOxpUmIi3G(g4{du2k2OaKwg;z9(BVZPfu=**v~w? z!l?VKXvWh&)SY2YNGa##T>^@{W5nUaEM>QUf3)wR?DhX(RsOF-_JgFCD7x!EcXNO> zRJZd*DsneNe%#Fnan)st|MQRk7txQ*_a-0m(dLnlc244{j?>sKsUQ0p%lK!TSt$N9 z`s)pziO2IFgEwyA#~T-k_e%)*U8eBA4(;BzA#ed|a)jZSm5DCseGS?ax*$mGM6}Q*1iC))j-;Ugqgd{fHSnbn2SFeJ}s#?)vTkIyoO1@;!I3 zsa`eIfy?wGXxs>siwylgZ_dv<^w+;hnf&dH9h5sXZ-odYDJ?D}@p>A+1e_zrYN+7I zZ{m>edny{%^Le*-H(z_#VRFOgE#KbXt>W8fQqL!4@SI%Q69YC7e0eLmw7vY0mvngw zp0T?|wF5l=~?na+tCsW3N%gpI||Pd(4Aa zN+E<&dIuNR60t{0q+a4?{GV;sX9L*x;a#WUK)OkCM6WE;|0|tZA#Wu9(W7(Z;gO$V zuSU8i@hbkIK_RpX3x8sud z9eFF(Uco)q+I(tC%Y5WtDT&Ri*Kbn)>}a4ff950@Y+}Cd1agvNf9xm!fLg8gpZz#N z0VFBexPhG8uDK7r_3+bvMC2FS?uPx@k18blxoCQ?q~pevkh){-ub4dM;A{Oyf4f@0DGCsQPgYpOGDmi?or`t#MFF*!DljNjS;V)A0fkCc7$D<|nXX-05G2Bp-4;n**y+uEQMpl@> z*TDbtkN@}IB_)Iuu2Ymq=|L;UIjL&QRma>o zJYe-Z)cXI}UrLB&Y7qZp4>cln2Xgucvgph-|Nlc4{}!ytd@sWppgaKU{-1047nboM z`~&unBF~YBhCf5kLc<;t%_K+*YLs96IITS5mvuOQlh*vNU4$ox8A+d|5XghYt#%pO6$<3A_9v z53wBi@s8-Q8-JwxuiyNC|EKT!zu^HZCXa;7eUO?X{;wqZlj?Q#Kl`RQO#~0Y{6*@NYG zjvh2JKSale|1QJai!3P4=o12gg6z-*m;=thZg;?EYr^gpLUoeQ1;z`=1mFf8;JZGc;a&1$Hq+F%mni|%J@Nwg zXqUz{go_aGK4TB#6zAfuc|hwlT$FoPCG_LVU<^ztj54`gW%-c~Y5v1N0B!qydR8y| zk#PZY4n@^vAeR^b$j?Y$iSpfS`DD(>SgOdaFmESx@<#D+0LzKSw0D69*oo&eFrJe8 zl$Q6-g(V;LI0|HTv-|p7Lmcs@6D#7BUB_r(k@-BfHw9sXxxlD_WhuwG4`PFE9!Be6jupT1o8l$H0&2cv!< zTIkPiGl#||DMY|xm-)xD*1du*@43@2^HkS-i36U14Uq5YcFwW+-sJx#xiv3|%u~!* z63$Rd1Eh}>FQGz@<4S_vc?s&Na!`ewR*7jU{xyX0U;Knj>jW~lVTkogqpjB{!*QF? zFJa#6DehmNnFZkoUuxNkTsNJk(mSA4aevTbp;a!&cBm@+`9z5qP(+T^wt1=v&bVrXP>o~M;6i~AxVn9)0g&DD&w^iAt2xcozcLYA*`Ab9J@})bHJMDke%As?Cb};;Uo3e-R#g!1)bzNI}!=>6G#W}0H5}!DEUg0?1g8ZnXAuMw+EH< zTJTC5m~<*xa?FD%j{7>y3g22hOnuTkE8f-xW?oUWJd2~{_m+hj00pz(zCzRxa5vdW z%ltVMlu>Uc+Ssb^(|4I%6H3@g>SjIh_gutRb}!Pgt z$@vhbga|O*3Y$kXRHUh%f{v*}RhK^nu-MoUb>33{v!iG(K{5Ze(E;Jdzhm5NPuN6H zE^%^YePaS&iav53%0z&dF)qOQl|7(LCRWpWk{t<$Lj{u~b-^6-TVDjcCy-#a64ME* zswe^mwjeB?m8owHeC@Y$t$c*p$n^XXaAv$6x&^}!J0~(jGBKUmTiwSoT+dsmTyVX&3-$q4m|$* zb&?98Ab^g_uKj&<1QZCTf$*Mbzyn7(1{q#C>`hp>^$fQSb4f zAI|J7$e?`Qe(%`*0T>KShw683*L@_VPPPh-Fc+9caZ5f%r`0+%4Sb_L-VS7JBcfIty6h@~Gdx%11;T&?kN49#4 zt@Vcb+)c05vq!@WBFm89e*`UHx0a3Al}Ua#MG0Ldnf9q&;G0&@^?Ae z?vu}|5HZlqCqKH-j}Bm{ZUdBzV4Bfw6#VkAKcllsfEw8T*KPH!XHd0$0bHt*c8>Av ztfEd`giKHzwuyQDp1-*J*x3hk{EA01t8ODYFVKzMur}wUaJ-RyZTI1o2j`mZb@1C3 zw#wS{m)didXbz8aC3u|uj_9Svz>k>eP~?}uuWUZbCTdM{MvbpkC|YhUI^SpjN9Hh% zlS4uApA)%+k4Lb3Ex$&z-Qm?FXd4wHQ#LtLq8!#`PguPQw2+`<&eOU2i=giiH5!EC zwMx8}nn-@mCoG#IOit0_kGjs~=m5$IMHor@3FeD3ihhj861huisCh33^aLXB1B~8o zQb`$1DcV5BRc)mQ;NZ*?WcjNkzP;KugADc-a|R8|ixIoZ9*BSgpx>Vfgj1qy0}bjh zk1hBe7cf}M!$7v=N5Y^OCe{{u;G3=HMM7RzLHJV%SYF*q=2?XPv=}ji)9x}kK)6tE z>ov~;daN~3Ql#-0U{^0zhFndM7!c5cfeG0q@kTjpU8Nx0xLjW{v9Jn+#LHMdb=yKY zR{Oi`GS1l4Pp~jwLB4b;eK44TOsl#37SAF^KEqJp^BJ=y)@s_bU4_7dTnM|PbS`0a zs=Ae5=3rl*X&c_9)Tb7rr^FVW}JcE@v7 zcODzJKK`H#b3@aIbTt?BREFyWWvU;OSb(-rhKQByLC>1m9aAjO5 z_$qtrm4ABy3}xwt!2$2<+MVGw2~3IG$l&Nc7}&XPYc`DsOO1eFr!U(R$3P=)18SwE z94}JQ)g?t0A)@Nd2KoJSv}3o4HQETeYKJjC(CwFb~2H7s!x7)_D0a`8EhS+ zmg8#rs9j5<(ur)ALe4@w}(He69pXBM+XN3ljqZq9{O<-8Aw0M1>N5ebEB z=oH0^31`cJoWkR9loERt&Z{DG^1UOQ#OCs79pPaQ$egDn;WpxD6iMCKpwyf&O>{G% z(%ofCjr55+t6uREajMoWbH>mqru=~U0LCaiM!%yevD}rSB}vn%Dr{%sB=Pwg+#_dX zZklA*bcN(nze60+!HK40X*C;bA6HGSG6?~CbuGs-%qF8v;|d{--kZWNURvEFpaLYFqHPz7J54^l@||m4HzQo)-Boq%HHG(l)Wt7AvW?#Ij)V(3ln@wq z!9_VX()VXJ3O!swl##86J z-q*T`&)0h`Lz!QjEGvLH)njsy(31QmAk1cWLzlY{+pU+K`VNiDT2=erQ8cfrM-<^o zUjp?uj;-h!8oh6+t9p|_ni;q-VJUf)@imSHU2Bk;tbpac_36IAE8;=mMP?&b_SN&q6&b`E{_QlcFYC^v&MS)QI{QZ~Iz9Vk~#%-_2xxD`vlyj)OGcy^LIi9u)b6$^%rHAm=5pv^R zt<7i`ctl@nD2qP-?34mpXB!v|Ry9(7-uPR9!?{vUfH`ghgK1bc{K;@vzOH`geKPbzNQS-AY?-O#Y%UQ zGly*GNv~p&a<$E=f@bG)H$Ub{hif@8pY~X`^XB*td4$ora&-vf!{Xa;(90}y%IYOn z^NNW59USR*n&oANc^ch;C3)yLCaa+7HX;KYxy_)8%$)QLq#fP`7tZO@ zcl(CJOv>@ghE9&udI6ll<&kz?ZXUVm8@IguWqdUc`;|*qNXR%DQ6CMw(Vb^3(ZaT; zeGL)(C&&%kIo;jYx%FnUw$Koiz;g{ZT^*#)hk*`$X*1vfjCS+)8$d*Z!fpmVuo5ap zDz?1IlSxiu>P>S3mk8BenjK{|luY`24?RzET8w^XGgAt6MQn~yIn^=4!s<<6%ap=P zG3b(ZZK#Ver)bXAT8x~)I4Qm>n5gE&;U|{Boeq^lK$q>n!s+X8b}hlX-C2I#{|R9S zy>oX`jPZL>Iz(M#w3GFeISjwKFVdk8qdPa#POxZ+SdTLwIxuiGv3kS4){fOZclCy~ znY!N7klJ77>k7t86@A&xVyg&35lHoN2JYM9^^rTX6YfmxwibCt1?oi{*R#BgC|b(L zL-1hQ*^RhU+A*46xoqe)9 z%P?(fR<5nI+*uzq6*f@yTv-*f*A^uoUv|qpgd>-u6`e~Syo0FT-d-aqCl6+zL0ng3n(7VU3PIB?qfT&;j!sp8WR_8N7H?GO=JWck(pU5PFNPvmM%P ztX`P8q~hub?4xv>!B){+mZKvgd*6s0$*km&2$cvF$s4EIU#`Qm?tL%ymeo_D9Y)e} zcuHYMq7#SDCVNtjGl!l_B~kV$YU1H9q!%Rtr07gzI?30Hbb~DD^7^lC&!Q;Ty;J?n z3XQr6XdA;{H1SV(#H3=ZnR6F_iBfY1#3+i0$t1oiuKTY8G#s~w7W8> z4;dp05w%1e4y(&*b*XnMH1B82a$zoKzP=nHXdIp}@FFKZ*n6#SNNj+V^XfBjKXq6! z!#7c@%H$WbUlwEfOzW`Eikh(@ffs6Lf%qBMgDq8~JA*SXNPd+;@yOzux=IfJ**d@+icEoS&G zoz1&YoR@YWOqd-q{wvf{h;6{;oKsPw{Ogs}9UMY}S;0?~%DK==Buvs4S{WHTF&v%?dWrMRKPsK~CVfP1n++VfbL(;pD zrttd~D~Z(380|?hhWIEDtvS9J#sVnh0({hYhgK)f3eC(0C!x|e!8tn7C5)tnocPOv zMiH)Lz4h&QHkk}>v4$^ zownS%-9-0ipihHLk{~CQ%>q@pz>^% zwFaVz38Q28u>M+!?FyX4_ZGXQAkDGV8}yi0@{YfY8YAi&lU9jteeri9F>#eSwTR=$ zXEA;igIVDr4+o>2IiU<$8+BQvUJ#Rc&ji%E8tIT9zCffokvaOzt`Y5>RgDo#bBy<| z%wCM8~8fQBsrdn97Gg zyjS4O{@k~%aE97qGGIU9QZ)z^goC_kFA(o}y#8gs%+cg)ak~5f^9*$B-bA|pmeM15 zB2(V06I=^h^B3^CtdE%Yy+=iN989Gq=8e}pS4fo!KESvWUlRFPSuC?VCW|LY1#)Q- znA$mV9=Aa4F5SsQl-7-iF;;tfdeHAX;7r8Y9^rUqt`1j|%0`RjC)^sb6mgmh8It}v zwQ`9kgxE6o%cIbidYJGH7`(~UbxuO1Q4iIIs2Gb6EZ^!-u!lu;gjVS}MT;)G zP_K>}WhD0CF5b4s*cYm!kJ;8NWN5cjTQ5%awC`An#}^sZwBUL6Pw(^BnQ0ig==NCQ z2sc^W&6-rXkqQ0wGlh1;H6whF*ap(6&4d=Y3vFc@s%kbZvx_2W6)NNtiye+wB^ z*c7V@uxX<0S#1kDXvv72Tvo@$zC6)5hSEQIElYI)j)`S~0tqLpxKYpsM85R;53ct` zDDcu|;8UgC#~KOc!HUB`K%MQ?lZ-y0fgdp|ISNyG`wc%-0Ja*pG5x7u@P^?pC3_e} zc^QJ4E}sBGs=ek!MKa_<_Z)yKhW8I-Kj-EZx`2_`qEt0Vn2i0}mrf3lkC$5i( z90{xp=ylcUD(d!_U&oazBWZ<#2D&5_do?bKH!JUAhjGf$l>kHACIM4Oy46$0!j;_TVwQ?gK zl$oZROV8ftBb-FUVh$Jf-dPagP*U?;e8p+aci>{E%Hzdl!jKA~vR6r6OaLR7b)=Hf z>3sn#uAEqA%NR1;RCX@+R7*`PO4NQL(1R06bhDL)lQQI8+4(7L- zlSu+&+(F@ozLWpG`$FWuR_(?&sWy8^Xr2mT#+@4qcQbjD5*yk3NtU5^HhKQDx|rsM|WVq}hk{MZx5frCkt#@a|;ZuHu!7Cz(i947gQ5!_o%|6=N~ zw9H?A&MVXVXy&1%=krcJ$P!Ecc3**6 zZdCUjQN*%Mn8)Yvj(qE9bE~4XwjW_|fD?c5VK;BgKrrzkK_jz>tK&wp9bRl~*QL4W zG;WxwZIuk_BOy(-qn?D_{xTxP_(10fg^mc!F|s%a-^6u7rku7&35d1JjB5k@-)vUK zyB=KpnClDS@-(KAY=d9zaCW>Hv-7fgA2s+@`Ob7`sPH=%nvAB=O7$&+@myI9%DuQ+ zM;djtL9t?w{_yZJtyIJ=DI@zjM&+>rMii~I_qMf#iP4U#n=)Oh18*6Mi+Wssk=9AI zQvq_7H&HBJe%#@tNEdya;$lLiZd<{mcYXrDgHmdcvJ}LwLJtQhAe2r=Z z3g_4{dg*ZxHd2l5oaQ6!{Z1DPK{dM-D1=JXJRfTL8uH51YQlp`sLjV3(JFeduGt{y zA0T#%twZnF2g}%VyW8$j-;BhjCbN~8uVF@UQTJWL2+TS0F#w*YmQ)pjW(~Fc$#1b$ zGXLD*T2akAB8tOsBx0O+vLLv;%CK{UBL z8;)Wx^ z+G=kEOVXZ|C~);>Bx#?MPIstb-kk=F7w z!ZiUNqlWA&jk^N+pn6qvb;KgLiVcpXjSrz z?^y<{s<(1$b1mE?(S2#ANFIbx=((xmZ^d9wZz34FQHdlIQALvRt=Sd4DM{)eU!@aPj+>SdQo$>M5bv=RrpFP*}*g z^xHScXv&54ZV+<47!O5uv`1lgT0o1=w4z+%34|lMc4L(eqUfcN$^n`92aG~| zc#%hW$0-xR3dC@0{Ii|7JNs-UPeu4$hxRAG2zGocs4_zBq4yOePIC?TZ&g57ylfN+_pjfi`$4V&D`U z9QhhL)!OT+qo2fGm`WEtsAkwAQko_*G#k%je_1iPu=b60RBn6TIKA{WHL z7E77**;vgpkLaHbc!uzx>*y7MEa7-VNIES`pj#B+r@w5P`!ky6$NOgzy^dyjWuTrbJVWNb?TPDq_Ii0mmd|A;-rIlz)HI zc{q>~^Zm)v>kY}kb}ibeZF2(Y<~<-d8wc-%4rA!WW=)2xogCY1shK>}UuCn+G0~mq zb+mBI#GCD55!n=T99K;bpy!1m1$#Lfdp<{Hq9w_17UUcufZ(MkcyCM^EjoP`$|UDL zd+{(kgKqI@4|T9%Fn0sj66IlYUND*XikGVncrJnZe6x(b)@j&tfI^=eZmV+^G2=(WW|gQFxEfVH!hWzxJH+2Nz_rO9qA$$+K(U0BxvgK=P##{IaZwEk3BMz^=+-xesuk0Y)lfvFMbn8 zR4Bk;A$M-q>g{49kx^n=zpI)V*=lxH9ws{3@Bpc=4A7A9)`Dm-m@wa9BPeZZE|?ac zYZh;pkTrZ9&!7n=6UBqpVPeFS?B|R9!QujdhY(v6YtkWkRHN`svVWZ@8}eyOf|ev$ z@P>z9aGn~sfz)dx4-%kwii{(k6&ZtyPHo2byL#SC-U4Y63u4s}`1tbRr0ilIQy)nC zvRp^Kq1xiv=hK91GPI_r_79Lz0f~6I)A@{LiNW14!Q_}yfyX(Z0U$+lC}(@0pZ%rrJ9ZYi@#Jr-+M7P zVlV<8h$1f>jrum#gAY3G44!oCwpY)^V;8v{o_j=|^yb2W{TG-B-Me$z_~?kJ=j0Wj*RT53yecTTjq}CF=rZ)Yj*eYr=IUbFZ{2 z;*TPQ2|JDZ<^zHB(u<0N8G)a`hUBiFzR8Znf*i~HS*}eIC;Kz7W|XU>%QfINTr&W! zlr~=?v`%p+Ib;DB18Ga13QZYQ21oN3ko%Gq5(^zY>Vt`9r$C|m_7glmYJ6Z0rI+4!u+&ep4S*g=lZwLAKE`vJBaoen%9_OYKofM_dvwCgR zfb0hsl-4;9BDkn#@SY@>xE#kgU}e;P&y#ily%psK$vfHNmY7u z_o>oXRi~;>kOB;Gm%?0Q4AjYV&uOakS9jW>hgIq(c+^&Nj^PYri1lui2am1>)JrB51DaC!#}sWurJd z+XH&9$|9e5Vi7y_)gw0ATPE$eo!X@BdjD}|K?IytTpvT5*jMC#o!>Pk+l|S!O(27|IRb2A80Ta;nG}8wV3Ip0lMn;5)?L zS$5;YZZ1Rc+zR;u2Lu6LZOOzYmb;4UbGP*x_1YT0!!=24E(r0bbcFD&p7NUCPHvuw zR%v}K^Mj&A&0o}^F7XB|&-x&&iV!OeM6PJxU#f|RJrna9?PBHM0^2Gl#Fc_W#Be;8 zHsRn4NUu9fl~YCO3ajMF$B|Cs26PV!8@a1+T9XhMa+b@`WaZ~;9*GbiT(q6$G(~USYnN^_tE+`5~0vq%Vfp&p3%)5AG-&eTJ$Fhy;;4bo4&6M{U zp(-MI5Vk?V2F|{t@2dEN>|tiPFqA&9Bj|bS3uvV9Oxq|6yjLf<_}@1{s5~E1b+uLA*vESV(P*@qJ>O1UrmgYYHP_{JPB1FW=^H7VB8(eADNe z!4po>bcE8mZz?DkSE%V1Ym*OvkLBo^&p(pANWMh7IP6uL;5*Vzi~}cgj^syx{mS5$ zvqsnp%?=Gb(MB-GtFJC0`T5WXBGp-s>yOefdv)S=Xuq?NnDcR{NdK^G>&Y+4y*Gn& z=)B#vkinxY=g8s+wwjdcwL|^X*4$4H&xkl^1#YM3QZ5YJEP|QhT83_Qhn+gq!dFg` zrN`9P?q9Nnp78nEib}1+Pl)j~EHn$3B}fzoJQ?ZbSDZHYcD^H0T{pJPjy3|zn`4!y zd9#ok(se{LEE^ZRTM=@B5WERG>8)!k_Ko|KJ$_H&z=9(UaIY-g84nU@k7*(XrNCCP z1GJ?8SD->&5QX#8((}8MWn2kPkZ)}=mjhE-G{I|btVw+SEFTcO%olfyqa$qxm6J>~fHzc@MId(xrZ>S;RG(xIc z3k!AHkPP1R<{TW%h&jC=a@ym2=GW}WS70-hRq{(QV}6Vr|MK3Jw>v$5mBj%Qz&`Oe zqw%`E$D`0ktwJcv*YqPgEUv1` zbU|#fDfo_>%IFHn>xUR09&l3Vt9k6{r=@iV^p*qI2VUFCgkdx&Gngwoo<9GQ85R9) z?$(@aG-Abtef7evXOc5Ye+2DoEi-H}P|0p{sk{4lF4B&^wXwO7F4<#R)nG+>NFTWh z#$|4A+>={x6U++-v6GBUNdaX1^YA+b_GoOY1#;6@NwYHc;N72;czgl&g2rX>h0hN! z9s7VWcLTGJa6|r%(}{x#qqG5HDz!0G?@@9*tr_$^-TT=Q7GipQc~(~GNKh3M&06e& znAf`N?9HKxUPj@J4o#f|M+yFyQ~6baD=@wrDsnvYyBgUGv}oHkVx=DEEkjae{pz9b z?0<>Vv}dCko!gXNG5*xRqj6CAz)0qzq!S1viOL?iBj z7gvDHWMblzJ93%~v1nHfq!(ZaFU{D;XQPm1Oy8F2Cl~HsB&Z>|>G1feOf#3b+;X?q3Kb37v|aSoXvtMDk?J$w6aq^Z z>5FlSIJ4sKjUq$KSPRO%*%=&r1}c)$?`NWubNH0V#HQzRtY= ze$_+?J_Nbd7!%Y4hT@zF_eA+Opj9l-pPxE@{8okFm~W>5_p9th7L?9uJ`1h#<&of8 z>CM@&%{`gso`Q`?!+T*8(kvFy+oq;4RA8$s<5Ec8_=#hvVc%aHZ(KhbZ++j#A0efE zhrdeWRis@T2<=*!<$#M-&lSdzQ7cw_mwT-%RD)pHb**Ub%z(tfO7}HGCCvS-_r$!` zlM?Jov1m~SIw{MF)CM=)ceyYc%b}`Dcc3bHbk9MrvTM99IjAkWxEHrv)^9fku;Wz6 z@_w5@iY6kV$YHFhifcb*DnHt4caWCdjh=0VkxA6Xq;K?#@%eD|5#QO5TG5$FH=!#% z*wrbYYuqdYSd!hLid?-TAIJ(LouNiwky{E-?BrP7BmPYa(bum~n^GpEt0b_6j<7_* zPz&Zmnlqy6_hsYWQb#Q(&Z~=@zAMA{$>MaUlN@9BTyg^+PMTkQsMfv%Uua`K14_ufo)G##=72y#7MQ`HEy6gCca%aewRRcXOHPvw> zcYlx;Gcw(}I2U6eGy)v4;RS{x19`ZZNk*?Ku>Xpyrw#7>K+%8z_(&ty9z90tcW9ol zelcF}u~CIS{1979bLnYacx1&bIO&nqI*eB_aXQ*ygXK~J*3oV*BwS{q!@&n7_LG1@ zj8XT_8n%`BBh%8B<%6U)iVsFE3z)@H~N zT|yTRqfQ>owZw`a%yl|K#_vz$nd6%8>CGIt>V(GzrPWjc*?(y)uV&i#{t!BG77jj^ z`DTTgsgrDyGj9Y8RRDKGx6u%hb+a{m}g*aR~-iw@x)e`+2MD zu1h1L;51JE>lX9|rCw+d(oecVxh*?mzbvEF+@Mwm z=LR2GOW=HHd84dc*XNR$4Q)y_+B2kOlBQg_i}Zz_WT;&YQPTvwB+II~hO(Y~g-V=@ zj*yRkC7)>#yCVPN;dd1Bv@f5t1xJYoj<5bGowP)pF;-Mu`I0Lb=5$ib2rwu z%Oy7E#G7B}8lR=5D!&J)^XFVxi-=U_}ipCS4~? z)J;Y*RP9Nai6D3s_JdWCKR+XL(W_X_QrQXfuh39;ex>lQRUWCWFXc7H{-||4iWd8%_uifMNljb~RstpCv(@p=d61UNoPbp01mUHnZ0Aia zVufb&JEF8G->v3tN-25sK!ZL2>>dd(R1kndFG4mGPE6FZ`^VmZM8Cp7`RJ^Ha}THe zGn&7P;C$=p^M(#C#-z+eq6Zv=16?;W+AJ$O!1E)yq+b&oqV0u2gtAj?;J)*vCQYs; zlW7Mp^%QaLkyAwKwQ0l`gq@DrFsq|BfXBJxh^k)eZPL>m*XI#w;6Vi*amE)X7hi3o z8#l?m0V(nl<0s>8E&3-cGll-+tr^&lMitlJRh4LAE@p;j0vS^HZMCp0nQnv^wqpVi zXL=pYHVA%V=Y<3_j0FtyyTj((zLz=srUq$SKF#)g-!_CZMx!J%8j{O{nq&;vALU@6 zI}~Bwk!iWMP|4#5T8g1ZAsFJmT5RL4v2@w~Jm0>m;3c9>?X(a#nJ3JyShY;RcB$}` z%U@i(8s@3Q6B{GXL-TiYYTw8ciPyeM?>x-VlLcOmtzEU3cXWQ2c9NOnV$IYt+Bl`r zO79JR;|E1xI?h&E&epg~0ns-SR{Cv*P9qmQzPmdgzgxKHzVTIshdAvF9$fg=ZO#>; z!)Y-#-$@wZu++pTPp-Km9l0LJG`~=fr1Q6?xxcXwrG_UpR)LF65t1Ek5u=ns~o+G4T@@% zN~-Q9$})BmUeG&FCEc2&mP)w&p4$do%Qj`H^)%Np!)BCuaEJ%qYWUfk%0XVTLEGVOk_oCUu>x>jnOI!;l_TR@=n z(;f7*TJhKNqw;H-BDmubf(^OY#}Z)U7TZ*-E>qb&S$}flFja692Wi#jdF;HD?-zu` z-v}PbCvxX->6q~?TSw0q`{7Y8wb|9~l#7nbSHf#KEu1lZyLZS<^?dBo|D-$aI_EFc zV6l1>^v{D8Is)Mk43~PS;uv_c-t5V-h0`U3)9*CdS(^{<;#!{J`Kw`j(Hw7}*4N=M z&yYQaD!%>7hrCMUft{GUkuq6tn%XQIR3wfdO5&DqZm!Z0$PQ$^eXqUz1ZhUsrnLPl zz6&TgJ(*`QA^bQpIz^Z~w~?~t1@Z5Kf8FTwGZZbwG^F0_BZbT~qvY14@4Via9PWFD zI6+6r$Y_Du$CS(*WZ9gzw(zZTA%Sy83bDzpD@hJ7jjFxg@fMq!1Gfu`IfWdLsoin( z*r}u(Molz#)~9)drLb`2vuk(~b6pL~1;NI#Dw$30O*z-cJ6)+G|xUys5yna#t`e?9FvC7IwkW5WQ8~5p#mh(@tj-&Ky8I3 zTFBPPA~D{8uyV&{O3Tye02HXlP*&Zi(}$*v)ec8fm{B(c{)@Tjox6IIkc&(S;=DAA zGn*c)e2KW5A`KJ^PK~@(m}IpuUr_F*l-R@#jA$Ji6<)`Kkr0-}-Or*nJG7`iaP(YeRVze+4qXklsmb@o`x^>oQ&+44V@TvLt6o}Af7L>S|dmBO- zzsYT795&mVfE&_8m2@gDY8Ln3R`kBwV`hj~yaws<3=~?6-nAnjkw|l{BHkw}KM=)p zE6ivk4)Obp+dRON2xN|2n^?8Cx*xy;a#~l@Q6t<&j9O82%(qvbRB~12M&7r4;%7tv zlK!nKo^M~Z1oUQ#JP6!)4K@O4a%B}wg* zxSjVRGW$K&8h^2qT7zg*Q8H1l>zuiQJF9YFwtA~-c0y+|)#QbKSlVFN^Wwl^TKX2! zm9Ql=Og^N=6ykhO*vcf0!rYir;GkdFXpUsQ)iHlNGnx7}=1L&>xF9Vz5M-Qb(I(+M z9R#x6py|{d`RbFVwW1#ErD+r2^%GfJyTvMkFsJCb+(xXXUlg7Uf;1Um}b(lD-m zGIv9?%He3ob_ywbRifpct-ptPZ}AzOzzoP2>D<+A*)q_4csrdJh)YTc*D-iYo%|Ijl=K-CUpK zhThMM^1Q(N1z#hCjnxrabK!!c(Q+p1FZ~tPQjDyv)d)F{f#dj#nM5>;eLqn zSX~FLD&k!?`xr{6s-jhO8t4kePsn{$rnI&m&`=VtQ7PxZ)Dg@Euy1>;9=Zu?Qd^ae zhyGUV0EX4SV8dg-P5E!5V_gH*@gargfc z4(Yjc4Y0N{72o<-$>28eL5w_o0|{W_A^CWl?cjI|NWT?-lv=DDKPA2O?aS7zpw?}v zfZNPC)~~>UZktDT;LEJUHt2>Fh5xOO|NEh2xel=5j~_c%XeUVp2;a8<5MC(f3g@Os z{?Iet1Ol@tye@?&!iipc-OVLd`_BIdFvpZUAGMWq$obC`hYzBg!1Byq`Xw$0uI6rv zxSV;6UIX%He`m4d=*VcL6ne**f zEfWW*z+Zw1V~1bWQ=V>}=`1kJND#G!j{yvD8HQcl;jIA(yo@!ck1_b15_Jpz{e3Ba z>QMKk=&n+9Ru{l43}d1h2%5;Ks^$lHwEaUH zQbdvC!9iZ=|NdB%zfG~Gr~y?{fMeYkyafbJss1Si(Qxc+;lafC|KX$PepBo7p7}+< zvM7A$XNkX9|GnhZv|9rCl%_dplp=h(UQ(oqNn=eao{XZ9s z1?g7!KWljY+huh7tpp??9A8Ws+btCSS}qIpwf|HnC+ZK12B0ulF78uIN5xP7wZ~R( zI_N$4&z8RV%)dm?ev9N7$Noc}uor0M{c(`J@Nd7~zy9JJMLp&spvC5rq)#+Rs2V1Nx$H?N|)faRr{xsGoUSE_Umo7e7e+r92q7k%?r2U7sir~z&g~8wMivMAa{(jndf8R~5Z#pR|El-VY`;J}X z|1Sx{zgwbzZhcugaKagU_PvclfMvCxzXk}mpmH94Y>XQ*jS~G2Lw_n|ul~{uO;u#- z*3kwZwFYzv6FHb~pVhnhpY5*D%fI#RxHzo7mRSGNNBf7Skad`3%-3}>p;eUN3@96c3)<5EM=0r#r6Ojq9sly<;8#;eQnzyR^!GoeM5p|WH{NL! z>E1z?`(PpiBBqG*Ctdb*PZgUdpK2a=3kH~G`}M$ z0rc#X{--!*wa@A4=z+#s;^$i6k8UxRMWKTOH2yq8%>yZlX1MDy4rg^@r&g#d0BThL z84i|4*l|}-#niX2yQe9q0oAB7N_*v|d)ZvxqxXH>_8KW$0O6M>yaOOs!xaAn{zhBW zw)bHQmd!7N7%;(dM3W*8!=n}cjnjM2DYwvVrHO~Mh3&WsV|sV~wnvep3cu*7+SN-- zKu3j{U#D00n(^o7C_A?sL}k$kJ^2W>$9Vt(J4O_bC1o0!^{BfvoU{A@rkz7T)~O8a z&l|vORUFt0$ovGXCn5h-(xH97gE5Vn)eY2FA@9Bg>;0t#;Cq)O?Y>Mdbmdu!(C+1E zTom|v@<#3ZlXb@-1#AjyX&UN(=)LpFF;+ZzHqGkCVd{HM3g#;6V$4BjFUrcY$g#-L z()|fxV+ai9r= z=t@1`&jz>pTtM__D{16tpo)H+eK!jnbRph-1p}_7V4cc8nJ=hQJ4@yFh?=hCseEi? zZuZaK*#pKkw3Ii~dy&ICv(B5l4$A>Ra(pu-<3Y|hpG7>OC<+9;IKdhdmYr_QZ92G} zi`!@OYA;n zivAgZn%_7`^RnGoD?=6)whQ>34rcHst&11QYdQ%lSU!t4r`n{AWrT}r0o$^dt90N)t6>^ImXfp&3uu{<9YX~X-RHb z{!}H?-fuIB|dR<-MY0w0^JDv6S!Fb3FT55Ndg zg>mjZhAqPKfz^9h7F+sE#XFj5pdWORHw7zO694Qe=)2!n7fq*(`>Y1DuZPCRs4+)? ziy_*}af*{$7{?ZXHO?wl_JQ}Z2!BQNJ6#gp}}7|Yb*Z}8F8`Sl^g zcC_*J%d)t4uduw?q@R{DTvX*r6>JY){NB#8*@tL5GDOhiXEf7KG#OG_?8`|FjW43U zVB;)!piZ*|Jd?=l95O%Mcw|A>dji^2;c+J(A`Ret4RWwZJaFO6i3>1Uz~0=8h^?#> zdNSb&3zG)8phDvYE-HP0><9c0WzqT&%7|+1xh$-tuXRQ`fB9X=RXRt{!NCIaB5~|d z{u7>mrf!^uDw0?|R#NErc+1>@KkE0lPurAW1@;fgSRQn?{)c$174BvLM$~iTX9~7M zc^?IiefOra7a{Vhd7>j=Tj_cz$0wy{mjF&>=EMLH@X|usa;HlJT>Okw?rIHrw}w@f zhyGd}d94D0MMOmkQkBDQX*)=&7T4ewRn(T>PT!+myX#0b`8%WRQ1g|Xq}_N*A|}R2 zygD?Tceb`y^J4_ZT-27-8Fd#~LcQFla;W&Q$dTg{%fNU^@-667y$J8rN?DfY+)-!Y z?HwOvsv9y15sc?WQx{POvK+T#vwG`Y25gdQfqGf;B=&~^&Y{zGWu70g-CX2_J)aI~ z!(LCtGVce|%uB2$1;{kR1tY67+i>$4XuYuEwlS!O z!b|#m;R`bbw(A&GL;sbxF?Gy;^hASLT0XzVy z?t5rd+x}tDOXVe))({E!ax2&Feh(fQb?$~5C!;s4cWiPPQ(&*|DhPwIWs(SDonJur z{YBnS!=<42_~-53$G|VnI1$-LE3@6Cb`NIcHM%>(3IMY?BJpF}h@Gz3_#L5YGHEe$ zU5hgcgC{91D~xJ$KRhDYW3=^|)gMSk&83aqndR5uUIx~NT=bdgPRz1RrNA`X-1Nc1fAB!R~%rle;%9uQ5U;|DE=jSEwP07f>c$cXjB?L%zfqWCcHV4v_ zn23^jDFE#SEmjz9$GQP=jN69i8{*cLB zc*Cp7Vh}?y=_W9%t2Q2z8CWV@wrmKUzpj=5;>g1_v(K!R-;VHM44G`S<_dv8Q$mJXG74Non#PP0+1HDVm>Eka$4y~M)5J{B9$ihTbJ#Xmw@GMwUlXQK zqg|tN3`B)qk5b0d+*IY!e~uo2&~{YG4zJKuARF9g5|r1s!MQY_D%${9eS&lE+p%r}z#%(Ou75)@s~r@`q)#9~DA63!uUC=Y=?urT zuSeCnR?Qhkk8iAGFuZ}S>&+wfClH?vMtAzUnzr|!qi$`3+@&RHGHa^{T4-hBy}Blcd5 zu!s%FfC@+shKx?h)xBwd_mRL(#*X;|Y7yp?-C`kOjsp$1%j%`KJ_QjWld>S-+fz*r zQogd{*?ADOsEgE&+A;?gamX=y!8F`Kz4Rcc9>gyUI@$>Rv4B^u-1?i-)&x*VJ5Dhk zkB`J&$4M4OxFv5^PG$TsfW6uR476VDrqo`OCRyM2nModyugNkpq)(dM$B(>bc7yLu zdGAjxZIsqjJ<+7#y=#FJV1)m6Ld|x9z`3d?=|i#7vU$o3SYD03D6>kC%Vpx%Z_3=> z!RH7XRo;ZX+)pNNC#OI-Mo9~HM*-yu46$!6irXhU0f& zM|2tt{~d{H$f2qq+(Jq+lBW=>@r0Kb_%?&uq=2@nhVpxY>1Cv}*FcL=ObK3+IVZy1 zp=b?vK{%U^U->y1SF?lD=H3U>2YR}FN1!~HefZAqvNws~o$;Nbi4y?S+1d=$d5gR`R#!&HL3awhZYk&-R z4g*by;mnFu%djI&Zb)mX5GhuO=?0PxM}&JKN=M z2~?q!=kmfJiE6>|l1S&IPBD)usnItvn_v=ta(0cdoR@H>NDyhnKgg;*14x0|QUIt_ z3rb^#B9$i{F6xc(Sd?6xfDH&^<;$kGN|LerR^-m*iw|yx!I|gHvy%Y|N$@;s z=~EgDBGH35LOjK$2;Hrgtm#>+ipMfiJbY)WstIes@k#zmK*Ui3HO@ZzB@9|-ZBRK2 z!z=G<=!tsUOU>8VB=7y;@q=vQYE=gBt`a=5YgGpyHonCu9&9!Fp7G6B@c~Gf5I+r1t#Gi}8} zPVlCxtBpczt6t)5ZyC-LYT^q*dIgs& zcY5&-!I9gxFvAx9jda^J;7}=T$W8(q)UwbM zHSk!5l!YRxi`v*d{!9ygK7AfzT9$JgBy@URrEQ#&1cS)XdK+h>4z05-L<(nL`{LbJ z9rr$`oUH_tILRczt6E|l^)u_@a`Q0;4z!No6&1=cD{9};M4#{|xST8Hn?D_^S@RM` zgi}|KO)EfO=rJ9JX(594Rkvf*eBhre!&sR=buMpr#a4@ua-dMa`^fc0_*Ii*5ou~!7IU__~5wh=uAdoL@&aIbv1MpIl z=CbvA_KbCQ2}uM>@(%X@oxgufq3aP;d;IQvYpMfnhw(sxIlb34D_71ym>c`fxed5@ zKwRZeAW!KUqn~#u7@(F0 z?St-&herlJ2wS}k9V6U6`mwORWn>7XXamkBK3CZVr1kM<4jYE{55%D18&}}D_qzjq zm+ze%iKdT{4(HGs*fV)w@}$3?>XkoWUpsKQm}D562FUKH;LV{e7o-}y9t+>^4NRnZ z;n(odwL~DF?cVomwR^@t)9osOj&Iw`pEuX>!ZX!p4rhn2Hb(O(T6OUGDdiR2!@wkCh-xySx-PQH(-V`fp_KJ>GX^*B$&M9iBM6;nZ!bLgQE$ z7GigkeWa#(t6s=~vX7wS147G_adty)TFR39dmr}EIoeSrv7s#oF`>0rmq4FUW|!zVcf_=9we%zo^X_ePTSg-JmBSuiPtAIZ#ec7Ca@qWUUaXbu}$i$e+MuCJS z8mWA-sY{qizH6E)DVj?b69$93f_t7_&bXT$S)yK`f$$1)-b z!ZyOhxV;4bkS70u4<3kE%vOf`j&4Pa&=ojlk?B}&u&+&j+)^S`(dny$fl6N+hVjHX zv&bOYo`ESv4y5*mgrg)YB~?dn4Dbv}S99{#I13Mmv0r5g{^C8ngub{_<5%Bk&snUK zc-rJ0(iD^vX_(a00(tC_TkI5Vy9eX(I|d9P?djHa?0L%LHIhl>bp#pNQ`tQBX1-2- z-mxe*(p#_~sHr*BjZuAaDxh=|=#J^ilTSlzXJv>0-lv>-hOw4ixJ+_a`ig8UG`Ri1 z0Oss*Ur-sSGQ~?2C0I%t)xJIirFK)KT`J*H>+#i&-R^6ZOS}YPhzpB~dWX35J^UH| zKV6}dkv=?zh z#odu(ih4)1&MkzSOiX-z40!C0b#&GA_9wXc z8+90(1 zWq7MyU9dX+yxNZ8uA^Ru&W%9kr-jya!FmI?(26=5)I|~T=oS1VBd$C>jGjYL`DQT^ z_DZ|uM?zSrt{@ltJ)rOQrCFrfjsg(19G&@~^}Z~Y1!o}IDg^&(#VfG~grQ6%lZsn= zj2&8XWJ^!3v{FwHkNtee!I?YILC+|uYKq*wmy;C@of33(f8fP1V?mb?j!c?6pZ3i& zXQA^0XaKX#-Y;1V^M?g!RIf)I8lKyb0&I^0WKT6F;jpR?5b1j7b~J)4H}VjusWEEcUZktq%O+yL(=Dv3H;d_LE*~5y~qHDN9$!? z&Y>~ku2$^p;~v-GI(FsD*Wrq)O7Q$K6Zxiah{>atRKi}dB7WTVHkKg;Ny46eC+L?K z>YRvklg|-LFkEbIA3FkapWqg~2%DUJVxXFY4X?#F{JN-+;SJ_uFT>Scx0taD`LoXD z=k~@q$!;ZTyx&_Hij{n>64{2)ljCrY; zQ>eo9r}gXlqMWX`z(m4;-e?PrVvuFw3V~H6_;-e~l~ma$2dT9^5WhFQm&!f~s>e<3 z_jg{Lw3?tc?G)-=q_H9y7Supz{eqa|*dbR_`xDW5q*OaZ;fK611=8)F_rcrsvjqD3 zGvkpz3P?&*x0#1K$v2qNVC2ZL>gA@xP;W=%`0I#6DE<)362{Y^(eJfTJ!37wA^dPG z=U}6~k@C^ft)e~!@ppV9xzZ=<2hc+>1+6HnBu7Zt*og;OvdTGIZyy#5NFuC>%T1|o z=xICL6}*0X2b~r9b@ro@C0^>7Jgr#0L={hC#gI~QlfR#8xIW8NESSL;J(fUyaz}$9 zRg!&dyo7C8IN82^lt-3-dKtWg4{4kTSnB+nn3GxGf^x&D?^n;5S-O7Um*wCzpRBox z=H#5|eg8v^TWTsnO%nE~3d`~2%cX&p?UXRVLhoLVO$FKrc}aVAV+ym`W=n>u@R7Nw9-OM+iHA7GpJO3H8-?G{Os|rW7(Q8j?SVl~ zOQO*>9WODN`F+nupI6=?bT!|l5lMNGA$swlSDcpzS?y{x6mgi`r_UsjcFAkI1(NA4 z@zixybCueOMxXuAuXa$O=SLbM%Kb}~mA1l~WZ8GNhl&OO>J zc~a!<5UEuNyOw4@oe%>PKhh8SR5CEpWzh1q)f+Rtp$Ow3ELVcc#JmN2>O9-O8et$6 zd#OfUWO!p*Qr!D#u0!yexB!Iq`sj|+?W}|+_7Xsg`NN(-*P`@(ly?Cf9LS^K*ty)u zjL{&BZO>h(-`ERnU{htjgl<9LAXhQ7&D$7TfkO2?uH>zZ@4HT|WFRRo5~5?R7mT$_ za%wm?fXs|hS{Bszra?Wt?{t^Lc7E?ixP}26d96COW^dw!+6k?C7=K5~%^|MvTPA6l zI?0D}=X2|7P$<2_kR-GGHmKM@`n52E$oC6g%St=jCY)XcE7yLY>SH*YRe z;_Kq>@UKHSm=ru-G!FHD+F5ecNqsE)UeX>^5PORWa{ed z8f7x#z402>N|^gI#_!gr=C51{Cp^9^8wu`KXI4uZsg#PdNEJm5_0eM* zC?B~+=DJRf8P0HKHKx5>8)@MiGKnr;IxhyjM2_6gy&g`jsPO6D?fv!`rJxt{MQW%q z#(|sL7qc34WSgIjDED=9-E1L(YT^y_K}+g$8yF+ZB>O^l=A&@#t{KlG+Oa~25fO>e z@4d4QZiwi+-7Uv9M2%r~eXg^19s9Ee6|@~vRKG(DhKF|mY=;EpMLf8fP=oHRIxK{UEMorf{oM2kikk0L zLs>+pPW^dQ3yIrw$f zJ;^*PL5abJgOa%G-nfkx#Qt^meW;^{7VeWG8sA(gCX?v8qJ-Zc!p`T|RI(Y-u3?Sv zaTv5kcjxw-xHjI|pMG8&4?-2Fi-IpjiNg3x=ii1~+Meemz%=6Ck-h<*Kr1HI8VzEc z;M>HSG6>?0`z?kPQunq#Gbx|0J=hYYfK>xKRwNSC%v|BB^UzEagM|UpjrJ?e><15q zY)YQ{vvH{9sqyIkp#{`^pDR?7M?MS=8`~*fSUjBNu!<}6TgZdIzYF6LoN0b`avw%p zMt5`)=NDhBHoZDtyjzW+?T|i{p?pmN%6!ePY;Ef!>WP!r`6Jdjhwlg30$HoaUa!_F zsB^@I3sOoWMA1(QA$=@IKCOMY_25>Y$f~a`l6Si?Y*xcAW^0DEjYoN~VB+wE^s8uZ z6c%F+5*6@Y&2_69ui0zeTweta;m!LW`O$ZcYv3@VFGsCw3hdLL8*=xu7NhK)#7xClzdXrHT}j9lzr<1pOz$;aCDy8*FfuYo_) z+k2I=ZEh-GFK+aNTpDbs0Tc*Gqt2ZV^nz z(2cUHW#1L7qUG$6apF%&aqHVTU|ZjYzt7q!rpKY%v5%%Adn%wl3&>sTH${sx!o@^2 zZ2W~tyCm%KM8~Sjvb%KS02lngs|#9VD>1*AMZF8o#Wb7>H9YiaPHV0IzKr3>ffn<% zlhotUhe%CoUIkHFWbsmR<{bHF_4=I064114nM|c=FStBj@Ie;bB8dX~(crK@Z0rT~>Ty zE`g$7bxoV=ws0%M9eA(o{QEv|gpOYKa)t>9 zu}yM+bt=$hth}02wwu?(By-Xm3|1|7Bgc}fLqTdxx7ok{uusRhWi1+y;%0|8z7*v& zfKSX}G17+;5V$StUgxcYGhoT%JrZh`cYNtB1vk%uqxs}Wmx8x#t@GAssVbw z!AT=B@1sN^;)MduhytvNo~9#nRM@4^OwQq)4(v9GXViU$F$D*iw7O93@uXT_bCh2< z+q_FU=V_{Abs9fN2Ew=uk^x7&J-n~abGXNNoINb#dWEXJ zmAyL4RG3YpiX4&@!c`ZzsfhdVuWuy^mn@?9-c_wcdY{MFV)pR5kc2A-u>13Bp>2JEk4!-X8}>1z{2)H*6E5PU@|#-AnFxxNat5AX9&J{;d{sMd|l- z>{D#b>pM=I^>M+(W712$c02Lypfji=qPz2TlZ!WR%2YmsYgr*J7R(jFsO!~T9Hx1> zq@6UaC}YDm)JD5gEdU0XBMmxEuL~xV&t{W)OY>EI`h-nhTwoG+>|HDE?`s-Of42|W zt;D{o#^5j8vd4hnGKTs+zgBnkm1|-=Z>#w9EWU2iWlEmfS!K+YHRO9thFK}<^Pn#0 zE#%v3jt=C*60EtVsKyaZlx9BlAIeM3I)WRt9oxz`VXM5ms=X|0f$y=&DD|#mQd4b- zgX+;Q3OJAG3dVI|uh%7v?oHb1B8Q@&T1uhSY09qCn?$4KU>&nn_{1zq>+vW=t$$}r zhg%e~mHsGSTBn$8&;{#Y(yjAH3(vjXZQV!Z5MgbOCt?UB8#64ePb4}j+dj>>*SH62 zfD)er&oNblJ+gB{mh-ylua8H*h2;{&cU1?ouxybH zonl4X7eL+Pbv;|Z9Cn`wP;&{@-9nVTpFZbTuaI~t?Mlq<#|xfVbKH~nivlUQ@AJAH zt!H3U7tx#GyIc{UdX4DSOKa}t42Knj-5d*SpiErEDOMq0o4>BPR}YlW-HU=ldsprC z5n!fV@Ci-51~i(I(MB8h!XKB+Y}trc%YTTZu`)OYElil7iq#?~?|^|%B36zQfXC>O z7TH=O8-fN7RkKH5q2|QE6=s-Is4>;$LIecdC<$!j=XfewHig(<%Tx z7Hji6hWPPVa9|p{VqsX3NB}Jqxq(;qae&dTfD*%5ED^Q*%K3~<{M)QML#&E&}-fnkSLPY@#Q<=O*>BP3D9~;q#y_P!ih%0577=Qk30X zq(w9eu}*Uf(QA~S^=|B%7iORDHCU|xa`2`-opYDaL}>ZyM-8*N8!J5ux*qIwG`o|B@m^alBU6##f>a(raABj67wssn zG_9*~Z2*jC5@YP=-pzJ^OgL&f4W zFI&6LgH0-91GN)Two;`w()n=lySl5i9TWvt^uwK5DH2-2i_>cHGF5r(yyb~(2;Z!k zN88h+$azKgc5tzY!^%qA(U}?0#$-ir0J7in z1)*53!6#FQ;`6{`WcLB?&gOM5JgiTVk_+Z<=#|DIoVK ze$PnUWVgA8NLX2Rl<@`TAeTLfN!X&fAR}oP+eNehd~trYfW}NF+^bRs7=*<;{8WF7 z!G3!NbfxSunG?k}%GXQ2ujb?SJ_JYaX2$Rx)n8{)3SCV8fk}`9EiSd5@@@}CtKMG~ zGZYW|)m=ni<#a9nkmv9aVhb`bwRHho>8nyBv>hP8iWee_#&N?sqsM?ul%jce85j(= zz(sda-CH#JtpPOCFQ1G5-q433*Uqib?8-Tw0-%GWmBtf=ZX`MRlww&_oemrC71fdp zZVac-aLVbi2b>k5rA(6LZ#6xSd&p|?xX6CHU-(QOcnKnVAn<-#%2q=|*u~*Ir-XGQ zy~2ClJ_Ccr@t+kABXz22e?&s~6+@}ME#so7N*=|I}?OYi`CVRwAurxO7|%+hyMY*a?;!;=4qj5!g|9gy$GR|o08 zbmdY&zcI53wFw(Mxv?$(55MV4aHiw=5bK>ikU=^H%8}Np6THVbD@62F>gZiwHa7ZV z%(LQ+P}(+u;UQ4Jy1Mxy892R6&L~Cy_&dm4PYU>3HtNs;cnM_EfMqu&P%Mn zFbbQF?kxrd&_@eUkmV48*BDCcR5T} z&>l6Q;`Z&rDAw2exvRE{#oj@Q@4u}Q9g5_1bPUSQ5u&ekBc@DI6 zspU+cH>uArQpxX9XS?E3{v3?3q}Yudov%jfoLuwYn*NGeT&bzMyqdC_AKzvy8Jk@X z;V=f6X_ZA&2B#9o^wV_volm^MWcvQ-9+0b|C%V|=uU@q}*K5L~3A77Nba|3)zz5a3 z!@~7Wf^pV&fK2YgXV2VXk*dDlz9sVP52>5-D*LDN3op?#O6|z!d?hss-!n3qG7eN~ zn_-;~kN0=X-?<-{=s1(spUrH-@YI7->Xf|7N3}&!A-y7-{4wo7jvLnRb*-<~HP6pf zg`L>WuBVx9uHpAGs0%Ag+V@XCw{rSGEA8;rln?RsaOWx;rxF)<3*yF%{=j~X!}t!l zmeo+G|FK6X>`wQ(wTjQFVEe5;{G6N&wBFH#>X~ycX6~Nh+zyLl&&lO09nPdVnbOVS zmz<6%r-k`M>waYX5qa5OlP}D4Ztv@j_UCcO6Vb8WkMb?#r&^zQz zvKNlhm6NDQal}y;+(^}H<$h6nOuX_ND#JLyDFqhL@}HBy4gLK zAaUGt;MQ?Fq3>GFIh+^Yx)a}pEKK#;dXo?$034k$`Rus^Vd11*o=JrI-QFx~rw^{J z=dreEbnZU1z&da0;?S`H7Z`}IM~VuqCoqZD=P*xcYbEQed=_HM;k(Mtm?Dq5ZY}mu z?^gFwE9TR^k2l0?tn|?2A&M>J8acxyVdqfJ=mO9=q+iZ{VXaMSEj7)y(MU%YNbmc~O45{>YZGJw^-V5TmI`C)KY^LBKK&22^DBy)}#)qaUi($p$9kFdT-Jwly?4jaUBrL}3Xqquf*a$_HS-a^@l<=n_fYC+d zl)sGm4%i(0Z0Qr0G63FGFtHr&pk4nb&|fvOZxD8S3(cHfb`pDAWiv?J)9wuH)0egI zu){-cZ#60;J^oBP@Pz__ob>2Y;xSKlUA@<5xwYn zA~Vf&XyXOyh!sq82`DF6E99{R^{G7{=uJp2tdR5AaRyaUB zgX8_RLYjyJ?@cwR^jF{8_8aAGqkH>Zl0KRdJhgrLSf#O~1TiPpwQ(?2cbm*e2jDVo-b!Q{9@!!|62-kc%P>HCKb z#BS@YfN6(=r-!3kEqlTGiWBx7ZQb)(yM7=XkZSenp1?>~paMg|cNgIBtf5BWKQHWc zHgc?R*~G+U;L*U8u#zbIK45vYN^@?AoAwG#@XL~Cb!s5yVdCG+1~alw%THaL$LI6j zoe}vNqI>*u0=#;qq8`bN5VEcIPS0abK@JTpgJaYJ&zP9p0;3J>& zil||davEM2oCYl-srop?yRp~sx_43YEr+d$HCUyamAjQf#gZ6$P!wN@f<>l7AExjg%tZ}L>Ea`90)1x=xEbX!x+cN@!s>o@BTWacjb zP?pTgwQ!l3eyom64)i{4NAe|>YWe$ zy47&Txz4N$rF+k$b zmw=KpOmQveN&%#0#gm)Y=`I5NnJ33*|1kG^(K3Rar5Od z`F}ODeW@6-w35EvEqEh8yyB_k6Q*R19OOkBT^M}Lv+@XATRHb5rHzyOgI>p_8h$J~W|Nie|`*FFIZi1c}?Tr_E?L8wKPsA4yM4tkEPCjG2<2a)sA zB^xy*$NZ6Fu8Fj%C;&W_2aivHZ{xbYptG_)DZKYZMmElHgo~=Is96z1d84!bMmW$fk zo|wdG-a+-`qG4M=lp)b`p$uB9%aBQ3GGDUjwOKK+f_t|>88msdbLx0`{Mz;;HS(I; zz*>*6My~*^ZsIF!eA=Yca|75D&5Topqd;3*OJN4P&5X``3Z^`?128D_b35HcomBvT zV4EyVCfV)J{d9%l^JjjvS5P|VT|N0aeS5+)xM15Y2gVf70WV@~@mGB?{KU0IE_cRQ zpMA=!{Co+fr;U~w#X@9TYB9M9N?3i=!zW^P(zHo5(-4X3131Q%;*UTA^DW8SK)i65 zUACp68n|Eg-g-TN71eVS!>!aWL2?~ajP1N0fu2pPM;6|TT9V$OUgDVQP zwBTAJmEhkdV-8hH!7}8M?vM`ePi_@B`A@8Zjc>C_8()221+?NzhJggCM!BB0dR^G= zJ9OJvIb-6XVZd5qE~49*)#9}Q@7uB@FBdEBJ$WO!$$vc`wT{49g>f)a<|&;yU6x+# zfWXsS$9kZw`$xpTd;|0;N`Ch#)P8)@4sa*5$~A?tq<7-5rYtbUYf?wN(9dvKAR5$# zdL@w@XxV)ZN4U{`>xMxx*2k)I4+a}B(Cx}%sGe$1PDT@~Q{ZwJ5*C2eQ*^67hn!cr zxi8oJ4GQkF(E10bHCE;nJRe5oNuTV2f8tqG;N_s(aN>?BDozlPSemtVq+iuT>y`aTnw#nhDj4>**dY!BSuP*_O zGU&%=80G%biH>TGK9r&k*qY&$gFthy%em+KTGb*N|M)s3a}vV?s9&+3#C?4FR#PDL@Ovn`M6 z2MD2O9;6*z7cZQ?5{1G6Zq2jj!@4P0RrB3c?8;!7W{VT348&XgX{N87@;X3aPBHbR z(6~bUrpZI)3pv5&eA@$gNRdi>)KANiaM0N>JiT+*=C)i;4yjgVPu_(i9g^MW!GY-J zd*IXOD&3@#U$-ZU$qXW|r9yzTd>LS36YSgf=)Zy$9Yg_`+F54t?xMBld@!-TYuHmc!DESHh}UrD z1|SpEsmjyYw zJQ0qRri|E2e|x}UVb2ZT5oEH}=_+hhYwFmxa2gH*2@0qlp3F5p*Jr&=e~Bz^IEs7q ze8ZLghU>!6XP!Chn~CCR0dd5|M%Fm>8of@a_N;ed@J>7@ZAV1LZ&vro0t#J&r@8C= zeV;H^98&&~J8|^N0i0b^OSNC)v-1GaVLzUg7G^X3+Lz8Ba{ryIA9s$;P1sx5MUhby z^%@||YL4YbI7)4IrY)CSOKW`K?HI6$-xtP~oYXNy!dSjQupLC3c#ntKm1}7~pvWFQ zEuS82!mQNrK;Cm>dse{H0Jg6Q3^OR|VyHY`+6QMwpiqyvTOogBHsTk67x%z*-bW9a z>Q=h>Jsp+MFpe|&F60k#$T&dEb*JY(g3V?NV2~*$$AxU%AhJ;%*3QzVVm5wGW{^^`Jo33y_?nJLowNdG*+RbEgMpx zXLEy}WUqNA-#!80gHlq%PLQ>!3nAFJ`N+dj+IYI*9gT<*eGp}Sj_=}gpTNs=Pcj8Ce;{_$$g@6d8|=Gs82^& z(`_4E0mXp6{{Bz$lt-^9Tn`50r%@LTllf-a9fC_Hy02r)a~=2fVFWY` zAk^VG0;4;~R=f$F#Xi7g)}-pTe1364i+O=UPkR$ozjEKF%`s@fd($Zu`@yv0X$Soe z__aHO+DDE8C-IFULFOCX`PhU$drw!0}#g$IwZW?5Z=U>V3mwCbnzTb$2&sW*)$i`NFbl-bg0nJW3~1(Vrrm4Y)xF z#{S5y^R!pw*afh_6T;^KUG2ph3n6hDjIoy01uJWOWl27>H5z0;$9*OLCw=7lo~bnZ zY%kt=E9BvTuWMRsrH0JgtqQeY5DG@l7kbF16d<+5l*6t8n9hyT9YC9$z55UFU8+Qn zAR&gXyRwOB z%pt8#j^+3`>P_h;y>VV8ks4_4vSpAT^hD>R&^!p*nso4N(@!zOM$t63i|g2lZV$fu z_iS0zE#KkQ%^lq3=Q9-&z2oC0sZr+tA8TJ773J3bKOl{uh=72Aw6sb|mw+@%w@A0b z0Meyk(%sUH(hZ754>d@O)X*>tUB5GW-|y?a>)!XuTE9PBOHrTaIp^%N7$qctgX?PZls^ODgTdr@FN*iLXiS8}tC4&SD`?xd{fZy#-s^0-QV^}MJxsohsU zi6cmgVT7l511%pIh5w)cQBen-fL1w&aAK(fR?YX=zJDcw~1F$?If|2XMYmac7>o3 zVc$OEH&DQO+aG?H&27c3Y$Wx0?o8>FtMa(_W>=>62Ud*coyIklX9-oM^JX^^OB`8r z#?t%e(y*-hop$*B3@a0N9x+QU1$+68Rn&`9l_2nYUxiXYAS^iwx1=;}^m)jz*0K5d z?2oZS{ovINZNWPpkhn)k8Qd3SFO zBlmkMjm5(YBwt|LZ54E(W_hZWA{iy$d@j16x(*3;>)m!^c`G4mHv6}*~`lTX1ckSz3hqRqVy8k__} z0jEY$*;_$P=_1SuPbNdHem8Z=3Ct2-D$h~^Hh|1mE3x)EU{`7Yh{&J(B>G~c!$F#B6&sihN3K}(TYWn2=L{Y2e{)Uy)VgJyQDC6ae= z`f1Ypo6itc;}tZ}GmnMGyq}nI)rUH1F>n_yr><#gM^+S!%@AqH?tzM&a;-~SBX;1e zUstv@vaL+;N2(IKnG5*P>$d19WH;J3Zd)yAk8~WORMCQ*T;{?GU2!c3hzPhb<{8 z^-KQOv=t3ct+Q$$8IPwWjv0yIpcW=FX-m+^uNisLqi%{b{!~lr>&MTo4#UXOMYF0| z&7!v;>06ZQHf12P(OK{)Pen=a;S8bb#Ur|D5JD>mKAs7aDGmuWAv?UvF=MuQm*1gS zzUh4U@%D(u(eepBC=R45{coHV#I8Os`fh^{oev&S-J5=**O2p?9;Saq8+QB5N5Zf0 zGiu-I?|;`@q4|!_{Q=_ibdW{n?1RVgy43f-F@7j`O^*}GvH?%n)p{Ydcb*hvP_~sO z-s-D9eU?bWrMvtT|9VYg4r!3OP0~lzyz^(?(WvC6ov~{UbKlPOQ9MxhzGeTEM*b-I zV^*rRvOUqp9Upq}Cf*N4_Juvq&fZjHpA0q{QXd~?9%h3as9&4#SL@CN3vWjBq6%=B8@}7 zWKr0G$Ks<8hgY4m@loq))uU=S!p&{B{GuvW$5WM{qKNqCYJ7NasoZt!GPhupN-5Q5 z@_xcO6)Jz~Z@AWkNlti&Q%PbY_zTL<$B4%f&`M0#U-L^gC>;v&eLYRu4yxUhiwHLs z#OcK?C(hm7YZ}_%U^U*D1t#j^eM~*7@6j5n_!~LX&tD(xpzGZ#)z~c0r@>;rWApg! zbp$Qj1aYK4(k)u0y&v!tdQ?)Q%Xtm9LGaP{?M1aahO?ko*Y!CrR5SvEl3u)$^Mm5Z z)HBvpYmr!f+Cp-tH+bl}+2>2vBA=L0q2B|KjO9{z?mN3Z*H|1YdNi2+$?(9TzYVoN z&Xav4z(O1nZ%%zb!}IeIr|g0A1O*u_hFlqJ?I-EbAKhveD`cU`)Yy9>+c!Q zd+hv%-sYXSf0UMX=-2goa=ez)Tu$EV=!JRq=`Y=V5WKU}sox%5OO#>t5SxB$$RrsS zf@Dg>#fLFc1L_h}HLSE-^#X-xYOt3Hl6Nqnxx5@o{;N>ov;Qpu`pJma0zx{P`<0__ zKtvm|YhIwq_gYz2p=V>kc3}xU>FTm4;$gNe+E zwgs!`61(CD8z@w2T;sBZl$Ns=(cP5Gdn~K(S?GST{^Fu0@r>D@Bz{G zdt86`e>mVD;b3Ua9HeQ^fRkQ1p5{pp9Fgf(F*=d!IUTJarH~0>JYE_&!!~ zxnJp`!2=NGEr2GgHJIA*QY@E2Y>s!YEX9*E=R~jVcE3Q^##{z9L_eSls=4$aVuB$< z7nQWQ$8GffExPy!92_kV2{1mb6`R8Fyd@YOsa<}*?!OA;=kJtl(HkXDDztm)K8?U( z^rad50aGd6;CEodJk3RhF;p;7_m-C`-p70MA%G*R`N1XeUxzOIUsd0|8-%*w*WS$IC!WEF zMR_>U1-deVEnpnQ5L;%gqW?OpCktMbZWVy;K;{Ik$)IGA7u|eqq~g?@Av*;Q>GpKf zH*6j}^kf&Eep9ADeHU0?gQT~#`EI*T(*@tX4wGPXW0=%XT941FODiw{l*FKE_zjvv z>z&76@5PVH)}oFd&U&+~whM3ry&eHYlDagZX@|YtB+nf@b4Yi$B&YqqP5H~I{OunDE}%u|9-6W!lIBSmt_&a%nLCq+g?RVX zN$-@rvce>9K1`bSkfO;eM25XCRk;C?3$woaoY_j7kDgQ$`3WOD=$#WyLok#(23S#d~f9zYL+n=z=-#FcS zk$C8PK#x8Kg)*~qOSbPP5dO^91NG>qUPVy(k__KYP?4(w4C82>;Xg*Z;lyX!}I+%N=DjL*LQ44+1ce zYlMHR9R6|DlGK>7yGod-wJ36Yn8PyP*}Eoa9+4^{)~fy0Ois$vtPg_Oh+ZHA`XG1e zm9(i!hqCFaaoTc;fKi$ZGIN*KO^h3#6{Ov!LR*V|9VPbmGPG`+s|pHUcmCE2SdjajFm*)U;*)^vlg^E?QN>@(# zO3rO~NxQ@_fnBoj0w2-;c+lS+1CD`YOj-iYeQlA%6WyDMVq<*(FVf53FL%bwRZh5ZzC%2gPyrLAyLe;e zAy}3tQRRj7G{C#?#(B0q8mrjcI;Oz{)DXkZeh@jOVB}S{fLvu15;6n^N~U93H>xHH zyuw1%3<3+hRnqakl0y;`T0Ve2EC3Cp$8qXKHYEe9k$5pLw@v@UU-(h}QF;IR7nP*y ztCN8Hw$GXEMD1CRqJOHetL;jxD+BpcEW|T)t5hEf;43E#6iAlpzGaAMGO4oHqmtB0 z*CIl@+kbEW{$WeEF6!1nZPd4{_{qez`Zixu^5z{c3sB(0h=Zzw(5u?40!sof(ywIK z3WR$p1?F6UmXkG~?!*9xm&u+782zm`I}f6U+*=4Xjhq3CJFHN^>6NPPYdP^l7b)qJ zA!0ama+s`-n!NXre1Lzlkm}UxVv#<*pr_!tCZJUJIW@L=P^ zNSldt1I2+qXY>+L2wqU38mx`4?;ey#Rnh((aFYFwI{iNlcJDrxc9AX#IhX#$==od$ zJ9trgMsE8i*fTA^)cEYec|!&Nl6g1NeBq1W$Sx_fN~U2Q0n?U)v9+ic4XlMK>zD8O z>ujexH9VAoq=z?9csA_z1&Teko?C4_?EZ=djKC43BAg(419ajnwVDDfcD*Pndt!+< z?)T*mAxi$+Uz#lo}O0PR^|?qMA!uI4#EVcqA<{l z^UTy@ma(+NY;84>Xddrk1sK-y-@_D zoa}lfMzJ+pTMtX$1P2HWg|2IMp&ix6fcD6A2W4h)gKX=Amw%pJ^uJ$%{#!(;zm}V} zaT@>Z`klRDKK*78XN^3i$B_hvcUvHmS;`=z+;~gxn5lp?U%Wqsb$dF*#>w&QFNCGP zao<|j39eE&Ee_-lht1CId5ikw&?))C3w=?P#fIQL&eTnmSAcFDoz#u}S~O#Ia3``{ ze1~;#JNHZYsqQkEPV>y4S)4;^Br2xuiB&MS6wuJcJaO7(R?^SyfdWC8Y=3Z7?P&_qDe8 z)9p*Vznb@UTetRxUTegmz5WXNl$*$8;JRSB>;kh~~0DK$2SY;bb zAmOQ!-j=6|bkLgqWhU6N>8D*qpU^y?Z_6#(Pq$+~@G)TA`r-HV>Hw=`ot?1U=~e=k zh@%MJ9WY|ZX`cYT#^Q!|=)dpjpUspqH`q$nq3z2fmGl^%)`DUjr+tJB3s8yS4(n}o zb--tbb9H#0&T@h8=|acqUhAX&=m;pCI`re|umrFXKXkv$HJs91un${f+?-^myLaGX zJE3KYs~yF13+ySrsa4Kt&$Fcl9sjJ(bUxrjyRn2?IcQ|5FpUBEw4T?grTWQEAZ1!^#SOA9CZhLL|ctk$b%H{sQ0hB*?(zR|FiV` z{j*!t(dQVQV=)W(g;MLc{D*)Na0si< zUqvhe`Gk&F;dT6p(*1Wn=;bT$5oXivnxFN+jy%M%a{HbC_3NIrV4=YosrAk(G#s@v z6qSGKyWt8*%j-%Ef@c?RgO3QUVaG+!`f6>D;b;Y6WnY-DNu#H$H6K;X^adJM{+;vr zk5m?s#DhtA@xb$q2cv>Pkmb3r2Y8+P*6f168wr9BcF+8Dvl96Eb=4{vSo0Pgu}@|@ z;&Nx^CvrZ0J>9FWsI#OqA<)saUb$s9)(F zS8)of!2zc@rG0!sfqSIePs6-zmbUTyKil&gFGBy5BQo7uXNxy@>y!>IB;X;1Zj-l1 z0ZuVx6qZr98YZ-sX!2}0IPqC(C5sI(bZ>#rzd*cjpZBzA$s$`iI}AJ*y+`Tqb1N*t z#w3aDI!FT5%RTX+P`j7_jXLZ{w)cFL^FEzCNseQAGb4xuzFtvI6K`~Uar1SD3?}L^ zl6TV=$dwW29%wgtf{x(O0hsbHmDvC2@ci-@0q@SMlUZv88G~E?9<(h=Tp|=xRRRJ1 zO)1`_x9I5z6>A_x7UT;^ddcUyQ$#!=;-@`XeL_zCimRdr%jKrs$wCXca6*w#LV56t z`@Ds3(Yj<9#*W>bx$v(d@wm7AX>bzUE}Ut9S}ntKw5uu5iLqj3t>YRASGOytZbiw_J1OD z5)RPk3~(dn&Llyn3<2ED)5WNe0C7U}kj&S;){pW*H`15>mv zj0dC%XfsSgmUdbz0U;;?_z@={3PU>lDVbN1pc z7*?gyg=YMAc`>5r0OncTH8kWTq85m*b6tXWznCdF9TxOdDqy_cy#ow7X5!{nr4n?! z9E9m-f($02?v%E*U7UPE-Z@AQad>C+G(+PGWM!=A6}4b{s+d>SolLpAxvD8w>w=Qm zPw6B@v!w5}6dP10df!8jr7F~48X^IZWc5t}?r=zjOPa$9>}@YW?I}~UU@Xsp6c_m~f< z5D$gwj6SdJ5(f>?dWOUAClw zgVP8^GZ5(5-QC?qQO<)Z_4K^F+rS60m%|w9?_WQdNbpjUz8~mnr35yX87sZmE-_i% z0t*3ib4Rp~X;huYk{2jl;o(sO`6M>s3vYsrfcoZcYik>Hy}3=zj5)#$FE+4}-gx-% zVPBoA-O>oQheGak693Rh)sHr@+&@+t=ewi(4>O1VRxk&W{X-8M4tHi*4wDlT*#Q(< zR2$@ym3RJ2TN_Civn`%*p+l?|qf}HJH1RwJA`hXMY_5k1wXPR|>g|MW{p~aVesd*N z@Xf8Pl1O~*S~o|nATpBpG6q6X;EF)G(vSOERap5z z;P+p0{sksBHg=i)@C}y*Jw3h1{g+uPd3FYneKQ<_)+Kz;6e??dVvNm7A*syp=$>hQH+1fJ(cecJ$@r z;!?T6%PXUm-+KcrO%MY?<=}R?sP3oaE!M3qQ~V#8|BEyF4?nvaCi(E;Ti`=}(OiMO z4*KxCW?rIuJVBi-Hsc}&2m3wo5}|3G8P6_fstfTPZGh-m+g%4L0?W{ zbua9@-C*7LNziB*gC8(H{|?WZ=x;kWgv_N^7mv+ zX@>89dz{9d_K z(I6&)>g!0%AIIBG!~`*F3+}XZ`*{c4D#^RS0@xY8i6C9{@A@cgV5KLV&nswg>$wf9 z-4p3@yo6s@kZAuKwLI#y7zXbPXN7bYzq0+@=!$cgFt=^e?t;Ld(uD2AI!Gefav>ma z+;wKhq5DhE<20^Xwn_w_w+zgI`jf(aBe}p5+3L98m_J`c`i8l|mgX$0rXz;I$a&yk z#e&(&?)}*rT|Zt{(d7{0A_EDC#CAr?R#B|P;-ub5>le$E;H5wB7{HZ!C*A##T#)Ls zQVy=D_l@q`zk}wqOrk~UM4WLhL!~8F061ATLcqx?#(mgCkNv|J2p4=MjdlKwev3P5 zzBBmQ1)b{9!TF9h*<8tuRk1Qlg8(59xq#4auP=K4j{Ej9fV1P*Z@AfW?~fHuocAYo z%#6PE`ltDvVA0amy;@sa+xNy)1~`9G9)g*)n0T5&Ey3@F%d*qsd(#Tv#TxAs)?`ZN zvVKzNe=K&)q4zsZ=M`o2LR+Ci%Pg3G$W0e3geE|>g}#;NhYu1`H!b3}91dcWcEFp< z3R1zbAna%Z&P$_KRAgipfFhm2ps;p8<;Md?J4I$?XL}6k40T4cX>@w*txAZA8PR&L zOHF3PC(`j*hfg-*H|&D{+yTmL$#gGQG}sMs*De+mW&!WkI>i81X{Upp@;5HKBw^>` zrT12b$#2N9?RIEf*8W5IB%$gxPi&++c}GqIgF=Ch&dB<*5^Cah_rGhRH-;^->jksQ z$;NDdtW$*nVx(whp@qWxVI!Kj*nqS4DU^mIQ$8%#VYF(mgx%Fx{z(%UGi?5?B_J{} zQQvmFplHBMIr(O<6GcKoLS#zHiVnFFA@H-J(U$K~8yJfb1q^y(M7>hcjNZnej!7GO zsHZ+z`SH=tBu{0i3I}>sbq-+{*CrSfh)9`B9BGoi3dQNOq_5a_Rblpb3-e_a50;H~ z%>KRO_3QPA<9)qgOe0_)-V=;naLoHBf5O+^34>psSIB`5x`JfeK@%ZC6lh ztfZ?G{#ya)Kfe z2J`?NfDm+Y6|7r<_{|*DDGY8uF-$sBO!n#6E~pF>roRF(%qUP{6z%zRsx_peac9E7 zmWJpysXup2-Y0GDeV1w>?ZSa9DiIdk=SBfqesf7L){^xF-AHPj|2;bs0CXvH!#=QL z9e_m_(FjM*I5xzbu>|NE2PitPsD^@?jlM!1p7I7juj1*VuO$@hKHvG2%i(E5R{te@ z$$mDwpOH(k)ea~HR|I3DnFR%_+a0*Y#f?E3A3o)^dy+9bWHo0nVF3&bv-pxGpy|j` zbM0I43AfN{&9pgy;ru8b$1_4`Fqx%g2g&>=%B{j??7zfha||g2WnnE0))$ap*)%<9GE5ihptpY-j8$SEc1po`!46-+bLZH|5 zJTPHKbO89onCnXF=uT0^tIT?im97+-zlVH)o9<^E%b02M$b|f)N!#t> z#eF07s0z70ehv-Cy7aIL+t}4=?#qP3g@Rue1jX*V@vqJi&gPvFd16*=I{dj{%U~w@ zU1nF)r?cW}p)0-o)}WJvlY1li#S8b2F_ZFao$76=Q7!j(#nZ;IJ57i0T-LT@^IJ^XFl^K!cu(TlS(3A1ejAThj#Rf zOEf7l5cjH(Sm~~XAS3i6Byj)6wg*^)X8=A;RNGw*u#r+Z^Z8ave_yk?>Koq|+_S8Q zxYuMC&YbfS&BR^Xh<(au8_u+2;$DRsX%14e8MMmehcr5Frrkg$xX+ZYk+%m@gy2eX z>XzMIO*zcT;sR>(-hOh zeaw4kC*w0g-*mlu9O#Tt9jWH=nCWY15UmC9?F{%w#KQ=b(wNUHnJ)xnoJMXKPVU7T;<#|Gf1_*<~dVo)utd;|72y~fmpJ15}A9J zax)vzk>wXa^#7HQlLgy9bziTcGENMcZ zq+NSfK|f|37}-6+sm;Rc0=P!o0Kvt*Dv9ZryfZ+jJ#g=`;{QX)1mhu4etxK%K{>d( zA|fd69_v!{T?C`+vH71GH+r^((D`27N8Rzr0couypr|kcnAPU4_hkNX9VGdr5?q^>alou;NN7!c>$* zJ(>n1O0xX#N&F{PJl3Zk+sU=%NK`2tXm^>nkLxHp-$#g-($8X4OK|T!k?kwct7{PR ze1k8egKCf&tQLaMEP9XMz=V}xrTwdm53HZ25!#S@F_W?=hl9SC3C>0ThoJP8V`F7$ zRbX{~e``sFJHMvp>%~UE*6j?&0M-|_BJK5wUI6QF;Hmx61Q*by z6N`a*-3!gS5(mq?3n1B1Yfuub&ab?3+>0Dv2Q-+`XyWhctJcSWlPUrz2WfIn-7BDm zmz?NaF1Y#hA(t5%y>?>hWrE|^?Jds0>LiFxY_C27k_+Xs|yFn&|*cs4N;fQ%?M?fm7 zcxWgMgHQlRLDH6)wg#7>$;UQ<${KztxoV`>onURtGux0wphGAR5w>b2U*NT_5ZYFu zKt*hxcs$CV-&h|wH@o28bj{V6#c>%|U>!rtqM1;$PieVTT}_FasP9-k{62;xZ!lE`fQ`f*%uO`l`Rg@jaRXIbc~A`BmtUk-Ng@P?~YsX0NhjS`On6bjlb%-;y&8fRWJ;MEn|U>1hXTjFbIXcP;V3a84|e=gwtZeB#5E+bO? zxr$f}ict3eTOK&l&6b0X5L5uF6~tlaGdJ30W6A6^-0eMLB(2$Dt zBahO?ZGu{3!ZdHB0_DvI>64y579R)lHM;f|ZhsYVUqu(<(&tq z5MDT!3gD8x6&*hqbaiaFRC#Fu0c(mnm}XiZqy~--sBzZhZdjKl<=YvzQrM&t_5)l` z*$<~bF>7ta%A0v@q`yZy&caf#_y!+~Ll94MnjIY$fgXnmCErMkMDD_(NMC0c=Rwj?x`Ss+jAD{51iyW*MrkS_3yY@A@Pz!zc4=sDJ zN0o5YdSP#S$Uc9~V>exXh*M}Wy}QqGjb-lZ$B*^1{Z4){9;sUrJRK1)8>u|ECqH4e zOrHp|YV>aQq>XOM%6r1|dm?ZjZTD*O-8}x(xi*tKsof^n%*nfiwicTnyBIX0ejU#( zR(XbzQ$rGM1zSnkvY(9m=AWMF+UE_E&`cEEKDkrvJZ_nAeTSllzbJ;xPLR4))j|Ku zL$U3x)bin*A0()&>|^4@kM(^w3_oulN)J1w#r72%crExmpr8jXYlF(7=`0+B7f~ zEamdU4Nz3j6?|CaW5o0i60-$T<+A#d})(d+uVpD2o z9k@=h=sDnd4MmtoWe$B=&n}Xa?`sX_#=%RBI0Dq15r_|9=56yV&^sH2CVkR!a={+9 zY}W=1^db9TtZn2Ao+jNY`{BENjzR5!6O;>dM@F;~i*Q<}kUu7nTym|j9b~sQM}&*) z7On#)D>6z|IKP5@R$u2XL|@*>7w}deZNCn1_ZjJMubWG>>qLBQvH*jklPPO!Gcc@a zw)UTMl!T)Ly48|S4+p{hGX+kQP0a9D@a?-`nA=0yo0u?9g52@lH=HKrcc_?HzEGbd zj<#Glo*F}@&QkWSD(T2*jPWlg4CZ0lGk zr}&aWY8;o6+T!{R3f~B6qZ{3vVN}CQB1u2vs{0$+*f)33s=BlbK(L(#v*R~>HXE9- zn<^BRKrYBZLEA6Z%q$fc-r}y3Yt!Chy z#BXga4aMP;vU~xv>X(X3d8ta=c=bWkc-RL<;uCv^6}F8#EqB zqX^4x^n(c!tbhc_0G0!suqFiJT~n0ra4hO^xKm@)w76m^DVo#IlaCue6 z;A!NX#=I_s!(eE^VgNxvfy~ z1y)sI_<$BY3T8)#+`S_u+FJ< z(UVkSUqw7CQq!pY9S1p$oJ9j>V^h^=#A@y88!dX*?7Hx}>z}{Kc6f2N2hqN8<1?=? zG>!3Gbn3whqX@zC88Nl+UHKmCZeb(e{p-$M37?ZZj)3>)nQ5iDs7Dz4B~F4nCaigH zc%X5!tiNl%Dbn1gZD-y?M{Y9=#3>;^Es3pQRksqX=gaTQ|F;weXMi$ zvk(PpH6t35{YD{)_@kxv4%H>Dp;Xtv{Q2X}k2^1B_HlDBMdjGMnu%`D?$s&4iJ^?*6X z`ud5KKKh$#t0*A49pBysb$thvzg)t3=HIds=(I9}!Y|NJ6_WMbS#|JLR!-zoF!o$v1_~wj7!S6Y*RFXNvJX6w7!c(jJQ+LV7me6j zTH^6$H97|2>kJt1s#bdjw%;l*-|6PJytk_6=S_6!nxrQRLBAiJ&~z+qwDno%8x+ic z`SPQFk5AUc3%}vh1FjGbFh=jV7q|#*PCl#dwi{bZZBjI&x5Io!6~apN%9^bP?mJ8} zt4x9A96L4El(L>3>t9o+^OU>MKcG~#T{(L>%v=x2D>Y)r&ZZJ{(y`glx_N*Wg$rQoY*{Pyu% z?xp|4ai2?5lKN$D5(M&d9(2=C;LD6zy7o6X!=aTYV(P2 z?R2P!^4lgo-;M7deKE`@_o)~hN2`hjDR>=5_<999LK52vB!O7;fVPPkASJIO^+Lvqmi)kYNUDm9JxCV}oU&D1mlT0he3!_>mQ?1{4dhUA=m( zkiR~=mTuApIM9(XF&0Q|;g&37V?F(n5ALIj$<;seGG!_r3X^W~kP)4ry&C}KCXP^{ z@m%Q3?gNDz>0a}}CPCWK<=+6idqi6lEAAjIujNZaz`H)->=X0;DG6gk$Lh=AP=3y0 zlZvJ&99KZ~rK{KIS?TmP;T#A*d3cHL)=NOfUV#}2`X0b$kISyjYp97a1BS{g~{ z=>d@dnyrFkz0? z21b*#ydN$Pjh7zeOU*aQeEO33s@D0r)rZ9?oirP5F2g3d?%FPoyL{I=R~+lTyW~jU zOswGFCG~gH+Wn29j5m6~lG~>Dj#S!Z`y6afT<&8{^JW0Z)vbH{<%fXQ`BAwf)mivE zESXoSMKK)&l4)Q_%S1$?>o$A3r7pQ1icBQBBO=2jG9#{k&_H zq4q~W3HKBYCC7=ZXU(}eHtkuu3(jox< z<)Y{Q!W#R-H-HO3p=mr32*PhQRC9|$S|F7$G_P7WjbI-rv!+~xTvT~+ckkKj&HH?O|}VU`2d=eXW}+yGIs8e&8;bH zNYj`|Vmv3lcDQoj+uoRZLh?YazN7?#Y8w)}VkdY)?-P1cQqIsNc1IM`YBd3s)3CiD z+SYE*;3R(YOOfy9=Gsg*t4W+^>WN;$L8sA#3(**y=q0H?akMGrzXOIXa_IEnYkR1= zyr4$5lLeiiqhX${GpM_68+B@SfR6*lWqKFQ)nE(k^dvqThJ83RMUh%zWIWB677CMM zq08PBww?k9TvBdX2UwXbfWv2Le5PACJ$nrb#<;WrZqY2zZjZ*S*YbK2ulFlQuVrPb z*nKs~1#Q7fs=^CQlY=BlKh;{IKU&D-6#gt^%|$3Bjt9bE`ra%6k%&3DcgjMA4?mEq zVGR!D2H~8eUFI6PhTL8mZ3IGQYDh#8$2U7Wo1k;ce!On5R1pN$p*4peDNJ?;0kum1 zOm>_x5=8AVl9#SbW|IqGfJ-i*WTI}8ox6-nd>NsWLrBW18jYS6o@Yp?U98VcBMimU z&ozB`^j0G#zXE~+jfgYR8i%c^R46!WFJH|V0Hq&}W_uCuw-X-GYfL~;aVEYta`SH0 z?h;B=4x>h;Y3D@O{jINvJRtCPmE)_9Yq28)G`!g9K0T#xtaH(buVt4Br&G_q@$p!y zleXY(P#1CHUR+_HxLQmLM4{Z>h#uF?er3FLtuv6BVDWA@lnGrA`50tJ#pi|vO&R=ES+i81x zN2+aERty9Pg{`Wucx~b6l{u#jl+NReNO)D_yHB2sK|Q8|c$mu-5*to#xA{q|f|#g5 zeA7VA-|hO|?LrsRGP|Uo z`Y94hf^68tjOSRF_{pJ*%|t_Oz3%sUFmL(FTGP@D9pAclzlxy8(qcjwzG_>VlwFjqi-%>esieXKy7$MNJ#c zi|IbLwEyAs;e4CxyQ`tWIKUuH7Yl(}Qz$B(2T0L10at6E#z5a^II3PNm2rFT2{?Jy z%7R}?0Mgdv#YcDO*af};vRu!}_MaROV*!x~Uc(@8c>h%g6-5^9UIsUMyG z+R0w6SDoLo$pW`&yi~XO>tMS(yA2ki1y-^qFoKJ!BoBxRE^%tyg13Ap;EE&nhtpB* zPk%l#%@!#!X>NMkOLsryvh&l)x6oU2AitAThQvwdU#DGcT8J`vEl0T{mL9r0-st5% z$-rBh>0<&=C`<8?Q6<>NC;90tn6ReYy1kwi=SdBxHZ-F1@hEJCzLi_7%YfMs!+J6z zrBUR>&a&&1;of`;ZdadCTncwC-E@VCAY?pWg^;w9c&u9xax_V(7J86v57IYIU-m%)H4ftpPQ0_=yz3`QtN4iY%5^ku0e+1X4J|E> zR+lCWRd+6p&N(Ff6aw<8Z3;|S73zF<=3Ri{9|%{7S7yGOQjfw3>F?{4E@m(9+~Fr^ zit%Yifw_Q7N7AU`P2jFSZ{p6VXxnkU;Mmv#sR;I^7Ia)LDM8ND`5n?fd-iPNDEgv5 z_ewsO50Y(w4!KAyxumeOIxb?ZxdtfmHNbEIs*8B&5v?E{pM1~K;|z@I8?iTYFzwKe zd?a^BB64%HOXK1GnV&F;ISSF6b9H3&#hU9A7jaNZmpi#94Ny3K#`9@Y_~0|j*$It-43()BHVuY zym9Z_6<|#+I3IlEfVb;ahw?7b*6%S0AzMN%Cx|579h2Dl4*_&xX?dtO^NqoEgY{L2{WlR_|!CTDVutF?o zE5w{|mPS~U))PTruFtES=!#5%LM>=4^m0K;TfbXu$8d5`YBL)S_J`|zWj4INv2Ywx6FWJN+O=*(sj94RI{{w-iu)glfDNk z0GttPcAh-%2_$3ROvw+rr|P;m5CM=ebWX_og-my$-aQe~g{-K~r(<t*07GvL-sTPlW+n-DaX9hc5yXlNh#jW}JScxAvzCL?-MU;QHTSg|!)n#5P#F|iY zZTs*@Y&oMo>&qq-!R!+jD>a`w!>3FYSdoHIdhMevg9} zYxt5O?_Zz&4RH|uAr9{l_xy1$Kk(Np7D^}M(0+t_3*|#tM=Xk_oN30OkXb3OfK;qK z?R-VWA4%=haD9MVk;`tdKucXt=}a%M1qH*a75%DFU@~M|r~BeSo1q%;`fioV<~|{$ zcuovjPfCp&%|S7O;}1o*dIc^@VMn=MlTK+x;L?$D>hg`j9y zyLidJySqEK#HfB>JHM|1=LtXOsw&v&GeLchK0Ca3F%Y1E>efDLVLCN8P+`wrIw=7&SQT;UsIfsF$4Mk+45yN$QwLwd*dHlZ4F}lJN_~R+@$r042O*s| z+t&B*Gf7sfd}(zzMgS_?E&RPQ)O)xr zR104)SayB$er2>e>08-c2;cOyWidCHN>3@+?IBXVdJPzJG&D}-23IQ{1%}pzlLm1Y zx1qwO>_;H3kBwoSp#M1-QH-fOO^!m;x{mkV4)?wFfbLvLMaQ=qzXlS02c&Q1H_PSep9;`z(=U7@dT1@L9_5 zvR#;Yj5lO4Ydr|2OC+|L8|wn6ohV=PEqa_rANN@Dp@ z51FfV-oGl}{Q-9j$VrY4za9dm^8gOI=u^h}Ko~ePv*`9XPVR?#OLYN*EsDbJC@^hi zS!XOufwZ|d#B~;c@EmFqM-?Vwlh{P-RW|){ARF`D;POR(c#Nk}Q>LojFms$C13IJG zt!?wX3Q}Rb4651~O?+Mdxku#^l?w_bv{Lk2bM=W>99t*AGS-y{f&}C};QlQXgzN6~dG5 zq_Gm!Yl8F;ylBWzJYgRHW|&9sSoQJe?QjF`RgSHtj|p4l6r2$TbY6N@s}JNHSRgAF zX1`H#+;Sgn*|JGi(D4X+t;47QFMC;&gAeF1b_N6MlDeRfHX)a}=qkdsx;{{;ryw&Z zBqWq`4BT2CfLu4bkE-(~3f@G)WGp}ioy9DB%A(5*Tb0Th?kYSEh7e|)xnvtGKS^84 zD4m;|>m}GLSz-AU3M!n!@!gm3zUsRVmsvz6P#(f<*FKTNzx|=Y9K|sZcu-7YN?)MD z8fo_bs8z!rhaN@ttuKP=K)a@*Aoksh4IojUk;$qG{Pm28%~elOW^sXH{xO!%(8A$k zd{X5*aok3ob~Grq0(A{OobkpmV{_f>4m3&SINbN$uM{_%D zqx5Mgry(3w+IlX$z68OFzqN#|)wsKge`E6hvG&zrRc77W2Lverl~NQ%5mC~hkuVUY zrBgse$s>}|ASx<~2}pxT9lA?G5RvXfizwZ7==jzH&W!WI{AReW??2yn^gPeA_u6Z% zz1Dr-i>kvqiuU>3YmRoCch>@Vvf_?(2?aY=#RWsEZ0INZ2PCd<=^lPd!)>lpdLtC^ z0Re?GXXJ?0^c(1@4>>paS(v^^h)h_L1K(EBZ2H!j?*+}uVPe}UhM+~9Usri2RhPM{ zUk%aDU^bRR86kdacIsaHBkVf+M5`=}B~#Mwv?@7I6I8Et1owBMTU=H-R$d4-=8jZL zI}cm#7aC*~Mxy4v_aeAEYG=3V{7nXkykgiQg6}#d>ec;=^cUJW^ za6`Fv$a!8b^&Gl`KN}Xg%29poEi||Q7;$r;HtZH3f{aZpSk;(quPHnDpe^&33upfP zjd9la#MZ#Vt3)BDO&D)#Iy$KrhlHgE)KdjDR5K@okSGb zZ6leY0CLsF`N|s-pH;|Cu1)pgxjQEMHH$O9YHU zFUVznplYgHRkZvwpXeJiJHkk`w%mzt&sd#$_t$5LU#^{Gf*L$kUD9l^qUc+I7Vcma z&dGRlHB(4VWN2|IBmjN6=G$s>x>n~JfA;&XcOuAVOqj-$fx z+ef?Or5|vMv!fP zgc||#Gz830MRQVRItZAZVLTrYDP~{$a9m8tSZ8iP)Z-a42T;&P0ClYZ++CxUMoz1ie3v3i9=3fgYsq`}eg>%a7<|gp{He z-syY20^i)_TU_Y^n$%M;Ji3@5V2A3E6EYg3l1d*sJ@2gn{Ky1&e2O@P>Bk*z#b?@5 zdq=XS{Q?H2~ozy&l9d9pIaI5M>t3yOJ!^m|$ej6hn8a{NwcsG|)pa%Z^DfC z|A{u-ONXT1!Dq1tz4P~L6Fsu*I_Ly&)32YOP*tR6$0(|xG}xS`%2;kqT&GI8a$xLAK zGZoT-dU@pHO{fZeGYG01QG;5{O1bH;=7h!$Ji`O_g#Gdc5W+ecG-}WQ(3>jUL8-KG zJy)nUG|u_tkS`jj79>tCwCkAl9RY@}SsAvM#>+=uwhb>*}3r;c!Na71@-5FaE|uYk$uvdF0NPFC;5 z#@Y$selKS*2v~gBMbG^;aRjt&y}1gO>k})rYsKaV>Z-qfM5~MA*XBHb)CsTy8{26~ zr~HM!01H?oj}BgqcB!wPBp3CdHe76OJo28Fbhm55Lq2b*f9Hp=Bh(v>Lq5s+r8}Ry zE<+yar)y!C(JTnKF%#j=@m^mYPC-Khbwzvo9FQF+y7m2Q{SYS*1rBz_hr81o&t8>C zrU?AzG^ah-RZx(rCh>lCy>G)?wE?G&2b!o%p1UPfz!6&U=r=Wn)_K79O^A^9_^8ex zH8CFq-`_ZqI;JS`0xOS>e&u_SK{4cA4ycmf1Q54#?AfztnT3Sf6Q$`OttFq#pa0=` zez=@uJhrXB9YlgV4Ykd zIxj6FgY)s_wX8i)R0gB2WW2$S6+k$DPs$>oZ^ft8{X6TfP8$?^P*SS%)j!;Twn{Og z7zPi0nk?P`sV{xI$#7&I!CB4R zBv&4$TZ4xGm}=$+RGJDaCnv2Fxx3e)k$lpkJ3n`m+3#}Vd5}+Ww2?X<&(MjUy>XzN zo*jxDdz|nqk+p2=RFU|GRIUtw`iZ_46M}%y<_e&p7J+T>u4}no{xMoo1(4@g`FUgC zqJX}eoV@4XvkfuAbrRwCw@eDkUDSyx;9GO|cU*ICF>6cP!%!lCW!Z4+%zItEaEH{T z5<=Gb`%RTI%ESnm4B;*T#rA^oX#)g`3p|m*=ERWwE14-eA7BdH{b&15Uzov>=D+dU z^ zFd7@@H&=Fc?gu5nPvPj@=@1{kjR1k&LEgl3XPEWOXrTjU7?+=Mr|UWr>4Ie&Tph$C z0e?%Ao$$0#`)`b(pr@vi+61h}ey0Q}6TkQ`+IYRR$cY`JihOUqLGF=lUz=YOn<77>fEyjXUwD-t}>GaS8 z(0}m%sbt6!p;TQ_K}CKsQ9D;<#wZ#@Bm7xHXHK4QqJMgF86TqUYskaiU5n(I?}*pr z8*EFDJ;uzeyr7%hab0C(cUf1u=9$+&nPZ%_yg6F&fLGcx&h8^)C;nO~F(J)JUV)?h z&(rnKCu(=JKj40vFxrHg5(>ZAd4y0|Ydyek(}GmiYzLA$4Q(Ev@Oh3Wg(Z2Jo;=~R za}sw-kMjc1i|iT61Tu}uSSJz&yrfn=#~zg?x+h<9BTIVDLehN(BS{;H{K&~ zlyH-k!f>6O#1*CL&)#>H&~>QeEUW4=V&Avociipwe$3X{pnNBCiHKbiY<0o?!LI@8 z11{ZqR?B^zwPZ!kOGp7Crh2q33Q7{ZJ#+zid+$@6MeiD~=3DOIJ}F!ObMAA}PT&8a zwkS`9Jj~>WhQMVU@h>uuFFY*Ga#o}G*TeXTD1aOa50h7u$e`vwG5}1{P(`Ytt6H6c zdLpE`o`h~cIvsj|o|{s9b}?0U@X6hJZnp_b_6~=Hf8WN(X^8z?5i(ycC;RmRFHu&# z?PoMW#|F{0&}>xVr-4oU;5vS#HiwM-0!vdY+vHtqU`o_;tME3|T3(w(!x3sf;D|N3 z-P5mTgs1iIcQsuP1SBWK&F@+M>$`1VpsWluPPePEY&^DEm;VSn_N~~bF~O7=^B1OE zZQ3!Tt;BdVSAaCTpTzoDGAEO0!_oi1IX9L?+Ot*KrzJ=;T{rNVx1mCx`!KcO@dnLu zj}i4jYG6Ohh`HBl+CIH~NvGy(esG!@IkZ+QUYnRe>L(E_}A-w*mh}Djz)lxP~yq;^erc{4X<=N+8r0xTZq=^x8ksV z>omga#9|T>1>Niw(9eZSLq(QT+<(B${wXhjQPu^$H$=K8NXXVFD=W)bm{us!3BS!I zjohfcj+eUZ$;S`jASduT{-wT$%!UL_`}128TOXb+B?`ru2~tv1nMFl)Qc_Zm2?%8G zb*nS$ERuTo|8VYqF4!+~ z3q6DHf4ZWq>=hJ);8reUVDpLhG&{^jAZ^We%1r~@IMQza|MMV(vS(O#G}Xw1g5j8m zNdB2zy?}kxCsZ5(lCOi{B4PFNab8={;MUS9cIKL1e z6%P=wewCKST~=B7Y`zJkTF`iS1CRN{Wf>1{>=pmm>81Z&rGGjZ$lt>pm6w-i1di0% z+^^;3uX}oWFe6@O`eKMUjSrU&I>8Ddihch4`LPZUu>(&Rvaw%352aFW zXTLD`!_A4l(7(F6VQ&eTT>T{t&X++!919BzuQxPYQhykiflQ1WDvhS<)thL{2G6}| zsbY3J=AK2+A#Y-Ai~%b+qm^qQnl8-V#G7HdwSpo{grh`85MZ?l@Cm{{KP&?as_(1hna#6s&T~%pkzj{SFsXMJw0K`Vn(62G^ zKgOa!v*Bu3=Y0MPxAzZs>Sj*X)7x7HTBI_>8WQtn08#A3@*4V5QuZHm zieC*Av3S})MWCLaJbCi{nh`PYkt3g;5sYY;NyqO#!O7`URCIyL8Bln+11@84Hw?v+ zE`I44D0%F~uf_7n$VQ*pI0FV_C)@u+C+5$;!ov(_K=<-mRaI4d%tecX6$JJ5^_3^S z1FXU)$Zu^BR`ndQ*it5$&wHhfudBaRVziB~dqy(wwNQ|L0(jP!F4lq0&U*vtbSXwq zSo`twr+9HSIX(9&CTA0MZfOJ=ehDQ=uff)@7P(>fedHhhXYAX*W>0TVie0Zi0wl&; zieVSHH)3mD?IV830=MHEOz9Y5agP94B~z(7@mDa&Mj!Rw)~~=2G9^4vEuzF5PzWGl z3m4y5LLZyYc1O1iRR8pOx-ft0YX2CN=d!&m(7i}M3nHx(Q_Q~$p!~Vj>kfpO6n4~* zSj@NOlG+}aBm!CnR@~{#)inQlI{vnLnuI|5wta+3i|2Sdjd{7TTVVlL4Ys$+yNQwA z(gWsKik@DPb-fvjkgYl(h7v3ye^u-uvHm+0HQKkhw)at=Gm!JS3Id0t&hjP+ z!RrEtJmk;Gwv#*V7Gt~*ufyO7DX8g#gMyA5=V5+~+u`3!lE3>UMjK?O=7LdHBeQNA z*1hYeJl@z;YuEO6e9vC6ze4yZ`5iq;-8Ab?r`RF0^}zOiCK);8+2aJE`l+Br85@cC zE)#9{pZ9-%=l?5F+xUBrU15!hf>2fj^oKom6>J=bRiWxb|2=m>9`aZiIS#^*d^?yG zs9Zmd6j-&{4lvMdZzzZuIT?7;LK3lN^WvZ8O`yOyJ6_uqUU_|cZzEQ?(+$elZRYfQ zgot3@!}|-nsUe*(%wZ4=%orito?9ju*~^H^`_%EWu~8`&Egf|K{(WJUpgk=5=_owI z{@E{?ROy&XNS+dFxUuE?vkBCodNxz|Od5ctwH3K>++ zVjI1~_FM|10zP_z4{LcpVF%v8mGnzq2Wau|YbnCp!}M1uHPz^8gtm8@3(w$L+^;6T z3ty^<6%z=03Wf6ZWn;rSM{jQ=h!{6<)~7DD8j>97?uLgoS$Hu+x5CD-gMwk$rA5;8 zMBFz0-c!P_B!YZ3uxtz^&;1mEd_CF~26{kj+cXTP-zj!Y-x?z8wk1VNgkf^gOHi_{U~dW%YP@i>ms7HStz-PZZs-TvE)wTw|-bHNdW z25Ao1ASZwpNA6Fy%>{dam{|$3UhiMYQw!r0gsupIVBdgIZs0bDKlRf5bpm`dd*y2+ z!OE)5?h0AOt?8wvys}W(-U(2;<{B8fV*u7H;fDK->91fI>sH3pen>!Ydxx{>$oHKt z`ob*hKjx+KMZ`qf6_s{zbbZxS^vPfBII?BN^S3nNw}eyP9rlyKwAl>>6-yBc8fW;@ zRR({Q)qMLthyTE8_-&6E>wnwOE16fkbeNID8M1LWz3HhA{P#-<^18Y)u%Z25vfw;% zm_-MwED*po$JP*Z5l#3Sw;68z2|B*tiR&lO1`l4>XfM#rh`id9jaQT35%%w~?Y9p_ zxoI$p$<}5+LA;PgZM6Qv-d}H)+;Jew=3i5q-yY`H#`@cS#&ZZ?PVfX(>F~~VuW{o; ztEJzzOzre>U z+l=GgG>!`L4fCw^d}D!!f_9sW#*9R$1A~aSWhNI=;d0-IPzhs~m zPmeO*SkgRvo=|*cI=JeNMPEm2u0yuN_}I6V;QrIOLPA1km;C&g=K^h=w>JezOt$cT zL3%KZ5XY|#+^-B?!2fUtM#Q!C-uCwR>F%WOTzCU((;5V!p8SUIA}k1r#rkK-MNPdO zo~8V|KrRvw{&WJ|Dz1ULvb6_^#rS3)|ClzQVMGOqgqf_Ad!-zD7WeOhntyZU$M+_E zzZ2gNbI4IvR1Ajf8Ft_R`U6KFB;XEb^a%{9k^TPYzh2^>{#3;#CVQ&i4BSb;+`PUS zGwu4zk%;-uqxA3o_7VT|?|=I%O0KSiE+)b->YE^x?R)4=Dq3wy^Y0|ADa%Gr47^w9QxF*$3pg<0+ErDFtn;kckOK2@YALC=Yc`_6>+d~bA5pssuV6{g#~aO$2v==lkh4wMP= zPL}}1FR}xY7V@P_W|^IRAhd>if5J!0;%YMh7MgQy?_>gkhz{rXrP2yeXY-Pc8M_FR za60K}1DSV7IbUZne<8miNh5_cG7B3hZ{}#5?YJVtsG(U~l)jt^%z+2tVh}$H~j? zlwKgY+Y~b;t;mO8E5i|Z9WdHyM2VZ?LTCyhLKy+p)v{9h&GsKq(ar(skdo^vO-y(L zm^N)YKAYK*)-e#|u>_!+S4h9>4hlG*s-AqCehcO1!z6Dc@X4agACf7HQ9P{XUc|&N zgNZYvR)Ch7wTJ0)V{0k>!FpcK)XFomOK1?6MUQo4$1Kolnx3}pxLcYn8zdMJ>AOe> z)n!j?!8!a|+|mT+CWoTrQwW;y9l$)8LchKL8Q3>9OU@B6R4YeePP#b51e86;;7m!1 zK=D27JISVh&sh7Okd=c)jnmW;F4+mfh4xaAcnFpnvRFkBgnCdO4pur`N1I{XR2~F# z-_cb(&C;WDV4c;J$7J4}I>Lj9$Yl$SBo!+(NUpqZ+fl3IykLOAuTzlX=w%%x67IMS zh@!kDz_b-zMFXVRMv620rZGL&7KtuFOD6)1Gg_q>r) z_|ys@(CTz_XO04&?`S#GZdFDEuny4R&Z)|(n_KuGH=m>H+mP*lF`~DZR`Z_8r!{Ym z6TTF~@$|4C+1du{A6X;Ne{imfuj^RpHK!dHNWWaa*ZmL;%C}|9q+f<;!)01A!l=%- zyzB??Ha#QSzzqC~y=IFXLQz#r-nomLmu+ z&X?EC`T?t{sYX9hRZWjD6F`3L6^%a!>cTtW|Mr${*L5e?0z$y+X8YG%s1hO??^)L*B7UEF- zgjP4yEHZAvd^~&i$0Z$}C13zg4L3LfQSk0J%^0AVPs_UB#R^&te1|iO=6WO1Nvhb@ z4@8SOcPmU$T(+SR$SY2A1H)2-4-h5qiyj+OG$z@BkyeYz{`bYoP^0Rl5>g3I>tAw9iw6dxAtvd3O|Wn$Yi!(Wb_u6jLqe&M zB3!sn>}pAcc~j+V`7W28xN{T(7jLJHvPQn7VfWR}(n&iMFV`L;k_DiFh2BB5RaSn%8ma|( z($qK2-ETlJujSzmQc#|Fqd3oFs*Y!eF2;2EnK@Z(S83|P`L|$Rb(Hp>@2vK6x!eWOSJ~rt z{s?gAUOCc9O%7`0%c77&Jx}+axbS9T(jSJ`=$L1AS&+n>84o) zZ27I!#nQ9Y{Kb^JBaU-AhT#<=N(Ff*eJF+V7VE-H$~WRxvt z{p`gQ$Q^OOsbdB&xZrGQjEA^@sihg#dT%TF=1|g&Fm~auFs2(+?7erHqs&+1!NV33 z?UNL8!nn6cesQ+o3F~`9*PF%Ud^6rxeAI3{sa*K+M25jtB_i+wo{rg@`;DYZ9vl>6 zv6vKAvRDh5{K%vv*1Twpg<1rEuuk_kw;e=+ows;Q0Vuo339M+NTPPtd+4*JPg5`*I zu!N$k`HPi2&031%ypImcXE}gybBr5jo{lL>!`l(0pxTsrL(LZ^r{QyQ5fRB$jLbn- zm4~L}Dm2FQj2)(_Riss4mNsR0wfKZq;MCtSWHiVMRjIOIA5H^<(Q4jDF*FM_jbehpYP>{|=Qlwv3AsT{$^@f5qG` zr`WHL{9-qJ4aPJsH{oH}pt;|ymeb>$dm^T+S-W?J((F@JRLjke6bV~f?ia<)uEhAK zFTS(7otXuU@p9E7uc+I3Dtm}KTRG8pQ5w@RQYs}7ggjm-4>xFH#7>OPqSO-_3cE|r#&ZL z2#sZhCo)pWvQxXNKxe@eYh`*OD_%kwQ)kAb0}64X-)~M2?rt*xv;j#y^oXp;7laIyd!}PGDpWb@Gb;Vg zvf%R3s`j7+)Fj~i1C{1ijZ7pcVJ^fu z6Y=0$LDYd8XW%mFsWYGZDB}3)+(TB5VTxPbCF9^}@(LV$7ImzSWGx26rNz6k)VAG> zFB2G8#~Q4Nk`Y$FUA)M_&MK4VJXrIbecCI`qz#bdob{8C^AcUX*EL5g%MKqQ^b|?! zmft0+#F2fmKD`JMJsm(247TsOPE9J-?udEU5u?cBaxHi9d7~|@>Q@z4>rJyQsFv zSh;J2bd4?_%oDlaZZd0dd+BY>;!GBAbc$M zrbJ8(a&8t~fhfr`5+A7+xTX408FyWxA4OJcpx)w^1aOY z8P6%+n_piledS}5*E)d`cATGRbbW%p+6GuT^QL^sbo^3M{8)_FY6FKH4Zf;olCE19 z?*T^*)8vv45X(^PzEd>^+IG3%#@pq_VM>*b*UmxHTJdRWDiFq;EbRoY!~51Zk)bJQ zoRL=>Ed!Z;sh3P&-J2wOue?{FzXlmw$0wr0rm6Gotr&$2FI5xFe0X~%t!7Y%NGa2% zBvUD~5Yqo4&YXdxI(J+1uR4~p@?Lb=Y+8pq2TBUqxa#TWI7q#j*PCguOud`4xXG}1JWdO^< z(ZRS)xw1uSr7>W=P%gK9j+1P)PXt%9_^j~`6Qv14P0WRiel)`6nfrGL-?*Ox7aTiZ zRkg|Rbtrjs6^{EAYAM(;3^| zmPc{coEfK%%@+hW#RBuuVb&?t z96y;B&nn*S>WgU~`8Zvjf7Gk*TEmittkYU397U7;q^ch0dk|>^oJV_rX1L|#T=V36 zr@dnZ{HXZeL2OKS=xZOoTb26`V=@eeCyU6qq&e6eU-WMdD`yB17V8}7fF0A3T_MlW z#DaG4J88vQ9Nc!Lt`9%q%)p8_-wiltmoi?QG^i1LArGn&X2yPqd~)L6czir{8M^-A zqfRCm`Z(QLAcBmst+mYnx2KKBQkh0jhYd*eC4)IvI{h=$X_7|o+XW<)#wDRo;|;_m zB`iKlJA`A=Pz+U_)&SkT*bqsY7sZjQe7NF=GJQl0R`UF1pfXVnk%pB=25%n1D^{)o zvl^GrOtXhLU^Zm&HE1FRNUMlt!$~O{hL8WAF)KcT5&C-4^$;(Osr)-(Q-aWo!Qo?Js%OkR)%%w~Xg^QG$oKQx~kXzFAao%+`yt?&7lDZ1|0j z3PHtSfGZ(m^|F%*&MA5k-9l}FNcuVHwnnlI&=V=(g7M3ME}Br~W3MC{>{IY*=YjdP zxcBD9k!$&1hjME*huk%gi+}}hhxx^>{%|8)`USj!`J!bc%8?)BKV|s}VRBKP_qan# z&2{a*-^hc6okYr){7&mXascPn0a5W4 zChnlZiI0ec_VG7ACXz7W(SmnXmf(6bPNb9_W_hX(Us?4mmmuMG^TRL*ihgISb$R7i7`Q>|Gz0VXW(Gehulc$|HVnmJ9&e{&@PNB}c;3v5{vg|6#S+7>vUcJj6 z#7`0}`#EJ`9MUD$5sZ<#w;PWz1+|Grhf=a#r*$(<`9o8|d(ZLW$XqM!yCpPZpmI*Z z(rlMsd8T4s=ygnpRM<$I3b=dRM@WduB+`W;+qpL-=r{%RIV=eQ9ek*)PL8Fzif1ze z-PNz8VjfOb8PYhR>$aWNV4q){p8NA#4=F|ITC^0QtU3aVL4?2K) z>Xlp1chr*RvwdX9MCOJB!Kn3^GK^L{DOL}r5E)NwQKFA#z^nMId{H*(yIN@KfMxw4OW(RuTalhS*1+#yoB;iq>Ry% zN?O8t@Bl1tJRS+T^v!gj(B-ftemsN2y5j8!WF3w!0gqLf(sw}EK5b2|rb$WM4(@T; zbf4C~oF9zqMf~|)`pG8171fhxt zKmOi{Knhc#C1i+>_$tLM&qZ=b!cF>}f6;(+g2` zs#pRki7_Zy_fscOXojKEIE&U`s?F;cR^#6~8O#gu%7!P(K-74sBRx(YvZPVCee-Kc zPeHoVJqA*;SFh7ixngHAdI2HgQ+73S6kmNoMaR`=vqxm*e?0Q&HsyvYc*ykl?v|3j@pHyR=A1K z_|km#(u@K5kA$72!7i(IQKS_myIvY}QYcmU@tF85H5aV*5;^6ALb^8MbwAa?po)cGrjKg~)$T~ySu&()yKHxTQ&17JCX1$& za^gmYC>?d#L+C(6PXE^KHakuq^ry>Wx};a6NyVF+v1nx0Dora6b2i0(lT;?Wx|Fq-`PD2>M#Du$wxRisfG zeUpq5$xgy>d&}%{&JBQ(8fIRJl?>x=da4GVkg^=KZoF33$dA(2F&NFtfvJoSUa@RS z0bIqZ$kZl$Ki=fz+CN9`vxHJN?H*lrW}Um7v^sxhfgjobMkj)uxL;m#?E9a4xYF-Nti z@hQWY2%o7MHW-0}PQ#cEtAt@boYnvG>}_UMRQo*`OZH?or8;~kzVaSTcWVtV^b`6= zFGqLW-Ipzo5;Q5inu*smDwgVB?WEj8qIvL}*N$2w<3lO~^Ly4lwwzBEJbZIAtUQg_ z4bij|2I0x)tDJBROhQVZL)z8L3)4Z1=dC0#Q0&Y_#0O3?GVtL%V_evE6uTbdrlVh6 zCfxZW1G*!*VHZ6jF=F83N^KcTy7KcHZm0NjW)(nEr*H?3e(Vc*+dCD;-n6b>p42^T z_AhbTKa3C~%%Oz(_&we=`)l~M3!KX}T6k2OufjlBQ3-u*aliKx(l71pAdAbb0~nI! z1Dgw~McxdUTj83I9?66$K9rkIM@r6=UmlE?W!;8t6jWoK<`HJ};w+6ayVQW6PJXL-qJZn51!A&wN$2V9~oBhAE_~ zRBd_pq&+5o75Y6X>;0ZFLTslY((kz-6y~}Aoe{Ua8{vs#v5dx!6}7^19St#iQ}0*k zDb6ndJALvt0jM~8rq))Ve;3Qnk4Gf(yjp3Lk zY?@P!_w9M79IL?}N@gt@5rm=2;)XD4O}5{I{K04UTMHT5r7veg+Mo_P80@@g6lI>` zuO%ytQxg5!$3n1X2~C*A@><@L6nRLvwj`})6FZ#IwcN)i@{vJS(cl9NG8AGk!9vw~ zfaqtD6DXrw-P?rba&yF2w|#UhKyUmHEr9Zz05xp?&(+;k;X-fJzpFVh3gT&A;}is!(t+I=-zj{sMVaTbRg<4ViCb&B~)P>(k^sfsL*MXTI08y zx*1j8YD^lL3AM>lkQhV#6lpaiWyayB*MAXZ|*op#WC1iiNvut)AZVGKZ>A`764PORly)+{6Gmz^0TEs1l`S&d#7#4+hOgRJ*z3<}fT%Cd9 zjSOv!Bp3Y&4G@-pV+0;#75dRmJj2lMJ=PvgdJ&3y)*vci0bHor29W$1MMG$}pEpk0&c~+)$=H?EGPJ&WF!YR?(jb1NU70`#jW(Ex?V~XYK0} zO$C*JrPb4UVb1kPar|VhnT*qI&`uwRq5u@*u+l?Z_CKHVDTF9?)gzam*u$|dmuaF> zHITs%OY6nPfsAoX{`rTY%0ZefB@td$y~He+qp;S+GV%qq(R;gjGF$^ zIY%z%gik@{wP8@&aNgyqJ_~AL{qCQ;1=%=I@n#kDt_@a%PptzDU61V&85SnL8B>&6 z)P+siiH8ejr8)VPGxZc>!WnhCvfG@9>1IGA~&@XIaiv>sRbywQ1+FtS%DUqh^{G3Fi+H?D$;yhlAT$lQPt`e zSsVx#BvS{e|K*QJU)FfV|E>pvjX8+x=uG*=vC$k=?eD?m=_d0lXgQ_yi5;z-^e`>qZkyKpBROARM`qU zDxB)S(=!1EI4N1bF&9yOCIVxeIzSk9B-nAPtS3GWGB)#1gfZs>!PT|8T+WQEZ02n@ zJqt>J1xh&DD$OT&hGxx{HNyR4+5LxvIa;U|=jSs2^r(~*j^ zEyo#m>9O&m;wP5hoz{0GoSc|_-<>j&jTx93>ugtjoMF@rH~@L~&E=EbWar@SFa|wV zS($I3kG0bIS%GTU?zBbES3%oj4V~#$z8pNbSA$-v>PH6RN-!r1VYo_A&RPGy00GNL zF8)(@zI}{)5fM3vKM#q2l`4U3Uh;%E99gG6NV?5QM>PucKOV$o#>f|fHrHEwsg(;* zE08@i`h+ETf+oT2{@8NlQ6hC2Sv^7%Q@YUS`|aLOUE{?;C;;?Qx2eo4e;Udc~Qj$4=gFt5{gdRnp78Q+uAXvPb&OgGHFpG| z9w*V*`x9Fxb3P~K$)PCtk`EH`s<0|Se}Ktbd0}BCD8%?$&lld`Dtm_u_%VE#5F?I?nkCjJjwWO{w5a zfIyu9BWZEf6#-j+RxLmBS)%Y+omoGh$oZ=O@mYO4UN>#379bk|p9QjLV;5`TXnQN_ zjKH9e4k*A60Qk_L875+YHui8fV4o5Qo%HibxBO6VHr-EM8Z{)y{i9r1r8VU!f<%3} z@tH>{_TSosdO(#8$U>m5^^rSBd35oI7$xa6Ww)NWQhO#JMaLF zM}O^r=9jzLsa^L`R_Nw-676A8Qyzz-6D3=prhj-hjWm?Nr;afmIGP-b=64o!U~D&H zG@Vl~?DDroc?D#J+C(Ps!H^?2TkS@Rdrl(OZxa<%o4#6%eNTbT-zJ}OjfRoso%<Kin6{~g}Dc`wOy7p(Px#>BzhJU#XzQva}@OpvG7}StSm4kI@ zDYs)!LH}P?wRubZC6QOdBCpo;>Wf7H@}=v$$?n0xwoQ{&CuE=392Pi_9K1M>!)$E8 ziW~@xUf)iYp`V_;+xt{`62u=ne1dmVExK05%bxPfA=|&AWER;Lc;8j5g!C^{yFsbU z8@CV1j+li2cnRJU{Dc=jtHGvuopcraK&;sM_A~OhJz4xAo(>V3_DOe)-oiaB~k%+}5JWTjJ9$ z#{=mE@j=;&p$1NRfY@9yT8~cYap3`Xw#!BUQ)_cWao@hIOt#xqHUtQ+v5V%nes1gg zc7H_-UjH;4@;{H}dd%XG;B4O}8ENvb59C~J(W@p!e!Bgn&4uPgN=?E;?@jk^>FPHf z%0JHib6W5}Oi1&u`BV<|&<>~fw96c}vPm6F>i`P}xun(0Kzgm71lKfnn0M!MdTah^z0LL)iXkZP zZ0%BGUreEA``W+df=6?>SUf5q1yFBtmb#NYsD2i;h=M&<8E%8zf)yMQBwS3|IBodXx2 z624XZBT1+Ze`UR8lJLhaZ`%G^?!W8^?f>&x1n(R0R0q>G;+V7tL+rL4Da8IPgwv9G z$T=>q@ek*sa9EF>5^wYNZsDMQMKiZ4Xe#^>VwX#gY1R_MvI(5q@Oyha_8u1h=YPD# zlR|F*ues0WIpPvpE_#!*UH)U)Dz6ov+q5$OxMawGQ1boD@x>0$8<;R5uLiXUaLF8k z=k9IuFnaewKO=0F-L)p9JCR$nPAG~U za^H5A^8zBp!Dq0Q)s~^BvIYM1OaT!>g6*t-o3X1;zFM3;@kQ;dTPXN3?go0r`&y?8E=w}5XCV#(3iWtk9CmHcq zj??E6kD=7%J@kLrz~78({qMOQg;OqtT3q``i#KqTg8o*F79NB;r(#OY-b3N0`?qtD zQ25W0JJC7=^ttf+c}Mk)oJ6A_B|MIZiEVrLqR=OQ`Jc{9MD(6!hv3ZwZf`^rJ1;@( z{Vn$XpM!wdH0evKN;||e_6e`5X+HVmlFKYosCICB-$}#xmsybVpJ;s`4!S2nsQ@5@ zixKV0l^<`m;eU|mlz`;X`ADAW?GTq@APzv*^>dC8UyBIMFvG{~$svRq5W}jCN+7Ar8Lwgg7202S4}W2r`5)W*N)ENZ91zF6ZsNm4xGiM* zZqR4H9GoVjWj6<9_lzazPIqXS#P|AW+q8aR_o~^lIJ6$rqYGiG?~hwm{=En~p*i2l z0l~m45BQ|0L!Cv<4I!>oy*piuAo^gUfejiOkk(LTzo$=E@%O~kEd}|`WW+jB4nB%Y zQ(8}h5Ki3MOq6K$?O?me?`SlP?=b1iNnc9@;YW1%b6$&f)70nfFzJ=dIYa5}M?ejX z)wryt20$%ak>y=FfHiXfzmf~nJG+igJ{I%bvkzvRJAf)X?ZQ$AbSkut)r#c-bqA5b zPjm~p@jrqPZWg4-=$J7W-yv;we=%hY6!SA16{I2}RVzFZq!26@Z)*pPZOrq6f7Npne_3W|H|}&TaaHu^!(E__3P3hBAo~%5drf|K0F0Yme@vnng`H^NfjE3 z4oApi3gbMzp1{*+men&g@i=53-QdzxzdGR|%8yIdMC$BF4RF+;Pd~Y|;HkG^K|G9= z_Ny=&dxA_AU4l{aZ<=O@n`;aiH;80XGd}N?n%_Nx zbiF79dUlImHW;U|Z$vGfsbK%<11+lysXjd`cGG>?P|~cl27&rx75Ybhw=($^B>jC0 zB!Wvwz|NjU4Rbs}65w#4f=(49oq}v+mf)+oNf`1xB6PLsN#k2HsI#Mi8Ht9*nP2Sw zbN7;f>eP9rOaCZ-6MLxJ6Hwo`dR0&ajiBhKiXVb^CIM$dgU@;SUKF0f|Dfx{aKy-b z0^#L}VryQt?tGoqDPQYI)#3-h9;#C=LrF&J& zDy0k4`Br~0D?4&V#%KL_I`)7{)*M>#a(St-uGKJIYwYr~eciw`=52J))1c=q3;CRuxYwSj8ne>jHH_)h1lx1x4TYlYjTY zV$5WYNRI?Sg65cy`!WGF-q;CJ1_@_|HOiqkYR=|(k zWN89YlAAEV!ZNM4Us>25iok5#nlc56Zsy8#DVI@g$Ns0Yjk)+8h}qUIiwz-D=n;f? z4Rk`^xfMw#ca&A}tTZ6uW~jI;^OP)+=1>CAztAx7B}P0U`3wEJ`x;6_$eNvRPbzi* z4kf@}f@^VZe0<4s_~W%Al62Uuuaj$l2EYzhKgSY_1rWR_As*;5TUlbrfB_5H9GM;U z05~vq{wUEs0C1W*Cjgvwo1!DURV)@WwSQjJQzS-)ypXVDM^cC(>@?@)N)^dX-$A0J zA)BP-P=eF}{zl`7!80UegQ2C_l}-t=$Md2>bseQrfVtbT0%*qSWi5S{d>~Sy;i+;Q zmsKZX^`ATvlcIaPqgIMN`N7g$!CGg1flaD&0YYk*T~k*q&A$Khf3jw`q22s&mOBw> zu&q8!n-;SLAZ{S{7{%*J4F&s7;VoTo9Rn2G5R1o@$+k%=BvQ8(}g zzzBEGyeLfN?SP>#Z)#wIR|5L$%OhpO79xYdkW;`@YY&qw-m!DniT>lsV`94CywCvo zwZZVCW$0M70Xt&tRfhBegRJVWB7QwteMMiTb{^)HB&3F{O}=o+g61k4u2mtw1tGP1 zR$)XjhIIw5OflP_)B=bEvj8wNmHLAN#$K&Zg}k8^;5^ok9VxF6s_Y+$9QQ3Y{7?2Om$9H81xVnS1L#^Vv0=iBh6=keyex~p?oK-liea5uZ`jj++e4#m%EJ0 z*>|n4Z0|c>Gk=g_)*0eZe((*tr3wurC7O5gdMSiwbocsa zU)gkOn-02S`2>L8-Vtyo-%pS?*lD))$FY{&2%5^~BQYg$w7@kGVze5*waxyc?!3 zmAQWfpgEl|+-|f+ih)k>x(iU-ueIleAO}I(Odvx?O*;bQC!<72Ip2OHxwHdtd_RzW7(z9O8k&YP zvU0SuT&+M|FjI+{J&rnZJak%9#=Qrjh6IsbDwr?f(t?4|Z_GSHIsmk@ni0pV-Hz!Z zOJ@nbcT}07^q|Pn$k`|}z%ThOXD5`417#?BoUZ~KCQ)7YKX?v#GJIfj#uVh`IjJgN z73mMO98z*rxgzN#U&6hTw~RQDwb7UYUu7o+y0zHE%Py&7!03^6p&R0q!SUcIJ6+aR z@=0UxTaiwlCIIMHEN15B;Q2p+Q~&0pC!%kl*mSx{q6y5ta)FLr?fY2X-1R8yp*vd2 zWldd`Lk(@vH(kycNkn4)r8obOY~@*nAl z>sbKMZYKnyv5VP)j~cs@+l*ruoX_E2L<=UYVxtVmKI0h%St5b%?9%h}2axW5nQLZ8 zq$<`1`IWlfF6zdeycuI$rzZp>rB)UW$~IUITc!-=y!`Q)$t%fs^|THOnIJy5bls`7 zZI1MgiO?)WrjOpYn05|MhsF!kTeMCp#~Vbk(8G17LXDcQecRIfp`79_kFhR=h^Q$d;jO<1;d(^ z-}pq(zzbW|sXELwM%bv<#RY=Vl<6c^-^#)I_di=?@7>iheR&OBK#sv6mbUOTewC4i(hX2<**jdVIx~X|!O(2$kZ9MUCT! ziFC1Dx{k3i_+gxZBOtNYtPj=d?a58=g{c-P83&+h9@)e4>bIuQ_R`zyp*2NE$AL$+ zZ!z}vqj=|{PVud#;J~v71(utC^-I#2p&QD!*7(S{<;gLns}+ zC7u^swdzdlvh(3u594*j)!8L~N2?7TYS-BN< z@%p0PkA1AGGrLTXV<025R4cP>x5IW2fYI3cGeAJkE+dH2(HH}0mS>O9lnPtEG=QlP za^?zu+IDz$7@Y49WC;jUTFnxN10FJ!6Ph14Ln=UUXwNCwD;RguCGQYU;e$*EEIi z?&G#wO<^>AQ-BloYi__E$zh+SwMzP(jce+VU7Gzff0>)u-IuTX4xx7`gH~TR z3=TdBY(?>@TMEWFb6)m@JU$hk2RPy$EKNrDJr5;wt>@}3KL8;4teO!1OK2=$xTAk^ z%DhCx6Qx>d;6_EhWq6|VIUj5_dYEI|2b;DaHq!xsQHegl@ZHJu$mK$O-#&N(5RI2V z4GxPsjEJOjm19P%#QbhEGr~C|JQ+&9W$`V2yPxE_r-uS} zFtU627?R^(`@B;S;hIvkNH%LqVO5yc(z-L{H7&lgl`W{}5U={16~X_;3()vmFAf}w zn|<}36H{*!K>f%)3W=3)HYvP-orQB|9L2ZufBw|*`PUut%L8Qw8JTkKIVD4zMVY3D zz*aCtI8|%Wl|LXw)|e2Rj$WMt7*1M`4geL_Z~c`$^)8<%wAl;z$VYrR!JJLq?F=H^ zBa_A3Y`dC?l|tx@yi8~PS!?!V9N(|=eyNLiX}I31`f6bHdLy>{Vs3e0KbO#C#&`j00GoHuLLn?})=`6b9zwRLHHAq& z!PqhDlitG+Z9-AEuui-Rc0=cK;w@EQ4mK{@tPhJf0KtIRp6+~RN=*&=ea7n%edfp7 zaCuU*rsp;sY*!00)TLd`Yf6UnVL?|;a)yP_$=h?Okt*r8AcoG^d9X=#v6+QXdThoE z05i4S3qJw#N#QC%c0fWhBh;B7l;K)YGpnay=@)(OVQ2CMQfY(IpJnJeEqIWrWdz*e z;bumt1JcH@->v6|0VoI%Qo--j3}FVgK*%|!be)s=%&?i!cS$9SQ-ASfCHQ8|Vsg;OWE%16A-0=)WxM$-L> z7-9O07|bmoFr$_2Vy5A2r=iF(NOMybyyuz3Oys`Ib0zc+bdoY4pE(kbbx{gE%;wgL z@Ics0!-q8~pRisW$YEse(}tgStmMD_hS@pC?r!#9^Aow-Agw7HC0MX~mr9gmgW|`Co8Iynhl=XNcy;k^aHE){*ZU0d zuuSX-IrndH0*x=ie$k9#pW z?kL)?On9&$dJthh4%Emb>8O^BLMf#Y%O>z=!lg^n6E7Cxk9K))%9Z38M8%v}3T0oC z{sbSCx@oHYrNVit2C0)y%uF|?-!I5W$#C95m_VehgJh7hfAVFv9?RLEuD)A#=frS2 z`8SQS>vZQ9Z2kpcnsJ%f@5L3B&+pwW;a1wU5uggtA9tj7Vw{+g{YTd8xBV+$j)VrL zdd(A~@Nh&g2A{p{HU_Geiw8w3H(qLs>EML*`#FN^YgLigvX9iX#q^CEb8A_Ub@MP4VS3)64K~Y<<;+rvC#Cku+o~*bi)zevY1u?M1vlc0h7gowm8V~adc9bj zO3$aM=wfExwy{Av8dClR(9O4jhzdr<&b@o;(V!gNY*_f_I*p!L5dhH7C+7pPF!mXu z?c{PBu6yzQ=KZ?^T$;~mZ_vS(FrJkLrWb6GL{N^{ssvZmKlW3-&;n7i$xmEhCOPw#NfRh2*70Bt0Mm#pE%j)jbx2XFtps@f095`W>h2GV7Eo2ogNE z0YMB>I1>-zWO~=_JJQ7HeL+&Y2f#RYac+>5{9$R(FVfby8v1^4Gkl_X^q_rAwqxPg|| zpb6eAL8!09?BQl}J%etO=q}C6F4@OM9QuyTAC&li2MZNVBu=2~r zN#qDE4o|(uR~ofzdJE?c8SoMjfN%nS{Tv%_#!ZKj{5hdJcv%{kcu=v}8T{B%?#vHF zNko3;lucrpHj2@;-Ff9RG@z(4%k?}H-#$}$)z-35Ys#14nC&U(cX5`sM$Gv(u#q;+ z8Sx}pRl<#S#!E}=*7+T0{fNbUTozIr(hgT>QDvRcF--{-Ha?+tkm!w<9z0IoD)@}{ zMA}rsPZ`4(8_@Y_URr z8a%$tNvO$Kl2DoAIqZaAh}dv)(D(4+$Dp_}nE84Ow<|NG*_$uuk@WOsR-tJT+S76? z{<+Qq$X&UR{x>b2lC{l_6en0us%^q!neFIf>$kB*CCRL?NYPTJ(9=t|E)&Mjh!ch~ z)L{-7Wlr(<1=!T=nXuu-spIU6XYt>CD9PP&ne_X@?r;1d~sox2#sVfob~zq zLNJ5DU&*0e`P}fSZLqv*@Q*qu4d0U(#A$IlqKwncF%;C=X&2%knG^~blO(->TE=Y& zcJD%DV|?AOoZ3Q?bbK&{ZlQsZ#%0UTBMa-9cXI6pCOrYihCf3yM8 zinwTyH%R%#=GbZ|lG3_R=1+FBnQ3dlviakIclrVhiG7@PPsWNIl~=Xd2ICllsd2ts zOd7B*S$(xqpk!xoc#w9ojKcifSRluU=Adm(e~c$7T#WlrCXCXDd1UCOIB!-r`0Xu% zNfXB`zG}$a2jo`odj5)H&X6-r!p(+bj@BMdeG)1zLD#;R4ccK=3lTONJfxw)I^O_6 z-g-t#=%&Y|>Fdn(z|0*kRkFXTnI!ASnUgt_g%8#K@{nLMG@y&wFdd<^S|7Cll=gZb z%w1bm3VavGje1r63vD21)HfIQV;)?8Tz4(U)JLS#K1Z8i$uEzRykhlyXB)n;@6k0i0b))Lc~Cw+I3T}L6TyooSXA%B}i z*Dr^i*v44<r43%g#)WnEAI%l0%$6oIl zxFQwnhJ8dUeaX{q5?)wpcP789O@vpcbIMw?Yy!|CTmnenG`R~Sd9yBt@KYO72_MB_ z+A=DFOS1WUU#iEe&TQPB`$|U78>k=V_z*YxLVAfaH z5$y}o*+&lRnT3I`^Vvp%4Ec5~svJyMc-|v#p4n;zIf<((X*yd*33_}Ts!Hr!$7L9H zUxH^`CchpZ8?ex4^%cEV z#H$a!+A0AOPGh?1!BfLio)wEm?Y)Y>Fy5HoA}lt3U*Pw?#?%{{bB&>wHJKkXzorL~ zo(;~}(oY(xbj`0hJCm^xFOuElK@l`&iYBBJMTz;yF8SZDZ}*E zg#mYkqUT5MEsuuWvYKqM{+f$OP`*0aqdUkbys15+F!-tABm!u!4d&$>WoDl-y_8p@ z8}C2F5XtPVlla-wqCOJGQHZIwBJ3=>Q)LB5af1iz0OG8(lM0QxOB^jq!6OwR`^;<^K%6Ia@?>YH@3TLxcC?@WstO=FLsHD!&AsT z_jnz3WK3R&b9Q*{Rdg5~>dn>ouRW z8vg)d+W+h*>5MTLg8Kf~Ac{-c_xFMR=T>~cI;h8DSvCAaF|ir1RcoF#)}vBknb~|B z9Fu`vV1moAG^9PhemsD*i$cvNt_Ww5YWrT9Ch7#DW*;y*9F%JC5T)tHY_v!w`KeV8 zWT`dXiOhZzjweH+tjVjTb-7?0W8iPfZWecAhdgPX8-8-uyC#uUc-JH1g`?Cji~rrb zAX$ew)ho~JM<&zH|KOM3iC<=Dq2K^#AN%$`kV~0>Vsku( zzeOuh3O9}*e*EbYC13cn}|y2V;$xnz<5DZ5EaCA3Re+0c&^_1s=~EM?ZJYCW zuVoIocgMq=M$lhy%~wm&QMCxo{}HrPilQ=={HT!ywPK@&5n~T=QJJ+OHJ{~9+!?D_ zy_SWw*P=i{PUE|v#W9BU_~7quuGh)5>&Bab&Np>G0fd3>Uql^!0EDZ4pkY^+*o{5V z*7PrL8q_bs2g8eRGi%PGpXA&s9YWN-rm=k^xJJ7?UX~|~8_;Ud|F}T2-^^SCPny7g z13~6A5N?7x0cwlKfHsFb=UDuqbA}Tt$)~S#iu;9)mpLb@@GB9)gb*mAa{O%37zjK+ z5o=cG-6CyacMVPyTVn_d3VPGtj#US;H8k)eSHJf>YH^E*!{wW$E+tRe#cXox#im(% zlF3lOmHhUxbG)bS71fwI?e`Z=X~XWvrt^{XRNVdw#E>1BYlQVY>W9#3@!0N={E>In zEV9_cVLvwP1NwEVQ(X;zakgy?h!0+&AJU|Wuaz+9q;wTH#92O{%bS>^#dw)@!prt&eHwmJ$=jRhlXeV=-pgD^ zo!kO4*bm`eAZVFG(6;~qPiwjizr=U(ppE-A)sAJshPUaj$;x2%=~tJNS#QENvGSH< zEE`qHiJ4M`cGjH;GU;DkK&9tl&_kT2-wqRoAHB3@TG61+I@7lR)Cp#>-*5!u1Y}u0 z(7}RqsdZ;M@bo}!F4%1HRjbNAC0|Yv;uHc%5T9V%(v6N2QV-xi& z6zYg!j3mlr%6Q>**rq6>Mw%W@fB8{BzGHqJMP_B7C78zOEMc(~(@t#Oy8|0Ug22h> z!I?^8y9Cfb8PoM1-pVFIu-(tT6p$+;n$A3e0=yi;dEl}4`?>{pR}+`*J`LX; zRJ>~EB9|8Ue(_PHyWpfQ8EWf3{0KolhC6^{p9asmK9tKMsTnHlVhLHb3FdLa6NV;E ziJd=lrZ`}M)-=m3;D~lSnF2Liv-2dng4>L>afm|+Ue4=Kv8ZsIc=@UjQw^u=aCu_s z0Z0yMdA9x%X^K&RuHVj$h#R_)5dV!ApY;SG5bUcqH5=OM$XCaZY|_ENeoAP#2y4y~ zUh^UIOn%@SbkD9$Lo;l*+7y7P%lLc5#73J^SC{T6K=fI%9E&a zrNyV;{lZ-j`N0CvO*oz_dYO!s+;>7o$GA+>l1JwlC;4DgGG3#!Mnx%Ho5w(ppHVA;B0e_>w!=QVYv- zf(ZBV&Gu8?LlyA&2h6tF`ieiFZ%CN>t%3qmVr{9>t6<71$`hEViIy{Rc?jtkM#;ta!Y%viKc=A|jYpXp2$t$j~-H5xQ^{xW~2Y^AXMr)AF< zjQ0v?FNAlbv|)kBuJ$HOfQZBYwd2q7#42dDUf8#{W4^KLBzDutTl*Cik;GR>M+d%q zlLK_lU7qMSkp;^91W)&P>WFt>Vg^-U$=jXuQ{LiVHs!EW&V)+ah061Qcpc3T`%n^r zcY6Uq5t(H(UMxjjQQ$Rg&Q+6|XG$+f&(FMm405bBNEu~&JtdGRGe4jt-*gBqXh&30 z^XNQ&_fD-J&{~wrCUWc-n|uz`j4GiMn-P?YaJy|>b^A}6yU)+x(zIJ1TiY=ZDqze{ z7k&k*r9MF*#1PtW!q?;Rgj>fzcY_pb9Ev2d?w>i3;QccoAUo zaDR99IvB4SPkK^IA(+#|TnMUZ{P!9cl00<61{r}Aleg~FEclVwN-QR8dqBdt5v9QD z_hGe6{@{MC!Y`>b2GIHK%nDR|864{rpH1wYpP6DhST`W4bo=aIVm|VMREs3*_PJls zy{7P_Dj+^mIXMsDSQ2VUxBPA#ZzUe@p~49hES?&0K45~urlu^T+oNo*L|#-JCn9Qp z1M6H5pl1INR2nn_lz(G4P{}~969R2sOg!h zeO>`~t8-~Jc>r(NZh~)l2(B~S=?r|{PI?Ih3fuiOw!Eh~m{UZ_8#YYv?S=4j1){W^1df$aR( zdE&Wtebd*{ZpoP6GiY&t?k4ZysY%+Cm0cLPE?4SE#aY5p@xINVhN!qYPl{=wRQokAUaI~CTX(fSi~lslF*666QienZhKYmb z*-HQ=@hG0=x{J*X(*V6`Lppr+m!C12#ODQv4L}+(v7=G8e^G%F2P=o;o1BgzTnHgC!6BBeXAU|->wU*9#opQg456rH*E13X{NV6=9u zKunLAutI|KU8euB<(fsa~mxxCXBl%1a5}tEyd1&XCTUeHe zb7AY1ntBJxME*9+@m-ckffLMA_a7v|;3jlgd)O@(a%Eh5M(u<4-s>}-@)JWQ7uGgH z9~*=Ul^X*M2i!o}En*wOL}p;2dB5To#^|iLM;`YX6Eco-qHv(f5PEQ8(^%9vqgG{H z#Ea$~MXs?6iUHG7YsIwGbTJFabGTsz_N3Y=mONtvuo zx1o_cHAi0Xz1knIX&(mh5XH~%9t45@Y;qU5w0W<8Hr)U@cSX--2VV-hrmR-fkEgu%5 zl@~GYoMFtC6RnyGE0COvES3{@E@K_#wW}@9eZpxO=&FqK^>3)1a)~$`AbIf@pG5Vd z8R3k}vDv5W?AI)I5dY*kPl2r;K#?s3gWEcsv$ULBC%zPmXdTwBQz)Z85i6V0<>B`^ z$I@@-Ed%G;z*#2obG#Z0!LW?MQ)&5AKx`_!1CqhvfMLmE#2pPbzd+(>y2?Y2xa_58 zcG&L^$vNpB+j?NRv?$Af3|fX^ysbR1X;4Ejjc(S*dwU%9K387kfU>*VID{U&93*H- zWI!8|)nii)Y4mA{k=wIrYmkou-;L2r>2>6^Pa~hoT@mKkd2`Tku_;FJfnJimr1WQV`asyO!INmWH zIJ&+py>0rl_V^QWR}8+Xt=L`uk23&N589VrFXm^ye|^|Ml)mGGky~Eh&!4Ate!Df$ z=L&}p8e{9x8dK5M3Hl54h7}Kz@R>-ZocyKNNL-qJJ61PTpxMp@H*W%Tcz3QH>w)FG zVHc0#<$TLpV&ZqS>L$On3IG)~i*FLL;2=O4nKhl7PW_~|Id!{x5V2b)iNetAVPEOW zMTwE$o2~4#Rha>pK3vh_t}bB*KT%2x(|&ITZayS%GAV14T;;|s`7Mk?s4A$3x$uaJ zq=(v2@up@85^l^8d+Qg>YqoOQ_B_r9Tm9sCIj;Z9IM5S(d=2kr(xN&7p|8W3W6=c{ z2nTH9e(2fmCD3=0^b=g(O?kDursgJ_kKVd?RHm?QNnQ^58kGTn@`w^4C2+8j<(?n7 zr=xGxIma8axjlq5KjM$&P)jg5gqmSLxdr}M{4b2FjVz?bBt9jfp4SRc3hBnr;g(Q5 zF5RKFXh$ax>Cmj9eCd^qak(fuS+5_W$CMW)=FoS{agN&+z zHR`!#3td{$RhIydRP((IDNG%Fjy$bM6rXrYizQu+ zAITQvA2;-(f9pYa(M2t3t?@pT@5OdE5<@nb^f?DppuO{Oo1Qv(tM|)hm%~^_uLU(R zl{^v2NpB)DE+S&86C}in+uD!SolP27$`*#jP^O-|&TN-zfmC|Bs-o{(F|9BP`ehka zQvb`IM|BLIJ&Yv}PpPRsiQ^Q>>VRa~H>Mf9Bs*!)-Hd`9?i+Oqy|$gA79->=MrNG- z4`oHEO8^+5xwLit@`Y%LcOml@{Rf%J=KM2=4H3DUof*YqS|u(fM%}Sy z{Cc1Fis@VGx~uV#4X5PYW_d<{nwoE;&Ey$9GoO6GOyO~fqn;H+3RIv`R)T)xgJ;LT@za-sVNl?>X%orFRaiDd54yhlUoV9kGpN@ zXnI{$dv~|q62a6TJIH0lw=ZBy<0LxYptuCtPNs@uJn1=`M*0>gnQbab<`!R#$ByBz z#5#OD%*K4e*9`4e?tTzh^rxU*`u@`7-eI8g%pkQV+qqTyD$T^ih#M@jAvZ{&YNV_( z+VRi$MJK1Uy_n@Twn=1^M~KBIHGYd}>oZIzv61TB>^0wf-T#clWk3aPr(wh`{(xM{r(CiR6Yn90{3i#l;KV>|~ynKM< z98ZWN^CR2D6|fK&tD$W9=2JV}t}rJYPMw=ig}10qUI`?s__psbjIoYjpTx3np%`;87)>fVzL-slw7Vq_B_$>Hp9UJ`AO>TAne=*}ZBR^ZRpi2gA0oveN` zy7}Ro{`xGV`~ty}@%Vnne9md&;y0d*Au-*(oa@7v10vPGj^Cp}Arn0J+QY-FL8?SSY2v9{L=Z|VM{=e z+h~zHa>4WVRwU$^1lTUM9WE%6%5EDCdIu!CUzIcbxlTu7!>yH=c8GcDX*bm6wxWY?PaK+mf^0;Rz93`T+j*#%80Cp%-ZZfxjL$oOOJP|#@J)$p$2FxG z*><_?xxEjcq}Cl;bs42#0BF9r;ltq0Rhu*mMb~$a#2HJ@R@!f$j=G_a2NdB?l zF~`Y3^fWxiU3>q~z#{F zfN0>D}i9D^%?17z}v!0mRbZdB=hK4QIf-J2EuI5 zsmT$x=ZXru18ZKiUXB`RL8nRH=e51!@!g&D8h({1gn7rB)Gw4-|a{2_*qV zk@6R{sOu{VoCsu$Ndn1ko@dgNT`^r5U4u;$M%v8<->>X2^4bxVH@=Sl>~0x&$w<^U zDm3c7W=#%&n3jo3mxMrk5SyQZMPMJ>-DYI6+i;K0u1~a(GTaoA*$v#ulC`N#n5B__^p)D8){Q|SgqwoD{xG-@8aH> z|GjXFj3OLusDszRzQatRYw^6Y=SUVG2{{OY#P}su@b4S+t$=srtX`<4qVvWTg;e&V z$s@2L=q?oGwy9{w>)!=7)@L-m;o}dAhvuU%(@&v_NM{0JO`_GQ=(|OHyAHMNx=&d% zv-j^|ls~b=J>&NtDgf0hLyb9F#e-k{>~@LhRV|)ivb3k+^NyFudY;iMuIea#V7GqZ zQ<~i60BBDNp+^@#WX<<3dlb9tJyYT`!-pIJu3#D39 zgT=C%WIYwUC3LE%7t^)0d5Yh3PZ8GKX#H9gwfOm~<0fIH9h)RJ1xG++_Y703zLvn) z?we3urb2+gms9K?4$p(%J(rW*Ap7^NTXp*V`mO#iu}cKK8ctQismuvbVZHx+u3s4J zO}@ZXN3A#3blGx1Y_cA(8d=7_7Z1n}0l@cV>Xevg%w?T=>N<$VDrKTRvX`9k3>X?9ts8AK0a-E;md+mkw zO%dR&xycSFX$tGLR-0ux0Ecf5aky?RxihU!Q=uZ<$~;N-#}Rp;c$0j_C!K6$Q>iTq zvsj|{ieyu&z2zm)ybHhkbg15w?R(#uB&|;H$#WXq;I~JC3dQy9MQ_~2PI3t

1*BSm7nw_*=YdDsbn`jq4)^1iXskXaV2|+y@B}EJLOq}!viHBUYbTc;|IFYy z5c8%by|Z}K=8vK3z?$-5hYPa$f=^*MbxmHRIVwNE`P!fwq2NTeoia=Iv`5+VPYgQs zmix^(2i@Zc&i6?bY3n*SB1|oHpPZfAO?ID?+bz1Y$cp>K$MCM!F;aVfR_q4m;%FWS zYoS!f&Q4AdiUewIP!|hVt`wrL+a;>(^J9xIYO;{moK3^6ZtI~Mq-!Vi6R zczV(M>393pQ;BOCf4mf6)Wj3G3!K)gz)rn%9nPfx%K1DW=UuQLXVYF00LPi~-4A5m z<@bX`*4eK}hUlBLWY0yrS2131v+i51j?&OPGMI>E*3r9AMObxSuhC#u`qpw~Dy!{E z?e6nZ5ZT^|t8jX!i=2q5%T`A53&niV=)NptI-fYS1=n1ty!P%PQjWRWbXTie*TMaC z57#9R^^DGCX+1}6&oMt1lX83FJggtqzsCP^g3vjUGz6ydrBKG2Q2CG7#&U*tjFASO zmh&kKH57c>wUl)sOS= z2c_c;1)_;Fr>LP6>(8N}NJ#+KO=EAxT5df2;fJ@(qoYa{+K308dZ__1R_%giMv|Z| zu)_U!i26sgis~j)*^^#`DS(-&=w=RHxf?}9vUp)~2t`S#6R#)D8{GC&~G(d+UR>A><38=Y%fBQ06U22(hdmpWIYKK%m2C>J+wZMRkb_NS*M38 z5G|wGP|B8(5{8wOp}z2ce3$?EeV;Yz&l_$%$k$LRvx^MiwgXzG+dZB66f%nprEGB3 zKoYP#C~gvH$r=VSwG8`|58dZJD7`&v9ams!+Diczt<3q{W75XNxT6L&6mFe z&E*LF4%l+GIp7O00IHkn=bJB{S{gjN^~ZGl_0Q^4@;s7_-I841YdNwm+pMSMi6*|I zPRWP4_|0uY1FyLB1laZYK|W;DKz)K9^bTG~ zeJHe-|F82{amlQHN@19qjgqX#ScmK5a1hvWNeAY1FMBv0aG3aTivQye|6f1n&rk2+ zBv~Z$mxMl&kf}R&{Vq7*5)w9KJr>%hqy+!XK>qxIfB6e$WdB_0Z7Ln{!t*bntd-T! z_xv{H__txnu7CN3zgFa5ciTUHmem6qkSV5=QWl)l|JcL_dSAZL{O4a<<21XAk7}M z5fQGwcZnv@_4()i^D&Ch|1pu0*^Ny5g3v_j>HVHaLor{m|9p&J8!vdPJy|q?R{M0i z6T@7@Kjx9L@a&V`e>3_2s89WQdH!P-MC$$+B3a(XX~HJ-I+*{S#@Iz%{Ic)A+sglL z2l>=pf<{;aEw%3`{gnOU6Rcp0la{a*~R;o?7!bpz%uyEY57 z&}(nR78Shm2h&U*(*GA@l!JC-vMu{b`Q4&tABHpjpS$fP^W2+1=I8(8KYdQ|{Bw}p zCi9YY_n=b1ona90$&K7C%>5woU)&YhRA7)7oxvc(;Hq;~9v8q<`b7a$Vjh%SJpEsM z=^UzmzA`x&9>1kX=t+L``$-;hBwUdBFUENDBzPncQNbY2{iR{gXTkTsVTUc;obtc; zyzh)6)9a{ZGAM9%F^u3V2M_Xj4CU`J-p%^=hwa~9n<{sp?YM>kcbUv7`+Xwg(G|yM{qLb}P*(o%UmR+gKbHBt0F!^1Ae0~-{?9Zz*mGO^ z|EE_YF;(yhXpBbC&iRmOJqJ_%-?utN`I9JmOQyWB|thcT}~j5iR*&ER2TMA8&PkpmG5W2&29X`1JdB zMC#bzBma-L_(@h%C@7u~2BG^)_d!$TSn!eH;u$t3ny?YA2iCicP*qO^#A9zk{Z*nv z?)dOaWt-Cf`;D}%_5)~h(1QA(>2m<^_Qm&tK)yx<6bWz%*QEaC31uY(-z=w6?MZ4c zD|kz|Rbvj7!l4VRY6!KwX9ii6Hvn@FR;OCR&JzHP@dL&yHJNHxi+gTOr*IN%MywM( z>XU#=R>jZE@vjc8D(u}eCR?(NQ7Bn)NgS_Viz))E9EI2`3QCdh`}OoRhIYG_cD|ZZIg#BpeTW5p>Hp+XQ^EqW~k^5M!Tv z7MSCOPl`3CtryU(7>e8Uruc=(du zz@=rJaL{gg#CXQ!xw!z4VB;7l`3Cv)`h#yGKHfs}*HIBEC944gwya46&@(}H&^qH_ zxmQC?XoV`Z8zp%jIkOg&g3~~d;|!$FgBS&xKrWI1%|J<~u!L)~t^gcfGy(Erkpvq? zxxX;Qm87N%={aD?=LHslX9{O%_|jAwP$27pom1j<7|>O#2YMmnuh1NGPk7-l`PA+A2nYz2~wc`g=f*fL4vi%2el2tp1*>)#O=Z$!G=w-EcHh~R?8_$acoMs zc{3{OCRBVb2fL!bB$HEdS9wa46W`+xFsaP!kt1I03`8M(*Dt;E*4i(>XJ7P<;|g$J9qT z0Vj89GHl?>H=a;&G)G%_gP3~}-!EwvREdi7YvqX+*TDho=#a%=!S+(ySBQHO zR>11DZwpE#=^|3%6@QsofF^)YC(m6L=R4*vDji1TxX2#)E9mGxO5gD|!tGUb@Sgd$ z*4yp5Q-rP$i#lMDrawo?{zTpam`AA2mofByNigQ_=1Hk%{PU~hxVShY_Z4dJgL%*3 z8NeJ`R9ZaHwgUF7hf#@GyO}?*i(++CAaD1}LPGn9JMb0DRcY_)qTYj9J66TcgZ~}h zZ-uGs`*I#~RSp|)+P(tHHf)=x)IkSf^hFS>L;3XE5MHje3Q5iF@z1vC=)x+C@QK_l z)-Gbr?e76~cM7-8825u*zc+w%RiNm%o|hi5h*I8)Hh+7T4Z1i4wibD2LEF9+xPZoy7N(LqIh$wD0F>KDMH+WkFb+Z?a~r;=;lZS0r2ZiLS~hy?#WQ8pPx4(^4y!8?F?#x=3_&P>`uYS+Ks*)bq}nTIq1x(YNj!F z-s;U~F5wRRc^i@I*X{oEhHA?=rDB)PCH9~zxxDN%JX+e6#{O4f<+l+=Z-KF)jK|NZ zAB=mg>Yg7JpJ`|d2T{nB-@&@gLr3d2)7jM5io^)0iWSTJwCZ~;&?X`%6frOE9{`k! z<$PHLkX^hWGrq0=;kYs+!FfOb&0k>$UR}N>HqVQ&%x6&@%kHt=%aM4eX!Oo0gmRwE zYZq^?mKJ)0dPtFPG*~LI;ss#TGO)ewTaHLHthuVsB+tXCYy0RKLgnl57v9Ho>#wE` zV6r;YVnOly9F?&Aiv@@En+)yAM6k|$-49g@#xXAHAF?fD6x3x|TzXb~1NE{427n#B z%2*y%!=~f6h?$!m65Igy9#k+L)>t<*;cHyPW3uP4_xhAmJnL9a0D>v~#u=JM8- zSe*z@98oE{(kA>#Vm}Hv;;vq0%PZ&Q#911>S}j>R%iL6~(ED0la{5g^pg}Ga-Ag=Z z((@pV5$r!y4!T-+Zv>+La$KHl!>+CCmaIjZzCBR;Ns$uE@Ja z^g!eB^T8xY05g;GE_F(P98Mr($~^Tdg(?-`u*mhT#9-2qW&harrqH(cg^ICPX;9H6 z7NXOxLjMdKd}uF>FI66oOrSYCZ%?fsxwz{K3Hu8 zoy-?goP4Fl8W|XT%CAQC00(s&R5Xdg?`npoG!$J{?R_f=H*C|@Ec1|>VS1z3YFN5Y z)dNWSCheZJ3cIVo-x6-otH{!st2@k`9=_FDh~sT`Y7~wOe^#-Cwg)njwXHj&%7|Qv zdfG&zxtQ&ru(kSLsT?W7=0i zM5jQBPynDDabJ@er(bUlh}EX9CIUWnMH<5_5T$5$ zAKTPzk>}p;7sWT})g`&#Sq9ebn0cc|2WxJ%(gH zAdw}J{6p$N?Z~4bG0|5G_eP%w5lwXQjCZl{hsLL#<(pL8XC$r&pc((;Ds1NVsaPUw z2~2Wf&H2_9pTL8Nd5_2owx51lyOs!_E3mtVlyaVsY`m8c-ERY)QRg7OyNpf_0BJsY zO;K&AfJwfr+S`i<0w$k>YLgZ8)KQ#3*(vh2MPv60%mR@VNhqCODeCU(TLrq3rC$(y zK40#*JzZ3;x>{H8rU%c?Z5Doh!41LfT{=E! z-o6RKt?oWZ!By}8>JT{`gSzJu`0P6Ayu1o5|9A&@*)sTi_=yp!LEj%{S4eFe(tM-% zdrhIx_Mzws>t&E*C{b*qXi>8c0nx%@T`{^e`v8h=$VlDZl10P}Rh4ZG#xEphv9QK^ zJx?X?VY_L*U;q#q=dgynMUsZ*kva+nRjppKpvIdP+6r>#x`B-kWgbSUA&S|>fL#pHg40So9N4p3Y_dX2F-EIdSl7$Hp` zzjsUee*fA{!gr9MCW^Mw{`0vuyGlKv$|I?BHTZTdB7@Lo{qcHW7ug9Cj#E7Y-i60| zVaJQSggdH_FH9`gn}d%3@8G)L12WsQ9UChM>!s=24pmOi{0Rl~=-Z-%aZ1?@pW+-F zFRhttdnXf(Z7XU4j$I&L<}Mo*ko~dMx__u0*_(OhQR=b?2pz@KesKa>rZ1v&=7`|5 z%!9+4!gdki=yUXvKfLonSnjuoQXO{!Pk(+hoBbSvJ)S-OhdEFrRvu3d zfZgGF)_+vU5OeX`T}yh+jrfm;3tmUo0WT!%1)XYN|%H1e7h> zQVy8C_93!y{N@LJHU@no1#B~B;U}fl$2jF_{@xklWHVg24Io}66QQ(z1q2+37R!TX ziJDVDu(2on2z2&ND4l=txTWReNs_x?59loNeV**kM~w?b%A5?i(c#DY^??*(#$t6^ zn}ZV%B|m_UBE;trOu+%^{)UFFUNH}TeC|6ZsFd z!%uQA`2%Sr*+%)RtvtuGoX6!N6DTJmV4-$e&bSsYI6yHLjlVG?pAmkwtMDu&PWR0J zgncbmJPSu0T_Y`is{#w~a-l1qSH_%(BVieRJwFc|{ z1lTR3FF|3{d#;KONc8Yzy6c0=^{TC|Iq%3t-B9Dv1=-y%CsS^x;tIVQ09rt9T_gdt zw{8Wq^&w(_@-?|s?W|~!!o{Be8!ZOfIgAbu$_0Z?!RoKIuv=92J>)p^^!jqUz}+P( z5TbeXdmh)3&AGg+M_DTdo6NW|fWtAzI8$8I`b+p)&6dS_U|jFi2nlcOpyocy4vb9+n*Ik zC7@!$Kr}bc>c5>wpJakJdty0pR0!sIhLwU&WJ~MajIQR3ppX=QJevilR zpBcx;oOkTK_ImHV)@wc2*!zMLD|YQ`2hHRKR4M_BH9f2)HHiV>(4#n6w04Nx(ORb2 zQkTK%U$iCH9$@+?xj zPoIg~eSR^$EZCq zQC3LxfZSvBtAF#_=G@49$3f;%2bVv0Z)YpaAMERKxuxvi9*Z_7*gR^v+P~GT@NBTy zgT1%L1a=B){F(7}?Rju-5Zl9(MY+5Qs|~wN8zANvq{ua-^-iTs%Jkome1Je zA3ZbNNemd>4S2j5;FQRv>#u^&rw2-BKBlxB?lpke&1kiPS9d70 zNzI97UpY8mXSa!B`Q|(=iE5Y+#t~+2w_ZXZO`s6>Q+=KQMvK@s# zRGL~-Y%&JooMSPlh*j`j4GMaGm#XB!=5Mi_MKg?PV+WZiLRvF9npGK8T<|( zy)zF1%=+F96*gUS_3K%bq#}>V{k^5wtBQ4QFQUv9-w*nkdc|~Glbb8LNn_`i%#zL=a>x(*|o@w zrlhq|A+u0TIxHJQ)x5RjBtUjkvzMv#q{F%2T{kVpVb*0x=RQ!o{N@IC&wckk08dCR zAEw%x)TWB)f%={u%MrQRX8Rwfuq(J#uF0_`#bxVWdghf0?35)%B8QX@#>&|%kfK(65!=YB z$G3hC#a)e&Ao^h5`pFD!y}bN#NE)|4CK^B6FlJ{Bc3`}K4l0eUZQE6YO8bstzNWyr zk`Nl+LShlaRr_)%8rW*0uY4Q2vrAO0pQ7;V*UI>1#!$ImX4Cw7xEVerStwqk0B9f_$Y3fo`inXESsuaEe1fO@!m$N3E_z=#$rE{=rbMlvG8vbNI&q*iS??;pz=fc-=Bq#@L!88wd zbvvpf?&;hp;#@1cbuFCD%siq`pJsR#8E2D=$``UXcO#K-YSmKRqepmP2f(5@=sN1xCF#p_Td!|Lu&khVus4?1551ZV0 z{{Vx$e|^3x3*ni zTyR{jDZd*qXohycZj)L)LC}uzUVm=X%PcYD#Z{I<)!R?nP@>8D8QDytzRxfECV!d{ z-v`}USLC9s$A5t3I5q{I>?OvuUV9oMni(GHY7N~N(Y6MT4 ztG~2=w+#^1$>4Ok8d+bfnAB=b{eo1&P;65HRIQ)ia#s5AB7KWB%P1g!>ZJvc)a#GW_$2+waKtKxJA zZKy?4buBzTQ{$ZQQ-=FY(VI1B5}j)BOqhD9fuKP_k??~F5I0FQwi(ASvQuvy7k%ri z<#fu>N_zQQ7<43lM5T?o}`InV`#brgdJfK8_lvXcW^YkDy2X51>1mVca!2D!-Fxi;` zAp9?UU3%H8@4MrysM9~3bUR-1Gco0Wg@*GS@tU@;y|_xZ<);DLW(|JEYF#7_-fH5o zZr%x{=4{^oYZclH_<6S#fz^y{yLIt2h~!WYbdI^87(*znN|iSlMs#mQ#akw*_4u+E zQmtOSp(j8U*B)oVn8_bVJ7D~Zp`-*dbIP^<(R5#O)4z@fCJ;LuG|RyC z#iT>eU%~DY>kjqkR}Vz?GU3Z71{Z9H_)*E!E#GN7KgglKzmsfG%)#K!YpMm^+Ta47|Bj#b@$9;73IrQ znT^Hk;YAhF3$-T$e3vbk<+6~ukT`Gz`)7o2DN16_^_ki8LBRv%(3uKfJPD9mXLYIl zBeFm#)XtKBx1dOfvqnpX(2e(OQ@7RjR{YfdA*!{kRa{{C>(=5z;){E80 zi>>kJg&3?nMfNl32nb11p^)y>oV&~hvSO$~6eT)hd2A8nj}YGSj_M((%DQ!l!2<&f z1x6wXgu1laLe;*@4`pkkHOcBIb~92kWXv>pao7einbL<|E@V4C=!$fXAFA$d8g&Lr zDmz8m4@E09&erMql??rSlMfSQ9pawy1*kPc47`e#G*FFYht&<$Lt|-O3v-5qA2HnF zh-@pZnLuF(wM^gTWYbKo*1;Tewouior5W$?6;aQP0(m6%MoUcXetPEP3=MMYxL9_m zLX+_s>$N9bt2x)hHRBa2?7pD3ct3F}>GjnG6>rh`NcG5h8~z2~{ZijFe5Lq==FhEb==lvK{dLP6 zmo03S3BF2R`!Fx>Sj}sp_5RH; zIm>3pfXyewn&N~3eDuUHvUAKzOzvExp(^P%8xGra9cXa*0g_;|M3o~Hcy)=IvZ|o~ ztC>6OXnT(fMARDfW5%o<7g)3yWojB|nJOs~S?kM<@S}V0tEvY0$>yB9m6ATPW9_Hi zS9ge@P;kEw>RE)gOZ!~z)>Tu14ok?-`@lXjzxh0rHKICCQzpqh|Mc+&!+OUH3}&gf z&g$nZcQM_GcVtHgip-=Jm@LysCPF$RZkH6T^xQuL-_6JQ^-Yk5(x9ma?qCe_WAd`wX-ZG9oHXUn%7@$7z zIZj;oa7ybd#9&&3QKJM~7*686Y$-v3%jO>oa}_p#eBkSshv3_?_B}WO*$g-T>D0Aw zI^vy~aw?RX_zk~}t@OPe^VC@O@|T4%N-{-D#16HkF|1{=>ud|*U>t=_j@ip*3dgY# zFFEeM-GNQIgi^Y9Z)VPfY?{TVW+__42aXxep$!p4pRCCk-zl;x9>3C`JwCuYwJ^fw z;#fZsQz>fbhJz4u$QKGfTG^k>3O6mIAb^{8ppD_?P!mUdbZmkv_h%MR-yzS1La?>@ z2~e&3!}Kg8bR1Xu19VqgmwHY_mp|3sJNWW4thM{>Yw;OReosMp(+mOxE|;uUkxAx= zh*xzRx2Ly#;NUST&bHmlHV2sr>)E^;Wc_tdnp&FM1X+Zjo-6zg;Bxt_?riz zkOoVET-BtULUx^a`9_rS9bdOqYO7!hhBVvW{Cr-k5R)EfR{2L_4TY8EIgk@j{Mkdn zw%MjZ>0sqjJmtnl`!pT{4i=NDs;hE=Me17@K=5p`BQ;H>tgymLh_E!q_4+mUS zS`CRRy9Y|T;fxK&z@{CZ8hE4BWbSLbA5B|Xt$dcJqACX)qSFEvb8tfY@!xl?elVY`!DntiM?tUC z2MrTQ;2wK;x6Y#jt#H@2(N|Dcz|}lyAr|zzk;nF&CM{nnz6&!cA&}_p(&96m1hsfhnVN-ivwf^gGLM>5M^E5Bf zbW|ncdn~{ z(AU1b{j=Isf)Zm)pGh#yH%dA_-<7?dCJ-oblV}%M;nw__!kKnWPvYA41X>X)(yAIl z8BOcs={PRi)=DK!z?ufX%iFbqkF5-XwCOSeeY*D#Q+c`!Clo4`COS7*nN*TqrfjI?tgmavnIAmHR%pFBdhC3Et;CN60K+tD$S7sFp zW|8ga@=O4E@O1Z2NJJxWFm>8TJqhAnl$Q(-tu6JT>H_Nc1mJT|TLLB>1YViI zGLIa?Ai|Brq7^@cnZ!$F`ZCT|a`;QA$$vN;D~M&fGn&MY^rq~9RX2W7+;{2(3ihju zbB%U1DUY8yq8AO>$H+3azD889NHfDFCuKp$gKLWp$BI{QBYL*b`;l?YVG99=(d(Yc zR@3ZJD%aX^=k6Fg)Q(r3xn&l&Tt&>4vF|*?U+(4Y&SH3>6Y?0bcK@M0g+mbvrtGst zP()1}11C@n0w9U&LeVo-SPaZ)6Fjx#C1`a#b0l54Ged zjn>@g;_WZSRMMURkwT%~PWf2vgLU_O95gd;AXlna7JG2o@u@wwQ$bnwjdtks^bZ#J zLBxC=F~hu3AWQ+OnlKaGqOMB30xM1U;cRLJEG=#5wZ}u`2H0QMfa~dmcc`;AeN^)G z%jORr$%Q$El-N50?hy~|^I0%UGUZ)7Q&NT9iEbDKGmUwb#xO6u*!Be*0w+z9iy1zQ zoD4r8l^N*S%|Y=(IY6vsnWRQTtqrHOJem-y-&E0uF34YihDM0m^6uU=0&UF(TgZz{ zn>7AmvXi{nCR4=JQytBhB%oA%MtqCG0M@>m>9ecF>4%H3MzlPYq5Z*HZ6h%r9*(T- z`Qt14Xb98#Yt8v8SA?TM#~NT}^u&yx8qLcsdYn92KqtPTU+q3!dy?0l21-5+rJ*e0 zMUkbGOCXBQ6=)1j$ki^NVLBEBRr=E4Q~Wp$w>0bha1Bnt$5tWd9TIsHO+(B*&C{RP&-gL%cTF45H(63bxE6P%4wqW zjY7!1HQ{)}n=Eu<6%TXXo?KLj6~4FxmLceybJ7=N9+P`E5=%Q648&Ic zNtCUCqPONze_ncR2lQ4LT6~mnXD0u_0o_a_ZOJN~^m4Dsk$y}rG=?2U#O5+o+sI5s zd01RhZky8NdI{2duPTw9AgW!(Y=bCZJAG=QX{1_pBJOxcCSW>m2#xh_hPTJN#H?nl zlZ3zDepkHHavQko{7gG50&~Omec!H-ne2fQD}~`lA$P6HV#)Htw&rF)J)A*LMMUrs z%gp;!Qc_Y%-7(4I(X5M_O3=DCDbs}g?EFymamJ)bZwa(V@1|d9b8I0DeJBm5HlrV8 zs*3tXRRoMQHDLCG^^@@p0Xh(&P9${b1?IEJ-4D;OIj0`v`pr(Nq12#lCs#mY-Aw&A zRjKgj7MN-)S*y2pbg$Wtzn{AH^YN#F@cXm&vnZ{do{Q&PzBH#Q6$%kvTffI*%j^j* zylLW_6Q(qRb@&KXQ*Ru5a>)T_yOUuD^2BT+4s}LXBvptE7y>WAXDgLbvqpn4a2L4m zEYV#cyWwJ$8m)W2*yq`B4I}&Y+k=A-lkaISl?qao73|ywW)uaK#R(Gw=B@8Yi&RSv zVci`nIS2Vj>ry};pXN~>L_u`*+!yn1R7KeH<(LdFAgQ}~niAN`n#;kQBD!3&e1zG! zN7<6=uAP&t5975Sz-Q7Q8GMQVzTMS{N+Kp^H3zIo@hL-b8A~UGgT=2S+ zg^iKR7jX*{F(tOgrr$w-U2_|JiIj1yx}UV|QP)rjC7Gsh2Ra|KcMQm`W#&fj$)X2K z$fH52IrAd%$widJ)d^)km^cW^6gY$pvrGGShs64Ao6*P(ZIk(ICt|4UrH{xL+z%V} zs4_zek6w^{at%ZM@{w2l?ajrSJR6g3U#v== zk~>CBw{oNfWxABZKDK?`a&c`73C0x@w7{p+3sK>prtjsHdvrtn?3LfHyKH(+aOuX| zsrQ7Y=20~qSlQA<+yXllCwO#fA?qQyd)TZDkDC%9L0yQin zOoiDM*K~OmucOQ6R9*}oPn}tX6hyYGzN(r3+zR49Jna~yEJYQcY{hNmci7!2EH|Ll z0_=5DrW^W%vgb5%N?6FOl^_V&7*vG^V@hrRP?*iZ5NQwVvYDGKnsUZ7wKDIm)V_80 z)ExABzQHZ*t_{!kQ_oHpHMuvMFLQZ;C$cUT<(RY+F}nIfaL(dL$o+c=klWsCMbN>2WmQ z1ctX|YKIN;=wW!?tIc`an<5y}L|z5v+%MI_)Sqw1)kNW&Np0)hsNBCJqwX>)<`(UgM=8&3Tyie~WF*2e zJZ+lSv*sd^Phj~BN^k%3&bh4(4=H4pA{xoxngeRQXJQ_<7k(@_Px|KLw}1GbtHQb( zvy&8inNO5pAG{|M)Yd_-%7eyHZ;B==kRq~Zeg1_@<^jz*#P5 zdyXDQ_=Y-0#!hcVH>og~s{H;2C-s^nhCNs#oDXQZTKkSxbU_XQhK8WF==roM(K>&O zBpcybRVpD$C|K2!J`4N+hax7Rn>8*Tsjd)3FS%bJV&twU|2dYEN;P$($rBhLv6(mbJ@puOhlb?T|&ydcb9b`gqPREl0+v|9G9L2`}gZeW`A<1whZFxZ(D1 z{qw7W$8fVRAgR9A@I2z_CuD3{;84hu4rHM$y{c!f7cI-DHzIoYm}kdKviYGf4AI#g zAL!g+Zv{ngWA0L-&O#)2gNysCllP`~;tvo&sik}_IIUVwYf^CbtO|OO1UkcoFvsB{ zH>F64{9JrlNsANnK-A5H>+xkiBQFzyVO;6j+2eJ+7Xc_MLMMPz{nR{we zY4Pn0#CIYyOo6KHCS^EF8MJyCk#w8)s|Ylq?u`O25-|Q6I`a^a{%_t?3AHgX zZ}QfgYp7aBPY*fu+#Z7->rdz++-`y9pBhIoP!C)LmT;wN%p~a9ONv;J?pZi{G(&}M zpHvWah;C5#@qPWkr+3eUROMAmI<7g?iYZ%<6o1* zt&rGbrb02OzOIw%E2R?(#i(YrS!p4An2Y~>R^Qn9j_0RAW^MN;M7CC4dO{8Qawx9) z6QWKjgZh3LI=A~@xPxkTkMxRI=(eAc>`fU-H}_2DDh{O)GEOs#e2fWqN_7l_SFH<$ zYnge-UD|nhknwSRcTRQ_8%e~r!+o>1(0nsLG;6=fq|_4$_E_izv1o8jYr?|KwCIm; z_=OT|v}`kA-%nH>Vx+VD;`np1Nt4KV12YYvNsV6 zniH)L5@Y^?{wWj*5(di5mq{S)siUKgf`9rkdr9~au^0O-P09fyCY<>oyc|>4mFq_t zs9pv4ThWJ_zX)&*X%{>YAjxUwHAS20L`t!HKAF}`zG#n@#o=}fYgZUf)ntlstmx}S z>e4cR^boyky}pi(qgk`GTXHgS$}db^;TAW6ZSpZFd;fOCPoAbR6w>Qbqby-;kv1?+ zp~D^VRC9z(QgBBTQIdW@P+WY$lBF6_roxo^mCCec_XWsWa5rRK)ybf=EN*oVp!apM z0wSUcnHFO*aSD{0m{@hX5ri52hU?~U%JLX|QKc=Nq-uAd`BmvEX;~LgNb2aOQhY+5 zGb8}OI;n}SK-8|#W#=tZ+s{hqQ(KKJl2i9fzZ2HbmXRdP?8B%Umv-i3m7VrAr>zSS1*n75IiAjsGrgbd=GwCH zhJ0e%pPuw{Ip_E~0K5?!|685btt^1+O8#`RC(>*Jd*+Rc4E^3Bz)MM$d5)A;9$hS< zt2f_Bw|vqbA92EDsBRc$OLcbSI$N zJbcC9s&2YKw)bu)EBsT3yuXYHsI2hYv76ol9oZaL z-WaoUP+84;KQ3+3QY&@*JUKpaCP92i_edH|3l?Q25&)`mNQZj@wm1faU#%F9lP;Zh zMhrNiS|jvJ&fp?2%!3>f7R6g$r&orMSTn?TiB)ArdM)>{CwS=rW;jXB~6 zR=GP1l&z^N??D)oUnq+`07f4(+A+QQ(IQ=#zZV9=m^MmFIp?;`eFOLQ``BYaSM?H$ z&sSYe!MQYZs?bb86{gqICPF>FXR|tMnhtjSM3|E!N>eP4t7`3F)VE_G28fd|HY8b^ zk)nUniY+)<8+BbR;AB)EF;)k1F*f1pZX5u;ER}2zLZLk|PNe-CpwsW?k>Y9_L6QR0 zKKMJ((_N|h!EB=7#1tE96G(sPGBwN8TI5^Btt7zg_d(ib&uy@`uik-5`{70?NPnzc zAgnUmceL}v?srP`LQ%+^H>VQiu82mI-iMUc5R4mMkTYvqY<_uLVgSrey7-#rudE}Af%ZzIuX)91v@R4=8sJG4Z@;*VClcgk2YkH*s!p> z^$;YTsMxcOcr9h^YlVwXHn*xtzjD-$X(U~FL!A2&ZnLJz0i_dp9$_u;;`&Klh_wz%MN;=}&L)PNXW%ZG^M%tJ9Vwb5^kT@vTOw%b$V7zleaBE` zxBEp{n$|U>Dl2)zGy758#?plX0q|NP|*O`k3&cE!zMfLt84Uz)JH@)Y|!WXgG|C} zxTa{8^(bpA)L>0Tv!CN_8!AiI=L9BQcg~eq%8)_w#79vj`N<-H=U(L+5w_@1QdZY< zWaHg7X%a988<;?Dj@gaGB0fDqA97JJ3@sB5-!@1zN!7;8rULQfQbK9BU8Jh@F+Vc& zbrfJ+q3rKp13lf^seGc6GO__*r7Ca6!Hb(wWax42(n9 z#Um{FL5)tXOG!18_>D?Z3AQX>qspgB-|Z(k@mu`2Ja2(SNXn@PD5J2l7-^#n?~J^E z+(Y|lmalM0+=)QMx)pj%T3JdU!N!`n!Xajnu}Dr~erQ5@*L&V;EA;KhwXUCL3xakv zJkXc?sPUmPrd{tmA^nVcuHx%v-HtmvAU)>INn2rDNVB)On`I$Dex&@&Xph2trxPNNZMMCg3>17dN$;bXD4irnHAT zAzNLHT{#pK6Dx~foc`w6cZ@HtG^$y|%Mq*3%RBYs8Xqkhtt4gD_Ldv+m`}f-FbVLR z{W3lx-=5@D-WNKlosS+4K4;2$#TW-Cy{E6RsyM#n-n-Asl9leu`iT$wcD5DNlA-VQ zE&_R|-4+8uOBkscj8r!(aMN-A;Qm9qvf3*6a&YMKDDI+_s8!iqAMfb>4WX=KX>ZOG z&Vy=)T~LMV?_qE(slOb{*#iUr)jLqKUr#8pl}`R6LEtd-2Q@!|w9nRo$iVTT7CH-D zZ2Ii@QIeXGh3y&;i1#ZpWh6R}M#Um7s2kmDMH?&9-bfDW^PD>lSJs(S%MhiCr+^$0 zC$ydary%p5)Ni88MN5j!{8|Q7S0c3Wo&2%)_jKaBifP7In%tJCLxW*o;&~(~rO5p_ z_TECfyNB7<$|+7rw6!f|F{;sWT1`+h;;z4N!)I{FMx^O41ZJFLp# zZ2fN-ua(IRMbNVXinV&Kw$N(3)U(B=QN^y;QyRUjkG<4C@EWD9`E}m3GXLD9d0(oZ zwvIqfIdFIXZB-AAj%9-wm5}@>?WQk*N6FF}NJA<~d97F=Rx*5&>tX3Hs||+A)yZfNKsse-d2smKbka+jAZ}JTW2mX)&s$3c0pVm?tCq`M4#FkFpzTJv z;F!NwW<3fE^rg9|Z}k^Yws&tsxyE~Nk#l^jd4H3*QB57-P zxmtX9>tUHw-Z4&dtI{^dLLzA_%cG#9-&ZUN@KT^yDL*xr2w!{q(75bo3;WAl(oAK~ zjs8|xozLZwSbh_(s@D!ba*Dq`%T4og1l__v59FaxBi5(S%}cGy#Ir)`7V{+GaBU+{iKxO8w$aF9l6iJ` zW6=s>>X&Fz%Oz^2eM$UP3hIp5CSw1H3)(FDtrcd`IL%o4^X83Gzsb5hTf2c6CO&u! zHZ3YGuC)T#fp4t*=9{QA5PhJpm7?b*(D3F?ORc1g@kpN@)Pq{owd!@xxLDZMO%_ne zWKxK=z!`m(>2G<@&%{QSEk0(y!=0D4 z9(j_GjDl{fpZ$Q$@8WAK;0GLJA<>WqHk5aNipRPY3)d@LhSEOe&uQRfRfXL!hRkth zRh>uN`+~cl@sQw|yPZqO>#*sbVuj4Q@;nM|V?nF6@02_QM7UkPU9TwuEazEPdq*6N zOf7{jXH(l#Nr>CvTIb(mJRMS|9#9%uFc!QD2}}-6?qM3#!hhn7N~)P#^$qoDzZwv!)IZXL^@GUxkThDabBb-8o8f5HMYP$d$mAskW~+7?k` zhuy=yVI22X$Vu3ESaMs?aCNJ$PPwU!%H$K@xXr>%)3p)T;`ty@-`1NSLyp;yBsZwL zaN9TZEv-5GGA-E(>`lx9IJRNupn-D(fP+r)3esl9dM4NIfcrIn5f85v6)-B1xrBLk ziBz2yZ4L2srBpJX)REFp`Kce+SG%LGgLPN@EvG^MwpWa8i5S-Vm5RK87P`PA^S>Nx zB&^U5{J&j0n1R8I^RAwz$VN=)pZ@7F2n96%bE zAa%_zE#qPAh&4nuUeVr$2gktJD=XV_>!p*3)465oBN{P0X??F{Gp@7@c9Ry#bM|3R zvA`FV?1oBTIVGQ_vOG~~i9T&wR?}*Ym0jmddpruR`Cu);Zuyj-=qq$xWa`wlq-Dw1 zWKaPUxdH5`O5i1TeGB>*lV0%eMb(zKaag#6ntXoD@uc~HN!G&HEE+zlj8=A&pF{2v z*)eFFg@hE?s({ILz$Wvs+>l{CANdu7;*W2nyRBwpq-|nU6?S=rJ{RKx_>0fZZ^D=@ zbO7C&miyHeEu8glGeCZ3v>Boq65(6(P$V`MLXE%vWE%+0>|GdZj37Y<`{28 zMD{=@ZC6=(<>tFM>gt{`ONOXJ^=CWA-8Ln4CiG-Fnavp4d~-Q&I4mb}(_@}GM*!HZ zT!69YeS0Of&~X@xre#`hv?cVO)0NY0E65}F5#=!@R*0SR)JY1XuSx&jIENDMl zajH=@2Loh?s5-)$bH8snk?XGPXa3>$D`q=|8ITzu>G2s)xhFkdg3MAVPC44_D+jdV zORQ~tzxi`4F@rEJEPtKyv;W#GY#+J#cgR0K`AyGAtkc4A!<@?-cf=?O08WO_sf1-oLJ7 z4;+=%mtQA|e?CQ_pV36qA7A^H=8G|*+F&%H4Jm7R;aJfzl7gAtq1)mun>%oNuzX8n zS#N)58P=h|o!na1EnhVK^*4dy^agxoaUT!GFGX3wUj3+yb4tU(5k&J9c<%jZ!?!r& z1a*O~CflAIE6Un&sYqVI##_LjWlb0;fN||R8)m}UZi91%N;TIHxa)86Tsb93nTs|; zs_aWf?ywVKKgE{S{X2{XtkhvAwKJ)iMQKT&s7l;wnGk{J9;m46?!41KQ9B=4p}I|A z#xM#j4Mk75@{XvEC@%J5Tn&oBI0K?ir44A#yPN|;K6Rq<@l0vow&%#84j`3WVhlef zGYwhC%MhZGiThRIlomlEzc{Dye3`vR|k3R}I89NK+X z#@Qnb=TkYC(IJa)t8`Rc{128aGWEtS->Zj#%(rp48)UR)-*$}7z6q{o`{&#c6#5Y7SSz_hc!P88AV~HR(fI2&e~~( zous24j5^=WppS|#lydbBMPeCg+^>dC>66SO20Ywdtc4lfX$xv9r3KrqrEH9LxN+Jr zPW;EKy#ToZr;;a|caW?|tlh?76jXWOID3BpS(?NUW=~ZIZk#lXhKu2UIY&9p!1p}gjTmLxrRNG5A7sGqwuo^L9Xg-7REV3oT`_*Wif)a@V;xZ%79 zx?iS>v#B~{`DgWJ5kI%i(Z%z~H=ai~;R=qBa2Yuzy*TZA1R%%s$LSsq<8xvrldUv(}_v;M8H!?{+ z%T%|%wajGO*G-kFX{~7l6x3!x_QX)ZO zO{GX4TUq0bv@LSO7OV{Tm0#z5$|-(!z2JE$F`Iz?<68#I*UA&He>C=x6{kq1652u# zvJfl;VBJ~20Ej9}KM2Cz8~}MMVPhPNXAm?jj6x&idGi|(X<;|QT6`q2_eCKL9ct(^8 z$V0KeK2J~@fgoZz;S-o55+oI#B>BlmuA*do7P6rO5(`F>|CsKtKl!I{f|2!4;$&ta zpPxiIHXz+b*ZoGiMJYOZ$cP+>Ow9Wk!h8>b$79I?keoZ$1>i9uV*x>UViG+6xZr*&0SV|!i)_mh`kchT`Ynp{;XegR ze=*W4%8-n&LuCR;yk8y5{U~ht-|=i}QQrO9|9ZQBmXiGM*Fyg7y+2>~s5bb}8A(zd z;;8=Zb)9vCSnm9rar&QY_@DOxY-T_-q(%ZZDYeL7jv>LyNTOjwi(Asm|HTIXEgJD3 zuk%9rPo!a}VS->e3DVQdUHy$yS|Xd5i}%l4|7EEDufGivBLv2UHim=;KSif&9A@|p zAx9T@d+wxb`u}*je|Lu*$v+=bK4-!?1|P|}!zlZWa~G{AOK0}y$?TuT_8;!kMuuDg zXba#WZ-46PF7jde$3yNmtHxjXFDAzEC+4*yUn1O97Rk-!{B0n&is5l&e|0~{TjKxXdYL~#4L!^I6Gf4HO|;+nnhAes_Ws>0{4Z1f z|MNBfKg8F}0$}YSz;FbaB0|tdo3~EjdG${!tY7wTLjtHH*OZt9z2M7tKqv15j)lEf z_<#WGIm!GK8~FiN$n-zi_zv(&A%Mgtavz`%IMV+o$^CyZr+j{B1FDqJ3SW(xzaZwKLu;GV} z{|-LiJK3rTwaWBjyr0I)f-I*$Y*74f80e6o$Am~+r*zJ+0`jG<8P>0_7FS_<$e50T}6^Zz)yrguu3H?v()qO8f^I~9Zn`J=N>$B7~ z%tr&}W?fDJa*jmt1Ii<}!r57jM^g@?N0{lqTFftb)rY7fib`l4d(|>SGJzMZAytmT zpA{>b;7Vri1X7o-#v(UoKAb2AKvQ%()9+}y<}ngY!P9r=(^qYb^8dzh-9epz^=Dt3(+lAPHeBUi$$^n;hU6 zvvM%177G!c=R+H+EpH$y*F*(UUBzY)Y*vJD;2$V+H7B|cfU=6mfTCoh+70>~{~upf z;>O4Ff3N`l&Bnu4USg)TNV6c{Me&m9TQ%AcQqjEABTRxW1ra3~6S7)BV*llA)sfSh zEVa-Iq;M=jPzg42-v8=-MKPNI@7jE_EG2mw4#4wIVUO-!YwJr-bE~Li)clAYYrBz&?P$NX#*iA93-XDX25WJ zoib&H7(FLGX>85phkiqjE@j~p1UVm+;lDASwr;#QcUY3HvCZ)J)H=0AD_Ou?n7|jW zp9hDQvinnaae%Fsx7cXYT2pR3AM$>n3gA(w7JG+p57r%y*~raHAPr7cMx~n)o3;d_ZNx zs=RQIrKKmiiUwlE%BfJ&`=@Kvv{~YU46i6x!<$zS;XEP@onuO)3~T_ zq$&{N+RK0BN`t(gfDZRm`p3ZzT`ZvjIQ&v;)?Zeh;6Gpgk7r<`eQ;f@AkdZjAbozc z?)yHR0X;j#X*rCOni|q<8m)C*q~PmQFN_AV5LI2m7slM0@`S&7@t_H`h!3j=#_2a3 z$ox64W<_?@xKp0eqGcaG8<&!Rc(0^!KTnT*vqlu6y4A5`s$hWUy<(s7>qGQX0*f!D zwdd1d$DNw5`w@r4DC@-gF0QKRXxX|gk0Vgl;CE{94tjiq6Ml8jF^JH6f(KU~uPsIm zZU}x`gX+vKpl8oIu5?piV@T-cJNJAVvT62hyzB9V_}8Wp4D*m5TEw?iIJK+yiK*9d zeBpKimW1xa=(w<=1f&7}z2p1Sm5S|%Uor~hq-CFCVuht86r$8e6H716HNA*<` zBPv~px0{3h;IEq*2A(x?kcU3$kP_ns?m}-A%>43X1ww*|iSPoACGUi;X@Y^v+JWl) zogXV9&CX!#P*@h&issZ@;xAh=u)A-ls6&*hyDxTVz~kR8E?4{;HqxC1Cg@^DCRzu% zQW=KQrT)f`*Pnqq8@(OYdS3*tqDjc`cV2m19o*2(e%$fLebk}3x5J`$f6-$CI~n2t zYroN=y22lq1JZm_Tf{{BH>{JF35-*EL=`9U-z#bNpZ^`}WMcr!LBn3P=QVicc>@{0 zKg{-5-hGD-+)=E&eC7jk%C7Ia|H_a4@&5#=5&)~D_pC1~1$VX(HH!WlHWH@`7GzUh zly_MiSX@}nwcbxa%W-z&Cc$KO{g=%nMFfb%4qSBtafI)7yRe6azP+MDD`Q+P2_Om8i-KYG&ewQKO z|0Rz%Mwx7FZL0!ZmAhD+^ua2zxaHG;e3>3TowPZx4`=Ay0Uypr&_@JRM+8)m|77z! zrBBLBdH(CeWc|9W%A%LHd4xWXr6R>xIhp-)PlWFJWWCA3&g5k2kZc@(3${c(e$QhB z30UlVN2vl%#<{xAiVMsvEfE&;zivlCJy^)WkEmEoIz5I_ZCKbK&1p8BBI)UG-}(n9 zN8RZ{PpdBPjp}z49gNx!lKc%PXofZtHH1ydX&<+COYq4f;7m)*Scjg&Xd!dYZ>fzh z0QcrU39YT2nVESd>f`RNfOT(jZ0tvD72loHUp8k65$xP>70nhdbm-_^>!ED+g~@^X zosksMz}=Dl0=O)A52#EpY=3Pq_Wjc}%WGP?y7CJxeuiRGxBtegNTZXm>)}O`aP;g7 zJ!%VFpR6zmoo{8EyAL!!waE>2NRLgcQkQe@EZx#?ceFrli)l*v*Ik(FyS9(dv8$)E zN28x-8?KTDI!;cQppp3KhQ>_*^{N;gx1o>j+>SvGI582%0wSJHr zuEuc#xT{;#haxMz1_HwCvX@>3nuNNUM5%DAa#pPxI>@vEc=fVhQ(Ooon=fk=->{m@IU?Hm(6_ z2+p3%_XCgq`efj>0M|%KaWU)F>tsU*kiX&RCCbrP2QqHCxw#Fu23&3@ZS}Z6T0zSe z!J93cQ3K2Pjl;>HV`tP&{l_P2gJZ`x{Os|6dEZ%1{nq^ROZ&THT9c1Iy|74tx z_n-tjIm4+#5gBlGn*A?APt7i#A*O4N&rc5R-i?y{4aZ}FwmO(a6-mk!l zmDoM+qwVRH%r_&%B!T5Mgt@Kxe#htN|55ke;Z*m3{P;mA zl1iwo7Lt{$%%dR{k%a6bdnJ2Qx0KnivJ2T{Z>M1t*?Szy$=)2>;ro2k{kcEi>;C*M zb^U(-{QkK|*L}aw`~4cv`FK2@6L<2>)b=t6aizd%b6Lo+6(JhQXwx?7c?1TM=v{uk zP_z4kQ3mFBg_dt}PXB&Ht9A2O9V*J;kvvU&duyxBNA@Jm;D17Etq(C`h8Ev+&Z5@> z(-mSQqdHIgNvM7M*4-bUyk4+fp9EjA_wf1Hm!VS+I}UnGJ-qSmQyqk)^tbzf&~qo( zND)8Xk9JxZYhw&P_XlQ>l7dSu`_xcf1btguTNX&D|Bnyg)4PHkrw^Vaafsde<1ZL( zPT(`Fk4#EQ@qycr4Hd;#@E}0B4ErP)o56j(bk4=`(AiVCJlZ+Jnq)-AI9A_ z7d(TgBf;B*P-_B)x#T;|?Ti}Y#^4;A1bK*@dA<+ZO4;jnJTU$3Re9gN`-?1H__<8S zugnlz)T%`E4PEHg`ruK&pJ=UqlAvNk`!%GuSLn%{(QuDJQqFA9)=8;r(vNZ9d-&|JTWYFzezH=gpF&}2ol-@4RJXoa+k!;&ca1~T>F1y7 z`3>v+z!uo*a`zVVlRnvd=df3G+Ng^bpP4dd5PGP%j~zV z{od{rCwzbk+5vFKyb{jgROic97bh89!AzdxCkbW#Q1g(qIjs)@6hBf*y8HZYiE0?% z+L<4p_0sd&&sYpiX=!ISo+5568V^5{dyW{{4SY>*vh{B+Wn(lkr73-tsgh3Z#rLC< z#*6)MoTXuPo%`DJtWUo;YI++6cSVTOAw`=4lPTdeIil3UZl4z%$|dj&WiwU$jw0P} zYXi&9nU694-WTuA4gIjbGLM7G+cN>02NWd%j3Vb&7sflZ3#_p`C!ViX0<1s#ri-$& zavJE66pho*z4WSw4U{GeHp%C?D>dva1%JNyn-!f{+^*(t4X?DLgS=wMshJs(DPPst z-l*cgJ_K`U)R3E++h77}GJxDpbBtEQ;LL z&i;M|vNJ-hve=!i3pMq9>ih3zXhtWH84h6(f$e1y6}aMmwCz5In7D3FDNsE5tcSiK zVU-`VL~+q2(Ofz0><`>1>>F%-UAOGExyrP&*ZSRqCLNoR!NVpO_MEA>=?VjKur=hZ z_j)4E1;JFku2`PM#evaKQU)8bPTUyPO@%GJwY_`^-Cef7d5zwmBj(T(f&tKn&)$^+ zr*5Fn^CQxN>nwDh!^G?@(qOb1pTo>|`QYcFTr-qX_9ntM^Vj!m9fM#K!;aq!KR?v$ zMjF2cb>XxpWdi)*rlx;mjcoBJHTV{G0J_Y+$1gpp7-@&J5bJ0$Ry-c1*vyIca_${@O$H7B;9Vkc9;rd813C0ETz9g$=(x4$Y!`SbJwtY-I4wRMTUG7Xme9R9{WLs!RaRDI z=lYzdGR+rR2ivyjPhC+Q&qF0o@v4oG!e@va?fvi1c*yzuQ9}zok8hE0$WVU3nGknR zqBaRVhZyEZjVqRC1a~YVYRMnt{n5rlp7@E?vlM?EOw6m@QlZ7~f-|_b_S}B3JYlMq zKCCE7rnD$F!{+YhnDzqy>Z0FRO7shZ<-Gky*N)ZgFHf>CCiwl3)$4o9n(+AwKHcX{ zo55oq&pSJxN)yX3z4UKM<3%Y1TnwPytLdJ5AoK7F0%HDgU7 zNj=pfJ0hZUqgCJJ)u+a3F3npM7pc>eeGa((6d5c^A!l=i1o5yM+$D!aD# z(;r;Jb;G>W@omGZmB^kv>a#njVO>1la{BO17LWY>ca%Mg7WgkTsJ}m7;`cgMRk>wl z$B0Kt5&1e@*HU|lUmw?hz+=iu@2Y>qfvt~=Fg_=(r5S5y9O&REe{aa}$1qP{m`IwN z<8CK{r?O&8i(I3K8JqHs1t4^wpVY5F3ksh$7 z=l0)N$dRN@k0EqjjBO_7A2;-jRz)-5J;tK5A109-dQd&qHTS?5%a8qJ?=~ zuR;Wo3Z5gesm(v85{U?>s0T<~*UF*4L?&r+f#RBDIuH={Uj7TBoCMJYunf8uJ4 z>YVpXt(m$52|y@Ex6}mj+v)C%3t;yr^gA+&eWGIjX6&Cc@5P+ZVK&#$(EW zXJPl zC>24f?P_?zZesbPM2|}V$!}Bv{Yl|{5x@e@I%Z8X*$J6ss0XxE4)e?}H9+({3cF}J z8U&gR!giqjVCD?cG=Frdyb`IjPVBIznQDF3Aw~hWjBchQuT?awOr;8L)yveD) zq3=qM@M0t-u2Aco6w6GxC%r2dBm8}7sJlzFJ~eJG4a*Gl#`K0@=U>D` z(h9n&Yz$w%PMg_SV>v}|j~7 zYm5HCm#>b!@YqM$yk!lFjC$X~_+}S-EDft;;8M;a^LuTkykSx-f`8ARgqbZTB$q!@ zhb*e8iTtw7YkQd31*G-F%A#X_;rmQ&naU^Qiw*}OJ}aT40mhjefh9qRX6G_e6Mh!yc+jbr}qf? zRGyxTaX&U@qGoOsc3Yg} ztqxQC%(-y-#V`u*8i=M>?RU~yOjC_=x`UtYNyPV7YcA(3*S@0BExA!G$l%d8``*&< ziOeL%8)b8?j$$Xva;z~5`CRV&kHAkjq#!SG+r%odS5d9d0dB(=vJtepc`rVu-01KKPo%2>~ z80w@@U)5-8Q5nb0Z$+d~qIb$;w!jYmKo0N7AZaWM%vnKX!f-ESn4ck7!Vqo^I@7eQ zD`rK5Az3hxr~;WP4p&F(O+YDhik7j{ZlPWwEw;noUMq>ZLvg?dWH!V%#xWb5`$R`# zC(3ejyn^AuEehA-J3dpR86jb)%{b?TAL#_H4Ni|`?G7XGZ0fXEz%4wTc3UdBv6z6P z7N7aRHaJKs8_MGkic4sys;O!-_E=(EU53T_jc>LyGX(FJ>UZkLSq&){+;1ycDb1{^ z(o^4@v70H#@Jrkzmc|k9=^EqaoyRV_0IBy3B9?^ocvLV! zgWaHigF{Bm2-PltB|gam0^Ji%P?mXyXp(Wudx$_%d>-bjUtf}hg2I5rw4;J?i3_X# z*L@IeB&Da<`S1c^@UWxs55&2r@4+0KKt%)pIZ; zp?53LU0J-b+(hv9D;5At3aE#>F0CAc9ze0@d|Kc z+FW2IZXC=J)v;N>khNx)UNC#Z-Rb<4^Lo)8y}Ov@#TRQ=V#fLss*C43mMR8VZL>ZP zF;sv%;S3JVT%Y}si1Yf|qPzUubGC~blbM@pg<7p!ZL~<~LF>4%f{pd96TZXVx1_^R zwKkTC?VZE*Oa(ep(p6U5xmx-i5#iccZKa&;#IRMNwH;X7wXLt3sp`Z~o8?^F%hZY% zBTN>}jGYb+eyo5Z|rpKxq&+=X3_L>u0h_3d&&*pmA3vx!R?sykW92A2Xi{c z%_&;7KkPu!%Eu%^nTef%#VV)82RTksjqs|#yw*g)yCZ59s7tz&Ye!(+3)cnaTj;>RkfI)tn0NvjS9Z;=}tK&Vd0Pgk7PqZ z`9k`6m_!)CSPT<7^>eN#GI4a4Hb|}sh_KOespp=)wSNV)k^%(y^ki!RvCfEwsiE1= zj@JfW>na00GCMRIB5Be1#!It(OXUUY&zo0aIwdnln3m?P2gT*P&ctaDDaW zdc$U}gUf2Z!s?|BWLj?*S2H(r=eGcSHITY9&H3(QHBnBT@9%XfToqsJ)T`6XGH!xl zdJz)S2+{toA%*EC%(yna86xyguuD(bES${)wBG@PMQtS|npf-!0UsZe3!k{2A^(eUtI0lWS`j=VXg5XS<3+Q`ed@% zyHNq0jTHyAl>25ONse0ba6PY!X_|wa)25uO(Q5o-^wBbBVs-3>D{f8)%Y-f-j3%q56>gT`DW0vr`evv~)^=KZwsWDMhqi-9ld*qug~@7O zD=?_0M)k_xBZvA|YBuV~Frn>%1@oC0iCd@3W}#(xrha{Zec1d$KDx31kTnA=D5JB?Ky)`31Fi~qzZIK;Ue$1;(xbyDgFi~5R$5>!Oy9;U9J^p0Z zopc!`sysO}tx4nVZgESc_J`?SKLvLqZ--4fhDtVEdjJH-ecQvzm8f`DW=&_p${Us=!N|&Y=@QHi3p41QWV1lGE%MUuoHp`#B2J`3uXd zG3Q4Q#B`?5@UtaTGpSf^R=7WEcAn0ao+u&=@wxaDC75C~S(@dURbA%iv-Dgef_TwM z)bcuTRSl#$N)`l5+cq{12TTM1NIDawXo5@GFU0h_i0@We-vqzebQeLpWs zdZAI~#3(!UNPv9bsA(w(wCmCjHE2)+B>73~$+|gl)AqCp_7fH$$baV+%U<)+_*m=J zBi>cA;MVa}DVA>Y5wo*_?&6fJXc#WhW!8p>0pV)z_l&MUa8b})jwfPsZ45harJKx^ zZU*9B;Hc}k5z$YV?<6cn+2hD$i}=@hV!9CUJ84gTIzRiC0rw_x6C2z8m>lmrDa=6M zV{tBj!}amug2iyEMd7}r+o+)XG!=-5tx!^KtxsB3Io#N(FGG^n(FeCQ6BU|~Ripy%NtX|Uqt5u_nozE-u z(v*U~0KErK-*OnGJDt1Z!;7vroi#PBSASFvG_M7CyNV5U@c6_n_Ma@zot{dV%bi;z zkMU9BEfL{dYd;Y4lrTo}ZLqeKloDs!k2%ilY^STzq2oH;nUr$oufUdxwwU!*>bQ)J zVR^fLiwUW zMzZgGtbnsM#Wfw^@g`i-aU2YGXmIX(Wv;5KY6uqom12kj-D|hW^8EZ6&PijsiOGD^ zFrC+c=SI@|2(EK=mn9%bT-}2bbDt~SuK#qrW01vknSQp1pq2cb)4 z$cU(}22rj%H^Ub43ZVhx_JX*|SZHJ}VSSjUrWWz{Re^5!xCxDmgM-u(_?wIl-#rob zR4Bb6%hBeBv+oT@i_)YW1bza0AI<>WN``5bL+ON+|$>5@j<|ER_ z$j1GiDohq#BABijpugNc0}uf>$*CM?!Q@L6yQXcwk@6Y3nY%c6*Wo^8maWk+SEBGA z+yrN{YCF)>Mp|J@%jD3^ZcP4)MW0t2E5yUS^mho zCDe_rIZ4S~GEiWH^gvkC@ZqN~RZPcp!#<2T!FnL4#G0#A7ny17u3C5;UD{6H+aTpdQx!+{{*mnrIZnn+8~xph#BG)%6k?O>}jwCKMcTI-yA+ zhs+XcW@>j!*42$A>K4VF@Fo1a6JKYx@W)e=4c6MjY%jz&*Z5{H_zQKPj^HkFsRl9@ z4N^;WR4mC*J%`dtGYThKnH^@U>>o3H>{ht3Fu>W8J!5X=?xeuatFz&MNw4!e(O{)w zG729R>LPK4N+<4Po-YGOMdYV%aUF~Y?bm0pb{u4}_I+~_R%));qrBAOD=sbzpJEIu z(dRclbn2DV9c6i0m+#V#Yp7J2K0?zGV|(A&-Fa86j&toULK4GQ; zX4~M|p`Dw`QOA(#xpiPUII0i>RY?$b9010j`PBR6)!tR4U%3+u<1nz>p4 zi(q-S_5qwSfmhb6kNcW$ZE(lW=}kc}-wEPbwZ3nQ)Y2j%xJ6x2S6Oz!R)NnlgJJUi zzCGq8aC!YX*X*FW7DzDFg&S{(3-FHSA*~Q*=09U0I-EpiejA_zwwc6 zSxgROG_UQU#~!vvFJ|uBBNf_VxK>wH*?58K^Us9qZJFzYu4jCNsG_XT1`HL-iA*7r zqTeGnd9{R~>+(c4RQyCaV^{V{Lss<~4=?w>siE9L`ZDf&XK)BE0Wb>(z%E67b>A)8!W$1)8 zT+pE0frAof!(!rxd5CHknzM{Q)xd;Tjvo0};*tb>OM+{TL7fkXiip*s5}vUmkx6xu zV%&+r4Wt2!^m`>;DKMqwQ2jA`^wn{G2!S){)dX=QxF%5AHDBMZtC0Z4zgg-*PYngM zn;8KN9@{gQ9*J~{ACXcXwFyGzM*wRy{8kq-6osI9F*(*P0WeWW`4z^5-E@;vM>u*o zsH>Q2MiK-*lQEdxJY&g$l7LSARnO6okdRL`h{QhQ!!O6Fx_WVS~1y zw4oI4!hgo~rsMi-HG^hmnXu>yl-9;xB!Mrt9n8d4s`h{J!7Q~YRQHLQD~iS+BpS&Z zH?-Th)b*`C!FSVeumGa){?(?;ob(=EQNDI9Q=@$Cy;3ZtOY*Y|mllm()Pu+a+*iu< z1|-G>39+3oh(;nd@DC#GwSM$i-8j>8@q$(Rc)|jIgr)n)>lX$Nk^?xFr+SivH+1z+ z&kvMzROu}cnGnH@mx-N`l%jW#Y-@ecsR|~j=yIlA}K}%6%b)>p;o`L$N0fukoYzgEO6HJ1}dIW1zhXj zUkuHh>-wN7yB6`6dk0|Ep!r09y*fAd<%W@vu&fO(#@dJnCE>C>GZ7)pttA$WfefGO zQ*EW5(o^-VeoQxmL}Bl&%l@tGc-j_YXXZ z*^qQyNMZ zr(C_g6hJ-w-ce=!OqlY*QBz}*-tMR(4Hl8GJn zWaj_%0HV4oYPXrkW=lx64EJB}@g*g@Gj-XKA^3583}M2MVZySsNgcHcn{3Po3Yz{3 zYHubF-H|_%Ha7^0!2YQj#b-E+LB?=k<}-Ced!Xd%NFi)O&O*@S^&^?N=(^KUA^3^@ z)%Jqy1zaFnGNW+7$BY2sU?8H3-Q~o*vE4JmKPeq#^@VA##ixIi-GI8ICx;~oQs4m@ zx5E&zSfrXGqd2P(&M{eae2m#uH1?)uIOQ(keb?v%&DS?zbF11lEU|^>A*qjSW@*pO zDMI1lhgfLXHQ5e&-2hm@<`?w9bCQ zr#ikX1F4cv3?K8+XPVW1hQd!l879?)LMmpd?Nft2SLRd+^9t4hx=o$dYjp!_)wJaY zLh2p+>C2fY>3DoTqsuiI*G8#@onQ0DEWL6V8Feo>?2(aD;IeLL2uNCvfnJ-H{ush> zH@oV`Swqh+Sas<4pJr-oBW~Puxc89Jsoh=jezc3xL}{Dz^@iq#Ux3 z9PZ_-qxJW--8N(b%Fb%XY~-VCM0{*_b_hya4q?yny0B7+`V2};O-yuwsIC~XcHU4PV3o?Tf@y>Ls^x)^2U2TJ0`zxmBa!GC*SmWNH0ji_+Pu zuK9SijFz1EL1-HIBD!H+t5D224D(Jb^R>nE?Wg;?P6bOpHZx@3{ACMvJJ!n5l_a8U z6hApfKo5*qsgDea6Y(?@NU=NBJYtc4^X?()Uh@L%093T~toYZu9_vaK-U-`4NkZkZ zvW~8Q8nd~9%s&sG*z9U>qa$a0AeCGSm5R*`0(iC~33}lguSKj45OCJl4F3A_ClMto zwm~p(cj9B-8I_8I+sZXIMFB&W_wD@SP6{41S6bKxTl9nn^oja5}Cr5eH|cqL~Bt#ekl zYC2Xi=AvXi)b>9b+*phkhmp#(UB6vR+Hy*NFGDC{F2k&9Ld?zKRzAkTWtNb>dgLwI z<(pTQ%_#H_Py9~i&_e2?7Jq1O{rD|Ojmdb3EEQ@7;?W!I~d0q0L3!h_A`NS6cV zpgG0Aw{}vfren{8BA5gcK=3j}cn5E1mzG}uiP|Yc8tZ$oujkZVDf+NEp;!$Hsm&o_ z%(JqkzLK_lCXt8tOQ8Wr6|k~CjAj81fBobM{+JcHUg!cPOy)KxD#T2bh8WCoGrJ%& zo^!tTQn5kQY-z73Up2X!`wcEdcZ?h~1*~z;W?vB^EY!Hz>qg z3M5zx1@j`J4v`OQI21QL;|no)rnG^^flE-=&BPEqmp}U38?^P@jXGe}G)rCyt;vY= zsmPT)t1*3yA4Xg)%yx}_n2|OjK&!-Nf*rH*Ic&K*B5O+h60T#IrRP+TGt^TnM9}5j zV&!>YM|#YUqLX6Oimm#KhO-QD%f4>WQSLuFBpF!x?#(xsiE*M_2P%cDv;sFch1A?_ zdTpkf5>^kX+DXhsu6AV)S086_b&s@}k@2nUT2ma>VWE~>xHyE5pe&~|4Lsa@*S))N zczU5>{qZOMn42s@=v+yg=#c8@sKYWYOWkG?TEbeG*@u0$7+)m(P+2c>wF{u3HgQc8 zmc-01rcQHx@qzAEmqV!ej`qX@KoUp|BmI-{Totd|tS{orW`Jy^3lk;%4zbD0hMzr0 z$X=fdnJaC|1o5y=Q0cy&_$>yFenQ1SH`;An1ewVIOaav~-b_hD$^&O4+{>ID@<0aC>o|Scw?U7sSz%*@^?I7Q-cJy%kG=g zo5A_MoJi4PbohXezJGs2L|0L9v1oId^TL?2XlW6yx&Bb;#uu5sD6c}BPwpzWzLd-= zh{tOg4~;U}b-tPX(X}W|uNCAKRcmiizA`imLYIZt!kj*M5OoPh140o3dG9pU6R5HW zO#{nA3BraKdTx&j(BR8idWD3Jh>2Epcsr3(k7%%%xN&X}#u#Q>`Zoo&V-$CP78b6Z zAH)=kx!Kf8bmdGJtl3$$Za7!W2$EIxED(K1OX6)@G9{l!gd{AmbbKSz5VpT?^{Sm`bb#|=8773oV7%z_L20-N8LN%YEI zd>)T+l)_IcMJb!d;L2H)`XY}oWR$2xI=2!jVoOy0n92TDc1f=*a65|J|A?F|qMuRvNP z&30C-!B8FZYBbGCTPHwzZI5KGS-_2&8|Zvk%Z)VLp|1_GGfm9$Wkj@)DuBBmaf;dR ztsT|W70@luqcKISdHsb}xbRj^Z0f9B2Q0<|gsD-d^$uHm=75KMu$*U??D*&Gj`hXz z!FCZs>y_|p%iqiFO&(5YaXpQ=_`$hs8Z(fs z(?`n?c!X9Mf}&=@jp>HKiXwCocRS;`B*|mq;>?7O3a-wQ(ZW2O|B>m6+*MU|$cyf* zV=`H8Q5>M>ZB!!~(Evb?%i37~q0|>;p$+n`WBS6?(=0A2A2-%A#08)1J+prM8ihiP z2FqTB3;0~Wqvcl?ore0Aber6(q$v_~TvvZ&sg+5uyp;ULyoM33AlY<~5B5)hzxUkwgG+3 zdifHNv%)<+8E~hMHJeaNDYf~X9Q{;DK|)YW=*Hm{h=FCo)3Op+^%EpPF*ejL5vN3! zI{T6>Rud+>#Q}yGgiuSk@ZykDO?2AGugt;Wt?tay%Xy2B&Q`9Rza_+FDZ8B!8~)_x zRh!5pZj|0LZGP}-kG~Wn07}8KxAH3*=4Krw7AIfqTs$eiLb!rCVCjI-kpU(Vvz^V zM_I#I)+-d;!rI+)RB3n`YNXW55Yv5M42vUSS(bV=7XY#vsNy>vNTLIpQJ6|J04L%f zn6I3BD;X9^To|+3xG$@Pjv;v3+eQe-xr1$&ShO_)wvYY=QU`!e0*^7#B(?OG)k zyjy(=_1=O*9`gLhH-|oD>Q}F?{4l(J{JVhloOgadm%P{nt_foqL$)Nx5Jl@Dzf}G` z5fj+IG59P@3?pQ2z^~&DD5snS=+sv|qwhZ)h+cX)s^+$y&RZpf>ws#7yY_3LljY8n zmbhobI`x1Qo*Gf>FFkn-m88Rfqgk*@P>)uwWDmgK_W=@dPTD`1kWuyo$L&I~x1A zITWSsY^u@-*s-fM+b#tiN0}hF1;^z>Ik8A)->43S~XmKI)&e^o>RvhGew?<3?I%qHE zE>!Lzr55@5yl{0awdbLe-M2a7#?e^NwH4b~!)%JJu`cBzv|KLB1<06qg+LPbD!*_) zNW9O^$8473Qx_5J7y=X(f@ZPJ^_*I2=wmNe370qB?T5IWj%8!Un;|H{|8Hy}*&s5b zRd;=P_P@_TW#o_VA0N**N?f-EE}r5YV_yh`ZbB%et&J+~%qJn+`&8POPCrvuZN+&t z?)64&BJLd?na^P5QlQJv zlUCzUK7ul#!pBj(^**E^I~#_de23>wtXJ>mL}Aq$aODWGzTSQm967U9mZ(fE zx^}$f=Sz;T-u47;q7j?)f%ssMldE~iD`7Lzcon0Gfi`Ha(*&r39U9%JOn?Xt5$C;{ zb4OU)0z+8rbl)V%RvNR7!3fmi+^ED~X-DQ(+M)V?ryUWLQi$?!Q>tp_7RLHr{*8X! zVh~gt09R}_yDTt22UEFUd&O&rCwVcA2F`)qjUZgUWbF-&MtQ)$SPI>U5K1pn3J*%~ zSO7_58f5I-E7v;Ocn|B<{VmPSUHuOZdRQdu2NifjTh}?Mm~F>(aNAl3X*bAayH5ES z-};)1WHnv80?kDV9ON`e8b_B!tcNNJ2p;=k7j>O(JT z(1cM1!+vIybWd+;7G{7vx=uj*E*(nNsp;wdNTQ7-fpmuVEL>hd9w&wrdk#Y;hto=! z93pN60Y?>xxh1V&m`epRs!lY&C>RlicJ32Mwbls5Q@sPDn9=pQ0I)?4P?C(mb|`v5 zuYh$@5~OR?(L2{Z&m2dZ9<0#`5}7aDiX_z%G+Ut-oqcQ(=z%Bd270lf+uy114N}na zlDqzug8ra(|8lVg$u~7!W-IxC8AUePTVUDWiPR&&u=~RPmwYTAG>4%&G-^hxp_q03 z_}6b3cp;x*8#);%er}%xzOkw#!VG-d1|+mctcUCU5gRxQ1GWWxT;Dr*3gqAuB^Q#H z0RcrXC@5GtAcRSLo!ycnpv_Y}@^-mKwY<5o@KS+JWDXaCPirDEeVbw!xUZ}r!j{*w zwc%ZTa@}gz6_SO#skYVVkeyJ7w^fjGaE)Yes%<=gSa0&BB5l+Fm-SvOCj_Y{p8uDt z&<3!df1z1dwgbLNW-F4$zoIgJfhsj3J9bJU@d%s-UYYO>;Qv# zuHtQFW$vYQT9LaSACb-?5SX?07Npn@HX{%KJn3Ip!x>8eXe+eR<#YdKxmvJ6)zmlr zxzeYkvLRJ7Zf#8k_WImn^F_U4?!=UI9hLYM-?x^T(R}aRH^vgL?2KLOIDljY<4==~ z^?t#vYkvxYO~X3;?6gqcrsd_$PMDo|P|ajt!4AD@wm}xchzt(&$c=CHHIZ8KOdQ}h z9e?X?n|Zjqz+R@mk5K&L!#7f2gmuK1`|ivYyjr_|bZ^|w?YCe$l@ViDv z&J^kh?@!Vw=0f&A+GdNo0~HPiffAV=DOi(ROqvpjSjvKuUqI$$=&+R4mRyk8W+O2* zkrxk0(D7&9BKX-Kl{D z1J9|w>lP0i1|}LvoR<7-S8ZQ;FNW>BTP1sdX3%XxJ@RRi=hq5Bi^Fbu&Z6z5RdK0-L`&{l9q`d#NKKDRLp!cIzhV?f8u6~qO3zzZv2^ErZ z=Bao23-_I8hI)8XayAvhu@gJ$A)MbClc~G6lj?}K*->mX9v0Rews)hE{w?*0_)=7TMh`LxoHUZ5L+{J; z<5m?1WGax}J47-@rDCc*gZvi~eG-n@04*u5I3@9{O@{gz_uy-9hNW#~^*+8#Nce7@ zlJGiazC*?2@=otlT#V3_w6IxX9q8?TG9_tj$-I%Ke>4`Mg=za2t5>qo*gNFTxM{YNrIB_*ZVwY&~eQ@CZLl%bVyV0y;sGJ2?Xk=mM~%STB>0st z@UOKuOhs%n8)Lz;CuO)VOtzgQTiEw;I3zY`XC8Md7eXXEgMLbB6aMSCg4mdS_ss{m z>q!5UxiQ$xv|~p?-}a|{fY)X%Eq=RT=i>H@FXeg>Ce7+yx}kDm%VuhOy|X>DQ_%9u zH>;@Kh3cK6swzFg4Fbxta(OhR4Y;lU@7S_5?DB}nKn0}DaR5K!v?5KkG4x!SAFhtS z_Uf%=e>u|hlu!8o35WUlIRmA4a?glJ$SNR4Q5iZ|KUzhMz>5Jfh@?w2KwO*pe@$VQ z0%xI&)C>laFL&N@tY5zNHI`Juk$V11+oWF{Ax?40GPEK(TM!y6ANt) zfLZsG6yKVh5Z&n-{JOMv)I33ywJJ?5M|Y(04WCJCQgE5yeDUiKi1srgPVqPQn=m@a zN_hiBnMSn~NzWYLCV#*6*Lu8DIP;!d{{q8MvSOa z0ZB<;q4*;i!{r+{ZX}}ffVi^e^| z5{E!r;P|d6%;MKe{vb*U7xZw+Mkk_{LETm}c8pieh=ORO*XA0n8tvBRJ1KX!@649l zeu<>qzx6V{UTide(hm?4WM9s>GIWgV5-01(MF?>t(qA0wr7$38Fhd6vT110UHuMad zDLtiI#C)tvD#!1tO$_e=_<>HusydzBjXZ?GvL!K;nktrgYpR!n7zDl`bHk=3X zva6Yg9!)~pD@60aI5D{GBBJ8}K~$Jm|1cYjuo(q{6f)Rm*N1FKK5j-g11d6+ZE5#xK{9}uxRGkj zE1l=eHnG0RBH=gnE^YWd1^6F?Q#tgNI=;Brgsk0d1GTbUa6TZ~6TQ`0oYrp#nNc6lKaxp`2Sk#9Khb^!u7nySY@Qw6mo^iKaJWz$4?>_PcsX#s~bSkvS%H zY?>I}g6^P4y|aQcMrd22!rbIC`Oab1e|{sK0*;@Mcf?&Ow3HBv;D;v@>IOP>|Tx&0kl$-K#&zv*sw z@BfktDn)Pfcg4^d&SBEUc9T0_^WTq$y-@b@#tFKmf&T@XO zg{L_31a)bYXkeLAl*+c&iuMmO+nsUw|2a2}myx9aMS*zJ(<46HH&b;&X-w|-?guQ` z92;W44uC4=g4}}Iw)1jIINEmYKRdSLKS+@ffmjF-NgrF>i%Z>(rL^*Nl7)YNKVBjG zAqe}?%Gsu$ux;qa9y&T!8-^T`6QSM|Kl8l2w>&yXQ>0sBf2k(`SNst~_!(1fb-_ZhyHT zb6b5$>$QsAAE+;vk%CQ|1cjKg>W?P#_-!eMmL~Dtzr7nHmyx9`hnKLsSdbC9b+omL zLhM+#+S@amT_w~G94RH6xaz*f>QxWj3x0|>vxHk??^?!Q(NnGHlr`(jy2sVYkQEvh zc39T0>evZge~IHsPq|fE(ND|wGn`moiJld1cwLmUG*xC_I}z33SoXl)&@izyQFG~= zy*msh+kMPq=fB+4B$|8Kl+TXR>eY+AlrBPUQ%*gyFE1zS+;9Ew|M`X1YjFB@DWHnw z#g65qr=hlzRqC_L26E5Gf=ZLqS!-=VUed70)q&dcW#N3*=v9f1L?B`Kyso^z` zspn!$oL)P>!{5(9ojGg9JhJgquqTm0^m&YGAH>Nj- z?(vP~@7)zUex<>WlLI88n{!EuU*^lf(4Ief-W)4vIBu>`&7omFcv1IRYZsVspYt&9 zGM8Ki>24{Rh-zp8qO%5_4E2Bf(S!FJ#i2w#?yhItEmdG8GoZJ!{}?JtJa&)NupZ_< z$DchaDc*zB-8Y&>fE*P5dP~Ao>X29aX(vTbs8E?_dVb`@e=YRRyK<9+=;5OS*&_Qr zGCs;zbEUAu@;OS;cx3dIR|UaXpFdc_q|krfY@wUxwWahfcr(B4H+vD~^Xzvn;6E?_ zoFCq-iHr}vQ>5pDS|l`#J>;1iAy6pTJS+5P=hpw&-H-imhj-O^qHIo1*Mx`7IhBmT4J1hD_}TGc(( zlzCTn#m3c{liM^Yn0a-tsHy$Q`Stv?`#FuDP#$b0&$ogNwMD}K*)D%9|s?@>%aN4yJVDz zTubCL3#`2da0|4*u4RY4`~9guGx)bJeRzbCZrBq}LNsDBp)Z$XK)fsVq{-HrrFI2W z`~BIQCA~r3tOwq#$lM}B6--S1gCiUJV%LAR(;~hsRNwprSf3MF zB*i1_`D|jlN&aljMo`2*cg6V|!9f%IAg}dP`PZ7!uNd9M{?SK@ru<{cm~0hzzc?L$ zW0t#h%xLcy7z+N;(pv*nW-_Km!a={)LWXz=5Y-fI8p%w>3Ns3%HMC+Met4jvykjL`9E(q|6VnFuQ}Z@6jM_dkrtjtBf|caFhJy#g2!D0+M80t5v!_&4xjDpgJvt)nhE!qBYOL3DQxhyZjXI9+Xa!b#m9@GDs z{ju4P`0*!5yux(9nrF=9mmBwWI`zKqj~>OO_KzhCC@rABi-q`tp=;{`P`t0r`7^^v zdI)jiHppIncpQ5&{oF6NbaE1#M)_w8_TnFN!FYs<8*V3!#--^GT;hNB7=5@#p(y<3 zy!x)#+D_xctQfGZaps?&abwm_%l={J;EbFH#8QB4@}Zc_)UE5Sh1aobwKcpy^hfKy z`}Vbe7XHknkzBqI;zA6!om-uDwdVdmiU^X@!G(O;a&C5;dKR>QA5~Qca=nLt_GUk& z{&_RTi6E|vJ%~}X+p;|EixSTi{wx}Pu7jM_e8ecOU{%$!&p`ysPHjZos6Qd#_vp_q z4Ca@FU+390uyl5W=_p4tFjlSm%i#vD*ZD{iSqnQ zD(>el8cHoMdSt693gxoxki9V#i=990;RZS^SZL2+*<)M=HVJ@=oZWX0pecob&FxGt z9!s$RVF6oU_BgC-=f!9OZ@qqzr7jg(Hx|C!`ALgroI(VEzqQ$Lk*o%LB_GYIW|8g?WMyuH7+Fl&#zfb#3ZcotSDye317w21qeI+NpOQ5q;2#h3t=Xi>J z2tLe})g&UGxO27R^dyv$ZIE_*X(32vJz;>!66>Ot3X5cu z|L~DiMA+A6&}NyMZ$K-^X`>s_z?$tnD9iQYaNlm;Lql%gJ;?{8mG3S-qU3q1GasL| z>-PDJJvM-dnF0#ngD6Dum-epl|8n0cJkP5m@3yIm>XE_zijsI=@IQ(8Ruwy`VOE4w zDVOLm1){_nW&Gx43+)zw@UUDMR$n6msy3}@|MITbp5f}me?2+YmDsX;{iKo4NsXg;4Iyln#dq1#Hr5`QRY zPBsiq{$)}7P6qpF9&Xic@*?Qz_0|Cz?b*H3|6wA}aL+7s=#+rmb8TH1U);}l@_mdW z?eJYMr-x_#VTafhHKn{rL)1-@#d*%uw)%PaTt;x?&-j2yC7^Tl1mE-j>5RSTzi7z6 z*Jh|-oC^t!z`>hGD8o7IaoF-F2IMx{#EoOI9i)d%0h<3BYyfsbe?akLCxTfW|KWDnD&g|db!E@iS=LL~>%dR2`d09ScKK&{9r>9N(MoP(IRn?7Ib%=^vueguA z@$Lo9=Uza)jBh4~&jPdocUz>p8%!GE{G!tfX*w%_ai^Ebi3c3!`*Z`uu9@Fa-WjEk zOdxIqZdy5pX$;_-!|&u?55T6V);0)TOBIB^zKxC9H}2voOF#UR`@3n0kO#%5@h z6a#7Yl$*H%h;$Bi41;Ln0&SSGm)aX^Y`5|gkWhPzV2jtYy9~3Lfima3)T*Q)Qe<>A zMM?sw{Hw-BqU!B{9c-vWZ?3DcEX6ni>WgN2>q0k4)8E)jspA4DyeZ)R+OxRgUu>49 z95!|y(E*h=g81jzmWJt~VP;{VUO3Fui%n02Dp<@l+N~_(0tv;Y44H7r-HK<)9scdU zm@a+?EWJEFF3Hm18EeRcIGMnJ4h6zKKp{V2VW#GqJ;h7lM(o5INLn!QCaku@h?@Nv zd9)&n?`mx8@Y{_F9Nl+qhP-0m-C`;XJZBdlV}ZsoQ~oIN!QiF z`Y5qA^MrCK?7b<#9?rY!k5Q@vT9n518pXa;9eG@GO~GoBfHvsWxx^@o|L|k)e!^S6 z{B{j!#|%pn#(iV<>i4{8Bd2aAmS?630U)rVoMureC2%Iapl^;KuP$7~10YNb;6&Pj z^SYz^P+iz-zAZ4hJmr0Q*NgZ|8`YKt#vMhCapu|EO`HgZsKnR zClF711w83Nj}6dE97ej&6+-Q#6r|ccP7L)3=j0hBW$`g9pzpE`-Qxw(KVo;Q3hkxI zo(_)nqxos5+%ub?h)D9RG0pV~{qx(E>K8_Alsufl^3UE)PvnV5Sk{t-44By#8s#Ia z3z_bdhrYE-zW~8RY+Z(140E0LM_}?AxxY9?7y_izh&ICZn*m7h4>GEwhcNB0KuVzz z3mOZ1d@FXN%Nj|`0mfNl4%k~YOEIrPW!7u-FT+jGiGKGWIrsRhdI%tO1!iYKFm28E z`ZLcQosqWuvZCcR@l1EHIM697#QHDvMm!QYGrUAfJicLM|h>r(k z7=KVwATa#bwaEj-5X1OUUkGFrX(j-*>w$WKjS}Vu9Jg^g%?BUx8XI|TotX=_9~9qK zvU-HbhaM=*x1tR%2VsKA1Zs0+V0`(e9O*e;vDQk`l+At9{jWU|k7Bwhk{ zG{%|z4MaU&;}XbK#87387b)`&&$ON6xSB3y+u2NHq#U8B{{tM1cN}XpCl`=;8P-y2 z?gbB2T+Pu*dh`w8=pFGFjO>zij+O0LWu%hLu@e&KSjp^g_&wjc?@xDk-QUNr|Lz_)&g;C! zb6(f=M7erwn=#~?!#x$ZB|N+e`oBB?NqGILT%t zjY>V6OSn`D!yS69RHKPKwt!=s2>P~4UTXWfUjquvM){ z!us5H+0Ox2BQD+V8Cs@B!ruqM6DLwDNvY3GL#iiAAPLGA&0KNsg!!8kZAcEbt$1AE1phI&r;U4`ENw|Se@{$b{J3c+u-AM@w z2*hCDHKb~mXXFWeO1kXQ_HLEDO@Yn>3TPv&!caq1^0q}moV<{E6x6-e2)-m7emr#qPG>g41WgRN6+9_%n+!#y|HNIHI$_qI&0co}2*DYY~{5|vF`BMxK1D}p**28kf`S1k&{%W5t6 zs{(n4`I?4})leOBO(BaRI8;YM{Js}7`(~Ww0nzii+89t&D~>Gd1Rcth2oSb9cZhEF zA>q73QeUQD71`pc*D3$V(z!miSrFI~oZ*@_L6Do0B=0jUv7@T0Dhb5YT*Hy@k~l;C z3&#E|KwObD8YtfGod$G(XCeOmD0vfp%v0FnTi8u@(F1>_>G!fN^S4TYF( zT!c?{o)EQjWWM9Vz;EK)CZ~4?m96jwbpJ{@Iy$a4aXma_9Bk*>gLmWEbr6+WKY2

y`wP2n@S-oxMK!A003_LZa$fh;TOB$S!iNJl>Ov5}e z{9JE<#M^v|Kns#!$ygg?ix1_dn$K5?d-Woc9**~`(ee%;=dtJ-C;3cFELqEyo2j)j z9zfp`$!jfQde{9@U)!Q6Z%zi^FZ?2d*5I7ij`7mfK8$6!G(2Cwk3MIF_0BT#~Vt_!I&ObNwAJ@SO$ltssh8YJy4wanm&pVPHV%@aC`~6tym@`8#_^!TO-+dcv{n-iK7>kN;Y{?_?os;K(l+E za^3e+T%fd&Q(l%9gVnUT9e_Y5rm#BlEeYjxVPecU=w8jZoxOuOJpcAmV$^50&DYC+ zbDg0^AivGoZ@NwB^Vuhb9wLfl*}*X0^=D=*F5au$$K!_h9q?{k{^1WE{To&ddGUp~|AW(FdK!@F*DgNeS?c?F?d$lcr;*sO(; z#y>&MCH803ea$q|Lr;?0%Z#1EM z`hSgQ4&CtaicHTSNMQFO;y|PE-bIj~(4z`%V`<#DS@G^<;qI^Go<=Q{;j2!N``X`- zmj&4%3GtT2)?*-){}r>Iqi2sGsyiBa>4t6rP2F!d8CpGc+qlnt}lC^MS>3bX&@zk$*(_36ym6$6vn^9J({3d(A4zy!S0v>b8bg6S3z@L{%Tb z6l8^>7-*^TIze?M50z~vf<3cY%05y%IC#~D-E;5CW=zR(jIYou15!J{-)_;Z3{6R} zE=LlVg%GjpdpD-mXB&dwxwDVU1gE)Bg5OunzQqgXC`c6~IRi!STYWxWjjL;8EjxIp z$da>g^jlaH+-4E z|F|XdwVumv?4`^Qc6kWgJ4Yd0nQ>hR!_t*M7;s7Vb4)P(@`f*qerdOikx0IgV*QeU z-YN-T8YW)J?x(gun^?{AZ4mq~ddzPm#N@PB1rbJ4O89LIDjBCtNqoX4PYiplhtbY`^xKP19bixsaQjyY&CO=0wkRbgM6cP?NgHA_;{U>5^SMq_Q zQzGpstMKJhUMW5G;D$A0oq6e6X9;p4#fq%zJ{$i!D(9toNYrcBJPf= zyHx8TJO9!P*&wGTxp^9P+{F!?!J}RZ1A#S_T2Dxcn?9Wf1|PU@x3vd`Gm;g6#V37L zoam=Xdxn)p6@!jVKEj`hyz8At{{mEE_0@Wu+p+te{n8SUKaWNd0yT!-jO6s~^lO&W z`-fPlJzn#6vIMWW)RMR!KYN%TX^_i;-D?HO9fwl%F8zis5C-Z_% zgXH|2Cf*p-8|)VhF|RS7?ko1S&g?Xq@VvH0(h(8w^ESd;kPhm%LH7IPy^IeO8OrxQ zwpFcMt3x+Z;%Lr<*u`G>Wt2VWn#Y2GTvgvIs&`WfrzB(j)0K6S%YN1-kh((EH+qN zA*1M;?NHJ{Z1;KxgyO8%P7dI-FaxpA4Na@eo)c$mA>1C*E2Uv&Ps1^SOnyFOsukm% z8%D2@n62Abv*M*n+_0louQwqL}6ewxjCUkf_xlFtfuR^^GhrehRG4+tyYiyW`F z5ZJXcNxb1Uiv@G6x-?~HYmQCp?ik&ea2h#fosZnmJZN)V~OXKQ1MrtIhWq zk6*~q;+n-pXquq3B}Os?w8)1(gOXt49XWHQcz8L04}VxVSu3;Qk&W1O5W*EP%Mo1d zHoPepooNIIjy$)#x4R?SIwzpl9rgJ$ulIeyUm5}TReS+qP6GL{9FywYcS6K`m`fn* zyv3b@Siz_P4WT3=XA1|#45~R-qN-QP=Ovcz;`LEm%J1H^lh?--u4Wg|Cv6<6f@+v! z1y#d83FE7F)OkHa_YlU6)nq=0o$o7bxxgH&f+dS3V)hXosK7{db{`rRt-9g#YY~fq z$y)G!V&vITGKmuT9tv67JU0#j=5)yFd^E-Sq3Eh#lV=Q1#qU*_O-gX%C#MTNkVDLXa>qX{lg z)=0(hg$$x_`SpZMI@GK4p-@@XLpV5Cgbyfp4%(50oxS6VvpD+mwHcQ4LrQDE7wWx}@IkH(sk6 zl}+$N=&foPLS8PIxdO=GTTMggVW7ytsc&zCBI(4EM*J;~|B`xmvKAy^V4_TB<>5T&7)_g7vDVCfseQ4 z(F>xmsWQbX@<#u=v#qh(7YblyvlG{kwJL2gsK{wvm*%x*`24|SFFLINdM0m8X;re* zdD#fTHNxTQO_}UH*mfF_L7fo=xpO8m;NgT5X$UF_XSl+28iUGsZe?Fax7YmWnAs9d@9>-84L)R+L!}TK3p<%BR=a@`!cMX!6ghB&kn^Gr z5WZDl;n7EDoih~Ff-K43KV8vEDYQO7puO^t}7FPUYLp-15cK5%y~FN0OnFBz3@ zAM11BG3y!-6j|rqGEf>Ch zXMH+B=e*yXny0xGS=Mhp48w+CFIta+h}wh@VXY70DugY2w=(DR?4@9;wfelzz^+yD&KifZ5mPjY zm?Bhm$Pma(I1$<+?V&iARC+c8G>2udu}=Cd`Q*>Z{RDhYC_oe|dU+pc~&HVb*%>qk1A z15mnXH(SW?rL3LMQV|^xk8Ycv2`fPfa+n-f$pgWjHoe2SytbV3l8(|$jFqVE<{>34{}mkFH-Mr5;ZTM0C@&QKE_s753}C!3`*G@AwHM! z58VOnIinj7>jjTwj6zY_9{Qa@EO3QFW})KtsEuzUi9Dn4(t@QcCBoxu-Mc#7B|AZ* z*xo!m?Y1JSlR{`2tWVEScn{@ywZ2;YiHKxDQh5uMPaku8KsS$s zL}0T@Lu2OVnA?om(<2Uh1yQN|H0Mf6j zUA|}Nr#fy3r)2nv?~e5W!f4!vjYwI#6SC4ia|mIF$83=-L>7P40Q^`tT%^I~#9T^3 z1PSQfA`^1rzjH*l_b#_na{Uk-XX~c3C7kOZ9opZ)5EY8b7Lx=4qf%!?esS7W_oY78 zedCoiogiW|q*$C=Q$E{R$9b1r$%Et!E(b&`J3z4JMd_Y%P2}?*80!rakk|qA2D}@a zj%&y2&);Gk>SdO>_xz44K`ib|UJgvz;uwQAS9a(`Khme!_&&sddu=N#+~p#~rLJ!& z0arYnMY*4UBc~Y(lq`8Ix<(S4@1bxT*01FM2ZRNwTGc;gZsw8zA<+tHYM?&ppzaaT zVU{^!O6F}D7|KVlnk4sVLB)h^5y=luB}t7w<$Et|L6mVYfM;cu8hV=-86}c?dm@f- zGys#ICuQ;M94oYCOV?b6y@l!H-CWvl!b>j_=<4&^*Zd}zLHQO9Fb(G@A^!Y(W6FnF zcXItg>YLL!<^oVocx&E~eM!z|o=Qv)DL#SzNO(4hh^c&gqK=_Ao4{R@D~gctvsXqm zQ%O(=dw*|>gwVElq^FLkKbQ^Q5)$|RHV`_I0Ya~2@7*bct)<_Z9+?(<6hNg##_5%! z!@z!2>VQ_|mhO(M$OQRGVD2x6uyJ*fN1Bpp4Z`U~54laL{t69f43Pw7!!`24vgtxH z1pa8O`<}=IF zjC(H5xHeFag33-vEhGk0y*oiVD{`#kgyO$m=JG%JgP_@L%jpc59S;0wgZ&WVu8W6e zGg`j$1ew{l6oir%`xKM!pwTtd+(1GfvGbv1E3Q+`B(^?|pg>GkxMQzf0G&1&ldw}P z58+;NY?E!HgoM&Y;JQX8t?W+L7Hmy7!z7+=G!Q*n8Xsc#&Wu|nC?d^1<$i`=8)XJ; zRUy#nUSAtH2&6CQb9F&aNNlxDIt-4thp_sV)6_X=3fjYTibclLy0QAM#h$Y>Glq33 z33t4Ki96fm4xwDuiHS}-q(6epUU~L4>z=Vas^fKQDki7vd{v+elpLbg%mks|5g8j` zU|GiqRM^~)iM>Gm+C%p3T6GnS-WZGwKD`i2g8X?5dW&`~nFRF{_=D!!rS-^gHI8>G z-YPcmn6FF^Ck4SZ{NVIxx9V572`#=meq|($SiV=K(AJ#rAe4?F102nUPr=brIeo|; zdo)r@q_IV6J>6$oG9c^HPNep-iDutFp`LBc6q~b}6cIryD@!P81kEcM|B_3;MD54} z|8zu9zd9A^x!WYy772+#x+svdLOO`Ss&fd9@t&yUvIiaNMNQ5Cm;J|jKY)~A;|bw; z&AjV6{$T*wXbOmd$269SF{-_J0K1EFA;jQya)(Nsl>1vVs0v3J33|5=Yu*@;G`ahN zGBgtzeq%8htsW}Vt<`_2AV)OCFfTWNu)g6}!|Ch6cF5XWWp5tj6cX!Rf?Aym5{l?q zPq7~~rU#=Hh~AoXV=7w;&g^`FJ~gi?Gf5n>u{3+=Jnx;2yBqLJp`Ddq1Lb=HLe_H! zkvz=M>R=E7aO;6q5VAU>NY*k88&3T0VxxS|_yV40eqX9zF-@~z8@AoRe^sL$1g~;e zZORdi_(bnRzlo9IalZ*b0J$>A$6Xx>6;a{=1k^HS$*$|c9QQBnI>h4gYJ7x%(G`X= ztE9ApXh<(@c07iA20F%tEZeT|?;ojG00cwiMFSJ?t?K)hZX~_xqL4 z9saGagL;z}g2MDftN?-t)su&MKZ0~$MvMO2qbxg^`eRHNYa=OXAc%?xc4fAnd^!lK zO|L{@lGFw78|!|TQp4xae&FEsykpL@V-W~fZ^tr3lhaLN_iq3(P^45uL%b(t4+RX! zEux(fF(y}DubHfv0(c`xF(<8k;>w19ndQI!X)O+*+yhe3fzIh+d2*il@3Z9WDhS*7 z`?EYLe{2XrGl-WiG$xyYpk1>42lqh))s?^08n43D3Kobx`*jNX_rI?4;~)cbyt(Y{ zka)i9JEqbNl~MNF2mRYkhMo3bi(o1*A}4dRyQDvD=UIrPX9pq zkG-hhPKM%F_U7-nUB!{+6sAAA zHmNl&KU@H$0baW;%QwGzH1M6@FEzj47>VUe`Tb_HBP)xBmDyL-RwxgPgKb>q-z>?! zUH@O({QFJQxby>2EL7lIDzY$U$wSd3bIa>-b`+{eqgYbyQjY!xntVk zkEn9KjH?i8P%hjuvHIGcb$USdU#14Fo4rh4^?OV7`wfd7`e72e=r^stOe54F`R`5`TD*U;kk+ynD>wZ(XJa-TqDu za^$-3;P+qXzt(4!2VV8&GBwCE^c>?fSpH==eXFyB#h;?*BTHB!qx-a~VC2n>~Lq_w!jOqNgMAg@dX+I)$sA{D+M@v_oTDuDJ;M1=|U4 zjXpzzes|aV=Z47lH;@7Tqn?fWdD5?ImapPUavQ{Z`a=y@?|$9C3uE8c56!^oF~u4c zwTvTihDAs(!scm>EMYeo&}TU-NFNx62zFMx@BYWies5akeV17jJy34snmaqhN>ux9 zjmKC$C5HdEZNLBBe|?a=){njYwD^j+as%Qg_I-aT8Qr0kO8<5Berpk8MG!yn2zkLa zdFIcH;C3&Yyh&1Grtz;k_^-wM^v`UQA1lipSGjtC1x_({AvU$ll*J`fwXM48g z1Q@>TWTeVaK0*?)0`xcTp6_WwNNd!j!)#rg3%e=`s0`-pu%O@9nO>bKYF zzwX}9eZ;laSi@_Q`DAYz87%PK>~UH4SgQV!FTB0u$FiJe=1l@>^S&m zzBTqVvNC;GnMpkFy|-i#-}{~=MbHBa{;?tdA7)KM<;Tiw3TF4G-$vRnC%><(PlkKL zzssoqb-n)b`Yg-w+gT)j%h1kbwfmdhnuj;*d-R_d{kQ+)6ZVHOD;i4{(KA4t%kJgl z6t+n;-}#5{@(l7WUm^GG+UQFWd#%4VEvgH1v@n~38ESY9U2-6| zGV-BQr2oV;%Cjs}&W(|K=Ib^ikh0~k%!<|X=UEU)aBB{nqrx(FTXvn|Gan>=>O5Bq6#ARWoROy zh!LP_5q9f^(hEoa$oj0cx(89x$!c)qc^AjcySn}s4{*-AlPUjaE6e@|f!cLk>r8Ak za>ek=J4PHVc~kUfD@zJNRz^mksz~%B0ruy6WNDFie)pfPtXb#Bj0K$kyZzF6g+gq)2<`vm z+vVeY*KWzp@_z&rzpmQ%#0I3WuphbpR-XH+BmNf95OfXFEe5^58=fG5-G$KV(84Jn z5ty1TKKj9b9*nj4K0FOK3y`2zJk)B^R6@nlpmu5xBFrgtzkSL~Ym;uh1Qo+BnAGrb zlYzxLg!NIV7A4(cQS$z0oYtFbKggf%ZNdgOBoW& zt#I%mmryJm9xEJ|^DZLZuW3%!-oTd3k3*pK0B9dUxKb6KHN_go zwyJu@2kTnfXWuRfP3(_-Cj7eMpVuh%A_5X8+g55HgmAZhFSn^A5^`C2LVFY_x0@{^ zdqJ4A{c}_@ATsR%ab9vTyJo}Q{%Z(w1y~IIU4RyhIWhxSq`_QJ#eP4_eN$d}-5lV_ zx{wn6=azQpTP!#=e_pk5)KjPimv9j??vA$&$f5Y}#lHbdP7d zU{v3Tuw3ZDU>J1M%nLKAk@k|9<&^8aM=fo~0SS!vJ0A;FJ}2NW1$l-+Y!40PKDo$2x|;On`noPI;@-@xw{m zqd_m1evzPq3LpQLnwMT7h+sQlh&cZ&NVw-(U#2}R$Lg63jLWqVIC3w4O7Y4K9qztQoey9_=aJXt8&8Zov zV%TXE&NS$nZu!@rY~34wc?7SnfRK!T+K9=mKGDFo>a$Bz+eMFnxoKIY9j)nOE#GwR zCEx{*jv@>(UXP)t_Q2Kp(&95EO}v(}rMmpkx};Efvj67p-8iT>i`hItknC>n_g6iZ zuz#T3fe_D*)U9Tfk6;S=*)Z5Kg%_T02L{;KHH`r;uC$uC8eufsp{#gWcH%s6BA?f3t?;9uP zwxqY+N0I%=&h2MV(yw0KxyS?rzJuO_H$V<@=W9d2F&NiHAB|dcMf#y*aMzXz66dxS zBgo;>50AVQF;^P9kELQ|fRx(*a`jK$df(UUmr0Hu5PJLz_P?SYjllrA;z_45Z-a+= z-hPBb7QvlZoELlMjL38!z{YSeKi%kD62T{FGUSH*1Ex%|_Xru){^LturE^I%l05*^ zZ@EK`?fB(qO&|Cb+FCd0VkdUig<7L^XGS~onmY@&%DGT=W}yvUQJui|RhavPu&72d z>QK+53Xk4!6!1Pi06bCLY3tI6CB_+8DDg(t$?@y6q5yxf^lA|}){nSNM;F6j<4&;2 zdjkZdlBbpU0Qn-C2W{`23GTo}F5Gt1W9N+tM&CfO`!41;P`H6Sj{>e6LKw@0 ze+8{yV6f#|!1G+#UxA3SrUc-K@Pe+U+{J7!h6y-r@stZ=~l+q$-Xba zen#fYJ?E26y6u^q;5Y>s_ySwZiXQymY@1hu?)*LjO!`XV1B|_biV=Q z!CQdajV}`fOC|stMgnVy+5g@YXf$kNfGD1h(VVtQMGkRfDfys`$rFW`d9Yz)AYwb1 zJ&s@&B=;`m1Hxm@Xgd{H9}{e?Fqx!c9*WpX*@Ut zRI~4tKo0-~#T&s~hpPcm(gV0VlGq_liD$rgpX-$9cmtrosbKUX3^keiMsUtG%Cq+> zA+>bE2&4$^9=Swi7g7)SwTakWA^K%>T5IV{`h`TJ;(NR@WIT-FwFkfYmBA7FTFnjp zdIM{8l69jZ$I(wmbySsx`JM5u!B|}iPa@yGq^x;(LpZ{|Qb5Sk zCIbSW;^Ko4x?;cL{5)pqn|h)VJC%I1*kk%K;XqHRw|632kF_*8J4IS-5!jPQx)ogD zlxLQ3UKta%?uH)CQ(`4^=P(`k+3rwolgY6U#f5wc=jQ-up%S@->l^@wSn}xw9k3j< ze(}g5B&5)3KR${yM+vSLc6CQ*rv~pK$RURfsc~XV)|+wL+F`2@TDU`8=vCV~_l!@+ z-G5dOOUm?7c!X9r)Q%rSn86TZ&Pu+~d(`YEwZ6#)ow*jS1_qUoFn+QwUYp(moBAz6^x zv}OOf>pU2*qNV7x@$0k?!W?*Yy`ErNMheCAoU|ihyui@gMwt(vt-WpqUa!^U!&I?R zk5nj7p_ih}dfcari{lf*34eTkJnjWOqp(;(QUDBw>dfuT7ZVR^13JwfIf^t)3|2w<;c?xOrmPU=S})& z8G5Qx@QX=tfv4|!!&ms$U$>GP)&@YQkqZlRVD6>9J-9B^K=5ue)Wt+F$1303GBBTj zEAj@{Z{LE|g%0$LBZPmRZ_gVK?wRg1%v$6%NOCZ$il9}ta1rU2U|`%pJR!FMA8Ztr z*jyLyCCPhdi#pv{TJM4cU4LgvNV?Yu;x+kZ2WFg;m(($`Ph{OQG3qxa+pUSIeO~k6 zoGOybaBaBAWNQZ_T3I>8iWiBD6Xgy?aWtzJyxw9n=h6;Lq=kvZN!&6XeA+u2Kw1tp z$N=0cOQ*zpA^W&mX~jG4`koJ0e+(9`HyuZnz7?oRPesqGBE(p4yz&kM%%#J2qbjt{ zWXiB%q@2w8*Q-mnc6hr)DbMEwmS<2LG;9J_)CexT2uX;?A0k=>Ed~x7V%wTSBU`*v zhfjIK>y4uMPrE5si>pMfm|EH^-IE++y0mocCu{wB?Xpj_{>3N8vBb7KiL2$dq3&s6 zzJqIG-qqcqktZSCLc&q{#I2r-OFkFB{FruC8bzqJz_K({CTXd@GWS2|;=8-MR(e=u z7Kl$fwx!hWF&Wa}m$9Wf(jX7m(o?3&s}-Iuovb3^^3JBXtk#Z4ulFLGtWB8MR8rF@ zOu3)tYO^i+qPhJuq(4n|z?td&SmErlB?dp!UeY8oapH>t??vD=hn99*>^tn$5k1PS zeqC^M6Bv+3AC@`~Y%noCjA&_8+}fbxWjy}|z!`%ZyK1PBs^Sqds?5(MO2pO&sLrQI z+ca^ZIbW85)mZT23v{TPR%G!{Xt{(Z-_Pm_6MWrfbW6D#JprEOPEbun#4ghzzZ!rF z>-2Rm@uYO7Qw4GYlQR(b$Ktayhu=rX09^alWPq3m%+RJ!e5JIpIZP7R4x`0wBCJfB z>>!Q9B}Tc1H+h6uj~?X+2^TB>Dbw_|M(=TycKrCVLS*WwhOZ#r4c*DWvh`!2?AJGr z8jl948#FON3IR1aM?Qy@*Ue^>vsZ6bWhh0^pGzk(&evmBQs?`SQ8l}J+@@z>$`nhF z^2M0e+0RoPi_;&FBo~%CFxCA90F@aH{mKyme$UKZ5OQ?u8jwKWrmijt_+P%A*}iCh zNbQ`*fNohAnafy$j!pJHz1u+bm9s%o`W|9(`Y4QPcLtK64Y|`Rj64A|gB{TkLPKHp z=yHn83$LxId{ai+J-wira8^75Z(B3FFqJ99Dr7|GFDOWOwmLD|!}_hGwR6nq(D++3 z0L*Y0HI)!cb}?VeS;~v2;fjJ?S!o3Jfrq7w5Z2!=j-Rzd&)dvo)64UzPfjxBxIcPBJ zy~Wmh#*~~q@vekPu;g=IV)QTpVshyij0yb0%vmM}~2c<|(_4;eHfS(mqvWED?1AS&T6jNK*A z8JwE43zhmYQ!dnHq9Va2h|qQ!h??Kb>O1!xO;}M+*oiQX0^;Td0lO1Bezk?o)|cTT*$s>6*vW=q`76Zrg{0@YZ!N-;+J z!Z_|i@Qi(xqx+Q)a=s~S2S?Y)6VE+jBpDp*Oo?xiOJ*Y=(h7Z}Q<=#t^f2}(%`C|N z8oY@e4owVJ-DPtS^r)YaqASESxMw#jt>Y<;Wb2ho+h*i!ev;Dzw@$R^r4H3E!dSxo ziv3AF+0!hs5_r4NkU*nuA+6wm#?&CpLWvM4#+R*AF7q1e2f!1 zBD9q_n;AZ~=ef@#1&;wq|B>dN4U*HXd$_wB-44y)9n-)8wtZgck>r`6ft9hGK8;b2 z!)>U_O>S1*$KDzqVX)$4(g44Pv6R|d-3ZcI)aCkJ8XPFMyUZS3_wkDkEG=9M} zf0tHYHr|xODo>;)%&cIxs=j3S8lvb5J*ueXg225v{$~m!l!WuTE%!L#fZI+&ziysZgm@>qa@<%C?j;f!;x#9Nj_A zD6=x%bQEqEtt@Ao(CgTD)8>3e`Cc=!Hic__B%`j%5?*8Y?ecDm z=>C)(pwOxg8|tW3IUIhJWyzJVfk`nWOQbs*dzz-Avb{Dw*KjUSO(00ejKzu1PW}v6 z%h`aq3Rj!xNTjK#M*2c{#gx*&UHny##{?8bxLB~-t7P1GKt)k^ zW+kY3V)-?$7zSs$6y{~@(909hscb{Ga3(q-r^A}~4ZVvr@Px3UeZr#O!vClQrXa~$ zwM|Dtk!zEVs8S1ob76HSAla#dmgOCVymr#Exn}&l2gn;;9vshmVwb#EBqFVA0iyQ# z`oh4f4AGosE&H5kV!P~n+BBX>joub6Q(9F zg3uVDC>o1BUFH8;8*6nhv6J=2;4bXf`XjrE(t)BXb4mU3T$U|5QG&M8K}n|{gxgmU z0-dl^tPUngwHHkuw_YtzV8fF>a!H!ll9|P9;7_ku$>0ysEtCqV$C5=>qpTBXfZ;+~|75k&5MzK z#gtROJQoR?ZfEuGbKiS^lccJ0i`YN{-b+6q%B}XNw>`JYA7}mmRLJeY9UrbdoUho-zbi}mtW(c1z@CQ>qMbT~d=3v@$ z*iG^pdKyz)f$Tz?Or3fA#hz7~qjP!(_G~Wt3#G)+WKe4$WmOv}y zYgTJdK6xvPw3H5kF`M>b+D&f3Gj(Z6v!{R-Fzu$Tq}bfbD;edC!{7Ny3E|tO3@;ym zSq#TtU^g#`H?3Y@>lWA^MN%EF;tYJ{%*4pRW_wwF36uViDbw#b^^DXbUzN=VyK6WZmASCQgey)Z)(Oh@iw9ZwjD0? z(`dVuB1GyP?E(5=jx5X+0VCCSd3oUVwOAh=i+UXQZr zP3;#d;I)gE%{7Vby6;5ZnrTlAb$L-{?_$FhfzwnUyftNKmLpCPxRaw*olt8uI!^@& z9YgILV2pq`mX&Yh~<;PO1tA%Hl!ERPbF z{W+bj*IdP|#M0z=En0qfAz|_+J+)rx05(P4Y^WPTgGez}ePXkFeL~fapZXyh!VJto zAed8BF|u)=PQ8Yzxjda;VuYi?En~{`(?VUbk1ZFozp#_1kCM2Un?evF(N z5p%bskXo2tqm4I2rgUjJX>x84Si|$V+>iDkGa>FHl9^)5>w+hbn)O?9 zGTbjFTsQ1_I>S8bOigF)O!t}=c7qY_AT%OpBtPE(pB(b7e@2AAd!0HygZ9c(m#Bm? zq+bXRl89ny#t^+yGm`6+F{q3XP9I&fOqz8HW&yN}zBIA3;f5v?R|Yivtp(7LhkaZ@ z>))8&8YEs8!s*)lZLf%NY`+TT8LLsjd?~FEJ1S?ZJ1V(VH@U=-Q@BC;#wO}P9q%w+ zhw${PqMbq=6Xr<*(sn}T+imBvdNt4VWE zlo@GDt4)kf^NmZ2{ZvoA&j)=~!O`frQoXwW{RQJG1bS-=Hioqbfz*`7 zw`nLptJK>=k!#}9wp>t|7*3y5(!DS~pJs-`zfunI&5PN!!_kz7cLMet4kbvGLe2CX8MyJvo@167UDc&@wDM8hl zaGK}CQI+)RxUMe&-)Q!!l*a^%epY>PuUpv)32SDqaEJTM>P(R5eYcgmtpK4O=oyJ|L zwq6;Vv!-Qsoi0;o=-Bl{pR1(!Yh4}Q8=H0b_K5D~*Y-Co|LA%7?k8d17-~$*VvIed z-w>mphtBBDr|^ zv_}jIXSkOyeOl_wd@)-4I{sOWXjJW}P{xLpJ$4IVY$VgXR)3l4beQMQCa5GXr4eHc zTNP3$4(4-lJJzHtgIzsASACH%8MGL4vegR6iniDA$F@%|88VN|t%?3;lV3jVd)YMP zN7*!^Hn51vTR2n8F6<_dcbu$LP=>r(R1vb$lVDxLz1rqT|4ksU_z8BG;W(ww&##&^ zog~5R&N-B$3xGUgxis-~_V@ZSG~LL%$7Pzz(TWBPRwgg^xU5r&x|C}op@~g8rI$i> z#MMs$thOs&cKt4eQx}YU#u=ZO^Edx9Qe9%q#hM^ny1xH$;!M zwIa_!60@yS?0!y6s7wwHB|Y5t85pZE?hX2rCxg=2EmXDhcy+1`B~9uzgJV(<%hnQ_ z(cv$bcqft4>3PxQi>8Z<$#wRKvM#hsUT!dtk6Mh%6vmpsl+b@lHE*|0&N>^?S%Og% zmF#a01b9#27hn6>dw52cC=f2>J;Zp7ENM0DUjO;uZibBkYuD^noIx4WqsWX8c@803 zMS-7*$%Jz@r1*KY5q$T63f_ox{yt+FZT}T#RkvELSfTEX;p9V8>U4{E+Px8HU~6OM zKCbYVlHf55B4ngocyCQ`-K=XN1{6l0bfJ?8olq7X^UmO5Z{=;$xuB(Lp1be4h$7av z#+rhT2#@(p49N*3U3+qy$wC4@20t6vL%4{NHhF&RAhtA_bJb0*zC=NTe#`F7Li7TG zQr%MjnH*4omHFn6d8b~O6r+VdP2sE5lR>+24gZ` z?BjQz;U&LO5__HfS|dD(;f_oCs&d99oVxn2 z^gPHxc~k1%-ak>7>h&2z1gimCYWkc0lA0|<>wcc-F9d-*LT82~{lR6JpX1Xwtl`^> zkTmzpUVSk3riDf&n;58anv|iYzVw#k69ex-NKFGLJ%N2NdeEcUKPKf}7NKpOX?|ns zbaTN)QFzWdff>%7uba-3Q)`%J^_wmm=^qeArCR4xMbxESz6iBh zsg@uLMa4LSV0UCN?EBl969EUJbuPka!KK0o(p|b2|oJvu~LA{m-Sd-V` zg!Ewno#X`eVMK>%!j(I%#xOUJicymqN<}d(k3CqS2g?j=d_jU7R!|;JFzCl?cO&qMo|d(z%=!x&t$(qgk>( z*X;WVeiduTh^7hgZQ7RGn3! zl3H%mJs^^jZ57inD~&I;Nlq5X_6j5NyOGK=@g@R@C(_>3LO5Y<*_D5lN_ohQg)@*ygay>t%`?4?csYvZ!ekPHA-RUb}jxP}v3_ zcK@$*V|pQaoAC9NmoH|#=||P`QsjEbD`Q*KiC(rQ0S(h3h@?*1(fGk+#!cqtVL;H! zS}Ymzc$6k%pt8jO@nwho``cAy6+}h8)rM_f z&uv64pBuPq)wkewl9^ZgN2l%$OX&>q-!502IG`8c2n}4j=88D6x$G(8Vg-vI7s8kp zs5gM*F{+Mw-Cm`sGIAelIF!uwX1w9B4+y66=MbE-b0~~aqihBsRq}Lz$3B0%=62mC z))n<0UeLqdy-6kSigx@EIs3GI75ROrQx~ z+{WBg-nq!mBl#YY4>)m;59(JYIK9f0l#qcGjhwQUU|EifH4*0jEZ+IZOE7KpYvedq zKCYe`73B4)6ULG6=F`rgRBTYUm0Ymk(~4#?EPCH1y2Q98nF9oi5&I zQcwWeFuL`IZkx5@DJda~=FT9IsMTV}c^tc>&;}*~#!af|US-ETnl|RV3S45`k}g>~ zaEk=tZPY_sX^PAvENIiAizsWYovRZrG4 zZ`3QOrf9kG%|jzHTqj7EFKAyE>iT z-`PBctDAa1B{CQ}NT;iL5Yq@=B$6PVT>9bN*B5(Eo`}xJ9NiH1^&7}Fgt2BfF%A_m zj9ogGxRBlheDqYqw+BQYkFhY|o|HJQYTl(IRUJN26L_Ipn5q7RSt z#&AmM%&UDQ&h*&kYjym*!*ORe9h!WJv27CE%@cx|SLW|9DVwFaQli_mPUuB45{9`{5Vek*_A9D zPbNJV(f{oR4(z1}^UcaObp)g6k9vZZt76X|b1~L1M5WH^dZ0T@SH()$4TCCDw9ag* z1D>eOk`ry&&2vzRxe*sdxoIICy-8l>aFpw9Be~ll56AAd7RpDxyimfDDjTxAH9vMq zT9uz}(sJ6JX8)L5toqX(?Z>@HA5-nwn-d{|30{CnDnog+ASqT_#J!6K55@Ox+AXnO z-qPs}4|jUm!0dyis+5~3X&d<$wRP*SRx%FZEKVy$>Fj(bkYEtC^IUK@h=Qn{qqg;3 z?xP!GKwpoz@E~fV{BQ&v$e*bMg<{fMGa++(S)$3-QIb%cdG1rzlr4w&oro8?o3&Qt z@qA1Flz5tr2hrk~y`_FtV0+jmdCOaV!E+N;eCbavq?}~3;<1R{$esFz!xb=nJ3T+G zxQ%~zi2)bQFDE+mesaZh9ExwLt3Q~iX9H#eizj@J2j0U6@>n`rknR?+}w zi}GTdJTtCwbO%TTo_S~imWtGer2jhuYPK2EZ5ieI*^xVrNq#zqCo!~Z`>jw z`{Uu^S&dgt8+QukrdSQRzdAf+^lZtf0?vClENsY4Yg}Q?$9K0M@(ylam;E6}$vddu z*&qNe=8xScDaZEU{JIOjQXk%3!8l|sX1nG9BWo;+eb~|ZYo}1D;lqn>+eH#xY+*dH zD>VIe?|sx;=e!ejsQS)p^QvLdJFKx1THc^NNPKr<$1tZ$q5)h=mwPXqWopH3NYzCT z7AM>dh7A~pL9N8fLK{ zu!p9n8Lxyko|#y8hdNUhw64{ z*X0GUyB2=*(6nu2v{KrlRq<4$dP`TVS_cG#0TkY94~~n$HFE!ZoZt5#ir*15Hpr~^ z!$p;QvPgFi1MJ80c0MXP<3(OUAM`a&yHgK z`Sj{D*=#<&x&R7|Z3#B;1=r6F+W*ohwyHcKYFhBoN=JP_m19nD&!hecM6ZnOy@VVu^>fwh<*TZ=L=8Vp z74CE@SWJH^mzkY!MBzN*4Jgq-^$Wb;&F5dYbm-uBE4u9$D|$^8mD*ALZKt4P#|#K8 z&Vq6X$=XeG-HWYC>PM#^8-aYivwtY;LCsC^!J3G{5KzzO=T0F^l}a|cI5bbhpWNYU z7VQ5lD?#aINBW`lcn}FDVAW)K9|iCA(Z%_Q=5;kDYuDOBV?EjFI5kWl_{|Z)M`127 zH+#E)uNSUS2C{YQe(55G86^DjlBn zY&fx6i^=oOTyTrr*W*L?K3p@Hw&45c`{hUZX0F=vHLgP8MUwIgS)Mgk-cWfXRFo3* zLNF&5(YLO1=IE@m>TiEL)t#7Bdwb;(&zX@=jhO-(@6wZBeHL;95!q9QsYCO+>vj$( zJ~;b!iQMC9_Q}nqPVM?YJHfzr6;y$%W@AXkr{>-U-i+tiP_d31p zDJpM7eQ~;<>O@}YlkwUozH*)Z#5p%J)Hnbz*r-&%h$@x~7+cvURit{-2jfZyRW?t=GfBiJKbwcdw zuM$+=NXc7WmhZzfb9fkVoPp8yd-h$A9-W(2$+8wg<4iNw(6_zm*)mJCTKnkgvlsFB zMmUpHWVKv^PUyy`n^)9;E>h*b4Q3+G$uFiHo(KpM>x6Tk)%m7jm-uet-?)2u6wm9p z+FoMF{<@BhZl>5U09tPw1>I;EzqaQrtDeVw(u=BC`O|^bb1{t+CYs^=iv7-QT`SL3 zwBqt@>n#dLo+DavAFl`U#xrMae*E^+)eyyFetV8Q+4c1$O(hcuip5J-T<8$x1?>%R{W1K%6XN-rv)?9Ob=QlnP z_d3&_r1=@GadD2BP;qjabUX}z2R=Hn;6zbo`90&Zo0sln`E0Gx6g3Lq)HN(j!IV#B zQlxSbT}CW#|+-IXD< zed0+xgzZDVGh5{uQba|>LdPXx#f(@jFTTUC!hlf@GAD&3hlxXNWMyNcMl9UgB`$8GMmrLL2 zzn;}l4M86z$j?%24Dhs!{5DyreUEtd0@6y%UWX2(H3t#PcC;D|Gh>wu+^=nZG0%SIaf)SBk0+?sP(kYnkPx@;)*ere+* zd--&zC2Mpe1oil_REmU)GQTLfBGRP(6eD-n+(l@kM8(zo9nc`gK_&xy$3OjuQ-BDY&?13mKX`T39(R;SUgJN<4f#F*ME19WGlHURQU z(BmY~!SEvdl8mymfeKS6zygJ@o2z5wwo%*lw2a*IET)_UXl^{Z15&Etr_Jh0@T;vw zm;3DUGPzg+Ymz*PRxyI-w2?f(GC=o-h2y{@r|>9e>bXanHUVOhZ53*mCFV)Ylq)^T zj?c^ zM|y^e`h`1)#nvAC#xcB8AABdDnS)EcbzwXIRYOX3a!YU6MQOqCkCnr~7JM!yg5zt> zGm4TEk@Jo8!*&S1p@aw+B_Vw=OM~ag@G3liRPH@6hc-aLernWhlcwKk+||ul>s!~}E^KxJf_Pq@t!4S3)R}$g+cr=JWF)=N%5G89 z02-zC!HM09iB2s0GZ0hx!tyA6GsIQyI4z=n1t>z{o2g21+13FA6^USi2^d(ap|1F} zlRUKb!-xk8$|k7q{K%PqoGM!PRSJ>))RhUHC+cn~tQ8)oux;Na1K!e0m#Kn9Z&1+C zcoB1~BGRoOat!8e?&|2x@`OhItJSIQXqOp^@o*~(=axGr*k7D$YyhANt zlcP9bD#;az*z(uEPCM(ovv`?0>)btr_oyx+U8{ddYz0NMQmVMHdcnIIq&B@>pN_+J zUzg2eSV;Cmy@3n(@2L}{&d%46^jpQQ8!{AeSW(Mb4Sy*kKpJw+&}SpqpcnFp05@rE z64OnLr6@awa{L&DtL0WhW*a+E`N26;`IjB#vZ3a8p0gOUOoryN^4}ZeH_p3>Caa|19CLvt6jSy5H5L zg_mI{?z_!4cUFXh7gS{xrLuOruO>MLQs&uxOlQx3DUdp!M z!3xt!){v|Y{FG}n)jIh^Kq(qJNg)+wdW&%5T{hN7>dGp+RHY&B`aF8NvnF1Fv`!#D zAV@H|`LUH2s)QwA+R-mozn2KfQ#94$A6GUoke@Vpr~>oUzX(`ZJ}m&2pFY4SyB~<`#UvDo&rO)zL-&20|BF za%ss-mH_S9kIbk-LUp`hp!`WQ`1y<#B(#DWTp7>hbb9I8hGA(}%HteC#@HWQ=Zor6 zMI>CX-hE@UH~1piUJ}>(&30lerOT&-&Q!GK)-%YBj)^~d3m zz^WW|RUTKuRN-~~itRy<3jqI9$##@S>r5r`k8@xxSGB?IegUztt7k&FBza3xRy}yXpFuWl*IS++@T~|Z!K5j_w)T{!UU}41e2;gBlKHsC7|-<0)t;M#1TT&? zG1xup5&FfenHU;y&Xw{9Q}wCe?rdF830Q5g{iB*o;=}GLAL0~jm{xl08$^id&_eZY zV`yYjWhe3KdwnYP5?o0FA7tm9bo@A7^2@o*R~MrrX&2|bM(la?j&hFIro7|`NZmt6Mk{5&#L$;6Zz zZ*ImqCz7`FrrH@xi+0XQXl(F#wh1TIf;+Nn-Z(^=E zFH?n--O_t^?`isTq4DD6@$_E#Ye}S5a`iFfuE8d;o64w^EPD|vqZ%BPa}oaEHliig z_O1Ix=9c6y@Alf=q?XNRCC^S~>q!(975FNi;fHO8Wqf45+pW_y&o@+_bShbBmXuld ziDyoMD6C%UeQwFy;tULJBcBg=l_(umQ(cs56;SYU8CPaW@spHPwS0N@ z>U^P{++E@>S$}JW4fXISr)zxgla2_;1=T8M%xu%CqVlyxV6};J;?%MC<wLKk*}B8^M5sG zpa8oYDOSIN?IPL8-xT{@Z-{{dRtV%vONr6T`&G}HMYfu5Hu$pQlqT!7t@sQP-^d1t zOGe!01tq2MFzezc7{YJ$*Fn(`LX~?pX((+z+Asb75Gi6=g8C}Kas?^Nlj`_~u`Q^) znZQo*6w^Dg3fwlaZN}Jrk@?SNdZQoG$t9YizKlH-=;sOevP!O~V%iD<$(pOB7~rzE-n*x^$1Dn6l+$c<^KPH&?% z>;WpSj!a$5lA&iRomuuf0B(?BMhDk7yZSmJ)rVCpQmwp!#Urv<4|UUAOzgB~8K!~` zsA(f#xqqkmIdWbw9TXycZP(w# z=JruFNYbQXsP6-Wk4aTqt$xOZxlxh@eZ~Vfedd}Q*9_q&c!^|4)4Aho!9;PMBuyz#JJtU>ln2Cct zokFin0JQ%kq5Gl4#Pv>)#&xJ7c=0Bok(m;wn?x(G)p*GdlNV!qa!c(tG!1adAvG+! zqYMXXh8tl&#&gs#9av|Mh}X@_n0$Bjofk;6pJ>W33vD1#lMUXKFK_-xV!21*>2WBl z%Bt^wY+v-TbK6!fp8w%fnn*NvrwPSe_>4wxxGOR;(KR3bj6mewkGijy+rfQNHA74* zGsx_2z8)5$cmz=3_Hou#W-lY&2Dt-A=;a-S2#(L-X<@`DE1r3o6{<4H5}!Y6xj^_Tss@?t2u z2J^XrUfu(X4;v~TK_~?wcI;0@Zt(KY6nq?~k;`YnfqHo}>b~iQ7K;K(E^0AV!xd=R zdLsbVHlkfuf8aj~I$u;M8jQ>P{WiTd&O5X7?NxbNmm2$ zM^k}D{v!2$ji3=RXNT5TQ9K;Av@5dA+EVHAfg-xul>2_iIrTXN1qvf{J^DyhgD=dC ztAi@YL9)1o{*9B{`j^&_3^X|Tv=+;{sWTdq6D#Ex9uAS;;wo9+R|!7m3HuH_HXAQ^ zR(%5*J_n}oX5ZAMat*jb3A$)QT1;U#bwfmVPjX%QJ1$`Gqr0wQj23@O&*8FS-)S%V z^kLW>@zB#oCT3{W`_#onc%Qp^1phDzb!Sj~Je8TP{$^hDYX-(8VjoA;?$l$@75ess zvRS+z7WdFsW5K&G@#)(tCS;Lu{f-*pPU;GxlU^juhR7noBSGRwE)l+(`M@x#X?|M> zvX)^NmVif+E@*8$tBZpp;*2fW-2IY~+4_dt^X)O1?6KX&Q7ds~7sQ^O`RrHV98y7d zrwUe$4!`q^iixYzTO%JC$@IFd;B&@eJK`;$<@sE|r>)Aa?Dd;|3qFnS-hFO5EWBr7 zdgIe^IK6ofIrA5X?UYqM$uk9@S#RBWrr0fl!=h2|yKx?Qhwr4`>)3wpB<7UeD5UnS)zU=2u_ZvZ9pSniJeONFt~v#Q1+%ct9e;G_S7TLYx%n2 zc{dMh*}9ak!xI|i$YW`Rtol2NjNBB1?T|BH`=dn(hCOiES0E%1zL)Tgr!N|^gSd{w zzG>`K_>Pb%%W>l$$?{(|q~|#eV1E7(xs8L}cVQkyzE}0C0c*qx)5iTV*}~v=?0ND^ zQRA*?yGK^R*RYl`#rDPMJgoa(@m~jj;}xj8KAOsVX8A}Ior^@Gcyqo1_`OopyUsvw; z6W7v#NA;++6~ov74rSu<_vk5voGcs779^gWXWlC??Wg5~ZB7>Gt2D9~cRk`U>zMY$ zfO}*J_u(dWTECvh0e>XP1slZt3YvGrgITd~WfW`6K4_~qB5hmlY~@WlV)s>=^8f93 zUuhCm015Fa06$T+@BZy@2^4-`roOPfYWd~PxdEyWYKJJyWZeF<-Se+S?xV);!y}l) z0S)BwooG?_Iv2nvM#k60V%@Mnegp8Z4Kj|G%Yc->q7GD*hq+kZF@mL5f|iypl^VYN@7e>1?&r_012|U3L_140HGAB zsn_wo?Tx>0`~TV2wfCT%QEhvBAIlWal&5wEf`SigTjWlcblg*4g+M-#kOM@#saD{7 zfZaDl$c?ppZ~uWUfNFg!pnc%7Z^;LEYUvkW&w4LTgDAL+KSLbTNdlquACZ8oo2Cgc zlfs)38hX!r`favBhzzq*|NEJGbx0I^;}|e131*Pj$k^T<>lnuveb4cU?Y0314%Wc> zi4yUu!r*T&{m-LvofwPplxkB@e6G*T&AhnV;CG@mu>O4GYvTXxnJI`=`z(NbNI^aR zgcA#JHsf7@F8?INv!q-?a)Y?x0OH0bXPH77&$ibeleWJ^Fbk|dS<-rQvhtpGYO>w)$%G_Pm;c?N z__sgS80&%O?p>|W$4}z{9x&t<7S?j$tM2Z>yURb%4LUD3{l|Y1>_{3$C@3%90YMoz zNobp&&SMjIcv5b|^BD%x-{;bQu>#_0T_a}h;aT` zuK&9y{s2b&4W2qCV2A)7udVSjMir3Y;`+TIIA{s}?SlRLhrhy(>G1wic@J30O*+io zWJ&*c>n?EYmVjBE7EhJ$Map+~8!`+CnmWzCcdwZc6xF=vs@^3=bzkhw22e9rWakDOt(wLofyW{e8u*8LOA#fe%f*CR!VDPLKTZQ# zlSv@ZB&e)voPe9eRp?-u4y80gUeTZb$S(iyj;%11L}5Tl)YNNC2hOJ6eTTgl*Z~;h zn@?boP|C4MU?T&iod0%*{Pn2(E9g6fLHlML`hGZ<`*s$)?LoIhYM`!~=t$uHx<0EJ z(eCaFY6{GvkqYX^yjaTvA;aB$&%xY8Xjz~wv& z43TaQL!WP*wTjq3Nh*kZqih0Eot$14PJrnkJE|?xJ`PgpNFqDh|9Fwbl5BpzHP7#5 z2FLS41X%2OIT++@Ju+nFSh^YDBszBE>O=OyN*|NOpw_-M=rdZEwRx=&iSa#EHOF#EiZjDW zRrl!nPY)CHJj=JCCol~F1480|Kd=kgfHBI)s_qVc zUjgI%XKFG}pmmOVA13!-{HmKI6p=O_Kj9ZnTIdzkbJrKrP_VSUDe`N(Qj+vV6*Z=b!22cr5iF5_R*wFvJ`X>RX zAcT7xsND!_aTeJDvM1T|$hfqzZG(nA5SiBj{v#v~#)@-8to%vtp8YzA!c&40J^#hs zv G^_>s)Xy=5ZKfZ?faxf96@_JiXB_AasPu|)UhV^2co?8yIH~Meg@Z3c_hjL2 zIh0~lzHG<;FWwj2t>Aqx|IhmZm6kQYuE@R7Ze0ZPgln$}i~8LXvAVd&mcT*3K$#|mmc z`v3g8%QvxBZ>osSgTqLH^&%IzPeKx6%VFcn_??aIeR7W47 z^iv0jdrScy5%u`1+FJvVYz1g+qz5kvO>YqZxs8#9#YB+zN7E2M=}ad9B8&?$K38Ta7zd*J@E zH+ie>*QY9?6&KrpPaNhqnEYZAfNkL>SK?6@O&$3XRBXe5prN-#pBxT=UEUoWK@mn= zjP)WG>-KVOK4rxN+aznyZI;hs7&hQQotT0SlT2VC)}Q%Dk_Ptq+02FTA(blVb|j(! zs_B3<&(BqQo1uMPG~xoglkpqhJKkFxkO<=xP$eWHehFS|Qx^@_Ko|s)Fy1Jy{LXa7 z`V-QogphFSX80&Yq##e%=KYz|ON5X69=P4XJ701?XDZ1DK3@H2;GgMnTqX)PJb_GM z6;y6JK*EtlJDL&! zEdS)+78oO80OyM1ofK#V*~tR2${v}>N;D7%l#ka#gX|a?|0Y+PDbEUc8OmKz;#T2& z2qCq?R1iSa2M0&LDCJv+&djko^vZKy?K$EYm3W1z!ifwFcJ$VPVq?R7{Rpj+ zt#(Dk!1FgTdzXebEIw!PywNaByV#<>_(|VJ-L(&N!KTl)qw23my#-xQZ-vALSK%|I zgD?fbcDKE3eSEc$w_?2+W8kl?i5yh+e(DC!$qYmi6SjXxf5XLJ0eL)o;wv2hd&yD` zJ`Gu(7j`dW=pcqGURHr6mg@%-`~GR5J~p}{q_q!({~qFUHeR_Xk)*M6Q(>IhFe z(f14gLPH7xr*Zl3{d|=!f9V`t)iX4jJ*=_@eGq!p4bVY)WQm);wo=;5-H2Rd08^^- z?+VvsK#R-03X*0*IxogJUi!4`mg9N6hXp_VsI!GNvLp z=`hIYn&*q6(S5(lrel^GF$vj54Wd=mMI@XPj{`(b#(KTPSS0gQ&X6XFZcaV~y7X?W zW>-=ab$h$PTq1s&5E!nyb{nmg%Y3*?@`ILhR6c~8=ML;GPJJoWN7>=O(IZ=S|`RNQ?{?x<(P{5HX zJ&m#vD2l$YliSmH8V>aOxW`Ob&zL4U~~E}lMqSvlfUufPg>qtrSHSI zA%L<{`ao-|Niq|BsDI(GLq2Ecy$$ao!Q54kY z+{##iYVvdKK%z&7}YoYUWww9~W^!=NFtDYTPnJY(hmisEZo8U>B1HfQwm-Y0({i56jFzg%8R0rR3*^L*b3MDYiye zHqZ?uDODxiHzHS%w@J}2@!U5S7t$MKwu>I4WK+$`DLYjhZTRwckBn^Pm*S=o`(R@n zQ)~{~P@dwte3Bq^7a_LT+}N5O^9yQuxz&?Je+C-4YFqs`%zL)zI>Wd{upGL#;6kp0 z3G*+hF{|_jyjlfqt@Lp9?r$?)nf^(c*DPh7cevcEwzoGsG%x7(bU4d!1s}beYY9rh z=f_YVoD@AN&y+o;S7NHXV4;7a-7G{9W)CJMDmjc+@K%rroX=BIyM3L#Jf`+M0Sue` zVBZc!o&?n_x|Hr6Qx8{1LfR&se-)=xSl1RzIH~Lh(ch z*e|N8$xe*t&xt&cYW9Dc9ca;r^B{A*{^I<(7K_G-;A@CT7;5MGEyRy7Tv_Eax-aLQ zr&DN;RA#rFVV(WVmX>m&m}Qpx`b3nwpq0@>^*V@q@nXjJCX@R4`9Zw~=>d>1!4|D9 zHPNM3mlbmpZ)wAk&t%gqNa78dNvXTSnVi2`u0(B`Zu#JN(2aiMM=NwKniphH_wrxN zGl^yjJ!pb-a_4Yl1BA8$RK zcyE9g4_K6|^opH2Cmn72&YB5XE@OOmL9>tA$|b2<#~fi+NLQGEF>V(u-LF_3!LL~) zn06%&qbkOtxMVL<#Lj;9hn{6&GmDl&*67NxG)8XG{F}Z0o5Y*?XR8`(YG0t?nL49f zbnsU`@94+?>^^vF+n2l&i=4t|3&3%>lTB8EzjH)tIpaBM#Ukha+uQ3tG3Hbs#A3yS z0kwgB;x7Rd`scAH2G%m7;#y-hflra3{e^ci#<Ss5z{J2?n+xv!ocE;@Mg`rx1y}Z89}S7bR-%Ph7<;Dwk50V{Z${QN8_*udrc1p zrOpY?qHXSW>p^hysCX`5NVoo!VV%lcWRG@sk=9H`Y(kanbeQ*(f74&yN5bbf8syV3 ze|WBo6<@tLt4E}1FLtvLZn$A^NB&J`Z8x=pike5mpdWY8Uj|bA)WxXb91LxN4Zzv+ zHCzQRfRJAVkRsjradQq{L+`{Z4}PZLc4?6bP5I#_MR2(R6ahBtCEHe<&QBOzz9D5ui zq1CUKkf=vMs~-ebUy#g+_o^Umpj~jmg2~gFDNm^T3dgLuv2`1BF@#-{(uM2j(Xu12-1S%M4B1 z|I(95>iq{YxZ<9U1#H@)NHV_UAw@S6V zm1Qe@YPSjskjpTTWecF$oS@-pBLe&bvD!c{50^wsPw~aTRD~kqjHbm`rjLiq1*sdF zph~Vssx?DqIMX7B#C5ji$5}$#O9kr0$+PV&?uCjc_Lrm=Er95SjH8f|qx4_I#KEZaT;fFdPN6^P4_(E@JJ>M4612g5PHex6-j7Sv~{gk|;0m_$ojlRoh?(oYH%|d#qyJ6UOWPz4Kc zlF9X)=4P?_uL(w+JwnuFO8gB31ZE$cno-X@rQ?E)Q}Zu#CQ8q z9EM&4vvRz2*EO9PJJ8m6u7GZ}aaL2XYQVw9orwe$9l=ZmBq$8EE8~MqDO{O-V3uOA>H!;2;p|~$8-MWWUKOBBvCEoQG zFxZs+RamM$M18g_wF%C=1H=NW1_yBMm|!`>tU^{%4^YSQw+Ic?Y$A{3F zZk*Zz2_D%a-0pHT9a}Xh7wQ=0g@jyHP0GPApz3I62}eKr$Yy&x+-AUa8tQSQs`VB> zP5!J+-XnBdmT169-D5))XTv_Do`E!CBn?? zKx92*Cx~#8cpT8eQYJwmOo51EuS~$_6eNsWwF%{X(0jUG*>Ed!Zu@noiG_Nk;uK;| zRYO>R8`(LMbK$+*OL*h$vAgg2?ukKfwrkt*6r{I5b#dZ;(d+!v{g(|~{O!OkW5?13 zzPc@ZNM`6$9Yd*O%-MOCyN+{vQ}c0`;}l#$O}&=;VO+59MY@`P9x|VyzVspf@L!w4 zzZjtmpiZlJGw+UfdF_VP6nllTnNe1z|Gb*|R|9l>-XY=8FBmAoqwXqKwv}>+J##EM z&f4sb*P*x4dPxysBy+A8K))PicM>4MN|fZ*s?=Oh{UrP~`azz!P&AzwUsYMGe}EGN zV~7B%xts+=)H7zcsB-lJQV8C8zuIevXGedN+1^*k=~9jLQ#7&={LX(B(yI2KpL8hs z?C=b#Y$Q=<_o+EQ=e}!I6MR0p-*ZB*i0;dNjsg+tzUl1^pP1voN-o<6 z$qpc@75Tgs#zAk!!(fzff7NSY1&48v9;F(NND>ci8EBD}$8!eRoa(OYS9z zy~i)NE{HmX^&OQ<9M95>wW^m)7Gg^C^{|)ux4p*|Bb}GtNvbH21D(q}m6f6{p=Cro8B+iHsyC2F$t7By$G$1ylOo9HSCQj)EWYO%lq^|pzIWT@p=sL;&Y>xf zOV1AWtQNyw&t3!H_#*Mr$_I_XZq7iC91|fx@mt-eNXK0k5qr{1`1N^$u8Wsdrs>Z| zdpMAie#{EDe>&nrk(?1T=U#7gd!ogW3A^Kz~7pS zd+H27H>-!bcL*hyU4dy6wshD1(w}D zj{S)4=+IPfmXC`r(^MS=nU#J0erZ0#Nb<^6P=;$pq{as^URA}34tlBN_>uxy)e`&O zt3NP0({Va;N8L(VMMuVz(qDsNw3|3KlEGs?#4F6{k@aMSUr>&k0Ps%uKr<+nm?2GR z-lHk-1w{t?xB#GoL`FStsC844VUdDw+_-n&jLS!SS)!d%$bFnz3TH+JiK%Rb^s|bD zx-A$|pJ=KHyFJAhV%IYFQ(n7);yKEwCrw4!r&|2#{}6i0W0f+!Q&{SPh}THja{@y! zo>p2Lf$;;-`Sc6gq{5!x!XT7CSV;+1Rg?O_Fsx}9@bOdA+UnEcBXbIf8)Ih)a08i# z8NzBy7IX-WBU9OXwI6%Ti-E-OyJo49yxH87)s&i{d6e~psu!dM5O$nJ>HCYPb`_A6 z?~VtT;!*8{^jNHZBlx4GoOIjM8aK&Jb>)pxPEdiizz>g0EC{EZEYJ1h`r107qOM-A zFjwlFidjEW>cS#B2#xQm+WspbOT0~R=KS>YW1g{+6Xd|=(OzAH+8E@2kXi34e9Rb@ z-`U%v;)_;3#gAw5*z~q>)(v|aL|ioPwx#^-!)RA;f@;5TsUgCvm>wU?G=#NvmX|3} zy;{8mR&}JYU{Teqq-`XcW(P>HV9k^`euY>iRb(0NM!<2(ibZd#3%uAl1t&w2Wwj=`?Pl@}l4le9-P z#q!uUeJ}knN#@vjiIw{XZccUCBaJfwJ` z(LA}?00_+FO&*A zWUX(gPUSUT7oEB3pLn-8l#F1_4V}I(pP=TroSJ(bvt-;yvM1DDM>!V7_^?jEey>Mb z$}>>t`@jfMx#&V680ZY)S_Au}c9w@ZP4#B}DIFOSf~rH4dvy3ptWqJx^G702rdY+=;C53%#vi+2}hav+@9i5hhCnF#sTIcB}>35RkV|^!{c-Hy z)P~KKXa|{mf-G!~-!^W*KkpF~!#i*|6ICYl4O%VlyN8cIh?Ezrk6M9cjcU!j$3}Pi z>I8{iO74}^XAu`?X!qV+JJ82PjRcoZ zEst+=XotLESH#1i(9&)*UmDh7`QAeXo9t&^>zXUfc+h)4(lI&tNSoxd!xRZ-RRXGV zVkBDa;!7E4H#a9sh@c-yh}MA|(iM_I%2Eoy=TQevcPMWnpIYM8h__nEELM(fD8eAzb@ z%=XxpD=3%!7KwDKms*{9v~2)QsYkdPp(~-CW4$0llH0~8lMM^Si*~$N*DVBz-U$E2 zhATTMQFF&Y_5HF#-PF@fu!j!c7UdC$<9|~UnY|064e#fjTZY`F^j=uQB|~0tU(Q~A zh&Vm08bOLg0lWCW;0RuMh?N73)^VKCae@yHUs`=BX~RI>>jBy|eo;5h@q*Lk{j9&@kE$13434Zj$HMp1q}xanlzKP+9{w(DC*K4J)_p{C)Jiv}$L z!>EvEHUFYIlp$ux`xl_$@lZ#2&(+~OeNLGNIZO7C=a4N$B%#8YMlCmt9U#a7#xu7D&TM@Ej92})C5?4lI;R03W{ zsGpDUo0r@AN0GaQ&XA1}xoSFg-^z?LYk7zwh=6P4^S9*UTt~NFeW}r!Yif_y z+}+~OSGbncxxKKhLovhiN8glibZGDG`O>J zlNG20a_D*4iAm|5uE(Tgx4r1+^5geH?R}Q~1Xw1-w^*vYB>7)}?Pv)Ene4J&Zz9wqw>4 z!#)n(6tk!T!~`(23x!L+p_%{+>fw|SGi6R9W(~|m30C&*_Ssvd;nF$f0@i=*MxNH9 zu0{3I2#KnRR5p-7d0b@i7&I4F!<8~Ku1k^)xJc64$E0bM>~L26cwe=YZU1cm_(Dah zna#n50L@g#k*)U2iPcdCRdneDZz7ln(d*alkjJFumB3535!T_Nt$$4$9}MC-Ko4K& zd`Y*F;cSgfZGd2siW9+;2Fssa*qz(>dy1*2uF2 zk1H7WM?W418-&zv`A0#`((dctR|;=pEjzic7GfNO=2w|ov2i8v?4Y+|u=x>wTWiMu z935Qt&&?TEXK(qJwz62#Zz`LG#VAs^xK`c|x5c_8A7VX7`&|d-y8jDri zJ*<2jQjXoSBbx{SCUg$YC2>izsvhYa{mG0I*i^VR1B7wrIu7bD&TbT{ydMQOyrAv$ z=Q~`CD1o6MfC0^8Uqdt#i8p2VG(Q;zbFUJ=%B`rjU(tqvnSfz_msC=Rw>2rgaE~_B zID*>$Dg_wB(toC^^7EsTf)5KVfucEg_1EzxtX@aOvOK>q4NKy!RM+mHiej$Ir!Cd` z6=vc>!xzX5XEJ|(p4_+Nau0IKG6|IM#7RTOo))g`u547$iPbchCcqiIsad~V_CV&S~96j|yIq+muYZ6sZ;Y2(2=10MfHM6mnfnYIzWec#< z;YM0DTFGOY=TN(!Zh5V=0`;eX?74?f=rp^%ruA}B^n5EQ>+42|ykugbg>szf8*`mV zyQkEmoZ6Pmf-kukNi zQ`caK`HDz+2EZPIT`z%ScyO#Uoos8dpTtiN8{hz=ydD!0>alk46j&4dG6uT{o|8hG(Ewzc`fxPezS%Fm5G#eA4}9RdgUn zbJ!_Ja5aOE(8*a|9MeEN_4q~}Xft+cH@!FRmL6^c=5hz~<40Za_(gdEYIY~X7wHP^Z?dkwK(UkNP*LIsb~AFW1Y3$lC{6O`AQ03*#^`itz_{~Uv0Xj|om z+^;I6e6;vYc}Z6AIDj(5=`mGEsq#7KBe~h-J-cX4GtGmT?o;(ZJ^qnE>dleJH+OR_ zfwaJLBq!)-ElZ!9v%OI>5u*bT5^QulvAEDY=~MXnhSy7vYT=u{~cvV z{0G0DSfQ?_<#TN+X@Pny)|2YXk042seY|hhxAmilZ!E8+`FZPu@F+ z;HD%_N0C#H#@F~~=-LX2Of}41U~QG~QlAxR4NYq75O-(Z)e9yC7)}W)Qdt3XFSWKWwo2Zy z+`Y}_`C3@$=f|6Xxar=(b!4(DoVTlg`27|Ov17}J;f)EgPKTyZr#cnYM5o@~lPe=M zF4+eo_2+vvvWoi_1zD;2pnh8@uNl>$+MAkgGr)X|wfwBak2+}LrO+j>POy7_7ABwa z7SRRr)0#=`O~@4r3aMxp*g$dfU&``m$ZH?r@B6p~_%Z7%QbPU! zjE)-NKc1BVkRtsGRJJ^8ml%`0v*uh5`xFTrR}oXEq|7Y?BmQ>!d||HHVhjmvX4+q{RJ+3ouQXwkhI`G z!NFo2P^WHDy`&N6vxF9Wq-gujE{LhYhkRswtp@YfK8d;O@P#ZOc36_*dP59$h^Js= zL+D@*>*b9j#mi0xt@@WkgYYOlxS84+Dd`ZU=Ui)0zTmJa-KN745QEW-I0bka+3nI( zR3|^J1ydeS%tJ^hOLZ%!<@EhQ1V5~FaVQu-pyKjsB&h_{ir&Mc)x`VCR1_~Q`?!v?^7}?dUSj| zoxM~)q@R?5!OB)jQy6m>fIp%|O3j57F@ym@?W>!%n;(awz(RP|qmnNKo0{vfJ+ibG zlBXTT>ODbptLdG^8x=PTfi8-qzH*$|@Str7>>@W12$t5`Eb6K$V&qzwmRhw?#qX^m z9oOlokEDwar3wFno$`FGNV7k4x~frc?$=sjI~R(sg9u!!lbRT3g+XpPtD5kX5De`P zeWVPdb)v;}IFK`J$Her0*;f%D1l3`=C)B(;(R1WH^Mky`awNs3;~CjC&NaLwmm_vj zARRX!JAg@6l&2^HH}t>|^jEStndQB8!V%k@+XWRuoqWS>++4|}{s2sqsl4sg3i)v{ zA>J&oijZ^9d^Y>#_V`20>A*&TRoZ$^33>3{UKYlBE#cQ0+kIl!=CZU<Figl<94@}-P)x5UdC(e#$Z`EspIS;o(zU=Bxlsj_+ef##4r12F7D|H>9cj^o0$aN z_Ga5K=R9Cf`+nAHGSVd_e%5^msgo0|Xv(B*u4ZAPV z6_fob&%oGXCNHHK=4VkgATsMTx{#9ml@LGMs+3);{_U?o!6iD)kAg?IeLYeF_-g^@ zTkoZo(w(oh*MT{@AoUiFfaC~22vr3empy+v%MkEtZYh&Y0(r{2FWk1n5*o3_hE zO|J;W#3yoatWO*Gv&W;upEI>j?uWdHhY@=j>S1iuXbNy4Z)GxC*@KjKGeqicyPS!T zn^csJ``KROBJgI7D8buU-sjOqdTl>4&RSCJ+UZh6ue!G8>`>8J*X|A5i#(AD9lREb z3@RZia~pJ6O1WTcoh20=Z8!?_FOcm$?dF@Iq|Vb$6oTbd0}Ko@2+R)}K=&sr5VBbQ z87-VBxGZEDKP~iV=I0OI$+wLKdG4;ei}ObZ$h5p^oBANO6mhK{sm{0NVa6g?ORE9O zu`w-yigUA60zazm!{8An4$n#xN{ZAT(ip0^OMO(s7=UiGt=p+Fu6N>gsSEnGu$wc& zg>F)umZ+2H`Hk>u-#Z_48C(b1k|TVkt>)VV)w>^_uXQgD+gf@Q$JSlnEPflf78_<5 zpguT!8Xm9-E^vFqRjnmD6CT0T)k6qP#DqpBqgjl8L9FvhoZJ(F@_CrlL?O=v@7xUe z)((=)*2!_i&4Fx5NO>*oC(XZt9*BQR^51&1<`DbEiJy?5z^FnwDWl4LZf$>@*P~nq z-7@6-;8?K<(**Q^`Zxq4^?c8ix5L~(ZmSr&tkW(P>!gQ`Tt}4$xmF$r0+XXG7icaQ zsfWAlTHqVpBPHo5l5AwBP&2R&lX1-())5c|Ee|ltdY(7ZYd%+lE2#StWDWJZ_<1(A z#fYQGgODnuYv`k+oAVkOCfiGZvZQy<*VQVZu5oRlxsVU9$%PLRz`A6^k7gtRB?BG%DoD8TF zNp!Z}(Y@W%6AZ>4oIc#WEl;KR#CzTH(GTufE}hu}E~21l5uAA zUJki!9(gh}%*2R%QEMqg+XMLD^}1ZR$io?}wHhB0l6uG!S@aj9Zp7=#4LUwBYTkr> zp_bkd>qRK5=r;rFBI?jioTbaV?U~2IL+Gp=z!>Zmy)3Ic}zdCO4} zB}Ch~zR+p1aY>Qh(O1K@k2w8;^{d;s%$x})Zf_)E)m(!6`OzWwt&?{<$MDtE`<+pp zHdaGcuP^-z(gZx+v5)1MqILQSs2>oBcs%u%HGgzsot-a4nyIOLzZN6gpg;P=C{r-g z8o4-mKW_yd7g}FDcllWK05Nw%YD_tf)!a{HUH{I{UYM&YGOdkt`re(u`z#r0IPB(n z!BO)rZTGxYk^3M=|LD^+of%uLN^-qe;bq){l`Q8s+10oN^Pzz^>~k5H{PvXxNvtL+ zTz=a2qgW(Uvf!%J{KL zAg~0QO<|jP;4T|=ssCDjeci0&xf%-2LM&xzelm=hW&S2}Q)#i)@M@N8vd^7^NG56b#qR24Hp3V zN$ zSrJwV^|!tPLA|#zCD-=8lo$Zc>9b~k#xU2KHr`zcp17!E-%}5NdTP%3JdzlyyfHh! zG{__9<<=$f(BngK+L+>cqlH^i$_fXpUs2hK4aV%KE+4I74#Pt3|A(}vaouYIjEe!@J2uMqJcXya{cPtR;R#<@a9ZUBUUNM?g)Q-w*yQatyT7)iqx37Jy*4*Z*O?og-6rv-Izg{@+0rT5Thdede1F zRako^5^@75MjSAW`Z6eA3pVlO*6~cWi(J{)x>;vsq;xTRp1zIC4r=QLM7NSggD1sO z3l(sP`#vdz^IG5OI}Gxgk`BE9dcJ#^1Cw;PT)IA ztMV)??L!3dbZkTYZv5#>{B$eYPJiRZXE?+Szr=MwofRIucYo7;i;YY79Hx>xqt>7^1gc7};&>jv7yrts zSvbZ&qa(C!z*7uf>5(R`?phtFhtWkH91 z=KVEPdr2w##A7q41=0@I1#d{hCEY-XIy;1;jxBEI9x&!E*HWPYXdaosf3!NLUqJJ& zMIN^|_O^OilDwZUoQ&Ox$s#_CE=wkN&y*^&xPm#yA=Grp@|k*WB`i`~ed!A)P+yoE z0G)tjv>fqb+A>-=*S~Im*)p%!_loIk^E;z<4!i10g<^tG?^7fo1hm-_uILi<5iO&0 zP$>pvLRK?r)-ugzsgv>N?mt>8HksO6Q~1cZ!4LYwhs@`$O%WHi3Zm8vW9reU|t_o%2dr}B|>6x3rNS4SJXTSmu^CF zO7F#(Tr{9|rFL3r912f_GZulz+A#cHQLlsZ=)u46zsT>psVCUh1tE23Qb(@&_(o;A zo(5LTvLjjrJb1q?`(tewuw1KLJa6$yhh__!7v!Jx7brKI*!r)08Z6Ky;f3B96@@N0 zcK2i5murvTePakXszVUR@^~-5{$*(8_6@%Bvq)^C?DGu<0iF>}YG1c;nnV9a&YXib zx>R00^9w@sbI^qytP6axZEdpmlP3={oql40V*7nD{)qi7?R}Ps#PMl1(~wj)w56({ zhR~EBf9`Eh6Lg%AovXD~`ubKGDqpPSoHeGA))SGJ@m0)j{XEe5I`$zu2OohP9Da#z>l@hEgabIa&`s*xO!AByFwClp^X!U+fB`+(d z|J94LM%-kAhQLeCQ16>$!n$yeJ5V_CH0c2py-KWnKw}iF55h%lhxEe)2?G`l-YI9g$LOA+-a>X|{I@ z(2^6G9Bz5jExkDOf=4Xm%jErQ9ifxD#Fp!k23Di4$lKf-8(05Csh!5Z1PJdK5!WcV z)q#iCml?~ZgiHCwZ2X3?_PzU7Z?Cjbwr1<72p`G;=APy^?6e~-DUT?mnAqM_+5@hv`6G>3W6yFLoh+=zVjf+zO8V%qLd zLZ{Kh7|jh_M3<`~46gZ(%eCqKXtQ+Vo}fEai;c^nXX3G+Sb%iBFe(PVhi#B{N;1 z);Qq){fc(F7qW8se5-EvK}OnKNs%Cw>GTX}D2ypOw!J()Eggn6k}K0*imtCCwexD4 zdb!sX;HG&0s8W0~>dCQoV$jn4>|f-dL%RrEP{N^A>4+l)pD%hSFat@>i&UF-T( ze$C?Vk?5|AiLp%cj7hZ~G8Stup)CMG&UY@j2P%NAMiE_$?d4A=#JaH8Z~NLO z(v0nln9xdy@z$Qfur=(S(9?308M3%FNi@z&1&`U`I8`jSphVH))`&Hg?xZBeWSFz~ z1e|Tk;J9BdQ1ZG5guSy;pDPQuRcC>wf_|}#oleap)#}}a%&lTN%r>Aw)Xa_E1>D_M z$@Uxp^}o@Z_T$~HPd=x!J&>qy53gPMMxNM`+?2Z!$Q*@y9*v<71nGP zHcnn61(2wmoK@R$24j-fkkB2R$$`j=dTY^8cguhI~skDf(QxDuDx zCw1|R9Db&*wdg9ebtvh`Wr>&Nbv08px4g|b?`!EiG7{u`#zAypEPY+6%XnRy>Z28| z_RfPAN0xUBWEy6tn>%}77%M!_xn^B89caNsOsZ|$B{tu)XkSZacZs#fDJE4Qm+*|3 zLBWo3hN&F4LPIlP3Rwy!(p0y;Z>y`M$wf}skC=z^dn6&(O<6*UlAwB|u=k4>YQKn( zsmjfKwuId-|I<^O82WZ&S>iLMohrkTjw+w1^ykmv44X$~4n*_Yu%OxVW?cEmO0O@Z zCv}Iv=luuB(s>a>jEUz$@V<7{n7mH06V~aLQ=*H+xpfCSk(Ly$+-Y@94Bb9;O;_Ju zFSV~z7#0#COG?GP0LgNh@B`&iXWFsj_NUx^Q<54tN6M;km>MunE~$StJrAT|XTO*< zoN1$E^%fnSnd&haX#RnAzn@}!#QJJ?sOym* z{0q_mYTca8xJ^4>U%KfiQi-JE$;(62V-YtZJ5UOyJoq8;yY*oE4*Eq$b`km?hol z%5ZmkHcmTK@o+Z3a$r&Q9yTd*D_fRHELG)WoKtFg*Ft@>2?;UYCF`~KFHUe58O>;s zI#i|sp=NbVsc~qJD+w!psh?K$D9~-PEYSXwUeD7SuW>cu@L5Aq!^cD1fy$2!JGDJ# z*Eh1EoTvHCTb4!Vd$o{O8cIzZdZA|(L2)nQr}^^NjqyFvloRv2KK14n%g$IA-{@3R z@H6dIGzWFlRgDNFiK}TtzvcLvav3^}YC^`^r+q+zr04Rh3qLJNS+W^!6%{O(brPH? zuh3=Zx*o0c$U^bZDL3l?iHChE2Ems#=Lf zeREbk_lzTruf(Le!~)fl-3Edw!M_Qhik^Ei}czyd^ zBY;|{GI40~>W_>-W`U|Pruq02K09a;CtUaJ6+dLrA5OaaqyW1I8RxcPp9smWCAwIX zB}A-y?m6T>tvvVoKVMb-yE0IH6xxgVVbE4tWpLgp!7oQ;Mn_;y1_z@ReU=Ib|Kw z^Sxt8V19P#eA*P@K;q_PQucHEN&5Kk`(kVVj2*Aw%^i;ItOU_C`Nl<)bKuYf(Xfqm zJDA=%Ewdb?tvX)4)Be2(7iausfaHAjo6-!Ikn*1%gJtFWF8l}4)Gl~#m#w}G{?!I72Z3?JF)Hr(>a-+!wr_-fd6bce80bjovSLZ=g>}Z zOJ&g%)?dNj6Qb#7!Avfa+(f zI$UPBAH_X&*@Nm0drI@-`$1l$z%N;cKer9+uck=-aIKlrK^@druuDa;epY1*T zGl@Eg=2&)s6OeHv8z6>#xi663BjSGRPsx{i$SOtfcL4WSviug5_`UO_H2#AxFA4oJ zzr&ZOb&=L;3SgO8v^vzNe8cN=ld_ z&;R6*M2~TAdmRbHxT^p$>+_lPrpI1wPEejh^B~4L&Ya@|A*Hf~%q)A<8t`v^DZzCr zuNxE?9&9}S_x#o0dUpTIkDc`Btx-?u{fN^e%wu!a{jf>{nuw6lZ{L?>z+dd+3d8_N zpt@Ot21vVsc^of96l0ZY2#|S}>*BTO(PsAf=J*ewViBON-3+##u0{Q>r2>okX|Bp3}7e{k1dGHZ_ zcz|F(4|SgoK!{PTVfBd=-9g!%l*)hA#}(aA37#Jks>zT591nl@1u}b&!Jh=Tmeyzf z&!zl7o(V5CCxEuAM&R=@>i8fYV~=h=)B{PyMgCTq;XkP#xfE+2|GZ&A^R#T;7g1)DkDl(>oO>2ci0=ixC@O4SY@C&L?Z?>Jb58Ma?4otc&O;#Bd8)K_XudrRM+TugKKznFHBuR#0cyC3E&@$8u3khlTA!U`uQ_niLHP>~kySsa#Sm*w+ zUX$hF67=*@xUGOLZYAFGQWpx`bp>NHa&yDh z)~reJI9XVT_pMSnv?}jztsrAQ@wzi0mgya+jW9dSg|YcB9A%mjm^mDxvYp~f*G_p@ z=ro3ghDJy>96NSQrucPETSP=e>J@uQNy*!s(TL)JamRRkQE}UA*49U}8g((Snt(nS zAl28)JuHpt+vVlus#niw-M@dKl7oyfpn+aOLL%|eEDB|-a7<%h=rXJ#@&y4U?_G2A z9NXn#rLSMVnw9gQF#a)d|9h6-)5dR$w&9zE71_+TKf0!aqJE07MU4qMtq{{9mOnJM zv~YXwEiIW9Fhs9Z%CypX{F_bu_g_U%94mg9H-n8Y>I-u>L94@8g^ee=yV3wafwYqK zzMl7ir|!+8n1U$6bMwMIn3YJ9iwM}DuCI-9Z^BpN+_--~FeD`8?wvbc$tfvZS5E!! zvH$%e@iBNt!uM>R&d<-!q{V0|`*J)x-pQ_`%QW)yh3^_0XPhA;leD%jv|Z?JDjm7) z{`bHBjSExKpN=g`M()r)1#^Q-KtRXGM2V@b$4%{0=BQV>^g@xUU9{rM?(nmO8(2IKt ziK)J=Rulvi6BHI^a6IMC7OA<$D!!;?6pgb6ohUql{whLCUY_pLr%#C!v$8P)YS!L! zI7i!Ic*TmMHbE3m`@a==#b+RD#_kP=1;1uxWz905mocatBmrZrnx*i_&CCpX`V_N> zj+Ir4n3!0{QuOhsqYVgZH`|WQ%+5w-HMO^g{rK?&vvUz&v@CdnY9#yy4Casrp{1ap z%OdJ5a+{W!nYp__w_%X_yr$6626Ue-U%!Q{OFCZJT~m#K?x7?_=I z$4NYL)6-AwKTA`XZI5AKW;Qm(nmM9L(XwD)B`P=WVeC<9!(zO6@h!qu(YBUUPy$g& zYQ=9m0_HVllA{z~GU^KEyZzDoprEC>d3e}^|7eHPsh7t+_x4MX3RGI;7AI@Q-|Z+R1HP;z@u5dz=Fj1lTt zqAE&C5t5w(tIy*zu&Inb5g+X_rFiA6B1}w7yYOGI1zKB8&1iNlKO+%5QSp$tU~ef8 zgsrPY+HqTb{S^Egi`I^g6~^iR-^OzxUMa3*r%0BpSKL;`v)`n1r=c?gJ0}jO%cN7CEDryO7Ze>m`m~2-O5_)b0T1K0Z>&kX z99F07#%v?1y}gLoqjbHtGs^&N7=)?r2;_yig$0wId)i3%OFiA)tu&2a#2>LAZ7T7e zYlzyoFfcG+ypSpBE|T3@AQUmhP)yB1+qwE>@=x%8%34Q?r}mf~I}P%)b}sQez) zuZpL>Ws94zL8LD)A9NT@ztg}iEF3Em??+NZdZc;vL}0Y7^!4`s@O`VStSkwoTg*BO zS8aX5h~4aO-*jd`P(_mDu#tnmg(5JyguT3!@y;+!zPQL=<%pXMFV90^NX^EzJ^7q4 zi-;hFOdXsV!!OD1(}LX>M@>DCkBKj;U8t;dzr8_}k=r8|drf48HzCGP`Dn-b$6ODC z?_Vb;_eErRJ7OAo>~w@V_%45D^riu5#xQ0=W#?5&|EMsQ!0eQv?4mmkHqW=p$p6TYK)C8wr|c>9fIDX^ z9aD?%{Dyn**GJ;HFqj6j^JMjnAXdPRi{bU7@;0Z#jz4#7`6g`P7K|lsjk3{T zp`*F!kFiJJ89EFOW&Frq#uE`#Pk^;1MEZo0oq&n&XtVN$SFSl9%l-Jw(Tqq(ydIyg z>RG4LM*GfSAl_;yd~F_+xbGVTL`@$ACuYCVM9?42Gd<;u`8@W6LkGU7cSjJt*gY6I z_IG}sBOVj9onByDBd4MiN@C$%`irI;kG2rB9v(9A4d#`Us1)>}q9NVjf7EXfRRp{C z&m0jmqy(28`R3%}(N+!ZQ8U2t;)?8eTSI}_$>qFQ@%U&9bm}D+_%vMhA4V3ZVSDE} zge@M?smH*^JO($0Q~sG0n1&?O=PvUjzJh3c1pH+b{v8`Z_@)s@?K#q;uI4EV7{vtH z^pn%4Ar3ojFYEIk&dL8+oZ<>F174=t=Q$T(MtKzZ8ISr7591IRM!PHcLMCuT&ymF! zoH*(?oO*$t!EdQu(>w6PVpKlPk!}X~uu%Z~;mD+x-#b$}1l2RX7^$P3UT1%yh2cMB$@Ue1HM#H5GI#l?^Uz5LfB9zwH)1b7M|9+G5P*5m zXb4RzEkG|T&aCbKSpNTr+eDwkogj`E+vBAIC(IKeeu|^M!^14F2aVN}`zB%V4hB{{ z!{xu6?3B#R=Dj&<85zIc{(jy{8pA41E3^dp-E=TcfbDQk`4| z^r#a*3-_brhf7%E6kjnd=sI}&ni*%|*N-{X6 z@(DB&@BX~b!jv62*qK9vx`_`lP$Wz{5+wT{UmeV)$=SvnT)uF`hZ$i)6r3oco~*d; zw4U18k-MlD zj>8YNEMbUa_-e5Pgt#uud2Qp1@|k@IyF?7;_N}eE@P|gJ85cqE zLXon&!BMX#!DGe8il>PJBAa-kN<>jT>BS}Y(b}}Fx8K#XWd|8WRx^8FtD|) z^m77iz%PDe=PC&91XtM1M)sh)o31>p_b6St85J7zu{uR2{c060Qmy+L{8+asIo z5(`TZgkTbKa(p7n4y6Qw;)qIuf{``F0Fi_8shOEb1@IB190l7`+?N0+mNrBMP^YXe zmvf>pk7l!er8+1r;g`wU0#kCFPLIAGICqvH5c_KoLR(sTf|VdvRw zpz|L;e*8EaI_NZn4n$SC(n8~Ss+XkM32u;h*kkLiDv8V|xX%%jki1yvC~!Ee&^gkh zHkrOCdiK9h*TWLS6V z2p~M_CD4Km2O=F@1VJ$|?9>5i`nbkS&Zj*}f84Q=-KJCTKr)D-kwZCujT5&Of|M9d&T!DZE^ zdGTnMe*x{i2M;*ZFY&PR$XpT7`}m%L?};CTvdIO8x1?@%V#hC6xSJ0J%S7=?K>VJZ zmL_%c=1q;*NSmY17wd7@M-o<61s53@Bmj-n_%6Lk1M{@M)riWkKo94>weE+}Hn@w> z2^K;sfx9j)E^h%b)Iidbkf|8n=n$A_%b8(M$GQ1`2bomm-t|2X)Z#t06wHQw>ix6nGa8Lg^ z7<=6hy;>SHbCI*#c>l&vw5i8om$NxRxK9KDYwcZ+2?%} z8Q3la*LpoLu%>{hmq=9{A>cu8KxXC|uRDYDIN^vkmI$sNO>T~3lRbdN8U+<4pKXz+ zz@hFBD%~wF74Edp>JmK428ZP2Ee}NTs_;-`xEUXYk;AD99vVL`-Or74T}k_CkK@W# zc-@oiuYSNTMGV>FfH51!ebsuyU-IItK6haRm%45adS) z!|pT3Kbi%s8qTSg%?Ca6=H!j7ts&XjY$QHon@J^Ory*5jX5J=MnuV~v=3U^GfrKby z!cd3?WA1ULct-)ORFe3c*xv^eM6>a;HOgdpEk@_+%yMwDMKUrnf}*3(^Mrctlh;cJ zW2*O6Raa|DN=eClvdr08mi{A&E$G`{Lk!s;VvY46?D%KbuOxWI*{NW5-azO+49y|3 zJ=tmV>i4Jqls@LP{&bm#0*eqM~E ztjaHyG5hmPp~&+hJ3G6ilN_IhlxV}J;Sy7sOJkGY?~d2H=1>Ak?CLPyUwsk7XrO0k z^jp!2Bx3m3*;_?mbX>M4$`ya#s`E8PSw%Q^%_Hzd92R;dc2M)Wjsf!zG)`n|R>)s9 z%DylceZa4*1V_s{P$tQtyF5hH4x*23c<0pKDsPm6kGLSW^OH#k$__HnJnyFzoup>G!Y9 zdRb4q#r`Jn9zK=c%ZgD)HRHE9%y)}bI;>h8!^1EdH_zwcJhzT9XO1tjn8ScD|1=)K zyZRiAC+gPYo4-GWqVfKsklbL?s_e~fYibGv$6SD2^)~Ij_~hi#~pfNgOG>7^7SKP<)`h~u%l=yg20KStA zJ7T$V-%We7@R;L_~dE z^*XiObEmI@>=;II&)_J2ODHNhF&*X=x6v=q(7FA`;b~Wjl)c_rt6>UnVS!6c?)Ce? z(fteY=ZZpERU{#CjanSwWZ98sT0X5>>r!!slvE;4*fkj%7*8*sb(El~`}O?AoTj!m zQUcL3TRH?%zG7~y1J21xrTHUdC~sH&IrmPexeG%>LtSqCs5-x6;EwA-wMbAz1apnk zhRI|RZmd6|xZ?vXcq?u^mbdA8IAGl4*+NT?V5HP$6*xzj?*|y{lIoBMM8+HGWAhAgg-CVMWs>L~ym*hBCn5a0O=B zS#J@`{17kE`}fbs&e&sQoDbOg`ueUs`SuX9Rm6}RC)|~tVsPF0 zc|M4*&A)tavo1QaFDgFqCb8uRPw~fg`!RuQ!*k2)q_Mclr5Bpwzm zT^$wbG9I|YE4YGGos@pKEH`>dTgIV?(~=%u#Ym#6IadUMG!r^oX7P^M zvCOxykm_48lXvbsbajlL3g3R;LE*9z5-mE%f2E9Wp(FFrT-&tL0j;gFk9Z{m$y5Iw z%9dmQf#3bVOvS?l5B3SA6UKA$FaMZi$~y>wkDgN8RmYyhFT2GrQwyPT`7u|TJ0db( z1x*l$a$m^L!4w;l>^zndI&)d^>6o(2rugsNtey`sOP{Me+wimNy6~{&EFI@OB_}|; zlNAZ!GI-z62Fho(J9wS}Q=i9bO(P+1jeBDDQibvTUKt0xN_X6Vz2$iOq5ET5s8qVFZw zn4`w$Q;rhjq8AZVlSF#X6)r!mb@NKQ&bB~*c!PwS8c$!GuH&iVt`b3|_#*l1-Ru>m ze(lZ1zZL4l*PMWTVZPeFyuI^l5|aSla&{ZmnH&B&qA0;LK&izHEqHGA7HVp0)<8;u zo$Z_Q;%*chCmC~2W*~>LL{Q`$6iw%r_#KmE&C=JEc#+KbQK}BbE6ksE>o-;s;c3qb zd!q!2*--yt=!#dP)D8|M#@yK_b2<~mj%X8&62xJWjlKlk$#{b~DtQlrqM|7CIl{>3 z%-5tIGmi_9*6LGk6O;q}(okp{1})1y?rNNMdxhsgX7yltrqufwUOMD} z#jAaNmg_wm(YY(P!#K1|X3D0|A3Wox|7FAP?jj<+3$^~(pbl@u1eQid4@$*$??x3H zAS%nVHQm$-l>5ogG}n(IlifQwzJ4#Z_*Rlw*sRf2c?VM14E$UP>=ut2XTNQ+bI1k- zs~^nQzL7hd>IH~~yz+fx|I}2Ik?vOrTdCfi<_>NueS?MgU-x4pYT%t z2fa@|qz2p2coK>hcdYY^2>a7MA$AP&)7>nT{&lxkd|>#?CND-~%=twfpJuT{Y>&i+ z<90e$lRhh9DRLGt8`qkiS#OY(w0^>RLEIFv)3>eNvR^b7)I&&fVK(l`%P7g_n!fO~ z8dUD}^_jFQ`;|6&0q^#)O3OAe0RkYK`SDvOozITGLpCUYx>|4u^d0xYxj|3&9G^wB zJAX(7@F+^O1EpNgRY3K@)n^1(FkwkDitP9wOHT_qNJ2gPBB?*dmh|_rX=2P3u1WH* zWbW#lj~Pfve`}QRUSVgVu1-U(gfY)EHx*{&-*($~jk&(PN;EyW8g_R0-M({E5uY|K zKDFFnx;de!>C0`B)sn5{SoSh)Ysq?^fNQgs^76_T$YX4cY7nS^7Uialfo=$p zZoNoiBdubwrfe^~Qa?dpZ`wSW*Jw)PLM1VxQ}-%8J@9~3x& zBi=uX9JX`*buC_o%G6w%vcZaL=xfo)@S+sJlMbpz`C#HZFG%PZbf<$%Rx3&#F^+9DsVT9;m6W!48S|Qbav2#BlLqBUl|P$YhkirV)7nQQm0Ov-U-< z2QJ^my4N3F%M z@7hkoiDX@;OqXl>06I5J}a*&fY;)R8>Z zD5eHYt2pBy-;^fxdcVDsS?v||9p?*=WPc|3V)nx^f@rV4-`YZ_ZlSjj)fyUTm6i1m z3EQzIb{MttM(gLa&)m^QU*>250Fz;e-{e5-m?=Z!CF zQbFG*F2GP#Xw*eFRH*MeKi-*eOKe?>T+22vIW@I^M62kb1JW*BEiO8m4Xs}IEP}R8 z8>FG_4s=I>I;RjguXe(b+~`W*NhM`v17)pl{`20AXIx=;)}2UHj7mZgfv#BODSl*(PgB zw^}Gngx4DBDa{1k4_qRy8V7CTCcL|2$GcQ_crZhQk;97|?ESe&4CqC&&lF%{d@{A{ z%_L=?_WDkh%_Pdb>2uqQE9Kg96;mNx2c?VaWsN6n>MpnZaYD?G&%`?Fw0p~Is&iBk zEwJJ)2{+bdSRi(?Xl$nU4-YQ-hUJE|`p*|GZn{pr5poE_fE~4E)p4C`7Hidtb?WW? z56RjAX4^li7}olTDheMq9iK(&8wVQ8n5W`8<)KQlc$PvRm)%!vGtzBOAp|)B{t!S*%K0OKExb9>3bG+$w7cYKn zImSdyr(oE@Et}WArPM0ybcjqbv^Sg|;MVY`B30F|`n=mQAsELQ@}lm5LxfY?)Ss_$ zv8ttB*c#<_YjK}@X(fI|aC{NfKRe#i47vq8MM)=Vdgc7j^D8#9u;7bU6}vh6&GI`KTD$Pe5TN4073v zC0&4NkS5-k0!<{^_{)08&(ClOf`C<7-iwH+HPOgEPcBYaUQNx|zU$;b{-X~ID;8lT z7F1d32PSf#DO1bucX| zj7?2vO!UNw6H(5p>#x%I#-7}wIDVt7RH8`m{CmQQ8BU0G!9>lP2a>aJ;MVT{JgV@@aP{YPu?Zb<*-v*HuyUUd=+Kc$?cXyi19%5^mwVkBxA)vSNK$&2>W`TO~*-OLf)wT_onVN zjs1l=4Ie4}uSo8i3#-#BTCFbO?Nn2l-2Opz(ys5=6fi2OPqY5keL(vjePAI^?#OKI zw5_+JfcU9dR&aTW4ac>Qm;TNVpN09d0n_#jht;u-VJ~8jc7WS}L;7az;eqqv0T#~5 z%NJ&$&&pTXp`WJBXg&lALwsb>vbG1C0!b4lOf>eOWZVQ?16ZYkCzxWNB<=xaixrv7 z$|BJDf9I?+1epS|E}EF)ryC$6voLl(@Q5K zQRmxC9T{e{+dc0;{rFfsA9-jq4I`43BDK#r?Vv`w{>hYuV59w5W@CaZSWttboa*BK zd>~SyUDzPxxW>O|5+70XL+&gHf9HEgfb5Pnm3U!g-5 z2}GVM&TSo+XKT>5tD6(LD|z<~cQpn|$YD)6aPxqE56Q_YZD*VlhU5}bdQjyMROeK( zk`)@)AmiAo*x0Y1b6LnK?*gO8{&u4F^iY{g-#|%Wg)DYF0ao2_*-bqiI{dL9ZlhfW zxA#D@E%F6gHDSg=-tvKsM8Ng6muh(v(?Il4@_@7Kwwq(mMU@8w4@)5HI^zP~sx)-_` zSoYZ9IE=?bQ(yvYzJ1Ethp>_6LXTSiue39xrpLT#mr?tDag8G$jk)#%|#}$>Jw^ z<651ku2i1DtchVHbWksh)cb5V$xx->b!bb0Equ7iq(6~Y7v;7$>&eQ%&)ijq#1~!k zc~OqM95Bo<1_is&Ru3)`65 zEj+|9GHf_KyC);r%rcc2Oc=T@cm1Q9`2%;&Qc2kwi^vFfo#u+dhA#&gBZs_`+KiWC zzAkt4xC?6IY%HG3-{-S@v4CH;_d&5$xJzSW=dfMqUEO{kQEk|v^XQgw6|1b^&Gt2% zY-Eq&33r~Y5Ja)Y3&-CIyYeL<>@v{`23~ThROtvE<*nrr6*mCzJ`wd!Th>eMXA>v*UPA0OafySLJNj!iz3sM%z+1ahFrWVq^N|k9PrUR1TzcI^a zgr=7~P8A%VwipRp2a{sr9LUiqE3I}}Y!^ceS8Ck!R;R1ST2?4p_UzB&E(aO(1*H5w z%d@mtCrMOWyAZo}ttRNfo+7zxpEt1m5MvIEP7YLZ>AJw|?+MtgjH;p9D!>6Z7}{S1 z0-Hc!(jBX5Zp~9G`iz|rLjbtT8&Jj;@SWKJ*E$r4pK-Ho$k6aeTC}y#MJA@Gy!cMU zCisSJQMI)gRcZaaR&lJ+>k}tMP3wy3){xxeZydD`XhW51-4jRm{Q`W0h3uQZE9(o_ zYrh+;5rUXgoH34JcXeeKx7F1@kNl8vcJ%6p?8?n0-RS_`Qa7Jgd{KwHQh{YOv261h zO)FY5ovK(30>(Tu5@Vf@k@MMlsM$44nJ=0=qk^_Ql+r5OyDeK(m0 zlS7kB#uxIG;&(S2dD}Q@3{zdcU^{0845PMN{GpMD zs5Fs?>)|T{ohWq9MmmJ7as5f1m8KBS>t$*6Q|r5{u0w$jADQHsx$Z8PMa_^uc#>e$ zXB2Z)j>mCLk9&2`2`CfAM&_=%?LBe-WNPS~{J{Jt{7GM5TAj?zFh0_6eq4r zFvU!n9e-ly?$cQF==;}C7?z*kJ?#bxZvP!Q+hVrjaSLwYq~xhsf!f6Q6OOTYMn(SOJgsVEv2I zflXh`_J`!%DY&+*N7E;)gUg88r?BI7`P;qmzqB)QpU9Lk-W@_1?EobT#Y zDF>Oo;Pb*dD%|cLKUTHXR6JfvuzojK-`vyAHR@@F+39~g@3*3=hrVd=_aSwpgmosX z+}q1HQbBPlJA%18{S$>9Fjr(vg=tve56i0X!XTk9(r868?K6u+6wcu;kJ;emZO~S1 z?FI&bspll6ZXbRC={#H6m{ZnJ>cli!O}QrP{Ns9zwLTT?SIX>ez!tEl6h|cdhg z^l*LxMD0yLdrF<(UITe6ou?n6qR=XjP#r@c{szg39i9^qvppXLwv-KZbl^PGBhl^! zUd(MmAP6$#`ceW7afz0d>KW=H#wmxFu(P}<^Mg&_F_Ng1MMj(FAZ(E&d75#Sm|d2x zrT1!gxCZLB<-C_!-S^kI4$%J17ShhyaWBtsH$cN-W^W|+O$Rw6#`RhRg64+A?Hh{h zp$USUp=p-a$LoghMdKcK##&E0Y8(dIP`GUFb6UTnl8g8R$lG17lXJ^pM-QwHZPr#) zM2aO4I|<}tf$r6to*x}M+}`r_o;RG?)53r2IJ^ELRUY+;DIjcJ_L}N(sb;-He7-1N zirXUnlsH7ZIUVD4x*XqMqyaKRqC@ptnE!2g^i^;fYnF1(P6PVJ_h73BL1}R3RZh;1 zsZ8h|Y}*m@C5ve8!tm2P;dd+^j%KF)osIRf17Jf+77w64nD#QrtzMIK1Sq4;fZ#ev zZTB6dj=QY;y*|(1&9<8Vfe_;bH@a>T{M*F7q>|y{net-V)R_Y)Th)i`=0Re}^z?LU zxdBu>87Z4iH-{dW9|VgTeg2uq;zO9VNC|uhLKM@#GrbEzv@l~7^_(9ipCsgB7my+Z zwAv8&Z}eBGECGKg8ZF(*G&mN&;U}MUW0A?Lc5h8;JxM8+GE#USrEpHz#WcM~!*eV; z53=eBT6>E;oi3o*+jw7`iUIDZFeq`_DeH@Ql`Mg*z3Nbr13S;HW_y0idRO5vtWAso zKzP2;NM}8VD>4vc17IXHmAWox8^`i=EeEtJkET;samMnUTIZnyz`ciP53<} z1rcvwZ+~;_Wa{0Lt!;V)mGn!y-`dEhB+y>tyOWujnR<|y|2kEN26%uiG3OJeT^yjS zO{6NCkL(9bn$g8k_LmMTKVx?Kk-kLH#J`HDd~w;dW+)KAwPq*=Xp03Z+aeLYeSl3G zfoRg8-}JjQ(g7s8Q;CanUBJK810iaIst4gV%SvC=Kb znw!gS?Tr+k_eY=-Q&^{K4i7FlM)~S>XNcdOB{Y_?H=c194s?#)4ls6@{V39Wn%de$ z_jH{aisD3-*&B;HS|S&U+q!Y!WF-M!6321}g&}uhx@^ z7c(-$$kYM^ngVF*=?RWg`#aCVq}7?7Kr|$$Y!TiUgs`n&%`s(1a?h)9&QYS6)1ry< zH8dizqpzJjF@g6l#37YWf$==2F40g{Q|$iQt^oghq_=cc-QM4LMVsFqfEoFjgI1$_>OS&c5v!#_Sl~3kH4bzH{PD$a>cVW z7fa?q8&aeRAfwj3m#68c_P56Q)@4UNe!Q(#VVyEwZ}$4zAIm2CbJ-&QZP}no5)CA0 zI;>t*+)EST(X>)==*$!B=m-FEh0;jeJ%SsWzEt^ic|<$he3txyM!^7YGhx>BZi9XjeVOe z-+9w>9PjZR@9}*efBD0>XYTu&>-wGNZ#k<3>8IYhhp!G&=rtFo)4lP}F&i_94w9a; z32yJmL5-t~lte7JA5{`{KN7?UHaw>De*(PV0xyMdQdZ=!cRoKnqx{A5{ z*ImZC(n~l_J3pID>gaV=m?H8GJ>iP2SN5Ac#boXi?00x$wKv6Y2bpPQ-2p-a?6xU} z5ITT7<0Ay_5RMZmXiApDEIcX<>SZ^bx2L`E!4*ix6!$t(k_TT02r05D!1;gL3vPF$ zWRAjO`-je898>9p{FcbVV6^6~sCMiUFe=J;)JPZc z?Wsj$_jWMu&#Rxr-lt2oxbvNE15;h~3z8D;n{UIxco~mgTgAXc43jqPyxh$t^?QR#}tWa<`RS|N4W}9_@ws^zh@~r%>*Z&UiELguA^w zKW08wc}vcD%dZ8?{f?bV8Qp?q({!nubl-ZtUq(}|iRkREm&rR`FYyN?3tZ99mB`tx zBzv}cTRKHZ27(SC`&_)VdqxsuvuA{|P!UZ(BV`pEFL4YCrROBC-lj&$#hfB44>h$= zi0{EX4LfE9J)7dGni`ZXYBD~}+5IrSGrRf8VbR#VqSdXF6i803hj{+A5a@xp54|11 ziZvAA78C7H|E5e7NH!Rk&ccG3dsBAf50qltTo8Q!xgcQFpw}+}Fh)@?O~Dws7-Wi| zWwKuy#FIRTozORd#+kzOyB$9vyX)4J>-|P9|7qpc0)=I`^bi0*M*D)j0|6U2d;3c1 z=tb>_C4leskPO_|t=>tp$k7%xDn4cD>4c$85_-B9dVYYXMdSJwN`*{t@8?~s$USbI z=<_zWHn7FI8|K%{bWdI}$d9{t#h_ksVA-%!YI6rVGvY#yDuM7xEo>>}9l)8d!_X{I4(F86m}haJXb%n+REtL7 zR`c!6X6Ol=r&ubnHfm3ZJ1*KDIt7+&gS2o+I%- zYkK6o`||6<_=XP_0dXS9vUPW(wW8Bx=Ouct)C*J-?y3#nT?xX=Q`;-jiERtjS%xCz z*=H$4${nz=&g-787a6dz<{hob2Gf6fT;M=BJ)l1D_n9OY0O@66!Py4+rVfb~z&^Tl zo7MD%mIRQx*--g*kP`{Sa(TReTyUJkUVZO&r4rYUvC4`3Xpqb!G{#3CF&VZW&Gq%O zQ!fHX5p3`i)@R>?sxq4La!^ZW&5w6A3=o5l{&V~bi;g|jfkKnEfSVpRnRqD3mwN2D zR>)OTG~^o~qg=_p4`}<|Lh}a}Z8>g)Tq_w3$YZ}peC7!4$mcOJE4`zQ43d48{Zc#h z*HOv?mm%A1(ic-20j$VuL3h9@K=_B}T7q`QdzvfycuW=%D7_VSAa1{yqZt5l7IGJ_ zMvj&4#?jjuMDg3rZEOXw)SLz$tJho4){55g4bTPG1}#+SUdrx+P}t&;X6XfpGP4YQ zqcSgc?dL)_KR>r}v8-KPVi=}z7QuwyN4ym*>;>eU((UXjDesMDn-4#+Zb^32NHwgj z#IJae014jfT6yA*F7t9#xX#6Ly`7@>SKgfjxy*L3fU;O8+d5wb)Z; zGOEhjY~5C@0Kapd%)3$f`)o;WOQW!M=bcgZWO$8VTRG7d;01Km&u!9G>~N_1aP}BigF0*aETDL>0wueja7G;bYaFOH;Isx z$SA?J-m*1#vSbS{+tR`zh!E#X%!0qiX^i?TjCW<^kq5EFT%(iH(lw^fYVr+>KHx1# zLa~1M%T2wT@}W!jTzu5*Oqs#Nc!xm^cn5-Y?~c3B5U7W?q0ZDXtpDtnS=fm}2_`+= z^3Vs=VwCzuHFs&)ykO3AM=P5@k*YLUhSULQ@x)S}dxT$1Lig1Yv}RCn!h{yN;9;w_ zgu@ZzfqNv~seW9OBForVO=^}Ordc~lN(UzV9Vj%8(3Pa>PvoWMW13Tu+R^$|g5k^h zS{c(&lQurOPp`(YRV!|=T5Juc7v_De)kI`k{|tE|kD1i^iZyftMG?$!EbZWJVBe|W z)p_gfWM}P91oBHNn73L|QI>-ip8@C)F!0&Y_N1ENc1f2oe_eWl>374j6_a?%U+&?* zsxJvpnE}IUpfH`}zt(}erlV(5IR|nI8&H!ptwymr{bWN``1fQl3>!1E$jyF=mh??2 zyOTLFJGO+cgI42odCxbzIVm0+C6swg;e+WL^MFD%LGJynY)sGGD7Z}cu;x=;6%~6;guSPzTDSyP9P*$c&w(CD6Zy; zUt5$B{*;75I&TxG$}!#qIUl!oGVF)`DH)L--z9n_S?20skU9RcD*hEHA|&)Y*}LE9 zob&E|6^+W>@kiZM_F*1rJp*1@ zEa;Z(ha>Z+$cdK5+l|U6u&mb(!njxCrBR+u2l;=bL6 zk`=mQ=T>WamV_9{r4kjSrzD4M+HyKs0Gk>YSSjo8<5Dn1ug<8>F$@^nU(LKd__<54 z^@z2>Ms@}qq0`XqjZs|v&a{5wdEyfppnNpbz5sREZw+PToF<~w(foX6X^fbMsoq%s zefHKjC9{1p^2^_X+?pi1X`L}*cHtaef8U^<@c8~m-$j>e0in=J>w=b6w1>Bzc+h57 zSNuPp_)H-7k8XycUzI^9E-vl~`o-%aenTo_{555~aT*yZCm`!M!za3_sVN4=PaAPy zDqTE%VB>KE$;7hcSmtX+7~7(o{x^O$K#a1m@8zYiD07@|Xt*qcWlM@8-nV8Jd4l+q=9b$iw8W3ppB+5;itAUtkgr4>FqTr6y4D0={UwcA>6B2`3F!Cxp<4 zMcaV1r-dHtzc2?rKcFY$&l&sr*4aQ9GFj{p4>pq=*O0a3?}6n@fyD9V5DvFTqus|J zoc%-~G(dAz*t_4yPRX5t!zsQ;evJJmoTDe9gdle@G!s63QVU_^v<7uQwaYq8;H!fy z_#=f{L0vGiH_j22PKwoFQd})W@Ts!5i)M5x-@aOPn${aiL;Jar#F&J~!P|l=`(GeX z!2!Xffauf#Nwp+h4^3tpGr=R1){?c!{-B^3+X z4J{_Qqw`jnEwOUhhmx8zYmj-2npent_3F{ikcB4ip}I(FmmmO0foR-)G)-1ksvA@| zjRs29P!G8gIK62(Og4;e^*fW;VXtuMFI`|z=u{Il*2c=c?dK~TCl4g@dbY5J+kmR) z>d=wR_%pr7Ufa7b*_-#}H+z;ByQJ&EG78)e#An0%D6dB_?+3?3^rkrhb&C03_yS*X zvZ*2>c`Frb6wmdC!ar2s)k_voSO#ER5GV8M5uZYSddLk$+Qfscx63OF8=sbN%A6)9(!QkLR)6`y zDa01=s=2*Roq7u}P9LXo`Dvw+nJBm^V>equL;7C>ynlXhaSc!Gh2c{cV=#@3WZPtJ z4owRoqhb&(E*K#3fZuCFFxtl@ek&<^z0S&t1V7Rf?BLQsKpYse65K~KG4ra5zYcP7 zaap&t>X*f;+1sHiyJl}jwr8_JTH>j!P;7>GDjkjR!N2lyW5ak@qZ0RvuC<%o+3&S2 zAvZPcIO4O&>kvNl^759?Led`cAKGfq8?Ybx7Fhl}&~>@Fh{u?AOS)e6ijU{AzT?eO z4-EQJniAR}{h+~hwM~aZ_oeTwtv1_ZYjqHjY}mPZe(^uIa1CN$zE-5i{M^!%#WHbK z9=@++q?xp;Z|GvYIR5MecDZ8z;tP73CYIOvSutG?ZEQ2wIpw05!GGd&e|rH~fx(-2 zu~U)QEBeRnAP64k0Nc?UySJ{(-KUaxA@E&2bL5M9wrnNU_qfMI5t*(OG3LQ^ZR1jN zy0z`))UYEw<5&ChDJm>~RG*?Wt!ZH<#zrEWOT=YmI?a!JPeqQBT?ViErE4mW{Mz>g zX3#wr$bOYt+AjWz;@)9ix~+WCz+rmC5MW;5;1a#%1wvilf3JLOEER@mZ9Tx5FdNkg z+F8LL)^{Ds#tw7aPq=D#dew2F$+6>+xv##y#vPK`jwgqT#%m8;t4ue<{NahM8(3vR zn|l6eS!t2^rhNA+h5EuS3{PQ=oYriEKli8yigi@$3q5cQPQ)|zPw(vk<$wL~tN{Na zcyRdzKb<5+(JQj=LvN40HAL=e@WKlzL(D(wVOdDc;apG3E!)~5O(tsG`|9W`1eKjc z#djyecLD4`A6g@;gmrG)GRPZT@4oDy7pAzJ%b7Xre!WjYW;+c|rB38ihZ!r$i2N7* z{hKGspD%W@{FM_L9rm;A+I1aW6uaR5-FnAQ@|#zlBB-g$#iX2WA1K1z}1)(Y+QaPR5yrDjk;WgSFav_RQdpgb+|rW+n8ou|PrOR3GS zgOx*#aDjWdZ~wvV<#Zj-MOrzvzB(Man*SJclBql}i~(9iHC)Y)bK{Kvr{s?y{ZdYog%mh4#!#n-fbqbgNk;T|FLYC|ZHZNNeBW9H5WUuQ<* zI-SSl=#h4?*!>m7;saJj>e0*LD$SgK9Abqed&Ym0lUS;BTvE~ijMO}Qe5w#`ZG4N? zE7T@1DvH^t+&KZ{v-KcyKB2B`-cHb_l6g`442ir%Tp}{2O9_M9v3C7~wS*5C;(W^v z9z1v%u`$caR`G;brW`p0S;*0dh6H*D(2@{*!3-X$Rmi)P*(dE&v9-c$JyWC^|HYGN zWu|V5&og~HyU|-_rS~xK_?}c2+5-nJ$Oau}rrp?ZqCHS_Ci&b6fk#u3{(;POj#`xD zMr`t!>(fgw4TTP+JinDuOA}JdEfRO7ab)gD1R+no?h0|0rZq1-Ek%;YGOfdWG^5{$ zlZJNp{^LsbsHp$%U;Ix@`zu(L^judp$kChsy{26+)u9|n7(CGXtGsf>7Z+|`(4Bq1 z+PW#lnTmqOzf=lW0ANs9E=?fT6}7IObfdIo?6mFUDWw#dDOSeeZfW*)(DlMHuIMUtCfPgeecPZTsL(RK* zp8I~}_x=6&pX1;-7-sL;d#`n^Yn|75o)-a%@{-t?q?l-EXxP$HVsFvVuwJ5}VcflY z6a3}zr_tAFXb;e&#a^j6Cv8k)xGN7&Htr7A^SEtemxQNL-}Id$!pN#RKCR`MYst@I zsAKrXkmdb_S~M#Cv9{5+ssz@vsIBNa1^dT8^XRN6zHe@y&ErGtB_WVr-DQ_8J|8|l zzN<_B?=^#;^}pZ2FLSCiw%6Y~liVY}{$5YwCdRe*-m&40H?F;(GyZ?4|2rK2Z|MFV z2{g2;un9EaB*ntQ!X^qfW&Hce%kdq7uG!ZwUwYTU6-hue2?R?R`beh*TrG!xUQulO z_J?Y(Ceb2a;z#f?;Ukig$Zy9zy8p@7*Z2I~-KE@JgocKOfk6uD2^&bqy+MBW-!swB zQa4sMuw90AX;{pCDJpcgZ{H>%A#rhW=^P>xH8aaXAP~NNPkrE+;TOuD5P1K}@-i_#zNjDH z-;)$IrM-EdJ(I)uA}T6+@4=Zcc>KVP4J+6?LP|=?hYz3BW?h>c6+Q4E92^|X%rfyc zW_Pi$ly?lkO?iTwg0}zo@tPzwCLD%-^L_b6E?R zn3yFcC1CcYq@+|-2x_VSo}$8a$M1=dkPsNozCJcVLBZ$G6`PK~HY&w0E-o6Ins&YX zcs*WJRO9K`9}p1{k(1}m8A|15mvxVm_4oIKsk=46(em*cT&_2KO>Jl?Ll+W!cH+Rei_TPiNLYyx-$;){Qq9ecyD67OV}4}rM_r3@qot|2eaB~>EOU= zZS%i_(9kv_yh}bt8$V`d?gBw{f`-S-LP7nYWm78crHs;ER=o72YI{4GhQ z->xv~KvnjI#f3G=*ckhKvs%E@zFPP>gx4TE`cfi2yk%IUjAo%|GI5gXM z^aR=|D^60!<{LXi;0Xk$T>?{5^uc<#emyxnNKC4ILx68A7!B!`mX`Ld|MM-89}{U; z@_LU@XoZh`;O_@}Y|s-Ku3hGhSQ`xFmi@gwf;u1c&_Fq-R|F&^+1HL>xJ}`j@es%6 zi4XkdV67a8v3KuMuiZi_0nGu+4Ku%{mru#{Ufq=RCw}-a?fUs#6y9_`&CDQDv+V5c z?d|M9@-g$gmIme?;(5nBcL1a7>DllaNe%83j=UZn7^}}Y?~yNtf%{{kryU#{Zn)}b1%t#m*7!(;K!Th}Yzfp}A zHqd0|s>EmtK9Z_IMKw0QydD9PtM43Mz4GZdQ(<5OM+kx=ii)0JJK`nDuP5f_=&oO$J>d0kDL(i*>#N6N$~7HUv({5(CUKGajw5- zd+Kv7QqUT^q~@-Fyu*&id;R_YkEeTM{(Pr0ew!)t*Y7m+d}Fl+n*>oRn!-+3 zM~6}tFGzz6(IifHc5 zn?kul4zEIR9Dk@7MbVfBuB^0&a*xH_AqJ@IpmlFO>LLN^wRiYnTks7VT-#~iC&>bh<&$+n~FC&de3kvvK!^DLGY7r4kbKH zq+uwdKQVO7XoN(y&!@!yB6#n<7mrjW8eX?ji^QMXCP&2Ro{V?mW4`pKtu5MU$F#i; z{)OplU#3y-&EXyoE^*#Y^);0Iqx5c_vc?h??Q_1=wc+w2( zW>Wd@m;0mRsN4@CX1kn4T`rqhogHl=PS==k#~yCaqFMs*E4D|om6v1nJ&OgpE-%gs ztA1nF!dYuKN@Dd~rJIat$1eXj@@Pyv01UnerV{b|^D`v$XJ^)OidTbiR}5ysc!_aW zv0(0y|{`J^l~Hbxc}auHAW{iPm}%M(LCA5X@=Csc)ir$N*AI8@csOWrrnkd2Q> zOw9GRt90J|Ef3?L_Cj4`XJ=o_#cw`doe)VU#{^A?ii(QoFl9<5r{J}HH&$eDae6pe zW*+%B6?(sY>~pID(i%uOSz&E&{Ki%3Rdq*ar|WJjv39uym*LO*e^(P)I#Cwd?9sSs zN;U7|K)Q_6##n!evCQqLVuR*S7kgc7*KR`aBN6Z1;K1M@;^IhqG&A!dPE=T49*ZRW z{QUe{Zm$ZsIxIsWB{@ER_4GhFL)K-peDw9}*93z3km;II)4mFUoL7E#Ft_3aUF^UZ zZ=L~I`1d+5qs4AwxF@V%WSTKDGIE&qk_)?6`DThsNa%SY7crBcoBeux?E#3S=DfEj z%FG9IRC6~%0oLRo4S`C^#Xa}=n`U&vlVMJ00`@GkF6+HFuq}U9v2Q2C=~Iv!Jo_o? z$L1covlWB ziR);6EY#6>hL0Jl(K}h{DCCcs<*8#^_%qzqxl=BrrlI^9;@65hQ9$jwrthtD!p`aH zkf+~X-!yuONKg&CKZKAmOD#NSeOohw$hizgD9CHaT5#pq*YB7NiyA#<6?}PvHwYc) zBx`DFDqA^of`X8g^mL=N?-IG3!mO58B+vww*{sL0?qUXrK+(@Q;|){~ANJR|*dNY1 zCcZHI`MWjfIMK+|bhJRX7RZA1l?GfQB+ACitfL*%YOOs=7SmS?NVJ%6O}ep4|Y<5 z!oUzOEH6*?l97{7Wyp~&3NwnICQ@?t`{#U;u6I2=JzVE`*XV6AoWsatY;3$aRXup* zf#lyy&zqU5cRS{pb>Ht3LD3|j-?=lAqbd`)B2KL9fLx62@@C2|D=SNviG_?6&2J-6 zF|)g60alGWJGSG>3zAW=bnzgf=^Dq{IbSRzGNym>Px_qe&9*7kS^}n6ur=ycRUHK( z$dz7Z3)y;x@UZ5RQErI**^b2Ywgh1vmLTL-A$G7CO3Lq$C3Y$qO1{eA^QVgq;eK&A zD*F0$lz>Th+=o7)t?K0ho$9x^Dg2IW<)eCuf-ZXj`1CB9e0B@%HIC~`-SPVi zkqXIPmq>7@o|*Ens6tP(j*VHwZ2z83^&*j`&|*S&clU=sKRpimB}*>V;1LlK(2X&J z%fZ=MR3~$x`&xD;&GW*kGSj}~Fp*1*kvA2|n;OW+T_TcUl)7LXoBS{kJ3p}G-%3Cl zkV}ZmQyIeLy8Yf#SILnlbW0+e*he5$j};qM>~mWTnawtMbQ*)Q=`EV@*+!{97BT7l zJGsRH0RgV>2EI#|yr^~BzC8I8rtdhc>gnmp%IYr>d#&b1-a5$)4#j_kw; z-bj8xxv{f4-lFVMb0aoS(C?-#(I#n=q;&guKSKb#Yu#~Fmzb2)!pRpb5fTm)28Bos zJ22KXcdetP42;3{0^-4KCG9g!RRPn|=NOoRF!H-}Bwe5IS)TRLr)Pdm&+V7Gx29{4 z*GFv**M>W}K#e!5V=o7Gky*EGq1tgWD20gUIS7G`Uuk|;YoOp(eJGnETn`pp^C#>? z5w8aDJ%sTuJ0q+}80mwEp1q~CJ3UyPgw$HE{7MTg$>xOjpMcZbmpm4u)uSxgIXI}C z=X~_)T|Gcd^_KFmq-SP&9S*BoPgZ!$`xF10*LmV2xtH=;8_YveQ2ZQnMvr=at1x>-IsAYh1fYzYSc76uNvkgG!ncX&GZHOao0uYjk4TKvGDSkD>kf& z$y7w_y(+BR>--ZYQt;36tumAfQgF*phL`*&8z{%L7OBGQSrI@zPRzpa#xTE1-|Qrz5Kj%MuT0@db-usme*fW0M}En%8usZ>VpV@ewCei&oK4%r?R33^|U(li2L>GW2qBI(=T_qLEr3lk#(;0+JWl2jhwrxv1dp9wfkJF1(P@RSV=sUTZXAas6)kWIqo0IGrkM7Z}6 z0L;r6ZAi8f{L|ix`1tr(9lMTD3IUaD57fmmAOT8EdiM71YbomL>I9L`pqoq$55=`5 z;JZCMvq|j6f$)3a`{)rRdmnLyPv$^Qtvy}KCHyBMiP14`-(MLpTH3SD$$A*7d#pdw z(;p>*Dp$tUafM*1C1BTt;G;WhdGjyFylR6 z#ONkd4$5okRCxIP50R7kLZsypxvYFH1(l0SVN9jo6yuXqk-kjYWL_bU-56_(FdG49 zYNSd=_dw07a&GLLu&OK%*hhxj#E(MOLd`L_g$5;lpNdmtPmN`DB~I?W3756i8*Dd# z{pKIR-d3b%;pcp3^JZ%{KrBTAlb89uht01#ho`Td-e&*XH!jzi{%4Y#$>R*eQ{E$I9fesvHu$vY z){Rb9Oac>$DP~m?XU8* z=_(_j4*eOPhW*9m7@L`xx>NkFM#mqy%YSH%+`Wf$Fl$eJoYJgmiEHdp#=`e>RGwSn zu)T42l*r>?HekGvRgme%*N3`)`fNytb3cf!YZ-vDpIhpl;8)toBbAEDc;=VL9lM)t z%x86x^)GVbFFyB5Zg)aCM|)YCX}y-+CxsXG);L?0Du`G#zQ&oMEDAxvG+pb&gCcqG z;Q9NOFO{>NlUpr#Pdu-%zNo0`Dmkz1%jh3%R9@}@0owL1i=tiaAMfF3$R(<67=azV z^(giOKy{xfT~`3aE1_@%yOe^+#ZX6`kI&WGD*%xA&6_uG-@XMELS(@H{=R8%lFN4e zF%#APPBX3>jhkqqklT?ATRo@65W`|dUS1x+Hf?J?MMXt)atVN8r39d<=-0SoSkz~A zJ(qOPi_;3Y(NRBKQXrw&^>FQN&iYXH(_5hQXbYu?>`MTJ20)<{J$p-uHWB}-TvZUM zuqA#U!iA@<7SPtjf4Xbmb z2piYa8sX-%@>1A`<}Jg0xfDB;v96?7wbAa+i_;5uHc855U4d!hY5nA-cH2pF%4C~+ zxr%Vtd2c`&i)O?5+0wC`p@g2ZW*-qIEAQ8Y;}hHf`~sUS*%xO@e(QqA`}24#^t_GR z(P@rU>*|BEzaPH7x7>xu75F(l@pS$t+p#A1c6g+X83EN)y}`%(g;TM}t=}}cw<`+q zq4vk<`#-Gld2e1^B(Lc+)3LmKjUCo4_+5uPRrO%uVTi-Pr(yLK4IZ7#=_#R0Pzd#$ zoP8fgpC*;i8GIps=O>%UOs#skLV=~(WyupC&wR^I4bQVGtbFE`k1nb@T&)+o)?6wn zyH=AEj=O|<@ThM-YnvH(Y5;xfA*N zR2nq`(-s9^N~x^nUz7G9&KgEpEnGf>FV14?{w{#kjVg`YoztD^7I${hzsx=B6mS#e z?VQnwNGJ^Cu#?&PM0q2mdCK!0MFBvredHlEyFbbDXGr+$zQfT&!4?qE6!z%FYZnzz zeH+JvHL^XB-WC2-QmsG-3ASGTwGMH&IUfw@_RQw?cHx^&W~#M^9UUF0vsqMP?y|qM6kt4QVl>t_V-3LA%SNw+ zwc^v#mIl3xiM|GX1 zl@)|&MbaVNe-=6-ORSAM?)Y6)w1djqxC^n@$y@$EI7 zG4ad`b?g-;xc6l`@8S4enHZMU$;!fiSc^H|8SAw+iBHL$?c<&+Ei-WX#G%kqn91-_ z3%J|6w-hX$DEqyBN_?!a)PXDIkLd<5CLUAub$4`ic6fd0{7sA6 zNZHv@lnlA;RqK$;=O&sJ1J2&zJwIp0}yn3iE`BouG0>Xkj#~9j4%Ez*TkiLK^ z$Im69u-6Vf$7%*FO$$7sgaI@5_}*}?jO z=ZD<5svYm0cc}PE9ui^WS+Ju`z$z6Y+a=lZNJxIC#OPMpo~;gJuqUeGhKJ13JP|wk zVu~>mhal zr>M3qT%{AgorirtIPa0PH+t#>cI9`SCE??-LQ^G8L5Uj`VK<#)M?s8mvHy^qU)#l?n|*i?R9zZ(6|0WyEXm>xGULh2){m zwh=b*>ixrFGa{(-{YB=n-uIlO#xY=1(QYt*{%FB(!&7W?qMX)q_PaEG?r|cwHB(pk zDA)kow}K}tZ7N-tL0!g)tM5GTU!qaV!K&XNNJl5(qGe&R2G-o7(arIPAPWc}C6=5% zVUy7nf<3bSXu@(6B5OQxRgs@G`rMLsyo)p#Fy(dm!Tr5SOmCaKOt^f&y@5Wd)?D3D{Nf{XasP74z;6qRMj6Ce|u^-o`DOOjrLt$<_%%-n?+wV5odrD%si`Y}R@oR5s-j2wR?^hQ zXn~Zb<+6jStq0pyJ?QTF(FomzmYDQ?VTC2Jv=9k;Krsq#dw=sJ_K$m6tEmwc#A zL*tiSUiiH4f869B#TsS2X(BqAoE@KHUFbw8nM|Rfo%z^Gs=MYKbwtjOwApyuaMr$c zFGX+kCEeFl6r6aZ4t3@SCH_{*V{+-Smr;0>SoCf0)GM(Q<8uuP00c2gVo)3#mI#aFYL zA6#(X29j}&5wV7)vT!-l;L~NJk$4QcK5GJl-kGn3BJ+LtF)kc(c&{(FKYco7zQ2u! zno{`exF-A7)$_PA$d|>E(q_8+l~N{mAIjZmqDEzr9eE0*UFJU9StpE44bJ}lI@k8& zO0MXebhUK^an;%b8&J-t=~8;e9+WW0_9UUF;-}>@>ubH1KYY)(S5&Px3flTp`b%7w#4u&9_%uK?(|+ABn*nT7cHn+mazuQ*d9=B~Dk$5}4+a%Bk3J{^4iK>1 z{A-scol%V0*(kmqDp34S+4otG7Qn3c?*k;545*Iri{n}SN{DVP+$g>?Ru;y8IK=pw z7<572P=B3vg;l(;M~xj2S!buJ?ej}`x`C|a*mRqiH^B)I zm(W?KA&<9KR(W=Bpr2WFYZ#Q>=<~HJ8!k`R0ZJ6GnGr-%7!UqS&$5yYz^f@wjH6+$ zb-u5geapp#5*;kmY9Zwe^j+hQyob{yUaRw_HY@v6JNv+sKuyhg;&*mudI;fnx!<#` zmLywAmGREWJBf$a>Q|^JW-4! z;=%_VmTv1J`bgJ!)kJLDg}IKpHcwtP;pf;*fq)hrp_+l;W`wA!1o3i^((If2~XmX&9FGw}r% z*B#IvlKYg>UE7B>fR2h$$YM_4t_QGqpKo0g{gIeUr(YO>WOI^k`KsIH^A2drd_2L3aF_6yc#Klw1#EAum)ysNXd@d z57o?mUQEQzFeVaDV0%`8in?b%x=2WH+mCeUOSMZQA2ictA;%ux9JIy_gkIV6R!_r8 zPtUc($+Jl?>YasTxG4-4@u{ANagv2w=1xbGcO3K7g|xh2e9TS^RVD+S_*j)G0rnyv zl;ozX1DI#(>XNt8exM=`6rGE0mpz@9c+|_f- z04@hrbcM`MB2vuf=1+S+g!11bJzFm>vl1{E?B5Sv^9glq)*dZGwdV#EtUMsY(>U1O zdu78?GPu;zk@rKIIk3W7saLF&V^YmT`Yx`Z1G~b^xmo;$)&&3@o2ER@ud7U5Js&x8 zj~lNg5Y$c|FD#HHpYO{0hUevP(YKDY5Ylr~R>)&TZnN+9{c)|5=Bm;0X4})c**0Uv zM#IN%?rGQ!iA|XOg|h(EPr565n?hhiU(o;4C;q?|^<1@005g)Pd({=o=ES*{?6xH>#XwiAL~lEkukExm*Mt{bDck?( z`8)4vO@KS#^rvix&&|aaxW2+B&0T?G#j>eCj7fp7 zH?myb*9DhIq?%IefZl8Ajq{T*`*XGdRePMx+r?t2#*`2kPQl?!MJS?qZ zAE%rv9)|XuZAyNzY>^lV4J#9{m>$2>Jax1pz$19)M2cL&;!n!PxHPqi@a@`)gU&g~ zE4_cEB+10XJwSrix;DKao6`nFEdB%&Q@ha6)2;}CQCuDb>Q4qoh^fx`Yz28Yl04=7 zgN{@6K&G^jZ6jh`x#Uv0K`U}#HzZ$4!K!Mv%Of;{&-GNcbT@{|bTKyHydvP{65&WT zQ~5W)nvu##^r!mEs9uwF4NZ^7%9pDK%bQ*V>m^WAt?J}Drq(H;z~~P$k$oh!Tzk9N zPkSLDQ#b!K?$(k9PY@ifxYC=yKtZTS-+ZxGdUE6NkMH45E*8a+O^LJmDd2n#Y-8`t zLo<ANZFQsd57{W5H|)FyW;5e|8oY zz7rD$9QMY&5RH}x(wao@Bc%-^Y*NlDP=iv0=oY{C-$UXave4fnmnX$}QTscPSw4w3 zJTC5v^9P9oda^SQ6_92u2D&XHS*V>(uml`Fqr8K>Z6L8v+0Y7Nz$?^ITx-_sGbRO}Wu zfm_d$v-+IBNMu#k4;%23^vS%ND=B;^L$3(3eh+f~_~VuFP!+Aw`yQ(iK%L1Zq@cOs zEac82givxXf_v45rAXg3)4P~edjRYmzgBN=T6`W3KpxKz-^f4@eQJ)>4qMC{Q;!-1 zB90dX?zR8qQye}ock}{%FUn@2uTNn(2%B<@=@gJE!u4CSM+)A5q)@Y;OUXkz+quZ4 z1qLf5+gzd4(UXyOEN&ddB^*fEoL6l%z0k_{<%RZ3a3>mp?q;bTrmGZHQ6Jq=8W7xh zB$5dk1G=(@hy9=Z-Xkacxd5XtYNnH<;aubK8yia6_5;BX_tp`g$Rll4>As6&0auz; z^c|Kk|JNQVV2^5vh`M>ZkROPtAkA-^<%wCtx&@5dzkd9PF6p5so5b5M9q7jlq)vS+ zQJjR9XnKWYE2kkKX+{gw?WIvhg@+fr?3+j$0>vdY5dZx*K_+Hq%bo--FQ7n2(8|QH z=_e;9t{c6tCAp(lY(7XQ3D;qp1V+tKeXk2Fwz_vt8$bN9wrjVA7fV1Ow%-hbu>f}< z#D=lN8o2MQyk;#6>qn$zo+LEA)3Dx~uq^E0ci0#!)<<{(kyHr)L27Cp>lWPq27@=g zuGUcYL$YvpCi~26;^>U>KL=+r+*^I!jDZ0-S6dJ~dv(0pG&ww1``JWCRE-yYxC8rB zW_l69p_-o6Ph5tZy&7iEDP@Ht8+X@ux)xKIdM^#lF}F^v76S|@{y4Zj3Omf@v;32- ziop((wTTZY{_T|?g~ejZ`25kbwH()Q3Aq<6 z|8fDt>XhY$C7>pyYjUiG=cpG711|*q{v8aAS=(mp(4TLTJOSyHLjchC!tW^gJv^}Z z)7&pbg%}taJCtsUSy@?C-<~k0;I^4L2gqg0bv=J`vN9|*bZfG58>rj}vwrI3ak3w+ z=m~a3UMNpVcmlU|j?M@uSS8_8o3GQs&QKsrL`axE)ekZRP=WdmSAh|8G++C8MBAq0 z3AM2BB`}S|K9x2xk!Jn%&#n-MJVWXZT*%s2Bl1owAL2}Vy-|GE*s2?p9WQ8GVIACv zhWcn`8iFwtd{$X=veI#X8DE1xAwo}aMKAVP@~u3X`%*`J;BTNR43wZYrD!?ZHG5o2 z*B~M><23UkrEzXbFPstw5XNP_geTULN|D`wa$hBe>j!Zh_TAE!#E3uTi7(~rnf_Jh zo(;H6gLWj0t?bN9!>`s&9g!uja#7_~%5#*yKq;`<@yN2& z!n9NLcQz=KaZ)Z=5C3eKRvIlaFXG`sAR?cA0>Ral)xpa5?dtqcUnd7vmQ zm~CA7EP&Xn`nF*C?NFiqY=4$==9Fbc7oZzn0b5Y0MD?RHwh*8&uMTGRCGyw+ISMR$ zmhsm*<_6!$fz?5P5hZWOZpGJe#OrxpWhV*h8Rp2_7#Pev9>C23_Vdp6c3Y>Pfav3+ z1Fk%vkZwN>6MS20BKJRS{L_KiZtIT__UAS|TNs5atheI%T!MJEVtugqIfHT7=;W!$ zT$bWbd|!*ILG;A3nsa^(9a!z#2G_UpyY`Cw_?90!iQyC&bYGQqNBJObjxqo)aw_`U zv^mHX&)j%TYO#X~pF%Dv*`ChGlRwiI)RsCLb&f~P0IKg}g}l1qc}q+D?2OTGcUCrZ z7D_~GYsH@cOVU$(%2Xr?|FZMW>)rq^P<8ggCSQar6k6I!_IcHwgojOf2%7$x-vAyt zln1Y6N5R1eSF@Uko~$x;Z{m8^hl;}>73J;cBm19tVLYAVb*vGy)P=tuS#{2TapZXT zU3as{7`HMQ`^>38dE7rS)W}9Ki8j%!wV@kmM$0pU8xhbR$_?#fp1+0+U!; zf8KCcjFy^9MPkoZf@&5B7yP6GJz~*6fE5jSx?cGCQ;ox+NiHx`vC6N~#QvD(yjkd; zh2g^NBZ?VuJ_4Ac(vSP9t0zcgi=+Gd_wNnTE`q|w#>T3uco*5}$0>pM`25lR0v`U~ z?*~a~rF_jt^2UKeedR-wl-na~Q&Kon`a8Sz; z?_22i@5G1S>}bl(VJG5bM~h3u!>W2(Iw;0(NxF*bYZk!~#TAIOKX_>*)mW9@ z5x>RbV+*Dd4El}yZ@J>=&;qK4qjzek81dnLfe3qt$omq8O8QJZ4gt70JL`iqcKxA) z{BDnhDtC@ynbW5%NYm3Rw#dcq#;-$_E9W|Wqd>45{? z>(qY5S+M)leNq=1Jjpe|IM{Js`u4E;Cy9&x)slcwG2W_bVPRU3ecbreakn<2j|HLh z`bF-<^UH4ZHV#Yz#Q>FPR+S{}gwD`S;}nmhcqSRJsyIx#6=|a*Bmex4!W)JX++?e0 z#?e1f#I+mneNEyhN3DMpZ<@>pcm>m*1l7|G?AcY3)_YFcabLp1oT7RZH8fV#%=*kv7Y0q`}d(Z%=h>9Qg~P4P8InU0>G z?EcZdwC;x8k6MuKUcA7W>|%Pg{iv0lG~`Np0RABgE;WO6FuFi=AI$?QMerj7r<+u( zBI2MXY3t8wX%Sn*iJw_X^=f;LzsOFE&-*4%CYBX2tf&=u*wot7pCdqE;Q&<5zh$w9 zs4M5_Ev%6(paKB(F7-a{$`milSo+a);*fBp?hB7y6Uo6x!9Q(clSs6E={QM81BGfo zx!sre+;m3Vpy9qHnxcC#aBSmI`8rJuPhs(5`!k0@Pz=}WZ4pGxbVteF{Q%QivFZ$X z^Id;L%IWed_nBm+{+=S1J(2&oLgL^-W8+A_Mi=%zmP~@W0_wylGeuy-gBp^-Llyan8_JwampRsTDsxtFS zRc=1HX~oVP+*uz*TFgevR=Crx&uJU zQbPA&^!~22%q#lY5bzE;Vmf{4yzVDOa3$l|#`z}P!_<=#XG!?LfS?zX2k@wQp6^Q1 zq!qs`? zXCzcv%!opdTxD|Wz5XK=?ZWxcg(Nx2H-xk22*NhUPjA|4=9i*~nVk-W_vO5J6EO`T zXivLdsq;47@Qjq?WY4rl$Izm;HCj$V_NKimsOWvN&gY4YzvGxpsmRPfbU9d2(*IhP zieAKnu~ZvPU%3OHSAqw3olO7S@VCs{mDjC_ogllE0*_%1-mVm@xQOddxL#Re9He|OWWD6 zl%^3(KT&0BdWO`mdo9&xTV2kaAa;6ZcU(`>!j>nOY|m>T+bfJR2ez3e<-IneFRNFR z=(q~`3PUJ8|4fQ_U0P-iql3bu62T#vnJo74j=sGong81=%LyOl@m5a1i^~Y3=~+oo z1_VzgIOLeZIPD?uF9D+|=GMmJ$-&qGniW{c-IQ-u!Kr8n8M*O0>$t|S?$f^IH3{DH z3zb0&@e4DSnds!0&9`S$CZFY((v6Y>aAyW5<*{8-=)y&2#yMN48K1C^8O*)gFh0Cf z7Fgj<&)$NnolM{iWLtZ(=pa8I=Yo^MQCDDpj! (sVM_IMH026i_O7`)MAXbDn;Wj4Za+0x>B<2lj1t>Z>!I<#(BjodWDUFG-|F=In%# z;<^{Y(ddg~i9g>yyii<}u9Z}1TguM0Um^0r!xNz0cTZQD?ZLw+b=s0N_L~M4lp&V~ z-eLCH;kkibIr~vy{R59kh9qGMb@6#?5OJ>E?y$N(@QQJBat=+Cz{<4WwMw&!H-FmV zx?G9|sX(jTLON<1;wq-5HsW&&15_z08?OQEz3tcZ3zQQ;iz~MpX9r7v%LqhDFOMJwCV!kwMNP5^v9R| z&w?UyOLF}2FU}7&n|mz>t6lOz-RVRnuUjtkp|_I*Nu*@Zv^{PA;pIzd%3QbK6M9&q zo6=p~J>4B{3z4@)F3R`MkFd2z6xzExW{b{N)PpX=mDn}C5wikLxLDe^yA1@o{KIvMOUAc+8rQU+`!#-BCp`P<7Jv+XOLQ+4;15abjy zT*AVFMS4~{C6Ze5=lds}7x8Dxdw|8QF1D;g{#iJlc0Q4vGV0AxF2u>lryzX*NPX1I z5-=yxB?@tsrn)uX9T#SoNz@Y8e@%_hwO|gXm1LbJ#J$WjZqx-OHxg{@At@$w8=KC z0#^k^NImE_QEh!lN$Hsuz+RqK;*Q)S;UH=vO!$`zFp*8*>`-!J`kz`$J6QAT5SW>d zDFpB-5C>C4Tiy8yL!pUW7Gr<#J*UIt-fEb|H5iqimnLMmOrL~NKGG?4En^Bl$toH* zEO4_Ju*t0?ZvEgjS)_2ODTn`H4mFW~aq0y5rf8v`_oh0-aO!Kt3;7JBP)!f6BA;UG*=W*GtvRuRET;#bAp{QTXf+_wvILyws z_yo-(^K{x?b3#?V2)pUGJ7a?@ujTTipZ^?mob88i%sOB;Vkd)!E(m$SZnm+Hq( zeH9pk3Z{&nKcWd;XZRxg;dcujjqR7KvJw1z5bgm12TF}aGpl=cj8{~i!;H%^-)U<^<3*;}qo})dKS1iZsgM1@;E$l_x@J&k^v3neGyvo|j-7c1m&tWO0h; zX-7XdE+*!hsa-#4e6a7~f@Y4_IOhI?vJ|NSct)+Xaj`2t<^CqQUehU;Po|P0v{ZxZ zrNd!3KC+;UGMBAX>KR)k)<1VmJq&ren%kgNw!44Zi%R&zM2Q{G<3?1@ zO#W7FUal;B?unC}NYUbWMX^Ee#CxQNsq5KjWoUig78k`Ii}Ol@Pm!Ab+s~v)D>=tq zGU@HP)2E&El-R`}KD&MOBVq45Uyo39Zj7WdpcgH@TbeJ65IZ&MsGps@G(u^G9p{oj z`i0*3G*umHgyzjhsWP(H*`Arh8b26TeysGWRPOP7&b57HgX1ok=i@%!{*|NaMclv} zJ#A-MwZ0C1Ao@tSS8s1OYli7*l&T#dUUdT_(2S15MlCjd^zsIO^5pUbMITO{qr&!@ zYD3z4V&yO*0N2*c7bUQqdYVeX=9+>KyP@y_h)c4 zlPQ&b@2XjIM$u4nWYw2lHh^?mu$#%J*+#D)GQ}fo_5pVt5_7;XT0bs$l6Ly4lWbrh zP)j-oSdw!HJOM5AAAx)fw5&*rsZ}eyu9mO4>Q|6S@9Kps&PQer~M7I&qpxMF&)OgP98Ip&+Nq zG=Rjb4g@XGhfUGLYt;TgvYP8N4h7&plkIZQClQ8ip`i)kU#o#jek;q17XStDb>47Y2$uv*myl`_AhvBgB50wK9ph~lFd%xR1K#G1^kl75p((Hb|VNC z$2_u;26>I&+2??nf;lAG$%LU#i?^@ciWiz0FPODb6Z$UM{N+HWIrMuHMTaq2BY*&7 zX%G#+s=0c4yGq(c@;-*8ah3SDYJ~>wJK<&LUN{107Eu4&$jWR&SEkzMyDEAGXE)v> z9W=EymqqFK0g8xLSM7h)hIExY>ZPTp@3NG=A8)&uHc-)MP>IAoNdR3eph5#qjA@bA z_okqe*7A6~pb_%q@@$*=c-mo5PUPYsQmkn+RJZ6|le)ggqS*{E9Pyi%HjN4oDFdN; z2*{lmXUCHiZe7nR&%uTXOov4R(5b2qp(Q*PLs=g>Xk+70!GVEqaX{7o(~OgURnG{V z1TEze16`DnE-&L)*5{fmTVuZ50RKz($4| z{tQ+Ue#s4sg4V)kKvT&R(NE~;yfP~>Y`+^!aXp7(f+ZAPbE&yVvF4MJPwED z-!?X!?{!6R36_Ea7_vd*Wio+{-P7H{`3Gwr6lf&VTjWB?B@S z^vyB0C6zTkBq3Qf8%nfkFsB6nWWsVJZ&xal33T7#Vqw{HLXmrmKt@agjYh*~B{$#B zrQhXS6u_ zT%f@Rbh1Q@A%PDrshhU6%xe5?bd)-XBM7K0L8A-E03BOnfZuilltU}A{ssVMv8=iv zg@AgLRey7?$xlAU1;m*~{UGS~1xarlc9NZ$jCuEN)po-f%jAGYwcR2|pJ1uO>f6O3 zVBuRIEwph`=}EvDtOS1A^$;?it5&+b{6)V|a=sFq*#=-E${xs8%^kUNyiZzJGPYR? zfDT1a<2Z1HTh{`^Imj`|fO_wEkB^7P!XaNLQ!${bu1i~+IbEFMzSjY!_sY*ZUZDoR zl4rnkcRgwCj{sed|Mnh%fSgskhtF%~3IBHTALns|vwJOcQ-x6~X;SIt=Q!Z_4Zs(} z#KJ;7|M1}y{8JNfQ`k)%*GgEB%B5ywC*cr<26!S7JyS_%j< z;BU9Hvjbkh8;tisH=o6?)FyxePyi@{8)qU0cK$|i4ft_+4`}AY$H$jRX?y~yKO6x} zoCoMEmd^+e;TsjJe*F0H9B@n?w%53H;wuQguwRmuOkY%w1Ow2)&to;Fcofu3w^z!q zxwJFiEaM{hPg(`f*7=H7cFr~ziR~QJk_K$g0Q#5%vjk{f903H8Tq5^4#TjU%fsB`= z1KU9-7ib~??OxICC%b>H)Xk}7(20Wu`k|b`oP$nbV^s?Pq^hTvs3`$E-VsR;UIGdI zOzVIBR%+i+R>TUkkdI(W|`p8J&0u6vz~GBmx<4TDINGzg4#bJkOH<#s>H+Wu`=k zwP0Er(!1Wh5SKSs>|-+Yp@GUVx7?_CkICl8=P&|Fy!O{M5N~64lLIz~8G~5Ka<(%N z-^RQqiV!(K>4t9WyM~6O4C9w)B@;0MGk}Ip=E}Z=Q%vxyupv-*NN>ov=6O&nfD~{6 zh|@wzsi~=;8(jPz%4u9b^W~h&-h4p`Q6?233f!R&kEx+qZ}RVDKI$w$(y{>|)=aXY z?8-Zp4_k?H9u8k#oQeDbM9~J&TIBcf9A#r;TZ9(#^YU`5n@jdRnJrL-fA@`G{|2Zl zS*&hkaBI6u;>YsxA3$a5HwG*`d&Mog({Dt`x=q6hlX)}Qqa`kSHL@Aj^*fs;I-hs) zo(Fr|fUbM0Qy)2^wAOZ+AjzRUc><)3yFV)@>}*4xKFwv+)X?}1M5&~EGCqT_D4={Y zC$L4r-X;t#_T~L6Y;WvMPIi0WFKj`a7-`@aly3j#jp&qLT&ts_5JBcsF^qH=Iwnla zCV-mJcK)gFWcROpN6>}q#PA~~g2Lez-?fU>v~>@G&@d2WR|FKS>s$5yRS^ru4T1Y) zxgkUVgRCjCpo@%Wf}R;b1k1{4IDEQ6rC9+{2F|w`L%=Yuw8dMKy3Lk_y%{@DyA%zt-=>TXIByeCg)4^YCQZmk;;*W<_3j12|V(IU` z0^I4H%)MlvyPe63pixUrUVKb11_ye`SQv!M2kNaWTU&o1 zWDy7LyHbPEg>alfzcWqfFoYjdc(4%s)L)+Me`{|z!_-OzXHuzSBD5t-AOXw2aKAgf z2{!q0cDZ#R7%(T)XSCRn;hnwrcrW!EH~wK`g8A2vzx_)7lLAv_tg=l_dbcY7lxj#@ z^eD&kNdEa~G)G7}Ztj1fGA{1I6MK96)p>!T7d;R-$?2`FS0B`7m(WBIk9#hSZUc*& z+!t?-<_1?SkDEL?6E$8y)24-hy7PQ-aS@c?#b)Jvva;K7b#PV{LY@h`{4BsspEDs7 z)>*xn7>jZqskm7&1msboB-mK7+=8_R1{DzB-hGbnu={fWXZHS<8q<>xTz>a~m;s^e zBBU(j;{;9S5pHKgrYq@7LzB|>h*X2VSt)aLSt-5?4LbI(O7=%F!SH8CIJbs z?3mf)B}NT`{|3g(odU1>M2ZAGeD!Bh$Ij)S2l8n3q#C7q6Y&G*63CF~RH(m39<4-9 z!iHUZ$(y&$v8d1_CI9sQOvUt^0Wh|U`p2P#k%`6CuhZfG99qn7-2C@RJgr~38sVoJ zUH9+x)d~xlrrE6g*4^x)mIT+82&>ae`BAiNp7Od6>$Z=LAYZ_bO!JB_okSfN>S}NP z>l`N#^x=@u8@9;s>w$&0b(QTW(sYJw_Z@^Nn4=bJ@$|xt?939upM?CbW9rvV)f{tq zF`RVs|9<)x?!8{;3{|Q~b0?3ov6=U7xNp)zDA>=0FIM2!gc@%K=cmI;Aj~ISs?kaS zb)io#s^Hvo6HZB-idmx-Crb7osL3E(J_vP({sQWa~z%)L`gUcpth4=wEl6CmSuai96^8l z_e#gz8OfJO>jXPQ^K$`cZEZek6r|%)bUlbV%mUv(p3A0h$i=7VR#l zBqzHS`t)Z6@mCC_|GCRY;t}*lC$Ey7nz~}%o7^~(mwS8pZP@B2^M>h(Ku-Yq-h zG)lc&KRzBl%m36ppLM*_tS{@Qjm^i|DY|6+LyR)vJ>rh#(w_IkHAR)G-VXKsYpC{! z?(0NJu3+R}lw3xysb07&vWSDBSSmi3f|d<-fmxlQ{HE)@VVXpYp+Q0 z>tsD>xvG7Ja_`&c@DPeCm;ewDI%>5H*5a~ROm%4g=N>1gY6mF4 z2FYLCjvM~}Ts$G4@3&{O&OJr?mLHEB0)>U6S7#oT&cC^$DWCZEakmK6k0tVuLJXtE?o8Aswl^ zUKK_&f)(L6r!F!?R^FT{b?Uc8uIZ5;v!109{-0k-(YbP0i;?r~Uy&EHT>qojw07JK ziI2U)fFcmP?AeO9Vr>QuUp^Ms`AhGAe=d0{E;cr!_8!Xo`-IuSt1I}4^=A{cNTUmp z64&0stJN~3S6e1XF+_STFs0a^QpnfLTUADggJtHe2YtC||MO7-S|H?HJt{BmE^vW!v*VAU2jwlSuymv{IJ}1)sKdxF76qw@>7-F}W zWUfFLYixKPnO4?ix_%E){9QHqs?W7|xBrw5#R*VG_Zg>2lkqVt%1l3``A@AH`ehT$Qb_pqxWnZ@qgZ6@ZT!f|M3cgum69y z-+!MK#s3$lWBbiHu?* zA|gUULLd!1K#r>oKVe1)`llSn86X(~`&5x4Xy>Rw03C7(x!?#oqWX8N5Q@AQ+t?Vs zkI^tN=mDE7DaWBySR`7&1e^ywJY=0%@o4j5B9Vx}oO+hefByW{#|&uMoZ4VKjfo!O z`);iTqV>%p<$qT;*(y=!A*H&SnwqgOj)Os=bz-7HLb3VpLlFC<`~H>FN2%}4Nq_qE ziJP0-sOhci_m5Ci%zp<4@fE<6pk2GNva*`>UX+>w6Owo(>)T~XNy$r>9&Rm-`E4!r z1IJ<54ayIKG&q0B2nuQ*S5JWQ5}qJ(eNkKH!k`P7kAjOv&dv1%N%%aA%3>jFjH1jn z!Dq{BNe1Q&8j}KKKg)|)iQwxDu4v0%qd=gHpueqcZT(#mKMHTWeNiKeY`!LuHKq0J zZc{!1E2H3}j~c z7xEK+qmPRV&@=MLIj3uHzXvB3k(94r1^ryvvrg4_T4cQ)1+_==-w(~2QXQHr;I0Mx z5-gC}T4%ZbKKq5z!N@0X0%HQ39>{<2=8R6VDR{d=`D!42;rv@Lav3bKwuY6m3B|w_ zm+@M-K7`0G0Ltz|J+&J0;>8OvLuj6}xONlG_~Q94!SzQe_xMYwB`-4U8)D?R^W9k zSAIG#sRv~{ml zA?frSKx%GaEB^2+i>Ntftb7Wih&ck!rNkd$FAKiJ3f=nDwR6B|{7=rTl679%3mw5P z?K{ozC}0?*>>it6BnK_8L$;Zk*pjENqk=vg6C0fvgRGKwounw!G>!hqb>kXc$f@H- zcLn?ej=^rQ-o_XpZFpQ8A4o_@z}-<&QvN4_d4#y`yh2pdb>1Ro>u#4qD;KCGZ{ckN zH1>{?qEU-@g@>P8mbWEL6Pp2u=RFjv#Vlcnr%)q0>hbxe>vUm4hvE7;$k$(}B`73q z?b2}yi|r$|+|fFM81{_%a9aSje%2Z77kmWi-|@c_z%vYSEc@u+-nF@lL^W}4?(5Dw z;Exed&W+8?%!F-0XaqFU-tREQ`}`9HOp` z^q?pyZlb59)pwRSeH1n-czo^Xg6nD?%TYQy3F(L5Iqs~b=Mg_x*f`{n;C^2TB*h)Aj2k0XqAtCvA zo{d;A2_&3KMm{=hpa5Jlu^U+sUwHlg>SaM4Prd;mK{&!7Jpa+}OSN3^KyDpAe0Z$= zcGMYoE*_g9eMca#Z!Xil1+mJ*mP5%%R6sa`Q$Du;a!G!NS#$}Pwd#LtZFBwIO=9L3 zkEQBD_|B=70(1 z>w>#m%W;FSDByqnLzFJf#UkSoy1FLWzcQJlH6Hwf1yCmTJX2*o{VH|w!<0bQuK*75 ztX#U;Yt*+Uohd`LQ?S^qdtonL^jQg-Sgwk?AKZm20Egh(kkC*XYU=;|LREiY4Fcx3 zYF=_nk(%OBXBR(TK#Y)Kwadcu=YLVlWYLF-UF5hr{N$@X91aS%5cXQc6no>Gxb-x3ET+a9blnNc25P(R%{gwD=EFA?~#>a1{t=2Cm6`DH~#tNOx*2IYXf)bwVl-$?|M_-8^T zU8b}Bh;0hxhDnNs=M>E6GC%GGh$&DYAJ)4TP6`~-T@lw<=^UOiiAtx#W6D%~qO74x zl0L$B`dY$SN~Tkf(BBEy;jqM<)6phhE<~z(%q%SP$%YrWxrHBYhVWT;-M@0z&aT-6 zw|wrziBxc?{XUdwiA{FVtG{~f<1qEAZc?+6{?!A?>wk4oDt+*ZWM<>l^F5#zJQN>P zP|KA6;xs+-z`kLx_t5Yz<>LZoHFutu|1~7eeM~kMBy@BbXSan2_2d`%w}1Tj(J>Y* z6RCgaPx%CXMRz>4<$gl>@$mkW!+VGK>$YEL1b=vKa=%&Vq8*VHkt?HU-A}hs!lCWX z@{2D;&e#>BB1mnwKb2DTvyJn^rNH2mLR`r0)+9_$_*?xmbjUlAWn6}&th`#LLp~9E z7tC2hy#7hQ^BEasCL_RK8#E-aF*DNBk=XOrWC9l$IM)YiXgsI%@9eg0V5+)t(v0@& zmk=snX_rqxlI~LG8hwk%LDTc72;Z5a%n15-r%j%2 zh@v7{v($}kGm8!=H;W4(p7ES^Geq8c6ErQQd|l_No!5U$_f*0!lSi*EojwW^GYEY? z;rTY}Cb$yub5{>3O?!{WKX>%MulKH$i?e0Cl&644n6H5U6FwjRkxr#*jbux$PWxV% zYk@PV?mMgTC-Fk#VLO+-xS%NiD1XcD(7VgA%>Ul;QS-@1oh|L{*g+r_O-|l6YJ#^c zo*Wy?eeS%7i1r~R?h)5)X)0QOH5wWL&TJELNq%c%8Hq0CwiN!w;8nx(E|XnbE`4RY>!T$$j<4X( z^D2!)xsx~%Gl{!xr`^UwNV~qb--ca?C9lQYn1MpG%O3N6kPa^mmw#Q|hx8D<>+HbN zb|%RyS;!Uw35X6Ozkstp;xF-wzm%g%aAXsbB9B7DZxv{PCKL)_^7@+vxc~S5DsWTj zKW}YWU!TZ_GL(@uq$CNBOvWW!uWJN2YCIdhgfim2B3zKf{&8wUMK;g$D_ta`Yexgu z4N_9np@tJB?*h+rI<;xV_D5mUPBNtaKx3-!Xz{z=&wL2iN?`<=9R7o?hCgJNM74~h zv-!|E3cQa74@I!g*#!Zn9@)5m0c&zgQ&%_cI9~n(*bjhfTs_$C^cP!=tnN>Jebp*( z2J(M>3I%ZU{f&cB7N~jU8%B3lH-OlHGK30_^I`t|1`*#(rLKmLZ|S%TgoH)9&CIqh zZt|pBA`8jOOlBs<)_0s&Ms1r$&?Wj6j=5PY7JEq*46BeD(9tf_ZgqX;S*bmC)@0>smO%Ol3V+LR%>c%PHzSM{vHZFkYdxabT~2z88|U3U(gG4DtP}Y zu35sfTbP=9!3tt+AD@LL){YB0 zqz@-{sVwou5~w4v7BHwlmAAL22Tns?4YMZBnZtV6F_2GyGz3n3rEOv?q(^~zUGbrs z(5xf|k{u#@iY(cnUj_~0=()p`3d24tVAtyZYx1hPEsC8_H+k{CBe)`h)iWv;z|{2AHChG+W20opr=z2m!!TK+k(J2Ik~MII23gvZYhqfW@CdE<{qOCjebu=8 z!K2EB=ncAAY@Q`p9qA^?@fvMH&xe+lc9b%8we0U3T85T~J7wt4-HLMWOQD}`Uu<3y zWPZn}Lx22uj*|w(qa0u^+@0^sBbzvt-+M*cg@OoHd~@lYPhhC1KsuahJaGSt@vu_8 zKEu-csYvK^R!O!(H*I6c_Er3!+NJ6RMkXfIBoMh~p@F%*4{iN<=v74p0}I{-92z}Y zdDCdbe))ffhDwfZN^vNs?`#@0WEvePtGF75h`@g#dl!(BpuGf~2QTSS*C(sT;$XM} zM-%T~{u<;=;Ef@DYcm)Qk}iDN%jr{t?`+@R2uH?44TLzpHQ&Dg4Rv=E(!NlwcyHt()Wg3f%DUO9h=o-H>rLnx z)V|HUNk=Wg>jr1CRxEtw-Am)(9o_DAx&-6;$3<1VdEZ_G#ef56AzvVNr1gya^DL-8 zzBDxnn&!HG4G;Im{04Cq)QiH0!P^Z572BdtY+T$HkmD9=p@JHs;q>q7?qLzL%oVp4 ztDe13^+JEiEzq>NqhoVzt=u11e1To<#f`x%!o*0WmM`@>0Z9jQQ$WEGTRs9^bI}R1 zDDvC8g1*7lrmB3^NDf6g`yQS%pnLBHi!Lm`D`ozPLW4_y=$Up`oxRoeT?S2jo`^Cq zG=!Cbx_G*6nV*N}3KVDX_(-ln=E*=BD1p7$+?aax3Fy24x)e#0dH91&*cj~|atgNA zQQ>^koYVo`W$_tyk|J0xM>TKN`mEJj&^{sDT#5wR)xv-X*%XYF0&Il1p$3UDF4Ou3 zrxB?!A1 z5WpXNSjBAed*JUA0qH^uebZ0?=a_3~YwwY}v7HxKuT0OOhMM%V(xe}wux7*27j;84 z!Hw@8fAMoDtJYaDF8M~P-l4ykNfg$Gv#Z7mW^v3w^UPSKDwa;w%BCpU zq?`vNAU*4L=p^oq%*gD~GTYGP!q5E~kqq<({K7{1WD|m?6jt%$p+1ULIg~S8-^`&a z2-@OJ(5;(-I>|7n0XVt4kdy+kMb{{-d83v_JX!XT5tp%(i^#3o_d|=voZys0|Mf0$ zsDcTH=Q2^n$AIkt=HjE#5%aO|?95C@I9cG#0Y-%}7K)F+3fd$ecmS~xbr4&?cD>)f zd1Gy@0JbQsCt^RE08QRB-4vy2tKe0B{?Fi{d(&9u@d910J4DKFz)Jv;bdtHvL>ahG zD|P{6a;7ewiiUa;L#Dq1s|{H-!Gqs zo@=iM3-AEY??gAI!AO)=l+AYxST;i45s1wf?{zghI~1|eR>Dd`xgz4ULb*^dh?#uv@_JKF%#MaW2zzUdkM_8b!CCFzMa61V??V zvWH)&^BGBpKG2xA1p&qX8L#Pci%hAB(Ybev35;5?F)XJ~3&`I!H~$8NK;rZjp!7h~ zJnmP5QRXpgb`kFLuJB_UV;>smb>l0=U9+Ur0un7ezJSj+v6QzAg6YJ!pQMmt%- z><|ey+tpV}JGsJ!10b4R?Szi|+==%K(tnXfmfJDMl|K6OxbqtA;9JFFZEYWiEiH8| z*%_Q)0|OQ4z)rxr>I9-#!WH`-paenuRQ^5r1S&LRCS`Dzh67U~>%a}j4q)UG8w_AZ zEqJg(?`jvAYND~C5ShjHtH@nx5#u1>tW9C^E*DCVdw)WIhx-bGOLuks1?xpLh@cpG ziVTMpTU2&{vo=@|&y7}<7pg$)!P=sg$&NA_*pJYF=V=^-&w+n1z!3pdTy!WJPUqGu zfD+=JkTBwe%(L155g`t}YC(_1)i4M(PULq5wu8mf?Fqt-p)do5GyT(1^l2lMnhgiq zrrg&Jz5#+V?)mf8GrruvPU~&QM!Wz*nf?(tmNF*oZR^c0K0F`{I@c3Bt}0r^2Y&0> zIDYf@)gzHN*_kG-nG;@^m*0IUfpR}~`r;%|oiL?1%ZwDDSrN2`u3ky1)={l^aq86B zVt>-w%iTy3cE6y6BkvsfO)KSBp5?8vwU5`|DUx=sLmJ&OxXQiNg1+RoICM!pU|^n# zp{jQr`s+{}@7YVU)PwpwNl2)&kXNh|f&`krh^7!{d4qwwrots@rzxk#)3LQpFn4I~03F7CGvxCV=$d~kvXCw?-pb?%0i&U1mT6;>?~Izv zFDOoDqolCp-zWxZ>L4%_*Sp}Hxh)wyI%VmI29amr&Rh-wX|W5up6;s@h_-y?8vL}c z+k*;XkJkJ?W|tuMft8d2?+J9a0l;?+Xks>ziGL5|KeXFVyT?FSgY@Pg$!omKU&{Mc zOI!S9sF4*QM+Pe@(~b*XKdMV^IhBMRofVpevjmJ8KcRQv2h5I-KK#n=tK!VNekJKg zI6M76Sb)4&g?S3(*96AQ)p_uqBwNmqPTj7u35wSSViSn5d%RX&_J$bJ?NcT7V=5YQ@kPKZ?|p+g;a z-#0=o4hJn(F!;I{4|(xRj{`xY!m2NRxl?PcEx0E1S-$J(`0bwn>q*_RZh98-4D>(6 zRvS5cBX1v$#dbEFwdA$X{|38@Y?LwAoo?Y=)#Uu`ZQnO7GVFN(q1|o)f@Ug!V5-mc zPXcM`5}3>yU8p|E(CR5ei0s%i%r-Z#agw-kWhHpuRswX7r*-CxRPnT|2B+!z~ueB1oKDqfg<^K5$&X3MJ50-#)Bk3>O089U$V)r z0=r6V_|q2yc2NH-yDbaBg82!SX^?m7mkZ}%O`fELvjgfO9(`L`)SPu z{tJM2TcKNcjorv&KTNDVuuD%_rkc@*AK+Bm0ny?7xQ%(AonVt?(zf z4gzNd#;@^7ORUXw#ubS&qr@Bb@O{-2!0V>_1$Kg|bi+_*0Ce0IM99-hiN(xmLr6U? z7ET8_4BzF-KR7XVXQBF2%ofz*nnzghJj zsgeb!qs&eMb<XTMI@JXNK~!eh%@yV??3`VIsv?%m?VOIJt?pU6rZQk3;k% z$$KGG{g=n<&_~POpaGKhZS*{aaQvCC4EVBaQq9;#l{=G276+8}31 z?eE`OF8;asrv*a|P$i)>$IcQnIRGVECR<$W>?9^8l8ZXC&OHG}yD&D}p+Wro`~F`)teVJtN1T$7M3^TBYw$h%;4J~{$hwMZxE%2%$W z*v4d$Ua31{%;@1WjEn{Ynx8oA)e5vne&k~iiK-Tqtd_1S&Du5QCrq&%#T(VVtKSs2ez?2BpJ z1^sm(43~hf`j<@=>G#2ta$e^SnAbFb(NHV1j;1EKVKj8?y_R`+0U!x8^2#Z54CDq= zk%vtC_tezB0M{@Ci2r&Q(BE+M60)xdnn;})bed};)SwMe-7z`>l#r7l{}wV~(3$cl zXrKc0^z`7!BvM|Rr(u^&3Roq!Fbf;=@bMAmj62%N{Ue~M^_};G@d%jSR=E<3O5l8I zI*p9Ql<>7ik92^cZ&gRsGH)+rN83E!_43@l z)h4K2;Yr54a;uc5sKXK|E`**m%l1dnernysOz9fN4is4|$X}ABY;_8I5ffGWqQ8LW z+(dUwmdMZXIt!`PJqG~C@rR&zv34{vk2i1NU-?d}?5L|P=1FL$36Bw{@o?VQ5j9#b zbkg}2#q{#0X;S0)-N%ck3>0A6N5RBfLQfPUuU~C)_keaNmb2K{)a<^-jo72)x?1W5n+&e~mdGkh!|2L#HQ(uKS(+O7kW(0Nne>OK zVqOyXX~x>uLb~GohUMWS)_gS8E6cCO-Uqg?5N-P(^cfh1u{mXayAhwC74D>ph`bG? z-6-347^<3mp=ysu8^86D)+>m33>Nd4pIY1Vx-8S2VllAlbskSdzV}w~T%kgmnhH$p zK+T9(8RoX5G`l2w|E<%Aaaye@pDRWJeftcpK<_PNTYr*4TVh{_)^`k0p1Zn+hD>Xi znyq3MPpt~Y#o_6{CN$GFYc|zk?hS8bzR%9eYO%s%_UI(Qs`gC|X6h4&$WU8-oe~5cp$8XwWvYyk*;DZIEbj2@=lcRzE84T)97;o7B5-a&pJsH?m~;&HdoeqvkYPT$@}*QtCQ$B9atn!k7b{%3#UPs^jvQ@lr& z?|gg;#Bb0Hm=_Oc&M(8ciraOkrU8DfPSpck5syjQ4*OW|S4aeizxm$9p-)7;c}Xw! zzH#Cq{}lRDK}{+nq(J3#9-2*&dulL3=Gmw@;oT0%hb{*0c^lP}d!A6QPweF+o>hxv z6Ra#I4|0)UJ}=mbi)Vp!t6J;UD2FqQ6lo%4NBlHPGazxP<_S_^AFFZ)! z6^&_vz=c&;pG?r0R53c=FK0kONub(W6}j*Yo`4fO=C3F!M< zkxOS<8M21Y*vQfOruc(;hkhXx-F>sB9FpY$44Zgel5UrTvI)D^ViJ|_rWl8uO<4k&{s{A*BQrRw}I&E zUcNouE|6d)hUeADt|cb$E?6hZiHi!WhlIL6xa`$#Y%*;QH9-<54#rp98Y}qpHtUAw zMWa$`kKwd+CLy`?bZzzvh_TAgFNtW&{L6q!|LmA8Vpm1HN2Tw?a7fcar zNeW5U+B~(^lNo49$g#Yq6^-+|);b++M-6H)vGSvwN~2OYRh6zOX)Ik9ePBeC;ZC?Q zU}ikDBw3l`c_J*lMK?8+9>9#Pn7>j`d)krSj1tnyE%_pzK6(1pP~s)2Gl1dQX{k-*3w`yi~Oeg|=DLqKpGeYpXA9`j1ygEM=(WW(Jh4u3*l8F%Q`qL5JC z_2Tyf`2`pyR?8~~`(+ZPf$i3;$E&Ux@lGGs0pXsdkAy*>{D`Naq}TCM4(0H9;qlF% zBU*=W)QIl>Wvvgf1ikHS7^)MSzLcrc9%DgcXQHD53@8I#{+bsgO5QhOBkDSyc$$@U z3)#}P@n0JFXCj$wzWUK)suR8%!HZ)xl^G9Q@-{vCuGX-Hl5Di^R@UbCB^5P~_Z66k z*Ua67#5RVzqRR2XPP4el6SNEO76L~y?qHD9)!)2I%ip}X6CgNGZv9a)1nk;xpGfw9 zy2ynNiP^6N|NM#vFjQ|Bl9_nc+>RwBynw8pDN2r#ViZ-c8#h&M`A37Qy9GqI1FxRQ zU${zwNaYRMifJ$6z_d%O_)Vohdu}5$w}=%Q`QI>e1`Z&6V$>hd^$<36c$R3hRKM%2 z7##mpcB7HqYcvf(@aKqY?O-Ijf=llyTDH>j9~j22e}*l!NccP*h{WdU8tvye#ng?S z83Sz`F8UP8;iNj$U?jLc>{+R*)8%g-z|!$O9bW z%qFBygr75z+5I7dVgo+&HOiMf7fm6~PV4}Y|J{gJn4_Cw1~T{COScy4HF79!jT7F4 zYDsD3Gt;z+n(Y0-;xRJOeYc*?4~ll#jIhyi3qA{tpHUp%WWAiRi4wrWXmRnu?TU;x z)=iw(&Ru*S%24BHHB!53|+vPUC-w#-@U1RKoo@@rM`McpTW@3U>ZO`dkN?U+corJ{zBIna;nSmLeH5e9d1 zwDYpbVBNg;nux)^G|c>yO$rSOf#S|gj0I(yj#wROsl&a%3TsqF2(PS1He=9DsRi65 zzEbF~7{m%#JH>{L-AipJ=4&A0{MBh=TCzg=b{Ew3N#O{}89c)HLpiw}CgN+Fei9vg zj*$`l``4YZv=G&Nq8p4=vzLu{I$+njup|X_6!DAcEffoFTFV=Y5Mjb_xpfD4JJ8e9 z`UViA?$mYW$)mN)%I!$gV^FG4KMRR-c|VkE`4gSB8a??^%w_th?^tIFl^*G%RXQ|l zg6e--j(@wF`FXzfZr+m1NJY^iHw^qS_+_V$ZkVYxdI7r077Tv5)tQ%MJikCXVxVL- zzXVmkh{-SGZa&)Ab5l<~Kg=>$7sI2@;|(?J+2Cl(kwKCQ|X2smVSie82YRF(Y@}p|I=CY5l7V>QZE-i~FMCwUfSu zdx9gD6;B-f&-j5W6V{DWafB)MYv;b<5s-E#{c3!7X1EFjpmsL0O3jV3FBfu!v=NWl zcrzU}=J1a3nt_O<`}dW~n;)@V%6zJkrRncqOTtXkwz=RYYaO*%1pMmy#+pNg46XAc z89N+X<_zdc6FIX^3>28?GCaYv1qh2xn6L;By5M@_eoq>z{U|UBTKLqtxjZ)ZPTi$I zU#%BGh>TB&Ey_Q=hKg}wPqB)`b0Yj7ZA|JTV~0t50?%$rYjJBuEer79mz9K`j9LeR z9H)gMYiNizx+)SGpM};>s(5k^Gx74IU@$y2MgH=6j#&2XXmyUX*5*}Yuz3$zhgSRp z6QLsb$AByA)U!S5lkKv@*6yEl&_|-j3_E1d7vpYdegI8&v}m|%gbvlj@XnGTm!uweqTmbe%6vV;J#7z zbcFHZ%_-H&E(IHLw$BQ~*z)Y|wRLn1JPL4z!ui(*D#kKoj$T1_t~pG5=|P*%abx0;*av&?>*g!qVWvh` z#H__R>zc%yAL~12IQ$Y@-Hg9}#mh|w%+!&2HFvKw^KVTXG?QXUI0erFJF6ahz-gl*eJ4R%`f&XuI%Nn3poK}y+FJSW zxvnn^b~@KIpjo-RRt$U!v|p*co`~!3m8M4LdLiZ6&z$j@2-q4{lp=gEoOsYYrxy90 zTxT1_>}0%B%BPr6qom2FYdtU|w(;-_orwxR?RKM7!eeXWGn1|W27^Qk_PWL5+I?Dn z#;V@Q!fSsaY=p{o@GQ@!MyTEanD16W@>M&ryeBwEvY&ygE)TFbz@VVHNfmJy$##`;tzko`Apd3$u+Wm@aAa-ATN^s zzg^uZREncA$F1j2Y@9Ve(n++rQQT>#@_0ZZf+VngYFnhrb=bjXxb2Z@sk>`6KvS^u zlB&k0UwR&(q!1?Edq6p9Z73G>F?JE1A?q%NCcexg0x3BOe z%XrA}7TFg$;HiwTK&!O$QoV4;wv{Qj7>`Nm9BmKRne56C;VkT?Wiv=`OH#!wLU;-y zORh_pWOlZemwn5{@K3bLFzl+n%Plp{^B}5>JzP>x zh>5B4hidH_I*pe#7|m@6u4yw#g)OMp#a7q_O|$E*t)-cnJYh)i-)k;TGu+$QMQilw z>a^anA3j{kSNYPw5_Pu9cD^So!bvDBk z0^JK>acQJv@pA zphEmO)H0O~eCpWd$46%?Qd(ce<}{_JrvoQoTVANwRsk@2%|wNisoX85Dsc|^irh2E zs${aDoYRMRlGeQClJ#SGoUZht`nIeuR>9#q`LS*4{&$>lW;!Og{(ZESvoq}(@cHq0 zP*qy)?`}}s*;e;-_K1sQ)vKQV0idK*gfr%q8#xl(t?xNgYvuo1ZwgJUDAIXraESl> zg}j5u?z?Efg( z`>wv~*g2zm`R7y&9uBo^1BK>?qA8%k&!FQtjBnbzof~1d#d*o*DQfVr!6%TtEg6Z} zdaS-A8#F08F7au{udb8sXKP4pvdn}_io5K13j&f z=MTWBU?#ypzSNy@Ld8~nH|e{VxZhlP#a7+x z+0@*JOBJYFB=686ih3}YA*<60lH`NLuQ8Jtgujs@CxyxF<>5I(;IrSUPsxc!3_ zzZ=XnR@GaDh9$xI2z+^Y`&ehy5M`)UmO`U1QNTfS^QxdXZcxZT{cf>Rub{e)_ueCs z4PQn+$kgsM*W!fvtPMNLtMQKD3oKVohnfK??#1JNwF^wG&-^UG8iF`!uhSQ08|Pee z!^Rvus@nIq*HANfzw*L!p@!LhYz2$QP(s9Ng;qOUCDCA`WbFazpc}-0@j7;L!KUed z;p+IzV!R(Ez9#nQ%)603r$y9N>86ugR7tHwysIRJYV>>rom=w3A`4#A0k?d-#com8j3|>@?K^^i^vqb zL=DID6Jy+WngHQ+pY6acg`i>1D>+fjF1b4YIsd_+robeov`AebAiL%9_M z(--KLVh?AJ=8^}#la0VEzv(&6GR!MYqHqRsEZtB#L1=h$2c|x!$u@eFaji)TC= zhiCz&lhs3UURQv%c4}HB%YLTwaPcpfz~Jb54AOU=VjP+@>!wv=WwlHLnM!YA$~SJT zATHKCbD55HN;(r_5!9pd^R6tH2P zEdN}|PSc}d3}=oCAfA?R`gR31zcnbN`qL74K1FAja4-2Pd*$#$FgvASj^sDT(j>Y} z%50l8Ohf9Msa>_s~y6sb*T79;97m;L;6R zS=;j%$yN%q)zBj~)MJ0W7W;`iFR)$Z;qVM4b=}+hy=p0ttVjyH_t@&Jn^WZIyH+n6 zJYK_pZP9TULDrwTE6X?AcWmuL<~mIZy40ZwZ#~m4Tk7J4Hqfv8)Fm7;=Gn=eAKucT z)Qftt7nx=6TaBSHeZ_V|6k6tuo9*y~=h+R_vy}gaJL`{n2IGwZe*9^> z^_YeET6}i4X1ogwIvTasxLKTN>8^G84JOf+5B<`&Lv}_(zp^a|+o}=pfp6{GSUY)) zrs8Ud7rH5w?Tgn=H}*%<5KV91=!Os=M-6#{XB9*M|Vd-AWgoeeYG_Kh^xyZ zN*??BomXN3)HIyXC7Hg0hE(c+?nw5$VfUA^!J;bL;f1Bj36FG8Vmg z8V07~>~^lTZeJmFB_xb0kq3qQ{sxN#d{Mh`_Bmd`D6i3np%NR~-)GCz;>V<}vu2$S z{Y*Bx0aBZ;;s(a?mXEqvCg37WvgY%&iJ$q{E_oGMC|NFBnOvTDB_pn-W4?pA9`NMI zv1IQbv{m#{4TASlnECK?Fy(9qYV2;K3;ry$Y`J?!k9>m7>3Be%u!sxw$Rm+iQEipS zl=prere({zv-Q-Wn7+JLG2&8LO%!aGyen6fw_M@_#M83LVvV9PU{8XVusHMjYNSqa z`F$N(bcZcoCdw+Vhi2QrYS;WDrLwM3yxb|U3vw{AF+a7cK~+B8#<0ufDWwP zfnVqkI}x-ZJKYYn``>QH;atvF`s0q-o0cVnpLf$F)%)LUeG=mQQD3&b7RRo7;hsc> zC24`ZViaIbnpr)Eft-WAb(|16l%P+Xyw)>2P;guKn!y!L@ zQ;d1NCFm9{w*MiAthJM02#}M7KtsN20~pXhhFh^WWww>#WgD2 zCv*??^~=$@mT%5iqUl+y>Z2RWpH@3Pm>EkN$6;9NP>Ji2+1&S*A|(f9-!!CFA*={# z8ES29tY@af+C8!(DP2(C7&3FT&EL;gHh2xZcS%nM?cb;3FT_2hTKVmQdP5A13_74#h|b83&$t{%I%_`e zJhZxa$ZS(DAWST$7NC!tvNtHz%@!Wm=!``L_aK)nvL9jGqPRpv3iHAwm_@5>M(YD= z#Bk`j`@>Q%w#~^CVsJ^BrV{)r&7Y0qZW;KJRJmCzb8ZrUCCA5`Eoy#Ua(>{vnnR`A zE&Hu?JuP*9z556S>AJ%?jw{hjpTW(Dx6Duye#IM%>p3#e44*UVg&sE9TxX^ildX(kjbBL5LR__e4K_#_ z%iVS?BUB7|E1s+OFBCQhF9CnRINSfnIp_BuoDaXmx%;*Qh@X2fl2^RF%?2c=*|boh zs|AeHhuA_c&Gq}+ zGb4OD*?$1xAfF~isMjOGQQyAX@JpGfjT8mNIfxHVMH7(Gl~7`kH%`{b0*QWv;T1`0 z5mMRciFII94dfj)Nbnp|?WhNeK`m5x9ziX<3FEk`4G;c7#Yhg%D?zNJvu;j-kzo-` z3A?Xd-=5X^cvQ(|=KGXwyhF%UsjiS7+!ksm~m*1rgkY0EYq!P`g-KNhhy1aw zdaoNHA++ zA!|GJ*xvBb0dSzR=uFp^{$%_thiV4ZiB@#VCFek08H3xtsrORqS*;Y-TSAwb32olX zFS}C$FL85~(v3Z9(bpebYAJ|yH|0kJJrdp5?~94;znJnM(S2eHG9X$0Pv{mMT(({$ z_)!_Y`5XaA{hQFb-56| zPk*MrJhuKUR!gadCTNZB{fJUIx@$#>BDJuk`#>QUJbmM zLxgIh#e*xbjqN8KSfud(`Vk9Aj7;;mzyo|z)<7$bpMIWo!vSxcWqNHpX!&=O##m^6 zcG!#zg)F888_k7OV%nTE5jUsdWiKIu;-=4;w(dTVEu3>!*|_doQP*oM18u3i6Rv#& z5qKHNA=DDWGrjIXV1$@**$rcC5nL>!qL{)788x_7z#WplzoU|{gU!JYG0^9^Dp z<`6$h`L3SLizyYVgBC}kg2UpTpxt1+SJa`yM^0IYyA*c`Ru1 z*Z2HW7tVRV&+Gjf&+!=T>+k)C)0CEnZ(5IF{Y`ehIsgLgw@Ezdo*BD1kEe|L zIWN&PpQe^3+o}h>+gp)Q;rZGdvsJY`XxwAG{P$^Xz{+vE?0_C5EN3mtBbj5Hb3Ia& zcJs%IlCG4g2xG3b#wRj<7W0wdPiEdruKnp7kv6g??$f(JVB)E-(=#H?333^7av5~7 zf9T2zJFJS*y1L+K|sd(?gHs=GNiY3aG z&&?~9JMQ+ar^YMo(7P3EZg|Js}?qFNDNpWp;{h=nNh;cK_t494cQ#R9i}aoYpA z!(w)+Zw=8me0$p1#%2YCv6f3le>4di$w!A(boWuZJAXv8>qWa{3egB6*2K8a)vDw+ zd~^?4?p(hVNZ!BGE$0Kk(IlT8i%Dmi17AgmGl;twmsI=bgxcHO*wiZjfM{= zEhrELGuRb8$noPMgtfTMZLOdr+*O6D*_XU#+{yV1ouK3fC66EalhJs*iLD;Bo!mXb z%AEoLf$5{e&Tspa>|DW{zp9xMxK-=AYH;ce|MEz^`S{ekg}MY$)x973*~5H6x#qPZ zH}_V(V_vF%NaU3vZGlqaZ21VJ2HDE-S%DD!{uJ|gx_rR?*a*t(_94~do&vrnvE0}F zy>P{eEGwEP?mntMH>{4$RJfkq-LIi0ENvL5PzuYIqV7y>08#5|s-*F+H)WyT6vtkc z+|C~cDBGeLDQDraj+cnt5JmJsjDcP>jz1Ln5WwIr^Qoy>o8_DMefrcm=|Rh zeJw881I?L`3i@PEeTSq(l!*XMm|jx?2rO`{Q4ZY=uSVf!p3$|rv|r1m88gRGx_wAX zGf{dIqTDqqCFbc6Fa{;U<;>gG&l+m;oYp}y!Vc<5E$JP21Jl{efmHhU2fPMg_p(|& znpi4qLu<3i%{Zn)|K_2mO+Q~lH&ciTr|p^q=}P4CbiW!PK3rkTM8AEMNrer4TMPeH+0UeAdg-> zy?)vS&qmq9|W1-ApFS2O@SaYeWI>Thiwz zm4gnfqTLuEsZ6Z_$N%-fSgq%)T2|t@tlShXMv>T5q`T!qam$G(ElJ;wrhO9FF#eBL zK9WXW?ogBO0`QVHzX-N>uz2+x|FF8_!)09r)_l!mh$v>(anY)GMUoEFt2ScqW9m+q zV@U_{^{Ptp-;?rn2fr*sdEtw|{e@0;zeCwl-azPZ(LR%ia+Ppd9Qfe!v0HUj=!xF9 zWENqzC6qUVfXzC?@vioEht>Sc7q*uA4t`%~NOhE3)ymi5GflC6T0Eq3{5R!hZa2fc zVf`|WHkJSI^TEo8G75$%<7D27?ni}kX~GMlxs6yI>4`X9*DD6EoCp0L#cZrFGSBJ< zk4Hs%TwAsq&9g{6n`LDV)>RO%=V4Uq=V8YSb7cC)knZ%;5@ibXgW7vxS?0X0pCw!1lJftcjbwj8FgD z?-e1*4#(rv)AnZ8U(Y@KW#4s$#^SV`T%dL5+&=raMh;_d!p2hV$81gsw<5!``IK6v z{O0&hzNexS0EvHh&ab#M9;(|P|kepi63#oO8DjqpKuLC4dH-~&I} zaM=y$^cn&#&7Cik#-+^h=$yZ%uX~^v*AuJ#V<9X*m#Naqia*GliHIEsMjZD0wN7hm zAR%N8DlSPFd87^u)`v{axOzuX%pBvl9?2lVP0>wKw<*|;_IOjN_INQo9GuE_U1!+Q z^zQsJ1Y*-B4=kWv8Gpkx66)YyZ7GIOjED^ z3b<(dBs`pmt;4HYm4PI%h7r?4=O*IPB$Mm#xxr^77}jut)^ke zKx4+~#JABdebXoUhprLidwS^1sV?!ASy8y~w7b*;hP&n6TSERhzpd;}y}BvG)v#X4 zzG^-di&gKir1DRz^Fca%1k?6|zq5oXNTHes`cxt!H7B#6$2@;B{ShX2*gR|SD+77W zRf>;E4`gnJX~N<0M)%cy5``^OU0|l-)~N`K!FP+pe7PD!fmt8?nWP9#Xro?0eC`1O zy5-DmBIvppq@GemG;70jb7V7;hs5bE$nzSFgd0>uzeyLil2(ec+$Mx+heJq#RDLx5w2%Y{npA< zpcOOjaYePZ(%IH%}f%yvM3GwJhw#?KXwk)AzoPO#T+&8G?)C70t(h=5lpNhx_jab@G zmCzvw>!U|jn&o&1JyJ(sMsKkLBK3^8SLL7!_SnPa^1+?WRr^lUfh?CArZAZ?PR za>NBy)R^YQy|84NyMj&J1^IGO&7%2I1f>rln~IVWR+l7@!6+$w zDCj7I3&`%T+9h}_U=T+MNOBsk8i!touX_g)l*1ALf zS*`VR?)Lfk5RKOpVLq~1+m%Dqa)aN08vb5*IN3Fr`flo0M1lSXyrm8E0-MTR9{p-3 zdqdN%=XQxKzQ%4fucB;E;AATv|3ssNs$dTnqaGB3lES6X>Un%VZdu zi%*zV#KpwMOP4R0B|5**@7A0WnU9RqwLDL6cBBCmTH}ld)8&qd@ITsod!)oU zNz~U^ym~{9Zk1G!qwn_cms4T(jndL&dV9BpcG+^`rdUBV7el{rxqujFj1^Cu&#Y?k z5=NnC_)*`35B~Zw`|ZpEi_A>bI4j^xV+vn3zV~6$dznf8U3)v@xA~u6?3_|0zrV;= zK9f#}TBgUx#StYUCX)(16rz*C8HWC%N#W%}v$KM|lv?bAwO13lWoS>7cE}~PW;BpH z7|^lsIWAcei+@s|&;9yh^iA_BXDcUV$bOITZz*1()Jw=>`kL!x?!Ga>c@V1C6=sAH zmJo-LXSJ)Al=j>uRt(~hT|2ivR+H(WzK~w3Rjx4k;yHJ2g?>8s%VlipV$5>zqKeOF z`AZSZw&qk5qU@-F|iQRIUf==*nxEGTqkOII|Z9QW3EpIsZxYAZkWus+abZk`ZnWKs2%Bx{Yg= zU&rTiRGzwh^709o#`eXoTTNLg-RiZOor#o&jakn<0rk5{27=isnb z+9i&N%0oDn4<^S5qh`5QEme|S|3b07IW?)6SI{4M zr~GmcDzUG|U35*t&oetzCvmx0U3{)Krl+<62NEX{akmpOY6TV4F_!WLvz4RI15*jf z%cV%yg-a<%I89w{vlb4kJi?2bED^5)pK!<*E=>{T5M%{xklcINIxqLYs%Q%hiOKtb zA>DOjIR0lLO8kP;e87j>gWy)}qT33{ipYZXooXOtm-&aip{;uf0;oiBT}Fhp)l2L0 z(SC+|y;5YeMEq$yLti|ibC0xJH>UvVt{G}TDgoi6d69lIgc-R+m_GPiS!Q5urX$Sp zHF=a*uP`WQrxSZZqA#&|!m;{z@qpUxRJ+i)GyKiDYZ<^R5dK_tBJr}0o$9m3MPU1! zy|U9U%mlJlsookK60`myuF0QjHDQ=a-ZB#9@)LgJpgfIwrc*b zEuaAqziUR!{UWV^ZGt9yyf+&kB(X2`rPn{0$6)amKj1HPUfCqpg}_@DADL@wij8{o z93!?WOA`%i*D^0MZ#COGa&+qMe$2kdTsOD=cDu>G!P+y**6sTuZTzt=$6sG%yg%LR z=(c7hP7vmb^snNpZQ!9AJXkoOd1|mA=g}M2%8q?{$O<>h-GBSu0weCe7p7QPIq{h2x;pY>=c#JGVU145;JAltV8#uB8lu7oAiLL_ zj@?44u-q!ZQ_Z1d)~{M;<2FufQlC06(EK35BYZIP8f*jl$)!ss ztD8|pPK*mFxC^duoatc9UK!+Kq&kGHotdt8%Cwh8lu+x4pz7+_nO<7@5M{G@6=$DQ z>vS0~K|_+mT$r6iB=IT!A*n-`IL!3T4YtbBAKe6+R>eJy;Up(C|DWq)TEzvr= zgY~rXN5lbFV@yxTk2o5|UX5o7s4-{wGK`@2~+CAkTtbeMJuR$(7E_51BgK;sp_<-e`rs3+6Kpel(3j}aidbOw8`MP2z`5@%#a(?ihy5epWjU@a!VUtt z?n|bu&3D``$U=|9wrD0f1yoSA%U$8&BF1kIm5;5Ts@$6Ap3A#dR*UlNe3Wh|z4%~~ z#=9>!^c3a#lK%+c@Vinq)@pnVu*^tF$GLcry3nOkmFrDPQOfd_&n`sHYu?A8?1J@bOI~TAF~)qA(}}kYq#g$SI-n+EG}9ifqcwxx>|r`SGv?UE*Lhcn`_hsZ zSrV5?ZL>vo;^~%}WasyDa?AoY3CjoAMr!qf^l#@g@sYE+>wTLo5Pk4%C!cD-#(g#0 z!f@|;y>gTAPwI0zbry0OE-GGD@AvfW2ZUOKj6CA5tt}-G&7ZC|Y+Nl@8P5$KSWmo~ z583N$LLk!XSzN};^qn_LxMXqu)cv}U{I7>6Xa~n$do-7@Km8K6v+!Mh`k|GVQ|af= z`xyocKeP)oUKaH14$Mx_2$+5!^JR|Qq$}ti@KL|p2gXW3zn-~*Oyz;Qb-az^eA;9m!FV0NL7Au z)61#r@^by4$rLC#d z=lL9?W2Y&!-Us3#LmK9|HyTGPVCMu5^&t*ptAt|C2`6)^k?@g^013mmj{;VyVd_M= z8Hn|}ma{I0)d4zb{p`ReaYQMCR=oFWRUcM=;cJa@y$}ajN4uhgZ3^wT#b?61=S3c- z+3UQaG^qs!4sahQA-XxsLYdALpN@_sV?DMN~b@$20o29eAxQJe(FS+(%Xh_Qq zMhTv>O(egjgRvpJ;{{K*ppcM;O4CTlHz1r#S1j)(g|rVdlv!RU(E1proJLhCN&u0)Ka%}ZD{O;Km5)oGeqloaxmP_;fD{lpD z-cH4_Pk9-F#+68|U1PxE3V+k|Ov=b4*9mtYIjmHMee2$l`@1xXZ>UH8q@26+bzc!D z7+X$BU&lk#Gv_ogoSLXMB7gBoCpA-<&H9B47oUXhL8SyUl>}N}M6u~Fz&rr~gd8AM zCRLGXnyVhqEZ%VD8ouv1YN?Q!l{La&w99nE96neAq+6&LY|(vYq908ggB zBAsCQB%aTS_tK8Dij(wq-q*wS#rK%&SAHjF)vk}PdSa-5{}`N7veQ#iYUS8Su6hlP z9MghnFW{#1`@RY?_WgkgbxhU7j8%k;t6dkPU8+u?3r-e`nm+zPO zhMD;VEm*X2*NaUke&CL)Q&kHS>@@Uc0xQy;~3iWpDof+YC=4#V+U_6yn* zDj;wGiW^uf>6ml4_rO8IY}I{5^mgdZVpysthWUHIauX4E%C*^CeYhtQ8?TF&%;}BR zqzLaFEN%%qNT|(Ih*P=A_r3nd7lxlHmL5=M?!u^wnI^c0kSftsDi?D`)_|?B3u-cB zFVCn7&u1XS%@lJ2acQ%k=SZ{TTJ>#KRAAu#E^hU4qmYRwC)mP;7dXjlUJIXecaS4H z+&!ssG@ycdKb}*qnU{uMviZK_ei|)yf2NvuuIO|q)ylYIcY<63mLu9442u~imstZsRO+;R8x#Tj0wRJFtDdg*l%(G7unJx@#X+TMK_uXLPT$gd%C zMBmCXTHdbQ=b~`6G*cP{Wu#ddx*O3~h>A3OTHgXMdwp^_cW(MT(LoWz!matrcC^Hz zshU!rmVw_U68ppgU`?M zrlfYSpJ#Qd9p*&--u%BbBvKrMY-q>b2k$?0Q}!27^Ojw%Ogj2^e3lK6Z_ z&KJ(K4KYM6>V#6}X`M3jDS-_0S*};FxZ6-eB{WNMkGDF=@<*M94AWgBoWVQ)k#++3Kf z%08k_NZ76QZYe~XYo3AT5y(pqQ!^sE8lY9UK;jVvnMmkLmDLJxYvd7H@MH>f!gehF zL%WpR?oSzoe9LEV zepSJRpW$r@-rLG?T2=yi0HNEWj zkjyy~7euYcDvQtMLE*&U@KXk+gNG7fNSB}tic>4xj)=SgL4z4c+c?*P3+N~`7Y(3W zCz2ItFMIdOu92Z%nk)si^fOTR3k^LoYEckcYA9*m8X@CXWpO@GxjfIZV6+3F@Pama zMF&)L_%g9dSgebUjfRSim6QBg7cCL1ghT;O16(P#`o9Ddk;X~6C?t@GynrhcQzjxF1^6W! zU-cj~3+of*5Hk~#*c)9wheKsfpO53WCa!mZ`uVYQqT6sjwzRe`KCi5-1V#?ROSgJhD}RPzh`U=AWKlzh8#snJ2N6VK0de5 zp9{;{3ZjRfK79fyx@dSke?BGj!xV8(y94@_me~2)pc=_gA-t)2sY82fbOtr!h|%lbuouY0VUdm3E0c#%h|sKJ|`i^~GM0ib)s%eh}cPy05PS{kkMR1|}*825Jx zn}Iik$`B5(vi&Y*M|^K|y*efb>JR-VuOlL^=(8KHurDH=2$;&Fb>5x;a|59k*T%ya z0cX;W%A|uYqK#+k>g-feRJ_!|B)EiM-r+vNDhoHeCXt=!5*H~2qc{A@))0$@?tS#a zKz{CLG+M3`qk`vx$T@MM?Y1s_mWV>;0Xb^wPi+IcReK{*8|F zjcvKdC~E)M``|s6nGSL)J`p=#^0u`#J2NvgI~(-sqdyE0#4E+??CU5W9g4!^`=OwX z*~CBX%%`VIOn6z!BbF;$75RLjzhJ>|xx!^4MXTSL9&f~+o0o#;Yu)_;qo8cD14?4IzFb3w6_wIIm8B*9fg{|dQuI!!X2Svk|TH7faFRlQ}cKb z+r8B(0g^b@{KHp_cV`x_wJ_5m5Uf# zh@I#1%lH4=6G-Cai3h%IQO}+|1Lq1@1PKXx#l|ui{<)?Fw$`_Aul+j6sxclgHbj`S zwh-ca8Dz$MC*&y?GXoRzDJBM{&NC13&p)(v%717tKE+BuTi~%)B0(>sgIvC`O=02e zsYH5jyPS7J$??ULZ#Bb1^6wg-R4&s|PZiE^R91QMPNn06uz9xf_0A!N^?%Hq+Rwtl zBME(htL*GEpil#%78K937q28^ja5&QFYX!bQ+D_=nWKG5p1Vb6Q03bD zU{rwq+ZVL>lbpUy({^tMBZLGeO_p|Q804OZ6h7BaW#i5M*WjW|kHeEowW<#TC>9*5 z1OlOVJbwx<=CVfPZQ^aWUz(p?oFRrc=w#ZKY22e>4mJ@15rKr9?pOk0JC;CsJxhU6 zUYo^VTIJ7I?Fi0K!u;r;%Ny^p$W1SCiO<8r<}As{J@EEL7pdj~f9B%9#~Xb=I+mId zuu&uRdxy5F*)Lph0);2_OobITP^bW*GF4U8W4{{Pqc6G6_cpUMzHM#>B`r|anRf*b zmn-?xc0(%MI^97eIev-5sTa(v_HK=;3TC72pFJmM#lFSEmp|m!G%gr9r%#4IXL(;% zCb0G#6{=y{%JsA8R z4GA@mNKkU>QY4@qMWxI`AcqRhz3 z(jcJUK=yvd$>;_YU}=hDW9i9tN=r(N@103z@S9_~-br>(GT`2^^Q~$jZFFntG^V%9 zg53ZLL|L-+7-W$_ovZKagY#_@3@!5w*PH!zH2$dtJQ%qA$k?bOCm|u>u7=8;J4N?w zL1x(;U<7aWvQDTlOEb4_PIOabY#{^gtKP!D!+H&kE4Re`&OQB-48>wRL={zghn9;W zNc0ndto7pIIidY{KL>&d$Ds|Y5@Z_o>b2?n8$2#C0!+4|<7 zX$2_^^L8NoIC)p>6U~)F(QpD@mV4$Wnh%_Oc$(*HrEfg|YAJ%qvDuUJ4uLsVR(5kb z;6_LECAlsUWVA9PYWq0%nT6zGvO6Kp5wIR{>Q|FHgF>-Bx~kMtb>}5(mU)JM6veS~ zCKtF5WIcK-ND+GYM7UT0qZ}8jVOxYco}3**X1qARkJ&x<+abZh@(KziQiouoEQ4Gw z*f+8l&}F!2)#N9>suftbUr(L;llAfNPmzUS) z^&80E?VENt-omm@=I(d7EA2p304TgIzrdwxGzcz6uc*n01Yxk=_V*MJNMA>cR+M<6mBb1)npp$&dtpM-^7F|6|f z&@ji%Onr>$Le?R>rPQy23MYPq>~PA=LyR4OfzSqM%U~fi-}L7i znZ9RT|8&b92HtM|Zuj}r z{Zc_eTsIg!Igf;^OV@o8Qcw%&@!LN|!@!^mfQ`{0HgrOe+ zN0!pmaG%lnF3r5}9$c6H&vixNy3xLFlnSq4FM%@LIUs*ux}^A~4rUJcOU;>ApGLl~ z#JguvQBi-^ol%0#PBb@;`$Vlk9%Ph=oi3mP#$hkH1z->)kAk6w0>(j@>Ii=K4B)Gh z#B@6VzsDqKcUQ~9RtvO)f$E`E@8b=#1v;eMI` zRGl5NJI-**SjfO*NS5@3@2)5>--El>bmC_O#3&GC{W0=*ask{CV3*L|D>}xlkja_N zWr61he*GecQtUODYs2CHHroP;EX&*lsh-Q^D4NGt<0w5rAkhrypRg+-O1|E&0T2pl z$@QtMb#?d|SdYJkjzhdV@iPIPDhaQ{3;19!wck)K`VHhW3dYSh&`|{mzeyUpaIpg| z$gy%*j!Pl)B)XDtyo?I$(``QTVbs;v3rBx{xH|WSt*(19?D%QQ@ADT$K7S2G{qgr? z)f18n4!_GCH~^~$88X-w!eC=U--LV&=C1&|o6=h}F$Y@BBG4NKl#bbHN>gd5bUq*v zX)8NEZG8u(L8Dvh(TaAylKxQ=oozE+Xk~tItsMc`cI0naz zDoku8lfG9*38Rmc=A+}|mfuS2 zSs@%c2>jLv^YYOTs^x1_{ z5X*d|gAS9dZK?p&U89ct^$8N+xXG9VK{$805jpMMK0wvQ6*K}@Vp(0zgVN;_p4Tv; zL?;jZ^_~>LXkTi^zkYzqWMD!JFaGmt4E^8V8^NCTpI^e6bS-`V-{zYVu`qmp{hsCh z+}~!3sN?tlXUI{9c>iapQ2{Whf4v>mn0LVGBLN<{ekI(zzjnPsGxP%50r%W z7eX%44aGh18L5td?6@oW)-5m#{7MBvj;`ZEA%OI@TA#Q;cq=WJRpVu`@;VYvG4I>*U;I|pWVK&g2=`6^fZJP zP_#ILHUXsfNh$If*s5To87sK~kxynuh$75x0mi2Pcs;|pe?(x}yv9BQGI1e9pgInY z$;+Ar2?N(92*`zf+gl$&q$%vwb{Y?Aov_8!P1E#%_1ix$iStz!t+30x1-&T!Q%Hfx z3bs;w4Sb4TASLZwi(hxzehSucxE1W75q0&Mlq<~t{RSyRZ{NPf^B5XXL2}W4H!CY^ zVG^WXOs^e1&I%#iXK;N|QBl!2Y(7{0-#4-B8@euJB|vS;3xyk4Zo`;IqWU{Lfirl;=lKCpe&3usK1%=A8UjP2*p0k-p4+GkV}=r`Q4{ zY6m$FK$2R5h_pb20P5`yGwtBe_17$AjqQz7u;FfYhlC(g0V`kbhF>%<)e1qjjqd7;xddn{U~&shJfTma-w7)<^O&Gh0E+>(K|QyGH&~QgwHZUl!(F4@n3WHzjFh{o}iwr;LClK zXhIquHgRPx49F!Nj#g0$IvD7&b_H{&{iA;1A+% zV7b)xAArYph#^|Tr7dN9+wHHbWj;}U#LeE$!g%N;j1zwa!Fc;WUd)hIMKT36O$<;o zBBeim*q0tp{i#a*>jHRn{xg=R(i=`7L-YJky@QsH?k{`b6ui0uHdrlF?x@`bcwBC< zViqR@0uKCreY|q;$U5h7tvs^E^Wd7e2S$DL|J*+;wM;98{wz7a1|%egIh7b4P0RFQ z>c8813LayOomXR*KYARp;{d;qi%q}&J10@?sCfEvd36@wud1n$QHhBV?k!&1;n^qi z`-)EN8XFCSz8khymwC7Uy5x+NF;-sP#$N8OQAf(`moN9tOlR;<)Qopm^c^Y-gFA_H zv9Ym3LlB}p@-Io>e?1Vf-1^tcSG|iv_N64b98D56p9 zhfc&}I=OymJJ6IHCpNJPT)fE3mQJ%iQKT^3%B4~i}0Z`6RIxio>#$89vsGV83^>{{!^4>q+4f&Un7%OaN zVrClsDMxm_XPxY?se+R5qmiQs9~&D}pRAv`1g+~ zvjm0hKAV`u-$)7dLR|9xc^!96F;!*h1C5|z<}BZoA7@w4eR{>H-NYg zfhQ;`4>kgYv=^wE`%#CO+f5++_^9T(50$cQ{~JQ`#8?nuZ==av%Daqt@%HU$>*Uz= zb*JCDfGEX8LMDUWBZnGF&KSc*E3xQ2y?^K%B=Vl;@Dn>?i| z+JoY3f*=hHchVFkpvehofF=4eXO!CgoHDiYzEzA2mI}Aw0G$=c74l)fhYVT4gTg-L zNU!#5U?)Njq>-bZ3E92PgW_jn9CieL`eNHSy7F?;C+d3#SPTgwshmTl4FS{m%i0%H zvhQw=U0L+Uo~);k<`Af0ys)oR?(GI03f&J+AwP@s=yo(k;-M6>TO1!=F0LB|a+ zw@XOp!W{rT<=3G41HFy7w)8v3P;U5~Eh_e46akv;mhYcbn?2Z`2en2d6M=67hsesK z;NW0L$i!yw81NOE-@?K11xluJ$>ct9>7Ke`<_W?Y(Xm^_9T03+C6Zh*}QO69l9IPS~K&N z{JHyc6&%0L{n`P5oGCoQBWn%FpdNui{Vcys0u8Sb)4(vA^F&}e-j--Tz{#FMxmZ4E zz%a!mh>k&XE z+l4*;VG#!f*0WGTIeakz9ecSEZUyA=M=5E!@zC?czmq@_4VRrSgOdil3o-TMI>3I+ z2V~}J@}zSVsvwbMK(YJ95e$Urbv3~haeM~tJOgOYLXG@5t{-cE#s^1`74(A?edumjr%?nN3m@Rcqa#Ei*2Myrj!*)n(zNMTVh z#{ED>;(VQi6o~we71YC)B258eNfo3KC?1xdLsYR~{vu7o;^L`W54bf8ya44uPxEA< zd*xa5MPaYO;@?@;fjB(K(1UFk=wQm6#m`|0EEqA zeE`%n%_=omF^|wGN(V)o-@e^uI+6|r3#d;m4i!%WLMJ&Y>O1@cz3TD?CLTz8vLAv$ zQ=?e9#Jdt$bEBTq08Xp<=ub7)iu25Yc?s$f5yA@u(B zSp2?JJEd;LAVnq^5Cfsm3AswVKlt|woDh1(;M-uO-~3tZ z>K6F;n0-H>7;}}6GYsyTFwF4MQUt0XnKM8thM40l?A4XK`%odwY<8&K4=;J;w5uUu z03DYY$opWwLt2eZxZBq!qoLMa1~#C`Tnf3r`cwxXTaY#YMb#c~`4#3pjSqeUO;I`Z zJ8*ORiMR)#I{-5f7K0-Y1RAa37H@r;!^2LA$x`Z(grvOIrtf`wJ4o!O?sI{O3VUh} zY@KmqAR@R`EB76S2C5Yk^W6u_vorwsIy7t}CZX*<4o%`zsv`#(0>!b!t zX&!imPZDy>8hC|~E`(!P zSBHwFI=HLBvCKAsOeGhaQv!DGqtQUWuQL#tHaG;cGea@>r<<(o9LiD8aojcta zC`I)|w_V9)qcFXJMy)*g& z+Q+X~(n(W^v9Sa;Ju`DXy#(*CP|49K?#|QZot(dewIOs9w2D8$2K}*yFVPr5<-JME z`lcqwlzC;Fx}kvA9{j?fPl3o8t4u)uuMjFV%4)SSacLDV(qeLfFc8sBSsSA&eZh8@|nerUC~ZX;zDEmhe)t53YE2QK0BPk~&zDnEIc z!=jtU;q?8wJtq@mi9=wsF~D1SLI_zdjcFG^n?PAd)2ZHwoaOWVuB7~j)~iRS$KJ0) zADi1L^GkwlkrFM2?<}q(Prqgpcx4NnZMoZc%K`(ov9sBmS^TNJZj>@eNp5ADNS0gd z(WfkslTUwl5>}7ND8Z7|!{sCLK+Tf9?*}zkfOE)OWxjcYg@QBNvKQNi)8~Om67w6u z;%y-0QJ=lpc9eP~A}bnRJb14K=T;0Ezw*udHXdjGomab#;m4IypybNu!!bv{J=VQ@+(QxaCq!d z=A|e4=$l|Y##4SXmnIj2Vi{)KszFY>1XyNHRC3iDP~MkYd#99)k7!G2l74i+iY#`ruO93=&%sHfIiPWj$dN;XNQYYu3e=`k-qck&SkLw9CdP7L zk&SQ@VPIMIv_EyLb5>Aj2d?x~Rn|godp98uQ`^tmo=~WIKw6xHbJ|(FJa9eF<;Cc& zCX8#);3Lap3r^@$U9a}H0?y@2S90N(B-;$r;Sy6exo|88X*Xw0ZnUQb!PG%ZwCf7z z^e6;aGoFC$VtDner{khZf*TxQgkcd7UWU)qfhrt;!4TxLfPJoTGsi^MU(ZvBa9X{V%-YtNY;SKx9rVBri#>tsj6n7(->?r(?? zaIj-JU|N;LBbDIxd=8m#ARXX0`)`4fl5h5`5N(ym>LOWz?r5e73R z=N&q?thTfkB}P@)LW2Az!`bOzm$P3hq~HvNbZ;tt{Vj(7CgDCUR1ia!}sTI7UfyG&aJ`C~$!{MhWm z;c$zbN3yeN0s+cZ%leVHhB)5=pe}w{@Z@XA2kIaS)YjGxG2&Xv{OIiAQ7vf^5}so( z0$hJYt?A$hmP+%23RTFYGo0)|O@>;MrAjVWuFD#Lu*$z9C(2l*zx_z128K`PT_aS@ zxK*<66Hi9LiIrbrm7wPzmuKUZ4`N@$nxCC3XJmJhsJa)2H}kV9jsh}fq#TolIWI)p z2uGlrv{H0fgA{8{ipb{BJ$NAbC7L{H25**sXFY8LMd8fc#|o0s=OM1uI9~-JmqlL| z*P*nV*&zxtW1+nBH6aS*WY8>xW{EQGM~`cTB2D|yOVhx$?=_WKbpuYrAhc*q%UL;q zsXPXzzDXWH5Eip_J}S~~!cvd#MH8@8!ntY0yX2sCyRPxcIERpl{;?UP3QTFBh1_-tD>V!TQX-BHl z+Tx#Dz{Vn-TGBK$TF^!g09((&s%1*%>zE$JMX6b&A9y_2Zh4L+;_~4#o z%UeFcSoT2Eo=hyVyiW`k1~n4>R_D4)WW(92%=Na3n#-ILq)YYLuXVQg$#Wag!3KOG za6A%3`+(#{TkOuZpu%bCvP+}iXFV>#?%S!CC@s82yGn#@Y_=U%8|ARdyUxyCFvBa~ zKf)Y+ko!3{lJH*5XbnhVpErmsi?k;UoCuG3K_YfK^i7ss0;N~;k!Y4dGqp<9p9qxJ zbCa-NQZhT#a-&*l@vR#9==aAG(@qsd$|nmMHvJ=iQUi1}0BS7&l5=_v)q~$gs zVDSL~gy>^+u0;WKgN7&xEj*O3;n)Xcr%6*w*lO+G?)NUS>=_@kL{mwl5Z>bhvCI!| z`ZiJ5r?zK~UN5q1ccp?r#Z!28_4jrH`($fkh7iw08~AFJa>Q4!s1AY&ST2tVYz-MMgXcn9!2WLHIGvt z=q-PsDPkOCZ}V&|E{y#oO=Yi=H3R1cb|293q)&*+(8mbUJSv?&7Q8R8ZW@)F(pOJ; zo!;!ug=oJO47Y`&g9FVj=H*h02$q|>Te}!?j~Qzt6?4v;ll&4Lk3rtk@ZbyhcfNF_nWYr-t24CtV)P7}OP5p= zdP=Q)yk3vEl%tWOGlv+gOiX6oP$pGDi)t0NPMtRs^dpd*|IU5;D1?e6Dn`ZFtYp0@ z`Jg%?7p3+atu_cjTW($r*wcw#G`X%~#z%V@p&dq25T!=Gp(rc3Otlfi==^(oOMnCw zf7*M2csF-vIh-?vF?hLls>+^pFFIB2v>chCsa_`>FZ)&x9-l%8O6)hHr_iz{{^^i# zD({^b@oSA%ML0*+=LQA!^yB@L-`@GBzxQkjv>*Yve27w5II?y zHvO_y*SMH>HP3Pof%Gf}9Ie|>YjX)HX%wz;PMWZ5I=b>a?_>_7oY1}2Hz=emF*xx~ zCTO2MknqKGC?C2Og+U-gXxIbof%P*uo(1scA(K?jeh;DmS&oLYPX?KSA$H_bDO4yV z*gjLU!O=TGTtpB8F3@tja2rz8NKB1lvMiMa&D?h^;@G89)7#|%CIB(7WGOCD9B85;Jl*qKCLv+%+85c_230qrEU zX^7>)bi6|_{e4wb^Z}`P+0kC{sen_jB`rqoLQ4d;zUAO_j?7KDjl0XSnhiQ!vLbew z`+nEirY=|33WV}bJQis$V0y@aQV^E;geRbnbnfQ7&QVYaJSGkznHQ7XByUp`Qpy{w zOTq(`Rx{~dw4tRN$p)nX1a8J?oc{w1iK%*wV)3K3V?V))yU5Es0Rg;qAOTZ!q45 z4MI>)xC&1BkGk<;fIkPMNbXBm@B&X6YdZOTM&pc zB;(7zwQNNVHDuD2P)2}agZjL%KvcHZJFrH?H~;E-xceOfJ^(`~x7Hsf=i3?sWLM5T zBykt+!*%_D_|A20`eD{`pY^7qU4JP6Y*>`pQ%KWal$n0>tXAT#v>q_okB5(io(79yl{|?v{@i z^x-7?5Nq?<_KLXFQu!_r%k2R)z?W#)Qi*th^+Sw9_GOZStMBC3CwzlI83CYc^vT5^ zf#Pl5+Pjr-w(sfc`!~e;k)F#?#{9H_Kc^W;TDo{!l!^Ysd-+=yqm?8Zp>aB z*UhE!4Zez}idzDmr{}Of=+7_YWP6Css2s6P=a^i+TIiEq)+Phduu6dD#*?)`C$m=z+ZD^(#C>{hi@f-si3a86XE3=*F)QOf6^ zLniSRL;?{HOov>XgQkF`N5Cp@S|mkA8dH9#l^V~?GKE|+6tm_gM$62+$~TcQ+P_h| z)qkHArwNBf)UTwqiVHo|qpe~&?KEnbPO@ex9QmknDpW`T2D9eXF540r6%}(?`_m7% zulW&;Wf-KToJ;1z^Ban-9gBf)`Y*A*o-1NfUUxBgWuXn~UDrCzdNfUZS?})ex0H69 zXe|MI3et6_HIL@^%H3)!Aa2HBR@4CPpTcNBkYf*=c}N0`KzmAL&sALcM<5_fc!Ps;S|hZEaAxzkb77&w4_x?*U+)4?8_b z&3d;LJJJ+aE#Mc2%d%}C&OBVvYX!=Vjl49^(uv1!5+gNqif4;`iQL;>RFTRwN~csA z2;7s5C;J5+>3Vj@#(rPSIQV`k*>gE5Goh$pAG6nE+I^~3cBBET%ON8$03?3|>>gvF z(80aMe9;CwEffkSvq%-0=+>-pgqe%Wy7=K8JXDWB4qE%@)R@gFF~YXc3rGvB(rIrb zMNIuG@S!@gbfnZJLCE-u#QzA&(FD{x#VH?mfyJL79UOi23D?5_K~K*v+dNMII%P@Kef(|WTQVdrUCt{ zzu1;cNUpozbH7Djn`D#%v4@2i45?LF;_M1onIdV0?!i}{^lv&S^<~SRdYVfwlpTPI zDOvbwZ7RDtC{v$syK#}tG^EwpL$})mCeA7~>4zG>0_(4jRuq`-b2Q|Zt^R;RIdHrF zYx|FGh^{+S?Reu<9(1wKi@iS2kf-~>RQ;C)Q+IwN{V7%o1A9l%E#Vy4FKU~{a~+(l zH%CyR@MD#a3NdyWrSTxS<%b3gzfO2ruG`9(t64HjLqg)ub$znd75WvSg8|ET?62=h$|nKfPE*ovBHBZG85v5jrf+(WF}#9e8XBwmfLS6C`#DUGb{Hj zOb1s(0**Jp=jJC9f%W+&!;gRleR;+qSzgdlfT%ZyjWzcvX^t^wlJ(G7FmAcjw~I!a zD)-BZb)(^wv0A@j(4j!dppUoc0eAV>qc1tm4tV_U#ta zE8n_Rj9inIA6c|ToryN)oWx9-Go2o>LcdJ_>>Pk>kl>qw=Q!}ezg%j7+f2lYyQ%kj5SFQ&=w~z%)CPQ zBJ{PvZ)bi+vdAc4`Zp+AyOT-$Z%SJ9$n(QkWzmL=CdgBTl_3lEx;P9(zd1>eugBi4 zb2%Vt(uK%nDCnd}ss`jE#9JC9mY8FE#9{LjenvT`1ukS~XxD&l=ji?l0L9wlJ|zeH zL?ojP&ns0RcZ0O@x1AF-z9@Ozs(r)P>p^tb3zq z`c5joQ_$uPI)vf_5yz}#|JjP?ZN`(QPlLIQf9!+H)EF4h5NyI=BBE(lNd^e`kM9BW zr{YN^G~ToIJr#Fi+cpTb6cHWD*_xR1?`~naem&_$ZbXgpPs+Pb2ak(C;$RK&@8lb` zVLZe2*s5$Ak8Hax9%S1UglQ9Bvf9UsHQ1P`*yvTeej1N{DB?Dx9KoNSuZSAFePmjM zoLV99wmNk$geA1XOE6|-29~34bQt@9)LnU#&Dc5M87+GIgjvaY@TF+y2q|_5+(onfnbjjtiz=%)|?1U}*AQX@PLA z;z;w*ZfsH353@4s0lzxT35863@_Wo4{S&>ZSf=Ic zCJYRsGkKt*b7%JE^tI54>A0jTGY#gy1`o)rf#KyT=Lo0?N-8%A*-73f=ZAu!M_1nA4Nvv{@H$ZTw&=AvJs8MPk z{+^`wsuY)~P*8V@oy7Qe2RN}2$dk?Oj7ejlLvgu5TNy^j={T?r<-C=*1FjC9y8HrZ z#m71ht;~WJUzpxtG>(6O+}OLybg{L>fZDzg-}cLxPANC?2=3rQjiA*n{KsR5e37}p( zp^$DB`dGk&(1cz{_|Y((5@w8?J1+MGbX!RvBcjX$q9K>bfGrpY0}k<60zOIOTi{)J z8YRjg-}b5EFQD`4Pfp+SNiV@eX7|LMrf|+W67g4nioxlr$_x0%s%iq5+->-{!DPvH zVrXp&t}RDR?Yh=Y?|c1)swD-?JUAUa*U1mrdkYodX9{LBTmsBqVcnek{C)YGAIyK; zsb-!_|}zbq!N6D2ctxrQd3O8-(#iQlxP~YLD2xE^2Y9nXm_+-O|9)5VbK1xwsh^%8;NSd{94Lt36$j&Ks2^mV zqM*6M{oZh;eTP+AK-`bRVMcksXR{aPeIa5Wm!hk`=b$|ID2*~KCL~)+4|}?{2=_OO z>Ao{KyCL0>JSL8OmcJio?B%_94N6tiZSV)UB)@sy0yqM0;-6+J%-6ZP2kiTeWrg;v z78Pap^mlEEk!kLGt^COf0Vwy~#e;CC?=pUO4{}rk?yd@)55)i{8W}F|zQ+K8wQ8;x zBxiO)(bh&E3*oHQkWD&2r&gS+2D1U};rYlwz_a=&A8$gXXfFiXq!K96ZuJz?uO*lp zG?npa&D_j*b@x1+UT>{lU6YGb!RQv#7qk#C{cozoBCTLp7gK7j|FzmQWB87T`Qy7Q zC1XE%*tDfo$L=s>!4=QbHL23G)0|T9-qAMhA`M>{fWF<|b5(>AD-svcS=<{5r!UG^ zf4KyRnFv43_F?&td6C3s#1j#zihoyU6--~9lFe|mIA;M6;#P3T1)ScfZ3nGtyUh)2 zng{%ca+9>)U{8<4J0>OO(DcFTE@1Xh+j(ml>a<m^;DtXON_-<^~B+O_9VSP(o~{ zMXqWCzJgV8|3EBAl~2@}4Io4R_?eosrBGUxJS~@I1w%g7>7mkMHha5ufn_H_fT$Sq zgsxw&p{$sEnk>Gucd{ewj0N18c?^Xemsc39>N){=C>{>yLQtu88Tr>u-{17PDxW^? z-go}yb1jN1Ri7zCZYZ;*zRv4bL=lV~G5`XClZac?ugyI1>r1$m`0Ht&ronLl70GTI z?Q8#jZ2yYG{w%#Rr$k-eXwM9T%_r zeBiL5vZpJTmn5HK)O+t1EAN89eRmf8hh!*{3OJC|?=kl>ddlAS z(SbAgs=ewIjBT*LG+KYYAFK!GK5CrY$KNu7=_M%yw&;?1m^0>(5yG`o`lw3%lpj^s zKFFz>Zj0$oRhv3`CRY$@!m$^F(J{wge0ZlfH)E#5j_y+jRGL0Jpg;Ol@Q6eH+ z!=(A)Nt-*M+?{uTUM~3}mh{+XDE0dtjzcQ-J^;RK4IBW2-kNh%?s{~*9w-|%E$di7 z7i}r0^`_Jn$dKW8z7RLCND)VADi%@K*UO_dU`K2*cMEX4AGI?#Xof#{oLNy5xVMkf zxDk=y2&8_8wdp8#82C2_aa0Q@N_N2I6P;f3hNQ_N2w(g zOQdCcGc16#4@Tw+HhL7w@HBI)5Y+xha-UmcL$AIBO%Qv4|5VXw(`M;E4k8wpp3Vc6LOjDM3v^F&Um03-1O!m-lrIMauB zI(|(F7<8vO0kj6xB7+M{< zihVr00O1(O?%|QS^a}KGC{x%qn7!?KX5VQ)sH#zfsH$=J>5d4BG&WKF;`Vjmk(6+L z54!4WVj)iE<9fkUiSGH zg(0ErIDT9mCNt-qGo}_DOK(1gBZoQU6FTL0@qJ0N-l#dWcusEnzsM=5dU;3W{-n4H zcb=Te6f|8B9Bm1+8U^!&b3Gd(N;&!P|7tSmM4wN00Ht{v@@>#OPh@2`8GL^6ax$y| zUx~e}4d553ToYnr6LS-HKD020T|ixhCOBs21NU@@mpolpo^j_J^er(i3W5C6z6==j zaMx6s66&{-?UT5|@QV8>*)0kIvbXGM5_XQFgY*z5j~$scpp8c0aE-#@fb4kZx9+;0=1R9QNr|m8AxLMFDhMmBY=6%zlo@a!NMYOIBs8BQF#HA2qrQe+YT-Gc$%qj&dWEHybtX5qM_ zfWFAptC@@DI(JgP$k2KKtMl2r7ocHce(WWutxxpP=u$$p|CqyVN9MJf`6? zRG1BaZn+;_yqI>&R-t?l%^)|C#TAtFe52=lvTMR6^)G|e{z3A~NH}2Ut4;p-T1hg1?RaW(GB6_j~8XByUluC~e`KIbB~-ZTcL> zpG-pbRzOBkZaW20{oB;ee)j)d+VSu>r;%2dSw$Tj15gX}R^s zOpf4EX`nnCnC17F5JF)lehCOstfbUJ4h!tsDV*XXA4`-@2sfra+yu9e-*&MTA1RJF zXwgkccRx*_YJ9}~S5tp>LLfpi98vI{# zuP9_3V!YZ8G)EZss@)O>Z-Jl)2mT;t33$#w;u?F=Bnf zRH!;QHO2%yzXs0F8_`T^tnwsZ>%gKfD%sFyx^)u`m{Hu{zJ4uH>KdbP)svmSzwwSo z+w>dec>0mnv)#U|uxzf({8Ua=&{4)nRN9-cl^e2DDIP+6?gdPxD&5Q!%g_^f`EzWA z(FAhVS4cB&CLd!8+XeI*9dYH*K~}z41~mpm{zR*Kcb(4qRtocbi*wS}iLB!offcp& zEWl&t4AGfMsa((z=SP@~12r$>MA`b;6>KAv50CkIh=^^5dwGF`ZCg~jOebThGI->m z881Z^B;JVR&GSJHdt&KSMuogdz;V zsh4biLlyOD3{As^{Bu_^Ump*{e}H>kjg+CF`6kf;nTO~S0ApQh+FJT4*VBSGFnla-z-Hn zceZpBj|U<8ZG9Vv`zCy0wpr3RvWEr zPDx7~^R*fieb1zrQ6T~GZ-C>0TvG(}X8_GC;>$%i zI5J^YRYz|r4R0o>{SYe!K)fdH@!l;3;K_&BB*4=+q;#Y46p5((M@bO5h_f+M_eTIp zj&^US&?VfdOGVRhf1AnW+wY18e`5i=ZHp<{(jP;uMnAoB-fg2+bp%%wNrS{`JQR?@ zUyXo3Seta>(tp$DSqYLR;ei7t<|tZbvyK#%_EiL`3XyAdsQTNRsIu-{}~wJFL4k44IhV8C(e#n~0^7jr|Ws{;|NX9PXaEpn5^>@Wmk^6sqwN zDqimR(dzksyaEBxLRPZEuYcam@VD*(`F5lg+tdHl^hsX-Uo?OJ52S1V{X$6oUrP@E z=dV9+?5T?OXA@}b@c5_N^NPYa18;PrLd1vvDU+Ow?Z3{O%nE8jS zj)X+)x)JkBa80PGtqCqD2%Vn?Cyf^#Z7ye7XHDDAQT>O0Mhvy982qU2=Wq6ZJWUdR zosq@=P@>A!f}-jlul4_G*@*Ul^7B8Q)c;ty42Wb43i*F3-ueKst|pNX`~SV%^M85s z|M>R*F4O&=d*=URmGHlQ{ZQ8CLQ78ux8Y{Xe24!)lQgNDD*D9>>FwB_S*|fUMh3;) z|5{c4c7F+xw+`U%$f(^Dc{PP4rH&hDYD(F2Sl8_PL9@(d$imp}XY#iy?BDBU*mUOC z`MBHauLH-DJ3pqP`Qjbjrwe$gXmsA5X>4u=Q!p8!AZsm`+HiGRfqdOv?lQ+Y?D5pT zzZHX`Du3yKfx2`nC@k-dyLpkxwT`3<3{0kPub!icBb7d=!6f0{-*W2z?j=+VlZVEq zvUj?pvj5g$`9FnpNRr4VDb2k4jUm?V$d`p5yk|<^X~(>O<`GH>Fv#VOC~)EU*Ov|m z4&jzo2`shA591Smy0&#G7wQJ9;a;#UrnVOS`w9{5eTXbqxvscd!KR_XiqoajCXQuOa#gjgJb;_BWlhs6c2u>RaHatYywsu~&H_%GAC{k@YKFaP_8URA4(oh(0# zyswNu5A?`KGCZ#T`$a`cf8v5a>OAjS2;1SwQ_vxOM8e=n>wxX8KBx2I&6`OX36M|$ zmX8lTg$&M7tu4I#@Y2<9;*|9O7M^pgv#93EGwy+_Kbon zx*WLs5ZO>7HhbeM0)eHMtauWqFv{xIU>q4TdJm}kz>jU)Tg?L3JSd}lw{XyPkY}rE zfNiojNEc{H>dWUlsQ2g;%Ulm#eJeywc=;&{_>9k(oYvZaWe<=aSRTv?Lp8e&iWW)` zLI7#5HCgH>^uf2wwzR*w;65a^yrE#Zb&G%`3W3Sj1yJu;PT|A87%}-k!;8=fpp0mp z%a!_mvk;o=U12z71HOEbgFXqUIy_Kj08eO#ag@|2n7S`@LOfzKr(LFf5qbgHQ())5 z$PWy(Km0c$!W~x{fYnbF7Pea%2XH#o>b0(JK5#*y_yARvAZWEtHhusLbIYxzk!|~@ z(ET9h;);6w9d}BW#EMfMW`5*4Gdi%68PlS4KG=pYQip;`kf z`A8}m-pa^%JJ3wrkO|dWVdLiBfP%5LTWX+Q76t(5PL8vtP%=RTuLwM`4JhHsSH;4j z_IB2#o^BUQ;$e6NiDbX11J7*=k#5KFe=@l7mzoWU%6Tt0*PhS{eb$gkWRM5ftpT5Hm7MoCiG8Ljd@K z>DSWmyl7Qb)k+i^@#S#`?~_${A^-<}2Ebw69>vLN888Ox0s7K(B?RnWJimgWL3585 z&7~>kC4u>hv+^-Q*Glxx0U#v$_}l5$Yt7Wd7kYCI1G|}j1>QmYBfuEap_M#fGxtPe zVHsFqgMs#aR)W7?>*Co72c`2~y33=z`8VCbzr+mC$2+Py^{WpYz6)&)zXzgC_rudd z=%}iLwE_mn=a_0Ht>gtn;9<|Z7!u+IOh2vzkCIFG_00Y}Wnm+S zq)RTFW;jtc=X)XJG&tVOe;sP`DS+(L-M+EqxEd1%ZSbAR(wTBTc|amIS@Z_48)&2$ z!KQMd;tD{@f6PY%8p$NTBOGB6#4Nl7XSy12wn0t}`4$~{?*-^-l*BztY43|szlner zqZQbk5L?hcM8_W{U_A?B%hwTMT!!BzrCKS^N7-wRd5u}XsJ-8N&Z$4w5HgDD3iH!^ zE^WiDGy;YqRc!)X(SZe%3&$gi5x!B^3qu;i$~eI!AbV`gjWc zDHvcCWVpgF6a6as6~%o4(#9XKZ8iD$iU+_v6Czk`!2EP!uN`H9ED4}GvoRr_KYo7Z zzyP=nibZ5zX1oM&;if>ByCw*_ILSbfXL6kqPHNKwNdBEbP;%g|vfQ`<#~=WB$R-5F za-5K?jEpca@?D4op16~%eUq?t26OZkH)VBr6crWM#p38dsVVHdyM^?@%b*@upJ~^H zEe_!Ji42dZ!5{0;BPUOqt~@Q*|3W&JYlRby7$6}(qKC^%OplMuf}7&vuQIJ(wz-G!!ivDZ8(rvX>3P3go<)Km-K7Zvrqy@x;8i%?e*Rsi0_j3BrR`F9+E zpB0dYjno95J$))adP{V11U6iRMI&4MM}$}iyA%|uYQ^IMPiz70gJ?l>*!*CJJF%lk zGXqzaDa`ckPO+rDeht^@ihUhIYW|}~ez{Ezq0NFScZEJG_DMdtzpBO=gXr+}imXZ| z;?_F;jq>DmZEq?^xEb zmNGa#Aq#7%wDtAzHTYT%K_CGBmx9Q{yZt~5Za={I@*?J-UOYqc^w9(KSEmg}iDB>J zq%JsvU7&h7B(pTytE*CI5f@Ef+u#CRXw{k+Cqbx>U?YH3NEpfkfY!8GB8p(F^l-fl z))V6VGry9WKZFYyOjzqeU=4uFj5dAXPfy%Wf4k%V0JhGpXF5{HazV}L(-EgV{*i$f zE|ADRpYtdT&T6>g5b5QPju-cid3;@Iwsa$5C4+|lSS+k^Q#)Ij@&ILAsODZ7aY3Nw zMai48ruupOM#|NcVAB{^xPs4tL~BPa{yCTfL`Wq zc4AMD78>0FcLdVozTE}4B{@;J?j6Uxc}h(1@^^PW-jOyBa+Q>k$;%!;|F}|nFPt+g z@bXTr^vIEe%JrJQCof2Lw&$M=l9??HKX}7@RPr0CTHeA7=dH(Sd8FhoII(NFV`WTB ze^zgF$dpXfUSSqq-Cg`MQhl^^zmaWo2$O35D)mdA%fV?Id_-8Veq)eIwQzr_y*Cua zY92s`h+Z*xrwmcDAJt)Cr3ulk$Eh&-1C+F2(`F0%%xCK>d?NX9lu++@&pK z&}+l!2D|iuq;-GTclEl|_ktKfVR-PB zttjh9?!CG+;V^K@`2{yiF1}mCak(ZStgS6xIyejV>X(vquZtX2w*{dZa+bLI$;Sr- zZXv|=Ih$UcKn^AV1MHe-QF)@mz@N2r65oq6haf8U`?6Lo68Jjlr0v znz`!*O}u=`bK@Gg8}v>9u!`u9!A=v(MB=a^C(I2f+C!mQ_guer{W?%27I4XF5N7T; ztjuos9GDwWcBY%AK+6MHSeMO3t$etS z^D7x)RR;tIZ%@bgg3rza4tw`j2#w@*+OZltDL7Xc?@T7N1rTl+oW%BbN?(CY!{ap5 zLhc@f0T__45%d*zZseLGdJzSNzP_^}knr`&SEy^>Y-fF)efs&I_f#x0H(O?JzWpLK zls9-gN5DpF8;5z;_5{Y{_TOTJ4wBn)^s8atM)2s>f0QN6Um?#kQQuy@b5t~_$ARCw zy?yiJL*wLlbFdj;EyhCP>a`m;e%#%LyLhlckr5KrwBB5ou*FaNc(YN?)NjH{4MlC>{zR1-e-a6ju74;g>G#MEf5ySg1Ed6nDL341#1b zR#7P`AZ{Z)Ef|S*f|jMTQBG>ri?gKwJ_R15o-<9qI%UvmP~8gi?{<_BKoBDneVpn> z(5~X=$Int>;%a-UY`R9M1uAe8S4)WO>ERTkvuR!a!rCN^5G`TSSIf5DDY!-y3rJj0 zMCRg8hHQZFWiW2=;FQ8%mtCn+T?MqJ(11>I4YQspNl8h$Q??~`;f}fnrsTds$26!J zFiqDgqz3N(g8R!j^x+;n3?$MPII_vNST9so?>7b-J~zf8HQ0AG6Zy3i@DZ?& za^=H0Sj~3Kz(JpD`Gfj{K!o3v%8Zommr~z)%g2)>=o>G9%f_@n61=iun{%uI}r{e_8;m(l+ zP8o045)BI&!OoWCb-rP+08XMEP-v{R5zYs2g1frrKOMl^A#>IYbHX-r8Sa-IdKjfo ztOpy?y)sEk4N+iu*I zq{>3G5wT4_sAy%)5s5SIFI5z7H0Vk6BiD^y?+i64S#~;?LF|A!whx{yumM1OVDO}X zM~qhY+$Ivy2nAHO3+j?E*vE@ELLA~2kPGb7peOBy`dOTodeaY>33G<>VLki7U`jST z3062Gc05xQbx`o6nj#NNSk!%cyXdgTsL<8bJPhnJF^E zAXM=|nPieHw23`#RWPE-<#NbxhY8+F=W>_aV{6KuQKwPZmMKmyS51R z*NfucK+M)E8aPB2vsUh^6~4_abZ=l8s4fVm0%ZCRD!{*{;cGJp=lnqcZ+qQ35F}C` zMFJES&jVPJD2RutO(~*C~8~^a7 zuDGvL!i76chO6gROv^~{O|apGm{)g#2Si}7xXQesDHMy? zEoe%U{N~ohh)%Pjoiwvhh9TFSVBJXg!bNVQAWyk+O-hn+$Sip4sy4ag_%oT={YRv; zgQ>0j^~acTke}FM{J;bR>>3s;+Owu}8~2j!+j?k^;?oC4Z#sQ_`@mjrcFFt zqxodXsQASnCZ;bs6+v&598od;piMS4(qI|_&}X&_X1kE<(wpyS25f1rcOBo4by~HM zP`n~)N+}-*$B8vxVrUWB98Mcdb_pr5ULGx->ryrzNW{)5)t%%ONE^U!Hk$t6w5e|D zC2||(xU_6*+lndF1Qqm{bibG|xn+E?UxVMvFkClCRZ27Hywn`R&6}qfGgch@1&5wm zoHub}Dvhu~~% z>WjF=Jp1+=Tx$1Ct>55(N(MM?UbE}psKGmx8+Oi)6Z*dybauqA?eU1LQ?JU#YK^7v z(doAK7B4Ijbcj5r!8;ocwY21M+5}ay{rMB+`&iE1&Qu>_cOMJ zK+VJn;ao4gQ<3eQ8oa3t@YqSSYk)sk$Mj2zLZzDv;HZH$PCdpy_J=or2Zo+)C$#&# zRTirh?(i%yaO96i2I@J5@HheD5pWQ6_obMlW65!bIG2GDAy>W@8h7RBn%nG8X{Uwt&95@E%NKFTn+q+!ShIo#zpE&kpLo z0q|9Wrch8b?u!%@kH$R5)RPb$sl(^Ou8y-N9$7t*sA}OR*$lT%2lW#uGigfY#rj&J zEdXC9rhN+yO*t8HUPgd$KRs+MIwu0ImTfecX90wb@&=LHJ;*^bmSEZi1ffGYYChMr zEc-6rawPpQYgAh4hAI%^DICc%;V+`ls829F zU$*U3_I)TZtnZ3Itqx^kNAPsWY92fUO88d*Xud42vIuyp6J_Z-R2Wm6xeNO*px>{& z?*so<*;K@VgMlhRmc^qb34tPsk*mr{HsZqpQKt#ICq*y3a2f&fWTwlkYd`oN)12K| z0bgkohv#ozgIi=`7JEA7bGZKU+Bq4ZhJ@4=oaD9Kzw`|>PN)gc99`S7)<1i-=sP>bSZ}Ag^#fz*rrw3KBV`wK&)TnEVI%7@k@Dc=1$~!$^ikZUJ_#e9A7IF4TidN+KXbhmzDdX3(H7U?>Pm^ju+L6WHb!3} zfFL(Q>qa=aTnF~1Cdb@2S;IU%XY|x7i9vhaMv<8N#+pS&y#>pk%NPa^3KNV@zrD43 z!Qk1Z`w0o3KjoR9KADjFxZ}NkzyUGSGF{wNl+^y_G_eFYb72;XVa^V>sGDl}T<|_B zHM$?(5UTyVhngg%h{X0=YGo^dn!3(wPklp7=dDJxR?AO~O^mU~IL-#odzJs{C%D{F zzq`_peczJQRua4?GeAk-fBsHp#Gov>4{5_j5`SIJ#yl#@>36uE%YejMz$~6G;*`jq zA2}U%FCt{=yU*UtRKot9sR*_wHfhfbH+-w}kMYnCs<5;01FsW_M@Lz9Pz3b%8+hMqQD0uo?){vko05)kf&7A=enMh++$vZDG*{tN9HL< z`#hhhY4&41n*1b1T^MGYG=tXZc}3$%*D~94r@aIa(&fmP69=@U2-Ic7W>P_`o-;4) z^B#y|77AUXlaT}TRldOqTx_4u_IK2EaQ30jRgUZ3Q|x?^`vjq8Vosp#Iu#9ubq>DK z{($-x?&ZUevZ#yOiZ>VWnkR5i6Ya-)iH~TwItK@*L-uZlhY6zXFz&Tj0hkYb+ZZs` zon?j!GDa=`4F0SJ3GSL5rBgg=5Z+Y`xmu216mAISp{r1s7A>=JF`{|aFLD1?2G&=n z^KaRB)7I>#^T_~#@0eTX^b|Lv_zE#j%DCR*xkQtMH=p{4ey2w=b%Yr%0a8c{@yEqk z4$8@c1y#o3LPl031(_$uyquGYUg<4bkjiP1+brzt6oqh}W|*}d8SXPyO#n1;C%++N zvZX)UWbn?xX4Up0qt8V~r_tjRhG=}DwmYH7yy{tZV6wvXod~*O<^7ep^j0RBcW8)S zX%~NQm}lfyfD9Kxpm>;ns6gj>3*@i2%|nbGrM75C_W_`UG9xombo7OI2C?_Dear%yOcUOw)Uy*tt5f zf8pZVtji_roI&?snN@GAtVqbWu)z$&DeM%bBo1TQ+GpK274Xe@@UG=XtE`Z~QfIZM z(YJ7x8=Yx!w*c%dGKl$5r(w@qp_-&Ic-V0x*F~D)U`w&DA@&ECFP;6<=E>$w$iiC+ zk>9z4ijB#Q=}>GOfeXEO{HxT!i!hvHgn*Z&=>%IsXf!JL>Vrcc1~y|=<-TlsBq_x5 ze`+|5iBmWTK7#U6EG#r7s2unDlDe&+GxWHYRE|cy;R@A#%-KOa6cIj()*X>Xa4it~r(v-{sMo1G;H z8=6kv+$Am$byK)pcc1`g4IVwawtZF!y+CBJn<%>BsI+Zu zEJ5c2xbs?qa7x~!&y;-7A|G1$kpH8Ff}8w;f)1t^Ste6T)*;Bm+FfB7?Gd4SN19C8 zIR9FWvvrys!?}kaPU?51r~s~OVPSzLFMt`!bDZ|#0 zS@}G#_Kf}O7(5K=41hqucTSx+->)Bt%sX4bjPKEO5P)KZ-n9rl!Gy=P%B7YBEHVeQ zr$GO-IUA!T@t(HIiE zs7mrU~78rCuH2fT1-3&vy`_$J8=_r9xU zS8(iBw*mWIcrit(DKOArr{sbTxb*=6Ft=|c47|vA3Q)IR9gIX85adg9!xXw#=w~1P z%G)qXYU2g^isZonA+h>Yay3d$VN9BE-fv#LFt1Xa*4O3@Csx#f(t&Udc397DN8e=eU5Ai^v(thZYpMwm zOS-=rD$w&7iWS4(+XYWs1@mB{~Q3&7UP) zT=eiGRVBS_EX7WjDa&8CPx3{a?iQPK)(zcXBF$qK8^ju`MfBP<&Y8{(PC0UvH23bY zcZ)ch>Y2#2nBFOiO_UCZx%6Udr1%ruo)4ThY6pFpEDzor9taBVxC`jX9lA*;(zY?g zyN=(?W8ke2exCkNfY5Y$bJw9gw6MHhn$kAxBdtS` zmBX7uS*4g+rvA*%U?-Q7&3EhVx)(2tpaT_OOVWG*54?fo;w6hZB+wfit;s?F!RBy3 zOKRF|7&J<<;^2^P{#e*Dkkt2#M(hAF4saI#v6ESbQp-lo-3k)JFm_!ub6Y6Ek`k)ln}l`#34g$@n%?<7jCJ>*5~3gbvr(+ zATF#evZoq=qX23P_UhTqjkVn!80+Vr#vVZ=JX5*-;W-D`94RN#9p3mJvLRiYYb_Qs z;@9t(Y+lH{-MO$T?M6NCH2BL?fl{*ZlCCFt4F}9DVk4S{Fh+}g%A6|Y>B^4|>$qLL zC{cngEHT*1TXZ$&r?y{5W%ws`zC;x6RA0odhnMo)6c=18AXH?6XL4%-pjL6D8X*Lr z6KIh3v&!lVnAv(uglHD^&8kyVtqOeh{L?yC=gZU5S)x#JmWt+9&gKO!aF9xu$$>Cg zx3qZxTiS(17BhS=Ogd0@Vo0vH)q19Q^b04iXJ`Q zYw8gW%E|q&Qn%YiaE%S{=QP4rT05ANq`$LF0YD#IGqIpFEb4KB4w=8XRLSfi-tO7W z(HW>d|HRK{9iAx*l)(hh4Cl6O0e;HPpL(v_?|JWM##8@8US>Cer1dEv>p3MnErmMHkytjs zK03L*fSec(eDz%2FUC4o(38I`c|AW-v6w(Som)UR!3!KQmP_sAa~0By&vXoN+qLt| zZ|lBo7zFTD24=7p5>-o~SoEp4NcpdEXU&tve*a^*3avW}Bt1Jr#S0L2`oiU_22FF* z3QOqJ%RrCzn=FV5EGp%>hT`uF6Mfx{V|KeaMR~9|B10oDpD^I$(T!#^ZsqI8W(RGz zWq3uJ)`f1g5SecmH?EeOniLVH5`c0u&k4p;gOQdyf;*8@Qt@T0&e+Fqwr4wK%BETl zXdhoi;p(1sE92CZTV-4h7F}%?cTN#`m}Dlfg`@Z2b$fpDowKVmcBglTxPYlv9?DHN zBS$eC03>KMqr?`8i*2_FFdv%fiI{(nl|`Y`88^$H`i-R*7ZFc&hcEwR<}jDIn8K%EGwA91UmR|oeTN$JNb76gN~wi@$r%Tzp;QzT!;w`B%iVhCw?qk96k@~ z8uVRt4rcdS=`GvG+}YJUYG3*_A6Q2fi1|tZeUOIhdOc<=_aO!QktBoHBP?l;lcp$R zY{B4rf=loNrL&E;T%7n`+87V{tI##yABosr!`p4H@(uCJO-1X!!nQDC$}%;0t@ z+}v1|%=OX5m)M_9GDKb1yow1g-IeNWI}L!C6|KPBE$T@Xs2HiU;=AAzSZ@8Hs)YL@8FBLAdh?OiTMqDn41kkZiIM|2DG*$P213u6&Q1D;?njeQ&?dP`7I;OgWOB2`U_zLRb zRY)^-ywD#k%01pf3xacEq?kuIM|zA8f8*x)wU4^-`& zdOZ{=Px;K{XpgoED5uan)d_`pXsG5t6cD&4;eLs$NW*TN*7BLK2=TV=E=p)<#Y=dI z*i|6EC&R$g9BlY@S4vW{sN-ema)ZmBNB@{orx(KF0xf3vw_H0rIA?a14m;6Ao}cQ? zj{SIp{`d!?JJ_>CE?G9XV+|20Y#MXRb*9%WCo$T<5ztNc@nl2|G1w+z{e}6-eR-LE zO<(siU^AhIJoNa7mFde(`uH{)1_nas#kFz9YG=)mJ3y_RfK29>#PsB#9dKP4STiPR zl!9`yla~o^sN|}Brb)Qi?pVHIndU;aqy@eCy&qab-Ii{QIx{7;@;og!X%I)*6Ql{GA>Y(Lca*RGaU_b0QsMH_(A zf>M#m%6J2Inv%*>BLT*P-6|=T<3Q|F9?FEt{(>Ub=p;dRcsVEM)vxb+gFlY#x)-zp z#d_d2^@;;!16-15(DYfG-C$vvyJ-s$2Y_=2h=vk0UYNHW6^Ta|I3nj9-oC0O+%ANR zn_;BvRTUQ~_0zj4Y442#Nw>ABX%}wIu5`^smBR(*rg8o6Y3W)|t?r!CQS0MLx2t%# zPU~Br@01C4RslyT4scOZlf+e2JU@0`Z)N!VQ6w9p7@NA7uO0+7ycWJB`3qipY2Zq{ z>rDsi)Ha(@ffb#%d{$Q9A#JYPExPzP2~wdy>K>C7*+ZM3>7?u6R-_+DWlv0t?~%J} ziB6{E2m3*;3m7U)J4gDemiIGQ^Ap_DZjgcATj&l2DQtpJ zbi{iRr!}X8;jK^YpTBRFJ6sr^3M_i^vU=WI_Rt~W)`zuY;^*n99hHFj( zU+8eqW4?Rg7Iq%(P7!-c>ArfyxlF1ej}85o2Mdh(%L#_jk6LOO%PV~Ak5Fc*%V1!+ z$?u4nTLJqJ0Q$40pfUviZOQnfZ4b@szrH#5@MFp+jkQx(2JYDVi3>zrB-Jq2JM1xk zZ1C%q%<`4KlUFQ&@o8Q224*Mvza!tVK8&XS{F~dgkHSg!x7XRO>f>B0d<&u?n8eQ) zjf6qvA;EVKSfK^`0}7@21+8MgYCLIR9-<0^59*l2dX2RR5trNHH*sJ) zzJ2CY^h1kkxvYDf2}Vj18TH-W7s`EZ5qmXk4td7PS>Zt;38P$bmPX!VJW15KZ4B-d zZUv|MyC*m@RB2`th9}pzmS0sf|85%gh2jjP6}3PcF=JMPcrkFgxcYzCd&{_}+b(KU zX%M9wL`vzDk`fp|1eKv1DQN{sN$H_Q>1I$ukp_{JZjh2tS_DZ!M4Gebe&T&ToG<6= z`MvW2^}c6@ng9Q~uD$o#YprdnqV5i~NDIUL5%a7KX8Ik?4h!9YF5rcxetZZ64;G;w z8Ef=9IdIWlEir43CFw}yRu8_F`q6lPOQ3CLk}yn_wuaY%aDBfaiO;9=sc>N1Ni|Ie zi}4es32QLlB-X-GDg40A%GxIs7~IXM-G4XvY`0s0r~>1uu2-7H$omWG2{37b$n+SR z>i6DX{3FiGS+6gs=o355Z08mjgfl8flUIY?W$>e ze`a2UnNA=G?>Uy;I~8esw)e&Xtzt8nmO5~}qa{Qp;@{BeYO_Trx<44G*pe-a+Yk^( zc(U?+Bl?NSLULffM=|M_ZT?+Ji}Zu75>;{@#C|aKXe4(PHAX-$Ju33}n}il2qweqB zU11%M@ftSP4Gx8e(5KX7M7X^zwl$Ps9h`3Mfx(jC(Z%_+2x_Cahn}gz)|9N5a<+2% zT1mzMp#AKNW+)l<)eZ5bNhTY6UW~G^EXtDc>Gh`o%&*$%tJo!GyW61-uq!R5)j4Li zTB`;sytg(togQWGnurWvSeKm`7#L7bOY^<+7m636_>QWnj4OxSYG(`epO*E>MotxUSrHvcVJAfsTa@tY>F-2WGp`4l%yK z+waV=!Vg;&f$*Y{uQP_!w!*?^T|X7VT( zrSVpqi&Cc2x-WlI$-szhBxda0z48x1!-c7-C9}nxp%P+&*w*)kFX#9!gVU#SGj8vf z=~hmUpd#{gUw&@w{2x^o;^=R2c}gCP$sB6bl+-o@X`y!-Q-9G#zJ%6po!8Fd1oM0< zYJ>l7RUy(6L2@$B{A>2WEA?!<$#@+-rD3U_!e#khuCsV^WJ&Ax{Exuqn?^T>bSQ2` zA8k`uO0JLH&6@Z|;Wa#-^gP9Wh4t*5IqOBxKs5U3uyXfYoUJXjT)Z7oWGZ7(*CAeg zo#vj|-C>Ka64@h9Ie}6il~@@Gm)(UT5oSMMS$up;Z>6tS{uJEnoDi?hD)axVPe?vL zcYz``wq+kB{Q2*N|{yf%lo!lCcl~YuqBAvKV%{52gz&Lgf~=Qeh0|_^f}tZzH6zxPFyMgltQ;W zTAEG4FX(=s>D(}}Z!&cFZI8bz3vqoQ(&IMHgQ*bIQXYgcbgnT}=p8%90>f%x{<)&u?=JmF>uPSrGa*gM%+Sb1GB>F>SAHT0JAO`rH> zHw&tFKlj9&A?TSLD9E`sQ^>qCFrxI5^v+ z$=iH<&B*6(fYRuP%kuE-<o53WJ7050vM5I?((H5sX*+5*$0g(h4OiKflXZ25bhUQ{)7!@B3C((xC#qoi~bN;w)q^5xj)KQxy6Q!7En zNG*G8o5lZf>*vqZ_L?idnuCBBXip&l=D;wm&!BDU`)}2tRPT!AxTw@L5g5wkrRK5g zalG%e?!gvWV0*v27!C=VGejd+;yV}}h-$*Yy@FKV8*o-jTpNG?73x32ql4j&Yf2jn zMFQ~&?FN;cHC!W2n=`@TW;0E{7dr<;qLQh%KI=AYecxadP$DYz`J0^~^~9}3ZT(BL z-=2hN4_vR(`RTVKmghY;)w;f=cfZkMDaUJrSywxsxt5;g0f2qS!@~s=l`QS#snf%n`P$@-u z4(K&|rTAytkk4X1TO2$&3N9ePRq|{9vX(EU?T>sVI$kA!k3H`3>2U<`x^=+^I@;yA z+BfjLi>0q3R|Y~nHHF!Y%YAiDgRfT9Xw3d@%|LaMTBOcPDkr*0X@q3Q+F)V#gT?n($mkhGVhdTfd|Uw*m> zB@(q#8mtwdO}RrFWigN&n~epdX_Wi6MhjRJZ(Eq95~}y`*uzA-j=vQya$lGEZ^x%S zcB?Ez<|QHFq_KxJ4k=lCRBiKo0vRY%2^A&B9!l7OV&=}gJ`mn9AOs|XWMV2&O`&at zTxlDeP7PxkK(ChdJ$L~yIB-KQQVG3lX4`t16m1=Glv@+ zc|n~A2|o#H8)*G%W7V`C=B zHKEm7MR{*9!P$On^CExFE8%4|VF735AdGbTZ~$U3vS&N{`?9b{0sKR{SE=oXp=C!3 zPAL-2O(vo^O<1a8cKzU+05{(sbWZhd){mlqXJvn$0S3grn)0oW$Cf{*L<}0qb`}&# zA}{r39yf=npJ+l>@MR#_FCF3v6i?{15Q}%jNlYND06kLS;mS}pbE2!Z<#$%pXV{#s zpPpYlh@IAH6dw+hBU8FHWgikUGTZF!=Q40>#t2fPK|Yd?6YO`=zsUIA>JS^`=cfud zol;^M3|IW~M}xy;TwgFul3Gx+WE^PvLbQO^en zl9f@n)*=@?oBifcOrPp#_yB+RY3!MT_iL0i3dwSyvZpY#8W@D?eIY6|SA3b^D zZbg9`%PNvb3(`ssyOGyW6Jm_#F3%}_jiW7`ebL<9?5LV}s;-Ykb_n@jWHgR39mXJ3 zX+I1$%?2rh=yi?^gT?_a&DSq7?NiqB$TpcVmC)F5uG_g^XcpBlybumOrWzV9m-q zk+P`Zi0UKeZqv{9kRn^B7!{s^p$Lx2^%s{&N6l1S)yH>m#trMICfQQQh(ofvheksKL$2^C|b-o}DHe zbL${58CZjqv~Kkm6xG!MYqLuF24Nk@mlz!Yq>$AjAw>v>tMb=@vJ(Cy$2+e+k(@zbLt1tg3U7#iBiyLW_m0<~qtK8HFxNaNg}vumtsMKLXDj$i2|s zAR9&bpTRt=NS)8x!GF3(xX_IdCUlFf=c+^T6R5yqiYLGP)$oYrvn-+bD{GI@yHEEw z47A>d)e_~dMS4?kYvp^BW`OzdaDEh!NF#>j$U;d*#|dNbg>T2k=%SsHz){3)5A4}dCHe>UY%TawQNTPevuM71u2AWHh&@vP`i#z^VCs* z^->SE4^Wh+ZKL;oEhtWD+6r(A_aJbzreYvK#y9E*nk?!;fK=pEM>0@CPUXKg#-+~o z*3z7laF|7?9J-QiwsFsQvuMA_BUK*7mwv6t-gKwQxr6`VIgFfGK(+2X;a;B}8hQ|x zzpOzovEP0(=oP58MCu+se0c4#5z5N6!Hdi$WGh0Yucu&w6qkxH7AA;;)TY|^GH7L~ zmJF6=xsQGehEysV-`s`6{`x(7j+17#Byx)U66Aqh)kQ0<3C3hL`m z_B@Qgkbl{H#_%`#gesc)O|-(#n;si4I7#_kI0xu6@h5Ie@+R+3t0DIO2<<6aao`lY zr~U!)7s99ELFFmS+OViy3ev$NwT2_|lF2jDGgCjD&wHfI&|sLiJJ zFwfGyJKmGFRnx;_#jJq(g)C&L(pOoQF2~e zOjiiPA+(aoh2*GC<;&-!=LFMGHfrchHu{L~gT2{Fu5Hs5Y9wma2>JM7b4aQ%Ucix? z)pT?!)!UNIZ+cJ!?`N8?g+*pKzL z`A5BCcbN|-@llS+H2K&$%`fvq`+aqd1Bpc_xSt?$RBHbv@GeJc+1I(gr{>U8T_?^%SSQE|MP>y0U>OUFoqT$KVf{~SPMfIwF{@NQ!6h8It(#3!J zMOk)6vw-{W=!N9f;l^xflbQ1Mpj(&A6(8x9H2M81yC5gG@#5C28_IFN-?05va59Q8 zH|BqDbnf|zI*R_L!9?}SiQ%8W=R#xxk4g<>T;D`K9Z+=*t=hslJbtn|%IrET=kYCa zJFDC{b@@k+5}dh;ur@Im=`nh#!B)aO|6W z{pa{CpVN@YkZ`dmY|d-E6<+W}6MXZn*9ou|!&LPoq#!-!Ut9t&ae3S?tKNedl9nm$ zaic0j*D*R?cnLfM)y!|`&0F`pio6vng`3D{7yj<;IhIc>l=d|vp9p1F>NC_HG z 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

WR+W|+;)=+U>lubJ~qnbMnI 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

3J8-N~b^DWF~i5`5dZ)H*~sc4upg0VGM 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

Lg9bjK|(USj{fhvUzO(n^T7m6s{g#p_Xhdj zcb_ra|L22!C^-MV`~UMvQIU|Yt}x?E2I1eLA$~H*NN%-Ejx!g37!aTBp{$BbvD7o) F{{v6jN+|#U diff --git a/docs/src/components/ConfigurationPreview.tsx b/docs/src/components/ConfigurationPreview.tsx index 612ba5e6be..69d2fe979c 100644 --- a/docs/src/components/ConfigurationPreview.tsx +++ b/docs/src/components/ConfigurationPreview.tsx @@ -10,11 +10,11 @@ * Code snippet changes based on selected framework preference. */ -import { useState, useEffect, useRef, useCallback } from "react"; +import { useCallback, useEffect, useLayoutEffect, useRef, useState } from "react"; // Note: Using web component directly for v2 styling (React wrapper doesn't pass version prop) import { CodeSnippet } from "./CodeSnippet"; import { useGitHubIssueCount } from "../hooks/useGitHubIssueCount"; -import type { ComponentConfigurations } from "../data/configurations/types"; +import type { ComponentConfigurations } from "@/data/configurations"; import DOMPurify from "dompurify"; // Allow GoA web component custom elements through DOMPurify. @@ -65,21 +65,23 @@ export function ConfigurationPreview({ webComponentCode.js ? `` : "", ].join(""); + const previewHtml = configurations.previewWrapper + ? configurations.previewWrapper.replace("{{slot}}", rawCode) + : rawCode; + // Extract script content before sanitization - const scriptMatch = rawCode.match(/ diff --git a/docs/src/content/components/dropdown-item.mdx b/docs/src/content/components/dropdown-item.mdx new file mode 100644 index 0000000000..7c00c2cb98 --- /dev/null +++ b/docs/src/content/components/dropdown-item.mdx @@ -0,0 +1,13 @@ +--- +name: Dropdown Item +description: An individual option within a dropdown. +status: stable +category: inputs-and-actions +hidden: true +subcomponent: true +relatedComponents: + - dropdown +webComponentTag: goa-dropdown-item +reactClassName: GoabDropdownItem +angularSelector: goab-dropdown-item +--- diff --git a/docs/src/content/components/dropdown.mdx b/docs/src/content/components/dropdown.mdx index f1f986122f..5603d0b454 100644 --- a/docs/src/content/components/dropdown.mdx +++ b/docs/src/content/components/dropdown.mdx @@ -8,6 +8,7 @@ tags: - select - single select dropdown relatedComponents: + - dropdown-item - form-item - input figmaUrl: https://www.figma.com/design/Jpy1Ea5qglwnp1SgGnagY9/Component-library?node-id=28478-241608 diff --git a/docs/src/content/components/form-stepper.mdx b/docs/src/content/components/form-stepper.mdx index 6bb432b9d2..0f10208804 100644 --- a/docs/src/content/components/form-stepper.mdx +++ b/docs/src/content/components/form-stepper.mdx @@ -3,6 +3,7 @@ name: Form stepper description: Provides a visual representation of a form through a series of steps. status: deprecated category: structure-and-navigation +hidden: true tags: - form stepper - horizontal step navigation diff --git a/docs/src/content/config.ts b/docs/src/content/config.ts index ce9ee40f4c..d3b9d016a1 100644 --- a/docs/src/content/config.ts +++ b/docs/src/content/config.ts @@ -145,6 +145,9 @@ const examples = defineCollection({ // Status status: z.enum(["published", "draft", "deprecated"]).default("published"), + // Visibility + hidden: z.boolean().optional(), // Hide from examples listing, routes, and search + // Preview image (optional) previewImage: z.string().optional(), diff --git a/docs/src/content/examples/form-stepper-with-controlled-navigation/index.mdx b/docs/src/content/examples/form-stepper-with-controlled-navigation/index.mdx index c4fbd42920..2b1d84f8a4 100644 --- a/docs/src/content/examples/form-stepper-with-controlled-navigation/index.mdx +++ b/docs/src/content/examples/form-stepper-with-controlled-navigation/index.mdx @@ -20,6 +20,7 @@ components: - skeleton - spacer status: published +hidden: true previewImage: /images/examples/form-stepper-with-controlled-navigation.webp --- diff --git a/docs/src/content/examples/set-the-status-of-step-on-a-form-stepper/index.mdx b/docs/src/content/examples/set-the-status-of-step-on-a-form-stepper/index.mdx index bb5d6c4ef9..a3a9153574 100644 --- a/docs/src/content/examples/set-the-status-of-step-on-a-form-stepper/index.mdx +++ b/docs/src/content/examples/set-the-status-of-step-on-a-form-stepper/index.mdx @@ -16,6 +16,7 @@ components: - pages - button status: published +hidden: true previewImage: /images/examples/set-the-status-of-step-on-a-form-stepper.webp --- diff --git a/docs/src/lib/content-queries.ts b/docs/src/lib/content-queries.ts index 2be5abcf8e..c3a8ac8fdf 100644 --- a/docs/src/lib/content-queries.ts +++ b/docs/src/lib/content-queries.ts @@ -9,6 +9,7 @@ export interface PropDefinition { required: boolean; default: string | null; description: string; + deprecated?: boolean; } export interface EventDefinition { @@ -20,24 +21,34 @@ export interface EventDefinition { export interface SlotDefinition { name: string; + type?: string; description: string; + required?: boolean; +} + +export interface FrameworkApiData { + props: PropDefinition[]; + events: EventDefinition[]; + slots: SlotDefinition[]; +} + +export interface FrameworkApiMap { + react: FrameworkApiData; + angular: FrameworkApiData; + webComponents: FrameworkApiData; } export interface SubComponentApi { name: string; webComponentTag: string; description: string; - props: PropDefinition[]; - events: EventDefinition[]; - slots: SlotDefinition[]; + frameworks: FrameworkApiMap; } export interface ComponentApi { componentSlug: string; extractedFrom: string; - props: PropDefinition[]; - events: EventDefinition[]; - slots: SlotDefinition[]; + frameworks: FrameworkApiMap; subComponents?: SubComponentApi[]; } @@ -89,7 +100,9 @@ export async function getExamplesForComponent( ): Promise[]> { const allExamples = await getCollection("examples"); - return allExamples.filter((example) => example.data.components.includes(componentSlug)); + return allExamples.filter( + (example) => !example.data.hidden && example.data.components.includes(componentSlug), + ); } /** @@ -165,7 +178,7 @@ export async function getContentByTag(tag: string) { return { components: components.filter((c) => c.data.tags?.includes(tag)), guidance: guidance.filter((g) => g.data.tags?.includes(tag)), - examples: examples.filter((e) => e.data.tags?.includes(tag)), + examples: examples.filter((e) => !e.data.hidden && e.data.tags?.includes(tag)), }; } diff --git a/docs/src/pages/components/[slug].astro b/docs/src/pages/components/[slug].astro index 5929614b2c..3c3b3641dc 100644 --- a/docs/src/pages/components/[slug].astro +++ b/docs/src/pages/components/[slug].astro @@ -112,13 +112,13 @@ const v1DocsUrl = `https://v1.design.alberta.ca/components/${slug}`; {api ? ( <> - + {api.subComponents && api.subComponents.length > 0 && ( api.subComponents.map((sub) => (

)) )} @@ -130,7 +130,12 @@ const v1DocsUrl = `https://v1.design.alberta.ca/components/${slug}`; )} {subcomponents.map((sub) => (
- +
))} diff --git a/docs/src/pages/examples/[slug].astro b/docs/src/pages/examples/[slug].astro index 930c953abf..88185bb128 100644 --- a/docs/src/pages/examples/[slug].astro +++ b/docs/src/pages/examples/[slug].astro @@ -20,7 +20,8 @@ import { getExampleCode } from '../../lib/example-code'; // Generate static paths for all examples export async function getStaticPaths() { const examples = await getCollection('examples'); - return examples.map((example) => ({ + const visibleExamples = examples.filter((example) => !example.data.hidden); + return visibleExamples.map((example) => ({ params: { slug: example.slug }, props: { example }, })); @@ -42,6 +43,7 @@ let relatedExamples: typeof example[] = []; if (data.relatedExamples?.length) { const allExamples = await getCollection('examples'); relatedExamples = allExamples.filter(e => + !e.data.hidden && data.relatedExamples?.includes(e.data.id) ); } diff --git a/docs/src/pages/examples/index.astro b/docs/src/pages/examples/index.astro index 75692da9e2..41f7dd5666 100644 --- a/docs/src/pages/examples/index.astro +++ b/docs/src/pages/examples/index.astro @@ -18,9 +18,10 @@ import { ExamplesGrid } from '../../components/ExamplesGrid'; // Get all examples const allExamples = await getCollection('examples'); +const visibleExamples = allExamples.filter((example) => !example.data.hidden); // Sort by title (default) -const sortedExamples = allExamples.sort((a, b) => +const sortedExamples = visibleExamples.sort((a, b) => a.data.title.localeCompare(b.data.title) ); diff --git a/docs/src/scripts/build-search-index.ts b/docs/src/scripts/build-search-index.ts index 3b2258ff69..2c33502dce 100644 --- a/docs/src/scripts/build-search-index.ts +++ b/docs/src/scripts/build-search-index.ts @@ -155,6 +155,20 @@ function extractFirstParagraph(body: string): string | undefined { return paragraph || undefined; } +function isHidden(frontmatter: Record): boolean { + return String(frontmatter.hidden ?? '').toLowerCase() === 'true'; +} + +function normalizeDescription(value: string | undefined): string | undefined { + if (!value) return undefined; + + const withoutHtml = value.replace(/<[^>]+>/g, ' '); + const withoutMarkdownLinks = withoutHtml.replace(/\[([^\]]+)\]\(([^)]+)\)/g, '$1'); + const normalized = withoutMarkdownLinks.replace(/\s+/g, ' ').trim(); + + return normalized || undefined; +} + // ============================================================================ // File Processing // ============================================================================ @@ -170,7 +184,7 @@ function processComponent(filePath: string): ComponentEntry | null { const id = basename(filePath, '.mdx'); // Skip hidden components - if (frontmatter.hidden === true || frontmatter.hidden === 'true') { + if (isHidden(frontmatter)) { return null; } @@ -178,7 +192,9 @@ function processComponent(filePath: string): ComponentEntry | null { type: 'component', id, name: String(frontmatter.name || id), - description: frontmatter.description ? String(frontmatter.description) : undefined, + description: normalizeDescription( + frontmatter.description ? String(frontmatter.description) : undefined, + ), status: String(frontmatter.status || 'stable'), category: String(frontmatter.category || 'utilities'), tags: Array.isArray(frontmatter.tags) ? frontmatter.tags.map(String) : [], @@ -199,6 +215,11 @@ function processExample(filePath: string): ExampleEntry | null { const content = readFileSync(filePath, 'utf-8'); const { frontmatter, body } = parseFrontmatter(content); + // Skip hidden examples + if (isHidden(frontmatter)) { + return null; + } + // Get ID from directory name const dirName = basename(dirname(filePath)); const id = String(frontmatter.id || dirName); @@ -212,7 +233,7 @@ function processExample(filePath: string): ExampleEntry | null { type: 'example', id, title: String(frontmatter.title || id), - description, + description: normalizeDescription(description), status: String(frontmatter.status || 'published'), categories: Array.isArray(frontmatter.categories) ? frontmatter.categories.map(String) diff --git a/docs/src/scripts/extract-api.ts b/docs/src/scripts/extract-api.ts index 2c7f7cadee..b70865edf3 100644 --- a/docs/src/scripts/extract-api.ts +++ b/docs/src/scripts/extract-api.ts @@ -15,6 +15,7 @@ import * as fs from "fs"; import * as path from "path"; import { fileURLToPath } from "url"; +import * as ts from "typescript"; // ============================================================================= // Configuration @@ -31,6 +32,10 @@ const UI_COMPONENTS_PATH = path.join( "libs/web-components/src/components", ); const OUTPUT_PATH = path.join(WORKSPACE_ROOT, "docs/generated/component-apis"); +const DOCS_COMPONENT_CONTENT_PATH = path.join( + WORKSPACE_ROOT, + "docs/src/content/components", +); // ============================================================================= // Output Types (matching content model spec) @@ -51,20 +56,36 @@ interface ExtractedEvent { name: string; type: string; description: string; // Empty - filled by human content - frameworks: ("react" | "angular" | "web-component")[]; + frameworks: ("react" | "angular" | "webComponents")[]; } interface ExtractedSlot { name: string; + type?: string; description: string; // Empty - filled by human content + required?: boolean; } interface ExtractedComponentAPI { componentSlug: string; extractedFrom: string; - props: ExtractedProp[]; - events: ExtractedEvent[]; - slots: ExtractedSlot[]; + frameworks: { + react: { + props: ExtractedProp[]; + events: ExtractedEvent[]; + slots: ExtractedSlot[]; + }; + angular: { + props: ExtractedProp[]; + events: ExtractedEvent[]; + slots: ExtractedSlot[]; + }; + webComponents: { + props: ExtractedProp[]; + events: ExtractedEvent[]; + slots: ExtractedSlot[]; + }; + }; } // ============================================================================= @@ -90,6 +111,119 @@ interface ParsedPropRaw { deprecated: boolean; } +interface WrapperExtraction { + found: boolean; + props: ExtractedProp[]; + events: ExtractedEvent[]; + slotDescriptions: Record; + slotNameAliases: Record; + slotRequired: Record; +} + +const INTERNAL_PROP_NAMES = new Set(["publicformsummaryorder", "filterablecontext", "version"]); +const INTERNAL_SLOT_NAMES = new Set(["version"]); +const INTERNAL_EVENT_NAMES = new Set(["_revealChange", "_update"]); + +const DOCS_EXCLUDED_COMPONENTS = new Set(["focus-trap", "form-stepper", "scrollable"]); +const DOCS_FORCED_COMPONENTS = new Set(["table-sort-header"]); +const WRAPPER_COMPONENT_ALIASES: Record = { + "temporary-notification": "temporary-notification-ctrl", +}; +const WEB_COMPONENT_INTERNAL_EVENT_OVERRIDES: Record> = { + "work-side-menu-group": new Set(["_hoverItem"]), + "work-side-menu-item": new Set([ + "_blurItem", + "_desktopPopoverClose", + "_desktopPopoverOpen", + "_hoverItem", + "_itemCurrent", + "_mobilePopoverClose", + "_mobilePopoverOpen", + "_mountItem", + "_navigate", + ]), +}; +const WEB_COMPONENT_EVENT_TYPE_OVERRIDES: Record> = { + dropdown: { + _change: "CustomEvent<{ name?: string; value?: string; event: Event }>", + }, + "file-upload-input": { + _selectFile: "CustomEvent<{ file: File; event: Event }>", + }, +}; +const SLOT_TYPE_OVERRIDES: Record< + string, + Partial>> +> = { + footer: { + react: { + nav: "GoabAppFooterNavSection", + meta: "GoabAppFooterMetaSection", + }, + angular: { + nav: "GoabAppFooterNavSection", + meta: "GoabAppFooterMetaSection", + }, + webComponents: { + nav: "goa-app-footer-nav-section", + meta: "goa-app-footer-meta-section", + }, + }, +}; +const ALLOW_INTERNAL_PROP_BY_COMPONENT: Record> = { + "microsite-header": new Set(["version"]), +}; + +function shouldSkipInternalProp(componentName: string, propName: string): boolean { + const normalizedComponentName = toKebabCase(componentName); + const normalizedName = propName.toLowerCase(); + if (ALLOW_INTERNAL_PROP_BY_COMPONENT[normalizedComponentName]?.has(normalizedName)) { + return false; + } + return INTERNAL_PROP_NAMES.has(normalizedName); +} + +function shouldAllowInternalProp(componentName: string, propName: string): boolean { + const normalizedComponentName = toKebabCase(componentName); + return Boolean( + ALLOW_INTERNAL_PROP_BY_COMPONENT[normalizedComponentName]?.has(propName.toLowerCase()), + ); +} + +function isInternalPropName(propName: string): boolean { + return INTERNAL_PROP_NAMES.has(propName.toLowerCase()); +} + +function isStandardV1V2VersionProp(prop: ExtractedProp | undefined): boolean { + if (!prop || prop.name.toLowerCase() !== "version") return false; + + const values = (prop.values || []).map((value) => String(value).replace(/['"]/g, "").trim()); + if (values.length === 2 && values.includes("1") && values.includes("2")) { + return true; + } + + const normalizedType = String(prop.type || "") + .replace(/['"]/g, "") + .replace(/\s+/g, ""); + + return normalizedType === "1|2"; +} + +function specializeAngularValuePropFromReact( + angularProps: ExtractedProp[], + reactProps: ExtractedProp[], +): void { + const angularValueProp = angularProps.find((prop) => prop.name === "value"); + const reactValueProp = reactProps.find((prop) => prop.name === "value"); + + if (!angularValueProp || !reactValueProp) return; + if (angularValueProp.type !== "unknown | null | undefined") return; + if (!reactValueProp.type || reactValueProp.type === "unknown") return; + + angularValueProp.type = reactValueProp.type; + angularValueProp.values = reactValueProp.values; +} + // ============================================================================= // JSDoc Parser // ============================================================================= @@ -153,11 +287,35 @@ function parseJSDocContent(rawComment: string): { const description = cleaned .replace(/@required\s*/gi, "") .replace(/@internal\s*/gi, "") + .replace(/@deprecated\s*/gi, "") .trim(); return { description, required, internal, deprecated }; } +function parseDescriptionFromJSDoc(rawComment: string | undefined): string { + if (!rawComment) return ""; + const { description } = parseJSDocContent(rawComment); + return description; +} + +function extractDefaultFromDescription(description: string): { + description: string; + defaultValue: string | null; +} { + const defaultMatch = description.match(/@default\s+([^@]+)/i); + const defaultValue = defaultMatch ? defaultMatch[1].trim().replace(/^["']|["']$/g, "") : null; + const cleanDescription = description.replace(/@default\s+([^@]+)/gi, "").trim(); + return { + description: cleanDescription, + defaultValue, + }; +} + +function isReadonlyDescription(description: string): boolean { + return /read[ -]?only\b|set by the component\b/i.test(description); +} + // ============================================================================= // Svelte Parser // ============================================================================= @@ -274,18 +432,11 @@ function extractProps( typeAliases: Map, ): ParsedPropRaw[] { const props: ParsedPropRaw[] = []; + const customElementPropAttributeMap = extractCustomElementPropAttributeMap(content); // Build JSDoc map for descriptions const jsDocMap = buildJSDocMap(content); - // Internal props to skip (used by public forms system, not useful for devs) - const internalProps = new Set([ - "publicformsummaryorder", - "action", - "actionarg", - "actionargs", - ]); - // Match: export let propName: Type = defaultValue; const propMatches = content.matchAll( /export\s+let\s+(\w+)(?:\s*:\s*([^=;]+?))?(?:\s*=\s*([^;]+?))?;/g, @@ -293,16 +444,18 @@ function extractProps( for (const match of propMatches) { const rawName = match[1]; - let type = match[2]?.trim() || "any"; const defaultStr = match[3]?.trim(); + let type = match[2]?.trim() || inferTypeFromDefault(defaultStr); // Skip private props (starting with _) if (rawName.startsWith("_")) continue; - // Skip internal props - if (internalProps.has(rawName.toLowerCase())) continue; + // Keep `version` on Web Component docs; wrappers are filtered later. + if (rawName.toLowerCase() !== "version" && shouldSkipInternalProp(componentName, rawName)) { + continue; + } - const name = toReactPropName(rawName); + const name = customElementPropAttributeMap.get(rawName) || rawName.toLowerCase(); let typeLabel: string | undefined; let values: string[] | undefined; @@ -317,8 +470,8 @@ function extractProps( // Handle special types if (type.includes("GoAIconType") || type.includes("GoaIconType")) { - typeLabel = "GoAIconType"; - type = "GoAIconType"; + typeLabel = "GoabIconType"; + type = "GoabIconType"; } else if (type === "Spacing" || type.includes("Spacing")) { typeLabel = "Spacing"; type = "Spacing"; @@ -382,12 +535,23 @@ function extractProps( // Get JSDoc info from map (description + required flag) const jsDocInfo = jsDocMap.get(rawName); - // Skip @internal props — not for public API docs - if (jsDocInfo?.internal) continue; + // Keep Svelte `version` visible in Web Component docs. + if ( + jsDocInfo?.internal && + rawName.toLowerCase() !== "version" && + !shouldAllowInternalProp(componentName, rawName) + ) { + continue; + } + + // Skip @deprecated props — not for public API docs + if (jsDocInfo?.deprecated) continue; const description = jsDocInfo?.description || ""; - // Use @required from JSDoc if present, otherwise fall back to checking if no default value - const isRequired = jsDocInfo?.required || defaultStr === undefined; + const isReadonly = isReadonlyDescription(description); + // Use @required from JSDoc if present, otherwise fall back to checking if no default value. + // Read-only, component-managed values should not be presented as consumer-required props. + const isRequired = Boolean(jsDocInfo?.required) || (!isReadonly && defaultStr === undefined); props.push({ name, @@ -406,12 +570,28 @@ function extractProps( return props; } +function extractCustomElementPropAttributeMap(content: string): Map { + const map = new Map(); + const optionsTagMatch = content.match(//); + if (!optionsTagMatch) return map; + + const optionsTag = optionsTagMatch[0]; + const propAttributeMatches = optionsTag.matchAll( + /(?:^|\n)\s*(\w+)\s*:\s*\{[^{}]*attribute\s*:\s*["']([^"']+)["'][^{}]*\}/g, + ); + + for (const match of propAttributeMatches) { + const propName = match[1]; + const attributeName = match[2]; + map.set(propName, attributeName); + } + + return map; +} + // Known limitation: only scans the top-level Svelte file, so components that // delegate event dispatching to child Svelte files will have missing events. -// Affected: push-drawer (_close), file-upload-card (_cancel, _delete), -// form (_complete, _continue, _stateChange). -// This will be resolved when #3361 (JSDoc in wrappers) lands and the extractor -// can read events from the React/Angular wrappers instead. +// Events from React/Angular wrappers fill this gap for those frameworks. function extractEvents(content: string): string[] { const eventNames = new Set(); @@ -435,17 +615,6 @@ function extractEvents(content: string): string[] { } } - // Pattern 3: _rootEl?.dispatchEvent(new CustomEvent("_eventName", ...)) - const rootElMatches = content.matchAll( - /_rootEl\??\s*\.?\s*dispatchEvent\s*\(\s*new\s+CustomEvent\s*\(\s*["']([^"']+)["']/g, - ); - for (const match of rootElMatches) { - const eventName = match[1]; - if (!eventName.includes("::")) { - eventNames.add(eventName); - } - } - return Array.from(eventNames); } @@ -463,13 +632,893 @@ function extractSlots(content: string): string[] { } } - // Default slot: or - const hasDefaultSlot = /|>[^<]*<\/slot>)/.test(content); - if (hasDefaultSlot && !seenNames.has("default")) { - slotNames.unshift("default"); + return slotNames; +} + +function parseWrapperPropValues(type: string): string[] | undefined { + if (!type.includes("|")) return undefined; + const values = type + .split("|") + .map((v) => v.trim().replace(/['"]/g, "")) + .filter((v) => v.length > 0 && v !== "undefined" && v !== "null"); + return values.length > 0 ? values : undefined; +} + +function inferTypeFromDefault(defaultValue: string | undefined): string { + if (!defaultValue) return "any"; + + const trimmed = defaultValue.trim(); + if (trimmed === "true" || trimmed === "false") return "boolean"; + if (!isNaN(Number(trimmed))) return "number"; + if (/^["'`]/.test(trimmed)) return "string"; + if (trimmed.startsWith("[")) return "unknown[]"; + if (trimmed.startsWith("{")) return "Record"; + + return "any"; +} + +function normalizeName(value: string): string { + return value.toLowerCase().replace(/[^a-z0-9]/g, ""); +} + +function getMatchingSlotName(propName: string, slotNames: string[]): string | null { + if (propName === "children") { + return "default"; } - return slotNames; + const normalizedPropName = normalizeName(propName); + const directMatch = + slotNames.find((slotName) => normalizeName(slotName) === normalizedPropName) ?? null; + if (directMatch) return directMatch; + + // Common wrapper naming pattern: slot "account" exposed as prop "accountContent". + const contentSuffixMatch = propName.match(/^(.+?)content$/i); + if (contentSuffixMatch?.[1]) { + const baseName = normalizeName(contentSuffixMatch[1]); + return slotNames.find((slotName) => normalizeName(slotName) === baseName) ?? null; + } + + return null; +} + +interface ReactCallbackAliasInfo { + typeParam?: string; + defaultTypeArg?: string; + detailType: string; +} + +interface ReactInterfaceInfo { + name: string; + exported: boolean; + extendsNames: string[]; + declaration: ts.InterfaceDeclaration; +} + +function getTypeReferenceName(typeNode: ts.TypeReferenceNode, sourceFile: ts.SourceFile): string { + const typeName = typeNode.typeName.getText(sourceFile); + return typeName.split(".").pop() || typeName; +} + +function createTsSourceFile(filePath: string, content: string): ts.SourceFile { + const scriptKind = filePath.endsWith(".tsx") ? ts.ScriptKind.TSX : ts.ScriptKind.TS; + return ts.createSourceFile(filePath, content, ts.ScriptTarget.Latest, true, scriptKind); +} + +function getNodeDecorators(node: ts.Node): readonly ts.Decorator[] { + if (typeof ts.canHaveDecorators === "function" && ts.canHaveDecorators(node)) { + return ts.getDecorators(node) ?? []; + } + + const legacyDecorators = (node as { decorators?: readonly ts.Decorator[] }).decorators; + return legacyDecorators ?? []; +} + +function getDecoratorCall(node: ts.Node, decoratorName: string): ts.CallExpression | null { + for (const decorator of getNodeDecorators(node)) { + const expression = decorator.expression; + if (ts.isCallExpression(expression) && ts.isIdentifier(expression.expression)) { + if (expression.expression.text === decoratorName) { + return expression; + } + } + + if (ts.isIdentifier(expression) && expression.text === decoratorName) { + return null; + } + } + + return null; +} + +function isAngularInputRequired(inputDecoratorCall: ts.CallExpression | null): boolean { + if (!inputDecoratorCall || inputDecoratorCall.arguments.length === 0) return false; + + const firstArg = inputDecoratorCall.arguments[0]; + if (!firstArg || !ts.isObjectLiteralExpression(firstArg)) return false; + + const requiredProp = firstArg.properties.find((prop) => { + if (!ts.isPropertyAssignment(prop)) return false; + if (ts.isIdentifier(prop.name)) return prop.name.text === "required"; + if (ts.isStringLiteral(prop.name)) return prop.name.text === "required"; + return false; + }); + + if (!requiredProp || !ts.isPropertyAssignment(requiredProp)) return false; + + return requiredProp.initializer.kind === ts.SyntaxKind.TrueKeyword; +} + +function hasDecorator(node: ts.Node, decoratorName: string): boolean { + for (const decorator of getNodeDecorators(node)) { + const expression = decorator.expression; + if (ts.isCallExpression(expression) && ts.isIdentifier(expression.expression)) { + if (expression.expression.text === decoratorName) { + return true; + } + } + + if (ts.isIdentifier(expression) && expression.text === decoratorName) { + return true; + } + } + + return false; +} + +function parseReactInterfaces(content: string, filePath: string): Map { + const interfaces = new Map(); + const sourceFile = createTsSourceFile(filePath, content); + + for (const statement of sourceFile.statements) { + if (!ts.isInterfaceDeclaration(statement)) continue; + + const name = statement.name.text; + const exported = statement.modifiers?.some((modifier) => modifier.kind === ts.SyntaxKind.ExportKeyword) ?? false; + const extendsNames = + statement.heritageClauses + ?.filter((clause) => clause.token === ts.SyntaxKind.ExtendsKeyword) + .flatMap((clause) => + clause.types + .map((typeNode) => typeNode.expression.getText(sourceFile)) + .map((value) => value.split(".").pop() || value) + .filter(Boolean), + ) ?? []; + + interfaces.set(name, { + name, + exported, + extendsNames, + declaration: statement, + }); + } + + return interfaces; +} + +function resolvePrimaryReactPropsInterface( + componentName: string, + interfaces: Map, +): string | null { + const componentPart = capitalize(toCamelCase(componentName)); + const candidates = [`Goab${componentPart}Props`, `GoA${componentPart}Props`]; + + for (const name of candidates) { + const match = interfaces.get(name); + if (match?.exported) return name; + } + + for (const name of candidates) { + if (interfaces.has(name)) return name; + } + + for (const info of interfaces.values()) { + if (info.exported && /^(?:Goab|GoA)\w+Props$/.test(info.name)) { + return info.name; + } + } + + for (const info of interfaces.values()) { + if (/^(?:Goab|GoA)\w+Props$/.test(info.name)) { + return info.name; + } + } + + return null; +} + +function collectReactInterfaceMembers( + interfaceName: string, + interfaces: Map, + sourceFile: ts.SourceFile, + visited: Set = new Set(), +): ts.TypeElement[] { + if (visited.has(interfaceName)) return []; + visited.add(interfaceName); + + const info = interfaces.get(interfaceName); + if (!info) return []; + + const inheritedMembers = info.extendsNames.flatMap((baseName) => + collectReactInterfaceMembers(baseName, interfaces, sourceFile, visited), + ); + + return [...inheritedMembers, ...info.declaration.members]; +} + +function getFunctionLikeFirstParameterType( + fn: ts.FunctionDeclaration | ts.ArrowFunction | ts.FunctionExpression, +): ts.TypeNode | null { + return fn.parameters[0]?.type ?? null; +} + +function resolvePrimaryReactComponentParameterType( + componentName: string, + sourceFile: ts.SourceFile, +): ts.TypeNode | null { + const componentPart = capitalize(toCamelCase(componentName)); + const candidates = [`Goab${componentPart}`, `GoA${componentPart}`]; + + for (const statement of sourceFile.statements) { + if ( + ts.isFunctionDeclaration(statement) && + statement.name && + candidates.includes(statement.name.text) && + statement.modifiers?.some((modifier) => modifier.kind === ts.SyntaxKind.ExportKeyword) + ) { + return getFunctionLikeFirstParameterType(statement); + } + + if ( + ts.isVariableStatement(statement) && + statement.modifiers?.some((modifier) => modifier.kind === ts.SyntaxKind.ExportKeyword) + ) { + for (const declaration of statement.declarationList.declarations) { + if (!ts.isIdentifier(declaration.name) || !candidates.includes(declaration.name.text)) continue; + if (!declaration.initializer) continue; + + if (ts.isArrowFunction(declaration.initializer) || ts.isFunctionExpression(declaration.initializer)) { + return getFunctionLikeFirstParameterType(declaration.initializer); + } + } + } + } + + return null; +} + +function collectReactTypeNodeMembers( + typeNode: ts.TypeNode | null, + interfaces: Map, + sourceFile: ts.SourceFile, + visitedTypeRefs: Set = new Set(), +): ts.TypeElement[] { + if (!typeNode) return []; + + if (ts.isParenthesizedTypeNode(typeNode)) { + return collectReactTypeNodeMembers(typeNode.type, interfaces, sourceFile, visitedTypeRefs); + } + + if (ts.isIntersectionTypeNode(typeNode)) { + return typeNode.types.flatMap((memberType) => + collectReactTypeNodeMembers(memberType, interfaces, sourceFile, visitedTypeRefs), + ); + } + + if (ts.isTypeLiteralNode(typeNode)) { + return [...typeNode.members]; + } + + if (ts.isTypeReferenceNode(typeNode)) { + const typeName = getTypeReferenceName(typeNode, sourceFile); + if (visitedTypeRefs.has(typeName)) return []; + visitedTypeRefs.add(typeName); + return collectReactInterfaceMembers(typeName, interfaces, sourceFile); + } + + return []; +} + +function hasReactMarginsInHierarchy( + interfaceName: string, + interfaces: Map, + visited: Set = new Set(), +): boolean { + if (visited.has(interfaceName)) return false; + visited.add(interfaceName); + + const info = interfaces.get(interfaceName); + if (!info) return false; + + if (info.extendsNames.includes("Margins")) { + return true; + } + + return info.extendsNames.some((baseName) => + hasReactMarginsInHierarchy(baseName, interfaces, visited), + ); +} + +function extractReactCallbackAliases(sourceFile: ts.SourceFile): Map { + const aliases = new Map(); + for (const statement of sourceFile.statements) { + if (!ts.isTypeAliasDeclaration(statement)) continue; + if (!ts.isFunctionTypeNode(statement.type)) continue; + + const aliasName = statement.name.text; + const typeParam = statement.typeParameters?.[0]?.name.text; + const defaultTypeArg = statement.typeParameters?.[0]?.default?.getText(sourceFile)?.trim(); + const detailType = cleanType( + statement.type.parameters[0]?.type?.getText(sourceFile)?.trim() || "unknown", + ); + + aliases.set(aliasName, { + typeParam, + defaultTypeArg, + detailType, + }); + } + + return aliases; +} + +function parseGenericAliasUsage(type: string): { alias: string; typeArg?: string } { + const aliasMatch = type.match(/^([A-Za-z_]\w*)(?:<\s*([^>]+)\s*>)?$/); + if (!aliasMatch) { + return { alias: type }; + } + + return { + alias: aliasMatch[1], + typeArg: aliasMatch[2]?.trim(), + }; +} + +function resolveReactCallbackEventType( + callbackType: string, + callbackAliases: Map, +): string { + if (callbackType.includes("=>")) { + return callbackType; + } + + const { alias, typeArg } = parseGenericAliasUsage(callbackType); + const aliasInfo = callbackAliases.get(alias); + if (!aliasInfo) { + return callbackType; + } + + const toFunctionSignature = (detailType: string) => `(detail: ${detailType}) => void`; + + if (!aliasInfo.typeParam) { + return toFunctionSignature(aliasInfo.detailType); + } + + const resolvedTypeArg = typeArg || aliasInfo.defaultTypeArg; + if (!resolvedTypeArg) { + return toFunctionSignature(aliasInfo.detailType); + } + + const typeParamPattern = new RegExp(`\\b${aliasInfo.typeParam}\\b`, "g"); + let resolvedDetailType = aliasInfo.detailType.replace(typeParamPattern, resolvedTypeArg); + + // Keep docs concise when the generic argument matches the alias default. + if (aliasInfo.defaultTypeArg && resolvedTypeArg === aliasInfo.defaultTypeArg) { + const defaultGenericPattern = new RegExp(`\\<\\s*${escapeRegExp(resolvedTypeArg)}\\s*\\>`, "g"); + resolvedDetailType = resolvedDetailType.replace(defaultGenericPattern, ""); + } + + return toFunctionSignature(resolvedDetailType); +} + +function isReactCallbackAliasType( + type: string, + callbackAliases: Map, +): boolean { + if (type.includes("=>")) { + return true; + } + + const { alias } = parseGenericAliasUsage(type); + return callbackAliases.has(alias); +} + +function isFunctionType(type: string): boolean { + return /^\(\s*[^)]*\)\s*=>\s*.+$/.test(type.trim()); +} + +function isSlotCarrierType(type: string): boolean { + return /React(?:\.[A-Za-z]+)?(?:Node|Element)(?:<.+?>)?|JSX\.Element|TemplateRef\s*<.+?>/.test(type); +} + +function isPureSlotCarrierType(type: string): boolean { + const members = type + .split("|") + .map((part) => part.trim()) + .filter((part) => part.length > 0 && part !== "null" && part !== "undefined"); + + if (members.length === 0) return false; + return members.every((part) => isSlotCarrierType(part)); +} + +function toEventCallbackType(type: string): string { + if (type === "void") { + return "() => void"; + } + return `(event: ${type}) => void`; +} + +function dedupeByName(items: T[]): T[] { + const seen = new Set(); + return items.filter((item) => { + if (seen.has(item.name)) return false; + seen.add(item.name); + return true; + }); +} + +function createEmptyWrapperExtraction(found: boolean = false): WrapperExtraction { + return { + found, + props: [], + events: [], + slotDescriptions: {}, + slotNameAliases: {}, + slotRequired: {}, + }; +} + +function findImmediateJsDocBefore(content: string, markerIndex: number): string | undefined { + const beforeMarker = content.slice(0, markerIndex); + const start = beforeMarker.lastIndexOf("/**"); + if (start === -1) return undefined; + + const end = beforeMarker.indexOf("*/", start + 3); + if (end === -1) return undefined; + + const tail = beforeMarker.slice(end + 2); + if (!/^\s*$/.test(tail)) return undefined; + + return beforeMarker.slice(start + 3, end); +} + +function extractAngularBaseComponentProps(): Map { + const baseFile = path.join( + WORKSPACE_ROOT, + "libs/angular-components/src/lib/components/base.component.ts", + ); + + if (!fs.existsSync(baseFile)) return new Map(); + + const content = fs.readFileSync(baseFile, "utf-8"); + const sourceFile = createTsSourceFile(baseFile, content); + const props = new Map(); + + const classDecls = sourceFile.statements.filter( + (node): node is ts.ClassDeclaration => ts.isClassDeclaration(node), + ); + + for (const classDecl of classDecls) { + for (const member of classDecl.members) { + if (!ts.isPropertyDeclaration(member)) continue; + if (!hasDecorator(member, "Input")) continue; + if (!member.name || !ts.isIdentifier(member.name)) continue; + + const rawComment = findImmediateJsDocBefore(content, member.getStart(sourceFile)); + const propName = member.name.text; + const inputDecorator = getDecoratorCall(member, "Input"); + const rawDefault = member.initializer?.getText(sourceFile)?.trim(); + const rawType = cleanType(member.type?.getText(sourceFile)?.trim() || inferTypeFromDefault(rawDefault)); + const fullDescription = parseDescriptionFromJSDoc(rawComment); + const { description, defaultValue: descriptionDefault } = extractDefaultFromDescription(fullDescription); + const defaultValue = descriptionDefault ?? parseDefaultValue(rawDefault); + + props.set(propName, { + name: propName, + type: rawType, + values: parseWrapperPropValues(rawType), + required: isAngularInputRequired(inputDecorator), + default: defaultValue, + description, + }); + } + } + + return props; +} + +function findFirstFileByName(root: string, targetName: string): string | null { + if (!fs.existsSync(root)) return null; + const stack = [root]; + + while (stack.length > 0) { + const current = stack.pop(); + if (!current) continue; + const entries = fs.readdirSync(current, { withFileTypes: true }); + + for (const entry of entries) { + const fullPath = path.join(current, entry.name); + if (entry.isDirectory()) { + stack.push(fullPath); + } else if (entry.isFile() && entry.name === targetName) { + return fullPath; + } + } + } + + return null; +} + +function escapeRegExp(value: string): string { + return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); +} + +function findFirstFileContaining( + root: string, + extensions: string[], + searchText: string, +): string | null { + if (!fs.existsSync(root)) return null; + const stack = [root]; + const searchPattern = new RegExp( + `(?:<\\s*${escapeRegExp(searchText)}(?=[\\s>/])|["']${escapeRegExp(searchText)}["'])`, + ); + + while (stack.length > 0) { + const current = stack.pop(); + if (!current) continue; + const entries = fs.readdirSync(current, { withFileTypes: true }); + + for (const entry of entries) { + const fullPath = path.join(current, entry.name); + if (entry.isDirectory()) { + stack.push(fullPath); + } else if ( + entry.isFile() && + extensions.some((ext) => entry.name.endsWith(ext)) && + !entry.name.includes(".spec.") + ) { + const content = fs.readFileSync(fullPath, "utf-8"); + if (searchPattern.test(content)) { + return fullPath; + } + } + } + } + + return null; +} + +function findFirstFileMatchingPattern( + root: string, + extensions: string[], + pattern: RegExp, +): string | null { + if (!fs.existsSync(root)) return null; + const stack = [root]; + + while (stack.length > 0) { + const current = stack.pop(); + if (!current) continue; + const entries = fs.readdirSync(current, { withFileTypes: true }); + + for (const entry of entries) { + const fullPath = path.join(current, entry.name); + if (entry.isDirectory()) { + stack.push(fullPath); + } else if ( + entry.isFile() && + extensions.some((ext) => entry.name.endsWith(ext)) && + !entry.name.includes(".spec.") + ) { + const content = fs.readFileSync(fullPath, "utf-8"); + if (pattern.test(content)) { + return fullPath; + } + } + } + } + + return null; +} + +function extractReactWrapperApi( + componentName: string, + tagName: string, + slotNames: string[], + wrapperComponentName: string = componentName, +): WrapperExtraction { + const reactRoot = path.join(WORKSPACE_ROOT, "libs/react-components/src/lib"); + const reactFileNameCandidates = [ + `${wrapperComponentName}.tsx`, + `${wrapperComponentName.replace(/-/g, "")}.tsx`, + ]; + const reactTagPattern = new RegExp(`<\\s*${escapeRegExp(tagName)}(?=[\\s>/])`); + + const reactFile = + reactFileNameCandidates.map((name) => findFirstFileByName(reactRoot, name)).find(Boolean) ?? + findFirstFileMatchingPattern(reactRoot, [".tsx"], reactTagPattern) ?? + findFirstFileContaining(reactRoot, [".tsx"], tagName); + + if (!reactFile) return createEmptyWrapperExtraction(); + + const content = fs.readFileSync(reactFile, "utf-8"); + const sourceFile = createTsSourceFile(reactFile, content); + const interfaces = parseReactInterfaces(content, reactFile); + const primaryInterfaceName = resolvePrimaryReactPropsInterface(wrapperComponentName, interfaces); + if (!primaryInterfaceName) return createEmptyWrapperExtraction(true); + + const interfaceMembers = collectReactInterfaceMembers(primaryInterfaceName, interfaces, sourceFile); + const componentParameterType = resolvePrimaryReactComponentParameterType( + wrapperComponentName, + sourceFile, + ); + const componentParameterMembers = collectReactTypeNodeMembers( + componentParameterType, + interfaces, + sourceFile, + new Set([primaryInterfaceName]), + ); + const reactMembers = [...interfaceMembers, ...componentParameterMembers]; + const callbackAliases = extractReactCallbackAliases(sourceFile); + + const props: ExtractedProp[] = []; + const events: ExtractedEvent[] = []; + const slotDescriptions: Record = {}; + const slotNameAliases: Record = {}; + const slotRequired: Record = {}; + + for (const member of reactMembers) { + if (!ts.isPropertySignature(member)) continue; + if (!member.name || !ts.isIdentifier(member.name)) continue; + + const rawComment = findImmediateJsDocBefore(content, member.getStart(sourceFile)); + const propName = member.name.text; + const optional = Boolean(member.questionToken); + const rawType = cleanType(member.type?.getText(sourceFile)?.trim() || "any"); + const { internal, deprecated } = parseJSDocContent(rawComment || ""); + + // Skip @deprecated props and internal-only props — not for public API docs + if (deprecated || (internal && !shouldAllowInternalProp(componentName, propName))) continue; + + const fullDescription = parseDescriptionFromJSDoc(rawComment); + const { description, defaultValue } = extractDefaultFromDescription(fullDescription); + const isReadonly = isReadonlyDescription(description); + const isRequired = !optional && !isReadonly; + + if (shouldSkipInternalProp(componentName, propName)) continue; + + const values = parseWrapperPropValues(rawType); + const slotName = getMatchingSlotName(propName, slotNames); + + if (slotName && isSlotCarrierType(rawType)) { + if (description) { + slotDescriptions[slotName] = description; + } + slotNameAliases[slotName] = propName; + slotRequired[slotName] = Boolean(slotRequired[slotName]) || isRequired; + if (isPureSlotCarrierType(rawType)) { + continue; + } + } + + if ( + propName.startsWith("on") && + (isReactCallbackAliasType(rawType, callbackAliases) || isFunctionType(rawType)) + ) { + events.push({ + name: propName, + type: isReactCallbackAliasType(rawType, callbackAliases) + ? resolveReactCallbackEventType(rawType, callbackAliases) + : rawType, + description, + frameworks: ["react"], + }); + continue; + } + + props.push({ + name: propName, + type: rawType, + values, + required: isRequired, + default: defaultValue, + description, + }); + } + + // Inject inherited margin props when the interface extends Margins + if (hasReactMarginsInHierarchy(primaryInterfaceName, interfaces)) { + const existingNames = new Set(props.map((p) => p.name)); + const marginProps: ExtractedProp[] = ["mt", "mr", "mb", "ml"] + .filter((name) => !existingNames.has(name)) + .map((name) => ({ + name, + type: "Spacing", + required: false, + default: null, + description: "", + })); + props.push(...marginProps); + } + + const dedupedProps = dedupeByName(props).sort((a, b) => a.name.localeCompare(b.name)); + const dedupedEvents = dedupeByName(events).sort((a, b) => a.name.localeCompare(b.name)); + + return { + found: true, + props: dedupedProps, + events: dedupedEvents, + slotDescriptions, + slotNameAliases, + slotRequired, + }; +} + +function extractAngularWrapperApi( + componentName: string, + tagName: string, + slotNames: string[], + wrapperComponentName: string = componentName, +): WrapperExtraction { + const angularRoot = path.join(WORKSPACE_ROOT, "libs/angular-components/src/lib/components"); + const angularSelector = tagName.replace(/^goa-/, "goab-"); + const angularFileNameCandidates = [ + `${wrapperComponentName}.ts`, + `${wrapperComponentName.replace(/-/g, "")}.ts`, + ]; + const angularSelectorPattern = new RegExp(`selector\\s*:\\s*["']${escapeRegExp(angularSelector)}["']`); + const angularTagPattern = new RegExp(`<\\s*${escapeRegExp(tagName)}(?=[\\s>/])`); + + const angularFile = + angularFileNameCandidates + .map((name) => findFirstFileByName(angularRoot, name)) + .find(Boolean) ?? + findFirstFileMatchingPattern(angularRoot, [".ts"], angularSelectorPattern) ?? + findFirstFileMatchingPattern(angularRoot, [".ts"], angularTagPattern) ?? + findFirstFileContaining(angularRoot, [".ts"], tagName); + + if (!angularFile) return createEmptyWrapperExtraction(); + + const content = fs.readFileSync(angularFile, "utf-8"); + const sourceFile = createTsSourceFile(angularFile, content); + + const props: ExtractedProp[] = []; + const events: ExtractedEvent[] = []; + const slotDescriptions: Record = {}; + const slotNameAliases: Record = {}; + const slotRequired: Record = {}; + + const classDecl = sourceFile.statements.find( + (node): node is ts.ClassDeclaration => ts.isClassDeclaration(node) && hasDecorator(node, "Component"), + ); + + if (!classDecl) return createEmptyWrapperExtraction(true); + + for (const member of classDecl.members) { + if (!ts.isPropertyDeclaration(member)) continue; + if (!member.name || !ts.isIdentifier(member.name)) continue; + + const inputDecorator = getDecoratorCall(member, "Input"); + if (!inputDecorator && !hasDecorator(member, "Input")) continue; + + const rawComment = findImmediateJsDocBefore(content, member.getStart(sourceFile)); + const { internal, deprecated } = parseJSDocContent(rawComment || ""); + const propName = member.name.text; + const rawDefault = member.initializer?.getText(sourceFile)?.trim(); + const rawType = cleanType(member.type?.getText(sourceFile)?.trim() || inferTypeFromDefault(rawDefault)); + + const fullDescription = parseDescriptionFromJSDoc(rawComment); + const { description, defaultValue: descriptionDefault } = extractDefaultFromDescription(fullDescription); + const isReadonly = isReadonlyDescription(description); + const required = !isReadonly && isAngularInputRequired(inputDecorator); + + // Skip @deprecated props and internal-only props — not for public API docs + if (deprecated || (internal && !shouldAllowInternalProp(componentName, propName))) continue; + + if (shouldSkipInternalProp(componentName, propName)) continue; + + const values = parseWrapperPropValues(rawType); + const slotName = getMatchingSlotName(propName, slotNames); + + if (slotName && isSlotCarrierType(rawType)) { + if (description) { + slotDescriptions[slotName] = description; + } + slotNameAliases[slotName] = propName; + slotRequired[slotName] = Boolean(slotRequired[slotName]) || required; + if (isPureSlotCarrierType(rawType)) { + continue; + } + } + + const defaultValue = descriptionDefault ?? parseDefaultValue(rawDefault); + + props.push({ + name: propName, + type: rawType, + values, + required, + default: defaultValue, + description, + }); + } + + for (const member of classDecl.members) { + if (!ts.isPropertyDeclaration(member)) continue; + if (!member.name || !ts.isIdentifier(member.name)) continue; + const outputDecorator = getDecoratorCall(member, "Output"); + if (!outputDecorator && !hasDecorator(member, "Output")) continue; + + const rawComment = findImmediateJsDocBefore(content, member.getStart(sourceFile)); + const { deprecated: eventDeprecated } = parseJSDocContent(rawComment || ""); + if (eventDeprecated) continue; + + const eventName = member.name.text; + let eventType = "void"; + + if (member.type && ts.isTypeReferenceNode(member.type)) { + const typeName = member.type.typeName.getText(sourceFile); + if (typeName.endsWith("EventEmitter")) { + eventType = member.type.typeArguments?.[0]?.getText(sourceFile)?.trim() || "void"; + } + } + + if ( + (eventType === "void" || eventType === "CustomEvent") && + member.initializer && + ts.isNewExpression(member.initializer) + ) { + const expr = member.initializer; + const ctorName = expr.expression.getText(sourceFile); + if (ctorName.endsWith("EventEmitter")) { + eventType = expr.typeArguments?.[0]?.getText(sourceFile)?.trim() || "void"; + } + } + + const description = parseDescriptionFromJSDoc(rawComment); + + events.push({ + name: eventName, + type: toEventCallbackType(eventType), + description, + frameworks: ["angular"], + }); + } + + // Inject inherited props when the class extends common Angular base wrappers. + const extendsName = classDecl.heritageClauses + ?.find((clause) => clause.token === ts.SyntaxKind.ExtendsKeyword) + ?.types?.[0] + ?.expression + ?.getText(sourceFile); + + if (extendsName && (extendsName === "GoabBaseComponent" || extendsName === "GoabControlValueAccessor")) { + const existingNames = new Set(props.map((p) => p.name)); + const baseComponentProps = extractAngularBaseComponentProps(); + const inheritedPropNames = + extendsName === "GoabControlValueAccessor" + ? ["id", "disabled", "error", "value", "mt", "mr", "mb", "ml", "testId"] + : ["mt", "mr", "mb", "ml", "testId"]; + + const baseProps = inheritedPropNames + .map((name) => baseComponentProps.get(name)) + .filter((prop): prop is ExtractedProp => Boolean(prop)) + .filter((prop) => !existingNames.has(prop.name)); + + props.push(...baseProps); + } + + const dedupedProps = dedupeByName(props).sort((a, b) => a.name.localeCompare(b.name)); + const dedupedEvents = dedupeByName(events).sort((a, b) => a.name.localeCompare(b.name)); + + return { + found: true, + props: dedupedProps, + events: dedupedEvents, + slotDescriptions, + slotNameAliases, + slotRequired, + }; } // ============================================================================= @@ -502,37 +1551,284 @@ function generateTypeLabel( // Event Transformation // ============================================================================= -function transformEvents(rawEventNames: string[]): ExtractedEvent[] { - const events: ExtractedEvent[] = []; +function inferDetailPropertyType(key: string, expression: string): string { + const expr = expression.trim(); + const lowerKey = key.toLowerCase(); + + if (lowerKey === "name") return "string"; + if (lowerKey === "label") return "string"; + if (lowerKey === "labels") return "string[]"; + if (lowerKey === "sortby") return "string"; + if (lowerKey === "sortdir") return "number"; + if (lowerKey === "sorts") return '{ column: string; direction: "asc" | "desc" }[]'; + if (lowerKey === "tab") return "number"; + if (lowerKey === "page") return "number"; + if (lowerKey === "url") return "string"; + if (lowerKey === "values") return "string[]"; + + if (lowerKey === "value") { + if (/newselectedvalues|array\.from\s*\(/i.test(expr)) return "string[]"; + if (/_date\.date/.test(expr)) return "Date | string | null"; + if (/\binput\.value\b/.test(expr)) return "string"; + if (/\.value\b/.test(expr) && !/\bdetail\.value\b/.test(expr)) return "string"; + if (/\boutput\b/.test(expr)) return "string"; + if (/^newvalue$/i.test(expr)) return "string"; + if (/^_?value$/.test(expr)) return "string"; + if (/detail\.value/.test(expr)) return "string | unknown[]"; + } - for (const rawName of rawEventNames) { - // Skip internal events - if (rawName.includes("::") || rawName.includes(":")) continue; + if (lowerKey === "valuestr") return "string"; + if (lowerKey === "key") { + if (/\.key\b/.test(expr)) return "string"; + } + if (lowerKey === "action") { + if (/\.action\b/.test(expr)) return "string"; + } + if (lowerKey === "size") { + if (/\.size\b/.test(expr)) return '"normal" | "compact"'; + } - // Raw event name (e.g., "_click") -> base name (e.g., "click") - const baseName = rawName.replace(/^_/, ""); + if (expr === "true" || expr === "false") return "boolean"; + if (/^[-+]?\d+(\.\d+)?$/.test(expr)) return "number"; + if (/^["'`].*["'`]$/.test(expr)) return "string"; + if (/^\{[\s\S]*\}$/.test(expr)) return "Record"; + if (/^\[[\s\S]*\]$/.test(expr)) return "unknown[]"; + if (/\b(open|checked|disabled|selected|expanded|collapsed|visible|active)\b/i.test(expr)) { + return "boolean"; + } + if (/(open|checked|disabled|selected|expanded|collapsed|visible|active)/.test(lowerKey)) { + return "boolean"; + } + if (/\b(event|e)\b/.test(expr)) return "Event"; - // React event name: onClick, onChange, etc. - const reactName = `on${capitalize(baseName)}`; + return "unknown"; +} - // Add React event - events.push({ - name: reactName, - type: "(event: Event) => void", - description: "", - frameworks: ["react"], - }); +function inferDetailPropertyOptional(key: string, expression: string): boolean { + const expr = expression.trim(); + const lowerKey = key.toLowerCase(); - // Add Angular event (uses the raw name with underscore) - events.push({ - name: rawName, - type: "CustomEvent", - description: "", - frameworks: ["angular"], - }); + if ( + (lowerKey === "action" || lowerKey === "size") && + /\baction\.(action|size)\b/.test(expr) + ) { + return true; } - return events; + return false; +} + +function buildCustomEventTypeFromDetail(detailObjectLiteral: string): string { + const objectBody = detailObjectLiteral.replace(/^\{\s*|\s*\}$/g, ""); + if (!objectBody) return "CustomEvent"; + + const parsedMembers = objectBody + .split(",") + .map((part) => part.trim()) + .filter(Boolean) + .map((part) => { + const keyValueMatch = part.match(/^([A-Za-z_$][\w$]*)\s*:\s*([\s\S]+)$/); + if (keyValueMatch) { + const key = keyValueMatch[1]; + const value = keyValueMatch[2].trim(); + return { + key, + type: inferDetailPropertyType(key, value), + optional: inferDetailPropertyOptional(key, value), + }; + } + + const shorthandMatch = part.match(/^([A-Za-z_$][\w$]*)$/); + if (shorthandMatch) { + const key = shorthandMatch[1]; + return { key, type: inferDetailPropertyType(key, key), optional: false }; + } + + return null; + }) + .filter((member): member is { key: string; type: string; optional: boolean } => + Boolean(member), + ); + + if (!parsedMembers.length) return "CustomEvent>"; + + // Cross-field heuristics for common patterns in component events. + const hasLabels = parsedMembers.some((m) => m.key.toLowerCase() === "labels"); + const hasValueStr = parsedMembers.some((m) => m.key.toLowerCase() === "valuestr"); + + const members = parsedMembers.map((member) => { + if (member.key.toLowerCase() === "value") { + if (hasLabels) { + return `${member.key}${member.optional ? "?" : ""}: string[]`; + } + if (hasValueStr) { + return `${member.key}${member.optional ? "?" : ""}: Date | string | null`; + } + } + return `${member.key}${member.optional ? "?" : ""}: ${member.type}`; + }); + + return `CustomEvent<{ ${members.join("; ")} }>`; +} + +function scoreCustomEventType(eventType: string): number { + if (eventType === "CustomEvent" || eventType === "CustomEvent>" || eventType === "CustomEvent") { + return 0; + } + + const detailMatch = eventType.match(/CustomEvent<\{([\s\S]*)\}>/); + if (!detailMatch?.[1]) return 0; + + const body = detailMatch[1]; + const keyCount = body.split(";").filter((part) => part.trim().length > 0).length; + const unknownCount = (body.match(/\bunknown\b/g) || []).length; + + return keyCount * 10 - unknownCount * 6; +} + +function splitTopLevelArgs(argsSource: string): string[] { + const parts: string[] = []; + let current = ""; + let parenDepth = 0; + let braceDepth = 0; + let bracketDepth = 0; + let inString = false; + let stringQuote = ""; + + for (let i = 0; i < argsSource.length; i++) { + const ch = argsSource[i]; + const prev = i > 0 ? argsSource[i - 1] : ""; + + if (inString) { + current += ch; + if (ch === stringQuote && prev !== "\\") { + inString = false; + stringQuote = ""; + } + continue; + } + + if (ch === '"' || ch === "'" || ch === "`") { + inString = true; + stringQuote = ch; + current += ch; + continue; + } + + if (ch === "(") parenDepth++; + else if (ch === ")") parenDepth--; + else if (ch === "{") braceDepth++; + else if (ch === "}") braceDepth--; + else if (ch === "[") bracketDepth++; + else if (ch === "]") bracketDepth--; + + if (ch === "," && parenDepth === 0 && braceDepth === 0 && bracketDepth === 0) { + parts.push(current.trim()); + current = ""; + continue; + } + + current += ch; + } + + if (current.trim().length > 0) { + parts.push(current.trim()); + } + + return parts; +} + +function getCustomEventType(eventName: string, content: string): string { + const escapedName = escapeRegExp(eventName); + const eventPattern = new RegExp( + `new\\s+CustomEvent\\s*\\(\\s*["']${escapedName}["']\\s*,\\s*\\{([\\s\\S]*?)\\}\\s*\\)`, + "g", + ); + + const dispatchCallStartPattern = /dispatch(?:<[^>]+>)?\s*\(/g; + + const detailLiterals: string[] = []; + + for (const match of content.matchAll(eventPattern)) { + const eventOptions = match[1]; + const detailMatch = eventOptions.match(/detail\s*:\s*(\{[\s\S]*?\})/); + if (detailMatch?.[1]) { + detailLiterals.push(detailMatch[1]); + } + } + + for (const match of content.matchAll(dispatchCallStartPattern)) { + const startIndex = match.index ?? -1; + if (startIndex < 0) continue; + + const openParenIndex = startIndex + match[0].length - 1; + let depth = 0; + let endIndex = -1; + + for (let i = openParenIndex; i < content.length; i++) { + const ch = content[i]; + if (ch === "(") depth++; + if (ch === ")") { + depth--; + if (depth === 0) { + endIndex = i; + break; + } + } + } + + if (endIndex === -1) continue; + + const callArgsSource = content.slice(openParenIndex + 1, endIndex); + const args = splitTopLevelArgs(callArgsSource); + if (args.length < 3) continue; + + const eventArg = args[1].trim(); + const eventMatch = eventArg.match(/^["']([^"']+)["']$/); + if (!eventMatch || eventMatch[1] !== eventName) continue; + + const detailLiteral = args[2].trim(); + if (detailLiteral.startsWith("{") && detailLiteral.endsWith("}")) { + detailLiterals.push(detailLiteral); + } + } + + let bestEventType = "CustomEvent>"; + let bestScore = -1; + + for (const literal of detailLiterals) { + const typed = buildCustomEventTypeFromDetail(literal); + const score = scoreCustomEventType(typed); + if (score > bestScore) { + bestScore = score; + bestEventType = typed; + } + } + + if (detailLiterals.length > 0) { + return bestEventType; + } + + return "CustomEvent"; +} + +function transformWebComponentEvents( + componentName: string, + rawEventNames: string[], + content: string, +): ExtractedEvent[] { + const internalOverrides = WEB_COMPONENT_INTERNAL_EVENT_OVERRIDES[componentName] || new Set(); + const typeOverrides = WEB_COMPONENT_EVENT_TYPE_OVERRIDES[componentName] || {}; + + return rawEventNames + .filter((rawName) => !INTERNAL_EVENT_NAMES.has(rawName) && !internalOverrides.has(rawName)) + .filter((rawName) => !rawName.includes("::") && !rawName.includes(":")) + .map((rawName) => ({ + name: rawName, + type: typeOverrides[rawName] || getCustomEventType(rawName, content), + description: "", + frameworks: ["webComponents"], + })); } // ============================================================================= @@ -611,30 +1907,88 @@ function parseDefaultValue(str: string | undefined): string | null { return str; } +function getAllComponentNames(): string[] { + const componentNames = new Set(); + const documentedComponentSlugs = new Set( + fs + .readdirSync(DOCS_COMPONENT_CONTENT_PATH, { withFileTypes: true }) + .filter((entry) => entry.isFile() && entry.name.endsWith(".mdx")) + .map((entry) => entry.name.replace(/\.mdx$/, "")), + ); + const stack = [UI_COMPONENTS_PATH]; + + while (stack.length > 0) { + const current = stack.pop(); + if (!current) continue; + + const entries = fs.readdirSync(current, { withFileTypes: true }); + for (const entry of entries) { + const fullPath = path.join(current, entry.name); + + if (entry.isDirectory()) { + stack.push(fullPath); + } else if ( + entry.isFile() && + entry.name.endsWith(".svelte") && + !entry.name.includes(".test.") + ) { + const content = fs.readFileSync(fullPath, "utf-8"); + const slug = toKebabCase(path.basename(entry.name, ".svelte")); + if ( + extractTagName(content) && + documentedComponentSlugs.has(slug) && + !DOCS_EXCLUDED_COMPONENTS.has(slug) + ) { + componentNames.add(slug); + } + } + } + } + + for (const forcedComponent of DOCS_FORCED_COMPONENTS) { + componentNames.add(forcedComponent); + } + + return Array.from(componentNames).sort((a, b) => a.localeCompare(b)); +} + +function removeStaleApiFiles(validComponentNames: string[]): void { + if (!fs.existsSync(OUTPUT_PATH)) return; + + const validFiles = new Set(validComponentNames.map((name) => `${name}.json`)); + const entries = fs.readdirSync(OUTPUT_PATH, { withFileTypes: true }); + + for (const entry of entries) { + if (entry.isFile() && entry.name.endsWith(".json") && !validFiles.has(entry.name)) { + fs.unlinkSync(path.join(OUTPUT_PATH, entry.name)); + console.log(` Removed stale file: ${entry.name}`); + } + } +} + // ============================================================================= // Main Extraction // ============================================================================= function extractComponentAPI(componentName: string): ExtractedComponentAPI | null { const componentPath = path.join(UI_COMPONENTS_PATH, componentName); - if (!fs.existsSync(componentPath) || !fs.statSync(componentPath).isDirectory()) { - console.error(`Component directory not found: ${componentName}`); - return null; - } - // Find the main Svelte file + // Find the Svelte file by the component's public name first, then fall back + // to any .svelte file inside a matching directory. const svelteFileName = `${capitalize(toCamelCase(componentName))}.svelte`; - let svelteFilePath = path.join(componentPath, svelteFileName); + let svelteFilePath = findFirstFileByName(UI_COMPONENTS_PATH, svelteFileName); - if (!fs.existsSync(svelteFilePath)) { - // Try to find any .svelte file + if (!svelteFilePath && fs.existsSync(componentPath) && fs.statSync(componentPath).isDirectory()) { const files = fs.readdirSync(componentPath); const svelteFile = files.find((f) => f.endsWith(".svelte")); - if (!svelteFile) { - console.error(`No Svelte file found in: ${componentName}`); - return null; + if (svelteFile) { + svelteFilePath = path.join(componentPath, svelteFile); } - svelteFilePath = path.join(componentPath, svelteFile); + } + + if (!svelteFilePath) { + console.error(`No Svelte file found for: ${componentName}`); + return null; } const content = fs.readFileSync(svelteFilePath, "utf-8"); @@ -650,11 +2004,49 @@ function extractComponentAPI(componentName: string): ExtractedComponentAPI | nul const typeAliases = extractTypeAliases(content); const validators = extractValidators(content); const rawProps = extractProps(content, validators, componentName, typeAliases); - const rawEventNames = extractEvents(content); + let eventContent = content; + let rawEventNames = extractEvents(content); + const explicitEventsByComponent: Record> = { + "file-upload-card": new Set(["_cancel", "_delete"]), + }; + const explicitEvents = explicitEventsByComponent[componentName]; + if (explicitEvents) { + rawEventNames = Array.from(new Set([...rawEventNames, ...explicitEvents])); + } + const companionEventsByComponent: Record> = { + "work-side-menu": new Set(["_navigate"]), + "push-drawer": new Set(["_close"]), + }; + const companionEvents = companionEventsByComponent[componentName]; + + if (companionEvents) { + const componentDir = path.dirname(svelteFilePath); + const siblingFiles = fs + .readdirSync(componentDir) + .filter((name) => name.endsWith(".svelte") && path.join(componentDir, name) !== svelteFilePath); + + for (const siblingFile of siblingFiles) { + const siblingPath = path.join(componentDir, siblingFile); + const siblingContent = fs.readFileSync(siblingPath, "utf-8"); + const siblingEventNames = extractEvents(siblingContent).filter((eventName) => companionEvents.has(eventName)); + if (siblingEventNames.length > 0) { + rawEventNames = [...rawEventNames, ...siblingEventNames]; + eventContent += `\n${siblingContent}`; + } + } + + rawEventNames = Array.from(new Set(rawEventNames)); + } const slotNames = extractSlots(content); + const wrapperComponentName = WRAPPER_COMPONENT_ALIASES[componentName] ?? componentName; + const reactWrapper = extractReactWrapperApi(componentName, tagName, slotNames, wrapperComponentName); + const angularWrapper = extractAngularWrapperApi(componentName, tagName, slotNames, wrapperComponentName); + + // Default slot content is implied by usage examples and is intentionally omitted + // from the API docs to reduce noise. // Transform to output format - const props: ExtractedProp[] = rawProps.map((p) => ({ + let webComponentProps: ExtractedProp[] = rawProps.map((p) => ({ name: p.name, type: p.type, typeLabel: p.typeLabel, @@ -665,12 +2057,90 @@ function extractComponentAPI(componentName: string): ExtractedComponentAPI | nul ...(p.deprecated && { deprecated: true }), })); - const events = transformEvents(rawEventNames); + let webComponentEvents = transformWebComponentEvents(componentName, rawEventNames, eventContent); + if (componentName === "side-menu-group") { + webComponentEvents = webComponentEvents.filter((event) => event.name !== "_open"); + } + const slotDescriptions = { + ...angularWrapper.slotDescriptions, + ...reactWrapper.slotDescriptions, + }; + const slotNameAliases = { + ...angularWrapper.slotNameAliases, + ...reactWrapper.slotNameAliases, + }; + const slotRequired = { + ...angularWrapper.slotRequired, + ...reactWrapper.slotRequired, + }; - const slots: ExtractedSlot[] = slotNames.map((name) => ({ - name, - description: "", // Filled by human content - })); + const hasWrapperSlotEvidence = (name: string): boolean => + Boolean(slotNameAliases[name] || slotDescriptions[name]) || + Object.prototype.hasOwnProperty.call(slotRequired, name); + + const createSlots = ( + framework: "react" | "angular" | "webComponents", + type?: string, + useAliasNames: boolean = true, + ): ExtractedSlot[] => + slotNames + .filter( + (name) => + !INTERNAL_SLOT_NAMES.has(name.toLowerCase()) && + !(name === "content" && !slotNameAliases[name] && !slotDescriptions[name]), + ) + .map((name) => { + const rawDescription = slotDescriptions[name] || ""; + const description = + framework === "angular" + ? rawDescription.replace(/ReactNode/g, "ngTemplate") + : rawDescription; + return { + name: useAliasNames ? slotNameAliases[name] || name : name, + type: + SLOT_TYPE_OVERRIDES[componentName]?.[framework]?.[name] || + (type && hasWrapperSlotEvidence(name) ? type : undefined), + description, + required: slotRequired[name] || false, + }; + }); + + const reactSlots = createSlots("react", "ReactNode", true); + const angularSlots = createSlots("angular", "TemplateRef", true); + const webComponentSlots = createSlots("webComponents", undefined, false); + + let reactProps: ExtractedProp[] = reactWrapper.found ? [...reactWrapper.props] : []; + let angularProps: ExtractedProp[] = angularWrapper.found ? [...angularWrapper.props] : []; + + specializeAngularValuePropFromReact(angularProps, reactProps); + + const webComponentVersionProp = webComponentProps.find( + (prop) => prop.name.toLowerCase() === "version", + ); + const hideVersionOutsideWeb = isStandardV1V2VersionProp(webComponentVersionProp); + + reactProps = reactProps.filter( + (prop) => + !shouldSkipInternalProp(componentName, prop.name) && + !(hideVersionOutsideWeb && prop.name.toLowerCase() === "version"), + ); + angularProps = angularProps.filter( + (prop) => + !shouldSkipInternalProp(componentName, prop.name) && + !(hideVersionOutsideWeb && prop.name.toLowerCase() === "version"), + ); + webComponentProps = webComponentProps.filter( + (prop) => prop.name.toLowerCase() === "version" || !shouldSkipInternalProp(componentName, prop.name), + ); + + reactProps = dedupeByName(reactProps).sort((a, b) => a.name.localeCompare(b.name)); + angularProps = dedupeByName(angularProps).sort((a, b) => a.name.localeCompare(b.name)); + + webComponentProps.sort((a, b) => a.name.localeCompare(b.name)); + webComponentEvents.sort((a, b) => a.name.localeCompare(b.name)); + reactSlots.sort((a, b) => a.name.localeCompare(b.name)); + angularSlots.sort((a, b) => a.name.localeCompare(b.name)); + webComponentSlots.sort((a, b) => a.name.localeCompare(b.name)); // Relative path from workspace root const relativePath = path.relative(WORKSPACE_ROOT, svelteFilePath); @@ -678,9 +2148,81 @@ function extractComponentAPI(componentName: string): ExtractedComponentAPI | nul return { componentSlug: toKebabCase(componentName), extractedFrom: relativePath, - props, - events, - slots, + frameworks: { + react: { + props: reactWrapper.found ? reactProps : [], + events: reactWrapper.found ? reactWrapper.events : [], + slots: reactWrapper.found ? reactSlots : [], + }, + angular: { + props: angularWrapper.found ? angularProps : [], + events: angularWrapper.found ? angularWrapper.events : [], + slots: angularWrapper.found ? angularSlots : [], + }, + webComponents: { + props: webComponentProps, + events: webComponentEvents, + slots: webComponentSlots, + }, + }, + }; +} + +function mergeItemArray( + next: T[], + existing: T[], + context: string, +): T[] { + const existingByName = new Map(existing.map((item) => [item.name, item])); + const nextNames = new Set(next.map((item) => item.name)); + + // Backfill non-empty descriptions from existing into new items that have empty ones + const merged: T[] = next.map((item) => { + const existingItem = existingByName.get(item.name); + if (existingItem && !item.description && existingItem.description) { + return { ...item, description: existingItem.description }; + } + return item; + }); + + // Preserve items from existing that are absent in the new extraction + for (const existingItem of existing) { + if (!nextNames.has(existingItem.name)) { + console.warn( + ` Preserved manually-added entry "${existingItem.name}" in ${context} (not found in extraction — check source)`, + ); + merged.push(existingItem); + } + } + + return merged.sort((a, b) => a.name.localeCompare(b.name)); +} + +function mergeWithExisting( + next: ExtractedComponentAPI, + existing: ExtractedComponentAPI, +): ExtractedComponentAPI { + const fw = next.frameworks; + const ex = existing.frameworks; + return { + ...next, + frameworks: { + react: { + props: mergeItemArray(fw.react.props, ex.react.props, `${next.componentSlug}.json [react props]`), + events: mergeItemArray(fw.react.events, ex.react.events, `${next.componentSlug}.json [react events]`), + slots: mergeItemArray(fw.react.slots, ex.react.slots, `${next.componentSlug}.json [react slots]`), + }, + angular: { + props: mergeItemArray(fw.angular.props, ex.angular.props, `${next.componentSlug}.json [angular props]`), + events: mergeItemArray(fw.angular.events, ex.angular.events, `${next.componentSlug}.json [angular events]`), + slots: mergeItemArray(fw.angular.slots, ex.angular.slots, `${next.componentSlug}.json [angular slots]`), + }, + webComponents: { + props: mergeItemArray(fw.webComponents.props, ex.webComponents.props, `${next.componentSlug}.json [webComponents props]`), + events: mergeItemArray(fw.webComponents.events, ex.webComponents.events, `${next.componentSlug}.json [webComponents events]`), + slots: mergeItemArray(fw.webComponents.slots, ex.webComponents.slots, `${next.componentSlug}.json [webComponents slots]`), + }, + }, }; } @@ -691,7 +2233,20 @@ function saveComponentAPI(api: ExtractedComponentAPI): void { } const filePath = path.join(OUTPUT_PATH, `${api.componentSlug}.json`); - fs.writeFileSync(filePath, JSON.stringify(api, null, 2)); + + // Merge with existing file to preserve manually-added entries that the extractor + // cannot see (e.g. props defined in function-level intersections, or wrapper gaps). + let merged = api; + if (fs.existsSync(filePath)) { + try { + const existing = JSON.parse(fs.readFileSync(filePath, "utf-8")) as ExtractedComponentAPI; + merged = mergeWithExisting(api, existing); + } catch { + // Malformed existing file — overwrite with fresh extraction + } + } + + fs.writeFileSync(filePath, JSON.stringify(merged, null, 2)); console.log(` Created: ${filePath}`); } @@ -715,11 +2270,8 @@ function main() { let componentNames: string[]; if (args.includes("--all")) { - // Get all component directories - componentNames = fs.readdirSync(UI_COMPONENTS_PATH).filter((name) => { - const componentPath = path.join(UI_COMPONENTS_PATH, name); - return fs.statSync(componentPath).isDirectory(); - }); + componentNames = getAllComponentNames(); + removeStaleApiFiles(componentNames); } else { componentNames = args; } diff --git a/libs/angular-components/src/lib/components/chip/chip.ts b/libs/angular-components/src/lib/components/chip/chip.ts index 615c0411a8..99f4d97070 100644 --- a/libs/angular-components/src/lib/components/chip/chip.ts +++ b/libs/angular-components/src/lib/components/chip/chip.ts @@ -56,17 +56,17 @@ export class GoabChip extends GoabBaseComponent implements OnInit { }, 0); } - /** @deprecated Use GoAFilterChip instead. Icon displayed at the start of the chip. */ + /** @deprecated Use GoabFilterChip (goab-filter-chip) instead. Icon displayed at the start of the chip. */ @Input() leadingIcon?: GoabIconType | null; - /** @deprecated Use GoAFilterChip instead. Shows an error state on the chip. */ + /** @deprecated Use GoabFilterChip (goab-filter-chip) instead. Shows an error state on the chip. */ @Input({ transform: booleanAttribute }) error?: boolean; - /** @deprecated Use GoAFilterChip instead. When true, shows a delete icon and makes chip clickable. */ + /** @deprecated Use GoabFilterChip (goab-filter-chip) instead. When true, shows a delete icon and makes chip clickable. */ @Input({ transform: booleanAttribute }) deletable?: boolean; - /** @deprecated Use GoAFilterChip instead. The text content displayed in the chip. */ + /** @deprecated Use GoabFilterChip (goab-filter-chip) instead. The text content displayed in the chip. */ @Input() content?: string = ""; - /** @deprecated Use GoAFilterChip instead. The chip variant style. */ + /** @deprecated Use GoabFilterChip (goab-filter-chip) instead. The chip variant style. */ @Input() variant?: GoabChipVariant; - /** @deprecated Use GoAFilterChip instead. The icon theme - outline or filled. */ + /** @deprecated Use GoabFilterChip (goab-filter-chip) instead. The icon theme - outline or filled. */ @Input() iconTheme?: GoabChipTheme; /** Emits when the chip is clicked. */ diff --git a/libs/angular-components/src/lib/components/dropdown/dropdown.ts b/libs/angular-components/src/lib/components/dropdown/dropdown.ts index 92f6a25625..3306dcc334 100644 --- a/libs/angular-components/src/lib/components/dropdown/dropdown.ts +++ b/libs/angular-components/src/lib/components/dropdown/dropdown.ts @@ -83,7 +83,7 @@ export class GoabDropdown extends GoabControlValueAccessor implements OnInit { @Input() leadingIcon?: GoabIconType; /** Maximum height of the dropdown menu. Non-native only. */ @Input() maxHeight?: string; - /** When true, allows multiple items to be selected. Not currently exposed. */ + /** When true, allows multiple items to be selected. @internal */ @Input({ transform: booleanAttribute }) multiselect?: boolean; /** When true will render the native select HTML element. */ @Input({ transform: booleanAttribute }) native?: boolean; diff --git a/libs/angular-components/src/lib/components/header-menu/header-menu.ts b/libs/angular-components/src/lib/components/header-menu/header-menu.ts index a89deb5324..d0e00a86db 100644 --- a/libs/angular-components/src/lib/components/header-menu/header-menu.ts +++ b/libs/angular-components/src/lib/components/header-menu/header-menu.ts @@ -9,8 +9,6 @@ import { inject, } from "@angular/core"; -import { GoabBaseComponent } from "../base.component"; - @Component({ standalone: true, selector: "goab-app-header-menu", @@ -26,13 +24,15 @@ import { GoabBaseComponent } from "../base.component"; schemas: [CUSTOM_ELEMENTS_SCHEMA], }) /** Menu items within the app header. */ -export class GoabAppHeaderMenu extends GoabBaseComponent implements OnInit { +export class GoabAppHeaderMenu implements OnInit { private cdr = inject(ChangeDetectorRef); /** Icon displayed before the heading text. */ @Input() leadingIcon?: GoabIconType; /** The menu heading text displayed as the dropdown trigger. */ @Input() heading?: string; + /** Sets a data-testid attribute for automated testing. */ + @Input() testId?: string; /** Sets the slot name for the component. */ @Input() slotName?: string; diff --git a/libs/angular-components/src/lib/components/header/header.ts b/libs/angular-components/src/lib/components/header/header.ts index a04e04b9d4..94f9bfae93 100644 --- a/libs/angular-components/src/lib/components/header/header.ts +++ b/libs/angular-components/src/lib/components/header/header.ts @@ -10,8 +10,6 @@ import { inject, } from "@angular/core"; -import { GoabBaseComponent } from "../base.component"; - @Component({ standalone: true, selector: "goab-app-header", @@ -33,7 +31,7 @@ import { GoabBaseComponent } from "../base.component"; schemas: [CUSTOM_ELEMENTS_SCHEMA], }) /** Provide structure to help users find their way around the service. */ -export class GoabAppHeader extends GoabBaseComponent implements OnInit { +export class GoabAppHeader implements OnInit { private cdr = inject(ChangeDetectorRef); /** Sets the URL to link from the alberta.ca logo. A full url is required. */ @@ -46,6 +44,8 @@ export class GoabAppHeader extends GoabBaseComponent implements OnInit { @Input() maxContentWidth?: string; /** Sets the breakpoint in px for the full menu to display. */ @Input({ transform: numberAttribute }) fullMenuBreakpoint?: number; + /** Sets a data-testid attribute for automated testing. */ + @Input() testId?: string; isReady = false; version = "2"; diff --git a/libs/angular-components/src/lib/components/hero-banner/hero-banner.ts b/libs/angular-components/src/lib/components/hero-banner/hero-banner.ts index c4d6dcb83f..92ce6d5abc 100644 --- a/libs/angular-components/src/lib/components/hero-banner/hero-banner.ts +++ b/libs/angular-components/src/lib/components/hero-banner/hero-banner.ts @@ -52,8 +52,8 @@ export class GoabHeroBanner implements OnInit { @Input() backgroundColor?: string; /** Text color within the hero banner. */ @Input() textColor?: string; - /** Angular template reference for the actions slot content. */ - @Input() actions!: TemplateRef; + /** Content rendered in the actions slot. */ + @Input() actions?: TemplateRef; ngOnInit(): void { setTimeout(() => { diff --git a/libs/angular-components/src/lib/components/microsite-header/microsite-header.ts b/libs/angular-components/src/lib/components/microsite-header/microsite-header.ts index ce0dbc6f73..5fe6393368 100644 --- a/libs/angular-components/src/lib/components/microsite-header/microsite-header.ts +++ b/libs/angular-components/src/lib/components/microsite-header/microsite-header.ts @@ -65,7 +65,7 @@ export class GoabMicrositeHeader implements OnInit { } /** Emits when the feedback link is clicked. */ - @Output() onFeedbackClick = new EventEmitter(); + @Output() onFeedbackClick = new EventEmitter(); getVersionAsString(): string { return typeof this.version === "string" ? this.version : ""; diff --git a/libs/angular-components/src/lib/components/modal/modal.ts b/libs/angular-components/src/lib/components/modal/modal.ts index 6b5906f782..5427304a68 100644 --- a/libs/angular-components/src/lib/components/modal/modal.ts +++ b/libs/angular-components/src/lib/components/modal/modal.ts @@ -91,7 +91,7 @@ export class GoabModal implements OnInit { @Input() actions!: TemplateRef; /** Emits when the modal is closed. */ - @Output() onClose = new EventEmitter(); + @Output() onClose = new EventEmitter(); getHeadingAsString(): string { return this.heading instanceof TemplateRef ? "" : this.heading; diff --git a/libs/angular-components/src/lib/components/push-drawer/push-drawer.ts b/libs/angular-components/src/lib/components/push-drawer/push-drawer.ts index 1adaeb09cf..65d255d803 100644 --- a/libs/angular-components/src/lib/components/push-drawer/push-drawer.ts +++ b/libs/angular-components/src/lib/components/push-drawer/push-drawer.ts @@ -55,7 +55,7 @@ export class GoabPushDrawer implements OnInit { /** Sets the template reference for the actions slot content. */ @Input() actions!: TemplateRef; /** Emits when the push drawer closes. */ - @Output() onClose = new EventEmitter(); + @Output() onClose = new EventEmitter(); isReady = false; diff --git a/libs/angular-components/src/lib/components/radio-group/radio-group.ts b/libs/angular-components/src/lib/components/radio-group/radio-group.ts index d22518a691..1d25bf8ab5 100644 --- a/libs/angular-components/src/lib/components/radio-group/radio-group.ts +++ b/libs/angular-components/src/lib/components/radio-group/radio-group.ts @@ -63,6 +63,8 @@ export class GoabRadioGroup extends GoabControlValueAccessor implements OnInit { version = "2"; /** The name for the radio group. Used for accessibility and change events. */ @Input() name?: string; + /** The currently selected value in the radio group. */ + @Input() override value?: string; /** Sets the layout direction. 'vertical' stacks items, 'horizontal' places them in a row. */ @Input() orientation?: GoabRadioGroupOrientation; /** Defines how the radio group will be announced by screen readers. */ diff --git a/libs/angular-components/src/lib/components/radio-item/radio-item.ts b/libs/angular-components/src/lib/components/radio-item/radio-item.ts index 1a88274803..cbccd7c354 100644 --- a/libs/angular-components/src/lib/components/radio-item/radio-item.ts +++ b/libs/angular-components/src/lib/components/radio-item/radio-item.ts @@ -69,7 +69,7 @@ export class GoabRadioItem extends GoabBaseComponent implements OnInit { @Input() revealAriaLabel?: string; /** Disables this radio option. Also disabled if the parent RadioGroup is disabled. */ @Input({ transform: booleanAttribute }) disabled?: boolean; - /** Sets this radio option as checked/selected. */ + /** @internal Sets this radio option as checked/selected. */ @Input({ transform: booleanAttribute }) checked?: boolean; /** Shows an error state on this radio option. */ @Input({ transform: booleanAttribute }) error?: boolean; diff --git a/libs/angular-components/src/lib/components/work-side-menu/work-side-menu.ts b/libs/angular-components/src/lib/components/work-side-menu/work-side-menu.ts index ac1bce228e..7218e747ea 100644 --- a/libs/angular-components/src/lib/components/work-side-menu/work-side-menu.ts +++ b/libs/angular-components/src/lib/components/work-side-menu/work-side-menu.ts @@ -64,7 +64,7 @@ export class GoabWorkSideMenu implements OnInit { /** Template reference for the account slot content. */ @Input() accountContent!: TemplateRef; /** Emits when the side menu is toggled open or closed. */ - @Output() onToggle = new EventEmitter(); + @Output() onToggle = new EventEmitter(); /** Emits when a navigation link is clicked. Emits the URL as a string. */ @Output() onNavigate = new EventEmitter(); diff --git a/libs/react-components/src/lib/chip/chip.tsx b/libs/react-components/src/lib/chip/chip.tsx index e02c58b08b..2ad7a678b7 100644 --- a/libs/react-components/src/lib/chip/chip.tsx +++ b/libs/react-components/src/lib/chip/chip.tsx @@ -30,19 +30,19 @@ declare module "react" { } export interface GoabChipProps extends Margins, DataAttributes { - /** @required @deprecated Use GoAFilterChip instead. The text content displayed in the chip. */ + /** @required @deprecated Use GoabFilterChip instead. The text content displayed in the chip. */ content: string; - /** @deprecated Use GoAFilterChip instead. When true, shows a delete icon and makes chip clickable. */ + /** @deprecated Use GoabFilterChip instead. When true, shows a delete icon and makes chip clickable. */ deletable?: boolean; - /** @deprecated Use GoAFilterChip instead. Icon displayed at the start of the chip. */ + /** @deprecated Use GoabFilterChip instead. Icon displayed at the start of the chip. */ leadingIcon?: string; - /** @deprecated Use GoAFilterChip instead. The icon theme - outline or filled. */ + /** @deprecated Use GoabFilterChip instead. The icon theme - outline or filled. */ iconTheme?: GoabChipTheme; - /** @deprecated Use GoAFilterChip instead. Shows an error state on the chip. */ + /** @deprecated Use GoabFilterChip instead. Shows an error state on the chip. */ error?: boolean; - /** @deprecated Use GoAFilterChip instead. The chip variant style. */ + /** @deprecated Use GoabFilterChip instead. The chip variant style. */ variant?: GoabChipVariant; - /** @deprecated Use GoAFilterChip instead. Sets a data-testid attribute for automated testing. */ + /** @deprecated Use GoabFilterChip instead. Sets a data-testid attribute for automated testing. */ testId?: string; /** Callback fired when the chip is clicked or deleted. */ onClick?: () => void; diff --git a/libs/react-components/src/lib/container/container.tsx b/libs/react-components/src/lib/container/container.tsx index f630646802..5645aff2d0 100644 --- a/libs/react-components/src/lib/container/container.tsx +++ b/libs/react-components/src/lib/container/container.tsx @@ -46,9 +46,9 @@ export interface GoabContainerProps extends Margins, DataAttributes { maxHeight?: string; /** Sets a data-testid attribute for automated testing. */ testId?: string; - /** Content rendered in the container's title/heading area. */ + /** @deprecated Use title instead. Alias for the title prop. */ heading?: ReactNode; - /** @deprecated Use heading instead. Alias for the heading prop. */ + /** Content rendered in the container's title/heading area. */ title?: ReactNode; /** Content rendered in the container's actions area, typically buttons or controls. */ actions?: ReactNode; diff --git a/libs/react-components/src/lib/dropdown/dropdown.tsx b/libs/react-components/src/lib/dropdown/dropdown.tsx index efe4819456..ced71d24a2 100644 --- a/libs/react-components/src/lib/dropdown/dropdown.tsx +++ b/libs/react-components/src/lib/dropdown/dropdown.tsx @@ -69,7 +69,7 @@ export interface GoabDropdownProps extends Margins, DataAttributes { leadingIcon?: GoabIconType; /** Maximum height of the dropdown menu. Non-native only. @default "276px" */ maxHeight?: string; - /** When true, allows multiple items to be selected. */ + /** When true, allows multiple items to be selected. @internal */ multiselect?: boolean; /** When true, renders the native select HTML element. */ native?: boolean; diff --git a/libs/react-components/src/lib/hero-banner/hero-banner.tsx b/libs/react-components/src/lib/hero-banner/hero-banner.tsx index ee721a39a1..3347746c72 100644 --- a/libs/react-components/src/lib/hero-banner/hero-banner.tsx +++ b/libs/react-components/src/lib/hero-banner/hero-banner.tsx @@ -29,6 +29,8 @@ export interface GoabHeroBannerProps { testId?: string; /** Content rendered inside the hero banner body. */ children?: React.ReactNode; + /** Content rendered in the actions slot. */ + actions?: React.ReactNode; /** Maximum width of the content area. @default "100%" */ maxContentWidth?: string; /** Hero Banner background color when no background image is provided. @default "#f8f8f8" */ @@ -46,6 +48,7 @@ export function GoabHeroBanner({ backgroundColor, textColor, children, + actions, testId, }: GoabHeroBannerProps): JSX.Element { return ( @@ -59,6 +62,7 @@ export function GoabHeroBanner({ testid={testId} > {children} + {actions &&
{actions}
} ); } diff --git a/libs/react-components/src/lib/input/input.tsx b/libs/react-components/src/lib/input/input.tsx index 7e508a7285..d134194289 100644 --- a/libs/react-components/src/lib/input/input.tsx +++ b/libs/react-components/src/lib/input/input.tsx @@ -179,7 +179,10 @@ export function GoabInput({ onBlur, onKeyPress, ...rest -}: GoabInputProps & { type?: GoabInputType }): JSX.Element { +}: GoabInputProps & { + /** Sets the type of the input field. @default "text" */ + type?: GoabInputType; +}): JSX.Element { const ref = useRef(null); const _props = transformProps( diff --git a/libs/react-components/src/lib/microsite-header/microsite-header.tsx b/libs/react-components/src/lib/microsite-header/microsite-header.tsx index 4132b6b9ce..106c6adfdf 100644 --- a/libs/react-components/src/lib/microsite-header/microsite-header.tsx +++ b/libs/react-components/src/lib/microsite-header/microsite-header.tsx @@ -26,7 +26,7 @@ interface WCProps { export interface GoabHeaderProps { /** @required The service type which determines the badge style. "live" shows official government site text, "alpha" and "beta" show development stage badges. */ type: GoabServiceLevel; - /** App or service version displayed on the right side of the header. Accepts a string or custom ReactNode for rich content. */ + /** App or service version displayed on the right side of the header. */ version?: string | React.ReactNode; /** URL to a feedback page displayed when provided. */ feedbackUrl?: string; diff --git a/libs/react-components/src/lib/radio-group/radio.tsx b/libs/react-components/src/lib/radio-group/radio.tsx index 9f100e6dc6..11b836f635 100644 --- a/libs/react-components/src/lib/radio-group/radio.tsx +++ b/libs/react-components/src/lib/radio-group/radio.tsx @@ -44,7 +44,7 @@ export interface GoabRadioItemProps extends Margins { maxWidth?: string; /** Disables this radio option. Also disabled if the parent RadioGroup is disabled. */ disabled?: boolean; - /** Sets this radio option as checked/selected. */ + /** @internal Sets this radio option as checked/selected. */ checked?: boolean; /** Shows an error state on this radio option. */ error?: boolean; diff --git a/libs/react-components/src/lib/tab/tab.tsx b/libs/react-components/src/lib/tab/tab.tsx index 919289ed83..0064fb1643 100644 --- a/libs/react-components/src/lib/tab/tab.tsx +++ b/libs/react-components/src/lib/tab/tab.tsx @@ -1,7 +1,7 @@ import type { JSX } from "react"; interface WCProps { - heading?: React.ReactNode; + heading?: string | React.ReactNode; disabled?: string; slug?: string; } @@ -17,7 +17,7 @@ declare module "react" { export interface GoabTabItemProps { /** The text label for this tab. Can also pass React nodes for custom heading content. */ - heading?: React.ReactNode; + heading?: string | React.ReactNode; /** When true, disables the tab so it cannot be selected. */ disabled?: boolean; /** Content rendered inside the tab panel. */ diff --git a/libs/react-components/src/lib/table/table.tsx b/libs/react-components/src/lib/table/table.tsx index c07dc6bc17..b654243402 100644 --- a/libs/react-components/src/lib/table/table.tsx +++ b/libs/react-components/src/lib/table/table.tsx @@ -10,7 +10,6 @@ import { ReactNode, useEffect, useRef } from "react"; interface WCProps extends Margins { ref?: React.RefObject; width?: string; - stickyheader?: string; variant?: GoabTableVariant; "sort-mode"?: GoabTableSortMode; testid?: string; @@ -37,7 +36,7 @@ export interface GoabTableProps extends Margins { onMultiSort?: (detail: GoabTableOnMultiSortDetail) => void; /** Sort mode: "single" allows one column, "multi" allows up to 2 columns. @default "single" */ sortMode?: GoabTableSortMode; - // stickyHeader?: boolean; TODO: enable this later + // stickyHeader intentionally not exposed in wrapper yet. /** A relaxed variant of the table with more vertical padding for the cells. @default "normal" */ variant?: GoabTableVariant; /** When true, alternates row background colors for improved readability. */ diff --git a/libs/react-components/src/lib/tooltip/tooltip.tsx b/libs/react-components/src/lib/tooltip/tooltip.tsx index 2d41aa1389..5e984d4f7e 100644 --- a/libs/react-components/src/lib/tooltip/tooltip.tsx +++ b/libs/react-components/src/lib/tooltip/tooltip.tsx @@ -29,7 +29,7 @@ declare module "react" { export interface GoabTooltipProps extends Margins, DataAttributes { /** Position of the tooltip with respect to the child element. @default "top" */ position?: GoabTooltipPosition; - /** The content of the tooltip. Accepts a string or a ReactNode. */ + /** The content of the tooltip. Accepts plain text or rich content. */ content?: string | ReactNode; /** Horizontal alignment of the tooltip relative to the child element. @default "center" */ hAlign?: GoabTooltipHorizontalAlignment; diff --git a/libs/web-components/src/components/app-header-menu/AppHeaderMenu.svelte b/libs/web-components/src/components/app-header-menu/AppHeaderMenu.svelte index 7d70ec4d99..d627673767 100644 --- a/libs/web-components/src/components/app-header-menu/AppHeaderMenu.svelte +++ b/libs/web-components/src/components/app-header-menu/AppHeaderMenu.svelte @@ -26,7 +26,7 @@ export let leadingicon: GoAIconType; /** The menu style variant. Primary uses bold text, secondary uses regular weight. */ export let type: "primary" | "secondary" = "primary"; - /** The header version this menu is used with. */ + /** @internal Design system version for styling. */ export let version: "1" | "2" = "1"; /** Sets a data-testid attribute for automated testing. */ export let testid: string = "rootEl"; diff --git a/libs/web-components/src/components/app-header-navigation/AppHeaderNavigation.svelte b/libs/web-components/src/components/app-header-navigation/AppHeaderNavigation.svelte index 64d206d849..04a264246d 100644 --- a/libs/web-components/src/components/app-header-navigation/AppHeaderNavigation.svelte +++ b/libs/web-components/src/components/app-header-navigation/AppHeaderNavigation.svelte @@ -5,6 +5,7 @@ import { isUrlMatch, getMatchedLink } from '../../common/urls'; // Props + /** @internal Design system version for styling. */ export let version: "1" | "2" = "1"; export let windowWidth: number; export let mobile: boolean = false; diff --git a/libs/web-components/src/components/app-header/AppHeader.svelte b/libs/web-components/src/components/app-header/AppHeader.svelte index 814f76a4ae..7e0efc39f5 100644 --- a/libs/web-components/src/components/app-header/AppHeader.svelte +++ b/libs/web-components/src/components/app-header/AppHeader.svelte @@ -13,6 +13,7 @@ // Version control const [Version, validateVersion] = typeValidator("Version", ["1", "2"]); type VersionType = "1" | "2"; + /** @internal Design system version for styling. */ export let version: VersionType = "1"; // optional diff --git a/libs/web-components/src/components/chip/Chip.svelte b/libs/web-components/src/components/chip/Chip.svelte index 5d8cb4a69f..24e1412262 100644 --- a/libs/web-components/src/components/chip/Chip.svelte +++ b/libs/web-components/src/components/chip/Chip.svelte @@ -19,19 +19,19 @@ /** Left margin. */ export let ml: Spacing = null; - /** @deprecated Use GoAFilterChip instead. Icon displayed at the start of the chip. */ + /** @deprecated Use the Filter Chip component instead. Icon displayed at the start of the chip. */ export let leadingicon: GoAIconType | null = null; - /** @deprecated Use GoAFilterChip instead. The icon theme - outline or filled. */ + /** @deprecated Use the Filter Chip component instead. The icon theme - outline or filled. */ export let icontheme: IconTheme = "outline"; - /** @deprecated Use GoAFilterChip instead. Shows an error state on the chip. */ + /** @deprecated Use the Filter Chip component instead. Shows an error state on the chip. */ export let error: string = "false"; - /** @deprecated Use GoAFilterChip instead. When true, shows a delete icon and makes chip clickable. */ + /** @deprecated Use the Filter Chip component instead. When true, shows a delete icon and makes chip clickable. */ export let deletable: string = "false"; - /** @deprecated Use GoAFilterChip instead. The text content displayed in the chip. */ + /** @deprecated Use the Filter Chip component instead. The text content displayed in the chip. */ export let content: string; - /** @deprecated Use GoAFilterChip instead. The chip variant style. */ + /** @deprecated Use the Filter Chip component instead. The chip variant style. */ export let variant: ChipVariant; - /** @deprecated Use GoAFilterChip instead. Sets a data-testid attribute for automated testing. */ + /** @deprecated Use the Filter Chip component instead. Sets a data-testid attribute for automated testing. */ export let testid: string = ""; let el: HTMLElement; @@ -45,7 +45,7 @@ $: _deletable = toBoolean(deletable); onMount(async () => { - console.warn("GoAChip is deprecated. Instead use GoAFilterChip."); + console.warn("GoAChip is deprecated. Use the Filter Chip component instead."); }); function onDelete(e: Event) { diff --git a/libs/web-components/src/components/drawer/Drawer.svelte b/libs/web-components/src/components/drawer/Drawer.svelte index 49efe89f8d..7fdbeb1041 100644 --- a/libs/web-components/src/components/drawer/Drawer.svelte +++ b/libs/web-components/src/components/drawer/Drawer.svelte @@ -38,6 +38,7 @@ // version type VersionType = "1" | "2"; const [Version, validateVersion] = typeValidator("Version", ["1", "2"]); + /** @internal Design system version for styling. */ export let version: VersionType = "1"; // ******* diff --git a/libs/web-components/src/components/file-upload-card/FileUploadCard.svelte b/libs/web-components/src/components/file-upload-card/FileUploadCard.svelte index 0d56fa8d83..df47efb180 100644 --- a/libs/web-components/src/components/file-upload-card/FileUploadCard.svelte +++ b/libs/web-components/src/components/file-upload-card/FileUploadCard.svelte @@ -17,6 +17,7 @@ export let error: string = ""; /** Sets a data-testid attribute for automated testing. */ export let testid: string = ""; + /** @internal Design system version for styling. */ export let version: "1" | "2" = "1"; // Private diff --git a/libs/web-components/src/components/file-upload-input/FileUploadInput.svelte b/libs/web-components/src/components/file-upload-input/FileUploadInput.svelte index c101495636..91e417d1b5 100644 --- a/libs/web-components/src/components/file-upload-input/FileUploadInput.svelte +++ b/libs/web-components/src/components/file-upload-input/FileUploadInput.svelte @@ -20,6 +20,7 @@ export let maxfilesize: string = "5MB"; /** Sets a data-testid attribute for automated testing. */ export let testid: string = ""; + /** @internal Design system version for styling. */ export let version: "1" | "2" = "1"; // Private diff --git a/libs/web-components/src/components/footer/Footer.svelte b/libs/web-components/src/components/footer/Footer.svelte index bb44bee772..c8c96762f4 100644 --- a/libs/web-components/src/components/footer/Footer.svelte +++ b/libs/web-components/src/components/footer/Footer.svelte @@ -10,6 +10,7 @@ export let testid: string = ""; /** URL for the Government of Alberta logo link. Set to empty string to disable the link. */ export let url: string = "https://alberta.ca"; + /** @internal Design system version for styling. */ export let version: "1" | "2" = "1"; let rootEl: HTMLElement; diff --git a/libs/web-components/src/components/menu-button/MenuButton.svelte b/libs/web-components/src/components/menu-button/MenuButton.svelte index 9af6007abb..e77f2634f1 100644 --- a/libs/web-components/src/components/menu-button/MenuButton.svelte +++ b/libs/web-components/src/components/menu-button/MenuButton.svelte @@ -139,7 +139,7 @@ } function onAction(action: MenuActionProps) { - dispatch(_rootEl, "_action", action, { bubbles: true }); + dispatch(_rootEl, "_action", { action: action.action, size: action.size }, { bubbles: true }); close(); _buttonIndex = 0; } diff --git a/libs/web-components/src/components/popover/Popover.svelte b/libs/web-components/src/components/popover/Popover.svelte index 0b9fa6d436..d7a9000d84 100644 --- a/libs/web-components/src/components/popover/Popover.svelte +++ b/libs/web-components/src/components/popover/Popover.svelte @@ -54,13 +54,13 @@ /** Disables the popover interaction. Used by parent components like Dropdown. */ export let disabled: string = "false"; /** Additional vertical offset added to the popover's position. */ - export let voffset = ""; + export let voffset: string = ""; /** Additional horizontal offset added to the popover's position. */ - export let hoffset = ""; + export let hoffset: string = ""; /** Width of the focus outline border. */ - export let focusborderwidth = "var(--goa-border-width-l)"; + export let focusborderwidth: string = "var(--goa-border-width-l)"; /** Border radius of the popover window. */ - export let borderradius = "var(--goa-border-radius-m)"; + export let borderradius: string = "var(--goa-border-radius-m)"; /** Indicates the popover is used within a filterable context like a combobox. */ export let filterablecontext: string = "false"; @@ -404,7 +404,7 @@ class:use-anchor-based-positioning={!_needsManualPositioning} class:align-right={_alignment === "right"} style={styles( - style("width", position !== "right" ? width : undefined), + position !== "right" && style("width", width), style("min-width", minwidth), style( "max-width", diff --git a/libs/web-components/src/components/push-drawer/PushDrawerInternal.svelte b/libs/web-components/src/components/push-drawer/PushDrawerInternal.svelte index 5efc55ea69..192bfa1e9e 100644 --- a/libs/web-components/src/components/push-drawer/PushDrawerInternal.svelte +++ b/libs/web-components/src/components/push-drawer/PushDrawerInternal.svelte @@ -24,6 +24,7 @@ export let open: boolean = false; export let heading: string = ""; export let width: string = "492px"; + /** @internal Design system version for styling. */ export let version: VersionType = "1"; let _contentEl: HTMLElement | null = null; diff --git a/libs/web-components/src/components/radio-item/RadioItem.svelte b/libs/web-components/src/components/radio-item/RadioItem.svelte index bbf00546a5..678d8705a2 100644 --- a/libs/web-components/src/components/radio-item/RadioItem.svelte +++ b/libs/web-components/src/components/radio-item/RadioItem.svelte @@ -66,7 +66,7 @@ export let disabled: string = "false"; /** Shows an error state on this radio option. */ export let error: string = "false"; - /** Sets this radio option as checked/selected. */ + /** @internal Sets this radio option as checked/selected. */ export let checked: string = "false"; /** Defines how this option will be announced by screen readers. */ export let arialabel: string = ""; @@ -209,7 +209,7 @@ checked = fromBoolean(data.checked); description = data.description; name = data.name; - revealarialabel = data.revealAriaLabel; + revealarialabel = data.revealAriaLabel || ""; _version = data.version || "1"; _compact = data.compact || false; }); diff --git a/libs/web-components/src/components/side-menu-group/SideMenuGroup.svelte b/libs/web-components/src/components/side-menu-group/SideMenuGroup.svelte index ef495212c3..7002ab82d5 100644 --- a/libs/web-components/src/components/side-menu-group/SideMenuGroup.svelte +++ b/libs/web-components/src/components/side-menu-group/SideMenuGroup.svelte @@ -138,7 +138,7 @@ ${calculateMargin(mt, mr, mb, ml)}; `} > -
+ {#if icon}
{#if version === "2"} diff --git a/libs/web-components/src/components/table/Table.svelte b/libs/web-components/src/components/table/Table.svelte index e9e0e714aa..c185459427 100644 --- a/libs/web-components/src/components/table/Table.svelte +++ b/libs/web-components/src/components/table/Table.svelte @@ -42,7 +42,7 @@ /** Width of the table. By default it will fit the enclosed content. */ export let width: string = ""; - /** When true, the table header sticks to the top when scrolling. */ + /** @internal When true, the table header sticks to the top when scrolling. */ export let stickyheader: string = "false"; /** When true, alternates row background colors for improved readability. */ export let striped: string = "false"; diff --git a/libs/web-components/src/components/tabs/Tabs.svelte b/libs/web-components/src/components/tabs/Tabs.svelte index 470cece631..6dba4e53d6 100644 --- a/libs/web-components/src/components/tabs/Tabs.svelte +++ b/libs/web-components/src/components/tabs/Tabs.svelte @@ -342,8 +342,7 @@ let currentLocation = ""; // send message to each tab to set visibility within - // @ts-expect-error - [..._tabsEl.querySelectorAll("[role=tab]")].map((el, index) => { + [..._tabsEl.querySelectorAll("[role=tab]")].map((el, index) => { const isCurrent = index + 1 === +_currentTab; // currentTab is 1-based el.setAttribute("aria-selected", fromBoolean(isCurrent)); diff --git a/libs/web-components/src/components/text-area/TextArea.svelte b/libs/web-components/src/components/text-area/TextArea.svelte index 849e34c273..bad5bc8c82 100644 --- a/libs/web-components/src/components/text-area/TextArea.svelte +++ b/libs/web-components/src/components/text-area/TextArea.svelte @@ -59,6 +59,7 @@ // version type VersionType = "1" | "2"; const [Version, validateVersion] = typeValidator("Version", ["1", "2"]); + /** @internal Design system version for styling. */ export let version: VersionType = "1"; // size diff --git a/libs/web-components/src/components/tooltip/Tooltip.svelte b/libs/web-components/src/components/tooltip/Tooltip.svelte index 6046218d5f..0faff1a89b 100644 --- a/libs/web-components/src/components/tooltip/Tooltip.svelte +++ b/libs/web-components/src/components/tooltip/Tooltip.svelte @@ -9,7 +9,7 @@ // Public /** The content of the tooltip. */ - export let content = ""; + export let content: string = ""; /** Sets a data-testid attribute for automated testing. */ export let testid: string = ""; /** Position with respect to the child element. */ @@ -80,8 +80,8 @@ let _tooltipEl: HTMLElement; let _initialPosition: Position; let _tooltipVisible = false; - let _showTooltipTimeout: string | number | NodeJS.Timeout | undefined; - let _hideTooltipTimeout: string | number | NodeJS.Timeout | undefined; + let _showTooltipTimeout: ReturnType | undefined; + let _hideTooltipTimeout: ReturnType | undefined; // Use a unique id for each tooltip instance. // So screen readers can identify the tooltip instance when diff --git a/libs/web-components/src/components/work-side-menu/WorkSideMenu.svelte b/libs/web-components/src/components/work-side-menu/WorkSideMenu.svelte index 4aabdd4c56..1961fc500e 100644 --- a/libs/web-components/src/components/work-side-menu/WorkSideMenu.svelte +++ b/libs/web-components/src/components/work-side-menu/WorkSideMenu.svelte @@ -32,7 +32,7 @@ // optional /** Controls whether the side menu is expanded or collapsed. */ - export let open = false; + export let open: boolean = false; /** Sets a data-testid attribute for automated testing. */ export let testid: string = ""; /** User's name displayed in the profile section. */ @@ -55,10 +55,10 @@ let _menuEl: HTMLElement; let _menuLinks: HTMLElement[] = []; - let _containerEl: HTMLElement; + let _containerEl: HTMLElement | undefined; let _rootEl: HTMLElement; let _scrollEl: HTMLElement; - let _toggleButtonEl: HTMLElement; + let _toggleButtonEl: HTMLElement | undefined; let _tooltipEl: HTMLElement; let _tooltipLabel: string = ""; @@ -198,6 +198,7 @@ } function setTooltipPos(label: string, el: HTMLElement) { + if (!_containerEl || !_tooltipEl) return; const rect = el?.getBoundingClientRect(); const containerRect = _containerEl.getBoundingClientRect(); const top = rect.top - containerRect.top + rect.height / 2; @@ -218,7 +219,7 @@ } function handleToggleHover() { - if (open) return; + if (open || !_toggleButtonEl) return; setTooltipPos("Expand menu", _toggleButtonEl); showTooltip(); From 274da4527b5c88342ca61f94f73afad26c9b1035 Mon Sep 17 00:00:00 2001 From: Thomas Jeffery Date: Mon, 4 May 2026 15:16:35 -0600 Subject: [PATCH 04/16] chore(#3903): drop unused frontmatter fields from component and example schemas --- docs/ARCHITECTURE.md | 6 ------ docs/src/components/ComponentsGrid.tsx | 3 --- docs/src/content/components/accordion.mdx | 4 ---- docs/src/content/components/app-header-menu.mdx | 3 --- docs/src/content/components/app-header.mdx | 4 ---- docs/src/content/components/badge.mdx | 4 ---- docs/src/content/components/block.mdx | 4 ---- docs/src/content/components/button-group.mdx | 4 ---- docs/src/content/components/button.mdx | 4 ---- docs/src/content/components/calendar.mdx | 3 --- docs/src/content/components/callout.mdx | 4 ---- docs/src/content/components/checkbox-list.mdx | 3 --- docs/src/content/components/checkbox.mdx | 4 ---- docs/src/content/components/chip.mdx | 3 --- docs/src/content/components/circular-progress.mdx | 4 ---- docs/src/content/components/container.mdx | 4 ---- docs/src/content/components/data-grid.mdx | 3 --- docs/src/content/components/date-picker.mdx | 4 ---- docs/src/content/components/details.mdx | 4 ---- docs/src/content/components/divider.mdx | 4 ---- docs/src/content/components/drawer.mdx | 4 ---- docs/src/content/components/dropdown.mdx | 4 ---- docs/src/content/components/file-upload-card.mdx | 3 --- docs/src/content/components/file-upload-input.mdx | 4 ---- docs/src/content/components/filter-chip.mdx | 4 ---- docs/src/content/components/focus-trap.mdx | 3 --- docs/src/content/components/footer-meta-section.mdx | 3 --- docs/src/content/components/footer-nav-section.mdx | 3 --- docs/src/content/components/footer.mdx | 4 ---- docs/src/content/components/form-item.mdx | 4 ---- docs/src/content/components/form-step.mdx | 3 --- docs/src/content/components/form-stepper.mdx | 4 ---- docs/src/content/components/form.mdx | 3 --- docs/src/content/components/grid.mdx | 4 ---- docs/src/content/components/hero-banner.mdx | 4 ---- docs/src/content/components/icon-button.mdx | 4 ---- docs/src/content/components/icon.mdx | 4 ---- docs/src/content/components/input.mdx | 4 ---- docs/src/content/components/linear-progress.mdx | 4 ---- docs/src/content/components/link-button.mdx | 3 --- docs/src/content/components/link.mdx | 4 ---- docs/src/content/components/menu-action.mdx | 1 - docs/src/content/components/menu-button.mdx | 4 ---- docs/src/content/components/microsite-header.mdx | 4 ---- docs/src/content/components/modal.mdx | 4 ---- docs/src/content/components/notification.mdx | 4 ---- docs/src/content/components/page-block.mdx | 3 --- docs/src/content/components/pages.mdx | 3 --- docs/src/content/components/pagination.mdx | 4 ---- docs/src/content/components/popover.mdx | 4 ---- docs/src/content/components/push-drawer.mdx | 4 ---- docs/src/content/components/radio-group.mdx | 4 ---- docs/src/content/components/radio-item.mdx | 3 --- docs/src/content/components/scrollable.mdx | 3 --- docs/src/content/components/side-menu-group.mdx | 3 --- docs/src/content/components/side-menu-heading.mdx | 3 --- docs/src/content/components/side-menu.mdx | 4 ---- docs/src/content/components/skeleton.mdx | 4 ---- docs/src/content/components/spacer.mdx | 4 ---- docs/src/content/components/spinner.mdx | 3 --- docs/src/content/components/tab.mdx | 3 --- docs/src/content/components/table.mdx | 4 ---- docs/src/content/components/tabs.mdx | 4 ---- docs/src/content/components/temporary-notification.mdx | 4 ---- docs/src/content/components/text-area.mdx | 4 ---- docs/src/content/components/text.mdx | 4 ---- docs/src/content/components/tooltip.mdx | 4 ---- docs/src/content/components/work-side-menu-group.mdx | 1 - docs/src/content/components/work-side-menu-item.mdx | 1 - docs/src/content/components/work-side-menu.mdx | 3 --- docs/src/content/config.ts | 9 --------- 71 files changed, 260 deletions(-) diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index 34768508c7..57d9c920d4 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -88,10 +88,6 @@ category: inputs-and-actions # determines nav section tags: [action, submit] relatedComponents: [button-group, icon-button] figmaUrl: https://www.figma.com/... -githubUrl: https://github.com/... -webComponentTag: goa-button -reactClassName: GoabButton -angularSelector: goab-button hidden: true # optional — hide from nav (used for subcomponents, deprecated, internal) subcomponent: true # optional — show API on parent component page --- @@ -268,7 +264,6 @@ status: stable category: structure-and-navigation relatedComponents: - tab # <-- this is how the parent discovers the subcomponent -webComponentTag: goa-tabs --- ``` @@ -284,7 +279,6 @@ hidden: true # not shown in nav subcomponent: true # API appears on parent page relatedComponents: - tabs -webComponentTag: goa-tab --- ``` diff --git a/docs/src/components/ComponentsGrid.tsx b/docs/src/components/ComponentsGrid.tsx index cdf07f2a7b..fba586356a 100644 --- a/docs/src/components/ComponentsGrid.tsx +++ b/docs/src/components/ComponentsGrid.tsx @@ -49,9 +49,6 @@ export interface Component { | "utilities"; tags?: string[]; relatedComponents?: string[]; - webComponentTag?: string; - reactClassName?: string; - angularSelector?: string; }; } diff --git a/docs/src/content/components/accordion.mdx b/docs/src/content/components/accordion.mdx index 0351f61b3d..b3304de052 100644 --- a/docs/src/content/components/accordion.mdx +++ b/docs/src/content/components/accordion.mdx @@ -12,8 +12,4 @@ tags: relatedComponents: - details figmaUrl: https://www.figma.com/design/Jpy1Ea5qglwnp1SgGnagY9/Component-library?node-id=15932-570754 -githubUrl: https://github.com/GovAlta/ui-components/issues?q=is%3Aopen%20label%3AAccordion -webComponentTag: goa-accordion -reactClassName: GoabAccordion -angularSelector: goab-accordion --- diff --git a/docs/src/content/components/app-header-menu.mdx b/docs/src/content/components/app-header-menu.mdx index abec9f7d42..98bd94b8b0 100644 --- a/docs/src/content/components/app-header-menu.mdx +++ b/docs/src/content/components/app-header-menu.mdx @@ -7,7 +7,4 @@ hidden: true subcomponent: true relatedComponents: - app-header -webComponentTag: goa-app-header-menu -reactClassName: GoabAppHeaderMenu -angularSelector: goab-app-header-menu --- diff --git a/docs/src/content/components/app-header.mdx b/docs/src/content/components/app-header.mdx index 0109bf8dee..b0ebd10e03 100644 --- a/docs/src/content/components/app-header.mdx +++ b/docs/src/content/components/app-header.mdx @@ -19,8 +19,4 @@ relatedComponents: - app-header-menu - microsite-header figmaUrl: https://www.figma.com/design/Jpy1Ea5qglwnp1SgGnagY9/Component-library?node-id=58757-186832 -githubUrl: https://github.com/GovAlta/ui-components/labels/Header -webComponentTag: goa-app-header -reactClassName: GoabAppHeader -angularSelector: goab-app-header --- diff --git a/docs/src/content/components/badge.mdx b/docs/src/content/components/badge.mdx index 2e619e2a00..4630cbff6f 100644 --- a/docs/src/content/components/badge.mdx +++ b/docs/src/content/components/badge.mdx @@ -14,8 +14,4 @@ relatedComponents: - chip - callout figmaUrl: https://www.figma.com/design/Jpy1Ea5qglwnp1SgGnagY9/Component-library?node-id=56969-153280 -githubUrl: https://github.com/GovAlta/ui-components/issues?q=is%3Aissue+is%3Aopen+label%3A%22Badge%22 -webComponentTag: goa-badge -reactClassName: GoabBadge -angularSelector: goab-badge --- diff --git a/docs/src/content/components/block.mdx b/docs/src/content/components/block.mdx index 1a635da418..b9ab0037ca 100644 --- a/docs/src/content/components/block.mdx +++ b/docs/src/content/components/block.mdx @@ -8,8 +8,4 @@ tags: relatedComponents: - container - page-block -githubUrl: https://github.com/GovAlta/ui-components/labels/Block -webComponentTag: goa-block -reactClassName: GoabBlock -angularSelector: goab-block --- diff --git a/docs/src/content/components/button-group.mdx b/docs/src/content/components/button-group.mdx index cb45649e6d..07286f64cb 100644 --- a/docs/src/content/components/button-group.mdx +++ b/docs/src/content/components/button-group.mdx @@ -10,8 +10,4 @@ tags: relatedComponents: - button figmaUrl: https://www.figma.com/design/Jpy1Ea5qglwnp1SgGnagY9/Component-library?node-id=13541-388737 -githubUrl: https://github.com/GovAlta/ui-components/issues?q=is%3Aissue+is%3Aopen+label%3A%22Button%20group%22 -webComponentTag: goa-button-group -reactClassName: GoabButtonGroup -angularSelector: goab-button-group --- diff --git a/docs/src/content/components/button.mdx b/docs/src/content/components/button.mdx index a64f856638..b0e137d6b7 100644 --- a/docs/src/content/components/button.mdx +++ b/docs/src/content/components/button.mdx @@ -11,8 +11,4 @@ relatedComponents: - button-group - icon-button figmaUrl: https://www.figma.com/design/Jpy1Ea5qglwnp1SgGnagY9/Component-library?node-id=57138-300030 -githubUrl: https://github.com/GovAlta/ui-components/issues?q=is%3Aissue+is%3Aopen+label%3AButton -webComponentTag: goa-button -reactClassName: GoabButton -angularSelector: goab-button --- diff --git a/docs/src/content/components/calendar.mdx b/docs/src/content/components/calendar.mdx index c36584a559..b0698b8418 100644 --- a/docs/src/content/components/calendar.mdx +++ b/docs/src/content/components/calendar.mdx @@ -6,7 +6,4 @@ category: utilities hidden: true relatedComponents: - date-picker -webComponentTag: goa-calendar -reactClassName: GoabCalendar -angularSelector: goab-calendar --- diff --git a/docs/src/content/components/callout.mdx b/docs/src/content/components/callout.mdx index 3240a5afb0..c7a04e350e 100644 --- a/docs/src/content/components/callout.mdx +++ b/docs/src/content/components/callout.mdx @@ -11,8 +11,4 @@ relatedComponents: - notification - badge figmaUrl: https://www.figma.com/design/Jpy1Ea5qglwnp1SgGnagY9/Component-library?node-id=56969-453927 -githubUrl: https://github.com/GovAlta/ui-components/labels/Callout -webComponentTag: goa-callout -reactClassName: GoabCallout -angularSelector: goab-callout --- diff --git a/docs/src/content/components/checkbox-list.mdx b/docs/src/content/components/checkbox-list.mdx index 37ff245708..5496d38f5b 100644 --- a/docs/src/content/components/checkbox-list.mdx +++ b/docs/src/content/components/checkbox-list.mdx @@ -11,7 +11,4 @@ relatedComponents: - checkbox - form-item figmaUrl: https://www.figma.com/design/Jpy1Ea5qglwnp1SgGnagY9/Component-library?node-id=56969-469340 -webComponentTag: goa-checkbox-list -reactClassName: GoabCheckboxList -angularSelector: goab-checkbox-list --- diff --git a/docs/src/content/components/checkbox.mdx b/docs/src/content/components/checkbox.mdx index 575b1484bf..7d5e0aef4d 100644 --- a/docs/src/content/components/checkbox.mdx +++ b/docs/src/content/components/checkbox.mdx @@ -13,8 +13,4 @@ relatedComponents: - form-item - radio-group figmaUrl: https://www.figma.com/design/Jpy1Ea5qglwnp1SgGnagY9/Component-library?node-id=56969-469737 -githubUrl: https://github.com/GovAlta/ui-components/labels/Checkbox -webComponentTag: goa-checkbox -reactClassName: GoabCheckbox -angularSelector: goab-checkbox --- diff --git a/docs/src/content/components/chip.mdx b/docs/src/content/components/chip.mdx index 51792fea09..89c0ab3c46 100644 --- a/docs/src/content/components/chip.mdx +++ b/docs/src/content/components/chip.mdx @@ -7,7 +7,4 @@ hidden: true relatedComponents: - filter-chip - badge -webComponentTag: goa-chip -reactClassName: GoabChip -angularSelector: goab-chip --- diff --git a/docs/src/content/components/circular-progress.mdx b/docs/src/content/components/circular-progress.mdx index 11dc4992bd..341dae2098 100644 --- a/docs/src/content/components/circular-progress.mdx +++ b/docs/src/content/components/circular-progress.mdx @@ -15,8 +15,4 @@ relatedComponents: - linear-progress - spinner figmaUrl: https://www.figma.com/design/Jpy1Ea5qglwnp1SgGnagY9/Component-library?node-id=633-12563 -githubUrl: https://github.com/GovAlta/ui-components/issues?q=is%3Aissue+is%3Aopen+label%3A%22Progress%20indicator%22 -webComponentTag: goa-circular-progress -reactClassName: GoabCircularProgress -angularSelector: goab-circular-progress --- diff --git a/docs/src/content/components/container.mdx b/docs/src/content/components/container.mdx index c9efe290fc..acfdec7524 100644 --- a/docs/src/content/components/container.mdx +++ b/docs/src/content/components/container.mdx @@ -13,8 +13,4 @@ relatedComponents: - block - grid figmaUrl: https://www.figma.com/design/Jpy1Ea5qglwnp1SgGnagY9/Component-library?node-id=1791-19104 -githubUrl: https://github.com/GovAlta/ui-components/labels/Container -webComponentTag: goa-container -reactClassName: GoabContainer -angularSelector: goab-container --- diff --git a/docs/src/content/components/data-grid.mdx b/docs/src/content/components/data-grid.mdx index db24d6e22d..285dcba70c 100644 --- a/docs/src/content/components/data-grid.mdx +++ b/docs/src/content/components/data-grid.mdx @@ -13,7 +13,4 @@ tags: relatedComponents: - table - pagination -webComponentTag: goa-data-grid -reactClassName: GoabDataGrid -angularSelector: goab-data-grid --- diff --git a/docs/src/content/components/date-picker.mdx b/docs/src/content/components/date-picker.mdx index 7481d69550..a8ffdbdafe 100644 --- a/docs/src/content/components/date-picker.mdx +++ b/docs/src/content/components/date-picker.mdx @@ -14,8 +14,4 @@ relatedComponents: - input - calendar figmaUrl: https://www.figma.com/design/Jpy1Ea5qglwnp1SgGnagY9/Component-library?node-id=61102-130736 -githubUrl: https://github.com/GovAlta/ui-components/labels/Date%20picker -webComponentTag: goa-date-picker -reactClassName: GoabDatePicker -angularSelector: goab-date-picker --- diff --git a/docs/src/content/components/details.mdx b/docs/src/content/components/details.mdx index 21efc3d2ef..4cbebe7b19 100644 --- a/docs/src/content/components/details.mdx +++ b/docs/src/content/components/details.mdx @@ -24,8 +24,4 @@ tags: relatedComponents: - accordion figmaUrl: https://www.figma.com/design/Jpy1Ea5qglwnp1SgGnagY9/Component-library?node-id=15932-569233 -githubUrl: https://github.com/GovAlta/ui-components/labels/Accordion %2B Detail -webComponentTag: goa-details -reactClassName: GoabDetails -angularSelector: goab-details --- diff --git a/docs/src/content/components/divider.mdx b/docs/src/content/components/divider.mdx index d1824180f3..1272640194 100644 --- a/docs/src/content/components/divider.mdx +++ b/docs/src/content/components/divider.mdx @@ -10,8 +10,4 @@ tags: relatedComponents: - spacer figmaUrl: https://www.figma.com/design/Jpy1Ea5qglwnp1SgGnagY9/Component-library?node-id=550-5137 -githubUrl: https://github.com/GovAlta/ui-components/labels/Divider -webComponentTag: goa-divider -reactClassName: GoabDivider -angularSelector: goab-divider --- diff --git a/docs/src/content/components/drawer.mdx b/docs/src/content/components/drawer.mdx index 2750d7e2ef..c3d3ad8be6 100644 --- a/docs/src/content/components/drawer.mdx +++ b/docs/src/content/components/drawer.mdx @@ -13,8 +13,4 @@ relatedComponents: - modal - push-drawer figmaUrl: https://www.figma.com/design/Jpy1Ea5qglwnp1SgGnagY9/Component-library?node-id=60158-687174 -githubUrl: https://github.com/GovAlta/ui-components/labels/Drawer -webComponentTag: goa-drawer -reactClassName: GoabDrawer -angularSelector: goab-drawer --- diff --git a/docs/src/content/components/dropdown.mdx b/docs/src/content/components/dropdown.mdx index 5603d0b454..f1e532ec78 100644 --- a/docs/src/content/components/dropdown.mdx +++ b/docs/src/content/components/dropdown.mdx @@ -12,8 +12,4 @@ relatedComponents: - form-item - input figmaUrl: https://www.figma.com/design/Jpy1Ea5qglwnp1SgGnagY9/Component-library?node-id=28478-241608 -githubUrl: https://github.com/GovAlta/ui-components/labels/Dropdown -webComponentTag: goa-dropdown -reactClassName: GoabDropdown -angularSelector: goab-dropdown --- diff --git a/docs/src/content/components/file-upload-card.mdx b/docs/src/content/components/file-upload-card.mdx index c0cffe42a5..7500d227d5 100644 --- a/docs/src/content/components/file-upload-card.mdx +++ b/docs/src/content/components/file-upload-card.mdx @@ -7,7 +7,4 @@ hidden: true subcomponent: true relatedComponents: - file-upload-input -webComponentTag: goa-file-upload-card -reactClassName: GoabFileUploadCard -angularSelector: goab-file-upload-card --- diff --git a/docs/src/content/components/file-upload-input.mdx b/docs/src/content/components/file-upload-input.mdx index 8f68492c61..57648a9bb1 100644 --- a/docs/src/content/components/file-upload-input.mdx +++ b/docs/src/content/components/file-upload-input.mdx @@ -12,8 +12,4 @@ relatedComponents: - file-upload-card - form-item figmaUrl: https://www.figma.com/design/Jpy1Ea5qglwnp1SgGnagY9/Component-library?node-id=14458-398119 -githubUrl: https://github.com/GovAlta/ui-components/labels/File%20uploader -webComponentTag: goa-file-upload-input -reactClassName: GoabFileUploadInput -angularSelector: goab-file-upload-input --- diff --git a/docs/src/content/components/filter-chip.mdx b/docs/src/content/components/filter-chip.mdx index 7035315007..cddd9ca0c6 100644 --- a/docs/src/content/components/filter-chip.mdx +++ b/docs/src/content/components/filter-chip.mdx @@ -9,8 +9,4 @@ tags: relatedComponents: - chip figmaUrl: https://www.figma.com/design/Jpy1Ea5qglwnp1SgGnagY9/Component-library?node-id=56969-516598 -githubUrl: https://github.com/GovAlta/ui-components/labels/Filter%20chip -webComponentTag: goa-filter-chip -reactClassName: GoabFilterChip -angularSelector: goab-filter-chip --- diff --git a/docs/src/content/components/focus-trap.mdx b/docs/src/content/components/focus-trap.mdx index c2a8a9047c..9dc6932975 100644 --- a/docs/src/content/components/focus-trap.mdx +++ b/docs/src/content/components/focus-trap.mdx @@ -5,7 +5,4 @@ status: stable category: utilities hidden: true -webComponentTag: goa-focus-trap -reactClassName: GoabFocusTrap -angularSelector: goab-focus-trap --- diff --git a/docs/src/content/components/footer-meta-section.mdx b/docs/src/content/components/footer-meta-section.mdx index 68d316a1c8..756e7c2423 100644 --- a/docs/src/content/components/footer-meta-section.mdx +++ b/docs/src/content/components/footer-meta-section.mdx @@ -7,7 +7,4 @@ hidden: true subcomponent: true relatedComponents: - footer -webComponentTag: goa-footer-meta-section -reactClassName: GoabFooterMetaSection -angularSelector: goab-footer-meta-section --- diff --git a/docs/src/content/components/footer-nav-section.mdx b/docs/src/content/components/footer-nav-section.mdx index ead7071350..12e2240dfa 100644 --- a/docs/src/content/components/footer-nav-section.mdx +++ b/docs/src/content/components/footer-nav-section.mdx @@ -8,7 +8,4 @@ subcomponent: true relatedComponents: - footer - link -webComponentTag: goa-footer-nav-section -reactClassName: GoabFooterNavSection -angularSelector: goab-footer-nav-section --- diff --git a/docs/src/content/components/footer.mdx b/docs/src/content/components/footer.mdx index 5b88d66449..81b07cb427 100644 --- a/docs/src/content/components/footer.mdx +++ b/docs/src/content/components/footer.mdx @@ -10,8 +10,4 @@ relatedComponents: - footer-meta-section - footer-nav-section figmaUrl: https://www.figma.com/design/Jpy1Ea5qglwnp1SgGnagY9/Component-library?node-id=5652-228863 -githubUrl: https://github.com/GovAlta/ui-components/issues?q=is%3Aissue+is%3Aopen+label%3A%22Footer%22 -webComponentTag: goa-footer -reactClassName: GoabFooter -angularSelector: goab-footer --- diff --git a/docs/src/content/components/form-item.mdx b/docs/src/content/components/form-item.mdx index 3559081d90..ee5a5fe7ee 100644 --- a/docs/src/content/components/form-item.mdx +++ b/docs/src/content/components/form-item.mdx @@ -17,8 +17,4 @@ relatedComponents: - radio-group - text-area figmaUrl: https://www.figma.com/design/Jpy1Ea5qglwnp1SgGnagY9/Component-library?node-id=56969-535065 -githubUrl: https://github.com/GovAlta/ui-components/labels/Form%20item -webComponentTag: goa-form-item -reactClassName: GoabFormItem -angularSelector: goab-form-item --- diff --git a/docs/src/content/components/form-step.mdx b/docs/src/content/components/form-step.mdx index 291c22b23d..3c4468c200 100644 --- a/docs/src/content/components/form-step.mdx +++ b/docs/src/content/components/form-step.mdx @@ -7,7 +7,4 @@ hidden: true subcomponent: true relatedComponents: - form-stepper -webComponentTag: goa-form-step -reactClassName: GoabFormStep -angularSelector: goab-form-step --- diff --git a/docs/src/content/components/form-stepper.mdx b/docs/src/content/components/form-stepper.mdx index 0f10208804..6ef2a83234 100644 --- a/docs/src/content/components/form-stepper.mdx +++ b/docs/src/content/components/form-stepper.mdx @@ -16,8 +16,4 @@ relatedComponents: - form-step - form figmaUrl: https://www.figma.com/design/Jpy1Ea5qglwnp1SgGnagY9/Component-library?node-id=27335-606356 -githubUrl: https://github.com/GovAlta/ui-components/labels/Form%20stepper -webComponentTag: goa-form-stepper -reactClassName: GoabFormStepper -angularSelector: goab-form-stepper --- diff --git a/docs/src/content/components/form.mdx b/docs/src/content/components/form.mdx index f0fde6e36f..dce0992983 100644 --- a/docs/src/content/components/form.mdx +++ b/docs/src/content/components/form.mdx @@ -6,7 +6,4 @@ category: inputs-and-actions relatedComponents: - form-item - form-stepper -webComponentTag: goa-form -reactClassName: GoabForm -angularSelector: goab-form --- diff --git a/docs/src/content/components/grid.mdx b/docs/src/content/components/grid.mdx index ad785f6305..f29ee73eb5 100644 --- a/docs/src/content/components/grid.mdx +++ b/docs/src/content/components/grid.mdx @@ -8,8 +8,4 @@ tags: relatedComponents: - container - spacer -githubUrl: https://github.com/GovAlta/ui-components/labels/Grid -webComponentTag: goa-grid -reactClassName: GoabGrid -angularSelector: goab-grid --- diff --git a/docs/src/content/components/hero-banner.mdx b/docs/src/content/components/hero-banner.mdx index de764ea2ec..4213812de1 100644 --- a/docs/src/content/components/hero-banner.mdx +++ b/docs/src/content/components/hero-banner.mdx @@ -8,8 +8,4 @@ tags: - hero panel - structure and navigation figmaUrl: https://www.figma.com/design/Jpy1Ea5qglwnp1SgGnagY9/Component-library?node-id=633-10280 -githubUrl: https://github.com/GovAlta/ui-components/labels/Hero banner -webComponentTag: goa-hero-banner -reactClassName: GoabHeroBanner -angularSelector: goab-hero-banner --- diff --git a/docs/src/content/components/icon-button.mdx b/docs/src/content/components/icon-button.mdx index 54c8a75229..77fc1b2436 100644 --- a/docs/src/content/components/icon-button.mdx +++ b/docs/src/content/components/icon-button.mdx @@ -11,8 +11,4 @@ relatedComponents: - button - icon figmaUrl: https://www.figma.com/design/Jpy1Ea5qglwnp1SgGnagY9/Component-library?node-id=56969-757260 -githubUrl: https://github.com/GovAlta/ui-components/labels/Icon%20button -webComponentTag: goa-icon-button -reactClassName: GoabIconButton -angularSelector: goab-icon-button --- diff --git a/docs/src/content/components/icon.mdx b/docs/src/content/components/icon.mdx index 71c81f402c..bdce50915f 100644 --- a/docs/src/content/components/icon.mdx +++ b/docs/src/content/components/icon.mdx @@ -8,8 +8,4 @@ tags: relatedComponents: - icon-button figmaUrl: https://www.figma.com/design/Jpy1Ea5qglwnp1SgGnagY9/Component-library?node-id=24019-474002 -githubUrl: https://github.com/GovAlta/ui-components/labels/Icons -webComponentTag: goa-icon -reactClassName: GoabIcon -angularSelector: goab-icon --- diff --git a/docs/src/content/components/input.mdx b/docs/src/content/components/input.mdx index afa8303904..39800ea7fa 100644 --- a/docs/src/content/components/input.mdx +++ b/docs/src/content/components/input.mdx @@ -14,10 +14,6 @@ relatedComponents: - text-area - dropdown figmaUrl: https://www.figma.com/design/Jpy1Ea5qglwnp1SgGnagY9/Component-library?node-id=56970-136310 -githubUrl: https://github.com/GovAlta/ui-components/labels/Input -webComponentTag: goa-input -reactClassName: GoabInput -angularSelector: goab-input --- Capture text input from users in forms. diff --git a/docs/src/content/components/linear-progress.mdx b/docs/src/content/components/linear-progress.mdx index e4b81efd43..7774602b7c 100644 --- a/docs/src/content/components/linear-progress.mdx +++ b/docs/src/content/components/linear-progress.mdx @@ -14,8 +14,4 @@ relatedComponents: - circular-progress - spinner figmaUrl: https://www.figma.com/design/Jpy1Ea5qglwnp1SgGnagY9/Component-library?node-id=14458-398386 -githubUrl: https://github.com/GovAlta/ui-components/issues?q=sort%3Aupdated-desc+is%3Aopen+label%3A%22Linear+progress+indicator%22 -webComponentTag: goa-linear-progress -reactClassName: GoabLinearProgress -angularSelector: goab-linear-progress --- diff --git a/docs/src/content/components/link-button.mdx b/docs/src/content/components/link-button.mdx index c6625ff2d1..5fdbf59b60 100644 --- a/docs/src/content/components/link-button.mdx +++ b/docs/src/content/components/link-button.mdx @@ -7,7 +7,4 @@ hidden: true relatedComponents: - button - link -webComponentTag: goa-link-button -reactClassName: GoabLinkButton -angularSelector: goab-link-button --- diff --git a/docs/src/content/components/link.mdx b/docs/src/content/components/link.mdx index 486a6ec668..8415e1633e 100644 --- a/docs/src/content/components/link.mdx +++ b/docs/src/content/components/link.mdx @@ -9,8 +9,4 @@ tags: relatedComponents: - link-button figmaUrl: https://www.figma.com/design/Jpy1Ea5qglwnp1SgGnagY9/Component-library?node-id=56970-352878 -githubUrl: https://github.com/GovAlta/ui-components/issues?q=is%3Aissue+is%3Aopen+label%3A%22Link%22 -webComponentTag: goa-link -reactClassName: GoabLink -angularSelector: goab-link --- diff --git a/docs/src/content/components/menu-action.mdx b/docs/src/content/components/menu-action.mdx index 741523f2da..c6bafc0c81 100644 --- a/docs/src/content/components/menu-action.mdx +++ b/docs/src/content/components/menu-action.mdx @@ -7,5 +7,4 @@ hidden: true subcomponent: true relatedComponents: - menu-button -webComponentTag: goa-menu-action --- diff --git a/docs/src/content/components/menu-button.mdx b/docs/src/content/components/menu-button.mdx index c5031324f9..d9ce95df69 100644 --- a/docs/src/content/components/menu-button.mdx +++ b/docs/src/content/components/menu-button.mdx @@ -11,8 +11,4 @@ relatedComponents: - menu-action - popover figmaUrl: https://www.figma.com/design/Jpy1Ea5qglwnp1SgGnagY9/Component-library?node-id=57138-308450 -githubUrl: https://github.com/GovAlta/ui-components/labels/Multi%20action%20button -webComponentTag: goa-menu-button -reactClassName: GoabMenuButton -angularSelector: goab-menu-button --- diff --git a/docs/src/content/components/microsite-header.mdx b/docs/src/content/components/microsite-header.mdx index b020130105..712d7dc5a2 100644 --- a/docs/src/content/components/microsite-header.mdx +++ b/docs/src/content/components/microsite-header.mdx @@ -17,8 +17,4 @@ tags: - structure and navigation relatedComponents: - app-header -githubUrl: https://github.com/GovAlta/ui-components/labels/Microsite%20header -webComponentTag: goa-microsite-header -reactClassName: GoabMicrositeHeader -angularSelector: goab-microsite-header --- diff --git a/docs/src/content/components/modal.mdx b/docs/src/content/components/modal.mdx index 25f18b0b80..777a22b51e 100644 --- a/docs/src/content/components/modal.mdx +++ b/docs/src/content/components/modal.mdx @@ -12,8 +12,4 @@ tags: relatedComponents: - drawer figmaUrl: https://www.figma.com/design/Jpy1Ea5qglwnp1SgGnagY9/Component-library?node-id=56970-444330 -githubUrl: https://github.com/GovAlta/ui-components/labels/Modal -webComponentTag: goa-modal -reactClassName: GoabModal -angularSelector: goab-modal --- diff --git a/docs/src/content/components/notification.mdx b/docs/src/content/components/notification.mdx index 46705eb691..c61dcdd9ff 100644 --- a/docs/src/content/components/notification.mdx +++ b/docs/src/content/components/notification.mdx @@ -11,8 +11,4 @@ relatedComponents: - callout - temporary-notification figmaUrl: https://www.figma.com/design/Jpy1Ea5qglwnp1SgGnagY9/Component-library?node-id=56970-485993 -githubUrl: https://github.com/GovAlta/ui-components/labels/Notification%20banner -webComponentTag: goa-notification -reactClassName: GoabNotification -angularSelector: goab-notification --- diff --git a/docs/src/content/components/page-block.mdx b/docs/src/content/components/page-block.mdx index f6ebefea66..27cb495fb3 100644 --- a/docs/src/content/components/page-block.mdx +++ b/docs/src/content/components/page-block.mdx @@ -6,7 +6,4 @@ category: content-layout relatedComponents: - block - container -webComponentTag: goa-page-block -reactClassName: GoabPageBlock -angularSelector: goab-page-block --- diff --git a/docs/src/content/components/pages.mdx b/docs/src/content/components/pages.mdx index c829c41f5b..0e7959d3e8 100644 --- a/docs/src/content/components/pages.mdx +++ b/docs/src/content/components/pages.mdx @@ -5,7 +5,4 @@ status: stable category: structure-and-navigation hidden: true -webComponentTag: goa-pages -reactClassName: GoabPages -angularSelector: goab-pages --- diff --git a/docs/src/content/components/pagination.mdx b/docs/src/content/components/pagination.mdx index 2d5ae0838f..ca7790808f 100644 --- a/docs/src/content/components/pagination.mdx +++ b/docs/src/content/components/pagination.mdx @@ -11,8 +11,4 @@ relatedComponents: - data-grid - table figmaUrl: https://www.figma.com/design/Jpy1Ea5qglwnp1SgGnagY9/Component-library?node-id=26318-193264 -githubUrl: https://github.com/GovAlta/ui-components/labels/Pagination -webComponentTag: goa-pagination -reactClassName: GoabPagination -angularSelector: goab-pagination --- diff --git a/docs/src/content/components/popover.mdx b/docs/src/content/components/popover.mdx index b44dedd3fe..05e4c86342 100644 --- a/docs/src/content/components/popover.mdx +++ b/docs/src/content/components/popover.mdx @@ -10,8 +10,4 @@ relatedComponents: - tooltip - menu-button figmaUrl: https://www.figma.com/design/Jpy1Ea5qglwnp1SgGnagY9/Component-library?node-id=32486-707969 -githubUrl: https://github.com/GovAlta/ui-components/labels/Popover -webComponentTag: goa-popover -reactClassName: GoabPopover -angularSelector: goab-popover --- diff --git a/docs/src/content/components/push-drawer.mdx b/docs/src/content/components/push-drawer.mdx index 871fba2829..be109a36c2 100644 --- a/docs/src/content/components/push-drawer.mdx +++ b/docs/src/content/components/push-drawer.mdx @@ -12,8 +12,4 @@ tags: relatedComponents: - drawer figmaUrl: https://www.figma.com/design/Jpy1Ea5qglwnp1SgGnagY9/Component-library?node-id=60151-367783 -githubUrl: https://github.com/GovAlta/ui-components/labels/Push%20Drawer -webComponentTag: goa-push-drawer -reactClassName: GoabPushDrawer -angularSelector: goab-push-drawer --- diff --git a/docs/src/content/components/radio-group.mdx b/docs/src/content/components/radio-group.mdx index 5605e8ce51..b37a0219dc 100644 --- a/docs/src/content/components/radio-group.mdx +++ b/docs/src/content/components/radio-group.mdx @@ -13,8 +13,4 @@ relatedComponents: - form-item - checkbox figmaUrl: https://www.figma.com/design/Jpy1Ea5qglwnp1SgGnagY9/Component-library?node-id=56970-509527 -githubUrl: https://github.com/GovAlta/ui-components/labels/Radio -webComponentTag: goa-radio-group -reactClassName: GoabRadioGroup -angularSelector: goab-radio-group --- diff --git a/docs/src/content/components/radio-item.mdx b/docs/src/content/components/radio-item.mdx index a7e8bf13d5..979efe223b 100644 --- a/docs/src/content/components/radio-item.mdx +++ b/docs/src/content/components/radio-item.mdx @@ -7,7 +7,4 @@ hidden: true subcomponent: true relatedComponents: - radio-group -webComponentTag: goa-radio-item -reactClassName: GoabRadioItem -angularSelector: goab-radio-item --- diff --git a/docs/src/content/components/scrollable.mdx b/docs/src/content/components/scrollable.mdx index eef1bb977f..2fe5ea0034 100644 --- a/docs/src/content/components/scrollable.mdx +++ b/docs/src/content/components/scrollable.mdx @@ -5,7 +5,4 @@ status: stable category: utilities hidden: true -webComponentTag: goa-scrollable -reactClassName: GoabScrollable -angularSelector: goab-scrollable --- diff --git a/docs/src/content/components/side-menu-group.mdx b/docs/src/content/components/side-menu-group.mdx index c4a3df750f..46b9c08e93 100644 --- a/docs/src/content/components/side-menu-group.mdx +++ b/docs/src/content/components/side-menu-group.mdx @@ -8,7 +8,4 @@ subcomponent: true relatedComponents: - side-menu - side-menu-heading -webComponentTag: goa-side-menu-group -reactClassName: GoabSideMenuGroup -angularSelector: goab-side-menu-group --- diff --git a/docs/src/content/components/side-menu-heading.mdx b/docs/src/content/components/side-menu-heading.mdx index 20acf4763e..4c33cfe827 100644 --- a/docs/src/content/components/side-menu-heading.mdx +++ b/docs/src/content/components/side-menu-heading.mdx @@ -8,7 +8,4 @@ subcomponent: true relatedComponents: - side-menu - side-menu-group -webComponentTag: goa-side-menu-heading -reactClassName: GoabSideMenuHeading -angularSelector: goab-side-menu-heading --- diff --git a/docs/src/content/components/side-menu.mdx b/docs/src/content/components/side-menu.mdx index 1d6f85a2b4..a2768c6ab3 100644 --- a/docs/src/content/components/side-menu.mdx +++ b/docs/src/content/components/side-menu.mdx @@ -13,8 +13,4 @@ relatedComponents: - side-menu-heading - work-side-menu figmaUrl: https://www.figma.com/design/Jpy1Ea5qglwnp1SgGnagY9/Component-library?node-id=58780-485596 -githubUrl: https://github.com/GovAlta/ui-components/labels/Side%20menu -webComponentTag: goa-side-menu -reactClassName: GoabSideMenu -angularSelector: goab-side-menu --- diff --git a/docs/src/content/components/skeleton.mdx b/docs/src/content/components/skeleton.mdx index 2e1c9d49fd..940fa51081 100644 --- a/docs/src/content/components/skeleton.mdx +++ b/docs/src/content/components/skeleton.mdx @@ -6,8 +6,4 @@ category: feedback-and-alerts tags: - content layout - loading -githubUrl: https://github.com/GovAlta/ui-components/labels/Skeleton%20loading -webComponentTag: goa-skeleton -reactClassName: GoabSkeleton -angularSelector: goab-skeleton --- diff --git a/docs/src/content/components/spacer.mdx b/docs/src/content/components/spacer.mdx index cade29d729..09a3810c56 100644 --- a/docs/src/content/components/spacer.mdx +++ b/docs/src/content/components/spacer.mdx @@ -13,8 +13,4 @@ relatedComponents: - divider - grid figmaUrl: https://www.figma.com/design/Jpy1Ea5qglwnp1SgGnagY9/Component-library?node-id=21567-616073 -githubUrl: https://github.com/GovAlta/ui-components/labels/Spacer -webComponentTag: goa-spacer -reactClassName: GoabSpacer -angularSelector: goab-spacer --- diff --git a/docs/src/content/components/spinner.mdx b/docs/src/content/components/spinner.mdx index b9cb2c72c8..2a215c660a 100644 --- a/docs/src/content/components/spinner.mdx +++ b/docs/src/content/components/spinner.mdx @@ -7,7 +7,4 @@ hidden: true relatedComponents: - circular-progress - linear-progress -webComponentTag: goa-spinner -reactClassName: GoabSpinner -angularSelector: goab-spinner --- diff --git a/docs/src/content/components/tab.mdx b/docs/src/content/components/tab.mdx index 21e9c9a3ab..61c81f2b20 100644 --- a/docs/src/content/components/tab.mdx +++ b/docs/src/content/components/tab.mdx @@ -7,7 +7,4 @@ hidden: true subcomponent: true relatedComponents: - tabs -webComponentTag: goa-tab -reactClassName: GoabTab -angularSelector: goab-tab --- diff --git a/docs/src/content/components/table.mdx b/docs/src/content/components/table.mdx index eb91419940..aa4aeb23c0 100644 --- a/docs/src/content/components/table.mdx +++ b/docs/src/content/components/table.mdx @@ -12,8 +12,4 @@ relatedComponents: - data-grid - pagination figmaUrl: https://www.figma.com/design/Jpy1Ea5qglwnp1SgGnagY9/Component-library?node-id=27343-613386 -githubUrl: https://github.com/GovAlta/ui-components/labels/Table -webComponentTag: goa-table -reactClassName: GoabTable -angularSelector: goab-table --- diff --git a/docs/src/content/components/tabs.mdx b/docs/src/content/components/tabs.mdx index ada8af20d4..20f9efa3bc 100644 --- a/docs/src/content/components/tabs.mdx +++ b/docs/src/content/components/tabs.mdx @@ -10,8 +10,4 @@ tags: relatedComponents: - tab figmaUrl: https://www.figma.com/design/Jpy1Ea5qglwnp1SgGnagY9/Component-library?node-id=25293-550667 -githubUrl: https://github.com/GovAlta/ui-components/labels/Tabs -webComponentTag: goa-tabs -reactClassName: GoabTabs -angularSelector: goab-tabs --- diff --git a/docs/src/content/components/temporary-notification.mdx b/docs/src/content/components/temporary-notification.mdx index ae233a6dbb..96050f2cb4 100644 --- a/docs/src/content/components/temporary-notification.mdx +++ b/docs/src/content/components/temporary-notification.mdx @@ -10,8 +10,4 @@ tags: relatedComponents: - notification figmaUrl: https://www.figma.com/design/Jpy1Ea5qglwnp1SgGnagY9/Component-library?node-id=33183-290309 -githubUrl: https://github.com/GovAlta/ui-components/labels/Temporary%20notification -webComponentTag: goa-temporary-notification -reactClassName: GoabTemporaryNotification -angularSelector: goab-temporary-notification --- diff --git a/docs/src/content/components/text-area.mdx b/docs/src/content/components/text-area.mdx index 1e72220cb9..88db458e0d 100644 --- a/docs/src/content/components/text-area.mdx +++ b/docs/src/content/components/text-area.mdx @@ -14,8 +14,4 @@ relatedComponents: - form-item - input figmaUrl: https://www.figma.com/design/Jpy1Ea5qglwnp1SgGnagY9/Component-library?node-id=12711-380735 -githubUrl: https://github.com/GovAlta/ui-components/labels/Text%20area -webComponentTag: goa-text-area -reactClassName: GoabTextArea -angularSelector: goab-text-area --- diff --git a/docs/src/content/components/text.mdx b/docs/src/content/components/text.mdx index 380fd5bfbd..c7f6357ed1 100644 --- a/docs/src/content/components/text.mdx +++ b/docs/src/content/components/text.mdx @@ -8,8 +8,4 @@ tags: - body - copy figmaUrl: https://www.figma.com/design/Jpy1Ea5qglwnp1SgGnagY9/Component-library?node-id=21567-615910 -githubUrl: https://github.com/GovAlta/ui-components/labels/Text -webComponentTag: goa-text -reactClassName: GoabText -angularSelector: goab-text --- diff --git a/docs/src/content/components/tooltip.mdx b/docs/src/content/components/tooltip.mdx index bc88af4799..36c666da9b 100644 --- a/docs/src/content/components/tooltip.mdx +++ b/docs/src/content/components/tooltip.mdx @@ -8,8 +8,4 @@ tags: relatedComponents: - popover figmaUrl: https://www.figma.com/design/Jpy1Ea5qglwnp1SgGnagY9/Component-library?node-id=21932-557085 -githubUrl: https://github.com/GovAlta/ui-components/labels/Tooltip -webComponentTag: goa-tooltip -reactClassName: GoabTooltip -angularSelector: goab-tooltip --- diff --git a/docs/src/content/components/work-side-menu-group.mdx b/docs/src/content/components/work-side-menu-group.mdx index a756bd750c..25d0e0abad 100644 --- a/docs/src/content/components/work-side-menu-group.mdx +++ b/docs/src/content/components/work-side-menu-group.mdx @@ -7,5 +7,4 @@ hidden: true subcomponent: true relatedComponents: - work-side-menu -webComponentTag: goa-work-side-menu-group --- diff --git a/docs/src/content/components/work-side-menu-item.mdx b/docs/src/content/components/work-side-menu-item.mdx index 17db534b6f..97aac145dd 100644 --- a/docs/src/content/components/work-side-menu-item.mdx +++ b/docs/src/content/components/work-side-menu-item.mdx @@ -7,5 +7,4 @@ hidden: true subcomponent: true relatedComponents: - work-side-menu -webComponentTag: goa-work-side-menu-item --- diff --git a/docs/src/content/components/work-side-menu.mdx b/docs/src/content/components/work-side-menu.mdx index 48ce13a23a..bd3ee17b97 100644 --- a/docs/src/content/components/work-side-menu.mdx +++ b/docs/src/content/components/work-side-menu.mdx @@ -9,7 +9,4 @@ relatedComponents: - work-side-menu-item - work-side-notification-panel figmaUrl: https://www.figma.com/design/Jpy1Ea5qglwnp1SgGnagY9/Component-library?node-id=57622-159377 -webComponentTag: goa-work-side-menu -reactClassName: GoabWorkSideMenu -angularSelector: goab-work-side-menu --- diff --git a/docs/src/content/config.ts b/docs/src/content/config.ts index d3b9d016a1..7af6d9ddb2 100644 --- a/docs/src/content/config.ts +++ b/docs/src/content/config.ts @@ -29,12 +29,6 @@ const components = defineCollection({ // External links figmaUrl: z.string().url().optional(), - githubUrl: z.string().optional(), - - // Framework identifiers (for cross-referencing) - webComponentTag: z.string().optional(), - reactClassName: z.string().optional(), - angularSelector: z.string().optional(), // Visibility hidden: z.boolean().optional(), // Hide from navigation and public views @@ -151,9 +145,6 @@ const examples = defineCollection({ // Preview image (optional) previewImage: z.string().optional(), - // Shared CSS file reference (relative to _shared folder) - styles: z.string().optional(), - // Display options fullWidth: z.boolean().optional(), // Remove side padding in preview (for callouts, notifications) previewStyle: z.string().optional(), // Inline CSS override for preview container (e.g. "padding: 0; max-height: 600px") From 8c2c2f40b6e71d3170b03f3af15178b200f02623 Mon Sep 17 00:00:00 2001 From: Thomas Jeffery Date: Mon, 4 May 2026 19:26:01 -0600 Subject: [PATCH 05/16] chore(#3906): migrate Get Started to a content collection --- docs/public/search-index.json | 200 ++++++++++ docs/src/components/SiteNav.tsx | 11 + docs/src/components/nav/GetStartedSubMenu.tsx | 65 +--- docs/src/components/nav/index.ts | 1 + docs/src/content/config.ts | 24 ++ .../get-started/automated-accessibility.mdx | 83 +++++ .../get-started/component-lifecycle.mdx | 57 +++ docs/src/content/get-started/contribute.mdx | 177 +++++++++ docs/src/content/get-started/designers.mdx | 86 +++++ .../designers/designing-with-ds.mdx | 71 ++++ .../get-started/designers/ux-guidelines.mdx | 45 +++ docs/src/content/get-started/developers.mdx | 96 +++++ .../get-started/developers/browsers.mdx | 78 ++++ .../content/get-started/developers/bug.mdx | 56 +++ .../content/get-started/developers/setup.mdx | 128 +++++++ .../get-started/developers/technologies.mdx | 101 +++++ docs/src/content/get-started/index.mdx | 97 +++++ .../content/get-started/migration-guide.mdx | 107 ++++++ .../content/get-started/out-of-support.mdx | 43 +++ docs/src/content/get-started/qa-testing.mdx | 67 ++++ docs/src/content/get-started/roadmap.mdx | 127 +++++++ docs/src/layouts/ComponentPageLayout.astro | 3 + .../src/layouts/DocumentationPageLayout.astro | 3 + docs/src/layouts/ExamplesPageLayout.astro | 3 + docs/src/layouts/HomeLayout.astro | 3 + docs/src/layouts/TokensLayout.astro | 3 + docs/src/lib/get-started-nav.ts | 77 ++++ docs/src/pages/get-started/[...slug].astro | 25 ++ .../get-started/automated-accessibility.astro | 92 ----- .../get-started/component-lifecycle.astro | 67 ---- docs/src/pages/get-started/contribute.astro | 188 ---------- docs/src/pages/get-started/designers.astro | 94 ----- .../designers/designing-with-ds.astro | 81 ---- .../get-started/designers/ux-guidelines.astro | 55 --- docs/src/pages/get-started/developers.astro | 104 ------ .../get-started/developers/browsers.astro | 87 ----- .../pages/get-started/developers/bug.astro | 65 ---- .../pages/get-started/developers/setup.astro | 141 ------- .../get-started/developers/technologies.astro | 111 ------ docs/src/pages/get-started/index.astro | 108 ------ .../pages/get-started/migration-guide.astro | 232 ------------ .../pages/get-started/out-of-support.astro | 54 --- docs/src/pages/get-started/qa-testing.astro | 77 ---- docs/src/pages/get-started/roadmap.astro | 347 ------------------ docs/src/pages/search.astro | 3 + docs/src/scripts/build-search-index.ts | 79 +++- 46 files changed, 1862 insertions(+), 1960 deletions(-) create mode 100644 docs/src/content/get-started/automated-accessibility.mdx create mode 100644 docs/src/content/get-started/component-lifecycle.mdx create mode 100644 docs/src/content/get-started/contribute.mdx create mode 100644 docs/src/content/get-started/designers.mdx create mode 100644 docs/src/content/get-started/designers/designing-with-ds.mdx create mode 100644 docs/src/content/get-started/designers/ux-guidelines.mdx create mode 100644 docs/src/content/get-started/developers.mdx create mode 100644 docs/src/content/get-started/developers/browsers.mdx create mode 100644 docs/src/content/get-started/developers/bug.mdx create mode 100644 docs/src/content/get-started/developers/setup.mdx create mode 100644 docs/src/content/get-started/developers/technologies.mdx create mode 100644 docs/src/content/get-started/index.mdx create mode 100644 docs/src/content/get-started/migration-guide.mdx create mode 100644 docs/src/content/get-started/out-of-support.mdx create mode 100644 docs/src/content/get-started/qa-testing.mdx create mode 100644 docs/src/content/get-started/roadmap.mdx create mode 100644 docs/src/lib/get-started-nav.ts create mode 100644 docs/src/pages/get-started/[...slug].astro delete mode 100644 docs/src/pages/get-started/automated-accessibility.astro delete mode 100644 docs/src/pages/get-started/component-lifecycle.astro delete mode 100644 docs/src/pages/get-started/contribute.astro delete mode 100644 docs/src/pages/get-started/designers.astro delete mode 100644 docs/src/pages/get-started/designers/designing-with-ds.astro delete mode 100644 docs/src/pages/get-started/designers/ux-guidelines.astro delete mode 100644 docs/src/pages/get-started/developers.astro delete mode 100644 docs/src/pages/get-started/developers/browsers.astro delete mode 100644 docs/src/pages/get-started/developers/bug.astro delete mode 100644 docs/src/pages/get-started/developers/setup.astro delete mode 100644 docs/src/pages/get-started/developers/technologies.astro delete mode 100644 docs/src/pages/get-started/index.astro delete mode 100644 docs/src/pages/get-started/migration-guide.astro delete mode 100644 docs/src/pages/get-started/out-of-support.astro delete mode 100644 docs/src/pages/get-started/qa-testing.astro delete mode 100644 docs/src/pages/get-started/roadmap.astro diff --git a/docs/public/search-index.json b/docs/public/search-index.json index 2c4f939d41..ae7410cb4f 100644 --- a/docs/public/search-index.json +++ b/docs/public/search-index.json @@ -2760,5 +2760,205 @@ "scale": "product", "userType": "worker", "slug": "workspace" + }, + { + "type": "page", + "id": "automated-accessibility", + "title": "Automated accessibility", + "description": "Guidance on using automated accessibility testing tools effectively", + "status": "published", + "category": "get started", + "tags": [ + "intro" + ], + "slug": "get-started/automated-accessibility" + }, + { + "type": "page", + "id": "component-lifecycle", + "title": "Component lifecycle", + "description": "The stages each Design System component moves through", + "status": "published", + "category": "get started", + "tags": [ + "intro" + ], + "slug": "get-started/component-lifecycle" + }, + { + "type": "page", + "id": "contribute", + "title": "Contribute", + "description": "How to contribute to the GoA Design System", + "status": "published", + "category": "get started", + "tags": [ + "appendix" + ], + "slug": "get-started/contribute" + }, + { + "type": "page", + "id": "designers/designing-with-ds", + "title": "Designing with Design System 2.0", + "description": "How to start new designs and update existing projects to Design System 2.0", + "status": "published", + "category": "get started", + "tags": [ + "designers", + "designer" + ], + "slug": "get-started/designers/designing-with-ds" + }, + { + "type": "page", + "id": "designers/ux-guidelines", + "title": "User experience guidelines", + "description": "User experience guidelines for Government of Alberta digital products", + "status": "published", + "category": "get started", + "tags": [ + "designers", + "designer" + ], + "slug": "get-started/designers/ux-guidelines" + }, + { + "type": "page", + "id": "designers", + "title": "Designers overview", + "description": "How designers use the design system through Figma", + "status": "published", + "category": "get started", + "tags": [ + "designers", + "designer" + ], + "slug": "get-started/designers" + }, + { + "type": "page", + "id": "developers/browsers", + "title": "Supported browsers", + "description": "Browser and operating system support for Design System components", + "status": "published", + "category": "get started", + "tags": [ + "developers", + "developer" + ], + "slug": "get-started/developers/browsers" + }, + { + "type": "page", + "id": "developers/bug", + "title": "Verify a bug", + "description": "How to verify and report a bug in a Design System component", + "status": "published", + "category": "get started", + "tags": [ + "developers", + "developer" + ], + "slug": "get-started/developers/bug" + }, + { + "type": "page", + "id": "developers/setup", + "title": "Developer setup", + "description": "Set up Angular, React, or Web Components to use the GoA Design System", + "status": "published", + "category": "get started", + "tags": [ + "developers", + "developer" + ], + "slug": "get-started/developers/setup" + }, + { + "type": "page", + "id": "developers/technologies", + "title": "Technologies", + "description": "An overview of the technologies used in the Design System", + "status": "published", + "category": "get started", + "tags": [ + "developers", + "developer" + ], + "slug": "get-started/developers/technologies" + }, + { + "type": "page", + "id": "developers", + "title": "Developers overview", + "description": "How developers use the design system through tokens, components, examples, and templates", + "status": "published", + "category": "get started", + "tags": [ + "developers", + "developer" + ], + "slug": "get-started/developers" + }, + { + "type": "page", + "id": "index", + "title": "Start with the design system", + "description": "Start with the design system to build on the research and experience of other service teams", + "status": "published", + "category": "get started", + "tags": [ + "intro" + ], + "slug": "get-started" + }, + { + "type": "page", + "id": "migration-guide", + "title": "Migration guide", + "description": "Choose the right Design System 2.0 migration pathway for your product", + "status": "published", + "category": "get started", + "tags": [ + "intro" + ], + "slug": "get-started/migration-guide" + }, + { + "type": "page", + "id": "out-of-support", + "title": "Out of support versions", + "description": "Design System versions that are no longer supported", + "status": "published", + "category": "get started", + "tags": [ + "appendix" + ], + "slug": "get-started/out-of-support" + }, + { + "type": "page", + "id": "qa-testing", + "title": "QA testing", + "description": "Testing process for Design System components", + "status": "published", + "category": "get started", + "tags": [ + "appendix" + ], + "slug": "get-started/qa-testing" + }, + { + "type": "page", + "id": "roadmap", + "title": "Roadmap", + "description": "High-level roadmap for the design system team's 2026-27 fiscal year", + "status": "published", + "category": "get started", + "tags": [ + "intro" + ], + "slug": "get-started/roadmap" } ] \ No newline at end of file diff --git a/docs/src/components/SiteNav.tsx b/docs/src/components/SiteNav.tsx index ab38664798..cd89579beb 100644 --- a/docs/src/components/SiteNav.tsx +++ b/docs/src/components/SiteNav.tsx @@ -21,6 +21,7 @@ import { FoundationsSubMenu, type MenuSection, type NavCategory, + type GetStartedNav, } from "./nav"; interface SiteNavProps { @@ -32,6 +33,8 @@ interface SiteNavProps { initialSection?: MenuSection; /** Component nav categories (from content collection, passed by Astro layout) */ categories?: NavCategory[]; + /** Get Started submenu structure (from content collection, passed by Astro layout) */ + getStartedNav?: GetStartedNav; } // Sections that have submenus (show submenu when navigated to) @@ -90,11 +93,18 @@ function getInitialMenuState(): boolean { return true; } +const EMPTY_GET_STARTED_NAV: GetStartedNav = { + topPages: [], + groups: [], + bottomPages: [], +}; + export function SiteNav({ currentSlug, currentCategory, initialSection, categories = [], + getStartedNav = EMPTY_GET_STARTED_NAV, }: SiteNavProps) { // Menu state - persisted on desktop, always closed on mobile const [isOpen, setIsOpen] = useState(getInitialMenuState); @@ -216,6 +226,7 @@ export function SiteNav({ onBack={handleBack} onExpandMenu={handleExpandMenu} currentUrl={currentUrl} + items={getStartedNav} /> ); diff --git a/docs/src/components/nav/GetStartedSubMenu.tsx b/docs/src/components/nav/GetStartedSubMenu.tsx index abd94eccd2..759fb9e0d4 100644 --- a/docs/src/components/nav/GetStartedSubMenu.tsx +++ b/docs/src/components/nav/GetStartedSubMenu.tsx @@ -3,6 +3,9 @@ * * Sub-menu for Get Started section showing grouped pages. * Uses GoabWorkSideMenuGroup for expandable Designers/Developers sections. + * + * Nav structure is sourced from the get-started content collection via + * `getGetStartedNav()` in lib/get-started-nav.ts. */ import { type MouseEvent } from "react"; @@ -13,59 +16,7 @@ import { } from "@abgov/react-components"; import { MenuSecondaryContent } from "./MenuSecondaryContent"; import { withBase } from "@/lib/base-url"; - -// Top-level pages (not in a group) -const TOP_PAGES = [ - { label: "Starting with the design system", url: "/get-started" }, - { label: "Automated accessibility", url: "/get-started/automated-accessibility" }, - { label: "Component lifecycle", url: "/get-started/component-lifecycle" }, - { label: "Roadmap", url: "/get-started/roadmap" }, - { label: "Migration guide", url: "/get-started/migration-guide" }, -]; - -// Grouped sections with sub-pages -const PAGE_GROUPS = [ - { - name: "Designers", - slug: "designers", - pages: [ - { label: "Overview", url: "/get-started/designers" }, - { - label: "Designing with Design System 2.0", - url: "/get-started/designers/designing-with-ds", - }, - { - label: "User Experience Guidelines", - url: "/get-started/designers/ux-guidelines", - }, - ], - }, - { - name: "Developers", - slug: "developers", - pages: [ - { label: "Overview", url: "/get-started/developers" }, - { label: "Setup", url: "/get-started/developers/setup" }, - { label: "Verify a bug", url: "/get-started/developers/bug" }, - { label: "Technologies", url: "/get-started/developers/technologies" }, - { label: "Supported browsers", url: "/get-started/developers/browsers" }, - ], - }, -]; - -// Bottom pages (after groups) -const BOTTOM_PAGES = [ - { label: "QA testing", url: "/get-started/qa-testing" }, - { label: "Contribute", url: "/get-started/contribute" }, - { label: "Out of support versions", url: "/get-started/out-of-support" }, -]; - -// All URLs for matching current page -const ALL_URLS = [ - ...TOP_PAGES.map((p) => p.url), - ...PAGE_GROUPS.flatMap((g) => g.pages.map((p) => p.url)), - ...BOTTOM_PAGES.map((p) => p.url), -]; +import type { GetStartedNav } from "@/lib/get-started-nav"; interface GetStartedSubMenuProps { isOpen: boolean; @@ -73,6 +24,7 @@ interface GetStartedSubMenuProps { onBack: () => void; onExpandMenu?: () => void; currentUrl?: string; + items: GetStartedNav; } export function GetStartedSubMenu({ @@ -81,6 +33,7 @@ export function GetStartedSubMenu({ onBack, onExpandMenu, currentUrl, + items, }: GetStartedSubMenuProps) { const handleBackClick = (e: MouseEvent) => { e.preventDefault(); @@ -96,13 +49,13 @@ export function GetStartedSubMenu({
{/* Top-level pages */} - {TOP_PAGES.map((page) => ( + {items.topPages.map((page) => ( ))} {/* Grouped sections */}
- {PAGE_GROUPS.map((group) => { + {items.groups.map((group) => { const containsCurrentPage = group.pages.some((p) => p.url === currentUrl); const handleGroupClickCapture = () => { @@ -128,7 +81,7 @@ export function GetStartedSubMenu({
{/* Bottom pages */} - {BOTTOM_PAGES.map((page) => ( + {items.bottomPages.map((page) => ( ))} diff --git a/docs/src/components/nav/index.ts b/docs/src/components/nav/index.ts index fc8ccd08c8..ee574f8b25 100644 --- a/docs/src/components/nav/index.ts +++ b/docs/src/components/nav/index.ts @@ -12,5 +12,6 @@ export { ParentMenu, type MenuSection } from "./ParentMenu"; export { ComponentsSubMenu } from "./ComponentsSubMenu"; export { GetStartedSubMenu } from "./GetStartedSubMenu"; +export type { GetStartedNav } from "../../lib/get-started-nav"; export { FoundationsSubMenu } from "./FoundationsSubMenu"; export type { NavCategory } from "../../lib/nav-categories"; diff --git a/docs/src/content/config.ts b/docs/src/content/config.ts index 7af6d9ddb2..67c0090bea 100644 --- a/docs/src/content/config.ts +++ b/docs/src/content/config.ts @@ -168,9 +168,33 @@ const foundations = defineCollection({ }), }); +/** + * Get Started Collection + * Onboarding pages for designers, developers, QA, and contributors. + * Entries flow to the docs site, MCP generator, and MD bundle. + */ +const getStarted = defineCollection({ + type: "content", + schema: z.object({ + id: z.string(), + title: z.string(), + // Optional shorter label for the submenu when the page title would read + // redundantly under its group heading (e.g. "Overview" vs "Designers overview"). + navLabel: z.string().optional(), + description: z.string().optional(), + // Submenu placement. "intro" and "appendix" are top-level (above and below + // the grouped sections); "designers" and "developers" are grouped. + section: z.enum(["intro", "designers", "developers", "appendix"]), + // Sort order within section. + order: z.number(), + status: z.enum(["published", "draft", "deprecated"]).default("published"), + }), +}); + export const collections = { components, guidance, examples, foundations, + "get-started": getStarted, }; diff --git a/docs/src/content/get-started/automated-accessibility.mdx b/docs/src/content/get-started/automated-accessibility.mdx new file mode 100644 index 0000000000..07bae83e0b --- /dev/null +++ b/docs/src/content/get-started/automated-accessibility.mdx @@ -0,0 +1,83 @@ +--- +id: automated-accessibility +title: Automated accessibility +description: Guidance on using automated accessibility testing tools effectively +section: intro +order: 2 +status: published +--- +import DropInCallout from "../../components/DropInCallout.astro"; + +Automated accessibility +Automated accessibility testing tools help you identify potential accessibility issues. Use them as a starting point. + +

+ However, these tools are not a complete solution. They can produce: +

+
    +
  • False positives – flagging issues that are not actual problems
  • +
  • False negatives – missing real accessibility barriers
  • +
+

+ To ensure your digital product is accessible, combine automated testing with manual testing and apply + human judgment. +

+Why automated tools alone are not enough + +False positives +

+ Automated tools may flag elements as non-compliant even when they work correctly for users. For + example, a tool may report that an input is "missing an id" even though it is correctly associated with a + label using a valid method, such as wrapping the input inside a <label> element. +

+ +False negatives +

+ Automated tools cannot detect nuanced or context-specific issues. For example, all interactive + elements may be tabbable, but the order jumps around the page. Tools often don't judge whether the + tab order is logical for completing the task. +

+ +Real user experience +

+ Accessibility ensures real people can use a product effectively. Automated tools cannot fully simulate + how users interact with your product. +

+Steps for effective accessibility testing + +
    +
  1. + Run automated tools to get an initial assessment. +
  2. +
  3. + Manually verify flagged issues and review the element's intent and context. +
  4. +
  5. + Do additional manual testing for issues automated tools cannot detect: +
      +
    • Test with a screen reader, such as VoiceOver (macOS) or NVDA (Windows)
    • +
    • Test keyboard navigation by checking focus visibility and order
    • +
    +
  6. +
  7. + Report findings + +
  8. +
+Why this process matters +

+ Automated tools provide helpful insight. Relying only on automation can result in: +

+
    +
  • Time spent fixing issues that are not real barriers
  • +
  • Missed opportunities to address genuine accessibility issues
  • +
  • A false sense of compliance without meaningful usability improvements
  • +
+

+ Combine automated and manual testing to identify real barriers. This approach improves accessibility + and overall product quality. +

+ diff --git a/docs/src/content/get-started/component-lifecycle.mdx b/docs/src/content/get-started/component-lifecycle.mdx new file mode 100644 index 0000000000..c7e881c163 --- /dev/null +++ b/docs/src/content/get-started/component-lifecycle.mdx @@ -0,0 +1,57 @@ +--- +id: component-lifecycle +title: Component lifecycle +description: The stages each Design System component moves through +section: intro +order: 3 +status: published +--- +import { withBase } from "@/lib/base-url"; +import DropInCallout from "../../components/DropInCallout.astro"; + +Component lifecycle +The component lifecycle defines the stages each Design System component moves through, from Experimental to Production to Legacy. + +

+ To request a new component or propose an enhancement, follow the + design contribution process. +

+Experimental +

+ Experimental components are new or significantly updated. They are available for testing and feedback + before public release. +

+ +Characteristics +
    +
  • Feedback is gathered from selected teams
  • +
  • May be unstable or include breaking changes
  • +
  • Limited documentation
  • +
+Production +

+ Production components are stable and ready for broader adoption. +

+ +Characteristics +
    +
  • Fully documented, including design guidelines, properties, and examples
  • +
  • Meet accessibility and design system standards
  • +
  • Optimized for mobile use
  • +
  • Actively maintained with updates and bug fixes
  • +
  • Publicly available documentation
  • +
+Legacy +

+ Legacy components are older components maintained primarily to support older implementations. If + possible, transition to production is recommended. +

+ +Characteristics +
    +
  • No active maintenance or updates
  • +
  • Critical issues may remain unresolved
  • +
  • Recommended alternative clearly identified
  • +
  • Marked as "Legacy" in official documentation
  • +
+ diff --git a/docs/src/content/get-started/contribute.mdx b/docs/src/content/get-started/contribute.mdx new file mode 100644 index 0000000000..8e6f4e0437 --- /dev/null +++ b/docs/src/content/get-started/contribute.mdx @@ -0,0 +1,177 @@ +--- +id: contribute +title: Contribute +description: How to contribute to the GoA Design System +section: appendix +order: 2 +status: published +--- +import { withBase } from "@/lib/base-url"; +import DropInCallout from "../../components/DropInCallout.astro"; + +Contribute +The Design System is a shared resource used and improved by service teams. All roles are encouraged to contribute. + +

+ Start by using existing Design System components and patterns. If a component or pattern does not + meet your needs, follow the contribution process below. +

+Design contribution process +

+ If a required component or example does not exist in production, + contact the Design System team. We will review the request together and determine next steps. +

+ +1. Contact the team +

+ Book a design system drop-in hours session. +

+

Be prepared to:

+
    +
  • Describe the component or pattern and its purpose
  • +
  • Explain your user needs and service goals
  • +
  • Share iterations explored with and without the Design System
  • +
+ + + There are open contribution files in Figma for every component and pattern in the design system, including unpublished ideas and experiments. + + +2. Contribution criteria +

A proposed component or pattern must meet the following criteria.

+ +Proposal criteria +

Useful

+

+ Evidence shows it supports multiple teams or services. Provide screenshots or links to demonstrate usage. +

+ +

Unique

+

+ It does not duplicate an existing component or pattern. If replacing an existing component, provide + evidence that the new approach improves usability or accessibility. +

+ +Publication standards +

To be published, the solution must be:

+ +

Usable

+

+ Improves clarity, usability, and accessibility for users. Is informed by research and addresses a + validated user need. +

+ +

Universal

+

+ Inclusive and accessible. Meets or exceeds accessibility standards. + WCAG 2.2 AA is the minimum requirement. +

+ +3. Backlog and collaboration +

+ If approved, the item is added to the + Design System's backlog. +

+

+ When development begins, the Design System team will collaborate with you to confirm detailed requirements. +

+Code contribution process +

+ The Design System supports multiple development frameworks through Web Components. Contributing full + components can be complex. Smaller contributions are encouraged. +

+ +Recommended contribution types +
    +
  • Bug fixes
  • +
  • Documentation updates
  • +
  • Enhancements to existing components
  • +
+

+ Start by contacting the team in the #design-system-support Slack channel. +

+

+ Select an issue tagged ready-for-contribution from the + backlog. + Confirm which issue you will work on. +

+ + + Since the repository is public, use a personal GitHub account instead of your Enterprise Managed User (EMU) account. + + +Set up your contribution environment +
    +
  1. Clone the ui-components repository.
  2. +
  3. Open the repository in your IDE.
  4. +
  5. Create a branch named: contributions/story-number
  6. +
  7. + Run the following commands: +
    npm i
    +npm run build
    +
  8. +
  9. + The playgrounds for local testing are located in: +
    /apps/dev/angular
    +/apps/dev/react
    +
  10. +
+ +Run playground environments +

Angular

+
npm run dev:watch
+npm run serve:dev:angular
+ +

React

+
npm run dev:watch
+npm run serve:dev:react
+ +Repository structure + +

React wrappers

+

/libs/react-components/src/lib

+

Each folder represents a single component with its associated unit tests and wrapper code.

+ +

Angular wrappers

+

/libs/angular-components/src/lib/components

+

Each folder represents a single component with its associated unit tests and wrapper code.

+ +

Web Components

+

/libs/web-components/src/components

+
    +
  • Unit tests as {"*.spec.ts"}
  • +
  • Component code as {"*.svelte"}
  • +
+ +Testing requirements +
    +
  • Write all unit tests in Svelte.
  • +
  • If updating React or Angular wrappers, write unit tests in those respective frameworks.
  • +
  • + Add browser testing using Jest for React wrappers and Svelte components when appropriate. + These can be found in: libs/react-components/specs +
  • +
  • Manually test components in both React and Angular.
  • +
  • + Create test files that others can use to manually test the PR. These can be created in: +
    /apps/prs/angular
    +/apps/prs/react
    +
  • +
  • Follow the conventions already used in those files to create your test files.
  • +
+

A Design System developer will also manually test the pull request.

+ +Submit your contribution +

Use the following commit message format:

+ +

Bug fix

+
fix(#storyNumber): short description (7 words max)
+ +

Feature request

+
feat(#storyNumber): short description (7 words max)
+ +
    +
  • Create a pull request from your branch to the dev branch.
  • +
  • Notify the design system team of the PR.
  • +
+ diff --git a/docs/src/content/get-started/designers.mdx b/docs/src/content/get-started/designers.mdx new file mode 100644 index 0000000000..fcf79c98bd --- /dev/null +++ b/docs/src/content/get-started/designers.mdx @@ -0,0 +1,86 @@ +--- +id: designers +title: Designers overview +navLabel: Overview +description: How designers use the design system through Figma +section: designers +order: 1 +status: published +--- +import { withBase } from "@/lib/base-url"; +import DropInCallout from "../../components/DropInCallout.astro"; + +Overview +As a designer, you use the design system through Figma. +

In Figma, you can access:

+ + + +

+ The design system library in Figma aligns with coded components used by developers. Start with + design system components for common parts of your service. This helps developers use the matching + coded components and reduces custom work. +

+

+ Start with the design system. Validate your design through user testing. If usability issues arise, + or the problem cannot be solved within the system, consider creating a custom solution. +

+Design with development in mind +

+ When selecting components, prioritize those with a "goa-" prefix, such as + goa-input. These components exist in both design and development. Using them reduces + the need for custom development. +

+

Choose shared components whenever possible to maintain consistency and efficiency.

+ +Design tokens +

Design system components in Figma and code are built using design tokens.

+

+ Use tokens to communicate design decisions clearly. Developers can reference the same tokens in code. +

+

Instead of sharing hex values or pixel adjustments, reference semantic tokens.

+

For example:

+
    +
  • Colour: --goa-color-info-default
  • +
  • Spacing: --goa-spacing-m
  • +
+

Using tokens reduces back-and-forth and keeps design and development aligned.

+ +Components +

All design system components are available in Figma and in code.

+

+ These components are designed to meet + WCAG 2.2 accessibility standards. +

+

Avoid detaching components. Instead:

+
    +
  • Use variants
  • +
  • Show or hide layers within the component
  • +
+

+ Use #figma for Figma-related issues, including library updates, missing components, + broken instances, or component behaviour in Figma. +

+

+ Use #design-system-support for design system guidance, component usage questions, + standards, and implementation support. +

+

Keep your components up to date. Figma will notify you when library updates are available.

+ +Figma file templates and helper components +

Each digital service project folder includes a starter Figma template.

+

Use this template to:

+
    +
  • Organize your design file
  • +
  • Support developer handoff
  • +
  • Help team members navigate files
  • +
+

+ Helper components are also available. Use them to clearly communicate intent when sharing designs + with developers and other team members. +

+ diff --git a/docs/src/content/get-started/designers/designing-with-ds.mdx b/docs/src/content/get-started/designers/designing-with-ds.mdx new file mode 100644 index 0000000000..3be1641e5b --- /dev/null +++ b/docs/src/content/get-started/designers/designing-with-ds.mdx @@ -0,0 +1,71 @@ +--- +id: designers/designing-with-ds +title: Designing with Design System 2.0 +description: How to start new designs and update existing projects to Design System 2.0 +section: designers +order: 2 +status: published +--- +import DropInCallout from "../../../components/DropInCallout.astro"; + +Designing with Design System 2.0 +What's new in DS 2.0 and how to start using it in your designs. +

+ The Digital Design and Delivery (DDD) Design System has evolved to better support how service teams + design and build digital government services. Design System 2.0 includes an updated design + language, new tokens, refreshed components, and ready-to-use templates. +

+Starting a new design +

+ Use DS 2.0 templates as your starting point. Templates package layout, navigation, spacing, and + example content that you can adapt to your service. Some templates are built for specific service types + (for example, public-facing forms and workspace applications), and others are more general-purpose + starting points you can use across many kinds of pages and flows. +

+ +Starting from an existing design + +Library swap +

+ Use a library swap if + your goal is to convert most of the file to DS 2.0 in one pass. +

+
    +
  • Make a copy of your file before you start.
  • +
  • Expect mixed results. Some screens may need cleanup after the swap.
  • +
+ +Manual rebuild +

Use a manual rebuild if you need more control.

+
    +
  • Rebuild your highest value screens first.
  • +
  • Consider using DS 2.0 templates as a base to speed things up.
  • +
+Update an existing project to the new design library + +Approach 1: Developer-first +

Use this approach in most cases.

+
    +
  1. A developer creates a new branch and completes the upgrade steps.
  2. +
  3. The team runs the upgraded application to see what changed.
  4. +
  5. Designers review the upgraded screens and identify what needs design updates.
  6. +
+

When reviewing the upgraded branch, watch for:

+
    +
  • Spacing and layout rhythm
  • +
  • Typography scale and weight usage
  • +
  • Dense or constrained screens (these often have the highest risk during an update)
  • +
+ +Approach 2: Design-first +

Use this approach when you want design work to move ahead of development work.

+
    +
  1. Identify custom elements that support your users' needs.
  2. +
  3. Create an inventory and prioritize items by importance and effort.
  4. +
  5. Redesign the highest priority items using the visual design values in the Styles library.
  6. +
+ + + In most cases, start with the developer-first approach. It helps you quickly see what changed in your real product, so you can focus design effort where it matters most. + + diff --git a/docs/src/content/get-started/designers/ux-guidelines.mdx b/docs/src/content/get-started/designers/ux-guidelines.mdx new file mode 100644 index 0000000000..cb05ff1c9f --- /dev/null +++ b/docs/src/content/get-started/designers/ux-guidelines.mdx @@ -0,0 +1,45 @@ +--- +id: designers/ux-guidelines +title: User experience guidelines +description: User experience guidelines for Government of Alberta digital products +section: designers +order: 3 +status: published +--- +import DropInCallout from "../../../components/DropInCallout.astro"; + +User experience guidelines +Digital products built for the Government of Alberta should comply with these guidelines to ensure a quality user experience for Albertans. + +
    +
  • User-centered: Designed with a clear understanding of users, their goals, tasks, environments, and context of use, using user-centered design methods.
  • +
  • Usable: Interfaces will be easy to use, enabling users to find the information they need and complete tasks successfully.
  • +
  • Accessible: Digital products will be inclusive, ensuring usability for everyone, regardless of physical or cognitive ability.
  • +
  • Trustworthy: Experiences will feel familiar and recognizable as a Government of Alberta product, ensuring users' security and privacy.
  • +
  • Modern: Digital experiences will meet present-day user expectations and preferences for aesthetics and interaction.
  • +
+ +

+ For more details on the process of assessing compliance to each guideline, refer to our + User Experience Guidelines and Design System Checklist. +

+Usability testing +

+ Usability testing is our preferred method to understand user needs as they relate to each guideline. +

+

Suitable usability testing includes:

+
    +
  • Diverse user group: Real users from different demographic, behavioural backgrounds, and geographical regions within Alberta that will experience the problem or benefit of the product.
  • +
  • Inclusive testing: Users with various physical and/or cognitive abilities, literacy levels, and tech savviness.
  • +
  • Device variety: A diverse range of devices that reflect users' preferred choice when interacting with government services.
  • +
  • Tasks: Activities that cover tasks and service process from end-to-end.
  • +
+

+ Frequent usability testing should be conducted to maintain product usability, effectiveness and + alignment to the user needs as they evolve over time. +

+

+ For guidance on the process of usability testing, refer to our + Understanding Usability documentation. +

+ diff --git a/docs/src/content/get-started/developers.mdx b/docs/src/content/get-started/developers.mdx new file mode 100644 index 0000000000..f6330b62e2 --- /dev/null +++ b/docs/src/content/get-started/developers.mdx @@ -0,0 +1,96 @@ +--- +id: developers +title: Developers overview +navLabel: Overview +description: How developers use the design system through tokens, components, examples, and templates +section: developers +order: 1 +status: published +--- +import { withBase } from "@/lib/base-url"; +import DropInCallout from "../../components/DropInCallout.astro"; + +Overview +As a developer, you use the Design System through tokens, components, examples, and templates. + +

+ The DDD Design System is built using Web Components. Web Components are framework-agnostic. + You can use them with Angular, React, or other front-end frameworks. +

+

The Design System includes:

+ +

+ Designers use equivalent resources in Figma. When they design with Design System components, you + can build with the matching coded components. This reduces custom development and rework. +

+

+ All Design System components are designed and built to meet + WCAG 2.2 accessibility standards. +

+Tokens +

+ Access the tokens as an + NPM package. +

+

+ Import the SCSS or CSS file into your project. Replace hard-coded values with Design System token variables. +

+

+ Designers reference the same tokens in their tools. This keeps design and development aligned during handoff. +

+ +Components +

Components are reusable user interface elements built for use across services.

+

You can:

+
    +
  • Use components individually
  • +
  • Combine them into patterns
  • +
  • Apply them in different contexts
  • +
+

Components are available:

+ +

+ Refer to the Design System technologies documentation + for implementation details. +

+ +Examples +

+ Examples are multiple components assembled in realistic service contexts. They help you understand + how to apply Design System guidance in a working interface. +

+

You can use examples to:

+
    +
  • Understand how components work together
  • +
  • Use them as a starting point for building parts of your interface
  • +
  • Use proven approaches to meet user needs
  • +
+

+ Examples help you build with more consistency and less rework. Use them to guide implementation, + then adjust them to meet the needs of your product. +

+ +Templates +

+ Templates are opinionated starting points for common service types. They package layout, navigation, + spacing, and example content so you can start with a proven structure instead of building from scratch. +

+

You can use templates to:

+
    +
  • Start a new product with a proven structure
  • +
  • Learn how components work together in a real layout
  • +
  • Adapt a proven starting point to fit your service needs
  • +
+

+ Templates help teams move faster, reduce rework, and stay aligned with Design System guidance. +

+ diff --git a/docs/src/content/get-started/developers/browsers.mdx b/docs/src/content/get-started/developers/browsers.mdx new file mode 100644 index 0000000000..6dc111dc47 --- /dev/null +++ b/docs/src/content/get-started/developers/browsers.mdx @@ -0,0 +1,78 @@ +--- +id: developers/browsers +title: Supported browsers +description: Browser and operating system support for Design System components +section: developers +order: 5 +status: published +--- +import { withBase } from "@/lib/base-url"; +import DropInCallout from "../../../components/DropInCallout.astro"; + +Supported browsers +Design System components are tested across supported browsers and devices. + +

+ We support the latest version of each browser listed on this page. Support applies to the browser and + operating system combinations shown in the table below. On mobile, support is limited to the browser + and operating system combinations listed for Android and iOS. +

+ +Browser and operating system support + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BrowserWindowsMac OSAndroidiOS
Google ChromeYesYesYesYes
Microsoft EdgeYesYes
Mozilla FirefoxYesYesYes
Apple SafariN/AYesN/AYes
+
+ +Representative mobile OS used in testing +
    +
  • Android OS: 10+
  • +
  • iOS: 15+
  • +
+Testing guidance +

+ Use supported browsers and operating system versions when developing and testing services. If you + encounter a browser-specific issue, follow the + Verify a bug process. +

+ diff --git a/docs/src/content/get-started/developers/bug.mdx b/docs/src/content/get-started/developers/bug.mdx new file mode 100644 index 0000000000..2d3880d825 --- /dev/null +++ b/docs/src/content/get-started/developers/bug.mdx @@ -0,0 +1,56 @@ +--- +id: developers/bug +title: Verify a bug +description: How to verify and report a bug in a Design System component +section: developers +order: 3 +status: published +--- +import DropInCallout from "../../../components/DropInCallout.astro"; + +Verify a bug +Follow this process when you encounter an issue with a Design System component. + +

+ These steps help confirm whether the issue is caused by the Design System, your product setup, or + custom code. This process applies to Angular and React implementations. +

+ +1. Check versions +

Confirm you are using the latest version of:

+
    +
  • Web Components
  • +
  • Angular or React
  • +
+

+ If you are not using the latest version, upgrade and retest. If the issue remains, continue to the next step. +

+ +2. Test with product templates +

Use the official Angular or React product templates to isolate the issue.

+ +

This helps determine whether the issue exists outside your project configuration.

+ +3. Recreate the issue +

Create a minimal test environment.

+
    +
  • Use only the code required for the example to function
  • +
  • Include only the component experiencing the issue
  • +
  • Remove unrelated dependencies or custom logic
  • +
+

Confirm whether the issue can be replicated.

+ +4. Share and report +

If you can reproduce the issue:

+
    +
  • Share the template application link in the #design-system-support Slack channel
  • +
  • Provide a link to your repository so the team can review and replicate the issue
  • +
+

+ Following these steps will help to ensure efficient investigation and quicker resolution of + design system component issues. +

+ diff --git a/docs/src/content/get-started/developers/setup.mdx b/docs/src/content/get-started/developers/setup.mdx new file mode 100644 index 0000000000..3eda4feeca --- /dev/null +++ b/docs/src/content/get-started/developers/setup.mdx @@ -0,0 +1,128 @@ +--- +id: developers/setup +title: Developer setup +navLabel: Setup +description: Set up Angular, React, or Web Components to use the GoA Design System +section: developers +order: 2 +status: published +--- +import DropInCallout from "../../../components/DropInCallout.astro"; + +Developer setup +Set up the Government of Alberta Design System in Angular, React, or directly with Web Components. + +

Angular UI components

+ + Supported versions: 18, 19, 20, 21 + + + This is the web component library and utilizes Angular's web component + integration. + + +

1. Add dependencies

+
npm i @abgov/web-components
+npm i @abgov/angular-components
+npm i @abgov/ui-components-common
+npm i @abgov/design-tokens
+ +

2. Link ionicons in app/index.html

+ + Add the following in the head element: + +
{`
+`}
+ +

3. Update src/app/app.module.ts

+ + Update src/app/app.module.ts as per the four steps below: + +
{`// 1. Import the CUSTOM_ELEMENTS_SCHEMA
+import { CUSTOM_ELEMENTS_SCHEMA } from "@angular/core";
+
+// 2. Import the libs
+import "@abgov/web-components";
+import { AngularComponentsModule } from "@abgov/angular-components";
+
+@NgModule({
+	declarations: [AppComponent],
+	imports: [
+		// 3. Add the needed imports
+		BrowserModule,
+		AngularComponentsModule,
+	],
+	providers: [],
+	bootstrap: [AppComponent],
+	// 4. Add the CUSTOM_ELEMENTS_SCHEMA to the NgModule
+	schemas: [CUSTOM_ELEMENTS_SCHEMA],
+	})
+export class AppModule {}`}
+ +

4. Add the styles link in src/styles.css

+
@import "@abgov/web-components/index.css";
+@import "@abgov/design-tokens/dist/tokens.css";
+ + + +

React UI components

+ + Supported versions: 17, 18, 19 + + + This library contains React components which wrap the Government of Alberta Web + Components. + + +

1. Add dependencies

+
npm i @abgov/react-components
+npm i @abgov/web-components
+npm i @abgov/ui-components-common
+npm i @abgov/design-tokens
+ +

2. Link ionicons in app/index.html

+ + Add the following to the head element: + +
{`
+`}
+ +

3. Import the web components in src/main.tsx

+
import "@abgov/web-components";
+ +

4. Import the styles in src/index.css

+
@import "@abgov/web-components/index.css";
+@import "@abgov/design-tokens/dist/tokens.css";
+ + + +

Web components

+ + This library contains web components from the Government of Alberta. + + +

1. Add dependencies

+
npm i @abgov/web-components
+npm i @abgov/design-tokens
+ +

2. Link ionicons in index.html

+ + Add the following in the head element: + +
{`
+`}
+ +

3. Import the web components into src/main.js

+
import "@abgov/web-components";
+ +

4. Add the styles link in your main CSS file

+ + Add the following in src/assets/main.css or wherever your main CSS file is + located: + +
@import "@abgov/web-components/index.css";
+@import "@abgov/design-tokens/dist/tokens.css";
+ + + + diff --git a/docs/src/content/get-started/developers/technologies.mdx b/docs/src/content/get-started/developers/technologies.mdx new file mode 100644 index 0000000000..2a1d77cd5b --- /dev/null +++ b/docs/src/content/get-started/developers/technologies.mdx @@ -0,0 +1,101 @@ +--- +id: developers/technologies +title: Technologies +description: An overview of the technologies used in the Design System +section: developers +order: 4 +status: published +--- +import { withBase } from "@/lib/base-url"; +import DropInCallout from "../../../components/DropInCallout.astro"; + +Technologies +An overview of the technologies used in the Design System. + +How the technologies fit together +

+ The Design System is built on Web Components. Most component functionality lives in the core Web + Components layer. Angular and React wrappers sit on top of that layer to make the components easier + to use in those frameworks. +

+

+ We use Svelte to author the components that are compiled to custom elements. You can use the Design + System through the core Web Components or through Angular and React wrappers. +

+Diagram showing the technology layers: Svelte compiles to Web Components, which are wrapped by Angular and React +Web Components +

+ Web Components + are a set of standard web technologies that allow you to create reusable custom elements. Each component + includes its own structure, styling, and behaviour. This keeps it independent from the rest of your code. +

+

+ In the Design System, Web Components are the core library. They are framework-agnostic, so teams + can use them in different front-end environments. +

+ +Benefits of using Web Components +
    +
  • Reuse: Build once and use across pages, applications, and frameworks
  • +
  • Browser support: Work in modern browsers without additional libraries
  • +
  • Maintenance: Modular and self-contained structure simplifies updates
  • +
  • Encapsulation: Structure, style, and behaviour remain isolated from other page elements
  • +
  • Reliability: Code is not spread across HTML and JS files, thereby avoiding inconsistencies
  • +
  • Flexibility: Use inline, import, or compile components as needed
  • +
  • Composability: Combine components or integrate them with other components
  • +
+ + + Do not use Web Components directly unless there is a specific reason to do so. Using wrappers provides type checking and developer helpers that are not available when working with the core Web Components alone. + +Svelte +

+ Svelte is the framework used to generate the + Design System Web Components. Svelte combines JavaScript (logic), HTML (structure), and CSS (style) + within a single file. It compiles these into efficient, reusable components. +

+Why Svelte +

We use Svelte to:

+
    +
  • Build reusable Web Components
  • +
  • Keep component logic, structure, and styling together
  • +
  • Support integration with multiple front-end frameworks
  • +
+Angular + + + Supported versions: 18, 19, 20, 21 + + +

+ Angular is a TypeScript-based framework for building + web applications. The Design System supports Angular through Angular wrappers around the core Web Components. +

+ +How Web Components and Angular work together +

Angular wrappers are created around the Web Components. These wrappers:

+
    +
  • Manage component properties and events
  • +
  • Support form binding (Reactive and Template-driven)
  • +
  • Allow integration within Angular applications
  • +
+

The Angular application interacts with the wrapper, which renders the underlying Web Component.

+React + + + Supported versions: 17, 18, 19 + + +

+ React is an open-source JavaScript library used to + build user interfaces from reusable components. +

+ +How Web Components and React work together +

React wrappers are created around the Web Components. These wrappers:

+
    +
  • Manage properties and events
  • +
  • Enable integration within React applications
  • +
+

The React application interacts with the wrapper, which renders the underlying Web Component.

+ diff --git a/docs/src/content/get-started/index.mdx b/docs/src/content/get-started/index.mdx new file mode 100644 index 0000000000..3c989ccc42 --- /dev/null +++ b/docs/src/content/get-started/index.mdx @@ -0,0 +1,97 @@ +--- +id: index +title: Start with the design system +description: Start with the design system to build on the research and experience of other service teams +section: intro +order: 1 +status: published +--- +import { withBase } from "@/lib/base-url"; +import DropInCallout from "../../components/DropInCallout.astro"; + +Start with the design system +Start with the design system to build on the research and experience of other service teams. This helps you avoid repeating work that has already been done. + + + The design system gives you a strong foundation for common service needs. It allows your team to focus on the specific challenges of your product. + Build on it. Do not start from scratch. + + +Design system by role + + + +Why start with the design system? + +Streamline collaboration +

+ Designers and developers work from shared components and guidance. This reduces rework and misalignment. +

+ +Improve accessibility +

Accessibility is built into both the design and coded components.

+ +Reduce testing effort +

Components are tested across devices, browsers, and service contexts.

+ +Maintain consistency +

+ Components align with the broader system to create a cohesive user experience across government services. +

+ +Spend more time on high-value work +

Using existing components saves time. You can focus on work that improves service quality, including:

+
    +
  • Usability testing
  • +
  • User research
  • +
  • Content design
  • +
  • Accessibility reviews
  • +
  • Design quality checks
  • +
  • Low-fidelity prototyping and testing
  • +
+

This leads to better outcomes for users.

+How to use the design system in your service +

Follow these steps when designing and building your service.

+ +Use system components first +

Start with existing components and patterns. These meet most user needs.

+ +Identify gaps through user testing +

Test your service with users. Identify needs that are not covered by current components.

+ +Before you design something new +

+ Check what's already available and what's in progress. The team can point you to existing components, + solutions other teams have built, and planned work that may meet your need. +

+ +Design and test new solutions when you need them +

+ If you still have a gap, design a new solution and test it with users. Move forward only when + testing shows clear user value. +

+ +Share what you learn +

+ Share your findings with the design system team. Your solution may become part of the design system. +

+ + + Do not create custom components without a clear user need. + Unnecessary customization: +
    +
  • Increases maintenance effort
  • +
  • Slows delivery
  • +
  • Reduces consistency
  • +
+ Always confirm the need through research and testing. +
+ + + View the design system governance process + + diff --git a/docs/src/content/get-started/migration-guide.mdx b/docs/src/content/get-started/migration-guide.mdx new file mode 100644 index 0000000000..27692407b0 --- /dev/null +++ b/docs/src/content/get-started/migration-guide.mdx @@ -0,0 +1,107 @@ +--- +id: migration-guide +title: Migration guide +description: Choose the right Design System 2.0 migration pathway for your product +section: intro +order: 5 +status: published +--- +import { withBase } from "@/lib/base-url"; + +Migration guide +Design System 2.0 (DS 2.0) becomes the Government of Alberta standard in March 2026. New products starting after launch should use DS 2.0. Existing active products should plan their move to DS 2.0 during the recommended migration window, which runs from March 2026 to September 2026. + + + +

Migration pathways

+The right migration path depends on your product's context, including team funding and capacity, other delivery obligations, product lifecycle, and the effort required to update. The three pathways are standard migration, late migration, and no migration. + +

Starting a new product

+If your product starts after March 2026, start with DS 2.0. Migration pathways apply to existing products moving from DS 1.x to DS 2.0. + +

Compare the pathways

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
PathwayUse it whenRecommendation
Standard migrationYour product has an active funded team and can migrate by September 2026Recommended default
Late migrationYour team cannot meet the standard window because of delivery timelines, dependencies, or capacity constraintsOnly when necessary
No migrationYour product does not have an active funded team and/or is not in a position to upgradeOnly in specific cases
+
+
+ +

Standard migration

+Standard migration is the default pathway for active products. +Choose this path if your product has an active funded team and can schedule migration work between March 2026 and September 2026. This is the recommended path for most teams because it keeps your product aligned with the current standard and gives you the best support. +Use this pathway when: +
    +
  • your product is actively maintained
  • +
  • your team can reserve time to migrate by September 2026
  • +
  • you want access to the latest templates, components, tokens, and guidance
  • +
+Plan for work across the product team. Typical upgrade tasks include the library updates, adjusting spacing and typography, and updating custom code to align with the DS 2.0 visual design. This is a significant update and will usually involve design, development, and testing. + +

Late migration

+Late migration is a last-resort pathway for active products. +Choose this path only when delivery deadlines, dependencies, or capacity constraints make the standard migration window unrealistic. This path gives your team more time, but it also increases risk and reduces your ongoing support. +Use this pathway when: +
    +
  • a major delivery deadline blocks migration work
  • +
  • critical dependencies prevent the upgrade during the standard window
  • +
  • capacity or funding makes the standard window unrealistic
  • +
+Delaying migration means your product will wait longer to benefit from DS 2.0 improvements. Over time, unresolved issues will accumulate and your product will be inconsistent with the new standard for longer. + +

No migration

+No migration is an opt-out pathway for specific situations. +Choose this path only when your product does not have an active funded team and/or is not in a position to upgrade. In these cases, the product may remain on DS 1.x. +Teams on this path should understand that the product will not receive DS 2.0 improvements and will not align with the current standard. Support for DS 1.x is limited from March to September and ends after September 2026. + + + +

What changes after launch

+After the DS 2.0 launch in March 2026: +
    +
  • New products should use DS 2.0
  • +
  • Active products should aim to migrate by September 2026
  • +
  • After launch, web components will move to version 2.x. Although this is a major version update, it does not include breaking changes.
  • +
  • Angular 4.x and React 6.x receive limited fixes or features from March to September
  • +
  • Support for DS 1.0 ends after September 2026
  • +
  • Web components will update to a new major version after September 2026
  • +
+ +

How to choose a pathway

+Use these questions to guide your decision: +
    +
  • Is this a new product starting after March 2026?
  • +
  • Does the product have an active funded team?
  • +
  • Can the team schedule migration work before September 2026?
  • +
  • Are there delivery deadlines or dependencies that block the standard window?
  • +
  • Is the team prepared to accept reduced support and higher maintenance risk if migration is delayed?
  • +
+ + + + Review the setup steps for developers + diff --git a/docs/src/content/get-started/out-of-support.mdx b/docs/src/content/get-started/out-of-support.mdx new file mode 100644 index 0000000000..fa61fea200 --- /dev/null +++ b/docs/src/content/get-started/out-of-support.mdx @@ -0,0 +1,43 @@ +--- +id: out-of-support +title: Out of support versions +description: Design System versions that are no longer supported +section: appendix +order: 3 +status: published +--- +import { withBase } from "@/lib/base-url"; +import DropInCallout from "../../components/DropInCallout.astro"; + +Out-of-support versions +With the launch of the new Design System, support for Angular v4 and lower, and React v6 and lower is significantly reduced. + +What this means + +Fewer fixes or patches +

Bug fixes and security updates are no longer prioritized for these versions.

+ +No new features +

All new features and enhancements are released only in the current major version.

+ +Use at your own risk +

Existing projects may continue to run. However:

+
    +
  • Compatibility with new browsers or operating systems is not guaranteed
  • +
  • Compatibility with future framework updates is not guaranteed
  • +
  • Issues discovered in these versions will not be resolved
  • +
+ + + Projects using Angular v4 and lower, and React v6 and lower will continue to function. New issues or defects identified in these versions may not be fixed. + +What to do next +

+ Upgrade to the latest supported version. Refer to the + Developer setup page. +

+

+ If you need support planning your upgrade, + book time in drop-in hours. +

+ diff --git a/docs/src/content/get-started/qa-testing.mdx b/docs/src/content/get-started/qa-testing.mdx new file mode 100644 index 0000000000..edb2d726e1 --- /dev/null +++ b/docs/src/content/get-started/qa-testing.mdx @@ -0,0 +1,67 @@ +--- +id: qa-testing +title: QA testing +description: Testing process for Design System components +section: appendix +order: 1 +status: published +--- +import DropInCallout from "../../components/DropInCallout.astro"; + +QA testing +This page outlines the testing process for the Design System. The process ensures components function correctly and integrate within products. + +Testing objectives +

QA testing ensures that:

+
    +
  • Coded components match the design specifications
  • +
  • Components work in both React and Angular implementations
  • +
  • Components are responsive across screen sizes
  • +
  • Components meet accessibility requirements
  • +
  • Mobile behaviour is validated
  • +
  • Documentation on the Design System website is accurate
  • +
+Test cases + +Component testing +
    +
  • Confirm the rendered component matches design and styling guidelines
  • +
  • Confirm configured properties display correctly
  • +
  • Confirm the expected event triggers when interacting with the component
  • +
+ +Responsiveness testing +
    +
  • Test components on mobile, tablet, and desktop screen sizes
  • +
  • Use browser developer tools to simulate devices
  • +
+ +Accessibility testing +
    +
  • Run Lighthouse audits to review accessibility scores
  • +
  • Confirm appropriate ARIA (Accessible Rich Internet Applications) roles and labels
  • +
  • Test keyboard navigation
  • +
  • Test with NVDA screen reader
  • +
+ +Cross-browser testing +
    +
  • Test on the latest versions of Chrome, Firefox, Safari, and Edge
  • +
  • Use Chrome device mode to simulate mobile environments
  • +
  • Confirm consistent appearance and behaviour across browsers
  • +
+ +Bug testing +

When a bug is fixed:

+
    +
  1. Reproduce the issue using the main branch.
  2. +
  3. Verify the fix in the pull request branch.
  4. +
  5. Retest the component across all relevant areas.
  6. +
+

Confirm the issue no longer occurs.

+Reporting +
    +
  • Document updated test results, findings, and screenshots in the pull request comments
  • +
  • Log newly discovered issues in GitHub
  • +
+ diff --git a/docs/src/content/get-started/roadmap.mdx b/docs/src/content/get-started/roadmap.mdx new file mode 100644 index 0000000000..0672ebdd37 --- /dev/null +++ b/docs/src/content/get-started/roadmap.mdx @@ -0,0 +1,127 @@ +--- +id: roadmap +title: Roadmap +description: High-level roadmap for the design system team's 2026-27 fiscal year +section: intro +order: 4 +status: published +--- + +Roadmap +A high-level summary of the work the design system team plans to focus on in the 2026-27 Fiscal Year. + +The roadmap is subject to change as we gather new information. We will communicate updates to ensure product teams can align and plan their work accordingly. + +For more details on our priorities and day-to-day activities, see our design system backlog. + + + +

Now

+Focus: Drive DS 2.0 adoption momentum, protect post-launch stability, and prove DS 2.0 helps teams move faster through prescriptive guidance and examples. + +

DS 2.0 adoption and satisfaction measurement

+Objective: Establish reliable DS 2.0 adoption tracking and reporting, and pair it with satisfaction signals from designers, developers, and end users to understand whether DS 2.0 is improving service outcomes as teams upgrade. +Benefit: Enables accurate progress reporting and provides evidence that DS 2.0 is improving usability, accessibility, and experience quality, not only adoption. +Examples: +
    +
  • Create a mechanism to reliably collect and report adoption rate
  • +
  • Track upgrade progress against the adoption schedule
  • +
  • Capture qualitative signals from teams (developer and designer feedback themes)
  • +
  • Capture end-user feedback where available (citizen or worker satisfaction, accessibility and usability feedback)
  • +
+ +

Product acceleration enablement

+Objective: Provide prescriptive guidance and resources that help teams get to screens, prototypes, and working experiences faster using DS 2.0. +Benefit: Reduces time to first screens and improves consistency by helping teams start from proven patterns instead of building from scratch. +Examples: +
    +
  • Create resources that show how to quickly prototype with DS 2.0 components and examples
  • +
  • Provide contextual starting points for teams using Public form and Workspace templates
  • +
  • Pilot DS 2.0 with teams to generate strong examples to share
  • +
  • Create and publish migration success stories
  • +
+ +

Design system MCP

+Objective: Stand up the design system Model Context Protocol (MCP) capability so AI tools and platforms can reliably access design system guidance, components, patterns, and standards. +Benefit: Helps teams generate more consistent, standards-aligned front-ends by making trusted design system context available directly in AI-assisted workflows. +Examples: +
    +
  • Define the initial MCP scope and supported design system resources
  • +
  • Stand up the MCP server and validate the hosting and maintenance approach
  • +
  • Test the MCP use in real product workflows and capture gaps to address
  • +
  • Document recommended workflows for teams
  • +
+ +

Vue support decision

+Objective: Explore and define the minimum work required to confidently state DS 2.0 officially supports Vue, including scope, constraints, and support model. +Benefit: Prevents unclear commitments and reduces strategic risk by enabling an informed investment decision aligned to organizational needs. +Examples: +
    +
  • Define what "official Vue support" means
  • +
  • Outline the minimum supportable scope
  • +
  • Identify implications for documentation, maintenance, testing, and support
  • +
+ + + +

Next

+Focus: Improve the core Public form and Workspace experience, mature reusable patterns and examples, reduce adoption friction through better packaging, and execute on the chosen Vue direction. + +

Public form and Workspace capability improvements

+Objective: Enhance key Public form and Workspace capabilities based on adoption needs and workflow requirements. +Benefit: Improves feature sets and reduces the need for custom one-off solutions by making common workflows easier to implement with DS 2.0. +Example: +
    +
  • Build the review, revise, resubmit feature
  • +
+ +

Examples and pattern maturity

+Objective: Expand and refine examples and position them as adaptable reusable patterns that teams can apply with confidence. +Benefit: Improves self-serve success and product consistency, reducing implementation variance and support demand over time. +Examples: +
    +
  • Continue expanding and refining examples
  • +
  • Show how components and examples combine into larger contexts and workflows
  • +
+ +

Library packaging and tech stack upgrades

+Objective: Reduce friction in how design system assets are bundled and adopted across libraries and update important tech stacks. +Benefit: Lowers setup and upgrade complexity, and keeps the design system up to date with the latest supported versions. +Examples: +
    +
  • Improve how code libraries are bundled together (React, web components, tokens)
  • +
  • Update to Svelte 5
  • +
+ +

Vue follow-through

+Objective: Based on Vue discovery, either implement formal Vue support or clearly position Angular and React as the recommended approach for teams using AI-assisted workflows. +Benefit: Provides clear direction to product teams and reduces uncertainty, enabling progress on a supported path while keeping support sustainable for the design system team. +Examples: +
    +
  • Publish Vue support guidance and expectations
  • +
  • Implement agreed scope if approved
  • +
  • Publish recommended alternatives if Vue support is not pursued
  • +
+ + + +

Later

+Focus: Support DS 2.0 version updates and improve documentation and communications quality to support scaling and sustainability. + +

Documentation and communications improvements

+Objective: Improve how teams access and understand design system guidance, and communicate design system value areas like accessibility more clearly. +Benefit: Increases trust, improves reuse, and supports self-serve adoption by making guidance easier to consume and share. +Examples: +
    +
  • Add markdown file download to website documentation
  • +
  • Articulate accessibility work more clearly (what is covered and how it supports teams)
  • +
+ +

Targeted capacity support for DS 2.0 version updates

+Objective: Provide targeted design system team capacity to help remaining DS 1.x product teams complete the DS 2.0 version update. +Benefit: Accelerates adoption progress and unblocks teams facing more difficult migrations, supporting adoption targets while keeping support sustainable through a focus on teams most in need. +Example: + +
    +
  • Focus migration support on late adopters facing systemic barriers to upgrading
  • +
diff --git a/docs/src/layouts/ComponentPageLayout.astro b/docs/src/layouts/ComponentPageLayout.astro index d2bf40a3e1..e4e8cf986f 100644 --- a/docs/src/layouts/ComponentPageLayout.astro +++ b/docs/src/layouts/ComponentPageLayout.astro @@ -17,6 +17,7 @@ import BaseLayout from './BaseLayout.astro'; import { SiteNav } from '../components/SiteNav'; import { MobileHeader } from '../components/MobileHeader'; import { getNavCategories } from '../lib/nav-categories'; +import { getGetStartedNav } from '../lib/get-started-nav'; interface Props { title: string; @@ -27,6 +28,7 @@ interface Props { const { title, description, currentSlug, category } = Astro.props; const navCategories = await getNavCategories(); +const getStartedNav = await getGetStartedNav(); --- @@ -42,6 +44,7 @@ const navCategories = await getNavCategories(); currentCategory={category} initialSection="components" categories={navCategories} + getStartedNav={getStartedNav} /> diff --git a/docs/src/layouts/DocumentationPageLayout.astro b/docs/src/layouts/DocumentationPageLayout.astro index 2983821d63..bf7355fd71 100644 --- a/docs/src/layouts/DocumentationPageLayout.astro +++ b/docs/src/layouts/DocumentationPageLayout.astro @@ -22,6 +22,7 @@ import { SiteNav } from '../components/SiteNav'; import { MobileHeader } from '../components/MobileHeader'; import { TableOfContents } from '../components/TableOfContents'; import { getNavCategories } from '../lib/nav-categories'; +import { getGetStartedNav } from '../lib/get-started-nav'; interface Props { title: string; @@ -42,6 +43,7 @@ const { tocQuery = 'h2[id], h3[id], goa-text[id][as="h2"], goa-text[id][as="h3"]' } = Astro.props; const navCategories = await getNavCategories(); +const getStartedNav = await getGetStartedNav(); --- @@ -53,6 +55,7 @@ const navCategories = await getNavCategories(); client:only="react" initialSection={section} categories={navCategories} + getStartedNav={getStartedNav} /> diff --git a/docs/src/layouts/ExamplesPageLayout.astro b/docs/src/layouts/ExamplesPageLayout.astro index 75883d0201..860ec99154 100644 --- a/docs/src/layouts/ExamplesPageLayout.astro +++ b/docs/src/layouts/ExamplesPageLayout.astro @@ -15,6 +15,7 @@ import BaseLayout from './BaseLayout.astro'; import { SiteNav } from '../components/SiteNav'; import { MobileHeader } from '../components/MobileHeader'; import { getNavCategories } from '../lib/nav-categories'; +import { getGetStartedNav } from '../lib/get-started-nav'; interface Props { title: string; @@ -24,6 +25,7 @@ interface Props { const { title, description, currentSlug } = Astro.props; const navCategories = await getNavCategories(); +const getStartedNav = await getGetStartedNav(); --- @@ -37,6 +39,7 @@ const navCategories = await getNavCategories(); currentSlug={currentSlug} initialSection="examples" categories={navCategories} + getStartedNav={getStartedNav} /> diff --git a/docs/src/layouts/HomeLayout.astro b/docs/src/layouts/HomeLayout.astro index ca6999ab88..20cf560e0d 100644 --- a/docs/src/layouts/HomeLayout.astro +++ b/docs/src/layouts/HomeLayout.astro @@ -15,6 +15,7 @@ import BaseLayout from './BaseLayout.astro'; import { SiteNav } from '../components/SiteNav'; import { MobileHeader } from '../components/MobileHeader'; import { getNavCategories } from '../lib/nav-categories'; +import { getGetStartedNav } from '../lib/get-started-nav'; interface Props { title: string; @@ -23,6 +24,7 @@ interface Props { const { title, description } = Astro.props; const navCategories = await getNavCategories(); +const getStartedNav = await getGetStartedNav(); --- @@ -35,6 +37,7 @@ const navCategories = await getNavCategories(); client:only="react" initialSection="parent" categories={navCategories} + getStartedNav={getStartedNav} /> diff --git a/docs/src/layouts/TokensLayout.astro b/docs/src/layouts/TokensLayout.astro index 6549a769aa..c7e73a8e36 100644 --- a/docs/src/layouts/TokensLayout.astro +++ b/docs/src/layouts/TokensLayout.astro @@ -16,6 +16,7 @@ import Breadcrumbs from '../components/Breadcrumbs.astro'; import { SiteNav } from '../components/SiteNav'; import { MobileHeader } from '../components/MobileHeader'; import { getNavCategories } from '../lib/nav-categories'; +import { getGetStartedNav } from '../lib/get-started-nav'; interface Props { title: string; @@ -24,6 +25,7 @@ interface Props { const { title, description } = Astro.props; const navCategories = await getNavCategories(); +const getStartedNav = await getGetStartedNav(); --- @@ -36,6 +38,7 @@ const navCategories = await getNavCategories(); client:only="react" initialSection="tokens" categories={navCategories} + getStartedNav={getStartedNav} /> diff --git a/docs/src/lib/get-started-nav.ts b/docs/src/lib/get-started-nav.ts new file mode 100644 index 0000000000..d73df4cb40 --- /dev/null +++ b/docs/src/lib/get-started-nav.ts @@ -0,0 +1,77 @@ +/** + * get-started-nav.ts + * + * Builds the Get Started submenu structure from the content collection. + * Used by layouts to pass nav data to SiteNav -> GetStartedSubMenu. + * + * Section convention: + * - "intro" => top-level pages above grouped sections + * - "designers" => Designers group + * - "developers" => Developers group + * - "appendix" => top-level pages below grouped sections + */ + +import { getCollection } from "astro:content"; + +export interface GetStartedNavItem { + label: string; + url: string; +} + +export interface GetStartedNavGroup { + name: string; + slug: string; + pages: GetStartedNavItem[]; +} + +export interface GetStartedNav { + topPages: GetStartedNavItem[]; + groups: GetStartedNavGroup[]; + bottomPages: GetStartedNavItem[]; +} + +/** Display metadata for the grouped sections (not stored in content collection) */ +const GROUP_META: Record = { + designers: { name: "Designers" }, + developers: { name: "Developers" }, +}; + +/** Canonical display order for grouped sections in the submenu */ +const GROUP_ORDER = ["designers", "developers"]; + +function entryToItem(entry: { + slug: string; + data: { title: string; navLabel?: string }; +}): GetStartedNavItem { + return { + label: entry.data.navLabel ?? entry.data.title, + url: entry.slug === "index" ? "/get-started" : `/get-started/${entry.slug}`, + }; +} + +function bySection( + entries: Awaited>>, + section: string, +): typeof entries { + return entries + .filter((e) => e.data.section === section) + .sort((a, b) => a.data.order - b.data.order); +} + +export async function getGetStartedNav(): Promise { + const entries = await getCollection("get-started"); + const published = entries.filter((e) => e.data.status !== "deprecated"); + + const topPages = bySection(published, "intro").map(entryToItem); + const bottomPages = bySection(published, "appendix").map(entryToItem); + + const groups = GROUP_ORDER.filter((slug) => + published.some((e) => e.data.section === slug), + ).map((slug) => ({ + name: GROUP_META[slug].name, + slug, + pages: bySection(published, slug).map(entryToItem), + })); + + return { topPages, groups, bottomPages }; +} diff --git a/docs/src/pages/get-started/[...slug].astro b/docs/src/pages/get-started/[...slug].astro new file mode 100644 index 0000000000..263038105d --- /dev/null +++ b/docs/src/pages/get-started/[...slug].astro @@ -0,0 +1,25 @@ +--- +import { getCollection, render } from "astro:content"; +import DocumentationPageLayout from "../../layouts/DocumentationPageLayout.astro"; + +export async function getStaticPaths() { + const entries = await getCollection("get-started"); + return entries.map((entry) => ({ + // The "index" entry maps to the collection root URL (/get-started). + // Astro's [...slug] rest route accepts undefined for the parent path. + params: { slug: entry.slug === "index" ? undefined : entry.slug }, + props: { entry }, + })); +} + +const { entry } = Astro.props; +const { Content } = await render(entry); +--- + + + + diff --git a/docs/src/pages/get-started/automated-accessibility.astro b/docs/src/pages/get-started/automated-accessibility.astro deleted file mode 100644 index 061b16c880..0000000000 --- a/docs/src/pages/get-started/automated-accessibility.astro +++ /dev/null @@ -1,92 +0,0 @@ ---- -/** - * Get Started - Automated Accessibility - * - * Guidance on combining automated and manual accessibility testing. - * Content from Confluence (Brief 87). - */ -import DropInCallout from '../../components/DropInCallout.astro'; -import DocumentationPageLayout from '../../layouts/DocumentationPageLayout.astro'; ---- - - - Automated accessibility - - Automated accessibility testing tools help you identify potential accessibility issues. Use them as a starting point. - - -

- However, these tools are not a complete solution. They can produce: -

-
    -
  • False positives – flagging issues that are not actual problems
  • -
  • False negatives – missing real accessibility barriers
  • -
-

- To ensure your digital product is accessible, combine automated testing with manual testing and apply - human judgment. -

- Why automated tools alone are not enough - - False positives -

- Automated tools may flag elements as non-compliant even when they work correctly for users. For - example, a tool may report that an input is "missing an id" even though it is correctly associated with a - label using a valid method, such as wrapping the input inside a <label> element. -

- - False negatives -

- Automated tools cannot detect nuanced or context-specific issues. For example, all interactive - elements may be tabbable, but the order jumps around the page. Tools often don't judge whether the - tab order is logical for completing the task. -

- - Real user experience -

- Accessibility ensures real people can use a product effectively. Automated tools cannot fully simulate - how users interact with your product. -

- Steps for effective accessibility testing - -
    -
  1. - Run automated tools to get an initial assessment. -
  2. -
  3. - Manually verify flagged issues and review the element's intent and context. -
  4. -
  5. - Do additional manual testing for issues automated tools cannot detect: -
      -
    • Test with a screen reader, such as VoiceOver (macOS) or NVDA (Windows)
    • -
    • Test keyboard navigation by checking focus visibility and order
    • -
    -
  6. -
  7. - Report findings -
      -
    • Record what you tested, what failed, and how to reproduce it
    • -
    • If the issue relates to a design system component, submit it using the design system bug report form
    • -
    -
  8. -
- Why this process matters -

- Automated tools provide helpful insight. Relying only on automation can result in: -

-
    -
  • Time spent fixing issues that are not real barriers
  • -
  • Missed opportunities to address genuine accessibility issues
  • -
  • A false sense of compliance without meaningful usability improvements
  • -
-

- Combine automated and manual testing to identify real barriers. This approach improves accessibility - and overall product quality. -

- -
diff --git a/docs/src/pages/get-started/component-lifecycle.astro b/docs/src/pages/get-started/component-lifecycle.astro deleted file mode 100644 index 42b0df0f4a..0000000000 --- a/docs/src/pages/get-started/component-lifecycle.astro +++ /dev/null @@ -1,67 +0,0 @@ ---- -import { withBase } from '@/lib/base-url'; -/** - * Get Started - Component Lifecycle - * - * Defines the stages each Design System component moves through. - * Content from Confluence (Brief 87). - */ -import DropInCallout from '../../components/DropInCallout.astro'; -import DocumentationPageLayout from '../../layouts/DocumentationPageLayout.astro'; ---- - - - Component lifecycle - - The component lifecycle defines the stages each Design System component moves through, from - Experimental to Production to Legacy. - - -

- To request a new component or propose an enhancement, follow the - design contribution process. -

- Experimental -

- Experimental components are new or significantly updated. They are available for testing and feedback - before public release. -

- - Characteristics -
    -
  • Feedback is gathered from selected teams
  • -
  • May be unstable or include breaking changes
  • -
  • Limited documentation
  • -
- Production -

- Production components are stable and ready for broader adoption. -

- - Characteristics -
    -
  • Fully documented, including design guidelines, properties, and examples
  • -
  • Meet accessibility and design system standards
  • -
  • Optimized for mobile use
  • -
  • Actively maintained with updates and bug fixes
  • -
  • Publicly available documentation
  • -
- Legacy -

- Legacy components are older components maintained primarily to support older implementations. If - possible, transition to production is recommended. -

- - Characteristics -
    -
  • No active maintenance or updates
  • -
  • Critical issues may remain unresolved
  • -
  • Recommended alternative clearly identified
  • -
  • Marked as "Legacy" in official documentation
  • -
- -
diff --git a/docs/src/pages/get-started/contribute.astro b/docs/src/pages/get-started/contribute.astro deleted file mode 100644 index 7a2ea6d675..0000000000 --- a/docs/src/pages/get-started/contribute.astro +++ /dev/null @@ -1,188 +0,0 @@ ---- -import { withBase } from '@/lib/base-url'; -/** - * Get Started - Contribute - * - * How to contribute to the Design System (design and code). - * Content from Confluence (Brief 87). - */ -import DropInCallout from '../../components/DropInCallout.astro'; -import DocumentationPageLayout from '../../layouts/DocumentationPageLayout.astro'; ---- - - - Contribute - - The Design System is a shared resource used and improved by service teams. All roles are encouraged - to contribute. - - -

- Start by using existing Design System components and patterns. If a component or pattern does not - meet your needs, follow the contribution process below. -

- Design contribution process -

- If a required component or example does not exist in production, - contact the Design System team. We will review the request together and determine next steps. -

- - 1. Contact the team -

- Book a design system drop-in hours session. -

-

Be prepared to:

-
    -
  • Describe the component or pattern and its purpose
  • -
  • Explain your user needs and service goals
  • -
  • Share iterations explored with and without the Design System
  • -
- - - There are open contribution files in Figma for every component and pattern in the design system, - including unpublished ideas and experiments. - - - 2. Contribution criteria -

A proposed component or pattern must meet the following criteria.

- - Proposal criteria -

Useful

-

- Evidence shows it supports multiple teams or services. Provide screenshots or links to demonstrate usage. -

- -

Unique

-

- It does not duplicate an existing component or pattern. If replacing an existing component, provide - evidence that the new approach improves usability or accessibility. -

- - Publication standards -

To be published, the solution must be:

- -

Usable

-

- Improves clarity, usability, and accessibility for users. Is informed by research and addresses a - validated user need. -

- -

Universal

-

- Inclusive and accessible. Meets or exceeds accessibility standards. - WCAG 2.2 AA is the minimum requirement. -

- - 3. Backlog and collaboration -

- If approved, the item is added to the - Design System's backlog. -

-

- When development begins, the Design System team will collaborate with you to confirm detailed requirements. -

- Code contribution process -

- The Design System supports multiple development frameworks through Web Components. Contributing full - components can be complex. Smaller contributions are encouraged. -

- - Recommended contribution types -
    -
  • Bug fixes
  • -
  • Documentation updates
  • -
  • Enhancements to existing components
  • -
-

- Start by contacting the team in the #design-system-support Slack channel. -

-

- Select an issue tagged ready-for-contribution from the - backlog. - Confirm which issue you will work on. -

- - - Since the repository is public, use a personal GitHub account instead of your Enterprise Managed User (EMU) account. - - - Set up your contribution environment -
    -
  1. Clone the ui-components repository.
  2. -
  3. Open the repository in your IDE.
  4. -
  5. Create a branch named: contributions/story-number
  6. -
  7. - Run the following commands: -
    npm i
    -npm run build
    -
  8. -
  9. - The playgrounds for local testing are located in: -
    /apps/dev/angular
    -/apps/dev/react
    -
  10. -
- - Run playground environments -

Angular

-
npm run dev:watch
-npm run serve:dev:angular
- -

React

-
npm run dev:watch
-npm run serve:dev:react
- - Repository structure - -

React wrappers

-

/libs/react-components/src/lib

-

Each folder represents a single component with its associated unit tests and wrapper code.

- -

Angular wrappers

-

/libs/angular-components/src/lib/components

-

Each folder represents a single component with its associated unit tests and wrapper code.

- -

Web Components

-

/libs/web-components/src/components

-
    -
  • Unit tests as *.spec.ts
  • -
  • Component code as *.svelte
  • -
- - Testing requirements -
    -
  • Write all unit tests in Svelte.
  • -
  • If updating React or Angular wrappers, write unit tests in those respective frameworks.
  • -
  • - Add browser testing using Jest for React wrappers and Svelte components when appropriate. - These can be found in: libs/react-components/specs -
  • -
  • Manually test components in both React and Angular.
  • -
  • - Create test files that others can use to manually test the PR. These can be created in: -
    /apps/prs/angular
    -/apps/prs/react
    -
  • -
  • Follow the conventions already used in those files to create your test files.
  • -
-

A Design System developer will also manually test the pull request.

- - Submit your contribution -

Use the following commit message format:

- -

Bug fix

-
fix(#storyNumber): short description (7 words max)
- -

Feature request

-
feat(#storyNumber): short description (7 words max)
- -
    -
  • Create a pull request from your branch to the dev branch.
  • -
  • Notify the design system team of the PR.
  • -
- -
diff --git a/docs/src/pages/get-started/designers.astro b/docs/src/pages/get-started/designers.astro deleted file mode 100644 index 2d8a3b163d..0000000000 --- a/docs/src/pages/get-started/designers.astro +++ /dev/null @@ -1,94 +0,0 @@ ---- -import { withBase } from '@/lib/base-url'; -/** - * Get Started - Designers Overview - * - * Overview of design system resources for designers. - * Content from Confluence (Brief 87). - */ -import DropInCallout from '../../components/DropInCallout.astro'; -import DocumentationPageLayout from '../../layouts/DocumentationPageLayout.astro'; ---- - - - Overview - - As a designer, you use the design system through Figma. - -

In Figma, you can access:

- - - -

- The design system library in Figma aligns with coded components used by developers. Start with - design system components for common parts of your service. This helps developers use the matching - coded components and reduces custom work. -

-

- Start with the design system. Validate your design through user testing. If usability issues arise, - or the problem cannot be solved within the system, consider creating a custom solution. -

- Design with development in mind -

- When selecting components, prioritize those with a "goa-" prefix, such as - goa-input. These components exist in both design and development. Using them reduces - the need for custom development. -

-

Choose shared components whenever possible to maintain consistency and efficiency.

- - Design tokens -

Design system components in Figma and code are built using design tokens.

-

- Use tokens to communicate design decisions clearly. Developers can reference the same tokens in code. -

-

Instead of sharing hex values or pixel adjustments, reference semantic tokens.

-

For example:

-
    -
  • Colour: --goa-color-info-default
  • -
  • Spacing: --goa-spacing-m
  • -
-

Using tokens reduces back-and-forth and keeps design and development aligned.

- - Components -

All design system components are available in Figma and in code.

-

- These components are designed to meet - WCAG 2.2 accessibility standards. -

-

Avoid detaching components. Instead:

-
    -
  • Use variants
  • -
  • Show or hide layers within the component
  • -
-

- Use #figma for Figma-related issues, including library updates, missing components, - broken instances, or component behaviour in Figma. -

-

- Use #design-system-support for design system guidance, component usage questions, - standards, and implementation support. -

-

Keep your components up to date. Figma will notify you when library updates are available.

- - Figma file templates and helper components -

Each digital service project folder includes a starter Figma template.

-

Use this template to:

-
    -
  • Organize your design file
  • -
  • Support developer handoff
  • -
  • Help team members navigate files
  • -
-

- Helper components are also available. Use them to clearly communicate intent when sharing designs - with developers and other team members. -

- -
diff --git a/docs/src/pages/get-started/designers/designing-with-ds.astro b/docs/src/pages/get-started/designers/designing-with-ds.astro deleted file mode 100644 index a875429941..0000000000 --- a/docs/src/pages/get-started/designers/designing-with-ds.astro +++ /dev/null @@ -1,81 +0,0 @@ ---- -/** - * Get Started - Designers - Designing with Design System 2.0 - * - * How to start new designs and update existing projects to DS 2.0. - * Content from Confluence (Brief 87). - */ -import DropInCallout from '../../../components/DropInCallout.astro'; -import DocumentationPageLayout from '../../../layouts/DocumentationPageLayout.astro'; ---- - - - Designing with Design System 2.0 - - What's new in DS 2.0 and how to start using it in your designs. - -

- The Digital Design and Delivery (DDD) Design System has evolved to better support how service teams - design and build digital government services. Design System 2.0 includes an updated design - language, new tokens, refreshed components, and ready-to-use templates. -

- Starting a new design -

- Use DS 2.0 templates as your starting point. Templates package layout, navigation, spacing, and - example content that you can adapt to your service. Some templates are built for specific service types - (for example, public-facing forms and workspace applications), and others are more general-purpose - starting points you can use across many kinds of pages and flows. -

- - Starting from an existing design - - Library swap -

- Use a library swap if - your goal is to convert most of the file to DS 2.0 in one pass. -

-
    -
  • Make a copy of your file before you start.
  • -
  • Expect mixed results. Some screens may need cleanup after the swap.
  • -
- - Manual rebuild -

Use a manual rebuild if you need more control.

-
    -
  • Rebuild your highest value screens first.
  • -
  • Consider using DS 2.0 templates as a base to speed things up.
  • -
- Update an existing project to the new design library - - Approach 1: Developer-first -

Use this approach in most cases.

-
    -
  1. A developer creates a new branch and completes the upgrade steps.
  2. -
  3. The team runs the upgraded application to see what changed.
  4. -
  5. Designers review the upgraded screens and identify what needs design updates.
  6. -
-

When reviewing the upgraded branch, watch for:

-
    -
  • Spacing and layout rhythm
  • -
  • Typography scale and weight usage
  • -
  • Dense or constrained screens (these often have the highest risk during an update)
  • -
- - Approach 2: Design-first -

Use this approach when you want design work to move ahead of development work.

-
    -
  1. Identify custom elements that support your users' needs.
  2. -
  3. Create an inventory and prioritize items by importance and effort.
  4. -
  5. Redesign the highest priority items using the visual design values in the Styles library.
  6. -
- - - In most cases, start with the developer-first approach. It helps you quickly see what changed in your - real product, so you can focus design effort where it matters most. - - -
diff --git a/docs/src/pages/get-started/designers/ux-guidelines.astro b/docs/src/pages/get-started/designers/ux-guidelines.astro deleted file mode 100644 index b44c9c82e5..0000000000 --- a/docs/src/pages/get-started/designers/ux-guidelines.astro +++ /dev/null @@ -1,55 +0,0 @@ ---- -/** - * Get Started - Designers - User Experience Guidelines - * - * UX guidelines for Government of Alberta digital products. - * Content from Confluence (Brief 87). - */ -import DropInCallout from '../../../components/DropInCallout.astro'; -import DocumentationPageLayout from '../../../layouts/DocumentationPageLayout.astro'; ---- - - - User experience guidelines - - Digital products built for the Government of Alberta should comply with these guidelines to ensure a - quality user experience for Albertans. - - -
    -
  • User-centered: Designed with a clear understanding of users, their goals, tasks, environments, and context of use, using user-centered design methods.
  • -
  • Usable: Interfaces will be easy to use, enabling users to find the information they need and complete tasks successfully.
  • -
  • Accessible: Digital products will be inclusive, ensuring usability for everyone, regardless of physical or cognitive ability.
  • -
  • Trustworthy: Experiences will feel familiar and recognizable as a Government of Alberta product, ensuring users' security and privacy.
  • -
  • Modern: Digital experiences will meet present-day user expectations and preferences for aesthetics and interaction.
  • -
- -

- For more details on the process of assessing compliance to each guideline, refer to our - User Experience Guidelines and Design System Checklist. -

- Usability testing -

- Usability testing is our preferred method to understand user needs as they relate to each guideline. -

-

Suitable usability testing includes:

-
    -
  • Diverse user group: Real users from different demographic, behavioural backgrounds, and geographical regions within Alberta that will experience the problem or benefit of the product.
  • -
  • Inclusive testing: Users with various physical and/or cognitive abilities, literacy levels, and tech savviness.
  • -
  • Device variety: A diverse range of devices that reflect users' preferred choice when interacting with government services.
  • -
  • Tasks: Activities that cover tasks and service process from end-to-end.
  • -
-

- Frequent usability testing should be conducted to maintain product usability, effectiveness and - alignment to the user needs as they evolve over time. -

-

- For guidance on the process of usability testing, refer to our - Understanding Usability documentation. -

- -
diff --git a/docs/src/pages/get-started/developers.astro b/docs/src/pages/get-started/developers.astro deleted file mode 100644 index b34d1c3712..0000000000 --- a/docs/src/pages/get-started/developers.astro +++ /dev/null @@ -1,104 +0,0 @@ ---- -import { withBase } from '@/lib/base-url'; -/** - * Get Started - Developers Overview - * - * Overview of design system resources for developers. - * Content from Confluence (Brief 87). - */ -import DropInCallout from '../../components/DropInCallout.astro'; -import DocumentationPageLayout from '../../layouts/DocumentationPageLayout.astro'; ---- - - - Overview - - As a developer, you use the Design System through tokens, components, examples, and templates. - - -

- The DDD Design System is built using Web Components. Web Components are framework-agnostic. - You can use them with Angular, React, or other front-end frameworks. -

-

The Design System includes:

- -

- Designers use equivalent resources in Figma. When they design with Design System components, you - can build with the matching coded components. This reduces custom development and rework. -

-

- All Design System components are designed and built to meet - WCAG 2.2 accessibility standards. -

- Tokens -

- Access the tokens as an - NPM package. -

-

- Import the SCSS or CSS file into your project. Replace hard-coded values with Design System token variables. -

-

- Designers reference the same tokens in their tools. This keeps design and development aligned during handoff. -

- - Components -

Components are reusable user interface elements built for use across services.

-

You can:

-
    -
  • Use components individually
  • -
  • Combine them into patterns
  • -
  • Apply them in different contexts
  • -
-

Components are available:

- -

- Refer to the Design System technologies documentation - for implementation details. -

- - Examples -

- Examples are multiple components assembled in realistic service contexts. They help you understand - how to apply Design System guidance in a working interface. -

-

You can use examples to:

-
    -
  • Understand how components work together
  • -
  • Use them as a starting point for building parts of your interface
  • -
  • Use proven approaches to meet user needs
  • -
-

- Examples help you build with more consistency and less rework. Use them to guide implementation, - then adjust them to meet the needs of your product. -

- - Templates -

- Templates are opinionated starting points for common service types. They package layout, navigation, - spacing, and example content so you can start with a proven structure instead of building from scratch. -

-

You can use templates to:

-
    -
  • Start a new product with a proven structure
  • -
  • Learn how components work together in a real layout
  • -
  • Adapt a proven starting point to fit your service needs
  • -
-

- Templates help teams move faster, reduce rework, and stay aligned with Design System guidance. -

- -
diff --git a/docs/src/pages/get-started/developers/browsers.astro b/docs/src/pages/get-started/developers/browsers.astro deleted file mode 100644 index 3ced88e5fc..0000000000 --- a/docs/src/pages/get-started/developers/browsers.astro +++ /dev/null @@ -1,87 +0,0 @@ ---- -import { withBase } from '@/lib/base-url'; -/** - * Get Started - Developers - Supported browsers - * - * Browser and OS support matrix for Design System components. - * Content from Confluence (Brief 87). - */ -import DropInCallout from '../../../components/DropInCallout.astro'; -import DocumentationPageLayout from '../../../layouts/DocumentationPageLayout.astro'; ---- - - - Supported browsers - - Design System components are tested across supported browsers and devices. - - -

- We support the latest version of each browser listed on this page. Support applies to the browser and - operating system combinations shown in the table below. On mobile, support is limited to the browser - and operating system combinations listed for Android and iOS. -

- - Browser and operating system support - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
BrowserWindowsMac OSAndroidiOS
Google ChromeYesYesYesYes
Microsoft EdgeYesYes
Mozilla FirefoxYesYesYes
Apple SafariN/AYesN/AYes
-
- - Representative mobile OS used in testing -
    -
  • Android OS: 10+
  • -
  • iOS: 15+
  • -
- Testing guidance -

- Use supported browsers and operating system versions when developing and testing services. If you - encounter a browser-specific issue, follow the - Verify a bug process. -

- -
diff --git a/docs/src/pages/get-started/developers/bug.astro b/docs/src/pages/get-started/developers/bug.astro deleted file mode 100644 index ffabd0fc5e..0000000000 --- a/docs/src/pages/get-started/developers/bug.astro +++ /dev/null @@ -1,65 +0,0 @@ ---- -/** - * Get Started - Developers - Verify a bug - * - * Process for verifying and reporting Design System component issues. - * Content from Confluence (Brief 87). - */ -import DropInCallout from '../../../components/DropInCallout.astro'; -import DocumentationPageLayout from '../../../layouts/DocumentationPageLayout.astro'; ---- - - - Verify a bug - - Follow this process when you encounter an issue with a Design System component. - - -

- These steps help confirm whether the issue is caused by the Design System, your product setup, or - custom code. This process applies to Angular and React implementations. -

- - 1. Check versions -

Confirm you are using the latest version of:

-
    -
  • Web Components
  • -
  • Angular or React
  • -
-

- If you are not using the latest version, upgrade and retest. If the issue remains, continue to the next step. -

- - 2. Test with product templates -

Use the official Angular or React product templates to isolate the issue.

- -

This helps determine whether the issue exists outside your project configuration.

- - 3. Recreate the issue -

Create a minimal test environment.

-
    -
  • Use only the code required for the example to function
  • -
  • Include only the component experiencing the issue
  • -
  • Remove unrelated dependencies or custom logic
  • -
-

Confirm whether the issue can be replicated.

- - 4. Share and report -

If you can reproduce the issue:

-
    -
  • Share the template application link in the #design-system-support Slack channel
  • -
  • Provide a link to your repository so the team can review and replicate the issue
  • -
-

- Following these steps will help to ensure efficient investigation and quicker resolution of - design system component issues. -

- -
diff --git a/docs/src/pages/get-started/developers/setup.astro b/docs/src/pages/get-started/developers/setup.astro deleted file mode 100644 index 326b964dfe..0000000000 --- a/docs/src/pages/get-started/developers/setup.astro +++ /dev/null @@ -1,141 +0,0 @@ ---- -/** - * Get Started - Developers - Setup - * - * Setup instructions for Angular, React, and Web Components. - * Based on the current website content with DS 2.0 token updates. - */ -import DocumentationPageLayout from "../../../layouts/DocumentationPageLayout.astro"; -import DropInCallout from "../../../components/DropInCallout.astro"; ---- - - - Developer setup - - Set up the Government of Alberta Design System in Angular, React, or directly with Web - Components. - - -

Angular UI components

- - Supported versions: 18, 19, 20, 21 - - - This is the web component library and utilizes Angular's web component - integration. - - -

1. Add dependencies

-
npm i @abgov/web-components
-npm i @abgov/angular-components
-npm i @abgov/ui-components-common
-npm i @abgov/design-tokens
- -

2. Link ionicons in app/index.html

- - Add the following in the head element: - -
<script type="module" src="https://cdn.jsdelivr.net/npm/ionicons@latest/dist/ionicons/ionicons.esm.js"></script>
-<script nomodule src="https://cdn.jsdelivr.net/npm/ionicons@latest/dist/ionicons/ionicons.js"></script>
- -

3. Update src/app/app.module.ts

- - Update src/app/app.module.ts as per the four steps below: - -
// 1. Import the CUSTOM_ELEMENTS_SCHEMA
-import { CUSTOM_ELEMENTS_SCHEMA } from "@angular/core";
-
-// 2. Import the libs
-import "@abgov/web-components";
-import { AngularComponentsModule } from "@abgov/angular-components";
-
-@NgModule({
-	declarations: [AppComponent],
-	imports: [
-		// 3. Add the needed imports
-		BrowserModule,
-		AngularComponentsModule,
-	],
-	providers: [],
-	bootstrap: [AppComponent],
-	// 4. Add the CUSTOM_ELEMENTS_SCHEMA to the NgModule
-	schemas: [CUSTOM_ELEMENTS_SCHEMA],
-	})
-export class AppModule {}
- -

4. Add the styles link in src/styles.css

-
@import "@abgov/web-components/index.css";
-@import "@abgov/design-tokens/dist/tokens.css";
- - - -

React UI components

- - Supported versions: 17, 18, 19 - - - This library contains React components which wrap the Government of Alberta Web - Components. - - -

1. Add dependencies

-
npm i @abgov/react-components
-npm i @abgov/web-components
-npm i @abgov/ui-components-common
-npm i @abgov/design-tokens
- -

2. Link ionicons in app/index.html

- - Add the following to the head element: - -
<script type="module" src="https://cdn.jsdelivr.net/npm/ionicons@latest/dist/ionicons/ionicons.esm.js"></script>
-<script nomodule src="https://cdn.jsdelivr.net/npm/ionicons@latest/dist/ionicons/ionicons.js"></script>
- -

3. Import the web components in src/main.tsx

-
import "@abgov/web-components";
- -

4. Import the styles in src/index.css

-
@import "@abgov/web-components/index.css";
-@import "@abgov/design-tokens/dist/tokens.css";
- - - -

Web components

- - This library contains web components from the Government of Alberta. - - -

1. Add dependencies

-
npm i @abgov/web-components
-npm i @abgov/design-tokens
- -

2. Link ionicons in index.html

- - Add the following in the head element: - -
<script type="module" src="https://cdn.jsdelivr.net/npm/ionicons@latest/dist/ionicons/ionicons.esm.js"></script>
-<script nomodule src="https://cdn.jsdelivr.net/npm/ionicons@latest/dist/ionicons/ionicons.js"></script>
- -

3. Import the web components into src/main.js

-
import "@abgov/web-components";
- -

4. Add the styles link in your main CSS file

- - Add the following in src/assets/main.css or wherever your main CSS file is - located: - -
@import "@abgov/web-components/index.css";
-@import "@abgov/design-tokens/dist/tokens.css";
- - - - -
diff --git a/docs/src/pages/get-started/developers/technologies.astro b/docs/src/pages/get-started/developers/technologies.astro deleted file mode 100644 index 272d9a8a12..0000000000 --- a/docs/src/pages/get-started/developers/technologies.astro +++ /dev/null @@ -1,111 +0,0 @@ ---- -import { withBase } from '@/lib/base-url'; -/** - * Get Started - Developers - Technologies - * - * Overview of Design System technologies: Web Components, Svelte, Angular, React. - * Content from Confluence (Brief 87). - */ -import DropInCallout from '../../../components/DropInCallout.astro'; -import DocumentationPageLayout from '../../../layouts/DocumentationPageLayout.astro'; ---- - - - Technologies - - An overview of the technologies used in the Design System. - - - How the technologies fit together -

- The Design System is built on Web Components. Most component functionality lives in the core Web - Components layer. Angular and React wrappers sit on top of that layer to make the components easier - to use in those frameworks. -

-

- We use Svelte to author the components that are compiled to custom elements. You can use the Design - System through the core Web Components or through Angular and React wrappers. -

- Diagram showing the technology layers: Svelte compiles to Web Components, which are wrapped by Angular and React - Web Components -

- Web Components - are a set of standard web technologies that allow you to create reusable custom elements. Each component - includes its own structure, styling, and behaviour. This keeps it independent from the rest of your code. -

-

- In the Design System, Web Components are the core library. They are framework-agnostic, so teams - can use them in different front-end environments. -

- - Benefits of using Web Components -
    -
  • Reuse: Build once and use across pages, applications, and frameworks
  • -
  • Browser support: Work in modern browsers without additional libraries
  • -
  • Maintenance: Modular and self-contained structure simplifies updates
  • -
  • Encapsulation: Structure, style, and behaviour remain isolated from other page elements
  • -
  • Reliability: Code is not spread across HTML and JS files, thereby avoiding inconsistencies
  • -
  • Flexibility: Use inline, import, or compile components as needed
  • -
  • Composability: Combine components or integrate them with other components
  • -
- - - Do not use Web Components directly unless there is a specific reason to do so. Using wrappers provides - type checking and developer helpers that are not available when working with the core Web Components alone. - - Svelte -

- Svelte is the framework used to generate the - Design System Web Components. Svelte combines JavaScript (logic), HTML (structure), and CSS (style) - within a single file. It compiles these into efficient, reusable components. -

- Why Svelte -

We use Svelte to:

-
    -
  • Build reusable Web Components
  • -
  • Keep component logic, structure, and styling together
  • -
  • Support integration with multiple front-end frameworks
  • -
- Angular - - - Supported versions: 18, 19, 20, 21 - - -

- Angular is a TypeScript-based framework for building - web applications. The Design System supports Angular through Angular wrappers around the core Web Components. -

- - How Web Components and Angular work together -

Angular wrappers are created around the Web Components. These wrappers:

-
    -
  • Manage component properties and events
  • -
  • Support form binding (Reactive and Template-driven)
  • -
  • Allow integration within Angular applications
  • -
-

The Angular application interacts with the wrapper, which renders the underlying Web Component.

- React - - - Supported versions: 17, 18, 19 - - -

- React is an open-source JavaScript library used to - build user interfaces from reusable components. -

- - How Web Components and React work together -

React wrappers are created around the Web Components. These wrappers:

-
    -
  • Manage properties and events
  • -
  • Enable integration within React applications
  • -
-

The React application interacts with the wrapper, which renders the underlying Web Component.

- -
diff --git a/docs/src/pages/get-started/index.astro b/docs/src/pages/get-started/index.astro deleted file mode 100644 index 1b92e400aa..0000000000 --- a/docs/src/pages/get-started/index.astro +++ /dev/null @@ -1,108 +0,0 @@ ---- -import { withBase } from '@/lib/base-url'; -/** - * Get Started - Landing Page - * - * Overview of the design system and how to use it in your service. - * Content from Confluence (Brief 87). - */ -import DropInCallout from '../../components/DropInCallout.astro'; -import DocumentationPageLayout from '../../layouts/DocumentationPageLayout.astro'; ---- - - - Start with the design system - - Start with the design system to build on the research and experience of other service teams. - This helps you avoid repeating work that has already been done. - - - - The design system gives you a strong foundation for common service needs. It allows your team - to focus on the specific challenges of your product. - Build on it. Do not start from scratch. - - - Design system by role - - - - Why start with the design system? - - Streamline collaboration -

- Designers and developers work from shared components and guidance. This reduces rework and misalignment. -

- - Improve accessibility -

Accessibility is built into both the design and coded components.

- - Reduce testing effort -

Components are tested across devices, browsers, and service contexts.

- - Maintain consistency -

- Components align with the broader system to create a cohesive user experience across government services. -

- - Spend more time on high-value work -

Using existing components saves time. You can focus on work that improves service quality, including:

-
    -
  • Usability testing
  • -
  • User research
  • -
  • Content design
  • -
  • Accessibility reviews
  • -
  • Design quality checks
  • -
  • Low-fidelity prototyping and testing
  • -
-

This leads to better outcomes for users.

- How to use the design system in your service -

Follow these steps when designing and building your service.

- - Use system components first -

Start with existing components and patterns. These meet most user needs.

- - Identify gaps through user testing -

Test your service with users. Identify needs that are not covered by current components.

- - Before you design something new -

- Check what's already available and what's in progress. The team can point you to existing components, - solutions other teams have built, and planned work that may meet your need. -

- - Design and test new solutions when you need them -

- If you still have a gap, design a new solution and test it with users. Move forward only when - testing shows clear user value. -

- - Share what you learn -

- Share your findings with the design system team. Your solution may become part of the design system. -

- - - Do not create custom components without a clear user need. - Unnecessary customization: -
    -
  • Increases maintenance effort
  • -
  • Slows delivery
  • -
  • Reduces consistency
  • -
- Always confirm the need through research and testing. -
- - - View the design system governance process - - -
diff --git a/docs/src/pages/get-started/migration-guide.astro b/docs/src/pages/get-started/migration-guide.astro deleted file mode 100644 index b43c6678e3..0000000000 --- a/docs/src/pages/get-started/migration-guide.astro +++ /dev/null @@ -1,232 +0,0 @@ ---- -import { withBase } from '@/lib/base-url'; -/** - * Get Started - Developers - Migration guide - * - * Migration pathways and guidance for moving products from DS 1.x to DS 2.0. - * Content adapted from Confluence. - */ -import DocumentationPageLayout from "../../layouts/DocumentationPageLayout.astro"; ---- - - - Migration guide - - Design System 2.0 (DS 2.0) becomes the Government of Alberta standard in March 2026. - New products starting after launch should use DS 2.0. Existing active products should - plan their move to DS 2.0 during the recommended migration window, which runs from - March 2026 to September 2026. - - - - -

Migration pathways

- - The right migration path depends on your product's context, including team - funding and capacity, other delivery obligations, product lifecycle, and the effort - required to update. The three pathways are standard migration, late migration, and no - migration. - - -

Starting a new product

- - If your product starts after March 2026, start with DS 2.0. Migration pathways apply - to existing products moving from DS 1.x to DS 2.0. - - -

Compare the pathways

-
- - - - - - - - - - - - - - - - - - - - - - - - - - -
PathwayUse it whenRecommendation
- Standard migration - - - Your product has an active funded team and can migrate by September 2026 - - - Recommended default -
- Late migration - - - Your team cannot meet the standard window because of delivery timelines, - dependencies, or capacity constraints - - - Only when necessary -
- No migration - - - Your product does not have an active funded team and/or is not in a - position to upgrade - - - Only in specific cases -
-
-
- -

- Standard migration - -

- - Standard migration is the default pathway for active products. - - - Choose this path if your product has an active funded team and can schedule migration - work between March 2026 and September 2026. This is the recommended path for most - teams because it keeps your product aligned with the current standard and gives you - the best support. - - Use this pathway when: - -
    -
  • your product is actively maintained
  • -
  • your team can reserve time to migrate by September 2026
  • -
  • you want access to the latest templates, components, tokens, and guidance
  • -
-
- - Plan for work across the product team. Typical upgrade tasks include the library - updates, adjusting spacing and typography, and updating custom code to align with the - DS 2.0 visual design. This is a significant update and will usually involve design, - development, and testing. - - -

Late migration

- - Late migration is a last-resort pathway for active products. - - - Choose this path only when delivery deadlines, dependencies, or capacity constraints - make the standard migration window unrealistic. This path gives your team more time, - but it also increases risk and reduces your ongoing support. - - Use this pathway when: - -
    -
  • a major delivery deadline blocks migration work
  • -
  • critical dependencies prevent the upgrade during the standard window
  • -
  • capacity or funding makes the standard window unrealistic
  • -
-
- - Delaying migration means your product will wait longer to benefit from DS 2.0 - improvements. Over time, unresolved issues will accumulate and your product will be - inconsistent with the new standard for longer. - - -

No migration

- - No migration is an opt-out pathway for specific situations. - - - Choose this path only when your product does not have an active funded team and/or is - not in a position to upgrade. In these cases, the product may remain on DS 1.x. - - - Teams on this path should understand that the product will not receive DS 2.0 - improvements and will not align with the current standard. Support for DS 1.x is - limited from March to September and ends after September 2026. - - - - -

What changes after launch

- - After the DS 2.0 launch in March 2026: - - -
    -
  • New products should use DS 2.0
  • -
  • Active products should aim to migrate by September 2026
  • -
  • - After launch, web components will move to version 2.x. Although this is a major - version update, it does not include breaking changes. -
  • -
  • - Angular 4.x and React 6.x receive limited fixes or features from March to - September -
  • -
  • Support for DS 1.0 ends after September 2026
  • -
  • Web components will update to a new major version after September 2026
  • -
-
- -

How to choose a pathway

- - Use these questions to guide your decision: - - -
    -
  • Is this a new product starting after March 2026?
  • -
  • Does the product have an active funded team?
  • -
  • Can the team schedule migration work before September 2026?
  • -
  • - Are there delivery deadlines or dependencies that block the standard window? -
  • -
  • - Is the team prepared to accept reduced support and higher maintenance risk if - migration is delayed? -
  • -
-
- - - - Review the setup steps for developers - -
diff --git a/docs/src/pages/get-started/out-of-support.astro b/docs/src/pages/get-started/out-of-support.astro deleted file mode 100644 index 3944d67e3a..0000000000 --- a/docs/src/pages/get-started/out-of-support.astro +++ /dev/null @@ -1,54 +0,0 @@ ---- -import { withBase } from '@/lib/base-url'; -/** - * Get Started - Out of Support Versions - * - * Information about unsupported Design System versions. - * Content from Confluence (Brief 87). - */ -import DropInCallout from '../../components/DropInCallout.astro'; -import DocumentationPageLayout from '../../layouts/DocumentationPageLayout.astro'; ---- - - - Out-of-support versions - - With the launch of the new Design System, support for Angular v4 and lower, and React v6 and lower - is significantly reduced. - - - What this means - - Fewer fixes or patches -

Bug fixes and security updates are no longer prioritized for these versions.

- - No new features -

All new features and enhancements are released only in the current major version.

- - Use at your own risk -

Existing projects may continue to run. However:

-
    -
  • Compatibility with new browsers or operating systems is not guaranteed
  • -
  • Compatibility with future framework updates is not guaranteed
  • -
  • Issues discovered in these versions will not be resolved
  • -
- - - Projects using Angular v4 and lower, and React v6 and lower will continue to function. - New issues or defects identified in these versions may not be fixed. - - What to do next -

- Upgrade to the latest supported version. Refer to the - version update guide. -

-

- If you need support planning your upgrade, - book time in drop-in hours. -

- -
diff --git a/docs/src/pages/get-started/qa-testing.astro b/docs/src/pages/get-started/qa-testing.astro deleted file mode 100644 index 146cb12778..0000000000 --- a/docs/src/pages/get-started/qa-testing.astro +++ /dev/null @@ -1,77 +0,0 @@ ---- -/** - * Get Started - QA Testing - * - * Testing process for Design System components. - * Content from Confluence (Brief 87). - */ -import DropInCallout from '../../components/DropInCallout.astro'; -import DocumentationPageLayout from '../../layouts/DocumentationPageLayout.astro'; ---- - - - QA testing - - This page outlines the testing process for the Design System. The process ensures components - function correctly and integrate within products. - - - Testing objectives -

QA testing ensures that:

-
    -
  • Coded components match the design specifications
  • -
  • Components work in both React and Angular implementations
  • -
  • Components are responsive across screen sizes
  • -
  • Components meet accessibility requirements
  • -
  • Mobile behaviour is validated
  • -
  • Documentation on the Design System website is accurate
  • -
- Test cases - - Component testing -
    -
  • Confirm the rendered component matches design and styling guidelines
  • -
  • Confirm configured properties display correctly
  • -
  • Confirm the expected event triggers when interacting with the component
  • -
- - Responsiveness testing -
    -
  • Test components on mobile, tablet, and desktop screen sizes
  • -
  • Use browser developer tools to simulate devices
  • -
- - Accessibility testing -
    -
  • Run Lighthouse audits to review accessibility scores
  • -
  • Confirm appropriate ARIA (Accessible Rich Internet Applications) roles and labels
  • -
  • Test keyboard navigation
  • -
  • Test with NVDA screen reader
  • -
- - Cross-browser testing -
    -
  • Test on the latest versions of Chrome, Firefox, Safari, and Edge
  • -
  • Use Chrome device mode to simulate mobile environments
  • -
  • Confirm consistent appearance and behaviour across browsers
  • -
- - Bug testing -

When a bug is fixed:

-
    -
  1. Reproduce the issue using the main branch.
  2. -
  3. Verify the fix in the pull request branch.
  4. -
  5. Retest the component across all relevant areas.
  6. -
-

Confirm the issue no longer occurs.

- Reporting -
    -
  • Document updated test results, findings, and screenshots in the pull request comments
  • -
  • Log newly discovered issues in GitHub
  • -
- -
diff --git a/docs/src/pages/get-started/roadmap.astro b/docs/src/pages/get-started/roadmap.astro deleted file mode 100644 index 070656eab6..0000000000 --- a/docs/src/pages/get-started/roadmap.astro +++ /dev/null @@ -1,347 +0,0 @@ ---- -/** - * Get Started - Roadmap - * - * High-level roadmap for the design system team's 2026-27 fiscal year. - * Content adapted from Confluence. - */ -import DocumentationPageLayout from "../../layouts/DocumentationPageLayout.astro"; ---- - - - Roadmap - - A high-level summary of the work the design system team plans to focus on in the - 2026-27 Fiscal Year. - - - - The roadmap is subject to change as we gather new information. We will communicate - updates to ensure product teams can align and plan their work accordingly. - - - - For more details on our priorities and day-to-day activities, see our - - design system backlog. - - - - - -

Now

- - Focus: Drive DS 2.0 adoption momentum, protect post-launch stability, and - prove DS 2.0 helps teams move faster through prescriptive guidance and examples. - - -

DS 2.0 adoption and satisfaction measurement

- - Objective: Establish reliable DS 2.0 adoption tracking and reporting, and - pair it with satisfaction signals from designers, developers, and end users to understand - whether DS 2.0 is improving service outcomes as teams upgrade. - - - Benefit: Enables accurate progress reporting and provides evidence that - DS 2.0 is improving usability, accessibility, and experience quality, not only adoption. - - - Examples: - -
    -
  • - Create a mechanism to reliably collect and report adoption rate -
  • -
  • - Track upgrade progress against the adoption schedule -
  • -
  • - Capture qualitative signals from teams (developer and designer feedback themes) -
  • -
  • - Capture end-user feedback where available (citizen or worker satisfaction, - accessibility and usability feedback) -
  • -
- -

Product acceleration enablement

- - Objective: Provide prescriptive guidance and resources that help teams - get to screens, prototypes, and working experiences faster using DS 2.0. - - - Benefit: Reduces time to first screens and improves consistency by helping - teams start from proven patterns instead of building from scratch. - - - Examples: - -
    -
  • - Create resources that show how to quickly prototype with DS 2.0 components and - examples -
  • -
  • - Provide contextual starting points for teams using Public form and Workspace - templates -
  • -
  • - Pilot DS 2.0 with teams to generate strong examples to share -
  • -
  • - Create and publish migration success stories -
  • -
- -

Design system MCP

- - Objective: Stand up the design system Model Context Protocol (MCP) capability - so AI tools and platforms can reliably access design system guidance, components, patterns, - and standards. - - - Benefit: Helps teams generate more consistent, standards-aligned front-ends - by making trusted design system context available directly in AI-assisted workflows. - - - Examples: - -
    -
  • - Define the initial MCP scope and supported design system resources -
  • -
  • - Stand up the MCP server and validate the hosting and maintenance approach -
  • -
  • - Test the MCP use in real product workflows and capture gaps to address -
  • -
  • - Document recommended workflows for teams -
  • -
- -

Vue support decision

- - Objective: Explore and define the minimum work required to confidently - state DS 2.0 officially supports Vue, including scope, constraints, and support model. - - - Benefit: Prevents unclear commitments and reduces strategic risk by enabling - an informed investment decision aligned to organizational needs. - - - Examples: - -
    -
  • - Define what "official Vue support" means -
  • -
  • - Outline the minimum supportable scope -
  • -
  • - Identify implications for documentation, maintenance, testing, and support -
  • -
- - - -

Next

- - Focus: Improve the core Public form and Workspace experience, mature reusable - patterns and examples, reduce adoption friction through better packaging, and execute on - the chosen Vue direction. - - -

Public form and Workspace capability improvements

- - Objective: Enhance key Public form and Workspace capabilities based on - adoption needs and workflow requirements. - - - Benefit: Improves feature sets and reduces the need for custom one-off - solutions by making common workflows easier to implement with DS 2.0. - - - Example: - -
    -
  • - Build the review, revise, resubmit feature -
  • -
- -

Examples and pattern maturity

- - Objective: Expand and refine examples and position them as adaptable reusable - patterns that teams can apply with confidence. - - - Benefit: Improves self-serve success and product consistency, reducing - implementation variance and support demand over time. - - - Examples: - -
    -
  • - Continue expanding and refining examples -
  • -
  • - Show how components and examples combine into larger contexts and workflows -
  • -
- -

Library packaging and tech stack upgrades

- - Objective: Reduce friction in how design system assets are bundled and - adopted across libraries and update important tech stacks. - - - Benefit: Lowers setup and upgrade complexity, and keeps the design system - up to date with the latest supported versions. - - - Examples: - -
    -
  • - Improve how code libraries are bundled together (React, web components, tokens) -
  • -
  • - Update to Svelte 5 -
  • -
- -

Vue follow-through

- - Objective: Based on Vue discovery, either implement formal Vue support - or clearly position Angular and React as the recommended approach for teams using AI-assisted - workflows. - - - Benefit: Provides clear direction to product teams and reduces uncertainty, - enabling progress on a supported path while keeping support sustainable for the design system - team. - - - Examples: - -
    -
  • - Publish Vue support guidance and expectations -
  • -
  • - Implement agreed scope if approved -
  • -
  • - Publish recommended alternatives if Vue support is not pursued -
  • -
- - - -

Later

- - Focus: Support DS 2.0 version updates and improve documentation and communications - quality to support scaling and sustainability. - - -

Documentation and communications improvements

- - Objective: Improve how teams access and understand design system guidance, - and communicate design system value areas like accessibility more clearly. - - - Benefit: Increases trust, improves reuse, and supports self-serve adoption - by making guidance easier to consume and share. - - - Examples: - -
    -
  • - Add markdown file download to website documentation -
  • -
  • - Articulate accessibility work more clearly (what is covered and how it supports - teams) -
  • -
- -

Targeted capacity support for DS 2.0 version updates

- - Objective: Provide targeted design system team capacity to help remaining - DS 1.x product teams complete the DS 2.0 version update. - - - Benefit: Accelerates adoption progress and unblocks teams facing more difficult - migrations, supporting adoption targets while keeping support sustainable through a focus - on teams most in need. - - - Example: - - -
    -
  • - Focus migration support on late adopters facing systemic barriers to upgrading -
  • -
-
diff --git a/docs/src/pages/search.astro b/docs/src/pages/search.astro index 8e52c4b6c2..6ec5447dd2 100644 --- a/docs/src/pages/search.astro +++ b/docs/src/pages/search.astro @@ -12,11 +12,13 @@ import { SiteNav } from '../components/SiteNav'; import { MobileHeader } from '../components/MobileHeader'; import { SearchPage } from '../components/search'; import { getNavCategories } from '../lib/nav-categories'; +import { getGetStartedNav } from '../lib/get-started-nav'; // Get query from URL parameters const url = new URL(Astro.request.url); const initialQuery = url.searchParams.get('q') || ''; const navCategories = await getNavCategories(); +const getStartedNav = await getGetStartedNav(); --- @@ -28,6 +30,7 @@ const navCategories = await getNavCategories(); client:only="react" initialSection="components" categories={navCategories} + getStartedNav={getStartedNav} /> diff --git a/docs/src/scripts/build-search-index.ts b/docs/src/scripts/build-search-index.ts index 2c33502dce..867baaaef7 100644 --- a/docs/src/scripts/build-search-index.ts +++ b/docs/src/scripts/build-search-index.ts @@ -20,6 +20,7 @@ const ROOT = join(__dirname, '../..'); // Content directories const COMPONENTS_DIR = join(ROOT, 'src/content/components'); const EXAMPLES_DIR = join(ROOT, 'src/content/examples'); +const GET_STARTED_DIR = join(ROOT, 'src/content/get-started'); const OUTPUT_FILE = join(ROOT, 'public/search-index.json'); // ============================================================================ @@ -51,7 +52,18 @@ interface ExampleEntry { slug: string; } -type SearchEntry = ComponentEntry | ExampleEntry; +interface PageEntry { + type: 'page'; + id: string; + title: string; + description?: string; + status: string; + category: string; // High-level grouping for filter UI ("get started") + tags: string[]; // Synthesized from section so queries like "developer setup" hit + slug: string; // URL path without leading slash (e.g. "get-started/developers/setup") +} + +type SearchEntry = ComponentEntry | ExampleEntry | PageEntry; // ============================================================================ // Frontmatter Parsing @@ -252,6 +264,59 @@ function processExample(filePath: string): ExampleEntry | null { } } +/** + * Synthesize search tags from a Get Started section. + * Includes the singular form so a query like "developer setup" matches + * a page whose section is "developers". + */ +function tagsForSection(section: string): string[] { + const singular: Record = { + designers: 'designer', + developers: 'developer', + }; + const tags = [section]; + if (singular[section]) tags.push(singular[section]); + return tags; +} + +/** + * Process a Get Started MDX file into a search entry. + * The collection root holds the index page; nested folders are URL segments. + */ +function processGetStartedPage(filePath: string): PageEntry | null { + try { + const content = readFileSync(filePath, 'utf-8'); + const { frontmatter } = parseFrontmatter(content); + + // Derive ID from path relative to the collection root, minus the extension. + // e.g. "developers/setup.mdx" -> "developers/setup" + // Normalize backslashes to forward slashes so Windows-built indexes still produce valid URLs. + const relPath = filePath + .slice(GET_STARTED_DIR.length + 1) + .replace(/\.mdx$/, '') + .replace(/\\/g, '/'); + + // The index entry lives at /get-started, every other entry under /get-started/. + const slug = relPath === 'index' ? 'get-started' : `get-started/${relPath}`; + + const section = String(frontmatter.section || ''); + + return { + type: 'page', + id: String(frontmatter.id || relPath), + title: String(frontmatter.title || relPath), + description: frontmatter.description ? String(frontmatter.description) : undefined, + status: String(frontmatter.status || 'published'), + category: 'get started', + tags: section ? tagsForSection(section) : [], + slug, + }; + } catch (error) { + console.error(`Error processing get-started page ${filePath}:`, error); + return null; + } +} + /** * Recursively find all MDX files in a directory. */ @@ -309,6 +374,18 @@ function main() { } console.log(` Found ${exampleFiles.length} files, indexed ${entries.length - exampleCount} examples`); + // Process Get Started pages + console.log('Processing get-started pages...'); + const getStartedFiles = findMdxFiles(GET_STARTED_DIR); + const getStartedCount = entries.length; + for (const file of getStartedFiles) { + const entry = processGetStartedPage(file); + if (entry) { + entries.push(entry); + } + } + console.log(` Found ${getStartedFiles.length} files, indexed ${entries.length - getStartedCount} pages`); + // Ensure public directory exists const publicDir = dirname(OUTPUT_FILE); if (!existsSync(publicDir)) { From 134ddfe6da205470747dc18a2f27c384841952e3 Mon Sep 17 00:00:00 2001 From: Eric Hoff Date: Fri, 17 Apr 2026 11:50:26 -0600 Subject: [PATCH 06/16] fix(#3602): change FileUploadInput error state to match FileUploadCard format --- .../routes/bugs/3602/bug3602.component.html | 39 +++++++++ .../src/routes/bugs/3602/bug3602.component.ts | 76 +++++++++++++++++ .../src/routes/bugs/3602/bug3602.route.json | 6 ++ .../src/app/routes/bugs/bug3602.route.ts | 9 +++ apps/prs/react/src/routes/bugs/bug3602.tsx | 81 +++++++++++++++++++ .../file-upload-input/FileUploadInput.svelte | 65 +++++++++------ .../file-upload-input.spec.ts | 78 ++++++++++++++---- 7 files changed, 314 insertions(+), 40 deletions(-) create mode 100644 apps/prs/angular/src/routes/bugs/3602/bug3602.component.html create mode 100644 apps/prs/angular/src/routes/bugs/3602/bug3602.component.ts create mode 100644 apps/prs/angular/src/routes/bugs/3602/bug3602.route.json create mode 100644 apps/prs/react/src/app/routes/bugs/bug3602.route.ts create mode 100644 apps/prs/react/src/routes/bugs/bug3602.tsx diff --git a/apps/prs/angular/src/routes/bugs/3602/bug3602.component.html b/apps/prs/angular/src/routes/bugs/3602/bug3602.component.html new file mode 100644 index 0000000000..ebf54acc57 --- /dev/null +++ b/apps/prs/angular/src/routes/bugs/3602/bug3602.component.html @@ -0,0 +1,39 @@ +

3602 FileUploadInput and FileUploadCard Improvements

+ + + + + +
+ @for (f of smallFiles; track f.id) { + + } +
+ + + + + +
+ @for (f of largeFiles; track f.id) { + + } +
diff --git a/apps/prs/angular/src/routes/bugs/3602/bug3602.component.ts b/apps/prs/angular/src/routes/bugs/3602/bug3602.component.ts new file mode 100644 index 0000000000..c88e1ae6b4 --- /dev/null +++ b/apps/prs/angular/src/routes/bugs/3602/bug3602.component.ts @@ -0,0 +1,76 @@ +import { Component } from "@angular/core"; +import { CommonModule } from "@angular/common"; +import { + GoabFileUploadInputOnSelectFileDetail, + GoabFileUploadOnDeleteDetail, +} from "@abgov/ui-components-common"; +import { + GoabFileUploadCard, + GoabFileUploadInput, + GoabFormItem, +} from "@abgov/angular-components"; + +type UploadedFile = { + id: string; + filename: string; + size: number; + type?: string; + progress: number; +}; + +@Component({ + standalone: true, + selector: "abgov-bug3602", + templateUrl: "./bug3602.component.html", + imports: [CommonModule, GoabFileUploadInput, GoabFileUploadCard, GoabFormItem], +}) +export class Bug3602Component { + smallFiles: UploadedFile[] = []; + largeFiles: UploadedFile[] = []; + + onSmallFileSelect(detail: GoabFileUploadInputOnSelectFileDetail) { + const file = detail.file; + this.smallFiles = [ + ...this.smallFiles, + { + id: `${file.name}-${Date.now()}`, + filename: file.name, + size: file.size, + type: file.type, + progress: -1, + }, + ]; + } + + onLargeFileSelect(detail: GoabFileUploadInputOnSelectFileDetail) { + const file = detail.file; + this.largeFiles = [ + ...this.largeFiles, + { + id: `${file.name}-${Date.now()}`, + filename: file.name, + size: file.size, + type: file.type, + progress: -1, + }, + ]; + } + + private removeFirstMatchingFile(files: UploadedFile[], id: string): UploadedFile[] { + const index = files.findIndex((f) => f.id === id); + if (index === -1) { + return files; + } + return [...files.slice(0, index), ...files.slice(index + 1)]; + } + + onSmallFileDelete(detail: GoabFileUploadOnDeleteDetail, id: string) { + console.log("Deleting file with id:", id); + this.smallFiles = this.removeFirstMatchingFile(this.smallFiles, id); + } + + onLargeFileDelete(detail: GoabFileUploadOnDeleteDetail, id: string) { + console.log("Deleting file with id:", id); + this.largeFiles = this.removeFirstMatchingFile(this.largeFiles, id); + } +} diff --git a/apps/prs/angular/src/routes/bugs/3602/bug3602.route.json b/apps/prs/angular/src/routes/bugs/3602/bug3602.route.json new file mode 100644 index 0000000000..bfbd38665a --- /dev/null +++ b/apps/prs/angular/src/routes/bugs/3602/bug3602.route.json @@ -0,0 +1,6 @@ +{ + "title": "FileUploadInput and FileUploadCard Improvements", + "path": "bugs/3602", + "id": "3602", + "type": "bug" +} diff --git a/apps/prs/react/src/app/routes/bugs/bug3602.route.ts b/apps/prs/react/src/app/routes/bugs/bug3602.route.ts new file mode 100644 index 0000000000..4909c43e38 --- /dev/null +++ b/apps/prs/react/src/app/routes/bugs/bug3602.route.ts @@ -0,0 +1,9 @@ +import { Bug3602Route } from "../../../routes/bugs/bug3602"; +import type { PrRouteDefinition } from "../../route-manifest"; +export default { + type: "bug", + id: "3602", + path: "bugs/3602", + title: "FileUploadInput and FileUploadCard Improvements", + component: Bug3602Route, +} satisfies PrRouteDefinition; diff --git a/apps/prs/react/src/routes/bugs/bug3602.tsx b/apps/prs/react/src/routes/bugs/bug3602.tsx new file mode 100644 index 0000000000..1b38632f71 --- /dev/null +++ b/apps/prs/react/src/routes/bugs/bug3602.tsx @@ -0,0 +1,81 @@ +import { useState, type Dispatch, type SetStateAction } from "react"; +import { GoabFileUploadInputOnSelectFileDetail } from "@abgov/ui-components-common"; +import { + GoabFileUploadCard, + GoabFileUploadInput, + GoabFormItem, +} from "@abgov/react-components"; + +type UploadedFile = { + id: string; + filename: string; + size: number; + type?: string; + progress: number; +}; + +export function Bug3602Route() { + const [smallFiles, setSmallFiles] = useState([]); + const [largeFiles, setLargeFiles] = useState([]); + + function handleFileChange( + detail: GoabFileUploadInputOnSelectFileDetail, + setFiles: Dispatch>, + ) { + const file = detail.file; + setFiles((prev) => [ + ...prev, + { + id: `${file.name}-${Date.now()}`, + filename: file.name, + size: file.size, + type: file.type, + progress: -1, + }, + ]); + } + + return ( + <> +

3602 FileUploadInput and FileUploadCard Improvements

+
+ + handleFileChange(detail, setSmallFiles)} + /> + +
+ {smallFiles.map((f) => ( + setSmallFiles((prev) => prev.filter((item) => item.id !== f.id))} + /> + ))} +
+ + handleFileChange(detail, setLargeFiles)} + /> + +
+ {largeFiles.map((f) => ( + setLargeFiles((prev) => prev.filter((item) => item.id !== f.id))} + /> + ))} +
+
+ + ); +} diff --git a/libs/web-components/src/components/file-upload-input/FileUploadInput.svelte b/libs/web-components/src/components/file-upload-input/FileUploadInput.svelte index 91e417d1b5..2c9e9a512b 100644 --- a/libs/web-components/src/components/file-upload-input/FileUploadInput.svelte +++ b/libs/web-components/src/components/file-upload-input/FileUploadInput.svelte @@ -6,6 +6,8 @@ type Variant = "dragdrop" | "button"; type Issue = { filename: string; + size: number; + filetype: string; error: string; }; type FileSizeUnit = "B" | "KB" | "MB" | "GB"; @@ -42,7 +44,15 @@ [..._fileInput.files].forEach((file) => { const error = validate(file); if (error) { - issues = [{ filename: file.name, error }, ...issues]; + issues = [ + { + filename: file.name, + size: file.size, + filetype: file.type, + error, + }, + ...issues, + ]; return; } dispatch(file); @@ -136,7 +146,15 @@ if (file) { const error = validate(file); if (error) { - issues = [{ filename: file.name, error }, ...issues]; + issues = [ + { + filename: file.name, + size: file.size, + filetype: file.type, + error, + }, + ...issues, + ]; return; } dispatch(file); @@ -148,7 +166,15 @@ [...e.dataTransfer?.files].forEach((file) => { const error = validate(file); if (error) { - issues = [{ filename: file.name, error }, ...issues]; + issues = [ + { + filename: file.name, + size: file.size, + filetype: file.type, + error, + }, + ...issues, + ]; return; } dispatch(file); @@ -252,14 +278,18 @@ {#if issues.length}
- {#each issues as issue} -
- {issue.filename} -
- - {issue.error} -
-
+ {#each issues as issue, i (issue)} + { + issues = issues.filter((currentIssue) => currentIssue !== issue); + }} + filename={issue.filename} + size={issue.size} + type={issue.filetype} + error={issue.error} + {version} + /> {/each}
{/if} @@ -346,18 +376,7 @@ /* issues */ .issues { - border-bottom: 1px solid var(--goa-color-greyscale-200); - margin: 1rem 0; - } - .issue { - margin-bottom: 1rem; - } - .error { - color: var(--goa-color-interactive-error); - font-size: 0.9em; - display: flex; - align-items: center; - gap: 0.5rem; + margin: 0.75rem 0 0 0; } @container self (--mobile) { diff --git a/libs/web-components/src/components/file-upload-input/file-upload-input.spec.ts b/libs/web-components/src/components/file-upload-input/file-upload-input.spec.ts index b365fdef74..04a365648c 100644 --- a/libs/web-components/src/components/file-upload-input/file-upload-input.spec.ts +++ b/libs/web-components/src/components/file-upload-input/file-upload-input.spec.ts @@ -38,7 +38,10 @@ describe("File selection", () => { const file = new File([new ArrayBuffer(1e6)], "file.jpg", { type: "image/jpg", }); - const { queryByTestId } = render(FileUploadInput, { maxfilesize: "100KB" }); + const { queryByTestId } = render(FileUploadInput, { + testid: "upload", + maxfilesize: "100KB", + }); const input = queryByTestId("input") as HTMLInputElement; expect(input).toBeTruthy(); @@ -46,7 +49,9 @@ describe("File selection", () => { await tick(); await waitFor(() => { - expect(queryByTestId("error")?.innerHTML).toContain("100KB"); + const card = queryByTestId("upload-issue-0"); + expect(queryByTestId("upload-issue-0")).toBeTruthy(); + expect(card?.getAttribute("error")).toContain("100KB"); }); }); @@ -54,13 +59,16 @@ describe("File selection", () => { const file = new File([new ArrayBuffer(1e6)], "file.jpg", { type: "image/jpg", }); - const { queryByTestId } = render(FileUploadInput, { accept: "image/*" }); + const { queryByTestId } = render(FileUploadInput, { + testid: "upload", + accept: "image/*", + }); const input = queryByTestId("input") as HTMLInputElement; fireEvent.change(input, { target: { files: [file] } }); await waitFor(() => { - expect(queryByTestId("error")).toBeFalsy(); + expect(queryByTestId("upload-issue-0")).toBeFalsy(); }); }); @@ -68,13 +76,16 @@ describe("File selection", () => { const file = new File([new ArrayBuffer(1e6)], "file.jpg", { type: "image/jpg", }); - const { queryByTestId } = render(FileUploadInput, { accept: ".gif, .jpg" }); + const { queryByTestId } = render(FileUploadInput, { + testid: "upload", + accept: ".gif, .jpg", + }); const input = queryByTestId("input") as HTMLInputElement; fireEvent.change(input, { target: { files: [file] } }); await waitFor(() => { - expect(queryByTestId("error")).toBeFalsy(); + expect(queryByTestId("upload-issue-0")).toBeFalsy(); }); }); @@ -83,13 +94,16 @@ describe("File selection", () => { type: "image/jpg", }); - const { queryByTestId } = render(FileUploadInput, { accept: ".bmp,.png" }); + const { queryByTestId } = render(FileUploadInput, { + testid: "upload", + accept: ".bmp,.png", + }); const input = queryByTestId("input") as HTMLInputElement; fireEvent.change(input, { target: { files: [file] } }); await waitFor(() => { - expect(queryByTestId("error")).toBeTruthy(); + expect(queryByTestId("upload-issue-0")).toBeTruthy(); }); }); @@ -99,13 +113,14 @@ describe("File selection", () => { }); const { queryByTestId } = render(FileUploadInput, { accept: "application/*", + testid: "upload", }); const input = queryByTestId("input") as HTMLInputElement; fireEvent.change(input, { target: { files: [file] } }); await waitFor(() => { - expect(queryByTestId("error")).toBeTruthy(); + expect(queryByTestId("upload-issue-0")).toBeTruthy(); }); }); @@ -118,30 +133,31 @@ describe("File selection", () => { }); const { queryByTestId, rerender } = render(FileUploadInput, { + testid: "upload", accept: ".PDF", }); const input = queryByTestId("input") as HTMLInputElement; fireEvent.change(input, { target: { files: [fileLowercase] } }); await waitFor(() => { - expect(queryByTestId("error")).toBeFalsy(); + expect(queryByTestId("upload-issue-0")).toBeFalsy(); }); fireEvent.change(input, { target: { files: [fileUppercase] } }); await waitFor(() => { - expect(queryByTestId("error")).toBeFalsy(); + expect(queryByTestId("upload-issue-0")).toBeFalsy(); }); rerender({ accept: ".pdf" }); fireEvent.change(input, { target: { files: [fileLowercase] } }); await waitFor(() => { - expect(queryByTestId("error")).toBeFalsy(); + expect(queryByTestId("upload-issue-0")).toBeFalsy(); }); fireEvent.change(input, { target: { files: [fileUppercase] } }); await waitFor(() => { - expect(queryByTestId("error")).toBeFalsy(); + expect(queryByTestId("upload-issue-0")).toBeFalsy(); }); }); @@ -153,30 +169,58 @@ describe("File selection", () => { type: "IMAGE/JPEG", }); const { queryByTestId, rerender } = render(FileUploadInput, { + testid: "upload", accept: "image/jpeg", }); const input = queryByTestId("input") as HTMLInputElement; fireEvent.change(input, { target: { files: [fileLowercase] } }); await waitFor(() => { - expect(queryByTestId("error")).toBeFalsy(); + expect(queryByTestId("upload-issue-0")).toBeFalsy(); }); fireEvent.change(input, { target: { files: [fileUppercase] } }); await waitFor(() => { - expect(queryByTestId("error")).toBeFalsy(); + expect(queryByTestId("upload-issue-0")).toBeFalsy(); }); rerender({ accept: "IMAGE/JPEG" }); fireEvent.change(input, { target: { files: [fileLowercase] } }); await waitFor(() => { - expect(queryByTestId("error")).toBeFalsy(); + expect(queryByTestId("upload-issue-0")).toBeFalsy(); }); fireEvent.change(input, { target: { files: [fileUppercase] } }); await waitFor(() => { - expect(queryByTestId("error")).toBeFalsy(); + expect(queryByTestId("upload-issue-0")).toBeFalsy(); + }); + }); + + it("dismisses an issue when the delete event is triggered", async () => { + const file = new File([new ArrayBuffer(1e6)], "file.jpg", { + type: "image/jpg", + }); + const { queryByTestId } = render(FileUploadInput, { + testid: "upload", + maxfilesize: "100KB", + }); + const input = queryByTestId("input") as HTMLInputElement; + + fireEvent.change(input, { target: { files: [file] } }); + + await waitFor(() => { + expect(queryByTestId("upload-issue-0")).toBeTruthy(); + }); + + const issueCard = queryByTestId("upload-issue-0")!; + fireEvent( + issueCard, + new CustomEvent("_delete", { bubbles: true, composed: true }), + ); + + await waitFor(() => { + expect(queryByTestId("upload-issue-0")).toBeFalsy(); }); }); }); From 8d9a4289cddaeab97cd231b9c2c782ba2c643cfc Mon Sep 17 00:00:00 2001 From: Benji Franck Date: Tue, 5 May 2026 15:29:46 -0600 Subject: [PATCH 07/16] fix(#3892): stop popover from closing parent popover, drawer, or modal Co-Authored-By: Copilot --- .../routes/bugs/3982/bug3982.component.html | 187 ++++++++++++ .../src/routes/bugs/3982/bug3982.component.ts | 111 +++++++ .../src/routes/bugs/3982/bug3982.route.json | 6 + .../src/app/routes/bugs/bug3982.route.ts | 10 + apps/prs/react/src/routes/bugs/bug3982.tsx | 280 ++++++++++++++++++ .../src/lib/components/drawer/drawer.ts | 5 +- .../src/lib/components/modal/modal.ts | 5 +- .../lib/components/push-drawer/push-drawer.ts | 5 +- .../specs/popover.browser.spec.tsx | 63 ++++ .../src/lib/drawer/drawer.tsx | 11 +- libs/react-components/src/lib/modal/modal.tsx | 5 +- .../src/lib/push-drawer/push-drawer.tsx | 11 +- .../src/components/dropdown/Dropdown.svelte | 1 + .../src/components/popover/Popover.svelte | 43 ++- 14 files changed, 731 insertions(+), 12 deletions(-) create mode 100644 apps/prs/angular/src/routes/bugs/3982/bug3982.component.html create mode 100644 apps/prs/angular/src/routes/bugs/3982/bug3982.component.ts create mode 100644 apps/prs/angular/src/routes/bugs/3982/bug3982.route.json create mode 100644 apps/prs/react/src/app/routes/bugs/bug3982.route.ts create mode 100644 apps/prs/react/src/routes/bugs/bug3982.tsx diff --git a/apps/prs/angular/src/routes/bugs/3982/bug3982.component.html b/apps/prs/angular/src/routes/bugs/3982/bug3982.component.html new file mode 100644 index 0000000000..d4d76cd60e --- /dev/null +++ b/apps/prs/angular/src/routes/bugs/3982/bug3982.component.html @@ -0,0 +1,187 @@ +
+
+

3982 - Nested close propagation

+

+ This page tests the issue where popover close events are propegating to parent + drawers and modals. +

+
+ + +
+

Popover

+

Open the popover and interact with all controls.

+
+ + + Open popover + + + +
+

+ Expected: using the date picker, dropdown, and menu button updates values + and leaves the popover open. +

+ + + + + + + + + + + + + +
+
+
+ + +
+

Drawer

+

Open the drawer and interact with all controls.

+
+ + Open drawer + + +
+

+ Expected: using the date picker, dropdown, and menu button updates values + and leaves the drawer open. +

+ + + + + + + + + + + + + +
+
+
+ + +

Push drawer

+

Open the push drawer and interact with all controls.

+ +
+ Open push drawer + + +
+

+ Expected: using the date picker, dropdown, and menu button updates values + and leaves the push drawer open. +

+ + + + + + + + + + + + + +
+
+
+
+ + +
+

Modal

+

Open the modal and interact with all controls.

+
+ + Open modal + + +
+

+ Expected: using the date picker, dropdown, and menu button updates values + and leaves the modal open. +

+ + + + + + + + + + + + + +
+
+
+
\ No newline at end of file diff --git a/apps/prs/angular/src/routes/bugs/3982/bug3982.component.ts b/apps/prs/angular/src/routes/bugs/3982/bug3982.component.ts new file mode 100644 index 0000000000..34672e37f7 --- /dev/null +++ b/apps/prs/angular/src/routes/bugs/3982/bug3982.component.ts @@ -0,0 +1,111 @@ +import { CommonModule } from "@angular/common"; +import { Component } from "@angular/core"; +import { + GoabButton, + GoabContainer, + GoabDatePicker, + GoabDrawer, + GoabDropdown, + GoabDropdownItem, + GoabMenuAction, + GoabMenuButton, + GoabModal, + GoabPopover, + GoabPushDrawer, +} from "@abgov/angular-components"; +import type { + GoabDatePickerOnChangeDetail, + GoabDropdownOnChangeDetail, +} from "@abgov/ui-components-common"; + +@Component({ + standalone: true, + selector: "abgov-bug3982", + templateUrl: "./bug3982.component.html", + imports: [ + CommonModule, + GoabButton, + GoabContainer, + GoabDatePicker, + GoabDrawer, + GoabDropdown, + GoabDropdownItem, + GoabMenuAction, + GoabMenuButton, + GoabModal, + GoabPopover, + GoabPushDrawer, + ], +}) +export class Bug3982Component { + popoverDate = ""; + popoverProvince = ""; + + drawerOpen = false; + drawerDate = ""; + drawerProvince = ""; + + pushDrawerOpen = false; + pushDrawerDate = ""; + pushDrawerProvince = ""; + + modalOpen = false; + modalDate = ""; + modalProvince = ""; + + handlePopoverDateChange(detail: GoabDatePickerOnChangeDetail): void { + this.popoverDate = detail.valueStr || ""; + } + + handlePopoverProvinceChange(detail: GoabDropdownOnChangeDetail): void { + this.popoverProvince = detail.value || ""; + } + + openDrawer(): void { + this.drawerOpen = true; + } + + handleDrawerClose(): void { + this.drawerOpen = false; + } + + handleDrawerDateChange(detail: GoabDatePickerOnChangeDetail): void { + this.drawerDate = detail.valueStr || ""; + } + + handleDrawerProvinceChange(detail: GoabDropdownOnChangeDetail): void { + this.drawerProvince = detail.value || ""; + } + + openPushDrawer(): void { + this.pushDrawerOpen = true; + } + + handlePushDrawerClose(): void { + this.pushDrawerOpen = false; + } + + handlePushDrawerDateChange(detail: GoabDatePickerOnChangeDetail): void { + this.pushDrawerDate = detail.valueStr || ""; + } + + handlePushDrawerProvinceChange(detail: GoabDropdownOnChangeDetail): void { + this.pushDrawerProvince = detail.value || ""; + } + + openModal(): void { + this.modalOpen = true; + } + + handleModalClose(): void { + this.modalOpen = false; + } + + handleModalDateChange(detail: GoabDatePickerOnChangeDetail): void { + this.modalDate = detail.valueStr || ""; + } + + handleModalProvinceChange(detail: GoabDropdownOnChangeDetail): void { + this.modalProvince = detail.value || ""; + } +} \ No newline at end of file diff --git a/apps/prs/angular/src/routes/bugs/3982/bug3982.route.json b/apps/prs/angular/src/routes/bugs/3982/bug3982.route.json new file mode 100644 index 0000000000..54d7261768 --- /dev/null +++ b/apps/prs/angular/src/routes/bugs/3982/bug3982.route.json @@ -0,0 +1,6 @@ +{ + "type": "bug", + "id": "3982", + "path": "bugs/3982", + "title": "Nested close propagation" +} \ No newline at end of file diff --git a/apps/prs/react/src/app/routes/bugs/bug3982.route.ts b/apps/prs/react/src/app/routes/bugs/bug3982.route.ts new file mode 100644 index 0000000000..1f2a6148e1 --- /dev/null +++ b/apps/prs/react/src/app/routes/bugs/bug3982.route.ts @@ -0,0 +1,10 @@ +import { Bug3982Route } from "../../../routes/bugs/bug3982"; +import type { PrRouteDefinition } from "../../route-manifest"; + +export default { + type: "bug", + id: "3982", + path: "bugs/3982", + title: "Nested close propagation", + component: Bug3982Route, +} satisfies PrRouteDefinition; \ No newline at end of file diff --git a/apps/prs/react/src/routes/bugs/bug3982.tsx b/apps/prs/react/src/routes/bugs/bug3982.tsx new file mode 100644 index 0000000000..bb59f82d5d --- /dev/null +++ b/apps/prs/react/src/routes/bugs/bug3982.tsx @@ -0,0 +1,280 @@ +import { useState } from "react"; +import { + GoabButton, + GoabDatePicker, + GoabDrawer, + GoabDropdown, + GoabDropdownItem, + GoabMenuAction, + GoabMenuButton, + GoabModal, + GoabPopover, + GoabPushDrawer, + GoabText, + GoabContainer, +} from "@abgov/react-components"; +import type { + GoabDatePickerOnChangeDetail, + GoabDropdownOnChangeDetail, +} from "@abgov/ui-components-common"; + +const stackStyle = { + display: "grid", + gap: "1.5rem", +}; + +export function Bug3982Route() { + const [popoverDate, setPopoverDate] = useState(""); + const [popoverProvince, setPopoverProvince] = useState(""); + + const [drawerOpen, setDrawerOpen] = useState(false); + const [drawerDate, setDrawerDate] = useState(""); + const [drawerProvince, setDrawerProvince] = useState(""); + + const [pushDrawerOpen, setPushDrawerOpen] = useState(false); + const [pushDrawerDate, setPushDrawerDate] = useState(""); + const [pushDrawerProvince, setPushDrawerProvince] = useState(""); + + const [modalOpen, setModalOpen] = useState(false); + const [modalDate, setModalDate] = useState(""); + const [modalProvince, setModalProvince] = useState(""); + + const handlePopoverDateChange = (detail: GoabDatePickerOnChangeDetail) => { + setPopoverDate(detail.valueStr || ""); + }; + + const handlePopoverProvinceChange = (detail: GoabDropdownOnChangeDetail) => { + setPopoverProvince(detail.value || ""); + }; + + const handleDrawerDateChange = (detail: GoabDatePickerOnChangeDetail) => { + setDrawerDate(detail.valueStr || ""); + }; + + const handleDrawerClose = () => { + setDrawerOpen(false); + }; + + const handleDrawerProvinceChange = (detail: GoabDropdownOnChangeDetail) => { + setDrawerProvince(detail.value || ""); + }; + + const handlePushDrawerDateChange = (detail: GoabDatePickerOnChangeDetail) => { + setPushDrawerDate(detail.valueStr || ""); + }; + + const handlePushDrawerProvinceChange = (detail: GoabDropdownOnChangeDetail) => { + setPushDrawerProvince(detail.value || ""); + }; + + const handlePushDrawerClose = () => { + setPushDrawerOpen(false); + }; + + const handleModalDateChange = (detail: GoabDatePickerOnChangeDetail) => { + setModalDate(detail.valueStr || ""); + }; + + const handleModalProvinceChange = (detail: GoabDropdownOnChangeDetail) => { + setModalProvince(detail.value || ""); + }; + + const handleModalClose = () => { + setModalOpen(false); + }; + + return ( +
+
+ 3982 - Nested close propagation + + This page tests the issue where popover close events are propegating to parent + drawers and modals. + +
+ + +
+ + Popover + + Open the popover and interact with all controls. +
+ + Open popover}> +
+ + Expected: using the date picker, dropdown, and menu button updates values + and leaves the popover open. + + + + + + + + + + + + + + +
+
+
+ + +
+ + Drawer + + Open the drawer and interact with all controls. +
+ + setDrawerOpen(true)}>Open drawer + + +
+ + Expected: using the date picker, dropdown, and menu button updates values + and leaves the drawer open. + + + + + + + + + + + + + + +
+
+
+ + + + Push drawer + + Open the push drawer and interact with all controls. + +
+ setPushDrawerOpen(true)}> + Open push drawer + + + +
+ + Expected: using the date picker, dropdown, and menu button updates values + and leaves the push drawer open. + + + + + + + + + + + + + + +
+
+
+
+ + +
+ + Modal + + Open the modal and interact with all controls. +
+ + setModalOpen(true)}>Open modal + + +
+ + Expected: using the date picker, dropdown, and menu button updates values + and leaves the modal open. + + + + + + + + + + + + + + +
+
+
+
+ ); +} \ No newline at end of file diff --git a/libs/angular-components/src/lib/components/drawer/drawer.ts b/libs/angular-components/src/lib/components/drawer/drawer.ts index 29ff92aff0..c6f5ae6541 100644 --- a/libs/angular-components/src/lib/components/drawer/drawer.ts +++ b/libs/angular-components/src/lib/components/drawer/drawer.ts @@ -25,7 +25,7 @@ import { GoabDrawerPosition, GoabDrawerSize } from "@abgov/ui-components-common" [attr.maxsize]="maxSize" [attr.testid]="testId" [attr.version]="version" - (_close)="_onClose()" + (_close)="_onClose($event)" >
@@ -70,7 +70,8 @@ export class GoabDrawer implements OnInit { }, 0); } - _onClose() { + _onClose(event: Event) { + if (event.target !== event.currentTarget) return; this.onClose.emit(); } diff --git a/libs/angular-components/src/lib/components/modal/modal.ts b/libs/angular-components/src/lib/components/modal/modal.ts index 5427304a68..0562ad7391 100644 --- a/libs/angular-components/src/lib/components/modal/modal.ts +++ b/libs/angular-components/src/lib/components/modal/modal.ts @@ -32,7 +32,7 @@ import { NgTemplateOutlet } from "@angular/common"; [attr.closable]="closable" [attr.transition]="transition" [attr.heading]="getHeadingAsString()" - (_close)="_onClose()" + (_close)="_onClose($event)" >
@if (this.heading !== "" && getHeadingAsTemplate() !== null) { @@ -102,7 +102,8 @@ export class GoabModal implements OnInit { return this.heading instanceof TemplateRef ? this.heading : null; } - _onClose() { + _onClose(event: Event) { + if (event.target !== event.currentTarget) return; this.onClose.emit(); } } diff --git a/libs/angular-components/src/lib/components/push-drawer/push-drawer.ts b/libs/angular-components/src/lib/components/push-drawer/push-drawer.ts index 65d255d803..db5ab60a4f 100644 --- a/libs/angular-components/src/lib/components/push-drawer/push-drawer.ts +++ b/libs/angular-components/src/lib/components/push-drawer/push-drawer.ts @@ -23,7 +23,7 @@ import { [attr.testid]="testId" [attr.width]="width" [attr.version]="version" - (_close)="_onClose()" + (_close)="_onClose($event)" >
@@ -66,7 +66,8 @@ export class GoabPushDrawer implements OnInit { }, 0); } - _onClose() { + _onClose(event: Event) { + if (event.target !== event.currentTarget) return; this.onClose.emit(); } diff --git a/libs/react-components/specs/popover.browser.spec.tsx b/libs/react-components/specs/popover.browser.spec.tsx index 7db4ad54f2..83941ab205 100644 --- a/libs/react-components/specs/popover.browser.spec.tsx +++ b/libs/react-components/specs/popover.browser.spec.tsx @@ -202,6 +202,69 @@ describe("Popover", () => { expect(aboveWidth!).toBe(belowWidth!); }); + it("should not close parent popover when child popover closes", async () => { + const Component = () => { + return ( + + Open parent + + } + > +

Parent content

+ + Open child + + } + > +

Child content

+ + Close child + +
+
+ ); + }; + + const result = render(); + const parentTarget = result.getByTestId("parent-target"); + const childTarget = result.getByTestId("child-target"); + const parentContent = result.getByTestId("parent-content"); + const childContent = result.getByTestId("child-content"); + const childClose = result.getByTestId("child-close"); + + // Open parent popover + await parentTarget.click(); + await vi.waitFor(() => { + expect(parentContent).toBeVisible(); + }); + + // Open child popover + await childTarget.click(); + await vi.waitFor(() => { + expect(childContent).toBeVisible(); + }); + + // Close child popover using close button + await childClose.click(); + + // Parent popover should still be open + await vi.waitFor(() => { + expect(childContent).not.toBeVisible(); + expect(parentContent).toBeVisible(); + }); + }); + it("should align popover to the right edge of the target when there is not enough space on the right", async () => { const Component = () => { return ( diff --git a/libs/react-components/src/lib/drawer/drawer.tsx b/libs/react-components/src/lib/drawer/drawer.tsx index c1eda6568d..9c0fca7e34 100644 --- a/libs/react-components/src/lib/drawer/drawer.tsx +++ b/libs/react-components/src/lib/drawer/drawer.tsx @@ -56,9 +56,16 @@ export function GoabDrawer({ if (!el?.current || !onClose) { return; } - el.current?.addEventListener("_close", onClose); + const current = el.current; + const listener = (e: Event) => { + if (e.target !== current) { + return; + } + onClose(); + }; + current.addEventListener("_close", listener); return () => { - el.current?.removeEventListener("_close", onClose); + current.removeEventListener("_close", listener); }; }, [el, onClose]); diff --git a/libs/react-components/src/lib/modal/modal.tsx b/libs/react-components/src/lib/modal/modal.tsx index 38604c5d83..4b97f47b13 100644 --- a/libs/react-components/src/lib/modal/modal.tsx +++ b/libs/react-components/src/lib/modal/modal.tsx @@ -76,7 +76,10 @@ export function GoabModal({ return; } const current = el.current; - const listener = () => { + const listener = (e: Event) => { + if (e.target !== current) { + return; + } onClose?.(); }; diff --git a/libs/react-components/src/lib/push-drawer/push-drawer.tsx b/libs/react-components/src/lib/push-drawer/push-drawer.tsx index 681add6e08..ec3d4e7b96 100644 --- a/libs/react-components/src/lib/push-drawer/push-drawer.tsx +++ b/libs/react-components/src/lib/push-drawer/push-drawer.tsx @@ -51,9 +51,16 @@ export function GoabPushDrawer({ if (!el?.current || !onClose) { return; } - el.current?.addEventListener("_close", onClose); + const current = el.current; + const listener = (e: Event) => { + if (e.target !== current) { + return; + } + onClose(); + }; + current.addEventListener("_close", listener); return () => { - el.current?.removeEventListener("_close", onClose); + current.removeEventListener("_close", listener); }; }, [el, onClose]); diff --git a/libs/web-components/src/components/dropdown/Dropdown.svelte b/libs/web-components/src/components/dropdown/Dropdown.svelte index e92422814c..5bcffc0813 100644 --- a/libs/web-components/src/components/dropdown/Dropdown.svelte +++ b/libs/web-components/src/components/dropdown/Dropdown.svelte @@ -210,6 +210,7 @@ }); _popoverEl?.addEventListener("_close", (e) => { + e.stopPropagation(); _isMenuVisible = false; }); } diff --git a/libs/web-components/src/components/popover/Popover.svelte b/libs/web-components/src/components/popover/Popover.svelte index d7a9000d84..362349ec6a 100644 --- a/libs/web-components/src/components/popover/Popover.svelte +++ b/libs/web-components/src/components/popover/Popover.svelte @@ -200,6 +200,44 @@ } } + function isInPopoverComposedTree(node: EventTarget | null): boolean { + if (!_popoverEl || !(node instanceof Node)) { + return false; + } + + if (_popoverEl.contains(node)) { + return true; + } + + // Walk across slot and shadow boundaries to detect nested/slotted descendants. + let current: Node | null = node; + while (current) { + if (current === _popoverEl) { + return true; + } + + if (current instanceof Element && current.assignedSlot) { + current = current.assignedSlot; + continue; + } + + if (current.parentNode) { + current = current.parentNode; + continue; + } + + const rootNode = current.getRootNode?.(); + if (rootNode instanceof ShadowRoot) { + current = rootNode.host; + continue; + } + + current = null; + } + + return false; + } + // When one popover is opened it dispatches a `goa:closePopover` to the document.body element, so adding a listener // here will allow any other popover that is currently open to be closed function addGlobalCloseListener() { @@ -213,7 +251,10 @@ // the popover that is being opened will, at that time have the an open state, so we need to prevent // that one that is being opened be immediately closed. if (target !== _targetEl) { - closePopover(); + // Don't close if the target is a child popover (descendant of this popover's content) + if (target && !isInPopoverComposedTree(target)) { + closePopover(); + } } }); } From 1ee188c13227221a69b2ed1577238ce1bd0e21e9 Mon Sep 17 00:00:00 2001 From: Benji Franck Date: Fri, 8 May 2026 10:09:23 -0600 Subject: [PATCH 08/16] chore: re-name PR files and titles from "3982" to "3892" --- .../bug3892.component.html} | 18 ++++++++--------- .../bug3892.component.ts} | 6 +++--- .../bug3892.route.json} | 4 ++-- .../{bug3982.route.ts => bug3892.route.ts} | 8 ++++---- .../routes/bugs/{bug3982.tsx => bug3892.tsx} | 20 +++++++++---------- 5 files changed, 28 insertions(+), 28 deletions(-) rename apps/prs/angular/src/routes/bugs/{3982/bug3982.component.html => 3892/bug3892.component.html} (95%) rename apps/prs/angular/src/routes/bugs/{3982/bug3982.component.ts => 3892/bug3892.component.ts} (95%) rename apps/prs/angular/src/routes/bugs/{3982/bug3982.route.json => 3892/bug3892.route.json} (59%) rename apps/prs/react/src/app/routes/bugs/{bug3982.route.ts => bug3892.route.ts} (56%) rename apps/prs/react/src/routes/bugs/{bug3982.tsx => bug3892.tsx} (95%) diff --git a/apps/prs/angular/src/routes/bugs/3982/bug3982.component.html b/apps/prs/angular/src/routes/bugs/3892/bug3892.component.html similarity index 95% rename from apps/prs/angular/src/routes/bugs/3982/bug3982.component.html rename to apps/prs/angular/src/routes/bugs/3892/bug3892.component.html index d4d76cd60e..3b8653f10d 100644 --- a/apps/prs/angular/src/routes/bugs/3982/bug3982.component.html +++ b/apps/prs/angular/src/routes/bugs/3892/bug3892.component.html @@ -1,6 +1,6 @@
-

3982 - Nested close propagation

+

3892 - Nested close propagation

This page tests the issue where popover close events are propegating to parent drawers and modals. @@ -24,12 +24,12 @@

Popover

and leaves the popover open.

Drawer and leaves the drawer open.

Push drawer and leaves the push drawer open.

Modal and leaves the modal open.

- 3982 - Nested close propagation + 3892 - Nested close propagation This page tests the issue where popover close events are propegating to parent drawers and modals. @@ -108,12 +108,12 @@ export function Bug3982Route() { and leaves the popover open. Date: Thu, 16 Apr 2026 15:43:51 -0600 Subject: [PATCH 09/16] fix(#3657): use the goa progress component in the temp notification --- ...mporary-notification-ctrl.browser.spec.tsx | 15 +- .../linear-progress/LinearProgress.svelte | 2 +- .../TemporaryNotification.spec.ts | 75 ++++--- .../TemporaryNotification.svelte | 193 +++++++++--------- .../TemporaryNotificationCtrl.svelte | 2 +- 5 files changed, 147 insertions(+), 140 deletions(-) diff --git a/libs/react-components/specs/temporary-notification-ctrl.browser.spec.tsx b/libs/react-components/specs/temporary-notification-ctrl.browser.spec.tsx index 461731dd7f..713784325d 100644 --- a/libs/react-components/specs/temporary-notification-ctrl.browser.spec.tsx +++ b/libs/react-components/specs/temporary-notification-ctrl.browser.spec.tsx @@ -289,18 +289,15 @@ describe("Temporary Notification Controller", () => { }); }); - it("should handle progress updates", async function() { + it("should handle progress updates", async () => { const Component = () => { return ( - + ); }; const result = render(); - const progressIndicator = result.getByTestId("progress"); + const progressIndicator = result.getByTestId("some-notification"); setTimeout(() => { const uuid = sendTemporaryNotification("some message", { @@ -308,10 +305,12 @@ describe("Temporary Notification Controller", () => { type: "progress", }); sendProgress(uuid, 10); - }, 0) + }, 0); await vi.waitFor(() => { - expect(progressIndicator.element().getAttribute("value")).toBe("10"); + const el = progressIndicator.element().querySelector("goa-linear-progress"); + expect(el).not.toBeNull(); + expect(el?.getAttribute("progress")).toBe("10"); }); }); }); diff --git a/libs/web-components/src/components/linear-progress/LinearProgress.svelte b/libs/web-components/src/components/linear-progress/LinearProgress.svelte index 74fac36706..5c51ebe3a4 100644 --- a/libs/web-components/src/components/linear-progress/LinearProgress.svelte +++ b/libs/web-components/src/components/linear-progress/LinearProgress.svelte @@ -3,7 +3,7 @@ tag: "goa-linear-progress", props: { testid: { type: "String", attribute: "testid", reflect: true }, - progress: { type: "Number", attribute: "progress" }, + progress: { type: "Number", attribute: "progress", reflect: true }, percentVisibility: { type: "String", attribute: "percent-visibility" }, ariaLabel: { type: "String", attribute: "aria-label" }, ariaLabelledby: { type: "String", attribute: "aria-labelledby" }, diff --git a/libs/web-components/src/components/temporary-notification/TemporaryNotification.spec.ts b/libs/web-components/src/components/temporary-notification/TemporaryNotification.spec.ts index 307abaacc4..1de782c10a 100644 --- a/libs/web-components/src/components/temporary-notification/TemporaryNotification.spec.ts +++ b/libs/web-components/src/components/temporary-notification/TemporaryNotification.spec.ts @@ -6,7 +6,7 @@ describe("GoATemporaryNotification", () => { it("should render", async () => { const { findByTestId } = render(GoATemporaryNotification, { testid: "notification-test", - message: "Test notification" + message: "Test notification", }); const notification = await findByTestId("notification-test"); @@ -15,25 +15,27 @@ describe("GoATemporaryNotification", () => { }); describe("types", () => { - ["basic", "success", "failure", "indeterminate", "progress"].forEach((type) => { - it(`should render ${type} type`, async () => { - const { findByTestId } = render(GoATemporaryNotification, { - testid: "notification-test", - message: "Test notification", - type + ["basic", "success", "failure", "indeterminate", "progress"].forEach( + (type) => { + it(`should render ${type} type`, async () => { + const { findByTestId } = render(GoATemporaryNotification, { + testid: "notification-test", + message: "Test notification", + type, + }); + const notification = await findByTestId("notification-test"); + + expect(notification).toBeTruthy(); + expect(notification.className).toContain(type); }); - const notification = await findByTestId("notification-test"); - - expect(notification).toBeTruthy(); - expect(notification.className).toContain(type); - }); - }); + }, + ); it("should render success type with checkmark icon", async () => { const { container } = render(GoATemporaryNotification, { testid: "notification-test", message: "Success notification", - type: "success" + type: "success", }); const icon = container.querySelector("goa-icon"); @@ -45,7 +47,7 @@ describe("GoATemporaryNotification", () => { const { container } = render(GoATemporaryNotification, { testid: "notification-test", message: "Failure notification", - type: "failure" + type: "failure", }); const icon = container.querySelector("goa-icon"); @@ -58,25 +60,33 @@ describe("GoATemporaryNotification", () => { testid: "notification-test", message: "Progress notification", type: "progress", - progress: 50 + progress: 50, }); - const progressBar = container.querySelector("progress"); + const progressBar = container.querySelector("goa-linear-progress"); + const message = container.querySelector(".message"); expect(progressBar).toBeTruthy(); - expect(progressBar?.getAttribute("value")).toBe("50"); - expect(progressBar?.getAttribute("max")).toBe("100"); + expect(message?.getAttribute("id")).toBeTruthy(); + expect(progressBar?.getAttribute("progress")).toBe("50"); + expect(progressBar?.getAttribute("aria-labelledby")).toBe( + message?.getAttribute("id"), + ); }); it("should render indeterminate type with indeterminate progress bar", async () => { const { container } = render(GoATemporaryNotification, { testid: "notification-test", message: "Indeterminate notification", - type: "indeterminate" + type: "indeterminate", }); - const progressBar = container.querySelector("progress"); + const progressBar = container.querySelector("goa-linear-progress"); + const message = container.querySelector(".message"); expect(progressBar).toBeTruthy(); - expect(progressBar?.hasAttribute("value")).toBe(false); + expect(progressBar?.hasAttribute("progress")).toBe(false); + expect(progressBar?.getAttribute("aria-labelledby")).toBe( + message?.getAttribute("id"), + ); }); }); @@ -84,7 +94,7 @@ describe("GoATemporaryNotification", () => { it("should be visible by default", async () => { const { findByTestId } = render(GoATemporaryNotification, { testid: "notification-test", - message: "Test notification" + message: "Test notification", }); const notification = await findByTestId("notification-test"); @@ -96,7 +106,7 @@ describe("GoATemporaryNotification", () => { const { findByTestId } = render(GoATemporaryNotification, { testid: "notification-test", message: "Test notification", - visible: false + visible: false, }); const notification = await findByTestId("notification-test"); @@ -109,7 +119,7 @@ describe("GoATemporaryNotification", () => { it("should use down animation by default", async () => { const { findByTestId } = render(GoATemporaryNotification, { testid: "notification-test", - message: "Test notification" + message: "Test notification", }); const notification = await findByTestId("notification-test"); @@ -121,7 +131,7 @@ describe("GoATemporaryNotification", () => { const { findByTestId } = render(GoATemporaryNotification, { testid: "notification-test", message: "Test notification", - animationDirection: "up" + animationDirection: "up", }); const notification = await findByTestId("notification-test"); @@ -135,7 +145,7 @@ describe("GoATemporaryNotification", () => { const { container } = render(GoATemporaryNotification, { testid: "notification-test", message: "Test notification", - actionText: "Undo" + actionText: "Undo", }); const actionButton = container.querySelector("goa-link-button"); @@ -146,7 +156,7 @@ describe("GoATemporaryNotification", () => { it("should not render action button when actionText is not provided", async () => { const { container } = render(GoATemporaryNotification, { testid: "notification-test", - message: "Test notification" + message: "Test notification", }); const actionButton = container.querySelector("goa-link-button"); @@ -160,16 +170,15 @@ describe("GoATemporaryNotification", () => { testid: "notification-test", message: "Progress notification", type: "progress", - progress: 25 + progress: 25, }); - let progressBar = container.querySelector("progress"); - expect(progressBar?.getAttribute("value")).toBe("25"); + const progressBar = container.querySelector("goa-linear-progress"); + expect(progressBar?.getAttribute("progress")).toBe("25"); // Test updating progress await rerender({ progress: 75 }); - progressBar = container.querySelector("progress"); - expect(progressBar?.getAttribute("value")).toBe("75"); + expect(progressBar?.getAttribute("progress")).toBe("75"); }); }); }); diff --git a/libs/web-components/src/components/temporary-notification/TemporaryNotification.svelte b/libs/web-components/src/components/temporary-notification/TemporaryNotification.svelte index e7eaca1a62..cdd502129a 100644 --- a/libs/web-components/src/components/temporary-notification/TemporaryNotification.svelte +++ b/libs/web-components/src/components/temporary-notification/TemporaryNotification.svelte @@ -14,7 +14,7 @@ />
{#if type === "success"} - + {/if} {#if type === "failure"} - + {/if} - + {message} -
- {#if actionText} -
- - {actionText} - -
- {/if} + {#if actionText} +
+ + {actionText} + +
+ {/if} +
{#if type === "progress"} - + {:else if type === "indeterminate"} - + {/if}
diff --git a/libs/web-components/src/components/temporary-notification/TemporaryNotificationCtrl.svelte b/libs/web-components/src/components/temporary-notification/TemporaryNotificationCtrl.svelte index 5d63f8b7c4..d03bd879ac 100644 --- a/libs/web-components/src/components/temporary-notification/TemporaryNotificationCtrl.svelte +++ b/libs/web-components/src/components/temporary-notification/TemporaryNotificationCtrl.svelte @@ -44,7 +44,7 @@ let _intervalId: any; onMount(() => { - return receive(window.document.body, (action, data, event) => { + return receive(window.document.body, (action, data, _event) => { switch (action) { case "goa:temp-notification": handleNotification(data as GoabNotification); From 9f3951042b9f027b6f416569dd7ed7542241a754 Mon Sep 17 00:00:00 2001 From: Thomas Jeffery Date: Tue, 14 Apr 2026 17:14:33 -0600 Subject: [PATCH 10/16] fix(#3668): temporary notification refinements --- apps/prs/angular/project.json | 5 +- .../routes/bugs/3668/bug3668.component.html | 117 ++++++++++ .../src/routes/bugs/3668/bug3668.component.ts | 100 +++++++++ .../src/routes/bugs/3668/bug3668.route.json | 6 + .../src/app/routes/bugs/bug3668.route.ts | 10 + apps/prs/react/src/routes/bugs/bug3668.tsx | 212 ++++++++++++++++++ .../configurations/temporary-notification.ts | 102 ++++++++- .../TemporaryNotification.spec.ts | 15 +- .../TemporaryNotification.svelte | 75 +++++-- .../TemporaryNotificationCtrl.svelte | 62 +++-- 10 files changed, 643 insertions(+), 61 deletions(-) create mode 100644 apps/prs/angular/src/routes/bugs/3668/bug3668.component.html create mode 100644 apps/prs/angular/src/routes/bugs/3668/bug3668.component.ts create mode 100644 apps/prs/angular/src/routes/bugs/3668/bug3668.route.json create mode 100644 apps/prs/react/src/app/routes/bugs/bug3668.route.ts create mode 100644 apps/prs/react/src/routes/bugs/bug3668.tsx diff --git a/apps/prs/angular/project.json b/apps/prs/angular/project.json index 3f5e9b6cf7..0616e2eac4 100644 --- a/apps/prs/angular/project.json +++ b/apps/prs/angular/project.json @@ -32,7 +32,10 @@ "output": "/v2-tokens" } ], - "styles": ["apps/prs/angular/src/styles.css"], + "styles": [ + "apps/prs/angular/src/styles.css", + "node_modules/@abgov/design-tokens-v2/dist/tokens.css" + ], "scripts": [] }, "configurations": { diff --git a/apps/prs/angular/src/routes/bugs/3668/bug3668.component.html b/apps/prs/angular/src/routes/bugs/3668/bug3668.component.html new file mode 100644 index 0000000000..3c6d55d43c --- /dev/null +++ b/apps/prs/angular/src/routes/bugs/3668/bug3668.component.html @@ -0,0 +1,117 @@ +
+ + + Bug #3668: Temporary notification refinements + + + + + View on GitHub + + + + + + 1. Indeterminate and progress variants should not have a dark grey border, and + should have a raised-heavy shadow. 2. Action button should be a tertiary + button, not a text button. 3. Below 360px, message and action button stack + vertically with button right-aligned. + + + + + + + Test Cases + + + Test 1: Indeterminate and progress variants (border + shadow) + + + Click each to trigger. Inspect the notification surface. Indeterminate and + progress should NOT have a dark grey border and SHOULD have a raised-heavy shadow + (matching basic/success/failure). + + + + Basic (reference) + + + Success (reference) + + + Failure (reference) + + Indeterminate + Progress + + + + + Test 2: Action button style + + The action button should render as a tertiary button, not a text button. Inspect + the button element. + + Show with action button + + + + Test 3: Stacking below 360px + + Resize your browser below 360px width and trigger a notification with an action. + Message and action button should stack vertically with button right-aligned. + + + + Show with action (then resize to 360px) + + + Show with long content + action + + + + + + + Test 4: Centered controller overlay blocks underlying UI + + + Click the button below to show a centered notification, then try clicking the + fixed Underlying target button at the bottom-right while the notification is + visible. If the count does not increase until the notification disappears, the + full-width controller overlay is blocking pointer events outside the snackbar. + + + + Show centered notification + + + Reset target count + + + + Underlying target clicks: {{ underlyingTargetClicks }} +
+ + diff --git a/apps/prs/angular/src/routes/bugs/3668/bug3668.component.ts b/apps/prs/angular/src/routes/bugs/3668/bug3668.component.ts new file mode 100644 index 0000000000..ed8b351b7f --- /dev/null +++ b/apps/prs/angular/src/routes/bugs/3668/bug3668.component.ts @@ -0,0 +1,100 @@ +import { Component, CUSTOM_ELEMENTS_SCHEMA } from "@angular/core"; +import { + GoabBlock, + GoabButton, + GoabDetails, + GoabDivider, + GoabLink, + GoabTemporaryNotificationCtrl, + GoabText, +} from "@abgov/angular-components"; +import { TemporaryNotification } from "@abgov/ui-components-common"; + +@Component({ + standalone: true, + selector: "abgov-bug3668", + templateUrl: "./bug3668.component.html", + imports: [ + GoabBlock, + GoabButton, + GoabDetails, + GoabDivider, + GoabLink, + GoabTemporaryNotificationCtrl, + GoabText, + ], + schemas: [CUSTOM_ELEMENTS_SCHEMA], +}) +export class Bug3668Component { + underlyingTargetClicks = 0; + + showBasic() { + TemporaryNotification.show("Basic notification for comparison", { + type: "basic", + duration: 8000, + }); + } + + showSuccess() { + TemporaryNotification.show("Successfully saved", { + type: "success", + duration: 8000, + }); + } + + showFailure() { + TemporaryNotification.show("Something went wrong", { + type: "failure", + duration: 8000, + }); + } + + showIndeterminate() { + const uuid = TemporaryNotification.show("Loading something indeterminate...", { + type: "indeterminate", + }); + setTimeout(() => TemporaryNotification.dismiss(uuid), 5000); + } + + showProgress() { + const uuid = TemporaryNotification.show("Uploading file...", { + type: "progress", + }); + let value = 0; + const interval = setInterval(() => { + value += 10; + TemporaryNotification.setProgress(uuid, value); + if (value >= 100) clearInterval(interval); + }, 500); + } + + showWithAction() { + TemporaryNotification.show("Item deleted", { + type: "basic", + duration: 8000, + actionText: "Undo", + }); + } + + showLongContent() { + TemporaryNotification.show( + "Your application for the Alberta Works program has been successfully submitted and is now being reviewed by our team. You will receive a confirmation email shortly.", + { type: "basic", duration: 15000, actionText: "View details" }, + ); + } + + showControllerOverlayIssue() { + TemporaryNotification.show( + "Overlay repro: while this centered notification is visible, try clicking the underlying target button at the bottom-right.", + { type: "basic", duration: 12000 }, + ); + } + + incrementUnderlyingTargetClicks() { + this.underlyingTargetClicks += 1; + } + + resetUnderlyingTargetClicks() { + this.underlyingTargetClicks = 0; + } +} diff --git a/apps/prs/angular/src/routes/bugs/3668/bug3668.route.json b/apps/prs/angular/src/routes/bugs/3668/bug3668.route.json new file mode 100644 index 0000000000..0562f9ca27 --- /dev/null +++ b/apps/prs/angular/src/routes/bugs/3668/bug3668.route.json @@ -0,0 +1,6 @@ +{ + "title": "Temporary Notification Refinements", + "path": "bugs/3668", + "id": "3668", + "type": "bug" +} diff --git a/apps/prs/react/src/app/routes/bugs/bug3668.route.ts b/apps/prs/react/src/app/routes/bugs/bug3668.route.ts new file mode 100644 index 0000000000..c66d06d625 --- /dev/null +++ b/apps/prs/react/src/app/routes/bugs/bug3668.route.ts @@ -0,0 +1,10 @@ +import { Bug3668Route } from "../../../routes/bugs/bug3668"; +import type { PrRouteDefinition } from "../../route-manifest"; + +export default { + type: "bug", + id: "3668", + path: "bugs/3668", + title: "Temporary Notification Refinements", + component: Bug3668Route, +} satisfies PrRouteDefinition; diff --git a/apps/prs/react/src/routes/bugs/bug3668.tsx b/apps/prs/react/src/routes/bugs/bug3668.tsx new file mode 100644 index 0000000000..858c184dbc --- /dev/null +++ b/apps/prs/react/src/routes/bugs/bug3668.tsx @@ -0,0 +1,212 @@ +import { + GoabBlock, + GoabText, + GoabDivider, + GoabDetails, + GoabLink, + GoabButton, + GoabTemporaryNotificationCtrl, +} from "@abgov/react-components"; +import { TemporaryNotification } from "@abgov/ui-components-common"; +import { useState } from "react"; + +export function Bug3668Route() { + const [underlyingTargetClicks, setUnderlyingTargetClicks] = useState(0); + + const showBasic = () => { + TemporaryNotification.show("Basic notification for comparison", { + type: "basic", + duration: 8000, + }); + }; + + const showIndeterminate = () => { + const uuid = TemporaryNotification.show("Loading something indeterminate...", { + type: "indeterminate", + }); + setTimeout(() => TemporaryNotification.dismiss(uuid), 5000); + }; + + const showProgress = () => { + const uuid = TemporaryNotification.show("Uploading file...", { + type: "progress", + }); + let value = 0; + const interval = setInterval(() => { + value += 10; + TemporaryNotification.setProgress(uuid, value); + if (value >= 100) clearInterval(interval); + }, 500); + }; + + const showWithAction = () => { + TemporaryNotification.show("Item deleted", { + type: "basic", + duration: 8000, + actionText: "Undo", + }); + }; + + const showSuccess = () => { + TemporaryNotification.show("Successfully saved", { + type: "success", + duration: 8000, + }); + }; + + const showFailure = () => { + TemporaryNotification.show("Something went wrong", { + type: "failure", + duration: 8000, + }); + }; + + const showControllerOverlayIssue = () => { + TemporaryNotification.show( + "Overlay repro: while this centered notification is visible, try clicking the underlying target button at the bottom-right.", + { + type: "basic", + duration: 12000, + }, + ); + }; + + return ( +
+ + + + Bug #3668: Temporary notification refinements + + + + + + View on GitHub + + + + + + 1. Indeterminate and progress variants should not have a dark grey border, and + should have a raised-heavy shadow. 2. Action button should be a tertiary + button, not a text button. 3. Below 360px, message and action button stack + vertically with button right-aligned. + + + + + + + Test Cases + + + Test 1: Indeterminate and progress variants (border + shadow) + + + Click each to trigger. Inspect the notification surface. Indeterminate and + progress should NOT have a dark grey border and SHOULD have a raised-heavy shadow + (matching basic/success/failure). + + + + Basic (reference) + + + Success (reference) + + + Failure (reference) + + Indeterminate + Progress + + + + + Test 2: Action button style + + The action button should render as a tertiary button, not a text button. Inspect + the button element. + + Show with action button + + + + Test 3: Stacking below 360px + + Resize your browser below 360px width and trigger a notification with an action. + Message and action button should stack vertically with button right-aligned. + + + + Show with action (then resize to 360px) + + { + TemporaryNotification.show( + "Your application for the Alberta Works program has been successfully submitted and is now being reviewed by our team. You will receive a confirmation email shortly.", + { type: "basic", duration: 15000, actionText: "View details" }, + ); + }} + > + Show with long content + action + + + + + + + Test 4: Centered controller overlay blocks underlying UI + + + Click the button below to show a centered notification, then try clicking the + fixed Underlying target button at the bottom-right while the notification is + visible. If the count does not increase until the notification disappears, the + full-width controller overlay is blocking pointer events outside the snackbar. + + + + Show centered notification + + { + setUnderlyingTargetClicks(0); + }} + > + Reset target count + + + + Underlying target clicks: {underlyingTargetClicks} + + +
+ ); +} + +export default Bug3668Route; diff --git a/docs/src/data/configurations/temporary-notification.ts b/docs/src/data/configurations/temporary-notification.ts index 5c1bc5789e..23b64478c5 100644 --- a/docs/src/data/configurations/temporary-notification.ts +++ b/docs/src/data/configurations/temporary-notification.ts @@ -108,29 +108,40 @@ export class SomeOtherComponent { { id: "with-progress", name: "Progress and indeterminate", - description: - "Notifications for loading states (note: progress and indeterminate types may have rendering issues)", + description: "Notifications for loading states", code: { react: ` { - const uuid = TemporaryNotification.show("Uploading file...", { type: "progress" }); - TemporaryNotification.setProgress(uuid, 65); + const uuid = TemporaryNotification.show("Uploading file...", { type: "progress", duration: "long" }); + // Simulate progress; in real usage, drive this from your operation's progress events. + let progress = 0; + const interval = setInterval(() => { + progress = Math.min(progress + 10, 100); + TemporaryNotification.setProgress(uuid, progress); + if (progress >= 100) clearInterval(interval); + }, 500); }} mb="xs">Progress { - TemporaryNotification.show("Processing your request...", { type: "indeterminate" }); + TemporaryNotification.show("Processing your request...", { type: "indeterminate", duration: "long" }); }}>Indeterminate`, angular: { ts: `import { TemporaryNotification } from "@abgov/ui-components-common"; export class SomeOtherComponent { showProgress() { - const uuid = TemporaryNotification.show("Uploading file...", { type: "progress" }); - TemporaryNotification.setProgress(uuid, 65); + const uuid = TemporaryNotification.show("Uploading file...", { type: "progress", duration: "long" }); + // Simulate progress; in real usage, drive this from your operation's progress events. + let progress = 0; + const interval = setInterval(() => { + progress = Math.min(progress + 10, 100); + TemporaryNotification.setProgress(uuid, progress); + if (progress >= 100) clearInterval(interval); + }, 500); } showIndeterminate() { - TemporaryNotification.show("Processing your request...", { type: "indeterminate" }); + TemporaryNotification.show("Processing your request...", { type: "indeterminate", duration: "long" }); } }`, template: ` @@ -145,15 +156,86 @@ export class SomeOtherComponent { `, + }, + }, + { + id: "with-action", + name: "Notification with action", + description: "Notification with a clickable action button (e.g., Undo)", + code: { + react: ` + + { + TemporaryNotification.show("Item moved to trash", { + type: "basic", + duration: "long", + actionText: "Undo", + action: () => { + console.log("Undo clicked"); + }, + }); +}}>Show notification`, + angular: { + ts: `import { TemporaryNotification } from "@abgov/ui-components-common"; + +export class SomeOtherComponent { + showWithAction() { + TemporaryNotification.show("Item moved to trash", { + type: "basic", + duration: "long", + actionText: "Undo", + action: () => { + console.log("Undo clicked"); + }, + }); + } +}`, + template: ` + +Show notification`, + }, + webComponents: ` + +Show notification + +`, diff --git a/libs/web-components/src/components/temporary-notification/TemporaryNotification.spec.ts b/libs/web-components/src/components/temporary-notification/TemporaryNotification.spec.ts index 1de782c10a..a5cfa5d1de 100644 --- a/libs/web-components/src/components/temporary-notification/TemporaryNotification.spec.ts +++ b/libs/web-components/src/components/temporary-notification/TemporaryNotification.spec.ts @@ -64,12 +64,10 @@ describe("GoATemporaryNotification", () => { }); const progressBar = container.querySelector("goa-linear-progress"); - const message = container.querySelector(".message"); expect(progressBar).toBeTruthy(); - expect(message?.getAttribute("id")).toBeTruthy(); expect(progressBar?.getAttribute("progress")).toBe("50"); - expect(progressBar?.getAttribute("aria-labelledby")).toBe( - message?.getAttribute("id"), + expect(progressBar?.getAttribute("aria-label")).toBe( + "Progress notification", ); }); @@ -81,11 +79,10 @@ describe("GoATemporaryNotification", () => { }); const progressBar = container.querySelector("goa-linear-progress"); - const message = container.querySelector(".message"); expect(progressBar).toBeTruthy(); expect(progressBar?.hasAttribute("progress")).toBe(false); - expect(progressBar?.getAttribute("aria-labelledby")).toBe( - message?.getAttribute("id"), + expect(progressBar?.getAttribute("aria-label")).toBe( + "Indeterminate notification", ); }); }); @@ -148,7 +145,7 @@ describe("GoATemporaryNotification", () => { actionText: "Undo", }); - const actionButton = container.querySelector("goa-link-button"); + const actionButton = container.querySelector("goa-button"); expect(actionButton).toBeTruthy(); expect(actionButton?.textContent?.trim()).toBe("Undo"); }); @@ -159,7 +156,7 @@ describe("GoATemporaryNotification", () => { message: "Test notification", }); - const actionButton = container.querySelector("goa-link-button"); + const actionButton = container.querySelector("goa-button"); expect(actionButton).toBeFalsy(); }); }); diff --git a/libs/web-components/src/components/temporary-notification/TemporaryNotification.svelte b/libs/web-components/src/components/temporary-notification/TemporaryNotification.svelte index cdd502129a..be1436fb93 100644 --- a/libs/web-components/src/components/temporary-notification/TemporaryNotification.svelte +++ b/libs/web-components/src/components/temporary-notification/TemporaryNotification.svelte @@ -14,8 +14,6 @@ />
{/if} - + {message} {#if actionText}
- + {actionText} - +
{/if}
@@ -84,12 +96,12 @@ {:else if type === "indeterminate"} {/if}
@@ -100,14 +112,27 @@ box-sizing: border-box; border-radius: var( --goa-temporary-notification-borderRadius, - var(--goa-border-radius-m) + var(--goa-border-radius-l) ); max-width: var(--goa-temporary-notification-max-width, 640px); + min-height: 3.75rem; + /* TODO: replace with token once shadow values are finalized */ + box-shadow: + 0px 0px 2px 0px rgba(0, 0, 0, 0.3), + 0px 16px 32px -8px rgba(0, 0, 0, 0.35); transition: transform var(--goa-temporary-notification-transition-duration, 0.3s) ease, opacity var(--goa-temporary-notification-transition-duration, 0.3s) ease; } + .snackbar:has(.action) { + min-height: 4.5rem; + } + + .snackbar:has(.action) .content { + padding-block: 0.9375rem; + } + @media (--not-mobile) { .snackbar { min-width: var(--goa-temporary-notification-min-width-desktop, 360px); @@ -152,15 +177,6 @@ .basic, .indeterminate, .progress { - border: var( - --goa-temporary-notification-borderWidth, - var(--goa-border-width-s) - ) - solid - var( - --goa-temporary-notification-color-border, - var(--goa-color-greyscale-700) - ); background: var( --goa-temporary-notification-color-bg-basic, var(--goa-color-greyscale-black) @@ -188,7 +204,7 @@ gap: var( --goa-temporary-notification-row-gap, var(--goa-space-m) - ); /* 16px between content and action */ + ); padding: var( --goa-temporary-notification-padding, var(--goa-space-m) var(--goa-space-l) @@ -213,4 +229,19 @@ ); line-height: var(--goa-line-height-3); } + + /* Add top margin to message when icon is present to vertically center first line with icon */ + .content:has(goa-icon) .message { + margin-top: var( + --goa-temporary-notification-padding-text-top, + var(--goa-space-2xs) + ); + } + + /* Override goa-linear-progress tokens so the bar reads against the dark snackbar */ + .progress goa-linear-progress, + .indeterminate goa-linear-progress { + --goa-linear-progress-color-indicator: var(--goa-color-text-light); + --goa-linear-progress-color-track: var(--goa-color-greyscale-400); + } diff --git a/libs/web-components/src/components/temporary-notification/TemporaryNotificationCtrl.svelte b/libs/web-components/src/components/temporary-notification/TemporaryNotificationCtrl.svelte index d03bd879ac..fee9e12954 100644 --- a/libs/web-components/src/components/temporary-notification/TemporaryNotificationCtrl.svelte +++ b/libs/web-components/src/components/temporary-notification/TemporaryNotificationCtrl.svelte @@ -1,28 +1,35 @@ -
Date: Tue, 21 Apr 2026 19:08:15 -0600 Subject: [PATCH 11/16] fix(#3605): use :focus-visible across interactive components --- .../routes/bugs/3605/bug3605.component.html | 447 ++++++++++++++++ .../src/routes/bugs/3605/bug3605.component.ts | 72 +++ .../src/routes/bugs/3605/bug3605.route.json | 6 + .../src/app/routes/bugs/bug3605.route.ts | 9 + apps/prs/react/src/routes/bugs/bug3605.tsx | 485 ++++++++++++++++++ apps/prs/web/src/app/App.svelte | 3 + apps/prs/web/src/routes/3605.svelte | 481 +++++++++++++++++ .../table-sort-header/table-sort-header.ts | 2 + .../specs/datagrid.browser.spec.tsx | 103 ++-- .../specs/link.browser.spec.tsx | 45 ++ .../src/lib/table/table-sort-header.tsx | 2 + .../src/assets/css/components.css | 47 ++ libs/web-components/src/assets/css/reset.css | 7 +- .../src/components/button/Button.svelte | 14 +- .../src/components/checkbox/Checkbox.svelte | 30 +- .../src/components/chip/Chip.svelte | 2 +- .../src/components/data-grid/DataGrid.svelte | 60 ++- .../src/components/details/Details.svelte | 2 +- .../components/filter-chip/FilterChip.svelte | 9 +- .../src/components/link/Link.svelte | 44 +- .../microsite-header/MicrositeHeader.svelte | 2 +- .../notification/Notification.svelte | 16 +- .../components/table/TableSortHeader.svelte | 52 +- .../src/components/text-area/TextArea.svelte | 3 +- .../src/components/tooltip/Tooltip.svelte | 17 +- 25 files changed, 1810 insertions(+), 150 deletions(-) create mode 100644 apps/prs/angular/src/routes/bugs/3605/bug3605.component.html create mode 100644 apps/prs/angular/src/routes/bugs/3605/bug3605.component.ts create mode 100644 apps/prs/angular/src/routes/bugs/3605/bug3605.route.json create mode 100644 apps/prs/react/src/app/routes/bugs/bug3605.route.ts create mode 100644 apps/prs/react/src/routes/bugs/bug3605.tsx create mode 100644 apps/prs/web/src/routes/3605.svelte diff --git a/apps/prs/angular/src/routes/bugs/3605/bug3605.component.html b/apps/prs/angular/src/routes/bugs/3605/bug3605.component.html new file mode 100644 index 0000000000..0a11c5877d --- /dev/null +++ b/apps/prs/angular/src/routes/bugs/3605/bug3605.component.html @@ -0,0 +1,447 @@ +
+ Issue 3605 + + Use :focus-visible across interactive components + + + + + + View on GitHub + + + + + + For every section: Tab should show the focus ring with the correct gap/offset. + Click should not leave a lingering ring. Mouse-down (:active) + on buttons should still show the pressed/focused look. + + + + + +
+ MicrositeHeader + Tab through the links inside the header. Click any link. + +
+ + + + +
+ Chip and FilterChip + Chip (deprecated) + + + + + + + FilterChip + + + + + +
+ + + + +
+ Plain link reset + Unstyled anchors pick up the global reset from assets/css/reset.css. + +
+ + + + +
+ TextArea error state + + Tab into the error text area. Click into it. The focus-within container pattern + applies on focus, which is correct for text inputs. + + +
+ + + + +
+ Button + + Click and Tab each variant. Watch for lingering rings after mouse-up. + + + Default + + Primary + Secondary + Tertiary + + + Destructive + + Primary destructive + Secondary destructive + Tertiary destructive + + + Inverse (on dark bg) +
+ Primary inverse + Secondary inverse + Tertiary inverse +
+
+ + + + +
+ Checkbox + Tab to each. Click each. No ring on mouse click. + + + + + +
+ +
+
+ + + + +
+ + 7. Link — outer-container ring gated by JS modality check + + + Ring sits on the outer container so it wraps icon + text together. The component + listens for focusin on the slotted anchor and checks + .matches(':focus-visible') to keep keyboard-only semantics across the + slot boundary. + + + Plain links + + First link + Second link + Third link + + + Links with leading icons + + Download file + Learn more + Open in new tab + + + Links with trailing icons + + Continue + See more + External resource + + + Links with both icons + + Download and continue + +
+ + + + +
+ Notification + + Slotted anchors in notifications now use focus-visible. Keyboard only. + + + + Info notification with a link inside. + +
+ + Important notification with a link inside. + +
+
+ + Emergency notification with a link inside. + +
+
+ + + + +
+ + 9. Tooltip — .tooltip:focus .tooltip-text:focus-visible + + + Previously mouse-clicking the tooltip trigger revealed the tooltip. Now hover for mouse, + keyboard focus for keyboard. + + + + Hover or Tab me + + +
+ + + + +
+ + 10. Details — summary:focus:focus-visible + + + Previously clicking the summary left a hover-ish style. Now click just toggles open; + keyboard focus shows the focused look. + + + Content inside the details component. + +
+ + + + +
+ + 11. DataGrid — realistic table usage + + + Typical pattern: goab-data-grid wrapping a goab-table. Focus styling + is JS-driven, now guarded with a keyboard-input tracker so mouse click doesn't show the ring. + + + + + + Name + Role + Status + Actions + + + + + Alice Johnson + Developer + + View + + + Bob Smith + Designer + + View + + + Carol White + Manager + + View + + + David Brown + Analyst + + View + + + + + + DataGrid around a table with row checkboxes + + Adds a select-all checkbox to the header row and per-row checkboxes. When focus + lands on a cell whose only focusable child is the checkbox, focus delegates to + the checkbox itself. The corner cells should still show the rounded focus + treatment. + + + + + + + Name + Role + Status + Actions + + + + + + Alice Johnson + Developer + + View + + + + Bob Smith + Designer + + View + + + + Carol White + Manager + + View + + + + David Brown + Analyst + + View + + + + + + DataGrid around a sortable table + + goab-table with onSort handler and goab-table-sort-header on each column. Age + column starts ascending. Tab into a sort header, press Enter or Space to + toggle. Click a sort header with mouse should sort but not leave a lingering + ring. Arrow keys still navigate cells. + + + + + + + Name + + + Role + + + Age + + + + + @for (p of sortablePeople; track p.name) { + + {{ p.name }} + {{ p.role }} + {{ p.age }} + + } + + + + + DataGrid around cards (layout mode) + + keyboardNav="layout". Each card is a row, cells include the checkbox, name, + badge, stat blocks, and menu button. + + + +
+ +
+ + Mike Zwei + + + + +
+ + Updated + Jun 30, 2022 at 2:30 PM + + + Email + mike.zwei@gmail.com + + + Program + Wee Wild Ones Curry + +
+
+ + Program ID + 74528567 + + + Service access + Claims Adjustments + +
+
+ + + + +
+
+ + +
+ +
+ + Emma Stroman + + + + +
+ + Updated + Nov 28, 2021 at 1:30 PM + + + Email + emma.stroman@gmail.com + + + Program + Fort McMurray + +
+
+ + Program ID + 74522643 + + + Service access + Claims Adjustments + +
+
+ + + + +
+
+
+
+
diff --git a/apps/prs/angular/src/routes/bugs/3605/bug3605.component.ts b/apps/prs/angular/src/routes/bugs/3605/bug3605.component.ts new file mode 100644 index 0000000000..295ad455ad --- /dev/null +++ b/apps/prs/angular/src/routes/bugs/3605/bug3605.component.ts @@ -0,0 +1,72 @@ +import { Component } from "@angular/core"; +import { CommonModule } from "@angular/common"; +import { + GoabBadge, + GoabBlock, + GoabButton, + GoabCheckbox, + GoabChip, + GoabContainer, + GoabDataGrid, + GoabDetails, + GoabDivider, + GoabFilterChip, + GoabLink, + GoabMenuAction, + GoabMenuButton, + GoabMicrositeHeader, + GoabNotification, + GoabTable, + GoabTableSortHeader, + GoabText, + GoabTextArea, + GoabTooltip, +} from "@abgov/angular-components"; +import { GoabTableOnSortDetail } from "@abgov/ui-components-common"; + +@Component({ + standalone: true, + selector: "abgov-bug3605", + templateUrl: "./bug3605.component.html", + imports: [ + CommonModule, + GoabBadge, + GoabBlock, + GoabButton, + GoabCheckbox, + GoabChip, + GoabContainer, + GoabDataGrid, + GoabDetails, + GoabDivider, + GoabFilterChip, + GoabLink, + GoabMenuAction, + GoabMenuButton, + GoabMicrositeHeader, + GoabNotification, + GoabTable, + GoabTableSortHeader, + GoabText, + GoabTextArea, + GoabTooltip, + ], +}) +export class Bug3605Component { + sortablePeople = [ + { name: "Alice Johnson", role: "Developer", age: 32 }, + { name: "Bob Smith", role: "Designer", age: 28 }, + { name: "Carol White", role: "Manager", age: 45 }, + { name: "David Brown", role: "Analyst", age: 38 }, + ]; + + onSort(detail: GoabTableOnSortDetail) { + const by = detail.sortBy as "name" | "role" | "age"; + const dir = detail.sortDir; + this.sortablePeople = [...this.sortablePeople].sort((a, b) => { + if (a[by] < b[by]) return dir === 1 ? -1 : 1; + if (a[by] > b[by]) return dir === 1 ? 1 : -1; + return 0; + }); + } +} diff --git a/apps/prs/angular/src/routes/bugs/3605/bug3605.route.json b/apps/prs/angular/src/routes/bugs/3605/bug3605.route.json new file mode 100644 index 0000000000..1c9f9257e0 --- /dev/null +++ b/apps/prs/angular/src/routes/bugs/3605/bug3605.route.json @@ -0,0 +1,6 @@ +{ + "title": "Focus visible across interactive components", + "path": "bugs/3605", + "id": "3605", + "type": "bug" +} diff --git a/apps/prs/react/src/app/routes/bugs/bug3605.route.ts b/apps/prs/react/src/app/routes/bugs/bug3605.route.ts new file mode 100644 index 0000000000..bc0695cbe3 --- /dev/null +++ b/apps/prs/react/src/app/routes/bugs/bug3605.route.ts @@ -0,0 +1,9 @@ +import { Bug3605Route } from "../../../routes/bugs/bug3605"; +import type { PrRouteDefinition } from "../../route-manifest"; +export default { + type: "bug", + id: "3605", + path: "bugs/3605", + title: "Focus visible across interactive components", + component: Bug3605Route, +} satisfies PrRouteDefinition; diff --git a/apps/prs/react/src/routes/bugs/bug3605.tsx b/apps/prs/react/src/routes/bugs/bug3605.tsx new file mode 100644 index 0000000000..939769f373 --- /dev/null +++ b/apps/prs/react/src/routes/bugs/bug3605.tsx @@ -0,0 +1,485 @@ +import "@abgov/style"; +import { useState } from "react"; +import { + GoabBadge, + GoabBlock, + GoabButton, + GoabCheckbox, + GoabChip, + GoabContainer, + GoabDataGrid, + GoabDetails, + GoabDivider, + GoabFilterChip, + GoabLink, + GoabMenuAction, + GoabMenuButton, + GoabMicrositeHeader, + GoabNotification, + GoabTable, + GoabTableSortHeader, + GoabText, + GoabTextarea, + GoabTooltip, +} from "@abgov/react-components"; + +export function Bug3605Route() { + const [sortablePeople, setSortablePeople] = useState([ + { name: "Alice Johnson", role: "Developer", age: 32 }, + { name: "Bob Smith", role: "Designer", age: 28 }, + { name: "Carol White", role: "Manager", age: 45 }, + { name: "David Brown", role: "Analyst", age: 38 }, + ]); + + return ( +
+ + Issue 3605 + + + Use focus-visible across interactive components + + + + + + View on GitHub + + + + + + For every section: Tab should show the focus ring with the correct gap and offset. + Click should not leave a lingering ring. Mouse-down on buttons should still show the + pressed state. + + + + + {/* MicrositeHeader */} +
+ MicrositeHeader + Tab through the links inside the header. Click any link. + +
+ + + + {/* Chip + FilterChip */} +
+ Chip and FilterChip + Chip (deprecated) + + + + + + + FilterChip + + + + + +
+ + + + {/* Plain link reset */} +
+ Plain link reset + Unstyled anchors pick up the global reset from assets/css/reset.css. + +
+ + + + {/* TextArea error */} +
+ TextArea error state + + Tab into the error text area. Click into it. The focus-within container pattern + applies on focus, which is correct for text inputs. + + +
+ + + + {/* Button variants */} +
+ Button + + Click and Tab each variant. Watch for lingering rings after mouse-up. + + + Default + + Primary + Secondary + Tertiary + + + Destructive + + Primary destructive + Secondary destructive + Tertiary destructive + + + Inverse (on dark bg) +
+ Primary inverse + Secondary inverse + Tertiary inverse +
+
+ + + + {/* Checkbox */} +
+ Checkbox + Tab to each. Click each. No ring on mouse click. + + + + + +
+ +
+
+ + + + {/* Link */} +
+ Link + + Ring sits on the outer container so it wraps icon + text together. The component + listens for focusin on the slotted anchor and checks{" "} + .matches(':focus-visible') to keep keyboard-only semantics across the + slot boundary. + + + Plain links + + First link + Second link + Third link + + + Links with leading icons + + Download file + Learn more + Open in new tab + + + Links with trailing icons + + Continue + See more + External resource + +
+ + + + {/* Notification */} +
+ Notification + + Slotted anchors in notifications now use focus-visible. Keyboard only. + + + + Info notification with a link inside. + +
+ + Important notification with a link inside. + +
+
+ + Emergency notification with a link inside. + +
+
+ + + + {/* Tooltip */} +
+ Tooltip + + Hover for mouse, keyboard focus for keyboard. Mouse click on the trigger does + not reveal the tooltip. + + + + Hover or Tab me + + +
+ + + + {/* Details */} +
+ Details + + Click just toggles open. Keyboard focus shows the focused look. + + + Content inside the details component. + +
+ + + + {/* DataGrid */} +
+ DataGrid around a table + + Typical pattern: GoabDataGrid wrapping a GoabTable. Focus styling is JS-driven, + now guarded with a keyboard-input tracker so mouse click does not show the ring. + Arrow keys navigate cells. + + + + + + Name + Role + Status + Actions + + + + + Alice Johnson + Developer + + View + + + Bob Smith + Designer + + View + + + Carol White + Manager + + View + + + David Brown + Analyst + + View + + + + + + DataGrid around a table with row checkboxes + + Adds a select-all checkbox to the header row and per-row checkboxes. + When focus lands on a cell whose only focusable child is the checkbox, + focus delegates to the checkbox itself. The corner cells should still + show the rounded focus treatment. + + + + + + + Name + Role + Status + Actions + + + + + + Alice Johnson + Developer + + View + + + + Bob Smith + Designer + + View + + + + Carol White + Manager + + View + + + + David Brown + Analyst + + View + + + + + + DataGrid around a sortable table + + GoabTable with onSort handler and GoabTableSortHeader on each column. Age + column starts ascending. Tab into a sort header, press Enter or Space to + toggle. Click a sort header with mouse should sort but not leave a + lingering ring. Arrow keys still navigate cells. + + + { + const by = e.sortBy as "name" | "role" | "age"; + const dir = e.sortDir; + setSortablePeople([...sortablePeople].sort((a, b) => { + if (a[by] < b[by]) return dir === 1 ? -1 : 1; + if (a[by] > b[by]) return dir === 1 ? 1 : -1; + return 0; + })); + }} + > + + + + Name + + + Role + + + Age + + + + + {sortablePeople.map((p) => ( + + {p.name} + {p.role} + {p.age} + + ))} + + + + + DataGrid around cards (layout mode) + + keyboardNav="layout". Each card is a row, cells include the checkbox, + name, badge, stat blocks, and menu button. + + + +
+ +
+ + Mike Zwei + + + + +
+ + Updated + Jun 30, 2022 at 2:30 PM + + + Email + mike.zwei@gmail.com + + + Program + Wee Wild Ones Curry + +
+
+ + Program ID + 74528567 + + + Service access + Claims Adjustments + +
+
+ + + + +
+
+ + +
+ +
+ + Emma Stroman + + + + +
+ + Updated + Nov 28, 2021 at 1:30 PM + + + Email + emma.stroman@gmail.com + + + Program + Fort McMurray + +
+
+ + Program ID + 74522643 + + + Service access + Claims Adjustments + +
+
+ + + + +
+
+
+
+
+ ); +} + +export default Bug3605Route; diff --git a/apps/prs/web/src/app/App.svelte b/apps/prs/web/src/app/App.svelte index d26edda9d7..d7be253032 100644 --- a/apps/prs/web/src/app/App.svelte +++ b/apps/prs/web/src/app/App.svelte @@ -1,8 +1,10 @@ @@ -13,5 +15,6 @@ + diff --git a/apps/prs/web/src/routes/3605.svelte b/apps/prs/web/src/routes/3605.svelte new file mode 100644 index 0000000000..566ce8062c --- /dev/null +++ b/apps/prs/web/src/routes/3605.svelte @@ -0,0 +1,481 @@ + + + + Issue 3605 + + +
+ Issue 3605 + Use :focus-visible across interactive components + + For every section: Tab should show the focus ring with the correct gap/offset. + Click should not leave a lingering ring. Mouse-down (:active) + on buttons should still show the pressed/focused look. + + +
+ + +
+ 1. MicrositeHeader — a:focusa:focus-visible + Tab through the links inside the header. Click any link. + + Report a problem + + + Report a problem + +
+ +
+ + +
+ 2. Chip — .chip:focus.chip:focus-visible + V1 Chip (deprecated, still in scope per brief). +
+ + + +
+ + FilterChip V2 (production) + + Chip div is role="presentation"; the close goa-icon-button is + the focusable element. goa-icon-button already uses :focus-visible + (no change needed here). + +
+ + + +
+ + FilterChip V1 (fixed in this PR) + + Whole chip is tabindex="0" role="button". Removed class:focused + binding; outline now on .chip:focus-visible .delete-icon. + +
+ + + +
+
+ +
+ + +
+ 3. Plain link reset — use :focus-visible only + + Unstyled anchors pick up the global reset from assets/css/reset.css. + Dropped both :focus and :focus-within — on plain + <a> they both match on mouse click (HTML doesn't allow focusable + children inside <a>, so :focus-within has no real use + here). + + +
+ +
+ + +
+ 4. TextArea error state — .error:focus + V2 combined selector + + Tab into each error text area. Click into each. The :focus-within container + pattern should still apply on focus (correct). + + V1 error + + V2 error + +
+ +
+ + +
+ 5. Button — drop :focus from combined selectors + + Click and Tab each variant across V1 and V2. Watch for lingering rings after mouse-up. + + + V1 — default +
+ Primary + Secondary + Tertiary +
+ + V1 — destructive +
+ Primary destructive + Secondary destructive + Tertiary destructive +
+ + V1 — inverse (on dark bg) +
+ Primary inverse + Secondary inverse + Tertiary inverse +
+ + V2 — default +
+ Primary + Secondary + Tertiary +
+ + V2 — destructive +
+ Primary destructive + Secondary destructive + Tertiary destructive +
+ + V2 — inverse (on dark bg) +
+ Primary inverse + Secondary inverse + Tertiary inverse +
+
+ +
+ + +
+ 6. Checkbox — drop :has(:focus) duplicates from V1 + + V1 had 10 rules pairing :has(:focus-visible) with :has(:focus). + The :focus duplicate fired on mouse click. V2 already correct. + + + V1 — normal +
+ + + +
+ + V1 — error +
+ +
+ + V2 — normal +
+ + + +
+ + V2 — error +
+ +
+
+ +
+ + +
+ 7. Link — outer-container ring gated by JS modality check + + Ring sits on the outer container so it wraps icon + text together, matching pre-#3605 + visuals. Pure CSS couldn't carry keyboard-only semantics across the slot boundary + (:focus-within matches on click; :has(::slotted(a:focus-visible)) + isn't reliable), so the component listens for focusin on the slotted + anchor and checks .matches(':focus-visible') before flipping a class. + + + Plain links + + + Links with leading icons + + + Links with trailing icons + + + Links with both icons + +
+ +
+ + +
+ 8. Notification — ::slotted(a:focus):focus-visible + + 8 rules (V1 + V2 variants) styled slotted anchors on :focus. Now keyboard only. + + + V1 Notifications + + Info notification with a link inside. + + + Important notification with a link inside. + + + V2 Notifications + + Information high with a link inside. + + + Important high with a link inside. + + + Emergency high with a link inside. + +
+ +
+ + +
+ 9. Tooltip — .tooltip:focus .tooltip-text:focus-visible + + Previously mouse-clicking the tooltip trigger revealed the tooltip. Now hover for mouse, + keyboard focus for keyboard (standard tooltip behavior). + +
+ + Hover or Tab me + +
+
+ +
+ + +
+ 10. Details — summary:focus:focus-visible + + Previously clicking the summary left a hover-ish style. Now click just toggles open; + keyboard focus shows the focused look. + + + Content inside the details component. + +
+ +
+ + +
+ 11. DataGrid — realistic table usage + + Typical pattern: goa-data-grid wrapping a goa-table. Cells contain + badges, buttons, and text. Focus styling is JS-driven via + setFocusedStyle. Describe what looks wrong (mouse click leaving an outline? + UA default ring on a cell? ring jumping?). + + + + + + Name + Role + Status + Actions + + + + + Alice Johnson + Developer + + View + + + Bob Smith + Designer + + View + + + Carol White + Manager + + View + + + David Brown + Analyst + + View + + + + + + DataGrid around cards (layout mode) + + keyboardNav="layout". Each card is a row, cells include the checkbox, name, + badge, stat blocks, and menu button. + + + +
+ +
+ + Mike Zwei + + +
+ + Updated + Jun 30, 2022 at 2:30 PM + + + Email + mike.zwei@gmail.com + + + Program + Wee Wild Ones Curry + +
+
+ + Program ID + 74528567 + + + Service access + Claims Adjustments + +
+
+ + + + +
+
+ + +
+ +
+ + Emma Stroman + + +
+ + Updated + Nov 28, 2021 at 1:30 PM + + + Email + emma.stroman@gmail.com + + + Program + Fort McMurray + +
+
+ + Program ID + 74522643 + + + Service access + Claims Adjustments + +
+
+ + + + +
+
+
+
+
+ + diff --git a/libs/angular-components/src/lib/components/table-sort-header/table-sort-header.ts b/libs/angular-components/src/lib/components/table-sort-header/table-sort-header.ts index 7ebffb98e5..16e99b20ae 100644 --- a/libs/angular-components/src/lib/components/table-sort-header/table-sort-header.ts +++ b/libs/angular-components/src/lib/components/table-sort-header/table-sort-header.ts @@ -17,6 +17,7 @@ import { [attr.name]="name" [attr.direction]="direction" [attr.sort-order]="sortOrder" + [attr.version]="version" > @@ -30,6 +31,7 @@ export class GoabTableSortHeader implements OnInit { private cdr = inject(ChangeDetectorRef); isReady = false; + version = "2"; /** Column name identifier for sorting. */ @Input() name?: string; /** Sets the sort direction indicator. @default "none" */ diff --git a/libs/react-components/specs/datagrid.browser.spec.tsx b/libs/react-components/specs/datagrid.browser.spec.tsx index 805ecf4e5f..1c876d1c83 100644 --- a/libs/react-components/specs/datagrid.browser.spec.tsx +++ b/libs/react-components/specs/datagrid.browser.spec.tsx @@ -315,37 +315,38 @@ describe("DataGrid", () => { await userEvent.keyboard("{ArrowDown}"); await new Promise(resolve => setTimeout(resolve, 100)); - // Verify td data-testid="cell-1-idNumber" has style outline:3px solid var(--goa-color-interactive-focus) + // Verify td data-testid="cell-1-idNumber" carries the [data-focused] attribute const cell1IdNumber = result.container.querySelector('[data-testid="cell-1-idNumber"]') as HTMLElement; expect(cell1IdNumber).toBeTruthy(); - expect(cell1IdNumber.style.outline).toContain('3px solid var(--goa-color-interactive-focus)'); + expect(cell1IdNumber.hasAttribute('data-focused')).toBe(true); // Press Arrow Right await userEvent.keyboard("{ArrowRight}"); await new Promise(resolve => setTimeout(resolve, 100)); - // Verify td data-testid="cell-1-dateStarted" has style outline:3px solid var(--goa-color-interactive-focus) + // Verify td data-testid="cell-1-dateStarted" carries the [data-focused] attribute const cell1DateStarted = result.container.querySelector('[data-testid="cell-1-dateStarted"]') as HTMLElement; - expect(cell1DateStarted?.style.outline).toContain('3px solid var(--goa-color-interactive-focus)'); + expect(cell1DateStarted?.hasAttribute('data-focused')).toBe(true); - // verify td data-testid="cell-1-idNumber" has no more style defined on line 129 (no focus) - expect(cell1IdNumber?.style.outline).toBe(''); + // verify td data-testid="cell-1-idNumber" no longer carries [data-focused]. + // The attribute is removed when nav moves away. Table CSS owns the visual. + expect(cell1IdNumber?.hasAttribute('data-focused')).toBe(false); // Press Arrow Right await userEvent.keyboard("{ArrowRight}"); await new Promise(resolve => setTimeout(resolve, 100)); - // Verify td data-testid="cell-1-dateSubmitted" has inline style outline 3px... + // Verify td data-testid="cell-1-dateSubmitted" carries the [data-focused] attribute const cell1DateSubmitted = result.container.querySelector('[data-testid="cell-1-dateSubmitted"]') as HTMLElement; - expect(cell1DateSubmitted?.style.outline).toContain('3px solid var(--goa-color-interactive-focus)'); + expect(cell1DateSubmitted?.hasAttribute('data-focused')).toBe(true); // Press Arrow Right await userEvent.keyboard("{ArrowRight}"); await new Promise(resolve => setTimeout(resolve, 100)); - // Verify td data-testid="cell-1-status" has inline style outline + // Verify td data-testid="cell-1-status" carries the [data-focused] attribute const cell1Status = result.container.querySelector('[data-testid="cell-1-status"]') as HTMLElement; - expect(cell1Status?.style.outline).toContain('3px solid var(--goa-color-interactive-focus)'); + expect(cell1Status?.hasAttribute('data-focused')).toBe(true); // Press Arrow Right to move to Actions column (last cell with buttons) await userEvent.keyboard("{ArrowRight}"); @@ -433,13 +434,13 @@ describe("DataGrid", () => { statusCells.forEach(cell => { const htmlCell = cell as HTMLElement; - if (htmlCell.style.outline?.includes('3px solid')) { + if (htmlCell.hasAttribute('data-focused')) { focusedStatusCell = htmlCell; } }); expect(focusedStatusCell).toBeTruthy(); - expect(focusedStatusCell?.style.outline).toContain('3px solid var(--goa-color-interactive-focus)'); + expect(focusedStatusCell?.hasAttribute('data-focused')).toBe(true); // Press arrow right to move to Actions column await userEvent.keyboard("{ArrowRight}"); @@ -461,7 +462,7 @@ describe("DataGrid", () => { // Verify a status cell is still highlighted after deletion const remainingStatusCell = result.container.querySelector('td[data-testid*="-status"]') as HTMLElement; expect(remainingStatusCell).toBeTruthy(); - expect(remainingStatusCell?.style.outline).toContain('3px solid var(--goa-color-interactive-focus)'); + expect(remainingStatusCell?.hasAttribute('data-focused')).toBe(true); }); it("Using with Container - should navigate with arrow keys", async() => { @@ -470,42 +471,45 @@ describe("DataGrid", () => { // Wait for components to fully render await new Promise(resolve => setTimeout(resolve, 500)); - // Click on to establish focus position. + // Per issue #3605, mouse click does NOT apply the focus ring — only keyboard + // navigation does. The cell carries no [data-focused] attribute on click. const cell1 = result.container.querySelector('[data-grid="cell-1"]') as HTMLElement; await userEvent.click(cell1); await new Promise(resolve => setTimeout(resolve, 100)); + expect(cell1?.hasAttribute('data-focused')).toBe(false); - // Verify that it is highlighted style: outline: 3px... - expect(cell1?.style.outline).toContain('3px solid var(--goa-color-interactive-focus)'); - // Press Arrow Right + // Arrow Right is keyboard input — ring applies on the next cell. await userEvent.keyboard("{ArrowRight}"); await new Promise(resolve => setTimeout(resolve, 100)); // Verify goa-block data-grid="cell-2" highlighted const cell2 = result.container.querySelector('[data-grid="cell-2"]') as HTMLElement; - expect(cell2?.style.outline).toContain('3px solid var(--goa-color-interactive-focus)'); + expect(cell2?.hasAttribute('data-focused')).toBe(true); - // verify that data-grid="cell-1" no more highlighted - expect(cell1?.style.outline).toBe(''); + // verify that data-grid="cell-1" no longer carries [data-focused]. + expect(cell1?.hasAttribute('data-focused')).toBe(false); // Arrow Right await userEvent.keyboard("{ArrowRight}"); await new Promise(resolve => setTimeout(resolve, 100)); // Press Enter await userEvent.keyboard("{Enter}"); - await new Promise(resolve => setTimeout(resolve, 100)); - // We will have a
{{message}}
which will update message when we press Open button => "Open user 1" for example - // Verify the message to test if Open is triggered - const openMessage = result.container.querySelector('[data-testid="open-user"]') as HTMLElement; - expect(openMessage?.textContent).toBe("Open user 1"); + // Wait for the Open handler to fire and React to render the message div. + // Enter activates the focused button via setTimeout(0) inside DataGrid.focusCell; + // a fixed sleep races the macrotask queue under CI load, so poll the assertion. + await vi.waitFor(() => { + const openMessage = result.container.querySelector('[data-testid="open-user"]') as HTMLElement; + expect(openMessage?.textContent).toBe("Open user 1"); + }); // Arrow Right await userEvent.keyboard("{ArrowRight}"); await new Promise(resolve => setTimeout(resolve, 100)); // Verify data-grid="cell-4" highlighted const cell4 = result.container.querySelector('[data-grid="cell-4"]') as HTMLElement; - expect(cell4?.style.outline).toContain('3px solid var(--goa-color-interactive-focus)'); + expect(cell4?.hasAttribute('data-focused')).toBe(true); // Arrow Right await userEvent.keyboard("{ArrowRight}"); @@ -513,7 +517,7 @@ describe("DataGrid", () => { // Verify data-grid="cell-5" highlighted const cell5 = result.container.querySelector('[data-grid="cell-5"]') as HTMLElement; - expect(cell5?.style.outline).toContain('3px solid var(--goa-color-interactive-focus)'); + expect(cell5?.hasAttribute('data-focused')).toBe(true); // Arrow Right await userEvent.keyboard("{ArrowRight}"); @@ -521,7 +525,7 @@ describe("DataGrid", () => { // Verify data-grid="cell-6" highlighted const cell6 = result.container.querySelector('[data-grid="cell-6"]') as HTMLElement; - expect(cell6?.style.outline).toContain('3px solid var(--goa-color-interactive-focus)'); + expect(cell6?.hasAttribute('data-focused')).toBe(true); // Arrow Right await userEvent.keyboard("{ArrowRight}"); @@ -529,7 +533,7 @@ describe("DataGrid", () => { // Verify data-grid="cell-7" highlighted const cell7 = result.container.querySelector('[data-grid="cell-7"]') as HTMLElement; - expect(cell7?.style.outline).toContain('3px solid var(--goa-color-interactive-focus)'); + expect(cell7?.hasAttribute('data-focused')).toBe(true); // Arrow Right await userEvent.keyboard("{ArrowRight}"); @@ -537,7 +541,7 @@ describe("DataGrid", () => { // Verify data-grid="cell-8" highlighted const cell8 = result.container.querySelector('[data-grid="cell-8"]') as HTMLElement; - expect(cell8?.style.outline).toContain('3px solid var(--goa-color-interactive-focus)'); + expect(cell8?.hasAttribute('data-focused')).toBe(true); // Arrow right await userEvent.keyboard("{ArrowRight}"); await new Promise(resolve => setTimeout(resolve, 100)); @@ -552,11 +556,12 @@ describe("DataGrid", () => { // Press Enter await userEvent.keyboard("{Enter}"); - await new Promise(resolve => setTimeout(resolve, 100)); - // Verify div data-testid="approver-1" has text content = John Doe - const approver1 = result.container.querySelector('[data-testid="approver-1"]') as HTMLElement; - expect(approver1?.textContent).toBe("John Doe"); + // Wait for the dropdown selection to flow through to the rendered approver text. + await vi.waitFor(() => { + const approver1 = result.container.querySelector('[data-testid="approver-1"]') as HTMLElement; + expect(approver1?.textContent).toBe("John Doe"); + }); }) it("Using with Container (Layout mode) - arrow right from last cell wraps to next row", async () => { @@ -703,21 +708,20 @@ describe("DataGrid", () => { const initialRows = result.container.querySelectorAll('[data-grid="row"]'); expect(initialRows.length).toBe(2); - // Click on the first row's name cell to establish focus + // Click on the first row's name cell to establish focus position. + // Per issue #3605, mouse click establishes focus but does NOT apply the + // cell outline — the outline only shows for keyboard-driven focus. const firstRowName = result.container.querySelector('[data-testid="name-1"]') as HTMLElement; await userEvent.click(firstRowName); await new Promise(resolve => setTimeout(resolve, 100)); - // Verify first row name is highlighted - expect(firstRowName?.style.outline).toContain('3px solid var(--goa-color-interactive-focus)'); - - // Navigate to the second row using Arrow Down + // Navigate to the second row using Arrow Down — keyboard nav applies the outline. await userEvent.keyboard("{ArrowDown}"); await new Promise(resolve => setTimeout(resolve, 100)); // Verify second row name is highlighted const secondRowName = result.container.querySelector('[data-testid="name-2"]') as HTMLElement; - expect(secondRowName?.style.outline).toContain('3px solid var(--goa-color-interactive-focus)'); + expect(secondRowName?.hasAttribute('data-focused')).toBe(true); // Add new rows by clicking the button const addRowsBtn = result.container.querySelector('[data-testid="add-rows-btn"]') as HTMLElement; @@ -731,20 +735,17 @@ describe("DataGrid", () => { const updatedRows = result.container.querySelectorAll('[data-grid="row"]'); expect(updatedRows.length).toBe(4); - // Click on first row's name to re-establish focus + // Click on first row's name to re-establish focus position (no outline per #3605). await userEvent.click(firstRowName); await new Promise(resolve => setTimeout(resolve, 100)); - // Verify first row name is highlighted after re-click - expect(firstRowName?.style.outline).toContain('3px solid var(--goa-color-interactive-focus)'); - - // Navigate down through all rows including newly added ones + // Navigate down through all rows including newly added ones — keyboard applies outline. // Row 1 -> Row 2 await userEvent.keyboard("{ArrowDown}"); await new Promise(resolve => setTimeout(resolve, 100)); // Verify second row name is highlighted - expect(secondRowName?.style.outline).toContain('3px solid var(--goa-color-interactive-focus)'); + expect(secondRowName?.hasAttribute('data-focused')).toBe(true); // Row 2 -> Row 3 (newly added) await userEvent.keyboard("{ArrowDown}"); @@ -754,7 +755,7 @@ describe("DataGrid", () => { const thirdRowName = result.container.querySelector('[data-testid="name-3"]') as HTMLElement; expect(thirdRowName).toBeTruthy(); expect(thirdRowName?.textContent).toBe("New User 3"); - expect(thirdRowName?.style.outline).toContain('3px solid var(--goa-color-interactive-focus)'); + expect(thirdRowName?.hasAttribute('data-focused')).toBe(true); // Row 3 -> Row 4 (newly added) await userEvent.keyboard("{ArrowDown}"); @@ -764,20 +765,20 @@ describe("DataGrid", () => { const fourthRowName = result.container.querySelector('[data-testid="name-4"]') as HTMLElement; expect(fourthRowName).toBeTruthy(); expect(fourthRowName?.textContent).toBe("New User 4"); - expect(fourthRowName?.style.outline).toContain('3px solid var(--goa-color-interactive-focus)'); + expect(fourthRowName?.hasAttribute('data-focused')).toBe(true); // Navigate back up to verify bidirectional navigation works await userEvent.keyboard("{ArrowUp}"); // Row 4 -> Row 3 await new Promise(resolve => setTimeout(resolve, 100)); - expect(thirdRowName?.style.outline).toContain('3px solid var(--goa-color-interactive-focus)'); + expect(thirdRowName?.hasAttribute('data-focused')).toBe(true); await userEvent.keyboard("{ArrowUp}"); // Row 3 -> Row 2 await new Promise(resolve => setTimeout(resolve, 100)); - expect(secondRowName?.style.outline).toContain('3px solid var(--goa-color-interactive-focus)'); + expect(secondRowName?.hasAttribute('data-focused')).toBe(true); await userEvent.keyboard("{ArrowUp}"); // Row 2 -> Row 1 await new Promise(resolve => setTimeout(resolve, 100)); - expect(firstRowName?.style.outline).toContain('3px solid var(--goa-color-interactive-focus)'); + expect(firstRowName?.hasAttribute('data-focused')).toBe(true); }); }); diff --git a/libs/react-components/specs/link.browser.spec.tsx b/libs/react-components/specs/link.browser.spec.tsx index 621b0ebf76..64e2217dd3 100644 --- a/libs/react-components/specs/link.browser.spec.tsx +++ b/libs/react-components/specs/link.browser.spec.tsx @@ -2,6 +2,7 @@ import { render } from "vitest-browser-react"; import { GoabLink } from "../src"; import { expect, describe, it, vi } from "vitest"; +import { userEvent } from "@vitest/browser/context"; describe("Link", () => { it("should trigger the action with an arg", async () => { @@ -118,4 +119,48 @@ describe("Link", () => { expect(spy).toHaveBeenCalled(); }); }); + + it("should apply the focus ring on keyboard focus but not on mouse click (#3605)", async () => { + const Component = () => { + return ( +
+ + + Download file + + +
+ ); + }; + + const result = render(); + const anchor = result.getByTestId("anchor"); + const before = result.getByTestId("before"); + + // Wait for the custom element to upgrade so .shadowRoot is real. + // The .keyboard-focused class lives on a shadow-DOM element. + const linkDiv = await vi.waitFor(() => { + const host = result.container.querySelector("goa-link") as HTMLElement | null; + const el = host?.shadowRoot?.querySelector(".link") as HTMLElement | null; + expect(el).toBeTruthy(); + return el!; + }); + + // Mouse click on the anchor: pointer modality, no ring on the container. + await anchor.click(); + expect(linkDiv.classList.contains("keyboard-focused")).toBe(false); + + // Tab from the prior button into the link: keyboard modality, ring on the container. + await before.element().focus(); + await userEvent.keyboard("{Tab}"); + await vi.waitFor(() => { + expect(linkDiv.classList.contains("keyboard-focused")).toBe(true); + }); + + // Tab onward: focus leaves the link, class clears. + await userEvent.keyboard("{Tab}"); + await vi.waitFor(() => { + expect(linkDiv.classList.contains("keyboard-focused")).toBe(false); + }); + }); }) diff --git a/libs/react-components/src/lib/table/table-sort-header.tsx b/libs/react-components/src/lib/table/table-sort-header.tsx index 0995dc319b..6be764bbe1 100644 --- a/libs/react-components/src/lib/table/table-sort-header.tsx +++ b/libs/react-components/src/lib/table/table-sort-header.tsx @@ -10,6 +10,7 @@ interface WCProps { name?: string; direction?: GoabTableSortDirection; "sort-order"?: GoabTableSortOrder; + version?: "1" | "2"; } declare module "react" { @@ -46,6 +47,7 @@ export function GoabTableSortHeader({ name={name} direction={direction} sort-order={sortOrder} + version="2" {...rest} > {children} diff --git a/libs/web-components/src/assets/css/components.css b/libs/web-components/src/assets/css/components.css index 93a1bd5e3e..88a4038bc6 100644 --- a/libs/web-components/src/assets/css/components.css +++ b/libs/web-components/src/assets/css/components.css @@ -144,6 +144,53 @@ goa-table[version="2"] tfoot td:last-child { } +/* DataGrid keyboard focus ring on table cells. + goa-data-grid signals focus via [data-focused] / [data-focus-corner] + attributes so the visual styling lives with the table. The :focus rule + suppresses the UA default; the [data-focused] rule overrides it via source + order when goa-data-grid promotes the focus to a keyboard-driven state. */ +goa-table td:focus, +goa-table th:focus { + outline: none; +} + +goa-table td[data-focused], +goa-table th[data-focused] { + outline: var(--goa-border-width-l, 0.1875rem) solid var(--goa-color-interactive-focus); + /* Inset so the outline stays visible on edge cells inside the table's + overflow: hidden container. */ + outline-offset: -0.1875rem; +} + +goa-table td[data-focus-corner="top-left"], +goa-table th[data-focus-corner="top-left"] { + border-top-left-radius: var(--goa-table-border-radius-container, 1rem); +} +goa-table td[data-focus-corner="top-right"], +goa-table th[data-focus-corner="top-right"] { + border-top-right-radius: var(--goa-table-border-radius-container, 1rem); +} +goa-table td[data-focus-corner="bottom-left"], +goa-table th[data-focus-corner="bottom-left"] { + border-bottom-left-radius: var(--goa-table-border-radius-container, 1rem); +} +goa-table td[data-focus-corner="bottom-right"], +goa-table th[data-focus-corner="bottom-right"] { + border-bottom-right-radius: var(--goa-table-border-radius-container, 1rem); +} + +/* DataGrid keyboard focus ring on layout-mode cells (cards, etc). Outline + sits outside the cell with a small gap so it never overlaps content. */ +goa-data-grid [role="gridcell"]:not(td):not(th):focus { + outline: none; +} + +goa-data-grid [role="gridcell"]:not(td):not(th)[data-focused] { + outline: var(--goa-border-width-l, 0.1875rem) solid var(--goa-color-interactive-focus); + outline-offset: 0.125rem; +} + + /* Normal Variant Cell Types */ goa-table td.goa-table-cell--text { diff --git a/libs/web-components/src/assets/css/reset.css b/libs/web-components/src/assets/css/reset.css index cc8d0a05bd..f7507d898c 100644 --- a/libs/web-components/src/assets/css/reset.css +++ b/libs/web-components/src/assets/css/reset.css @@ -67,9 +67,10 @@ a:hover { color: var(--goa-color-interactive-hover); } -a:focus-visible, a:focus-within, a:focus { - outline: 3px solid var(--goa-color-interactive-focus); - outline-offset: 1px; +a:focus-visible { + border-radius: var(--goa-border-radius-s); + outline: var(--goa-border-width-l) solid var(--goa-color-interactive-focus); + outline-offset: var(--goa-space-3xs); } ::placeholder { diff --git a/libs/web-components/src/components/button/Button.svelte b/libs/web-components/src/components/button/Button.svelte index 4b2ec37511..01ae3192d7 100644 --- a/libs/web-components/src/components/button/Button.svelte +++ b/libs/web-components/src/components/button/Button.svelte @@ -204,8 +204,7 @@ transform: translateY(2px); } - button:focus-visible, - button:focus { + button:focus-visible { box-shadow: 0 0 0 var(--goa-border-width-l) var(--goa-color-interactive-focus); } @@ -262,7 +261,6 @@ background-color: var(--goa-button-primary-hover-color-bg); } button:focus-visible, - button:focus, button:active { border-color: var(--goa-button-primary-hover-border); background-color: var(--goa-button-primary-focus-color-bg); @@ -281,7 +279,6 @@ background-color: var(--goa-button-secondary-hover-color-bg); } button.secondary:focus-visible, - button.secondary:focus, button.secondary:active { border: var(--goa-button-secondary-focus-border); background-color: var(--goa-button-secondary-focus-color-bg); @@ -301,7 +298,6 @@ color: var(--goa-button-tertiary-hover-color-text); } button.tertiary:focus-visible, - button.tertiary:focus, button.tertiary:active { background-color: var(--goa-button-tertiary-focus-color-bg); color: var(--goa-button-tertiary-focus-color-text); @@ -319,9 +315,7 @@ } .submit.destructive:focus-visible, .submit.destructive:active, - .submit.destructive:focus, .primary.destructive:focus-visible, - .primary.destructive:focus, .primary.destructive:active { background-color: var(--goa-button-primary-destructive-focus-color-bg); } @@ -336,7 +330,6 @@ border: var(--goa-button-secondary-destructive-hover-border); } .secondary.destructive:focus-visible, - .secondary.destructive:focus, .secondary.destructive:active { color: var(--goa-button-secondary-destructive-focus-color-text); border: var(--goa-button-secondary-destructive-focus-border); @@ -350,7 +343,6 @@ color: var(--goa-button-tertiary-destructive-hover-color-text); } .tertiary.destructive:focus-visible, - .tertiary.destructive:focus, .tertiary.destructive:active { color: var(--goa-button-tertiary-destructive-focus-color-text); } @@ -367,10 +359,8 @@ color: var(--goa-button-primary-inverse-hover-color-text); } .submit.inverse:focus-visible, - .submit.inverse:focus, .submit.inverse:active, .primary.inverse:focus-visible, - .primary.inverse:focus, .primary.inverse:active { background-color: var(--goa-button-primary-inverse-focus-color-bg); } @@ -386,7 +376,6 @@ border: var(--goa-button-secondary-inverse-hover-border); } .secondary.inverse:focus-visible, - .secondary.inverse:focus, .secondary.inverse:active { color: var(--goa-button-secondary-inverse-focus-color-text); border: var(--goa-button-secondary-inverse-focus-border); @@ -400,7 +389,6 @@ color: var(--goa-button-tertiary-inverse-hover-color-text); } .tertiary.inverse:focus-visible, - .tertiary.inverse:focus, .tertiary.inverse:active { color: var(--goa-button-tertiary-inverse-focus-color-text); } diff --git a/libs/web-components/src/components/checkbox/Checkbox.svelte b/libs/web-components/src/components/checkbox/Checkbox.svelte index 8c2b535352..c394f3f8e6 100644 --- a/libs/web-components/src/components/checkbox/Checkbox.svelte +++ b/libs/web-components/src/components/checkbox/Checkbox.svelte @@ -507,59 +507,49 @@ max-width: ${maxwidth}; } /* Focus + Error Container */ - .error .container:has(:focus-visible), - .error .container:has(:focus) { + .error .container:has(:focus-visible) { outline: none; box-shadow: 0 0 0 3px var(--goa-color-interactive-focus); } - .error .container:has(:focus-visible):hover, - .error .container:has(:focus):hover { + .error .container:has(:focus-visible):hover { outline: none; border: var(--goa-checkbox-border-error); } - .error .container.selected:has(:focus-visible):hover, - .error .container.selected:has(:focus):hover { + .error .container.selected:has(:focus-visible):hover { outline: none; border: none; background-color: var(--goa-checkbox-color-bg); } - label:hover.error .container.selected:has(:focus-visible), - label:hover.error .container.selected:has(:focus) { + label:hover.error .container.selected:has(:focus-visible) { outline: none; border: var(--goa-checkbox-border-error); background-color: var(--goa-checkbox-color-bg); } - label:hover.error .container:has(:focus-visible), - label:hover.error .container:has(:focus) { + label:hover.error .container:has(:focus-visible) { outline: none; border: var(--goa-checkbox-border-error); } /* Focus Container */ - .container:has(:focus-visible), - .container:has(:focus) { + .container:has(:focus-visible) { outline: none; box-shadow: 0 0 0 3px var(--goa-color-interactive-focus); } - .container:has(:focus-visible):hover, - .container:has(:focus):hover { + .container:has(:focus-visible):hover { outline: none; border: var(--goa-checkbox-border); } - .container.selected:has(:focus-visible):hover, - .container.selected:has(:focus):hover { + .container.selected:has(:focus-visible):hover { outline: none; border: none; background-color: var(--goa-checkbox-color-bg-checked); } - label:hover .container.selected:has(:focus-visible), - label:hover .container.selected:has(:focus) { + label:hover .container.selected:has(:focus-visible) { outline: none; border: none; background-color: var(--goa-checkbox-color-bg-checked); } - label:hover .container:has(:focus-visible), - label:hover .container:has(:focus) { + label:hover .container:has(:focus-visible) { outline: none; border: var(--goa-checkbox-border); } diff --git a/libs/web-components/src/components/chip/Chip.svelte b/libs/web-components/src/components/chip/Chip.svelte index 24e1412262..5fb4563587 100644 --- a/libs/web-components/src/components/chip/Chip.svelte +++ b/libs/web-components/src/components/chip/Chip.svelte @@ -136,7 +136,7 @@ ); /* acumin font requires this to allow for vertical alignment */ } - .chip:focus { + .chip:focus-visible { outline: var(--goa-border-width-m) solid var(--goa-color-interactive-focus); background-color: var(--goa-color-greyscale-white); } diff --git a/libs/web-components/src/components/data-grid/DataGrid.svelte b/libs/web-components/src/components/data-grid/DataGrid.svelte index d4f1090c6d..0553708f90 100644 --- a/libs/web-components/src/components/data-grid/DataGrid.svelte +++ b/libs/web-components/src/components/data-grid/DataGrid.svelte @@ -46,6 +46,10 @@ let _bindTimeoutId: any = null; // Track pending grid rebuilds to prevent race conditions let _isRebuilding = false; // Flag to prevent navigation during grid rebuild let _gridHasFocus = false; // Track if the grid currently has focus (persists through DOM mutations) + // Track last input modality so cell outline only appears on keyboard-driven focus. + // Avoids browser :focus-visible heuristics around the first interaction on a fresh page, + // which can match on the first mouse click. + let _lastInputModality: 'pointer' | 'keyboard' = 'keyboard'; onMount(() => { // Delay to allow nested shadow DOMs to fully render before grid setup - menu button is one case vs a lot of nested elements and shadow @@ -73,6 +77,8 @@ } } document.removeEventListener('click', handleOutsideClick); + document.removeEventListener('pointerdown', handlePointerdown, true); + document.removeEventListener('keydown', handleGlobalKeydown, true); }; }) @@ -158,10 +164,35 @@ // Listen for clicks outside the grid to reset focus indices -> remove focusing style document.addEventListener('click', handleOutsideClick); + + // Track last input modality globally so cell focus rings only appear on keyboard input. + // Capture phase so we record the signal before focus events fire. + document.addEventListener('pointerdown', handlePointerdown, true); + document.addEventListener('keydown', handleGlobalKeydown, true); + } + + function handlePointerdown() { + _lastInputModality = 'pointer'; + } + + function handleGlobalKeydown() { + _lastInputModality = 'keyboard'; } - function handleFocusIn() { + function handleFocusIn(event: FocusEvent) { _gridHasFocus = true; + // Apply the cell focus ring only when the cell itself has keyboard-driven focus + // AND the cell has no focusable children of its own. When a cell contains an + // interactive component (checkbox, button, menu-button), event retargeting in + // shadow DOM makes the host appear as the focused element, but the component + // already shows its own focus indicator — applying our ring would stack. + const target = event.target as HTMLElement | null; + if (!target) return; + if (target.getAttribute('role') !== 'gridcell') return; + if (_lastInputModality !== 'keyboard') return; + const cellData = _grid[_focusingRowIndex]?.[_focusingColIndex]; + if (cellData?.cell === target && cellData.focusables.length > 0) return; + setFocusedStyle(target); } function handleFocusOut(event: FocusEvent) { @@ -386,7 +417,8 @@ const newCell = _grid[row][col]?.cell; newCell?.setAttribute('tabindex', '0'); - setFocusedStyle(newCell); + // Outline is applied by handleFocusIn when the cell receives keyboard-driven focus, + // so mouse clicks don't leave a ring on the cell. // Only disable arrow key navigation for input elements _navigationDisabled = newCell.matches('input') || newCell.querySelector('input') !== null; @@ -436,14 +468,30 @@ function setFocusedStyle(el: HTMLElement) { if (!el) return; - el.style.outline = '3px solid var(--goa-color-interactive-focus)'; + // Flip the attribute and let the host component's CSS apply the visual ring. + // Table-mode rules (outline + corner radius) live alongside the rest of the + // table styles in assets/css/components.css; layout-mode has its own rule. + el.setAttribute('data-focused', ''); + + if (keyboardNav !== 'table') return; + + // Tag corner cells so Table CSS can round them to follow the container radius. + const row = _focusingRowIndex; + const col = _focusingColIndex; + const lastRow = _grid.length - 1; + const lastCol = _grid[row] ? _grid[row].length - 1 : 0; + let corner: string | null = null; + if (row === 0 && col === 0) corner = 'top-left'; + else if (row === 0 && col === lastCol) corner = 'top-right'; + else if (row === lastRow && col === 0) corner = 'bottom-left'; + else if (row === lastRow && col === lastCol) corner = 'bottom-right'; + if (corner) el.setAttribute('data-focus-corner', corner); } function removeFocusedStyle(el: HTMLElement) { if (!el) return; - el.style.outline = ''; - el.style.outlineOffset = ''; - el.style.boxShadow = ''; + el.removeAttribute('data-focused'); + el.removeAttribute('data-focus-corner'); } function moveUp() { diff --git a/libs/web-components/src/components/details/Details.svelte b/libs/web-components/src/components/details/Details.svelte index 7966e937e1..5eeede9bd0 100644 --- a/libs/web-components/src/components/details/Details.svelte +++ b/libs/web-components/src/components/details/Details.svelte @@ -120,7 +120,7 @@ outline: var(--goa-details-focus-border); color: var(--goa-color-interactive-hover); } - summary:focus, + summary:focus-visible, summary:active { border-radius: var(--goa-details-border-radius); color: var(--goa-details-color-text-hover); diff --git a/libs/web-components/src/components/filter-chip/FilterChip.svelte b/libs/web-components/src/components/filter-chip/FilterChip.svelte index f738c23968..779f858194 100644 --- a/libs/web-components/src/components/filter-chip/FilterChip.svelte +++ b/libs/web-components/src/components/filter-chip/FilterChip.svelte @@ -105,7 +105,6 @@ data-testid={testid} class="chip" class:error={_error} - class:focused={_focused} style={calculateMargin(mt, mr, mb, ml)} tabindex="0" role="button" @@ -162,8 +161,14 @@ touch-action: manipulation; } - .chip.focused { + .chip:focus-visible { + outline: none; + } + + .chip:focus-visible .delete-icon { outline: var(--goa-border-width-l) solid var(--goa-color-interactive-focus); + outline-offset: 0.125rem; + border-radius: 50%; } .chip.error { diff --git a/libs/web-components/src/components/link/Link.svelte b/libs/web-components/src/components/link/Link.svelte index 77441adea0..2c927f44cb 100644 --- a/libs/web-components/src/components/link/Link.svelte +++ b/libs/web-components/src/components/link/Link.svelte @@ -42,6 +42,10 @@ export let ml: Spacing = null; let _rootEl: HTMLElement; + // Tracks keyboard-driven focus on the slotted anchor. Bound to a state class + // so the visible ring wraps the whole link (icon + text) like it did pre-#3605, + // without triggering on mouse click the way :focus-within did. + let _keyboardFocused = false; $: _iconSize = { xsmall: "2xsmall", // 12px @@ -54,6 +58,8 @@ if (action) { _rootEl.addEventListener("click", handleClick); } + _rootEl.addEventListener("focusin", handleFocusIn); + _rootEl.addEventListener("focusout", handleFocusOut); }) function handleClick(e: Event) { @@ -66,6 +72,20 @@ const host = (_rootEl.getRootNode() as ShadowRoot)?.host as HTMLElement; host?.querySelector("a")?.click(); } + + function handleFocusIn(event: FocusEvent) { + // composedPath()[0] returns the actual focused element across the slot + // boundary; event.target is retargeted to the host inside shadow DOM. + const focused = event.composedPath()[0] as HTMLElement | undefined; + if (!focused || focused.tagName !== "A") return; + if (focused.matches(":focus-visible")) { + _keyboardFocused = true; + } + } + + function handleFocusOut() { + _keyboardFocused = false; + }
diff --git a/libs/web-components/src/components/microsite-header/MicrositeHeader.svelte b/libs/web-components/src/components/microsite-header/MicrositeHeader.svelte index fe03dfbd97..ff19af50d9 100644 --- a/libs/web-components/src/components/microsite-header/MicrositeHeader.svelte +++ b/libs/web-components/src/components/microsite-header/MicrositeHeader.svelte @@ -161,7 +161,7 @@ color: var(--goa-microsite-header-color-links-hover); } - a:focus { + a:focus-visible { outline: var(--goa-microsite-header-link-focus-border); } diff --git a/libs/web-components/src/components/notification/Notification.svelte b/libs/web-components/src/components/notification/Notification.svelte index 28c0caf94e..efe9adb63c 100644 --- a/libs/web-components/src/components/notification/Notification.svelte +++ b/libs/web-components/src/components/notification/Notification.svelte @@ -191,11 +191,11 @@ color: unset !important; outline: unset !important; } - :global(::slotted(a:focus)) { + :global(::slotted(a:focus-visible)) { outline: auto !important; border-radius: var(--goa-border-radius-xs); } - .notification.important :global(::slotted(a:focus)) { + .notification.important :global(::slotted(a:focus-visible)) { outline: unset !important; box-shadow: 0 0 0 3px var(--goa-color-greyscale-black); border-radius: var(--goa-border-radius-xs); @@ -423,27 +423,27 @@ } /* V2 link focus states */ - .v2 .notification.important.high :global(::slotted(a:focus)) { + .v2 .notification.important.high :global(::slotted(a:focus-visible)) { box-shadow: var(--goa-notification-banner-important-high-focus-border); } - .v2 .notification.important.low :global(::slotted(a:focus)) { + .v2 .notification.important.low :global(::slotted(a:focus-visible)) { box-shadow: var(--goa-notification-banner-important-low-focus-border); } - .v2 .notification.information.high :global(::slotted(a:focus)) { + .v2 .notification.information.high :global(::slotted(a:focus-visible)) { box-shadow: var(--goa-notification-banner-information-high-focus-border); } - .v2 .notification.information.low :global(::slotted(a:focus)) { + .v2 .notification.information.low :global(::slotted(a:focus-visible)) { box-shadow: var(--goa-notification-banner-information-low-focus-border); } - .v2 .notification.emergency.high :global(::slotted(a:focus)) { + .v2 .notification.emergency.high :global(::slotted(a:focus-visible)) { box-shadow: var(--goa-notification-banner-emergency-high-focus-border); } - .v2 .notification.emergency.low :global(::slotted(a:focus)) { + .v2 .notification.emergency.low :global(::slotted(a:focus-visible)) { box-shadow: var(--goa-notification-banner-emergency-low-focus-border); } diff --git a/libs/web-components/src/components/table/TableSortHeader.svelte b/libs/web-components/src/components/table/TableSortHeader.svelte index d8813366c4..1f06307101 100644 --- a/libs/web-components/src/components/table/TableSortHeader.svelte +++ b/libs/web-components/src/components/table/TableSortHeader.svelte @@ -49,16 +49,18 @@ class:sorted={direction !== "none"} class:v2={version === "2"} > - - - {sortOrder} - {#if direction === "desc"} - - {:else if direction === "asc"} - - {:else} - - {/if} + + + + {sortOrder} + {#if direction === "desc"} + + {:else if direction === "asc"} + + {:else} + + {/if} + @@ -85,11 +87,21 @@ var(--goa-space-s) var(--goa-space-m) var(--goa-space-xs) ); justify-content: var(--header-text-align, flex-start); - gap: var(--goa-table-sort-header-gap, var(--goa-space-2xs)); align-items: flex-end; text-align: var(--header-align, left); } + /* Inline-flex wrapper around label + sort icon. Sizes to its content so the + focus ring wraps just the visible button content, not the whole cell. + The padding adds breathing room between the content and the focus ring. */ + .content { + display: inline-flex; + align-items: flex-end; + gap: var(--goa-table-sort-header-gap, var(--goa-space-2xs)); + padding: var(--goa-space-3xs); + border-radius: var(--goa-border-radius-m); + } + /* Hover state - no background change, only text color */ button:hover { color: var( @@ -102,17 +114,12 @@ outline: none; } - /* V1: Focus ring on whole button */ - button:focus-visible { + /* Focus ring on the content wrapper (label + sort icon) */ + button:focus-visible .content { box-shadow: 0 0 0 var(--goa-border-width-l) var(--goa-color-interactive-focus); } - /* V2: No focus ring on button, focus ring goes on icon instead */ - button.v2:focus-visible { - box-shadow: none; - } - /* Icon wrapper - contains the sort icon */ .icon-wrapper { display: inline-flex; @@ -121,15 +128,6 @@ border-radius: var(--goa-border-radius-m); } - /* V2: Focus ring on icon when button is focused */ - button.v2:focus-visible .icon-wrapper { - box-shadow: 0 0 0 var(--goa-icon-button-focus-border-width, 2px) - var( - --goa-icon-button-focus-border-color, - var(--goa-color-interactive-focus) - ); - } - /* Active sort icon */ button.sorted goa-icon { color: var(--goa-color-interactive-default); diff --git a/libs/web-components/src/components/text-area/TextArea.svelte b/libs/web-components/src/components/text-area/TextArea.svelte index bad5bc8c82..2465b05e38 100644 --- a/libs/web-components/src/components/text-area/TextArea.svelte +++ b/libs/web-components/src/components/text-area/TextArea.svelte @@ -291,7 +291,7 @@ .error:hover { box-shadow: var(--goa-text-area-border-error); } - .error:focus { + .error:focus-visible { box-shadow: var(--goa-text-area-border), var(--goa-text-area-border-focus); } .error:focus-within:hover { @@ -323,7 +323,6 @@ .v2.root:focus-within { box-shadow: var(--goa-text-area-border-focus); } - .v2.error:focus, .v2.error:focus-within, .v2.error:focus-within:hover { box-shadow: var(--goa-text-area-border-focus); diff --git a/libs/web-components/src/components/tooltip/Tooltip.svelte b/libs/web-components/src/components/tooltip/Tooltip.svelte index 0faff1a89b..51632a6ce5 100644 --- a/libs/web-components/src/components/tooltip/Tooltip.svelte +++ b/libs/web-components/src/components/tooltip/Tooltip.svelte @@ -143,6 +143,16 @@ }, 500); }; + // Mouse click also fires on:focus on a tabindex=0 element, but we only want + // to reveal the tooltip on keyboard-driven focus so JS state stays aligned + // with the CSS :focus-visible rule that drives opacity. + function handleFocus(e: FocusEvent) { + const target = e.currentTarget as HTMLElement | null; + if (!target?.matches?.(":focus-visible")) return; + clearTimeout(_hideTooltipTimeout); + showTooltip(); + } + async function checkAndAdjustPosition() { // angular needs time to render the _tooltipEl await tick(); @@ -227,10 +237,7 @@ showTooltip(); }} on:mouseleave={hideTooltip} - on:focus={() => { - clearTimeout(_hideTooltipTimeout); - showTooltip(); - }} + on:focus={handleFocus} on:blur={hideTooltip} data-testid={testid} role="tooltip" @@ -315,7 +322,7 @@ } .tooltip:hover .tooltip-text, - .tooltip:focus .tooltip-text { + .tooltip:focus-visible .tooltip-text { opacity: 1; } From 938505fc830bc9246042671c40c31e68b7afa264 Mon Sep 17 00:00:00 2001 From: Eric Hoff Date: Tue, 21 Apr 2026 17:32:25 -0600 Subject: [PATCH 12/16] chore(#3636): accordion actions slot and filled version --- .../docs/accordion/accordion.component.html | 47 +- .../features/feat3636/feat3636.component.html | 453 ++++++++++++++++++ .../features/feat3636/feat3636.component.ts | 15 + .../features/feat3636/feat3636.route.json | 6 + .../src/app/routes/features/feat3636.route.ts | 9 + .../src/routes/docs/accordion/accordion.tsx | 80 +++- .../react/src/routes/features/feat3636.tsx | 436 +++++++++++++++++ docs/generated/component-apis/accordion.json | 43 ++ docs/src/data/configurations/accordion.ts | 72 +++ .../components/accordion/accordion.spec.ts | 42 ++ .../src/lib/components/accordion/accordion.ts | 12 + libs/common/src/lib/common.ts | 1 + .../specs/accordion.browser.spec.tsx | 53 ++ .../src/lib/accordion/accordion.spec.tsx | 19 +- .../src/lib/accordion/accordion.tsx | 16 +- .../accordion/Accordion.html-data.json | 20 +- .../components/accordion/Accordion.spec.ts | 19 +- .../src/components/accordion/Accordion.svelte | 59 ++- .../AccordionWithActionsWrapper.test.svelte | 15 + 19 files changed, 1388 insertions(+), 29 deletions(-) create mode 100644 apps/prs/angular/src/routes/features/feat3636/feat3636.component.html create mode 100644 apps/prs/angular/src/routes/features/feat3636/feat3636.component.ts create mode 100644 apps/prs/angular/src/routes/features/feat3636/feat3636.route.json create mode 100644 apps/prs/react/src/app/routes/features/feat3636.route.ts create mode 100644 apps/prs/react/src/routes/features/feat3636.tsx create mode 100644 libs/web-components/src/components/accordion/AccordionWithActionsWrapper.test.svelte diff --git a/apps/prs/angular/src/routes/docs/accordion/accordion.component.html b/apps/prs/angular/src/routes/docs/accordion/accordion.component.html index d0226905a1..ed3794ba8b 100644 --- a/apps/prs/angular/src/routes/docs/accordion/accordion.component.html +++ b/apps/prs/angular/src/routes/docs/accordion/accordion.component.html @@ -2,8 +2,8 @@

Accordion

Basic

- You will need to provide proof of identity, proof of address, - and any relevant supporting documentation. + You will need to provide proof of identity, proof of address, and any relevant + supporting documentation.

Open by default

@@ -82,7 +82,8 @@

Hide and show many sections of information

heading="How do I create an account?" headingSize="medium" [open]="expandedList[0]" - (onChange)="toggleAccordion(0, $event)"> + (onChange)="toggleAccordion(0, $event)" +> To create an account you will need to contact your office admin. @@ -90,22 +91,50 @@

Hide and show many sections of information

heading="What verification is needed to sign documents digitally?" headingSize="medium" [open]="expandedList[1]" - (onChange)="toggleAccordion(1, $event)"> - You will need to verify your identity through our two factor authentication in addition to the digital signature. + (onChange)="toggleAccordion(1, $event)" +> + You will need to verify your identity through our two factor authentication in addition + to the digital signature. - Yes, you can see the status of your application on the main service dashboard when you login. You will receive updates and notifications in your email as your request progresses. + (onChange)="toggleAccordion(2, $event)" +> + Yes, you can see the status of your application on the main service dashboard when you + login. You will receive updates and notifications in your email as your request + progresses. - Yes, our digital service is designed with accessibility in mind. More information on accessibility. + (onChange)="toggleAccordion(3, $event)" +> + Yes, our digital service is designed with accessibility in mind. + More information on accessibility. + + + You will need to provide proof of identity, proof of address, and any relevant + supporting documentation. + + + + This example mixes badges and controls inside the actions slot. + + + +
+ + View all +
+
diff --git a/apps/prs/angular/src/routes/features/feat3636/feat3636.component.html b/apps/prs/angular/src/routes/features/feat3636/feat3636.component.html new file mode 100644 index 0000000000..5ab4452598 --- /dev/null +++ b/apps/prs/angular/src/routes/features/feat3636/feat3636.component.html @@ -0,0 +1,453 @@ +
+ Feature 3636: Accordion actions slot and list view variant + + The GoAAccordion component now includes an optional slot for action buttons in the + header, as well as a new "list view" variant that features a filled header background + and hover state. + + +
+ Actions slot examples + + + + This example places a button in the actions slot while keeping heading text and + content as standard body copy. + + + + + Edit + + + + + This example mixes badges and controls inside the actions slot. + + + + +
+ + View all +
+
+
+ +
+ Heading content examples + + + + The heading content slot can display status indicators such as badges. + + + + + + + + + Preview + + + + + Multiple indicators can be grouped in heading content when more context is needed. + + + + +
+ + +
+
+ + +
+ + Manage +
+
+
+ +
+ Icon position and fixed width examples + +
+ + + A narrow fixed-width accordion using the default icon position. + + + + + Open + + + + + A wider fixed-width accordion with the icon moved to the right side. + + + + +
+ + Details +
+
+
+
+ +
+ Filled/List View Style + + + stuff goes in here + + + + + + + +
+ 1 Comment(s) + View +
+
+ + + stuff goes in here + + + + + + + +
+ 4 Comment(s) + View +
+
+ + + stuff goes in here + + + + + + + +
+ 3 Comment(s) + View +
+
+ + + stuff goes in here + + + + + + + +
+ 8 Comment(s) + View +
+
+ +

Multi-line Heading with Centered Chevron

+
+ +

+ 👀The chevron should be centered here +

+
+ + + + + + +
+ 1 Comment(s) + View +
+
+ + +

+ 👀The chevron should be centered here +

+
+ + + + + + +
+ 1 Comment(s) + View +
+
+ + +

+ 👀The chevron should be centered here +

+
+ + + + + + +
+ 1 Comment(s) + View +
+
+ + +

+ 👀The chevron should be centered here +

+
+ + +
+ 1 Comment(s) + View +
+
+ + +

+ 👀The chevron should be centered here +

+
+ + +
+ 1 Comment(s) + View +
+
+ + +

+ 👀The chevron should be centered here +

+
+ + + + + + +

+ 👀The chevron should be centered here +

+
+ + + + + + + + + + +

+ 👀The chevron should be centered here +

+
+ + + + + + +

+ 👀The chevron should be centered here +

+
+ + + + + + +

+ 👀The chevron should be centered here +

+
+ + + + + + +
+ 1 Comment(s) + View +
+
+ + +

+ 👀The chevron should be centered here +

+
+ + + + + + +
+ 1 Comment(s) + View +
+
+
+
+
diff --git a/apps/prs/angular/src/routes/features/feat3636/feat3636.component.ts b/apps/prs/angular/src/routes/features/feat3636/feat3636.component.ts new file mode 100644 index 0000000000..264448f2f3 --- /dev/null +++ b/apps/prs/angular/src/routes/features/feat3636/feat3636.component.ts @@ -0,0 +1,15 @@ +import { Component } from "@angular/core"; +import { + GoabAccordion, + GoabBadge, + GoabButton, + GoabText, +} from "@abgov/angular-components"; + +@Component({ + standalone: true, + selector: "abgov-feat3636", + templateUrl: "./feat3636.component.html", + imports: [GoabAccordion, GoabBadge, GoabButton, GoabText], +}) +export class Feat3636Component {} diff --git a/apps/prs/angular/src/routes/features/feat3636/feat3636.route.json b/apps/prs/angular/src/routes/features/feat3636/feat3636.route.json new file mode 100644 index 0000000000..3f0882b1c3 --- /dev/null +++ b/apps/prs/angular/src/routes/features/feat3636/feat3636.route.json @@ -0,0 +1,6 @@ +{ + "title": "Accordion actions slot and list view variant", + "path": "features/3636", + "id": "3636", + "type": "feature" +} diff --git a/apps/prs/react/src/app/routes/features/feat3636.route.ts b/apps/prs/react/src/app/routes/features/feat3636.route.ts new file mode 100644 index 0000000000..62c0c29351 --- /dev/null +++ b/apps/prs/react/src/app/routes/features/feat3636.route.ts @@ -0,0 +1,9 @@ +import { Feat3636Route } from "../../../routes/features/feat3636"; +import type { PrRouteDefinition } from "../../route-manifest"; +export default { + type: "feature", + id: "3636", + path: "features/3636", + title: "Accordion actions slot and list view variant", + component: Feat3636Route, +} satisfies PrRouteDefinition; diff --git a/apps/prs/react/src/routes/docs/accordion/accordion.tsx b/apps/prs/react/src/routes/docs/accordion/accordion.tsx index 72ba82a9f7..cd3ad438c0 100644 --- a/apps/prs/react/src/routes/docs/accordion/accordion.tsx +++ b/apps/prs/react/src/routes/docs/accordion/accordion.tsx @@ -33,8 +33,8 @@ export function DocsAccordionRoute() {

Basic

- You will need to provide proof of identity, proof of address, - and any relevant supporting documentation. + You will need to provide proof of identity, proof of address, and any relevant + supporting documentation.

Open by default

@@ -77,11 +77,14 @@ export function DocsAccordionRoute() {

Examples

Expand or collapse part of a form

- Review your application + + Review your application + }> + headingContent={} + >
Date of referral
January 27, 2021
@@ -104,7 +107,12 @@ export function DocsAccordionRoute() {

Hide and show many sections of information

- expandOrCollapseAll()}> + expandOrCollapseAll()} + > {expandedAll ? "Hide all sections" : "Show all sections"} @@ -123,8 +131,8 @@ export function DocsAccordionRoute() { headingSize="medium" onChange={(open) => updateAccordion(2, open)} > - You will need to verify your identity through our two factor - authentication in addition to the digital signature. + You will need to verify your identity through our two factor authentication in + addition to the digital signature. updateAccordion(3, open)} > - Yes, you can see the status of your application on the main service - dashboard when you login. You will receive updates and notifications in - your email as your request progresses. + Yes, you can see the status of your application on the main service dashboard when + you login. You will receive updates and notifications in your email as your + request progresses. More information on accessibility. + + + You will need to provide proof of identity, proof of address, and any relevant + supporting documentation. + + + + + + View all + +
+ } + > + + This example mixes badges and controls inside the actions slot. + + + +
+

Benji

+ } + actions={ +
+ + 1 Comment(s) + + + View + +
+ } + > +
+
Date of referral
+
January 27, 2021
+
Work safety concerns
+
None
+
Type of referral
+
Word of mouth, internet search
+
Intake received from another site
+
Yes
+
+
+
); } diff --git a/apps/prs/react/src/routes/features/feat3636.tsx b/apps/prs/react/src/routes/features/feat3636.tsx new file mode 100644 index 0000000000..21d46d62e1 --- /dev/null +++ b/apps/prs/react/src/routes/features/feat3636.tsx @@ -0,0 +1,436 @@ +import { GoabAccordion, GoabBadge, GoabButton, GoabText } from "@abgov/react-components"; +import v2TokensUrl from "@abgov/design-tokens-v2/dist/tokens.css?url"; +import { useEffect } from "react"; + +export function Feat3636Route() { + // Inject the v2 design tokens + useEffect(() => { + const link = document.createElement("link"); + link.rel = "stylesheet"; + link.href = v2TokensUrl; + document.head.appendChild(link); + return () => { + document.head.removeChild(link); + }; + }, []); + + return ( +
+ + Feature 3636: Accordion actions slot and list view variant + + + The GoAAccordion component now includes an optional slot for action buttons in the + header, as well as a new "list view" variant that features a filled header + background and hover state. + + +
+ Actions slot examples + + + Edit + + } + > + + This example places a button in the actions slot while keeping heading text + and content as standard body copy. + + + + + + + View all + +
+ } + > + + This example mixes badges and controls inside the actions slot. + + +
+ +
+ Heading content examples + + } + actions={ + + Preview + + } + open + > + + The heading content slot can display status indicators such as badges. + + + + + + +
+ } + actions={ +
+ + + Manage + +
+ } + > + + Multiple indicators can be grouped in heading content when more context is + needed. + + +
+ +
+ Icon position and fixed width examples + +
+ + Open + + } + open + > + + A narrow fixed-width accordion using the default icon position. + + + + + + + Details + +
+ } + open + > + + A wider fixed-width accordion with the icon moved to the right side. + + +
+
+ +
+ Filled/List View Style + } + headingType="filled" + actions={ +
+ + 1 Comment(s) + + + View + +
+ } + open + > + stuff goes in here +
+ + } + headingType="filled" + actions={ +
+ + 4 Comment(s) + + + View + +
+ } + open + > + stuff goes in here +
+ } + headingType="filled" + actions={ +
+ + 3 Comment(s) + + + View + +
+ } + open + > + stuff goes in here +
+ } + headingType="filled" + actions={ +
+ + 8 Comment(s) + + + View + +
+ } + open + > + stuff goes in here +
+
+

Multi-line Heading with Centered Chevron

+
+ } + headingType="filled" + actions={ +
+ + 1 Comment(s) + + + View + +
+ } + > +

+ + 👀 + + The chevron should be centered in the heading +

+
+ } + headingType="filled" + actions={ +
+ + 1 Comment(s) + + + View + +
+ } + iconPosition="right" + > +

+ + 👀 + + The chevron should be centered here +

+
+ + + 1 Comment(s) + + + View + +
+ } + > +

+ + 👀 + + The chevron should be centered here +

+ + + + 1 Comment(s) + + + View + +
+ } + > +

+ + 👀 + + The chevron should be centered here +

+ + } + headingType="filled" + > +

+ + 👀 + + The chevron should be centered here +

+
+ } + headingType="filled" + iconPosition="right" + > +

+ + 👀 + + The chevron should be centered here +

+
+ } + > +

+ + 👀 + + The chevron should be centered here +

+
+ } + iconPosition="right" + > +

+ + 👀 + + The chevron should be centered here +

+
+ } + headingType="filled" + actions={ +
+ + 1 Comment(s) + + + View + +
+ } + secondaryText="Secondary text that is long enough to wrap onto multiple lines and push the heading content and actions down" + > +

+ + 👀 + + The chevron should be centered here +

+
+ } + headingType="filled" + actions={ +
+ + 1 Comment(s) + + + View + +
+ } + secondaryText="Secondary text that is long enough to wrap onto multiple lines and push the heading content and actions down" + iconPosition="right" + > +

+ + 👀 + + The chevron should be centered here +

+
+
+

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

+ ); +} diff --git a/docs/generated/component-apis/accordion.json b/docs/generated/component-apis/accordion.json index 5bbda053ed..913aae44d2 100644 --- a/docs/generated/component-apis/accordion.json +++ b/docs/generated/component-apis/accordion.json @@ -18,6 +18,13 @@ "default": "small", "description": "Sets the heading size of the accordion container heading." }, + { + "name": "headingType", + "type": "GoabAccordionHeadingType", + "required": false, + "default": "normal", + "description": "Sets the accordion style variant." + }, { "name": "iconPosition", "type": "GoabAccordionIconPosition", @@ -93,6 +100,12 @@ } ], "slots": [ + { + "name": "actions", + "type": "ReactNode", + "description": "Sets content rendered in the accordion heading, right-aligned before the expand/collapse icon.", + "required": false + }, { "name": "headingContent", "type": "ReactNode", @@ -117,6 +130,13 @@ "default": null, "description": "Sets the heading size of the accordion container heading." }, + { + "name": "headingType", + "type": "GoabAccordionHeadingType", + "required": false, + "default": null, + "description": "Sets the accordion style variant." + }, { "name": "iconPosition", "type": "GoabAccordionIconPosition", @@ -192,6 +212,12 @@ } ], "slots": [ + { + "name": "actions", + "type": "TemplateRef", + "description": "Sets content rendered in the accordion heading, right-aligned before the expand/collapse icon.", + "required": false + }, { "name": "headingContent", "type": "TemplateRef", @@ -209,6 +235,18 @@ "default": "", "description": "Sets the heading text." }, + { + "name": "heading-type", + "type": "\"normal\" | \"filled\"", + "typeLabel": "GoabAccordionHeadingType", + "values": [ + "normal", + "filled" + ], + "required": false, + "default": "normal", + "description": "Sets the accordion style variant. @default \"normal\"" + }, { "name": "headingsize", "type": "\"small\" | \"medium\"", @@ -312,6 +350,11 @@ } ], "slots": [ + { + "name": "actions", + "description": "Sets content rendered in the accordion heading, right-aligned before the expand/collapse icon.", + "required": false + }, { "name": "headingcontent", "description": "Sets content rendered within the accordion heading, alongside the heading text.", diff --git a/docs/src/data/configurations/accordion.ts b/docs/src/data/configurations/accordion.ts index 2ce87e20f7..79a8d21b3e 100644 --- a/docs/src/data/configurations/accordion.ts +++ b/docs/src/data/configurations/accordion.ts @@ -144,6 +144,78 @@ export const accordionConfigurations: ComponentConfigurations = { Applications are typically processed within 10 business days. +`, + }, + }, + { + id: "filled", + name: "Filled accordion", + description: "Single accordion with filled type", + code: { + react: ` + You will need to provide proof of identity, proof of address, + and any relevant supporting documentation. +`, + angular: ` + You will need to provide proof of identity, proof of address, + and any relevant supporting documentation. +`, + webComponents: ` + You will need to provide proof of identity, proof of address, + and any relevant supporting documentation. +`, + }, + }, + { + id: "actions", + name: "Accordion with actions", + description: "Accordion with actions slot content", + code: { + react: ` + + + View all + +
+ } +> + + This example mixes badges and controls inside the actions slot. + +`, + angular: ` + + This example mixes badges and controls inside the actions slot. + + + + +
+ + View all +
+
`, + webComponents: ` + + This example mixes badges and controls inside the actions slot. + +
+
+ + View all +
+
`, }, }, diff --git a/libs/angular-components/src/lib/components/accordion/accordion.spec.ts b/libs/angular-components/src/lib/components/accordion/accordion.spec.ts index d91a1205e1..0425266ea4 100644 --- a/libs/angular-components/src/lib/components/accordion/accordion.spec.ts +++ b/libs/angular-components/src/lib/components/accordion/accordion.spec.ts @@ -5,6 +5,7 @@ import { By } from "@angular/platform-browser"; import { GoabAccordionHeadingSize, GoabAccordionIconPosition, + GoabAccordionHeadingType, } from "@abgov/ui-components-common"; @Component({ @@ -17,6 +18,7 @@ import { [headingSize]="headingSize" [headingContent]="headingContent" [iconPosition]="iconPosition" + [headingType]="headingType" maxWidth="480px" > test content @@ -29,8 +31,21 @@ class TestAccordionComponent { open?: boolean; headingSize?: GoabAccordionHeadingSize; iconPosition?: GoabAccordionIconPosition; + headingType?: GoabAccordionHeadingType; } +@Component({ + standalone: true, + imports: [GoabAccordion], + template: ` + + test content + This is the actions content + + `, +}) +class TestAccordionWithActionsComponent {} + describe("GoabAccordion", () => { let fixture: ComponentFixture; let component: TestAccordionComponent; @@ -48,6 +63,7 @@ describe("GoabAccordion", () => { component.open = true; component.headingSize = "large" as GoabAccordionHeadingSize; component.iconPosition = "right" as GoabAccordionIconPosition; + component.headingType = "filled" as GoabAccordionHeadingType; fixture.detectChanges(); tick(); @@ -64,7 +80,33 @@ describe("GoabAccordion", () => { expect(accordionElement.getAttribute("headingsize")).toBe("large"); expect(accordionElement.getAttribute("maxwidth")).toBe("480px"); expect(accordionElement.getAttribute("iconposition")).toBe("right"); + expect(accordionElement.getAttribute("heading-type")).toBe("filled"); const headingContent = accordionElement.querySelector("[slot='headingcontent']"); expect(headingContent.textContent).toContain("This is the headingcontent"); }); }); + +describe("GoabAccordion actions slot", () => { + let fixture: ComponentFixture; + + beforeEach(fakeAsync(() => { + TestBed.configureTestingModule({ + imports: [GoabAccordion, TestAccordionWithActionsComponent], + schemas: [CUSTOM_ELEMENTS_SCHEMA], + }).compileComponents(); + + fixture = TestBed.createComponent(TestAccordionWithActionsComponent); + fixture.detectChanges(); + tick(); + fixture.detectChanges(); + })); + + it("should render the actions slot content", () => { + const accordionElement = fixture.debugElement.query( + By.css("goa-accordion"), + ).nativeElement; + const actionsSlot = accordionElement.querySelector("[slot='actions']"); + expect(actionsSlot).toBeTruthy(); + expect(actionsSlot.textContent).toContain("This is the actions content"); + }); +}); diff --git a/libs/angular-components/src/lib/components/accordion/accordion.ts b/libs/angular-components/src/lib/components/accordion/accordion.ts index d8d80f3202..1d93b78da5 100644 --- a/libs/angular-components/src/lib/components/accordion/accordion.ts +++ b/libs/angular-components/src/lib/components/accordion/accordion.ts @@ -1,6 +1,7 @@ import { GoabAccordionHeadingSize, GoabAccordionIconPosition, + GoabAccordionHeadingType, } from "@abgov/ui-components-common"; import { CUSTOM_ELEMENTS_SCHEMA, @@ -28,9 +29,11 @@ import { GoabBaseComponent } from "../base.component"; [attr.secondarytext]="secondaryText" [attr.open]="open" [attr.headingsize]="headingSize" + [attr.heading-type]="headingType" [attr.maxwidth]="maxWidth" [attr.testid]="testId" [attr.iconposition]="iconPosition" + [attr.heading-type]="headingType" [attr.mt]="mt" [attr.mb]="mb" [attr.ml]="ml" @@ -40,6 +43,11 @@ import { GoabBaseComponent } from "../base.component";
+ @if (actions) { +
+ +
+ } } @@ -60,10 +68,14 @@ export class GoabAccordion extends GoabBaseComponent implements OnInit { @Input() headingSize?: GoabAccordionHeadingSize; /** Sets the heading content template reference. */ @Input() headingContent!: TemplateRef; + /** Sets the actions content template reference, rendered right-aligned in the heading before the expand/collapse icon. */ + @Input() actions?: TemplateRef; /** Sets the maximum width of the accordion. */ @Input() maxWidth?: string; /** Sets the position of the expand/collapse icon. */ @Input() iconPosition?: GoabAccordionIconPosition; + /** Sets the accordion style variant. */ + @Input() headingType?: GoabAccordionHeadingType; /** Emits when the accordion opens or closes. Emits the new open state as a boolean. */ @Output() onChange = new EventEmitter(); diff --git a/libs/common/src/lib/common.ts b/libs/common/src/lib/common.ts index 6e104f1ad8..d7bf2c3d12 100644 --- a/libs/common/src/lib/common.ts +++ b/libs/common/src/lib/common.ts @@ -265,6 +265,7 @@ export type GoabButtonGroupGap = "relaxed" | "compact"; // Accordion export type GoabAccordionHeadingSize = "small" | "medium"; export type GoabAccordionIconPosition = "left" | "right"; +export type GoabAccordionHeadingType = "normal" | "filled"; // Tooltip diff --git a/libs/react-components/specs/accordion.browser.spec.tsx b/libs/react-components/specs/accordion.browser.spec.tsx index a76495971b..135df672be 100644 --- a/libs/react-components/specs/accordion.browser.spec.tsx +++ b/libs/react-components/specs/accordion.browser.spec.tsx @@ -119,6 +119,59 @@ describe("Accordion", () => { }); }); + it("should not expand the accordion when a button in the actions slot is clicked", async () => { + const accordionChangeSpy = vi.fn(); + + const Component = () => { + return ( + Action + } + onChange={accordionChangeSpy} + > + Accordion content + + ); + }; + + const result = render(); + const button = result.getByTestId("actions-button"); + await userEvent.click(button); + + await vi.waitFor(() => { + expect(accordionChangeSpy).not.toHaveBeenCalled(); + }); + }); + + it("should fire the actions button onClick when the actions button is clicked", async () => { + const handleClick = vi.fn(); + + const Component = () => { + return ( + Action + } + > + Accordion content + + ); + }; + + const result = render(); + const button = result.getByTestId("actions-button"); + await userEvent.click(button); + + await vi.waitFor(() => { + expect(handleClick).toHaveBeenCalled(); + }); + }); + it("should set the open attribute on the details element", async () => { const Component = () => { const [open, setOpen] = useState(false); diff --git a/libs/react-components/src/lib/accordion/accordion.spec.tsx b/libs/react-components/src/lib/accordion/accordion.spec.tsx index 2331e6bfe2..6cf5f3586a 100644 --- a/libs/react-components/src/lib/accordion/accordion.spec.tsx +++ b/libs/react-components/src/lib/accordion/accordion.spec.tsx @@ -1,5 +1,6 @@ import { render } from "@testing-library/react"; import { GoabBadge } from "../badge/badge"; +import { GoabButton } from "../button/button"; import { GoabAccordion } from "./accordion"; @@ -20,6 +21,7 @@ describe("Accordion", () => { heading="The heading" secondaryText="Secondary Text" open + headingType="filled" headingContent={} maxWidth="480px" > @@ -30,17 +32,26 @@ describe("Accordion", () => { const headingContent = el?.querySelector("[slot='headingcontent']"); expect(el?.getAttribute("secondarytext")).toBe("Secondary Text"); expect(el?.getAttribute("open")).toBe("true"); + expect(el?.getAttribute("heading-type")).toBe("filled"); const badge = headingContent?.querySelector("goa-badge"); expect(badge?.getAttribute("content")).toBe("test-badge"); expect(el?.getAttribute("maxwidth")).toBe("480px"); }); + it("should render the actions slot", () => { + const { baseElement } = render( + Action}> + Content + , + ); + const el = baseElement.querySelector("goa-accordion"); + const actions = el?.querySelector("[slot='actions']"); + expect(actions).toBeTruthy(); + }); + it("should pass data-grid attributes", () => { const { baseElement } = render( - + Content , ); diff --git a/libs/react-components/src/lib/accordion/accordion.tsx b/libs/react-components/src/lib/accordion/accordion.tsx index a577a18a35..986ace64b5 100644 --- a/libs/react-components/src/lib/accordion/accordion.tsx +++ b/libs/react-components/src/lib/accordion/accordion.tsx @@ -3,6 +3,7 @@ import { ReactNode, useEffect, useRef, type JSX } from "react"; import type { GoabAccordionHeadingSize, GoabAccordionIconPosition, + GoabAccordionHeadingType, Margins, DataAttributes, } from "@abgov/ui-components-common"; @@ -17,6 +18,7 @@ interface WCProps extends Margins { maxwidth?: string; testid?: string; iconposition?: GoabAccordionIconPosition; + headingType?: GoabAccordionHeadingType; } declare module "react" { @@ -42,12 +44,16 @@ export interface GoabAccordionProps extends Margins, DataAttributes { secondaryText?: string; /** Sets content rendered within the accordion heading, alongside the heading text. */ headingContent?: ReactNode; + /** Sets content rendered in the accordion heading, right-aligned before the expand/collapse icon. */ + actions?: ReactNode; /** Sets the maximum width of the accordion. @default "none" */ maxWidth?: string; /** Sets a data-testid attribute for automated testing. */ testId?: string; /** Sets the position of the expand/collapse icon. @default "left" */ iconPosition?: GoabAccordionIconPosition; + /** Sets the accordion style variant. @default "normal" */ + headingType?: GoabAccordionHeadingType; /** Callback fired when the accordion is opened or closed. Receives the new open state as a boolean. */ onChange?: (open: boolean) => void; /** Content rendered inside the accordion body. */ @@ -59,6 +65,8 @@ export function GoabAccordion({ open, onChange, headingContent, + headingType, + actions, children, ...rest }: GoabAccordionProps): JSX.Element { @@ -81,8 +89,14 @@ export function GoabAccordion({ }, [onChange]); return ( - + {headingContent &&
{headingContent}
} + {actions &&
{actions}
} {children}
); diff --git a/libs/web-components/src/components/accordion/Accordion.html-data.json b/libs/web-components/src/components/accordion/Accordion.html-data.json index 77e84016a9..1454fd19c2 100644 --- a/libs/web-components/src/components/accordion/Accordion.html-data.json +++ b/libs/web-components/src/components/accordion/Accordion.html-data.json @@ -1,6 +1,8 @@ { "name": "goa-accordion", - "required": ["heading"], + "required": [ + "heading" + ], "attributes": [ { "name": "heading", @@ -44,6 +46,22 @@ ], "type": "string" }, + { + "name": "heading-type", + "default": "normal", + "description": "Sets the accordion style variant.", + "values": [ + { + "name": "normal", + "description": "Normal accordion style." + }, + { + "name": "filled", + "description": "Filled accordion style." + } + ], + "type": "string" + }, { "name": "headingcontent", "description": "Add components to the accordion container heading such as badges.", diff --git a/libs/web-components/src/components/accordion/Accordion.spec.ts b/libs/web-components/src/components/accordion/Accordion.spec.ts index 0b322a3462..5846514a64 100644 --- a/libs/web-components/src/components/accordion/Accordion.spec.ts +++ b/libs/web-components/src/components/accordion/Accordion.spec.ts @@ -1,5 +1,6 @@ import Accordion from "./Accordion.svelte"; import AccordionWithHeadingContent from "./AccordionWithHeadingContentWrapper.test.svelte"; +import AccordionWithActions from "./AccordionWithActionsWrapper.test.svelte"; import { fireEvent, render, waitFor } from "@testing-library/svelte"; import { it, describe } from "vitest"; @@ -31,7 +32,7 @@ describe("Accordion", () => { const { container } = render(Accordion, { heading: "Title", maxwidth: "480px", - testid: "accordion" + testid: "accordion", }); const elm = container.querySelector("[data-testid=accordion]"); expect(elm?.getAttribute("style")).toContain("max-width: 480px;"); @@ -68,6 +69,18 @@ describe("Accordion", () => { }); }); + it("does not render the actions slot container when actions slot is empty", async () => { + const { container } = render(Accordion, { heading: "Title" }); + const actionsDiv = container.querySelector("summary .actions"); + expect(actionsDiv).toBeNull(); + }); + + it("renders the actions slot container when actions slot content exists", async () => { + const { queryByTestId } = render(AccordionWithActions); + const actionsButton = queryByTestId("actions-button"); + expect(actionsButton).toBeTruthy(); + }); + it("handle accessibility features", async () => { const { container } = render(Accordion, { heading: "Title", @@ -77,7 +90,9 @@ describe("Accordion", () => { const summary = container.querySelector("summary"); expect(summary?.getAttribute("aria-expanded")).toBe("false"); expect(summary?.getAttribute("aria-controls")).length.greaterThan(0); - const accordionId = summary?.getAttribute("aria-controls")?.split("-content")[0]; // generate random id + const accordionId = summary + ?.getAttribute("aria-controls") + ?.split("-content")[0]; // generate random id expect(summary?.getAttribute("aria-controls")).toBe( `${accordionId}-content`, ); diff --git a/libs/web-components/src/components/accordion/Accordion.svelte b/libs/web-components/src/components/accordion/Accordion.svelte index 6707c6c8fb..c0e2a90300 100644 --- a/libs/web-components/src/components/accordion/Accordion.svelte +++ b/libs/web-components/src/components/accordion/Accordion.svelte @@ -1,4 +1,11 @@ - + diff --git a/docs/src/content/examples/basic-page-layout/index.mdx b/docs/src/content/examples/basic-page-layout/index.mdx index 7c74326203..b7e2b019b6 100644 --- a/docs/src/content/examples/basic-page-layout/index.mdx +++ b/docs/src/content/examples/basic-page-layout/index.mdx @@ -1,10 +1,7 @@ --- id: basic-page-layout title: Basic page layout -categories: - - content-layout -scale: page -userType: both +size: page tags: - layout - page-structure @@ -19,6 +16,7 @@ status: published fullWidth: true previewStyle: "padding: 0; max-height: 600px" previewImage: /images/examples/basic-page-layout.webp +previewFullWidth: true --- A basic page template to use as a starting point. diff --git a/docs/src/content/examples/basic-page-layout/react.tsx b/docs/src/content/examples/basic-page-layout/react.tsx index b91d797d11..1d7c1db36e 100644 --- a/docs/src/content/examples/basic-page-layout/react.tsx +++ b/docs/src/content/examples/basic-page-layout/react.tsx @@ -15,7 +15,7 @@ export function BasicPageLayout() { Sign in - +

diff --git a/docs/src/content/examples/button-with-icon/index.mdx b/docs/src/content/examples/button-with-icon/index.mdx index a4fdb99952..7348b53deb 100644 --- a/docs/src/content/examples/button-with-icon/index.mdx +++ b/docs/src/content/examples/button-with-icon/index.mdx @@ -1,10 +1,7 @@ --- id: button-with-icon title: Button with Icon -categories: - - inputs-and-actions -scale: interaction -userType: both +size: interaction tags: - icons - buttons diff --git a/docs/src/content/examples/card-grid/index.mdx b/docs/src/content/examples/card-grid/index.mdx index 191d3c4b91..432c23ee4d 100644 --- a/docs/src/content/examples/card-grid/index.mdx +++ b/docs/src/content/examples/card-grid/index.mdx @@ -1,10 +1,7 @@ --- id: card-grid title: Card grid -categories: - - content-layout -scale: task -userType: both +size: section tags: - cards - grid diff --git a/docs/src/content/examples/card-view-of-case-files/index.mdx b/docs/src/content/examples/card-view-of-case-files/index.mdx index bd5315ffed..05c3e1585d 100644 --- a/docs/src/content/examples/card-view-of-case-files/index.mdx +++ b/docs/src/content/examples/card-view-of-case-files/index.mdx @@ -1,10 +1,8 @@ --- id: card-view-of-case-files title: Card view of case files -categories: - - content-layout -scale: task -userType: worker +size: section +productType: workspace tags: - cards - case-management diff --git a/docs/src/content/examples/confirm-a-change/index.mdx b/docs/src/content/examples/confirm-a-change/index.mdx index 0b23ced98b..a37fdb914f 100644 --- a/docs/src/content/examples/confirm-a-change/index.mdx +++ b/docs/src/content/examples/confirm-a-change/index.mdx @@ -1,10 +1,7 @@ --- id: confirm-a-change title: Confirm a change -categories: - - inputs-and-actions -scale: task -userType: both +size: interaction tags: - modal - confirmation diff --git a/docs/src/content/examples/confirm-a-destructive-action/index.mdx b/docs/src/content/examples/confirm-a-destructive-action/index.mdx index 8a50858892..71ace15f4d 100644 --- a/docs/src/content/examples/confirm-a-destructive-action/index.mdx +++ b/docs/src/content/examples/confirm-a-destructive-action/index.mdx @@ -1,10 +1,7 @@ --- id: confirm-a-destructive-action title: Confirm a destructive action -categories: - - feedback-and-alerts -scale: task -userType: both +size: interaction tags: - modal - confirmation diff --git a/docs/src/content/examples/confirm-before-navigating-away/index.mdx b/docs/src/content/examples/confirm-before-navigating-away/index.mdx index de334716c2..9581a48eae 100644 --- a/docs/src/content/examples/confirm-before-navigating-away/index.mdx +++ b/docs/src/content/examples/confirm-before-navigating-away/index.mdx @@ -1,10 +1,8 @@ --- id: confirm-before-navigating-away title: Confirm before navigating away -categories: - - feedback-and-alerts -scale: task -userType: worker +size: interaction +productType: workspace tags: - modal - navigation diff --git a/docs/src/content/examples/confirm-that-an-application-was-submitted/angular.html b/docs/src/content/examples/confirm-that-an-application-was-submitted/angular.html deleted file mode 100644 index 08cd9b6def..0000000000 --- a/docs/src/content/examples/confirm-that-an-application-was-submitted/angular.html +++ /dev/null @@ -1,26 +0,0 @@ -You have completed the application - - - You will receive a copy of the confirmation to the email - person@email.com - Confirmation number: 1234ABC - - -Go back to the dashboard, or direct your user somewhere else useful. -Other information about what was just completed, other tertiary information, and/or - contact information. -
- Phone: 780 123 4567 -
- Email: information@gov.ab.ca -
- - - Go to application - Back to dashboard - diff --git a/docs/src/content/examples/confirm-that-an-application-was-submitted/angular.ts b/docs/src/content/examples/confirm-that-an-application-was-submitted/angular.ts deleted file mode 100644 index 817bed0c4c..0000000000 --- a/docs/src/content/examples/confirm-that-an-application-was-submitted/angular.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { Component } from "@angular/core"; - -@Component({ - selector: "app-confirm-that-an-application-was-submitted", - templateUrl: "./angular.html", -}) -export class ConfirmThatAnApplicationWasSubmittedComponent {} diff --git a/docs/src/content/examples/confirm-that-an-application-was-submitted/index.mdx b/docs/src/content/examples/confirm-that-an-application-was-submitted/index.mdx deleted file mode 100644 index 6aa9364d72..0000000000 --- a/docs/src/content/examples/confirm-that-an-application-was-submitted/index.mdx +++ /dev/null @@ -1,39 +0,0 @@ ---- -id: confirm-that-an-application-was-submitted -title: Confirm that an application was submitted -categories: - - feedback-and-alerts -scale: page -userType: citizen -tags: - - confirmation - - success - - callout - - application -components: - - callout - - button - - button-group -figmaUrl: https://www.figma.com/design/Jpy1Ea5qglwnp1SgGnagY9/%E2%9D%96-Component-library-%7C-DDD?node-id=63353-169579 -status: published -previewImage: /images/examples/confirm-that-an-application-was-submitted.webp ---- - -Display a confirmation screen to indicate successful application submission. - -## When to use - -Use this pattern when: - -- A user has successfully completed an application or form -- You need to confirm the submission was received -- Users need a confirmation number for their records -- You want to provide next steps after submission - -## Considerations - -- Use a success callout to clearly indicate success -- Include a confirmation number users can reference later -- Mention where a confirmation email will be sent -- Provide clear next steps and navigation options -- Include contact information for questions diff --git a/docs/src/content/examples/confirm-that-an-application-was-submitted/react.tsx b/docs/src/content/examples/confirm-that-an-application-was-submitted/react.tsx deleted file mode 100644 index 5a6d308496..0000000000 --- a/docs/src/content/examples/confirm-that-an-application-was-submitted/react.tsx +++ /dev/null @@ -1,42 +0,0 @@ -import { - GoabButton, - GoabButtonGroup, - GoabCallout, - GoabText, -} from "@abgov/react-components"; - -export function ConfirmThatAnApplicationWasSubmitted() { - return ( - <> - - You have completed the application - - - - - You will receive a copy of the confirmation to the email person@email.com - - - Confirmation number: 1234ABC - - - - - Go back to the dashboard, or direct your user somewhere else useful. - - - Other information about what was just completed, other tertiary information, - and/or contact information. -
- Phone: 780 123 4567 -
- Email: information@gov.ab.ca -
- - - Go to application - Back to dashboard - - - ); -} diff --git a/docs/src/content/examples/confirm-that-an-application-was-submitted/web-components.html b/docs/src/content/examples/confirm-that-an-application-was-submitted/web-components.html deleted file mode 100644 index ccdbdb6f19..0000000000 --- a/docs/src/content/examples/confirm-that-an-application-was-submitted/web-components.html +++ /dev/null @@ -1,25 +0,0 @@ -You have completed the application - - - You will receive a copy of the confirmation to the email person@email.com - Confirmation number: 1234ABC - - -Go back to the dashboard, or direct your user somewhere else useful. -Other information about what was just completed, other tertiary information, and/or - contact information. -
- Phone: 780 123 4567 -
- Email: information@gov.ab.ca -
- - - Go to application - Back to dashboard - diff --git a/docs/src/content/examples/copy-to-clipboard/index.mdx b/docs/src/content/examples/copy-to-clipboard/index.mdx index 439cc4a776..6b9f5dc34d 100644 --- a/docs/src/content/examples/copy-to-clipboard/index.mdx +++ b/docs/src/content/examples/copy-to-clipboard/index.mdx @@ -1,10 +1,7 @@ --- id: copy-to-clipboard title: Copy to clipboard -categories: - - inputs-and-actions -scale: interaction -userType: both +size: interaction tags: - clipboard - copy diff --git a/docs/src/content/examples/disabled-button-with-a-required-field/index.mdx b/docs/src/content/examples/disabled-button-with-a-required-field/index.mdx index ee961c2bc4..db920cbfb7 100644 --- a/docs/src/content/examples/disabled-button-with-a-required-field/index.mdx +++ b/docs/src/content/examples/disabled-button-with-a-required-field/index.mdx @@ -1,10 +1,7 @@ --- id: disabled-button-with-a-required-field title: Disabled button with a required field -categories: - - inputs-and-actions -scale: interaction -userType: both +size: interaction tags: - button - form diff --git a/docs/src/content/examples/display-numbers-in-a-table-so-they-can-be-scanned-easily/index.mdx b/docs/src/content/examples/display-numbers-in-a-table-so-they-can-be-scanned-easily/index.mdx index ba920ccf82..ab1bc725cb 100644 --- a/docs/src/content/examples/display-numbers-in-a-table-so-they-can-be-scanned-easily/index.mdx +++ b/docs/src/content/examples/display-numbers-in-a-table-so-they-can-be-scanned-easily/index.mdx @@ -1,10 +1,8 @@ --- id: display-numbers-in-a-table-so-they-can-be-scanned-easily title: Display numbers in a table so they can be scanned easily -categories: - - content-layout -scale: task -userType: worker +size: section +productType: workspace tags: - table - numbers diff --git a/docs/src/content/examples/display-user-information/index.mdx b/docs/src/content/examples/display-user-information/index.mdx index 6fc54f492b..ba97c6141a 100644 --- a/docs/src/content/examples/display-user-information/index.mdx +++ b/docs/src/content/examples/display-user-information/index.mdx @@ -1,10 +1,8 @@ --- id: display-user-information title: Display user information -categories: - - content-layout -scale: task -userType: worker +size: section +productType: workspace tags: - container - user-info diff --git a/docs/src/content/examples/dynamically-add-an-item-to-a-dropdown-list/index.mdx b/docs/src/content/examples/dynamically-add-an-item-to-a-dropdown-list/index.mdx index 00d5cb5551..96f1f8d3d2 100644 --- a/docs/src/content/examples/dynamically-add-an-item-to-a-dropdown-list/index.mdx +++ b/docs/src/content/examples/dynamically-add-an-item-to-a-dropdown-list/index.mdx @@ -1,10 +1,7 @@ --- id: dynamically-add-an-item-to-a-dropdown-list title: Dynamically add an item to a dropdown list -categories: - - inputs-and-actions -scale: interaction -userType: both +size: interaction tags: - dropdown - dynamic diff --git a/docs/src/content/examples/dynamically-change-items-in-a-dropdown-list/index.mdx b/docs/src/content/examples/dynamically-change-items-in-a-dropdown-list/index.mdx index 2483250d66..faa2b79321 100644 --- a/docs/src/content/examples/dynamically-change-items-in-a-dropdown-list/index.mdx +++ b/docs/src/content/examples/dynamically-change-items-in-a-dropdown-list/index.mdx @@ -1,10 +1,7 @@ --- id: dynamically-change-items-in-a-dropdown-list title: Dynamically change items in a dropdown list -categories: - - inputs-and-actions -scale: interaction -userType: both +size: interaction tags: - dropdown - dynamic diff --git a/docs/src/content/examples/401-error-page/angular.html b/docs/src/content/examples/error-pages/401/angular.html similarity index 100% rename from docs/src/content/examples/401-error-page/angular.html rename to docs/src/content/examples/error-pages/401/angular.html diff --git a/docs/src/content/examples/401-error-page/angular.ts b/docs/src/content/examples/error-pages/401/angular.ts similarity index 100% rename from docs/src/content/examples/401-error-page/angular.ts rename to docs/src/content/examples/error-pages/401/angular.ts diff --git a/docs/src/content/examples/401-error-page/react.tsx b/docs/src/content/examples/error-pages/401/react.tsx similarity index 100% rename from docs/src/content/examples/401-error-page/react.tsx rename to docs/src/content/examples/error-pages/401/react.tsx diff --git a/docs/src/content/examples/401-error-page/web-components.html b/docs/src/content/examples/error-pages/401/web-components.html similarity index 100% rename from docs/src/content/examples/401-error-page/web-components.html rename to docs/src/content/examples/error-pages/401/web-components.html diff --git a/docs/src/content/examples/404-error-page/angular.html b/docs/src/content/examples/error-pages/404/angular.html similarity index 100% rename from docs/src/content/examples/404-error-page/angular.html rename to docs/src/content/examples/error-pages/404/angular.html diff --git a/docs/src/content/examples/404-error-page/angular.ts b/docs/src/content/examples/error-pages/404/angular.ts similarity index 100% rename from docs/src/content/examples/404-error-page/angular.ts rename to docs/src/content/examples/error-pages/404/angular.ts diff --git a/docs/src/content/examples/404-error-page/react.tsx b/docs/src/content/examples/error-pages/404/react.tsx similarity index 100% rename from docs/src/content/examples/404-error-page/react.tsx rename to docs/src/content/examples/error-pages/404/react.tsx diff --git a/docs/src/content/examples/404-error-page/web-components.html b/docs/src/content/examples/error-pages/404/web-components.html similarity index 100% rename from docs/src/content/examples/404-error-page/web-components.html rename to docs/src/content/examples/error-pages/404/web-components.html diff --git a/docs/src/content/examples/500-error-page/angular.html b/docs/src/content/examples/error-pages/500/angular.html similarity index 100% rename from docs/src/content/examples/500-error-page/angular.html rename to docs/src/content/examples/error-pages/500/angular.html diff --git a/docs/src/content/examples/500-error-page/angular.ts b/docs/src/content/examples/error-pages/500/angular.ts similarity index 100% rename from docs/src/content/examples/500-error-page/angular.ts rename to docs/src/content/examples/error-pages/500/angular.ts diff --git a/docs/src/content/examples/500-error-page/react.tsx b/docs/src/content/examples/error-pages/500/react.tsx similarity index 100% rename from docs/src/content/examples/500-error-page/react.tsx rename to docs/src/content/examples/error-pages/500/react.tsx diff --git a/docs/src/content/examples/500-error-page/web-components.html b/docs/src/content/examples/error-pages/500/web-components.html similarity index 100% rename from docs/src/content/examples/500-error-page/web-components.html rename to docs/src/content/examples/error-pages/500/web-components.html diff --git a/docs/src/content/examples/error-pages/index.mdx b/docs/src/content/examples/error-pages/index.mdx new file mode 100644 index 0000000000..f63761dab3 --- /dev/null +++ b/docs/src/content/examples/error-pages/index.mdx @@ -0,0 +1,90 @@ +--- +id: error-pages +title: Error pages +size: page +description: Standard error screens for Government of Alberta services. Use when a user lands somewhere that is missing, forbidden, or broken so they understand what happened and what to do next. +previewImage: /thumbnails/error-pages-404.png +hideHero: true +components: + - page-block + - block + - text + - icon + - link + - button +tags: + - error + - error page + - "401" + - "404" + - "500" + - page not found + - unauthorized + - restricted access + - server error + - server problem + - page-structure +aliases: + - 401-error-page + - 404-error-page + - 500-error-page +status: published +--- + +import PreviewContainer from "../../../components/PreviewContainer.astro"; + +## Types of error pages + +### Restricted access (401) + +The user is not authorized, either because they need to sign in or because they lack the right permission. + + + +### Page not found (404) + +The page does not exist, usually because of a typo, a stale bookmark, or a deleted resource. + + + +### Server problem (500) + +A server-side error has interrupted the request, and there is nothing the user can do to fix it. + + + +## When to use + +Every service needs a story for the moments where something has gone wrong. These pages are the baseline. Each one is a small, self-contained page composition you drop into an existing service as a single route, no starter repo needed. Use them as the routes behind your router's catch-all outlets, or as the fallback view your outer error boundary renders when nothing else caught the failure. + +## Considerations + +- **Use plain language.** Explain what happened in one short sentence. "Page not found" beats "HTTP 404 resource unavailable". +- **Offer a way back.** A home link is the usual fallback. Add a contact link when the user may need help. +- **Keep the tone helpful, not accusatory.** Do not blame the user for the error, especially for 500-level failures the user could not have caused. +- **Avoid exposing technical detail** like raw error codes, stack traces, or correlation IDs. Log them instead. If support needs a correlation id, give the user only what is useful. +- **Do not render the service's navigation** on the error page. The error page is its own context. + +## How these pages are built + +Each error page is a composition of GoA components: `goa-page-block`, `goa-block`, `goa-text`, `goa-icon`, `goa-button`, and `goa-link` (on 401). A small amount of custom CSS covers the icon-in-circle treatment, accent bar, centred text, and icon scaling. Those are gaps the design system has not absorbed yet and are tracked for follow-up. + +Framework variants for React, Angular, and Web Components live alongside each preview route as sibling files. Click the React or Angular icon on a preview to open the folder on GitHub and copy the framework file you need. diff --git a/docs/src/content/examples/expand-or-collapse-part-of-a-form/index.mdx b/docs/src/content/examples/expand-or-collapse-part-of-a-form/index.mdx index 45de6c5213..1000f44979 100644 --- a/docs/src/content/examples/expand-or-collapse-part-of-a-form/index.mdx +++ b/docs/src/content/examples/expand-or-collapse-part-of-a-form/index.mdx @@ -1,10 +1,7 @@ --- id: expand-or-collapse-part-of-a-form title: Expand or collapse part of a form -categories: - - forms -scale: task -userType: both +size: section tags: - accordion - form diff --git a/docs/src/content/examples/filter-a-list-using-a-push-drawer/index.mdx b/docs/src/content/examples/filter-a-list-using-a-push-drawer/index.mdx index 849448de0b..bd47c8df1f 100644 --- a/docs/src/content/examples/filter-a-list-using-a-push-drawer/index.mdx +++ b/docs/src/content/examples/filter-a-list-using-a-push-drawer/index.mdx @@ -1,10 +1,8 @@ --- id: filter-a-list-using-a-push-drawer title: Filter a list using a push drawer -categories: - - content-layout -scale: task -userType: worker +size: section +productType: workspace tags: - push-drawer - filters diff --git a/docs/src/content/examples/filter-data-in-a-table/index.mdx b/docs/src/content/examples/filter-data-in-a-table/index.mdx index eba9122846..87c18fc8c5 100644 --- a/docs/src/content/examples/filter-data-in-a-table/index.mdx +++ b/docs/src/content/examples/filter-data-in-a-table/index.mdx @@ -1,10 +1,8 @@ --- id: filter-data-in-a-table title: Filter data in a table -categories: - - structure-and-navigation -scale: task -userType: worker +size: section +productType: workspace tags: - table - filter diff --git a/docs/src/content/examples/form-stepper-with-controlled-navigation/index.mdx b/docs/src/content/examples/form-stepper-with-controlled-navigation/index.mdx index 2b1d84f8a4..828af8de86 100644 --- a/docs/src/content/examples/form-stepper-with-controlled-navigation/index.mdx +++ b/docs/src/content/examples/form-stepper-with-controlled-navigation/index.mdx @@ -1,10 +1,7 @@ --- id: form-stepper-with-controlled-navigation title: Form stepper with controlled navigation -categories: - - forms -scale: task -userType: both +size: section tags: - stepper - form diff --git a/docs/src/content/examples/give-more-information-before-asking-a-question-a/index.mdx b/docs/src/content/examples/give-more-information-before-asking-a-question-a/index.mdx deleted file mode 100644 index d8148b2215..0000000000 --- a/docs/src/content/examples/give-more-information-before-asking-a-question-a/index.mdx +++ /dev/null @@ -1,41 +0,0 @@ ---- -id: give-more-information-before-asking-a-question-a -title: Give more information before asking a question (a) -categories: - - forms -scale: task -userType: citizen -tags: - - form - - question - - context - - radio - - citizen-facing -components: - - form-item - - radio-group - - radio-item - - button -figmaUrl: https://www.figma.com/design/Jpy1Ea5qglwnp1SgGnagY9/%E2%9D%96-Component-library-%7C-DDD?node-id=63353-114502 -status: published -previewImage: /images/examples/give-more-information-before-asking-a-question-a.webp ---- - -Provide explanatory context before asking a question to help users understand what is being asked. - -## When to use - -Use this pattern when: - -- The question requires domain knowledge to answer correctly -- Terms need clarification for users unfamiliar with the subject -- Providing context will reduce confusion and incorrect answers -- Building citizen-facing forms where accessibility of information is important - -## Considerations - -- Place context information before the question, not after -- Use clear, plain language that citizens can understand -- Suggest where users can get additional help if needed -- Keep explanatory text focused and relevant to the question -- Use appropriate heading hierarchy for screen reader accessibility diff --git a/docs/src/content/examples/give-more-information-before-asking-a-question-b/index.mdx b/docs/src/content/examples/give-more-information-before-asking-a-question-b/index.mdx deleted file mode 100644 index 5bac4b1a12..0000000000 --- a/docs/src/content/examples/give-more-information-before-asking-a-question-b/index.mdx +++ /dev/null @@ -1,42 +0,0 @@ ---- -id: give-more-information-before-asking-a-question-b -title: Give more information before asking a question (b) -categories: - - forms -scale: task -userType: citizen -tags: - - form - - text-area - - question - - context - - details - - citizen-facing -components: - - text-area - - form-item - - details - - button - - button-group -figmaUrl: https://www.figma.com/design/Jpy1Ea5qglwnp1SgGnagY9/%E2%9D%96-Component-library-%7C-DDD?node-id=63353-124277 -status: published -previewImage: /images/examples/give-more-information-before-asking-a-question-b.webp ---- - -Provide context and guidance before a long-answer text field to help users provide relevant information. - -## When to use - -Use this pattern when: - -- Asking open-ended questions that require detailed responses -- Users may not know what information is most helpful to provide -- You want to encourage more useful and complete answers -- Building citizen-facing forms with benefit inquiries or support requests - -## Considerations - -- Explain the purpose of the question briefly -- Use a Details component to provide additional guidance without cluttering the form -- Set appropriate character limits with `maxCount` and `countBy` props -- Keep instructions focused on what will help process their request diff --git a/docs/src/content/examples/group-related-questions-together-on-a-question-page/index.mdx b/docs/src/content/examples/group-related-questions-together-on-a-question-page/index.mdx deleted file mode 100644 index 2ef206a635..0000000000 --- a/docs/src/content/examples/group-related-questions-together-on-a-question-page/index.mdx +++ /dev/null @@ -1,38 +0,0 @@ ---- -id: group-related-questions-together-on-a-question-page -title: Group related questions together on a question page -categories: - - forms -scale: page -userType: citizen -tags: - - forms - - address - - question-page -components: - - form-item - - input - - dropdown - - dropdown-item - - button -status: published -previewImage: /images/examples/group-related-questions-together-on-a-question-page.webp ---- - -Group related form fields together on a single page to collect address information from users, making it easier to complete logically connected questions at once. - -## When to use - -Use this pattern when: - -- Collecting address or contact information -- Form fields are logically related and should be completed together -- Users need context between related fields -- Following a question page pattern in a multi-step form - -## Considerations - -- Use clear, descriptive labels for each form field -- Include a back link for navigation in multi-step forms -- Consider adding a section title and subtitle to provide context -- Use appropriate input widths based on expected content length diff --git a/docs/src/content/examples/header-with-navigation/index.mdx b/docs/src/content/examples/header-with-navigation/index.mdx index 9e74923314..fab1cfb61e 100644 --- a/docs/src/content/examples/header-with-navigation/index.mdx +++ b/docs/src/content/examples/header-with-navigation/index.mdx @@ -1,10 +1,7 @@ --- id: header-with-navigation title: Header with navigation -categories: - - structure-and-navigation -scale: task -userType: both +size: section tags: - header - navigation diff --git a/docs/src/content/examples/hero-banner-with-actions/index.mdx b/docs/src/content/examples/hero-banner-with-actions/index.mdx index 7ffbec3a29..198631f2cc 100644 --- a/docs/src/content/examples/hero-banner-with-actions/index.mdx +++ b/docs/src/content/examples/hero-banner-with-actions/index.mdx @@ -1,10 +1,7 @@ --- id: hero-banner-with-actions title: Hero banner with actions -categories: - - content-layout -scale: task -userType: both +size: section tags: - hero - banner diff --git a/docs/src/content/examples/hide-and-show-many-sections-of-information/index.mdx b/docs/src/content/examples/hide-and-show-many-sections-of-information/index.mdx index 38f18d8ec3..c8711b025d 100644 --- a/docs/src/content/examples/hide-and-show-many-sections-of-information/index.mdx +++ b/docs/src/content/examples/hide-and-show-many-sections-of-information/index.mdx @@ -1,10 +1,7 @@ --- id: hide-and-show-many-sections-of-information title: Hide and show many sections of information -categories: - - content-layout -scale: task -userType: both +size: section tags: - accordion - expand diff --git a/docs/src/content/examples/include-a-link-in-the-helper-text-of-an-option/index.mdx b/docs/src/content/examples/include-a-link-in-the-helper-text-of-an-option/index.mdx index 0780b6cc89..8f62fd102a 100644 --- a/docs/src/content/examples/include-a-link-in-the-helper-text-of-an-option/index.mdx +++ b/docs/src/content/examples/include-a-link-in-the-helper-text-of-an-option/index.mdx @@ -1,10 +1,7 @@ --- id: include-a-link-in-the-helper-text-of-an-option title: Include a link in the helper text of an option -categories: - - forms -scale: interaction -userType: both +size: interaction tags: - checkbox - helper-text diff --git a/docs/src/content/examples/include-descriptions-for-items-in-a-checkbox-list/index.mdx b/docs/src/content/examples/include-descriptions-for-items-in-a-checkbox-list/index.mdx index a11ec10c91..bc7279bf16 100644 --- a/docs/src/content/examples/include-descriptions-for-items-in-a-checkbox-list/index.mdx +++ b/docs/src/content/examples/include-descriptions-for-items-in-a-checkbox-list/index.mdx @@ -1,10 +1,7 @@ --- id: include-descriptions-for-items-in-a-checkbox-list title: Include descriptions for items in a checkbox list -categories: - - forms -scale: task -userType: both +size: interaction tags: - radio - descriptions diff --git a/docs/src/content/examples/link-the-user-to-give-feedback-to-the-service/index.mdx b/docs/src/content/examples/link-the-user-to-give-feedback-to-the-service/index.mdx index 3ab774ec01..9bde96ed10 100644 --- a/docs/src/content/examples/link-the-user-to-give-feedback-to-the-service/index.mdx +++ b/docs/src/content/examples/link-the-user-to-give-feedback-to-the-service/index.mdx @@ -1,10 +1,7 @@ --- id: link-the-user-to-give-feedback-to-the-service title: Link the user to give feedback to the service -categories: - - feedback-and-alerts -scale: interaction -userType: citizen +size: interaction tags: - feedback - microsite-header diff --git a/docs/src/content/examples/link-to-an-external-page/index.mdx b/docs/src/content/examples/link-to-an-external-page/index.mdx index e4d40ddb4a..aae56271e6 100644 --- a/docs/src/content/examples/link-to-an-external-page/index.mdx +++ b/docs/src/content/examples/link-to-an-external-page/index.mdx @@ -1,10 +1,7 @@ --- id: link-to-an-external-page title: Link to an external page -categories: - - inputs-and-actions -scale: interaction -userType: both +size: interaction tags: - link - external diff --git a/docs/src/content/examples/notify-the-user-of-a-future-service-outage/index.mdx b/docs/src/content/examples/notify-the-user-of-a-future-service-outage/index.mdx index caca42817f..bc55fd54ca 100644 --- a/docs/src/content/examples/notify-the-user-of-a-future-service-outage/index.mdx +++ b/docs/src/content/examples/notify-the-user-of-a-future-service-outage/index.mdx @@ -1,10 +1,7 @@ --- id: notify-the-user-of-a-future-service-outage title: Notify the user of a future service outage -categories: - - feedback-and-alerts -scale: task -userType: both +size: interaction tags: - notification - maintenance diff --git a/docs/src/content/examples/public-form/angular.html b/docs/src/content/examples/public-form/angular.html deleted file mode 100644 index 1849c5cc42..0000000000 --- a/docs/src/content/examples/public-form/angular.html +++ /dev/null @@ -1,45 +0,0 @@ - - - Primary users: citizens, public, external

- You are designing a public service for citizens. It should be designed to be as simple - and intuitive as possible, while ensuring citizens can make complete and informed - decisions for themselves using the service. -

- There is an emphasis on an accessible experience with a low cognitive load for users - who use the service infrequently. -
-
- -Pages - - -

- 1. Start page - - This is the starting point for a citizen to begin your form from within your service - or from Alberta.ca. - - - 2. Task list page (optional) - - Outline the entire process for the user and help them through the process by - breaking down an experience into individual tasks. - - - 3. Question pages - - Ask a user a question or a small set of related questions. - - - 4. Review page - - Let users check answers before submitting information to a service. - - - 5. Results page - - Let users know that they've completed a form, application, or task and tell them - what to do next. - -
- diff --git a/docs/src/content/examples/public-form/angular.ts b/docs/src/content/examples/public-form/angular.ts deleted file mode 100644 index fb2b7a40ae..0000000000 --- a/docs/src/content/examples/public-form/angular.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { Component } from "@angular/core"; - -@Component({ - selector: "app-public-form", - templateUrl: "./angular.html", -}) -export class PublicFormComponent {} diff --git a/docs/src/content/examples/public-form/index.mdx b/docs/src/content/examples/public-form/index.mdx deleted file mode 100644 index 969e089442..0000000000 --- a/docs/src/content/examples/public-form/index.mdx +++ /dev/null @@ -1,35 +0,0 @@ ---- -id: public-form -title: Public form -categories: - - forms -scale: product -userType: citizen -tags: - - form - - public - - citizen - - pattern -components: [] -status: published -previewImage: /images/examples/public-form.webp ---- - -The public form pattern provides a structure for citizen-facing form experiences, emphasizing simplicity, accessibility, and low cognitive load. - -## When to use - -Use this pattern when: - -- Designing a public service for citizens -- Building forms that should be simple and intuitive -- Users need to make informed decisions while completing the form -- The service should accommodate users who use it infrequently - -## Considerations - -- Follow the "one idea per page" principle to reduce cognitive load -- Break complex forms into multiple pages with single questions -- Use task list pages for longer processes with multiple sections -- Consider using simple progress indicators rather than horizontal steppers -- Ensure all form elements meet WCAG 2.2 AA accessibility standards diff --git a/docs/src/content/examples/public-form/react.tsx b/docs/src/content/examples/public-form/react.tsx deleted file mode 100644 index bc97714020..0000000000 --- a/docs/src/content/examples/public-form/react.tsx +++ /dev/null @@ -1,68 +0,0 @@ -import { GoabDetails, GoabGrid, GoabText } from "@abgov/react-components"; - -export function PublicForm() { - return ( - <> - - - Primary users: citizens, public, external -
-
- You are designing a public service for citizens. It should be designed to be as - simple and intuitive as possible, while ensuring citizens can make complete and - informed decisions for themselves using the service. -
-
- There is an emphasis on an accessible experience with a low cognitive load for - users who use the service infrequently. -
-
- - - Pages - - - -
- - 1. Start page - - - This is the starting point for a citizen to begin your form from within your - service or from Alberta.ca. - - - - 2. Task list page (optional) - - - Outline the entire process for the user and help them through the process by - breaking down an experience into individual tasks. - - - - 3. Question pages - - - Ask a user a question or a small set of related questions. - - - - 4. Review page - - - Let users check answers before submitting information to a service. - - - - 5. Results page - - - Let users know that they've completed a form, application, or task and tell - them what to do next. - -
-
- - ); -} diff --git a/docs/src/content/examples/public-form/web-components.html b/docs/src/content/examples/public-form/web-components.html deleted file mode 100644 index fa147357d0..0000000000 --- a/docs/src/content/examples/public-form/web-components.html +++ /dev/null @@ -1,45 +0,0 @@ - - - Primary users: citizens, public, external

- You are designing a public service for citizens. It should be designed to be as simple - and intuitive as possible, while ensuring citizens can make complete and informed - decisions for themselves using the service. -

- There is an emphasis on an accessible experience with a low cognitive load for users - who use the service infrequently. -
-
- -Pages - - -
- 1. Start page - - This is the starting point for a citizen to begin your form from within your service - or from Alberta.ca. - - - 2. Task list page (optional) - - Outline the entire process for the user and help them through the process by - breaking down an experience into individual tasks. - - - 3. Question pages - - Ask a user a question or a small set of related questions. - - - 4. Review page - - Let users check answers before submitting information to a service. - - - 5. Results page - - Let users know that they've completed a form, application, or task and tell them - what to do next. - -
-
diff --git a/docs/src/content/examples/question-page/index.mdx b/docs/src/content/examples/question-page/index.mdx index d23077989a..ab95516c23 100644 --- a/docs/src/content/examples/question-page/index.mdx +++ b/docs/src/content/examples/question-page/index.mdx @@ -1,39 +1,172 @@ --- id: question-page title: Question page -categories: - - forms -scale: page -userType: citizen +size: page +productType: public-form +description: "A question page presents one focused step in a multi-step form. Several variants adapt the shape: section titles, progress indicators, supporting context, expandable help, and grouped fields." tags: - forms - question - wizard - one-thing-per-page + - public-form + - section-title + - progress + - context + - help + - details + - grouped-fields + - address components: - form-item - input + - text-area + - radio-group + - radio-item + - dropdown + - dropdown-item + - details + - block - button - button-group +aliases: + - ask-a-user-one-question-at-a-time + - give-more-information-before-asking-a-question-a + - give-more-information-before-asking-a-question-b + - show-more-information-to-help-answer-a-question + - show-a-list-to-help-answer-a-question + - show-a-section-title-on-a-question-page + - show-a-simple-progress-indicator-on-a-question-page + - show-a-simple-progress-indicator-on-a-question-page-with-multiple-questions + - group-related-questions-together-on-a-question-page status: published -previewImage: /images/examples/question-page.webp +previewImage: /images/examples/question-page.png +hideHero: true --- -A question page pattern that presents one question at a time to help users focus, reduce cognitive load, and navigate complex forms more easily. +import PreviewContainer from "../../../components/PreviewContainer.astro"; + +## Types of question pages + +### Ask one question at a time + +The default question page. One idea per page reduces cognitive load and keeps users moving through the flow. + + + +- Lead with a clear, plain-language question. +- Use a large label size to make the question prominent. +- Provide help text when the question could be ambiguous. +- Pair a primary action button with a back link. + +### Show a section title + +Add a section title above the question to tell users which part of the form they are completing. Useful in multi-section forms divided into logical groups like "Personal information" or "Employment history." + + + +- Use a subdued text color so the section title sits above the question without competing with it. +- Keep the title concise and descriptive. +- Maintain consistent spacing between back link, section title, and question across the form. + +### Show a progress indicator + +Show progress to help users understand how far they are through the form. Use "Question X of Y" for single-question pages, or "Step X of Y" when grouping multiple related questions into sections. + + + +- Display progress consistently across the form ("Question X of Y" for single-question pages, "Step X of Y" for multi-question sections). +- Use a subdued text color so the indicator sits above the question. +- Position above the question, below the back link. + +For step-based progress when grouping multiple questions into sections, see the [progress-indicator-multi variant on GitHub](https://github.com/GovAlta/ui-components/tree/dev/docs/src/content/examples/question-page/variants/progress-indicator-multi). + +### Give background information before asking + +Provide explanatory context before a question when the question requires domain knowledge or terms that may need clarification. + + + +- Place context information before the question, not after. +- Use plain language citizens can understand. +- Suggest where users can get additional help if needed. + +For an open-ended question with a long-answer textarea, the same pattern applies with a Details component for additional guidance. See the [background-textarea variant on GitHub](https://github.com/GovAlta/ui-components/tree/dev/docs/src/content/examples/question-page/variants/background-textarea). + +### Reveal more information to help answer + +Use the Details component to provide optional context that explains why a question is being asked, or that lists examples of qualifying items. The expandable shape keeps the form uncluttered for users who do not need the help. + + + +- Place the Details component after the question input. +- Phrase the Details heading as a question (e.g. "Why are we asking this question?") so users know it provides clarification. +- Keep the expanded content concise, scannable, and easy to act on. + +When the help content is a list of examples (what to include, what to exclude), structure the expanded content with clear headings. See the [help-list variant on GitHub](https://github.com/GovAlta/ui-components/tree/dev/docs/src/content/examples/question-page/variants/help-list). + +### Group related questions on one page + +When fields are tightly related and harder to answer in isolation, group them on one page. The typical case is collecting an address, where street, town, province, and postal code naturally belong together. + + + +- Group fields only when the whole group answers one logical question. Do not group unrelated questions just to fit them on one page. +- Use clear, descriptive labels per field. +- Add a section title above the group to provide context. +- Use input widths appropriate to the expected content (postal code narrower than street). ## When to use Use this pattern when: -- Building multi-step forms or wizards -- Asking users for information that requires focused attention -- The form has branching logic based on user responses -- You want to reduce cognitive load and errors +- Building multi-step forms or wizards where users complete one decision at a time +- Asking for information that requires focused attention or careful consideration +- The form has branching logic based on previous answers +- You want to reduce errors and improve mobile and accessibility outcomes ## Considerations -- Each page should contain one idea: one question, one decision, or one piece of information -- Progress indicators are optional - test without one first -- The pattern helps with mobile responsiveness and accessibility -- Enables automatic saving and better error handling +- Each page should contain one idea: one question, one decision, or one logically grouped set of fields +- Include a back link so users can revise previous answers +- Use a large label size to make the question prominent +- Provide help text when wording could be ambiguous +- A clear primary action progresses the user; a back link returns them +- Progress indicators are optional. Test the form without one before adding one. - Consider adaptive questioning where subsequent questions depend on previous answers diff --git a/docs/src/content/examples/give-more-information-before-asking-a-question-a/angular.html b/docs/src/content/examples/question-page/variants/background-radio/angular.html similarity index 100% rename from docs/src/content/examples/give-more-information-before-asking-a-question-a/angular.html rename to docs/src/content/examples/question-page/variants/background-radio/angular.html diff --git a/docs/src/content/examples/give-more-information-before-asking-a-question-a/angular.ts b/docs/src/content/examples/question-page/variants/background-radio/angular.ts similarity index 100% rename from docs/src/content/examples/give-more-information-before-asking-a-question-a/angular.ts rename to docs/src/content/examples/question-page/variants/background-radio/angular.ts diff --git a/docs/src/content/examples/give-more-information-before-asking-a-question-a/react.tsx b/docs/src/content/examples/question-page/variants/background-radio/react.tsx similarity index 100% rename from docs/src/content/examples/give-more-information-before-asking-a-question-a/react.tsx rename to docs/src/content/examples/question-page/variants/background-radio/react.tsx diff --git a/docs/src/content/examples/give-more-information-before-asking-a-question-a/web-components.html b/docs/src/content/examples/question-page/variants/background-radio/web-components.html similarity index 100% rename from docs/src/content/examples/give-more-information-before-asking-a-question-a/web-components.html rename to docs/src/content/examples/question-page/variants/background-radio/web-components.html diff --git a/docs/src/content/examples/give-more-information-before-asking-a-question-b/angular.html b/docs/src/content/examples/question-page/variants/background-textarea/angular.html similarity index 100% rename from docs/src/content/examples/give-more-information-before-asking-a-question-b/angular.html rename to docs/src/content/examples/question-page/variants/background-textarea/angular.html diff --git a/docs/src/content/examples/give-more-information-before-asking-a-question-b/angular.ts b/docs/src/content/examples/question-page/variants/background-textarea/angular.ts similarity index 100% rename from docs/src/content/examples/give-more-information-before-asking-a-question-b/angular.ts rename to docs/src/content/examples/question-page/variants/background-textarea/angular.ts diff --git a/docs/src/content/examples/give-more-information-before-asking-a-question-b/react.tsx b/docs/src/content/examples/question-page/variants/background-textarea/react.tsx similarity index 100% rename from docs/src/content/examples/give-more-information-before-asking-a-question-b/react.tsx rename to docs/src/content/examples/question-page/variants/background-textarea/react.tsx diff --git a/docs/src/content/examples/give-more-information-before-asking-a-question-b/web-components.html b/docs/src/content/examples/question-page/variants/background-textarea/web-components.html similarity index 100% rename from docs/src/content/examples/give-more-information-before-asking-a-question-b/web-components.html rename to docs/src/content/examples/question-page/variants/background-textarea/web-components.html diff --git a/docs/src/content/examples/group-related-questions-together-on-a-question-page/angular.html b/docs/src/content/examples/question-page/variants/grouped/angular.html similarity index 100% rename from docs/src/content/examples/group-related-questions-together-on-a-question-page/angular.html rename to docs/src/content/examples/question-page/variants/grouped/angular.html diff --git a/docs/src/content/examples/group-related-questions-together-on-a-question-page/angular.ts b/docs/src/content/examples/question-page/variants/grouped/angular.ts similarity index 100% rename from docs/src/content/examples/group-related-questions-together-on-a-question-page/angular.ts rename to docs/src/content/examples/question-page/variants/grouped/angular.ts diff --git a/docs/src/content/examples/group-related-questions-together-on-a-question-page/react.tsx b/docs/src/content/examples/question-page/variants/grouped/react.tsx similarity index 100% rename from docs/src/content/examples/group-related-questions-together-on-a-question-page/react.tsx rename to docs/src/content/examples/question-page/variants/grouped/react.tsx diff --git a/docs/src/content/examples/group-related-questions-together-on-a-question-page/web-components.html b/docs/src/content/examples/question-page/variants/grouped/web-components.html similarity index 100% rename from docs/src/content/examples/group-related-questions-together-on-a-question-page/web-components.html rename to docs/src/content/examples/question-page/variants/grouped/web-components.html diff --git a/docs/src/content/examples/show-more-information-to-help-answer-a-question/angular.html b/docs/src/content/examples/question-page/variants/help-details/angular.html similarity index 100% rename from docs/src/content/examples/show-more-information-to-help-answer-a-question/angular.html rename to docs/src/content/examples/question-page/variants/help-details/angular.html diff --git a/docs/src/content/examples/show-more-information-to-help-answer-a-question/angular.ts b/docs/src/content/examples/question-page/variants/help-details/angular.ts similarity index 100% rename from docs/src/content/examples/show-more-information-to-help-answer-a-question/angular.ts rename to docs/src/content/examples/question-page/variants/help-details/angular.ts diff --git a/docs/src/content/examples/show-more-information-to-help-answer-a-question/react.tsx b/docs/src/content/examples/question-page/variants/help-details/react.tsx similarity index 100% rename from docs/src/content/examples/show-more-information-to-help-answer-a-question/react.tsx rename to docs/src/content/examples/question-page/variants/help-details/react.tsx diff --git a/docs/src/content/examples/show-more-information-to-help-answer-a-question/web-components.html b/docs/src/content/examples/question-page/variants/help-details/web-components.html similarity index 100% rename from docs/src/content/examples/show-more-information-to-help-answer-a-question/web-components.html rename to docs/src/content/examples/question-page/variants/help-details/web-components.html diff --git a/docs/src/content/examples/show-a-list-to-help-answer-a-question/angular.html b/docs/src/content/examples/question-page/variants/help-list/angular.html similarity index 100% rename from docs/src/content/examples/show-a-list-to-help-answer-a-question/angular.html rename to docs/src/content/examples/question-page/variants/help-list/angular.html diff --git a/docs/src/content/examples/show-a-list-to-help-answer-a-question/angular.ts b/docs/src/content/examples/question-page/variants/help-list/angular.ts similarity index 100% rename from docs/src/content/examples/show-a-list-to-help-answer-a-question/angular.ts rename to docs/src/content/examples/question-page/variants/help-list/angular.ts diff --git a/docs/src/content/examples/show-a-list-to-help-answer-a-question/react.tsx b/docs/src/content/examples/question-page/variants/help-list/react.tsx similarity index 100% rename from docs/src/content/examples/show-a-list-to-help-answer-a-question/react.tsx rename to docs/src/content/examples/question-page/variants/help-list/react.tsx diff --git a/docs/src/content/examples/show-a-list-to-help-answer-a-question/web-components.html b/docs/src/content/examples/question-page/variants/help-list/web-components.html similarity index 100% rename from docs/src/content/examples/show-a-list-to-help-answer-a-question/web-components.html rename to docs/src/content/examples/question-page/variants/help-list/web-components.html diff --git a/docs/src/content/examples/question-page/angular.html b/docs/src/content/examples/question-page/variants/one-question/angular.html similarity index 100% rename from docs/src/content/examples/question-page/angular.html rename to docs/src/content/examples/question-page/variants/one-question/angular.html diff --git a/docs/src/content/examples/question-page/angular.ts b/docs/src/content/examples/question-page/variants/one-question/angular.ts similarity index 100% rename from docs/src/content/examples/question-page/angular.ts rename to docs/src/content/examples/question-page/variants/one-question/angular.ts diff --git a/docs/src/content/examples/question-page/react.tsx b/docs/src/content/examples/question-page/variants/one-question/react.tsx similarity index 100% rename from docs/src/content/examples/question-page/react.tsx rename to docs/src/content/examples/question-page/variants/one-question/react.tsx diff --git a/docs/src/content/examples/question-page/web-components.html b/docs/src/content/examples/question-page/variants/one-question/web-components.html similarity index 100% rename from docs/src/content/examples/question-page/web-components.html rename to docs/src/content/examples/question-page/variants/one-question/web-components.html diff --git a/docs/src/content/examples/show-a-simple-progress-indicator-on-a-question-page-with-multiple-questions/angular.html b/docs/src/content/examples/question-page/variants/progress-indicator-multi/angular.html similarity index 100% rename from docs/src/content/examples/show-a-simple-progress-indicator-on-a-question-page-with-multiple-questions/angular.html rename to docs/src/content/examples/question-page/variants/progress-indicator-multi/angular.html diff --git a/docs/src/content/examples/show-a-simple-progress-indicator-on-a-question-page-with-multiple-questions/angular.ts b/docs/src/content/examples/question-page/variants/progress-indicator-multi/angular.ts similarity index 100% rename from docs/src/content/examples/show-a-simple-progress-indicator-on-a-question-page-with-multiple-questions/angular.ts rename to docs/src/content/examples/question-page/variants/progress-indicator-multi/angular.ts diff --git a/docs/src/content/examples/show-a-simple-progress-indicator-on-a-question-page-with-multiple-questions/react.tsx b/docs/src/content/examples/question-page/variants/progress-indicator-multi/react.tsx similarity index 100% rename from docs/src/content/examples/show-a-simple-progress-indicator-on-a-question-page-with-multiple-questions/react.tsx rename to docs/src/content/examples/question-page/variants/progress-indicator-multi/react.tsx diff --git a/docs/src/content/examples/show-a-simple-progress-indicator-on-a-question-page-with-multiple-questions/web-components.html b/docs/src/content/examples/question-page/variants/progress-indicator-multi/web-components.html similarity index 100% rename from docs/src/content/examples/show-a-simple-progress-indicator-on-a-question-page-with-multiple-questions/web-components.html rename to docs/src/content/examples/question-page/variants/progress-indicator-multi/web-components.html diff --git a/docs/src/content/examples/show-a-simple-progress-indicator-on-a-question-page/angular.html b/docs/src/content/examples/question-page/variants/progress-indicator/angular.html similarity index 100% rename from docs/src/content/examples/show-a-simple-progress-indicator-on-a-question-page/angular.html rename to docs/src/content/examples/question-page/variants/progress-indicator/angular.html diff --git a/docs/src/content/examples/show-a-simple-progress-indicator-on-a-question-page/angular.ts b/docs/src/content/examples/question-page/variants/progress-indicator/angular.ts similarity index 100% rename from docs/src/content/examples/show-a-simple-progress-indicator-on-a-question-page/angular.ts rename to docs/src/content/examples/question-page/variants/progress-indicator/angular.ts diff --git a/docs/src/content/examples/show-a-simple-progress-indicator-on-a-question-page/react.tsx b/docs/src/content/examples/question-page/variants/progress-indicator/react.tsx similarity index 100% rename from docs/src/content/examples/show-a-simple-progress-indicator-on-a-question-page/react.tsx rename to docs/src/content/examples/question-page/variants/progress-indicator/react.tsx diff --git a/docs/src/content/examples/show-a-simple-progress-indicator-on-a-question-page/web-components.html b/docs/src/content/examples/question-page/variants/progress-indicator/web-components.html similarity index 100% rename from docs/src/content/examples/show-a-simple-progress-indicator-on-a-question-page/web-components.html rename to docs/src/content/examples/question-page/variants/progress-indicator/web-components.html diff --git a/docs/src/content/examples/show-a-section-title-on-a-question-page/angular.html b/docs/src/content/examples/question-page/variants/section-title/angular.html similarity index 100% rename from docs/src/content/examples/show-a-section-title-on-a-question-page/angular.html rename to docs/src/content/examples/question-page/variants/section-title/angular.html diff --git a/docs/src/content/examples/show-a-section-title-on-a-question-page/angular.ts b/docs/src/content/examples/question-page/variants/section-title/angular.ts similarity index 100% rename from docs/src/content/examples/show-a-section-title-on-a-question-page/angular.ts rename to docs/src/content/examples/question-page/variants/section-title/angular.ts diff --git a/docs/src/content/examples/show-a-section-title-on-a-question-page/react.tsx b/docs/src/content/examples/question-page/variants/section-title/react.tsx similarity index 100% rename from docs/src/content/examples/show-a-section-title-on-a-question-page/react.tsx rename to docs/src/content/examples/question-page/variants/section-title/react.tsx diff --git a/docs/src/content/examples/show-a-section-title-on-a-question-page/web-components.html b/docs/src/content/examples/question-page/variants/section-title/web-components.html similarity index 100% rename from docs/src/content/examples/show-a-section-title-on-a-question-page/web-components.html rename to docs/src/content/examples/question-page/variants/section-title/web-components.html diff --git a/docs/src/content/examples/remove-a-filter/index.mdx b/docs/src/content/examples/remove-a-filter/index.mdx index c1e7603a90..7b8f0e3f21 100644 --- a/docs/src/content/examples/remove-a-filter/index.mdx +++ b/docs/src/content/examples/remove-a-filter/index.mdx @@ -1,10 +1,7 @@ --- id: remove-a-filter title: Remove a filter -categories: - - inputs-and-actions -scale: interaction -userType: both +size: interaction tags: - filtering - chips diff --git a/docs/src/content/examples/require-user-action-before-continuing/index.mdx b/docs/src/content/examples/require-user-action-before-continuing/index.mdx index 432bbf909a..4ca615f207 100644 --- a/docs/src/content/examples/require-user-action-before-continuing/index.mdx +++ b/docs/src/content/examples/require-user-action-before-continuing/index.mdx @@ -1,10 +1,7 @@ --- id: require-user-action-before-continuing title: Require user action before continuing -categories: - - forms -scale: task -userType: both +size: interaction tags: - modal - confirmation diff --git a/docs/src/content/examples/reset-date-picker-field/index.mdx b/docs/src/content/examples/reset-date-picker-field/index.mdx index c8e25f1b3d..cc0efda327 100644 --- a/docs/src/content/examples/reset-date-picker-field/index.mdx +++ b/docs/src/content/examples/reset-date-picker-field/index.mdx @@ -1,10 +1,7 @@ --- id: reset-date-picker-field title: Reset date picker field -categories: - - inputs-and-actions -scale: interaction -userType: both +size: interaction tags: - date-picker - form diff --git a/docs/src/content/examples/result-page/index.mdx b/docs/src/content/examples/result-page/index.mdx index 7f4187c23d..32aff76624 100644 --- a/docs/src/content/examples/result-page/index.mdx +++ b/docs/src/content/examples/result-page/index.mdx @@ -1,38 +1,42 @@ --- id: result-page title: Result page -categories: - - forms -scale: page -userType: citizen +size: page +productType: public-form +description: A result page shown after a citizen has submitted a form, application, or task. Confirms success, explains what happens next, and points the user at any follow-up actions. tags: - confirmation - success - completion - forms + - application components: - block - callout + - button + - button-group +aliases: + - confirm-that-an-application-was-submitted status: published -previewImage: /images/examples/result-page.webp +previewImage: /images/examples/result-page.png --- -A result page shown after form submission to confirm success, provide next steps, and offer relevant contact information. +## When to use a result page -## When to use +Use a result page when a user has submitted a form, application, or task, and there is a result to show them. -Use this pattern when: +## What content to include -- A user has submitted a form or application -- You need to confirm successful completion of a process -- There is important follow-up information to communicate -- Users need reference numbers or confirmation details +- details of what happens next, and when +- a reference number, if applicable +- a link to save a record of the confirmation, for example as a PDF +- a link to give feedback on the service +- contact details for the service +- links to information or services that users are likely to need next ## Considerations -- Include a reference number if applicable -- Clearly explain what happens next and when -- Provide a way to save or print the confirmation -- Include service contact information for questions -- Link to feedback forms and related services -- Keep the success message clear and reassuring +- Use a success callout to clearly indicate the submission was received +- Mention where a confirmation email will be sent, if applicable +- Keep the success message clear, reassuring, and short +- Surface contact information so users can reach out if something is wrong diff --git a/docs/src/content/examples/reveal-input-based-on-a-selection/index.mdx b/docs/src/content/examples/reveal-input-based-on-a-selection/index.mdx index 3db92fe75c..6ea6be06c8 100644 --- a/docs/src/content/examples/reveal-input-based-on-a-selection/index.mdx +++ b/docs/src/content/examples/reveal-input-based-on-a-selection/index.mdx @@ -1,10 +1,7 @@ --- id: reveal-input-based-on-a-selection title: Reveal input based on a selection -categories: - - forms -scale: task -userType: both +size: interaction tags: - conditional - reveal diff --git a/docs/src/content/examples/review-and-action/index.mdx b/docs/src/content/examples/review-and-action/index.mdx index 10644516e9..6deea2648f 100644 --- a/docs/src/content/examples/review-and-action/index.mdx +++ b/docs/src/content/examples/review-and-action/index.mdx @@ -1,10 +1,8 @@ --- id: review-and-action title: Review and action -categories: - - structure-and-navigation -scale: task -userType: worker +size: section +productType: workspace tags: - review - action diff --git a/docs/src/content/examples/review-page/index.mdx b/docs/src/content/examples/review-page/index.mdx index e17cdd3ef5..46cf94c768 100644 --- a/docs/src/content/examples/review-page/index.mdx +++ b/docs/src/content/examples/review-page/index.mdx @@ -1,10 +1,9 @@ --- id: review-page title: Review page -categories: - - forms -scale: page -userType: citizen +size: page +productType: public-form +description: A review page lets a user check their answers at the end of a form or section before submitting. Each answer has a "change" link so the user can revise without starting over. tags: - review - check-answers @@ -15,25 +14,19 @@ components: - button - button-group status: published -previewImage: /images/examples/review-page.webp +previewImage: /images/examples/review-page.png --- -A review page where users can check their answers before submitting a form, with options to change individual responses. +## When to use a review page + +Review and submit your answers at the end of a form or section. -## When to use +When designing a very large transaction with multiple sections, it may help to include a check-answers page at the end of each section. -Use this pattern when: +## Let users go back and change their answers -- Users need to review their form answers before submission -- At the end of a multi-step form or wizard -- Before finalizing applications or important submissions -- When accuracy of submitted information is critical +Provide a "change" link next to each section so that users can add or change the information they are submitting. -## Considerations +If you have questions that are optional, let users know that they have skipped them without giving an answer by showing their response as "Not provided". -- Display all answered questions with current values -- Provide "Change" links for each answer -- Show "Not provided" for skipped optional questions -- Include visually hidden text in change links for accessibility -- Consider grouping related answers under section headings -- For large forms, consider review pages at the end of each section +Include the full question name again in the change button as visually hidden text so that the screen reader reads out "change [question]" instead of just "change". This gives context to a user using assistive technologies while keeping the link simple for most users. diff --git a/docs/src/content/examples/search/index.mdx b/docs/src/content/examples/search/index.mdx index 8b677bebb9..ae597aed14 100644 --- a/docs/src/content/examples/search/index.mdx +++ b/docs/src/content/examples/search/index.mdx @@ -1,10 +1,7 @@ --- id: search title: Search -categories: - - inputs-and-actions -scale: task -userType: both +size: interaction tags: - search - input diff --git a/docs/src/content/examples/select-one-or-more-from-a-list-of-options/index.mdx b/docs/src/content/examples/select-one-or-more-from-a-list-of-options/index.mdx index cda106545a..f37710f3ad 100644 --- a/docs/src/content/examples/select-one-or-more-from-a-list-of-options/index.mdx +++ b/docs/src/content/examples/select-one-or-more-from-a-list-of-options/index.mdx @@ -1,10 +1,7 @@ --- id: select-one-or-more-from-a-list-of-options title: Select one or more from a list of options -categories: - - forms -scale: task -userType: both +size: interaction tags: - checkbox - selection diff --git a/docs/src/content/examples/set-a-max-width-on-a-long-radio-item/index.mdx b/docs/src/content/examples/set-a-max-width-on-a-long-radio-item/index.mdx index 80a1aa605a..8945d9bf77 100644 --- a/docs/src/content/examples/set-a-max-width-on-a-long-radio-item/index.mdx +++ b/docs/src/content/examples/set-a-max-width-on-a-long-radio-item/index.mdx @@ -1,10 +1,7 @@ --- id: set-a-max-width-on-a-long-radio-item title: Set a max width on a long radio item -categories: - - inputs-and-actions -scale: interaction -userType: both +size: interaction tags: - radio - forms diff --git a/docs/src/content/examples/set-a-specific-tab-to-be-active/index.mdx b/docs/src/content/examples/set-a-specific-tab-to-be-active/index.mdx index cfe782b02a..24f7126376 100644 --- a/docs/src/content/examples/set-a-specific-tab-to-be-active/index.mdx +++ b/docs/src/content/examples/set-a-specific-tab-to-be-active/index.mdx @@ -1,10 +1,7 @@ --- id: set-a-specific-tab-to-be-active title: Set a specific tab to be active -categories: - - inputs-and-actions -scale: interaction -userType: both +size: interaction tags: - tabs - navigation diff --git a/docs/src/content/examples/set-the-status-of-step-on-a-form-stepper/index.mdx b/docs/src/content/examples/set-the-status-of-step-on-a-form-stepper/index.mdx index a3a9153574..080a79efc8 100644 --- a/docs/src/content/examples/set-the-status-of-step-on-a-form-stepper/index.mdx +++ b/docs/src/content/examples/set-the-status-of-step-on-a-form-stepper/index.mdx @@ -1,10 +1,7 @@ --- id: set-the-status-of-step-on-a-form-stepper title: Set the status of step on a form stepper -categories: - - inputs-and-actions -scale: task -userType: both +size: interaction tags: - forms - stepper diff --git a/docs/src/content/examples/show-a-label-on-an-icon-only-button/index.mdx b/docs/src/content/examples/show-a-label-on-an-icon-only-button/index.mdx index 28ebc57a57..ffba97c535 100644 --- a/docs/src/content/examples/show-a-label-on-an-icon-only-button/index.mdx +++ b/docs/src/content/examples/show-a-label-on-an-icon-only-button/index.mdx @@ -1,10 +1,7 @@ --- id: show-a-label-on-an-icon-only-button title: Show a label on an icon only button -categories: - - inputs-and-actions -scale: interaction -userType: both +size: interaction tags: - buttons - icons diff --git a/docs/src/content/examples/show-a-list-to-help-answer-a-question/index.mdx b/docs/src/content/examples/show-a-list-to-help-answer-a-question/index.mdx deleted file mode 100644 index 08dc3bfd31..0000000000 --- a/docs/src/content/examples/show-a-list-to-help-answer-a-question/index.mdx +++ /dev/null @@ -1,40 +0,0 @@ ---- -id: show-a-list-to-help-answer-a-question -title: Show a list to help answer a question -categories: - - forms -scale: task -userType: citizen -tags: - - forms - - details - - guidance - - help -components: - - form-item - - radio-group - - radio-item - - details - - block -status: published -previewImage: /images/examples/show-a-list-to-help-answer-a-question.webp ---- - -Show a list to help answer a question using an expandable details component. - -## When to use - -Use this pattern when: - -- Users need clarification about what items qualify for a question -- You want to provide examples of what to include or exclude -- The guidance content would clutter the form if always visible -- Users can make better decisions with reference information - -## Considerations - -- Place the details component after the form question it relates to -- Use clear headings within the details to organize content -- Include both "examples of" and "do not include" lists when relevant -- Keep the details heading phrased as a question to indicate it provides clarification -- Ensure the expanded content is easy to scan with clear formatting diff --git a/docs/src/content/examples/show-a-notification-with-an-action/index.mdx b/docs/src/content/examples/show-a-notification-with-an-action/index.mdx index de8947d9c4..a151ed152c 100644 --- a/docs/src/content/examples/show-a-notification-with-an-action/index.mdx +++ b/docs/src/content/examples/show-a-notification-with-an-action/index.mdx @@ -1,10 +1,7 @@ --- id: show-a-notification-with-an-action title: Show a notification with an action -categories: - - feedback-and-alerts -scale: interaction -userType: both +size: interaction tags: - notification - feedback diff --git a/docs/src/content/examples/show-a-notification/index.mdx b/docs/src/content/examples/show-a-notification/index.mdx index 51a848f758..f0648d0a19 100644 --- a/docs/src/content/examples/show-a-notification/index.mdx +++ b/docs/src/content/examples/show-a-notification/index.mdx @@ -1,10 +1,7 @@ --- id: show-a-notification title: Show a notification -categories: - - feedback-and-alerts -scale: interaction -userType: both +size: interaction tags: - notification - feedback diff --git a/docs/src/content/examples/show-a-section-title-on-a-question-page/index.mdx b/docs/src/content/examples/show-a-section-title-on-a-question-page/index.mdx deleted file mode 100644 index 283f82ec47..0000000000 --- a/docs/src/content/examples/show-a-section-title-on-a-question-page/index.mdx +++ /dev/null @@ -1,39 +0,0 @@ ---- -id: show-a-section-title-on-a-question-page -title: Show a section title on a question page -categories: - - forms -scale: task -userType: citizen -tags: - - forms - - questions - - navigation - - section -components: - - form-item - - radio-group - - radio-item - - button -status: published -previewImage: /images/examples/show-a-section-title-on-a-question-page.webp ---- - -Show a section title on a question page to help users understand which part of the form they are completing. - -## When to use - -Use this pattern when: - -- Building multi-section forms where context helps users -- Users need to know which category of questions they are answering -- The form is divided into logical sections like "Personal information" -- Following the one-question-per-page pattern for government services - -## Considerations - -- Use a subdued text color for the section title to differentiate from the question -- Include a back link for navigation to previous questions -- The section title should appear above the question -- Use consistent spacing between the back link, section title, and question -- Keep section titles concise and descriptive diff --git a/docs/src/content/examples/show-a-simple-progress-indicator-on-a-question-page-with-multiple-questions/index.mdx b/docs/src/content/examples/show-a-simple-progress-indicator-on-a-question-page-with-multiple-questions/index.mdx deleted file mode 100644 index b5817324da..0000000000 --- a/docs/src/content/examples/show-a-simple-progress-indicator-on-a-question-page-with-multiple-questions/index.mdx +++ /dev/null @@ -1,40 +0,0 @@ ---- -id: show-a-simple-progress-indicator-on-a-question-page-with-multiple-questions -title: Show a simple progress indicator on a question page with multiple questions -categories: - - forms -scale: task -userType: citizen -tags: - - forms - - questions - - progress - - navigation - - multi-question -components: - - form-item - - input - - button -status: published -previewImage: /images/examples/show-a-simple-progress-indicator-on-a-question-page-with-multiple-questions.webp ---- - -Show a simple progress indicator on a question page when grouping multiple related questions together. - -## When to use - -Use this pattern when: - -- Grouping multiple related questions on a single page improves the user experience -- The questions form a logical unit (e.g., personal information fields) -- Users benefit from progress tracking across the form -- A step-based indicator shows progress through form sections - -## Considerations - -- Display progress as "Step X of Y" when grouping questions into sections -- Include a clear section heading that describes the group of questions -- Use a subdued text color for the progress indicator -- Include a back link for navigation to previous sections -- Position related questions close together with consistent spacing -- The `leadingContent` prop on inputs can add prefixes like country codes diff --git a/docs/src/content/examples/show-a-simple-progress-indicator-on-a-question-page/index.mdx b/docs/src/content/examples/show-a-simple-progress-indicator-on-a-question-page/index.mdx deleted file mode 100644 index c978a41b35..0000000000 --- a/docs/src/content/examples/show-a-simple-progress-indicator-on-a-question-page/index.mdx +++ /dev/null @@ -1,39 +0,0 @@ ---- -id: show-a-simple-progress-indicator-on-a-question-page -title: Show a simple progress indicator on a question page -categories: - - forms -scale: task -userType: citizen -tags: - - forms - - questions - - progress - - navigation -components: - - form-item - - radio-group - - radio-item - - button -status: published -previewImage: /images/examples/show-a-simple-progress-indicator-on-a-question-page.webp ---- - -Show a simple progress indicator on a question page to help users understand their progress through the form. - -## When to use - -Use this pattern when: - -- Building a multi-question form where progress tracking helps users -- Users benefit from knowing how many questions remain -- The form has a linear flow with a known number of questions -- Following the one-question-per-page pattern for government services - -## Considerations - -- Display progress as "Question X of Y" for clarity -- Use a subdued text color for the progress indicator -- Include a back link for navigation to previous questions -- Position the progress indicator above the question -- Keep the format consistent throughout the form diff --git a/docs/src/content/examples/show-a-user-progress-when-the-time-is-unknown/index.mdx b/docs/src/content/examples/show-a-user-progress-when-the-time-is-unknown/index.mdx index 83f7f392fa..d825ddcda0 100644 --- a/docs/src/content/examples/show-a-user-progress-when-the-time-is-unknown/index.mdx +++ b/docs/src/content/examples/show-a-user-progress-when-the-time-is-unknown/index.mdx @@ -1,10 +1,7 @@ --- id: show-a-user-progress-when-the-time-is-unknown title: Show a user progress when the time is unknown -categories: - - feedback-and-alerts -scale: task -userType: both +size: interaction tags: - progress - notification diff --git a/docs/src/content/examples/show-a-user-progress/index.mdx b/docs/src/content/examples/show-a-user-progress/index.mdx index 4ecd7c7f54..e51005aaca 100644 --- a/docs/src/content/examples/show-a-user-progress/index.mdx +++ b/docs/src/content/examples/show-a-user-progress/index.mdx @@ -1,10 +1,7 @@ --- id: show-a-user-progress title: Show a user progress -categories: - - feedback-and-alerts -scale: task -userType: both +size: interaction tags: - progress - notification diff --git a/docs/src/content/examples/show-different-views-of-data-in-a-table/index.mdx b/docs/src/content/examples/show-different-views-of-data-in-a-table/index.mdx index 1b65965c59..26769993b9 100644 --- a/docs/src/content/examples/show-different-views-of-data-in-a-table/index.mdx +++ b/docs/src/content/examples/show-different-views-of-data-in-a-table/index.mdx @@ -1,10 +1,8 @@ --- id: show-different-views-of-data-in-a-table title: Show different views of data in a table -categories: - - content-layout -scale: task -userType: worker +size: section +productType: workspace tags: - table - tabs diff --git a/docs/src/content/examples/show-full-date-in-a-tooltip/index.mdx b/docs/src/content/examples/show-full-date-in-a-tooltip/index.mdx index d578104746..f97c267218 100644 --- a/docs/src/content/examples/show-full-date-in-a-tooltip/index.mdx +++ b/docs/src/content/examples/show-full-date-in-a-tooltip/index.mdx @@ -1,10 +1,7 @@ --- id: show-full-date-in-a-tooltip title: Show full date in a tooltip -categories: - - inputs-and-actions -scale: interaction -userType: both +size: interaction tags: - tooltip - date diff --git a/docs/src/content/examples/show-links-to-navigation-items/index.mdx b/docs/src/content/examples/show-links-to-navigation-items/index.mdx index 51901b1a64..f00f26a007 100644 --- a/docs/src/content/examples/show-links-to-navigation-items/index.mdx +++ b/docs/src/content/examples/show-links-to-navigation-items/index.mdx @@ -1,10 +1,7 @@ --- id: show-links-to-navigation-items title: Show links to navigation items -categories: - - structure-and-navigation -scale: task -userType: both +size: section tags: - footer - navigation diff --git a/docs/src/content/examples/show-more-information-to-help-answer-a-question/index.mdx b/docs/src/content/examples/show-more-information-to-help-answer-a-question/index.mdx deleted file mode 100644 index 7476c80530..0000000000 --- a/docs/src/content/examples/show-more-information-to-help-answer-a-question/index.mdx +++ /dev/null @@ -1,41 +0,0 @@ ---- -id: show-more-information-to-help-answer-a-question -title: Show more information to help answer a question -categories: - - forms -scale: task -userType: citizen -tags: - - form - - details - - help - - question-page - - expandable -components: - - details - - form-item - - radio-group - - radio-item - - button -figmaUrl: https://www.figma.com/design/Jpy1Ea5qglwnp1SgGnagY9/%E2%9D%96-Component-library-%7C-DDD?node-id=63353-123863 -status: published -previewImage: /images/examples/show-more-information-to-help-answer-a-question.webp ---- - -Use the Details component to provide optional contextual help that explains why a question is being asked, helping users understand the purpose without cluttering the main form. - -## When to use - -Use this pattern when: - -- Users may wonder why a question is being asked -- Additional context helps users answer correctly -- The information is optional and shouldn't distract -- Following question page patterns for citizen services - -## Considerations - -- Place the details component after the question input -- Use a clear heading like "Why are we asking this question?" -- Keep the expanded content concise and helpful -- Include helper text for the main question when appropriate diff --git a/docs/src/content/examples/show-multiple-actions-in-a-compact-table/index.mdx b/docs/src/content/examples/show-multiple-actions-in-a-compact-table/index.mdx index ba326e5c44..5d1f100848 100644 --- a/docs/src/content/examples/show-multiple-actions-in-a-compact-table/index.mdx +++ b/docs/src/content/examples/show-multiple-actions-in-a-compact-table/index.mdx @@ -1,10 +1,8 @@ --- id: show-multiple-actions-in-a-compact-table title: Show multiple actions in a compact table -categories: - - content-layout -scale: task -userType: worker +size: section +productType: workspace tags: - table - icon-button diff --git a/docs/src/content/examples/show-multiple-tags-together/index.mdx b/docs/src/content/examples/show-multiple-tags-together/index.mdx index f559c4f25f..2a08a2ca4d 100644 --- a/docs/src/content/examples/show-multiple-tags-together/index.mdx +++ b/docs/src/content/examples/show-multiple-tags-together/index.mdx @@ -1,10 +1,7 @@ --- id: show-multiple-tags-together title: Show multiple tags together -categories: - - inputs-and-actions -scale: interaction -userType: both +size: interaction tags: - badge - tags diff --git a/docs/src/content/examples/show-number-of-results-per-page/index.mdx b/docs/src/content/examples/show-number-of-results-per-page/index.mdx index ed45a48c97..759ebf725c 100644 --- a/docs/src/content/examples/show-number-of-results-per-page/index.mdx +++ b/docs/src/content/examples/show-number-of-results-per-page/index.mdx @@ -1,10 +1,7 @@ --- id: show-number-of-results-per-page title: Show number of results per page -categories: - - content-layout -scale: task -userType: both +size: section tags: - pagination - table diff --git a/docs/src/content/examples/show-quick-links/index.mdx b/docs/src/content/examples/show-quick-links/index.mdx index 3e85fc456d..86bbe9ee8f 100644 --- a/docs/src/content/examples/show-quick-links/index.mdx +++ b/docs/src/content/examples/show-quick-links/index.mdx @@ -1,10 +1,7 @@ --- id: show-quick-links title: Show quick links -categories: - - structure-and-navigation -scale: task -userType: both +size: section tags: - footer - navigation diff --git a/docs/src/content/examples/show-status-in-a-table/index.mdx b/docs/src/content/examples/show-status-in-a-table/index.mdx index 1e1ecc216a..05bb69758f 100644 --- a/docs/src/content/examples/show-status-in-a-table/index.mdx +++ b/docs/src/content/examples/show-status-in-a-table/index.mdx @@ -1,10 +1,8 @@ --- id: show-status-in-a-table title: Show status in a table -categories: - - content-layout -scale: task -userType: worker +size: section +productType: workspace tags: - table - badge diff --git a/docs/src/content/examples/show-status-on-a-card/index.mdx b/docs/src/content/examples/show-status-on-a-card/index.mdx index 1298d12e0b..45fa3c2b83 100644 --- a/docs/src/content/examples/show-status-on-a-card/index.mdx +++ b/docs/src/content/examples/show-status-on-a-card/index.mdx @@ -1,10 +1,8 @@ --- id: show-status-on-a-card title: Show status on a card -categories: - - content-layout -scale: task -userType: worker +size: interaction +productType: workspace tags: - card - container diff --git a/docs/src/content/examples/show-version-number/index.mdx b/docs/src/content/examples/show-version-number/index.mdx index e99e6fe382..0d7747b978 100644 --- a/docs/src/content/examples/show-version-number/index.mdx +++ b/docs/src/content/examples/show-version-number/index.mdx @@ -1,10 +1,7 @@ --- id: show-version-number title: Show version number -categories: - - inputs-and-actions -scale: interaction -userType: both +size: interaction tags: - microsite-header - version diff --git a/docs/src/content/examples/slotted-error-text-in-a-form-item/index.mdx b/docs/src/content/examples/slotted-error-text-in-a-form-item/index.mdx index 7f437b6786..196392c3f6 100644 --- a/docs/src/content/examples/slotted-error-text-in-a-form-item/index.mdx +++ b/docs/src/content/examples/slotted-error-text-in-a-form-item/index.mdx @@ -1,10 +1,7 @@ --- id: slotted-error-text-in-a-form-item title: Slotted error text in a form item -categories: - - forms -scale: interaction -userType: both +size: interaction tags: - form - form-item diff --git a/docs/src/content/examples/slotted-helper-text-in-a-form-item/index.mdx b/docs/src/content/examples/slotted-helper-text-in-a-form-item/index.mdx index bb9035b364..d8727a1fae 100644 --- a/docs/src/content/examples/slotted-helper-text-in-a-form-item/index.mdx +++ b/docs/src/content/examples/slotted-helper-text-in-a-form-item/index.mdx @@ -1,10 +1,7 @@ --- id: slotted-helper-text-in-a-form-item title: Slotted helper text in a form item -categories: - - forms -scale: interaction -userType: both +size: interaction tags: - form - form-item diff --git a/docs/src/content/examples/sort-data-in-a-table/index.mdx b/docs/src/content/examples/sort-data-in-a-table/index.mdx index 922ad704a3..a850c691f3 100644 --- a/docs/src/content/examples/sort-data-in-a-table/index.mdx +++ b/docs/src/content/examples/sort-data-in-a-table/index.mdx @@ -1,10 +1,8 @@ --- id: sort-data-in-a-table title: Sort data in a table -categories: - - content-layout -scale: task -userType: worker +size: section +productType: workspace tags: - table - sorting diff --git a/docs/src/content/examples/start-page/index.mdx b/docs/src/content/examples/start-page/index.mdx index 72fdfe44a8..053a1fb58d 100644 --- a/docs/src/content/examples/start-page/index.mdx +++ b/docs/src/content/examples/start-page/index.mdx @@ -1,10 +1,9 @@ --- id: start-page title: Start page -categories: - - forms -scale: page -userType: citizen +size: page +productType: public-form +description: The front door to a government service for a citizen. It is the way into the service and how citizens access it. Each government service has a start page on Alberta.ca. tags: - page - service @@ -13,23 +12,44 @@ tags: components: - button status: published -previewImage: /images/examples/start-page.webp +previewImage: /images/examples/start-page.png --- -A start page is the front door to a government service for citizens. It provides essential information about the service and a clear call to action to begin. +## When to use a start page -## When to use +A start page is the front door to a government service for a citizen. It is the way into the service, how they access the service. Each government service has a start page on Alberta.ca. Contact the relevant person at Alberta.ca to make changes to the start page for your service. -Use this pattern when: +This is the starting point for a citizen to begin your form from within your service or from Alberta.ca. -- Creating the entry point for a citizen-facing government service -- Citizens need to understand what the service does before starting -- You need to communicate prerequisites, time estimates, or required documents +Provide the user with any information that is important before starting the form, such as how long it should take, a list of documents or information they may need to complete the form, any costs involved, or alternative ways to access the service. -## Considerations +## A service's start page should -- Keep the overview concise and focused on what users can do -- List what documents or information users will need -- Include an estimated completion time -- Use a prominent "Get started" or "Start now" button -- Provide contact information and alternative ways to access the service below the main call to action +- give the user just enough information to help them understand what the service does and whether it will meet their need +- have a service name that reflects the problem it solves for users +- be written in plain language. See the [GoA web writing style guide](https://www.alberta.ca/web-writing-style-guide). +- include a "start" button linking into the service, with text consistent with the action you are asking users to take. For example: "Start now", "Sign in", or "Register or update your details". +- include any other information that most users are likely to need before they start using the service online. For example: how much it costs to use the service and roughly how long it will take. +- include additional information about the service, such as other ways to access it (e.g. by telephone or by completing a paper form). This should be included after the main call to action to start the digital service. + +## Page content + +Consider the primary information that the user needs to know before entering into the service. Provide that information clearly, then provide a link to start using the service. Provide additional secondary information below the call to action. + +### Overview + +What the user needs to know before they enter the service. A high-level description of what the service is and what they can use it to do. + +### Before you begin + +- how long it will take +- what they will need to complete the service (e.g. specific documents) +- other important information + +### Call to action + +Below the primary information, include an obvious call to action to get started with the service. + +### Other information + +Below the call to action, include any additional information as applicable, such as customer support, frequently asked questions, or related links. diff --git a/docs/src/content/examples/task-list-page/index.mdx b/docs/src/content/examples/task-list-page/index.mdx index 4d1c48e09e..9ed787dca6 100644 --- a/docs/src/content/examples/task-list-page/index.mdx +++ b/docs/src/content/examples/task-list-page/index.mdx @@ -1,10 +1,9 @@ --- id: task-list-page title: Task list page -categories: - - forms -scale: page -userType: both +size: page +productType: public-form +description: A page that provides structure for multiple steps in a service. Use a task list to outline the entire process and show the status of each task as users move through it. tags: - page - task-list @@ -15,24 +14,55 @@ components: - badge - callout status: published -previewImage: /images/examples/task-list-page.webp +previewImage: /images/examples/task-list-page.png --- -A task list page provides a structure for multi-step services, showing users their progress through a series of tasks with clear status indicators. +## When to use a task list page -## When to use +Use a task list page to provide a structure for multiple steps in a service. Show a task list page when a citizen begins a service, and when they return to the service. -Use this pattern when: +When using a task list, group related actions into tasks and show the status of the tasks. -- A service has multiple distinct tasks or sections to complete -- Users need to see their overall progress -- Tasks can potentially be completed in different orders -- Users may return to complete tasks over multiple sessions +## How to define a task -## Considerations +The size and complexity of a task is determined by the service and content. A task can be defined as small as a single action, such as "sign a document" or "upload a file", or it can be as big as an entire section of a form with multiple question pages and a review page. -- Group related actions into logical tasks -- Show status badges for each task (Completed, In progress, Not started, Cannot start yet) -- Include a summary callout showing how many sections are complete -- Allow users to complete tasks in any order when possible -- Clearly indicate when tasks have dependencies +Use tasks to break down the steps in a service in an understandable way. + +## Show status of tasks + +Make it clear which tasks a user has completed and which they still need to complete. + +### Suggested statuses + +- **Completed** — success +- **In progress** — dark grey +- **Not started** — information +- **Cannot start yet** — light grey + +Include a summary above the task list to say how many tasks have been completed. This also makes it clearer to the user that there are still tasks left to complete. + +### How is a task list different from a stepper? + +**Stepper:** + +- a visual navigation within a form +- shown at the top of every page in a form +- scope: sections of a form + +**Task list:** + +- can be used to outline more than just sections of a form +- not shown on every page + +### Completing tasks in order + +When possible, allow users to complete tasks in any order. This will help them plan their time and complete sections as and when they can. + +## Anatomy + +1. **Page title** — heading-large +2. **Status of completed sections** — `goa-callout` +3. **Section** — task-list-section +4. **Section heading** — heading-medium +5. **Task** — `goa-table` diff --git a/docs/src/content/examples/type-to-create-a-new-filter/index.mdx b/docs/src/content/examples/type-to-create-a-new-filter/index.mdx index 74c567a50b..31db30217b 100644 --- a/docs/src/content/examples/type-to-create-a-new-filter/index.mdx +++ b/docs/src/content/examples/type-to-create-a-new-filter/index.mdx @@ -1,10 +1,7 @@ --- id: type-to-create-a-new-filter title: Type to create a new filter -categories: - - inputs-and-actions -scale: interaction -userType: both +size: interaction tags: - filter-chip - input diff --git a/docs/src/content/examples/warn-a-user-of-a-deadline/index.mdx b/docs/src/content/examples/warn-a-user-of-a-deadline/index.mdx index 150862da76..e8dea0506d 100644 --- a/docs/src/content/examples/warn-a-user-of-a-deadline/index.mdx +++ b/docs/src/content/examples/warn-a-user-of-a-deadline/index.mdx @@ -1,10 +1,7 @@ --- id: warn-a-user-of-a-deadline title: Warn a user of a deadline -categories: - - feedback-and-alerts -scale: task -userType: both +size: section tags: - modal - warning diff --git a/docs/src/content/examples/workspace/case-detail/index.mdx b/docs/src/content/examples/workspace/case-detail/index.mdx new file mode 100644 index 0000000000..ef0a7d6ad5 --- /dev/null +++ b/docs/src/content/examples/workspace/case-detail/index.mdx @@ -0,0 +1,37 @@ +--- +id: workspace-case-detail +title: Case detail +size: page +productType: workspace +description: A single-record view for reviewing and acting on one case. Uses accordion sections, a table-of-contents sidebar, badges for status, and header actions for quick operations. +previewUrl: https://digital-service-demo-v2.netlify.app/workspace/application/ef12df7d-74e7-4a82-9495-51589a0498ae +previewImage: /thumbnails/workspace-case-detail.png +reactSourceUrl: https://github.com/GovAlta/goa-workspace-playground/tree/main/src/routes/cases +angularSourceUrl: https://github.com/GovAlta/goa-workspace-angular/tree/main/src/app/pages/cases +components: + - accordion + - badge + - button + - drawer +tags: + - workspace + - case-detail + - worker +status: published +--- + +## When to use + +Use the case detail view when staff need to review and act on a single record. + +## Structure + +Break long content into sections using [accordions](/components/accordion) to organize submitted data into collapsible sections. A table-of-contents sidebar helps users navigate long case content. [Badges](/components/badge) show case status, and action buttons in the header provide quick access to review, assign, and comment actions. + +## Actions + +For focused work that should happen without leaving the page, pair case detail with a [push drawer](/components/push-drawer). + +## Considerations + +Keep the accordion section headings short and consistent. When the list of sections is long, the TOC sidebar becomes essential. diff --git a/docs/src/content/examples/workspace/dashboard/index.mdx b/docs/src/content/examples/workspace/dashboard/index.mdx new file mode 100644 index 0000000000..dedc429277 --- /dev/null +++ b/docs/src/content/examples/workspace/dashboard/index.mdx @@ -0,0 +1,40 @@ +--- +id: workspace-dashboard +title: Dashboard +size: page +productType: workspace +description: Gives staff an overview of their work with counts, trends, and assigned items. +previewUrl: https://digital-service-demo-v2.netlify.app/workspace +previewImage: /thumbnails/workspace-dashboard.png +reactSourceUrl: https://github.com/GovAlta/goa-workspace-playground/tree/main/src/routes/dashboard +angularSourceUrl: https://github.com/GovAlta/goa-workspace-angular/tree/main/src/app/pages/dashboard +components: + - container + - block + - badge +tags: + - workspace + - dashboard + - worker +status: published +--- + +## When to use + +Use a dashboard as the landing view of a workspace when staff need to see priorities and act quickly. + +## What to include + +Include the information that helps staff understand priorities and act quickly, such as: + +- counts or status summaries +- trends or workload charts +- links to assigned or high-priority work + +## Layout + +The layout uses [containers](/components/container) and [blocks](/components/block) to organize content into scannable sections. + +## Considerations + +Prioritize the two or three things staff need to see on arrival. Surface everything else from deeper navigation rather than crowding the dashboard. diff --git a/docs/src/content/examples/workspace/index-page/index.mdx b/docs/src/content/examples/workspace/index-page/index.mdx new file mode 100644 index 0000000000..6980db1f85 --- /dev/null +++ b/docs/src/content/examples/workspace/index-page/index.mdx @@ -0,0 +1,36 @@ +--- +id: workspace-index-page +title: Index page +size: page +productType: workspace +description: The page staff land on to scan, filter, sort, and pick records to work on. The home of the workspace's daily queue. +previewUrl: https://digital-service-demo-v2.netlify.app/workspace/applications +previewImage: /thumbnails/workspace-table-view.png +reactSourceUrl: https://github.com/GovAlta/goa-workspace-playground/tree/main/src/routes/search +angularSourceUrl: https://github.com/GovAlta/goa-workspace-angular/tree/main/src/app/pages/search +components: + - work-side-menu + - data-grid + - tabs + - filter-chip + - badge +tags: + - workspace + - index + - worker +status: published +--- + +## When to use + +Use the index page as the workspace's main listing surface. Most workspaces have one or more, organized by record type (applications, cases, claims, requests). + +## Structure + +The index page is built around a [data view](/examples/workspace#data-views) showing the records the user is responsible for. Tabs filter by status. Search and filter chips narrow further. A primary action button (often "New record") lives in the page header. + +## Considerations + +- Surface what staff need to act on first. The default sort and filter should reflect a typical worker's queue, not the database's order. +- Keep the action bar slim. Filters and search go inside the table region; high-level actions sit in the page header. +- Pair with [sidebar navigation](/examples/workspace#sidebar-navigation) so staff can jump between index pages for different record types. diff --git a/docs/src/content/examples/workspace/index.mdx b/docs/src/content/examples/workspace/index.mdx deleted file mode 100644 index 865d0995d3..0000000000 --- a/docs/src/content/examples/workspace/index.mdx +++ /dev/null @@ -1,281 +0,0 @@ ---- -id: workspace -title: Workspace -description: The workspace is for productivity-focused services used by service delivery staff as a daily tool to review information, manage records, and complete tasks. The design prioritizes productivity, efficiency, and accuracy so staff can move through their work quickly while ensuring the best outcome for citizens and government.
Workspaces should be adapted to fit each service's context and user needs. The reference example is a starting point to expand on, not a rigid template. -categories: [] -scale: product -userType: worker -tags: - - workspace - - worker - - service - - case-management - - dashboard - - pattern -components: - - work-side-menu - - work-side-notification-panel - - work-side-notification-item - - table - - badge - - tabs - - container - - accordion - - drawer - - button - - block -previewImage: /thumbnails/workspace-preview.png -status: published ---- - -View demo - -import LinkCard from "../../../components/LinkCard.astro"; - -
- - -
- -**Primary user:** Service delivery staff - -## When to use - -Use the workspace when your service needs to support regular, task-based work, such as: - -- Reviewing and processing submissions -- Managing case files, applications, or requests -- Moving between dashboards, lists, and detail views -- Taking actions such as approve, deny, assign, or request more information - -## When not to use - -- Citizen-facing services — use the [public form](/examples/public-form) pattern instead -- Content-only pages that don't involve case management -- Simple internal tools that don't need structured case processing - ---- - -## Sidebar navigation - -Use the [work side menu](/components/work-side-menu) as the primary navigation for a workspace. - -Keep top-level navigation focused on the main areas of work. When a user opens a record or case, switch to contextual navigation that supports that task. This puts the user into a focused mode with relevant navigation items (like sections of an application, comments, reminders) and a back link to return to the main view. The sidebar can adapt to what the user is doing, it doesn't have to show everything at once. - -

- Main workspace navigation -

-Workspace main sidebar navigation with Dashboard and Applications items - -

- Contextual case navigation -

-Workspace contextual sidebar showing case-specific navigation items - -View demo - ---- - -## Notification panel - -Use the [notification panel](/components/work-side-notification-panel) to surface alerts and updates to staff without leaving their current task. The panel opens as a popover from the side menu, with tabs for filtering unread, urgent, and all notifications. - -Each notification shows a title, description, timestamp, and optional type badge. Urgent notifications are visually distinct so staff can prioritize. Staff can mark all as read or view all notifications from the panel footer. - -Workspace notification panel showing unread notifications in a popover from the side menu - -View demo - ---- - -## Dashboard - -The dashboard gives staff an overview of their work. - -Include the information that helps them understand priorities and act quickly, such as: - -- counts or status summaries -- trends or workload charts -- links to assigned or high-priority work - -The layout uses [containers](/components/container) and [blocks](/components/block) to organize content into scannable sections. - -Workspace dashboard - -View demo - ---- - -## Data views - -Workers need different ways to view, scan, and act on records depending on the task. Choose the data view that best supports the task. - -- **Table view** — Dense, scannable rows with sortable columns. Best for users who need to compare fields across many records at once. -- **Card view** — Each record as a card showing key details grouped into sections. Useful when records have more complex data that doesn't fit neatly into columns. -- **Expandable list view** — Compact rows that expand inline to reveal detail. A middle ground between the density of a table and the richness of cards. - -Any view can be combined with grouping (for example, group by priority or status) to organize records into collapsible sections. Users can also search, filter by status using [tabs](/components/tabs), sort with multi-level sorting, and manage active filters with [filter chips](/components/filter-chip). - -

- Table view -

-Table view with sortable columns - -

- Card view -

-Card view of case files - -

- Expandable list view -

-Expandable list view with grouping - -View demo - ---- - -## Case detail - -Use the case detail view to help users review and act on a single record. - -Break long content into sections using [accordions](/components/accordion) to organize submitted data into collapsible sections. A table-of-contents sidebar helps users navigate long case content. [Badges](/components/badge) show case status, and action buttons in the header provide quick access to review, assign, and comment actions. - -Workspace case detail - -View demo - ---- - -## Sticky action bar - -A scroll-aware header that pins to the top of the content area as the user scrolls. Use it to keep the most important tools visible. - -Set the content for each page based on the task: - -- On a cases list page, keep tools such as search and key actions visible. -- On a detail page, keep the case name and key actions visible. - -Do not pin everything. Keep only the information and actions people need to continue their work without losing context. - -Workspace sticky action bar - -View demo - ---- - -## Push drawer - -Use a [push drawer](/components/drawer) for focused work that should happen without leaving the current page. - -This works well for actions such as: - -- approving or denying a record -- requesting more information -- completing a short decision form -- reviewing supporting details while taking action - -Use it when users need to keep the main record in view while completing the task. - -Workspace push drawer - -View demo - ---- - -## Keyboard-accessible data views - -Workspace data views use the [data grid](/components/data-grid) to make table and card layouts fully keyboard navigable. Users can use arrow keys to move between cells and rows, making it possible to scan and act on records without a mouse. This is especially important in workspace contexts where staff are processing high volumes of cases and keyboard navigation is significantly faster than clicking. For assistive technology users, screen readers announce cell content and position as the user navigates. - ---- - -## Components built for workspace - -Workspace patterns are supported by component features designed for denser, more productive interfaces: - -- **Compact inputs** — Every input component now has a `compact` variant that reduces height and spacing. This lets you build tighter forms and toolbars without sacrificing usability. -- **Compact badges and notifications** — [Badges](/components/badge) and [notification banners](/components/notification) also have compact sizing to fit within dense data views and action bars. -- **Badge variants** — [Badges](/components/badge) now include `strong` and `subtle` emphasis options, giving you control over visual weight depending on context. -- **Data grid** — The [data grid](/components/data-grid) works with the table component to support accessible, keyboard-navigable data views. Use them together when the user needs to move through records efficiently without relying on a mouse. -- **Segmented tabs** — A new [tab](/components/tab) variant that works as a segmented toggle for switching between views or modes within a workspace, rather than navigating between pages. -- **Enhanced filter chips** — [Filter chips](/components/filter-chip) now support secondary text and secondary icons, making them more useful for richer filtering in workspace data views. - ---- - -## Get started - -Use one of the workspace templates as a starting point for your service. Each template includes the sidebar navigation, dashboard, data views, and case detail patterns described above. - -
- - -
- ---- - -## Considerations - -- The reference demo is a spike — component customizations haven't gone through the production pipeline yet -- There should be significant variability within a workspace to meet each service's specific context and user needs -- The demo is a starting point to expand on and adapt, not a rigid template to copy exactly -- Desktop uses a card container pattern for the main content area; this is removed on mobile for space diff --git a/docs/src/content/productTypes/public-form/index.mdx b/docs/src/content/productTypes/public-form/index.mdx new file mode 100644 index 0000000000..d74d27da0b --- /dev/null +++ b/docs/src/content/productTypes/public-form/index.mdx @@ -0,0 +1,166 @@ +--- +id: public-form +title: Public form +summary: For citizen-facing services where users apply for a benefit, request a service, or submit information. Designed around simplicity and low cognitive load, with plain-language questions, focused pages that ask one thing at a time, save-and-resume, and a clear confirmation of what happens next.
The reference example is a starting point to expand on, not a rigid template. Adapt it to fit each service's context. +heroImage: /images/examples/my-applications-page.png +demoUrl: https://digital-service-demo-v2.netlify.app/ +tags: + - form + - public + - citizen + - pattern +components: [] +status: published +--- + +View demo + +import PreviewContainer from "../../../components/PreviewContainer.astro"; + +Primary user: Citizens applying for a service, benefit, permit, or status update. + +## Pages + +A public form is built from a small set of page types. Combine and adapt them to fit the work the service supports. + +### Start page + +The starting point for a citizen to begin your form from within your service or from Alberta.ca. + + + +### Task list page (optional) + +Outline the entire process for the user and help them through it by breaking the experience into individual tasks. Use it for longer or multi-section forms. + + + +### Question page + +Ask a user a question, or a small set of closely related questions. The most common page in a public form. Several variants cover progress indicators, section titles, background context, expandable help, and grouped fields. + + + +### Review page + +Let users check their answers before submitting information to the service. Group answers by section and let the user jump back to any answer they want to change. + + + +### Result page + +Confirm to users that they have completed a form, application, or task, and tell them what to do next. + + + +--- + +## Form structure + +Use the public form structure focused on content. Asking the right questions in the right shape keeps the interaction as simple as possible. + +### Start with one idea per page + +Split the form across multiple pages with each page containing just one idea. For example: + +- one decision they have to make +- one question they have to answer +- one piece of information you are telling a user + +Starting with one thing per page helps users to: + +- understand what you are asking them to do +- focus on a specific question and its answer +- find their way through an unfamiliar process +- use the service on a mobile device +- recover easily from form errors + +It also helps the service to: + +- handle branching questions and loops +- design for mobile use +- save a user's answers automatically as they go +- capture analytics about each question + +### Combine questions when helpful + +Asking a question does not necessarily mean you should use one form field. Asking a user for their address is best captured all on the same page with multiple fields. See the [grouped fields variant on the question page](/examples/question-page#group-related-questions-on-one-page). + +--- + +## When to use + +Use the public form pattern when: + +- The service is for citizens, not internal staff +- Users may complete the form infrequently and need plain-language guidance +- The form has more than a handful of questions and benefits from being split across pages +- Branching, conditional logic, or save-and-resume matters + +--- + +## Accessibility + +Structuring your form with one idea per page simplifies the experience and makes it more accessible. + +1. **Reduced cognitive load.** Presenting only one idea at a time reduces cognitive load on the user. This is particularly beneficial for users with cognitive impairments who might find it difficult to process and respond to multiple questions at once. +2. **Improved navigation for a screen reader.** This simplified approach efficiently guides the user through the form based on each answer and makes it easier to navigate with screen readers or other assistive technology. +3. **Better error handling.** With smaller sets of questions validated at a time, errors can be identified and addressed in context. This makes it less confusing and less overwhelming, particularly for users with cognitive impairments and those using assistive technologies. +4. **Progressive disclosure.** One idea per page allows the user to focus on the current task and move through information slowly. This is especially helpful for users who are easily distracted or overwhelmed by too much information. + +--- + +## Adding complexity + +Start by making sure the content and questions you are asking the user are as simple as possible. + +As the complexity of your form grows, consider: + +- adding simple [progress indicators on a question page](/examples/question-page#show-a-progress-indicator) to communicate progress +- breaking the form into sections on a [task list page](/examples/task-list-page) + +--- + +## Form stepper + +Avoid using a traditional horizontal form stepper on every form. Research has shown that horizontal steppers shown on every page can distract and confuse some users, take up too much space, and make it hard to handle branching and conditional sections of a form. + +As the complexity of your form grows, consider: + +- adding simple text progress indicators to communicate progress +- following the one idea per page approach, and breaking the form into sections as needed using a task list page diff --git a/docs/src/content/productTypes/workspace/index.mdx b/docs/src/content/productTypes/workspace/index.mdx new file mode 100644 index 0000000000..d3b5d25f72 --- /dev/null +++ b/docs/src/content/productTypes/workspace/index.mdx @@ -0,0 +1,262 @@ +--- +id: workspace +title: Workspace +summary: The workspace is for productivity-focused services used by service delivery staff as a daily tool to review information, manage records, and complete tasks. The design prioritizes productivity, efficiency, and accuracy so staff can move through their work quickly while ensuring the best outcome for citizens and government.
Workspaces should be adapted to fit each service's context and user needs. The reference example is a starting point to expand on, not a rigid template. +heroImage: /thumbnails/workspace-preview.png +demoUrl: https://digital-service-demo-v2.netlify.app/workspace +sourceUrl: https://github.com/GovAlta/goa-workspace-playground +tags: + - workspace + - worker + - service + - case-management + - dashboard + - pattern +components: + - work-side-menu + - table + - badge + - tabs + - container + - accordion + - drawer + - button + - block +status: published +--- + +View demo + +import LinkCard from "../../../components/LinkCard.astro"; +import PreviewContainer from "../../../components/PreviewContainer.astro"; + +
+ + +
+ +Primary user: Service delivery staff + +## Pages + +Combine and adapt these to fit the work your service supports. + +### Dashboard + +The landing view of a workspace, showing staff their counts, trends, and assigned work. + + + +### Index page + +The page where staff scan and pick records to work on, with filters, search, and tabs. + + + +### Case detail + +A single-record view for reviewing and acting on one case. + + + +--- + +## Patterns + +Patterns that show up across multiple workspace pages. + +### Data views + +Workers need different ways to view, scan, and act on records depending on the task. Choose the data view that best supports the task. + +- **Table view.** Dense, scannable rows with sortable columns. Best for users who need to compare fields across many records at once. +- **Card view.** Each record as a card showing key details grouped into sections. Useful when records have more complex data that doesn't fit neatly into columns. +- **Expandable list view.** Compact rows that expand inline to reveal detail. A middle ground between the density of a table and the richness of cards. + +Any view can be combined with grouping (for example, group by priority or status) to organize records into collapsible sections. Users can also search, filter by status using [tabs](/components/tabs), sort with multi-level sorting, and manage active filters with [filter chips](/components/filter-chip). + + + + Table view with sortable columns + + + Card view of case files + + + Expandable list view with grouping + + + +### Sidebar navigation + +Use the [work side menu](/components/work-side-menu) as the primary navigation for a workspace. + +Keep top-level navigation focused on the main areas of work. When a user opens a record or case, switch to contextual navigation that supports that task. This puts the user into a focused mode with relevant navigation items (like sections of an application, comments, reminders) and a back link to return to the main view. The sidebar can adapt to what the user is doing, it doesn't have to show everything at once. + +
+
+

+ Main workspace navigation +

+ Workspace main sidebar navigation with Dashboard and Applications items +
+
+

+ Contextual case navigation +

+ Workspace contextual sidebar showing case-specific navigation items +
+
+ +### Sticky action bar + +A scroll-aware header that pins to the top of the content area as the user scrolls. Use it to keep the most important tools visible. + +Set the content for each page based on the task: + +- On a cases list page, keep tools such as search and key actions visible. +- On a detail page, keep the case name and key actions visible. + +Do not pin everything. Keep only the information and actions people need to continue their work without losing context. + +Workspace sticky action bar + +### Push drawer + +Use a [push drawer](/components/push-drawer) for focused work that should happen without leaving the current page. + +This works well for actions such as: + +- approving or denying a record +- requesting more information +- completing a short decision form +- reviewing supporting details while taking action + +Use it when users need to keep the main record in view while completing the task. + +Workspace push drawer + +--- + +## Components built for workspace + +Workspace patterns are supported by component features designed for denser, more productive interfaces: + +- **Compact inputs.** Every input component now has a `compact` variant that reduces height and spacing. This lets you build tighter forms and toolbars without sacrificing usability. +- **Compact badges and notifications.** [Badges](/components/badge) and [notification banners](/components/notification) also have compact sizing to fit within dense data views and action bars. +- **Badge variants.** [Badges](/components/badge) now include `strong` and `subtle` emphasis options, giving you control over visual weight depending on context. +- **Data grid.** The [data grid](/components/data-grid) works with the table component to support accessible, keyboard-navigable data views. Use them together when the user needs to move through records efficiently without relying on a mouse. +- **Segmented tabs.** A new [tab](/components/tab) variant that works as a segmented toggle for switching between views or modes within a workspace, rather than navigating between pages. +- **Enhanced filter chips.** [Filter chips](/components/filter-chip) now support secondary text and secondary icons, making them more useful for richer filtering in workspace data views. + +--- + +## Keyboard-accessible data views + +Workspace data views use the [data grid](/components/data-grid) to make table and card layouts fully keyboard navigable. Users can use arrow keys to move between cells and rows, making it possible to scan and act on records without a mouse. This is especially important in workspace contexts where staff are processing high volumes of cases and keyboard navigation is significantly faster than clicking. For assistive technology users, screen readers announce cell content and position as the user navigates. + +--- + +## When to use + +Use the workspace when your service needs to support regular, task-based work, such as: + +- Reviewing and processing submissions +- Managing case files, applications, or requests +- Moving between dashboards, lists, and detail views +- Taking actions such as approve, deny, assign, or request more information + +## When not to use + +- Citizen-facing services. Use the [public form](/examples/public-form) pattern instead. +- Content-only pages that do not involve case management. +- Simple internal tools that do not need structured case processing. + +--- + +## Get started + +Use one of the workspace templates as a starting point for your service. Each template includes the sidebar navigation, dashboard, data views, and case detail patterns described above. + +
+ + +
+ +--- + +## Considerations + +- The reference demo is a spike. Component customizations have not gone through the production pipeline yet. +- There should be significant variability within a workspace to meet each service's specific context and user needs. +- The demo is a starting point to expand on and adapt, not a rigid template to copy exactly. +- Desktop uses a card container pattern for the main content area. This is removed on mobile for space. diff --git a/docs/src/layouts/PreviewLayout.astro b/docs/src/layouts/PreviewLayout.astro new file mode 100644 index 0000000000..112c4a3468 --- /dev/null +++ b/docs/src/layouts/PreviewLayout.astro @@ -0,0 +1,155 @@ +--- +/** + * PreviewLayout.astro + * + * Chrome for render-local template previews (Model B). Loads the GoA + * web-components runtime so tags render inside a layout-less route, + * renders a slim top bar with a back link to /examples, and slots the + * composition underneath. + * + * Use this for any full-viewport preview whose source lives in the docs + * repo itself (error pages, result pages, page-scale patterns). Workspace + * and other iframe-a-demo previews have their own route that does not use + * this layout. + */ +import "@abgov/web-components/index.css"; +import "@design-tokens/tokens.css"; +import { withBase } from "@/lib/base-url"; + +interface Props { + title: string; + /** Internal route to navigate back to. Pass a raw path; layout applies withBase() internally. */ + backUrl?: string; + backLabel?: string; + reactSourceUrl?: string; + angularSourceUrl?: string; +} + +const { + title, + backUrl = "/examples", + backLabel = "Back to Examples", + reactSourceUrl, + angularSourceUrl, +} = Astro.props; + +const resolvedBackUrl = withBase(backUrl); +--- + + + + + + + {title} + + + + + +
+ + + {backLabel} + + +
+ {reactSourceUrl && ( + + + + )} + {angularSourceUrl && ( + + + + )} +
+
+ +
+ +
+ + + + diff --git a/docs/src/lib/base-url.ts b/docs/src/lib/base-url.ts index 1ea988dbab..47e91e8df0 100644 --- a/docs/src/lib/base-url.ts +++ b/docs/src/lib/base-url.ts @@ -3,6 +3,8 @@ export const BASE_URL = import.meta.env.BASE_URL; export function withBase(path: string): string { if (!path) return BASE_URL; if (path.startsWith("http://") || path.startsWith("https://")) return path; + // Idempotent: skip if path is already prefixed with BASE_URL. + if (BASE_URL !== "/" && path.startsWith(BASE_URL)) return path; const clean = path.startsWith("/") ? path.slice(1) : path; return `${BASE_URL}${clean}`; } diff --git a/docs/src/lib/example-size.ts b/docs/src/lib/example-size.ts new file mode 100644 index 0000000000..133656c6d3 --- /dev/null +++ b/docs/src/lib/example-size.ts @@ -0,0 +1,13 @@ +/** + * Page-scale entries (page, task, product) render a PreviewContainer + * card linking to the entry's docs page rather than an inline sandbox, + * because their composition usually depends on app shell, mock data, or + * external sources that don't render usefully inline. Section and + * interaction snippets render inline with a sandbox plus framework code + * tabs. + */ +const PAGE_SCALES = ["page", "task", "product"] as const; + +export function isPageScale(size: string): boolean { + return (PAGE_SCALES as readonly string[]).includes(size); +} diff --git a/docs/src/pages/examples/[family]/[page]/index.astro b/docs/src/pages/examples/[family]/[page]/index.astro new file mode 100644 index 0000000000..a5da1c88d6 --- /dev/null +++ b/docs/src/pages/examples/[family]/[page]/index.astro @@ -0,0 +1,134 @@ +--- +/** + * Template Detail Page + * + * Deep dive for a single template or sub-pattern. + * Hero with preview image plus a thin action bar (Live preview, Source, StackBlitz), + * followed by MDX body (when to use, considerations, components used, etc.). + * No framework code tabs at this scale. Source link goes to GitHub. + */ +import { getCollection, render } from 'astro:content'; +import ExamplesPageLayout from '../../../../layouts/ExamplesPageLayout.astro'; +import Breadcrumbs from '../../../../components/Breadcrumbs.astro'; +import PreviewContainer from '../../../../components/PreviewContainer.astro'; + +export async function getStaticPaths() { + const examples = await getCollection('examples'); + // Nested page-scale entries whose slug is "/". Today's + // set: workspace/dashboard, workspace/index-page, workspace/case-detail. + const nested = examples.filter((e) => e.slug.includes('/') && e.data.size === 'page'); + return nested.map((entry) => { + const [family, page] = entry.slug.split('/'); + return { + params: { family, page }, + props: { entry }, + }; + }); +} + +const { entry } = Astro.props; +const { Content } = await render(entry); +const { data } = entry; +const { family, page } = Astro.params; +// data is narrowed to the page-shape by the getStaticPaths filter +const pageData = data as Extract; + +// Emit a Live preview URL so the action bar renders consistently with +// the family overview. Whether the preview iframes an external demo +// (workspace) or renders locally (page-scale templates) is decided +// by the preview route itself. +const internalPreviewUrl = `/examples/${family}/${page}/preview`; +--- + + +
+ +
+
+ + {pageData.frameworks?.map((f: string) => ( + + ))} +
+

{data.title}

+ {data.description &&

} +

+ + + +
+ +
+
+
+ + diff --git a/docs/src/pages/examples/[family]/[page]/preview.astro b/docs/src/pages/examples/[family]/[page]/preview.astro new file mode 100644 index 0000000000..4933cfec2d --- /dev/null +++ b/docs/src/pages/examples/[family]/[page]/preview.astro @@ -0,0 +1,61 @@ +--- +/** + * Template Live Preview + * + * Standalone full-viewport preview of a template. Iframes the template's + * configured previewUrl (typically the workspace demo app) and wraps it + * with a minimal top bar so users can navigate back to the docs. This is + * the "isolated preview" distinct from the full working demo linked via + * the "View demo" CTA in the walkthrough. + */ +import { getCollection } from 'astro:content'; +import PreviewLayout from "../../../../layouts/PreviewLayout.astro"; + +export async function getStaticPaths() { + const examples = await getCollection('examples'); + // Nested examples with a previewUrl: the page-detail route wires the + // Live preview button here, and this route iframes the externally-hosted demo. + const nested = examples.filter( + (e) => e.slug.includes('/') && e.data.size === 'page' && e.data.previewUrl, + ); + return nested.map((entry) => { + const [family, page] = entry.slug.split('/'); + return { + params: { family, page }, + props: { entry }, + }; + }); +} + +const { entry } = Astro.props; +const { data } = entry; +const { family, page } = Astro.params; +const backUrl = `/examples/${family}/${page}`; +const backLabel = `Back to ${data.title}`; +const pageData = data as Extract; +--- + + + + + + diff --git a/docs/src/pages/examples/[family]/index.astro b/docs/src/pages/examples/[family]/index.astro new file mode 100644 index 0000000000..c7d45a0b16 --- /dev/null +++ b/docs/src/pages/examples/[family]/index.astro @@ -0,0 +1,150 @@ +--- +/** + * Service Type Overview Page + * + * Landing page for a service type. Renders the MDX body of the matching + * entry in the `productTypes` collection (workspace, public-form). Follows + * the flexible-doc-page pattern: prose walkthrough with inline demo CTAs, + * images, and links to nested example pages. + */ +import { getCollection, render } from 'astro:content'; +import ExamplesPageLayout from '../../../layouts/ExamplesPageLayout.astro'; +import Breadcrumbs from '../../../components/Breadcrumbs.astro'; +import { TableOfContents } from '../../../components/TableOfContents'; + +export async function getStaticPaths() { + const productTypes = await getCollection('productTypes'); + return productTypes.map((entry) => ({ + params: { family: entry.data.id }, + props: { entry }, + })); +} + +const { entry } = Astro.props; +const { Content } = await render(entry); +const { data } = entry; + +// Family overview cover shows the whole demo app, not a single-page preview, +// so no Live preview button. View demo alone covers the CTA. +--- + + +
+ +
+
+
+

{data.title}

+ {data.summary &&

} +

+ +
+ +
+
+
+ + diff --git a/docs/src/pages/examples/[family]/preview.astro b/docs/src/pages/examples/[family]/preview.astro new file mode 100644 index 0000000000..73c3a161d2 --- /dev/null +++ b/docs/src/pages/examples/[family]/preview.astro @@ -0,0 +1,48 @@ +--- +/** + * Family Live Preview + * + * Standalone full-viewport preview of a template family's main demo route. + * Same chrome as [page]/preview.astro so the family overview's "Live preview" + * button lands on the same shape as the detail pages' buttons. + */ +import { getCollection } from 'astro:content'; +import PreviewLayout from "../../../layouts/PreviewLayout.astro"; + +export async function getStaticPaths() { + const productTypes = await getCollection('productTypes'); + const withDemo = productTypes.filter((entry) => entry.data.demoUrl); + return withDemo.map((entry) => ({ + params: { family: entry.data.id }, + props: { entry }, + })); +} + +const { entry } = Astro.props; +const { data } = entry; +const backUrl = `/examples/${data.id}`; +const backLabel = `Back to ${data.title}`; +--- + + + + + + diff --git a/docs/src/pages/examples/[slug].astro b/docs/src/pages/examples/[slug].astro index 88185bb128..65618d4881 100644 --- a/docs/src/pages/examples/[slug].astro +++ b/docs/src/pages/examples/[slug].astro @@ -13,18 +13,21 @@ import { getCollection, render } from 'astro:content'; import ExamplesPageLayout from '../../layouts/ExamplesPageLayout.astro'; import Breadcrumbs from '../../components/Breadcrumbs.astro'; import ExampleDisplay from '../../components/ExampleDisplay.astro'; +import PreviewContainer from '../../components/PreviewContainer.astro'; import { TableOfContents } from '../../components/TableOfContents'; import { getExampleCode } from '../../lib/example-code'; +import { isPageScale } from '../../lib/example-size'; - -// Generate static paths for all examples +// Generate static paths for flat examples only. Nested entries +// (workspace/dashboard, etc) are handled by [family]/[page]/index.astro. export async function getStaticPaths() { const examples = await getCollection('examples'); - const visibleExamples = examples.filter((example) => !example.data.hidden); - return visibleExamples.map((example) => ({ - params: { slug: example.slug }, - props: { example }, - })); + return examples + .filter((example) => !example.slug.includes('/') && !example.data.hidden) + .map((example) => ({ + params: { slug: example.slug }, + props: { example }, + })); } const { example } = Astro.props; @@ -38,6 +41,27 @@ const { Content } = await render(example); const code = await getExampleCode(example.slug); const hasCode = !!(code.react || code.angular || code.webComponents); +// Page-and-larger entries render with a PreviewContainer at the top instead +// of framework code tabs, mirroring the workspace page detail shape. The +// framework files still exist on disk and are linked via GitHub. +// Section-sized entries keep the sandbox + framework tabs treatment. +const pageScale = isPageScale(data.size); +const showCodeTabs = !pageScale && hasCode; +const useTopPreview = pageScale && data.previewImage && !data.hideHero; +const githubBlobBase = 'https://github.com/GovAlta/ui-components/blob/dev/docs/src/content/examples'; +const githubTreeBase = 'https://github.com/GovAlta/ui-components/tree/dev/docs/src/content/examples'; +type WithSourceUrls = { reactSourceUrl?: string; angularSourceUrl?: string; previewUrl?: string }; +const pageData = data as typeof data & WithSourceUrls; +const reactSourceUrl = + pageData.reactSourceUrl ?? (code.react ? `${githubBlobBase}/${slug}/react.tsx` : undefined); +const angularSourceUrl = + pageData.angularSourceUrl ?? (code.angular ? `${githubTreeBase}/${slug}` : undefined); +// /examples/[slug]/preview.astro auto-generates a Live preview route for +// every flat-slug page-scale entry with a sibling react.tsx. So if this +// entry has React code, link the PreviewContainer image to its preview. +const previewUrl = + pageData.previewUrl ?? (pageScale && code.react ? `/examples/${slug}/preview` : undefined); + // Get related examples if defined let relatedExamples: typeof example[] = []; if (data.relatedExamples?.length) { @@ -48,28 +72,17 @@ if (data.relatedExamples?.length) { ); } -// Format category for display -function formatCategory(category: string): string { - return category +// Format size for display ("page" -> "Page", "component" -> "Component", "digital-service" -> "Digital service") +function formatSize(size: string): string { + return size .split('-') - .map(word => word.charAt(0).toUpperCase() + word.slice(1)) + .map((word, i) => (i === 0 ? word.charAt(0).toUpperCase() + word.slice(1) : word)) .join(' '); } -// Format scale for display -function formatScale(scale: string): string { - return scale.charAt(0).toUpperCase() + scale.slice(1); -} - -// Format user type for display -function formatUserType(userType: string): string { - if (userType === 'both') return 'Citizen & Worker'; - return userType.charAt(0).toUpperCase() + userType.slice(1); -} - -// Format component name to sentence case (e.g., "form-item" → "Form item") -function formatComponentName(component: string): string { - return component +// Format service type for display ("public-form" -> "Public form") +function formatProductType(productType: string): string { + return productType .split('-') .map((word, i) => i === 0 ? word.charAt(0).toUpperCase() + word.slice(1) : word) .join(' '); @@ -84,37 +97,56 @@ const v1DocsUrl = `https://v1.design.alberta.ca/examples/${slug}`; currentSlug={slug} >
- + {/* Only page-scale entries (Dashboard, Start page, etc.) are members of + a product-type overview's Pages section. Section-scale snippets carry + a productType for filtering and badges only, so they should not show + the family crumb. */} +
- {data.categories.map((cat: string) => ( - - ))} - - + + {data.productType && ( + + )}
- - {hasCode ? ( + + {showCodeTabs ? (
- ) : data.previewImage ? ( + ) : useTopPreview ? ( +
+

{data.title}

+ {data.description && ( +

+ )} + +

+ ) : (

{data.title}

{data.description && (

)} -

- {`${data.title} -
- ) : null} + )} - {!hasCode ? ( + {!showCodeTabs ? (
@@ -131,6 +163,8 @@ const v1DocsUrl = `https://v1.design.alberta.ca/examples/${slug}`;
)} + {/* end of code-tabs vs TOC switch */} + {relatedExamples.length > 0 && (
@@ -216,10 +250,11 @@ const v1DocsUrl = `https://v1.design.alberta.ca/examples/${slug}`; margin-bottom: var(--goa-space-2xl, 2.5rem); } + /* Use goa-text typography tokens so MDX headings match the design system's + heading scale without authors having to wrap each heading in . */ .example-content :global(h2) { - font-size: 1.25rem; - font-weight: 600; - margin: var(--goa-space-xl, 2rem) 0 var(--goa-space-m, 1rem); + font: var(--goa-typography-heading-m); + margin: var(--goa-space-2xl, 2.5rem) 0 var(--goa-space-m, 1rem); color: var(--goa-color-text-default, #333); } @@ -227,6 +262,12 @@ const v1DocsUrl = `https://v1.design.alberta.ca/examples/${slug}`; margin-top: 0; } + .example-content :global(h3) { + font: var(--goa-typography-heading-s); + margin: var(--goa-space-2xl, 2.5rem) 0 var(--goa-space-s, 0.5rem); + color: var(--goa-color-text-default, #333); + } + .example-content :global(p) { margin-bottom: var(--goa-space-m, 1rem); max-width: 65ch; diff --git a/docs/src/pages/examples/[slug]/preview.astro b/docs/src/pages/examples/[slug]/preview.astro new file mode 100644 index 0000000000..7098c794a8 --- /dev/null +++ b/docs/src/pages/examples/[slug]/preview.astro @@ -0,0 +1,87 @@ +--- +/** + * Generic preview route for flat-slug page-scale examples. + * + * Renders the page's React component full-screen wrapped in PreviewLayout. + * Astro hydration needs static imports so it can ship the right JS bundle + * to the client, hence the SLUG_TO_COMPONENT map below. Adding a new + * page-scale entry means one import + one map entry here. + * + * Workspace pages (nested slugs) use [family]/[page]/preview.astro which + * iframes an external demo. Error-page variants and question-page variants + * have their own routes. + */ +import { getCollection } from "astro:content"; +import PreviewLayout from "../../../layouts/PreviewLayout.astro"; +import { StartPage } from "../../../content/examples/start-page/react"; +import { TaskListPage } from "../../../content/examples/task-list-page/react"; +import { ReviewPage } from "../../../content/examples/review-page/react"; +import { ResultPage } from "../../../content/examples/result-page/react"; +import { BasicPageLayout } from "../../../content/examples/basic-page-layout/react"; + +export async function getStaticPaths() { + // Inline list — Astro's getStaticPaths runs in an isolated module context + // and cannot see frontmatter top-level constants like SLUG_TO_COMPONENT. + // Keep this list in sync with the SLUG_TO_COMPONENT map above when adding + // page-scale entries that need a preview route. + const slugsWithPreview = new Set([ + "start-page", + "task-list-page", + "review-page", + "result-page", + "basic-page-layout", + ]); + const examples = await getCollection("examples"); + return examples + .filter( + (e) => + !e.slug.includes("/") && + e.data.size !== "section" && + slugsWithPreview.has(e.slug), + ) + .map((entry) => ({ + params: { slug: entry.slug }, + props: { entry }, + })); +} + +const { entry } = Astro.props; +const { slug } = Astro.params; +const { data } = entry; +const fullWidth = data.previewFullWidth === true; + +const githubBlob = `https://github.com/GovAlta/ui-components/blob/dev/docs/src/content/examples/${slug}/react.tsx`; +const githubFolder = `https://github.com/GovAlta/ui-components/tree/dev/docs/src/content/examples/${slug}`; +--- + + +
+ {/* Each branch is its own statically-imported JSX element so Astro + can wire up client:load hydration. Add a new branch when adding + a page-scale entry that needs a preview route. */} + {slug === "start-page" && } + {slug === "task-list-page" && } + {slug === "review-page" && } + {slug === "result-page" && } + {slug === "basic-page-layout" && } +
+
+ + diff --git a/docs/src/pages/examples/error-pages/401/preview.astro b/docs/src/pages/examples/error-pages/401/preview.astro new file mode 100644 index 0000000000..6c2dc91688 --- /dev/null +++ b/docs/src/pages/examples/error-pages/401/preview.astro @@ -0,0 +1,76 @@ +--- +/** + * Error pages: 401 live preview + * + * Render-local preview. Composition mirrors + * content/examples/error-pages/401/web-components.html so the rendered + * preview is visually identical to the source a consumer would paste. + */ +import PreviewLayout from "../../../../layouts/PreviewLayout.astro"; +import { withBase } from "@/lib/base-url"; + +const homeUrl = withBase("/"); +--- + + + +
+ + +
+ +
+ Error 401 + +
+ + + Restricted access + + We cannot provide access to this page without valid credentials. Please sign in or + contact support at + + cs.licensingsupport@gov.ab.ca + + to request access. + + + + + Go to home page + +
+
+
+
+ + diff --git a/docs/src/pages/examples/error-pages/404/preview.astro b/docs/src/pages/examples/error-pages/404/preview.astro new file mode 100644 index 0000000000..05343bdff1 --- /dev/null +++ b/docs/src/pages/examples/error-pages/404/preview.astro @@ -0,0 +1,71 @@ +--- +/** + * Error pages: 404 live preview + * + * Render-local preview. Composition mirrors + * content/examples/error-pages/404/web-components.html so the rendered + * preview is visually identical to the source a consumer would paste. + */ +import PreviewLayout from "../../../../layouts/PreviewLayout.astro"; +import { withBase } from "@/lib/base-url"; + +const homeUrl = withBase("/"); +--- + + + +
+ + +
+ +
+ Error 404 + +
+ + + Page not found + + The page you're looking for doesn't exist or has been moved. + + + + + Go to home page + +
+
+
+
+ + diff --git a/docs/src/pages/examples/error-pages/500/preview.astro b/docs/src/pages/examples/error-pages/500/preview.astro new file mode 100644 index 0000000000..9f8eb71b6a --- /dev/null +++ b/docs/src/pages/examples/error-pages/500/preview.astro @@ -0,0 +1,72 @@ +--- +/** + * Error pages: 500 live preview + * + * Render-local preview. Composition mirrors + * content/examples/error-pages/500/web-components.html so the rendered + * preview is visually identical to the source a consumer would paste. + */ +import PreviewLayout from "../../../../layouts/PreviewLayout.astro"; +import { withBase } from "@/lib/base-url"; + +const homeUrl = withBase("/"); +--- + + + +
+ + +
+ +
+ Error 500 + +
+ + + We are experiencing a problem + + We cannot load this page right now. Please try again in a few minutes. We apologize + for the inconvenience. + + + + + Go to home page + +
+
+
+
+ + diff --git a/docs/src/pages/examples/index.astro b/docs/src/pages/examples/index.astro index 41f7dd5666..990a81abef 100644 --- a/docs/src/pages/examples/index.astro +++ b/docs/src/pages/examples/index.astro @@ -16,22 +16,43 @@ import Breadcrumbs from '../../components/Breadcrumbs.astro'; import { ExamplesGrid } from '../../components/ExamplesGrid'; -// Get all examples +// Pull both collections so the grid can surface product-type overviews +// alongside their member examples. Synthesizing the productTypes entries +// at render time avoids the stub-MDX duplication we used to have in the +// examples collection. const allExamples = await getCollection('examples'); -const visibleExamples = allExamples.filter((example) => !example.data.hidden); +const allProductTypes = await getCollection('productTypes'); + +// Transform examples to the shape ExamplesGrid expects, excluding hidden entries. +const exampleEntries = allExamples + .filter((example) => !example.data.hidden) + .map(example => ({ + slug: example.slug, + data: example.data, + body: example.data.description || example.body, + })); + +// Synthesize a size:product card per productType. The slug matches the +// /examples/[productType]/ route the [family] page handler already serves. +const productTypeEntries = allProductTypes.map(productType => ({ + slug: productType.slug, + data: { + id: productType.data.id, + title: productType.data.title, + description: productType.data.summary.replace(/<[^>]+>/g, ''), + size: 'product' as const, + components: productType.data.components ?? [], + tags: productType.data.tags ?? [], + status: productType.data.status, + previewImage: productType.data.heroImage, + }, + body: productType.data.summary, +})); -// Sort by title (default) -const sortedExamples = visibleExamples.sort((a, b) => +const examples = [...exampleEntries, ...productTypeEntries].sort((a, b) => a.data.title.localeCompare(b.data.title) ); -// Transform to the shape ExamplesGrid expects -const examples = sortedExamples.map(example => ({ - slug: example.slug, - data: example.data, - body: example.data.description || example.body, -})); - --- ({ For citizens submitting applications and requests
-
-
-
- Digital service - How workspace and public form connect end-to-end - -
-
diff --git a/docs/src/pages/examples/question-page/variants/background-radio/preview.astro b/docs/src/pages/examples/question-page/variants/background-radio/preview.astro new file mode 100644 index 0000000000..c93a5abb56 --- /dev/null +++ b/docs/src/pages/examples/question-page/variants/background-radio/preview.astro @@ -0,0 +1,24 @@ +--- +import PreviewLayout from "../../../../../layouts/PreviewLayout.astro"; +import { GiveBackgroundInformationBeforeAskingAQuestion } from "../../../../../content/examples/question-page/variants/background-radio/react"; +--- + + +
+ +
+
+ + diff --git a/docs/src/pages/examples/question-page/variants/grouped/preview.astro b/docs/src/pages/examples/question-page/variants/grouped/preview.astro new file mode 100644 index 0000000000..79eb3f4bbd --- /dev/null +++ b/docs/src/pages/examples/question-page/variants/grouped/preview.astro @@ -0,0 +1,24 @@ +--- +import PreviewLayout from "../../../../../layouts/PreviewLayout.astro"; +import { GroupRelatedQuestionsTogetherOnAQuestionPage } from "../../../../../content/examples/question-page/variants/grouped/react"; +--- + + +
+ +
+
+ + diff --git a/docs/src/pages/examples/question-page/variants/help-details/preview.astro b/docs/src/pages/examples/question-page/variants/help-details/preview.astro new file mode 100644 index 0000000000..18ffa1be51 --- /dev/null +++ b/docs/src/pages/examples/question-page/variants/help-details/preview.astro @@ -0,0 +1,24 @@ +--- +import PreviewLayout from "../../../../../layouts/PreviewLayout.astro"; +import { ShowMoreInformationToHelpAnswerAQuestion } from "../../../../../content/examples/question-page/variants/help-details/react"; +--- + + +
+ +
+
+ + diff --git a/docs/src/pages/examples/question-page/variants/one-question/preview.astro b/docs/src/pages/examples/question-page/variants/one-question/preview.astro new file mode 100644 index 0000000000..218f2534c3 --- /dev/null +++ b/docs/src/pages/examples/question-page/variants/one-question/preview.astro @@ -0,0 +1,24 @@ +--- +import PreviewLayout from "../../../../../layouts/PreviewLayout.astro"; +import { QuestionPage } from "../../../../../content/examples/question-page/variants/one-question/react"; +--- + + +
+ +
+
+ + diff --git a/docs/src/pages/examples/question-page/variants/progress-indicator/preview.astro b/docs/src/pages/examples/question-page/variants/progress-indicator/preview.astro new file mode 100644 index 0000000000..6761fdbc0f --- /dev/null +++ b/docs/src/pages/examples/question-page/variants/progress-indicator/preview.astro @@ -0,0 +1,24 @@ +--- +import PreviewLayout from "../../../../../layouts/PreviewLayout.astro"; +import { ShowASimpleProgressIndicatorOnAQuestionPage } from "../../../../../content/examples/question-page/variants/progress-indicator/react"; +--- + + +
+ +
+
+ + diff --git a/docs/src/pages/examples/question-page/variants/section-title/preview.astro b/docs/src/pages/examples/question-page/variants/section-title/preview.astro new file mode 100644 index 0000000000..50e13f7d3e --- /dev/null +++ b/docs/src/pages/examples/question-page/variants/section-title/preview.astro @@ -0,0 +1,24 @@ +--- +import PreviewLayout from "../../../../../layouts/PreviewLayout.astro"; +import { ShowASectionTitleOnAQuestionPage } from "../../../../../content/examples/question-page/variants/section-title/react"; +--- + + +
+ +
+
+ + diff --git a/docs/src/scripts/aliases-to-redirects.mjs b/docs/src/scripts/aliases-to-redirects.mjs new file mode 100644 index 0000000000..b8cb3254f2 --- /dev/null +++ b/docs/src/scripts/aliases-to-redirects.mjs @@ -0,0 +1,114 @@ +/** + * Build a redirects map from `aliases` frontmatter on entries in the + * examples and productTypes content collections. + * + * Each alias on an entry becomes a redirect from `/examples/${alias}` to + * the entry's canonical URL. Both collections route under `/examples/`, + * so product-type aliases (none today, but supported) also redirect there + * via the [family] route. + * + * Imported from astro.config.mjs at config-load time. Sync fs reads keep + * the function callable before the content collection pipeline runs. + */ + +import { readdirSync, readFileSync, statSync } from "node:fs"; +import { join, dirname, relative } from "node:path"; +import { fileURLToPath } from "node:url"; + +const __dirname = dirname(fileURLToPath(import.meta.url)); +const DOCS_ROOT = join(__dirname, "../.."); + +const COLLECTION_ROOTS = [ + join(DOCS_ROOT, "src/content/examples"), + join(DOCS_ROOT, "src/content/productTypes"), +]; + +/** + * Minimal YAML frontmatter parser. Mirrors the parser in + * build-search-index.ts. Only handles the subset our content uses: + * scalar values and list-of-strings for `aliases`. + */ +function parseFrontmatter(content) { + const match = content.match(/^---\r?\n([\s\S]*?)\r?\n---/); + if (!match) return {}; + + const result = {}; + let currentKey = null; + let currentArray = null; + + for (const line of match[1].split("\n")) { + const arrayItem = line.match(/^\s+-\s+(.*)/); + if (arrayItem && currentArray) { + currentArray.push(arrayItem[1].trim()); + continue; + } + + const kv = line.match(/^(\w+):\s*(.*)/); + if (!kv) continue; + + if (currentKey && currentArray) { + result[currentKey] = currentArray; + } + currentKey = kv[1]; + const value = kv[2].trim(); + if (value === "" || value === "|") { + currentArray = []; + } else { + currentArray = null; + result[currentKey] = value.replace(/^["']|["']$/g, ""); + } + } + + if (currentKey && currentArray) { + result[currentKey] = currentArray; + } + return result; +} + +/** + * Recursively find every `index.mdx` under a collection root, including + * nested entries like `examples/workspace/dashboard/index.mdx`. + */ +function findIndexMdx(dir) { + const out = []; + for (const entry of readdirSync(dir)) { + const path = join(dir, entry); + if (!statSync(path).isDirectory()) continue; + const indexPath = join(path, "index.mdx"); + try { + if (statSync(indexPath).isFile()) out.push(indexPath); + } catch { + // No index.mdx in this directory; keep recursing. + } + out.push(...findIndexMdx(path)); + } + return out; +} + +export function buildAliasRedirects() { + const redirects = {}; + + for (const root of COLLECTION_ROOTS) { + try { + statSync(root); + } catch { + continue; + } + + for (const file of findIndexMdx(root)) { + const fm = parseFrontmatter(readFileSync(file, "utf-8")); + if (!Array.isArray(fm.aliases) || fm.aliases.length === 0) continue; + + const slug = relative(root, dirname(file)); + const target = `/examples/${slug}`; + + for (const alias of fm.aliases) { + const from = `/examples/${alias}`; + if (from === target) continue; + redirects[from] = target; + } + } + } + + return redirects; +} diff --git a/docs/src/scripts/build-search-index.ts b/docs/src/scripts/build-search-index.ts index 867baaaef7..e6c4137fa8 100644 --- a/docs/src/scripts/build-search-index.ts +++ b/docs/src/scripts/build-search-index.ts @@ -8,7 +8,7 @@ */ import { readFileSync, writeFileSync, readdirSync, statSync, existsSync, mkdirSync } from 'node:fs'; -import { join, basename, dirname } from 'node:path'; +import { join, basename, dirname, relative, sep } from 'node:path'; import { fileURLToPath } from 'node:url'; // Get directory paths relative to this script @@ -21,6 +21,7 @@ const ROOT = join(__dirname, '../..'); const COMPONENTS_DIR = join(ROOT, 'src/content/components'); const EXAMPLES_DIR = join(ROOT, 'src/content/examples'); const GET_STARTED_DIR = join(ROOT, 'src/content/get-started'); +const PRODUCT_TYPES_DIR = join(ROOT, 'src/content/productTypes'); const OUTPUT_FILE = join(ROOT, 'public/search-index.json'); // ============================================================================ @@ -44,11 +45,11 @@ interface ExampleEntry { title: string; description?: string; status: string; - categories: string[]; + size: string; // "interaction" | "section" | "page" | "task" | "product" + productType?: string; // "workspace" | "public-form" tags: string[]; - components: string[]; // What components this example uses - scale: string; - userType: string; + components: string[]; // What components this example uses + aliases: string[]; // Secondary slugs that surface this entry in search slug: string; } @@ -221,6 +222,12 @@ function processComponent(filePath: string): ComponentEntry | null { /** * Process an example MDX file into a search entry. * Examples live in subdirectories: examples/[name]/index.mdx + * or nested: examples/[family]/[page]/index.mdx + * + * The slug is derived from the path relative to EXAMPLES_DIR so that nested + * entries (workspace/dashboard, etc.) get path-shaped slugs matching Astro's + * content-collection routing. Frontmatter `id` is kept for stable cross- + * references but no longer drives the URL. */ function processExample(filePath: string): ExampleEntry | null { try { @@ -232,9 +239,10 @@ function processExample(filePath: string): ExampleEntry | null { return null; } - // Get ID from directory name - const dirName = basename(dirname(filePath)); - const id = String(frontmatter.id || dirName); + // Slug = path within EXAMPLES_DIR (e.g., "workspace/dashboard", "start-page"). + // Use forward slashes on every OS so URLs are consistent. + const slug = relative(EXAMPLES_DIR, dirname(filePath)).split(sep).join('/'); + const id = String(frontmatter.id || basename(dirname(filePath))); // Extract description from body if not in frontmatter const description = frontmatter.description @@ -247,16 +255,18 @@ function processExample(filePath: string): ExampleEntry | null { title: String(frontmatter.title || id), description: normalizeDescription(description), status: String(frontmatter.status || 'published'), - categories: Array.isArray(frontmatter.categories) - ? frontmatter.categories.map(String) - : [], + size: String(frontmatter.size || 'section'), + productType: frontmatter.productType + ? String(frontmatter.productType) + : undefined, tags: Array.isArray(frontmatter.tags) ? frontmatter.tags.map(String) : [], components: Array.isArray(frontmatter.components) ? frontmatter.components.map(String) : [], - scale: String(frontmatter.scale || 'interaction'), - userType: String(frontmatter.userType || 'both'), - slug: String(frontmatter.slug || id), + aliases: Array.isArray(frontmatter.aliases) + ? frontmatter.aliases.map(String) + : [], + slug, }; } catch (error) { console.error(`Error processing example ${filePath}:`, error); @@ -317,6 +327,57 @@ function processGetStartedPage(filePath: string): PageEntry | null { } } +/** + * Process a productType MDX file into a search entry. + * + * ProductTypes are the "starting points" for each kind of digital service + * (workspace, public-form). Their overview pages live at /examples/[slug]/ + * via the [family]/index.astro route, so we synthesize them into the same + * search shape as page-scale examples with size="product". This replaces + * the hand-authored stub entries that previously lived in examples/. + */ +function processProductType(filePath: string): ExampleEntry | null { + try { + const content = readFileSync(filePath, 'utf-8'); + const { frontmatter, body } = parseFrontmatter(content); + + const slug = relative(PRODUCT_TYPES_DIR, dirname(filePath)) + .split(sep) + .join('/'); + const id = String(frontmatter.id || slug); + + // Summary may contain inline HTML formatting (br, span) for the overview + // page. Take the prose before the first tag — enough for search results, + // which truncate to ~80 chars anyway, and safer than regex-stripping. + const description = frontmatter.summary + ? String(frontmatter.summary).split('<')[0].trim() + : frontmatter.description + ? String(frontmatter.description) + : extractFirstParagraph(body); + + return { + type: 'example', + id, + title: String(frontmatter.title || id), + description, + status: String(frontmatter.status || 'published'), + size: 'product', + productType: undefined, + tags: Array.isArray(frontmatter.tags) ? frontmatter.tags.map(String) : [], + components: Array.isArray(frontmatter.components) + ? frontmatter.components.map(String) + : [], + aliases: Array.isArray(frontmatter.aliases) + ? frontmatter.aliases.map(String) + : [], + slug, + }; + } catch (error) { + console.error(`Error processing productType ${filePath}:`, error); + return null; + } +} + /** * Recursively find all MDX files in a directory. */ @@ -386,6 +447,20 @@ function main() { } console.log(` Found ${getStartedFiles.length} files, indexed ${entries.length - getStartedCount} pages`); + // Process productTypes (workspace, public-form, etc.) — surfaced as + // size:product overview entries so the same Cmd-K query that finds a + // page-scale entry also finds the introductory page for its product type. + console.log('Processing productTypes...'); + const productTypeFiles = findMdxFiles(PRODUCT_TYPES_DIR); + const productTypeCountBefore = entries.length; + for (const file of productTypeFiles) { + const entry = processProductType(file); + if (entry) { + entries.push(entry); + } + } + console.log(` Found ${productTypeFiles.length} files, indexed ${entries.length - productTypeCountBefore} productTypes`); + // Ensure public directory exists const publicDir = dirname(OUTPUT_FILE); if (!existsSync(publicDir)) { From a9fc543d982c2d3cd1f7b619d96b69ba352cbf4e Mon Sep 17 00:00:00 2001 From: Mark E <51723535+Spark450@users.noreply.github.com> Date: Thu, 14 May 2026 15:04:42 -0700 Subject: [PATCH 14/16] docs(#3875): add Updating your product developer docs page MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore(#3875): add Updating your product developer docs page Fixes #3875 Co-Authored-By: Claude Sonnet 4.6 * chore(#3875): replace goa-text body with p tags, use heading-m for h2s Co-Authored-By: Claude Sonnet 4.6 * chore(#3875): group steps under Migration steps heading, use h3 for step headings Co-Authored-By: Claude Sonnet 4.6 * chore(#3875): fix writing guide violations — passive voice, directional refs, filler phrases Co-Authored-By: Claude Sonnet 4.6 * chore(#3875): migrate to content collection and refine content * chore(#3920): add trailingicon="open" to external migration walkthrough link Co-Authored-By: Claude Sonnet 4.6 * chore(#3875): Updated search index --------- Co-authored-by: Claude Sonnet 4.6 Co-authored-by: Thomas Jeffery --- docs/public/search-index.json | 13 ++ .../get-started/developers/browsers.mdx | 2 +- .../content/get-started/developers/bug.mdx | 2 +- .../get-started/developers/technologies.mdx | 2 +- .../developers/updating-your-product.mdx | 162 ++++++++++++++++++ 5 files changed, 178 insertions(+), 3 deletions(-) create mode 100644 docs/src/content/get-started/developers/updating-your-product.mdx diff --git a/docs/public/search-index.json b/docs/public/search-index.json index 3a871c4eb4..f3630aa7dc 100644 --- a/docs/public/search-index.json +++ b/docs/public/search-index.json @@ -2447,6 +2447,19 @@ ], "slug": "get-started/developers/technologies" }, + { + "type": "page", + "id": "developers/updating-your-product", + "title": "Updating your product", + "description": "The rationale and practical steps for updating your GoA product to Design System 2.0 using the developer-first approach.", + "status": "published", + "category": "get started", + "tags": [ + "developers", + "developer" + ], + "slug": "get-started/developers/updating-your-product" + }, { "type": "page", "id": "developers", diff --git a/docs/src/content/get-started/developers/browsers.mdx b/docs/src/content/get-started/developers/browsers.mdx index 6dc111dc47..cd7685e634 100644 --- a/docs/src/content/get-started/developers/browsers.mdx +++ b/docs/src/content/get-started/developers/browsers.mdx @@ -3,7 +3,7 @@ id: developers/browsers title: Supported browsers description: Browser and operating system support for Design System components section: developers -order: 5 +order: 6 status: published --- import { withBase } from "@/lib/base-url"; diff --git a/docs/src/content/get-started/developers/bug.mdx b/docs/src/content/get-started/developers/bug.mdx index 2d3880d825..09b0c736ba 100644 --- a/docs/src/content/get-started/developers/bug.mdx +++ b/docs/src/content/get-started/developers/bug.mdx @@ -3,7 +3,7 @@ id: developers/bug title: Verify a bug description: How to verify and report a bug in a Design System component section: developers -order: 3 +order: 4 status: published --- import DropInCallout from "../../../components/DropInCallout.astro"; diff --git a/docs/src/content/get-started/developers/technologies.mdx b/docs/src/content/get-started/developers/technologies.mdx index 2a1d77cd5b..52dbcdbb97 100644 --- a/docs/src/content/get-started/developers/technologies.mdx +++ b/docs/src/content/get-started/developers/technologies.mdx @@ -3,7 +3,7 @@ id: developers/technologies title: Technologies description: An overview of the technologies used in the Design System section: developers -order: 4 +order: 5 status: published --- import { withBase } from "@/lib/base-url"; diff --git a/docs/src/content/get-started/developers/updating-your-product.mdx b/docs/src/content/get-started/developers/updating-your-product.mdx new file mode 100644 index 0000000000..9ccaf0809a --- /dev/null +++ b/docs/src/content/get-started/developers/updating-your-product.mdx @@ -0,0 +1,162 @@ +--- +id: developers/updating-your-product +title: Updating your product +description: The rationale and practical steps for updating your GoA product to Design System 2.0 using the developer-first approach. +section: developers +order: 3 +status: published +--- +import { withBase } from "@/lib/base-url"; +import DropInCallout from "../../../components/DropInCallout.astro"; + +Updating your product +The updated design system includes a new design language, updated design tokens and components, and new templates. For your product, updating means: +
    +
  • Your service stays aligned with the current GoA standard as more services update and users move between them
  • +
  • You get access to new component properties, examples, and templates that reduce build time for common service types
  • +
  • Your product remains supported — the legacy design system stops receiving fixes after September 2026
  • +
+

+ Most of the update applies automatically. Most of the work will be reviewing what changed in + your product and deciding where design follow-up is needed. These steps help you work through + the process. +

+ +Use the developer-first approach +

+ The developer-first approach lets you see what actually changed in your product before + committing to design work. +

+

+ When you run the update first, spacing, typography, and token changes apply automatically. You + can then review the result with your team and focus design and development effort on the screens + that need it most. This avoids redesigning screens based on assumptions about what will change + before you update. +

+ +Migration walkthrough +

+ The migration walkthrough steps through four stages — legacy design system, upgrade applied, + layout and styling fixes, and custom component updates — and shows the visual impact on your + interface at each stage. The walkthrough covers both public form and workspace product types. + Review it with your team before you start: it helps designers and developers see where changes + occur, and gives product owners a clearer picture of the scope for planning. +

+ + Explore the migration walkthrough + + +Why we recommend updating all at once +

+ Applying the update to some parts of your product but not others tends to cause the update to + stall. Teams focus on a few components then deprioritize the rest, leaving the product in a + mixed state that becomes harder to resolve over time. Reviewing your updated application + together in step 3 is designed to address this. Reviewing the full update in a branch before + committing gives your team a clear picture of the actual work involved. Use that branch to plan + your migration window — you are not committing to proceeding until you are ready. +

+ +Migration steps + +Step 1: Create a branch +

+ Create a dedicated branch for the update. Keeping it separate from your regular development + work lets your team review the changes before merging. +

+
git checkout -b ds-migration
+

Use a branch name that works for your team — this is just an example.

+ +Step 2: Run the version update +

+ Follow the steps in Setup to install the + updated packages. Run your application after installing the updates. Do this before making any + other changes. +

+ +Step 3: Review the updated application as a team +

+ Walk through your application with your product team. At this stage, the team will identify + what needs attention and decide what to prioritize. +

+

What to look for:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
AreaWhat to look for
Spacing and layoutScreens that feel too tight or unbalanced
TypographyHeadings or body text that look off in size or weight
Dense or data-heavy screensThese carry the most risk during an update and often need the most follow-up
Custom componentsAnything built outside the design system that needs manual alignment
+
+ +

+ Record what you find. A list of screens and issues is enough at this stage. Your designers and + product owner can use that output to plan and prioritize work. +

+ +Understanding the effort +

+ There is no single estimate for how long a migration takes. It varies depending on your + product. The main factors are: +

+ + + + + + + + + + + + + + + + + + + + + + + +
FactorImpact on migration effort
App sizeMore screens means more to test and review after the update
Design system utilizationProducts with more custom code need more manual alignment
Developer familiarityDevelopers with more design system experience move faster through the migration steps
+
+ +

+ Use the team review of your updated application in step 3 to build a realistic estimate for + your own product before committing to a timeline. +

+ +Getting help +
    +
  • Bring what you find when reviewing your updated application to drop-in hours to get feedback on what to prioritize
  • +
  • If you find a problem with the design system itself, reach out on the support channel rather than working around it
  • +
+ + From 4e1c5dd0febaf9aacda9bfece8cd4c033e596aa7 Mon Sep 17 00:00:00 2001 From: Benji Franck Date: Mon, 11 May 2026 16:06:51 -0600 Subject: [PATCH 15/16] feat(#3814): Add trailingSlot to Work Side Menu Item --- .../features/feat3814/feat3814.component.css | 19 +++++ .../features/feat3814/feat3814.component.html | 47 ++++++++++++ .../features/feat3814/feat3814.component.ts | 17 +++++ .../features/feat3814/feat3814.route.json | 6 ++ .../src/app/routes/features/feat3814.route.ts | 10 +++ .../react/src/routes/features/feat3814.tsx | 75 +++++++++++++++++++ .../component-apis/work-side-menu-item.json | 64 +++++----------- docs/src/scripts/extract-api.ts | 2 + .../work-side-menu-item.spec.ts | 42 +++++++++++ .../work-side-menu-item.ts | 11 ++- libs/common/src/lib/common.ts | 1 + .../specs/work-side-menu.browser.spec.tsx | 7 +- .../work-side-menu-item.spec.tsx | 15 ++++ .../work-side-menu-item.tsx | 7 +- .../work-side-menu/WorkSideMenuItem.spec.ts | 12 +++ .../work-side-menu/WorkSideMenuItem.svelte | 24 ++++-- 16 files changed, 301 insertions(+), 58 deletions(-) create mode 100644 apps/prs/angular/src/routes/features/feat3814/feat3814.component.css create mode 100644 apps/prs/angular/src/routes/features/feat3814/feat3814.component.html create mode 100644 apps/prs/angular/src/routes/features/feat3814/feat3814.component.ts create mode 100644 apps/prs/angular/src/routes/features/feat3814/feat3814.route.json create mode 100644 apps/prs/react/src/app/routes/features/feat3814.route.ts create mode 100644 apps/prs/react/src/routes/features/feat3814.tsx diff --git a/apps/prs/angular/src/routes/features/feat3814/feat3814.component.css b/apps/prs/angular/src/routes/features/feat3814/feat3814.component.css new file mode 100644 index 0000000000..b57a6b5cf6 --- /dev/null +++ b/apps/prs/angular/src/routes/features/feat3814/feat3814.component.css @@ -0,0 +1,19 @@ +:host { + display: block; +} + +.search-menu-badge { + color: var(--goa-color-greyscale-600); + height: 1.25rem; + min-width: 1.25rem; + line-height: 1; + text-align: center; + font-size: var(--goa-font-size-2); + background-color: var(--goa-color-greyscale-100); + border: 1px solid var(--goa-color-greyscale-200); + border-radius: var(--goa-border-radius-s); + padding: var(--goa-space-3xs) var(--goa-space-xs); + display: inline-block; + vertical-align: top; + margin-top: var(--goa-space-3xs); +} diff --git a/apps/prs/angular/src/routes/features/feat3814/feat3814.component.html b/apps/prs/angular/src/routes/features/feat3814/feat3814.component.html new file mode 100644 index 0000000000..6506ccaaf3 --- /dev/null +++ b/apps/prs/angular/src/routes/features/feat3814/feat3814.component.html @@ -0,0 +1,47 @@ +
+ Feature 3814: Work Side Menu trailingContent slot + + + This page demonstrates the new trailingContent slot on Work Side Menu Item. + The first item shows a keyboard shortcut hint and the second item shows a badge. + + + +
+ +
+
+
+ + + + + + + + + Ctrl K + + + + + diff --git a/apps/prs/angular/src/routes/features/feat3814/feat3814.component.ts b/apps/prs/angular/src/routes/features/feat3814/feat3814.component.ts new file mode 100644 index 0000000000..c18880f93a --- /dev/null +++ b/apps/prs/angular/src/routes/features/feat3814/feat3814.component.ts @@ -0,0 +1,17 @@ +import { Component } from "@angular/core"; +import { + GoabBadge, + GoabContainer, + GoabText, + GoabWorkSideMenu, + GoabWorkSideMenuItem, +} from "@abgov/angular-components"; + +@Component({ + standalone: true, + selector: "abgov-feat3814", + templateUrl: "./feat3814.component.html", + styleUrls: ["./feat3814.component.css"], + imports: [GoabBadge, GoabContainer, GoabText, GoabWorkSideMenu, GoabWorkSideMenuItem], +}) +export class Feat3814Component {} diff --git a/apps/prs/angular/src/routes/features/feat3814/feat3814.route.json b/apps/prs/angular/src/routes/features/feat3814/feat3814.route.json new file mode 100644 index 0000000000..5395c36c0c --- /dev/null +++ b/apps/prs/angular/src/routes/features/feat3814/feat3814.route.json @@ -0,0 +1,6 @@ +{ + "title": "Work Side Menu Trailing Slot", + "path": "features/3814", + "id": "3814", + "type": "feature" +} diff --git a/apps/prs/react/src/app/routes/features/feat3814.route.ts b/apps/prs/react/src/app/routes/features/feat3814.route.ts new file mode 100644 index 0000000000..57753d145b --- /dev/null +++ b/apps/prs/react/src/app/routes/features/feat3814.route.ts @@ -0,0 +1,10 @@ +import { Feat3814Route } from "../../../routes/features/feat3814"; +import type { PrRouteDefinition } from "../../route-manifest"; + +export default { + type: "feature", + id: "3814", + path: "features/3814", + title: "Work Side Menu Trailing Slot", + component: Feat3814Route, +} satisfies PrRouteDefinition; diff --git a/apps/prs/react/src/routes/features/feat3814.tsx b/apps/prs/react/src/routes/features/feat3814.tsx new file mode 100644 index 0000000000..b4d3b6f896 --- /dev/null +++ b/apps/prs/react/src/routes/features/feat3814.tsx @@ -0,0 +1,75 @@ +import { + GoabBadge, + GoabContainer, + GoabText, + GoabWorkSideMenu, + GoabWorkSideMenuItem, +} from "@abgov/react-components"; + +export function Feat3814Route() { + return ( +
+ + Feature 3814: Work Side Menu trailingContent slot + + + + This page demonstrates the new trailingContent slot on Work Side Menu Item. The + first item shows a keyboard shortcut hint and the second item shows a badge. + + + +
+ + + Ctrl K + + } + /> + } + /> + + + } + /> +
+
+
+ ); +} + +export default Feat3814Route; diff --git a/docs/generated/component-apis/work-side-menu-item.json b/docs/generated/component-apis/work-side-menu-item.json index ac560f6b93..c133921506 100644 --- a/docs/generated/component-apis/work-side-menu-item.json +++ b/docs/generated/component-apis/work-side-menu-item.json @@ -4,13 +4,6 @@ "frameworks": { "react": { "props": [ - { - "name": "badge", - "type": "string", - "required": false, - "default": null, - "description": "Badge text displayed alongside the menu item (e.g., notification count)." - }, { "name": "current", "type": "boolean", @@ -46,13 +39,6 @@ "default": null, "description": "Sets a data-testid attribute for automated testing." }, - { - "name": "type", - "type": "GoabWorkSideMenuItemType", - "required": false, - "default": "normal", - "description": "Sets the visual style of the badge. Use \"emergency\" for urgent items, \"success\" for positive status." - }, { "name": "url", "type": "string", @@ -68,18 +54,17 @@ "type": "ReactNode", "description": "Content rendered inside the popover panel attached to this menu item.", "required": false + }, + { + "name": "trailingContent", + "type": "ReactNode", + "description": "Content rendered after the label in the trailing area of the menu item.", + "required": false } ] }, "angular": { "props": [ - { - "name": "badge", - "type": "string", - "required": false, - "default": null, - "description": "Badge text displayed alongside the menu item (e.g., notification count)." - }, { "name": "current", "type": "boolean", @@ -115,13 +100,6 @@ "default": null, "description": "Sets a data-testid attribute for automated testing." }, - { - "name": "type", - "type": "GoabWorkSideMenuItemType", - "required": false, - "default": "normal", - "description": "Sets the visual style of the badge. Use \"emergency\" for urgent items, \"success\" for positive status." - }, { "name": "url", "type": "string", @@ -137,18 +115,17 @@ "type": "TemplateRef", "description": "Content rendered inside the popover panel attached to this menu item.", "required": false + }, + { + "name": "trailingContent", + "type": "TemplateRef", + "description": "Content rendered after the label in the trailing area of the menu item.", + "required": false } ] }, "webComponents": { "props": [ - { - "name": "badge", - "type": "string", - "required": false, - "default": "", - "description": "Badge text displayed alongside the menu item (e.g., notification count)." - }, { "name": "current", "type": "boolean", @@ -185,18 +162,6 @@ "default": "", "description": "Sets a data-testid attribute for automated testing." }, - { - "name": "type", - "type": "\"normal\" | \"emergency\" | \"success\"", - "values": [ - "normal", - "emergency", - "success" - ], - "required": false, - "default": "normal", - "description": "Sets the visual style of the badge. Use \"emergency\" for urgent items, \"success\" for positive status." - }, { "name": "url", "type": "string", @@ -211,6 +176,11 @@ "name": "popoverContent", "description": "Content rendered inside the popover panel attached to this menu item.", "required": false + }, + { + "name": "trailingContent", + "description": "Content rendered after the label in the trailing area of the menu item.", + "required": false } ] } diff --git a/docs/src/scripts/extract-api.ts b/docs/src/scripts/extract-api.ts index b70865edf3..6eb01bdedc 100644 --- a/docs/src/scripts/extract-api.ts +++ b/docs/src/scripts/extract-api.ts @@ -2186,8 +2186,10 @@ function mergeItemArray( }); // Preserve items from existing that are absent in the new extraction + // (but skip deprecated entries — they are intentionally excluded) for (const existingItem of existing) { if (!nextNames.has(existingItem.name)) { + if ((existingItem as Record).deprecated) continue; console.warn( ` Preserved manually-added entry "${existingItem.name}" in ${context} (not found in extraction — check source)`, ); diff --git a/libs/angular-components/src/lib/components/work-side-menu-item/work-side-menu-item.spec.ts b/libs/angular-components/src/lib/components/work-side-menu-item/work-side-menu-item.spec.ts index 5fb94132d6..e25a3fdd47 100644 --- a/libs/angular-components/src/lib/components/work-side-menu-item/work-side-menu-item.spec.ts +++ b/libs/angular-components/src/lib/components/work-side-menu-item/work-side-menu-item.spec.ts @@ -51,6 +51,26 @@ class TestWorkSideMenuItemWithPopoverComponent { url = "/popover"; } +@Component({ + standalone: true, + imports: [GoabWorkSideMenuItem], + template: ` + + + +
2
+
+ `, +}) +class TestWorkSideMenuItemWithTrailingContentComponent { + label = "Trailing item"; + url = "/trailing"; +} + describe("GoabWorkSideMenuItem", () => { it("should render and set the props correctly", fakeAsync(() => { TestBed.configureTestingModule({ @@ -96,4 +116,26 @@ describe("GoabWorkSideMenuItem", () => { expect(popoverContent).toBeTruthy(); expect(popoverContent.nativeElement.textContent).toBe("Popover content here"); })); + + it("should render trailing content into the trailingContent slot", fakeAsync(() => { + TestBed.configureTestingModule({ + imports: [TestWorkSideMenuItemWithTrailingContentComponent], + }).compileComponents(); + + const fixture = TestBed.createComponent(TestWorkSideMenuItemWithTrailingContentComponent); + fixture.detectChanges(); + tick(); + fixture.detectChanges(); + + const slotDiv = fixture.debugElement.query( + By.css('[slot="trailingContent"]'), + ); + expect(slotDiv).toBeTruthy(); + + const trailingContent = fixture.debugElement.query( + By.css(".trailing-test-content"), + ); + expect(trailingContent).toBeTruthy(); + expect(trailingContent.nativeElement.textContent).toBe("2"); + })); }); diff --git a/libs/angular-components/src/lib/components/work-side-menu-item/work-side-menu-item.ts b/libs/angular-components/src/lib/components/work-side-menu-item/work-side-menu-item.ts index 527530fe87..493ddcd709 100644 --- a/libs/angular-components/src/lib/components/work-side-menu-item/work-side-menu-item.ts +++ b/libs/angular-components/src/lib/components/work-side-menu-item/work-side-menu-item.ts @@ -31,6 +31,11 @@ import { NgTemplateOutlet } from "@angular/common"; } + @if (trailingContent) { +
+ +
+ } } @@ -45,7 +50,7 @@ export class GoabWorkSideMenuItem implements OnInit { @Input({ required: true }) label!: string; /** The URL the menu item links to. Optional — when absent, renders as a button instead of a link. */ @Input() url?: string; - /** Badge text displayed alongside the menu item (e.g., notification count). */ + /** @deprecated Use trailingContent instead. Badge text displayed alongside the menu item (e.g., notification count). */ @Input() badge?: string; /** When true, indicates this is the currently active menu item. */ @Input() current?: boolean; @@ -55,10 +60,12 @@ export class GoabWorkSideMenuItem implements OnInit { @Input() icon?: string; /** Sets a data-testid attribute for automated testing. */ @Input() testId?: string; - /** Sets the visual style of the badge. Use "emergency" for urgent items, "success" for positive status. @default "normal" */ + /** @deprecated Use trailingContent instead. Sets the visual style of the badge. Use "emergency" for urgent items, "success" for positive status. @default "normal" */ @Input() type?: GoabWorkSideMenuItemType = "normal"; /** Template reference for the popover content slot. */ @Input() popoverContent!: TemplateRef; + /** Template reference for the trailing content slot. */ + @Input() trailingContent!: TemplateRef; isReady = false; diff --git a/libs/common/src/lib/common.ts b/libs/common/src/lib/common.ts index d7bf2c3d12..23910afd67 100644 --- a/libs/common/src/lib/common.ts +++ b/libs/common/src/lib/common.ts @@ -1338,6 +1338,7 @@ export type GoabDrawerSizeUnit = "px" | "rem" | "ch" | "vh" | "vw" | "%"; export type GoabDrawerSize = `${number}${GoabDrawerSizeUnit}` | undefined; // Work side menu +/** @deprecated Use trailingContent with explicit badge components for indicator styling. */ export type GoabWorkSideMenuItemType = "normal" | "emergency" | "success"; // Work side notification diff --git a/libs/react-components/specs/work-side-menu.browser.spec.tsx b/libs/react-components/specs/work-side-menu.browser.spec.tsx index 5870928da1..31a605f5c9 100644 --- a/libs/react-components/specs/work-side-menu.browser.spec.tsx +++ b/libs/react-components/specs/work-side-menu.browser.spec.tsx @@ -1,6 +1,6 @@ import { render } from "vitest-browser-react"; import { useState } from "react"; -import { GoabButton } from "../src"; +import { GoabBadge, GoabButton } from "../src"; import { GoabWorkSideMenu, GoabWorkSideMenuItem, GoabWorkSideMenuGroup } from "../src"; import { expect, describe, it, vi } from "vitest"; import { page } from "@vitest/browser/context"; @@ -22,6 +22,7 @@ describe("WorkSideMenu", () => { url="#item1" label="Item 1" testId="primary-menu-item" + trailingContent={
Trailing
} /> } secondaryContent={ @@ -51,12 +52,16 @@ describe("WorkSideMenu", () => { const primarySlot = result.baseElement.querySelector("[slot='primary']"); const primaryMenuItem = result.getByTestId("primary-menu-item"); const primaryLink = primaryMenuItem.element().querySelector("a"); + const primaryTrailing = result.getByTestId("trailing-content"); expect(primarySlot).toBeTruthy(); expect(primaryLink?.getAttribute("href")).toBe("#item1"); expect(primaryLink?.textContent).toContain("Item 1"); expect(primaryLink?.role).toBe("menuitem"); + expect(primaryTrailing).toBeTruthy(); + expect(primaryTrailing.element().textContent).toBe("Trailing"); + const secondarySlot = result.baseElement.querySelector("[slot='secondary']"); const secondaryMenuItem = result.getByTestId("secondary-menu-item"); const secondaryLink = secondaryMenuItem.element().querySelector("a"); diff --git a/libs/react-components/src/lib/work-side-menu-item/work-side-menu-item.spec.tsx b/libs/react-components/src/lib/work-side-menu-item/work-side-menu-item.spec.tsx index f5c9190c46..6b9c65c87b 100644 --- a/libs/react-components/src/lib/work-side-menu-item/work-side-menu-item.spec.tsx +++ b/libs/react-components/src/lib/work-side-menu-item/work-side-menu-item.spec.tsx @@ -57,4 +57,19 @@ describe("WorkSideMenuItem", () => { const slotDiv = menuItem?.querySelector('[slot="popoverContent"]'); expect(slotDiv).toBeNull(); }); + + it("should render trailingContent slot", () => { + const { baseElement } = render( + 2} + />, + ); + const menuItem = baseElement.querySelector("goa-work-side-menu-item"); + expect(menuItem).toBeTruthy(); + + const trailingSlot = menuItem?.querySelector('[slot="trailingContent"]'); + expect(trailingSlot).toBeTruthy(); + expect(trailingSlot?.textContent).toBe("2"); + }); }); diff --git a/libs/react-components/src/lib/work-side-menu-item/work-side-menu-item.tsx b/libs/react-components/src/lib/work-side-menu-item/work-side-menu-item.tsx index 07f99cd976..0df8988390 100644 --- a/libs/react-components/src/lib/work-side-menu-item/work-side-menu-item.tsx +++ b/libs/react-components/src/lib/work-side-menu-item/work-side-menu-item.tsx @@ -25,7 +25,7 @@ export interface GoabWorkSideMenuItemProps { label: string; /** The URL the menu item links to. When absent, renders as a button instead of a link. */ url?: string; - /** Badge text displayed alongside the menu item (e.g., notification count). */ + /** @deprecated Use trailingContent instead. Badge text displayed alongside the menu item (e.g., notification count). */ badge?: string; /** When true, indicates this is the currently active menu item. */ current?: boolean; @@ -35,12 +35,14 @@ export interface GoabWorkSideMenuItemProps { icon?: string; /** Sets a data-testid attribute for automated testing. */ testId?: string; - /** Sets the visual style of the badge. Use "emergency" for urgent items, "success" for positive status. @default "normal" */ + /** @deprecated Use trailingContent instead. Sets the visual style of the badge. Use "emergency" for urgent items, "success" for positive status. @default "normal" */ type?: GoabWorkSideMenuItemType; /** Content rendered inside the menu item. */ children?: React.ReactNode; /** Content rendered inside the popover panel attached to this menu item. */ popoverContent?: React.ReactNode; + /** Content rendered after the label in the trailing area of the menu item. */ + trailingContent?: React.ReactNode; } /** Individual menu item within the work side menu. */ @@ -57,6 +59,7 @@ export function GoabWorkSideMenuItem(props: GoabWorkSideMenuItemProps): JSX.Elem type={props.type} > {props.popoverContent &&
{props.popoverContent}
} + {props.trailingContent &&
{props.trailingContent}
} {props.children} ); diff --git a/libs/web-components/src/components/work-side-menu/WorkSideMenuItem.spec.ts b/libs/web-components/src/components/work-side-menu/WorkSideMenuItem.spec.ts index 67c439ca3b..347853851a 100644 --- a/libs/web-components/src/components/work-side-menu/WorkSideMenuItem.spec.ts +++ b/libs/web-components/src/components/work-side-menu/WorkSideMenuItem.spec.ts @@ -29,6 +29,18 @@ describe("WorkSideMenuItem", () => { expect(badge).toBeTruthy(); }); + it("renders badge for backward compatibility", async () => { + const { container } = render(GoAWorkSideMenuItem, { + label: "Foo", + url: "#", + badge: "2", + type: "success", + }); + + const badge = container.querySelector("goa-badge.badge"); + expect(badge).toBeTruthy(); + }); + describe("click events", () => { it("should dispatch _navigate event with url on click", async () => { const onNavigate = vi.fn(); diff --git a/libs/web-components/src/components/work-side-menu/WorkSideMenuItem.svelte b/libs/web-components/src/components/work-side-menu/WorkSideMenuItem.svelte index 5242cf46ca..018918762c 100644 --- a/libs/web-components/src/components/work-side-menu/WorkSideMenuItem.svelte +++ b/libs/web-components/src/components/work-side-menu/WorkSideMenuItem.svelte @@ -18,7 +18,7 @@ export let url: string = ""; // optional - /** Badge text displayed alongside the menu item (e.g., notification count). */ + /** @deprecated Use trailingContent instead. Badge text displayed alongside the menu item (e.g., notification count). */ export let badge: string = ""; /** When true, indicates this is the currently active menu item. */ export let current: boolean = false; @@ -28,7 +28,7 @@ export let icon: GoAIconType | undefined = undefined; /** Sets a data-testid attribute for automated testing. */ export let testid: string = ""; - /** Sets the visual style of the badge. Use "emergency" for urgent items, "success" for positive status. */ + /** @deprecated Use trailingContent instead. Sets the visual style of the badge. Use "emergency" for urgent items, "success" for positive status. */ export let type: WorkSideMenuItemType = "normal"; // ******* @@ -52,6 +52,7 @@ $: _alwaysVisible = !isNaN(parseInt(badge)) && parseInt(badge) > 0 && parseInt(badge) < 10; $: _hasPopoverContent = $$slots.popoverContent; + $: _hasTrailingContent = $$slots.trailingContent; $: _badgeType = type === "emergency" ? "emergency" : "success"; // ***** @@ -260,6 +261,11 @@ + {#if _hasTrailingContent} +
+ +
+ {/if} {#if badge} {label} + {#if _hasTrailingContent} +
+ +
+ {/if} {#if badge} {label} + {#if _hasTrailingContent} +
+ +
+ {/if} {#if badge} Date: Tue, 19 May 2026 08:23:59 -0600 Subject: [PATCH 16/16] feat(#3873): add dark mode theming with React context and Angular service Co-authored-by: Thomas Jeffery --- apps/prs/angular/src/app/app.component.html | 9 +- apps/prs/angular/src/app/app.component.ts | 6 + apps/prs/angular/src/styles.css | 2 + apps/prs/react/src/app/app.tsx | 34 ++- apps/prs/react/src/main.tsx | 23 +- apps/prs/react/src/routes/everything-b.tsx | 112 +++++--- apps/prs/react/src/routes/everything.tsx | 38 ++- apps/prs/react/src/styles.css | 3 + docs/package-lock.json | 55 +--- docs/package.json | 2 +- .../images/home/hero-banner-gradient-dark.svg | 29 ++ docs/public/images/home/main-pages-thumb.svg | 31 ++ .../images/home/primary-users-thumb.svg | 11 + docs/public/images/home/storyboard-thumb.svg | 28 ++ docs/public/search-index.json | 26 ++ docs/src/components/CodeCopy.tsx | 6 +- docs/src/components/CodeSnippet.css | 12 + docs/src/components/ConfigurationPreview.tsx | 48 ++-- docs/src/components/DoDont.astro | 4 + docs/src/components/ExamplePreview.tsx | 50 ++-- docs/src/components/ExamplesGrid.tsx | 16 +- docs/src/components/TokensGrid.tsx | 37 ++- docs/src/components/nav/GetStartedSubMenu.tsx | 12 +- .../components/nav/MenuSecondaryContent.tsx | 48 +++- docs/src/components/search/quick-links.ts | 2 + docs/src/components/search/search.css | 3 +- .../designers/designing-for-dark-mode.mdx | 56 ++++ .../get-started/designers/ux-guidelines.mdx | 2 +- .../get-started/developers/browsers.mdx | 2 +- .../content/get-started/developers/bug.mdx | 2 +- .../developers/dark-mode-theme.mdx | 259 +++++++++++++++++ .../get-started/developers/technologies.mdx | 2 +- .../developers/updating-your-product.mdx | 2 +- docs/src/hooks/index.ts | 1 + docs/src/hooks/useIsDarkMode.ts | 42 +++ docs/src/layouts/BaseLayout.astro | 23 ++ docs/src/lib/tokens.ts | 47 ++- .../content-guidelines/error-messages.astro | 12 +- docs/src/pages/index.astro | 78 +++-- libs/angular-components/src/index.ts | 1 + .../src/lib/theme/theme.service.spec.ts | 202 +++++++++++++ .../src/lib/theme/theme.service.ts | 52 ++++ libs/common/src/lib/common.ts | 2 + libs/react-components/src/index.ts | 1 + .../src/lib/theme/theme-context.spec.tsx | 215 ++++++++++++++ .../src/lib/theme/theme-context.tsx | 87 ++++++ .../src/lib/work-side-menu/work-side-menu.tsx | 18 +- libs/web-components/src/assets/css/reset.css | 22 +- .../components/app-header/AppHeader.svelte | 267 +++++++++++------- .../src/components/badge/Badge.svelte | 30 +- .../src/components/dropdown/Dropdown.svelte | 21 +- .../src/components/footer/Footer.svelte | 1 + .../work-side-menu/WorkSideMenu.svelte | 27 +- package-lock.json | 8 +- package.json | 2 +- 55 files changed, 1759 insertions(+), 372 deletions(-) create mode 100644 docs/public/images/home/hero-banner-gradient-dark.svg create mode 100644 docs/public/images/home/main-pages-thumb.svg create mode 100644 docs/public/images/home/primary-users-thumb.svg create mode 100644 docs/public/images/home/storyboard-thumb.svg create mode 100644 docs/src/content/get-started/designers/designing-for-dark-mode.mdx create mode 100644 docs/src/content/get-started/developers/dark-mode-theme.mdx create mode 100644 docs/src/hooks/useIsDarkMode.ts create mode 100644 libs/angular-components/src/lib/theme/theme.service.spec.ts create mode 100644 libs/angular-components/src/lib/theme/theme.service.ts create mode 100644 libs/react-components/src/lib/theme/theme-context.spec.tsx create mode 100644 libs/react-components/src/lib/theme/theme-context.tsx diff --git a/apps/prs/angular/src/app/app.component.html b/apps/prs/angular/src/app/app.component.html index fb572efa9d..280b854410 100644 --- a/apps/prs/angular/src/app/app.component.html +++ b/apps/prs/angular/src/app/app.component.html @@ -15,16 +15,21 @@ [open]="true" (onNavigate)="handleNavigate($event)" [primaryContent]="primaryTemplate" - [secondaryContent]="tokenToggleTemplate" + [secondaryContent]="secondaryTemplate" > - + + diff --git a/apps/prs/angular/src/app/app.component.ts b/apps/prs/angular/src/app/app.component.ts index ca6ea20f93..594c670822 100644 --- a/apps/prs/angular/src/app/app.component.ts +++ b/apps/prs/angular/src/app/app.component.ts @@ -6,6 +6,7 @@ import { GoabAppFooter, GoabAppHeader, GoabMicrositeHeader, + GoabThemeService, GoabWorkSideMenu, GoabWorkSideMenuItem, GoabWorkSideMenuGroup, @@ -52,6 +53,7 @@ export class AppComponent { private fullPageRoutes = ["/features/2885"]; private router = inject(Router); + readonly theme = inject(GoabThemeService); constructor() { this.router.events @@ -69,6 +71,10 @@ export class AppComponent { applyTokenVersion(this.tokenMode); return; } + if (path === "#toggle-theme") { + this.theme.toggle(); + return; + } const internal = path.startsWith(this.baseHref) ? "/" + path.slice(this.baseHref.length) : path; diff --git a/apps/prs/angular/src/styles.css b/apps/prs/angular/src/styles.css index 963ef40b19..8078d0e064 100644 --- a/apps/prs/angular/src/styles.css +++ b/apps/prs/angular/src/styles.css @@ -1,5 +1,7 @@ /* You can add global styles to this file, and also import other style files */ @import "../../../../dist/libs/web-components/index.css"; +@import "@abgov/design-tokens-v2/dist/tokens.css"; +@import "@abgov/design-tokens-v2/dist/dark-theme.css"; :root { --goa-space-fill: 32ch; diff --git a/apps/prs/react/src/app/app.tsx b/apps/prs/react/src/app/app.tsx index 80a7b407ba..04a769a9bf 100644 --- a/apps/prs/react/src/app/app.tsx +++ b/apps/prs/react/src/app/app.tsx @@ -8,6 +8,7 @@ import { GoabWorkSideMenu, GoabWorkSideMenuGroup, GoabWorkSideMenuItem, + useTheme, } from "@abgov/react-components"; import { bugRouteDefinitions, @@ -37,10 +38,10 @@ const appContentStyle: CSSProperties = { export function App() { const navigate = useNavigate(); + const { mode, toggle } = useTheme(); + const isDark = mode === "dark"; const baseUrl = import.meta.env.BASE_URL; - const [tokenMode, setTokenMode] = useState(() => - resolveTokenVersion(), - ); + const [tokenMode, setTokenMode] = useState(() => resolveTokenVersion()); const handleSideMenuNavigate = (path: string) => { if (path === TOKEN_TOGGLE_URL) { @@ -49,6 +50,10 @@ export function App() { applyTokenVersion(next); return; } + if (path === "#toggle-theme") { + toggle(); + return; + } const internal = path.startsWith(baseUrl) ? "/" + path.slice(baseUrl.length) : path; navigate(internal); }; @@ -66,11 +71,18 @@ export function App() { open={true} onNavigate={handleSideMenuNavigate} secondaryContent={ - + <> + + + } primaryContent={ <> @@ -102,7 +114,11 @@ export function App() { /> ))}
- + } /> diff --git a/apps/prs/react/src/main.tsx b/apps/prs/react/src/main.tsx index 83464a9fb6..7cc14365be 100644 --- a/apps/prs/react/src/main.tsx +++ b/apps/prs/react/src/main.tsx @@ -2,6 +2,7 @@ import { StrictMode } from "react"; import * as ReactDOM from "react-dom/client"; import { BrowserRouter, Route, Routes } from "react-router-dom"; +import { GoabThemeProvider } from "@abgov/react-components"; import "@abgov/web-components"; import App from "./app/app"; import { EverythingRoute } from "./routes/everything"; @@ -12,17 +13,19 @@ const root = ReactDOM.createRoot(document.getElementById("root") as HTMLElement) root.render( - - } /> - }> - } /> - {prRouteDefinitions.map((route) => { - const Component = route.component; + + + } /> + }> + } /> + {prRouteDefinitions.map((route) => { + const Component = route.component; - return } />; - })} - - + return } />; + })} + + + , ); diff --git a/apps/prs/react/src/routes/everything-b.tsx b/apps/prs/react/src/routes/everything-b.tsx index f8360e2c7b..c8e9f9f747 100644 --- a/apps/prs/react/src/routes/everything-b.tsx +++ b/apps/prs/react/src/routes/everything-b.tsx @@ -38,9 +38,7 @@ import { GoabAppFooterMetaSection, GoabAppFooterNavSection, GoabFileUploadInput, - GoabFileUploadCard, GoabSideMenuHeading, - GoabAccordion, GoabSkeleton, GoabCheckbox, GoabFormStep, @@ -53,11 +51,9 @@ import { GoabTableSortHeader, GoabGrid, } from "@abgov/react-components"; -import "@abgov/style"; import { GoabDropdownOnChangeDetail, GoabInputOnChangeDetail, - GoabSkeletonSize, GoabTextAreaOnChangeDetail, } from "@abgov/ui-components-common"; @@ -81,7 +77,7 @@ export function EverythingBRoute() { const [step, setStep] = useState(-1); const [step2, setStep2] = useState(-1); // eslint-disable-next-line @typescript-eslint/no-empty-function - const noop = () => {}; + const noop = () => { }; // Snackbar states const [snackbarVisible, setSnackbarVisible] = useState< | false @@ -199,8 +195,7 @@ export function EverythingBRoute() {
- - +
{/* Back link after first header */} @@ -3743,7 +3738,7 @@ export function EverythingBRoute() { name="item" value={value} width="20ch" - onChange={function ( + onChange={function( detail: GoabInputOnChangeDetail, ): void { throw new Error("Function not implemented."); @@ -5468,16 +5463,14 @@ export function EverythingBRoute() { { /* noop */ }} + onChange={() => { + /* noop */ + }} /> 001 - + - console.log('Edit 001')} /> - console.log('Delete 001')} /> + console.log("Edit 001")} + /> + console.log("Delete 001")} + /> @@ -5509,16 +5510,14 @@ export function EverythingBRoute() { { /* noop */ }} + onChange={() => { + /* noop */ + }} /> 002 - + - console.log('Edit 002')} /> - console.log('Delete 002')} /> + console.log("Edit 002")} + /> + console.log("Delete 002")} + /> @@ -5550,16 +5557,14 @@ export function EverythingBRoute() { { /* noop */ }} + onChange={() => { + /* noop */ + }} /> 003 - + - console.log('Edit 003')} /> - console.log('Delete 003')} /> + console.log("Edit 003")} + /> + console.log("Delete 003")} + /> @@ -5611,7 +5624,9 @@ export function EverythingBRoute() { { /* noop */ }} + onChange={() => { + /* noop */ + }} /> 001 @@ -5627,8 +5642,16 @@ export function EverythingBRoute() { - console.log('Edit')} /> - console.log('Delete')} /> + console.log("Edit")} + /> + console.log("Delete")} + /> @@ -5637,7 +5660,9 @@ export function EverythingBRoute() { { /* noop */ }} + onChange={() => { + /* noop */ + }} /> 002 @@ -5653,14 +5678,21 @@ export function EverythingBRoute() { - console.log('Edit')} /> - console.log('Delete')} /> + console.log("Edit")} + /> + console.log("Delete")} + /> - @@ -6056,4 +6088,4 @@ export function EverythingBRoute() { ); -} \ No newline at end of file +} diff --git a/apps/prs/react/src/routes/everything.tsx b/apps/prs/react/src/routes/everything.tsx index 838fce95a9..7562239a55 100644 --- a/apps/prs/react/src/routes/everything.tsx +++ b/apps/prs/react/src/routes/everything.tsx @@ -26,7 +26,6 @@ import { GoabDrawer, GoabDropdown, GoabDropdownItem, - GoabFieldset, GoabFileUploadCard, GoabFileUploadInput, GoabFilterChip, @@ -50,13 +49,6 @@ import { GoabPages, GoabPagination, GoabPopover, - GoabPublicForm, - GoabPublicFormPage, - GoabPublicFormSummary, - GoabPublicFormTask, - GoabPublicFormTaskList, - GoabPublicSubform, - GoabPublicSubformIndex, GoabRadioGroup, GoabRadioItem, GoabSideMenu, @@ -657,7 +649,12 @@ export function EverythingRoute(): JSX.Element { ))} - + Type: interactive
@@ -1133,6 +1130,17 @@ export function EverythingRoute(): JSX.Element { ))} + + + + + + +
@@ -1577,7 +1585,8 @@ export function EverythingRoute(): JSX.Element { Data Grid (Keyboard Navigation) - The data grid wraps a table to enable keyboard navigation. Use arrow keys to move between cells. + The data grid wraps a table to enable keyboard navigation. Use arrow keys to + move between cells. @@ -1597,11 +1606,16 @@ export function EverythingRoute(): JSX.Element { {row.name} {row.created} - + {row.progress}% - View + + View + ))} diff --git a/apps/prs/react/src/styles.css b/apps/prs/react/src/styles.css index 90d4ee0072..4b7fecca73 100644 --- a/apps/prs/react/src/styles.css +++ b/apps/prs/react/src/styles.css @@ -1 +1,4 @@ /* You can add global styles to this file, and also import other style files */ +@import "../../../../dist/libs/web-components/index.css"; +@import "@abgov/design-tokens-v2/dist/tokens.css"; +@import "@abgov/design-tokens-v2/dist/dark-theme.css"; diff --git a/docs/package-lock.json b/docs/package-lock.json index cd512e4c6c..194823a78d 100644 --- a/docs/package-lock.json +++ b/docs/package-lock.json @@ -8,7 +8,7 @@ "name": "docs", "version": "0.0.1", "dependencies": { - "@abgov/design-tokens-v2": "npm:@abgov/design-tokens@^2.1.1", + "@abgov/design-tokens-v2": "npm:@abgov/design-tokens@^2.8.0", "@abgov/react-components": "*", "@abgov/ui-components-common": "*", "@abgov/web-components": "*", @@ -20,9 +20,9 @@ }, "node_modules/@abgov/design-tokens-v2": { "name": "@abgov/design-tokens", - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@abgov/design-tokens/-/design-tokens-2.1.1.tgz", - "integrity": "sha512-JpNFdkgFIkrIQTmQ8h/A91EF4qoaXDK9sL/gN5QE54xCr8LxUCpEtdHpUVDwVhk8cugLrp6klhQMw8yqWLrBoA==" + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/@abgov/design-tokens/-/design-tokens-2.8.0.tgz", + "integrity": "sha512-roDjWROKgJkrPuqsWLAapYefIyFI8BwNSTMt3IAX6dwmpZOGfbNrAhaAhF1F8toESXgBUA1SyWMA2VKuKcgSjw==" }, "node_modules/@abgov/react-components": { "version": "6.9.3", @@ -489,23 +489,6 @@ "node": ">=18" } }, - "node_modules/@types/react": { - "version": "19.2.7", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.7.tgz", - "integrity": "sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==", - "license": "MIT", - "peer": true, - "dependencies": { - "csstype": "^3.2.2" - } - }, - "node_modules/csstype": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", - "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", - "license": "MIT", - "peer": true - }, "node_modules/esbuild": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.2.tgz", @@ -582,29 +565,6 @@ "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" } }, - "node_modules/react": { - "version": "19.2.3", - "resolved": "https://registry.npmjs.org/react/-/react-19.2.3.tgz", - "integrity": "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-dom": { - "version": "19.2.3", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.3.tgz", - "integrity": "sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==", - "license": "MIT", - "peer": true, - "dependencies": { - "scheduler": "^0.27.0" - }, - "peerDependencies": { - "react": "^19.2.3" - } - }, "node_modules/resolve-pkg-maps": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", @@ -615,13 +575,6 @@ "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } }, - "node_modules/scheduler": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", - "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", - "license": "MIT", - "peer": true - }, "node_modules/tsx": { "version": "4.21.0", "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.21.0.tgz", diff --git a/docs/package.json b/docs/package.json index bcd0424b90..01203da05f 100644 --- a/docs/package.json +++ b/docs/package.json @@ -13,7 +13,7 @@ "astro": "astro" }, "dependencies": { - "@abgov/design-tokens-v2": "npm:@abgov/design-tokens@^2.1.1", + "@abgov/design-tokens-v2": "npm:@abgov/design-tokens@^2.8.0", "@abgov/react-components": "*", "@abgov/ui-components-common": "*", "@abgov/web-components": "*", diff --git a/docs/public/images/home/hero-banner-gradient-dark.svg b/docs/public/images/home/hero-banner-gradient-dark.svg new file mode 100644 index 0000000000..0fd953e0f3 --- /dev/null +++ b/docs/public/images/home/hero-banner-gradient-dark.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/public/images/home/main-pages-thumb.svg b/docs/public/images/home/main-pages-thumb.svg new file mode 100644 index 0000000000..47d6eda402 --- /dev/null +++ b/docs/public/images/home/main-pages-thumb.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/public/images/home/primary-users-thumb.svg b/docs/public/images/home/primary-users-thumb.svg new file mode 100644 index 0000000000..cc61e485e0 --- /dev/null +++ b/docs/public/images/home/primary-users-thumb.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/public/images/home/storyboard-thumb.svg b/docs/public/images/home/storyboard-thumb.svg new file mode 100644 index 0000000000..94ac6b1cdd --- /dev/null +++ b/docs/public/images/home/storyboard-thumb.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/public/search-index.json b/docs/public/search-index.json index f3630aa7dc..be01a451f5 100644 --- a/docs/public/search-index.json +++ b/docs/public/search-index.json @@ -2356,6 +2356,19 @@ ], "slug": "get-started/contribute" }, + { + "type": "page", + "id": "designers/designing-for-dark-mode", + "title": "Designing for dark mode", + "description": "How dark mode works for designers", + "status": "published", + "category": "get started", + "tags": [ + "designers", + "designer" + ], + "slug": "get-started/designers/designing-for-dark-mode" + }, { "type": "page", "id": "designers/designing-with-ds", @@ -2421,6 +2434,19 @@ ], "slug": "get-started/developers/bug" }, + { + "type": "page", + "id": "developers/dark-mode-theme", + "title": "Dark mode theme", + "description": "Switch between light and dark mode using the React useTheme hook or Angular GoabThemeService", + "status": "published", + "category": "get started", + "tags": [ + "developers", + "developer" + ], + "slug": "get-started/developers/dark-mode-theme" + }, { "type": "page", "id": "developers/setup", diff --git a/docs/src/components/CodeCopy.tsx b/docs/src/components/CodeCopy.tsx index 0993e9ca56..2783c9c0ce 100644 --- a/docs/src/components/CodeCopy.tsx +++ b/docs/src/components/CodeCopy.tsx @@ -1,6 +1,6 @@ import React, { useState } from "react"; -import { GoabIconButton } from "@abgov/react-components"; +import { GoabIconButton, GoabTooltip } from "@abgov/react-components"; interface Props { code: string; @@ -21,7 +21,9 @@ export const CodeCopy: React.FC = ({ code, className }) => { return ( <>
- + + +
); diff --git a/docs/src/components/CodeSnippet.css b/docs/src/components/CodeSnippet.css index d24afe3361..d8916fd894 100644 --- a/docs/src/components/CodeSnippet.css +++ b/docs/src/components/CodeSnippet.css @@ -170,3 +170,15 @@ code { .hljs-built_in { color: #6639ba; } .hljs-title { color: #6639ba; } .hljs-params { color: #953800; } + +/* Dark mode: lighter hue-preserved variants for readability on dark code bg */ +:root[data-theme="dark"] .hljs-keyword { color: #79c0ff; } +:root[data-theme="dark"] .hljs-string { color: #7ee787; } +:root[data-theme="dark"] .hljs-number { color: #79c0ff; } +:root[data-theme="dark"] .hljs-comment { color: #8b949e; } +:root[data-theme="dark"] .hljs-tag { color: #79c0ff; } +:root[data-theme="dark"] .hljs-attr { color: #79c0ff; } +:root[data-theme="dark"] .hljs-name { color: #7ce38b; } +:root[data-theme="dark"] .hljs-built_in { color: #d2a8ff; } +:root[data-theme="dark"] .hljs-title { color: #d2a8ff; } +:root[data-theme="dark"] .hljs-params { color: #ffa657; } diff --git a/docs/src/components/ConfigurationPreview.tsx b/docs/src/components/ConfigurationPreview.tsx index 69d2fe979c..71b4303f86 100644 --- a/docs/src/components/ConfigurationPreview.tsx +++ b/docs/src/components/ConfigurationPreview.tsx @@ -12,6 +12,7 @@ import { useCallback, useEffect, useLayoutEffect, useRef, useState } from "react"; // Note: Using web component directly for v2 styling (React wrapper doesn't pass version prop) +import { GoabTooltip } from "@abgov/react-components"; import { CodeSnippet } from "./CodeSnippet"; import { useGitHubIssueCount } from "../hooks/useGitHubIssueCount"; import type { ComponentConfigurations } from "@/data/configurations"; @@ -157,29 +158,31 @@ export function ConfigurationPreview({ @@ -230,7 +233,8 @@ export function ConfigurationPreview({ gap: var(--goa-space-s, 0.5rem); } - .external-link { + .external-link, + .external-link:visited { display: flex; align-items: center; gap: var(--goa-space-2xs, 0.25rem); diff --git a/docs/src/components/DoDont.astro b/docs/src/components/DoDont.astro index bda77459b2..465b08f442 100644 --- a/docs/src/components/DoDont.astro +++ b/docs/src/components/DoDont.astro @@ -240,6 +240,10 @@ const config = typeConfig[type]; min-height: 2rem; } + :root[data-theme="dark"] .do-container { + background: var(--goa-color-surface-card); + } + .do-container:empty { display: none; } diff --git a/docs/src/components/ExamplePreview.tsx b/docs/src/components/ExamplePreview.tsx index 0b7fe7ad50..1b20ef260e 100644 --- a/docs/src/components/ExamplePreview.tsx +++ b/docs/src/components/ExamplePreview.tsx @@ -10,6 +10,7 @@ */ import { useState, useEffect, useRef } from "react"; +import { GoabTooltip } from "@abgov/react-components"; import { CodeSnippet } from "./CodeSnippet"; import type { ExampleCode } from "../lib/example-code"; import DOMPurify from "dompurify"; @@ -136,29 +137,31 @@ export function ExamplePreview({ )}
- - {figmaUrl && ( - + + + {figmaUrl && ( + + + + + )}
@@ -240,7 +243,8 @@ export function ExamplePreview({ } .copy-link-button, - .figma-link { + .figma-link, + .figma-link:visited { display: flex; align-items: center; justify-content: center; diff --git a/docs/src/components/ExamplesGrid.tsx b/docs/src/components/ExamplesGrid.tsx index 73de7b47b1..61da18b83e 100644 --- a/docs/src/components/ExamplesGrid.tsx +++ b/docs/src/components/ExamplesGrid.tsx @@ -549,7 +549,11 @@ export function ExamplesGrid({ examples }: ExamplesGridProps) { loading="lazy" /> ) : ( -