From 1daf2a94f4ef3ae4a038ce3ded3eec77735941e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20D=C3=ADaz=20Gonz=C3=A1lez?= <dgonzalez@suse.de> Date: Fri, 21 Apr 2023 08:36:03 +0100 Subject: [PATCH 01/58] [web] Rename the layout slot for app actions Basically used by the Sidebar, which will stop holding "Page" or "Contextual" actions. Another slot will be created for them in order to make these actions more discoverable. --- web/src/components/core/Sidebar.jsx | 6 +++--- web/src/components/layout/Layout.jsx | 17 +++++++++++++++-- web/src/test-utils.js | 1 + 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/web/src/components/core/Sidebar.jsx b/web/src/components/core/Sidebar.jsx index d25e343e88..f82f0f706f 100644 --- a/web/src/components/core/Sidebar.jsx +++ b/web/src/components/core/Sidebar.jsx @@ -21,7 +21,7 @@ import React, { useEffect, useRef, useState } from "react"; import { Button, Text } from "@patternfly/react-core"; -import { Icon, PageActions } from "~/components/layout"; +import { Icon, AppActions } from "~/components/layout"; // FIXME: look for a better way to allow opening the Sidebar from outside let openButtonRef = {}; @@ -89,7 +89,7 @@ const Sidebar = ({ children }) => { return ( <> - <PageActions> + <AppActions> <button ref={openButtonRef} onClick={open} @@ -100,7 +100,7 @@ const Sidebar = ({ children }) => { > <Icon name="menu" /> </button> - </PageActions> + </AppActions> <nav id="navigation-and-options" diff --git a/web/src/components/layout/Layout.jsx b/web/src/components/layout/Layout.jsx index 28ddbfaeaf..4e092918d3 100644 --- a/web/src/components/layout/Layout.jsx +++ b/web/src/components/layout/Layout.jsx @@ -51,7 +51,7 @@ const FooterInfoArea = createTeleporter(); * @example * <Layout> * <PageIcon><DashboardIcon /></PageIcon> - * <PageActions><DashboardActions /></PageActions> + * <AppActions><DashboardActions /></AppActions> * <MainActions><Install /></MainActions> * <Title>Dashboard</Title> * @@ -127,6 +127,19 @@ const Title = PageTitle.Source; */ const PageIcon = HeaderIcon.Source; +/** + * Component for setting global actions shown on the header right + * + * @example + * import { AppActions } from "agama-layout"; + * import { FancyButton } from "somewhere"; + * ... + * <AppActions> + * <FancyButton onClick={() => console.log("do something")} /> + * </AppActions> + */ +const AppActions = HeaderActions.Source; + /** * Component for setting page actions shown on the header right * @@ -183,7 +196,7 @@ export { Layout as default, Title, PageIcon, - PageActions, + AppActions, MainActions, AdditionalInfo, PageOptionsSlot, diff --git a/web/src/test-utils.js b/web/src/test-utils.js index 3420dc7aac..502fd02ed2 100644 --- a/web/src/test-utils.js +++ b/web/src/test-utils.js @@ -144,6 +144,7 @@ const mockLayout = () => ({ default: ({ children }) => children, Title: ({ children }) => children, PageIcon: ({ children }) => children, + AppActions: ({ children }) => children, PageActions: ({ children }) => children, MainActions: ({ children }) => children, AdditionalInfo: ({ children }) => children, From c005251e8926101bd9f4e00967e94b815b6461e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20D=C3=ADaz=20Gonz=C3=A1lez?= <dgonzalez@suse.de> Date: Fri, 21 Apr 2023 08:39:29 +0100 Subject: [PATCH 02/58] [web] Add new layout slot for contextual/page actions --- web/src/components/layout/Layout.jsx | 9 +++++++-- web/src/test-utils.js | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/web/src/components/layout/Layout.jsx b/web/src/components/layout/Layout.jsx index 4e092918d3..07f914aef1 100644 --- a/web/src/components/layout/Layout.jsx +++ b/web/src/components/layout/Layout.jsx @@ -27,6 +27,7 @@ import { About, Disclosure, LogsButton, Sidebar, ShowLogButton, ShowTerminalButt const PageTitle = createTeleporter(); const PageOptions = createTeleporter(); +const PageActions = createTeleporter(); const HeaderActions = createTeleporter(); const HeaderIcon = createTeleporter(); const FooterActions = createTeleporter(); @@ -76,7 +77,10 @@ function Layout({ children }) { <PageTitle.Target as="span" /> </h1> - <HeaderActions.Target as="span" /> + <div className="split"> + <PageActions.Target as="span" /> + <HeaderActions.Target as="span" /> + </div> </header> <Sidebar> @@ -151,7 +155,7 @@ const AppActions = HeaderActions.Source; * <FancyButton onClick={() => console.log("do something")} /> * </PageActions> */ -const PageActions = HeaderActions.Source; +const ContextualActions = PageActions.Source; /** * Component for setting the main actions shown on the footer right @@ -197,6 +201,7 @@ export { Title, PageIcon, AppActions, + ContextualActions, MainActions, AdditionalInfo, PageOptionsSlot, diff --git a/web/src/test-utils.js b/web/src/test-utils.js index 502fd02ed2..ba7c7f47aa 100644 --- a/web/src/test-utils.js +++ b/web/src/test-utils.js @@ -145,7 +145,7 @@ const mockLayout = () => ({ Title: ({ children }) => children, PageIcon: ({ children }) => children, AppActions: ({ children }) => children, - PageActions: ({ children }) => children, + ContextualActions: ({ children }) => children, MainActions: ({ children }) => children, AdditionalInfo: ({ children }) => children, PageOptionsContent: ({ children }) => children, From 27715e849c3fb6969f0f261edce3f9504fee2f16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20D=C3=ADaz=20Gonz=C3=A1lez?= <dgonzalez@suse.de> Date: Fri, 21 Apr 2023 13:13:07 +0100 Subject: [PATCH 03/58] [web] Add a new ContextualActions core component Based in the PatternFly Dropdown component[1] and intended for displaying the actions related to the current page in an attempt to make them more discoverable. [1] https://www.patternfly.org/v4/components/dropdown --- web/src/assets/styles/blocks.scss | 18 ++++- web/src/components/core/ContextualActions.jsx | 73 +++++++++++++++++++ web/src/components/core/index.js | 1 + web/src/components/layout/Icon.jsx | 2 + 4 files changed, 92 insertions(+), 2 deletions(-) create mode 100644 web/src/components/core/ContextualActions.jsx diff --git a/web/src/assets/styles/blocks.scss b/web/src/assets/styles/blocks.scss index ace68ee440..1a6782af8e 100644 --- a/web/src/assets/styles/blocks.scss +++ b/web/src/assets/styles/blocks.scss @@ -1,7 +1,7 @@ // Standard section // In the future we might need to use an specific CSS class for it if we start having different // section layouts. -section { +section:not([class^="pf-c"]) { display: grid; grid-template-columns: var(--icon-size-m) 1fr; grid-template-areas: @@ -10,7 +10,7 @@ section { gap: var(--spacer-small); } -section:not(:last-child) { +section:not(:last-child, [class^="pf-c"]) { margin-block-end: var(--spacer-large); } @@ -196,3 +196,17 @@ section > .content { --pf-c-progress--GridGap: var(--spacer-small); } } + +.contextual-actions a { + font-size: 16px; + font-weight: var(--fw-bold); + text-decoration: none; + + &:hover { + color: var(--color-link-hover); + + svg { + color: var(--color-link); + } + } +} diff --git a/web/src/components/core/ContextualActions.jsx b/web/src/components/core/ContextualActions.jsx new file mode 100644 index 0000000000..8b9464970e --- /dev/null +++ b/web/src/components/core/ContextualActions.jsx @@ -0,0 +1,73 @@ +/* + * Copyright (c) [2023] SUSE LLC + * + * All Rights Reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as published + * by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, contact SUSE LLC. + * + * To contact SUSE LLC about this file by physical or electronic mail, you may + * find current contact information at www.suse.com. + */ + +import React, { useState } from 'react'; +import { Button, Dropdown, DropdownItem, DropdownGroup } from '@patternfly/react-core'; +import { Icon, ContextualActions as ContextualActionsSlot } from "~/components/layout"; + +const Toggler = ({ onClick }) => { + return ( + <Button onClick={onClick} variant="plain"> + <Icon name="expand_more" /> + </Button> + ); +}; + +const Group = ({ children, ...props }) => { + return ( + <DropdownGroup {...props}> + {children} + </DropdownGroup> + ); +}; + +const Item = ({ children, ...props }) => { + return ( + <DropdownItem {...props}> + {children} + </DropdownItem> + ); +}; + +const ContextualActions = ({ children }) => { + const [isOpen, setIsOpen] = useState(false); + const onToggle = () => setIsOpen(!isOpen); + const onSelect = () => setIsOpen(false); + + return ( + <ContextualActionsSlot> + <Dropdown + isOpen={isOpen} + toggle={<Toggler onClick={onToggle} />} + onSelect={onSelect} + dropdownItems={Array(children)} + position="right" + className="contextual-actions" + isGrouped + /> + </ContextualActionsSlot> + ); +}; + +ContextualActions.Group = Group; +ContextualActions.Item = Item; + +export default ContextualActions; diff --git a/web/src/components/core/index.js b/web/src/components/core/index.js index adfef7db16..e9273624b9 100644 --- a/web/src/components/core/index.js +++ b/web/src/components/core/index.js @@ -20,6 +20,7 @@ */ export { default as About } from "./About"; +export { default as ContextualActions } from "./ContextualActions"; export { default as Disclosure } from "./Disclosure"; export { default as Sidebar } from "./Sidebar"; export { default as Section } from "./Section"; diff --git a/web/src/components/layout/Icon.jsx b/web/src/components/layout/Icon.jsx index 7075aa4b19..ea88ac9b0a 100644 --- a/web/src/components/layout/Icon.jsx +++ b/web/src/components/layout/Icon.jsx @@ -36,6 +36,7 @@ import Downloading from "@icons/downloading.svg?component"; import Edit from "@icons/edit.svg?component"; import EditSquare from "@icons/edit_square.svg?component"; import Error from "@icons/error.svg?component"; +import ExpandMore from "@icons/expand_more.svg?component"; import HardDrive from "@icons/hard_drive.svg?component"; import Help from "@icons/help.svg?component"; import HomeStorage from "@icons/home_storage.svg?component"; @@ -78,6 +79,7 @@ const icons = { edit: Edit, edit_square: EditSquare, error: Error, + expand_more: ExpandMore, hard_drive: HardDrive, help: Help, home_storage: HomeStorage, From 67ce72c68e244d7f70fcc285e496f491f1ab2b89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20D=C3=ADaz=20Gonz=C3=A1lez?= <dgonzalez@suse.de> Date: Fri, 21 Apr 2023 13:21:30 +0100 Subject: [PATCH 04/58] [web] Remove header no longer needed --- web/src/components/layout/Layout.jsx | 1 - 1 file changed, 1 deletion(-) diff --git a/web/src/components/layout/Layout.jsx b/web/src/components/layout/Layout.jsx index 07f914aef1..c30ce474fe 100644 --- a/web/src/components/layout/Layout.jsx +++ b/web/src/components/layout/Layout.jsx @@ -87,7 +87,6 @@ function Layout({ children }) { <> <PageOptions.Target /> - <h3>Other options</h3> <Disclosure label="Diagnostic tools" data-keep-sidebar-open> <ShowLogButton /> <LogsButton data-keep-sidebar-open="true" /> From 1d2f5effcd216f5a45d85d5b64cb7469e4a883a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20D=C3=ADaz=20Gonz=C3=A1lez?= <dgonzalez@suse.de> Date: Fri, 21 Apr 2023 13:22:04 +0100 Subject: [PATCH 05/58] [web] Adapt ProposalPage for using ContextualActions And stop using the somehow "deprecated" PageOptions. --- web/src/components/storage/ProposalPage.jsx | 46 +++++++++++++++------ 1 file changed, 33 insertions(+), 13 deletions(-) diff --git a/web/src/components/storage/ProposalPage.jsx b/web/src/components/storage/ProposalPage.jsx index 66c21b14e4..71ec788c1a 100644 --- a/web/src/components/storage/ProposalPage.jsx +++ b/web/src/components/storage/ProposalPage.jsx @@ -21,12 +21,12 @@ import React, { useCallback, useReducer, useEffect, useState } from "react"; import { Alert } from "@patternfly/react-core"; -import { Link } from "react-router-dom"; +import { useHref } from "react-router-dom"; import { useInstallerClient } from "~/context/installer"; import { useCancellablePromise } from "~/utils"; import { Icon } from "~/components/layout"; -import { Page, PageOptions } from "~/components/core"; +import { Page, ContextualActions } from "~/components/core"; import { ProposalActionsSection, ProposalSettingsSection } from "~/components/storage"; const initialState = { @@ -151,6 +151,7 @@ export default function ProposalPage() { const DASDLink = () => { const [show, setShow] = useState(false); + const href = useHref("/storage/dasd"); useEffect(() => { client.dasd.isSupported().then(setShow); @@ -159,23 +160,42 @@ export default function ProposalPage() { if (!show) return null; return ( - <Link to="/storage/dasd"> - <Icon name="settings" size="24" /> - Configure DASD - </Link> + <ContextualActions.Item + key="dasd-link" + href={href} + description="Manage and format" + > + DASD + </ContextualActions.Item> + ); + }; + + const ISCSILink = () => { + const href = useHref("/storage/iscsi"); + + return ( + <ContextualActions.Item + key="iscsi-link" + href={href} + description="Connect to iSCSI targets" + > + iSCSI + </ContextualActions.Item> ); }; return ( <Page title="Storage" icon="hard_drive" actionLabel="Back" actionVariant="secondary"> <PageContent /> - <PageOptions title="Storage"> - <DASDLink /> - <Link to="/storage/iscsi"> - <Icon name="settings" size="24" /> - Configure iSCSI - </Link> - </PageOptions> + <ContextualActions> + <ContextualActions.Group + label="Configure" + key="devices-options" + > + <DASDLink /> + <ISCSILink /> + </ContextualActions.Group> + </ContextualActions> </Page> ); } From 834ffc81e4032c3a95501034c22d22122f2a3405 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20D=C3=ADaz=20Gonz=C3=A1lez?= <dgonzalez@suse.de> Date: Fri, 21 Apr 2023 14:09:31 +0100 Subject: [PATCH 06/58] [web] Move ProposalPage options to its own file --- web/src/components/storage/ProposalPage.jsx | 52 +------------ .../components/storage/ProposalPage.test.jsx | 1 + .../storage/ProposalPageOptions.jsx | 74 +++++++++++++++++++ web/src/components/storage/index.js | 1 + 4 files changed, 80 insertions(+), 48 deletions(-) create mode 100644 web/src/components/storage/ProposalPageOptions.jsx diff --git a/web/src/components/storage/ProposalPage.jsx b/web/src/components/storage/ProposalPage.jsx index 71ec788c1a..87b3cf68db 100644 --- a/web/src/components/storage/ProposalPage.jsx +++ b/web/src/components/storage/ProposalPage.jsx @@ -19,15 +19,14 @@ * find current contact information at www.suse.com. */ -import React, { useCallback, useReducer, useEffect, useState } from "react"; +import React, { useCallback, useReducer, useEffect } from "react"; import { Alert } from "@patternfly/react-core"; -import { useHref } from "react-router-dom"; import { useInstallerClient } from "~/context/installer"; import { useCancellablePromise } from "~/utils"; import { Icon } from "~/components/layout"; -import { Page, ContextualActions } from "~/components/core"; -import { ProposalActionsSection, ProposalSettingsSection } from "~/components/storage"; +import { Page } from "~/components/core"; +import { ProposalActionsSection, ProposalPageOptions, ProposalSettingsSection } from "~/components/storage"; const initialState = { loading: true, @@ -149,53 +148,10 @@ export default function ProposalPage() { ); }; - const DASDLink = () => { - const [show, setShow] = useState(false); - const href = useHref("/storage/dasd"); - - useEffect(() => { - client.dasd.isSupported().then(setShow); - }, []); - - if (!show) return null; - - return ( - <ContextualActions.Item - key="dasd-link" - href={href} - description="Manage and format" - > - DASD - </ContextualActions.Item> - ); - }; - - const ISCSILink = () => { - const href = useHref("/storage/iscsi"); - - return ( - <ContextualActions.Item - key="iscsi-link" - href={href} - description="Connect to iSCSI targets" - > - iSCSI - </ContextualActions.Item> - ); - }; - return ( <Page title="Storage" icon="hard_drive" actionLabel="Back" actionVariant="secondary"> <PageContent /> - <ContextualActions> - <ContextualActions.Group - label="Configure" - key="devices-options" - > - <DASDLink /> - <ISCSILink /> - </ContextualActions.Group> - </ContextualActions> + <ProposalPageOptions /> </Page> ); } diff --git a/web/src/components/storage/ProposalPage.test.jsx b/web/src/components/storage/ProposalPage.test.jsx index a3878bce8e..0692bc3d4c 100644 --- a/web/src/components/storage/ProposalPage.test.jsx +++ b/web/src/components/storage/ProposalPage.test.jsx @@ -26,6 +26,7 @@ import { createClient } from "~/client"; import { ProposalPage } from "~/components/storage"; jest.mock("~/client"); +jest.mock("~/components/storage/ProposalPageOptions", mockComponent("ProposalPage Options")); jest.mock("@patternfly/react-core", () => { const original = jest.requireActual("@patternfly/react-core"); diff --git a/web/src/components/storage/ProposalPageOptions.jsx b/web/src/components/storage/ProposalPageOptions.jsx new file mode 100644 index 0000000000..a464719f00 --- /dev/null +++ b/web/src/components/storage/ProposalPageOptions.jsx @@ -0,0 +1,74 @@ +/* + * Copyright (c) [2023] SUSE LLC + * + * All Rights Reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as published + * by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, contact SUSE LLC. + * + * To contact SUSE LLC about this file by physical or electronic mail, you may + * find current contact information at www.suse.com. + */ + +import React, { useEffect, useState } from "react"; +import { useHref } from "react-router-dom"; +import { useInstallerClient } from "~/context/installer"; +import { If, ContextualActions } from "~/components/core"; + +const DASDLink = () => { + const href = useHref("/storage/dasd"); + + return ( + <ContextualActions.Item + key="dasd-link" + href={href} + description="Manage and format" + > + DASD + </ContextualActions.Item> + ); +}; + +const ISCSILink = () => { + const href = useHref("/storage/iscsi"); + + return ( + <ContextualActions.Item + key="iscsi-link" + href={href} + description="Connect to iSCSI targets" + > + iSCSI + </ContextualActions.Item> + ); +}; + +export default function ProposalPageOptions () { + const [showDasdLink, setShowDasdLink] = useState(false); + const { storage: client } = useInstallerClient(); + + useEffect(() => { + client.dasd.isSupported().then(setShowDasdLink); + }, [client.dasd]); + + return ( + <ContextualActions> + <ContextualActions.Group + label="Configure" + key="devices-options" + > + <If condition={showDasdLink} then={<DASDLink />} /> + <ISCSILink /> + </ContextualActions.Group> + </ContextualActions> + ); +} diff --git a/web/src/components/storage/index.js b/web/src/components/storage/index.js index 304b5d6bf0..4d8ae8a114 100644 --- a/web/src/components/storage/index.js +++ b/web/src/components/storage/index.js @@ -20,6 +20,7 @@ */ export { default as ProposalPage } from "./ProposalPage"; +export { default as ProposalPageOptions } from "./ProposalPageOptions"; export { default as ProposalSettingsSection } from "./ProposalSettingsSection"; export { default as ProposalActionsSection } from "./ProposalActionsSection"; export { default as ProposalVolumes } from "./ProposalVolumes"; From 1e4683772606a726865a29efc20fb0091cdd4a61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20D=C3=ADaz=20Gonz=C3=A1lez?= <dgonzalez@suse.de> Date: Fri, 21 Apr 2023 16:57:04 +0100 Subject: [PATCH 07/58] [web] Adapt NetworkPage for using ContextualActions Moving the actions to its own NetworkPageOptions page and stop using the "deprecated" PageOptions to show them in the Sidebar. --- web/src/components/network/NetworkPage.jsx | 27 +++++++--- .../components/network/NetworkPageOptions.jsx | 49 +++++++++++++++++++ web/src/components/network/index.js | 1 + 3 files changed, 70 insertions(+), 7 deletions(-) create mode 100644 web/src/components/network/NetworkPageOptions.jsx diff --git a/web/src/components/network/NetworkPage.jsx b/web/src/components/network/NetworkPage.jsx index a1d6e44888..462514c1f6 100644 --- a/web/src/components/network/NetworkPage.jsx +++ b/web/src/components/network/NetworkPage.jsx @@ -24,8 +24,8 @@ import { Button, Skeleton } from "@patternfly/react-core"; import { Icon } from "~/components/layout"; import { useInstallerClient } from "~/context/installer"; import { ConnectionTypes, NetworkEventTypes } from "~/client/network"; -import { Page, PageOptions, Section } from "~/components/core"; -import { ConnectionsTable, IpSettingsForm, WifiSelector } from "~/components/network"; +import { If, Page, Section } from "~/components/core"; +import { ConnectionsTable, IpSettingsForm, NetworkPageOptions, WifiSelector } from "~/components/network"; /** * Internal component for displaying the WifiSelector when applicable @@ -98,6 +98,10 @@ export default function NetworkPage() { const [connections, setConnections] = useState([]); const [selectedConnection, setSelectedConnection] = useState(null); const [wifiScanSupported, setWifiScanSupported] = useState(false); + const [wifiSelectorOpen, setWifiSelectorOpen] = useState(false); + + const openWifiSelector = () => setWifiSelectorOpen(true); + const closeWifiSelector = () => setWifiSelectorOpen(false); useEffect(() => { client.setUp().then(() => setInitialized(true)); @@ -182,12 +186,21 @@ export default function NetworkPage() { { ready ? <WifiConnections /> : <Skeleton /> } </Section> + <NetworkPageOptions + wifiScanSupported={wifiScanSupported} + openWifiSelectorCallback={openWifiSelector} + /> + + <If + condition={wifiScanSupported} + then={<WifiSelector isOpen={wifiSelectorOpen} onClose={closeWifiSelector} />} + /> + { /* TODO: improve the connections edition */ } - { selectedConnection && <IpSettingsForm connection={selectedConnection} onClose={() => setSelectedConnection(null)} /> } - { wifiScanSupported && - <PageOptions title="Network"> - <WifiScan supported={wifiScanSupported} /> - </PageOptions> } + <If + condition={selectedConnection} + then=<IpSettingsForm connection={selectedConnection} onClose={() => setSelectedConnection(null)} /> + /> </Page> ); } diff --git a/web/src/components/network/NetworkPageOptions.jsx b/web/src/components/network/NetworkPageOptions.jsx new file mode 100644 index 0000000000..79707d99aa --- /dev/null +++ b/web/src/components/network/NetworkPageOptions.jsx @@ -0,0 +1,49 @@ +/* + * Copyright (c) [2023] SUSE LLC + * + * All Rights Reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as published + * by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, contact SUSE LLC. + * + * To contact SUSE LLC about this file by physical or electronic mail, you may + * find current contact information at www.suse.com. + */ + +import React from "react"; +import { ContextualActions } from "~/components/core"; + +const WifiScanNotSupported = () => { + return ( + <> + The system does not support scanning WiFi networks + </> + ); +}; + +export default function NetworkPageOptions ({ + wifiScanSupported = false, + openWifiSelectorCallback +}) { + return ( + <ContextualActions> + <ContextualActions.Item + key="open-wifi-selector" + onClick={openWifiSelectorCallback} + isDisabled={!wifiScanSupported} + description={!wifiScanSupported ? <WifiScanNotSupported /> : null} + > + <>Connect to a Wi-Fi network</> + </ContextualActions.Item> + </ContextualActions> + ); +} diff --git a/web/src/components/network/index.js b/web/src/components/network/index.js index 5cb1b445b2..7850d43466 100644 --- a/web/src/components/network/index.js +++ b/web/src/components/network/index.js @@ -20,6 +20,7 @@ */ export { default as NetworkPage } from "./NetworkPage"; +export { default as NetworkPageOptions } from "./NetworkPageOptions"; export { default as AddressesDataList } from "./AddressesDataList"; export { default as ConnectionsTable } from "./ConnectionsTable"; export { default as DnsDataList } from "./DnsDataList"; From e403deba6aab1c50839226b46c8899452c35664e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20D=C3=ADaz=20Gonz=C3=A1lez?= <dgonzalez@suse.de> Date: Fri, 21 Apr 2023 17:04:17 +0100 Subject: [PATCH 08/58] [web] Fix broken test --- web/src/components/storage/ProposalPage.test.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/src/components/storage/ProposalPage.test.jsx b/web/src/components/storage/ProposalPage.test.jsx index 0692bc3d4c..9909a63964 100644 --- a/web/src/components/storage/ProposalPage.test.jsx +++ b/web/src/components/storage/ProposalPage.test.jsx @@ -26,7 +26,7 @@ import { createClient } from "~/client"; import { ProposalPage } from "~/components/storage"; jest.mock("~/client"); -jest.mock("~/components/storage/ProposalPageOptions", mockComponent("ProposalPage Options")); +jest.mock("~/components/storage/ProposalPageOptions", () => mockComponent("ProposalPage Options")); jest.mock("@patternfly/react-core", () => { const original = jest.requireActual("@patternfly/react-core"); From 1e79a2d4994227723d094c85a8d88a74dcdf2f8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20D=C3=ADaz=20Gonz=C3=A1lez?= <dgonzalez@suse.de> Date: Fri, 21 Apr 2023 17:13:31 +0100 Subject: [PATCH 09/58] [web] Display the change product link always Now that we are going to stop teleporting links to the Sidebar and start using another location for placing the page related links, the "Change product" action will always be displayed in the Sidebar since, at least initially, we don't want to relate actions only to the Overview. --- web/src/components/layout/Layout.jsx | 2 ++ web/src/components/overview/Overview.jsx | 7 +------ web/src/components/overview/Overview.test.jsx | 1 - 3 files changed, 3 insertions(+), 7 deletions(-) diff --git a/web/src/components/layout/Layout.jsx b/web/src/components/layout/Layout.jsx index c30ce474fe..e5dbde40b0 100644 --- a/web/src/components/layout/Layout.jsx +++ b/web/src/components/layout/Layout.jsx @@ -23,6 +23,7 @@ import React from "react"; import logoUrl from "~/assets/suse-horizontal-logo.svg"; import { createTeleporter } from "react-teleporter"; +import { ChangeProductLink } from "~/components/software"; import { About, Disclosure, LogsButton, Sidebar, ShowLogButton, ShowTerminalButton } from "~/components/core"; const PageTitle = createTeleporter(); @@ -87,6 +88,7 @@ function Layout({ children }) { <> <PageOptions.Target /> + <ChangeProductLink /> <Disclosure label="Diagnostic tools" data-keep-sidebar-open> <ShowLogButton /> <LogsButton data-keep-sidebar-open="true" /> diff --git a/web/src/components/overview/Overview.jsx b/web/src/components/overview/Overview.jsx index 657c37c0e4..ed13813746 100644 --- a/web/src/components/overview/Overview.jsx +++ b/web/src/components/overview/Overview.jsx @@ -23,8 +23,7 @@ import React, { useState } from "react"; import { useSoftware } from "~/context/software"; import { Navigate } from "react-router-dom"; -import { Page, PageOptions, InstallButton } from "~/components/core"; -import { ChangeProductLink } from "~/components/software"; +import { Page, InstallButton } from "~/components/core"; import { L10nSection, NetworkSection, @@ -47,10 +46,6 @@ function Overview() { icon="inventory_2" action={<InstallButton onClick={() => setShowErrors(true)} />} > - <PageOptions> - <ChangeProductLink /> - </PageOptions> - <L10nSection /> <NetworkSection /> <StorageSection showErrors /> diff --git a/web/src/components/overview/Overview.test.jsx b/web/src/components/overview/Overview.test.jsx index 790d2b5e3c..3e7630f1e2 100644 --- a/web/src/components/overview/Overview.test.jsx +++ b/web/src/components/overview/Overview.test.jsx @@ -50,7 +50,6 @@ jest.mock("~/components/overview/StorageSection", () => mockComponent("Storage S jest.mock("~/components/overview/NetworkSection", () => mockComponent("Network Section")); jest.mock("~/components/overview/UsersSection", () => mockComponent("Users Section")); jest.mock("~/components/overview/SoftwareSection", () => mockComponent("Software Section")); -jest.mock("~/components/core/PageOptions", () => mockComponent("PageOptions")); jest.mock("~/components/core/InstallButton", () => mockComponent("Install Button")); beforeEach(() => { From dd0065bca74d21cade8117bbf1eea1fb710c0683 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20D=C3=ADaz=20Gonz=C3=A1lez?= <dgonzalez@suse.de> Date: Fri, 21 Apr 2023 17:45:16 +0100 Subject: [PATCH 10/58] [web] Drop the PageOptions layout slot It'll become no longer needed --- web/src/components/core/Sidebar.test.jsx | 26 ++++++++++++------------ web/src/components/layout/Layout.jsx | 15 -------------- web/src/test-utils.js | 1 - 3 files changed, 13 insertions(+), 29 deletions(-) diff --git a/web/src/components/core/Sidebar.test.jsx b/web/src/components/core/Sidebar.test.jsx index 00d1e8b64a..ed8d6f7505 100644 --- a/web/src/components/core/Sidebar.test.jsx +++ b/web/src/components/core/Sidebar.test.jsx @@ -22,17 +22,9 @@ import React from "react"; import { screen, within } from "@testing-library/react"; import { plainRender, mockComponent, mockLayout } from "~/test-utils"; -import { PageOptions, Sidebar } from "~/components/core"; +import { Sidebar } from "~/components/core"; jest.mock("~/components/layout/Layout", () => mockLayout()); -jest.mock("~/components/core/PageOptions", () => mockComponent( - <> - <a href="#">Goes somewhere</a> - <a href="#" data-keep-sidebar-open="true">Keep it open!</a> - <button>Do something</button> - <button data-keep-sidebar-open="true">Keep it open!</button> - </> -)); it("renders the sidebar initially hidden", async () => { plainRender(<Sidebar />); @@ -41,7 +33,7 @@ it("renders the sidebar initially hidden", async () => { }); it("renders a link for displaying the sidebar", async () => { - const { user } = plainRender(<Sidebar><PageOptions /></Sidebar>); + const { user } = plainRender(<Sidebar />); const link = await screen.findByLabelText(/Show/i); const nav = await screen.findByRole("navigation", { name: /options/i }); @@ -52,7 +44,7 @@ it("renders a link for displaying the sidebar", async () => { }); it("renders a link for hiding the sidebar", async () => { - const { user } = plainRender(<Sidebar><PageOptions /></Sidebar>); + const { user } = plainRender(<Sidebar />); const openLink = await screen.findByLabelText(/Show/i); const closeLink = await screen.findByLabelText(/Hide/i); @@ -66,7 +58,7 @@ it("renders a link for hiding the sidebar", async () => { }); it("moves the focus to the close action after opening it", async () => { - const { user } = plainRender(<Sidebar><PageOptions /></Sidebar>); + const { user } = plainRender(<Sidebar />); const openLink = await screen.findByLabelText(/Show/i); const closeLink = await screen.findByLabelText(/Hide/i); @@ -78,7 +70,15 @@ it("moves the focus to the close action after opening it", async () => { describe("onClick bubbling", () => { it("hides the sidebar only if the user clicked on a link or button w/o keepSidebarOpen attribute", async () => { - const { user } = plainRender(<Sidebar><PageOptions /></Sidebar>); + const { user } = plainRender( + <Sidebar> + <a href="#">Goes somewhere</a> + <a href="#" data-keep-sidebar-open="true">Keep it open!</a> + <button>Do something</button> + <button data-keep-sidebar-open="true">Keep it open!</button> + </Sidebar> + ); + const openLink = screen.getByLabelText(/Show/i); await user.click(openLink); const nav = screen.getByRole("navigation", { name: /options/i }); diff --git a/web/src/components/layout/Layout.jsx b/web/src/components/layout/Layout.jsx index e5dbde40b0..0ef2e20278 100644 --- a/web/src/components/layout/Layout.jsx +++ b/web/src/components/layout/Layout.jsx @@ -27,7 +27,6 @@ import { ChangeProductLink } from "~/components/software"; import { About, Disclosure, LogsButton, Sidebar, ShowLogButton, ShowTerminalButton } from "~/components/core"; const PageTitle = createTeleporter(); -const PageOptions = createTeleporter(); const PageActions = createTeleporter(); const HeaderActions = createTeleporter(); const HeaderIcon = createTeleporter(); @@ -86,8 +85,6 @@ function Layout({ children }) { <Sidebar> <> - <PageOptions.Target /> - <ChangeProductLink /> <Disclosure label="Diagnostic tools" data-keep-sidebar-open> <ShowLogButton /> @@ -187,16 +184,6 @@ const MainActions = FooterActions.Source; */ const AdditionalInfo = FooterInfoArea.Source; -/** - * Component for setting the slot to place related options, usually in the Sidebar - */ -const PageOptionsSlot = PageOptions.Target; - -/** - * Component for teleport page related options to the PageOptions slot - */ -const PageOptionsContent = PageOptions.Source; - export { Layout as default, Title, @@ -205,6 +192,4 @@ export { ContextualActions, MainActions, AdditionalInfo, - PageOptionsSlot, - PageOptionsContent, }; diff --git a/web/src/test-utils.js b/web/src/test-utils.js index ba7c7f47aa..c1bb77de9c 100644 --- a/web/src/test-utils.js +++ b/web/src/test-utils.js @@ -148,7 +148,6 @@ const mockLayout = () => ({ ContextualActions: ({ children }) => children, MainActions: ({ children }) => children, AdditionalInfo: ({ children }) => children, - PageOptionsContent: ({ children }) => children, }); export { From 3145b0a646fbd42c335c44e975ed9f490a4a70bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20D=C3=ADaz=20Gonz=C3=A1lez?= <dgonzalez@suse.de> Date: Fri, 21 Apr 2023 17:47:40 +0100 Subject: [PATCH 11/58] [web] Drop PageOptions component No longer needed since we've decided to stop teleporting page related actions to make them more discoverable. --- web/src/components/core/PageOptions.jsx | 82 -------------------- web/src/components/core/PageOptions.test.jsx | 71 ----------------- web/src/components/core/index.js | 1 - 3 files changed, 154 deletions(-) delete mode 100644 web/src/components/core/PageOptions.jsx delete mode 100644 web/src/components/core/PageOptions.test.jsx diff --git a/web/src/components/core/PageOptions.jsx b/web/src/components/core/PageOptions.jsx deleted file mode 100644 index 42b3ab3937..0000000000 --- a/web/src/components/core/PageOptions.jsx +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright (c) [2023] SUSE LLC - * - * All Rights Reserved. - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of version 2 of the GNU General Public License as published - * by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, contact SUSE LLC. - * - * To contact SUSE LLC about this file by physical or electronic mail, you may - * find current contact information at www.suse.com. - */ - -// @ts-check - -import React from "react"; -import { PageOptionsContent } from '~/components/layout'; - -/** - * Wrapper for teleported page options that bubbles onClick - * event to the slot element. - * - * Needed to "dispatch" the onClick events bind to any - * parent on the DOM tree for "teleported nodes", bypassing the - * default React Portal behavior of bubbling events up through the - * React tree only. - * - * @example <caption>Simple usage</caption> - * <PageOptions title="Storage options"> - * <Link to="/storage/iscsi">Configure iSCSI devices</Link> - * <Button - * onClick={showStorageHwInfo} - * data-keep-sidebar-open - * > - * Show Storage Hardware info - * </Button> - * </PageOptions> - * - * @param {object} props - * @param {string} [props.title="Page options"] - a title for the group - * @param {string} [props.className="flex-stack"] - CSS class for the wrapper div - * @param {React.ReactElement} props.children - the teleported content - */ -export default function PageOptions({ - title = "Page options", - className = "flex-stack", - children -}) { - const forwardEvents = (target) => { - return ( - <div - className={className} - onClick={ e => { - // Using a CustomEvent because the originalTarget is needed to check the dataset. - // See Sidebar.jsx for better understanding - const customEvent = new CustomEvent( - e.type, - { ...e, detail: { originalTarget: e.target } } - ); - target.dispatchEvent(customEvent); - }} - > - <h3>{title}</h3> - {children} - </div> - ); - }; - - return ( - <PageOptionsContent> - { (target) => forwardEvents(target) } - </PageOptionsContent> - ); -} diff --git a/web/src/components/core/PageOptions.test.jsx b/web/src/components/core/PageOptions.test.jsx deleted file mode 100644 index 543d8a4e4d..0000000000 --- a/web/src/components/core/PageOptions.test.jsx +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright (c) [2023] SUSE LLC - * - * All Rights Reserved. - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of version 2 of the GNU General Public License as published - * by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, contact SUSE LLC. - * - * To contact SUSE LLC about this file by physical or electronic mail, you may - * find current contact information at www.suse.com. - */ - -import React from "react"; -import { screen } from "@testing-library/react"; -import { plainRender } from "~/test-utils"; -import { PageOptionsSlot } from "~/components/layout"; -import { PageOptions } from "~/components/core"; - -describe("PageOptions", () => { - it("renders given title", () => { - plainRender( - <> - <PageOptionsSlot /> - <PageOptions title="Awesome options"> - The page options content - </PageOptions> - </> - ); - - screen.getByText("Awesome options"); - }); - - it("renders given children", () => { - plainRender( - <> - <PageOptionsSlot /> - <PageOptions title="Awesome options"> - The page options content - </PageOptions> - </> - ); - - screen.getByText("The page options content"); - }); - - it("dispatches onClick events to the target", async () => { - const onClickHandler = jest.fn(); - const { user } = plainRender( - <> - <PageOptionsSlot onClick={onClickHandler} /> - <PageOptions title="Awesome options"> - <button>Click tester</button> - </PageOptions> - </> - ); - - const button = screen.getByRole("button", { name: "Click tester" }); - await user.click(button); - - expect(onClickHandler).toHaveBeenCalled(); - }); -}); diff --git a/web/src/components/core/index.js b/web/src/components/core/index.js index e9273624b9..db8288c25f 100644 --- a/web/src/components/core/index.js +++ b/web/src/components/core/index.js @@ -40,7 +40,6 @@ export { default as FileViewer } from "./FileViewer"; export { default as RowActions } from "./RowActions"; export { default as ShowLogButton } from "./ShowLogButton"; export { default as Page } from "./Page"; -export { default as PageOptions } from "./PageOptions"; export { default as PasswordAndConfirmationInput } from "./PasswordAndConfirmationInput"; export { default as Popup } from "./Popup"; export { default as ProgressReport } from "./ProgressReport"; From dcdf6ba9177e879d79b8e05e3e515b1f61988018 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20D=C3=ADaz=20Gonz=C3=A1lez?= <dgonzalez@suse.de> Date: Fri, 21 Apr 2023 18:17:18 +0100 Subject: [PATCH 12/58] [web] CSS adjustment --- web/src/assets/styles/blocks.scss | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/web/src/assets/styles/blocks.scss b/web/src/assets/styles/blocks.scss index 1a6782af8e..f56eea423e 100644 --- a/web/src/assets/styles/blocks.scss +++ b/web/src/assets/styles/blocks.scss @@ -202,6 +202,10 @@ section > .content { font-weight: var(--fw-bold); text-decoration: none; + svg { + color: inherit; + } + &:hover { color: var(--color-link-hover); From 1cb6b597f0937590db00f478c7a7e17f95a3a6ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20D=C3=ADaz=20Gonz=C3=A1lez?= <dgonzalez@suse.de> Date: Fri, 21 Apr 2023 19:06:02 +0100 Subject: [PATCH 13/58] [web] Internal improvements for NetworkPage --- web/src/components/network/NetworkPage.jsx | 53 ++++++++-------------- 1 file changed, 20 insertions(+), 33 deletions(-) diff --git a/web/src/components/network/NetworkPage.jsx b/web/src/components/network/NetworkPage.jsx index 462514c1f6..315df9e5ea 100644 --- a/web/src/components/network/NetworkPage.jsx +++ b/web/src/components/network/NetworkPage.jsx @@ -27,33 +27,6 @@ import { ConnectionTypes, NetworkEventTypes } from "~/client/network"; import { If, Page, Section } from "~/components/core"; import { ConnectionsTable, IpSettingsForm, NetworkPageOptions, WifiSelector } from "~/components/network"; -/** - * Internal component for displaying the WifiSelector when applicable - * @component - * - * @param {object} props - * @param {boolean} props.supported - whether the system supports scanning WiFi networks - * @param {string} [buttonVariant="link"] - the PF4/Button variant prop for the button. See {@link https://www.patternfly.org/v4/components/button#props } - */ -const WifiScan = ({ supported, actionVariant = "link" }) => { - const [wifiSelectorOpen, setWifiSelectorOpen] = useState(false); - - if (!supported) return null; - - return ( - <> - <Button - variant={actionVariant} - onClick={() => setWifiSelectorOpen(true)} - icon={<Icon name="wifi_find" size="24" />} - > - Connect to a Wi-Fi network - </Button> - <WifiSelector isOpen={wifiSelectorOpen} onClose={() => setWifiSelectorOpen(false)} /> - </> - ); -}; - /** * Internal component for displaying info when none wire connection is found * @component @@ -72,8 +45,9 @@ const NoWiredConnections = () => { * * @param {object} props * @param {boolean} props.supported - whether the system supports scanning WiFi networks + * @param {boolean} props.openWifiSelector - the function for opening the WiFi selector */ -const NoWifiConnections = ({ wifiScanSupported }) => { +const NoWifiConnections = ({ wifiScanSupported, openWifiSelector }) => { const message = wifiScanSupported ? "The system has not been configured for connecting to a WiFi network yet." : "The system does not support WiFi connections, probably because of missing or disabled hardware."; @@ -82,7 +56,20 @@ const NoWifiConnections = ({ wifiScanSupported }) => { <div className="stack"> <div className="bold">No WiFi connections found</div> <div>{message}</div> - <WifiScan supported={wifiScanSupported} actionVariant="primary" /> + <If + condition={wifiScanSupported} + then={ + <> + <Button + variant="primary" + onClick={openWifiSelector} + icon={<Icon name="wifi_find" size="24" />} + > + Connect to a Wi-Fi network + </Button> + </> + } + /> </div> ); }; @@ -160,13 +147,13 @@ export default function NetworkPage() { const WifiConnections = () => { if (activeWifiConnections.length === 0) { - return <NoWifiConnections wifiScanSupported={wifiScanSupported} />; + return ( + <NoWifiConnections wifiScanSupported={wifiScanSupported} openWifiSelector={openWifiSelector} /> + ); } return ( - <> - <ConnectionsTable connections={activeWifiConnections} onEdit={selectConnection} onForget={forgetConnection} /> - </> + <ConnectionsTable connections={activeWifiConnections} onEdit={selectConnection} onForget={forgetConnection} /> ); }; From e5e9ec0708a1f5a74095ae3369b43ca55f5625ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20D=C3=ADaz=20Gonz=C3=A1lez?= <dgonzalez@suse.de> Date: Fri, 21 Apr 2023 19:47:20 +0100 Subject: [PATCH 14/58] [web] Do not import no longer used test util Forgotten at dd0065bca74d21cade8117bbf1eea1fb710c0683 --- web/src/components/core/Sidebar.test.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/src/components/core/Sidebar.test.jsx b/web/src/components/core/Sidebar.test.jsx index ed8d6f7505..a29e802a86 100644 --- a/web/src/components/core/Sidebar.test.jsx +++ b/web/src/components/core/Sidebar.test.jsx @@ -21,7 +21,7 @@ import React from "react"; import { screen, within } from "@testing-library/react"; -import { plainRender, mockComponent, mockLayout } from "~/test-utils"; +import { plainRender, mockLayout } from "~/test-utils"; import { Sidebar } from "~/components/core"; jest.mock("~/components/layout/Layout", () => mockLayout()); From e91e7ccbeb65f913a380d003d8aa273fef86533c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20D=C3=ADaz=20Gonz=C3=A1lez?= <dgonzalez@suse.de> Date: Mon, 24 Apr 2023 13:03:52 +0100 Subject: [PATCH 15/58] [web] Limit when connect to WiFi menu option is rendered For not displaying it when the WiFi scan is not supported. See https://github.com/openSUSE/agama/pull/545#discussion_r1174995268 --- web/src/components/network/NetworkPage.jsx | 5 +---- .../components/network/NetworkPageOptions.jsx | 21 ++++++------------- 2 files changed, 7 insertions(+), 19 deletions(-) diff --git a/web/src/components/network/NetworkPage.jsx b/web/src/components/network/NetworkPage.jsx index 315df9e5ea..f643f2a76c 100644 --- a/web/src/components/network/NetworkPage.jsx +++ b/web/src/components/network/NetworkPage.jsx @@ -173,10 +173,7 @@ export default function NetworkPage() { { ready ? <WifiConnections /> : <Skeleton /> } </Section> - <NetworkPageOptions - wifiScanSupported={wifiScanSupported} - openWifiSelectorCallback={openWifiSelector} - /> + <NetworkPageOptions wifiScanSupported={wifiScanSupported} openWifiSelector={openWifiSelector} /> <If condition={wifiScanSupported} diff --git a/web/src/components/network/NetworkPageOptions.jsx b/web/src/components/network/NetworkPageOptions.jsx index 79707d99aa..b5d44fa973 100644 --- a/web/src/components/network/NetworkPageOptions.jsx +++ b/web/src/components/network/NetworkPageOptions.jsx @@ -22,26 +22,17 @@ import React from "react"; import { ContextualActions } from "~/components/core"; -const WifiScanNotSupported = () => { - return ( - <> - The system does not support scanning WiFi networks - </> - ); -}; - export default function NetworkPageOptions ({ wifiScanSupported = false, - openWifiSelectorCallback + openWifiSelector, }) { + // Since there are not more options yet, do not show the menu if WiFi scan is + // not supported. + if (!wifiScanSupported) return null; + return ( <ContextualActions> - <ContextualActions.Item - key="open-wifi-selector" - onClick={openWifiSelectorCallback} - isDisabled={!wifiScanSupported} - description={!wifiScanSupported ? <WifiScanNotSupported /> : null} - > + <ContextualActions.Item key="open-wifi-selector" onClick={openWifiSelector}> <>Connect to a Wi-Fi network</> </ContextualActions.Item> </ContextualActions> From d80381b42a10ac1100d6c3ee9023a656de0d8368 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20D=C3=ADaz=20Gonz=C3=A1lez?= <dgonzalez@suse.de> Date: Mon, 24 Apr 2023 13:09:56 +0100 Subject: [PATCH 16/58] [web] Delete a no longer needed nor true hint The option for configuring additional devices should be discoverable enough now and, hopefully, the user does not need to be taught anymore about where to find options related to a specific page. What is more, it's no longer true that such actions can be done from the Sidebar. --- .../storage/ProposalSettingsSection.jsx | 39 +++++++------------ 1 file changed, 13 insertions(+), 26 deletions(-) diff --git a/web/src/components/storage/ProposalSettingsSection.jsx b/web/src/components/storage/ProposalSettingsSection.jsx index 637b8af7bf..41ee3fac3e 100644 --- a/web/src/components/storage/ProposalSettingsSection.jsx +++ b/web/src/components/storage/ProposalSettingsSection.jsx @@ -26,7 +26,7 @@ import { Tooltip } from "@patternfly/react-core"; -import { If, PasswordAndConfirmationInput, Section, Sidebar, Popup } from "~/components/core"; +import { If, PasswordAndConfirmationInput, Section, Popup } from "~/components/core"; import { ProposalVolumes } from "~/components/storage"; import { Icon } from "~/components/layout"; import { noop } from "~/utils"; @@ -130,14 +130,6 @@ const InstallationDeviceField = ({ current, devices, isLoading, onChange }) => { return <Button variant="link" isInline onClick={openForm}>{text}</Button>; }; - const SidebarLink = ({ label }) => { - return ( - <Sidebar.OpenButton onClick={closeForm}> - {label} - </Sidebar.OpenButton> - ); - }; - if (isLoading) { return <Skeleton width="25%" />; } @@ -153,23 +145,18 @@ const InstallationDeviceField = ({ current, devices, isLoading, onChange }) => { title="Installation device" isOpen={isFormOpen} > - <div className="flex-stack"> - <If - condition={devices.length === 0} - then={<div className="bold">No devices found</div>} - else={ - <InstallationDeviceForm - id="bootDeviceForm" - current={device} - devices={devices} - onSubmit={acceptForm} - /> - } - /> - <p> - Use the <SidebarLink label="advanced options menu" /> to configure access to more disks. - </p> - </div> + <If + condition={devices.length === 0} + then={<div className="bold">No devices found</div>} + else={ + <InstallationDeviceForm + id="bootDeviceForm" + current={device} + devices={devices} + onSubmit={acceptForm} + /> + } + /> <Popup.Actions> <Popup.Confirm form="bootDeviceForm" From a492944bda33c32b3d124ac42d74b1df32b8b40a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20D=C3=ADaz=20Gonz=C3=A1lez?= <dgonzalez@suse.de> Date: Mon, 24 Apr 2023 13:24:09 +0100 Subject: [PATCH 17/58] [web] Drop Sidebar.OpenButton component Because the use case [1] for which it was introduced was already gone: to provide a link for directly opening the sidebar from a text teaching the user where to find page related actions. We can bring back the component if needed, but let's get rid of it now. This commit "reverts" f1a56eba9, df85b3c70, and a bit of f39f65dc1 [1] https://github.com/openSUSE/agama/pull/500 --- web/src/components/core/Sidebar.jsx | 28 ++-------------------------- 1 file changed, 2 insertions(+), 26 deletions(-) diff --git a/web/src/components/core/Sidebar.jsx b/web/src/components/core/Sidebar.jsx index f82f0f706f..38be25ad92 100644 --- a/web/src/components/core/Sidebar.jsx +++ b/web/src/components/core/Sidebar.jsx @@ -23,9 +23,6 @@ import React, { useEffect, useRef, useState } from "react"; import { Button, Text } from "@patternfly/react-core"; import { Icon, AppActions } from "~/components/layout"; -// FIXME: look for a better way to allow opening the Sidebar from outside -let openButtonRef = {}; - /** * Agama sidebar navigation * @component @@ -33,9 +30,8 @@ let openButtonRef = {}; * @param {object} props * @param {React.ReactElement} props.children */ -const Sidebar = ({ children }) => { +export default function Sidebar ({ children }) { const [isOpen, setIsOpen] = useState(false); - openButtonRef = useRef(null); const closeButtonRef = useRef(null); const open = () => setIsOpen(true); @@ -91,7 +87,6 @@ const Sidebar = ({ children }) => { <> <AppActions> <button - ref={openButtonRef} onClick={open} className="plain-control" aria-label="Show navigation and other options" @@ -134,23 +129,4 @@ const Sidebar = ({ children }) => { </nav> </> ); -}; - -/** - * Button for opening the sidebar - * @component - * - * @param {object} props - * @param {onClickFn} [props.onClick] - On click callback - * @param {React.ReactElement} props.children - */ -Sidebar.OpenButton = ({ onClick: onClickProp, children }) => { - const onClick = () => { - if (onClickProp !== undefined) onClickProp(); - openButtonRef.current.click(); - }; - - return <Button variant="link" isInline onClick={onClick}>{children}</Button>; -}; - -export default Sidebar; +} From 390329e4bc1be0d650a3cc181d1ddd6ddd400ae2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20D=C3=ADaz=20Gonz=C3=A1lez?= <dgonzalez@suse.de> Date: Mon, 24 Apr 2023 15:12:28 +0100 Subject: [PATCH 18/58] [web] Add documentation and test for ContextualActions --- web/src/components/core/ContextualActions.jsx | 65 ++++++++++++++++ .../core/ContextualActions.test.jsx | 76 +++++++++++++++++++ 2 files changed, 141 insertions(+) create mode 100644 web/src/components/core/ContextualActions.test.jsx diff --git a/web/src/components/core/ContextualActions.jsx b/web/src/components/core/ContextualActions.jsx index 8b9464970e..7e3395fb76 100644 --- a/web/src/components/core/ContextualActions.jsx +++ b/web/src/components/core/ContextualActions.jsx @@ -23,6 +23,13 @@ import React, { useState } from 'react'; import { Button, Dropdown, DropdownItem, DropdownGroup } from '@patternfly/react-core'; import { Icon, ContextualActions as ContextualActionsSlot } from "~/components/layout"; +/** + * Internal component to build the {ContextualActions} toggler + * @component + * + * @param {object} props + * @param {function} props.onClick + */ const Toggler = ({ onClick }) => { return ( <Button onClick={onClick} variant="plain"> @@ -31,6 +38,16 @@ const Toggler = ({ onClick }) => { ); }; +/** + * A group of actions belonging to a {ContextualActions} component + * @component + * + * Built on top of {@link https://www.patternfly.org/v4/components/dropdown/#dropdowngroup PF DropdownGroup} + * + * @see {ContextualActions } examples. + * + * @param {object} props - PF DropdownItem props, See {@link https://www.patternfly.org/v4/components/dropdowngroup} + */ const Group = ({ children, ...props }) => { return ( <DropdownGroup {...props}> @@ -39,6 +56,16 @@ const Group = ({ children, ...props }) => { ); }; +/** + * An action belonging to a {ContextualActions} component + * @component + * + * Built on top of {@link https://www.patternfly.org/v4/components/dropdown/#dropdownitem PF DropdownItem} + * + * @see {ContextualActions } examples. + * + * @param {object} props - PF DropdownItem props, See {@link https://www.patternfly.org/v4/components/dropdownitem} + */ const Item = ({ children, ...props }) => { return ( <DropdownItem {...props}> @@ -47,6 +74,44 @@ const Item = ({ children, ...props }) => { ); }; +/** + * Component for rendering actions related to the current page + * @component + * + * It consist in a {@link https://www.patternfly.org/v4/components/dropdown + * PatternFly Dropdown} "teleported" to the header, close to the + * action for opening the Sidebar + * + * @example <caption>Usage example</caption> + * <ContextualActions> + * <ContextualActions.Item + * key="reprobe-link" + * description="Run a storage device detection" + * > + * + * Reprobe + * </ContextualActions.Item> + * <ContextualActions.Group key="configuration-links" label="Configure"> + * <ContextualActions.Item + * key="dasd-link" + * href={href} + * description="Manage and format" + * > + * DASD + * </ContextualActions.Item> + * <ContextualActions.Item + * key="iscsi-link" + * href={href} + * description="Connect to iSCSI targets" + * > + * iSCSI + * </ContextualActions.Item> + * </ContextualActions.Group> + * </ContextualActions> + * + * @param {object} props + * @param {Group|Item|Array<Group|Item>} props.children + */ const ContextualActions = ({ children }) => { const [isOpen, setIsOpen] = useState(false); const onToggle = () => setIsOpen(!isOpen); diff --git a/web/src/components/core/ContextualActions.test.jsx b/web/src/components/core/ContextualActions.test.jsx new file mode 100644 index 0000000000..8fe1acc01b --- /dev/null +++ b/web/src/components/core/ContextualActions.test.jsx @@ -0,0 +1,76 @@ +/* + * Copyright (c) [2022-2023] SUSE LLC + * + * All Rights Reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as published + * by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, contact SUSE LLC. + * + * To contact SUSE LLC about this file by physical or electronic mail, you may + * find current contact information at www.suse.com. + */ + +import React from "react"; +import { screen, within } from "@testing-library/react"; +import { plainRender, mockLayout } from "~/test-utils"; +import { ContextualActions } from "~/components/core"; + +jest.mock("~/components/layout/Layout", () => mockLayout()); + +it("renders the component initially closed", async () => { + const { user } = plainRender( + <ContextualActions> + <ContextualActions.Item>A dummy action</ContextualActions.Item> + </ContextualActions> + ); + + expect(screen.queryByRole("menuitem", { name: "A dummy action" })).toBeNull(); +}); + +it("show and hide the component content on user request", async () => { + const { user } = plainRender( + <ContextualActions> + <ContextualActions.Item><>A dummy action</></ContextualActions.Item> + </ContextualActions> + ); + + const toggler = screen.getByRole("button"); + + expect(screen.queryByRole("menuitem", { name: "A dummy action" })).toBeNull(); + + await user.click(toggler); + + screen.getByRole("menuitem", { name: "A dummy action" }); + + await user.click(toggler); + + expect(screen.queryByRole("menuitem", { name: "A dummy action" })).toBeNull(); +}); + +it("hide the component content when the user clicks on one of its actions", async () => { + const { user } = plainRender( + <ContextualActions> + <ContextualActions.Group label="Refresh"> + <ContextualActions.Item><>Section</></ContextualActions.Item> + <ContextualActions.Item><>Page</></ContextualActions.Item> + </ContextualActions.Group> + <ContextualActions.Item><>Exit</></ContextualActions.Item> + </ContextualActions> + ); + + const toggler = screen.getByRole("button"); + await user.click(toggler); + const action = screen.getByRole("menuitem", { name: "Section" }); + await user.click(action); + + expect(screen.queryByRole("menuitem", { name: "A dummy action" })).toBeNull(); +}); From a195e8dc7b6b5da1b4a8a80044b8cae99a75644a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20D=C3=ADaz=20Gonz=C3=A1lez?= <dgonzalez@suse.de> Date: Mon, 24 Apr 2023 15:17:38 +0100 Subject: [PATCH 19/58] [web] CSS adjustment --- web/src/assets/styles/blocks.scss | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/web/src/assets/styles/blocks.scss b/web/src/assets/styles/blocks.scss index f56eea423e..c11acaf65a 100644 --- a/web/src/assets/styles/blocks.scss +++ b/web/src/assets/styles/blocks.scss @@ -197,6 +197,10 @@ section > .content { } } +.contextual-actions > button { + --pf-c-button--PaddingRight: 0 +} + .contextual-actions a { font-size: 16px; font-weight: var(--fw-bold); From 6a8999026890e24ad18013f86c7f483e52cc84e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20D=C3=ADaz=20Gonz=C3=A1lez?= <dgonzalez@suse.de> Date: Mon, 24 Apr 2023 15:25:24 +0100 Subject: [PATCH 20/58] [web] Rename ContextualActions to PageOptions Because the component is more related to a PageMenu or PageOptions and not to a "contextual actions". --- web/src/assets/styles/blocks.scss | 4 +- ...{ContextualActions.jsx => PageOptions.jsx} | 46 +++++++++---------- ...lActions.test.jsx => PageOptions.test.jsx} | 28 +++++------ web/src/components/core/index.js | 2 +- web/src/components/layout/Layout.jsx | 22 ++++----- .../components/network/NetworkPageOptions.jsx | 10 ++-- .../storage/ProposalPageOptions.jsx | 18 ++++---- web/src/test-utils.js | 2 +- 8 files changed, 66 insertions(+), 66 deletions(-) rename web/src/components/core/{ContextualActions.jsx => PageOptions.jsx} (76%) rename web/src/components/core/{ContextualActions.test.jsx => PageOptions.test.jsx} (75%) diff --git a/web/src/assets/styles/blocks.scss b/web/src/assets/styles/blocks.scss index c11acaf65a..3bccf67918 100644 --- a/web/src/assets/styles/blocks.scss +++ b/web/src/assets/styles/blocks.scss @@ -197,11 +197,11 @@ section > .content { } } -.contextual-actions > button { +.page-options > button { --pf-c-button--PaddingRight: 0 } -.contextual-actions a { +.page-options a { font-size: 16px; font-weight: var(--fw-bold); text-decoration: none; diff --git a/web/src/components/core/ContextualActions.jsx b/web/src/components/core/PageOptions.jsx similarity index 76% rename from web/src/components/core/ContextualActions.jsx rename to web/src/components/core/PageOptions.jsx index 7e3395fb76..a25a5a264e 100644 --- a/web/src/components/core/ContextualActions.jsx +++ b/web/src/components/core/PageOptions.jsx @@ -21,10 +21,10 @@ import React, { useState } from 'react'; import { Button, Dropdown, DropdownItem, DropdownGroup } from '@patternfly/react-core'; -import { Icon, ContextualActions as ContextualActionsSlot } from "~/components/layout"; +import { Icon, PageOptions as PageOptionsSlot } from "~/components/layout"; /** - * Internal component to build the {ContextualActions} toggler + * Internal component to build the {PageOptions} toggler * @component * * @param {object} props @@ -39,12 +39,12 @@ const Toggler = ({ onClick }) => { }; /** - * A group of actions belonging to a {ContextualActions} component + * A group of actions belonging to a {PageOptions} component * @component * * Built on top of {@link https://www.patternfly.org/v4/components/dropdown/#dropdowngroup PF DropdownGroup} * - * @see {ContextualActions } examples. + * @see {PageOptions } examples. * * @param {object} props - PF DropdownItem props, See {@link https://www.patternfly.org/v4/components/dropdowngroup} */ @@ -57,12 +57,12 @@ const Group = ({ children, ...props }) => { }; /** - * An action belonging to a {ContextualActions} component + * An action belonging to a {PageOptions} component * @component * * Built on top of {@link https://www.patternfly.org/v4/components/dropdown/#dropdownitem PF DropdownItem} * - * @see {ContextualActions } examples. + * @see {PageOptions } examples. * * @param {object} props - PF DropdownItem props, See {@link https://www.patternfly.org/v4/components/dropdownitem} */ @@ -83,56 +83,56 @@ const Item = ({ children, ...props }) => { * action for opening the Sidebar * * @example <caption>Usage example</caption> - * <ContextualActions> - * <ContextualActions.Item + * <PageOptions> + * <PageOptions.Item * key="reprobe-link" * description="Run a storage device detection" * > * * Reprobe - * </ContextualActions.Item> - * <ContextualActions.Group key="configuration-links" label="Configure"> - * <ContextualActions.Item + * </PageOptions.Item> + * <PageOptions.Group key="configuration-links" label="Configure"> + * <PageOptions.Item * key="dasd-link" * href={href} * description="Manage and format" * > * DASD - * </ContextualActions.Item> - * <ContextualActions.Item + * </PageOptions.Item> + * <PageOptions.Item * key="iscsi-link" * href={href} * description="Connect to iSCSI targets" * > * iSCSI - * </ContextualActions.Item> - * </ContextualActions.Group> - * </ContextualActions> + * </PageOptions.Item> + * </PageOptions.Group> + * </PageOptions> * * @param {object} props * @param {Group|Item|Array<Group|Item>} props.children */ -const ContextualActions = ({ children }) => { +const PageOptions = ({ children }) => { const [isOpen, setIsOpen] = useState(false); const onToggle = () => setIsOpen(!isOpen); const onSelect = () => setIsOpen(false); return ( - <ContextualActionsSlot> + <PageOptionsSlot> <Dropdown isOpen={isOpen} toggle={<Toggler onClick={onToggle} />} onSelect={onSelect} dropdownItems={Array(children)} position="right" - className="contextual-actions" + className="page-options" isGrouped /> - </ContextualActionsSlot> + </PageOptionsSlot> ); }; -ContextualActions.Group = Group; -ContextualActions.Item = Item; +PageOptions.Group = Group; +PageOptions.Item = Item; -export default ContextualActions; +export default PageOptions; diff --git a/web/src/components/core/ContextualActions.test.jsx b/web/src/components/core/PageOptions.test.jsx similarity index 75% rename from web/src/components/core/ContextualActions.test.jsx rename to web/src/components/core/PageOptions.test.jsx index 8fe1acc01b..472ef22bb1 100644 --- a/web/src/components/core/ContextualActions.test.jsx +++ b/web/src/components/core/PageOptions.test.jsx @@ -22,15 +22,15 @@ import React from "react"; import { screen, within } from "@testing-library/react"; import { plainRender, mockLayout } from "~/test-utils"; -import { ContextualActions } from "~/components/core"; +import { PageOptions } from "~/components/core"; jest.mock("~/components/layout/Layout", () => mockLayout()); it("renders the component initially closed", async () => { const { user } = plainRender( - <ContextualActions> - <ContextualActions.Item>A dummy action</ContextualActions.Item> - </ContextualActions> + <PageOptions> + <PageOptions.Item>A dummy action</PageOptions.Item> + </PageOptions> ); expect(screen.queryByRole("menuitem", { name: "A dummy action" })).toBeNull(); @@ -38,9 +38,9 @@ it("renders the component initially closed", async () => { it("show and hide the component content on user request", async () => { const { user } = plainRender( - <ContextualActions> - <ContextualActions.Item><>A dummy action</></ContextualActions.Item> - </ContextualActions> + <PageOptions> + <PageOptions.Item><>A dummy action</></PageOptions.Item> + </PageOptions> ); const toggler = screen.getByRole("button"); @@ -58,13 +58,13 @@ it("show and hide the component content on user request", async () => { it("hide the component content when the user clicks on one of its actions", async () => { const { user } = plainRender( - <ContextualActions> - <ContextualActions.Group label="Refresh"> - <ContextualActions.Item><>Section</></ContextualActions.Item> - <ContextualActions.Item><>Page</></ContextualActions.Item> - </ContextualActions.Group> - <ContextualActions.Item><>Exit</></ContextualActions.Item> - </ContextualActions> + <PageOptions> + <PageOptions.Group label="Refresh"> + <PageOptions.Item><>Section</></PageOptions.Item> + <PageOptions.Item><>Page</></PageOptions.Item> + </PageOptions.Group> + <PageOptions.Item><>Exit</></PageOptions.Item> + </PageOptions> ); const toggler = screen.getByRole("button"); diff --git a/web/src/components/core/index.js b/web/src/components/core/index.js index db8288c25f..aa646259a7 100644 --- a/web/src/components/core/index.js +++ b/web/src/components/core/index.js @@ -20,7 +20,7 @@ */ export { default as About } from "./About"; -export { default as ContextualActions } from "./ContextualActions"; +export { default as PageOptions } from "./PageOptions"; export { default as Disclosure } from "./Disclosure"; export { default as Sidebar } from "./Sidebar"; export { default as Section } from "./Section"; diff --git a/web/src/components/layout/Layout.jsx b/web/src/components/layout/Layout.jsx index 0ef2e20278..1cbdbb836b 100644 --- a/web/src/components/layout/Layout.jsx +++ b/web/src/components/layout/Layout.jsx @@ -130,30 +130,30 @@ const Title = PageTitle.Source; const PageIcon = HeaderIcon.Source; /** - * Component for setting global actions shown on the header right + * Component for setting page actions shown on the header right * * @example - * import { AppActions } from "agama-layout"; + * import { PageActions } from "agama-layout"; * import { FancyButton } from "somewhere"; * ... - * <AppActions> + * <PageActions> * <FancyButton onClick={() => console.log("do something")} /> - * </AppActions> + * </PageActions> */ -const AppActions = HeaderActions.Source; +const PageOptions = PageActions.Source; /** - * Component for setting page actions shown on the header right + * Component for setting global actions shown on the header right * * @example - * import { PageActions } from "agama-layout"; + * import { AppActions } from "agama-layout"; * import { FancyButton } from "somewhere"; * ... - * <PageActions> + * <AppActions> * <FancyButton onClick={() => console.log("do something")} /> - * </PageActions> + * </AppActions> */ -const ContextualActions = PageActions.Source; +const AppActions = HeaderActions.Source; /** * Component for setting the main actions shown on the footer right @@ -189,7 +189,7 @@ export { Title, PageIcon, AppActions, - ContextualActions, + PageOptions, MainActions, AdditionalInfo, }; diff --git a/web/src/components/network/NetworkPageOptions.jsx b/web/src/components/network/NetworkPageOptions.jsx index b5d44fa973..01286ecf73 100644 --- a/web/src/components/network/NetworkPageOptions.jsx +++ b/web/src/components/network/NetworkPageOptions.jsx @@ -20,7 +20,7 @@ */ import React from "react"; -import { ContextualActions } from "~/components/core"; +import { PageOptions } from "~/components/core"; export default function NetworkPageOptions ({ wifiScanSupported = false, @@ -31,10 +31,10 @@ export default function NetworkPageOptions ({ if (!wifiScanSupported) return null; return ( - <ContextualActions> - <ContextualActions.Item key="open-wifi-selector" onClick={openWifiSelector}> + <PageOptions> + <PageOptions.Item key="open-wifi-selector" onClick={openWifiSelector}> <>Connect to a Wi-Fi network</> - </ContextualActions.Item> - </ContextualActions> + </PageOptions.Item> + </PageOptions> ); } diff --git a/web/src/components/storage/ProposalPageOptions.jsx b/web/src/components/storage/ProposalPageOptions.jsx index a464719f00..a6a90ad060 100644 --- a/web/src/components/storage/ProposalPageOptions.jsx +++ b/web/src/components/storage/ProposalPageOptions.jsx @@ -22,19 +22,19 @@ import React, { useEffect, useState } from "react"; import { useHref } from "react-router-dom"; import { useInstallerClient } from "~/context/installer"; -import { If, ContextualActions } from "~/components/core"; +import { If, PageOptions } from "~/components/core"; const DASDLink = () => { const href = useHref("/storage/dasd"); return ( - <ContextualActions.Item + <PageOptions.Item key="dasd-link" href={href} description="Manage and format" > DASD - </ContextualActions.Item> + </PageOptions.Item> ); }; @@ -42,13 +42,13 @@ const ISCSILink = () => { const href = useHref("/storage/iscsi"); return ( - <ContextualActions.Item + <PageOptions.Item key="iscsi-link" href={href} description="Connect to iSCSI targets" > iSCSI - </ContextualActions.Item> + </PageOptions.Item> ); }; @@ -61,14 +61,14 @@ export default function ProposalPageOptions () { }, [client.dasd]); return ( - <ContextualActions> - <ContextualActions.Group + <PageOptions> + <PageOptions.Group label="Configure" key="devices-options" > <If condition={showDasdLink} then={<DASDLink />} /> <ISCSILink /> - </ContextualActions.Group> - </ContextualActions> + </PageOptions.Group> + </PageOptions> ); } diff --git a/web/src/test-utils.js b/web/src/test-utils.js index c1bb77de9c..a472747423 100644 --- a/web/src/test-utils.js +++ b/web/src/test-utils.js @@ -145,7 +145,7 @@ const mockLayout = () => ({ Title: ({ children }) => children, PageIcon: ({ children }) => children, AppActions: ({ children }) => children, - ContextualActions: ({ children }) => children, + PageOptions: ({ children }) => children, MainActions: ({ children }) => children, AdditionalInfo: ({ children }) => children, }); From fd4f07991e3412bd6e06aeaf9be8b86ec06f9d19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20D=C3=ADaz=20Gonz=C3=A1lez?= <dgonzalez@suse.de> Date: Mon, 24 Apr 2023 16:47:38 +0100 Subject: [PATCH 21/58] [web] Add documentation --- web/src/components/network/NetworkPageOptions.jsx | 8 ++++++++ web/src/components/storage/ProposalPageOptions.jsx | 12 ++++++++++++ 2 files changed, 20 insertions(+) diff --git a/web/src/components/network/NetworkPageOptions.jsx b/web/src/components/network/NetworkPageOptions.jsx index 01286ecf73..b27cb1d4ab 100644 --- a/web/src/components/network/NetworkPageOptions.jsx +++ b/web/src/components/network/NetworkPageOptions.jsx @@ -22,6 +22,14 @@ import React from "react"; import { PageOptions } from "~/components/core"; +/** + * Component for rendering the options available from Network page + * @component + * + * @param {object} props + * @param {boolean} [props.wifiScanSupported=false] - wether the scan of WiFi networks is supported + * @param {function} props.openWifiSelector - the function for opening the WiFi network selector + */ export default function NetworkPageOptions ({ wifiScanSupported = false, openWifiSelector, diff --git a/web/src/components/storage/ProposalPageOptions.jsx b/web/src/components/storage/ProposalPageOptions.jsx index a6a90ad060..858e8310e3 100644 --- a/web/src/components/storage/ProposalPageOptions.jsx +++ b/web/src/components/storage/ProposalPageOptions.jsx @@ -24,6 +24,10 @@ import { useHref } from "react-router-dom"; import { useInstallerClient } from "~/context/installer"; import { If, PageOptions } from "~/components/core"; +/** + * Internal component for build the link to Storage/DASD page + * @component + */ const DASDLink = () => { const href = useHref("/storage/dasd"); @@ -38,6 +42,10 @@ const DASDLink = () => { ); }; +/** + * Internal component for build the link to Storage/iSCSI page + * @component + */ const ISCSILink = () => { const href = useHref("/storage/iscsi"); @@ -52,6 +60,10 @@ const ISCSILink = () => { ); }; +/** + * Component for rendering the options available from Storage/ProposalPage + * @component + */ export default function ProposalPageOptions () { const [showDasdLink, setShowDasdLink] = useState(false); const { storage: client } = useInstallerClient(); From a60b512cde93747d7a882f602848e760d55f6a53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20D=C3=ADaz=20Gonz=C3=A1lez?= <dgonzalez@suse.de> Date: Mon, 24 Apr 2023 16:54:53 +0100 Subject: [PATCH 22/58] [web] Update the changes file --- web/package/cockpit-agama.changes | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/web/package/cockpit-agama.changes b/web/package/cockpit-agama.changes index c204d48697..db0d9246d9 100644 --- a/web/package/cockpit-agama.changes +++ b/web/package/cockpit-agama.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Mon Apr 24 15:53:35 UTC 2023 - David Diaz <dgonzalez@suse.com> + +- Extract page options from the Sidebar to make them + more discoverable (gh#openSUSE/agama#545) + ------------------------------------------------------------------- Fri Apr 14 13:08:05 UTC 2023 - José Iván López González <jlopez@suse.com> From 6d9c61b72848071012eee543a82aff15a0cca130 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20D=C3=ADaz=20Gonz=C3=A1lez?= <dgonzalez@suse.de> Date: Tue, 25 Apr 2023 08:39:06 +0100 Subject: [PATCH 23/58] [web] Please linters --- web/src/components/core/PageOptions.test.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/web/src/components/core/PageOptions.test.jsx b/web/src/components/core/PageOptions.test.jsx index 472ef22bb1..00c26aaafa 100644 --- a/web/src/components/core/PageOptions.test.jsx +++ b/web/src/components/core/PageOptions.test.jsx @@ -20,14 +20,14 @@ */ import React from "react"; -import { screen, within } from "@testing-library/react"; +import { screen } from "@testing-library/react"; import { plainRender, mockLayout } from "~/test-utils"; import { PageOptions } from "~/components/core"; jest.mock("~/components/layout/Layout", () => mockLayout()); it("renders the component initially closed", async () => { - const { user } = plainRender( + plainRender( <PageOptions> <PageOptions.Item>A dummy action</PageOptions.Item> </PageOptions> From a0d7685a93e084d37e373a47a9525acde10f72cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20D=C3=ADaz=20Gonz=C3=A1lez?= <dgonzalez@suse.de> Date: Tue, 25 Apr 2023 09:24:15 +0100 Subject: [PATCH 24/58] [web] Add a the initial version of a notification mark A simple component for rendering a notification/status mark, consisting of an absolute right positioned circle on top of a relative positioned element. The idea is to catch the users' attention for clicking on the element presenting the mark, but having in mind that they can continue with the installation without doing so. --- web/src/assets/styles/blocks.scss | 13 ++++++ web/src/assets/styles/utilities.scss | 1 + web/src/components/core/NotificationMark.jsx | 42 +++++++++++++++++++ .../components/core/NotificationMark.test.jsx | 30 +++++++++++++ web/src/components/core/Sidebar.jsx | 2 + web/src/components/core/index.js | 1 + 6 files changed, 89 insertions(+) create mode 100644 web/src/components/core/NotificationMark.jsx create mode 100644 web/src/components/core/NotificationMark.test.jsx diff --git a/web/src/assets/styles/blocks.scss b/web/src/assets/styles/blocks.scss index 3bccf67918..08e40a0445 100644 --- a/web/src/assets/styles/blocks.scss +++ b/web/src/assets/styles/blocks.scss @@ -218,3 +218,16 @@ section > .content { } } } + +span.notification-mark { + --border-width: 2px; + --size: calc(var(--fs-base) + var(--border-width)); + + position: absolute; + right: 0; + background: var(--color-primary-lighter); + border: var(--border-width) solid var(--color-primary); + width: var(--size); + height: var(--size); + border-radius: 999px; +} diff --git a/web/src/assets/styles/utilities.scss b/web/src/assets/styles/utilities.scss index 5ccf6d7e2a..fbcf746fb4 100644 --- a/web/src/assets/styles/utilities.scss +++ b/web/src/assets/styles/utilities.scss @@ -114,6 +114,7 @@ } .plain-control { + position: relative; background: none; border: none; } diff --git a/web/src/components/core/NotificationMark.jsx b/web/src/components/core/NotificationMark.jsx new file mode 100644 index 0000000000..8e6feac3cf --- /dev/null +++ b/web/src/components/core/NotificationMark.jsx @@ -0,0 +1,42 @@ +/* + * Copyright (c) [2023] SUSE LLC + * + * All Rights Reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as published + * by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, contact SUSE LLC. + * + * To contact SUSE LLC about this file by physical or electronic mail, you may + * find current contact information at www.suse.com. + */ + +import React from "react"; + +/** + * A notification mark that icon for catching the users attention when there is + * something that can be interesting for them but not urgent enough to use a + * (blocking) Popup. + * + * @component + * + * Initially though to be displayed on top of the Sidebar icon. + * + * Use only when the information to show might be overlooked without risk and/or + * when the information will be displayed sooner or later in other way (in a + * confirmation dialog, for example). + * + * @param {object} props + * @param {string} props.label - the label to be announced by screen readers + */ +export default function NotificationMark ({ label }) { + return <span className="notification-mark" role="status" aria-label={label} />; +} diff --git a/web/src/components/core/NotificationMark.test.jsx b/web/src/components/core/NotificationMark.test.jsx new file mode 100644 index 0000000000..551c019a9f --- /dev/null +++ b/web/src/components/core/NotificationMark.test.jsx @@ -0,0 +1,30 @@ +/* + * Copyright (c) [2023] SUSE LLC + * + * All Rights Reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as published + * by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, contact SUSE LLC. + * + * To contact SUSE LLC about this file by physical or electronic mail, you may + * find current contact information at www.suse.com. + */ + +import React from "react"; +import { screen } from "@testing-library/react"; +import { plainRender } from "~/test-utils"; +import { NotificationMark } from "~/components/core"; + +it("renders a span with status role", async () => { + plainRender(<NotificationMark label="Some issues detected, please have a look" />); + screen.getByRole("status", { name: "Some issues detected, please have a look" }); +}); diff --git a/web/src/components/core/Sidebar.jsx b/web/src/components/core/Sidebar.jsx index 38be25ad92..7b9a0f74de 100644 --- a/web/src/components/core/Sidebar.jsx +++ b/web/src/components/core/Sidebar.jsx @@ -22,6 +22,7 @@ import React, { useEffect, useRef, useState } from "react"; import { Button, Text } from "@patternfly/react-core"; import { Icon, AppActions } from "~/components/layout"; +import { NotificationMark } from "~/components/core"; /** * Agama sidebar navigation @@ -93,6 +94,7 @@ export default function Sidebar ({ children }) { aria-controls="navigation-and-options" aria-expanded={isOpen} > + <NotificationMark /> <Icon name="menu" /> </button> </AppActions> diff --git a/web/src/components/core/index.js b/web/src/components/core/index.js index aa646259a7..976870f9b7 100644 --- a/web/src/components/core/index.js +++ b/web/src/components/core/index.js @@ -47,3 +47,4 @@ export { default as ProgressText } from "./ProgressText"; export { default as ValidationErrors } from "./ValidationErrors"; export { default as Terminal } from "./Terminal"; export { default as ShowTerminalButton } from "./ShowTerminalButton"; +export { default as NotificationMark } from "./NotificationMark"; From 78b4ab41133629458f99829b3f1865b84d7e9518 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Iv=C3=A1n=20L=C3=B3pez=20Gonz=C3=A1lez?= <jlopez@suse.com> Date: Wed, 26 Apr 2023 16:05:48 +0100 Subject: [PATCH 25/58] [service] Add Issue class --- service/lib/agama/issue.rb | 77 ++++++++++++++++++++++++++++++++ service/test/agama/issue_test.rb | 45 +++++++++++++++++++ 2 files changed, 122 insertions(+) create mode 100644 service/lib/agama/issue.rb create mode 100644 service/test/agama/issue_test.rb diff --git a/service/lib/agama/issue.rb b/service/lib/agama/issue.rb new file mode 100644 index 0000000000..067cce1a7c --- /dev/null +++ b/service/lib/agama/issue.rb @@ -0,0 +1,77 @@ +# frozen_string_literal: true + +# Copyright (c) [2023] SUSE LLC +# +# All Rights Reserved. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of version 2 of the GNU General Public License as published +# by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +# more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, contact SUSE LLC. +# +# To contact SUSE LLC about this file by physical or electronic mail, you may +# find current contact information at www.suse.com. + +module Agama + # Represents an issue + class Issue + # Description of the issue + # + # @return [String] + attr_reader :description + + # Details of the isssue, if any + # + # @return [String, nil] + attr_reader :details + + # Source of the issue, see {Source} + # + # @return [Symbol, nil] + attr_reader :source + + # Severity of the issue, see {Severity} + # + # @return [Symbol] + attr_reader :severity + + # Defines possible sources + module Source + SYSTEM = :system + CONFIG = :config + end + + # Defines different severities + module Severity + WARN = :warn + ERROR = :error + end + + # Constructor + # + # @param description [String] + # @param details [String, nil] + # @param source [symbol, nil] + # @param severity [symbol] + def initialize(description, details: "", source: nil, severity: Severity::WARN) + @description = description + @details = details + @source = source + @severity = severity + end + + # Whether the issue has error severity + # + # @return [Boolean] + def error? + severity == Severity::ERROR + end + end +end diff --git a/service/test/agama/issue_test.rb b/service/test/agama/issue_test.rb new file mode 100644 index 0000000000..ae2a00d858 --- /dev/null +++ b/service/test/agama/issue_test.rb @@ -0,0 +1,45 @@ +# frozen_string_literal: true + +# Copyright (c) [2023] SUSE LLC +# +# All Rights Reserved. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of version 2 of the GNU General Public License as published +# by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +# more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, contact SUSE LLC. +# +# To contact SUSE LLC about this file by physical or electronic mail, you may +# find current contact information at www.suse.com. + +require_relative "../test_helper" +require "agama/issue" + +describe Agama::Issue do + subject { described_class.new("Issue test", severity: severity) } + + describe "#error?" do + context "if the issue has warn severity" do + let(:severity) { Agama::Issue::Severity::WARN } + + it "returns false" do + expect(subject.error?).to eq(false) + end + end + + context "if the issue has error severity" do + let(:severity) { Agama::Issue::Severity::ERROR } + + it "returns true" do + expect(subject.error?).to eq(true) + end + end + end +end From 04e87fdeeb54b7ce88e5daf9bbc513b9c1518933 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Iv=C3=A1n=20L=C3=B3pez=20Gonz=C3=A1lez?= <jlopez@suse.com> Date: Wed, 26 Apr 2023 16:08:28 +0100 Subject: [PATCH 26/58] [service] Add issues interface --- service/lib/agama/dbus.rb | 24 +++++- service/lib/agama/dbus/interfaces.rb | 33 ++++++++ service/lib/agama/dbus/interfaces/issues.rb | 74 ++++++++++++++++++ .../test/agama/dbus/interfaces/issues_test.rb | 76 +++++++++++++++++++ 4 files changed, 206 insertions(+), 1 deletion(-) create mode 100644 service/lib/agama/dbus/interfaces.rb create mode 100644 service/lib/agama/dbus/interfaces/issues.rb create mode 100644 service/test/agama/dbus/interfaces/issues_test.rb diff --git a/service/lib/agama/dbus.rb b/service/lib/agama/dbus.rb index 5c9f5f3491..45354f6c27 100644 --- a/service/lib/agama/dbus.rb +++ b/service/lib/agama/dbus.rb @@ -1,7 +1,26 @@ # frozen_string_literal: true +# Copyright (c) [2022] SUSE LLC +# +# All Rights Reserved. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of version 2 of the GNU General Public License as published +# by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +# more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, contact SUSE LLC. +# +# To contact SUSE LLC about this file by physical or electronic mail, you may +# find current contact information at www.suse.com. + module Agama - # Namespace for DBus API + # Namespace for D-Bus API module DBus end end @@ -9,3 +28,6 @@ module DBus require "agama/dbus/manager" require "agama/dbus/language" require "agama/dbus/software" +require "agama/dbus/storage" +require "agama/dbus/users" +require "agama/dbus/questions" diff --git a/service/lib/agama/dbus/interfaces.rb b/service/lib/agama/dbus/interfaces.rb new file mode 100644 index 0000000000..a439d3f505 --- /dev/null +++ b/service/lib/agama/dbus/interfaces.rb @@ -0,0 +1,33 @@ +# frozen_string_literal: true + +# Copyright (c) [2023] SUSE LLC +# +# All Rights Reserved. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of version 2 of the GNU General Public License as published +# by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +# more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, contact SUSE LLC. +# +# To contact SUSE LLC about this file by physical or electronic mail, you may +# find current contact information at www.suse.com. + +module Agama + module DBus + # Namespace for generic D-Bus interfaces + module Interfaces + end + end +end + +require "agama/dbus/interfaces/issues" +require "agama/dbus/interfaces/progress" +require "agama/dbus/interfaces/service_status" +require "agama/dbus/interfaces/validation" diff --git a/service/lib/agama/dbus/interfaces/issues.rb b/service/lib/agama/dbus/interfaces/issues.rb new file mode 100644 index 0000000000..758edba54f --- /dev/null +++ b/service/lib/agama/dbus/interfaces/issues.rb @@ -0,0 +1,74 @@ +# frozen_string_literal: true + +# Copyright (c) [2022] SUSE LLC +# +# All Rights Reserved. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of version 2 of the GNU General Public License as published +# by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +# more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, contact SUSE LLC. +# +# To contact SUSE LLC about this file by physical or electronic mail, you may +# find current contact information at www.suse.com. + +require "dbus" +require "agama/issue" + +module Agama + module DBus + module Interfaces + # Mixin to define the Issues D-Bus interface + # + # @note This mixin is expected to be included in a class that inherits from {DBus::BaseObject} + # and it requires a #issues method that returns an array of {Issue} objects. + module Issues + ISSUES_INTERFACE = "org.opensuse.Agama1.Issues" + + # Issues with the D-Bus format + # + # @return [Array<Array(String, String, Integer, Integer)>] The description, details, source + # and severity of each issue. + # Source: 1 for system, 2 for config and 3 for unknown. + # Severity: 0 for warn and 1 for error. + def dbus_issues + issues.map do |issue| + source = case issue.source + when Agama::Issue::Source::SYSTEM + 1 + when Agama::Issue::Source::CONFIG + 2 + else + 0 + end + severity = issue.severity == Agama::Issue::Severity::WARN ? 0 : 1 + + [issue.description, issue.details.to_s, source, severity] + end + end + + # Emits the signal for properties changed + def issues_properties_changed + dbus_properties_changed(ISSUES_INTERFACE, + interfaces_and_properties[ISSUES_INTERFACE], []) + end + + def self.included(base) + base.class_eval do + dbus_interface ISSUES_INTERFACE do + # @see {#dbus_issues} + dbus_reader :dbus_issues, "a(ssuu)", dbus_name: "All" + end + end + end + end + end + end +end diff --git a/service/test/agama/dbus/interfaces/issues_test.rb b/service/test/agama/dbus/interfaces/issues_test.rb new file mode 100644 index 0000000000..146e579d6d --- /dev/null +++ b/service/test/agama/dbus/interfaces/issues_test.rb @@ -0,0 +1,76 @@ +# frozen_string_literal: true + +# Copyright (c) [2023] SUSE LLC +# +# All Rights Reserved. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of version 2 of the GNU General Public License as published +# by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +# more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, contact SUSE LLC. +# +# To contact SUSE LLC about this file by physical or electronic mail, you may +# find current contact information at www.suse.com. + +require_relative "../../../test_helper" +require "dbus" +require "agama/dbus/interfaces/issues" +require "agama/issue" + +class DBusObjectWithIssuesInterface < ::DBus::Object + include Agama::DBus::Interfaces::Issues + + def initialize + super("org.opensuse.Agama.UnitTests") + end + + def issues + [ + Agama::Issue.new("Issue 1", + details: "Details 1", + source: Agama::Issue::Source::SYSTEM, + severity: Agama::Issue::Severity::WARN), + Agama::Issue.new("Issue 2", + details: "Details 2", + source: Agama::Issue::Source::CONFIG, + severity: Agama::Issue::Severity::ERROR) + ] + end +end + +describe DBusObjectWithIssuesInterface do + let(:issues_interface) do + Agama::DBus::Interfaces::Issues::ISSUES_INTERFACE + end + + it "defines Issues D-Bus interface" do + expect(subject.intfs.keys).to include(issues_interface) + end + + describe "#dbus_issues" do + it "returns the info of all issues" do + result = subject.dbus_issues + + expect(result).to contain_exactly( + ["Issue 1", "Details 1", 1, 0], + ["Issue 2", "Details 2", 2, 1] + ) + end + end + + describe "#issues_properties_changed" do + it "emits a properties changed signal for issues" do + expect(subject).to receive(:dbus_properties_changed) + .with(issues_interface, anything, anything) + + subject.issues_properties_changed + end + end +end From f957f2e0193a6c95d420ca34286ccd5334a82f41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Iv=C3=A1n=20L=C3=B3pez=20Gonz=C3=A1lez?= <jlopez@suse.com> Date: Wed, 26 Apr 2023 16:43:24 +0100 Subject: [PATCH 27/58] [service] Add shared examples for progress --- service/test/agama/manager_test.rb | 3 +++ service/test/agama/software/manager_test.rb | 3 +++ service/test/agama/storage/finisher_test.rb | 3 +++ ...ress_test.rb => with_progress_examples.rb} | 21 +++++++------------ 4 files changed, 17 insertions(+), 13 deletions(-) rename service/test/agama/{with_progress_test.rb => with_progress_examples.rb} (86%) diff --git a/service/test/agama/manager_test.rb b/service/test/agama/manager_test.rb index 69cf6f555f..24d00a9138 100644 --- a/service/test/agama/manager_test.rb +++ b/service/test/agama/manager_test.rb @@ -20,6 +20,7 @@ # find current contact information at www.suse.com. require_relative "../test_helper" +require_relative "./with_progress_examples" require "agama/manager" require "agama/config" require "agama/question" @@ -213,4 +214,6 @@ expect(path).to eq("/tmp/y2log-hWBn95.tar.xz") end end + + include_examples "progress" end diff --git a/service/test/agama/software/manager_test.rb b/service/test/agama/software/manager_test.rb index e706943c71..1dd557a6f1 100644 --- a/service/test/agama/software/manager_test.rb +++ b/service/test/agama/software/manager_test.rb @@ -20,6 +20,7 @@ # find current contact information at www.suse.com. require_relative "../../test_helper" +require_relative "../with_progress_examples" require_relative File.join( SRC_PATH, "agama", "dbus", "y2dir", "software", "modules", "PackageCallbacks.rb" ) @@ -282,4 +283,6 @@ end end end + + include_examples "progress" end diff --git a/service/test/agama/storage/finisher_test.rb b/service/test/agama/storage/finisher_test.rb index c4d325a783..3f5f3eac19 100644 --- a/service/test/agama/storage/finisher_test.rb +++ b/service/test/agama/storage/finisher_test.rb @@ -21,6 +21,7 @@ require_relative "../../test_helper" require_relative "storage_helpers" +require_relative "../with_progress_examples" require "agama/helpers" require "agama/config" require "agama/security" @@ -137,4 +138,6 @@ subject.run end end + + include_examples "progress" end diff --git a/service/test/agama/with_progress_test.rb b/service/test/agama/with_progress_examples.rb similarity index 86% rename from service/test/agama/with_progress_test.rb rename to service/test/agama/with_progress_examples.rb index 1c086b3ecd..a4e463e799 100644 --- a/service/test/agama/with_progress_test.rb +++ b/service/test/agama/with_progress_examples.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -# Copyright (c) [2022] SUSE LLC +# Copyright (c) [2023] SUSE LLC # # All Rights Reserved. # @@ -20,15 +20,8 @@ # find current contact information at www.suse.com. require_relative "../test_helper" -require "agama/with_progress" - -class WithProgressTest - include Agama::WithProgress -end - -describe WithProgressTest do - let(:logger) { Logger.new($stdout, level: :warn) } +shared_examples "progress" do describe "#progress" do context "if not progress was started" do it "returns nil" do @@ -73,18 +66,20 @@ class WithProgressTest end it "configures the 'on_change' callbacks for the new progress" do - subject.on_progress_change { logger.info("progress changes") } + callback = proc {} + subject.on_progress_change(&callback) - expect(logger).to receive(:info).with(/progress changes/) + expect(callback).to receive(:call) subject.start_progress(1) subject.progress.step("step 1") end it "configures the 'on_finish' callbacks for the new progress" do - subject.on_progress_finish { logger.info("progress finishes") } + callback = proc {} + subject.on_progress_finish(&callback) - expect(logger).to receive(:info).with(/progress finishes/) + expect(callback).to receive(:call) subject.start_progress(1) subject.progress.finish From d57181cf6e16e7eba234f7617c642d0c6329b866 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Iv=C3=A1n=20L=C3=B3pez=20Gonz=C3=A1lez?= <jlopez@suse.com> Date: Wed, 26 Apr 2023 16:45:16 +0100 Subject: [PATCH 28/58] [service] Add issues to storage --- service/lib/agama/dbus/storage/manager.rb | 35 ++-- service/lib/agama/manager.rb | 2 +- service/lib/agama/storage/manager.rb | 122 +++++++++--- service/lib/agama/storage/proposal.rb | 69 ++++--- service/lib/agama/with_issues.rb | 48 +++++ .../test/agama/dbus/storage/manager_test.rb | 14 +- service/test/agama/manager_test.rb | 6 +- service/test/agama/storage/manager_test.rb | 185 ++++++++++++++---- service/test/agama/storage/proposal_test.rb | 65 +++--- service/test/agama/with_issues_examples.rb | 49 +++++ 10 files changed, 441 insertions(+), 154 deletions(-) create mode 100644 service/lib/agama/with_issues.rb create mode 100644 service/test/agama/with_issues_examples.rb diff --git a/service/lib/agama/dbus/storage/manager.rb b/service/lib/agama/dbus/storage/manager.rb index d7c8ccf11d..213c0f4b77 100644 --- a/service/lib/agama/dbus/storage/manager.rb +++ b/service/lib/agama/dbus/storage/manager.rb @@ -23,9 +23,9 @@ require "yast" require "agama/dbus/base_object" require "agama/dbus/with_service_status" +require "agama/dbus/interfaces/issues" require "agama/dbus/interfaces/progress" require "agama/dbus/interfaces/service_status" -require "agama/dbus/interfaces/validation" require "agama/dbus/storage/dasd_manager_interface" require "agama/dbus/storage/proposal" require "agama/dbus/storage/proposal_settings_converter" @@ -43,9 +43,9 @@ class Manager < BaseObject include WithISCSIAuth include WithServiceStatus include ::DBus::ObjectManager + include DBus::Interfaces::Issues include DBus::Interfaces::Progress include DBus::Interfaces::ServiceStatus - include DBus::Interfaces::Validation PATH = "/org/opensuse/Agama/Storage1" private_constant :PATH @@ -57,6 +57,7 @@ class Manager < BaseObject def initialize(backend, logger) super(PATH, logger: logger) @backend = backend + register_storage_callbacks register_proposal_callbacks register_progress_callbacks register_service_status_callbacks @@ -68,14 +69,18 @@ def initialize(backend, logger) register_and_extend_dasd_callbacks end + # List of issues, see {DBus::Interfaces::Issues} + # + # @return [Array<Agama::Issue>] + def issues + backend.issues + end + STORAGE_INTERFACE = "org.opensuse.Agama.Storage1" private_constant :STORAGE_INTERFACE def probe - busy_while do - backend.probe - storage_properties_changed - end + busy_while { backend.probe } end def install @@ -90,7 +95,7 @@ def finish # # @return [Boolean] def deprecated_system - backend.deprecated_system + backend.deprecated_system? end dbus_interface STORAGE_INTERFACE do @@ -241,11 +246,15 @@ def proposal backend.proposal end + def register_storage_callbacks + backend.on_issues_change { issues_properties_changed } + backend.on_deprecated_system_change { storage_properties_changed } + end + def register_proposal_callbacks proposal.on_calculate do export_proposal proposal_properties_changed - update_validation end end @@ -278,12 +287,6 @@ def register_and_extend_dasd_callbacks end end - def deprecate_system - backend.deprecated_system = true - storage_properties_changed - update_validation - end - def storage_properties_changed properties = interfaces_and_properties[STORAGE_INTERFACE] dbus_properties_changed(STORAGE_INTERFACE, properties, []) @@ -294,6 +297,10 @@ def proposal_properties_changed dbus_properties_changed(PROPOSAL_CALCULATOR_INTERFACE, properties, []) end + def deprecate_system + backend.deprecated_system = true + end + def export_proposal @service.unexport(dbus_proposal) if dbus_proposal @dbus_proposal = DBus::Storage::Proposal.new(proposal, logger) diff --git a/service/lib/agama/manager.rb b/service/lib/agama/manager.rb index bbf233a7f6..e98fe2f0b3 100644 --- a/service/lib/agama/manager.rb +++ b/service/lib/agama/manager.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -# Copyright (c) [2022] SUSE LLC +# Copyright (c) [2022-2023] SUSE LLC # # All Rights Reserved. # diff --git a/service/lib/agama/storage/manager.rb b/service/lib/agama/storage/manager.rb index 0864863059..32bd2d5bcc 100644 --- a/service/lib/agama/storage/manager.rb +++ b/service/lib/agama/storage/manager.rb @@ -27,9 +27,10 @@ require "agama/storage/callbacks" require "agama/storage/iscsi/manager" require "agama/storage/finisher" +require "agama/issue" +require "agama/with_issues" require "agama/with_progress" require "agama/security" -require "agama/validation_error" require "agama/dbus/clients/questions" require "agama/dbus/clients/software" @@ -39,31 +40,62 @@ module Agama module Storage # Manager to handle storage configuration class Manager + include WithIssues include WithProgress + # Constructor + # + # @param config [Config] + # @param logger [Logger] + def initialize(config, logger) + @config = config + @logger = logger + register_proposal_callbacks + end + # Whether the system is in a deprecated status # # The system is usually set as deprecated as effect of managing some kind of devices, for # example, when iSCSI sessions are created. # # A deprecated system means that the probed system could not match with the current system. - attr_accessor :deprecated_system + # + # @return [Boolean] + def deprecated_system? + !!@deprecated_system + end - def initialize(config, logger) - @config = config - @logger = logger - @deprecated_system = false + # Sets whether the system is deprecated + # + # If the deprecated status changes, then callbacks are executed and the issues are + # recalculated, see {#on_deprecated_system_change}. + # + # @param value [Boolean] + def deprecated_system=(value) + return if deprecated_system? == value + + @deprecated_system = value + @on_deprecated_system_change_callbacks&.each(&:call) + update_issues + end + + # Registers a callback to be called when the system is set as deprecated + # + # @param block [Proc] + def on_deprecated_system_change(&block) + @on_deprecated_system_change_callbacks ||= [] + @on_deprecated_system_change_callbacks << block end # Probes storage devices and performs an initial proposal def probe - @deprecated_system = false start_progress(4) config.pick_product(software.selected_product) progress.step("Activating storage devices") { activate_devices } progress.step("Probing storage devices") { probe_devices } progress.step("Calculating the storage proposal") { calculate_proposal } progress.step("Selecting Linux Security Modules") { security.probe } + update_issues end # Prepares the partitioning to install the system @@ -104,14 +136,6 @@ def iscsi @iscsi ||= ISCSI::Manager.new(logger: logger) end - # Validates the storage configuration - # - # @return [Array<ValidationError>] List of validation errors - def validate - errors = [deprecated_system_error] + proposal.validate - errors.compact - end - # Returns the client to ask the software service # # @return [Agama::DBus::Clients::Software] @@ -130,6 +154,11 @@ def software # @return [Config] attr_reader :config + # Issues are updated when the proposal is calculated + def register_proposal_callbacks + proposal.on_calculate { update_issues } + end + # Activates the devices, calling activation callbacks if needed def activate_devices callbacks = Callbacks::Activate.new(questions_client, logger) @@ -140,9 +169,13 @@ def activate_devices # Probes the devices def probe_devices + callbacks = Y2Storage::Callbacks::UserProbe.new + iscsi.probe - # TODO: better probe callbacks that can report issue to user - Y2Storage::StorageManager.instance.probe(Y2Storage::Callbacks::UserProbe.new) + Y2Storage::StorageManager.instance.probe(callbacks) + + # The system is not deprecated anymore + self.deprecated_system = false end # Calculates the proposal @@ -171,13 +204,58 @@ def add_packages Yast::PackagesProposal.SetResolvables(PROPOSAL_ID, :package, packages) end - # Returns an error if the system is deprecated + # Recalculates the list of issues + def update_issues + self.issues = system_issues + proposal.issues + end + + # Issues from the system + # + # @return [Array<Issue>] + def system_issues + issues = probing_issues + [ + deprecated_system_issue, + available_devices_issue + ] + + issues.compact + end + + # Issues from the probing phase + # + # @return [Array<Issue>] + def probing_issues + y2storage_issues = Y2Storage::StorageManager.instance.raw_probed.probing_issues + + y2storage_issues.map do |y2storage_issue| + details = [y2storage_issue.description, y2storage_issue.details].compact.join("\n") + Issue.new(y2storage_issue.message, + details: details, + source: Issue::Source::SYSTEM, + severity: Issue::Severity::WARN) + end + end + + # Returns an issue if the system is deprecated + # + # @return [Issue, nil] + def deprecated_system_issue + return unless deprecated_system? + + Issue.new("The system devices have changed", + source: Issue::Source::SYSTEM, + severity: Issue::Severity::ERROR) + end + + # Returns an issue if there is no available device for installation # - # @return [ValidationError, nil] - def deprecated_system_error - return unless deprecated_system + # @return [Issue, nil] + def available_devices_issue + return if proposal.available_devices.any? - ValidationError.new("The system devices have changed") + Issue.new("There is no suitable device for installation", + source: Issue::Source::SYSTEM, + severity: Issue::Severity::ERROR) end # Security manager diff --git a/service/lib/agama/storage/proposal.rb b/service/lib/agama/storage/proposal.rb index ab65ffb626..ca18fa3dc8 100644 --- a/service/lib/agama/storage/proposal.rb +++ b/service/lib/agama/storage/proposal.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -# Copyright (c) [2022] SUSE LLC +# Copyright (c) [2022-2023] SUSE LLC # # All Rights Reserved. # @@ -21,7 +21,7 @@ require "y2storage" require "y2storage/dialogs/guided_setup/helpers/disk" -require "agama/validation_error" +require "agama/issue" require "agama/storage/actions" require "agama/storage/proposal_settings" require "agama/storage/proposal_settings_converter" @@ -56,10 +56,22 @@ def initialize(logger, config) @on_calculate_callbacks = [] end + # Resets the current proposal def reset @settings = nil end + # List of issues + # + # @return [Array<Issue>] + def issues + [ + empty_candidate_devices_issue, + missing_candidate_devices_issue, + proposal_issue + ].compact + end + # Stores callbacks to be call after calculating a proposal def on_calculate(&block) @on_calculate_callbacks << block @@ -76,6 +88,8 @@ def available_devices # # @return [Array<String>] def candidate_devices + return [] unless proposal + proposal.settings.candidate_devices end @@ -147,20 +161,6 @@ def actions Actions.new(logger, proposal.devices.actiongraph).all end - # Validates the storage proposal - # - # @return [Array<ValidationError>] List of validation errors - def validate - return [] if proposal.nil? - - [ - empty_available_devices_error, - empty_candidate_devices_error, - missing_candidate_devices_error, - proposal_error - ].compact - end - private # @return [Logger] @@ -258,30 +258,39 @@ def storage_manager Y2Storage::StorageManager.instance end - def empty_available_devices_error - return if available_devices.any? - - ValidationError.new("There is no suitable device for installation") - end - - def empty_candidate_devices_error - return if candidate_devices.any? + # Returns an issue if there is no candidate device + # + # @return [Issue, nil] + def empty_candidate_devices_issue + return if !proposal || candidate_devices.any? - ValidationError.new("No devices are selected for installation") + Issue.new("No devices are selected for installation", + source: Issue::Source::CONFIG, + severity: Issue::Severity::ERROR) end - def missing_candidate_devices_error + # Returns an issue if any of the candidate devices is not found + # + # @return [Issue, nil] + def missing_candidate_devices_issue available_names = available_devices.map(&:name) missing = candidate_devices - available_names return if missing.none? - ValidationError.new("Some selected devices are not found in the system") + Issue.new("Some selected devices are not found in the system", + source: Issue::Source::CONFIG, + severity: Issue::Severity::ERROR) end - def proposal_error - return unless proposal.failed? + # Returns an issue if the proposal is not valid + # + # @return [Issue, nil] + def proposal_issue + return unless proposal&.failed? - ValidationError.new("Cannot accommodate the required file systems for installation") + Issue.new("Cannot accommodate the required file systems for installation", + source: Issue::Source::CONFIG, + severity: Issue::Severity::ERROR) end # Adjusts the encryption-related settings of the given Y2Storage::ProposalSettings object diff --git a/service/lib/agama/with_issues.rb b/service/lib/agama/with_issues.rb new file mode 100644 index 0000000000..cdec10aa22 --- /dev/null +++ b/service/lib/agama/with_issues.rb @@ -0,0 +1,48 @@ +# frozen_string_literal: true + +# Copyright (c) [2023] SUSE LLC +# +# All Rights Reserved. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of version 2 of the GNU General Public License as published +# by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +# more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, contact SUSE LLC. +# +# To contact SUSE LLC about this file by physical or electronic mail, you may +# find current contact information at www.suse.com. + +module Agama + # Mixin for managing issues + module WithIssues + # The list of current issues + # + # @return [Array<Issue>] + def issues + @issues || [] + end + + # Sets the list of current issues + # + # @param issues [Array<Issue>] + def issues=(issues) + @issues = issues + @on_issues_change_callbacks&.each(&:call) + end + + # Registers a callback to be called when the list of issues changes + # + # @param block [Proc] + def on_issues_change(&block) + @on_issues_change_callbacks ||= [] + @on_issues_change_callbacks << block + end + end +end diff --git a/service/test/agama/dbus/storage/manager_test.rb b/service/test/agama/dbus/storage/manager_test.rb index fe9a1f7373..599e76d2ab 100644 --- a/service/test/agama/dbus/storage/manager_test.rb +++ b/service/test/agama/dbus/storage/manager_test.rb @@ -40,11 +40,13 @@ let(:backend) do instance_double(Agama::Storage::Manager, - proposal: proposal, - iscsi: iscsi, - software: software, - on_progress_change: nil, - on_progress_finish: nil) + proposal: proposal, + iscsi: iscsi, + software: software, + on_progress_change: nil, + on_progress_finish: nil, + on_issues_change: nil, + on_deprecated_system_change: nil) end let(:proposal) do @@ -68,7 +70,7 @@ describe "#deprecated_system" do before do - allow(backend).to receive(:deprecated_system).and_return(deprecated) + allow(backend).to receive(:deprecated_system?).and_return(deprecated) end context "if the system is set as deprecated" do diff --git a/service/test/agama/manager_test.rb b/service/test/agama/manager_test.rb index 24d00a9138..96d78aeada 100644 --- a/service/test/agama/manager_test.rb +++ b/service/test/agama/manager_test.rb @@ -53,7 +53,7 @@ let(:storage) do instance_double( Agama::DBus::Clients::Storage, probe: nil, install: nil, finish: nil, - on_service_status_change: nil, valid?: true + on_service_status_change: nil, errors?: false ) end @@ -181,9 +181,9 @@ end end - context "when the storage configuration is not valid" do + context "when there are storage errors" do before do - allow(storage).to receive(:valid?).and_return(false) + allow(storage).to receive(:errors?).and_return(true) end it "returns false" do diff --git a/service/test/agama/storage/manager_test.rb b/service/test/agama/storage/manager_test.rb index 356de899b5..df03c4f3d7 100644 --- a/service/test/agama/storage/manager_test.rb +++ b/service/test/agama/storage/manager_test.rb @@ -20,12 +20,16 @@ # find current contact information at www.suse.com. require_relative "../../test_helper" +require_relative "../with_progress_examples" +require_relative "../with_issues_examples" require_relative "storage_helpers" require "agama/storage/manager" require "agama/storage/proposal_settings" require "agama/storage/iscsi/manager" require "agama/config" +require "agama/issue" require "agama/dbus/clients/questions" +require "y2storage/issue" describe Agama::Storage::Manager do include Agama::RSpec::StorageHelpers @@ -55,29 +59,99 @@ let(:bootloader_finish) { instance_double(Bootloader::FinishClient, write: nil) } let(:security) { instance_double(Agama::Security, probe: nil, write: nil) } - describe "#probe" do + describe "#deprecated_system=" do before do allow(Y2Storage::StorageManager).to receive(:instance).and_return(y2storage_manager) allow(Agama::Storage::Proposal).to receive(:new).and_return(proposal) - allow(Agama::Storage::ISCSI::Manager).to receive(:new).and_return(iscsi) + + allow(y2storage_manager).to receive(:raw_probed).and_return(raw_devicegraph) + + allow(proposal).to receive(:issues).and_return([]) + allow(proposal).to receive(:available_devices).and_return([]) end - let(:proposal) do - instance_double(Agama::Storage::Proposal, - settings: settings, - calculate: nil, - available_devices: devices) + let(:raw_devicegraph) { instance_double(Y2Storage::Devicegraph, probing_issues: []) } + + let(:proposal) { Agama::Storage::Proposal.new(logger, config) } + + let(:callback) { proc {} } + + context "if the current value is changed" do + before do + storage.deprecated_system = true + end + + it "executes the on_deprecated_system_change callbacks" do + storage.on_deprecated_system_change(&callback) + + expect(callback).to receive(:call) + + storage.deprecated_system = false + end end - let(:devices) { [disk1, disk2] } - let(:settings) { nil } + context "if the current value is not changed" do + before do + storage.deprecated_system = true + end - let(:disk1) { instance_double(Y2Storage::Disk, name: "/dev/vda") } - let(:disk2) { instance_double(Y2Storage::Disk, name: "/dev/vdb") } + it "does not execute the on_deprecated_system_change callbacks" do + storage.on_deprecated_system_change(&callback) - let(:iscsi) { Agama::Storage::ISCSI::Manager.new } + expect(callback).to_not receive(:call) + + storage.deprecated_system = true + end + end + + context "when the system is set as deprecated" do + it "marks the system as deprecated" do + storage.deprecated_system = true + expect(storage.deprecated_system?).to eq(true) + end + + it "adds a deprecated system issue" do + expect(storage.issues).to be_empty + + storage.deprecated_system = true + + expect(storage.issues).to include( + an_object_having_attributes(description: /system devices have changed/) + ) + end + end + + context "when the system is set as not deprecated" do + it "marks the system as not deprecated" do + storage.deprecated_system = false + + expect(storage.deprecated_system?).to eq(false) + end + + it "does not add a deprecated system issue" do + storage.deprecated_system = false + + expect(storage.issues).to_not include( + an_object_having_attributes(description: /system devices have changed/) + ) + end + end + end + + describe "#probe" do before do + allow(Y2Storage::StorageManager).to receive(:instance).and_return(y2storage_manager) + allow(Agama::Storage::Proposal).to receive(:new).and_return(proposal) + allow(Agama::Storage::ISCSI::Manager).to receive(:new).and_return(iscsi) + + allow(y2storage_manager).to receive(:raw_probed).and_return(raw_devicegraph) + + allow(proposal).to receive(:issues).and_return(proposal_issues) + allow(proposal).to receive(:available_devices).and_return(devices) + allow(proposal).to receive(:settings).and_return(settings) + allow(proposal).to receive(:calculate) + allow(config).to receive(:pick_product) allow(iscsi).to receive(:activate) allow(y2storage_manager).to receive(:activate) @@ -85,6 +159,24 @@ allow(y2storage_manager).to receive(:probe) end + let(:raw_devicegraph) do + instance_double(Y2Storage::Devicegraph, probing_issues: probing_issues) + end + + let(:proposal) { Agama::Storage::Proposal.new(logger, config) } + + let(:iscsi) { Agama::Storage::ISCSI::Manager.new } + + let(:devices) { [disk1, disk2] } + let(:settings) { nil } + + let(:disk1) { instance_double(Y2Storage::Disk, name: "/dev/vda") } + let(:disk2) { instance_double(Y2Storage::Disk, name: "/dev/vdb") } + + let(:probing_issues) { [Y2Storage::Issue.new("probing issue")] } + + let(:proposal_issues) { [Agama::Issue.new("proposal issue")] } + it "probes the storage devices and calculates a proposal" do expect(config).to receive(:pick_product).with("ALP") expect(iscsi).to receive(:activate) @@ -101,7 +193,47 @@ storage.deprecated_system = true storage.probe - expect(storage.deprecated_system).to eq(false) + expect(storage.deprecated_system?).to eq(false) + end + + it "adds the probing issues" do + storage.probe + + expect(storage.issues).to include( + an_object_having_attributes(description: /probing issue/) + ) + end + + it "adds the proposal issues" do + storage.probe + + expect(storage.issues).to include( + an_object_having_attributes(description: /proposal issue/) + ) + end + + context "if there are available devices" do + let(:devices) { [disk1] } + + it "does not add an issue for available devices" do + storage.probe + + expect(storage.issues).to_not include( + an_object_having_attributes(description: /no suitable device/) + ) + end + end + + context "if there are not available devices" do + let(:devices) { [] } + + it "adds an issue for available devices" do + storage.probe + + expect(storage.issues).to include( + an_object_having_attributes(description: /no suitable device/) + ) + end end context "when there are settings from a previous proposal" do @@ -229,30 +361,7 @@ end end - describe "#validate" do - let(:errors) { [double("error 1")] } - let(:proposal) do - instance_double(Agama::Storage::Proposal, validate: errors) - end - - before do - allow(Agama::Storage::Proposal).to receive(:new).and_return(proposal) - end - - it "returns the proposal errors" do - expect(storage.validate).to eq(errors) - end - - context "if the system is deprecated" do - before do - storage.deprecated_system = true - end - - it "includes an error" do - error = storage.validate.find { |e| e.message.match?(/devices have changed/) } + include_examples "progress" - expect(error).to_not be_nil - end - end - end + include_examples "issues" end diff --git a/service/test/agama/storage/proposal_test.rb b/service/test/agama/storage/proposal_test.rb index 27740e83d0..709e9d90d1 100644 --- a/service/test/agama/storage/proposal_test.rb +++ b/service/test/agama/storage/proposal_test.rb @@ -53,6 +53,7 @@ let(:y2storage_proposal) do instance_double(Y2Storage::MinGuidedProposal, propose: true, failed?: failed) end + let(:failed) { false } describe "#calculate" do @@ -100,18 +101,16 @@ end it "runs all the callbacks" do - var1 = 5 - var2 = 5 - proposal.on_calculate do - var1 += 1 - end - proposal.on_calculate { var2 *= 2 } + callback1 = proc {} + callback2 = proc {} + + proposal.on_calculate(&callback1) + proposal.on_calculate(&callback2) + + expect(callback1).to receive(:call) + expect(callback2).to receive(:call) - expect(var1).to eq 5 - expect(var2).to eq 5 proposal.calculate - expect(var1).to eq 6 - expect(var2).to eq 10 end it "stores the given settings" do @@ -348,39 +347,22 @@ end end - describe "#validate" do - let(:sda) { instance_double(Y2Storage::Disk, name: "/dev/sda") } - let(:available_devices) { [sda] } - let(:candidate_devices) { ["/dev/sda"] } - + describe "#issues" do before do + allow(subject).to receive(:proposal).and_return(y2storage_proposal) allow(subject).to receive(:available_devices).and_return(available_devices) allow(subject).to receive(:candidate_devices).and_return(candidate_devices) - allow(subject).to receive(:proposal).and_return(y2storage_proposal) end - context "when the proposal was successful" do - let(:failed) { false } - - it "returns an empty list" do - expect(subject.validate).to eq([]) - end - end + let(:sda) { instance_double(Y2Storage::Disk, name: "/dev/sda") } + let(:available_devices) { [sda] } + let(:candidate_devices) { [] } context "when the proposal does not exist yet" do let(:y2storage_proposal) { nil } it "returns an empty list" do - expect(subject.validate).to eq([]) - end - end - - context "when there are not available storage devices" do - let(:available_devices) { [] } - - it "returns a list of errors including the expected error" do - error = subject.validate.find { |e| e.message.match?(/no suitable device/) } - expect(error).to_not be_nil + expect(subject.issues).to eq([]) end end @@ -388,17 +370,19 @@ let(:candidate_devices) { [] } it "returns a list of errors including the expected error" do - error = subject.validate.find { |e| e.message.match?(/No devices are selected/) } - expect(error).to_not be_nil + expect(subject.issues).to include( + an_object_having_attributes(description: /No devices are selected/) + ) end end - context "when any candidate device is missing" do + context "when some candidate device is missing" do let(:candidate_devices) { ["/dev/vda"] } it "returns a list of errors including the expected error" do - error = subject.validate.find { |e| e.message.match?(/not found in the system/) } - expect(error).to_not be_nil + expect(subject.issues).to include( + an_object_having_attributes(description: /devices are not found/) + ) end end @@ -406,8 +390,9 @@ let(:failed) { true } it "returns a list of errors including the expected error" do - error = subject.validate.find { |e| e.message.match?(/Cannot accommodate/) } - expect(error).to_not be_nil + expect(subject.issues).to include( + an_object_having_attributes(description: /Cannot accommodate/) + ) end end end diff --git a/service/test/agama/with_issues_examples.rb b/service/test/agama/with_issues_examples.rb new file mode 100644 index 0000000000..e3ce105822 --- /dev/null +++ b/service/test/agama/with_issues_examples.rb @@ -0,0 +1,49 @@ +# frozen_string_literal: true + +# Copyright (c) [2023] SUSE LLC +# +# All Rights Reserved. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of version 2 of the GNU General Public License as published +# by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +# more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, contact SUSE LLC. +# +# To contact SUSE LLC about this file by physical or electronic mail, you may +# find current contact information at www.suse.com. + +require_relative "../test_helper" +require "agama/issue" + +shared_examples "issues" do + describe "#issues=" do + let(:issues) { [Agama::Issue.new("Issue 1"), Agama::Issue.new("Issue 2")] } + + it "sets the given list of issues" do + expect(subject.issues).to be_empty + + subject.issues = issues + + expect(subject.issues).to contain_exactly( + an_object_having_attributes(description: /Issue 1/), + an_object_having_attributes(description: /Issue 2/) + ) + end + + it "executes the on_issues_change callbacks" do + callback = proc {} + subject.on_issues_change(&callback) + + expect(callback).to receive(:call) + + subject.issues = issues + end + end +end From d832985dfe5cb271ee225549921c338fc57a51c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Iv=C3=A1n=20L=C3=B3pez=20Gonz=C3=A1lez?= <jlopez@suse.com> Date: Wed, 26 Apr 2023 16:45:57 +0100 Subject: [PATCH 29/58] [service] Adapt storage client --- service/lib/agama/dbus/clients/storage.rb | 4 +- service/lib/agama/dbus/clients/with_issues.rb | 54 +++++++++++++ service/lib/agama/manager.rb | 2 +- .../test/agama/dbus/clients/storage_test.rb | 4 +- .../dbus/clients/with_issues_examples.rb | 76 +++++++++++++++++++ 5 files changed, 135 insertions(+), 5 deletions(-) create mode 100644 service/lib/agama/dbus/clients/with_issues.rb create mode 100644 service/test/agama/dbus/clients/with_issues_examples.rb diff --git a/service/lib/agama/dbus/clients/storage.rb b/service/lib/agama/dbus/clients/storage.rb index 218f9eb34f..bff3080aab 100644 --- a/service/lib/agama/dbus/clients/storage.rb +++ b/service/lib/agama/dbus/clients/storage.rb @@ -22,7 +22,7 @@ require "agama/dbus/clients/base" require "agama/dbus/clients/with_service_status" require "agama/dbus/clients/with_progress" -require "agama/dbus/clients/with_validation" +require "agama/dbus/clients/with_issues" module Agama module DBus @@ -31,7 +31,7 @@ module Clients class Storage < Base include WithServiceStatus include WithProgress - include WithValidation + include WithIssues STORAGE_IFACE = "org.opensuse.Agama.Storage1" private_constant :STORAGE_IFACE diff --git a/service/lib/agama/dbus/clients/with_issues.rb b/service/lib/agama/dbus/clients/with_issues.rb new file mode 100644 index 0000000000..a4a1dc363e --- /dev/null +++ b/service/lib/agama/dbus/clients/with_issues.rb @@ -0,0 +1,54 @@ +# frozen_string_literal: true + +# Copyright (c) [2023] SUSE LLC +# +# All Rights Reserved. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of version 2 of the GNU General Public License as published +# by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +# more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, contact SUSE LLC. +# +# To contact SUSE LLC about this file by physical or electronic mail, you may +# find current contact information at www.suse.com. + +require "agama/issue" + +module Agama + module DBus + # Mixin to include in the clients of services that implement the Issues interface + module WithIssues + ISSUES_IFACE = "org.opensuse.Agama1.Issues" + private_constant :ISSUES_IFACE + + # Returns the issues + # + # @return [Array<Issue>] + def issues + sources = [nil, Issue::Source::SYSTEM, Issue::Source::CONFIG] + severities = [Issue::Severity::WARN, Issue::Severity::ERROR] + + dbus_object[ISSUES_IFACE]["All"].map do |dbus_issue| + Issue.new(dbus_issue[0], + details: dbus_issue[1], + source: sources[dbus_issue[2]], + severity: severities[dbus_issue[3]]) + end + end + + # Determines whether there are errors + # + # @return [Boolean] + def errors? + issues.any?(&:error?) + end + end + end +end diff --git a/service/lib/agama/manager.rb b/service/lib/agama/manager.rb index e98fe2f0b3..8462ca00b9 100644 --- a/service/lib/agama/manager.rb +++ b/service/lib/agama/manager.rb @@ -178,7 +178,7 @@ def on_services_status_change(&block) # # @return [Boolean] def valid? - [storage, users, software].all?(&:valid?) + [users, software].all?(&:valid?) && !storage.errors? end # Collects the logs and stores them into an archive diff --git a/service/test/agama/dbus/clients/storage_test.rb b/service/test/agama/dbus/clients/storage_test.rb index c44240344f..c6c39069c0 100644 --- a/service/test/agama/dbus/clients/storage_test.rb +++ b/service/test/agama/dbus/clients/storage_test.rb @@ -20,7 +20,7 @@ # find current contact information at www.suse.com. require_relative "../../../test_helper" -require_relative "with_validation_examples" +require_relative "with_issues_examples" require "agama/dbus/clients/storage" require "dbus" @@ -194,5 +194,5 @@ end end - include_examples "validation" + include_examples "issues" end diff --git a/service/test/agama/dbus/clients/with_issues_examples.rb b/service/test/agama/dbus/clients/with_issues_examples.rb new file mode 100644 index 0000000000..e599db742f --- /dev/null +++ b/service/test/agama/dbus/clients/with_issues_examples.rb @@ -0,0 +1,76 @@ +# frozen_string_literal: true + +# Copyright (c) [2023] SUSE LLC +# +# All Rights Reserved. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of version 2 of the GNU General Public License as published +# by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +# more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, contact SUSE LLC. +# +# To contact SUSE LLC about this file by physical or electronic mail, you may +# find current contact information at www.suse.com. + +require_relative "../../../test_helper" +require "agama/issue" + +shared_examples "issues" do + before do + allow(dbus_object).to receive(:path).and_return("/org/opensuse/Agama/Test") + allow(dbus_object).to receive(:[]).with("org.opensuse.Agama1.Issues") + .and_return(issues_properties) + end + + let(:issues_properties) { { "All" => issues } } + + let(:issues) { [issue1, issue2] } + let(:issue1) { ["Issue 1", "Details 1", 1, 0] } + let(:issue2) { ["Issue 2", "Details 2", 2, 1] } + + describe "#issues" do + it "returns the list of issues" do + expect(subject.issues).to all(be_a(Agama::Issue)) + + expect(subject.issues).to contain_exactly( + an_object_having_attributes( + description: "Issue 1", + details: "Details 1", + source: Agama::Issue::Source::SYSTEM, + severity: Agama::Issue::Severity::WARN + ), + an_object_having_attributes( + description: "Issue 2", + details: "Details 2", + source: Agama::Issue::Source::CONFIG, + severity: Agama::Issue::Severity::ERROR + ) + ) + end + end + + describe "#errors?" do + context "if there is any error" do + let(:issues) { [issue2] } + + it "returns true" do + expect(subject.errors?).to eq(true) + end + end + + context "if there is no error" do + let(:issues) { [issue1] } + + it "returns false" do + expect(subject.errors?).to eq(false) + end + end + end +end From 3a29e941c4422b3c94acc98ed14f6be3820f5541 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Iv=C3=A1n=20L=C3=B3pez=20Gonz=C3=A1lez?= <jlopez@suse.com> Date: Wed, 26 Apr 2023 16:51:20 +0100 Subject: [PATCH 30/58] [service] Changelog --- service/package/rubygem-agama.changes | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/service/package/rubygem-agama.changes b/service/package/rubygem-agama.changes index 6f19e96f71..ea29bfb5f3 100644 --- a/service/package/rubygem-agama.changes +++ b/service/package/rubygem-agama.changes @@ -1,9 +1,16 @@ +------------------------------------------------------------------- +Wed Apr 26 15:48:41 UTC 2023 - José Iván López González <jlopez@suse.com> + +- Add D-Bus API for managing issues. +- Replace validation interface by issues in the storage service. +- gh#openSUSE/agama#548 + ------------------------------------------------------------------- Fri Apr 14 13:13:56 UTC 2023 - José Iván López González <jlopez@suse.com> - Modify default storage settings. - Fix issue with volume templates. -- gh#openSUSE/agama/521 +- gh#openSUSE/agama#521 ------------------------------------------------------------------- Mon Apr 10 10:14:39 UTC 2023 - Imobach Gonzalez Sosa <igonzalezsosa@suse.com> From d86b948649db3d1708d9222f0843d3ccb075cec9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Iv=C3=A1n=20L=C3=B3pez=20Gonz=C3=A1lez?= <jlopez@suse.com> Date: Thu, 27 Apr 2023 09:08:05 +0100 Subject: [PATCH 31/58] [service] Improve doc --- service/lib/agama/dbus.rb | 2 +- service/lib/agama/dbus/interfaces/issues.rb | 2 +- service/lib/agama/issue.rb | 17 +++++++++++++++-- service/lib/agama/with_issues.rb | 2 +- 4 files changed, 18 insertions(+), 5 deletions(-) diff --git a/service/lib/agama/dbus.rb b/service/lib/agama/dbus.rb index 45354f6c27..f4870b8eac 100644 --- a/service/lib/agama/dbus.rb +++ b/service/lib/agama/dbus.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -# Copyright (c) [2022] SUSE LLC +# Copyright (c) [2022-2023] SUSE LLC # # All Rights Reserved. # diff --git a/service/lib/agama/dbus/interfaces/issues.rb b/service/lib/agama/dbus/interfaces/issues.rb index 758edba54f..09ccc17d9a 100644 --- a/service/lib/agama/dbus/interfaces/issues.rb +++ b/service/lib/agama/dbus/interfaces/issues.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -# Copyright (c) [2022] SUSE LLC +# Copyright (c) [2023] SUSE LLC # # All Rights Reserved. # diff --git a/service/lib/agama/issue.rb b/service/lib/agama/issue.rb index 067cce1a7c..18630a4d29 100644 --- a/service/lib/agama/issue.rb +++ b/service/lib/agama/issue.rb @@ -20,7 +20,20 @@ # find current contact information at www.suse.com. module Agama - # Represents an issue + # This class represents an issue in Agama + # + # An issue is used for notifying about some unexpected or problematic situation, for example, to + # indicate that there is no device for installing the system. + # + # Issues have a description, details, source and severity: + # * Description: describes the issue, typically with a single sentence. + # * Details: provides more details about the problem. It is useful to report the output of a + # command failure. + # * Source: indicates the source of the problem. In Agama, the issues usually comes from some + # unexpected situation in the system (e.g., missing device, etc) or from a wrong config (e.g., + # missing user, etc). + # * Severity: sets the severity of the issue. For now, issues could have warn or error severity. + # Error severity indicates that the installation cannot start. class Issue # Description of the issue # @@ -48,7 +61,7 @@ module Source CONFIG = :config end - # Defines different severities + # Defines different severity levels module Severity WARN = :warn ERROR = :error diff --git a/service/lib/agama/with_issues.rb b/service/lib/agama/with_issues.rb index cdec10aa22..950ddce6bb 100644 --- a/service/lib/agama/with_issues.rb +++ b/service/lib/agama/with_issues.rb @@ -20,7 +20,7 @@ # find current contact information at www.suse.com. module Agama - # Mixin for managing issues + # Mixin for managing issues, see {Issue} module WithIssues # The list of current issues # From 62de9cfe7596570fad0a7a81998471c800ba45d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20D=C3=ADaz=20Gonz=C3=A1lez?= <dgonzalez@suse.de> Date: Thu, 27 Apr 2023 17:04:07 +0100 Subject: [PATCH 32/58] Update README screenshots By replacing the no longer available storage settings popup by the users page. --- README.md | 2 +- .../{storage-settings.png => users-page.png} | Bin playwright/tests/take_screenshots.spec.ts | 11 +++-------- 3 files changed, 4 insertions(+), 9 deletions(-) rename doc/images/screenshots/{storage-settings.png => users-page.png} (100%) diff --git a/README.md b/README.md index 74ade8aa26..1148c8ec3b 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ Agama is a new Linux installer born in the core of the YaST team. It is designed ||| |-|-| -| ![Storage page](./doc/images/screenshots/storage-page.png) | ![Storage settings](./doc/images/screenshots/storage-settings.png) | +| ![Users page](./doc/images/screenshots/users-page.png) | ![Storage settings](./doc/images/screenshots/storage-page.png) | ||| |-|-| diff --git a/doc/images/screenshots/storage-settings.png b/doc/images/screenshots/users-page.png similarity index 100% rename from doc/images/screenshots/storage-settings.png rename to doc/images/screenshots/users-page.png diff --git a/playwright/tests/take_screenshots.spec.ts b/playwright/tests/take_screenshots.spec.ts index dc297ea1a7..be0ec30839 100644 --- a/playwright/tests/take_screenshots.spec.ts +++ b/playwright/tests/take_screenshots.spec.ts @@ -61,6 +61,8 @@ test.describe("The Installer", () => { // the the root password must be set await test.step("Set the root password", async () => { await page.locator("a[href='#/users']").click(); + // Create users page screenshot + await page.screenshot({ path: "screenshots/users-page.png" }); await page.locator("#actions-for-root-password").click(); await page.getByRole("menuitem", { name: "Set" }).click(); await page.locator("#password").fill("linux"); @@ -78,15 +80,8 @@ test.describe("The Installer", () => { await test.step("Storage configuration", async () => { // create storage page screenshot await page.locator("a[href='#/storage']").click(); - await expect(page.getByRole("button", { name: "Settings" })).toBeVisible(); + await expect(page.getByRole("heading", { name: "Settings" })).toBeVisible(); await page.screenshot({ path: "screenshots/storage-page.png" }); - - // create storage settings screenshot - await page.getByRole("button", { name: "Settings" }).click(); - await expect(page.locator("[role='dialog']")).toBeVisible(); - await page.screenshot({ path: "screenshots/storage-settings.png" }); - await page.getByRole("button", { name: "Cancel" }).click(); - await page.getByText("Back").click(); }); // confirm the installation only when explicitly set via the environment From e1f621e25571f3f7a7264a31756bc309f805611f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Iv=C3=A1n=20L=C3=B3pez=20Gonz=C3=A1lez?= <jlopez@suse.com> Date: Fri, 28 Apr 2023 16:02:54 +0100 Subject: [PATCH 33/58] [web] Add issues to storage client --- web/src/client/dbus.js | 6 +-- web/src/client/mixins.js | 96 +++++++++++++++++++++++++++++++++- web/src/client/storage.js | 4 +- web/src/client/storage.test.js | 73 ++++++++++++++++++++++++++ 4 files changed, 172 insertions(+), 7 deletions(-) diff --git a/web/src/client/dbus.js b/web/src/client/dbus.js index 1c0bffa638..da36d1c604 100644 --- a/web/src/client/dbus.js +++ b/web/src/client/dbus.js @@ -25,8 +25,8 @@ import cockpit from "../lib/cockpit"; /** * @typedef {object} DBusValue - * @property {string} s - type signature - * @property {DBusValue | DBusValue[] | number | string | boolean | number[] | string[] | boolean[]} v - value + * @property {string} t - type signature + * @property { * } v - value */ /** @@ -149,7 +149,7 @@ class DBusClient { try { const result = await this.client.call( - path, "org.freedesktop.DBus.Properties", "Get", [iface, "Errors"] + path, "org.freedesktop.DBus.Properties", "Get", [iface, name] ); property = result[0]; } catch (error) { diff --git a/web/src/client/mixins.js b/web/src/client/mixins.js index ca90defade..78f5618b8c 100644 --- a/web/src/client/mixins.js +++ b/web/src/client/mixins.js @@ -1,5 +1,5 @@ /* - * Copyright (c) [2022] SUSE LLC + * Copyright (c) [2022-2023] SUSE LLC * * All Rights Reserved. * @@ -20,6 +20,98 @@ */ // @ts-check + +const ISSUES_IFACE = "org.opensuse.Agama1.Issues"; + +/** + * @typedef {[string, string, number, number]} DBusIssue + */ + +/** + * @typedef {object} Issue + * @property {string} description + * @property {string} details + * @property {string} source - "unknown", "system" or "config" + * @property {string} severity - "warn", "error" + */ + +/** +* @callback IssuesHandler +* @param {Issue[]} issues +* @return {void} +*/ + +/** + * Builds an issue from a D-Bus issue + * + * @param {DBusIssue} dbusIssue + * @return {Issue} + */ +const buildIssue = (dbusIssue) => { + const source = (value) => { + switch (value) { + case 0: return "unknown"; + case 1: return "system"; + case 2: return "config"; + } + }; + + const severity = (value) => { + return value === 0 ? "warn" : "error"; + }; + + return { + description: dbusIssue[0], + details: dbusIssue[1], + source: source(dbusIssue[2]), + severity: severity(dbusIssue[3]) + }; +}; + +/** + * Extends the given class with methods to get the issues over D-Bus + * @param {string} object_path - object_path + * @param {T} superclass - superclass to extend + * @template {!WithDBusClient} T + */ +const WithIssues = (superclass, object_path) => class extends superclass { + /** + * Returns the issues + * + * @return {Promise<Issue[]>} + */ + async getIssues() { + const proxy = await this.client.proxy(ISSUES_IFACE, object_path); + return proxy.All.map(buildIssue); + } + + /** + * Gets all issues with error severity + * + * @return {Promise<Issue[]>} + */ + async getErrors() { + const issues = await this.getIssues(); + return issues.filter(i => i.severity === "error"); + } + + /** + * Registers a callback to run when the issues change + * + * @param {IssuesHandler} handler - callback function + * @return {import ("./dbus").RemoveFn} function to disable the callback + */ + onIssuesChange(handler) { + return this.client.onObjectChanged(object_path, ISSUES_IFACE, (changes) => { + if ("All" in changes) { + const dbusIssues = changes.All.v; + const issues = dbusIssues.map(buildIssue); + handler(issues); + } + }); + } +}; + const STATUS_IFACE = "org.opensuse.Agama1.ServiceStatus"; /** @@ -179,4 +271,4 @@ const WithValidation = (superclass, object_path) => class extends superclass { } }; -export { WithStatus, WithProgress, WithValidation }; +export { WithIssues, WithStatus, WithProgress, WithValidation }; diff --git a/web/src/client/storage.js b/web/src/client/storage.js index eecc3cd53f..3907cd6fed 100644 --- a/web/src/client/storage.js +++ b/web/src/client/storage.js @@ -22,7 +22,7 @@ // @ts-check import DBusClient from "./dbus"; -import { WithStatus, WithProgress, WithValidation } from "./mixins"; +import { WithIssues, WithStatus, WithProgress } from "./mixins"; import { hex } from "~/utils"; const STORAGE_IFACE = "org.opensuse.Agama.Storage1"; @@ -864,7 +864,7 @@ class StorageBaseClient { /** * Allows interacting with the storage settings */ -class StorageClient extends WithValidation( +class StorageClient extends WithIssues( WithProgress( WithStatus(StorageBaseClient, STORAGE_OBJECT), STORAGE_OBJECT ), STORAGE_OBJECT diff --git a/web/src/client/storage.test.js b/web/src/client/storage.test.js index c3c4a8cb1e..f745c913c5 100644 --- a/web/src/client/storage.test.js +++ b/web/src/client/storage.test.js @@ -80,6 +80,16 @@ const contexts = { withVolumeTemplates: () => { cockpitProxies.proposalCalculator.VolumeTemplates = volumes; }, + withoutIssues: () => { + cockpitProxies.issues = { + All: [] + }; + }, + withIssues: () => { + cockpitProxies.issues = { + All: [["Issue 1", "", 1, 1], ["Issue 2", "", 1, 0], ["Issue 3", "", 2, 1]] + }; + }, withoutISCSINodes: () => { cockpitProxies.iscsiNodes = {}; }, @@ -140,6 +150,7 @@ const contexts = { const mockProxy = (iface, path) => { switch (iface) { + case "org.opensuse.Agama1.Issues": return cockpitProxies.issues; case "org.opensuse.Agama.Storage1": return cockpitProxies.storage; case "org.opensuse.Agama.Storage1.Proposal": return cockpitProxies.proposal; case "org.opensuse.Agama.Storage1.Proposal.Calculator": return cockpitProxies.proposalCalculator; @@ -171,6 +182,7 @@ const emitSignal = (path, iface, data) => { }; const reset = () => { + cockpitProxies.issues = {}; cockpitProxies.storage = {}; cockpitProxies.proposalCalculator = {}; cockpitProxies.proposal = null; @@ -263,6 +275,67 @@ describe("#onDeprecate", () => { }); }); +describe("#getIssues", () => { + describe("if there are no issues", () => { + beforeEach(() => { + contexts.withoutIssues(); + }); + + it("returns an empty list", async () => { + client = new StorageClient(); + const issues = await client.getIssues(); + expect(issues).toEqual([]); + }); + }); + + describe("if there are issues", () => { + beforeEach(() => { + contexts.withIssues(); + }); + + it("returns the list of issues", async () => { + client = new StorageClient(); + const issues = await client.getIssues(); + expect(issues).toEqual(expect.arrayContaining([ + { description: "Issue 1", details: "", source: "system", severity: "error" }, + { description: "Issue 2", details: "", source: "system", severity: "warn" }, + { description: "Issue 3", details: "", source: "config", severity: "error" } + ])); + }); + }); +}); + +describe("#getErrors", () => { + beforeEach(() => { + contexts.withIssues(); + }); + + it("returns the issues with error severity", async () => { + client = new StorageClient(); + const errors = await client.getErrors(); + expect(errors.map(e => e.description)).toEqual(expect.arrayContaining(["Issue 1", "Issue 3"])); + }); +}); + +describe("#onIssuesChange", () => { + it("runs the handler when the issues change", async () => { + client = new StorageClient(); + + const handler = jest.fn(); + client.onIssuesChange(handler); + + emitSignal( + "/org/opensuse/Agama/Storage1", + "org.opensuse.Agama1.Issues", + { All: { v: [["Issue 1", "", 1, 0], ["Issue 2", "", 2, 1]] } }); + + expect(handler).toHaveBeenCalledWith([ + { description: "Issue 1", details: "", source: "system", severity: "warn" }, + { description: "Issue 2", details: "", source: "config", severity: "error" }, + ]); + }); +}); + describe("#proposal", () => { const checkAvailableDevices = (availableDevices) => { expect(availableDevices).toEqual([ From 365e99996f537f058ad896d7ee7764bcd5393e33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Iv=C3=A1n=20L=C3=B3pez=20Gonz=C3=A1lez?= <jlopez@suse.com> Date: Fri, 28 Apr 2023 16:03:45 +0100 Subject: [PATCH 34/58] [web] Add issues client --- web/src/client/index.js | 31 ++++++++---- web/src/client/issues.js | 78 +++++++++++++++++++++++++++++ web/src/client/issues.test.js | 94 +++++++++++++++++++++++++++++++++++ 3 files changed, 194 insertions(+), 9 deletions(-) create mode 100644 web/src/client/issues.js create mode 100644 web/src/client/issues.test.js diff --git a/web/src/client/index.js b/web/src/client/index.js index 10d1ef032f..2103737273 100644 --- a/web/src/client/index.js +++ b/web/src/client/index.js @@ -1,5 +1,5 @@ /* - * Copyright (c) [2021] SUSE LLC + * Copyright (c) [2021-2023] SUSE LLC * * All Rights Reserved. * @@ -30,6 +30,7 @@ import { UsersClient } from "./users"; import phase from "./phase"; import { QuestionsClient } from "./questions"; import { NetworkClient } from "./network"; +import { IssuesClient } from "./issues"; const SERVICE_NAME = "org.opensuse.Agama"; @@ -43,6 +44,7 @@ const SERVICE_NAME = "org.opensuse.Agama"; * @property {StorageClient} storage - storage client * @property {UsersClient} users - users client * @property {QuestionsClient} questions - questions client + * @property {IssuesClient} issues - issues client */ /** @@ -51,15 +53,26 @@ const SERVICE_NAME = "org.opensuse.Agama"; * @return {InstallerClient} */ const createClient = (address = "unix:path=/run/agama/bus") => { + const language = new LanguageClient(address); + const manager = new ManagerClient(address); + const monitor = new Monitor(address, SERVICE_NAME); + const network = new NetworkClient(); + const software = new SoftwareClient(address); + const storage = new StorageClient(address); + const users = new UsersClient(address); + const questions = new QuestionsClient(address); + const issues = new IssuesClient({ storage }); + return { - language: new LanguageClient(address), - manager: new ManagerClient(address), - monitor: new Monitor(address, SERVICE_NAME), - network: new NetworkClient(), - software: new SoftwareClient(address), - storage: new StorageClient(address), - users: new UsersClient(address), - questions: new QuestionsClient(address) + language, + manager, + monitor, + network, + software, + storage, + users, + questions, + issues }; }; diff --git a/web/src/client/issues.js b/web/src/client/issues.js new file mode 100644 index 0000000000..f6a38d4e26 --- /dev/null +++ b/web/src/client/issues.js @@ -0,0 +1,78 @@ +/* + * Copyright (c) [2023] SUSE LLC + * + * All Rights Reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as published + * by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, contact SUSE LLC. + * + * To contact SUSE LLC about this file by physical or electronic mail, you may + * find current contact information at www.suse.com. + */ + +// @ts-check + +/** + * @typedef {object} ClientsIssues + * @property {import ("~/client/mixins").Issue[]} storage - Issues from storage client + */ + +/** + * Client for managing all issues, independently on the service owning the issues + */ +class IssuesClient { + /** + * @param {object} clients - Clients managing issues + * @param {import ("~/client/storage").StorageClient} clients.storage + */ + constructor(clients) { + this.clients = clients; + } + + /** + * Get issues from all clients managing issues + * + * @returns {Promise<ClientsIssues>} + */ + async getAll() { + const storage = await this.clients.storage.getIssues(); + + return { storage }; + } + + /** + * Checks whether there is some error + * + * @returns {Promise<boolean>} + */ + async any() { + const clientsIssues = await this.getAll(); + const issues = Object.values(clientsIssues).flat(); + + return issues.length > 0; + } + + /** + * Registers a callback for each service to be executed when its issues change + * + * @param {import ("~/client/mixins").IssuesHandler} handler - callback function + * @return {import ("./dbus").RemoveFn} function to disable the callback + */ + onIssuesChange(handler) { + const unsubscribeCallbacks = []; + unsubscribeCallbacks.push(this.clients.storage.onIssuesChange(handler)); + + return () => { unsubscribeCallbacks.forEach(cb => cb()) }; + } +} + +export { IssuesClient }; diff --git a/web/src/client/issues.test.js b/web/src/client/issues.test.js new file mode 100644 index 0000000000..2eec15df3f --- /dev/null +++ b/web/src/client/issues.test.js @@ -0,0 +1,94 @@ +/* + * Copyright (c) [2023] SUSE LLC + * + * All Rights Reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as published + * by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, contact SUSE LLC. + * + * To contact SUSE LLC about this file by physical or electronic mail, you may + * find current contact information at www.suse.com. + */ + +// @ts-check + +import { IssuesClient } from "./issues"; +import { StorageClient } from "./storage"; + +const storageIssues = [ + { description: "Storage issue 1", severity: "error", details: "", source: "" }, + { description: "Storage issue 2", severity: "warn", details: "", source: "" }, + { description: "Storage issue 3", severity: "error", details: "", source: "" } +]; + +const issues = { + storage: [] +}; + +jest.spyOn(StorageClient.prototype, 'getIssues').mockImplementation(async () => issues.storage); +jest.spyOn(StorageClient.prototype, 'onIssuesChange'); + +const clientsWithIssues = { + storage: new StorageClient() +}; + +describe("#getAll", () => { + beforeEach(() => { + issues.storage = storageIssues; + }); + + it("returns all the storage issues", async () => { + const client = new IssuesClient(clientsWithIssues); + + const { storage } = await client.getAll(); + expect(storage).toEqual(expect.arrayContaining(storageIssues)); + }); +}); + +describe("#any", () => { + describe("if there are storage issues", () => { + beforeEach(() => { + issues.storage = storageIssues; + }); + + it("returns true", async () => { + const client = new IssuesClient(clientsWithIssues); + + const result = await client.any(); + expect(result).toEqual(true); + }); + }); + + describe("if there are no issues", () => { + beforeEach(() => { + issues.storage = []; + }); + + it("returns false", async () => { + const client = new IssuesClient(clientsWithIssues); + + const result = await client.any(); + expect(result).toEqual(false); + }); + }); +}); + +describe("#onIssuesChange", () => { + it("subscribes to changes in storage issues", () => { + const client = new IssuesClient(clientsWithIssues); + + const handler = jest.fn(); + client.onIssuesChange(handler); + + expect(clientsWithIssues.storage.onIssuesChange).toHaveBeenCalledWith(handler); + }); +}); From 1fc1f6f8112c6407b2713d6fe0eb402813922fa5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Iv=C3=A1n=20L=C3=B3pez=20Gonz=C3=A1lez?= <jlopez@suse.com> Date: Fri, 28 Apr 2023 16:06:06 +0100 Subject: [PATCH 35/58] [web] Replace validation by storage issues --- web/src/components/overview/StorageSection.jsx | 5 +++-- .../components/overview/StorageSection.test.jsx | 8 ++++---- web/src/components/storage/ProposalPage.jsx | 5 +++-- web/src/components/storage/ProposalPage.test.jsx | 2 +- web/src/utils.js | 14 +++++++++++++- web/src/utils.test.js | 16 ++++++++++++++-- 6 files changed, 38 insertions(+), 12 deletions(-) diff --git a/web/src/components/overview/StorageSection.jsx b/web/src/components/overview/StorageSection.jsx index 58f3c10abd..1369f22a9f 100644 --- a/web/src/components/overview/StorageSection.jsx +++ b/web/src/components/overview/StorageSection.jsx @@ -22,7 +22,7 @@ import React, { useReducer, useEffect } from "react"; import { Text } from "@patternfly/react-core"; -import { useCancellablePromise } from "~/utils"; +import { toValidationError, useCancellablePromise } from "~/utils"; import { useInstallerClient } from "~/context/installer"; import { BUSY } from "~/client/status"; import { Em, ProgressText, Section } from "~/components/core"; @@ -104,7 +104,8 @@ export default function StorageSection({ showErrors = false }) { if (isDeprecated) await cancellablePromise(client.probe()); const proposal = await cancellablePromise(client.proposal.getData()); - const errors = await cancellablePromise(client.getValidationErrors()); + const issues = await cancellablePromise(client.getErrors()); + const errors = issues.map(toValidationError); dispatch({ type: "UPDATE_PROPOSAL", payload: { proposal, errors } }); }; diff --git a/web/src/components/overview/StorageSection.test.jsx b/web/src/components/overview/StorageSection.test.jsx index 4deaec0f0f..9f34c45304 100644 --- a/web/src/components/overview/StorageSection.test.jsx +++ b/web/src/components/overview/StorageSection.test.jsx @@ -54,7 +54,7 @@ beforeEach(() => { message: "Activating storage devices", current: 1, total: 4 }), onProgressChange: noop, - getValidationErrors: jest.fn().mockResolvedValue(errors), + getErrors: jest.fn().mockResolvedValue(errors), onStatusChange: onStatusChangeFn, isDeprecated: jest.fn().mockResolvedValue(false), onDeprecate: noop @@ -74,7 +74,7 @@ describe("when there is a proposal", () => { describe("with errors", () => { beforeEach(() => { - errors = [{ message: "Cannot make a proposal" }]; + errors = [{ description: "Cannot make a proposal" }]; }); describe("and component has received the showErrors prop", () => { @@ -115,7 +115,7 @@ describe("when there is a proposal", () => { describe("when there is no proposal yet", () => { beforeEach(() => { proposal = { result: undefined }; - errors = [{ message: "Fake error" }]; + errors = [{ description: "Fake error" }]; }); it("renders the progress", async () => { @@ -134,7 +134,7 @@ describe("when there is no proposal yet", () => { describe("but storage service is busy", () => { beforeEach(() => { status = BUSY; - errors = [{ message: "Fake error" }]; + errors = [{ description: "Fake error" }]; }); it("renders the progress", async () => { diff --git a/web/src/components/storage/ProposalPage.jsx b/web/src/components/storage/ProposalPage.jsx index 87b3cf68db..a274fa0209 100644 --- a/web/src/components/storage/ProposalPage.jsx +++ b/web/src/components/storage/ProposalPage.jsx @@ -23,7 +23,7 @@ import React, { useCallback, useReducer, useEffect } from "react"; import { Alert } from "@patternfly/react-core"; import { useInstallerClient } from "~/context/installer"; -import { useCancellablePromise } from "~/utils"; +import { toValidationError, useCancellablePromise } from "~/utils"; import { Icon } from "~/components/layout"; import { Page } from "~/components/core"; import { ProposalActionsSection, ProposalPageOptions, ProposalSettingsSection } from "~/components/storage"; @@ -79,7 +79,8 @@ export default function ProposalPage() { const loadProposal = useCallback(async () => { const proposal = await cancellablePromise(client.proposal.getData()); - const errors = await cancellablePromise(client.getValidationErrors()); + const issues = await cancellablePromise(client.getErrors()); + const errors = issues.map(toValidationError); return { proposal, errors }; }, [client, cancellablePromise]); diff --git a/web/src/components/storage/ProposalPage.test.jsx b/web/src/components/storage/ProposalPage.test.jsx index 9909a63964..e8b1ea2100 100644 --- a/web/src/components/storage/ProposalPage.test.jsx +++ b/web/src/components/storage/ProposalPage.test.jsx @@ -69,7 +69,7 @@ beforeEach(() => { getData: jest.fn().mockResolvedValue(proposalData), calculate: jest.fn().mockResolvedValue(0) }, - getValidationErrors: jest.fn().mockResolvedValue([]), + getErrors: jest.fn().mockResolvedValue([]), isDeprecated: isDeprecatedFn, onDeprecate: onDeprecateFn } diff --git a/web/src/utils.js b/web/src/utils.js index bb41c05b08..c313b6ae19 100644 --- a/web/src/utils.js +++ b/web/src/utils.js @@ -167,11 +167,23 @@ const hex = (value) => { return parseInt(sanitizedValue, 16); }; +/** + * Converts an issue to a validation error + * @function + * + * @todo This conversion will not be needed after adapting Section to directly work with issues. + * + * @param {import("~/client/mixins").Issue} issues + * @returns {import("~/client/mixins").ValidationError} + */ +const toValidationError = (issue) => ({ message: issue.description }); + export { noop, partition, classNames, useCancellablePromise, useLocalStorage, - hex + hex, + toValidationError }; diff --git a/web/src/utils.test.js b/web/src/utils.test.js index d7319aad48..4c1f290ea5 100644 --- a/web/src/utils.test.js +++ b/web/src/utils.test.js @@ -1,5 +1,5 @@ /* - * Copyright (c) [2022] SUSE LLC + * Copyright (c) [2022-2023] SUSE LLC * * All Rights Reserved. * @@ -19,7 +19,7 @@ * find current contact information at www.suse.com. */ -import { classNames, partition, noop } from "./utils"; +import { classNames, partition, noop, toValidationError } from "./utils"; describe("noop", () => { it("returns undefined", () => { @@ -49,3 +49,15 @@ describe("classNames", () => { )).toEqual("bg-yellow w-24"); }); }); + +describe("toValidationError", () => { + it("converts an issue to a validation error", () => { + const issue = { + description: "Issue 1", + details: "Details issue 1", + source: "config", + severity: "warn" + }; + expect(toValidationError(issue)).toEqual({ message: "Issue 1" }); + }); +}); From 5df7f38cf0ed1ecedc992184dc5d4eede8b16551 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Iv=C3=A1n=20L=C3=B3pez=20Gonz=C3=A1lez?= <jlopez@suse.com> Date: Fri, 28 Apr 2023 16:08:13 +0100 Subject: [PATCH 36/58] [web] Add issues warning --- web/src/components/core/InstallButton.jsx | 92 ++++++++++++------- .../components/core/InstallButton.test.jsx | 39 +++++++- 2 files changed, 96 insertions(+), 35 deletions(-) diff --git a/web/src/components/core/InstallButton.jsx b/web/src/components/core/InstallButton.jsx index 0e02ab6153..9dcc75cfc0 100644 --- a/web/src/components/core/InstallButton.jsx +++ b/web/src/components/core/InstallButton.jsx @@ -1,5 +1,5 @@ /* - * Copyright (c) [2022] SUSE LLC + * Copyright (c) [2022-2023] SUSE LLC * * All Rights Reserved. * @@ -22,50 +22,75 @@ import React, { useState } from "react"; import { useInstallerClient } from "~/context/installer"; -import { Button, Text } from "@patternfly/react-core"; -import { Popup } from "~/components/core"; +import { Button } from "@patternfly/react-core"; +import { useNavigate } from "react-router-dom"; -const InstallConfirmationPopup = ({ onAccept, onClose }) => ( - <Popup - title="Confirm Installation" - isOpen - > - <Text> - If you continue, partitions on your hard disk will be modified according to the - installation settings in the previous dialog. - </Text> - <Text> - Please, cancel and check the settings if you are unsure. - </Text> +import { If, Popup } from "~/components/core"; - <Popup.Actions> - <Popup.Confirm onClick={onAccept}>Continue</Popup.Confirm> - <Popup.Cancel onClick={onClose} autoFocus /> - </Popup.Actions> - </Popup> -); +const InstallConfirmationPopup = ({ hasIssues, onAccept, onClose }) => { + const navigate = useNavigate(); + + const IssuesWarning = () => { + const IssuesLink = ({ text }) => { + return ( + <Button variant="link" isInline onClick={() => navigate("/issues")}> + {text} + </Button> + ); + }; + + return ( + <p className="bold"> + There are some reported issues. Please, check <IssuesLink text="the list of issues" /> before + proceeding with the installation. + </p> + ); + }; + + return ( + <Popup + title="Confirm Installation" + isOpen + > + <div className="stack"> + <If condition={hasIssues} then={<IssuesWarning />} /> + <p> + If you continue, partitions on your hard disk will be modified according to the provided + installation settings. + </p> + <p> + Please, cancel and check the settings if you are unsure. + </p> + </div> + <Popup.Actions> + <Popup.Confirm onClick={onAccept}>Continue</Popup.Confirm> + <Popup.Cancel onClick={onClose} autoFocus /> + </Popup.Actions> + </Popup> + ); +}; const CannotInstallPopup = ({ onClose }) => ( <Popup title="Problems Found" isOpen > - <Text> + <p> Some problems were found when trying to start the installation. - Please, have a look to the reported issues and try again. - </Text> + Please, have a look to the reported errors and try again. + </p> <Popup.Actions> - <Popup.Cancel onClick={onClose} autoFocus /> + <Popup.Cancel onClick={onClose} autoFocus>Accept</Popup.Cancel> </Popup.Actions> </Popup> ); -const renderPopup = (error, { onAccept, onClose }) => { +const renderPopup = (error, hasIssues, { onAccept, onClose }) => { if (error) { return <CannotInstallPopup onClose={onClose} />; } else { - return <InstallConfirmationPopup onClose={onClose} onAccept={onAccept} />; + return <InstallConfirmationPopup onClose={onClose} onAccept={onAccept} hasIssues={hasIssues} />; } }; @@ -87,13 +112,14 @@ const InstallButton = ({ onClick }) => { const client = useInstallerClient(); const [isOpen, setIsOpen] = useState(false); const [error, setError] = useState(false); + const [hasIssues, setHasIssues] = useState(false); - const open = () => { + const open = async () => { if (onClick) onClick(); - client.manager.canInstall().then(ok => { - setIsOpen(true); - setError(!ok); - }); + const canInstall = await client.manager.canInstall(); + if (canInstall) setHasIssues(await client.issues.any()); + setIsOpen(true); + setError(!canInstall); }; const close = () => setIsOpen(false); const install = () => client.manager.startInstallation(); @@ -104,7 +130,7 @@ const InstallButton = ({ onClick }) => { Install </Button> - { isOpen && renderPopup(error, { onAccept: install, onClose: close }) } + { isOpen && renderPopup(error, hasIssues, { onAccept: install, onClose: close }) } </> ); }; diff --git a/web/src/components/core/InstallButton.test.jsx b/web/src/components/core/InstallButton.test.jsx index b40b2d94ed..08858affaf 100644 --- a/web/src/components/core/InstallButton.test.jsx +++ b/web/src/components/core/InstallButton.test.jsx @@ -1,5 +1,5 @@ /* - * Copyright (c) [2022] SUSE LLC + * Copyright (c) [2022-2023] SUSE LLC * * All Rights Reserved. * @@ -31,13 +31,18 @@ jest.mock("~/client", () => ({ createClient: jest.fn() })); -describe("when the button is clicked and there are not validation errors", () => { +describe("when the button is clicked and there are not errors", () => { + let hasIssues = false; + beforeEach(() => { createClient.mockImplementation(() => { return { manager: { startInstallation: startInstallationFn, canInstall: () => Promise.resolve(true), + }, + issues: { + any: () => Promise.resolve(hasIssues) } }; }); @@ -66,4 +71,34 @@ describe("when the button is clicked and there are not validation errors", () => expect(screen.queryByRole("button", { name: "Continue" })).not.toBeInTheDocument(); }); }); + + describe("if there are issues", () => { + beforeEach(() => { + hasIssues = true; + }); + + it("shows a link to go to the issues page", async () => { + const { user } = installerRender(<InstallButton />); + const button = await screen.findByRole("button", { name: "Install" }); + await user.click(button); + + await screen.findByRole("button", { name: /list of issues$/ }); + }); + }); + + describe("if there are not issues", () => { + beforeEach(() => { + hasIssues = false; + }); + + it("does not show a link to go to the issues page", async () => { + const { user } = installerRender(<InstallButton />); + const button = await screen.findByRole("button", { name: "Install" }); + await user.click(button); + await waitFor(() => { + const link = screen.queryByRole("button", { name: /list of issues$/ }); + expect(link).toBeNull(); + }); + }); + }); }); From 8aa109e03b8872aa3ee11c4c9e5e53862cf98f86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Iv=C3=A1n=20L=C3=B3pez=20Gonz=C3=A1lez?= <jlopez@suse.com> Date: Fri, 28 Apr 2023 16:14:35 +0100 Subject: [PATCH 37/58] [web] Add notification mark to sidebar --- web/src/assets/styles/blocks.scss | 25 +++++++- web/src/components/core/NotificationMark.jsx | 33 ++++++++--- .../components/core/NotificationMark.test.jsx | 46 +++++++++++++-- web/src/components/core/Sidebar.jsx | 2 +- web/src/components/core/Sidebar.test.jsx | 57 ++++++++++++++++--- 5 files changed, 141 insertions(+), 22 deletions(-) diff --git a/web/src/assets/styles/blocks.scss b/web/src/assets/styles/blocks.scss index 08e40a0445..164724c5bb 100644 --- a/web/src/assets/styles/blocks.scss +++ b/web/src/assets/styles/blocks.scss @@ -220,8 +220,29 @@ section > .content { } span.notification-mark { - --border-width: 2px; - --size: calc(var(--fs-base) + var(--border-width)); + --nm-border-width: 0; + --nm-border-color: transparent; + --nm-border: var(--nm-border-width) solid var(--nm-border-color); + --nm-size: 8px; + --nm-margin-inline: var(--nm-size, 5px); + --nm-display: inline-block; + --nm-color: #00BFFF; //deepskyblue + + margin-inline: var(--nm-margin-inline); + display: var(--nm-display); + background: var(--nm-color); + border: var(--nm-border); + width: var(--nm-size); + height: var(--nm-size); + border-radius: 999px; +} + +span.notification-mark[data-variant="sidebar"] { + --nm-size: calc(var(--fs-base) + var(--nm-border-width)); + --nm-display: initial; + --nm-border-width: 2px; + --nm-border-color: var(--color-primary); + --nm-margin-inline: 0; position: absolute; right: 0; diff --git a/web/src/components/core/NotificationMark.jsx b/web/src/components/core/NotificationMark.jsx index 8e6feac3cf..71c12a7ef3 100644 --- a/web/src/components/core/NotificationMark.jsx +++ b/web/src/components/core/NotificationMark.jsx @@ -19,24 +19,43 @@ * find current contact information at www.suse.com. */ -import React from "react"; +import React, { useCallback, useEffect, useState } from "react"; + +import { useCancellablePromise } from "~/utils"; +import { useInstallerClient } from "~/context/installer"; +import { If } from "~/components/core"; /** - * A notification mark that icon for catching the users attention when there is + * A notification mark for catching the users attention when there is * something that can be interesting for them but not urgent enough to use a * (blocking) Popup. * * @component * - * Initially though to be displayed on top of the Sidebar icon. - * * Use only when the information to show might be overlooked without risk and/or * when the information will be displayed sooner or later in other way (in a * confirmation dialog, for example). * * @param {object} props - * @param {string} props.label - the label to be announced by screen readers */ -export default function NotificationMark ({ label }) { - return <span className="notification-mark" role="status" aria-label={label} />; +export default function NotificationMark ({ ...props }) { + const [hasIssues, setHasIssues] = useState(false); + const { issues: client } = useInstallerClient(); + const { cancellablePromise } = useCancellablePromise(); + + const checkIssues = useCallback(async () => { + setHasIssues(await cancellablePromise(client.any())); + }, [client, cancellablePromise, setHasIssues]); + + useEffect(() => { + checkIssues(); + return client.onIssuesChange(checkIssues); + }, [client, checkIssues]); + + return ( + <If + condition={hasIssues} + then={<span className="notification-mark" role="status" {...props} />} + /> + ); } diff --git a/web/src/components/core/NotificationMark.test.jsx b/web/src/components/core/NotificationMark.test.jsx index 551c019a9f..62318e3bb3 100644 --- a/web/src/components/core/NotificationMark.test.jsx +++ b/web/src/components/core/NotificationMark.test.jsx @@ -20,11 +20,47 @@ */ import React from "react"; -import { screen } from "@testing-library/react"; -import { plainRender } from "~/test-utils"; +import { screen, waitFor } from "@testing-library/react"; +import { installerRender } from "~/test-utils"; import { NotificationMark } from "~/components/core"; +import { createClient } from "~/client"; -it("renders a span with status role", async () => { - plainRender(<NotificationMark label="Some issues detected, please have a look" />); - screen.getByRole("status", { name: "Some issues detected, please have a look" }); +let hasIssues = false; + +jest.mock("~/client"); + +beforeEach(() => { + createClient.mockImplementation(() => { + return { + issues: { + any: () => Promise.resolve(hasIssues), + onIssuesChange: jest.fn() + } + }; + }); +}); + +describe("if there are issues", () => { + beforeEach(() => { + hasIssues = true; + }); + + it("renders a span with status role", async () => { + installerRender(<NotificationMark aria-label="See issues" />, { usingProvider: true }); + await screen.findByRole("status", { name: "See issues" }); + }); +}); + +describe("if there are not issues", () => { + beforeEach(() => { + hasIssues = false; + }); + + it("renders nothing", async () => { + installerRender(<NotificationMark aria-label="See issues" />, { usingProvider: true }); + waitFor(async () => { + const mark = await screen.findByRole("status", { name: "See issues" }); + expect(mark).toBeNull(); + }); + }); }); diff --git a/web/src/components/core/Sidebar.jsx b/web/src/components/core/Sidebar.jsx index 7b9a0f74de..59df1d37f6 100644 --- a/web/src/components/core/Sidebar.jsx +++ b/web/src/components/core/Sidebar.jsx @@ -94,7 +94,7 @@ export default function Sidebar ({ children }) { aria-controls="navigation-and-options" aria-expanded={isOpen} > - <NotificationMark /> + <NotificationMark data-variant="sidebar" aria-label="See issues" /> <Icon name="menu" /> </button> </AppActions> diff --git a/web/src/components/core/Sidebar.test.jsx b/web/src/components/core/Sidebar.test.jsx index a29e802a86..32e40c7fbb 100644 --- a/web/src/components/core/Sidebar.test.jsx +++ b/web/src/components/core/Sidebar.test.jsx @@ -21,19 +21,36 @@ import React from "react"; import { screen, within } from "@testing-library/react"; -import { plainRender, mockLayout } from "~/test-utils"; +import { installerRender, mockLayout } from "~/test-utils"; import { Sidebar } from "~/components/core"; +import { createClient } from "~/client"; jest.mock("~/components/layout/Layout", () => mockLayout()); +let hasIssues = false; + +jest.mock("~/client"); + +beforeEach(() => { + createClient.mockImplementation(() => { + return { + issues: { + any: () => Promise.resolve(hasIssues), + onIssuesChange: jest.fn() + } + }; + }); +}); + it("renders the sidebar initially hidden", async () => { - plainRender(<Sidebar />); + installerRender(<Sidebar />, { usingProvider: true }); + const nav = await screen.findByRole("navigation", { name: /options/i }); expect(nav).toHaveAttribute("data-state", "hidden"); }); it("renders a link for displaying the sidebar", async () => { - const { user } = plainRender(<Sidebar />); + const { user } = installerRender(<Sidebar />, { usingProvider: true }); const link = await screen.findByLabelText(/Show/i); const nav = await screen.findByRole("navigation", { name: /options/i }); @@ -44,7 +61,7 @@ it("renders a link for displaying the sidebar", async () => { }); it("renders a link for hiding the sidebar", async () => { - const { user } = plainRender(<Sidebar />); + const { user } = installerRender(<Sidebar />, { usingProvider: true }); const openLink = await screen.findByLabelText(/Show/i); const closeLink = await screen.findByLabelText(/Hide/i); @@ -58,7 +75,7 @@ it("renders a link for hiding the sidebar", async () => { }); it("moves the focus to the close action after opening it", async () => { - const { user } = plainRender(<Sidebar />); + const { user } = installerRender(<Sidebar />, { usingProvider: true }); const openLink = await screen.findByLabelText(/Show/i); const closeLink = await screen.findByLabelText(/Hide/i); @@ -70,13 +87,14 @@ it("moves the focus to the close action after opening it", async () => { describe("onClick bubbling", () => { it("hides the sidebar only if the user clicked on a link or button w/o keepSidebarOpen attribute", async () => { - const { user } = plainRender( + const { user } = installerRender( <Sidebar> <a href="#">Goes somewhere</a> <a href="#" data-keep-sidebar-open="true">Keep it open!</a> <button>Do something</button> <button data-keep-sidebar-open="true">Keep it open!</button> - </Sidebar> + </Sidebar>, + { UsingProvider: true } ); const openLink = screen.getByLabelText(/Show/i); @@ -113,3 +131,28 @@ describe("onClick bubbling", () => { expect(nav).toHaveAttribute("data-state", "hidden"); }); }); + +describe("if there are issues", () => { + beforeEach(() => { + hasIssues = true; + }); + + it("includes a notification mark", async () => { + installerRender(<Sidebar />, { usingProvider: true }); + const link = await screen.findByLabelText(/Show/i); + within(link).getByRole("status", { name: "See issues" }); + }); +}); + +describe("if there are not issues", () => { + beforeEach(() => { + hasIssues = false; + }); + + it("does not include a notification mark", async () => { + installerRender(<Sidebar />, { usingProvider: true }); + const link = await screen.findByLabelText(/Show/i); + const mark = within(link).queryByRole("status", { name: "See issues" }); + expect(mark).toBeNull(); + }); +}); From 7bcba1caa2a2fa7ded269b1fc2c9a5392c452be1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Iv=C3=A1n=20L=C3=B3pez=20Gonz=C3=A1lez?= <jlopez@suse.com> Date: Fri, 28 Apr 2023 16:15:46 +0100 Subject: [PATCH 38/58] [web] Add issues page --- web/src/assets/styles/blocks.scss | 20 ++- web/src/components/core/IssuesLink.jsx | 40 +++++ web/src/components/core/IssuesLink.test.jsx | 72 +++++++++ web/src/components/core/IssuesPage.jsx | 167 ++++++++++++++++++++ web/src/components/core/IssuesPage.test.jsx | 82 ++++++++++ web/src/components/core/index.js | 2 + web/src/components/layout/Layout.jsx | 11 +- web/src/index.js | 2 + 8 files changed, 390 insertions(+), 6 deletions(-) create mode 100644 web/src/components/core/IssuesLink.jsx create mode 100644 web/src/components/core/IssuesLink.test.jsx create mode 100644 web/src/components/core/IssuesPage.jsx create mode 100644 web/src/components/core/IssuesPage.test.jsx diff --git a/web/src/assets/styles/blocks.scss b/web/src/assets/styles/blocks.scss index 164724c5bb..f3dbec39cd 100644 --- a/web/src/assets/styles/blocks.scss +++ b/web/src/assets/styles/blocks.scss @@ -246,9 +246,19 @@ span.notification-mark[data-variant="sidebar"] { position: absolute; right: 0; - background: var(--color-primary-lighter); - border: var(--border-width) solid var(--color-primary); - width: var(--size); - height: var(--size); - border-radius: 999px; +} + +.issue { + --icon-size: 1rem; + + div:first-child { + svg { + width: var(--icon-size); + height: var(--icon-size); + } + } + + div:nth-child(2) { + padding-left: calc(var(--icon-size) + var(--pf-c-helper-text__item-icon--MarginRight)); + } } diff --git a/web/src/components/core/IssuesLink.jsx b/web/src/components/core/IssuesLink.jsx new file mode 100644 index 0000000000..a99928e304 --- /dev/null +++ b/web/src/components/core/IssuesLink.jsx @@ -0,0 +1,40 @@ +/* + * Copyright (c) [2023] SUSE LLC + * + * All Rights Reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as published + * by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, contact SUSE LLC. + * + * To contact SUSE LLC about this file by physical or electronic mail, you may + * find current contact information at www.suse.com. + */ + +import React from "react"; +import { Link } from "react-router-dom"; + +import { Icon } from "~/components/layout"; +import { NotificationMark } from "~/components/core"; + +/** + * Link to go to the issues page + * @component + */ +export default function IssuesLink() { + return ( + <Link to="/issues"> + <Icon name="problem" size="24" /> + Show issues + <NotificationMark aria-label="See issues" /> + </Link> + ); +} diff --git a/web/src/components/core/IssuesLink.test.jsx b/web/src/components/core/IssuesLink.test.jsx new file mode 100644 index 0000000000..145f253bb2 --- /dev/null +++ b/web/src/components/core/IssuesLink.test.jsx @@ -0,0 +1,72 @@ +/* + * Copyright (c) [2023] SUSE LLC + * + * All Rights Reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as published + * by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, contact SUSE LLC. + * + * To contact SUSE LLC about this file by physical or electronic mail, you may + * find current contact information at www.suse.com. + */ + +import React from "react"; +import { screen, within } from "@testing-library/react"; +import { installerRender } from "~/test-utils"; +import { createClient } from "~/client"; +import { IssuesLink } from "~/components/core"; + +let hasIssues = false; + +jest.mock("~/client"); + +beforeEach(() => { + createClient.mockImplementation(() => { + return { + issues: { + any: () => Promise.resolve(hasIssues), + onIssuesChange: jest.fn() + } + }; + }); +}); + +it("renders a link for navigating to the issues page", async () => { + installerRender(<IssuesLink />, { usingProvider: true }); + const link = await screen.findByRole("link", { name: "Show issues" }); + expect(link).toHaveAttribute("href", "/issues"); +}); + +describe("if there are issues", () => { + beforeEach(() => { + hasIssues = true; + }); + + it("includes a notification mark", async () => { + installerRender(<IssuesLink />, { usingProvider: true }); + const link = await screen.findByRole("link", { name: "Show issues" }); + within(link).getByRole("status", { name: "See issues" }); + }); +}); + +describe("if there are not issues", () => { + beforeEach(() => { + hasIssues = false; + }); + + it("does not include a notification mark", async () => { + installerRender(<IssuesLink />, { usingProvider: true }); + const link = await screen.findByRole("link", { name: "Show issues" }); + const mark = within(link).queryByRole("status", { name: "See issues" }); + expect(mark).toBeNull(); + }); +}); diff --git a/web/src/components/core/IssuesPage.jsx b/web/src/components/core/IssuesPage.jsx new file mode 100644 index 0000000000..ca1c277d70 --- /dev/null +++ b/web/src/components/core/IssuesPage.jsx @@ -0,0 +1,167 @@ +/* + * Copyright (c) [2023] SUSE LLC + * + * All Rights Reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as published + * by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, contact SUSE LLC. + * + * To contact SUSE LLC about this file by physical or electronic mail, you may + * find current contact information at www.suse.com. + */ + +import React, { useCallback, useEffect, useState } from "react"; + +import { HelperText, HelperTextItem, Skeleton } from "@patternfly/react-core"; + +import { partition, useCancellablePromise } from "~/utils"; +import { If, Page, Section } from "~/components/core"; +import { Icon } from "~/components/layout"; +import { useInstallerClient } from "~/context/installer"; + +/** + * Renders an issue + * @component + * + * @param {object} props + * @param {import ("~/client/mixins").Issue} props.issue + */ +const IssueItem = ({ issue }) => { + const variant = issue.severity === "warn" ? "warning" : "error"; + const icon = issue.severity === "warn" ? "warning" : "error"; + const hasDetails = issue.details.length > 0; + + return ( + <div> + <HelperText className="issue"> + <HelperTextItem variant={variant} hasIcon icon={<Icon name={icon} />}> + {issue.description} + </HelperTextItem> + <If + condition={hasDetails} + then={<HelperTextItem>{issue.details}</HelperTextItem>} + /> + </HelperText> + </div> + ); +}; + +/** + * Generates a specific section with issues + * @component + * + * @param {object} props + * @param {import ("~/client/mixins").Issue[]} props.issues + * @param {object} props.props + */ +const IssuesSection = ({ issues, ...props }) => { + if (issues.length === 0) return null; + + const sortedIssues = partition(issues, i => i.severity === "error").flat(); + + const issueItems = sortedIssues.map((issue, index) => { + return <IssueItem key={`issue-${index}`} issue={issue} />; + }); + + return ( + <Section { ...props }> + {issueItems} + </Section> + ); +}; + +/** + * Generates the sections with issues + * @component + * + * @param {object} props + * @param {import ("~/client/issues").ClientsIssues} props.issues + */ +const IssuesSections = ({ issues }) => { + return ( + <IssuesSection + key="storage-issues" + title="Storage" + icon="hard_drive" + issues={issues.storage || []} + /> + ); +}; + +/** + * Generates the content for each section with issues. If there are no issues, then a success + * message is shown. + * @component + * + * @param {object} props + * @param {import ("~/client/issues").ClientsIssues} props.issues + */ +const IssuesContent = ({ issues }) => { + const NoIssues = () => { + return ( + <HelperText className="issue"> + <HelperTextItem variant="success" hasIcon icon={<Icon name="task_alt" />}> + No issues found. Everything looks ok. + </HelperTextItem> + </HelperText> + ); + }; + + const allIssues = Object.values(issues).flat(); + + return ( + <If + condition={allIssues.length === 0} + then={<NoIssues />} + else={<IssuesSections issues={issues} />} + /> + ); +}; + +/** + * Page to show all issues per section + * @component + */ +export default function IssuesPage() { + const [isLoading, setIsLoading] = useState(true); + const [issues, setIssues] = useState({}); + const { issues: client } = useInstallerClient(); + const { cancellablePromise } = useCancellablePromise(); + + const loadIssues = useCallback(async () => { + setIsLoading(true); + const allIssues = await cancellablePromise(client.getAll()); + setIssues(allIssues); + setIsLoading(false); + }, [client, cancellablePromise, setIssues, setIsLoading]); + + useEffect(() => { + loadIssues(); + return client.onIssuesChange(loadIssues); + }, [client, loadIssues]); + + return ( + <Page + title="Issues" + icon="problem" + actionLabel="Back" + actionVariant="secondary" + navigateTo={-1} + > + <If + condition={isLoading} + then={<Skeleton />} + else={<IssuesContent issues={issues} />} + /> + </Page> + ); +} diff --git a/web/src/components/core/IssuesPage.test.jsx b/web/src/components/core/IssuesPage.test.jsx new file mode 100644 index 0000000000..821ca6493a --- /dev/null +++ b/web/src/components/core/IssuesPage.test.jsx @@ -0,0 +1,82 @@ +/* + * Copyright (c) [2023] SUSE LLC + * + * All Rights Reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as published + * by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, contact SUSE LLC. + * + * To contact SUSE LLC about this file by physical or electronic mail, you may + * find current contact information at www.suse.com. + */ + +import React from "react"; +import { screen, within } from "@testing-library/react"; +import { installerRender, mockComponent } from "~/test-utils"; +import { createClient } from "~/client"; +import { IssuesPage } from "~/components/core"; + +jest.mock("~/client"); + +jest.mock("@patternfly/react-core", () => { + const original = jest.requireActual("@patternfly/react-core"); + + return { + ...original, + Skeleton: mockComponent("PFSkeleton") + }; +}); + +let issues = { + storage: [ + { description: "Issue 1", details: "Details 1", source: "system", severity: "warn" }, + { description: "Issue 2", details: "Details 2", source: "config", severity: "error" } + ] +}; + +beforeEach(() => { + createClient.mockImplementation(() => { + return { + issues: { + getAll: () => Promise.resolve(issues), + onIssuesChange: jest.fn() + } + }; + }); +}); + +it("loads the issues", async () => { + installerRender(<IssuesPage />); + + screen.getAllByText(/PFSkeleton/); + await screen.findByText(/Issue 1/); +}); + +it("renders sections with issues", async () => { + installerRender(<IssuesPage />); + + const section = await screen.findByText(/Storage/); + within(section).findByText(/Issue 1/); + within(section).findByText(/Issue 2/); +}); + +describe("if there are not issues", () => { + beforeEach(() => { + issues = { storage: [] }; + }); + + it("renders a success message", async () => { + installerRender(<IssuesPage />); + + await screen.findByText(/No issues found/); + }); +}); diff --git a/web/src/components/core/index.js b/web/src/components/core/index.js index 976870f9b7..f5f7efcf67 100644 --- a/web/src/components/core/index.js +++ b/web/src/components/core/index.js @@ -32,6 +32,8 @@ export { default as Installation } from "./Installation"; export { default as InstallationFinished } from "./InstallationFinished"; export { default as InstallationProgress } from "./InstallationProgress"; export { default as InstallButton } from "./InstallButton"; +export { default as IssuesLink } from "./IssuesLink"; +export { default as IssuesPage } from "./IssuesPage"; export { default as SectionSkeleton } from "./SectionSkeleton"; export { default as LoadingEnvironment } from "./LoadingEnvironment"; export { default as KebabMenu } from "./KebabMenu"; diff --git a/web/src/components/layout/Layout.jsx b/web/src/components/layout/Layout.jsx index 1cbdbb836b..680c622f58 100644 --- a/web/src/components/layout/Layout.jsx +++ b/web/src/components/layout/Layout.jsx @@ -24,7 +24,15 @@ import React from "react"; import logoUrl from "~/assets/suse-horizontal-logo.svg"; import { createTeleporter } from "react-teleporter"; import { ChangeProductLink } from "~/components/software"; -import { About, Disclosure, LogsButton, Sidebar, ShowLogButton, ShowTerminalButton } from "~/components/core"; +import { + About, + Disclosure, + IssuesLink, + LogsButton, + Sidebar, + ShowLogButton, + ShowTerminalButton +} from "~/components/core"; const PageTitle = createTeleporter(); const PageActions = createTeleporter(); @@ -86,6 +94,7 @@ function Layout({ children }) { <Sidebar> <> <ChangeProductLink /> + <IssuesLink /> <Disclosure label="Diagnostic tools" data-keep-sidebar-open> <ShowLogButton /> <LogsButton data-keep-sidebar-open="true" /> diff --git a/web/src/index.js b/web/src/index.js index b6b411a5c8..b4f2536ccf 100644 --- a/web/src/index.js +++ b/web/src/index.js @@ -44,6 +44,7 @@ import { ProposalPage as StoragePage, DASDPage, ISCSIPage } from "~/components/s import { UsersPage } from "~/components/users"; import { L10nPage } from "~/components/l10n"; import { NetworkPage } from "~/components/network"; +import { IssuesPage } from "~/components/core"; /** * As JSX components might import CSS stylesheets, our styles must be imported @@ -84,6 +85,7 @@ root.render( <Route path="/storage/dasd" element={<DASDPage />} /> <Route path="/network" element={<NetworkPage />} /> <Route path="/users" element={<UsersPage />} /> + <Route path="/issues" element={<IssuesPage />} /> </Route> <Route path="products" element={<ProductSelectionPage />} /> </Route> From 8ca7aba88001d5bf1531158d607c5d905faa5adb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Iv=C3=A1n=20L=C3=B3pez=20Gonz=C3=A1lez?= <jlopez@suse.com> Date: Fri, 28 Apr 2023 16:17:56 +0100 Subject: [PATCH 39/58] [web] Changelog --- web/package/cockpit-agama.changes | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/web/package/cockpit-agama.changes b/web/package/cockpit-agama.changes index db0d9246d9..ecef283806 100644 --- a/web/package/cockpit-agama.changes +++ b/web/package/cockpit-agama.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Fri Apr 28 15:16:04 UTC 2023 - José Iván López González <jlopez@suse.com> + +- Add issues for storage client. +- Add issues page. +- gh#openSUSE/agama#540 + ------------------------------------------------------------------- Mon Apr 24 15:53:35 UTC 2023 - David Diaz <dgonzalez@suse.com> From 090ebf9c4e35f0810f9e14e2eeb439047230101e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ladislav=20Slez=C3=A1k?= <lslezak@suse.com> Date: Sat, 29 Apr 2023 17:16:45 +0200 Subject: [PATCH 40/58] Update take_screenshots.spec.ts Increase the timeout in the test --- playwright/tests/take_screenshots.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/playwright/tests/take_screenshots.spec.ts b/playwright/tests/take_screenshots.spec.ts index be0ec30839..6c1cc17c00 100644 --- a/playwright/tests/take_screenshots.spec.ts +++ b/playwright/tests/take_screenshots.spec.ts @@ -80,7 +80,7 @@ test.describe("The Installer", () => { await test.step("Storage configuration", async () => { // create storage page screenshot await page.locator("a[href='#/storage']").click(); - await expect(page.getByRole("heading", { name: "Settings" })).toBeVisible(); + await expect(page.getByRole("heading", { name: "Settings" })).toBeVisible({timeout: 1 * minute}); await page.screenshot({ path: "screenshots/storage-page.png" }); }); From 40bd3620879cee49e0a4b00d3804f8cf36bcf4ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20D=C3=ADaz=20Gonz=C3=A1lez?= <dgonzalez@suse.de> Date: Tue, 2 May 2023 10:09:25 +0100 Subject: [PATCH 41/58] [web] Do not show group options name until needed Since it can be confusing --- web/src/components/storage/ProposalPageOptions.jsx | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/web/src/components/storage/ProposalPageOptions.jsx b/web/src/components/storage/ProposalPageOptions.jsx index 858e8310e3..8982645ea0 100644 --- a/web/src/components/storage/ProposalPageOptions.jsx +++ b/web/src/components/storage/ProposalPageOptions.jsx @@ -74,10 +74,7 @@ export default function ProposalPageOptions () { return ( <PageOptions> - <PageOptions.Group - label="Configure" - key="devices-options" - > + <PageOptions.Group key="devices-options"> <If condition={showDasdLink} then={<DASDLink />} /> <ISCSILink /> </PageOptions.Group> From 48dfa5b39b43cc434e5e51a7646373440aef9926 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20D=C3=ADaz=20Gonz=C3=A1lez?= <dgonzalez@suse.de> Date: Tue, 2 May 2023 10:10:02 +0100 Subject: [PATCH 42/58] [web] Add missing unit test --- .../storage/ProposalPageOptions.test.jsx | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 web/src/components/storage/ProposalPageOptions.test.jsx diff --git a/web/src/components/storage/ProposalPageOptions.test.jsx b/web/src/components/storage/ProposalPageOptions.test.jsx new file mode 100644 index 0000000000..54c640c4c6 --- /dev/null +++ b/web/src/components/storage/ProposalPageOptions.test.jsx @@ -0,0 +1,68 @@ +/* + * Copyright (c) [2023] SUSE LLC + * + * All Rights Reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as published + * by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, contact SUSE LLC. + * + * To contact SUSE LLC about this file by physical or electronic mail, you may + * find current contact information at www.suse.com. + */ + +import React from "react"; +import { screen } from "@testing-library/react"; +import { installerRender, mockLayout } from "~/test-utils"; +import { createClient } from "~/client"; +import { ProposalPageOptions } from "~/components/storage"; + +jest.mock("~/client"); +jest.mock("~/components/layout/Layout", () => mockLayout()); + +const isDASDSupportedFn = jest.fn(); + +const dasd = { + isSupported: isDASDSupportedFn +}; + +beforeEach(() => { + isDASDSupportedFn.mockResolvedValue(false); + + createClient.mockImplementation(() => { + return { + storage: { dasd } + }; + }); +}); + +it("contains an entry for configuring iSCSI", async () => { + const { user } = installerRender(<ProposalPageOptions />); + const toggler = screen.getByRole("button"); + await user.click(toggler); + screen.getByRole("menuitem", { name: /iSCSI/ }); +}); + +it("contains an entry for configuring DASD when is supported", async () => { + isDASDSupportedFn.mockResolvedValue(true); + const { user } = installerRender(<ProposalPageOptions />); + const toggler = screen.getByRole("button"); + await user.click(toggler); + screen.getByRole("menuitem", { name: /DASD/ }); +}); + +it("does not contain an entry for configuring DASD when is NOT supported", async () => { + isDASDSupportedFn.mockResolvedValue(false); + const { user } = installerRender(<ProposalPageOptions />); + const toggler = screen.getByRole("button"); + await user.click(toggler); + expect(screen.queryByRole("menuitem", { name: /DASD/ })).toBeNull(); +}); From 95e2daa1d02898167f374d09cb573d48cfdcf81f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Iv=C3=A1n=20L=C3=B3pez=20Gonz=C3=A1lez?= <jlopez@suse.com> Date: Tue, 2 May 2023 13:40:20 +0100 Subject: [PATCH 43/58] [web] Hide notification mark after visiting issues - Add notification context --- web/src/components/core/IssuesLink.jsx | 10 ++- web/src/components/core/IssuesLink.test.jsx | 8 +- web/src/components/core/IssuesPage.jsx | 5 +- web/src/components/core/IssuesPage.test.jsx | 9 ++- web/src/components/core/NotificationMark.jsx | 26 +------ .../components/core/NotificationMark.test.jsx | 46 ++---------- web/src/components/core/Sidebar.jsx | 9 ++- web/src/components/core/Sidebar.test.jsx | 29 +++---- web/src/context/notification.jsx | 75 +++++++++++++++++++ web/src/index.js | 39 +++++----- web/src/test-utils.js | 16 ++++ 11 files changed, 162 insertions(+), 110 deletions(-) create mode 100644 web/src/context/notification.jsx diff --git a/web/src/components/core/IssuesLink.jsx b/web/src/components/core/IssuesLink.jsx index a99928e304..2587080968 100644 --- a/web/src/components/core/IssuesLink.jsx +++ b/web/src/components/core/IssuesLink.jsx @@ -23,18 +23,24 @@ import React from "react"; import { Link } from "react-router-dom"; import { Icon } from "~/components/layout"; -import { NotificationMark } from "~/components/core"; +import { If, NotificationMark } from "~/components/core"; +import { useNotification } from "~/context/notification"; /** * Link to go to the issues page * @component */ export default function IssuesLink() { + const [notification] = useNotification(); + return ( <Link to="/issues"> <Icon name="problem" size="24" /> Show issues - <NotificationMark aria-label="See issues" /> + <If + condition={notification.issues} + then={<NotificationMark aria-label="See issues" />} + /> </Link> ); } diff --git a/web/src/components/core/IssuesLink.test.jsx b/web/src/components/core/IssuesLink.test.jsx index 145f253bb2..2f62eefbea 100644 --- a/web/src/components/core/IssuesLink.test.jsx +++ b/web/src/components/core/IssuesLink.test.jsx @@ -21,7 +21,7 @@ import React from "react"; import { screen, within } from "@testing-library/react"; -import { installerRender } from "~/test-utils"; +import { installerRender, withNotificationProvider } from "~/test-utils"; import { createClient } from "~/client"; import { IssuesLink } from "~/components/core"; @@ -41,7 +41,7 @@ beforeEach(() => { }); it("renders a link for navigating to the issues page", async () => { - installerRender(<IssuesLink />, { usingProvider: true }); + installerRender(withNotificationProvider(<IssuesLink />)); const link = await screen.findByRole("link", { name: "Show issues" }); expect(link).toHaveAttribute("href", "/issues"); }); @@ -52,7 +52,7 @@ describe("if there are issues", () => { }); it("includes a notification mark", async () => { - installerRender(<IssuesLink />, { usingProvider: true }); + installerRender(withNotificationProvider(<IssuesLink />)); const link = await screen.findByRole("link", { name: "Show issues" }); within(link).getByRole("status", { name: "See issues" }); }); @@ -64,7 +64,7 @@ describe("if there are not issues", () => { }); it("does not include a notification mark", async () => { - installerRender(<IssuesLink />, { usingProvider: true }); + installerRender(withNotificationProvider(<IssuesLink />)); const link = await screen.findByRole("link", { name: "Show issues" }); const mark = within(link).queryByRole("status", { name: "See issues" }); expect(mark).toBeNull(); diff --git a/web/src/components/core/IssuesPage.jsx b/web/src/components/core/IssuesPage.jsx index ca1c277d70..23980a5a95 100644 --- a/web/src/components/core/IssuesPage.jsx +++ b/web/src/components/core/IssuesPage.jsx @@ -27,6 +27,7 @@ import { partition, useCancellablePromise } from "~/utils"; import { If, Page, Section } from "~/components/core"; import { Icon } from "~/components/layout"; import { useInstallerClient } from "~/context/installer"; +import { useNotification } from "~/context/notification"; /** * Renders an issue @@ -136,13 +137,15 @@ export default function IssuesPage() { const [issues, setIssues] = useState({}); const { issues: client } = useInstallerClient(); const { cancellablePromise } = useCancellablePromise(); + const [, updateNotification] = useNotification(); const loadIssues = useCallback(async () => { setIsLoading(true); const allIssues = await cancellablePromise(client.getAll()); setIssues(allIssues); setIsLoading(false); - }, [client, cancellablePromise, setIssues, setIsLoading]); + updateNotification({ issues: false }); + }, [client, cancellablePromise, setIssues, setIsLoading, updateNotification]); useEffect(() => { loadIssues(); diff --git a/web/src/components/core/IssuesPage.test.jsx b/web/src/components/core/IssuesPage.test.jsx index 821ca6493a..d903b7bd03 100644 --- a/web/src/components/core/IssuesPage.test.jsx +++ b/web/src/components/core/IssuesPage.test.jsx @@ -21,7 +21,7 @@ import React from "react"; import { screen, within } from "@testing-library/react"; -import { installerRender, mockComponent } from "~/test-utils"; +import { installerRender, mockComponent, withNotificationProvider } from "~/test-utils"; import { createClient } from "~/client"; import { IssuesPage } from "~/components/core"; @@ -47,6 +47,7 @@ beforeEach(() => { createClient.mockImplementation(() => { return { issues: { + any: () => Promise.resolve(true), getAll: () => Promise.resolve(issues), onIssuesChange: jest.fn() } @@ -55,14 +56,14 @@ beforeEach(() => { }); it("loads the issues", async () => { - installerRender(<IssuesPage />); + installerRender(withNotificationProvider(<IssuesPage />)); screen.getAllByText(/PFSkeleton/); await screen.findByText(/Issue 1/); }); it("renders sections with issues", async () => { - installerRender(<IssuesPage />); + installerRender(withNotificationProvider(<IssuesPage />)); const section = await screen.findByText(/Storage/); within(section).findByText(/Issue 1/); @@ -75,7 +76,7 @@ describe("if there are not issues", () => { }); it("renders a success message", async () => { - installerRender(<IssuesPage />); + installerRender(withNotificationProvider(<IssuesPage />)); await screen.findByText(/No issues found/); }); diff --git a/web/src/components/core/NotificationMark.jsx b/web/src/components/core/NotificationMark.jsx index 71c12a7ef3..a3751493c1 100644 --- a/web/src/components/core/NotificationMark.jsx +++ b/web/src/components/core/NotificationMark.jsx @@ -19,11 +19,7 @@ * find current contact information at www.suse.com. */ -import React, { useCallback, useEffect, useState } from "react"; - -import { useCancellablePromise } from "~/utils"; -import { useInstallerClient } from "~/context/installer"; -import { If } from "~/components/core"; +import React from "react"; /** * A notification mark for catching the users attention when there is @@ -39,23 +35,5 @@ import { If } from "~/components/core"; * @param {object} props */ export default function NotificationMark ({ ...props }) { - const [hasIssues, setHasIssues] = useState(false); - const { issues: client } = useInstallerClient(); - const { cancellablePromise } = useCancellablePromise(); - - const checkIssues = useCallback(async () => { - setHasIssues(await cancellablePromise(client.any())); - }, [client, cancellablePromise, setHasIssues]); - - useEffect(() => { - checkIssues(); - return client.onIssuesChange(checkIssues); - }, [client, checkIssues]); - - return ( - <If - condition={hasIssues} - then={<span className="notification-mark" role="status" {...props} />} - /> - ); + return <span className="notification-mark" role="status" {...props} />; } diff --git a/web/src/components/core/NotificationMark.test.jsx b/web/src/components/core/NotificationMark.test.jsx index 62318e3bb3..d05056f5f7 100644 --- a/web/src/components/core/NotificationMark.test.jsx +++ b/web/src/components/core/NotificationMark.test.jsx @@ -20,47 +20,11 @@ */ import React from "react"; -import { screen, waitFor } from "@testing-library/react"; -import { installerRender } from "~/test-utils"; +import { screen } from "@testing-library/react"; +import { plainRender } from "~/test-utils"; import { NotificationMark } from "~/components/core"; -import { createClient } from "~/client"; -let hasIssues = false; - -jest.mock("~/client"); - -beforeEach(() => { - createClient.mockImplementation(() => { - return { - issues: { - any: () => Promise.resolve(hasIssues), - onIssuesChange: jest.fn() - } - }; - }); -}); - -describe("if there are issues", () => { - beforeEach(() => { - hasIssues = true; - }); - - it("renders a span with status role", async () => { - installerRender(<NotificationMark aria-label="See issues" />, { usingProvider: true }); - await screen.findByRole("status", { name: "See issues" }); - }); -}); - -describe("if there are not issues", () => { - beforeEach(() => { - hasIssues = false; - }); - - it("renders nothing", async () => { - installerRender(<NotificationMark aria-label="See issues" />, { usingProvider: true }); - waitFor(async () => { - const mark = await screen.findByRole("status", { name: "See issues" }); - expect(mark).toBeNull(); - }); - }); +it("renders a span with status role", async () => { + plainRender(<NotificationMark aria-label="See issues" />); + await screen.findByRole("status", { name: "See issues" }); }); diff --git a/web/src/components/core/Sidebar.jsx b/web/src/components/core/Sidebar.jsx index 59df1d37f6..d9e50aff92 100644 --- a/web/src/components/core/Sidebar.jsx +++ b/web/src/components/core/Sidebar.jsx @@ -22,7 +22,8 @@ import React, { useEffect, useRef, useState } from "react"; import { Button, Text } from "@patternfly/react-core"; import { Icon, AppActions } from "~/components/layout"; -import { NotificationMark } from "~/components/core"; +import { If, NotificationMark } from "~/components/core"; +import { useNotification } from "~/context/notification"; /** * Agama sidebar navigation @@ -34,6 +35,7 @@ import { NotificationMark } from "~/components/core"; export default function Sidebar ({ children }) { const [isOpen, setIsOpen] = useState(false); const closeButtonRef = useRef(null); + const [notification] = useNotification(); const open = () => setIsOpen(true); const close = () => setIsOpen(false); @@ -94,7 +96,10 @@ export default function Sidebar ({ children }) { aria-controls="navigation-and-options" aria-expanded={isOpen} > - <NotificationMark data-variant="sidebar" aria-label="See issues" /> + <If + condition={notification.issues} + then={<NotificationMark data-variant="sidebar" aria-label="See issues" />} + /> <Icon name="menu" /> </button> </AppActions> diff --git a/web/src/components/core/Sidebar.test.jsx b/web/src/components/core/Sidebar.test.jsx index 32e40c7fbb..97d7824f8d 100644 --- a/web/src/components/core/Sidebar.test.jsx +++ b/web/src/components/core/Sidebar.test.jsx @@ -21,7 +21,7 @@ import React from "react"; import { screen, within } from "@testing-library/react"; -import { installerRender, mockLayout } from "~/test-utils"; +import { installerRender, mockLayout, withNotificationProvider } from "~/test-utils"; import { Sidebar } from "~/components/core"; import { createClient } from "~/client"; @@ -43,14 +43,14 @@ beforeEach(() => { }); it("renders the sidebar initially hidden", async () => { - installerRender(<Sidebar />, { usingProvider: true }); + installerRender(withNotificationProvider(<Sidebar />)); const nav = await screen.findByRole("navigation", { name: /options/i }); expect(nav).toHaveAttribute("data-state", "hidden"); }); it("renders a link for displaying the sidebar", async () => { - const { user } = installerRender(<Sidebar />, { usingProvider: true }); + const { user } = installerRender(withNotificationProvider(<Sidebar />)); const link = await screen.findByLabelText(/Show/i); const nav = await screen.findByRole("navigation", { name: /options/i }); @@ -61,7 +61,7 @@ it("renders a link for displaying the sidebar", async () => { }); it("renders a link for hiding the sidebar", async () => { - const { user } = installerRender(<Sidebar />, { usingProvider: true }); + const { user } = installerRender(withNotificationProvider(<Sidebar />)); const openLink = await screen.findByLabelText(/Show/i); const closeLink = await screen.findByLabelText(/Hide/i); @@ -75,7 +75,7 @@ it("renders a link for hiding the sidebar", async () => { }); it("moves the focus to the close action after opening it", async () => { - const { user } = installerRender(<Sidebar />, { usingProvider: true }); + const { user } = installerRender(withNotificationProvider(<Sidebar />)); const openLink = await screen.findByLabelText(/Show/i); const closeLink = await screen.findByLabelText(/Hide/i); @@ -88,13 +88,14 @@ it("moves the focus to the close action after opening it", async () => { describe("onClick bubbling", () => { it("hides the sidebar only if the user clicked on a link or button w/o keepSidebarOpen attribute", async () => { const { user } = installerRender( - <Sidebar> - <a href="#">Goes somewhere</a> - <a href="#" data-keep-sidebar-open="true">Keep it open!</a> - <button>Do something</button> - <button data-keep-sidebar-open="true">Keep it open!</button> - </Sidebar>, - { UsingProvider: true } + withNotificationProvider( + <Sidebar> + <a href="#">Goes somewhere</a> + <a href="#" data-keep-sidebar-open="true">Keep it open!</a> + <button>Do something</button> + <button data-keep-sidebar-open="true">Keep it open!</button> + </Sidebar> + ) ); const openLink = screen.getByLabelText(/Show/i); @@ -138,7 +139,7 @@ describe("if there are issues", () => { }); it("includes a notification mark", async () => { - installerRender(<Sidebar />, { usingProvider: true }); + installerRender(withNotificationProvider(<Sidebar />)); const link = await screen.findByLabelText(/Show/i); within(link).getByRole("status", { name: "See issues" }); }); @@ -150,7 +151,7 @@ describe("if there are not issues", () => { }); it("does not include a notification mark", async () => { - installerRender(<Sidebar />, { usingProvider: true }); + installerRender(withNotificationProvider(<Sidebar />)); const link = await screen.findByLabelText(/Show/i); const mark = within(link).queryByRole("status", { name: "See issues" }); expect(mark).toBeNull(); diff --git a/web/src/context/notification.jsx b/web/src/context/notification.jsx new file mode 100644 index 0000000000..00872b32d2 --- /dev/null +++ b/web/src/context/notification.jsx @@ -0,0 +1,75 @@ +/* + * Copyright (c) [2023] SUSE LLC + * + * All Rights Reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License as published + * by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, contact SUSE LLC. + * + * To contact SUSE LLC about this file by physical or electronic mail, you may + * find current contact information at www.suse.com. + */ + +import React, { useCallback, useContext, useEffect, useState } from "react"; +import { useCancellablePromise } from "~/utils"; +import { useInstallerClient } from "./installer"; + +const NotificationContext = React.createContext(); + +function NotificationProvider({ children }) { + const client = useInstallerClient(); + const { cancellablePromise } = useCancellablePromise(); + const [state, setState] = useState({ issues: false }); + + const update = useCallback(({ issues }) => { + setState(s => ({ ...s, issues })); + }, [setState]); + + const load = useCallback(async () => { + const hasIssues = await cancellablePromise(client.issues.any()); + update({ issues: hasIssues }); + }, [client, cancellablePromise, update]); + + useEffect(() => { + load(); + return client.issues.onIssuesChange(load); + }, [client, load]); + + const value = [state, update]; + + return <NotificationContext.Provider value={value}>{children}</NotificationContext.Provider>; +} + +/** + * Returns the current notification state and a function to update the state + * @function + * + * @typedef {object} NotificationState + * @property {boolean} [issues] - Whether there is a notification for pending to read issues + * + * @callback NotificationStateUpdater + * @param {NotificationState} state + * @return {void} + * + * @returns {[NotificationState, NotificationStateUpdater]} + */ +function useNotification() { + const context = useContext(NotificationContext); + + if (!context) { + throw new Error("useNotification must be used within a NotificationProvider"); + } + + return context; +} + +export { NotificationProvider, useNotification }; diff --git a/web/src/index.js b/web/src/index.js index b4f2536ccf..1bfab17d48 100644 --- a/web/src/index.js +++ b/web/src/index.js @@ -1,5 +1,5 @@ /* - * Copyright (c) [2022] SUSE LLC + * Copyright (c) [2022-2023] SUSE LLC * * All Rights Reserved. * @@ -27,6 +27,7 @@ import "regenerator-runtime/runtime"; import { HashRouter, Routes, Route } from "react-router-dom"; import { InstallerClientProvider } from "~/context/installer"; import { SoftwareProvider } from "~/context/software"; +import { NotificationProvider } from "~/context/notification"; import { createClient } from "~/client"; /** @@ -73,24 +74,26 @@ root.render( <LoginWrapper> <InstallerClientProvider client={createClient}> <SoftwareProvider> - <HashRouter> - <Routes> - <Route path="/" element={<App />}> - <Route path="/" element={<Main />}> - <Route index element={<Overview />} /> - <Route path="/overview" element={<Overview />} /> - <Route path="/l10n" element={<L10nPage />} /> - <Route path="/storage" element={<StoragePage />} /> - <Route path="/storage/iscsi" element={<ISCSIPage />} /> - <Route path="/storage/dasd" element={<DASDPage />} /> - <Route path="/network" element={<NetworkPage />} /> - <Route path="/users" element={<UsersPage />} /> - <Route path="/issues" element={<IssuesPage />} /> + <NotificationProvider> + <HashRouter> + <Routes> + <Route path="/" element={<App />}> + <Route path="/" element={<Main />}> + <Route index element={<Overview />} /> + <Route path="/overview" element={<Overview />} /> + <Route path="/l10n" element={<L10nPage />} /> + <Route path="/storage" element={<StoragePage />} /> + <Route path="/storage/iscsi" element={<ISCSIPage />} /> + <Route path="/storage/dasd" element={<DASDPage />} /> + <Route path="/network" element={<NetworkPage />} /> + <Route path="/users" element={<UsersPage />} /> + <Route path="/issues" element={<IssuesPage />} /> + </Route> + <Route path="products" element={<ProductSelectionPage />} /> </Route> - <Route path="products" element={<ProductSelectionPage />} /> - </Route> - </Routes> - </HashRouter> + </Routes> + </HashRouter> + </NotificationProvider> </SoftwareProvider> </InstallerClientProvider> </LoginWrapper> diff --git a/web/src/test-utils.js b/web/src/test-utils.js index a472747423..436efee575 100644 --- a/web/src/test-utils.js +++ b/web/src/test-utils.js @@ -32,6 +32,7 @@ import { render } from "@testing-library/react"; import { createClient } from "~/client/index"; import { InstallerClientProvider } from "~/context/installer"; +import { NotificationProvider } from "~/context/notification"; /** * Internal mock for manipulating routes, using ["/"] by default @@ -150,6 +151,20 @@ const mockLayout = () => ({ AdditionalInfo: ({ children }) => children, }); +/** + * Wraps the content with a notification provider + * + * @param {React.ReactNode} content + * @returns {React.ReactNode} + */ +const withNotificationProvider = (content) => { + return ( + <NotificationProvider> + {content} + </NotificationProvider> + ); +}; + export { plainRender, installerRender, @@ -158,4 +173,5 @@ export { mockLayout, mockNavigateFn, mockRoutes, + withNotificationProvider }; From 3bf9ee4281c7c3ec9b760b6973247ac5a6b9c029 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Iv=C3=A1n=20L=C3=B3pez=20Gonz=C3=A1lez?= <jlopez@suse.com> Date: Tue, 2 May 2023 16:45:53 +0100 Subject: [PATCH 44/58] [web] Improve aria-label --- web/src/components/core/IssuesLink.jsx | 2 +- web/src/components/core/IssuesLink.test.jsx | 6 +++--- web/src/components/core/Sidebar.jsx | 2 +- web/src/components/core/Sidebar.test.jsx | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/web/src/components/core/IssuesLink.jsx b/web/src/components/core/IssuesLink.jsx index 2587080968..cf3b50b265 100644 --- a/web/src/components/core/IssuesLink.jsx +++ b/web/src/components/core/IssuesLink.jsx @@ -39,7 +39,7 @@ export default function IssuesLink() { Show issues <If condition={notification.issues} - then={<NotificationMark aria-label="See issues" />} + then={<NotificationMark aria-label="There are new issues" />} /> </Link> ); diff --git a/web/src/components/core/IssuesLink.test.jsx b/web/src/components/core/IssuesLink.test.jsx index 2f62eefbea..dc2fdae1ba 100644 --- a/web/src/components/core/IssuesLink.test.jsx +++ b/web/src/components/core/IssuesLink.test.jsx @@ -53,8 +53,8 @@ describe("if there are issues", () => { it("includes a notification mark", async () => { installerRender(withNotificationProvider(<IssuesLink />)); - const link = await screen.findByRole("link", { name: "Show issues" }); - within(link).getByRole("status", { name: "See issues" }); + const link = await screen.findByRole("link", { name: /new issues/ }); + within(link).getByRole("status", { name: /new issues/ }); }); }); @@ -66,7 +66,7 @@ describe("if there are not issues", () => { it("does not include a notification mark", async () => { installerRender(withNotificationProvider(<IssuesLink />)); const link = await screen.findByRole("link", { name: "Show issues" }); - const mark = within(link).queryByRole("status", { name: "See issues" }); + const mark = within(link).queryByRole("status", { name: /new issues/ }); expect(mark).toBeNull(); }); }); diff --git a/web/src/components/core/Sidebar.jsx b/web/src/components/core/Sidebar.jsx index d9e50aff92..7d8b27e856 100644 --- a/web/src/components/core/Sidebar.jsx +++ b/web/src/components/core/Sidebar.jsx @@ -98,7 +98,7 @@ export default function Sidebar ({ children }) { > <If condition={notification.issues} - then={<NotificationMark data-variant="sidebar" aria-label="See issues" />} + then={<NotificationMark data-variant="sidebar" aria-label="New issues found" />} /> <Icon name="menu" /> </button> diff --git a/web/src/components/core/Sidebar.test.jsx b/web/src/components/core/Sidebar.test.jsx index 97d7824f8d..ee2a5f9634 100644 --- a/web/src/components/core/Sidebar.test.jsx +++ b/web/src/components/core/Sidebar.test.jsx @@ -141,7 +141,7 @@ describe("if there are issues", () => { it("includes a notification mark", async () => { installerRender(withNotificationProvider(<Sidebar />)); const link = await screen.findByLabelText(/Show/i); - within(link).getByRole("status", { name: "See issues" }); + within(link).getByRole("status", { name: /New issues/ }); }); }); @@ -153,7 +153,7 @@ describe("if there are not issues", () => { it("does not include a notification mark", async () => { installerRender(withNotificationProvider(<Sidebar />)); const link = await screen.findByLabelText(/Show/i); - const mark = within(link).queryByRole("status", { name: "See issues" }); + const mark = within(link).queryByRole("status", { name: /New issues/ }); expect(mark).toBeNull(); }); }); From 98781162f80fcffa6e5b4ffa231c8bca101a5bfa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Iv=C3=A1n=20L=C3=B3pez=20Gonz=C3=A1lez?= <jlopez@suse.com> Date: Tue, 2 May 2023 17:06:34 +0100 Subject: [PATCH 45/58] [web] Wrap issue details --- web/src/components/core/IssuesPage.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/src/components/core/IssuesPage.jsx b/web/src/components/core/IssuesPage.jsx index 23980a5a95..02f2ec1c57 100644 --- a/web/src/components/core/IssuesPage.jsx +++ b/web/src/components/core/IssuesPage.jsx @@ -49,7 +49,7 @@ const IssueItem = ({ issue }) => { </HelperTextItem> <If condition={hasDetails} - then={<HelperTextItem>{issue.details}</HelperTextItem>} + then={<HelperTextItem><pre>{issue.details}</pre></HelperTextItem>} /> </HelperText> </div> From 4ce28f1f2556262d9095d46dd6a9e0eb52e898bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Iv=C3=A1n=20L=C3=B3pez=20Gonz=C3=A1lez?= <jlopez@suse.com> Date: Tue, 2 May 2023 17:13:43 +0100 Subject: [PATCH 46/58] [web] Remove leftover --- web/src/components/software/ChangeProductLink.test.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/src/components/software/ChangeProductLink.test.jsx b/web/src/components/software/ChangeProductLink.test.jsx index e7c6a986d3..84424abeab 100644 --- a/web/src/components/software/ChangeProductLink.test.jsx +++ b/web/src/components/software/ChangeProductLink.test.jsx @@ -70,7 +70,7 @@ describe("ChangeProductLink", () => { }); it("renders a link for navigating to the selection product page", async () => { - installerRender(<ChangeProductLink />, { usingProvider: true }); + installerRender(<ChangeProductLink />); const link = await screen.findByRole("link", { name: "Change product" }); expect(link).toHaveAttribute("href", "/products"); From 05ea5416a2ea9b585d67cc88925cd113a7adb865 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Iv=C3=A1n=20L=C3=B3pez=20Gonz=C3=A1lez?= <jlopez@suse.com> Date: Wed, 3 May 2023 11:50:52 +0100 Subject: [PATCH 47/58] [web] Do not use description from storage issues - Description from YaST storage issues usally refers to YaST features like the Expert Partitioner. It would be weird to show that kind of messages in Agama. --- service/lib/agama/storage/manager.rb | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/service/lib/agama/storage/manager.rb b/service/lib/agama/storage/manager.rb index 32bd2d5bcc..14f6beddc3 100644 --- a/service/lib/agama/storage/manager.rb +++ b/service/lib/agama/storage/manager.rb @@ -228,9 +228,8 @@ def probing_issues y2storage_issues = Y2Storage::StorageManager.instance.raw_probed.probing_issues y2storage_issues.map do |y2storage_issue| - details = [y2storage_issue.description, y2storage_issue.details].compact.join("\n") Issue.new(y2storage_issue.message, - details: details, + details: y2storage_issue.details, source: Issue::Source::SYSTEM, severity: Issue::Severity::WARN) end From 9b48e0daa73f7a431d9e00a929db2efcdff71a6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ladislav=20Slez=C3=A1k?= <lslezak@suse.cz> Date: Wed, 3 May 2023 13:20:54 +0200 Subject: [PATCH 48/58] CI: mount /dev in the container --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d74fb02d17..d8584e30bf 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -187,7 +187,7 @@ jobs: run: mkdir -p /tmp/log/YaST2 - name: start container - run: podman run --privileged --detach --name agama --ipc=host -v .:/checkout -v /tmp/log/YaST2:/var/log/YaST2 registry.opensuse.org/yast/head/containers/containers_tumbleweed/opensuse/agama-testing:latest + run: podman run --privileged --detach --name agama --ipc=host -v /dev:/dev -v .:/checkout -v /tmp/log/YaST2:/var/log/YaST2 registry.opensuse.org/yast/head/containers/containers_tumbleweed/opensuse/agama-testing:latest - name: Install Ruby gems run: podman exec agama bash -c "cd /checkout/service && bundle config set --local path 'vendor/bundle' && bundle install" From 3263a9e18d7507a9a1bdf7f916dcb1a1ef8883ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ladislav=20Slez=C3=A1k?= <lslezak@suse.cz> Date: Thu, 4 May 2023 16:28:22 +0200 Subject: [PATCH 49/58] Fix integration tests in CI --- .github/workflows/ci.yml | 6 +++--- playwright/tests/take_screenshots.spec.ts | 6 +++++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d8584e30bf..da450d417a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -183,11 +183,11 @@ jobs: - name: Git Checkout uses: actions/checkout@v3 - - name: Created shared yast log distro + - name: Created shared YaST log directory run: mkdir -p /tmp/log/YaST2 - - name: start container - run: podman run --privileged --detach --name agama --ipc=host -v /dev:/dev -v .:/checkout -v /tmp/log/YaST2:/var/log/YaST2 registry.opensuse.org/yast/head/containers/containers_tumbleweed/opensuse/agama-testing:latest + - name: Start container + run: podman run --privileged --detach --name agama --ipc=host -e CI -e GITHUB_ACTIONS -v /dev:/dev -v .:/checkout -v /tmp/log/YaST2:/var/log/YaST2 registry.opensuse.org/yast/head/containers/containers_tumbleweed/opensuse/agama-testing:latest - name: Install Ruby gems run: podman exec agama bash -c "cd /checkout/service && bundle config set --local path 'vendor/bundle' && bundle install" diff --git a/playwright/tests/take_screenshots.spec.ts b/playwright/tests/take_screenshots.spec.ts index 6c1cc17c00..aea20674f6 100644 --- a/playwright/tests/take_screenshots.spec.ts +++ b/playwright/tests/take_screenshots.spec.ts @@ -80,7 +80,11 @@ test.describe("The Installer", () => { await test.step("Storage configuration", async () => { // create storage page screenshot await page.locator("a[href='#/storage']").click(); - await expect(page.getByRole("heading", { name: "Settings" })).toBeVisible({timeout: 1 * minute}); + await expect(page.getByRole("heading", { name: "Settings" })).toBeVisible(); + // skip this in GitHub CI, there is no suitable disk for installation + if (process.env.GITHUB_ACTIONS !== undefined) { + await expect(page.getByText("Install using device")).toBeVisible({timeout: minute / 2}); + } await page.screenshot({ path: "screenshots/storage-page.png" }); }); From 238c114e4ae96a8e80baa1b9240f785a06fc5a31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ladislav=20Slez=C3=A1k?= <lslezak@suse.cz> Date: Thu, 4 May 2023 17:11:49 +0200 Subject: [PATCH 50/58] CI debugging - display environment --- .github/workflows/ci.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index da450d417a..5e8ba0f94f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -189,6 +189,9 @@ jobs: - name: Start container run: podman run --privileged --detach --name agama --ipc=host -e CI -e GITHUB_ACTIONS -v /dev:/dev -v .:/checkout -v /tmp/log/YaST2:/var/log/YaST2 registry.opensuse.org/yast/head/containers/containers_tumbleweed/opensuse/agama-testing:latest + - name: Environment + run: podman exec agama bash -c "env | sort" + - name: Install Ruby gems run: podman exec agama bash -c "cd /checkout/service && bundle config set --local path 'vendor/bundle' && bundle install" From f3131317d66faca112bbe113dff417c6b6a499cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ladislav=20Slez=C3=A1k?= <lslezak@suse.cz> Date: Thu, 4 May 2023 17:26:03 +0200 Subject: [PATCH 51/58] Fixed GitHub actions check --- playwright/tests/take_screenshots.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/playwright/tests/take_screenshots.spec.ts b/playwright/tests/take_screenshots.spec.ts index aea20674f6..cd03ff9f1b 100644 --- a/playwright/tests/take_screenshots.spec.ts +++ b/playwright/tests/take_screenshots.spec.ts @@ -82,7 +82,7 @@ test.describe("The Installer", () => { await page.locator("a[href='#/storage']").click(); await expect(page.getByRole("heading", { name: "Settings" })).toBeVisible(); // skip this in GitHub CI, there is no suitable disk for installation - if (process.env.GITHUB_ACTIONS !== undefined) { + if (process.env.GITHUB_ACTIONS !== "true") { await expect(page.getByText("Install using device")).toBeVisible({timeout: minute / 2}); } await page.screenshot({ path: "screenshots/storage-page.png" }); From 45206123c5b5690559d06d7842ad1fa7e73b8b44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ladislav=20Slez=C3=A1k?= <lslezak@suse.cz> Date: Thu, 4 May 2023 18:09:16 +0200 Subject: [PATCH 52/58] Delete old screenshot --- doc/images/screenshots/users-page.png | Bin 55167 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 doc/images/screenshots/users-page.png diff --git a/doc/images/screenshots/users-page.png b/doc/images/screenshots/users-page.png deleted file mode 100644 index 497ace5f9b6e0ab5823a8a8e36c6155e98052bdc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55167 zcmd42byS<d*De|;QoKNmySKPIv_O$!Ews1?cMlGQV#T32gtk~I?rz03KyZgZC{FO8 z2l_kTIqR%-&tG?~d%yW3narAbXEJ-w-t+AJypiwK6!5SqumJ!7o|2-R1_1Enp^650 zit+HJ#Ul0a2|#hvP>=zXjZ$p`0CWH)xi=rZvi6p?HT6Mlhu8HrV;oFhp7opYr3G~o zce*8diY*NsxOvWOyLs;a_RZO2tv{D`y-&K{_?Z1$v(^sep?$Hvq{K>n$OJ~%<91qN ze2!0JVq)UnmWuDdMFmp!d7gTIYQ&wGaJsFTo>;%WRjm?{=|p9CEE<F*PR;+R9z#E% z(*0|D^9>O3SUx^u20S(}ypY2RdTdZc|8LMGZ^uD<mDR$-<yT{NopZccIc4F<R~vYL zUP^jSj+vKxqL=4_@}Jh5GU4FX)9d5@7k7LOM@ia-at~#Lt_6Yiy|r;O**H_rkU8Cm zxwh%*>V=Df$jO@0d~v;}4_O#q9Ct(?X<lt*g2Kg>_cKWA-QD9*x#c%b0w|a3x$4%x zihWD@EVs6hYijqq%qUv4ed_zTcOYl9ZBg&w$>acezVbG4!iR!HB2!mx<An9@?r*vd zSFDk{%Q~nPGⅈ+UYTnb`5g8PBDs|oy%YKhqZ|SeSdN4JJrs>fMhR$L3@lnu$bPC z|14+z7L}=(o?rBhwewC=l)HCb%BEd&|NWHK6*D4U+JF|ws9hoQR9<g8Vp3CkzXw=t z23MAiHY3K3RjqDti1;vqnR7&-;FrHL?d4OS)6gDsegzOzOKZ8to3T8}-zpV(LMWz} zX>;t05OIh%W~{C17@mCEHK!GDYl>!Nv%6Wif=K<b$$4Gf6jD=PGeLp<e&5}seq$gn zH7!n+U&3_a455TyO8Yw$<<8mR3uj~e+U9#@c51vgsNe~n--{GQ8>sx_ykV^CdB=}B z)Gxjh!vx3-xnBu9o6+X#gLyiAJKIqTdSR?O(n}W5PkfJ{2&7bUlDIz&iMu=_q?O-J zc<u0vAd0)55|q}a$@=$bp-!U3BI1J^dkDdyGf1danO-QvhijtkLwCUsMH12&1$DQ& zsrv0!K-d#wRWf7Mw7TK>Uf<b)ujNQ4TI!fp{yM3HQ#9*iG;7<@gxbAxpNcE}M(5v| zEEjdAAB8a6UXvNqsp!MdZb7tsWgM>`WFKG|@SEgHc)vp%MeNrq?N>KI+s&GIVsSC0 zQc&N1z_x2NCrY`JSZm$(g+!F5Iyo3@X<u;a<bnr`d+mj(kj8K2146qOpMBz<Ev9UI z>$sp>nd(0%??0o<WlwNdPkQLSmjMvzVnx1%oUaB_cAdAdnv1Km(_T<75Z)aA3Mo&= zDU2KcJL|^(s8-&}_%)cTbRqX1yGk9!7ib$wrDZ6)ks&d%*{$wd;bdTCl7(6A!bV>w zpM_of=v%M2kKfZZOFzeSi17;#-|E<`q`$42wceAEzlL`-!~;bMfsV}KQ`@=p&pWD( zf~J%eE<RY29Ppn6H}+aeh3f+BR-gKpE|+%t3k?kWWqlm|%K8i*?-aMuMFPJZe+pLZ zY)y~k7vk+%w59R&kaSQbL~XVt#h-5y6Ri>b1z|~#me=jysPqjH5JbyqR{-(1Qh%_d z>3uK#XjJ-}H#>-e&fzIBSnWpj*D<Pz59ceFUZ)Q_h461@5fmRW@C`Z(19efu<&4w7 zwM>Xmk!rUOy;iWi;gRyeO0sP8bg@{ccYvxQGDhOe6cmqoL?^soBxhs0m2xp!iWUwm zb=>^34HPIP7zGJVydXETw0BdNi)<V|>hhKN%9S+mWY$_@D%#2Is7<1m;FchLjx0-B z?m;#I<8bzcC#w>Z?~2`^Pl|~RS_5*5&SoGgC+?P?;~+G!_l-;)Gw&3vHG>mkUC-pD zVU(h?JQueP24YL9{@Z6@MfOtZUa|p4Zk2xqq+sxpp<;@+Oe)J{Zt<#O?MQ>xakG2i z<mOzveIs>Ab+X0eImC0c$tO57*38l}=<e?{?;SFk_bU9SL|kYo+OEvEg-^DwLE_Ne zPHB_UwfFl4oH$Bhw0QQ|cPP_olucc^J+AxvLikhYLd+PVEP;ME5|=9meF^Aw)C>TL zPP)&kSc<mv_=1Fb43K+4@98wd#cyL|C_7J*UA!Y7WYMCI??-f$6zNj7cp&}P45i`H zlvcqA;fu~UetqM?EU&IWS$dWkwo$^rI9U(gn5hj2Xh6oN^TnKq>ms}j^@DejNUu3l z?(|tIgr65Ml)4MnXO+E3;=HA6WHfu_(@c5~*FtVk0hKMz-z)M-HFrm5bWHbga!Hhp zu+wq!*AHD#<-uVbAdEV+Ym=UOhviUK*JzxCs<-xLUAt8%*JAOH?&wg0^T`#>VBt@R z2FlIPYYb$+x8Cz~|7a3J%|tcNZAz{-bh(4HvRxy^c=V^>Dh%r9b6k`ekgt$Z%o8nk zPZK-i&ykIib;8l5O9G98e4)q9idNG+rn@|JQFzyIOl;Ar%?u<;Rb$oRoZi`2P9(|M zKY!R__v#hOtVuznLSKYJpI1;!MhdatBK2|_({2flrc(@GZ5(+?qg7_E4g2|0to5g< z>8)eYb3uu_xw`KygJDpaIi?P_`Y-S4>jhs{iXDjrxw`!_#Lu#z8I|-+E^6_v(yhIV zdN>e}K8OYR7>EzW+R1UveCC5C>;#i1tN)$<3{q9u37&qBz;u+K37Mygf<3t*!-DE- z`t-w10&}&GISMDz8k9>9giveWl<<pdx4VS>(T8KF4KNLP&z?&H#Wxc<tiCUQx>};# zh^HjcTo862`>1b8<V-(sY>Pjwja7ANBenrt9XPJTD@E%%(`TWS4vbS$nNB4eA*Q|Y zgkG?fRIlM+6ji1!o74BX%Gd$^sg2$8051h=bL_fDv*^U4jBLe$pz;t<&;C+kc|w|2 zHT;jhe$##cYS{?)+@x(=YremJP*&tfrT0N;VP(|v*!0_@(mSD1&uJ$lUsWS=wk?b- z!PtbQ@+EO4#@`*Ap8EY^Q34OB=J_@H@o*1Goyu$cnw*V~&UVz<cuQFhh?G(p77{CO zn4}&Sjg-8?*)+BYW$bYjzrTUVl>W^OG}<Zk$Gb<xIX-Vmk_1#Eyju=P9*p;J@0M|M zOK7MCUwA9!oA%Z<ruID?p2mi+x|;=MKfH%1F5qTajb{mx`Sc>Yoz1MX?=IFTROoVI zPux8d`>OZ-S{{t0g2D<b8qlp<`$Wf3is1)fbOdp{gBGHBO-++zW$70jDob6${ToO? z1Jfo&#Z@1v%&J{4a)5{Q0!9tny4i`TO>Yz>sdwGH@n{XLq<*x0RLErQ{~>mGV2qlQ zVZt-r8ycn&y!NZ`aFLbjt9-h8NUNBlUDxz2w|Xp3V>zzEqh$$rcW934yy+>e-q%OK zbcxvyk=*PH<zW>{$*);2cFHeoTkKT|3uo0aX6A3N>UPDK*j=H2PrcSXK0zcB8Ll$Q z#V>dnUzs7LH{(mlfscANf>xJ`XTrsQY4X=QxRO@6>ojiqWaxZL)^D%vsbm`|SC8hr zRn~P}-><`^Nw*4ZYLE`_1_4mLOM<iyb-*{@yJ3b8?mKS2yk*3>BI0@QSqY#q@pJ$H zljP>fdmYQw1J1qHR`>ndvG(+h?Jmki!`bIemWAY5_JwUD`sd1ZfPT3~mlJ$=5wPYE z5z}JHGP-&zE}__B5A_0Hj^PDVoV(mP2Q9T#%nZXj9NG0Di;J>%CvC~brvlabFGhx6 zi8lM%IrTK1GHGA0?G?dld^~AIQw+hYz59K`MQ6tUe0mM;-)k0P*g@@(%KyGT)yqh! zvs8Eg@%y$m&TFYvU$4KFPTA5MSmrSS)lnaVb+8fN!!@CcEfiKQMKQ6mXOrGbA`V(A zZZRsZk#loOVJts6+FeardWT``H_Y>LeQTB(H%1a_l=1;FlY^-I{6O4t!IPoo{<6q- zws5IH!?c21XZF$`fGI9aPgiq|p<($xvNYE*(6-K8auDEnD9PYjYSc?v++mH*W6Cir z>;-?l{Hxjy1NY!g1ldc$+Xs^o(NfJ3`~K*4fvphQ?&Ug69p8TO&hh%FX~_?H3v#lj zl~xXWk^`;d-CP)EQc6~qlc4rPC~ftUeojY(->mh{-m$PhKBnJyt-}ZKU~ibTwGmBA zUQ6ZY4z1S+7UJj}_Tu&s<1D)+9ajO$)~=ibmBXid*|ma{E1`gReZx(Qf>#gYADsE& z>u|vBU2*%wvyv{DXS)|nJ6_}H{@pP<4#$R`Fbm(puDHn5vn}{uL2^WvX>7fN(Qko1 zKeG?S-f#cO1m6$8!`_c(9n<i4ONzm_ghs&(ikZ|`XA{f5kxg>ZjmfyPEtBCp2nVoX z7T8jU|3AY#Us(}3za8S|m*_WNQp%WaKkP8;B8^_fNttV@7=-q9ao2w=dR$-&>GFUR zYKkzO<iONjcyz0EBn|%n6jOLRXX%hM`O%p5UvG41p(I{>nR@H5$xgi{hHAvEmiZz# zo-s*{Pny=k+&wzIM*h)IN8A{^M0xgjAuFPzKxKL~FdF~gL#O!P_t))rDKbA^|9B6W zJw9pLZ+~3dgDCpUD!<(>nN`}~7}VYk`K-3zodmG){#&rOcpc`ouR}HR{`UyC!M%68 zB;b1P-v&k8xO?uR>)bcmw)O;G6K945pkF=yGls()*MZlc8dn2+W&WYWhlVPw4o7us zzxIFAU6&f<222gvbNr`wJ*RBY<PP`akK>b?N?hwk%trysZEPv6p#AIf|HEGWFFc#K zqk6b{?|XBpdMNX6RaUTjQJ>S8lyVxtqd*g|k9&Oqclp&P|FeVKxsv36S1kM~&sFqi zv5f}A^`Ww3=-5*CiemAg-ca!0KLKTo&&*uhw+&El;DkQmJT#IR9nrxpAHjItv1ZQI zIw;5Yc1QPMNevadSS2o&C*AYCzC&PNv+*&<NHmYcJ#PI<h$Jzr^N1}e(yC$icV%ym zE66<~Jvzjv{iL)tbx&L)F2sbTw}GFpN96(0#6(#s6XQm6YaC6la^~;MnMWrKyktq# zl4(O74`~2To8jJw40hj89EeG)4ZUg2z1{Quyf*%lNM5j34JR_P4_9TR+N_lRuh9AI zG@J3Vy7{h$m6c1mPkZ#m4h=m6gVR@2@9Mzlm13G8ZdMk={O`-cx;oA{TEw;DrmKXm z5qw2K-czEzo{2F8$dQ(B%&CRjocUTcqW61d2rmC{dY_;0GiJNUkb8zD@Dq-k@1<(a zuu<Sobat$T^2U#nkp919%AdUdWD`c`>tZO7eqZiGSl)l8DcpLu#d1iuIR7S3#WB^e zTtTFx$nu`Ds7IZ-naILf0RIj5QmIzh!P3?pcEg0@9r9y@{hrjli(7C$DwzkDSWH4l zBe+UAIyyF?;!BbE{BWk&*SSkgn&E;UVt<O@01O`SNyt>BVA|kX`{Wx}&u9fVZ<$do zv5-2>@|7kB;U6<?!flsV^JlI0jdx2N`yUPs^MMj%*^G8r&Ux&?E61^mjDwTA*{{^) z<ct=4lK_iReGi+{K!%^{zYMH);Ui;89&%x(Sn_D5#<sES>mwW8_Z!@FDma|voo~T} z;#+z7U&gRurN-%9e}0aH&$dqbl*mDiY>O|*$Ea#z++e{+IH&?ckdo5Lb(U2((-Mi? zy51)nk!os{9|78il!fyl4SRNnkhAWB@1h$pua_uClb6n_y*xJoEhLHuh^zgDwz|~D zw&gGOFN^BnPeE^wPX5m|Cj)Mjt+rzO0BRT^lyTX(7)W}tp}n0QWqeH6v5Bb>Q&Mw& z92IpHo;HEb3t<&1+6yAxdtjC_A9Xfk<rS_ym#wTR!<5i)KGuO6r|hTr(NUh|Gc)ai zM)ArZn=_ZZDRm%_|MPFa=vi7*g**d=g^%|O=z0e!F0`t2tJ5HcU#hv|SdXT8NI_Oa zr4)udnM)>vx#8rwnv~<aT)qd))OpPsWUO{h@)cBr56+))(NX&jzUIIKKP}XYLYbS` z0H~*Qep-3`y)9wXs?3Zo(LYkQae3Y9Y@AF$ktwBLZwXDtRPQF1Gc#iwy}%O2VSY@e zMw{?(fe<U{pn$5gD5e4Iy5(snXwN1V$KU<3mr7)P&@EfX^l!SMtnbzJ`<rX6%u?O7 zN9FBm3&EBPud0WNO)iLRt@Ap8Jt{q9>4tR4)$2ughl|<)$+Ifo<~ArkdPiL!J1otl z@S&Q@=z|51rl;MyQ3Z`Cm6M*}a&AOHo`Wk}zA;e0bdyYAZGC3J0A_N~bNPg6gYVQ# zQ>9d3^|PDLdk;)UNZ@<Ax)BkB&tHk%*2^V!lOH@?Zl@r*q!66Pia~CO;`E)y$@8<0 zSlklvcjWtDB7QbD!3x#IX@CKn0|~ueYU^AmbzbQJmLQGM^TYXi`%G5EPye#^rK+4b zQUl}6xCC)UHwSPeLUiI%#I?pdP}0aZ*`<4APch3KrJtMs=7|1-w&aop#3nXh=i7Fu zfNq`f!nHKM{-)BXI&XqvBIoQ88e`2=Bd@DV*x=NzA_81_n}Mg@L;jVelX`8^R9bo0 z1MBTkc~9hKiB78LOQ&1@s;V&EO_s@Lb7v=P3=EjNt%?9J2d7*2)&k;^Foz({VV4#+ zZX|5x9NTHgtjC!2M-RcXAGx9`_sMn=@6_C^@?sQIbL{;hhU&v39r43xrCHqb;vg9( zOuc;(B<o~&rfSI<jb_9li?pi1a_LUQo&+N?F~_Gjn%ZcAEQ4p6ATqrHX>KR42+SB( z<jqGkQg0&0`i2`3dDoMVU;B*2)WKVe^q9&(;me&5C6}0WI)DoW@yk6k)*q^Gaz50` zyW2;nStP%9ixAR}{oDO4?x(l&hK)VeSO-zAx`Nj?_c2Z5zKL$ME{K6hhImBFaHWA0 zg1sY`HIs&xf??7n3?d#iAn$sNzao)lX#-toKbd{o7kOe3u@RxFptON<+-=z#p&RT) zkg5(CMuy+Gu++a)_Z|)z`@og$SU5enyj8~Dz<6okR4POc8;7%Egg*^m<me#*)1I)( zN<^F<dpn_Vn{Y{PUhBt^L+k^VWM#tD-HKRihP<i&ROs>Q67;I3ShA933=tpKtr=v{ z>Am76&sqI2-MRL?@yy38IiY!`K`gs>v1V7ljK>OcKEB3D9e!u}lTy;CYq3g?7yI>` z)|mtjKcj?R5Q%Z$2^yVX-|An1Ia|u`1v{az4j!?p%_&e=mx0KNf->J=QfTdZ$hL@V zu8V<XS{GOsgO$XjGz>Q4%ept0U%Jp{o#Wu>dGD9yG<$Y+%zY>!55i?n^H#BQN&C1D z7UT@fs{b~w*L6AUityoNBBxcCsdd;A9qI9QF3u6h$!un$brT-z%;(SkVh?YN?b5P~ zUO|376gFm64<ok~9ogDv-`t&|VUlb*$*85&s<NbE{F{GW0m|j-y?km(gBzH(>Y9F> zVX}I~N#oFVaVw&-P^5k-QdOJq5Prm8_T_an<7$1^YG>sfKfLKxRnr1<i5uy)7rXTl zuSMT>#3Iq}0rIA}@?IU{6OZU2!WTsR_s9wfFcErg-QdMFwcp^b+Ua%L#`JtM@=$aZ zOK4C`ucDWJd}D8a*EMeG2Co6V+9?&x!1rl6Gh|{?_Nve=4JX9!UPOLk{U_q+!zi`* zU}ObpbGrH8PDyz_7mRRV9*&mGh(hDo(z{vwx%@)hVS7sG1{U-$`f=1S7d+~o^<AJ} zHIAHikb9O6w(}%Z=fo%6DZ9Qb2B)<(%MQzgRbg*HHY~AYkY`0Y&GMyFkMYcK<S4#a zFjur+#@h9*gkqDZUrk5_%If$0>Qv=c>OBg|4cAq?aj3_)W%z3s5v4s|?eNsqw_98( zEBWsMls{5{ev7`*#2)x;C4|}fbh}tk->SH{IQd_-GOkzjphCC!IJXNm-phLJ@a^rt z8*)rRLy4?HKH<g0#T7jLQyO%ecy$xLHA!GG(hX3#!rvoavEnG{8KLY|jf>IBNo7V* zRA)QmYpX3@E_cuvyxO!Ncd_B(+s2hk|L3)r)WrpWGMND7KSz4F+|&xbjqX1~NJ!JR z*>0uff7FFk$CRzJv}tkq&Gz+7XDi*lIe>EPA&_acsqJkgn{f$}_e6cxsj!xOT;DWe z!+fxeT@Z1rzs0CcEJ6YFwX=OmL0_M>HN0zbp01T=_#*D7zBt@d9DiZAUZOW7U7(;x zSzmj*O%~kU&6A5X+^N;M%Mctno+(MMUq8dN!JUR`7D!wV^MtT_JBR(<7nMJxCzUsi zNmwgn!uMQyN=Wz;*7_IaXx2Utyib+at{;C`RK=TW<iCI0B;mN%tz<QkXExMBV%QZk zqXV>Y!E;^(=_(aWr==-PP+~m<d4M*a8FHyP^W6e4n+}?vrOOyas-adtB_cOF*7FMw z?Th-pr;9=8a+SUN%lV`Q4YQ86-GLC!BpozdQX@ts22v}tHgu~Z5hxnSfzlrz6RPAa zR)24LPK4FiP@Tv^V%%Ah!CDufh@)f{DOgqamI&P$U3QY3=Z{?#hG@X=Onl5|hy=ry z;p|PO${s2YcH-`1lSz*gWTTb=Kq2E-t55na&QP=pi)esA&<u8(R!iqo&d-wP7C3I_ zezXqwL7o{)D~PR53nG5#urHKb1mrRrDq|5Pc;jFovaCl{PxYmHh9Lcwh{(j!5F-A? zufBw6#F=@lju|;rtWy!YB2}+#KmV$s4F*w9l<O-bKT}U)3;N*p4Fahp?W?X=I5KJ; zKJ!8b4ZiqQSn%!5y#HCvq^OAv6eE<0SQ95LXl9cxN6&<YXOYWbNOVHET1AbUBrb%r zI~2!CIQCOFlKP&v#g9%Ys2zz$Iv>UQyYiLNspq%TbyO@X;Wb-U3>)W5YtfG?5lJUb z&N-o1F%F&qQYDvmAR}YA%Do*eqg%jwj|G_{MKBjGj)@DQ*mD*$(_K-+sAHxkjE29+ zBgU)Xp7V@@G5<R+VDQE;8f>XEW=*k~HvEW-xIlF{IOesR@D>#cktn;79nxn+%B#_C z`o;Dpt*>$njWYY<vX+sUuC4E@4c_7ws=HOD(H#+TKPT%qD1?M_dk>zK!hq|bhxnNv zqOQU>u5*Y_wfeMgez1CK;?jbDU~+P_=<Y+uAyBoCL`9!osXFYEk7I)2f4Yp6PYM zXbDL;Gno<U)GmQuk;6ej9XVa!k%~+Im-JYEzFPk{Z<XpWa2ZcE!B3_F+LN<WAZ~bE z-8s-510<9@Gd%<I7nA2Bv|6rHtOBfE(J8yR5aGDV#h_Q|*c20(Rb2iK-xuwQ@y%W6 z`V9S00y>|g82E^2McRe*tkQO@7nDuo;V2~*39ww#64+nL3OM=<-8K2#$PO`0*bo(w z<}`1~I@P&|fM*~FY_a)}1!wVTaY%^>H9nof^l*}qY7%<%4&9HK3&(sRvW_z*C9!O? z<+i#HeOpPoOL8&+(U*VPR!+2R5_e_4kmTYXiuj9aY35&S7qhl(>r90OdxfXgcZ16Z z5B!WO*4)=nt02dFQ+>z1=Qdaew@5bVL>8C-sPPsVwH!IXJh5j@NK4w|^Hz4PJda|j zN3c1)(kr~(TefSd^ENG?%v?WVu({t~e3<O&Z+xi7sg4W7X)HEeN2z^LaQ6&(o&{aA z-CONG<pYtx7TZa;+Iqs;%OW);&-9oT<u+K4jF<pMnK9<+G(k&p&}~lQ5Mxy^QYVYU zr2PB?kR3g?>?x_5fTqJs$LhMKcW`nYe-zxzm^vRyMopXELU1COy>7WyAj}gZHSB}E z#n4v2RLEI-ilt|=JN~aK)AA}*Z-cd5zlo+cPx;uX<WH{XPXe=_q~4<CTxUj(Lii;~ zEnc+^A9V;$e9A%Sp42gYXHn_q?HxPjxWG|PBcWY8x7<UBz!1C`(Sj9W*1vqA#E24+ z>6uzcS!eIJZHe^Sb#I~HMvm?ojVUaKfM$!^3yoll>b08GWr)$1qp`0yLd#RXXt{CS z@5|W+eRIl7<|GWYTrZ>gHc-DMe={osw|S2(K$Lwg7MjIYO9Cvb{5BZWqlyQ_MYZ&d zu}3l3?c15FZr$=KC;j9_^Dcv%p9#+CD)?aKt>+tCKYVJ@GP)w8b|&u$w(nVxp;r*X zED6lwC$B;WP_BYtME}JFIM;5}!4{%u;yR8CH&cQ1rDwzt8AiHpO~2~x%Nc8}W}v+I z`J~x029RwfRX|S&^bCka%#lUTK23G{<AiS>sr_)~hJ1N3J05Uf_ZIA(K+`4yBh{{N zWAy<s52@h?yhI9`F@hTSbg5oVOc3>w;%eBTOt=&zeL@R<gUZ2kbVNUc8I}f_1F+*I ztb5JmN7Bpl1+fmVxyov{(Em~UUePh;Y?HWd`;AijZuGGIR(vJ8gy=WBnwn}Ku$#k( zA{fP98F(t~Gko?#RBITEEAWi@{ygU*&BNmefmCmB?#I~B)q7R_{ion-&1}459J$ov zRosbZPl?J<s)o8JOwe|0{9r=_6lm`bIYkA#Ly&^QezE!KC<p50C_;aJOpJwTRNVbx z*?7o|<&dz#Gm6;iF>>=zd>!JC+D4Z;D`vue)dn|8^e!c!S0N?l^0BVMf#xVqhEKv} z^Dm_MhePts{s39}ym-ziPP90rGHj!^q=baSx3R~bIai7acAS0gTg-U3{)?SDJQ?dC zmNg2+&oT1B!+Wk&<CPbC`I+&5Nc8?*F{tRiwn-dx_Wgivi)zopfi@@3VJ4OR@>QR8 z@oj1)jnJ02mg8bGtKux)^L1QYm5OidWf_8})?ch2urc%qdxh9!bQ!kNc9Xbrp>FCR z+G&+@I=+c|tVG0)<U6Z!T#Pc>&saiA0pr>?0|U=MZ4|sV2ckpL;9U-k+v1@I{K%n7 zFn;f~hva!nNGSUL@GSx0x%SN?Y;N`P%k>C6;mav9DBG+0eyyd*?*(&;);Tt>Zq&fZ zOn&dn?SCfpJ$bnc>L;0Kelva%O;Ex6rQ_4g03ytc%VP4awTtQz8y?GhUp5U~jJj&H zzX#a-0mARhPBHF<EPHeaqO%CqYLPB;Vxqi+ThnG);@bDU{y1s7XJQjdnUF|APaeVQ zUg!JN=;x&5DE41$hg2(SCf?I_OMS|c`1`vwcY3{p=G3%13Ya8&_G3%dXqiqMD9l<w z()hx7b@Z&=#p=ZEhuRf`P({O0bI=||oTJ}BL}{2NZFYXHJ-V9;p3&M0hOneLn#ed| z=fTMS?jrS5i0RdQ0di-65B5a+>$P5aEW3=c!qf6DHHcT1xU$QE-@PzKw$N~G?S$aP zZ+kf@k#|Ek{=KPvmsf{CvfY`e9%XH9_5kkFI<=EC>qJC&Y9zimkE>nYg-Th8Kuw*7 zxTK2N9ev=<0*~kP*Vd2R1Dh_UR-aFAWbZCFpDh>g8~7yQw2AD9w#;mGRcXPmcKkzu zH8J%bffgc$UYr%?^2oa(?#4Ac*a=t_qL1nh66O!E3(nuZzHzy_JJ~8R^6{DfRr`&+ z@&r}BBB86yCTxPYEa1e-vBa2FKInZ+tq8>0w{;ZMb|t6}_rLpHm@tnpCBlhA!UAy} z7O!!QgTxpImwdaTx9BZ#5SfgJNA=B75iNzwQ8WOyb5y_Qj)2vN=vV_$%(1ym`UBnL zV%_D=-yH1$NRW<LT%BFK%rs<dOzEm=d^%O{dbP(aCEe5}mlqRu5akz8lH6;H>Dl4z zWh3Di47t|JiHoX56ZQM`{D+=j&0Ej=c}ndE^s5e<(1QK37zi18!?xI2KAMx)gQ9cm zp3~aj=U^%`YDN$;M4VT>C6VKC$?H7kxg$YaAO6*Di}W3YR=jUc5vk?CNXAv_XU6<d zJEXI~<?_L(kEx&bO|R!)pT3oHBp`O3<KfUU00XEEt&k(zXRz)3>Mb^hDWPb;Sa;8h z$_;r{epUvQ8zJ_vweLccgP~DYf6qJHAWNSsh<3yvPHHt18v7lNwPqkM8+)n2a<0>f zb<~o8*qrA6&@Osg>i7}33zG3vuBBWUWdb_fM|%C2lNz&Ptu)g4YR~&>$NqU-mv_L_ zlFBTw>ml((otMkpvejVMwK8C3C1!IX&ND2i(xsrhG&D2y)Wh}M8BmTgXApZ@EiB3p z@LJo-T|E0FCa+LWn>(f)t-4}G9xHzp`}V15Ntz|XD{TSQ*7p`mN*eTS^gC%PO4!Jo zUv0@aq}(Z^+w2vgBA`2t)^I;B2d#?PqZv67|AJJt3$C-OZ)I~SbhYObg8IZiw#KB& zLijdc_+|Tfp0iPZo@j-zEniFR@8(Uz88x;#90|sBcKtqVKg8s*Iqt8@@2})Z4TttC zYu1Y2ZMw>7Lx=OVg~P5|&MRpD6FUwXxw2gNyOK%&I@8-;DE88U3PC$2w*D`~|6;wB z{6AR_hH~})M*Oh<J6A3Kw{Yu|%uk|W|H+TYj5j`3{#%gR{+|}zQtVpHM53jb>D2sh z!;jrG&g$6dEJ{?}Hjh2Pd7TG`>(%N_SmaL48jl^0-M*s%bbMU1i#3b32z2mpqduF0 zR*SL5$!r+*kXVdI-2%kh>v40NHU-*ESW`Fd&7_a1jvQ`gz-ysaMSGXpJvUAMBwSnx zx=Gip>OTFV+n2Fv(sCgViIG%f2hZ@9b4+p`C(<DN2CxT$nh>+N502S@MUx^VhfydX zvplib&+|v-Sf-TiftD1~LU6o?YPkvHMojr}l<Vu~dXB_9H{T%m;$PdJPb;e6xx(%= z%|!cIFdC0Vx}D-?5Pq-UKR9|`c`ITj4f5evtTaxXF{-6CmkxlmN)#>v`2l$6QH|T0 zJG(x`S<Z;t#TDaEh)RVP)SFLc{f_R0g{Sh*Ts8Hip3uINPxRUx*-){lN-=R<c}g!_ zOV6(^+lejP#M~^gDD(v%qyt`3AoTnPr$)H8)nh(5Z=DToF{<Z{15`;0q=y_zHYLHX zkdW%{PY@F`c<l+k7Ir!|k?Kn6@v$uQJ~odZTO(+6X9ylLj&ZPvFQTeA{e~#h@)5EC zSlWMEL!#Mq94Y+rfRm|m5V8ZxR!^#`PZrx<Vww?)(>}cg-pB4~y}4Trr*9lyit;L{ zEyEvz_8bxmRlLNS>fSuFuUF>W+^4KPD<2h<d7SV2waKLaYi<AS_mWZky!99*e15wW zAYt_Tu#qr-M(`*hW$VCZ=UWxuC!A;b)5t$W#Qf};?}XDc!1)4Osq?*-Hx_mu=2r?< zS1RTz$}e!A^Qqt&Y+b1!yxs2TjaQbR-{_Y#>`ljjarh;NVs`7vjD3?CAEm}{$bJUc ziwb$~AlSP{#Nth&t;J)d&`8OSu@J^8W4!XR2^F7hLs4aMbMRJ)WLToIP&T?gCpTX- z*v>XuAU+LjxgAnw_Wj;I1<|PS-sy`7l}l>rXVGhGVBoB+sLPc^;STkYeP}|nc7s^$ zSEaCVR$!LMWXC0}kb@Lp|3zGCL&gft=|x&`wM3I!QuB#uzlz)aHUsC9o|)pK&@|Xk zW?560+7NDzoXYla@8VXd1<=MUewTPxpR8fOA|3<W6Ty{MGbIS!qX4qu!H)%CLl4o1 z&!WNur#?5vGjdUs{RfNp@LTkGHIk6Ppx?IhYNrVvYDpXbl91Cu4k%83OmWsMc;w{o z_|3^5d&fPF1oRYOHB+<Qn2hY>4kf?A>X1r@fa8vZf2*WuK*HDa;C*Bn+!wEcsM1wv zqQ&MJ9K*mRGNzG;?H6j7St_c1?+|Utia<2&IlgHfJ;RlpnE81J&hvAzrr0UTdr8mC ze3|VnD|VIWvI<K6Oh!XMxy6j?fAW-aZh-S1rplHo-szQH7g<vXsl8c`B|8oLy(a%> zjqk0`vY8UHE&PBw>R;-@_=+#To!|QfV)RA@pZU+={o(^d7#|bB2|1DvQdRIt{9*m_ zef>vb{HayF2l&<T4py{sq+1Mx;<$2*Fn^VG<vE&8DOkSBv_{}nRiKrq@Jkr9^4|1$ z{7Ua#S`VaZpxV72s>m`39V=)=4gF*`{&oT#AYN-EY=qOZvb28#pJByvz&;+CLK{z> zh@}>6RuLolH$CGSpd~0h13n$o+`}w^;%g|L9T4Iy8?jyzB%vt_B3CQBAV}kgS>7lv z*1m+#zi4X|f9J}0SyoV5S)*cQ8v273n!hHkmO&{TSl{7^@#E_3_RZ-wohD`RMH&a* z%0?#TOrzh4SSsevyjHv~Gni-Pu@llf_kMbBJi+2K+@!mn``85VAr+DT>;~r<z`k0< zBZoZ-<GHK3Hfg$gNs8VyitiJD)`hRIQv#3i&CJa^zIZTvrydJDc~zOo-c3|Y3A^gr zHxzIb8(i+SlnKH5$pQ)A@yf6+UhtI+&<2t!fQR`iQ1f~(;k#sOCV28JZ`@t{Uusas zQ15>!acrTLBRj}pQ3cN)fo=i{Qr_2g+A{S1@fkj}-So0M`%ESL=!3nb9~7MBMb3tj z-xlnAhvn)@Dz8h^r{mY=WIBOvqfh4er;g!gQ5JPAy~LtDp^OWt_S#>%JT4+f;lec7 zav62F<1dGP<zJk>Ow>N)OF(fgmdh>96slOayNkyu?fLPhtbhRN#oV<?OKkqx{#EBk zTPVCvPwkX?1vs1V=pJvVUZTv#^n6`f>pmnP6rFsh0OTy&k2zg_u<(=WL;X+H3#^n% zEc?y6U^wIR6G|XuymM-Facdh~sI)%C9S{MXXlVDi#51PMxto9-#dS$U_9~XZJDk@M zGvo8~Z$MD^?c7t4@p^lxyq5r9=j0#kB0=J=ZTjc7`6nSl6p~jYCXXuf4v3ryyq!ta z<(Gdv33AK8jQ=Z-Aa9)&<sKq^bLXJFR(jm9bOYVGKdLK!NFOsWNE7~t%@^@8{_7#i z<s(14-Vpt9s}pjfeE|QS{VIa!f6@ScqCL`o<?@2r{)_4H?*C1fkFERI5jWpdpiG$~ zi9?$_swWQG3g;%3Iu&}QWMQ9|9Q!P*TlZf*@KA0z*ihoXnq;tSyJuKIz^2u6&LUJ~ zVTih7W?#1F*c&I_U`b#3SIIwr|He)o%0FRw@c$VCXo>;nDo}H8Z}O;~;F;Y|NB7_g z9gc@5cdd265D)X{=<0re#5}M=>@-kc$FA80t_H4T+}VJdkAkFcwy_ySzw-<w-=DCS z4O1H+=H?b|*2+`8Yy6xo4lH-3b1v(}tIM?&eWDNBZg5s&OKDW{-%W=E)-S|#t%;0P zZ59G6bsm-}LKU0Cg~i6ya5hDI>FFAHJs4}a7U<9a`sdM4&ZvtlX$ieWW61|(<(3H& z7)j>7@77k=I={FIso1AUzClpl&49X?K=uuPRtW;v2tWk`ckZ>sgbAs6XsZBbn%fvB z`RQd(K|n>bEf%Ki<w|PWjFzf{AvOJBXY7euzJ^HlC~5s=xvI-aIDK9C$D%bSB&_tW z-3$<c04;(?5A7C0=C_*JyDn>`PiQaJxo-#0*7S=$?%+-CE<LBbNhwasJYWyYeDD7R zZ|b~WyU1`3F*8kA=2CqZ>6>~G^|n~z>W=b&yR~>TGNQ#h<B7A0D+jY?T3Nke9FZ~m zmRkG%yOuA%^?amCB*z$LSg)Fv4oDp{DJbbFMP<)EPk-Og{gyCitJf6p$IsW|3vB>d zC-eeGEwqmL6ML86#YOn6+C6Ag!Lv<(l=A2OG7m!VNhYh}E<)2C!{If!hxPW9U?icl zgWP(}%Srfb)b&MwrN~u;0^^7EsF$uJl;C+EJ+WBm3&b;tMb-Kx%-8U3&<#?JDia!p zl14)LxtB&tVmzX+s(R!1?^n~))BT&SFL-!G6!?-mPwjpBfBk?>rq^rbwu(Nbm6Y{@ zU4R}KfA4inUncimm!+^W9237stuWjZy1(oHUP#|_WF2h*?U)(s>RA@DEe={_2)S@P zVXJ$$Y}>Um)-wkTC~!2eGLcdjy2HDdvd=#cQNOGiFgHI!i7PPU*us_gfj@fYNf?kG z*1WxYa~Q5Bb$!D`j}tU-IU?;cgv7dcZ>jV1kF8%fCSO%w;hs1lAhoGhJKi_W(QvCt z=}zMPX~#0UW9g$FsF+!(V`;WWbE^(4$?)de#+^f5wckA9mSSq*e5wqQTHVRzHM4QP zV*G;50=d81jEIp~J%H+JsqjePWr?^X*6lDm`um4&#zK%K9<BO+%y&jp4eI^+57qvZ z-Zw-d*PI$>D~v`B52VtW6VNkR<rFSns!fWUcw{saV0bm9J&B5$pVrLUEdlyQCyZFS zhz-dX>c1c%j})`Hx29ca3tpTgD{?02<m=qaoLi#;l@q+4DHIR6U!($E7xJ_U4Tg<w z6P7Kd(R<zDjAA-$n1PVjwE<b}Qji~B($W%wA}4dw8i&KxmzUDWwWb(#ZjaTuCSv%( zT{e5QRBZNDMD^L!EVif?yw@v3hn^C#YGb`{Op$v)W^Az2ffb*=4i~<~oupk?@v@qz zk)mQt8rV|-fJ^u8(tXFRGN~$Qo!tDH-VN5k%AGpEE3KK6Dr&A<%Zy+SOCAIIjADL$ z0t@?i{U^X-%VQmfsTz0x{%yrZbN714Fm_y7$^m<%)8)lljAYVKn%wA3tUCT1vsEX* zOq+am>CTQlBHgIWqXa3bgOV<Mb6A%_polz!RpL-dq7aI*AS>5xhUT3^VPHU-c!+ws zkwH(*jBCTLtXloY>U(m27DnN_ZvP9`o3g&Emb=WusF=Cqi;{hDUTrdOuefWd3!k?* z*o2rhmbS3x$u{zhqa=l?SbFFy0zB2Ftb?zsf=15ZncmBTUI1}AZf|WnkG%)f1y00j z>nVyU^<-G`AZJf&xs4z#qF?_9+V|+2V>IF)1jy5qC@(jt0rHOJ7KrB;&^<EI?{H8i zc#_F2cBDU}*bQy?ZTq*;i|}N@Da`>H4Ow`Haxg)LW%tD`2h3=0xHcYh_<(61v}d}t zn|87_xm3OJ&j}WIRL~g#yZ>W#{wd7K5Z>GMEM_aCf;GGmVV&HSdiR-&AT8?2&1U%9 zCaERzn<T1@<5C-mK5hhrb1MGfu5?zpr5<OrbsQ(8=6{M#Z4|OGsoK_tcs9eWJ~6%y zhX8XqYCYF5`_=d)fVsD3PcZbip5^s9x*`?+N?jB9(NrWDf|+gg*5)MY%NEV0ZV1~Y z^}}y<gRf`G+@=B|A^1*sWe;AZu6+9bX74E?Lnu}oCG@%G#RKkPi5l7d103n_A+&P| zJCHKrL&sRP5q)c%IdEHk#XB0%iFoZ&JvmnIS3f^O+Ips=#LMS6;Z-+VAD_`OGSca- zQv7+%acy!A-<G5KkY89@?!JqcgkMx;i(W1JI=;76PZQ^*yyFtfvNPD2>U_`3vE?2m z{rtpz#D7R9J++XfSNGTMYOV=yMO~=R-`_}nm?rzP>_4Cl;e3)ncEN1JNooJ?%XgSd znayfiVctAuh1Vx1?j@{YB$QKY_zy&ku&slebj&h!<foZBF;rwrq|N2i2G2v@O1;wO z*cKQIg+#sq@bfGC!pH4W0w3VqCxa>2w;NHoATo0`V=B&D^3vn;{5LS<)8!k6E>QWg z`7JX44c7`;*UUB6J(UZPE6y1?FL>Z91?#T+?pqE~nY(^x3f?uotFVanx3mo27~sFD zZ?lb%ULCRnk^j0EEWE)wSfL3!fLt2pKB=lUxQ8sHNwzN%-gHq!%3%cdy&auu9*{po zZ0`Hw&iJd$6xXck53Z1=hL!EZz{$X!<%>ndTGwqT&KJY@tW0JH^u#W|Kp-xpGA`=k z`zZ&=adBfeIBA8Z*uT@;aWg5(yA8SX(qk*I)rIR^4AXQLcBk7W@xaT@h6BC<1;*y6 zJN3~U7;4b)h=%gV*GPDvQF5eOyqx&9ySB5nZ&p?Yw-2;r@SoTV)(Cz~(lui8kM~#t z`DfL*yAyhnn|y>4mGv0tnim0d_Q^=xfM)qN876`isf}Vp#7Rtk`==>-=y>X1<X3#y z_po6wmn_aDcdw|x@zw<V`DmM7;#DVG)~qaZ_a6-&u4d7?#_S57H7TWhQiNS|6RPUp zb?TO8UMqKmkyBa-P!=>-<2R#MOie(wl<j>y`&>9F=?>yeUER}V9Xi*Y80)u<e{JP* zx2<aDfD0WMD@J%dE?C?=tS+ala*nsTua8vEPpm~1eWN-r`>DLy&RL=@Y(x!=Z=5-! zd0>u(Q&<n-dg-jfyJ6CsooZu5RGX)5iSItY`YS9||8}@=JCZxA2n;(ITZX~416l@J z*~oARE+OUZoAX_4MKYBommR8MhJD+1%jE9m%FLP~{%xwl7?d<QNe^L_&2KR~JF06H zwG=t*J;!yC#Eo8AFIMO&jLlTOG>UW+toV)07~f+CUhO_{4ObtpRN%3w)f?Cv8ZPo0 zw{o0;oKwJ(c<nj+{uWiDV3fW8(zGPC7|AOSrT1x4E*-6-(363%Q)N;yemFsCeK;Fk zGxDHY3K;(a>)pX^`ds~M@mAHTSxyrId281K9fMI6t-VhsQtYbcTxn_O?4J6KTBw*Y z*?rqKzj`ak8vYRe`4q+EIeO|ZdEIEWX-N+L++~>E<4c0EeD#!`^pWX=l=ccBa1|U| z7=LZK{&M^bIq$pF1)7D3KIqp=hGQBHf(|J%lJC!{t`{I~1Ag5h3&!Kdzu-p+npsjB z&B|lhjJ#*x64Jd%rd5WAu{Zk+TbfdfAq5xa=+pOJjSC{a=E3FVx7mc0CMQtOtLK~+ zI~k+qJO&5HFhd;C2|I5-{(7XXW|l39{p1T3=eHsgM?w0qYN~P<9==K$S>Kb<Ds1vZ z@}njY#_z`*T|nsP-Bj{<FP?BH;d=6Ps8TGy8jjU(l;h!%9)w`_k9lm9E||w3qW2N} z{F%)9WUH3jt?61%w)DU|(<FW?(L71TTkp-jyi}mfnS4GJB^9Fy^=Tn{ukSZGwb|&q zOJQlpUdn0u`(mC|%N8G01*S#63p_uN;3~UrySTR#8Rp^Nd-4=5;;qb|{>1n%o&!~z zlAh}#9t#UB4)c@#HLb#p!VVdkHyJ{zsf$9b7X=S*G1_F**`%<jW_H)wX~%NdRhkbZ zGS|>mm_K`3i7mjxW6wYAY#9)UOZTk#wai3IP8?<&X4a-}o7Lut=$3CAD`&!LZGcRk zD!4Ix{#V&PtKDsvJy!%P%dG0iK)rW8oY0f$qgx$+xI=Twu=7){_lIJ_lA=4MqP+vf zl4#)?Iw!NSSfHtxZ=d$aY*3%?<?YNav=CpjHK(Y9OLRC=UJ|u5X1nEXc{b3t(-Og~ zK*i##C&U%K{8Qq)Qth-?WzIKV(7!zVWU>a+s!BsDTf>}@pUIwvMlOaLCk?e#_s!}% zy^hX~evzq@DTT~}zs5Yn)3({Bpd-Vdp!`yTj_+#aF+#D|N9&ommX-GF662Q4#RZme zL#`(735{~HKDLN$4O4f<xi(om)0Eqw$wM<K!(|mEuxHpp;h&KE-jbzkqpl&g##I-2 zz5XHA)2iBGiDZzd<Z>tO<Q>#JRIQ7M-(a3<mp|3wi}<fL3Ug$E0-I`fn@i$|WzQZK zQBb5(SdUsTBZl^Y*7<Xl>D%}>YMp$eIga05BD1edge>NgRIDmt6|xIKIhnb_U2ENz z%6aa6O_3u>j(o1EUQIMXV&z6%;EOTm*S0d&B06b06k&ww2Ro`I8Ak=qQlU12lfq|a zP31{C4J;FFODi48clp3zPIgfX^@Qmqc{f>3CtB<8?vP%a6s*oNd0WadC^65Ec1mc1 z_!%~)-=(h1hX6mOHx&i(sY!#(Ak0$38LX=&5$|788jkHbt7pQZ6V(afw2G9R3{vzo zfgl2UqVS|>x?9PB_38;lil-B^yW!DmN0O7uaopg%Ofz@8c_Jci1K51WtFK|1e9UF@ zJ;dw_Z1-_`!|AB3b`*{2o;%{creD!I1V)t3cO^zeqh1sX9xp!~Ui3&IwCW+le)hD} zd>=_fg_t#9-kbX-Iq;X)-)GcobXYsS_X=Y@<<L|;!R@LbybU9ky0}Nnpf}~yOA#|M zku!KRPBPIlPo~|kk=P}^*Es}^KAmU^Sud)6pV3CMpcFvVd06oKN^cZ0ZD{{i6EnEd zY7l=H#dfcqm>@;Nr9vQPIXp`$0T^K@PoCVOp|+l)haI_J0M#MPtex0!fJ1ium=nm1 zVc@gcd@KCuc(>@V$%WKq=W6(KPbB*Qqz80<oI7K@sZf5nxmmCFeq5?@S867aW6u!p zBPedNFePI&A*ff$$Or@6^lryDEF8Vb#>U#B;fl;A^tssLM<e^tEI(J4(&D6+MS&~I z;$P?TgIHdfMULB{HGW@9R6l+K$r)L8=auKCU&Tgx2;zqP`0>&aOC}El9(|6T8k>co zrC}I(+R#*A7w}(P0C7foy;=2otA=JJ<yXr5Hv*G}wD>DBr_JS1%CE!q?nsTRa&Uf~ zFV<USMkVDyS)7f{m~CCQFDs<o;KaA%O@bRe=TLr;5k5>x(OWgf>7Oz7OI67+NTn_m zgZP7UwJRq_6ynr(dIqc`GhxQ^)H?;0jo~$?%p5D{xDW{>nz{rDaxM+XT6`L*cqBck zs@&yqV;W(srD&_bIc1noi`&Glv5@`N$df_&#O-fUG5pHJ+^~sT+f9-_t|c>bhl%7v zlSD^8@#ZAxioD2jY=M7~$_683#>Vj^X(OXay<mX28JXo4Y0eqh2Q^UF2Xu5Vc!j3C z^eGq6sP3<;(S%M?MiO9(H%z+cj>NKa=WN8<jv7-&L<?ggY6QlF*7!;Jv-uNt2TgbY zYjmG&@V5qZUGhZ`A8A+f|B14FP}zwFK5GH#4!F8*^%|CQb=7btdv?^YopEyP=y~Gd zk}|`gFBF>YT-!u((SK)MnqS8r!44ATI(#u&k00%L{d;I%C-p_VU}kEunOOwA;>zpz z*MZz^N5eCvjmg5-rHl+!I;UtRv8Yl6wJ$zpVTaN6Dvj>oJ!b`o46yeX)E$$R*Dz^R zSYqx*X-!-$V=ezx>~@S|Wfx5Hx>r$dQ2OI4MB*#zVN0uBqDG{dQfaTmz-XwZuA8G9 z0DMX}rqR<gW-E27LXSm4N7b$AAN=IdIG@h#GIYsQULLDi3k;haXr1itg$=U(q!Ug* zShN0<P#-Dz<JBm59<m)2X{yS^U!QiC%gm(lEl1{4zLL%I<Wd03b9*yTMetYXb<tCb zSz_o*AG#-9ih1rsEU%V}%~$S>f@dpOtuzd>M1SBmFR3{>9e$$)oCpiALdaLd)z`mj zd>zf&EDfm@Sx?eQj1T60YQk)HtK~EL$=SMHDH`3rjNzSTWKDx2Hxooc4yg80+3d43 z>)8xUx6NM#nCdJ&!v)T7!;G$o6tu$2OzPapGE1-fm{KsK5x6GMityYEd(n*k)Tr?4 zqp18`_?$o;rMfb9kN&$~BA_ob>?#qJiB<N*nOZ7Ka9V&9|EEuq-^{t_As_k+Mgm4t z+6V03RESQnEmkE+h{tOV;;-nA()i#>3+)Yv+AsRK5xfTQ=9PMX2`4HpYIFYbyRE;| zR76wv$^=UpwhBLlrc)mx;Jbnej;|{dQ|i-IH5YF&$*8E9r0(Ddm*=CfEVoh)pxeD@ zEbXjvG-E<Z3j?<1LVC^1HqO+lhxbuSBnFiQwGxx6b!#~?FWI|b#9wDyvD6G7nzvA& z0sE2@AQ?*d$ZbgagW7(0pd%%IstVapa$ge5zw;Rt>Z?YMOFkC^sQAsSz{a+f1>pO6 z)_X+>TK)6Pn_1GH-^2>3eKlBgi!e^E1y;Iu*KG@$!eT9$otA|BK9Pzbv^ekLlQ(KC zO1#IgM;SbwghbsCY~>%*(!#Qb7x5(YB!)&`l;}R+G+x`7%bD02{^@=~^3}4%aimh> z4C@sGNOUNQyY1KYiw~o|NFGeF6vQQ*ArXk;7SxN=C*owkF^9faY0Z0jdTK(}>wo@Y z^;!0z_Jr|!3asJW;r<J1BBJLOBfqM@YD4fVJQc`85g5<9eQUF1@m@-_G^5RA?__An z$sN3U2S5vJDr&u?nc8nnutZ4_F_`NSzM5(aPcKjk47|ThM*HHsy;qZ%LgPQ)Zj*8O zKiK=quDF7w-N8f90156ELU4ivhXhE_06~JgySpX0yAvT0+}+(FxC}7B;6Av|-IH_P zb-&yn@P4?g1#8%|rMtSTy6WkwXZwh*L!rM`=?$=G!<x&2B8n-`GXfYx-f4(hs}m=> z^804V0k?h02y%inb0h}5<UPI6M}q@!@7XVR&_<g%2|5f01MYHrdka9VJ$-$OV4=9z zZSi)ZD1o3raZop>ti1fRAK|lS>CB8Eg6G)XG_<rxQ@pUd2W(v27{6=zBgGeyXaK4@ zYDUk(@*xl?dK*9n*ib&1Zdf8{3}kC2-T#9O|NI~D_~n1WV}^+Tg2&->{{@f#x1AC+ z-FEj%?Cq47@n3OP^O)mpU<riEc6Y3QW;<9L3Dgjrv{{)vU^BlwoxHh3E1Q-i&AYuW zZuvCj-JeQfA<&73r{6``293;V_M}4Ld5XJ^6>}r>cPO0y%IW*j*fDWBy}nTLW~iqp zL{CrDBWSO!w=8bSwNF>ftI*G!x;)38k#kx2$hqa*OECJX>*CWpyL5s8O!+VD+0dfW zG;`4tUc7A~;%3RKPy-$rT)poKaJ8dXM|<>HHdHNK9S#YV42dJ}!0Vs)?3^AbI8ynY zGbhVENxt7MHBa}KZG<!DY|_Wt76=$t?z`BZ>Ie_4-FBukw`?!Sy8TW}UhmO7C<+_+ z8L4~lbjcSTb}O&bsKuc9qM7|F{?V@GM{n8JDB`?wNGz$CSzNs2r``Pb#S_c<<prrU zq>;MO;qrJ#M;@md+X>$-?5Kh~?rym#BXwhiXk$t+_~L8lXYk{jg9rjDyOwo?T_fal zX^~q)J#U<_%RV>viJ@_33Rc0NvfwqGOuzZdXJMqI(|22iLxhW=BI^Feoc+z;BfMwE z3Jm2QD5eYDrq~xM@JF;)<rhXF#t!*x=FlcO?h=s1QtG&4QCqa%l=NwWyv>iwSj(V> z{o+3jlZxe-(mqVqb7j9cSqPA>7mEcvE0OB)4h9!YzAB`_$_zM?WpJnB;Y8j~*Xe>= zQs=!#q+o<XEL9Sa+E<G0kSKF}BMSBi_0%dpdb<$UM%uq#G2O>+CZM5Ej4$DpTU8Hh z$?>CW)&-~MELKYoX|qJ?B?})HCfB^MYg9hDhO;h9RA@SGrdFALeoF|~z<}wrzI*S> zdK3tfmV9CTarmWTxD9c2dHNYKyUN^Qzk^A|>j|-zc9ASWm!O=V{R@fI{8ho0f^epS z*W?~$)8E{SoR+seZhm&|jrduWH|=uaByej~`})$B%~$qIh?D~PrrJ*zzFEK2UhCp3 zH(q5zDOFSZ><p9-(C{VjJZ15%NPCUZ-EW0bhA{=3#hat2&78a-fBA85bA3=%XYa|g z6N;_P#du_eAiu-|h4D&j7K2L_|6Szd(d_e3?Da$*7CqgMjz!6`JY^_=h3#`}%_!FO zt7z^!=$2TtdL`gI6HSfcZNzRZHy7uACiUh@P|pu9g6Dy^)@zqOJ>kMywoUK-=gibL z3D#X!z6#&pSmg5lOQRL~i|hwb3j<2Ab{6kzlAYD*%wv2_p_aB^@{8<L+wX!y#s8#g zKuWq~^}DCYow$UG1f996M8cz)dFsDbtsk%;!)T6fpT62#grRnj<w|_|z+#=+Gin4; zaLf+3-0Erm%!_lwrFaM(I*E?>4pDL%OcegSfvPX`Jek;X2geBg{v1O}99zqpdK-4& zhD+V>@m9)PGn3b+WR`k6xz8oXvmwm{=u4Z0sc%kh<V@)`4<F1&3q8lOOavM`==O?3 zFK>1^Qp|>#-XBLu!yH;MQXz7yUFdO4P)qrc#^t6X7rAh4AX+xRTjs4wX<RLE*|p3+ z7C6@3qC*~Ry~$3+?y#PDAxb5RF&W|L!uNNQx~I+rr}?P@yZX%f(UtMrY8G&Vq07Ql z@?oP(9DN|&tn;_((bfhkp9m2&t|`4MW(s>%Ju&$`rQ_d|jgi|_E{2!94*69X`71O% zZwGZg4P8pkeJwx<9FwCEg)(`cDb6yTtN5-_5HF*AH7a2+e^KqJAUgO_^8JzEM^Il? zUWL~_yMR|f{=ss*e_kS{XM>YS;-OHkS*&fqB9DyVgC4q|wo|2Nv7lE|VBSTu2Q4^! zL3Mn>9rByo56?O=m{*-*`@n$Kn`$AP)h({>D#r03DA9blii><m@C)%z6EKEmHbL<5 zEn`ewu&+m@uZEK2c~$ZxrIK=z!QVNRu^&^%YaS+)T5VP_IhKrmqjq`&a$g_S$Fi)_ z;C!T3n?CPZVdPZCO8L*LA;J9wSn}=c#^iDHRs1JJ5`LPd=G)NyfhrL8I^#Pf8UDKH zW=}&N5BA(u@y+*DDK<3BOP%S2n=U4Ys|%yM^C7}&ZQc=yb;}1V4VLZL7wbon#=U+0 z^NB=14=05vMD(R*yBQfmg|ozbQ~2hXauzZaB>!YCMkG!nY3dMd3VOD#y;`|9N<cy$ zoz|<a^6_Tsi!<MI3RG4iR3IhyxP~1vplS;`wq#Y~qzkuoVT#mJh%AfW2Mc+Miai4x z@JBBjj8rU}y+!Zi5>ac>R&?%T%6U1=L@O+AJcAjN6H-7$rk5L+nUUh+X6G5CTPH!r zK>@vPB-6o5t?;^Y8=()i90zwpzjb5&l@-Spk4qVXW*v^3Z|7v2^rFG|vY>yPH%Xf7 z2?a%hYWQ5M9HGYdK6?sx6~!5Z8io&L<}5B5*G(;``4(D4d#+I3+Q@#nEYu7o*li({ zf!J;hCc=KAx870dtY$9Sx0sh6+iZC?TtaG6x-xqC!<PcLWUW!5F}~wZc?wGR-Nm<- zcPF*Zk1m3tU2ZwP4n`*%)-ShrOkXbCGsG5r!91^-GV2?0f++ZAFSHRN-*F^VZGQNu z3PNx2I0q@jqXef!Zt~98pPr|<*sMwH4dbcqE_LNdGLQVMmHTu2bXyxsv(=7u5R=_! zO4r-&%WfMx-jDNI;Z|D8%<@3v<1DEBNAzZ=k}3OG)lJ?4+x5bNst*PrcW(|p<B<Io zwSLY1*D)e;LmS)T`fUB%6|uCk&HX0hDgE<CyZP(aj<{K)CeXV6`6H6N%6rZNj=F?e z7IHAQDay5W(I2fZBU=hA40$~h?ibf3^{w`^bFmV8km8Q)rpRsgCQjtm8k~8iGHrhp z<}tqbnoGmkd@>K~u}@qLQ3W|K=>*O2l?w1egZ$&Y6IPHK7~M`IA_kpE3>XqpH@glF z`^eGVol$a<l1r%Dp!N*URjN$l`mC4nEq<5bq?EquGevvtXi}=FxPD=_7=mtT<7PbS z9XG?G-q8^suW-8~R;ouvE>yXltjy~}{))CaO!8N<G@eIB28@Bt+*gkd-Jr)jG0`MD z@5tF4Kd)danja+H5{X^F)!j5ww?U#a91(iVr0r;Go=9=fyN@yDn_L|D`lI@9<7$vP zaWR%|gEknptRr6%x&EeigHfCQVqlQ2t(|-vf7Noeh$DE0vD^K)gk{5&A$BYyt2wKr z&8*Dr{o|3f)prq=+~+JjNmvFZRYeS$Uo|`874$L!3z$z&O9~jBD3Ugrr4xQM5S?<X za&Ea|N140vDesRP9S&p<YBGB=zBf7NQwEE0CuawJrtdFGY)QUpxCL9Jj|#PQx>;!( zE))?|t%FJ!wo{ci98~Ato;ux6-{E6%PRD|$qQ`k1@|t9G_ELh^=*%tiY^%CA=>$y} zd4vdTNI#_Kfp1~w8P!5Z`3oFpo0c{m*)6Aio?8PZzMq&L^I2;YJU$r&^fB>Ywh*Wn zNRPeOR$=lioYgvRE-d5W;VMD@ikxN$BILn#RNtpq^ed?F>V6wh%`^D%RLT3WQA<)0 z^EcYA05&Iq)1cfNn8%%Yy@>RfYWD|eHzv%K-EwbLDr0BCOFQm*Uu=9SCoi`ROf{RQ z=`8rNBTVB+_%iC!bb+EAzH3@3hdN_h7w<Pr^Pv%$h7bMe;0qL*zx#d5#HiYIS}cxG znOm@+^DV)TpNBT2p0BKtrsfp1=Ro<4xEfwhy|iUFR`QrZSRG+VA#j$vd%vCLE*Mnd z7j)DB+fj@5$u;Izc`u0AP~gNBmOQ#`c$%4*pBO`*(gevHiXMKFF8@OcjJNjKeBJ7k z-An+U*}az4*gLM%Yo=P~8aI?7N8xcsF?;SaTh2nuAw1f&WTowoMUsY(&ci87Gd=uU zRi==XO*Bk|-FT9i+gBH7ny+qZV!NM$>^rj)UUI;=QU{q*ms(>SedhD@&sml><_aGv zE)-f#*!B6EC<|V>bBCaD($|tNP!nEm`NRZfriqFnS<}T-npXk{*$MP4J&t!!o==D` z2sJ1%s(Hac?9qXO6k24=+=+zph(zPKE^K^BYl(Nd(<GNwE;PtWY&0-HYB|Z(?Zk#o zc%+~imL#}*nYrFT-mJeh%)iqg7D-;Ok5fR|yxYr<3Z*-!$Q2c15P&u=lpZu!&ZX~? znut`yMAdVgY{kow^u)#Kb=5sjJSZ>J%o31RcM7q_<1ctF)mp>Ls|;D|6hjSerF94~ zTcN7Utn0T)5t-p~EAFRqUg}Tert5szfpGCZij63{F_=57c))Gg!J@*c`!W>o_ucXT zlx<CeXHY4%O1_9J5n*-MY>$9TuS<tLeFU_SWcAvTm$%**jZv=J2*d|H{~d1@U9I^u zY)Ll>^tu97Mwm|n)0@v!>0ay^MTechpkBRq&EX+Vt4@t14L)eyjtcXI5M~UCPNTMc z%?x$-VV%(>DrN_pZd3tQtWDv!BwMz;*MAibza?h*aC|GlflZYR-;?4p^J&xl7Lv}u zR$y}|&GP*$p>F@u)V+zY+dI6qpRWE>v;b?La)5Xk%cG<AAd6<-%@htVd!;J%Nd9Xf zyFMrL^{{FqH@wwg*az_?7qD#z;GKqa$FK<mjBoU%Q=CBg4;d6LbXNE~KyKX3wyG|P z4IT$661VqJo~b=bxp-NHJac&13C?pT4o74o2v^|MwvALDMdrG^N`WVZyYz^x^^R7L zV`A9BT&LsR%=rywUylN|9-AA5n+5p^3Y6!s_M*Ep;9SUAt6+}X3{l&8i>YIChQ9U< zu^#tm)e-hg%1^?v0at{WWPUKd(Hp}{<=MQf09T@+(;;2Xf2!8JRO_EFrSf)O?04qf zuG+3TWK%D3Ztz=`HNUuZQBTEPFJs%@S%_@NSro?&i2txa|K3B1db<aWSjlD}W_r#c z;jDwniHehcG;(OTF^O*yTjAXiqZM*ZhmPkBgS(pZ<DxjjAHM(KdLT_6mLXh~J3qFg zwU{&%-^1y87ebo&5=NLu#=a#MD9wYs{4e*S-rWC%W9=d62t2meI>`FNi_0?fqGtLZ zKHrN0)Rw&7^RDc(>cn4>58sb_k_}c}o9Pv-N07+K7k8*hZ7(Nh_d1EuZD0)ZMw}(; zQI>P21k%_5J)!R-jjt~Xk6W=t-lnRF?a!hndIAQ+$+-!6-~Jx-5z%sDf5{h~yNcNI zEtFLE^qYBR@wS!)`Gx#dBb~VHZ=(I(?DC$g>^P`;Rz7z+9SqNITuN_nI(2l_-|{&- zX~OmTQ)>O2!%eimg8@8nw58(eZ30h2;ce586ynPLIpIHm^mZ|%9|JJBcHhNB{I9>c zqI3sz8i2YakoozStISkth%&5-LierKZCl<Qij%QAnK|+=%t`zbs(K7r4yW(yu*x=f z5SoJ?F=2*>|6Ps|dSb9{+w>94Yr7sjPjYfKMNH8HrtV2@rbxX4oC^%;*n<C{o$?m3 zIEtrEQ#<x0KNrabiBVR}inP59)$fjG1qpOD%Qa3Gl@LIA`%vuV;dZq1Mf{d^-MfVK zTT6F5ekj?&_k7o;9=BWTaRD=q94gjbt#k%3ooW3=h+PuT%%!ZpbYN-p5EuAYX<JTR zCn>@*@a-FOIN@SrpA$YgpCmSjx%05w(z~Rnd&nxIX3DWH^*|0_j6n@eCMkBkAEmc` zYRzv?SA0j&Z%qdmLe?#<IY&c6k?|4ci=?!EowkCmm|aYzR~EK}1t7CO7>O#q3A36! zl2XUeX!>GU>2u$(gIEQv>#H9p(G)40Wc>#^_FUrYTfPc+)K*1}K5Ps48E|mLysJ8m zcqwmd&Y<JEVQZxHC!)IG()q1{ktX5b2%DLRfk{$@^`@X=_L7`}jc{2M-BYK;U8)-y zht{0PIgG(EIa=c-N{QgC1RSEQ){gx<4x@VJgv?w8X*n4amzQDntr4onI0gj4Y@Vb- zay(oHi>~Q3wt|d<1p>YnVz4qJH(M>f2RB}wB)f%oz23<OVCr4Q-khutj*eSjKO~-g z)SUR#o7w;6Lrf&S>4&%JvumYh!@q5$_?cN_PgSCmH#Th4*@l@Ohvo?gSca5-6iw#w zj=yPkGEdMM8N-nno2J-I{+LJtETXKl@#g6eE>1&o+hx$_&j;YEBMT+&W`5#C;igy| zn?R-*s+axbykX-nP24RXPnKnvJ<%4X)u}c&rJ1!Dh30ca+>q3rW)DrEzp=7BieI#2 zUiQeV+k?B*j{9Rx(eEsqbvo0}m^86fQtS-QsuqL=)5gxh_DnHLZ*0z!oYz-Hv6~4s zF1ejlm_5r)G^NKrR%x?(K8$*CKjo|Rc74{&pPAL@k)-iTUcOt=><FETO)>X8TvD== z$qj?`k3ef~#P>iEuI!%}+?-K8S_jSAL`Pfe-gZ@WJ^^gqx=!gRqgeueDUnCQZfvfV zbuNtk928r>y@W7fq$L9*9V>5L;{k8FkBgf{Z>FO#;unQ%g>ilJz>sX8NaSIq-<kAS zyGCyt{}3i=cPpq@vHhShhO4^XHl=@MK+qvd;|l?cW_2*zf-|_^If3`8%DnY3efYvS zOx&L5`LV76h|^}5$o_TPu0M*wu*q=B8w$^DBIc}SO={?mx}OoMo%lThgIcYD>!_UN zjh2?wG@hnhT2^=rPD&Lm*XxnDysEq;HmmPyldD`8tjbB*M$BRkis=l&Q%S$s+)OuO zxU>afTZ~aS&GQL@OIfAG8NW6uUxO<X*TWS~-oIlQ+QAf0I;q1LWF6Bu;c#l_snTk% zOyxPIUfYbo*EFi=HCL{2j12OB_6+I#Ke?_9MLU=QOJ{BHJ=REFv_?GPN@wD9%iTy_ z93Vv&tcdu|Z?|!qxcMm}o%Rab73CG;1Ht?MvPQpq_FvZMPybWYLiAtO=>LBTLQr)7 zPq{3Oc1g78Qndv3mLamP!<IOVh?|kQlaZ{HD7Q?!@k>Z;{4AJzF(Y-E5xL5Zb1X<e z>d}n6uQmBmn?#V5L9`N+wWa9$^l*}T9jmyMD@ElQOUbBgQ|r3wx27+k=*zsic(_Vi z`Gvj#>!{m4>Htv`@PjGdLt}f~+CA}>1NsH*(qw5>vbjE~Lba?Zd&*{p)Fujmn*&ZN z!POMz&hhDFQjyH4(%k8mPahFvZYGaOAW&e+)0kMCM;unb2^|^8eVBVCpp`nLTC9@) z%4kiCK&$o8k$Y)5?L)drFQoDPKbFA<IZTiQStj@d316yjNcVun(GUx7QpGdsmxebN zlDjI;Q8J5(rrpSP>ukr28(xl|m|02oH7c=S;|(JAO8hFKmh<QPiV$~fZhld>3n>uW zCA^(i9L|HLRF}R+aW@rw)5_FSGg<FQ_<js&Z#)`XF3;fo3o~=_qa385knFq-`KM>j zgAVeie~c^w>b6*?-OnefpBP5VG0?N7w#=(5>bV(*U>_{(do)-u3}UWZ+J0|aRseXx zE$2Uc9L?ht%Z+LPSCAtFxDlg_96+5bMszbnpfsyO%m<RA5PaWTa`NUcH8M8J6hl=n zGNoEds_M*IKZUlMH><1bj0usA!PTM-1?ukp<s^@bF@b(Le}YXKrlzlI6c!Htlg#rA z4+n1~EE7DWDAEw(`U20TjGEed73a;TjG1nq>U!S3T{@q2K2SqbXsc9hwzO)Ld~buj zrEKy*IoO@d)m$j*nlNPtXV~PgcD&<Lhgf;PM9dj2wLNqqa$N9<*^?_3Zx{iaZ+A2- zyU}K$DNzLMUS%$asZ|L=na=S{jo|8RH>@=xj}8rPC{J;&X(A^?F?XVa8Be|r<%yrp zd&j*F%_lYQH#1bn&P<F-;@ZUaY;<W0>WjaW4=&9jBL}L9dYBm#_rglffNf)S{RgzM z7|cgozWwN1)Fm~w*(v_!y?<njy3$IZFnV*X7r5@Mq8)ReM%Scf1QNIh#zvSpm{YUz zxZJ0}94c!u3{Rwe_{jNFRI<o0)@X9_pDL>HO__!`=okKQym|4_{fOytxi!lMqoTUx zoU6_xD(MA->yTqB&+JlsWk`QL(R)2bDj<juVs4nmy4EhVrer9m!Bx_I?%Lhi{w#O6 zu9W<xJZAt+&aG37THTabnHphzfww?oIIa1z>H$kwa3GMYAkserN&{St>xh?bOI=(4 z3R&L&Mg=)+*csH1Z_M8vo`=$R`-s@>c`Z%rmNC5XW&_U=uScL=)w)UB<%22JTNGxp ztjJgfJ1m3QsW~_DONa9~&)jAf$Euzidoe`}o487#ze%=}mvp&0mz<YTz3VtD={)$K zT!5W(*4Y?TI7nUR8@bl8Xa}sWav6_Qzy=*3S+b#AU755wt82tYy&P+u3<MO(dbuGe zDV>y5kU;^-QORIW_I@d2IiBc4+ZuOZlA(Ovu_|4CqMoyo6zIMxU9kk25Lf6|Gew8p zG4qvcai$1RT*3}dC@%%DJ5Yl<L0|7(Vte2rk=S#ihnG-bb?mV?i}FsTEv`r_vHo0x zM*DZ_WAB3ctJmrYI_X3&UR1yJ7KOb3S6<T#B;{at@BVc79odz<Z%~nWyNH!ldbWyk zTmI(nj<bYE-S1w5+CKco#5UQ!89+ou;R%uR)l*|Pax>Gq$I%RuYcwL+qiQa7lbRLD z%(JG_dMW>;?;Sw^LjTjQ{QegNH8MME9fyb!$&rOfv>~u9CRoh_=@y397jH$4xo14U z;u|4yV|>?xz218Cg9F<jZk5dPW3?<cGp1t)$iT~TA6q5Ol9ERP-`)IJp)l}+em!yS zE`$AN(%yaSTj9f+8a~I`(MS%8pT$2S<UG@pRyxP&5O#W?OBor2>ZNVD7j=K+x}|#k zoprLu^lzkl&Az;lTc(7%8G2oc8}e6+!ou%-rBOe>%65|<&p6@gkod`T<P7J?OnnI9 z8Z{lkRKm|E=eJKWapFGEu{uHVD^pjGORfm)x?Z~lFwBwKOi_gq(8Y6^&_pU$G*hK2 z)`GB-EJ^O6E618QPuBdr?i6G{Nznjm9`7AZ0Ln5kZQ^`Of4J(s7X!00M`!mA6OGL* zTRY;l-5nlq4q_`yThDWQ<qgtjWsddu<IHHx<L&5;9@5T4AvJqy<Ya_YGQVCTj{juR zWfwJ&i8X{i^P;%AfHbuMv~Lzy`!j4L<<(+n2ZhDf^$$1pd<G*_uiZVonD#qrTtZyt zxa=J9Z}oUjoGuO|ZZlLI(^_3TLK4v;6Te=Qbgg|G(?l#Dm0GW>4<dDrwDyM4WZ9QG z`sD9U^l5LK!IoCd&+f@%Z1~DqdyotoUM|-JB5$8;<Wtu-XQxc8Qm<FbE!3?`gK{f* zGq2YmzAJ8Jb-b$X%aI(y4-Jh^Lc94z#GlB7^p+c#Te5$k_kK%}S3E4$?{H!-?-bLl zo>Il+xdDFS_qI&`S7Eh%jpBz!#w3REQa^;Y*aMfVJ`OxcD1ksx?;`3CI%ho6_qN=Y zL>{g~JGNvQe0QDH%SV`v56H_gZw|Z!(pzr5_P&5&*w>f_jG`>T_bs23HhxEWOU$M; z#>mW(XO&w2EaeCz%~@_p|CT=5xHG^GE$sO{Jv}=yzaTgMJ$y7>(oK;Tt#Y*GLQjYZ zpC^GqbBbjd_N46gi<NfS)WmUrR3$-fnxdlJGwY{1UPyrK7@jJmpzefsw)UT{M{>N% zZkAd4xOM0}r#eS^W92A0`$~Oj+75E|DB<TNc&ZDT{v3NEUuky;ti1zEEYBL;cQ8A2 z?b>3&Q4;*A?E3T|lDYf&x-#Q*o&?l1UmUeJmpDq6%-zYH?L!g3#`ZKBdG$-uhGrI| z201o0At7xu(P4_YKWBjpa|07nbFv>l_87vZpp+!GbM|>eRj+hgZxMQNAKk<C5%oy% zBj|{`8t2|To2G}|u>1D8htk|S6>=9+%Zg%)F%uWXg3V$@LY`KeDuPuOnFr$<anYw- zkPm!D<3;mRo~B0sTy0ooznhAN{`ky(&VbyoArR?tYiWHGuAn1MeeQQc4Hw-%oh|hW zs4b4z*5yFBNA9DSzYQ3X-BbT4fsV|uo?XW}<y9NGzGYP(Z}_YA$=v{W*j0=WsfQBr z0qe5{p+Cgm-}8P3iOj8?>E<As?-P7lxRtx_(D(pEkntmo1MSIQ#XH-8uSR-x?ylQC zm(<*^y4OyUlu(jTU*j@@+~;+W&nl<Jc=cZrHEq5{tZwpKTi5hv=fyu%nX#QMw|+56 zL`q?HQ1Ytci+%18JG~n{+h<3R=PrFPwij5TsEI{|({~r#`f_`bIhX_Dma==J3BRmw zZ|(R;<=WUP3JX^n@uXrza#tJ~NgVJQWxCECr38F;K<PV8Do1pnw2i(=pe3_<FPeQ+ z!1l&_ryG55P9+Ec@2KOhR+3ih9Xv-I{q&M3Ln9KM5vd;Worx$$8Lk&XY}7BQnuLHS zNAB!5A=IJ$laKS&Cu9fmkqer+a76vwRkL=uI}!CV)kn~adC3~*sZMsp(co`kjzq+4 z!i*p+S&UkQ0MCgy*hCpYk+K-oz`yV4d&MK=FguX7cKB?Ko5u+dPfH!i7jkaJtMEX$ zx}S{yN-b}aS%F17e3(K;KlCN|d{lo?(ZeN*H-+?{XE+E%^%^y9!koNcB58tn&<`GP zC`23salJ+H%Jc?jQCagLa@JCm1=d-@pEADL)|ny(VM*!*H>Pq|1t%aEx8Ui|df%5n zjU<BA<B51ER+$;rKaQK?K-(W#|I^)7Kle|_oJu^92m7CO-3AL=&-sJknCOL`+xV1n za^d#H8&2*N#dU{9t~TJHISqsz<C0HB-C^m-{*7vYdmktPI;d+{7@yw$9cuEFpui9E zHsKwrWvOQ_<G11k^&J|nvc!nQ?QJb%#Gnb;7t#3sNC2f%GlHt|Dah78s?y_>mV!3S z&8v;Hs6q@!nh(g8@Ud;==Bip>MyENXt=2m8qH}NQA|~R1QA09=L7VCD!AqpHZ?sbz zE}P#b+RNSD;!?ADno((J(-{_F=V_~HeqPPXF-Tv#3`bUJ0+k`c)(CM{d2EsWVXbKA zIj0N&vx#N~sU_w&6?@owq0vy_8Y^;RcZ4|`RGY2*_y`z*uqCR*R*u3Lr5C9=pb^Ou z!wS#CCP#&UsI-Mm#kGpy&(_p=7d>dWIV1+75ft3eQqFlfIaQqFE4IyvLr;3u*fI0G zO%($+{hiN1zn?WinVPG`AWV{8UmW(6KqEnK_)^xpHaE66K=G*o+ewW~FHQ&8nN!*4 zKDn<^j-ktAYtxlQ3A-hg(hRN_JZyOysc2O@J_MBp15FEi0(3tye#PHzw=$V0F=0~v zBU8E<Ma(Y?FviO!OP%=~(bz>qA6~~StiW=Qb$vw88s2zetny_j-SO2%135o{nymj* z6CrtyF5pbr8Wjo`cV%RU%#llj*>Hqqx+=cu5sV1614hc7l=1*ETf{!uAe4hs#%dg> zzND+FAktsf0@PxnXC)vXu8jx|^uCj9ALXO2^8J+%@wcV4bMrgj*1Vbi)#AFh+*=ld zXcTg<T74)%Ky#0gd7o7NAV2&fRQMDYn^0?wCFf>i1|9ba8-FM-|ND26yS(a(N^oTE zaaRZ%9htDN)oE3s?NSMnUeN}xx_ZN|)~=)-npy65N4-_+gOKvs3!%FB!d)o?_km>} z0^pjK6UZZ$jACs2lwaf8t5ou`)9h6JbqIVb(?-ADam+Nd+tBYJvRy{sU#$K19;;`; z<`*<bO6q>`*gt0VFMjU*4hNw%$uDSKiFT|ZNm~A3S(QS4n-fA98cjF!dbfY(vVWnj zvbz){2A9Ln#G=vRLVPwG#JLane8tJC$;8*Gt>uQ*i<+%Qn{3I;e-|b7{o#4gqWyAU z@@Kd##o&;$z+vrBm|L}}?k*b}LWVC=gKnD>2|#O`{16ZgKTqUb8w_v0L>(l0+lhDf z4RX%`ILmQaX&!Q>8nbGUNr8Z$_dYc6loW(U(<Q1Rb7E9C^7ym59}_nV#?_bO1>}AG zI<e~CL!dz>r(;RDCFs6O=YNxJ?|3j`+0xp&VPbZA&>ef)s1L`{8D!CM*5AHSdSn8G z6*HE2HxR?JAJ=61kOX~%5W~atJs;6Pll7_3o__PVuz$>{AJ5tn;(&j>98**wNWA`L zE;>N{FsEc(-y1zfjvIOdBNy8|_B)pXdi-~Jis#2Y$K$pV40x2nE&A=vUVVFStY1^A z_0c{9GgDQu4NvaP4Do_;mDkWMV9Ev#mWBue7e;<D<2VCS#!Zt8XeSvIAB>>e%gk)h z)EH)NI}vO<$%KDPzClw}gqMpg58M0hUXgMulvGyc{mz^GyErrlzsdD@*wLoA9mA{W z?|t?()bTBahqpJ<%Yng8qej?@r@1?^NcW(O;Zc?2@Do(z8Xfywmz&NXw4%2Qko@9) zp|TRh&`x-@W*<NFYRH7b*Yx4kk9*z_bOXyi0vk*9GIuv1Q`h?g6EK}+L@#m$wH$Fl z8ct7_MMPSh48%eqA`+u*QUZsUr1if64T$1TUDXM^&;Fqo@S@WQ0&8C&hMyHkAK$|_ zqI0WY=Au1P)OVh3m#y~B%RHi*b~d(~s{W^pA@Yf_z9-$h?H9PI5P^3y)^{ETH%|dc zT%ST7#Z(d#1RtOp*R{lcb}lQ%V%J>6j}I3Ux%wVkQoo>Mk6>$P-@}<kJD+WKt8eT5 zSotH_jF`xPcX?~)k%BhJ<EG<rq5xMTgG?qE&H=wXR;fOwalM1AyNkj0L7J~$D8jFw zBT%pf|AWJcRd_D^N`Jy($M#E1&PJyHy=mJ`KU}I4kt1m9P~ZD*LK5(}4ivMAtkuhm z;Pq|8TebVrq1pa$0{@fRc9Ugi>Q!yAn~9wh|NDAsC>}P!vBQaf+sXSZTnvz>T=h-1 z{tYS!?sqZ@*4xhY-b1+`^nakNN_|bsA(T1(aBCkGQ{1G3BCe|n-Kog+zfGTjz^5>B z(CEN(RK%9-8;ARpl+^r7Uk5Df&nEEv(#)w>obP}%%y%22c^!{O`Ap)G2X=xILsUA$ zKaTGM_HJ1ZM4ZxcTVSfMtc!N9ZmzS-ebP6FPv@&$$qQIHK!1<VDoy$~mYv;PT%SEb zXKqodh%<_Yh1&I{T@fu&;ep<J^6Sxv`dwm+-A!YF1l;N<!cec}CMS{R+x$=*`N)F< zL1I_nTp;tn_WnSXdiAD1m!^}{A3Q4sIJb*`(#O|TksXK|$rA#BRe^|@eVeEKmJWVB z8GCb{`+<kapa5O5j~*_Y1-g694jXZzuaa^EVSSWOmh`i5^_Z=}y{y8=t$0&_sRs z`Z4U#{|-}X3!iyRCgb-0#$1$tv8I5AIn^G%0N-f$yNTUBI9gvFbQkbAr4)tFw69w0 zUw2PzNB|PrQj~x%zsC%a-<{LD7W9K#>;Eoq_dkEX5~W5A3ho5y-z<+WUofBP`&^z; z2x%)CTVoyT2`II64@#M4-kkUQCo{W?^4cxp9ePFqpL!ml_GgLwenZxwc#~6e{q}yl zR|}u(!b{Gh-haVDxCGw-%~m8mSJv=OXFa46Zo`+(3O<h#j)*+fGSXkt;A(rY7o(-X zJ!7TzM55o4)@7fWiSg@Uon#g}m{;y=GnU!iKi-Zumhrs(5n8|o?wZEz${wKfJLZ5h z*Wzg06hrRlI35qi#|3<|M*Bi9h5!Bfx44Gs-!Cf>K0)^^zpVO4e$dFV!?-H+qdmSp zHhWdFKJh-GRJhffKQ^U|&iBtZo;P!t^4!DOR=8?<p9k#$qjI_{c1Jj*=MhtW{{T7V zD2HR{KU|8PtO2$Yf0u1LHOHGOAXW_ii~vdqx}MH`d{#~=8dhJQ8j|wjajyO`W=Y2F z<UvE9lns)cz<ujIvq|>0si|SBjfynY$9U=6701NN0@tFS|Bw5-PLyB!p0&Tz9|HqF z)Z5Bv5a-@biLIBa9>?JBpRVkf)o?PqOYAcu{MSs|*UtRBfiZku$Q1!hVgVS1#YK6` zl?lxCWprF-9vNRzRi>OZDRDXW0&^47KP&`W3+Q?VHua%D_Cx%9mpmeSyK*1K%vspj zk?3sU?H8M3+o@vk<{EdmlZo-i%dgzyx=jKZoCgb4(P?QUl0WdrA7>*$HhR@D50G2- zSX*#sE_|6E<Z({ej@m(=S${e-*WPHbuMw9h1=v}L|KamC_!kDQ@bGX$OD}Y7xw$il z{yolYiB2#4uJh{ph?N7jtf5E8#`wHoSy2`I1|)jfiC68TwGuS*0Wm$LkMUo>7C~xQ zzRhf$B<-$x&MM2DpJ5TVn0V(||0B9+D%9g*)p6w*#V67Ki8U?TsAgBEy?^ep-=_ar z;BstSdP)r7dofyC3d64xTW(5^VTG~2K1;&X^AAsC+TrE*_fzA*Ns1+gs~;8D3U%>d z<^DJRH+$RdoNo`C)-kU8QXi85(@@d-g=IvyZ!FsM8U?8?rED8eA*rX%PL;i1v?^c6 zj#|$FhJx7ULAvdYLG>3I4vHVjVJZ8E_ux$Xlb%TGg4XI__%Xj<q!@g}zu=(r&Go$~ zU`VVro}U5EgRnk)GWWHnFVNw4FETfKiS?(QQ?*WA+)?87?3j3Vv+pl??i-fIn`GQ8 zhD04R90cSA4hk+ekY0Hc4!qQqFign)`Yy3a)%=guf#%6Y*bB&YD)mVt{NlNr&HR9z z{{uge<A533?Q(T_(%o7PyMaFtgIX@5{a54Jw22$*06*d?R{y?NAC*pNneD~!4j$*x z)iYyw&YmJ%UI}#m)!=d()gr};oV-E#K@_yF{=C{qp89Mm-FH8Sq(lp^%Jo|$;JX`u zJu{HKc3niJ7tgd`zW^MoU+qGNF%zkol#Xt|kk?wc5&;$fHodfc3Aim-x_TVMMG*6j zZIo3>g*RmzNi4ajQHgQ#+=nin3Kg;TD7=@J;v^39P|gs4JTwf<kXvFq#-D%t#qOV7 zw)%dBnvW}AUw512HE|jlIk<a1K@IL9L-&8c(5Dl5<62n^?Aka%$jRqf2lRCSZ`dtT z|D)f>Fdzmvmp|q0$Xdsgkk2A4W;?r_Jrun<==SzF(}qC5G3PP~8DnNI>oznCn{a4# z_2<G#W8f#u_gy^HItNz&Vuep$K<f(!2TNG}40H&;Yb`%ubPN{N;yE4u3lUa3Hw8`l zv}ym!$xWFS-Bo*->{nqrla^6DH5zAM{qnAWZU5s!RhdiWKf)HLIb~!{x%Zwo4GDA- z@PlBuVK|y_%kbdu;aZ)-x1Eg=g!Jrz)91o<wwj6wz2jdW{ftyJTm24$rvJV1)8s2b zfMA;Qs#uCMCgX284+EQK_!<PDD~YHRRd`0<ij1QK{VUgjaAA*CwBgN(EB_&S`CpN% z-^1>P_U`BnTj|`N!bW*jIV@e>WmM!qZT4Za>iCR|uBt2w_0lgN6fY;yN(up2YTzAE zU|=?Qc(i&5Jyv%A?bkVk4R~<%`UR~IZ#T`yD~&v9@eY?Hq@{0z*nqY6oylupude!J zrB|+{%^q&6uehA-wO2NMHZrAjy1JJD1`5QVJqs5_+?7-7gc|qT6D6)zw2GdQ<BN>= zO%_Z9#PBUYHQ<}r4YhygO0Hr{^YZ+B53|^V))FNpR$WQCKlJ!!1@F;xsiOV19kSXC zfv@FF)$3V9+kLmrbQ+zKZ;Nq!PN#A=ufyF7Uc-UEHyZ_Fat|{hXocnAWiIw>ywL8i zA;EA50pT0Gclnq~$#f%Q`*)X6H;$z`1c4or2vS^ghm=tLS?e)8jyMO7kBNy1?Q8Wt zpycLBt?=>ev`~gGuH>rJ{UB;y7PVXK?3B<0H``0>UtYr8rTwWfPh|WcRgF;z7*qy> z4&D#@N4V^*aM1$A+)ks)C`Ic^&8^z|T+hcw&yqldkUhMRX(G#NT-b06f(egvsQ88P zpE%u)Xt^CPiM|~HMkXhvkKCRrOL;641JY#}OV8(Kc)FM}Ydx)7NbT-UO~b+xu79%` z3)`W`tL9}T?B?Xe4*so`E_^%CeLuwEAC;HK5P*3$_8AzAFJH>p1`v2!SO5ViJ@^3w z_bk-^-u%8ZwQU6Q_#ig9e2DhF89WT}-52tC#L{1nZM%PtOW|d$xY<XB4z9ObyB1>Z zM;kI9%b_QFTJ7n)uv4M@vImRWGp1W+r4PDGMtO8`>2PxLO!RaOZ`7I19++u9(AYJv zZ<4e*{zt*DM~AYU+7PXSFJWMQlZ0;R#(5#yGXlh9>4?!g5OatdzrSR@Ii-dpDGAqM z6iju-S)R`MpDC!Qs$8FO_=m$E)8W!L>1SE5#Doe?-4B<fWeP&~G8QKc`&R@9QxwQ6 z`+K7^>ndn+Yptm^lIJdCaJ>&Nd^fh)jF%TNw(EZy^Vaf0EKa2ut|3jPQ#GCNFrY<1 zC8OoJFVbpCE;4Uz&C;aLzkm<eYpy0BB$T4T&&$tGF>nZbK8#hlV58HfBWEtdO#S$` zx~HcH|JdaekiMf=45oO-aPMA%QB1otK|o51dKn+@>EE<1F=G+<5A#N4t@jTz=wGzU zVMm2dde;M8waLJA^blT#J~C0{Zv?JurG7dU=USS+-&RiuC@VWkXGS1f>5Q$Yujg$X zu>sa!l9f3Ko_H2pOw_rH-|jDXxKwED35VDtKVP!#>bBojw~M!TMNiKOKjc1i;wGq* z1}Ic=F6%GL2HyZ9P1V}k+VU{=;VIVX;NW16%VG^LF`igWq=w#d<g%Ul{uX!2=GHy@ zVA<X0^Tiq*HrL8OI7(&0Y(hXFDT}}0J>;-zVclD*X{FshYgLL>e5p}PS=I#b?|$k1 zMiUkh7BR5m{S_Z5MbC`;aM^HmC4>G!mWCFq;dmPwk71rWE_gzddnK4VzU^|IRWNn( z4U%t<gna)1ZuJjn7vtLtL91P`F<&Na;L#^T?8sPtKoSp&i7*&%d(hF<jtm~0Zt&SY zYQ4U@S>N47>IgF=<}sS@-PqVToos&`1>S_Q1Lj9%W|r~up3BZAJ4845+u<QBBCJ_$ zN1w@Ozqu{edRqe?&k~L9heK4==B7{P?=jxG9?c2}3ckTYGCw<SGi=Yl%Kv59F*sP* zy$xWS&nzP|K$z8LI+9viq~&dw)R%{1vU~BoFW7Ff-dN8$EBIDt+y_YlM?nGg^~7e( z%u7qlK$G)gWAP$W*?$!kk!6nd1qO%8iY85N-4qoUvAll$_6B%(`n&}%x7&zp+s&o7 zJQKYXJDJa-Q*(oW^RR+*!%fKkNfEVc0V}WCxvx))(r!m)Vj}nmnpJhEb%}HWgNYVD zAl#QPzxY8xp`k)}4{Lg&x;07sD}JGSdt|pEAr5opThEBeQN&$8KZp2Tp<s!A37ar5 zI9YucqU-YvJvdN*G;_G?y`0B+ICEiP8Gtxtv9f0_Y~9q^K{{s-g~+xkDJVSF(hHDC zc)S?&eQJXS3HzZt9$Wr7C{PTS(>?Hu7i2?~#xE>(`mC!f&5uQcf`b=p;W@2$8EUt- z^PCQR$Fg0L&2^TEfOgOGcP}+M3-L?;pcGUkjGLXU*O~ni`Zt9-&Fc2~0vgsAxMZ12 zZiu%(FHhu^*!7b=xMInL|5)pxnPgC~l6O?efz67?K4p|Ny>u|ruZbt<QpQucF}z4k zk4@H?ID!v1fGoxsowr7i_WU5E(S2s^@Gp0|^QTuv*6qyW=grmC3h{^G8KCeQT3&`U zzll$-JPME1Um7g9v=(grvshV$GQUN>$i0vKLkOq6h>TI$L{NA(B>`7t^)+z)`XJ~- zg5sL&pE)XRXvhWkgR)7-k_~<jM8U+y26Y$>8eXlmmT0#FO`E<>>NW_dwz@-!q87>@ zE<+?Xpb~-JDGoy*v06O&XT2Kw#+(5Y79C%#yA3$2?3U4I%d{c$BM<`+3OcqlJ^EhV z8{XMRp_NDYWcn2B>S})x3t<GB3qUlJlHG}qA-jPvl!^r#AK1*CvVJH3mr~7WY3%t7 zG!Ul&@3gJ+kTD#W7p=)<%Y^{F&%JjOVO@ED0T+ja&=_!%$dZu6w&zk8&y_H4I=mu@ zPP3_Nf(2$UfTX%}+5Emx)w4bP{6!+>7L{`k?C{9ee*)nP28TRtZf~d7(Dy`>;i;BY zRAi#(i3|$rGSlC)^}zb8d1LPwm6DZ}1x!q)*Styd^N)Kc2)t}r5lKAnxkBzEzb!86 zUw+=Nf8$oor0V%}A*Z|k!~95O`G_|ednF<V43O4P6f~?g;~Zjw6t)pU8$){vqO-L) z1WvqgumV}6*^P%P0>|HZWdNsJ)?g#yj0PzJuZ1o;DLzHK7;qaI4HVB~QCbDTM^&sJ z-`zso#VZmyKvpQLtWnAP5<q6332M9qf!?!_1Le?*CgGS-t0r!})k;se)@VHhFTcPx zC?;zpA^7Nu^#G||*g&H+66nt>4u<-QlH@lxCT7%|t83!yR9r!tO2)CN3S+uOJBVGd z8`(FDFS4?9VX%{q{_f|*s>@Z2PFR_I$Mp4e?!yQ$mu^za3*~Q+|G_&ZnT&n2SJm^^ zP-)y0<lmMQHP{_uJuXhrMeZ2Wym-f!u%AO;<Q2_?Tahu3$)j>33vU9g72}fAKS<lr zGJbxOmbC<f;V|ZxbBtYZl?+vd*0P{YFJd>K;~9B0XvgXxc1ObI@z4UMxI*y>4~9CW zOvT^4XZ{G{09i!>Ft;Z^sp)LrsO|iK>BlYI|H%aauyEf&s&|aI<|b(}%d9DrF0*#? zWASFCQKy4%Qxs1pEc$R``yogr$&4G%pMSzqyHUHEH$`~oVGqiL->W~R_uk?NWqy9l z&Z2O%vLLV%k=Pr%uo2P2QFAgmE=x@I55^>BCd4_$D2l+XX8ipf1MA<r953bVL5c-K zT|W*&GMef2^o~Fq`3GyVrpqez0Upwf7xV+YUrU?Pq8_xh{PW^oX_K;GOodZ##{B-? zb`~%Znde9-dlK+!7+2j!v4G^|*ys<MS@Kk>c5z^&pH=cd1+i^VeHlJ=0kN7gGQTV> z)L(lcUDA$e^WH>DF$9^o|0y@_AuXUwpiEL?dNr*db)2cjpW7PJ0$+7}kz5RHZTK2G zHCIke+}o^bgA!%O4532wILw6}E#O7bP{e?(Al)BhYIJ>~*mlf6A`%~<w^lLc`A#i< zW73h1YqrU1pS>qIUd1J4zZfd~J&@3aF87q2A`5ng_ru@Cze|J?&|)>0{eSNX4f})F z!IGsTeBx;7q^)zyZMcp~;Je?BY8HGMi@q0@NZ;@c&-k`NldhG59Q>%N3cLWUyF|M= z<08G(H~2rKlKZ<j;#iLl{agzi!S?EhTbgXjepw?wt-5sgQ33{^yYndHlC+QrTM`8C zHK9-YlGfd#rrcLG#ThvC&HYGN4^k=0LJm`Sx=p8w=GnMlVq%)`Nm-(_G^z$AH0<d| zfJlMcLrue)2$2-<Y}X5z&tz9G*<()s_<zxt7|QXbu-?HkIHBtqZ?s!f@9A6)9kBmX z41P5@Uz=mkSGwJ-u&?Eu7q>`;1)hBvn6viZ*slc(TAlx}-w>CMrILi-b}N6Dc6=_- z*f_;`>i=GkPb*o(r4^w(M*QdK-#;_mo>RYTA91C4jWL8<y=kCt)^lgj^-ft{47vKs zpfK=sNyO*DmdtO(PB~$`vZ|;_ibOc<5JF7sjE1Dg#EoV3<5B?ZcOO$CN~NqG@cYL^ zdm?L&Vt`<n@>MrcDkvG)Io4beO8qx4iC?!OSwtGsgu`f~rJP^n9j&g0-;!RD^x<Om z7d#%#s3#i?R%VslL*H54E2H0}fi#RTaA*d0H|n(ds|H_{{W+F1$hWt_Mw0GWl{)CK z@Yxr7I;~FR26z3ZGrFHZ0ywE{!6X}V%EKH+S7mA+$!5`T4Eypv=}?e{<recOqH_v1 ztW%SWo=m8w5gpFVugz`D#Iiv9IA3$)i_JCRg``vH!p>q%cET{D4)+&56bnRANW{3q z10_~G(k|xykuB>EbGjetfYbR2{~T|CJ1^K$-(=gT)h*bJ=9j8lL+^vou-<+)14c7G zhtGVB0)&l@BK_-GaOYnEh)a{i)b8vS_{(hkg;N3*7b4LvZ2lSAKOWO(LO(wRykl2R z*IJ+uPLr25V?smwruO-Bwr2q!;7YAQp$eK7FDok_FmW)Cx)Ojc%POgW@Ebcewy4Z6 zGHUZE6c4M6)jxkWtlTiD+^F!}=evC`!{v8Ca{utqbU=Zymps6l$xh>ac?69tZ#%j? z1Fk`=SE*xJid`Moc4D~*J){IIKGwV8q4rU$-=&Vl*a4mMH|*j#+p151NK(-MCFlu9 z`>p-uk(k5KDQkH{((Y9Lxny|L*rF@>^=+oT=lw+JTh}b}9RKhRkiT8a<F>9^RatVT zcS|Mrij(GoIw|&i$*fs-Wp*h?+ieEO-~SB;uoMd_0XGIov431|vi6^}NnaQ&O#L`j z*DiLaWS8d5M%yVN;<YmW$aU@EeX%1bWCZlMqc9o%tUHuI%m9RRk$jf51U&$^=K?Vb zuppDwAKE<8Y&Bz>(|OaZ+K-5VbAEtmKmq~+t4CY2;9h}W2gWISg2&HOM-P(E>iQ=} zUgQ3zKvxunU7eqA6fL9@QV`ACfLFhZ2L&UCQ*#FN%83><G&C$|2UX)BvxKS+jttH2 zhyzmHMnVG#vK7w^9Uu9pS^Imv8P+JtYiLM2so=D0bi{3I^99L@B=pJTzFtpb3>6g> zmCxWzfkFE!ToyEvl9NBFY7gg+YNtC661C|(;#@sm^1qY*isJfwmO1wkL$yG@s~?;R zJluSGV9lrc)O(2al`M%sfZ*I?(qxs&<Hc>Jn!5VwWO2DMcX}HCm3r502p_Axo}Vb( z8%`gS_Zxb=?fvmvO+`gm><e}}M#ksF8pM6kq`fsPiJHxJDEfX6I7-5|_<gr^u>RO> z*meQD)A)>f^_S9%wd3vnHyXN*i`HdjWrn*|919JetTDJu=-6RUW{vT_1)Kb$q6|FI zF9U(WgMeV;I2}M@jb40AiMu6mKN~)B3_K?O5#Gn_TJ;<IR{}5Nip})Lz{mIHM_#sk zI~&>o!5E3p5qu0|C{IDi9d(C73(fZa(EA>kaih&FHpt4#Y97dIMo6Tgso~_9|8aPo zaX8Hztgt~$blN2cUoX%YH=F+REGacP-ix6XCP2<-Yv?dZbJTFi)YaWJF!Z)>$X<i% zsxC92DW=%ebQ7D}jVlzFk_l?TRQX`+alUrP!osq-IrrFIRi1J-Rb0N2)9gQrf+yCe z+nzCJMMwjTDl6Oz*umyJy6?4}o}NB^45j8TD=#eF%q?$`_R)E*^l-xk42cJ9a}IWX zZZiKj^5(pHe4*8x`a?J-=)S>C1m;)?Oj>@S@!hhU?pR`@!NJW~JUEiMIS&v%40I`p zK|=)RPM3>jD8`4OFd6DD1KzlVgvG)k|KO+*d63P;mBB`sVL|CV{}bG&CcsCV`G&?L zp2KOhh-zP~zsk6Ptr4u>mFqwj@9IDjz7M@4^Us&hn74U|lFMH|-29f9NJxxFD&IHp z3seHBh;REr8$~WehLMPghZo!Tlot_V@k1Oag9*@q0I-vBimBRnoBj0k4C(svZbm+f z6F2lWqGG~gBcr&i!-fyK4-O57_E%ZYt+?q*0a4p)LBacj3|6kp(T2vx1bngYj=oN( zw5KuKj+@U@4SC5Non1|b@?bWLEzf}{QaYNXFV=bvMOj;W_%=E-jni+0W!rK;qqw+O ztKE?&RsSuDh6XVZlcbKdd>z%UH?CgbOphWWdXbQl6EkSRz|NPC;xAQTWznRntnA^m zVn**LuG1X*OpFFM<DA^WYbnO+Whh|AvcTu);sH$@tzPxjiN%ARfj|TYIz7WWIXkm; z*0$#;H&aUL?!KKA%cq8vei=>sL@$_-GDcayytMVGmqSJLoVdPN=jH~jp|NRweSLE8 zw(F-65J;4_T;}$f&dkg-%v|}Bh}mKL`|TYgT9=U#QoS$|&@it)KDGFUm^in?thy4= zaG%Ee%)U)3sv|WuHEzpwk5{a$o_E<-0H>vV=G$<VM5dbkMa6=mqCJy-eVPtP`|=(7 z^__9BqS%A|OBwSkpkA^`RjOe3@_u2}ry(ch?9xHRRu|GZk^_HO7>1-G)_^$0-KqXi zUkqF~i`?BQrZYfM{!e@F85UI&t%+`eqJjb<IVng^A}XOt3Ia+JP;$;W=hP^oWJClc zBPc;~&NNDvoO1?|*gykKH%<5K_PaCBnYri8nRDkncm51N_CrJU-c_sCTJ^4Xt*Wj3 z>=}=RLQLC4&B--L+hKDcX8W8WJ))@zLQPGrTQb?@jZsB`0ss1Xj|;r9Y69m;M1<L5 zr5XU8_%reJU-cEa1`DMn4yT8QT|X?%2Zx}u)&^&N)&t9xdLq+xI6w%uBh%4&3V+$; zmp1SY)Ud?F!~q3h`;TyA&g$}bghsAJRatm?mOhqs>>e~vW{8${_M|85scHyufy1VW zrvB`1eq$p#`usYhzwp+U;!L@lh;~t8&Z;>Wx}T3}%ae3;uEOEnNhNbBl6HYrUXRjZ z_8{KoRWm)()+^_)WbQln+h#lKYKH!h^*$BmPhu+8cBl%<&1Jg>Nkf4~N+9O8O6)M@ z;#evD5%jtI#*NY6zuV)T(hU|i)Qjh9kEpt0%*K8Td}VoNaa=&j+-M#8qitF^_ssKf zw5yJ$o1f;9)8e(Zm2vi%TsjmAwYqF-k8tWtdC&qASeggvk=k>ye8+&K0cf@$fY1Cl zsJj5f1v|vePUnNxeWlH-nt7@zp0gJq6;qF(twYR=S_M|S3TLwHtE4<wiB^Av?mlL3 zTVh?39?05fB)hD6gLMV;x>{OV?O!9-K8u<01F^BOVB6O?fwL<zOVXI5*tyh)ouHx3 zyUh&*o*lAj7h__<WhPH0vu$(;M!b!t#n>+z(g^DR%vG0srs@Tjq^%6RJ5zbi)X_~U zW6|^U8K}<QXQ^ck+t-qUP!Dmw`%j-ge}0HWSZ#l5#NM*9vI=Z=75-*rB_=N6-tILu znor6*VD{yUF8@h;?yTePOjF#lcQBXP&|;7(@5LiWI<Yw$P4NFVi})8k_-B~y&o|iM zdWHtm3;mut>=+0-lvG*u#fj>HDu=p6O5^#xe={dC^4f11>|Gz6Kg-IBSxg_2Rq6Kz z^dgNm>)b#nX&*CuywnFS$25Tll-fnq4i~VjhPnk6rGu?B8Y?RsM3({F^Z|n~1DV%A zUTPqHeQsHP8EjwwI(~}_(4QhgQgCi${(vFv!r5*QsbZk|bFjLYeP`qDLxPVib@nF= zZ0tY5m}+A;>>V)`GxLO4EbND==}JzgrIk%xgSxi&BT`xcX;hXK7jA5qmigN+e1(AD z6Bj^2)&*EM964H2Q&SVfT`UFYmT=)NbW3WYSss3TOhj^%jt&Uv{Mf$V5};QX41&JG z!`|qT=>z%SyNkfQ|Je1j^K&m0h*f(~&s=~(r){F!?gR%&q{Z)J<uiBGwP*#RNqxr4 zq48cjkIKCl&|TKp%S3edObc)aI%APCHZy;@i&rR+PZy6XxcWk?lSH@GQ<${QpkQw} zw&rD`j_6!Ix8K98(s{MX6p~TOt@6pt)Vttz_20*Kcus?18|Qd9=E*EjgkcW!ci-yY z0{;nLp8&n3lKLoP2&cQqDEHC9PjN`h@$1*}H9odS-*b!g4CFEE@`O7(>S~$6Z_k=m zOCkIV1smO#AQ1v$i*C@F$GeMBCk(v1Zi~LwHhf?cm6g;jl>zcWAX%fJj^BkcDEB?{ zQ9*?(_t<mYRnvKLtkQF9dJT;daw5OTQL0bXwpjR0x}kzL5hNqU)-}~Rt;@t`9w&)9 zt{`)@zAk5JX|1WNtMuxX*TtjZ;mIXav6<aX&%|IZF0R19=BuRFIcgJFh43|Ei{F43 zW!t(8dU>rXSGGd~z6qU=-sg^tTwCW#`rfO$@FTXJ=GynRk%73+1fdZnGkrb*ahiq% z4%*gc_S4OIsqRy{)-munt{0g;ADqr(KfKbsenXJ>-Hqj(&$s7Q+72`L=UnazW=Dg$ ztVoAw-?MI4w<o?r^H;@9sxe;!+bb^z$;mPBZ3|4*1)`UZR6`^*LC;`Ve+vM(*&kle z?VBYWiUM~i-|jB;eQ6eZHwm@*F6ksvlyE2bj6((C_I3O1CFK~({E$2S*{S5-5E1X~ zUQXGKLI)IoF7|+fr+6+scCKy2aAJy?*L}Ldim#~H8XvF`7jvXAohX|hcbL_`w63xm zyW!1z0uKwgvzeO|M982(VlScpVr);p=%8p648_b@$FI_5i-od3Z9OJM6r}lF<K&!v z?(Z*WvwVM4#N916oNKYW!kH>g_UCr~(AV4S8HQzaAAd^TBjDTwKIRY=^hmz>_GPnN zIOOv*T9k0`^;_RGZb^;NnkgRI^dxFrl8gWZ5cMXOR%Hb)fo~U$Crw)fUQD4xVR>(I z;7R2*y+^z^5;7^2K3QDipkCge9h4>z_@tw4dOyvLfWe>mvtfo?sX$In-bs+k<u-e% zB1A-x-3)QT7rhq-s-gOWf2k>RlUu+x1g8*NA3gFqkCRWW++o7!B;$34o7+1JD{9&E zOtk2Rx%b!Ff{*TP4Z(U&ewQW`L<Z4}9|VW>tzcV!WS#ar8vQ`<)NpSmh${QLg`FkX zqpZSC2J)YBl0B-*xjnz1`<j?MA3Jp|FL1t__&q0=sb5lKO1{VPr)5d@_sjN0YRqR# z`7XDDA~k1HjI`^5Hr!6Xt}oLusG0VSMW%n7Og%~m%hw&w@#{m_z+jfllo!_P27M@$ zkJ_#5gAyhoLHrYI-*AsvblL1+>;T`ihSSfPg}BeYxJC_VU~V{ax&sYQT3e;;ETF8Y ze<<}qQKsv9k=0x)t6pPOl72!;+wc#S=)=yAUhBtfMqli#T1(7qU#);HqQc}|gU9A~ z?2MWX!x*gQpD<P8iSn3T(ZsA6%=E__wM0G8XMfEf09|Ibn{4EyLI%W$wR)1}WyaP@ zB8ziP)`BPjo+PEL-~w4g{ExRh!CzLSBbFNgy~ckRyaM<NOg3{xFvP_F?1mHKk6a56 zX9l^>zc*q37dIKy|G6P@K$jZcJuKh+jyw++&4W3rQ0%GJ^>4B@T8%}KuL?h)R9-w> z6vW5&O37}2_6U1W@T@pV1y!f(2FTr&mLVC7ZfsDoKa!|lO|8Y~0sbL&j|pTY_VW13 zK-BUk>#>{NRpr);cTVT0_v{ZoEDEOLJ5-&`DLeWtP_hLmC@3~J`E{ohcOiA0@!(x+ zLYHedhJ;6uhrrb3*B$GDrkLeJ_Gjr*30%flt{QE=P7aR#pmhSayl5`_Sz>4CIzgp7 z|64VtfoO=co#c>*3oK%@{B9ENj0i}4^-5laerO2Z!WeSA%kLb#ER9ypl3yRc+TQ@L z`^qu^EW0X5u*gyQZMFD(_MeLZZ=;&m`4ijDqtbA48KX#UF*@KO=6kn>%OwLZfw*Bt zV5_>AiS$uXj2EQ#@KC4E)yHFP_4QQ@Vxf*lQlnoB)|8c-WP#bJ(K$eDwT~e$Ui-yK zs|0J@agj#p{Nm+RdZylP`QT`Lr|jtPNXTy^4$9Ux6*rM4y1Mea>l+p4;YxC!nDL8{ ztT=Mkpc=9ebsc`2uKKH(dM^>w(=bDED+Ul47)rpsfAR78u9gPeOHq-;jw1Rooh6Rw zv#Kt48T8L8vgoa$aSe-m5OHBtlHbdzmxy^e1c-Jeu}7pWUdnj-xG{z>#1pRo4EYvp zY<}1;DBs2=5uA?C!@2#vr&;B}-H!mZPl=lP#%g*`FI9D^cT9ACbM~|20Wsh_CQy(b z61!#5P2jpQu6(u}HH7kRmr%INSph-a)=^IzOqMCmnY6dsXnZIpA?7;M(Hq#h4H>Px z?|1q`vEJ?U6#zzY2Rkws@i+ma{(d(qfKF=NJn3TRI!M&8LQgKuG>A(EEwM5nQDz7Q zX^gubauJ_kk7vmPZfBgXR0)|sf>2U2J%6c7$7x~ISDB8HG{(6S$T%)`RLnE+`}z6$ z`4S$iV!G?kdu7~q<dAE>SAW8tGx~^pFds=a7oKg8kg)`8`LRGzm#o!Ox^|#w(y^}S z&V`9Ym#GpCi0J#)*N-LLH(hj(2d0V_YQv}<rtaBwa5qazihcCE6;jY@7Gvf3d9Y{D z*^q{nITSo=;I;rCRS1?cegWE!H$DG&G@z8P$|{;!nA=4`MLD92Dl7PIIjZV$=Gp1K z-*Vzj1H&)`5rr}!Q|>tu&(Q`ArXppmd)kPxm~G{+R@S4U_rk5fD$7<YzR%|g4tkh@ zDSksN$Do>ZUL5lfd75bDaZ{q9uph6R#z=>P!r{J6)HGBqj4xk}==S|;Az2FwTM1?w zruprMXQ(saLt56-i6|Z)t~2F`0;2+IpFVwb<4?;{$?6?`E3fS`Bkvr{LJ2ZB@3YP! zq3G`W1yCmGOyhb9$lA`@z+9B{itl5B<Y;Ea4_T~0Q0O-Ao{nnTU_M_`LW;#oMAJUO za%8WTA2y>7R7gW<yK6wQdb*14i+j)uq(lAZ4B-?N3~D0z$|?DB7hmbB?~lSnjB;0W z_wITJ0^a;IJBzi~PEi-V@GG<a72btOJ$C`V8k`}w+CyRW3DgeIyIbFtQAh9LsNUlg zx{&YNU=-oI+e!P`e<#M$(&i8=BDB1}eYx$8m2!%E-*t>juX$!8GMF=l?rK|f#hRNi zglc`W`%l#NJGvJ1$1U9w?JgrpG81@X{+V-WY2YC`jZ7VUX({Q@!F!mDs`)(7>bs{Z zxv*d$;9_ff+vQ@z<)!v3w{|$(?BdjEK4`3D0h;@Fnm^;wcI~2I2kNIa<f6phDX7m% zb(1mA>5)Ozzv|_|Vn{GY=D6!&bB``nRn%5uVK&g9PomOTZIto9a*+SN8%N)e^{LvZ zLY%YC82P)$_x_;t@sW8Wmm5Kf{Lz4X&V`quw*o<SKAqGbTH4sS9|}%h;+Gl}pDiW~ zjHEw~hKUi9#~6Z@f1s#k@y+J1M(iq@SX}r3=I7uEm5RY)jcKaygHlF^N__hMx!q%e z?5WRJBckry4dBwFSL}&WYnytZx)?9DtJZg?EQiL19JeU=74O{*O>Y4b**V{D0ybP8 zQ%u9Xq^z_(yaHe9uQ7={D(7t=gNOTe5sSI91({5xE8^w&HIq;l0_Lq<#n>~di&cQ1 zp>ls{X<|d=XcwgoSPB)R3ccXnPb=>Dnzb)AH1EXz<+9%p$~J-f!z%5j2D?z{&5}Rm zo<LZE?~&ZxB>nro651cNE{(I8Z$!#vK>qF(S7N*c_^Wd0k=%%XMH)O}cE;e)>wP&v zjz2j%x@*FEXO9rS&h=bUBFJWDQsI2Z#re>IaNYF2*Y54wo0YL&UpSX*7-&6v?954j ziMsymx}|S5EuG`r_W>TZCcJ5<^bz}O(S?=ujHQ2HytSJG4heLB6tvW;zDieIlQKd| zxRhq<NPvW1N?LMOG&$1~!?!|%)8#X5BJN^qjsepdNk1oZC+IQ;7rs1>ij4Gcx`Lm^ zp}xMNx~SWmcP@q85G#s=eIb9AV3Y7t#=&8<I^PVv&ZZd1P9h>bKkEqkM9@i=n(yur z;-?{8Y3N^D_wn-n-v$r=-*0lG1$?ErMvD5cFP578s9T>5gj0+T5TsnCP-23?UuJlf z#B=2SPwXU$rr@jf9%5GyFX*@Sm7JbZrfl&zivRgJ{`EFfKvOinsX6T}pwWnfr^(06 zZENT_zQUKz$t!AM;qdhO9Re^5HSJ&XPdg#7oxzsIjZONijI-qGRMYw;TRQHx?a1{@ z94q!Sa?ig|39~DRv{`O#jsBwsY6RIt*CHc<gTo_xoEpc|TPsiBCU223PJYM;q`>tM zkj1%nwWkl2#z2Nz%kh0-D|rFf=F4r_?MjxjhJ2kCLx(AP9@0mPUFNt~X~IgT&G#^g z+43dI=TQ8w_!jNXQoOmjdCfOpUwleT*3vc}91JC4Sh}1Z-$ZMCOXJ1MfG$;|^nnM> zT;<w2noa_e=TH8oE2^ImWH&WjqFQm{VBfgXSyGKFbIL`QjqFC|YMCOF{=NZmHx^XC zGhe^>TcUstEv=!Ep;Bbbj;sur(4nF_5SnTK<<+EAd+UXv<`cKzN9R7JzY!<BC6|e` zvR<$;S2i6>;JYY4PLiEr{*(RBnx4)U`~{aO5U0c$>tSVbbms=#xVsii=vw;(Vt&#; zyvv|2cPT#_X>n}5{4~Ny)BCR~UcLq}53fW*wMq#($Zwd+Cb-Euos2z7OZglx5@A<K z2GDvD{@tKl`i&D$<Nr%^TX6M5I(6CLgZFs&8*dEOgZvK-{x{+8-zoTyU}!x2osRhx zsCk1U!Mry=dp@#v_f3|GnA-*W6<6&W_#`|&zcEbpd`zz;n6^8k{aHACNXbXho-eXT zMcu6LF>M~_rIqP9E3kSMEPKcXhWB`%&9sn4DMRz(qC4Adiwt)6W9wY5Tn!npZl5gr zr(FPe%Z2B0?qWkq)5F2Oscn<?s<4l8jICTk+*ft_STwI?gwqSB5^yT3C*$`j$P2pK z2QCs&ze)s;boF-3|Hu}3@Uy$m^WAla9yMttw=4oOR>=>p9@0&<`;t4Ar*Gf(*(`%V zKkiF}?{!uc9KF`rhDF>5yM}vj`j`={9Tv81NzH3u;wN=hKhtkV#xQVz`Yev6tJtsZ z<PVCVSevhw)6T26Zi(W)*#mfRZ9#V*exi(&U4Ypyjd}0d>9@XGSrJmOFg<~lyD~8~ z9-Y#=kv%uHgh|sCYuocfdJ2x<Ki7P+pwdTl4{IJeE>yioO5>uL&yf||3*;b(J@FnH zR91&!d7&3W4w$1&k9yBlOZ3Tg_y{74Ti}lUtUQe*f-pIno<!EnO_=Msat|N>pOH$u z1DsO!6_WU`wE$Xx?R#(#kM<-`52U$-;toCxpI!odgqq7=ym(1Em=7ggUUlpu)+KQ8 z;+U8m9i(o4KkvCQA@*72K!jURzziH?xziGh!gZF>xu*~z0hBX`Fl9Vujhr0$3stwj zAZPXJRh5;fiPv=y8^z`~1(bcl*Pb`VrUG7~b*601C6-^AzSJk4;%c0Zu@6&?+&r)C zE>?OGv8oFJyu3xz$?oAhP$+p2SIigqSK)bK+~Y{)=fHHDd$=CLncWwobkk;NJt7(R ztYqT3+q0`4tbQTkJZllDk6zD#zk+ee7b-=OwO9j&A;kQg%c?kk#D)wOkhOY6O{vv| zKm@=q-<E<zrLoq>1&?u2ihB`y?4Ju1DvAJN>G82(6lm-ZXU<#nW(RMRU{_I&bG@eJ z+(LjGY5(krV7kHb%n2dk^oS9MT9*Sma@VxqwaXYMB5lx+v#=Sw%nG#{A1eD1(D5`H zje1zTRB=6|yw_p|9Fv@#B14+aLrn2pD|JY{o>s#SPHHeCZh*^n{t6AW>J8+#OiwnS z^${L=9lX`JYbYIB5`c6?Ca6<LxIGXa<3jAtxjab16-^Y?ub-w}r4vb?PSNt)KG7lY zMP2xydKX}qms4@)uc{F5!9b9!4@R6_+?<XYl93zT)gxA?>#PQ)aUR3S5XUO&z&o|z zBPw&TS9VD6MoDC?x;7BT>VskZ1geXt_@xkU*Lx{+nV;oD%7h47Tgezd=^{Itj0_`G zRoY;d<a|?mY%`j&pzu3UGrLO-sY6p-bqr)GK~Ew)d-g|n{s`)c(~RC1LE&Sfvm&ed zrUtjeHe#CK3+gbgNWX0#BqD9cWwl)>`7n9Pn80)~mpmaUr8i9-o7fF+B%!UMPZ;UZ z0*?#p?t`uO2JElZaABX=%HC#ib~cnSySY>AvgZ5Pi0V^ZtN!IS5PcIJtW6HA(^9){ ze6stLl<2nAJf~OXM5;dTMXtUOAY*{sxBe~U>_m1Oh-*FIr%p^%VSaeIDuJpBDit@L zOD~BW4s?e7wqdGaazLb-=pD!eBgeDoGsQmFWuh6A)l;8rk3@TCoiA`i;emJa1DxA^ z4}LKIehkzKp_y>fLE%@fS`D1DR{g$+OYzxD*BZnvj&>H$R=?%}!yZb8YqI*<oC>+| z>X}e_P|F1yF2FOgAYDJ9tv|~<<XHj^{c87TVg{_&Cde1r+3vng#-0)93NidNF%Af` zDr#MO*H^Yam}NrVRz)s7s{2lHAER1@7z)^>G!DiYIX52J8wX&9K1VB*Htr-l&Quk- zr3q;VsoR=T;IL5jm7TTr7HCkV@D-5yQG#nwWqZ4Ny51J#O+ENP0i<X2GebfY?^1O) zR0^Re-uskU7+48#RzakLSE3ni#^ir_qt!UT&_eI4VV?X6*2G~bo$DsS$@X!RH8n23 z34(xn=~V448XrGfOW3Ef`t}JtyGC2%NAV$*o0nUmfw6w%fHk|QOqOz2tOa_y@zEb0 zwU)Q!t!L>jqQw^S<~N%X$lXt>w*pb^y!Iv9+NB1exuHbKs_FfkMXl@td<izJfo~aY zOfJc)s$Pd-$5>HIqn-Usq68r$a)Q<~u*Ejhdk2R)CLc1=@HE30w=C92F6*FT)%XvT z3Hrv}mVp}M#!NtMu6JCu1n@z0)1cI5C0{*szqt#+uUq@6`6ppuOAsiMw%(EWuk{1~ zF&dre9_%A3IvITMY>hGbGIHqRQtP60f9Cx}W|C94O)pW9!=Z3)s0_DSf_B#i1vH46 zQDn7X{MV%0Z(cs!irgq(YK`gRRO1x84TSUzx5ijadmYHGo$85;2iCe@0=a=j-|NrZ zh?LT$qM*$vR=nc|h;q&kf3`!3vzv3?nBcbJcBf%kV1!+=s0A*QTlD`UhKPT~prBVV z)87%D{!Aso3aC$K%?ObRJbl`4&BgXcF5((#yJc}e#ixX<?j2Ua<@W<=Vo7PC975zm z<m!NNI*!gq2F2wZ^e1@U(C}=b#KUhn*5qip8S+dj^@oL!)X<s`tZkQP%=bbaYBu}1 zqQ0r|Xs@xxa`X2v7?Oh;cs;5Wm0B}bTW-F`00x+0$?r)N@5d27D6)N|Vq=*VSakCr zM!<G=c|nHlD0<4FYDUanyequpM}G5Fdw4^dyJzt^nc-8bS4BGpRJ*LM&o^L&@31_v zC(uXzqS59xJIe%%hG)VCr@L%iLgXQpk&)gRO*IbDSFU#2KFCBdKqMlQ{<<qLouZZ| z?JTLK7;}e{EvMqhMB`QO*R<aU;7rU1?CkLeqaLC!Uw*hRVm5sRwAl2AaA^Mrkgft_ zaizZguP&w(eZ~QyL4DfykX%!hXK7`6^%!N)GE`V0nV>#dZu#&vm><1d&B=*~iC$e8 zqNxBE1s%1F%i~fF?-Hmd^2W@5{3tOF1?eiF0fn+@HU@KnzAx^*7a1)qEODyccN|<8 z^JbQ8>qskQ7wP^vhLmc9K!ft+&g;Cv_wVR|X;6>f3?L!()ybde_QI<CGamZxO1!Tj zQ&qA&Nm5<^y-BHI;um<<023*I@`KF8%Gy>~QI$xm^kQ?%AF5c|Tduv+Zp0`Q!LVpS zsixlqXi|;l;wj=Zne{s?K<Q`6#LXo?(uCfQjf6bF71h!E_R=N96cqL@YK9*CYnDk+ zgeeYiZeHb$rA^oGg<1Cdf?TE~ZqR@jjfzkAe*0~y#1VnsuRoPw@!My`9L14)>=pOv z!Ym+3YYmtS?0bp8{mdk=;dUwm=MC1!p1O1{fkzruC)ZtQTJ@SP<D^>+AKY%8L4ODV z@MP0R7uZTl9ahfK@|F+`CkT4S0GEt8iz)o65jKkd=XsBTNAD}hu9K~oz%VhtzVkYt zT}a`ry2+)nW?-jj2c71-irY79A7nPfod=xRpYU48X8CGw?%P#ys;rJiB=})EY3Y0} zY5=kb*6Die_rhd6b%s}HpMGfh#Ncq5)S=C9BglJE+Tea6mZ0#+U%WI}1T`3MpG<p! zdfhW4+@Ardi+Roc?VI%;Vy>Ze<Gw*r5CB$pr3Ht1{djXJgBM>7s-&JKlJ86m`A=a~ z{sl4qAC3(EUr~0)mpW2YQC`F|@lPs|99eJN`8cacgM(K(PU3F2p)h@BPoF+*F(SrC z0h=2e6LU{LAU+Vvs&lJ?C&U^t`P|^T(<;Nhz+70u%_brhCO~5JIrY|C3zuXKeAjkC z-lMMQt`$;{U+^MD`aTVLZi#b66J)XV&RyV9+I54nq<`9l5z6}TN&Q-pWH*yLU$G-J zD0+DD{D#w6W^?vkLxBJ#9#1yw4%^G0`K65X@exTw8xP<q`#7k{Co8tPj*lnjiV$0~ zip_NSyWREBGsPRGzHdcXeg}Fx&HJ5(;kOV_+JTRNFh5tf03%r7ZfDnskYrBOkZFf7 z_v`ozv}w71Va4w4++VP$A-r<4o$g~8gY#%_-J-5Qv<3hA)yKmpWV88$D8_|ouxEi( z2xM-)ORePz4q7uTQt1})71q*Z27STP)$;oIC}{po#6j)Hc=xxf+OxQ++L7}qTkp;h zp7MZyN|C)4LE<K`xmhWaF{CJpv{X<K?2=bDYY1OO#MQIpU9*iwqq_#zxCME>h{>c~ zKy(l&^tyKF>q2$z_!}UP#*FVH+cwd#n(zwc@nLb%u}=Zjy?+NHbe#+PiyY*12=X+6 zDjBXs1hO=LTsvVrQ@|<-$-V4evFuv3UD|+3e@{xs1HH>3Q4$3BAYN%olj?85DOhv( z@AG~CsoMF!kU(PcZvwn??`M6I>;0;G#KT=@e!ppXlUB_TcZD!L@h`*u)rK3~(K+g= zUAENew&{9v^;~3hA$~TJ?f#h7wEJ*a;j_nLr{47V+3OJG20WXdYkI?fu8wAHv0EJ8 zo86{qYFgW4d_rhiHB)|K|4%z(uwC6~F4LgM%}3R&nVjV{`eSA5!|&j|q|bj&RKEZ8 zgv(qZ+B&3nbnF{m0pm&231vyZIG1pF*V6glC21D=|Dn?G(`*CMnatlE?7`4S4aBIx z%8xt8q@>+HzVNwZQFdn&E1d3x{;>bnRT&!1ixZT@pCc0<{@)14-uy#xKk&_1Z)=5s z`hb<Nus1pSuF@9<0IiJ(XWO;Ex|`%(x{QAkn}98*cmFqy%G<ic=uhmo>PE4!+L%R{ zLKR=E+Uo^_M|exBfPiJkH*RoJwNoXeJ|u9zmr<w+CBkzxJ;rqji95fP!f$X44^Vzr z`;Zdf|9bQ`XABv{O6V_JQ|rC*>TmbBf$As_M1mOsux9}CE-~3MWp9UD>8`SL$I8Oa zw6<PU?`~|IiCFGC`8B(O<xhvf(Tilw+!e~d{t~LAAQem`VR-2B>tV>*4+1jV`!@<o zf@iHos6^a3g;kRXmUGnF@FN<n87KMANkZan`~M&r`JZZ6c(3m&%_AVtIWSPNLv9$~ zz8FNJG$4>iD8gb)Am80Vv9&dQviUci+mr_kt2Oz+t*1(j$QT}kKMuX@wGyu^R_;Vv zs8&J7>Ltwb?ixS+`(D9fu)r9v>Vo;e@MG{Bm;W?Uyzom;H`ifPP@q~Sc$7wJRw4Jt zp~`FE@UN>(eZd;yZI51uBKH?!9%qlKSf|HWS=un=R_8g~;Q2d!G%W;wLM91i^OuOl zh(%mYAIa>_{HnANBqn}KL4Q-h#3g@_27hLg{Q4~reUCF|ge*LHe{W3Y9aEohthG&f zkOxDdFgrc#%ys72zXo1fc=ZJdxR0>Xto<^Olatd}D^i{dAqcXdyYEQ2mTS~Aq{OAO z@HZ>{HHrtQ*6RC(>xpM?+EP)NPaiNHHo+h96YeSXkib5FbW}5YhY$B^W==OaJE>rr zo2}WXkY~W!#h!)bG5g^o&lx*>*W>{(SZ91-OA#L*Z?s6##$$V%{W-FHbD8rramv*F zs6)o{ibam3u-8_~-{xRS;;TU`q2oQOVV5h|5wGjuF`JBFZBtq+(QUj?7Gwwd|H|)w zmNm}^0h=`Tw5ZGUz7a~&)Rgh84rxkb^bl-$1IBA#m1FY*=4(q^r`%Wm&e|3sQu^X9 z4to~5DA*;Q|FydMu+_8H{Chy4zmZ?r#!u_d5TDYnG{=0A>jN{h=%l{XK~a@C$6D(# z)%OHO<))AGfANDE8g}2G+|QpYqp%s5$W-aZ=Q_o0z+gA+nds1ug@Kq|)=8gj-RnqQ zwKBeaFB^O*!9Pi+4%2%N21PTRhdmo>P_;>3mM!UDrSUAPQT7+}@4uiP*O9q=y!+oV zb#eO%=@I|4S^>NS|1C3hzcJ%yDpMzU7Lb#t+U7IfY3O;fA&ERq1M@k@`Y9L%a;wf+ z)_^_C!cQ+rA!tPul`^Y!PD33j`)JkQLWM!fKJB3Hb%WCUyxJrm9GYJS1DE@~gkqFF z_r63bZ8AF7*_7?8-uiAPul;L-+S>2K%oZc2bQ@{KBbl-v;EmY4e}JZkpGA<){+SUs zwAnSIgAXYk4Kpdmva$w0PegGvQG~hg?H=AL3I6b2l^k)jYeyV};OX|Skavs!;)`5G zb+-Pw4wg&wh%Y1HI+~uV#Boa}b7RiP_TMooSplTj-1qSh0%%BK*zax&#|?D{ASre4 zq?VB}jXbEy%xDc=oX%9*1b2SZ6=S+=HRcBrV&95$2t#~mpwCx#Q;xHQ!}y>gai5N> z_Zx;i9`{?#OWsQ$m$`UXmK^xns%K)JX(BKo+zz&xKn~;Z*|WZ%1nmg$iRHS|w#N4R zV#~-I3QL)vaG1Wx;;I)PoOjHMPIOQ*#s~@x#g+!-xJ3RYhnKD(AZ2SQQ>|<kdxGxC z&<;kKsBU_7Yne03ta*w!MEUu24aUG5x0c%I5#dRN-}4af(boFu7MN~3I6Riv^OkX* z>4&?(LUW5IkCFr6n}glI6VkHCK|Xp77A3Rc0)qm5sj3*qF8<)dKXPCi6{IdoQ838X z+E(X}GVqACd}aE~&u_s+2o7z1E7N)=$tr`p-`fY<*sKy<n_apvDLaMyk+xPCY>lob z$~qb(D40g^urfz%&d$(2bY4k6hBhOozm=~W-|QyO#W~?j{kpF59<0rxhK?-zrCC~? z_^}DrZtWzH@|UkxCD)PsfsPD`@P)^?LJN9q_k=v=w>S&)=<tuWgor9GQ$G*E3oiBF zN90i{*e0%eNa<$|^`(xWr47vr6#Y#b6|-S@0MhBL;n_cW2>R0Nw3{Mz0Q4*wW{sXc z{G5?qA2@o8iJ5sOBe2}<;(GFswe1r&aG4f0bmIUK0LThdI?ri?+~@`zDf1Sjg#@id zWHN+F6-h|2h~D@87h5%C;rk?QC&?zyyu2PlPT@PXJ9`gH+3WpMS&NeR*-K~&r1~Ms zwNzqz_ST;X`lFkV@2|!Nwz0E1Zt4oWv~*g}u$tpJPU{+2GwX$AnLV@T7^kUPOH<d& zw6|W}RgMrl<{=k?s9btckAO9|&V=&iUoUl;GU<K2QHH3yp7Qb~i%oj~&Z;-UHZP8B zuQTn=>GL4GBOW9GaYA$DGV~S=?b_aqcm6n7BeQt6&i)9#_|(dadV_ic%z4)~mgI)A zgQYZyUu|qwmh#ELba}p`55H*gkanr*Uade(9}^Q3$d03MdkX=shMRt@%e2H-!%2vr zT}=z2CD2rw%{GjnDO7QM7QrZ<l!(q5x7*QQ8&})8s|rb|P7y0isI?m{4A9uFezrYW zy~UAG{i>_MmXkie_G<)J#oeh20p4nJ${U4B*-t5dzhS#-{w#!eM5c{MP}b19!shj* z*3Fa^iU7#D83_b|ZFLBRz1o?<wjsOQTMX9nvd}8&*uov;(x(MVR{v$H!<nIIMVG=` zZbuVaAusj}U>x4^;;p_%T|-Si=acn?xbrnA4h<<?YVczllx~uhEB&;#I}^Sq3RRZ> z#CTDYEl3Ce)geg9gVVDubxhM)m^$`3=6x2*ri!J>|HR%fB|X|BH`fhLf>j8_u;MH+ z39RVzc&A0Cx|WM3`^I40pphH8Kc&F1@zzXw{5zMX8lgo*+uRy!;Bsi#g>=c*?CMfC z&a8RGBuH9tV19|79M^|q%nCd+s#p_=>vnBm5-x{0JH*iy-ymSmUwip!_0%YXGPFvr zjjw$}EMOhh6%f3NT-}|ob6WDS(30@!j@9faTyeQ|I`_Clg@7=G#uYK?bjT-j?r|u? zipw}V=$2+s4_Zl~!}KMuie%x|eE+-;z88#@x#;%Y>UaSjJi#G-u#Z%z_45eaDpFj1 zVpW{C1KSwz>E3H{iOE8JQ(Rj;^EG5*jZ?>FEkz&gly%27<A@IVV23-0Hlbr$!D?CJ zRJb)CD5Q&vGZn>G)*J+nC0}?IJ0y+Df7J<<@9>obr=|N_(-Jc)xc}vB)g~)a=dv_~ z4D!OK<21a!5Z<)f4Lw^Bc0DaT8>fY=t-z2Lhr^|V;nNH*!Drp8-AkkNCYTHLZaxwj zCRXTK?DQfF<;?zB5&Yb>8EVpcIa|aZ9;_%i&PbW@&G(NY^e#*6P<Otx=)yVF*_<t> z8gjW79xF=zN&7(V&Qk>d$bO0`fd}c#H(DrSR-w3>zd~B0qH>!nT{y(TPWR6gS<yeH ztKGDkk+0zqbr)?UtEUTfU9UxNbX>gOFWj0<d*mFwgxXN=Qe?dlJ$(0`C44t;;4o+j z5j#Da*oh1p3KjM~G{+ps;AZF~Q1<hcP63!bpBAp!+1XSKW7$`SD5$z5wG0Xqqvb0Y zgc>_MU&0I>V&B7K6`?4dwNO@gxH@<YRhJI5S!8v$=#VQ8cYZeRD;~VICPN7c-p)OY zSPJCC>YSr|HyqSEb72oyl4CFI0}p7~qz`kmqG4y#li?8vVc#?IwUJGP4_%xxRnuBG zwvV+Fx--L&tQIUCd}xDvis?EywlKjQ!#io==kdO1@<m$c=@yh3idd4ix^qu;>@+?u z(9*t!u|iu#RRF6ofIOQ&|L(FWqpqqt0G`t~Q6y5w8n9dOZkDX=*Pqr+undFl;+Kw2 z14l`I!4M~GFm<ezD;PZ`Lk-6rk$2YNju6T+Fretd=d6c44s=om1_qAP<z}2JwKX*Z zXmL?d$3a@@<ZEAd_{tw8^T-0g2MVna07$hv`sRBK4-AlOoZSm?hz0;a_6ad~RSE|$ zz*S1{a{CTwyTDy}@DlR&3V8iMK>z^P%D)wX8@gMMHie4amGzaee(PE4?2+{f*8<h} zJ0F_@FG3U-PZrN=marvf`{YuUv#NH_;+l6_!VK4@g3s%&*$$w!J8TBfoZuq~g10Pi z57^jP&f8_eNi8gj=2Ist!27fKO$FFUXDOUT)9S2)Z72WN#Rim*viMp0-z_dF5qRV{ zP2uF^BvMxd9ejn8T-poUFWPh~t-1^j<|Z3>`ParQOIjJp4Cs=NKPY+j-wz%Co#LEM zwKgI^SAATnL=LdM4_yX;8ZF4fEU@W+6PxVoNT$mBm`gyh)ppJ#2T*(u+6Dkqg)!Qh zz;I3=JrGi(A~4oS973~BN(2;>*r!h31-&GuZ$+69C|0!3m;@hm--H;r&0(K4!39*` zGob)X1vJ~M9}$>R^PhfmRe1!IPfq9$6?kdC2g(VP5Z!yE1o+2gfsY&ik|gtM1G}Ov z6kGA)GN9WRS?rLi2mNNhW-l7DB{N%CSm?)kzDyz`hL{HH3a<|pA-zlD2!I^}DJ>8C z1}T#flc9i0cd&b!%*01o2%+aELkPWs&nEnaFHIN$rFPAyz5+i?zsQ!qh=cuv)m#Di zES>MPzBFrnacFYUh{1-jlx?&ebt87bdycv1kMe8p3Z0&5!W+g52nX1K>hSF+!QdCn z+TZ!*<HiwB^>~TL(M*8po}DF2P)Qj2i59fj$x(_>mg<4NlF&FiOjigh05@^CQou<8 zw9RU{R2U7VU-<i<F$$o=-u<Qkv^4|}2zK)y@!(4?s&udPl<7Gz5`>%-E=r+y^jJ-C zIJ{H};}<U!{P#Dj##7&PMqV@!5P?H+rzH@oMGR?9Ia#h8YQBv?Uj+mlE5h1Q$)!nQ zoi&1lu@sj9Q>pJYO2+#V0IB~J4MFxZduATp@8Kqcd*NYI<l{}3O{Jd@0@bl>k$W4Z z1l+6MElxRZgl*UO%tbTx{jm-yYU4dGIRR5AgTd-_|0tA#H*1a`aR{gWKDVqu+!O;L z8;#6eN5PhJpd35i<mD@XoN7|4&-A`>X@CRZm!q5uoP=C^;cz8f*B3n$7&m}yJ)xij zOgE^FZqrsU4!h@}r#U^nt^fi#@y6JR`HOB^a$qtq$D1e>-ntQeqa2(`D|=6Wb*aw4 zT*Spr3gM@*DssSK$vtvkL6Im4V*aA<Txip8UJ1~BdU6X<(=3=%Zwxiz1>CevAOJvf z_)PxsOC`nlT!I=&#f%D2Z>e8&q`nSkB*&%(ESV#Rf|^qog8?N)5gOvDfCc}hIP<H( zb=&H4lRpeGYK*_&L)0|~Ixm2b$yYBA4LeS=`}~}xh{L+@dQ(yULjFp4LCe$<76-_d zj))_lQscIx6WM_W1(_Nl{)%MVM)L*^Ww<9M_oOgDd2mU`o8^sG9m=tf1sT9FTT)fR zkY?^RaZ)Hji2lP$D2xSL^BCZk)yM_<{2U9nWG04sx3)+C_opYVWgWJ!DKyAH6S~Dr zc+~A4!;hxE0hnIceRXv{mN&^IEKvlwl{66Nh;BBTr7_qf3(lX^-$WkB4sWkd3aFLU z7_u=VY~$7EeZVhzw;$PT?~ft~F&v2sjq*+ZeG|A=o$f(kf0cl;#_3RR-Q4630WjIh zM!KhvPdI@{XESd9NgVR#Av^InBHfUZ<P!m4$LIgLbQSjS3ZOdNPeGw!;O4ST4!nrl zpqYJIOv`=rkY5$By;F1fz5koGz_K*udq9ZityeGST0Qn|0;!hbxd3X1Z5zJf@--X@ zzAnPP;v)oEpq{D-*ye1!3)yI%G&2EYN3@GVbTFdHz_4Y^yO8h=Y6KwxxZi~B8eF05 z%bANbf$60OHwllX6pQB{u$qBgj!Wb%Ft{W6f|0;9>;VJek;8hb-q-UZ0-#2B%i}V4 z*SiU4+2@hik7qdmQ1s=GguH51Wi(J+&X$Mh_i0Jrf`HFVeU;6J(E(l4^T^LPtB1Wd zZ(ajJ^h>@yB;t<)$|F;$34aG<eY<iM)cBg`BMZEHN{K-EugJ`s<F=s2r9N#LVF2CF z2=8MMT-aX2f&Q?X4*XqL=oS|A%C;JB0H9o(2V;;146kZ$9|!><3f$<a8w94;g?T~1 z$q<H{We18MpQ1?s?ND=Q5Ct$9(b@XpCpdDxr&u%>aJP*Xbi?!DSU|rGS_pXkcbC3@ zd(8m9{Xedg|F`kKL=FE}8vj=s{}!VB|5Z0;>c^?_^76EEnDOuv3?FEM0xjOMu>!zk zRHyxUZEfvz_8AEf@<0Uy<e7wb$pD}YttBO3YvDB_1e$ppy4KBk#6<ZD1-Lyf`yqeL zAD_~gy}dnE`)dF&Y@bd9w)vl+=l|eXE8S`s!Dr5TSsvIj(SulhKo{9q$$xr!(*64N z#dQ;9@M)%cv1BYUEAHaK%PX+fSyeq`7jL5P>4Asa-PlJ=gkTJdZ<0k9d47XMf6w~v z7rwsL*3kE>XAxiCm2rSKDCf6GeC}yAV=u~1Z=^>9erTWixAFhKGJ=`<+3N)=Y8@}W zF;P;|a&hIjTe1D3%8jq_>GwCDT%@1riv6?oC)UwI@smWOLu0U?`GXrUtoyN*R0S+R zXJs!-Jy^CqENTqrGLtTF{vmpUrCeB2Gj=g^v~o$rB|zR{j|9lBDSi(0L}7o7Owj}l zUa#X~d&kQTvT@)uu3fs&8^TOA+^0<Jji6%+5>R`okjg-em&zK~yWdh@O8ENB71eoK zYhFgS1YJBdg7?~F#exC@CAo-<^_iTH?auNy=M)=9HCz>A7KRB<z?8T^`y33PXF zr;Lw`Ebh}<&+-VJV6uaMFjku6^63<Y1pvmKI|*ftkFyG*=U>bVA^j)5n7STYev)X) z7245r^~~0LZ0h@!X^17*c_cTbn>SI+m_GIDm6}`iej}3Fh2!(NGLo8^c8Vosko&%# zKYqd*FZ|lX@0G*yC`3RBaAo=V_ihdZWnrYiy_k!U#38x4T(o<8LO(s*=pw%SQnK7* z79MVKSkZVb{y1BPZ{glXfi@|1!$ixvN9bc?B^aU=ZdfiFRB=z^s}NJLAUL$f6>KSg zlz<)$EpMWpQ*WrOz@5CsRT-Tfa4iN-9P9!7M6OJk#2$6niY!@Uky7XGWU-mit(Tt2 zVw)8diGQD_Z?>#?5VaLLXqkNv*wkst5AgjeS#)M%iyoNYdR$W-wC@Fn_;S}e8vAd5 zr~zZGfr)CM{ALSQxtA0Z26kD5z|0c!gefM$D=Y+@A?pDrnS15X#hiM)z$aND{?8A0 z5kmvb)-_QJ$?vR@m?fWs;pVZh#!5%dX-Vuj6=lWol}^zj>11#^`;0%30kRdTH-StZ zXiz73$mXl<Ke6Y^F6j+My?ImIWUmxx(j^{D&9nIy7V?4mja&$_&GQMY$!|<&C@fPN zqNQe~mt+V)tBw%>x>46aVEpAQE?mqPu~+46v&TG=mAIO6WI8}#T1rZryjUp$S9Q5G zL6GM^H`M8Ar8ggN@S-Y}7?4e%W&kFiAF@(b(Oe{PDOem}9NeH=F`$Af_?cJdd0h5a z{ucgYr_O|dL0?PD2>g_?r9`_uZFdF8rdA;fx)Y2<t$gl>+s;v>)g5<~8j!5+2Ys8K zuf;gP(1}ZNLm9gfb*%{O^pu{wgMp$M7Xhnu(@|7V)cqjswzHa&r`@@d#&d9CAB~+u zD!IcmE%pAUA~nA6f~TO`;oZSlz-iogt&I#I%lBuSIlQhFW!ii)DB4kaTIGi6v{_S+ zEg5L^<hXU8@I@wFhIqC^DW<J7b5MX%_`G^)!t-pm&&~Dx_(3+dm<wH%$*mr(VCBxH z&?O{4?mFz+>Y(QJLq@x>gSM1<)S!~zKj8U@0dI}v5PGo{tJg%gVG!80yc^ngv}Dn6 z)ZUgf`aO#Z7@n1=-H#5cbBYTO4_a#E8N`i{x>@^*2{wO$)E2wX>1*5}Fg?IvAbVt< za6?y}j9=^WpSl$-KnuG=5;{>NDb1j$sICBgWaKL7b^q|m4YJ+1QvRkdZOl!zP^@c% zq}B_U-pXl@y$1{0AB47pR%h~EbcYRtT=lT?%u?T`$4qds((N1Ws$2v<89g*oj0Aw` zGe*(Q;;{_Q!LEuj7+q*tMl2$k&AG8bXuoksc6V-)1@v(5O`^-lT5oa<8Abltja_Vo ztY%(_PL^$Ak5YWM!{VoFaZZPAjJ1mAzc7zfM_d6=R*S=FSv5W#p)EcF=*F$5by6DJ zyT;y!ElkMdMPC8m=0}J!N>t7wXqw5t9ZB^|Bq%_4KYKsSS?7_FC##Ix#iv!&OOiKX zwGgLqU8}99;{YJ~xsf3uA%QX>QOs-in;5m|)1|tT&ZO|qzCqlv$?V>{;<tR9BpFR` zvlVBfD`~4qFn>iy2;zw(D!+SmbRb}LxDKh%eU{>TGQaV;S>pUC!Nw#ShpZW+Y#~`I zacDk^<Gu}~f412knrHTAGq(;7+V~|8dNv!H6>HFjbBXyV3I88AerO6e(qLhYiH{g5 zFiepmjCU%=y<BdY@;^n$!CLhMyThUq{fK_(e!HnId4Bxne7~$(vV)0knzfyMtmOoS zL-eZO4_<;S>W!T^WXz87va^G0-VwS&CZaobqwZ11<bq3VlYhR>zV|Up_<Mgux3@w7 z>YJF?kxF`lBt5NhFvnnbtuJDM#C!=X^IPmGiYJ}IW;GkeZjzICr3}ukI{7Ts3g+E< z$OQbR86sMM*z9GC1kp|PGEQCr{gK<j?>U>yCe1t9=;I|#8=qrOPsO2he`v#8h=QTa zF`tk%LiV1I=j|*P+;Y&8-k6urOWqL!xhg?^H`yso|A1239h7ZbU@nn`*Dk~OoR)n` zi8{zW*f`*R)FW&6!|NHSHq|;vO(0CrGZhXN|2by2zKQ4Q4E{W^84^^RUA%5~7=0vm zJh9$)%e~`W>2$5%Yf|-$*iC643C{dSPnQ;4A{S1OlyzUbh}zcAisw-2==qhY%_Zi7 z`{Kf5j9Ij}3q2mt6pMQZS3ny9U7q!&1j$dg3MDAkrEq?CjMOVy$9tPdQ<}6iq>i@4 zP&{qj>SP1@JNFE0ow$K=^em*Vvu<9p<%*c|;Oe}nal}|zR_s{vX-9($&QQ{$5wh<) zmbR+;jen5&0{ncR&D_GV)lREpqC(6^*nF|{qSjz_ux>vpN(f^Yc;PVASuxsD;lkXn z?d;1q+(7DEgq&ji9^HQn0m^>u+<SqF{B)6;q;82tFF^4nC)cX{gh#4Ih!BTKlq={n z@#^$&4+k?ul|F80rVaYCsXg?*>><z}WUS$_jj(&t@@?l5Z0`v{i1s}<Yz<u?N@#7m zuY0v<2r6zYNj1`1BI@mF9F53LW|ye#-e;aOM{JC_ZDTeZ%IxD7KqHwHqZN{d-i>W} z#8lRbd4f5lH4fLY`89Vs-Rz|^?=h57v9|3hiJUi0Pch7<bWmz%2mJ12;S2>>nYq0@ zhmMbQgs?$*l42q^KL{}l&O&m=M~r&7Wlzl4n`0)}X<}&3EfRnA3yRmMxuqC<5So;O zar9YVLu);xnVT^9s7<?r=$$heI!%jF6D9<>XQvNL1MPg#o3Uw)Ye`th+92e#v-Ub= zz>=>)I(oM6uz^cWUT3Iuy3Rw#QCgara8?=0u^4PC7q}(VN;wpS`WBv6+gUodc&pAa zQcTP1;<V&^6-#8ZDgrvHd|Y5aApG^BZeP{wYf@M1GxsE`PGkS{`J1~Q*K7$qE>c^P z0++hO^#dIj-+}oCRN5SbMoK4p+^?mr%-GZLQ=qV;{CG3>={NEBZw0`S<d;FM7i3$l zO)Ij6eKN6{V^9|8cEr}B^v^6Qy1X4API72%T?hn1tatvvL|OFA$>Rl@$h+j4$OjwY zsv;cf0gf|4Hj?G%gN(*?=b7)<NcJ0o0}v%kl<=mSiqqOiLIps=h8jB&76{dD)LxDo zYJ{O{8h#~4^yH2|$pwfOnrQf!`4Xr^*soQU&dAdW4jSJ&2bVj3U8T5Jynm5{{*~tO zQc(~`jJ$ey?ZXgkX>JPIew^I^a)fOAQogo79EOaB13*k2{fZZ{kAMxIAdiLSv5T5K z=C0_?z)xS2POiKm0%Scvhk-85$WCLF#OZ%}J{A@{xkw4BaB@x6P}^jNhTzZ*KrZp< z4M~(0=tZD*rjt2qM;*szCZsKS8hD&BnX}mZK^la1y{K~|y;|GXnKGMr?A>dVnc3j7 ze?qIzc(8mC1sD7@v{fd!jaUdi>aMe#d1LUJg>D-5r~1pbIkZ?a<pjb%QL3-N4iX@l zr*iLaTm-VyPFI^*G(R{UNSX5^50t*h8yA<t!5ZsikUtw-`X!;8s&f`|c{@)nK>Q6t z^40l`C=q0gieY$E0+kzTd%bwm*hM)2@6Ky%ELWdIN1KE@T68x%*~)k4sgA%bYz$ii z#f@d4&XX3&LME9gQ61xHm%=Y~0ev-{ZDm<9qC5IgM(43o0S>cTu)3F#pzPi${t`9Z zIojwWeHW#FgK%fMng>MKt#0324}4HZ8}+UgH+^<z45oI#w}#e@A6rK1bl4cn0=99* zEh1`05)hB2&fbXW$#?;MS5{^zdM-iZr8kIDr=SYE_Fa#OTBl#DzsA>#DO~rDI#ZC} zGuKQOGQ+oi%IKt|hsPg|aLiRRF{gpfaxkN!t_-?(`@_z!%0EjLB53dZXgD^uZu})? z(|M*=0PV9I9jltgHcP{zQExG{c(xDs?fV!7Eplp@EKRF(it5w(Erf2W<i|J0M_NH7 z<oLTjtP236f#zVW;Q)wd*s1Cq=d=-U000w<AQgL<LR)!7OlAg&R)b6-&)`GPtA6io z#=TN!<OMwjq)x^G9v(X95*IqRGsoZwMV98Np6e+|f7@IPeP0SkK%HV_DFZe(!`z&U zH6uuA`6{eDCJ&lX4K~#Bx28@@`HN8HA|NqV_5lF(xook4OUBIywBVH0;4emRF4s;@ z<~D1uU-A>7tsa!(%I?|G#*u@u>gd5^(}uvI3zYv6XfdR;xCKa>{}~McxEh%e++Ia1 zwaNN8NufcN)(QN60|34j4~Mp~<;j8X?lA&^uX%xHZ2TdqMha8hul0`pKW%{yV0;_$ zn@<v0Ke|m}jRa%pK5oxz6kzB(`yZyzlD^gD-)d*ym~g)AbrXz3b(26P%9O&SQ<M|p zL)fE~{I#|=?7Om>ijY$<`;^^GC*^)zKrw6yqWFMw^d;~++EZX0Oi5I<aBbTR-;Mti c77i=(_&~u<$6Blqd;;+7shWK06Vo^U1qxwwG5`Po From 9fe3ef581ff2f5c2ffc83cdc2529efe6f79fc8d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ladislav=20Slez=C3=A1k?= <lslezak@suse.cz> Date: Thu, 4 May 2023 18:09:50 +0200 Subject: [PATCH 53/58] Add a new screenshot --- doc/images/screenshots/users-page.png | Bin 0 -> 30160 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 doc/images/screenshots/users-page.png diff --git a/doc/images/screenshots/users-page.png b/doc/images/screenshots/users-page.png new file mode 100644 index 0000000000000000000000000000000000000000..f23c6fb660d5bd8fc964fd08b59d0dd7d11c894c GIT binary patch literal 30160 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 literal 0 HcmV?d00001 From cce4243d7eabfa1650e1264575aaccd67ad2479f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ladislav=20Slez=C3=A1k?= <lslezak@suse.cz> Date: Fri, 5 May 2023 09:45:13 +0200 Subject: [PATCH 54/58] Update test --- playwright/tests/take_screenshots.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/playwright/tests/take_screenshots.spec.ts b/playwright/tests/take_screenshots.spec.ts index cd03ff9f1b..8182cf0b10 100644 --- a/playwright/tests/take_screenshots.spec.ts +++ b/playwright/tests/take_screenshots.spec.ts @@ -83,7 +83,7 @@ test.describe("The Installer", () => { await expect(page.getByRole("heading", { name: "Settings" })).toBeVisible(); // skip this in GitHub CI, there is no suitable disk for installation if (process.env.GITHUB_ACTIONS !== "true") { - await expect(page.getByText("Install using device")).toBeVisible({timeout: minute / 2}); + await expect(page.getByText("Installation device")).toBeVisible({timeout: minute / 2}); } await page.screenshot({ path: "screenshots/storage-page.png" }); }); From 780d11f5948be15c730cead0a0e88a31a93a0cb6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ladislav=20Slez=C3=A1k?= <lslezak@suse.cz> Date: Fri, 5 May 2023 09:45:26 +0200 Subject: [PATCH 55/58] Update storage screenshot --- doc/images/screenshots/storage-page.png | Bin 74359 -> 67727 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/doc/images/screenshots/storage-page.png b/doc/images/screenshots/storage-page.png index 68ebf972470e4ad3daf35a50d42360ddf74f3ffd..bf83dba72e51ef34c3a8f66ff3604187b2f66205 100644 GIT binary patch literal 67727 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 NnzHueBE{cd{|odU_M!j) literal 74359 zcmd42WmKC%7cLsSxRv5iiWiEz1qwxq6?cNWy9a5J;_lEE3KW;(65OrD-Ccrv$bo+6 zJHPIayVgDTtTR87ta;y=%zkFu?7b)AladTJ1{nqb0Kk@$l~M%&ke+@b174s$eQ7d? zJ$(WYTvcV>1IkA!_5gs_068fMb+4?$C13qX^JVy{)*8+@ZW7Ul@t5bXD)VLOBot@$ zKPA#Be>Y$AC_MIIWvMpkt{XoRxA-;3Ht$efSE8*;vK^#HeDaw&!uX3<rYweyTZq#R z2YEdNXc35jD%G>mk{gSLn+^4Y%(#zS^UUn{Qf|LW6^EaP|7!*fm%7B_QqQfN3I*`y zxp_z-1pa$SsRDTY++iZ~67a8M7XSZ(SLXE(5cM@s*->R;Ed8`!`$Ko5!Xkr;U5T>9 zRNC8G^|WtQ$nJ*@9M?(sVqxcRtSr3^DlOiIB%YP~{Q2-qsBRY#E`TA*>n5RIG~kTx zOAn(!z}e;&alSlq1UsbvMi}ezm9S9r-&)Jp2EM3VHnVuIAbhFaFrw7l+-Dg2-FLsD z0?6TKTBs;Xo;ucMNB6-its>WF!GI9<D(7exc=T^vv*}1zrVPH+DN8m{Vf?4oc&mO0 z-~U<woxeV2$q0zn(?^7jfg(QJzJ-5bRF12KN6LRR{j_p_a=f@z9TMnad_HSE6^*9G zdC$!?>y0|^j%j8F2F(jjmgQc@7J8i^A-QU`^f@;3CY}U+xbSzNEVMNgZkXUV;UPo| z!<(!THZZ_aPiHlV@&HT!y(`<~-8I>SXI|evpo4}=R5jVth5{g`QBY_sSZ222b%u_x zLdrF^*CJ&{w+im*w_N@up{C$pNgFF$RrV7$nkli{iK(<Fm8AwJv4tcLk83`+f*$B* zev?+xm*<6+GM@8-X#xf=X)xdVYOb=c%wX^M4qoTKTF}4O=~M2xxb1V99V&V0Uf|b{ zORP&pZ{L~sYxfQQrueGxjOe19LkeK^>u-Rz)+0;?t9jF{$^BSAb2=B40gjLe49fAm zozZyYtb&IWk~S7JT*0Ow-m%I#Cp~|vyWz{?O)l}Uhvv_mKnEN`nEt`L@|hkc8y>Lt z0ns*;$>9yY7M0(fXm9gmOWpq0&DEX|wVgzP!I}LU!07SKB2nm=fpHX2?W<ZM3ePIx z?Hh19Sx~GiY>R5?!MidOh%2r6>3DqdYIT=CgWh?<yHY;HL7nYsAZ6&-l5rIE73nGF ztE$I_AAsjgZqzTsxJ#aXn!8qWi+b1;5DLEnGK+Zs;Crz<-FW_?a6`SKQ?F+)LA7Lt z;jFHFJETlc2QqSY?ar(;qW+oOnp%3j<eW_7k=%M`%yDDcC;(nC%{@NaGwq^<s^lF) zkIe$dPK53nl6UiL;$OXC$#u}ab!?xjHI$bXU6M}Z0ej>Pg7dg8{K9+AEzgbaEwl)q z))jA?ub~IftvLhbF}!HFNC6P`DJLNsrp%OM1=vv4C=BT|HpjUH66&SH=ciE@8qWsM zDpcIACA(wKD$2BTm$Mbt9pslS&zSm>(Q-3JybiuPyQ83>T~!`5V^9d+aaHC54Q$^o zhaM|raYoyNT1V>!x8)7Zi}Q=gD4;Pk#_HF1$@gcbb_<!3DnEnDJ;OK~EV(<v<VmX3 zXm@Qi8Y_enyY7C!I}|ehaYP9tr6vsmC;s^&yiurNQtAG)?SUlM(k#KV;A`E|9oNHS zd(+tL7R@?1aiFf=Lv89o=H)YqC8bk{f#|eU<&-A}ON~QB2eiCQyJD!9t+BYu0rTtj zUp?&1cT69#ev24*9ui0&K5$sTyrTR;Ta~t+s0W^#pWH@$N-)m2{xW@IuhK*izdc<l zRjS#inlu+7L~EXD<)bvcv}MQ3RGAs+JB|6n>g~>l>+zfQgrYMkoXAekaf!g#`Iv)c z#XGx)G)&MQ(P^urLDsL71u8SmX@2~sZVE@;u%n&XvC<{0V&oMdwj+;p>W@uF#8}$x z;(?!GGfY#{afsG>%?@<|1JNhO!UR|X$fFC<VIMY!MP#51(A`B_Zk0@sTFtc`tg1x$ zfcZ;?$Qc-(74%Gk{{!A^g!{110XN3z6zFiaO&F<5n(%&I_)s^qbDuQ+X5lb+f+w~O zhF<M+1NK?q+P0X4Zh$VAgtpsqB@7H^#XmvtGMBu+^0mr$PG<}PjZQ32S~ZiQ`=)*; zqs^Mh;6PQ6HaJEkq;3kjoZJC>C_@av5Q7_~Yiz9)N7<g)iB&=8`SHLdfc)JOiUyWo z6?}JaS95apfo(}(?_4f|C&*};{%N1^8~1hn@lJ}db2%<!Ps_4d0Z<rcP@haxOTN9b zWy@&D%8~Ij;Rfl{O0m2Wwk11ij8DAs@um47X5{RZsk|!hs%w~5>)_=h?A~7Uhca|| zBtT932unD|z;Dl5*0!=dBA6EY?b=bxX;sY280cD}A2|_h|NS&nK;h8f@iJA|>(A6g z@f(M?MwWyS*H6Fs!-5MR4m7Sh0+op?d=A{B(?-@`WXfqf|I938G0IDpe6kpusBSgG zh-TF90IxLqxMlS@k`ZF1xX+S5uqrJm8p^>2e{WFc$z>5t9~$Y|+Gm&Lx@0mr7K0$a z5?l^my$I=$rqWR7EnN^MC%b^LZ@JYTu`1;<+f(=nG>nfng-;P>+1mu?oMG5q&N{ob zbu-@L*dX9NBekr53PNmS%Vx0v_X=HEmeS&DJ>+f2@z9of#FffGI8aHrZdy>db#g>4 zTUFI+ZUCcfziS-aIW*==?f6yaj6{jGL?|jrkp*gNIPn^qj91r`X0F;JdP~;#4DZPi zr}x3VDO@Us<%RGkCUQA%&?!J@WkY%vqU~$7f`liVq`9kPX0)2*DZ2|&<K}--z`wdJ zCe>|N`sMvoao==?Lx!sRdnj><SA&-V6<$)X7ktfd5HG)3Ss?DSkG6!I?ovyGO3>Cd z`eL2Ckqy|BK5TKuWCaD~q|7WKk}jg0#qjI@$wq@-T8q4BxFeBKQWqa#mB48e5tvQw z0RtC}J|Ovbz2C>?E5DEWqOQW-QxpM{i`9e0yvNq^yF*<EO)P#gkn2Ezy?XXo`Y*Se z4iPWznbl5@7r#8Ql-ZL#W#i^0ltv@=YjUrDxIJ54t-MoiTDV<@TDQufSlZ@f@caE; z{ub=#19dnn-ETCYWx!t<Yh4zK3D}VHD+aex(=If6Di7%b6uj+(jV|eyR>zV^^G>bD zn|n=9+$`oE{1FI+ueYbj0}r3fkL&$3dtM)GLN03Gq2@*5^>N|1D{it~VGlk+Xb}hy zdtX>}Hg(GylWF<rD@2gX(DXLqdEK?H26X_lBRC>-)PPCEJGc}E()aN31`#>=*j>+m z1UKJ<%r5=FV(_N4x0dX8%kWRFg2yFoqsEqs0H^ZcnooM(&}mPen%+B8<l>Jm+O4$F zkV6t>)e-e?s33+>aBiEgXAS%_x{NXi_4>T8tEtUzojakf?zeALg#9n;P3)MCl?3VL zwi+EscW!c~him?#_>3>LiOFXmmEuGA%wE)#-<dX;!J~@R>1wOKqHRoEo^-(j)68k* zSP}kW_LL{#D#r2@mIBE02X8}QVj<jIb09=}=nJz+*yTC9tlmg3=EG>vv#r<npD_nK zi~fVDq)mzXBSNu9g~gVZard;6ymfma+{*86L3_?E3it7mw9vLr)FmzW<F4*GIijZ& zp70bG%4pCBzqSpIT*h}MFoSbajft<Tt1)1B*ok8rUwdQM!&VuQJA$<QW`)_Y3{9zb zsY4FjLzFg+cOzKsRQqh0=CsuvE6sAsWn7<>oY@@a3qAX`66p>xU;Ufi5x+!gXL?i& z)g)Z$PWthzSzYW6QV{^-HpyT>F>Z}lhyMI%<W9XO?|Ee7PE6HZHgOs}StB>+tc>nw zwB>5UF(23rGmx9K`|**ec-?}#EgiI3_GH^Y1R$Ezz$0scObZkEJv&DaM{bWPEHmqS zQE?06eB(T;<?ZnY1qGhUv%RnrYm;v-Q|Tsy3*J+XWko6py~B-hB-gBYO}wJb%D3@j z;r@FD9{YQcComVy98#>sD;5CXrn2Wo9xQWK&%^&HP*A-8G<NJ}ZwW|@n6Si2tOtf9 zQ<s@8M1&$~DIO~Lghl|BOtvc@k=>p9{z${>_ir>!EVoYvDo>w>t_TZlteJe<*Jmz_ zrMB3K;Ym>CW@^~{>dd^boH@7}CCd=wAC3lV*_-}DB%{Xs;n_o65Yl|S!7JJMFq<`i z_RVVHK;&jhvp1G<q$uF=;=-+v@}F})8s*M9x2g30?2w_pLMWlPbY=TQZqlna3?&1Y zR})k`s2W2(W~wDk29{e=jPHH?`pho%4$kNoz!frd?0sKq^2En^8`xFmU{|v%aj5d` z7)wf@;=mkbZVX#3Qd+bn26Hu0xLf4fIZ>i5_(iD={LNikWx07s^0VW=89HwB4xn=n z`F662-XiST(d?Rv>F5+uZWicV<8l#cyw&-qRxKvQvZb?KtB$XD)_3s;bg%aUutncP zQlUxnZ;oQCDK_y(+EC6SsK496Vk2*2nft@0oW>)kY<*;|<z95aU*U})p@4qkJY z4a1KZ<L;Q6oZ{cXFf^Vxt><M}OxPF%Zu(dlIoV;bgz1dHKn4;WL86Cu<uCPHNXH>S zvFW@>`DxC8zds@~%VeL1NR|6y01m%c(#gpiZgyM|8z%3YXhOJZ12F%I)Z$ADEJG@A z%k-DHl5f?4@6d+!d^|zNc4x$pN`)_XzS|Bg4i~ij|M+=B4KuKn(~Hw-)`}q%WgRTz zDWZ=hpsD55lphDX=hlY(5vohJqEdeLs4|lgpPgEKd|{V^TDJe33H3!W0M9FuIt>5s z!ykZu2gvRiCcv}R!mpzJ-}_4cyREIQ9XJ&J7@Gk(-x-^E^nHBr4x9(u^7y@bChCpW z%DehSlk>}`PgN*%TF<czX1lSv+Fn+_JYRH%JBf*Cr}FyWQP#ztr}Tkef0+YNbXy-C z5`wfdmb>#jpzMUd^rqwo`#+FOD{%lekF_|+^ONciK@82X|4CURr*=KoQ&$;$g$Ypk zSReWy2;vVwYNm)bkKmzq_2UKGz^6GY>Vx0H{;iF_E))S^^fccqZLPaZGWAcA2*J;K zu)o&yfF{88VA^UT0h=x9x$9Xu600#**dsJdBL4$<v)8rcvft<#Rs2TpC6}Rh?(YB? zi2t5B1k@WIApRTHKb80Y^B(-K&HlUn(b8$C`nufh)qlu~KA$Ks{Btpd_&-Ah4uasv zhg+6(i7x|g^ohj(R{pDj3`>j0zxMy4D8hdu8u5HHO@P#OuMhM(Jv|f^rK?`%^w+*V ze@3RhNEjN<G+F(la)vhy_;?x%Zb=|bD=yLFZPjvh@#6HwT`p$>EG{i)Q_}b36H)DW znfF{$BC8YEY~}IVv3f9m3tMof@=xzyX-k3ls|*~8)o*Avg>^&9%r}BQIzaEKf8V<B zqBHBwdGuxn1su;D)+8A)ZdqaXh8%cXUozBXJDIN<P^kxG_9iIfsw}~jTCztDl8BCJ zw$2svskreLYclN1oW)=bVf4@ndUt5-;_^%?j#iDqNuNl98ejau1vRo;;378Ic%Xn? zVBd?;zZGkw)V4BvSwj`x;=1+8b*qhpe^T`QlZJUIgBHe;@rZp1BS^1{cPMAuj3(D| zyhR34$7rda8Fv^z%#>PR1e{~Y$?3`*3l7Pn$z(0Iyx67ej1w~ysMX!;Xz(XZOtJX1 z9f#DK!g+qBsnAkORCxNpGSpwh7k6-mUgEPEcXsM?maX_%lqhJTKAjaVfQx!ZAlzB6 zajix<RK?jy$j1;$!)MZbmf`aGju6;+{WWRbh8dXAaTe?PP1(~TnkVjJ{(z1OWsHCw zr|-+B6qpb`dqF%1TS>xD!P#&^Xh&_%SXInWxm=Q@Lyh*-c1qbic_g(&ZkRQc3cow{ zqz}E{512zr{?XW#J^&p1-DyTB<&X#ekn`(+zy7{G2)tyC47zGP?cC8)8$8H{XAd|Q zEGi1MhIJ<`B?;aTa?>LM!wxp7jPvwoG<=@?gE@yZ!0J>MMN?zbiJ?`|$aVA6kNbA< z7%fdMUhbNKOR`^V4CjfLbXt4?Lp54-=NlG;M@vG=<k>C$C$6KfXS%`w^_p^LgU;vM zISbfkS;tD^v9C0(boGv^PJ_|dK1sMX)G2?~%a*i6^lNbv(j5?OZABnVC$CQcVdqF} zq~B}5&Yn+R7T6)wOy0%=nY=>?^kk<N;ZIqg9SS?f`7}Fxg+0@1N9-D4fDY6RwvnVa zR(o@@A=D@{%QWMjob#k~>d2V@HwiU~IX0E7Xn`wesMBos{<-1>78VH_`hM|CL5mR? zT+vp_Ou~tMDcIKePyCoqtk6K;!=0aPUOV`{&Td7~!I{3n2Op23H;#&p1foc5d~WQ7 zZZ@c9>@`E@>&Ajke#SxO7eTr;6!$%TapO?AFhj`Qow+eR-Hw^5cXyl$($4XN?6(L> zq^s=6AT4C_b7m^;_wUBYzbkwphr3j&o?9x~2o9p}!vorLm9Y1_dL1WZ7yU@`WWW}p zWbYYQ)vs(`L77pZFV<x;Sj=w8Q{(jkIY?*(9It~1c3OtLVP5#n)!Pxd9jV`gP+eRx znQS*ch&wT<v@RZ`9=K8IRlD?y+IJ3gh0)+%Fn()AU@{*n=5bL3{5(|Dk<#xwmV#Nl z?BLtLC)|?ZmYvfOH%`V}euPEfT$QhI{pqf%`FUks>k0m$|8;<s36<Y580`a|Pcy>C zwXf{JU|wZspr^R@MvFp^nd8{&niH9Zk%g>OWmwDp&oydkr&dpFuNA^hLY(oTh2)25 zX!S!JI-qYK;|%g{a}tkyhmb*ua`3e~h=yJRRm2yWfM|ZzkBQxE=nAV^In$|GG>&GO zXChcl?y7GfKL9sCk`aGmDB;tH_tA2$PAr;gwJ{2_%=ddy8n4uycmuo6BM<P8PRZe= z)HX%a(@~Qsz!yC^uN{t@>nO{!qaYEkMM@v<iShxiwAzyT@`y#uEge@@dqZks0Z8d} zyw+<Ke}(*j>P!N^h;*{K>Q@!pf4w>*hm$CjG>{6q=pZ%WSh0`8)!qs$17o8`@`jw| zJR<daZPfeRDh-Y-zZ$<JX*91=l1RA45i2DNves*q_l;afh3?p;$>Yc^#C9A#iRmdl zq=1!X?Iw9U&fpXi>sB#e%Qcz;hQDENh>ZKy>dfaQe*Cn%Br<@Sip?mvLOE}X(9dsg zTNjR*msuj8XZ~*8sGXfDxX2KI-yQXW)?uHUm3i@FXNEIY`nvpFDvOtiAs6YE=0a<I z)M_80ws2>62ll~0(P)RY5y@%mu%o4;w#0g0PXl(Aq@4~9Gx^_s&(QBrQo}N`+DJ^G z9Wbe$x;#j9gPq-F>5T8zDdjMzPX%_w{W2}dynJqP7U@`Xg5Y@u^bW#@9)8cif|(Hj zV~mgf$|37%+-2#19C$Djox|xtj(R~e|1%*9n?*ap8qt$bQs#zm&{*}cF@yfg@o)<; z?g87HF893C-U~~T%>pzna#|8fUs9R^fdsEcRMf07yH=_+a0XR5+S9M>Z!os(d{8)C zV8yO@EiBrlD#0D!>i_gFL2j{ilmHTlSLS`4)+fzoGtvl}32k1m2m)#b&_fN;`lhmW z+qyRXlC>&;)*8i_#&8olP_nR7q8Ud*HD-DK<^(lrrQG80qIrH!-LeCIhv|0B{$3nI z%mGFg7HZTdy{e&=<leJvhTzt|iM<6LF4jGwfb`x37tbF^ikD-IU*&X8u(<!eBeIVa zsNh)kqYWZ)90~}RXUMDTVM!MVK`69o-&VVPi{k(qNeIE)B2*&=_(8(9s2zWnhOzvK zy_@j}THBbqtW(k^>it_!82)y66^bT5f*I+m{pgI7Q^4`Vam?&CROIGQ?ks+`J<+$P zII-^adv9sqKNpv$N>+(GsUV3B|D;vBKv#w+R9F6Affn*MzQ7rIQ*}qxdTPGhim5O8 z0je)V^~tFx1}O+O*5w4Wjg#-VwpR$dRzR6jm65+b+<$LVRRyK@(jA<eX>bk6j9PZ( z_1UE!{1N{s=HNHlBuLIAY}xti*+lIb>b)w&F5%2*|E0y`k71Y3Pw@&UoJv1^-G-YG z5u?}f_2dp0T}mqdatUuD@R*5tJ7BC=`5cpl<>tgmB5!L+Uw>9b-_JX}37N~*?Az@x zuPdrEmTL}Ai6@>#eR$tjvpP4&N<tW3|2_Cn1D%cnI!1d<G7NHAz|EW}8l`pD;#?h! z1BLMxnWZFD?_#G=^R8_Yy+53&(YdjDv5doT#t%`{_o45VWJ$YNroy0XA>pzh!_3W= zwkzUy*ul`rxe;Qvbdl9<3`?*<>Yy#Ca_eR4oR^rZFVU%PmB=kv=ptFiPQ!`!?nf>V z;c|TkYBTpXqd-yGsl4`W7ybO*(_s0yWQ~$1=jZvlj=*1P{<r;xmwZE*L3slTKDI2k z3`hYI@!euXk_y!9SqeRLjJ=84v+29PI6n&_H4t8^i<E5laOD4Tz)vPxrR*GLo(QL2 zi>*g`d92eL1)&bbq-?fRBaA?7AP{lkW7!^I;OnO>mLHf+mzg^<?uMkbfBl7zO!AEb zW>4^!r6WnQlVy7lq8H0yp_C<M*8t4HVW<Ww8Qq1N2>cEvP5GMSnXA&RoZUVAnw^8! zAZB%UPT|=25!`+vSek(!1PUqP2hw-w-+EqKo~hO72+@XGQENr@kcz<PZ7^)FB<Tf~ z9OksTV5g;gQ<x-dkv06BY8yI4<dR9mB$3={_cK_#gk71EBQuqWV@xS+S?z!0%XlpE zB1EF6M)axE?d@|x_I6NO{)rEVc??&stvvH#_`*GZRjp1KJq&}RO?Bn=h0(VM!NQ;) zd5ri#hA03rlVI9#z9&~H;<Ck+WY-x{DWkJ5r!<=5k3#KZ;k5pxxZ!y)ze>5IeQr&! zYu%Vm-aw#dg?Q)%Y5N4<U)O~kyMU85{PzzNH4)%;%))(DRn2mmdiR~^r^6e$L-?ye z2R61RN7(9j%dd|C{KQ%wN%|H5fLqfNCjYlhH_i`pDBFxpqlR9>sR`hsmri|SUE*uk zKka4%qHa#aw~rSj12lyi)%?%}8j>eXz8SpugJiJp=_HmouyU;)7{bpD3h4T4f+q)A z(27(2gi?@rxMX*HezdvvMb8|eG0f(SJ-?JIY|<ZhVjv;wl)`J7JLgupx#lOHkheO* zbnIX&DZ$}~&OavAt}(`L12oMH(nV}$&<@o>eVlkb>>U61yOx1TLrX!S;wC#vv<0Gg z$MSRE8D*ISq_4hzyrWd4T|icnn7BPGQ`sIn^`b*i26nij;U-p}KII}th`c#gDPKyc zLoLo+&^Jar3Bnz4IdYgP<gh*pDI9};o`1Mr$E0Ycc!e4^t1$g*Mj%B@cyQ5C5YMHL z)kMBlSa~>{k#81o(O2e#Ys#+~=YPT>ElFkzL7V?lb&-wyV_s))<Mw5UCQ(A8F^jFQ zJ$*e{mXGpAO?_`Ba3c@j4Sa{5bN|=lOR*Xh&qwF3zv1>X9?>Swif-8_1KIs;k*L7> zLSc=Soho9dv$M{cZ@~$U+;R&({Vmk`@3osQqUZg2^Ec?;Xi_;OzixNDp-2(i$8E<; zeeVYv{I)qx<FZtUKix&i__bpxwFqq(!FjEXCC$=(iPPTC{{a!=OO^}jJvvQojg123 z8wg;B5P$b?adH7rw7dv-9YupP2`m6w#AWGVcyXR5o3rkkI{2rPo(Wy|6sR<aMo*IZ z+cwkkwo-RykZ{;{Y9Doq(iYT=FXb*`AT2{G4a$e>*^aX=v0@o*bGE+s)%SV*lJF_S zc=t|jiXm!rSqi>GA#~Zl_EJpC>OI0!6v0FCH((LE)f2Ox@Ty`(J+h;ROH(IjcFAHD ztgM|eG)7cyey*AD4y@P4557&#F6m_E38rCdzb4HOuzlm|%kU-8(+c@J_WgPeGoPnC zha2NJnUVKM2($(1xu0;M!&L;XspzK8ILx))$5q4HW}VtokvfT8C){cMilE+E=8bSK z{>1k);y><q9HencNP_u4d2xibg0@w(v5k?CPLW-3k7>?_L<TwVguXc*_@R@xoRl8T z9w{+;x;74t!DQFapAvAGFG{gZoKAkMh;DCadi}Wh@it$n^*xCRFIy)&Q@6-M|DFlX z9tYsVe`^6=8QjeBrl&Uh8r;s;_Dui;8dm4p3c$%hN=GB4skz+F`%;|dfoieh!M4EW zpg{2_J8pXFd_|-u=KBdOkMgoTl7=RgJ5!bO3$MXv9P`P5-p%2zw2CYYCGD$_L}hSi z>6M1KtkF_h^3dkCis!PRw^#c0QsdiVU1nJ1-~`Rdk8<2VHAXftb*(fRAd8vDv!3&Y zV6nLzn5&j6j)*1hPV+@`Oi;H4>MxBC>?E(>H&I<te!X7Bm{wH<c%aQ7d10XA%WktL zcyP3_P^6b#t0ZX}esqNKQ;@Fh3hNrikV7A)a06?CSfCT&H)1^L8-OFR7KZ(A01tgh zL)ywUddtbz5w0qJ;V`cDvM_efx>}L8>#s)EcKPP72nfwrh+X$71nzD&HrGF1wAahc z=_~ASPi4)U2lx>4^5mbU=GSyQB#o#`%n7!i!5moGx7AUcGFco(QQJRT?(%3x{n}$w zkr?=6GFU=+is@3AxIiIxKqS}OMp1V-Y&4V_CTDnuML%kLV<i>xQK^C>w4uV%TY@2C zDvVR;hTzVM?#RVOc0^|^Vc}y3-uqpDEuYuR>`o==Gi{|WZAv~cD8Z~8Qk-1c8g%@l zfUjJO$rdU0A-z3caO~gZ7B-sB{LrUhZ;%!ymTzPk*}%664y*pFD$lX^Ic%#TC0P&b zao$!$j^tE@C9sUDPWB>GAa_<=UT`!y0q)N%;N?7Xd&!Cxwe>SeL$WZ#UqeU2TW#R| z(Ja8!-Jm4l)TF6fUo!iBW}{drzv0S2&)F@T2X(Cr89<;pjpff2QIZBCZ-<mM^VSrg zymsc#hhHA_ZiBvNqLrENK%13<EQ!N;q;%ax8%e)|)1&z~CYK|1kFt1gxNmETK5rk> zxUM*;)?CFkTk^(&arN}fziQ#*TaRM@K^%VymY|D?DU1x4);|QWvoqXGLS-nPq6kl& zseE`1p}&$2laLD>c|3_C$nZlQpBRZEaGj#=Ws{R~uJ|!cEIpKUz40f@tlk<1$qQ`U z9`fND<1ADMT-tffnPdl=&pv=DZ&tWbY-6=<R>!$opYyfp21)ZaU5CVW$1i$8-+qr1 zhTpNkqc(%FMbDJe#rtMK&E(z<+R%;j%$b3UDB~VsXw3zJR=ZR{P&7Ib_9GUy3yK;Q z=}JaBZQS^B(C16ULEJ<GETz_a?u+*mRr-8L2q|Nl4c;gb_a8Yk-VUrhvPJCu3}pG< zk)ruR-aLD|X%C6QKzR{(E}((k3*`=%AN+>wg!zK5)KNah;K1pC@O>ac6v}~|>_FbI z*^k2op6&8QNzzqHH=rrB#_#IFi~z!mCeqt^N$1cQ<zS1`hSl2VcUa?j)VsT<Y~{%Q zk&k_&@#j$Zg1&6nJ?s6N6&X4?#t6~PU>ED{y=I03$hBu-s0DoGFqS|56mUvBt7wVD z1=zfG2WFOAMT(bE>pA)J2tb4`8<YIiK|>Qo=q`#R_Lsg;0@)(sPuX1wKdm>lGAu`Q z+q|$zr`nHbJ{xvIkx4w;VxT8$i<I?5eete0yD(%1UxWhFO)B0wrqu6OhHln7b{k{q zuw_Cwa?TihW(}zkuaMF&iNnc{>s=JAyz#kh!422bGwy0n2Q*FhCj}np-JAO>J-sC( zQBC-$@RBFDkL9iR<xuZLaGkb0=a8vP{NG+FZygkKUXWjGFE=<4lOyAXQ;#%LRd!!E zQPu!MyKPt`gaKc8{DFSw<x7bqEi(D99WRg{gckKlt@=B1pH#N2L7c>KAN%Tg1VUj( zN7{3o=lo~l5S<DCHl8O_*k{r_S+{S;n737OQt&WgrSHdfbA}(!7T5Ag+N}_s=x?a> zkXW%l<Gkp$ukk+lwj&yZEYPs=YBzEsb-Qh#14(kfsYPERJ5-6$<D6!_ZJ2g#PK8dp zb%&HI0%eVDb@fXw@h8K<gjw0?rYnnM(DLivF3qn*c5)e^$_Z0%EWsv>(yQABb3aUH z-a1f^JnXtjmkKHD|Fzz3Va;lJqs_sI>{x#_ycj3hSuaSZKsw-ps}=S0XNv2wY9q%c zun_;U=OF)8spVnArNC4cJI=B~4i_2FF`T+Fxr&-N;clAnrrfRX*N>zGix3v1@3b=b zaXAXdZ66l-xk&jxGB<wyn(nQjNJW4D%6a94$O{*ot)b=8nR-Pd#qa4akTfp<**54D zvuXEr8~S^4(z$?eHfGLYEk)-bwlT}mweODxwipek<7JC}xR_~Vhg~*ZV=WK+`G_Fk z#DU|Rdzd+bWm@X0TfA_&dqdCsM!eS#9gl4`t@8986`L+xr+arEtfY|<$P)%c8=~$* z%ZpmC1#fRA#yCSh&m_q4b{Nj!)rkdA!ke1I`?2>!tq=hFuor3Y4BjVgvf0&z^29k^ zC4z!C6*`jq#KeE!*#ADL|D@y1{N*PRi9yQ?DuJ&k5n#)%$qeQ<1~0NtsmOCEd*Y~$ z8xWL^m$68>!>}=>r!FJiU(nrYrLeQ2fqryl=IrIGc_HS$OOtYQWEY`SSY20gvcjTn z6%8x83hYQtj~LR%r<AS?Yy8r2ekINTgz?!j-mQNY{^RUev;GGUaS{8Iy*GUBLkp=x zGfFoz$0Qe3hdAW5>kKhOEG6Iur|mN;=qI}#nxjQqT@+DlDE{Hr*TfKnu?1K}`WdR; z&di~*BLh%0dY7tPApI>9v+dnLl^Rsm<mnLM%DK9Es3hLcl)~m8k}fvB{=_s`$jaWC zWmS3M`)e_o9f6t6{F2fN8+r7nQr-YmkjaW}?_W+D<OWHd^a!QaH)*8D{@$kS4zXrE zzUbY0S4a)(OTxh@5so#l`%%sVyfR}gqzF8kS$eB6PB7>!%(QD@<=H-p>v=N__)9~S zjB3oi3w{w8O*hp-D9Y<2oR40@k~-!ng&AoQ1(*7}ca`n|I#+)tL+_b3-`o|{b3|X^ zvw8^y8+ju2x)LR+XK*}%U`dOp!)rD51)Pns{5hkmo9jv^?JBGWcR5>WhKQ+nui9X! zr?@xkM<xI?tp^{O%GFvgSNXs)7eVdOx%eRD-!)k^t+Z*k;+UgI<a^oI>D@9B6XA`0 zE>Ks#m3z&RT&ciFcFAMczOrnfWClqI&6_u=J1I|zp<GA;sX7mL?b=TvLlrqqXHMad zU-vBb9BmKy5&n}h;VBQ*Jj^!g!Y2JsDq^v;+zsH=<%U4;oTrE%D*Qi{M*07gGwXl% zL@N+nhWSMKQ_~95{Xd<O`(Npx|5tRZ`e--@FNVl4|7w~>`3H1n1Y+R9AKX0!YW}GE zT)(vY9R2ro!T*wt*7Ww}?g-^*x74E+cLjv*nDYYbo2%i8dT0;F`+afYvYkyrhOLPH z$x8do=is53{F*I@C4t|})R5ux9y=If00OHMSK?ro=$TOa<(%GiPhtX!OA1U=8A7K8 z4W>8{@V&u=Y#E?%wBxe}1jG9|%N%adu=Q|zzEj~&Q(k-6ZTz`{4-Mcz*|d7JAAY)n zF{qsTYX)uQD2Lha;#eWL;ys>`h<jjE1<NiK&kNuT%YW)ZXVGc_Ja{73MAV{xJ05=A zp}FwWpX#pz2g(DhL*x{|{ArX`FsI_Bb=KR3nZyL|z{MZb9Lv)P(Bo?^9+#IY0rm(S z7VK-MKueV?ZUJ}lv1Ux^4g2gpWna0p*3VJ7#orWh3m#~)7H1NN{o!h{)h8nn$O771 zscku%!**xNnnpZs?ae!_SkYu3)W_<gf#biB^79?c&b4F&FA0AiOojxmI`w|J?z*@6 zZShQWzxxLSaaRf<JiJ>pu>-T$e)At)N@#$*5lLwQ-EN43S7*Ih#Bz(CsCkzj!V_|j z91*KBh87xj0yzPqR@VjunJj@1Q+`6$JT=EfdP`}oF`NEqObA&Io#?w>DM=wKaR%6K zP4#R?)vYb34|W7?B6^UlxjniH!-4UY)}CT`%M3x5x=Pv=0imHh?RB9KOJdVrF5ROy z9_F%scT#it`Yh_d^x-xS<|j-66j&%TP0H6ZWi;8POC+b@P2ey?NAVeSbN*HR{N064 z^-Np;#t@`qmoGdFO*dy$3oN;Rm8bbjtBPJUl3=JL&^Z2Pj`a&Yuw)RDXsfqqql;QR zR(ZQ*>Fv;b>%Y<VCCYp5X}Z<$!c0^9p)aTEuf|3K;wP!u%wzw775x!GJkss;%`#Q3 z@-#%$<)!I10YUXhvVCFs8tcP?$LNDC;|Cq#xl>g-gqUsj8lb|P+R}HDp<x@=a_{&> zvmY|@!Gr4)*(o1eO*#Io8Q7(?3jy_^TVHxo9v&~5p|}So%nPKd2{UT_DhbOl#@i`? zJ$j^$)H38s<pgxkG+!BY^ID$cOj5|P^tOQLI`Mf``p`*~qAx<Q>T<BZ_nc03{fuZW zbn@4`Tk=FN2h$O<7_TOYW9HSuRx^syH$nmlMM?*<LMXkodwxD<80;6w8|6H8>S^^Z z7-UN7mfuR9AE$3oqTooUNbfdYIvhy29kL`f7OH7u3kay5t?1YZn(5ru;rte^Pwk1k zo~GZPN8uk;MSY4G|8Tm?zU-s>2b7{bf;c8AxHuE1e_&2FK*c~StJD8Lc7A3u#Zpj1 z7bON3jst!FH;i$3De!OX+50gZySb(r)fG>({_!Tw;Jbj=a5KdKd-R6;(L2ZHOVhy` z*uJ49#LW8+_rWb`vR20WYt<nu{nYBw_~zSZ1?WPkLj3L3uQ&W~tEUVe)WPu6(jlrQ zh4qdN6$u^%sg7`_^6?dq%TV>r?>aqYfsOa}!|SF45H_Gp7Te1@*y7)6gnGg0XxiuM zh4{=IU4ZVoI@u8SJ0kZms?R9*8|ly&>IgAd+07BL((aY>tE{)eu7aA_tFqT(De)Zv z@luxxZ}_Qi*s?d1MQxhlUSfCyaSS{6(7-}p#Q@8G_%SlFUNljWn1shRe^&LyE$;3# ziX$4+FH|Am$2&&w>)GN2M-lJ9DB6@L;l;V`Z>Imap7a;WDq_@!y>3xB<N3>+K)vxi zg)3J&H*w%1pvdI>422G?HSwY7>q9O3*?6gSRJLez73Q>aY2DdUh;tX~gqtQc{a%-w z{B>@O6n4#{eNZUH9)BeRuwOg7dwYJ)x40j4`^GdkcjU8RO?o9yV#0CAivtVq`%R(s zl;bjT%};fypXZd*hWLERBJRl)nEye|&-<j~PL8(u(;sVT)pLIyZt@?BdUZa~QMTLT zVFmz~7nOm27-|VMUK=l*-e&I+QqkQm8#ZJMf4u4-tcBfmF(?=pP2oCt<3`injG^@x z{V3N{o>`MZ;{{SfcE*{z=`5>mguhu)n)X=`PVXpX1@zNz9Ax~GUEp$C&qF3}T7{Vj z44nUE{{HoFv#`PUz7=_8O?IHe&c*gekWyX*<y4-=Rpv7rE|R<i@O-*4CmR6q86JDc z&|$u6QBcqtLhSR603VshjQB((C5lgxR@aP8F7ygN;I;^Vmq2M&6Zj+Hm{3*Y@X1+R z%B+=5h)-}?{=wFnBD1Ys#1q_u&c&syT@eV{9Ac$3KPKBGz2#zwfwgadMa4-!X}SfD ze9$auULL~4%rUh}T#9)%Nt+h=fN#t=F%7V4q=0}9EOhD*!{ffEb~ka4F@IX%vBKV7 zmo^C#HT|OAp<MIpOEuKEu^FAiMZ&htN0WQvlj9QIN59?R&JBr0-#z(shh7!tY}`62 zvM0cs5;lihH*-WVV<=Cr4*I(C7`V9q3PI{VE5e0A$Q2d?`#gML_oPnvug+hR#K9pl z+_%6!?%yQ=DB4f!>Rw)Sc`DU7pJ~E-mZCQ<?pAn}&(MYcKV1B1rba$|y18I$@Y%Ll zZ)cQZzVcR=__;P#s+{0|)pd*@(mhXPA~X5lYLNeyS^RIiIAT&i`t15dK3AK#Ow~3{ zqu@2_K6NQ;Xb{2Af$%Q)BNXm(yx3@KKxZwT$!CAl!yXXSVbne{5?yD%V0iH6sp4|+ zrGsEa-!~JqC~4Y4rR?>>+<?xhDI!Zt%dG6|3iqmfQXu?+8~%6=5%fH!AR;1K^jNTW z+n+>dWGu8b;Ca##<Qa&7#=UG|&lp;nn3EyUW5U(Z0_b49pZ?}{Cs)w-iuGxf8+6&A z<B1vj&BsXqqX{A`;pNVITKo$kjs!eLWXwe3?yn}mym5QNdhEB=!>KRG?vNv6e;Z~f z&Qb8=<)+rKvB#?&c-h<-F_Z%T2z{yMAd99Dboo4*EnIR2MzWnKz&={2FZ92^q7e4L z%KPKB#a$*Qz8L<RAz!1`>azNBVpqTey>W_IcfxNB-Df8=B{^>$?c>{0?vIvtCqW_? zYkyMgSIEc~^Dy9KihYb)s<T!-d2}!j4hi-`HIK`WjBnl$%OQxf4EpaF_m)4d=@KIW z>PHbiqg-~49qFd#f6@2F!<&p<JuWXx*?jVzZXfTVrza;3Cxjc+{G2=WL)IkhME)lv zumA|GddOvWi7`EOx%#V_?Upx8Xr!<P75{PnF>?9u)Ku~ldgrj~6;P0iL2fntL4f;j z=`qWw!3!#m@bTlBjkNH(o69|!Sp$Qjy&`wfCE^jKN-tF&$4yYhUPQRQHwHj=MCU9v zd-bhIs$F_co=$@igQT$jLGbT!`)jU)<e9Xo!ppb3PkWLj?1`f_gNa7;;b8g`)gy<f z-aAhgcyl(du+P~^1x1C_ejTMw7qqjl(&$=;97=z_>5m{XA(b~Xw>0F<V1pNe`i1az zmm+0nGGC?VyM`;td5HwporZvE0lWE3dI5%0ili;^NwZAn-pm3n#P<&W@rIjKk^Kh- zE@GY~2lrpJzzMh?0T2SX!zSzgCK0lGT_T&~=T7(mxS%vQH<u2E->+ne+HTY=xs9r7 zUr564zivDwr~IRdQ4M2>J<&P?uE{W|8z%?=`j*!p0{8PaiECL&APmnipkM&V1_RLH zeUDOqa|@l}6(PF<Mz62ObQF)3Q?6OsXqef^;2_*?%Uuqt3`opFZkzGxZ>x0=&3M?3 z)k7GrY3DrQ$%KmPaz-yqa%2yAMCr|j$wJSB<%Ii9Zh!fa=BE$)S+5@mad`}K-mV_d zFM=j|irz+}LwtfiPdRdVbc+k&yy%2Sq{=cE%X53e<VAQqNF-=cCu&!g8m?N&XTGz? z8|Mj2%57&xQ3}VEhoBPh?9r<#>w<5y>3uJsUU%Vmltd$Z?u=1SZ&r(<=%2luRz@tD zeK<3E*s(M&9bIn(;hOmrxC=cQy%(-xkFg`$(b*~X$_0rW_r?!lIKAMTE(PtjR08tm z^3qZ)T-;bp=teGX)i#JKihMcPoxNjjBv<vK#QCCC*VQ3=sVCSnwbOBhp&Y!>3+-|I zQT(g0ugBKw?#t1|gDIJg&fbHork<F$4^{5t3(JX}(`K;H+2TBF^<#1`i|3Ka=%LwH zGJ2O3gLCSwDk4jglZ#xru@Odiq}!tibKF@)>?a(zRxkzbikcQ`;eF0VO(|=2b@gns z2Ln~+PL*5O(MJtM&u`q8c2d+M2Cl?Sb%OF&AWK*H`0J)e8;-T}=|o2xAAWL(JneCP z*RBxLi`=RS*;zF>v!|Q~fwCwkR_^zZQ)=OehKquxdS3St?PC^Sn`4%ccVMKwdG_!^ z)@Z3ls8|%dC7CrQve$Ba$?ai^qnB+(Zvmz7a41>ivbzg8nj&-zFjTt)H72kVsbZU} zPuNQwK5(aeL>~J|)!IMkOT;{ehJP^~)O5z*!p`SDW|K6jqH35aHU7k4LRK8tV?K$K zKQdexPA3UN_Jo+i%O$BTI)(RMPUrtwbY|1-Q;Tht8pM^+;j-m;q|I54uE-Qb9e;q; z3|u@}4@V4uU6D|Nw9S;2*kWZY_W_7u^?*O3=0b4{1S3EPN}ZkdX1}!4?+G^c{JU2t zoL*~3n)p;a|IqyMjL%`cOQuQu4}uG2m(I<a(x{!G#IQ0;`r}S(*&WZYg}0rk6(6P1 zNO|3`epNL0f|}QNNujaUWQ%e-zxsroWkHF_ABu+ymC?bt1$a&iua{vb=A9H|`R4`% zv3)-$*tVfB&5q3a<U^c_i|()3^zT_?;YX~0BE=XT&-uit^m@q0*y%QQd?O<E-}g4T zPfiOD{*_%m9&Gp%VkJ-^KX6Cv{orUxTD|J}wc4Y4Bl*vT3vau!Z$#$R8&ZRf*(zsp zZ(BnKqnXHI?S%%H%L!#*tyQJfR1ELtMa*^(9PL5ByFiPYRzxI$GgfS%6P#VHciIPI z1z&OYiky+eik^|UYEu3vwgF;>N}p|aG);Zg6p_B6_B38*`A{my%Vqbw(f&J=Jyq<7 z4_w>voFaTI>5>{FJKk53TO#LHbZcuNBp16Pd_<ttuBX4sSQ(?W9A9WTm7S4>`U`o| zSW@|C4=D1uzx?Sx`2F4_jl!xttNsX>$n0sqlQ;q&xvI_Fy}iLgbwhT_zs?`PVtPnY zCcnxQN*L};@)*7uTIgO}NvyL6^wnKFXka<lP_-k?UiL{u-O6u_BYZ0^{`$5r=i<Vq zsV84Cldlfkw}v>Q?>gi054J9hAH?=~yP(_}n+6thAn#~r);I!z3FuAU!TF)=icH6f z1wo(&ATGCiW2~afdj0;T-Ewc+Oy>aDwr<4XjUtE}8_KdU3?_et4;#9(&YI7WUJIPL zSqFhsPAmlI!Fufp6+!z*bfbFcgv*vIjG0Wc4N=Sn!UX3&7^eZ)@@GhmpqvhN3sR8z z(MIGfl^NY*#Ac!*Rp_?hY#V#sVUBys2qwd+egFUyUX}QxbnMn?vDJ+Wuu^9B_x!-g z#|#BU=blM6Am{kr&}6t7jm<BsIc6K?S%|ki8<HMbA78%)ZE@1#?)$bqJv|AliFlR; z&nH=Mrsz&0UGrK&b;DpRj-_q9O+oO)F%r4NCIw};?~VrreiOE?&TL(=dZj?E=!7QY z)SCEIK9@BJ4^=DEnSPa8NQ(;;{8FhDvpO46goelwaE*OC6=<rLMN!P5nGQLM($Fw+ z>K>7Xv3Q!2HHuQ38>-`G0iMpVSf?f43BF0nYPjRplL{us9FB*SobgtDZmPIX?ygs7 z%+Gj}U#!FhWsEgDRwiWr#yPKf-PyCHN6b>Tn5*>0B&3!mUYTAAsScuY+PVN2DF8FR z>AY-#hZm*NWq@~?tNT2e(^P9gGItrEvh2Q=5TqMdT{3F;IpvS$nNrUb#q*uYgSMGl zuOr}19}x82a$Y2bVsEH{iBZhJ_SXsAFP!&ai1fA}K!Jc$ZrnU0Ank!1u&jLc1BNB5 zu(44~eO`aNv3oSDpQG`TGQ=4DKvr3K=Q5{R`y}8TwjJxo5e765+W7uOMDUI?$J@5~ zCyOG{ed-9!+<~BB#Qyx|)rT)1+#X_cCMoag7ME*iKcIkAPyF?KJnC)eoe$-d$KJ$H zl;rl#v0uC9?;v3vC`FP&3`ZwrdO0lI1VTa~a<{b3-8{wLrf;7-&JGA12JLm!-_5W+ zn|}<N{N4IH(kDj8vlfNo6bqfP;aB8+yN{~UrRj8(Qwt@+jBo_Tp2oe0$GngW^bY%U z%>dxEFPM{#6!6;Jw<`!T0^)w>aqYEE>$|!QaPaRW-FFUljLkx!u=XS;8Pl<;25K3X z@~v*$ur%zqj}MG-v;0O=!in(;4JGtg;NJ}J#NV=tNLj3TTP?ec^9NG1SmV^~Yb4N- z{hHsMaxMTu)3!}DX^nSEi01s(-re9!Yoo6h?K?r#kwxGKDF^X8n#xyCbpQ(6j;|o- zk=o|E@7G(xB1(=W+=i*OIo6gL-Y!`VEd9<%I`SQOSJrvcrDD~}S)TeS2Q~NC_E5>W z*DEDi)8SGpReesatjCu!Nzv6QS$7D9qXs8Wmklm;l#(@_-@@pr=C$f)wU0iYjA@KB zXQhpQd7$BqoL#2WPV`9{M~{!5C>E1k!(Cl!l+R<0G6#OL5E@*cQ;t)wsoZDH4j>(- zzw8vfV$MC`sJKQhGP#bS@R4p)QkDs<b2~alxNRT1pL>$p8X&v5QVhMGjEvBuGLfhZ zP+@HMWnC_1I}+MV<zDK>jh>^c&jLJM68dK>lV#H0Z`T(@gc$(G>ivVu&9#r<!<Wh! za}i+1)%xzkC3GUO27W23anZ9~b6R}F3exFDI)$%Z$~3KeUEvK`iVko?;UU*e?3RY3 z9LqYKf!i`Vzg0oosPANCG(`p`Y-63S3YSITd%1hFM(%~p3=}|_r2p0eoG%xXh&<g< z-We&(+4O`%O&_m{j*Naj>B@(PnlcGQV$YE&!-c68*L}1{pzk&HD~)vE<5OP35zQYW zVIy%9&N@iWzRVEHMrilujle-1(`M|rR8_+4UpH<=10DA%Ca{rxnm<vAA|HQ#XR^Gm z!L8ZHI_!h;RfjiPpR2=z6a;Y`%?oh#udicC1Nt2w@V8s2X13e~cl!Jx$M;!+Su=vy zf?eaeb<w4!1sS>uY?3EO`G*;f(N2&42?=Kzg*y9pYp>=Cp02NrF5+P?VopojX{~{> zqS(w4HmZ5X$3n(GE4CCJc_|L{ysy6Aak_CM(jptlst5_!^GjIBGfk=bnj!7@9<6?5 zq6EUbes~<CRbo9FvUFMslvgxp?y*1DqwHE}46=7xI#qi?6Y!Z1VfS4$|D7e@cX02= z%ZQ_4gW9i0rZ`mvOB!}8p))(2*HJP2nynxAIkbvv5=fF~RK6QHRl^Vt-DW>oo?aBh z^uFg3<Kebd<FlnYypz!2=O<=0w@?@t8*n;npHY(>-<-KQsfwZcG|6FYfkmFO6Gy%+ z;gKDqZh$r<=)Jm!)5k{kePplr{I%oa;)8aLt^56&oIQ^LecSc&sOLEZ?35%i5#T6% z+KqwzZLd-vo6M5>N2(i--?oZH^xQ~W3s)%^MghOsx&cf+M))Vkvx1AP1+{*F26ik# zR9oYZ3OP}t;)7`9O+|#mg}8C)=Yr-IEb0Lf=Hs;4{Ih-$@=^588L{sqoG9h80_Yqc zE};~HFu`rd$DWD;Xw5sHHG*wOFGryp5?KG`qW<UD3fx-D!OFjG#O=dhs&)MsqKv(g z(}CF#WZVTPqV^C|$yEnrM6l@~t?CBil9WfB!{8ilp8@_09q?UeVxb=G{<{>BXv-1% z**6Xr%e6~~P*hO?HS(HK^xMhOC*4IX7_#_wA7-1qr0?8j(K{*LY=+kE8OQICM|{3! zVbHv0Kfb@V<pAO4A5w6b4p=0pzUBDS9HOoJYrwc8(bvh>f^Z>0dez;LW{82k^%D2w zYLmn#S2#yWLwyop?}1Q}+h8PUnopLI2#}ACXMruAw!~wyF4-e_w`sj_CQhIcZ#5Ij z9$Ry*(>pK(QU+%xq9NTQSvgIMU-n?8DQu~y?K6p~eJSKag>h(AYC1nmVz<=$7EvP< zyop)JP2kQRHCX}bJ-%_LQf3$MCfszSgQasUNV=~XBaiC#_ih}4mWW^SQH_C*88;Nv zM0{uctM@+lX3kpEyo4&!HV=!9sCTZxZbxu$1!L0{TP$hx49C!5JQqkp82y<I19`t@ zbETz!l~Jf!Q;~)ZN(e_wrHa%Yv*piY82wx~qncw}=$o$q0rw9MgdMM^^333-bf+VZ zJI>~tA&*J0OX@nc-=Xq;-t%Hgux0T#;D88V>vbdSV&vl%2-tU(^^GMyRz~%<Lzipp zi7$S<v;H+Ki0oXp!fLklm)`<4I*QJD%4PkrCZQVIRCL~qRC=?O>*Q~O1o6G}v`af) zd9X-k2i^-G8H%`oUUyu>vLzMA@bqB`NZ#fTtY)m}!Wc{fSu%#@M=PkX*KfdymcqA? zJNhseu^m;Uo9=GzGspBpF?-vew-pNmB7_5ZO>hPmA0Bh)(e^pi&i?jnY02-HTt<K4 zyU=4qX}|-9Bdh*E8(7~)49u09qB56QQn2Fx6xu240T!Kma`E!;jQ<bz-a06*Z`&Hh z5+GQB;1(pfyORLH-QC@-aSQGe+zA@o-L-=UX{>Q~cl|o~opaB9_3nFrzOTNjM^#r* z+xJ{^ueIhFW6o8j-^HnHzr(jHE}F_UKw`c?g5Ri=o-wd)&!@L|-{U~ZgH_$OPpWB5 z3U-dn*o7aEqgpe0OAx!b>Tk@U<V_uFd^|YqcAHg0q%H$6vtW07kr6J|LG<j-*vN83 zMw?qC*2pHD2yly7>?-cMpdU~Zx_Ur&x9oOV{CxnuPXM}Up6@eG&WO?6B=s_X8&Y%} z-xWGKZ5CieO!f21hjT}r<Mw&h?Hw*ITUJ<hyM^>L8VW!~huyf8zPPpKaZ~Md_|W4N zfmBpK9xgYfQiqnzIq5l?F!J*38RYpr6xtn=OBudJGAg|x;ws^N4mU|vAJXKr6Dgwg zt$`;q;p)nYGahHgjCngxJ9|WT+WF}7d$Pd?4*j7+{_JcvA}R6?Ll!C|IVDYp@5A!1 zqbt97SzQ}F4d%vqu6R~_r?Qp?43Ts2#g!_N&J)Dh(In3!mit2y@mW&@jrbN)>tc=~ z>sv4O#5d~ERdlW>SzKL;S?&cJ!*9(jf9bu19Y@n=ysK_*+bG8yOP}LJ*GdkNs~Rxx zB_EyF4I3&s9{T9+?yjIdHw4LunF7K$7j(TG^S@lGCCoQx0gZRhwyIWgFJ7bSo5qrU zadd4eUUC*48i$3ajSnwLmER~*r-z!I|GYlcnVc{>@`FL~GhfyBsr0K;5cwoNol_$q zO4yam`pk*}+xl}FKoO6Y#&b3-HQSjewG;f!of~>*Vxi-TX2s$WY<(NEwXcqo@8O2J zj@gSCtKG9I!dd5G2PyslP5sPfsm*qOXu9?~YIK=g^K>}J5)>55_6*X>(_j9a3EzC6 zJb$mj04@rBFGw2F@Op<w&`8<X@fpbi!S~$9_caLK&&L#X9WD6%g#rRg*9+k*PB!^P z=MAaGOJg*RY!!60bm7tZm`(Pw$I`0LEs>p_?dg}6)fqR&y&+i}Bx*8CE8K5v2@+jJ z<i09Y=81MJ1(g|Z(=Kr<W5t@*xuI)Xlh<wfb}m<Ta7$Oy%=yl<`BM^Mj6>a!T3^QJ zW9X7QE)l%h!xK@zUofhg#b4BLfp5TF;5Ss%5_q!v+V*ka#-A*8n&@f+Aym68&ihJA z$Sa~QvoFNfUOMbIXQ|s#N2NsNcskvAnud2WQO1*`Y}qH3YeG4<Q%2QCX~3U|hIbSN zPHJu0vB^O$KB4*HBkmZ*Ete^Y)Wlk?SzS+URKSXrB&wkIZmnJ_6WNI$+-j!WHqx9} zLjo-?5pkh3%6`e}c85R{+}Wt2z5ZPJmZ;?Yd_Bj_$G2+Q1!J>)$~V>gK1Wz*BBXp( z_2A&3T7&-X!S#+J!s1v3e=(6(?PyW7J@zfL@<R`;*%3+4iV!{J&kREsVFc0>x$jU2 z&1%AC51gzqDd3Pd+%1>|(mUJcNA}$J=ye+OI?WF2CsHu@!*`D~>H#FJ0$th;RAp6F zyHkbI$at&;;zDPXqqsMnql0Mgc=XY@uZ{Oo_uHE((hw#(V`TsNE<Z0_L;Bm2($dzp z?@;hp%WkWR>gu6QO<a|gO(!_{!S96;#K{r;9T2c1gVWRTD|OpKA|sKWA8$`5V}rsw zr?1lG>lQ}0M^g4zyM#nSkb4&HfxOg^iw8BcNx*z03{iSl1{yAuPPv1irER_<aeL0U zD_%^uOU`Jp@TmP`W3m{Wq(SdDu;bxAbJG`ofb5Xh4~1+IMmP`rKIi`~^b^%9#27&i zq7ZBR-M;>r0vfU#@_+9)$SwXHN*V+UIsc#C@MMVo|LjH;#en*I1}R|}1=Qa>^~K zLj7}w!^i)P7lblnO|dwa9I{VyVaZ7>u<-89mzdWFx&7e4j%QVs7S6s7Q4`9<7(Bav z)5QH#dq6_$JNEL)1xdTv^h>b&=#re{CYm1Lba_kgcLgsw2v8xIaiPi16Gh|YcXv$Y zSyJTBK(~pQi7U32k2J(RHwPWgHx2;CI<flV1-tqP7FEu&lpDL>(K`7d1I0=EQ4-*C ziRePz%E`eDX%m9aK^@cWkG#2UBD%zgv7MtV_xVoZEJv9m&K`rwh|e8}L<Hk^KPr82 zX0o>Wd12Id4EGPY7fZ;DkCkfSN2yLXF`o|Q?Z5MvR~bJz()tR-q-hSG;5<z_e=?9k zKu2@mT$=lVK>D!M;X~A&1(ewTO7|rJxOq4;SF`k$R+{>`vnufY9GkMDW&g&s)ps+v z@UDd!bM$3P+D^vZcceZ<VqUXk$mZ?gkE+O>>7A%Mz)_j~ds_NzA0i-HPga;YC;H@^ zA>;!>aDvZm7{r)Lp*MI;QHwbaqjGR^c_jTj%a1`hYHX~A&sH3=&Y~v0)($XHZ=_eU z{bkV8ZV_^rkC2%rD&<?oTA7s4!GU<ZMGbR3xu<kvU_l&UICwU$G`QbzCle;z<m#7^ zV8#|w4v_I+kNE8KVX**UlG1>TQX-f=IGSd77ZmzK7Lq<Xkc~`0V?IL2z$Rn?cvJ4e zw>d}|Z`mcU<H#PJ#+HvO$P&@bBfVh6e3Q$-Aaj5Cn_(hvCRJo=h8o7akYg3Gdgep5 zsRv<SALOpt;=_|_jyj{}n^W8{*NSj*G317Bq#&Zk9+`7^CN^iY4}!)G$T@Y1QEUvh zO_?L)+bNTGLDqPJ&ZGog)pL^?qQm)yqf4s~2RTW7kT>-%fs$6=#-By!-Zf=)Wi(k5 zWgs^0!);=X+^}Z&v~Uwht=*x#TVr7#e?0prdkky)_tx$(RP!nNX+1URMMYcj%%tHA zEqL^)(=#EeCdpd1j}N`>N}bh4^LX-WThxzT%-+KF^xTUoAp*1ETKv6zzbPxoHtQDz zrzOOca1q<;G;T~j2$JS6+K7+?U71WX1*6s<s0SHj$Zw6{ZJEo-9cFo_+~`GbEk5*- z=t?}4IH8_ugxQ&W=%X5pKa*1&sSd7usLD8YvQhpZNT-c*YfW#G)~V{HeGCuO%Ml;t z`<nVrPmGV}-SHy7%;)Q&<l}?<Sn~C2Z(82x(li#63Zr2a@GYyuxKd*#^Nj--;FMW1 zWURQs=~R`JP{Us80lp845>BxcnuWB3qb2{Mcs^og?!YJa4~#upMJB4>SR&JmHy4y< zF-!q!7{t!3)V3#m?6q}jEOvRx>ooTotvok6yLmnqQ*aE#>yt7b961L&e15uD;)TbL zg8Vv>6a5xN?TN;#cDkVD1;N=spQ?R6hrE5h_p-h4jW37y5VR29^~6x~`>_Uxoeyzg zArHM&gh&}0`PmR)4z#SgFu=Eg;7t>Hl(K;**tp-k6xn%tacB6+s|EYG>?@SUu#-me zhq1HpKhvR!fbu-lQ<pS3Tk+x?VDhxuPdZZa0nQ_v=9R{1Df{U?QPO_fBEl7{26M-1 z{Mv`G=gT+O4@(9djuXK#I8B5q&cvuH<T$5FIcnO8wcZss{6cCd9xu7A<%vq>ZYANH zS61uj;D>Adjw&<$i_}H$S+%)up!i`Sj}%%~x<Y&_P_ecV=od(Q#<XyTi)VuN_2-*| zYo;pdLi&S@iN@0K%>YnlAa-G*(rz6N^{eDWnZWkVgr8nXz@`$Y7`srVrDCNR)w|*# zN$L7kFi$TP{pXXPS9`{dUj?TSak-hvT%!zcMrALtUha*Knv||UUUtM(8BUCDO~dYL z@eGb?vK@G8JbpLnu|Vb8Qe-+vtHJt9u2Zabi7S@AqLi-USNjQ75y}eHP<pA7vbPPq zj2f~_W(p|;iAp=lR+pIZR${L3;OzsN2I~<<z}gX(Her{S3`)4Xx;f;KWM!-CC<Cm< z^Dtg}MX9ujp8|AbNsm!3sx!GW3r!@-C(dpqb+V?qFA`(nVX6e3M@36av$U_FgQcmf zM2fprw1uUyKZBJ6R7bsT?m9i^AO&GM8?VKW@c?V{c&dI0kKF+J;+YV<9$K5o4qJ7m zpRirgsv<ilwN1;7RS!bo`YJsI_}RTAul9;#S+L;Fvl_UwCs!}^LwWXtC{1DIPm!)@ zl^3KbP;o=!gt>FJI(dG!s#mFJHOgypshFIn-f@{yW8;S$CG#rRYJ2Y*wR<6x$MG4u z!cLyM_KVms6_(dk8gQpKr>?9wx0>yX6rgJrP^T;C^GOLs)3KoN<ZuzZQd}iUdy56H z>N6d5;if7Rq{m?MkgZChUbY*f+5?trpr0Q8+whVTrE`(Ct2rb3MC$MnRafp{fM+HP z3B<!@!8gi<GuJ?dNZxwS@^`)i2HK53)Q+{W7ch*EAFT%aViz8#iFY575+65jPJ3{y zlV1CJthNGF8V-LsUhk``w+i0WJHAZpTZuG&@iA5`?R+BVFrU)6p2?}YDi_kLxeeV8 zc-Z*m2<ZHgv8iYNs3Cvb5z`6Vu{hXx+8wv0dw^7@bZ~&zuzp@M3;|afsunq4yCWpF zyLvnQT$NoX32KIYmNYmV$J!3MSpsQGkBgpdU3{LZfBK9BsGc<{OO<Ff>@FB!-SBy3 zF#1&pK2NQ{>zAv(Y^s&QqDYna`4#N&=cywJ)r|3FoTuV{f2!oQR+QqHDb4H3+P`yW z3ToaQBJwBL__CBRB<gPUc~jiR<bAU9r$o*GQl`)i_-upd@tY(6x>p<QSdQ;r^>8xx zCd9$>#R-T`(3wl&65g3Vs4lpD$0Y3ZNMVgrYPO)&KL^fD0D@XMK$_#<mdN;v87Li7 zkF&c@nRYO%hNzklB80~C=U*LX2OrjvxgYmZKR8$qI`S!t@0SQm$*vu-rT^|pw_BW= z{>}k6K#}m2OSdNVo5=-kCP~>7kv@d5R(74<gBOmAs@s%Z+U$+tFD45=9D{C)@A@*7 zoZTR7aTo5+q)&}yp<f?|DiIBboO!_th$-m(FHe5y>L_7pvi<k`weny=^{wOG=2sUC zlD#4wC|T~IiTyJoDEEUfqWmAtGdE{8=Z0Y4INmWdE~s1d{uq*Pmyj`Ot}b&)zKA6g zYhoVE*_|=}^%C)!H*}OKBl+Uv%YKm$C}W<g7*j>Fdp(<<Sxf!1nP9(QM=F9FlsZfi z1Lb60+~`i5R+ha;roXi+u3VCWEokj}%>w4Fi&Bai`-22{-lU2pAMtJ__`G$p(Pu#@ zQ=y4AVx(LEeA+tC$W_M81uxQ#S#J4|?GaLE=F83Dp-E`%_NhK%X-ODjXS1Qe#?!nE zKkgc|)*FbAyJqgk)J486H=~b+QlpPv+u2x*tXU=3s5RsmYIPuciq<9eTD*wX8%+la zpH2B+R^x7nY0@xO9BBH{*WQK>W+>=#cgpFK-1061J?l;zCfjV0b4fp!k<YxrWezw; z^WX0R^n1cIv%T#4rjDm5OwRY!!cUliTkrd0&`5uEWZdW%y8+Rlrsslj$J2VoV#DB< zz#r5<4_`p^Qk_GM5|8{;)ia3>M>(n*nM;UMF}aZ&!SCIeJ>ITiJGjCe`6XI+a`fKc zN=gk|XWN$?hH4jJF%qzFXz+9y6Dz0ZFjX5lUG^#YeZwb5el8IQCb6fN+|NqMzVH@h z+N9Z7x{%iQNCBeJcY9XuRt^SHe#bwg$5+_fnh$RQkZ0tKk0T?)ZTIpRR$&F6jJ=4c z90uQ^7_i{6_~^?$OnI2F<Jb>gb}H~b5a{?o8hHuk-2_36PFdauuw-XR5q84Jdv9Id zl4)h}jXT@&afY>l_>-d%26Jy=8D}9^H9PUlEdNv6N!2-A$D6CcvSVScI<$Jj7L~}M z0knx(AD<lf?B{3|{aWGA@N~<&F$89nF3c)rM8;Sg(I-KuRsxe*Ke82cmEYVo=of=H zO-5M-wHmTeyl_~ol!b(^hYC8GvvN;vP^eITn;CdbyOo!{9Gd)8IXrf%EBy=V`YyWy zh>v2-pEa!x7K4^Gq=V7D;hX&8yQ6K|W`SvymSOH@96#jSM-zF#j$(mTH$1KsuGJm9 zn_JQ9)6I8wF#^Yppa#ecXo3{1AT!3noK@FrV14_%K3gQ@spMus^*A4W;&tUj;3i?r z*JA&&ROQhIP;bQPmT%Y27CMw&<+|B{aK{_1Tr9_<1`7#zI_Jo{`=4ma5$baGw2?Hj zQstvZY*6Jct?i^g_gc5#KD#znMw1s##@_XV3MiwJDL#jhkV-<?v8;YsX@+=dXa?Z8 zsu85RUUF`xG)$tgzUpemv(ISIYV&ppJPt>N<}JVhC+i!HMq(|rYT(eLWHt!L<-&Y& zz(8e(HcrXm!&y><!3v=g^3=tdeFNQaY+F3W1KS;)FOA14L82~~%#Hhdv@Y6X^b2vl zURw5<(oJk9Lm1jTc9q=vY{pjIt{4k3bO~mI)rKCZEr!G<bNdpY7B_7>w|3u+fNdEp zkb@7#+KOry0MgLw{J&tET4}Ay>nU_ntV>GVs0<XS%xO4ORW^I>P9mEI4onI*v~%xK z*u=)?{O5jVf5;{MXvX7ZoNQb&N@coFt8^3U#Jo<qQVueG1xzfIkQjhh?YCs98;`Bp z?b@`gqIC9mW6Z%6(?hWGZrrYu2s(aTCn1fxOe%znefm#1`39FR?Tg2^&$)f<t(eP% zUX|){4|yJ2g4NkX1j(3dW}n<laS4vLT^31%&b!A{zK(I^0)%dIPsVR*2$pX>8=}2R z=1gykPP26I<|8-Zvq|YSaeBY6;<6lR4lFf*5g$f8ub|Q$^j5fX>P8YY5_!`D30xZ8 zIac;^7J^>z=s;ABY;GXh##o;Iba>Adc;PU<KxF9FfdHdoOb6D$Xz?-|Dv%oaK&TV9 zE4l+Bm7+PNGmsehh6-PH_uVf+l>kH`vfg%@7w$-7N+`O*7EQvJ#u5{IqvBwNcCP3n z)<==lA`FOk7SFu<Vz_z!wEMCXsv=u_Tm4wj!c!TMk7u)_Kh+c7$@Qg=JrN(d@dw8& zt<x=z!X!IbYrN)(3@qYp2k95)(9ChvGuv#W;U6p=I$giL%TJ4NR$cB?o7DUdZftcJ z8<F5)l4JAQ+L=CuVHFZXrFIz2rY0qiJ$*%Acp11Z<3wxVX4g_7_ZK3qs<Ixn*$_Zl zxbPI*EB-<9+oxq2F(O;;cbeNms=0kxP1tD1y$W)3non+^pc4~?kNG#-M+m~R+ydX{ zCr{;QGOc8WEPi}>DD`W;CFk8S`-Tq`JGXVWig}0_TT!D(lTNQ>RM65g-i<~@;*K5F z<%R`DzLx_>OHrIoV8t`UtIv;$4Rc3ivzKmMyR7@>R?)^k%>M;-Q~GK~vY1Ynx=3_N z^YX?eEDO_eQ-O%IJ~`3%s$-AS|AtvzWiKi1E-YwoisKcn9vRc6E`M>Wpb9Lya*a<5 zg?-EE8Wq8;Zw!^C63f@N_QQP;6oT<p8gLBs!A+@&TfW!*)Tm41RcXvn+&mim`<DaE zl8q_J<Km)@T=6qHzDT<^w6@kYu%?_o2CuE8t<I+$_?Ugnr{HrAL#fPzMd{fR?Nxkh zdYgCZ1$e4f@@CI5!d%;msVYXo$4NP4B5sK?__|0*HeOC{*>r3ly6++wI*|sA@?T^` zU?F>`sWsct^*d5uWD4kJP{`PB#~6!B7u&>(Sw>622i#-z9Noz(&xD3RBn?iHNO^bM zO|=gB^V`O<_%HHyM%tgzC6)XBgy#<&MCbWhFSPCh5LFBuN}4oDO^2r0IBzY};w%8w zC#EUKh04tlx373GKJifa2~s_npkHk~`xlwd?F*{!lT@JZq~}K0vRJcVx}#*t2lzdN zWAmKnj<l&wa4IWDMEB5n!A$?z?01LEHcM%~#RYm)?vYx{SY~5ualiJ(5RP<?DqFI8 zdXy}^$cZ5F)S9;U3Cdlrk#GAMDQjMIi}=$-doKVcXb6Vh(;)UHT%|eLz)=t6Iq`h3 zL#DrmZpIHKUkW*bF9TogF^t7;%a=~zC@yc_5*2k^;&PBibr;y;K6tSG-ru?T=IWE! znH@IF?t<BHx3?Rwhtua}IRwY9e+^nQ8#X?fVfLnEBAd44JgvyG>w4IeU6LXCH*C6T zn?R?2MPna-p#SSH0vbkU*cI|=zv?@8^CM&RjPBYzAJU{;45h;k?Yo9U51t|_H`Lat zk>^U3s-Y1{BIVvZ@%-Q8Qby8a7FXnaLS;zNz5$Yh$b+&m=9=T0GB1}NObl;Fh{3Mc zk`mkHt^y<si2K#Pt3b~46?&9~5lEXPnJPnLyQyb-)gRj_7$fdiVPl*xQmJ5P7Syg$ z=sz2>bW%-AaB1{dvNOGy367KWvw2$)wl>_~#h~@nMS8aJ-sp&9%3VzR5_(w@D<{*N z^o(N!2#d2b&3X6*Ra4pupzluomVIY@S08Ls<<c`!c-YDZ26}d$E_A|fQL<Rg(oV_a z|40EhtJ~!s5#I`Q@c7Oc(vBD}v{S<ri?Mu?7P$y95eA>Y+O6Ao+2X<8GMOssVW~4> z#kUN<%vKM0+`U){4E1$8)x`Bty`w%ROT!jk(mYX=D(OTOeu9ePq4yj~no;G&tJ<e7 z_n;89Gv14lmmr#+>j@)?;>h`$(6rfpV%xX?^h}d8XLeI1t!Y~!TPV)BhCr)J*IRf{ z@QM!}L^YDr+gti!ZCPT#bd>FaqfBXogWI(kG_D*43}yYK1V0Fl>A&=E*z?CPBB=BH zT@3!xDv|eY-(uNTNcr!6bfStt5YXo1E!6+QKUZKV{*Qr2iRkRv{;dW0KMTzLFLVFT zaPx^tw3(DVj-u7U;pe}t(Z4K=;m@ar1?jWCJZ|yV$5O^SR#t7I|3#?X0=*u2{rM!X z_xWotk(e{NoVM|iukK06$chuVSI~9|7(t`!>NqvmkivKXs+$2W&5O@yJ9sEtzJ`s@ zUE`lmc2z0RE<4k95dVR`5&fg%jjI?<PF64~32dE*Kii!UPmwF%Q3E)k(+TK0cD&I; z*r15vK-Uf{KKXb;N`33oYQLilo^W~YasECLmplekw+nSr!7SA)zWNfgaqXg@8lkMI zqS^a<`PjSl0H+J%p%~a8e5vZYP|WqqK2?UluX&<(OI@g<4?o#7YQh+9G>J%;OL|q( zbmuT>u>_HJueAENkR%#IpQXvah>suwtTd~x_Izt&aTIkd`&qk*R)6GA0%gb{v16lz zF}gN(r;Mv5V&P5Mqh6ob8ki*0r`P=qjQLcU?;(^m7Bi!OY^@&eIR5VTAwIP=yuU}) zq$wRc2RCNh1UjUaw$fq=(fwoQoh3_<r>jHRh87m^Vuk9_ga@nW6mRcD+~Uq;<Ly@6 z-fgf3KD+yi5r-FM#&<%tf&0fHLA%`gBGkyiEPuuIe)$Z!pO43j*nbVP;hMk)g<Hb8 z$aKx;fr-w8&jm&0b`?HEp|>Re6*hO$paupON|{t!t<valNK4!4_m-$&nim^_kBz`- z$Ire<UfS_Q1<wl8_ygxpDzF+pj`u|g9;@nxR`pJu<p?4)Yj6pb(DmtJh#}h^a}8Vb z;oht_W;G_$+65skobpYHW;F(uv@IMJDV%X$dp?|~zYSW<th?0x1u$!p<7!;cN01wi zM<yOpXSm#|x5R)Ve?1~h@RL1sFBTKm<B*LpPg<4z?itTxUsIs*eDVu6N#{M}*O(dx z4W(*QsW&{RM)f+*SlP^xgO<VKT^-TVCS9G|L)VSA3eC{qfpSCsYc*COCuePWpC4^0 za}V8|%U+noLUp_WV~VR?#%|i3(pYdrE9Z%?W#dpN;NzoiKvBZ$EbUE)j8s{I9~akL zvb)S%PP^f}JoEK`o{ley0;-vfhLVu!vG^bXZ!{Bc@Jv&ZeldPvo%IqRtsP@;p5Mbc zwjd5{TqP;InZ|^SBx`j57C1|&a@-rUIBlHX^rn~Y2o_muulJ7`u-=WQQ1@W9_}PW_ z`h~ljk4{y;x4m!9NiSX<{QZvo5<c}Eu|+|!6Bd|1(^r|tp{_c4Wc$;{Aiv|0ow`_| z^*WqBzMsH|b(L^|mdRXwK;rPLSHQ4P1=Y$J1k%}YZZ2Am_{ST>KZig;>#-bqR1FRX zWW7;gUo28h!TUwe7I!a)|D|>NNP{aQ7utYZ%YdK=*4?vJ>A~^sh@c&<WMB%xhdHRZ zcRa3(QcrhatOocR#EKP}E#mQwv>zrm90onZ3soaOYLb@%N_Vy~^>yT*s*A965Ys!p zHH2_u6WV8OS)92{L#cH~toNxjBD-g5ZUX4<0YqPLps8>IJl#Y8J|JY+qJW0#PWoNE zvSs3e-V!Rf^SQ?{#!oZ21if3z(U%snIj)N*aVnC5Y6OeQ`4{(sW}2B*r>#)?PO_sD zux_lcQ!o338y0&_Dhm(aipOhGP#IHnFST*=W*Lv<AoTJ)?=agmEHz7}f08{0^sR(G zC))aQVQ)*SJ8->!Le4Dw#LO4x%U_o6>JuK!OvL5dWWP{DdPkR#=r(YnJ&U>3!$M(T z@_B1k<3~+#p(XC#6cBA#567D6d%XX>_uVXIa?pK4)U!RivL|h9G~MQ;Ep7A5Eyh2+ zYHY|7bZ*3vtR>;knt%lO2lLs4J+$W7k1xU3nL>ELK_!2r8Sg_oKlj<2VTEUV)bsWF z+0%Z=rSeiQqoMFaVl1^9V=db89x&I)3<O4M63jM$ZH-#pGV3K5hpQ$*NfB(HRJ1$7 zWfw)AB0?^U-`z?35-$Lyf7;b6WhM;X%sb5T|1%Wa#mDnO&4;vX5i@<fwLsl(sR-%A zm8Q1!od?0nbD?YkL+14`Ba-^sl!y4|TmtM1uL4zNG;8D1q;Xi;I6^OP%61w0Ov`^e z_$=#=wOPuMr+zpvd{vOXnN1n0w81)k0h9|`+0`jwJ?f>0GFlS1QYFkg3}=Py-4_%+ zf3uC3?Xp)Gxc9p?G$Q|N8oSgb=<bZL^L$4^Q@(Si<&2;k6@)J*tICdxpKE-|BQrQd z=6lv|5=_3cA<Zkjo!P3RUPosYe?_yq-o}+vUkDwv2$PTy6M{I;HzCJ2qyA}2L`W<? zM-i7FiL8AK4~?={87wkF!h-Ha3FS8DIjVI=jeDYCro<oCy<0Ljq?|L#UZH&VM4sn0 zv`|xr^d70PNZ{8k8H&#m1vDKl%=Vb?iT*ORVI<@&uuyQLTJlyJ(@9QrSmy7339L9> zoF0`JgR9KJ+3>%k%*KkY`_b&Q+OY$F`1e7Q57x@G$6|t#G4Fm$=w2RjmPsT15=<1| z+5I%b?kaGajLVtRG&@k=&hT?m=6s(F`6j_{7j<O^^Gf9%UAme@`G5mi&Qij*3fTBv znC9q)zxIcmzx46l7fBeX+;j5#2Ac~%wwyZ_-@8@|2iK`J4tKa3#6zAt;9S_PWy4eT ze)}`f=0=c>sG|#B54PLGpAH)BK%<5+V}es2*aQl10N;VU>rWi7`gFiq4sIN$YUfk7 zWI~r5v;9$&zoxOwqu*8;=1Y2;VUoPiwtL`yFWUEwlSZ&!88$m5(|%lHXE@fbJwV&4 znqCO~@=q^GlHrx8R0?59o8%ivBS#Y&G@w_1nP8AK`|in|$8ZmJD5HM<J-y(4Ga4os zru6rVds5iK^KZ+no9w=EyI_GH7msc(tfF+SW<adY95Ix(Yw?jp69z6t?4thjHD$@1 zKrI~~ywhN}CQXyIXLEA;)V+$vRIDW>U6u~K<`b$;omi2j{Or4~{^$A|m6VA7u*_L9 z#yb}RxCgx1r~DegMlOBw$>PoXfBMIh^)nHFodEG`0D@3hYwRke^Xa3BpPtP5fR+pj ze!DMkz<GR~=676?IO)@ejkzxGWY7?jy>b7)##)CvxNbxDkhnWxgm9)Sz{kIv^O%O- zfBZMc|MZ`U@Bcg#`}<}=|DO^6XCf@v@ht$-))GVaAdB-!AdB-eag1*L4Zwt`jK*MO z7{a24px^BYvyL~6mbz0B$5P!YOu9{mgMW-mKuR1<6nSIIq8bmcT<l0<=c6kdkB}uR zTUt={*PLIW;S~MxQo9%mD4`%o8AptSd3Q5}bEc!UI-do?r8t>i4gAT+^xZBabme3M zG}#P=T%Epyi-jg=sq!m8s=K+I6$+2}im20B>VNq8PSnjx!+D;R-3zU2b3c1wU<jM< z&oUojo_%SY?~1dvVRerPSBC3wEw8yh-u-EC$|dj|^wM*bN#_MC5S}Wbi#!b~+UJ5< zC_va)!;!DlhQ7FdD&jP{(w?E$VKAdve_*X_-}k)Ju;|Jg3mc+9*|ak(%9{!sC<alC zAz=8`m25j3V`1TdkJJTO3W^4wKC}G2k6IibRFk$TaT*mzKjpYR&%HhH4{eN8d$Djg zLhaoPAzt79-{^4JGM##~$+X-7a{hFhsvYHJ1eKj?0|+`0y=|k9@pWy+!-faeU@)#B zh9*`F{b#IjMt#gtEouk}Xsd?Wk)UO6ct`{P>zWBzC?`&FkF|_9s&g@}C%|J862YT$ zvxO%<#iZm{21R`USLdxi{9$iJ_8Z8Qh(WBM>e@j8YB9DEln%Dg$*6NQq&|lHG*sod zu7jA|Jn2DbrLExuvp__?+iLou+2YOFT}7?*zPtkN`Uhs1936;QfYIpKqCUAH^Qc17 zg39U~0Zk;MJ|b$`tb265K@qNUtm_0-9<ZVmGO;M<XgmjQau+B3#<U&xti<03v`V}G zlEFvxN8mtF^NB0)jdR`^UYY4#rm6|&8;^?2BXt~Bh>FeF26wR#kI?#Ee|1bZkEMxu zg%O1J?^Ev@DMQ+nyw58U%4qb$6(rTdCLCzgAJY<V9O~5PV8}=7Bc})-EvjYOsdFr` z?Yc^PA8cp(7HFjf<d2Qkv>eUE4*_a0e7l^D*IgJ9{1ZO(k16H>8GUXmTCbLyI<)ua zr8u^Jys=UTs3U<&b&+5|abX%9RGYcHR|_<Nm)b8CF-U5dO?WfgZwnLe6BnOE3)16# zzR(oT+zS<#p)9<;j{aKma1lF`DQOH+_UklaI`QGyT-Rv0w~<Eq4`Gb`_&}%Xpi}xV zGxddgC(vrV&$D5DqzDmb=FmA1)Gu(;y6P*_B6MEKTlL>r>-LAL6?HaZkE7PsjLb22 z85Buh^{fVJ2x+Z4xjO!HM5@HT7Uw6avetmoV|+TMVPsbwAn`%V)|X#npj{ta8c=Ce zbL)7)cpa=s1GtV_JiF7_7BVheRJYCWGx%C?q3<ZFdqOsQsH+(2OHlHJQ&1*vZJRT( z!(SyPCQx>xLR0usqxvS+OYPVa^*q4yIots2a^+27rE7;z<Vu+8$>v~bxb=!Ed<>q7 zqHRVg13V}*6gKI#u5G3mgk4CFGxLqZbDKD)G6Em+RzgZ;t9KGUiq?w5-eMiu{A$tO z1Gx~^{2;Pn_;uZY!|6-uB4Dfe;i`;|=+->&O9wNJhQPJtw5w&8eo5Uv?a}%hs|nM> z#O=gIW^#>STb{ge?L?*jP|ix`1X@PKEzLALRiNx$U@7SY$<fywq(5DQ8HBqeW`-<b zP;0$PBB@go)sHnY-*6iHbP6hKYQ{!^1<<rVyC6SQPr7FhlY&2te=insaE8$lt20r1 zAMylK3cb2FQ0_qw$ArR-7D;NCn6xn^SJ|%o--t`jpnnsWdpmiYTiXgx5C(4219t65 zC}Y4ldW)FBva1?X!%B+#W`dSp?gY+KeC@6Kz$jHCOKg-kSoLJ;S@VM+cTT_m_*_ek z20NSugd2r|6=QyZW`1sp(U6C78+=_to4&`O#rM*%*M&~IfB$%8M79L2gP7WwDmo#| zdRb;L>ar1v{r$eir!8?O&WACmAJ?8fq_T+#D$u;ncG=qq80x}0xDt3*oDhCC;}4Na z|BHrn{@m@Ngd<BeqYKMO9!7F1E^CR%F?JYZFcbo!IP48Sb36WdruSd0=AMlR@U1&$ zn}y&H{oS~GQ|VDhdCq~Oe{;e&^%H+|dXCeO5uW&Gla@y3cGAv7&hsWk>;dJu{_B0t zauvS~9JGmoj@6rqO86NskJe3_*RBDR{wp6y|GpbPS?>>u+V%ON0bQBo?CyuU5MpFi z`E5TF>#ZBBUf!h4Sd*I7#T?7F$%u(`KGF{qwY5R`hdFQSpv%*Q#KbuzJ6)kAGB6M$ z?hOCbrz@+%dQ-ykid@i<qXaSEk>LIKcgvN%S|{pgLRqoOw0Tt)cWAw=3g?8Hc?*Y- z9l=oF-}AEN73y4Siqm^?d%3fi%XkNfAP&{f2;tM>bw2i}1BgSZH@k)rGNiK=@L-%Z zs+Bul0EVYHq$&~$oB9FN=m(NvvPTQjfmN*<+>xF_P_5jG`|`#v6@7{oOUvClPcA@) z*!_k}$!F*t^zoddYn~gVwcZPdWl$n^AMfOozw{j2jE)*f&U?cwX8zX1Kc@O(%Z+w1 zI5rl`(WZtuY3IwcAGs3`$zpP~(U9}cNLorVwArJ7``_5DwuUO}bE2(i@ZNxTv*z4^ zXe%bZ{ndnx@M~1k0VX)D%?b+)Bs3a>eSbFZJ!o!gK2r9T&@E%Uhgr7i@QN{6uan^? z)pe`a=Kenv6ocen3W{1=$ZOw>Z9kfwHTKbvx72WU)<N4w*G}K=XiVWRZ{_axKPG$l zpmX(k#KGGERA)546;Z4?F>qX;z#$)e`MwZo`v;*3BcKxT_ss1YOsmK0GFzIck9tf? zhWuO9RRo^a<+J~;&OmjggRks+&x!|(q!v(@+b{8+ngg=Y()4jY{Xj84X2;OIm~U;1 zv!e4)`b)&H2Q*}Eu;K`l_aQpKMg<c-wt`gcWQEvg6dfm{N@_C?#QsAR)!E`HBZl7Y zu3m{Gf2o;9<WB1u%vaTbDi@1D+jclIdNh?SzU1*9N47Y7*nhv2$&Wj~DmX0*{Equ; zMPKIE(f$}tB%i)`VBOnNCcSPG+Tz}sHjUP4({kB=voN?aP-;@nO$i>3?BSEXV<Qye zed}{g&faGbbwR!CiPPgvDqi0t47hI<@X6$8Nj}&W|6CC8A*ZBQnIO<Nl}@9K+qbkm zqt@oxvXo6EA8)!L2D|21odclulMVdPjP=I=%Se)|ma#)xUr)vba3QN)g_F10%f>$F z{FxJT$(}%6`5*c{<8)<mgzhKgL7z3BzN}!a31y(YuE{=}2$&R6#yc%UT>ALJMQ4p` zXY63EnQUo*0qpsjmy48~o#`QR`r}v-h8BV9KF#5GP{NZ7>WE%CFfpfflgEM`{RcTS zd&MDZcE6=2e+tHc{@c(xvqNi&LAwo+Lr$e+!Cuw`EOQ*8K_Erl4dr8q;iZQ?8@-ng zao=3}j~u=)LOJ7+#*0jz+e+wZC6@GMkHili`LCb{wJxSyQj1ZG_L$aM(cP6mKzn#b z3AwX1Mn38z`s+r9&Ga>Y@`($PHRfM(A^n9l((L%h;JfU;Ud`{F+5J5X$M3Q@iJH(@ z&wOZ$wz1N6ZC8n>|6was6K5^YP_o9nXr|9$HZXTDQ|7Sq`1V7K!SBh4k%6~L>ZTmm zyZkWD9pM^RlzhIEX7NSOR`=wDuCFA?Ha-bkhrJLz{?&Cg2g-7Pp-xYd|L=wNlw_N> zOVDqCwdd^apSYk|^B?Gu6iy|+g*p2u$J`l`X;T&0a;bSK5w<k=n<yvF6BaS%&lH+4 z1sNK{4Q{05R`QiMb4%l2uxE4Df5XvF{&z}`H^e1r0P3JWq5PA=$?+jXznn*vsH9P$ z#;D&p3Mx}CsjBL-d+E4c8S#4p`a!ZrgqD_;8~}h0hU+E9CR$&JE9UXtQn$2!3Tp1t zq{p_hvTAlc#%E+?ygFUYfvha3-y|a<0t*?hpZ_G^l$4bjcl$%TdwOmh9eGP1w&>b@ zeS#QDRQ`|Jx;Y;-H>a$oHt2J^420CMSj`9E<Kr`DjLm>REH04T+^qgp34x}O=zb>1 z179Wb!~Va7K>|wc<fyU1JgIh)kPNdlX*@2)$ca(*7!KFEyM6Y0W1R20=Gt7&;n>HA zpPDGXV{e;0vA#Qgc+#F3JWP{2HdIt%@1qh!zcYC|FlO7Sd)&gOL61E=JdDfl?ocH+ zeA;oVchdFh`{xJAtce{kYWZW5j%a;|kL;mHLir*j@la4u)|`*N-_W1$F@LP(X(mmJ zv-Y3|YdR3fahFNRN0>`n>Q}5rJ8KpkRSLgCs4L&*OoU>vihNZw1~X+)7<_xnHY}rz z2fcPDe8LOI%Z;DVx_*~D<z9@%<#mL9tg%^gO;w*oQQ}5#FcLC8`%f_4+H6<R#nx<B zQ^v{0MlZyO6TwJ0c9H@@_1XVeEtwzA8;m#Py=@wUCP(Qf&I*nHxMk=I7d%+K;i|Hr zA!k{Lwc4rG#h0|L(i~;>^owtwRNRd$dqK4Sn7Xz8J?#2Xsvt}gSn-A7zrwBjue!QK z*Vos`#Qe<}pT-D1yP|5O1Nbt*U4DL@k0*SiX3n8#vp4P8os+tMo7)~Tivw4%#*QZ7 z8)5D?Wj-|-Q;^d{z0th4c{2SVxPER!1Iq{r1S|=^Jy63?0pqLN;tq;b8L_KPP5HlJ z*1HFZvu%UCO9{RW6Jn2QiZ|9|9!uvTWb(!`m_v=?*3PnQPeO#%iWUiwaACIREMIO8 zzLSaS5kygs+2Ae{X0~(Eo7{#23B^{@gIt|He0#8Pq48p#X<%A$xiWPrxmTInieraR zwLCYZpK&f1nrCK-a}X8x)XW^pi>Qcfiny(bl!;OLsB}io(j*JEl8vEdJfzRl9#}() z);VW|m5Qt;JCs*2CVmtm=QLz(h|w*KG+5{})Q<g;9FLEf9O?XOhUk?CLs;xgu?Oak z=w|;%`LFKk$|h63c8+*3&BW}=5JZxV3JH_aqs{je8b|}*T;}0b#*#UhVbI*G5;2<7 zj2LSE@!Aj;Z!3PJ+KB2*a3CXpOmwj}!@NdsvZf)$5tpzoA|A~-oE)+-gq@~g+J=w> zL07@&1)2YnR9j#O{ygBtwkAfz+=;KfH8mR#r&J&T2B1k%3z)p}vp^QF<4M$N3&UDd z!QZ5Wzy&IgH)%4IZ&C1P9H|;yeM$VRqA16^HWy_3EUm1q`7&2GJs%|8&i_o_JBmbO zv2qv`2h62Co2F`#tbU0g%~T##VwbA6VZ)V@qSsi-4SoUa)hQo5nFeYR;gnO_vHcuD zk)pYzX}AxU;2?htP?9RS^pjI3s6{y-h*Y}XCMn@b7%VM*@gC4y`lH^gvASGH#veCl zQg}(oR`(iaxVcs@U29gkE-B1+fTRFkiIqE%+@^Z2ugx7e1uCVyHmU{-5SDRzmp}rL zng3Z$ygmLvVO7C9WAJLjQ^+}rpk}BY^YaqBa0Y~Q&~0xFifd_`S$JEha;}E;bXI4T zv!FJYJ<vmY=VqR$B<170rnxP&ui0=Ytqo>^h@08+$UwdFmDGUy+;q$z>Sd9(pc%jT zQZcb;)fZ<s8tv)IpRja;rPW;H5Z$uXYOMiQ`*EV}`u~%b7bj5(8(?v*f%O#8Gus)W z)nKn#@NUIb3gkAkG6B*5&K`646`1jt+n=<}9xMJwM(tYpdH{)U<AIf6?3?I<8-9ZF zUSIR7%Zs^#X(sCo@K)D`f%EDdiFS#YoMxF|1BBGuWZ|H=*9FWPMYiqPn;(t%{FOx; ztyI~T<dtdA{|Ol(5wI-~#Pvsq+Er$hH&_}!(Pd8uwozc}e^Zuvw8&_rDy2%KQZ{F! z3SYYDrY$KM-s-d+(dv0^mGb(|kDxf4?@Tvk1UFjj8l<ids0Vl|OmH3i8g%C{6t0h$ z6)*G9jww6se9DUOwMgT=$g)kde_@u7CT!Bf(yQ@d^yQEfcskrXuv+*6aTp5@!=;It z3E~*_!^<v3^(sBp-IWM+v{$DNt!L5t^t0a**KE(u2eAWO*j<p}dQuyb(-F#ww#96{ zZ)C=xE3@-06RZ#z@~!p5iZAb5pLq*@`RzE{cjiOWq|H3gjQN_ZbO<88&>(;NE2CL{ z?0}TFnV|#kxrU`2ErIG0KQdukzPih4%WN=%Z4p-WN2&A@<n0uhgb6t^I9Pm}dA@;h zi6E)bnG9@!G&!UB?;l-QzcBhI@S%stvR#Q11FHbqw8;sNL+l}S8+b&W_y+!5HIX}* z4*=9Oeb)vvtd>Wl^UTK7EqF+7!xFK~&cL4U*2x5L3tMg}l{W?}5lRhNJeG~!5U-{P z22~vfLIQbD5&3L|#YE0QW_y{atI+<%G4m|=5z@A9Xqmd~1{}tgaMebZa9lWZ8NR;V zaVa9_u=3SnyS8OOKh8)X{*b`pxkztO6%tD(TVMtWI$ASqW&e22VE07buW~r%?^&w; zbM^P47Eu2eji;+1eaWMS4q`Mia0C&T5K`$~EhGlCaN^Pu^qvJnN?Lo_))I$~nLA_# zWhDIA;A-r3V&z%<tH-LxtKZHVZ@;dC6Anxhrged5nAjUG`g$^a7g{xBG3(z!VX~hn zKo-_B{ZdI)S{2bhQIc)?DHtg15Ll|miIgOprQ?dgj?3>_2!=B86F)V-r*aJP0+5(4 zfB&}@U{HJf`q@}abi3F{hPMjHlTAJsJF)BYoPOV4b$Hn_xHp0{{L=QF>&2U?<ks!c z9mT)vv8`+K^||YHZo6IYkmuzs-wK|b+K_g;>IL=$1AgfKiKtnKn$y_?ac<IT5*G&V z&+n^5uoeXu&l3_dt+BK61T16ESf92*?G3%6=QqMJj}f*{d+Z6mH`u19>X#eOz=hi9 zZomL!^~5QCeAwUcB)oz<I9@Ml^4jf04!$+JIpLk=^q6F)`##(8#$gmWTA}d0o^}O6 zp}{WfAD0=aDv_?YDs@C(3g7To1TCY7!msHFY!`m|0JgT|fv?0Q#+@A_2wv2-yk8QL z{>oVwtCM|Xhemdi2fxQtS(#?=-hJ^Ko16}gK<21+|4~d&1+mT!!V-=@sX)rs%Mp8J zE<!IalbblTVH2O_%P8#f^|*zQY#?TDAHBK^DjL#&&x|Be&!|L{k*Xp`OcdwJ^R#Y3 zdz{QxiFczqXZ(GIRq2U@fxgLVBR4Zt^V+h$G6a@fLThAwj9-Q`G7=qC-YOKos>mg- z_dW?qs7i=eoMjnX=EQa000B9Ju8wdVI#MS}ffqak$=#cDweFOHaDy-YSev_Xk7g)o zL!d1_Bh4BRfwsvaqh4Ee#xcQ89EkXf)dO#1!B@95xGMo{CS@pfiqDiXzfbmgW(lq| z?+FOI{5Wo}FC;lFet%@tYj^iadYbUMACD7mET8WUyd*a1x$^p^NTGGQHFWz56Avu0 zc_!A3eF-MQBKflCr{KXGUrZ@{mg_=%i{-o<^oR>+jh|o?W`2*G_N(9((O_d`KRhV; z37*+}Z4<JFV@m{ve}*k&K^Mff1s#q4h`Rw%z3Uqsx3(%nkECushSV|i^3}S^$fm8C zgf<)W#u|blaDBQ&9Xz=1+~$BW#9u)yC@n0#A@Uh****UdpA@@S2HVV}W0-CEs_#T{ zE$c@rINjphfk%_uIX(H3RCHxQ#0lfQlm>!I1NS*+Nqf4s940P?Fs?zik?HWb5^DQq z0srVQxKAb(bCdf%gEiu{F1<S_YwlVsJ0$Q;JKq6KsUOdT7reKBRP%HIk0;NgpXKqh zrLYD)U9GX^IUChYKm&iPA(!H*9R<zDpc!_$3EN*(W!uI}Y;ND3N`mcc<F2+izh__l ze(JF!)@@5(#zd?2wGlEtce$-E>8f$<8ZK;G349B<WdZ$yCKz2<d6aa66jQWYJ)5=` z@DmCLeKO_0D_%XXs(MY`nw!2)SuJ9-@+1?<sVulS*{qk-8>6tM4wm*4-_9aAU)Tb6 zNDl44u0^Y(o!L`q_e}pfkGyro{6X**;8%J30kYJugkK4g0*OpmduWc}Ir+&uq}|GD z2j7SO*az2J5-6lJYjsRFvd{&2n@_I_C^4AV+%al#Z7fOWc=z0`?r6RSqdHT8!}FcD z%wxn*Xei>t)Pfsu@&XOOz%Xf<k5kCpXv)`;#cj1kJ*gJ?>ne1WgP!SNhJw-PLRWp% z0ibrrNb><TQ^g)`fk&|Q?5QbcAcjO!qf)B6|1uZtJRmQ9BM{)@IbiwcJ|d_Ik46nm zjPjU`I7rog*2MeE4JlC7ap@S+k+xjHozP>I#&2wd+`r+`sGaKC)+O;^9?~p%g`J7g zt$#L%N-9wP%6|*|xI-a!OWJE4935e_N78g5e+y*hCk<JjHaA-SZ5ek4h>%JX--`F< zROj@7AM(tcA*TOvFawhI{8>?+JNpJMh?$HYL0LfonDx|sH(-KVM%lF}ywkfE^S1r4 z4^q*&9)_~F%L8Y}Um;`#)qw0b+*q;Tz;<bI4=6{&b6TXlnD*CVTwp~cD?A$UD5SVy z8`I5%y#ijVKfH)n?Apda<e#u%#G_-@xh831JQbJ21G>yFef%r|XxWYsl`ffA@;#GF zTT%x9&5v-3mslyM2!gak7ZOVRg|-c<C-AcT`N)#~c^OAI@@b~=lR9}cvA^0&e*O1Z zzjPPf^T@EUtCVc0E5(OQ57E`l4%x-q!LEs)!AE`|;gc1ZcTFa7fI*QpB6LyNbf7dC z8xwD>;NSotGg-dc5Ix4{TuljbPB!Qz!~EsV+5_f#KF3gd_C~Mk!V{j)nv{tq2z;Ju z{h}<9qusBpIqmMI0dv@NN+w`R@F>9dOY2@ht%V=%?N{bcJP9be1K@!NMFBelW=U)P zHJcMPH6K4N6dW03BJ6?8`t5=%)7R8I&73y$#$AJ~&hK?_n0QTbb55*P9!5?LXDyw_ zS_0AZIB@B}xQoq{d83Xi(e62vU%uaFL|3QLl<8>_a?d1S*gR#JTPO9zPsaOXman~B z`#laFb7+k<#W-7TTG}(+1$0Zj#Ta)Q^m|KpaacS>=#WuK55SiiZ084Wzz#%A#+Tz2 z?6BW<G+4PzG3IKz$igx#NS`tyC5e1JD(Z4T3eBHFRc&z$s)Gwi>?xcn{DXNeD?Zpw z7<hZYm00T;gf>*wTor|CXj@SWsmQJ^Sp%ViLPDG_wubEdQp;+u$Y0LaK|TlFHv>5O z1~nS3nRD6#nJ?sCeyu4&UNUPe=dnV|{RLm3@>4y8j(mmU)AFHCC?<I`D_Y#XU&m6e z$-SJvC=z-*!xF@xQn3^Ab`4DXoWwpogiGPe`-ME7ym_*6-uTz}*@WkVZ%IW)#E(Uv z(U8%7l(N7wkfG8nIJ!I85GuKFiILXlrTIFtR%$R5u)Ngq40TAgbYM^!Yl!Q8F+>IT z_U+2=s>{ZPhIQ9AJeIse{YKoMo)4RKb0nK>uZ{kFEo@%02A+}nkOk<vX5L5?bjhgA z+Di>K+$yfxvyYm%>S5AoyZUnAzxwA><cO?ljc)2s4+?eLHZ2e8x-AETk9Q)OI-4t5 zA@IQjj=uM#ai8zUgBHyPjK7`KKB9k^cVU*0Uv^PZk?-n{*NsRf3v25>qnfLI9G9x5 z?2N*$zs{Y60fl})?A*3oUtjNVvcwY*5YYU51FrI*8!wzQX>4qC+8M>O>w0!QX+30w zfqi^AMD{7!HNy+LgDk`SApGYx47efRfSc=e6M~x%AYrb(#r${fmp_$Sk%@Re)Gc@~ zquj1Qp6o5HFQj1W3N`fm_^MBR%+1G*;1{z4NQve9TFACPrIydhJ(1%67QQ7>{HJj3 z2BZqp-wk)@pP>Gfv?cQuh1~Mb-~WHeA1nNKyL8WKVGa;r8|o%TT-P*w$ZiFl|2gEB z`f{!|QMdXx<5j6-BAWyD0l2{KClsW3%!-0yjd0{v)Aj4_zM)Nyd7{ryquje$i#o}& zVv0m|GEou>zedo$E=^JYU2?rl1QBYDS2grmLm9`}in@xP+)p1y+x3`?ZR)BJ=qkX^ z0GN*jt-oDby;(YN_*0U2i%wM6ztRY`<~;{%z|VN>UY}zhH))Qt?B!@(TgyL9exE*# z>0j1w+CKOaD%|eJO{bAm^ZiLIw<huFV7p(FPvFfNyP_#wk81%ca2E%GJ@h>f=eI-? zI!8lw0S0b$c@IrIPA?*qN=}$DbkTuNm+n$F;(6<(OT+n9Gwy9C6!u%&!C9>*^>guU zo^+hW@G>>!L%On4ab@}Th2FcYoa!^1H?ofNvqsMeh>%WuzA+{-?i*PBkEdN+=fmYv zk*ZB$GHl^+LRWCd%mo6Fq3p!brPX!~_yF6+-!6t(o%AC<0*)Ckl*ka^Ea(k~rfedr za0|3WJWLVq8wc8Ndaa7yegkW+P6B`&HP@vEix%8!fy;<+K@N=_hjH3+vkG9Rd;6xk zl_ojnvE_2|KX-l+fmkiHF2IzoQD^dwD<hBv{_f>$M)~Qo&}2aynreWrNzd*HJ{5s0 zqdgpYjaRL^RNd+=eSNi|aTs#T(-rA&8&WG3I7NuTVLdez|FpzY0ET~db16-EJ3BXb z>MsfV6vD?&!icPu67r3d%Nss%i>FnR-*+$2Hw=V<c)1<ny&Z+@|BJh~{)#JV+C;Gg zNbrW>5FkJZ?ry<7xI^&Z?$S8HgF6J5;O-Elad&Inp>Z1LcHVEknRRFGA293oZ)f#c z=j?T=cGcd`^VF{T1?8JuW@QwD-UlFWkKrp6`=!;IEUq)2bZ%}IV{q;Md;I)|tNFm6 zF-TNSV5XOI5d6#ek)-SEKg(jf!ndY(IM8Vj`-kl%+;H3(R1BS)veBmf?uc>!!%X{T zQ&iEWYboGV1s-1vg*{*d5n|$2rdJcZ4&Us5>lJb3gaQLb6Px>OJoyl$_*r<iE@u$` zJvS~x8ns(pulT6i@Ht3FbgF#9FM<cKQMzwB@T75qY&ZbcH^R?q)*1Mfoh-6B@y8Mr zwEYc!1Ou<yM*6d3f_YpEPr_`?UpS8SM8^NL8)=dMkCR4zEW0B1>4{&0GFM%WirZ6V zx$%LkXWG7xin16(n7%l%$wZ?;4$^yDW)|t+X<Y`XB`3Px5F`Dw7$u^T5?mz?baCV) zmd?aY2Sc6g_b$tBjD||+Jq}z#NZXjmd$7>6J?_=$pyHeQIaSyCp^Q&R!C3e^eHWXs zk{49d7aKC&Kt<=fpm!LFT|uY4GtDa*pU1~&*IMH~&uqjPk2f~x6E5~^=<WX}R<=-h zAxtL4y<eJU{dLO`!VgrKD+IZB6PWjfc)hM041iDH%o<qzY2vT3)g3-bl1uAyq9e4Q z-L&Hu*8owL6Gm2>o0`1;Nn^HYW#DH?oMzN{GtRN;5a8*7MCFr^{;Cx^=E+;IcZq{> z!wFB|a*ryxo}=+Eoct7?1o$(h{e0N8njT4sUq{IF$|~=uE4g#z2uMv$?@TSl<5kNF zGWW)qN0$59wt(=eEvKG;_WTTwZEF4rK(=K%+(9!eeC<D=IG@Mc&d-XVIH%%z==<!h z^^*gULSrwAVWS1$Ul&Dvs8AqJ6ttusboxy{X8;9_6WR5t>u+OHz3K-9L`rGHgrV8r zWE!~tT%yYp_BFD8Bh53^;XoeiZlf!9$f3`yPOQwf=~9Vjl5H#MN^{6_Da5Zx3D?`U z<!Rp$7)&d*$JMTO%|__yKf7n%u4Q3Tn`zUiDu{@1j4UwGj6>gdL6Twch9PZNZKa{` zmRYu`S!h-6ncMt#el5w1zr8%OA=0p^)pte*e<12{X*J(>r*ogp*J#h2w>jP37p>NQ zfuKt!`_WG8^Bx=uS}hj$u94dbZ}&?*D=DHM;sDd$sivVhO#R%4{=T!_=Bf9@BRAET zE;)v8jP;M_Bln7yFnjtS79aqgrYB4)A^p~2eSMppEw+7?VVYJ4h5M$n`JX-RVpq_5 zS?pZ@>+tx?-ATZI`nO;U=OKywoBDmR|1-VH{#SpRr=PH-|L^yI$1VQjG5aRbq!S0x zbIp$pdB~b_$9Ts)2HJfG$hCC##EV#6ZUQ&BcG6~gUj??g)HYi2SToB$(worq0*c}^ zmR;y6oBeDR)A@76D&HlKMOfT+K4cg+6-U*}%nb7JecR<U^7f-ku;^#!v&0y|;A5V6 zWC=@^k)ykX9-IAcSon1#f@W!!UAYg$tDMNlEexiv>nu3-{auw%Rl3~H8_dLbzrq_P z{sMxTxzCRNFRK%p7`<He&A#fWx}+qis;0>>o5Mwofqg5l*?Z7GY^kG>ZJKOVR^9t7 z(oZ{meMxpc%w$pd0Uo$y+W%B2wUH~poMG%t1N3->o@7|xPg6Bx-{O<+mewkw@2)WR zDad{wUi*t^xP-hE<=t4GGi1L$_hL>ra)NDhKX!I+eGh+W9=ckPZr81OPSl!a_k81- zfFyy12asD`6Gb$<Rp?ZFJG($P4}M~_jU3eM{!j7;wOG9yVg6O?MoM*S{>`I0d^W__ zhT+9RkhaQ-C0I#Y5u6x+Stk|k%ERO{<a(R8DJ&c^7$V<cW-CY=qe_-%u3#kIT@kVA z)i6DI&?neF^J#`)8rXPRG&_GTBWMxcL1z{Oc#NaTizhd?N<E~RV}<JsT$mhlIj)+> zFqP(@=aN`Y%(I8MvQ>8~*4*ydTk48;zPm>19#GfrX=|FG^p)i}bj~krNZM>R4%ax5 zuugjx5$FYM5kd!Lvmd*||4<SiFH@3?<FJvXf||8EfzSc02WdYk!ZE2!?b;tiy#Ql^ zY>u${efl5G*J|MGv1X~p_}48J8l_kY7Zrho9LBucO!vk|57a+w=4@VG0{P_9W-`iS zobIA}cuQKE?hz)UF;J$W;_R(c!an&}3J!|w)To9X;NtR)VzmW3B#z`Aw4$GH1b^Vj z=Y&*AOs59ljQ#PiWt3dHq`V|o|9~&?CLPu33tBdRs?u`MMX*qH623dLv5Y04^2o;6 zT!G5m<PAjVG?FADa-Pl83oXCyi^EDCVbjNq)%HRy@=VYHatiFggzQV$)xMI+^)+un zhl=xQ{{AhWlO}@^REn(ZQiYJ)x~NJ{guX#yY1EG;dlQv4DmzCsxuVk~XMS%C23X5| ze)0U0PutJ(s<1ytJ!8|=j-F4h)mQ5aerVH!W}Xp@rh}Rb(zNQ{RT~~1IaOwFWyz&w z?yRk|(qEN2-5VRG%g*NrEE>vp_!z+El7|hN+!y%F9gDt%#-^X@u?i+0Cmx{_I^r6; zg&u;l$>!|dFY?A@=i`{I_5z|ZOPXt&x8H7_DB}%F|EhP)d6#n~x}Hqz<-Y;jX5scW zODy4X8+4GHv+-FHZSPt9QlC;!iS)YE6dJxYAv^KLceNQg2)+oeJSiIKE`7&UmD$@| zU>TLc8CKsBW(l$4%~U(pAKEGKkfc>Gxtu1kDb}G|XNjJom#fqoaCM;0-{1dke`b|M zR+&o{V`vK|0h#S4WHb!&3sZ$%0yuYsGKP1Mi&!55(71pbClvEcT%~Q!2wu<S{u(D$ z<)%(5XuW4Sp{`<<O{md=Rez4JKvmI@Sbh6_Yxl?E?0vG9GNu7L8l~ailM*R8g6jBX z+MI&fW?_8&9l8Fi<!Wc1?yvHDXM(Gakd~Ma)uvM<#$=g82Qr<<pWHAqs_t-_UygS| z$M-=*wPaC7ZbtidK(eyNG1Jvht5tnS6PfYp>0P^4cNyB*(-8591COj$GHY0Bfd@!1 zdF_VRTgDsED6rn*346!Bx*>QR+!@)LwZ7JPec^=@S4n7004fG$k3L2n-sgC{3S2c_ z^jgY*T7?Y_wz_2fOrz2-sJ8Ey>%bB(UV}Uvk6jmFrKn$ox=~POH=UOoYRSP~@2FVx zUX~-E^(Q3-wq&xqJ|24l(EXkms8x!V5PHgEmC23PdpGmeWL8*#EgpE2?ReRR-uuIE zLW}QF2qs5YLht3V#eF&uqI%KnG@I}-ZhxIRtmNKK=NTtLe(e%BnT^-mex3n$2{YY? zJD$~(6TVT<FF%VkdBCtI+0VcvJSOX$Xm+n#`}f|VEox8+p)l*aqqR^Y*yXyQ^(wbT z<VEKS3mS9<M77>B(QG}AW1>3b4f-n#{5Q63CI0xRUpeh&nJsEkhPVCh5O#=uZU5pG zm}2|6EBmHD$&|r&LU#|?@eDATofW6L&*?bMeC1h4eaXVzP63`iEDF6I_=2tjm6*vh z5Wyxb`&8>S<!dHBK%KmrYbdzO+AqsESU%fS-tbj-TO?_%q{Ykq^`;4QJtPCdloPtJ zTR1cU1(cb9?wJ+@tx2>}enbtgn#|S{g*sl;U%WWefjW-CSCx+!x}a9WF0-e@`V|(P zSi%VlMK;KDh&zxNL<?dj@0^hK>rjQmhn<nh4q^AZ^X_GdngL}~Z%6&&ognhInt(lS zzQprhdApL3I4Z~vW-}<kOfeJd?NhP)9IOKZ(M1B#6xYT1q5U;doN6bn$=B78uV_2U zJLQZOZ0|-K`UuG1piPKs^Sf+hz7>QGAG~c$5bF3+RYko13Kjz~3q$sJo;HTJ9r|08 z+t!-T_=VZPKRD60yG}u^yimd!_r+*-e3<P8t)4EC!$HtU;f}^d;JWcD|28d%SOI1+ zyX`KkSlF@RO-2O3HIqIdZJ{bd4#C9h_xQM{hvKy=69Rn$F+tL<bi-l-3U)tZ+^0EP z0+9Ch^Oy`se};@L`y~jf$9MmLvt4<1KYUyY9{1v-^?E8l_f=HTH5PcC(zYiBF51cG z_~cv+u0Sd=hB+7Z(G7_O$=VFY7wn+1P`*1q$Kqk3an7x-y1vgmCN9rQ&KJKfuIpt$ z(_ivcS1}2dx}L)w_wtM~@1duXPwpyF3gm<^OO@2vx#eB-uHO#}I}dtzDgLv){#l)$ zAuXbV(5vPJY)DI;6FUE_Vow+=f0MN?n5ntYw;Z<Zthq<FtyB?e^aN!!ndwc4QeFqn zd*m;%pl#PXZlu9x0Q;H#i@;f5TdZnS@%pV_V@~Os$tR^OQ-RA{%Y5ir9=PjI<x+B| zffD63wIDnkkAY+jRr+-z%GtU({b4vh&o?hi76$;=ic!xVlSMz0{krv436cuUbp^Rw zMFo=g4yINPj_5}$g5>Upe$@IzJZ0Cz@g}-}(c<zb0)${~nY15y^N#m1vBwF$i%Ru@ zyn&@Ak9X~z73n?iq&<CF&ai<jan30TWNxWFOlPxR+gcYU_9OvDsO6rY)02fYzO5Kc z!0VzL!EO<nUI{VjbH`7xD(lvmsbOQ!ULAU9(TJzfL1_p3{w2_`(UB_R3@FX_d0fO* zP|0f=JrAD}H$X9t;9S-Pl^|`6D$J6dng8C#ORrAyiZ$EQTCd6cHI$wfRFmXJgv4t@ z!C#A?z($>1^2g2H))TeC1lXP2f(;g$p)iq7W81sDbu)1P_9i6h*QE!IvZ#m%is}sc z9t3lk#|7hO=0LL9)z9~=qLTzF#p07&CHaMzx?3x(;?x%Lyc7f|G)HY3lq*M$K5tV4 zQPIvfZatupE878oX-1!q0szCA18f~@Zt~a#pCmVhl*95#Pt3s2)!?JkFZeuG6eF~} zHR|&>#evq%r_{J@I9eAT40~`NKd0lp&#Tr{GxT2Ifa6&Re*Qr^Mh4gf<b{(UM5PZz z@X&@xfUOsO>wosBqB1Box^yXO>UEF^``c6hVjD(60^qa1h5r7b(s?S_B-z)Gb6D29 z2}@FcZrl`I9<?|7G~7~i>HcW3auKj#zu3|{`a%|g+prc91C?P{4Z;JvL><6e7C(yP z1S%F}f6u(60{)D<I}iHr#s^pqIZ$6ez3UA-@+jUCVSHKW!jMSj#O6?>j3qNwSI;AE zpR!KhCTgTi?8&;{@yJDZR1FS35*lG|V$H@wa#A9TKUR?sKf=NgA5kkY6}unnaY9GV z=^m^t9vNmB#@q(vwC%vF^N-zu4>oo*d^i7H(`{x#`8}(tYdU1h)us|jB}j2*BN)54 z(jLz8YF`mS>?_I{2cv@)iqXDsQDH_?Hqu)-d;t-Z!zJboFV-CO*j;BXhJXQ0(+hbY z@_0B40OKh|-`bL=F^YSbsIwek5+;!xqd;nG*s`)O+;zre#9JB_a`NnK6a3j6Nve&u zX(UK1;k%3v|DmVX>+`2>B)ywm61Z!#4f8grR%n=h%ju?3ZgVUjGk0yL(V^R@h;w8@ zH_Hg#ibKfwakk@D>%pcen9|%masRJbOt&vQ!L;n@U&;u2Ox4F0<fb|@JJVHTIHawB z$nNuy6KVSGM|u@HjGmR$)pUtr^hEMSOW~&f#X+wB;~<R<acUqf`Y?9%Xh^^1=aU>j z@E^rGz)7v7*RN~sUT3+^2C^rX*HfX<&CZsZ{e`76o#1J=dyFeg7}8P_)t#6k{qD#z ziz)E%^v;#q-<tUM>2qlla9@1DLgKNwo@WzcAL`cSp!9ZQ`Cy?Yh<;+>g(SuL`en)a z<`NA-i64t46wlh+XiTSPhZ2B>LCs`KY;F9YysFLzi)+q8wAIFyZ>*J3WBPtv+Ex^l zE8P0My)o&!dA$362{t{v^LAJlvhY1l9}{g>s^4<s^L}A!%|0t5=7S;FsQ&in_EzJ_ zI|_%ZCFT1qQYyYd0b;1{1Ikntf4|xrqP|LEK};0WVTIENc8*SN4k$*xmQf-7wUqqH zc*4%c%vvM)#BP8ah-ADM@hp)s1w*$??|%2793U&xCgA+S*E?czbvpQwSUDIun2mB& ze70Qw1XvR3`nb5)w(0AbkKi*<yE|;MwCa@J{R^wdKhz-N+)iu;Z)LIq>%9@pd-hs` z-85y*iR<q`KkQhty36AR{v|fH)V(}3P>QSir0Wl1`Ii@s4>t7X&%puY9{gL1@AnRN zPhJZfj`=GW=*|`2n>!;NL(5I9st}tL#A&L`4KJ70cC7zf3t+Vxjb~b+C#PXaVqdI{ zlG&U(s_Z-nbVS~xG8y#olCL_}%OBWAZg^g<?VR;S+!q&N5ew>eEy8P#QSLx=u)X#< zX(eEG2!Y(jx<kgiALZy9^HfGH`%je4_74A|6O>%>Ugq}8(=CrV^IP+nW)G}f6d5cW z8ZvZ{=Db)H=Jtns!cYb*)rob9g&Y03*kdj6%1x-gzg`mcqVz{j$kAIBB<FJMML9W# zdfilZ`t;Cgl1oyss2r0N;XSf%(DvI5l<UmB6JCe5O49GdNlz@wF$+t2Q#<-#&(zZ@ zHFge9GF5Ne6wm*S)mx}KCbpqGUoGa~(Y5563g-VDa4lYa+QIQ_A*i=8qepeBU?S?E zsFi4#zQeJVcw|veO-gN8AP<4ze{!0>D+guy?ez#!!ghDy#ZCg04=Sq0mNlnElM7~p zuI2ux$jmHMh4xjVQR%#~B_>^F&P#>1CAkiU5(}~Y|4n~RvZgNo7yH@#BmY(lV8lA~ zDH`pq5+E$bjqJbzMk`h}YW%S8cdd-P^v3y4VU?J$O51_R7e?F1ZueJ(i~Q&zQt15l z@3}Sr-Byt#dJPTttesqC58Lxo&RFNwo7jZqAZoR>4UzWl)RqF|q#EBdqjW(yGNPD7 zWuJn`W?c-EI`3o5_L;AX-vMI$t#(?{3U$-Q^qV`0{RN>nMp>1WxpuLJ!Z!rR)E!v> z!SL@^?IFwV5k5hof;=`7i9qlIoc+_kiQA^r^f>T!RvLiOwzi_sKNDP0-@0I0a26O& zWSx84&l{!q^8&*!J83w+(tttawJHIgKW9us<CB=9C1cI|ee9($*UFfi&=@7d%yQ7) zV~owq#=_3Bn6yI7jUUGCwf=0_S(){%chkyg!Bc-jd95#MR}$qV=iWZ52%x{ws;7KN zZ{`J=vWq{qS=9{J@4%=}Y{kPiAbe|X{i;*nM3)ot>-*VSUTO#fx%x;gGVEmXCCU>` z?w?YOdkvYUt8XF+fIxxXnZ|R+QAw~4_DWcrf^Bn5N{!VN2S|`5dP#!jKiuG4Rsrl0 zu}`V$&Rql0Ce4j=q=dv999>CL^QAzK&~@SHdKCb@lY6{SdB)M(kgb<)=-X`aotgON z=!Fm7!v4LgjWxn!;+w-~o?V~Fhl=jh@YhJaoWvfDzXwmOfnKh^M`$XU+&y1B&9quc zKHX7Ymizj&0@8*?GRm88J)4a5Ko}=MjA*Bq5QBe=>i6DiD-GZE6_lLzTURS)k&hGw zMa(qqK6LZ6$?=W3a0|gmk}d)%bu1R0c+gIXC~uaaayuf(nj`5b1$4_PMvXkT<^d)8 z>@~(W+;*o+%W00dvVF_^#h-B8hh{?7OnqpegWEysA9qSK^E6Cp-)lLaZ>rAUu~uUj zOqYJs)`;ycfNcG52l`63zV1z+*}Y-?!L`X(c8*>yJdHEK@oK?|$DB$xfq9*kBQ}=W zYLH-h28VCFifrNVi0J6{?ncSJ#tXJqxMn!2u|4@&PO%-}0UDe52+d5Iz3`nVx4&CH z7=XDK^l?CZx;DDNuQMpPAWeRJ@vCh?QZqR6Bm+cQ3$CfopLNet1B$q6aKxneMOQ@1 zRjw}#`Dabg<k3h1gc#EB=6?xQI4hKMJNP{G2yg}N;dkU9zt&g8G&e9;`{lX&$isqA z2T)VLgOPE~*8S0v<kqT8$Y$F9?a%8CF4&@3mo(T%VzG{}W4Sj5+7x%$;BC>VH+CWW zr7rf<mD{-S*#-|xvcM>}$YBZqYCY~!>ovuj*u(y1Ebv-r2e(;=1NqX$<TU^jCrgq? z4uHvs?Xd=*E*G>%1AWC=&Aqzn@Seg_Twq&j)6Co$tZz;f2=3=obc9}W+)d8u_n{|* zGyP$Iti19+p2sq;Kb~eZMC~l;OEco<?ouEMqo0^<=`&J*u?qVE{(n~m9mzb~*t)(( z10BeHvsRUG7OT~xf!HmMUjNNdKKY>i7b6M${}E}~JvML9yN5gga9Q64=AvHoG3dz5 zXK->fL2EKW2<0`~gdH^xMWNmy$-O)Fh7mV^JwgX!XgQ3C5^}Ug_G<a`CU+armC}1p z(C^h6;B2W!V>_H)@LnMkMeS89!2EGi8f#I3tH|`qwB0ZIvIoAb47>;TDo4lj;XY@q zFZY`Pk^g#{?tBTdbA|Jx`WSd!yoZek2Wh0S68=mD)O~|oR_9^;_?1!tQ8()`$Ocr! zJC=NjFOA+Bb3^(@pp_%cDJ2{m0Fcfyra0FFGyuytTF^P0doilb^6WSLSz*|}G_EZN z`JeChOLlv}1JhS~{P>q0C*zfXTQ8fcL}mU@>7(^XJ#e8>o7w&WD|^`-nor3+$y%4@ zIxjTG02p?DNKXxCm@JC@iBU^_xG?l3AuZ9~C-J_Kk%2y{aO>hHd`0Ev>+IyHE0@s9 z@nR=Mn3Lw`(xs~S6l02N69ak-DPk&6`o{Fyqv(gCqR}hc6+KAHx!^QLveDxYQhvWw znRg=IZ(@ASX5UK0J@m?NbrytnX#)BS!w9W>0|@uJ`XBy*`wxox{&s0t@yTZKrU>4a z*tc#lDC=>a?J>aPtBDCg(+}zvsm!(V^|e~Xh@7m@n<TGuwYr^`5q;ZL+Tq1^CyadB zXj+#CSVt-5-YNB}6e<Z^vas&v;>GEf3rs95`JKf-Mfwz}xuRf(0bjv2@8zS<tI2<N z4q3scUZ&I&>JP0`^)Ljz+e5Ny)aYtB4QwYfvtMm$ND9dw7P#dLA=lPoVV);$I%a8^ zC}Q)P_6VgdtUc*?pkILYW3dZ{PRh)rwmWg}7I*u)(6iRC%8&nPX}6I>y*h)sjXAli z=Bz09)DAEW@B=O0pr4AgCBV>8uosRw8-LY91d|bD+swuwYq<H**HJ*%f6bNjQ4RJ{ z3INn_&khfx_?bdi{oQyT0|a@Y@Z(-27Tq=6K}-C99BC^}UbFSf2{Z=wlC0?jTu;l^ zn2Em*&v=%np&<3uyc8P8wAW{r+TxXaIWe{jP-)ejs)Juj@!XemrkyYiXFTk93}WB^ z%p_3oC_aQVYUnYY3A^w2ZRUmTO=NQ9SoQd^gpDC9iG5>G9k_K5<4|s<2r_F_3fF6o zTkva%c_Z3j<L8F@=cIyEjuZGT;+Yt;j*36>x|${;XMzUm;cn*j8F)oXL^Dd|ds4`! z5wE@^dt$OOsLLLE-q=WQGC2G_?Uch&siS+PMG4!z%wI}#e>=7M*Q_#`)d)Cuxak>v zS3)hT?iU~T-xOSZeM7+(;yOB)7^CM(&804LGG%i>5u5`q!|s$O2H@^=x4qqxmtDT1 z-X)@~G4JPPBde)UM;z%Pbfaw0Xee@lj2Y(caWCKSe+&J9X;)JgMr@v}`@P`=empZ- z*6p8T0$-tsnlg_@@8pghVn<B}ViUsO`Iq+k`Byl-?@v-FP&yo_wZslaPWwLj9YV$# zI{5L2U)@jR;&8$Yu6SN*f}iGNaqg+U)o711HS(vk)C05X(9ByRF5%jrdWLK`O($@8 zk<4R%%;$o_%P*e^2|f(4Yik#TUOSU#e$GD+(&*`Gi)(kG4-io?CB8*={_Izme!~i8 zQV7WZP`7On8IEMG$0NQufvM`fikRO@AiY`kyL!4eiqn}8eo{+xGe?J&wvy`X!gRDd zu~7_{><YbI&_MDfM+a3242o%~LBf%nHJQV;|J=JbxO0)n10(qI7ds<LFBIC9HIU;* zWO61Id`~Mp#^Ldoe^>@3_VvqidP4W@bV(uAVN11txlbW9HfN_rf4y;kdS9x)OxC<I z@(h;^y_ST&H4Z=7uf&6W-xhIH5%NrEv-a~UGvCWgZ%*v_Z&y$>Eu6(siQt=HaV$cg z^e_06@e@0XPxK!m`Q6opvm%QvA;+~sj5#@=Xylbpk3cS$bk@G!rAU!tN#I=xYp`<A z_7C(iagQ7Xq$s0%W<zt()WXoBwxii5{FFc)XTsu&LaG>pcyuk6hoJA1uytN8X-}x@ zkuk10#V8UanMS9TU<Qk45t?JyO3ayvcTqVsY#sg=jLN9M(ImFWO?6P~{j#r6UoTc? zOPAX?&i>WW`=igEo_YI^0S%3@56<ZQwDR)$>{a=qehR+uQw*<5PC{UfZfEUC54)cs z1@#K;*IM*rIied{@7>+G;a0W9Hi;z?$xC~uwhH=D^#=Uy{(0VbBHSvQ;_%fa9aLm> zwWSaJ_8gLhMNpqfRb}pVM&>@hczBZ&#IU+HQ>&MO6h&Z8fkj)|=BETsG%(=haHKdi zkz4fnlv5t$*e)=GkcvW1EY}RfZsy5wzp8yjkl}uy$>(Q`Lh%n(RcI#MRzT2!DPTpu zr}jVY{eJmTm0w*Sie0A>$I-{l_!-3+uAV2Wd2_i2t(TGj8%_+rb2zRzzwPs^thw>$ z#t61X%+g-gPXXxcVy#t}ECZ&s_COjYsW<l%7IpVYB$oh96AXl=D~?Jx0!P;#m&$bY zSjIvJX*S(tTa#XC+7K9_9t)#%2cwk{CXt&m5QaSWiZxx}Ti0fvSr(b}%Zs0)5z-O6 zeIXnTKp*6luwqzO9R-620u=w*u)Lvl?e2J68n$f)B);R%P5j}yjd9oGQeQr{?wd)a z6Y%vRWqS?Fji5xuP*GnPO+z(Qn|-ONgmR=3Tkr<rtgONWMq|usG{NYYKR418j!X2D z6&y9b#9W%jgLDa&!Q!X6?{xgnMG>FCD*kap1q1li<xboq?*t3Lr<)GS@akHFKA+*) zZ=S!5KNnMidGHj>Ws5_fKGVyrkM6fb_;3xRrm_~q^aLtCABE8-@KWbc7cMcdTf}n= z2ahN#+z+8-59!FyVgXe5$0=*e{h!zf;%dVQMFnT20FC=s_a3HfGA3dyn5+SG!EIgG z5~~H@E^P~K{HW7+0RoFqPvoF5#O5Q%djI=2)B^c>hk1jDXXoFl#uPAlhLd0-+_mVr z@DrjEgGaC@yEy`u*TCxmkmB?PS11Qj<TqVvwY@}Ki#hQKc?9*UJCvJ^G4|QU%vo7z zL{<m2ohp#Wn#R$ndtdXz!gg)<Y`wgS&}y{pnFa~#2w_~^FGl8*o_1&M5Pr?+X|mCu zgGkdkCq?w5gPtdkDXh3>^uMcX1AQJXSCIf*K4_&Q^EJkuZ+O;TpC_r_A7&T??z{ie z{S{q--XjUR9Gz#F?|b9EGFEI|u_#N=LtGaz8<$0c9Az|?%#hx+tJ-WvhumpK?Yt>K z!Y}9ZKKNJbA@ynt|KM7Rf+KNi7ooy%U`tf<>|HiX?DZf*EeUqYI>W5KFBxWi4k)=P z@zkPQfGydA%Pfw_IFS6zRBlD%^8LbP32*xBb$<cBlL!9yMZI~3O7pplrKlV{`Psyf zf=@anr*74CFwc};Up0pj1%HCD2pvvu79%j&VG~R>>=}I?)})-$DeHgA^`0^QuaxPX zn>o&ZYxbp^N8Un>jyCd`CfT!R_<fYPuOT&$j)|Uh&!Ec}<_P1KiHLg-kX2+>41(7V zbqhMu%}}>dTPL9QDgxUdDomZV1?|!Y^=B=?bFaqipIv-CSB!x|N%boG4Ry=bgI*s) z>ucc!Fp6cRbrXX+ge9^E2ly<p?~C6uq5X?!m1wPV@OL4w1~A!+!<*Hf<(_;A?QKDh zKn*ER8Tda2_1|iSB0NRtZ78`-s3DyF0sv3J<0h3GpSQ7{o1g6bX!x_Eb|D`zD?xl< zM#k@Rav#3T(_o?ahZp3K?lcs9T-{GEsaPB<V<gPvc&7JkqnEjX^C)>9!yyy2GJCBg z$0CGdA-L+cbAjsN?Py9?Z_NE-E^J+%rqn62p&Gv~RQqSlX=YhCJ3iWwuEpV8qcpW0 zGaS!SWgeK0uh}%ag;2e5Vf)85%NC!eJNZ55pIhFvnugSriY%frssSu+GqU3<9WX9S zYBvQ9LYO#<>!xJ({Wgb2hbH>GX^-zn{VE0w?-pVxFj-D1%q_>2dQu%ldBFK{rKWmk zfO6<f*%>_ipXIF*Y<b%VVtW^xDlKE^({cesr@be<V4y4eeg&8z$o@6#JP@FYXJfz{ z<|s2mz-^6T>5Vz#W0|BnCjhl6Yw}j?kvBgp|J_3RPn$=zgv)=t)L~4tO{Uf7JOKB9 zQ21>}`CGYV^--aN{WjGG`=nQJ4o!v=5f!r^{!#s~wQC=Xm)~3MMz7V*mIhB}f~Nn_ zzLK<2wAU|bqwC(OWZpOp3(8vavcs!C)&Y_KZ&sNu=6zPOu%^<*EgDP?V4^oIU#|UT zapl}?N=BL*>akyIy(l1@U0*vNBU2fHQwGVBk|pp@DC?k4%fy{HD6o__NDn$y!OwAa z-LZ#>VFH`@wU#^66<4NYPcwAWgn>l8FxvkiE@_ASvCIt*wnvGpB8Dx5&vUm;gj{@9 zyOI=VH@~APuQk2+>Ucu?*L+CoB2pSFOhgBbYLhDqtvo&eJ@%nbyV23&&yI{r9ZN_e zy<wal#u}>1e!-v~`OsvGgc}2Tw48wv&op^XiE05T>~0{ec*G=kbFA3&n!BO^@<0lt zdlj@FgPyM*k*ev>RNCa-iqjiGV_ITpQ7U*aARiaV<RflW@N+w@8!OCS>=hGgZ`?UF z$T!!y`?frUg4B~zh!+`?%sAwiL0w(1z&q=hq`h?;BWMj|#O1a0CnCjr8S>pf`7VsH z5Nj&eg)>W^SNC=<dX$Bhk&Bf^m>ypsIc5D$5a_wjIiDe?Ra=3uFz8vJR9-x(F;jY? z0_L%xo*_EPm=<@m6qLCFwClIV?9|x^m*0&cKQ%nLp8%(23zl@1?i<Z)?BqXIUBf_~ z_TdO4d>-#9&CwRG6IwCp^~);Qh<6H`X}Ii12ORZflKv&_Bv_77-VDI`P_8!~m^4Bs z@XZNe#lkw9-aiscn}AEMusDSip^sYbA@IQ&4hwfI;*IhmeVOH3$x*%WhcIJQZqbcF z)4eF@x8om2MJHYui&iKZZJF0`U~$v`qS=0{dN*3oUe<sf-k#Ig7MA6+9&N6juA5vx zU!djS#&R}gH*<RKjG;kF>zO!==mq5$S9eWgZYr&_{|Bw6q1VYT^nWl!*4$=|#`FyU z?uDacx1IlkW=a83Hh=kC9-KJ99{vsi;cII83yVAO8z|SAqF}tisj)rr(m7?gvOBZ> zS80k<n+Y|pSG-KlK?W9Frge{BeT;c*_&Ms7I0pPOOn!R(>r#tGRm|W2`xcG~p<}5S z_}34%1=DyO!jotta|9})<C0V9e|tFb${Y~f_200V*!%u$;NHv!d*n>RlY5K2Gs2PJ zL2oZZ&m98Fq2l??fa>fVgntEWtDNp_naxbF!Y3!}`;-so^*C-)BxL^1H;F09-)yQ1 zcS)KRJ-%ykuZjPE7O;_|gp?@%t>-!V@$vRj)juvxjbuDn%$l%scX+E<=>AJr<68jF zClu#N*BBq$|GjEWE`|PI^;>HjJ6KD0bBL}yXGczQS-7wt)g8!Qf4n=v<EVe_z-EtK zhsdOGy}>56(Fqrj@FAYhgD@oNk97JSMu-%p^z%h(%x;<NFiH-Th;+M>wsNbYp>3(& zo^ZPforZ}nfl+CKYIwJxaP8}CH3X`D6-JG_Tm~!441d%EU_3ZfhQqw@I^ch=5bNaL z(A%>M>-M+SeBVA3xJ2^zLGU=$YwXF(DTT3z%Z<u2Ljz!W``w!>TVbsq3v2i%3qZNf zt>!fs{BV<z%ID5RmF<zWD(1YzTG+&YPa`i%5gc{{jd^Wg4Gj@dj|4R9X*iEq{-g8| zi5|2~VKg+fTt8(U1i%`d{OFKn`KEOd^M4hZ<+pxeO~1x{ud%|PnDgZ?t0P4fI&{oQ z{TJ|4`T%gXMGp`+^k*rhoygtfjW+#4ygJdq%8+QP<*tqHf@9m41>-gFaD;+(`v((> z$(oFz*tr|$<A3t>)*>bmUlxi>vVX-`&GZbJZ9P5rhXCQDl{Fw7Ozf$zuo_NcE?krJ zB*w|3IJ?cGBMJejfh=6sn)q4FnGQwGY+wQ0eEkmx@jpzz4>jA%Di#?#C3WLe6(S%% zN1FwC$#`p$7Y*z0-b{3CY1j0NjXQbSmlxOYh-v%37z}(&bOc(a{axC#p5%s~)ZQc2 zISyM+yq0&>fvdIYF`_MqBVVm#85kSaa39{%w#DF8KX1G-FVGvXR+&&&y~_@{-Wj*w z{%>xe#0lQRVKL(K>nb;lR&lYW5Al4n=<6G!M_WcGq_r^hhK|jQ%rRy?-prZJ#Lh`d z58X_HLta~2WuF_pfdpi3-xJN9`<~dw_{T5QQO8k&vz_i2wzF<q7`Vzk>~IHyZDo#r zw0OUxWBq_|vB9IVG6wi3EslGEN%DncbJ$}Kyg>-p`4?yGRuqqh4Zqr&{CgM)O|ver zJfx766ZS5q8~erI@|3oEk*abWyW7Hwe@Mz@ZZfG;s|S(Ta^&Gu5z=B)s*m;~Q=iAM zdLU8eR;vUjDf8&*UmsQ}vxn0`ZM`^JUB38-bSsNzOQQ3`XEnpS6fB<u>4ws54%of} zl!bl5k5DB}z?$8)c{W7L0!UyZiZ9E<G5TrXVjM()&zwG$%%HiMK_}7Qo@jK!e&LMs zFT(l`>dD_YjmUI+Dl^G$7P;Iw%o8p|1d6IripKTjkM69j;8AESPv2*btqqr*ofT~c zhUfO?r6x3HCd$1D9-|br<CY_F9*Tqt>cF;tlY10qy4QHFEh|EWM@fw3D+d8^0O%(> zQ>j`gs_5PX*VbZn5HP(ns5(x$ph$2u3OWq;Q(jxKRWNKRRvqg;8VeF0YbN{65ZM|w zJ%3)G{0|6xP{dgccS^twwtDtOP2$B={eekI?Kukf`a9!aGU-<RZ+w~K?f+FW-o7f{ z8uGGU*FU{5Jsa_#Qa(t_oDpoqt4^|Toebkd@0ytVA4CLlYgo}>`0rEn8?~&<u(#nb zRWCh6QI({M!T1_+DY5CEroL(V<fNTB{j(l#wBsMSADu%}Enn(t>`Iy&u~!Ym<`G#7 zlF&C;`P9EI=aHN|(_M-S&C5g%3ePRz>6ETDB|0XkctSiT<XXQtX<Zt_&_OsdlE#YB z9O39q=m7h}Ux{+BI!MH}TSz0{J7DL})JGE(h15_^`kXHo!h7!X24l6s7f~ZeTReJB z0_4X97g~m;$lcl8VN>sY9;ci9CVe}BHLOpsCu_iOsurDh7f|<u)Y-O=&vriu=;U^f z3bYtJGN_>u@P*nJ5uhHG0-fGg<7LK>%E08LFNO_TUrG#fum2=A%9ZPy>T7A&7}qsO zuUKmBy>rtXot2;qk()oU4Q{j9O5|M^#_^+rx3OMn6RILKmma^$yy8_FN1bpU-{&3m zbYUc{;>IKw9v7bbrTi_#)nSY4e!2(?@!Duu1(0b$raEU-VX@$Btt^~J)2(X%96+>e zXM?5-@XnT_(BqGVvn6?-1CBoYy579$(wY6WyO-($i6O$oNP~55edptW59?8e@nZDh z(;cglOjj28MY)R9oGn?R?nydqKbp>G9VPJN>SiC@M#iLiFOe8u8`G-Pa1k3=SZ6Fe zOET~6(U8!h3vp$qn`(S^583fT=N9vTvXa-sh?b;lyZLC0aX3xjV{w}y{{%!**Ocr= zY6XAp>9g^E*cMPX=(wo03{N5Nmdk#iqN4Ggt~?IWlI?Q$cW&2^Lk3_&w6&qUMl<3} zoH^xu0rn>1xU;u*T~$^|`}*_^7}-ZJQ~HdU&@_jzs?NOFONy_pHSco?PyayImrwob z{Q%+-OXAGo%L~^|RoSVQ3%(M!vXL(XXqo>C5~BE`x;GmWv0tAEE4dmRZlJ|HxAFw@ z+}SkG(%f(_!fdrxzvC}s?JSTzwg^Bo-dyBst!o^EE;hhJmNRm}(Ts_MbNi)82yM&k zQmCxkxA-FG4degT0<>Yz+#n5uVIwK>H7%{2_5iPxyi2|3p#@uSTFoH)I5lJS)+d;n zo)$T7STC<(UZMgk!H*xYMLvKU^Ro&38e+@68F$QVTSMSawUUFB&gGv=d^`D3#t;}; zp^q(wN}G?8SV)_Sv~S^>vPfql+j#kB2E&7NS(#$QIq4Ho6cBU`%8Ja2A;)JP7;fKB zA28Om@9Kl-xm_L*OxWnWg;0}X9~&zEJccR;lM{(im|0WCt&cA<&3-46?q+#)yBU;n z<TUb<3J@jtYU2{wjyxWEQT>ERElCMUFSw&-cNJ77_|V3$*!cd`Wqi8Es`IhI#|`1n z-p$nFw4<~Bv2LOdf$ZK@THk~Q76D1f#l4Mj>lZrV<8+^U4<Ce|S!X?J8WQ{Hk(tR( zxAmWYqLAHZeofvxU*1FdDw&jUFE1vfAG)e38qAbY{^t9A_ZFGyV{lxa>bHeS4#%(? z`gE31V&2i6(-Nu9GPJ94j_V^9wYr|kgXu+G<-g{J>`M|i5Pp<f^KqRZtp<wd#U)Xs z@rX~mOV91ee19)Ea7SE(pMvsPgpwkL?KZC$TpWL2O_1tk)F+~~i~@Q`rB%50e?u(` zAty+P_*D-FC$+K9Po_o$+03SL^*zsC@7B2kKccwvvBEX4wH~oH3{DbHfAc&wS*BBp zHTO+Q(^mpvm){iFU8gQJI8tw3I0iH84y9{K72;fbsK9?HMV(|ayBA{b2oljmKi1q= zwLSaIK_7FDXT9VM{~J?IU1)?nno2+j!_}*ELCwFhHYxb5q(?0kqPVVApSXjl(7OV$ zE&W90OXvJyl*(gCr}mgn0Qk!u9Ghjomp@X`V^u}rD?ze3A|M<&i&V}u5D^JNr2Etk zj>xy<J~E>++ha(T@=*R`@yEAbeYfsu>PKLM)!wJ#1nzcyrO_37x*<8E7`JTxJ<SZ- zmbR_DnxgFPf=_DMwps@3gFPOce<QahZL9jdd|f=5ZFv@D!TD347M2If+l-`0HkqSb zxJdVih{)x?R=IRR1XSgnoJgF>!l`_2ByY6@ZjhJh*0aAh&u4vU+><^oc|OQLUC8Fh zdSkU$4wk+T$(>M^JW;KhQmaYw*xf-)2Rn~x?Mvof=;5I&TZiA(lO^=8{dLkS+4?~* z!1CCcapcy>VS*k*>9<$H{oK$u;R<s=p~K4y1uA0&jE8Jlw``)h<RH?-E<MBtc{E`H zyxzD5r1FY(%W4OzmMR+$tWp&z)@`5TW_OBq@&$m8hAIbN=oE>CRY@C}gvK%tqP{kP zwxv!c`F!gcg1qMM%y|W|=(O=Fr#G)mgzTY}!EJmcOtS99WS05L#rrBke1gRTqm|K+ zv$PEf$AfJ8;;FYAc^BQwtos#S-p>{5V<ZQ^z1C+KqBH^3ABk>2PDEiE#zV9|uB>zF zEet;5W0@6Qrt33wJH9(TPAq0SZKm2Bf0eD~bKt`~YtJ%<Zr?l1)tOJ}xT)hMv{R=0 zzp?6BfSn+GQ>dd0iwFENu;RqOa}%$Te{x<ID%4w7W0F`X+o3Ol4?MoriIGP(U*0v< z%1+6HXIePk?q9qNx!-S3k&64Ij<9#R72~*M+xHia|6QH@nldyP73y;dJ`CFUWI)f3 zL;s$-Zb$#+uC3Q5?R{1kxDQ}|9asBm`?7e>)FtCqLu<htZNLOtCIa`cxzq2hH=Pf? ze9CNS*_ngFyDg9FOPG0t#AfK+_3nKmigYtMA_NLgldS}JCVaRTlu>(v=)ZVOKb!b{ znN~HBJgJ*YWJDLKT$3Fc%4M^!)8wBv?{IDT)a8ix3~4&Fvf9L4$*(4pCQryV=2unP z5B&Oa4j%APDbI&SBgit#Pwrr_?=r>_xIpN`IvQF891C(1pU+_VVx_%h6n~&3CV7GD zi4rGB=qD&WJq{x@pKONEP=nf1khION%$onF(rp0|dg{`BVA`+p^~<5N^}^jk4&xx- z03o7x?2B`Sh2@PQl?h=(>7KryvMhchj^Mos4P2j|bBTDTz}@DS7`xLzA1GPaCtqH7 z%%1o+U!`2lGVys9Q+3Z6fh=3<d|8DLAOEt}z)^M0U`74T4{MlJQ|<ZN7qi8aH6Okq zrz*{j=LQ>X{Ncl(-QEH7vr-k=*F3Yw))L)j;+?#!Q3F{Wu_3*D;!<w<#K+fVRz+m5 z!0qK@iyLYaf_|@3MDtMWO*2;~^-pEYeANc<MaPS^+F^A@RGTBowLac-bNhBiAC2t` zpT47GRA2|aTOH8h^PESyC9{R4rWFzy2jyDUg^u+~4L7shX_gsj-=KZ1OoIsk@2(cI zS)Y)%$EfE@ExXZWTUw<Z5k|5qH$k|NB)on_{gBIv;3d2!@fQ{}wRp#B&$~MZ{ZixN zCCpytTh)u1Ph1_B?}*JuCI!?5pY$&W)=z17$=p4GYo_bm38yK=qc<8ceg{(K{cU=J zs$(BQ(oTF0js2-m0?$dQ-@>U*Lf2o%a`U@-s;P;4lWj0apYdLwo4S0*bmLgXQU<Jv zael_eh<jFsT7@N-qbuJ%!ga=(Rz!3gyBUUKYNro14&<RE2KZ<o(C@eWsPh_OhirK0 z(+~H_qt&f;^!_3*jH6^%T{tR~H6?oU@a@UB8|X&_`oZ&T#IA_jXFo_mPlMYM8`Vuf zS~Ig^*(UJf7wp5B#<?~-$CWQX+Q+kymA&=)D{f4#SXq<bYWkpEt&tk7zntm?Y{z79 zDYR5w*BLQ>pq6}xuvq%X-aJ$&qrAn>KdKuzmrDqll3xui3sy6(npO4n`?1!LnUxi6 zR9XBGLL^^VQ!457P?K#9I)d|b_>`W;c3|J*0t)fViqm?tu^ndah)W@MC@@3CYR8qQ zc^?oPxLBz3wRPF@5l1sP>v`b<3MKYi(@hz10@!%$;%a8-9z4uxP`;=s9!eSTr6m*+ zC^Y)$v3-rNWgWI!bS*%9n@%UV7(D!|muLGIaWjuTfmF4I!Z`xxChyH}Ig{OTW#rr{ za(17G0ko4<8llR8=kiV)G(%D8uM~{5vChV-IA6R4my{|^TP!niD=74nJ~68R%GCi_ zUC9F01fT&9q`*fl_8>p8qDQS>Om$<Lw`S}#&fMe4I`VFey4lk$6WfQP2kg_6Pc3g} za_lG$n01yKxYBte^H3)%chZtSa-FS*Inw-=&HG4&8vXTcr%^#)uyI`@yTEAxORbw- zf5{9E|H{N8m)+mlTiDUB$5DM>%s#%C=;A@x-@RSo4$y<eN#fhW7x8t=7l>1Q-G2Y( z!r80T``Dx8^A6xc@euvQJ244fTMc~q_+;!7H8ewN7rqmoO80NIj*PovZ}faWpG|Eb z5FGr@Z49-NBW{Fu&~y7M&zy3F{8;@w7c!PPahV*~loizZqtgLC!Bx@p^Rus`!L5LH zesS8-G7-_ZyR&U|Ed4VU{}JZ)!SkICnnB?VM!@iIR(s?xhz{9xu}2J1(P?enyQi49 z-}#I9@E^V^9rbTmES@;LVj{FB<`keO@u9JLFX=4w?IGilR2+XaAN%I_@U3hrBU_E? zduvSKvs=U$S?x}S9Ks{<M*DH`Skjg6Sl9;qsgvHFZ&mdHW11&C$gMS({tLB$OZfep zT$7@V)>ayGhCkmUm)FLf)Nxj>Y11?{f+&`GaQGpO16y{Faeq1?Tq<voFM?!}l{|dz zg5%QSx~E7BPY#<*;tQP^cu`VMhFIB>cREL~pC?Tx-Q=0=#Gx+Sdxk`7_v=jf<D!I@ zj!u8Gz%kbLIqK&gIa9dC1QMM5xJS#D$H;R$DHB=q8s+XG@lLNL+`eMrbHw3u#YQ~M zAN1AnqOBWo_znEL9f$_}5`sX;-4grAg{C_N-+f=25}%#98%5uwdrN74bLhhHvR&ix zt=c+Am*9n+5h@7(`K)o~F{RYU-eVO{a{fhgkp-~R`R-{zzV9^uR1I&=BHi-w&->yI zM9FpZ3slN)ybWXWNmtAXCn-mJd`{#dE-!CH?~o~B4JYjW@~MzHDO(V|UIZyJ1J!n* zZ#U1XOjdGxGfU2&NQ4ySWWG?ie2cG1&dZi=JP{ZTk9gNuLVIU&0ucGBBH35=Om$qw z6Lr7n_%5&bQmQ>xF@qFn2Ir)Ue!PJ9JuM9cj_=LnNtAk0tEK3Cmjjph?w}#M182>; zEkZAMW8@k$lU&_VFD=4oev<1cb@P49M28C-t*w}F@+aDl!m46xOFCtbuDzuaVx^MA zE+))IkHU$vqC<{CyxOAkYqUd)7NE`JNMT>StIOuE18I6LE#^-td*|l;Mv6PMF$;!i z@gju?x)bPtF9XN3yeB+%Jc?p_Qn^P~c}6Y<_4(nTD>ja!YMB%zkT7WQgF1Vg{MrF~ zlp&;4=EaC0o@4NJHEP#+!n@JVW(N1Oy?{9_@BfGn`S{F=Uxh2u;;AaQizQl?>3FAu zeMGm;+v93XgGbf;F;z(%Mo_~2NS;rGh$dY9DNzbzv&Oq(m`wH~&=I<-MEvaGUY^$$ zB@H$2p1w48(WA6OHH5GT*>T??ByqdF=xbq=Q@6}ZjH*8JC_AQdtI`T{b(U4xcOi*l zz3k&4`qMS*(iD4)Fl*g0TYY$mOy6Sc+OS(vt8zp(8XXgLZb{u$f)qX3(9e&MYE7ik zEyeY;Utc;Rzjbn@e7o)yVPIRd@Ma^gt}y%P1AjB$kG7pi^O||zxk<46c8=6DXM%#5 zq;Qs?FHbAq0V&$o90G}zIODP~6=RZ9j@k4YFK?~MB$^|EgkW!Bk2IXfKwMwk%gV_5 zmapNl?!takj$k&=hanC^rv>#&bpIJvKV)4$D2K!Kc6UhrE9iHi^pup*ANu~C@FB<C z_&n7G?YvhuCFP_1%K1PV<$c8vxQ~g82OpOeH9To3TC3;Pr&v~b)7#N^uT*7}x$5@) z3AX^@P!~78<39&cGNk<9oLnb=*tsgL-eOYjWLpmUKL2{O)?%9&zc9Ihm{r;x#mt-B zjKWuIuhguO2N{qCli<%Mb1}P%(BQLiqop;>IX}I@u8Qn)t4+jFGHBUW5p0X8$HB>` z>OtmH!b@=MKFLNCf;!f6kS2D1Q`|P=kIB{;He}d!aUjxWtsP2H`hwES?DnnN5_#o= zlHg4*rw8f2|NDIr@{W}BMO91C#f0(?0p6{c_orGG5;%?~C;-w0u+Sf7!d`+GzIWM5 z-JYL<c30?2tt|(<N=YMI;!mz!B2M^j?G!&^IixzH0$r%QM=M;GPqcK)2K_n+=cdIe z+XdImc|PDPN^vK*I?3Zd{ZtPNtoqPvT;kn8GIGvp7*R@#(>whQ>i#P)Ej~zrYGCWH zEW>MN@TMsAXxCjSsLN$$$$ntj_0PoZSuw0Fv#cw^Mcq^P+}M&cpnx47Li;WtzYFv2 zBS>b~c={}(^d#jYN{=vK90JE1zx78lrAi%z>G(o8q}8h~d)qg4s=RJIKjSs&S@8-I zpe^t31#`t2r1SDv(34`bK*Yy`luM0Wzw{p?ruy9-(1jDfFoKHfKh7AheiOTWZ>{}; z_-5FfDts>3h_LLKIEbPq!s2p^M^JU7G4Gk+I)udel-ho~E8*0E0*X#e^LNnAp7rtT zN+<4~-T~;4SW*^3Z<E0s^jED>e81LtO-G&`@3Xp&@%|9ai-rD?8k>bZ<@OX$Vx1}- zJ!_1o3zfh5p^}y{lSJD|O7OuYPa~bx=w-LK(i5-a4zCD=JoIJh-8&aUO6KN2A7=1K zSBydP(OQ~=;7XrqO>rvKP@IfZ$>DaI<xu0)dUP??Poc_cJH{Dc_Cp7?vMGXv$Lj1g zx!X>=O!;2JBoT>h@1E+5ds3~Yv)!=R6A51Wz(mg2x}7X9I5pV*E!jA^iar0KGY~m1 z|K|lMXWX_P>w9Ob8uV6&W<9Oxd{6Zcpgry{tGo;OgZtLuu8GqQbO|VU!3B`*#SJ?* zTf?EsuGU|VZ?OSgK~#jwgN}~7foU@z2t)rL_TD=xs^?quZ1k(Bq_2V^StW_&*knW$ zBqN}JB*_^hOBMr&l5=jA&}1a%AV_YSoI`_zrb#W`#Ex_L-h1c133tt#c{6X#AHTJF z^*WqBoKsb2?_Ik-wX3#+&tJIvPx*>En>@gCJA)|JLr!bu2Oj(2K-s(`LCCvTY$h&+ z#<xI>G{OQrE0;z{XO!R0W+Y-a=n9q(J&#?*uZzm$T@Gc(@=90mo|d^QL}XnOS`I&p zxuRiNX@~SK@Hu|pA(mX!GnXEg`S^pwhn)`T$ZFj$e1S6Wzvn8he-^Pm#LLv*h2h!W z<~A6&Zwa2D6~!Let5u0LxW3W52{BSu9&i_X@!Z-w+$%M;ERpTD{e{QX<+hXzH}isQ zIcNT;6sT_u|4s<;gf#RBn7#PO(-aSe!~p!L=^cX#GxS6$rh=QHfE@BmF`s)~n11T2 zwOuu>!Pv{Lop+yx-+Zj*SkkktMzhRu;U!Vzk-z^^K82ve)DyWv7L>0b1l{cT$B29} zx)$m<Rg%m!csSr&u5;SuZi2c)N~rI#z1A(u!>d+^pY=Xgb7@^T66;G$o3A4|+~;|< zd>b(4CgulU<Y>DCfW%;<D26+$v7C^sKf^vG3WjI5+mmv_KupXkJO}j$kT2x8!V@z& z@fS=_kd{Cx8rP!aKmcqx|GcKW?hgV?`uS&-_TJ_H=KMv_znxZYeE*5!?Y~`qXHoeV z=;1$CEC0QJ#~SqSr?2?`EeiVg(;wtM-3I-0b3k9&9#j8+a{Df};n)pVxmXXmXb;UW zIhxdc54mgS<vmr6qUZ$oEPpQEa`NH-e)W?+J!?neI$Mgwabx>le>;T`YrSH2-f~rY zd#VgS#%b%MRdiOZGQ`K!$7cSv+8Z63wgws5zKmd>g<-J&J4(|5({J|L#F<m3qsbrk zZlbBCCL0@GK2+2C%i<raiF@f5PaUjU0cbEL0DDkaF%;w(*_3`nIqX9l8-j2u=aNy3 zUAK&zkl7baYI~{u$9pr%#<Nzx-9~WxiSvb8&n>S(r`nj8ijL5OshF+Q;`8#h3#DPO zA@r3PeT5*5Jf2Z9?yXvCHKED6MEK42oU?I<K&)ilexsbF?%kEufYZRx3%7czL`u`Q zHFN1Y$5c_r7qp~=Sq^tSEO7eo>Nt0ZxW*r>Pp!1eiTq`G?=ie<dg$B8+w9f@4zW^c z&B`8^R3i;XGB0_q=ism1rKv2vIC0F-RX6q_&Oi1lAR~xtqM%bApQ#_c@$d?&lZ5Kx z=##h?-qz5BqVT|KI;o`yrO!*r`OqJIxVp;IA<xOAT#{Jovz$1lnmpt0Q7a_W{tUdP zW$adl8qJO1XTx##{6g=O8YCOtOG;mkaXEWn{TAn)OMmomeM?x1ty?G#y8GVT{JJZ@ zTn}&GpvbbDeTWX9+nOIiR)o!o$6A~Dx?<k)zK8wHvA&RVJqBZ=Y~w5~Y?zpxtLsZ= zbJ+*XwEI<__dO>3uffnGA@e%B+l4dO$L`$I${@zn_d5YyyOC9=4CWn5Juc0P8d95q zd(kJk18NTa(D|Fn)5q7Al>%9@nlf8A8RxLp1wkBu+pMSdtqI|u{~OjPb6`Pbl%=?m z)cx^xVGb9k3pnQD!`Jt+>e!MwTu!Pvg_s91#m8U_DG2SwCEBmqBs^eMNYJ`p>hrns z#|@>ECNc08nLpauWH-teiDr^#Ukgsw-7)aUs)pl>q(+02m~0!M$-CC~arGBZ`yBcX zf4jrs64pZE-<h{hhp%xzO6p8qs2cc5TV^iw$i1(*BU)Fk(MyF=LWC!&Iz3^gzG9z6 zHaXOh`lF+}zbm7&2o2YtdBVatC&$p#2Nc_-2$gRQ4n$(PghjyH;g0}IzM%JNHvVDL zw~Su)PgmN%5&q%Ot`@uCZEZQ<Cr#;3H;gM{JI6L!N}j^YY<nZb28G=2<#C{erfi!3 zR()aqfcer}jtFfhiL#>g(+!Dwm~&n;9G*CAs-Cgq9yFXOAHA6}nNtVsZxKOT)vdKm zCD~7Jx%O+bC?R&eOz+;LY_v)xR4uVi+{@J*;?xfvipTfI>&A7R8a^nTlFY7uv>VJ+ zbyZZ_f6^x40d))=_=nA&=k+Rqi1@735Z|1mI^#TuRTO&NuFc?Yyy4v{6=4tj86xsX z1FW;L&Ml`zq&6)66`FDo16Zm*b@cuq_lAl<EkUuvh}r}=S$j7bs#eoJ2&>>-yE0w) z19@ZA#(t(Z<wIZJ^>$Zo7YjFb^+=SH^@um$2Vl(o)qD^WVjoBuUco$F35U)vD?7bl zUFDyyMqYTxky;X*s>H1JCYW{mkdPqpiKRBBoGV!EW?`3)Kd$$C0T+iO^Rl0ZCN~pG zGo$7e`_G~2MDv+dR4byDLk<B`OEdjAWub!mEZvnB5DEZoWAoUXj4_n@Pv5lNRGV<0 z98w*GnTW*w`Tk<$1>UiA(BUj^>@Sxon7R(H$D5Yi^admS#I!EfJ$ZjvrIfChf6o&e zZG~`k^&<I&AFb^P9}k@0G4_00u=sL>+rn7Pzy6WZs+OnDp47Yg{U69ILDRP-GBbMm z>PDb$UoloobYQ>}7QhwzXNqOc=3tV;5gHtHZS|#p$!sQPdERkeT)iclM@A-g<=;8; zr4i&-sSSF}NCeJ&Ga`>8GESJZ<|7g`B59Mu^3fjGACyzKFrdgXSl^W`ioW=FYjm|G zDV4K00ha#5Je-1&w(u@T2n^p3Vw}M(;ekD~g6C(Qy*OSUBC;<}1{Fp$ceseUf66?4 zfO$nf7xy^H(=YLKKT*`ik-Vw;4du~`LB;GiL%CcO3c|d`j8h+-Ru}9u+%ck@dV(tA zct-y<Mm0xK)^}j2N#4C|FMS(7%Bvb!u^9Jy(u3<w&wfISeT6;dMbTK>vZ(&%r0Qnb zg95kFC%&=FNA1&B;bCtTg{IeQf}hmNDeN{qn7`Z#PFQ<%lW8ZlIj*LzDZNa{KTAI6 z(K4lw0HuN(X2<=<I(>U{`gV!gEyeHlI=LBz)pcc+d%a`Hae*0fPX^`?Isq2fR^uLv z^M>*bSr+{a<h51426W{!PrH)q%w5ywh3XM63wn|H_|QfR*-5!)-%7{79j%UsR0TTu zo?S&v;*t6M5Yzl}evVZ3IhO=Q@}tE3cJFabB@+Q+BTgJ}Gf;yI+~aWPFNY8vbzD%N zM?MhH_*5wbpXuQ1p{_&%w;hi6BnX-nTL=$ZV7!Z~yHUmD?885U7f=ew;j!BGvNQ&A zVOp*t$pM8G=0ah~(p=oXgyKU3e`j*38x<IAJQ)w~RniP2ckvOCEei#aj1_6LzCm+z zP%d>e!AxI(FMb(sZOcMFn+{YzIKAt1|JR9ynE+pXc05VZtc#Bgf%$Q`lIy*X=?mil ziXe^}g)HJv0~YS0`aHiBKoM<HH?UoO`P#hlqU3K+KLaJM#p=>a;E}xfQ~Z#m*pmS3 zlCum6Irlc772O#wbuSI_S!lvxe^+F|6mND?{c6t)dlG|g^lseY8BqJGyasZHk7Jv~ zJdPvxGI>F6TzBnvfp*OPDVc<lLFKsv<(|nmSh%HmLd<_0h%Vt$w=_#q40LOgz(?vf zE}VKG^HqXq)%%1klJbQsG|)suUp`)6BmYa@yx%VeeY?#IsGnr-7r5Z;0*<|yH1_2n z_w|^4#8ahMnzVh>vvh{G;3|orCJWp_1>$LW2zVyMW5ycQE{J~PvCxr|B1Ob^k8=i% zXc&=r)W;Dd0X9TI8bg)RN$tsVl;iOQr}~5V!?EX3t`JXc=W<fh;R+q2W)|r+R{3l! z_l^3huaer?@3LAx_wYlXJp4w=dFA=P<i|y9n=A0L4aTOiFM2(~jjU>frP9ia>N}K; z<X_a47f{eY%RnAUq9(~E0>c*Qv*3J}@t#bGCS5O4t0a4i^>!Zufe=#2KFfOM8I3u+ z>g4O%T3a`4aGVEJxAD^W?yAjhrcdzD1wPycRU(&6LEao)TyW}IHhElap<qtQ><%{p z;lBt`L(7d%3~{91SSDySM`1tI;t*X0l;U*i901T9ILq)Mkbh}@=16;5ZrQl7Q_y#Q zWwWdwk$enD3GM=FRL-H`MA4ID=Dckgl*q$>4*aVKqA0~R;eszZ>WS@*59&y(U5$N( zfT@2S1o*fHwz3x8B{3Og^XXBjH^XkT@1mKS<t-NC9|rqy4SGu&%GKJsed<C`{)ypo zdH&a}8oWku|F~AY!mTG?sn=_67|V=2$(maDtA{prrtUjHq(z28)TP$dobvl&lXZc` zH!@Vi6&b=f{y-oRqRcvBv(faI4p_YUKVN;a&&esGs<wORH!l>|!Ex78(_S0wTQ_{4 zUR)IJ3oSiWvbDvIJ55f-W*SQir?_2J5#9L&q=)&E)~fqpudMRBxa?F?s1>xLJ%b77 zTD^&*5W7Hr9%+B-h5hALr16ydSVLh7898k}G&iSydo!>EupmI%WswI{Pj!^0f%!eQ zJ9M#+#SJbKwbS8^qm|;#6Fk9$QGwWdw)agu0=asJRSzF1{dx9xi=pOIBfPYc7v53+ zM}qnB<3XtyrH-F-VQgXKghNQZrP26S-d*gOkqCL;TrrfJGQ}6{a;@Xn`Y`I{wa?yq z=J$E5KH}X6*uBAbqnvV&U&Lbwp<=|We&d^Jr*RVlisQfPC?`a8B-vbm{^n-x)%Iun zZOB&t=ZURPwE+nJknj>yW_6omB3i=((;e1K)z`@&^yCC=C3cRpdCPnL17~AL`|SEo z|05RQ44mTqHLm$3Rpu|2@v?|h7ZaHdNN=HE=f@40$-ZS$%<|Y{6-JR!EtN0tPJ679 z`s5!M_MAq?#-rZqM~1dXOSwd*by1X=Iru<52HuUbB!1cwop?Q`=?UuUpKrREr=z*+ z3T)(i`gUSkXRQx_pA3(Sx_`9-Bccx;;prDeE+NYq0}e*XYvNgQS2uf9$Z`FYo0$0R z@c$&;_j&hc|9Wt<yBMSs$<}v7t07fU5M1=Olx{<T*$i}%O=5Cd&&{b@3KTmel#VL6 zC_WpxS1IJW8JyY>-MYtm_yqfrD!r_mTLp#wf~`iXD=G{d&P<QKZqIUgA7X}zoP8!k z$~#$e5q*=QBlp*XKAlc#!^<o34h{sFJh4V9v*p}CvDw&S_{a9qq)^dQCMmf^@_Uf* z2CtJ!0j&zmqJCPk>P-2P+K%ielcbe_ZgvgHz=<U1zqDqa{XpnEd%`!Awjr*P(|<gi zu~lWmLVeG=@MI+aB$%eKnJ2Sy)|1x9W}|oQ2c4$LWfX@h#><4ZY8f*W(iyNMX$IXJ zS^BU=HTV6P%azh)?%05BN)Bdx+4mR1nzl9A{ej)hVvuoMeod=X3K$%%;eQZ!Z>ON! zmI96~5J23w!D>1c_0GjQ``w?co0z66`Np27%XO&(pZ<=-oVdo{MtLK<w+gZT27@>E z3Dwh3)wwo}4Aabj)4g70O}+~mZ1~p3vhel7a9bY2@Zae5+n~_CeB?tT!9spfSJRb( zyl4*1TWay<Qy(PTAQK!*k))Kr3>7vQa!|deBia(nc^jVwHIMk>@t_%KdYE_I1@h{l zpm6ZJE7`UdZ=Hujms>3~#*S0gX(AG>XElCiJ{7%kKK6_N#-4k($~ZT^>HB4r^nY$| z@?K*-B;0KeCoJC~5LM><9Qmujg6OYYHiEw1{(AM|lqnrwnvvh<P=c2sphwAK_fq$e zvoT5h(ER_FWIz8+HoO}&(S4=0G-KC}g*Wsb%xHuDtv*GJl$^-8)pnivlM21Bf601y zroiJ$q${*Ge(ANh#sO1GKMw*pM08lR=Oe@bqWwc08qvH30*E#PwZdGFRbeZ4BF#u_ zIg+gR;1YK+gY>*;Te@;@yNER=<N!M2qBi8o!)X4D!$c1I#(?d^;>*D<-#o~x3AMFw zA6;Y^{{emQVz|bodLcQThq2TJm2zrf(aMZE83-fhQJImOHKZv;YVHj12tVjY)&RWp z5ow~^HUKq>+ev&Xldh?5$B%RHfM-BtneL9o<w4A!3^dV>J_)>>-u~CJ+($XO&v%j) z{bb44s7LC4c=ucm#}<aV*G)~WnAL}ML6y(?wm!`n4IL!;F(=FFz>-%xjJs37+r^~X zt4)50Stxi(M`7vkMrR_Q79l5I;L|DeT2$EJ6EtOkd_tBcieTWHB^U7goO|qW>c1^q zxjS`{@OuE_2@#9OCx@ROYVU0;fs}81dykq4*`Fn~@F^{PKJucR_O{pX%NG%DTf`dw zs#@QEOx=FO&^E7CN!9tpK~rH$(C@YHsNVqNuyr}!xu`9pS1E40aiH*S9t57N$ZF1Z zNPGF4ZuIxPr=n9Te4?>_%+ABhyesBT-{IowjVJHZ_^R#$c=|57`Dqq^^69C_1-lh# zkBry%?t&(4`^}A-q(C}-r+hM)7HAW1+3&8gFdIGP{H?qnQz_P%U+ax}>SM(_0%Ktr zYE-~Z1J^ZNeg1aiEp_w(HJ)?qKQjrpd0bS^2!{H}!@DxCB2FLwR>)a`;~vP`=tpsc za4%0O=QT|!crGY?iVrHhdvc_*UuiWUFV`10)soiKTrBr8?ug1?5*YC=5Jk79l>0rc z+?-f^Df8ocLs0pUtJdD`4^B?}U$reNI~ajuJ!7llo2>fF%5&FrRm&79blPFLx8&f; zjI=H^bCg+E$9QA0KG|6^<&w4@!Y8$m$R#aRi<=lpxmm)fblcKTcP%-r3|qFk$@X8m zYM7~KKg4eaxLqFdHynTcEz3d;0Nkd<iq@OI8R`F$I)~mv#I>zneWO^^JB}*nkz-f4 zTA8j->5@NXBi2T(jj4SrQ*D?Obu>he9$OpB_CV!mB&-5?uc&l!Z4iCSvJv5^shYop z{5VRz>S9lG9~=j74Gs1rtj)Bb2#}Y?Hb+)66YHdXln0bB_0o0w@u4_{ZNJ^<0+xwZ zjWVYpo?}zmqj1%W;|}K^%9B+zeP?t_hgR_Uh~DV#K1eIU%I-!2U8Aspb{iHgDwkpt z`Tl-D-3<d}*#JmOJc3^1*E_BU*CzDNW}RBAVg(Z2@KkekmAB1<DFGN+JZ>GVu>;>& z`kzj$mk&QZ8XkxI_+|FlZ%+8?*oLR8!DRYIcvSAG_wRo1w~I>D#G0E7Tdf6pT3`Qf z5$g#VmK0}+-Xp~_hm*v%N*3OUKStbo3D76Bw;_mdU%W-=X}?8s&Aq24SZU4WV#<dF zBfnnp*`LXZm!SFI+>!l!+j8V_EZuQpXnu~x{D2MzQMcJPzx9x!64mS1xq+?wC9C1o zn5_Qc+IpsItg8Tb<!kPrkmI{XAF8;j;%$`Jnt!|ZB`0-N++u|9gh;pd+rjTKiKp&E zxxv>Qbj4{neDYp8a7}XnIcEBYkh{c;>{F*%X`?-0cFdg%t<Mm|ug@C-E9~Hjq>q$L z?ywlB$o48bR!nDqt8w$Al|w9k|L2>WrT;yBj&{rKgZSmTb;*X!F>v&t)PgN8UE*#T zFn%62d}+|+WwnOit8|$Z+={e;%9@HggI1vAQqpDHCY?d+k)=x}47f|LoX4uym4&Bz z<;c)m^H(5x_kxG>d6DCr@z=kr7u*vb5PwDc4~%{$i)DVKK1a9~1U<by;S%Q5W2mR) zNA^v>^_Wm2*Q;2k@eea42&*UNd&pf`Z7C>s<!)9gI2hnpC&xE6!Ksc6TO@98hFzrN zZ2;R;pMKXp71HthPb6JuiEfP{^O=?Jimm_dmxV8Hd8~vfgI;*wZ1XmV%K82FABf!U ze(%!L#<hMVPp~*Zrk^lGply*H4<mZx)mzJ_hQhA3U-YT-JP749LFfVJ3+Qvg&JFVd zH;{<)98>>8k{2odXA<WB^|Akh0NY<eF12P)x_wW?J&okYEU<*|V>rL}pB#X;BLE31 z{0<!}|HN}gL;E#BBM~rcvun6|PW<J@*R#0Sv4MR!+{?|fe&{y@w)YiB+wqv&Sd5bm z>#B_8;qvAds{>}t4UAa4%I?bT@i9~K$a2kL(x5xDuE*HjE+uVfOwd>}V1!|i)<@4g z9o}W<eBsvPJe`p~pP%?%)=lea4v7hwt<a^Q`s5>*G%<(p%oRJA0qODWkk_M#Sk%Y5 zB1RyxviI8%5OfzxHPrV7dCsKAO>S56+;L{7h!e0o^X@UU-127pG4&(Vgw@4)DF+9i zF}U*P4SRbo<n0sBb1IHYbbzqACA$lE+Gf4V;z&*;I7<ACD=YXV>v?V)-~EYuNDXSg zYA#tOnqRZi6_W4zV2zkJl|Adk<@_~w_q}$*>b47*8^yPKR^emMdXx|Ch_-vZUjF|K zFrSR+rR(G#QPd}A|4y2}R=<eQIQ9;5V)dsU4M#l{zwR>r=?{faa$>eooP2S7VG>jX zsXBJ%e0dIv>n(QquOp(fj{a+k+>+~Y|N8cQi4%ORVfO!N$TH}Pj%`i-dyLKAnupJi zl<!>+vehHc)=we_^tIdSE}d&bSV>F!9*A@>C)(DSRU;mgJ``OPAsbrrC~B1J$A+J) z*N=-XX<y<Os`iD~CTJ@bM^RMK1Nj2>>p)O)5RC1@9~GPXkG)%LTJ+vK-3g!BM5MBx z8CURVq3?^ZUTf3d>FA%Upq$N4dmk$G7MLQunhbF*tl?<%WE9RQ-ifltS}TFdIO^`s zAgjQlH)Q_4ZS$+Bm<!)6Wn98$I)l5#%@L6pAdz(X>ZCq;#9`ue%YAU9@R^i%;>H(` zE4@}c=#R|nQI($7-jn^WTwmP3?#$NvZDxXVV4g{)zG6gTeZsCk#I_%*W)=M4=EOF$ zj_F;$_UPFUx3lH8tK@G+^dcjqZf~u8=KPd?>07@?an--IiI6Adir-F2-{d_NkEbjs z0^*lWK%m4<DQq`TEcTV#wICr11$#d?Gj)K=t`5DZ-kjP@@JY|*IhId*bb3#cVjdWA zI28K-y;WjG+zu|;V@tO0x!!Iq7$gKbv?@M_teyZ2{-!g+p`O&JY&xgW<!@;9K+7NM zA@EWI6JEILc2aMcn9!aqL$!Im)m3oLmn|2LAI4W<hl72Zo*VB;=2w2=49-A0BxJsw z+A#JUdvoXGhZ$2(i9OXe*L+y^CF~Vp=Ofp;xcYziF)%0|&R+MyL^SL~1q5+(2k^nh z;NE=%XDpY$k(tEwBz=1Fhrt?}p&gcUEqwEgwRx}3xH3)%T|fg&Rs~69uD`^m`+|2r zaS}cjuHOFdj2pJsV%Fhs>sZzXB8z`gO~Opt5-{HwI7}EWd9=RstcPwr1k?1v4xLl4 zmo^5V|DEafdNZmXO<aRz)#b@{5v5s0x)CRZ%{hX@#_#h!L1ebI!vqh!%_Zt<b(;x= z#_&lX7C^9<<{3RAipljJKEY88u48zmQL~qNBvcf9O*>3HRoCPGgh4m%Fil2bRL4mb zVC&;cd=D#VOTLVsFT{Ar5+kbsOpdAeE4OBs=1B`r#peJm4^UKxC)ajLUwR%JRtIa% zDQ@R};gNPR{A{XwbBHlOzpXU~p%oem;MFT#w!oT;TV_N;M<ebmZ0Tje(4O&C&aNOd zA}?-&QnRTDUikere<{Q8x<Zbo&1-fvBsfipeM$LOWRpDBMRy;2_QGtN6-FcIlMxMb z?B_-2C|=R|T_?s_Rjntcxx5kAAqPus8a><5mOoJC;KL&}<7m*BEL+APuhxQyx8<vX z0^SYQq!22|u5On}mZn7r$1CXG;&a0YqtnLXk4mnz1yzpV!rX%s&b=zObg)wbBI$7t z8n`j<lF}wLqT=`9r;z&0>H>=XI#VYZ8N*GtV`sJbvIe2Fb#TRZ1X0RdTaaKC#4vpk z1uWrE*R9GahI%XC4SR#OQRJH*!>dvhF!DHhMP^`9pHj>EqZ=Ef(s*MJld8$)&C5Yq z;Iy;fw{P?9*U@x*`t_9#h*OVPE#p^HC=_om(_r4#^EWVGP!6u<opS7i!5Lv6Y>BD5 zp=2RJ;ezWdyI<sDc!8<AmxIoxTe1P^Wf?O~#~&TqF0vU{+!tXWq*fFf7&<o3)#b77 z(D)n6#^uwuI`ZinKbmXjb6RXs&M}94qdv~H-jF}h94xoGeS_2E<+Mx7H3Z!wna$75 z92y1GS#4Rmye5jr?sPsD+izDyB*1Z!?lEmCnD>&>wW`!W&}Oxsp?FJ`-;$o6{f)}! z@+xHlSJp^CL^k?CzdlXDvnM}J9DxbE<;|z>z9hypS;QSY|7mjp2p@MBz+O8$J;_bZ zkK9*LG>EjA`iZJx+qWiavwB=QgTS(nqw#@CA`?=kY6RF-xCb2?2|agAv~;LJg<sJf z<SZ4nu#Z-nQW1i4tg<+M65b;WpV@HFCPFA~MvCii4z?(a8O;=}pb5+OKPMEyoC7a! zhWG5Yk26+FB)P>sxqkoRS=nDN;ND~QN5{2E|4AH|ifPZDG4qLu`<7djJT83pm97Ut zNkBraq9Z0aq}CoQ6Czlvtsf=e`>#ZgU6*UisUKQHtM$($noMY$yNLtAxY6EAs0SoE zrny!hX5YFz9yDCj&a_JpCi@$`xA~hJo%8*C^p|H~@|)__|A9C*`pbK=l-$sdYSY&} zI{W53<K^dfBcdsH8<<;cx*-y+A(=Q4cVs61g0lZT=NK$mIgGwgT<CBodcX8oG1T#v z+I6wyGO)spHG9s$6pqvTpUg|R^GkE;pIyB9HeT|kPaBXSpxGUh%Pu(=$lyTsB@l_d z9@)VB8Zw7#eeO}UeSlNvz>O;%&hJ)V@dxnB(+B6h2!u?GKUc@xll=KolH$N+peDj9 zSW9K)HH8uZ+VYxO%WBg%jGjk)3v3&>pLzOC1NQ5yYp*T4YzL20FI$*<uU8WtK_x1u z6!h+sC2Pb{H;*huAEmtjR%}k5e2<1>o<a_qH6LYM#`%FS8(}e`d+x%fXP;xgFn^hW zIqdI0J16A4k7~Y}r^`yjiS-nRkKev$OO;Y3)1O3KO!>TeNCoYVT??e-W|`4fH0+#; z#IVx{y$z>jc6KSMueD+U_1Q7P4#$5o?RFm<F-mzW4w<Sh`_baQpLO*N53GU{za5_R z1k7Q%Ai4G>E-sGJh~c`QiWP?{yG8t?{|)qe-`mPoMBNzxho92DN%(2Lf)QIy{^_UX zD|GmAKiL1WQn!61KJ4$60s@y?(WKR<xuNN19x0`w6-RSQQI{L?M$3`<G0V1ZVo^S9 zm+*TG&y%ZzO%%l^qg)Z$QS5T{KkwYL4<u^^j?BC&aru7snGN|6{DS><$I9Uy>lr2! z%#PVMeD99pX2gc#N~<DVbmDn84r<wJSF|$x>uXlpntPDIemzIi`xSRiyVrj!rQ4px z^hN$B*1M*dz(ClyxrTFj8e4fd&;A$Ga~CX=O9*Am0i48yq<2SW2>n9rMKftiyM8Ff z%>msjRrJssy#>CxSoy)i6#V!0T$o2+;{_EGzcg)XQd>o~i-sUeHD>lk`5i7*wO>DZ znBAgIAx>&}3(A9EKi<Hau!@Q?!y~J0YoKi&8-(^%0)sab5c~3B;M4z>-07(Jc5^*O z-s$(qPQTKRrs+Z`CA&q|-w2w(&}xWH>x2C%?c}`m&RU9sgferMt^ZuT^O%p*dM-3p zK}tvLG#|HBJ9l7o`A!4i7MpXEbZ=IJ6{0&^G6yW`4~{JY4zE5eeyf_rcDu>?-$GFz zUiDf2{UGO`VAR2=Z>0;0p|C%f`j8==(ryw?EQ7|0*`4rg=I!qni}q)pt*8q!Ye>%j z*_{m}(G}?HC2EA{0V~#+Y<H<Rc@T_YxJD`X%^=WuJnEAW+dbHtw(s9wE__ro0bbi9 zY2W#`92Qtiqu2(+I+i2Xnxi{Cd+Gndc=&XkJggTDlZmjmU|lrWpiMWLCWGT+Nm*2c z5NF9ZhTCfNF-SYd8{Jo)>9i75NzGjPw43_+bDv3b{gtCpDc5fhrEzo5le2d~=J^gF zl;%pCK_gqil}9KWD7LcmPY#`&k?Y^m9-oo1VxP+h_p5UoY>HtUQF{fCvzL{Ff5dXv z3^_@A-#Ggy@<I_EsU&-E5N6nMak$23mo~ywu|o|4G5DefXk%k{6vNm5A_A2>dHKJN zK+VE7Q2bvIyW)R{U9;@{tcd7P*&y6&AKy{A+aDA~Ki6~i7}6E|lAd=elC(MUdv>5f z@0+XM)yC1P74<~<v*NXYnJ4pR-+uK)0@l1QU`QLq3(nwC*>4`Kqj)Xbt2>Z@P@rKY zO21y+>JTluqks5pc3VRfNF-@il)p9Uo4Vy|`THOzWOC}|DA%@XLDYvEENqV#1|Bf8 zfrQF@pGy#YxgrMU^%Rv-80^G@Xw&a1CcM$*Z9QKFk#6`~4cX8l>nPFC%<G4vyzT{f z)a{}DL`i`R2jpp0;E9+K*jH_*DsU4tTedg5AE#VN`zV&mMRTE_?eCP-*`LhSRL+hy zN2@>TtOLI#*NCSjczH7`-SzH{H!+QjQ$lVqPdn`P6fO+bUlIed4WIKpD3UDhlly>Y z?d_bxoX`H6t&{BikZ;+&Lw>9Z<;fk!gQyjWYHQmh;f{pL*mpU_{Vw9h?Rkk2R7;1l zxUIHDjic-0j2(?lgFk-mNK=~abNpv0X;5yxtxMkUb=40IhJ~V@j-mn)%|=62)Etxr z>4En|1#$)_vdn68L?<>u!3-bnha{Zg0%OPSybz)-m@|yEtBAdAd2;*$?v}S6BlSog zrIeJ5SRoR!AAR^|SP!7MaKuS_UsCCdq*_}(5XA`rZEE^+*D#ii_WSyjhSnw2ddU8x zP~H32sS=CsYpHD5Ko5FltDn~I3ER%JTl*ZanRU|@XnZ-~6YQ_O4W5iAcD+m`KMcn# zKed*$GLG2B^}c#q_B*3hT4!Xky4+Fea>(62v!H>6Q?#v|Sw9d`q%KmuWD08^trz|% z!`SSJi%3YsUt8E5dL@z~IM%dl)^KY=>yifWVgjn8AP>LmaC;x~h_T10$jGHs-&oU5 z(wEc>>$>61H*eR$^*F7sO8c2jDkV?g?~y3Z5ehG|$l=Hfy|38BZpDO(ms&<Xu3wl; z!Pe$?gIX}^me*snm^56infb7pjx3+8#-*rx;%}=yOZegzs2dmbKN>=Mq_rOZq>% zF8sTGB0bh~k?rvZ+3?SaFi$f2ZE$<4u^Jyunpl*cuR*&wM3&{%eE*|~qIWehwS>W^ z=u6^IK{4u)tt*Gm;`Q~yy%Fx!GbsR~Q2X`HaCy<ghpbD%V;U+RrcKLB>vBJ=EzulU zLbVqnq5w*HaIG88dLoYN(?o3teA)Q2>_rA<VQu{w_`Qc_Hv?LokaIj`*tCGnK&{@m z)7ER(H2jjPN^WFPCD+v2rtEf#cw^>A<IY2`kM{~0<MC=%i%zVe1jl}Bw!6Y<^q9PF zWVzM88|Ht_Ikboh9p{s^{6gQKU=7Zp6e%popTqWfzzUw^V0AVB8m05=(c$Yn(YMx$ zlvPTfI}be%x}cUH!W8Q%@iXbKpJ{o;(ZZ2W88RLp{-ymuw&-o2S(I$Ar-ZWT-HG1! zzYG{%zo*}h6#J>{(eT=imfG;i{IyjQMGMNk`CItrFcMq5{oV4|BIxLHNiO>3NX-i{ zYrWl2svu<`uXLjT#P`|ua`OYU{2Nqglgu=!9tEbt_zW>+yxz{$ik#PWNwZ&03@zpe z>QX+nsJ9*P7aB5>TF&lussr-f_X&EeXVDkh5@VF$Ar2v8m-``yWC&<Cs1WolTQN-1 zk4#NUvRy%Cyw;;7CFT3W(_gEoRtDq^wP4vX%a*xeM67z#0lnBM<=fm9Y7hv-@QVrf zzW)jMdi(Cm|9=nPF8v|l(daCiN|S64^2v~w{@#F0$#H9T$Wk;6KODg|fH7g*DB8&# z#)V)9<;D`9)0}J$jzH4#bSei97<FOVBW*d_3b-3oUK<%myX_r?rZKnWR<NXlMH&>m z|K5$`X%^V_Xg*a6;W*e@nUj{}9x7EzH>*Pdio8KFsx9sShxI3LihFOu*q1Sbi%J_V z87Bv`FdRu2TN;2Ei0M{>eFx7R|Jm8iJ*tHFBZ6H5NQ6u^44jM$V0LFpxJiB;;vN{# zO|eut?iOgL>g*s@d$lT*DRdjf<h%XjQ0XoH5{OlnR%ul3by4x<PQix7ad8&27KzHT z+u0*ZUe8t8(zxDx&l%|s*eTQ;Db(Jrln0V%^(rQ|z}Zr{P+`+FO>Lpdy<{J!eYpmq z5ZWzLipwxwn+@K@njy}!m?Ta+N&<l**&RU5s8myTC$__pY?&G){I6i=SC`qwl0S|} z*-oKb-oX0!v4{RVg`0#-)}yePfzu|<2HmU9CK*r%cf84-NpXfWxA*d5d_MP=c3+EF z$o!_`!Dks6JWSNBaIw~QOaZx(|0`5p@IPV!JOr1moJVj7-jG;Fa+_l03A`{)%14aG z(e2hS@g<x+<V7q;hy}cTe;MYXlbCXLd{dH%tm_81FMD&x0U{%corgKSBxgarh-tm+ zv*IpZ1V*Us^5;}rEK5e<fe91YY(f04pow${o>bwUom3fo(8_9Rnq;G9natlY6aU=J zp|5s-*?=i*)9&opqan=Y$bjB^@}_t7J@r&AU>8$JD&E07t@+Ey&;g@m8s5?}<6}*Q z=F%zFi*UxcF{p-^CFPPs7lJ~62FN%arcY{z2xyiV#7MR0$QTF@sUsmNYie-=9}$64 z{IYY<shGG8T$GI$A%hn=OVys9wOP4HYOgPYO`NzA<rM1AC3dYXgB+@PD+FB~9dZ~` zW+`v8<KlsrCc%=t$6?@lg#eXQB}qX>i{KZr<>dnhYrOW(S#H9B-Oy=Xt6Ee#s%Ete z!qAd)U$g~#^u{R(_d&uebeey=oE;}#4C1*4+6uVv3cQ<i<<!vJy{$kf>sF{Buek^h z<MP47+|ah}uP!~~Ww%33nM0@3{rAg<w$X?b%FrY(mg+ybQ5ntFkN5FbHi~A1Bze(# z?vpS#jZMiDI1_TZ@Ps@O|74-d`fP}*x)9wf;5sX1yx1y_wNzJy1O-NN;?(RXO?YjG zyZXdDdZzi5N-ZHt9*Qku-Q?{LY|u;z_`uN!7dVtW)mrn1H()cfnHqf@oJ?2aI1r(g zem2oc#>9CeJU!M6i@mGmp|+2RD*}PXbLH<3xlB6lU@i93Ml4@uDWVlqqrgg8isX%i z)|y69G^|A?Y*|_`OnfIs;U#nwv!7UYTTxP&u!S@U_C?G8sf!BuI+Ne}2R4E&rQE6B zOmND;E^y7opZROUCK0*0<g;!Faz<D&cLA@IRk=73f296GUQ!TYCMQKE{4NbZ_Vjtr zq|=KP`S%%_W^Gi4rLWSn!zyoqH|tCz?8abB88fZEcq(*ede)2R{t(^v%o9d3mu@gA znOgR{ziP-43dZbhh?`ta?PUzhwd^>>5^z0`_4fHa;U9sd<Y+P}vKVrZ)Y{P~TDjyI z_#)WDx~16E#lj-~xx;eO3~8ovo*aY=Q6Z5`X_x}n;xKScCEYc0<Ac1|y#`7&59qZB zJ*WjWYZJG3;6}?9q|0nc@U%E>(G(Bfd$%ZY_T5a{W8;`IJ2=3dLr#Dg#7)#KAKFrK z8SEhWsZ@J<Zc1_;86o1IT})c<r|wvf(7IhKfo0AdhZYLu(OPCg+LjYtL*=L})p-aF zn&S@YDygnIm`#3@<oU^&U6Dt_qeC58YQ6Qg%fn=uKFin7+C{L%0`q2BEW$EYeU@L1 z5)oj#fgKMAUrjVCF~dNNV6a5oiyM4mnVBqpnFpmHeMB!b{An{nAQ;S~c#Mh0HCzh7 z4VTB6)vYwOdMy@Y{4pB9oQ>EI{2^y9>_ismCMv#n_QpT2GpSiA7TDeu=&U$Y<jxym z%T`p6RXj?jCO2Bbi{<Qg>f=g>nTT1{ga*L@Tm&pgrnn<eU-eLP+~t+3_UQuQtdt5f zh;C?S%$jb^dD7uLSZHxk{Ci>2tHI9bcHHLT8~Bey)RdeW#31b%Bv5V$F+ANdk(M-6 zk&*oDeIPF?=bOXSMzr$M8F!`_xv7B3XMiT-&`6C(9T#S=@6P1?cvETS2a#IUh@6{v zIM7@6CdBDQnJ$hsNCRH9d+Ko!Bwc$I=+-6;bT@igJhT$cLeDl78ffpR<7kG8aOzFy zpB%`K!gTONXzt+m;T(k@{$6j!t7Qh}3(Mx@MO4UTdn1&aBb3~wGZNfwy1K-Sfi5!9 zPpYj&T4}*74M){$?^D@xHupJIAk5BFD(6|6xGc-s5p(+3j8b|8(sEc%cRBldhpuXf zud~pO>z%-D?K31F)ZvJJ2D#o`K4FpSFPY<HbeUR<T)VC$#lvKnb`@DROotSP7Y=(M zBe6!C*|;jEOxvT5N^MB^MQ@)h=y5SM>}%Y#{qVBI8FXek+#iqTp3AmfnlB@(Xx<ve zSqo)1?%8bDm>@d*r9!f)J1{K)!CII@HpY$Fv9t{w@AB5+HJz+Xzy&JfYx2S{dater z)x2J-->Y;R%p86%?xTBoIZFvvQa3R6{&EBUc<g=bU}2q0P2mJ@-Py@uar5HQ5{uYx zf4cQ9D!9gQeX$y-llKc~t1$LG8ISG=<7m@IQ<qa~1=`I}xlz)>zgoD|Y$Fyzz1>J| z+FpkcTCH)pJb1Zws>C`fBEnU+L5MRD5|8sv{7A08gC(EzM$cQ}bSbm4#5{1dFeP9G zWjFWxmN$B6YK|c9+&36x0C^xwoDjp5fipAM(e-!H(D62Sfh?kCOXgDB^j_;L92pw1 zC-IMLpkjP8^uQwOz(bFRfGRAQ<Gdy^>(1ghFWZmO*1U*)I<9hYF8sZC(aDOL)DdOC zYQlEk#92?={(v1Z>5x5pY-TYjg3)rga$j13pFOwQt@#CuOYX2yyN^+-VZ~s`3HgpN zEH`s(Dui7`<b9x|-E(B#QO=I9;bj`F7nM#*A6<_!=_VXjI(?8_kH{ltxh?x-&*gxF zgvHsD9y4-I#KqTFUxHp)-T*BbwoyLRr6bLNwFcA~!vqoTZ#YY*%Z5MqLcJ#P06PQY zW*T#0)ZI7Ax{Bn%BH;sxN9yB=H?bW3t(yj7R<P;PlS7$2p**SfbPwUD+apV|Ar6nt z&8z=#V7iZ>(DsRL@^e8G(pGZ03w2?%n}2Ovj-;k|*uZq@#Nk=ZPbQzoXo7mjvifC* zU(g_jo<wd_%56dI4D#adGUt<Z8WRlWcbWUZ^rc#F$WUgcroQDIZbA`ikvnu*aJT{R z0ixTv@*1=SnMIF1#I1XjHnV6JDn8fvIoT^VONWUak4JBx^3&W-T@9O0HcEB<l31rH z-mto7-r8io1ysqGMa*N`W?>m?OKkaqJ=8_Oaa=nH*ZwYlFc&H(FOmQ~MEe?&@;xHm zTFI3r%VGj~YLNK6Al@B>Sv4_Qo!lHu%3eoBE)a60<WmDY+_Sz<oP4q+_Lk{tPJ8U$ zmVEDRLPVK}lfz;7y=h1}dDtf7Y$6WZgljgp<f*l@yCvD0FqM^b$dUc+V(e2$s9N)H zdQfmzBef%V$!kckiGUdj3Z{8T_V$36o$L?8!WtFDv%vWyo%CKhM1L%7ir2?x#n)C< zH-yW7Nr`hNj8s+Tq<%T1Sqi+Yq(EO!^K}A$I0+d`goc@>eTiK-Zd=>dM|kLL(sHz{ zy=sa%_h*eZ-TLkPhc$?u6&wvtYvimaamy(Sg$-P7fk@$zoLqdbdq~&T4is5kEUqsH zq#DK5STTh-nZu>6QOCR|%&FIj%wnE|WC2TroXSX}e4JKWt+p%m&<9POeprTJQyVFH zZ$xgtL_X9*voI9>Mdr*@aBec_6};(HAn7bq2kv+%%iR#XR-)C4uVy7rc2X-GM{7wV z52<l!=4~B0GGcj9`E+t)n5sK2i?VuqZTT!|@ROO(22HVU^(Hxp6T9CG2D=fYWvpMT zhWQ5agfw^a=(Nc<<Vtdfkqd<FE$m)hrl}k*N(%Cj%ks3{hQbE7GZsiX<Wb>nUA8P! zlKW0JNxYXZ6I`(xK56kM%)xPKQXcCMZCE%QOIu8Gc)33`nKd#rd87^@@#d3C<JK#h zIsJ*HA+2}$Et-VEAyB?7ug5q#jx4pp>1!a+=?58CU{GjEd#D2pyYP{G4?!TkzbSy@ zOV@#~e;xj-9sVT*|5Ap3S%QCA#PjYTzB|eGABLy|kUHYZA9ET~571cv#7J)UM-Hjg z)B*GuxQ-Qf{&%?pNS5{w%_#+FWpvU{05LcB){kQJ_~$*~3R?3>Hb3K?^mex^tfW3A zlIXxR1sQ(f;ol%o=g;!B>*VbjH?lk-E{tF!n|o<%H~OI|u*V~amNrKli*j8-;Hr8Y z*+HPstE#X5UzAN5!b3Fhl*kGuZ+6&H4TtP#%Rv-4Uw<HFO=!?9sbXQr?JDs5aeuT7 z-6ms9%v|HH5oMr};=!_uJ6zH~lv5nDVxiV)Wm@k#H?9Jpw1>(%tYBHC3?h-b*pT+H zf?>67bCZA^upBfU5ne3aGrkDamp!1eX>KJ<iCMpR9r(FzITm=ve=i5^U!@GB%v5@r zb~Zee$i?CM60#XLUEsMiXo#bAJZaQ`P!u1s#V1@;%+Wwl6f=pGnJ##kHHb|t2lA}N zp1D?>eQ9P#kl}_Nqd&Ia7jg}Z+FV8-Xp0>mUS|1{)|NV-0Np!qd2ymJ*FvNOt*m%G zyzo_a3(|%u$WgS9teh#3y!9Z2vi8e6++e>@!vtZh8D?>&pG#gz!%O^S4+|C1Z5L50 z&CK#Uof{oonT(YebcicEZ_e%MW1)1yhJbsppbGzc><%()evc^aw3uGz>^@(PY@1ok z?t_q@?dM|kph_GsnX>tX%0?J_&09@Hf4rG<X$pd?m@J;YY+$zx$ywmBoY|WJfxhBt z7peiqO+0usrA)?h5WFIPhUgaM-n?ye=Gszo5u24}H*Y$!`)4+nI=pAdVyMo4c^TE& zA#Mrracj8TNL0;T#GQTdX5X8>PCWnpQc`=X=}49+{-+QniH)Y58a~5ozEJ)N)hN7F z*Yfisi1jw`KiM%up}t@J^X@Ag<f7BWL3HE_E2tVi=n+<JM~s|jmw{*%NNK+)7BG7z zr@%jY9Q`oFZk^U3wz;%ac^_z%=@GezpG)5CgGs`$kuNnIdl<(+U*@rPzrCCW<N-3Q zw)-UVMZFFl5R;}QQl+!|;Q7TRn}z18uv~z&uYac6IoS#Tfp+H=Y2E^_|Gbj<fCz+~ ziJ7<W@1_XbEs8>xP;1A2&U$^ENT9ZRv=g>~%(~}XGhov?zvJ2ndF!o?uSx4}o!@(M zMIpi`o4vNAi4S;vVNg8j7gou=VJUK-U?0IQ-Z<1}WCCPg{o%1!1DfSfBl;J}cA_<W zALu0tn4Y+^lgzu_pLEiXkQ<j4k1Gm~0nzue+xUL|@@KTjsyp8Ex!lr!=LUy{wp4O7 zW3zH}7|%t&eqd&UYE1|pwWi8DcTlFP)?qw7i#xl?IE_AdXA1%aPAgu0TgrmmKglDt zl-hUxfR#5jAMI>2e*{FoIa_w}S)cNsa|xN~qboMV{HgV*WA{bxTd#!J9aQffU_N>> zqP^l30c{3!4|d*!H`lZ#fHdC>M{hu^*WQ!4GD3f!`dJ#`XrG4I*;ZIcH7rn!j+M}5 z`pJAO2$Uec8g+LkQ!bfy$^-XM@elR3+`9qz%*JucS9bN72)s@WTMa;~n=MH<9F2cp zBC<KV%yWpMr3*G+&G?Z^cNhTsb#n)4nU)90Oz2eH1VE8bqnb!#1tx6)==!$T&f2&f zMN#bZF|3_kD^LJL`^y@UI}YfSgvZMnoWmL!wTvF~e6|C;toyt%EEDb&yFYh#N2Y5- z+ksa#vm6ivXq+A}e-fGe%|Uyx%tLFWtfS=tWC!oJIovE{`DS;NHEo|xLF`fyP|j%< zA74X-5=F00Xi{y*0y<n`uiW7!lw!(AwXj`GEN16L;aQ%qN&WtkyPM6^f<)oymd2$N zpBIwgjZC?YgchWH^4$~-ILTGp*+ob0KI6|&tHqwZ3Twl*Ur3;Jo&DFU@1_h|?2&~- z=hB&KI2Je7Xs1uEf}|UdI4shxre()-WxSqFFgXC9*q{CGF*(|>VhVhFviE9|lR^aV zpJVCdfcb%KX)V!_ykK7$>;zf7?P|n4Qx5CyaB<8*ca+M}`)}+dRSZ}4vDS2NJT#I7 z+dcO-xCL&Xmi@{O2-F~zu<Xj0u+ow*fx>{PVY?+^bke~Lp1RX$y|`~V=HR*JveZof zr(!<_kY&vfd_mYk<xEFTfHy~fc3PT!&%Etul#TaJ@`9Mv8#LFzwh?>(WYfro1HYoy zW$GcBBd~3+q+G0}k-VfRV<<9)x?__vU~`B!AK0YE?KrB9_HC~(zrS>*B}(oN6};US zI#LQ)Vq80?f%vOgcDnYHUyGTg6Q^PI5o$*^9)^rZw19n~7bY|gg}e9Nkv6{EtnwhG zRT@7gPa?!&)~SG|Xmwb)v$dZS?LSkpX)gTzGHCWE$II&C0`9XSzAu{!DNke`96>m; zzNt@loSAJ(^5j)y=b9=V`E3THs}_CwI-}oUBB;Z#%Vuw|HYVP`5t|j{XIUf{U~}1< zEY&EwJ#YsKOt+51r*S!GkCdqd|A8Dn1j!=^Lu~Cc2iN4(@d3w@7bEI~y2=mPMgvn{ zg+1=9ZO9#Hv{B5u<bcQo>RaQw)FPK1KAY5X!BWP3CxN(aJ#Q)C0t2*2mge2_VeO_@ zn6#GGeIVg;Ogdn<(|U&L*~`g2!YnP(8QVG0VMKy%3y`Tfb7H<6yfs)Mly?m@nz4ax zPtV(Y-m#stYU4gsj-=K~JXAu~OJo}mP0RzqiYZUX)$&8&dfO@S5xXZk{d@k4saGL7 ziSvfSJ|vF?(qgTrQ+q&Pwg7oT6MI^#sdU}o^RX=8o#gV;$tj&z34aEd$-N({U&s9) z7DA-kkE-ze7v`6V4S=1AX8nVjKDzomD3EE?7O&k=G7(&&JbJME(6>EgZ+HJvXVCDl zI@oUq=(`o>(IxW<3&>TYhN-!^aG<{D7S;U{Yz|T`<0uqz4HS%_u7u>8q)}^PJf|y- z<1<clhvv{y1*?=`+g}`+)mu$ruvVi~haSAP2^KAA3OS67F=?|`@j6AF4OQ^makWS+ zhFB(QXT@m|Ygxpa!x-b_e(fGTf13%eqk9|s9_i$vFoC+T`tRMq`YJ-QHpqS9&1_l; zn3Q=uEnd!1W7J-&rbhO+2b7w>&pesYK`FB#*K&4$zoSLm7%`RO-!gun@uUS%`td-& zm7ck{O+d}uPO$s19ZJyb431j<u0!x<a`r*SggCB4OM~b+P>2v3PONjm9<rrvbVa5i zw>sMI*02+l_hnD|-A1<4@+jFd2;ca~^HcF<Gki@O;b{ADDA<;Cvftm@CI=53oyCJ@ z2M#j;Q~q*>Qj6U$)PlUzQnRvaDo*@$aPGnY71}tX3!THIZ<~Y@ivutIXp%H?_&L|G zKLKI_wEZ(x146kWkfE)#uRiAEiPGs;)5<YXhCpYX5Xryhm*rL%J6v}Y+%AH4V~+Tl z#gLHP!Pc-q0Yt7MH(hJSA(KVcvx|zb&j`1tI7s}+6v^(gn_1!$eks?W7wF*q#44uT z25cu{q`x(d(P33-DT}|d1xz&qJrY$TKQZ5LMs7yq-gp-3<RonfQf{T~DhDZCDw2(_ z3|)S4gg=)sodc(q)01sGZ_|;#3>j(8dzs<4RtjDjqxD}BO7Y{z(LKww#|WTPZqv~5 zhc?!-P4dbqJyOcocVZj$Kba@!w*Mg7+p>8WPCxS{`y(+~L2^A;KwqKdfxbHKfxbIP zA|>t6CtQ~I(2<ed>GgpRQEB#L#1VVKB`UGQ$!4vh(xEY|6fiL`xtJVA!gG2}oLIsp z$)vb}PI^p}rhEUV&;g9p0@{1=d4TO8OK}$IVLN7teq5wLDiY)RmA#4DacbWTUIS=I zFB^7ldg!fGh3TB^9SG2CMiYA){NL#Gp`P>|qB<t<*J{~T8q9qb4bJ^H7m$ztvt4@O z+79(uc<iWU!0MCo30I&WvFqKX^k-()l_#(HIe`2miO64`d8Q{sz@PDF5(V7P>AgLU zAegA!(k)Qu^0p=Um0}s<%qAi>BR4{HVj%?G>rw(af{%)Vkr|?3^q<x|v@@)?Wj<Kp zxaI6<wrv6NzGoRiu_gX>sk3A6VSBrn*A6Jm08bIR<Gn!Ln+15y)UzZa9Dd<k;L<Lh z0y0*Y`^>RnIK**^a*wemSHfK@?IP+VGs}DU(4#gB+)-M(eD22pE~_c!(o_&l@Ohut z^(~OAW3BB9JK)TiySMBm5Vqf~pG)Ax4#B^U$lvQrRH~@otex&tI_n}#PG?V-A6*f; zcn$EN*#3#h2&xI+el%b5zibxcVWaKOUR_%+|1Z`VSmkLJXRo`b$Z*T9{8#7W+p-Tq z4fk;KbGhGt%)J|-b93K@9k~{7URhQ@29`X2`HQA*ng8nY)$_ZHk0pHEbiL@{68-X> zf7gkz@3(k<G1l+(OkgusmhEfqc3_fvS+wx|x_7J};);u3OSauL++wsNI$fEefqDJ? z6O%U=-dxZ3B~N6j`n}J4<5=z#2E^|@oOji<K5+W=|G(b(J-=OE#^1Q@_FIdm>EBLG z-?e8|z@?u`k8WzmpSs#xT%F?U=zeu}MroPK{;J1o*0KG!wzj$-_V&c(Pao#qzm@p* zz`1RIzj|IT%l7-9J9+(SU~~I!;_a(%-@kldfAiNpo0{j_%Xae5-J5s26u30x%bLA* z%oE;Jh%I<*`p-Jp);M4*uuQOyb-8oXmSxgh`J3-|ynXlX^1TXB+jv$(Ut1X4^0FtH zmfvP1e|zzwtW?S`-2BC@*~-RR7Oxo?7>|0oIEFlry}NqB+imS3T9&^zn_BzWzdE<g z+OPK3%&Y?;?-v7muY2Y&-uPej$oBn2h8H>iYD*{PgBt9`f35v4zqH7G5fDB%K0a1? zgZ{g3zkvZ5R(oN}!s9&eE>?d2oqV6M!JmzB!+%*5#tAvHH_FSN&P(~7bbp=L)3R-L zz+PSRY=#^E`MOLQLa%1OD=(Wm518aiEq~0nc~jF|&%kiQAK2`hv{uld{K?gsHgEpq z+1AC!Eo28u1Oi)`Iya>lum5q4eWk5zyuUJX+S+RKv$MC&V_Y#$_C-!Eu+zBVJ+LVo z66y?OT2y>_A)>$l?6Ro=c?%SnfFu{F=S`4#LwT#R|LI4m>t$cuO)!V_cW;`S?tFGG zzXRCk2d1?cgO{g&{(6%Ay(+pr_vWTlZ~iyJz%jB}hR+ZFS+p^b<xMiM<q~80ZqXgH rm%H}fn+CMCp=kya3suI^e*R}PnNeQd6m`)AXfA`NtDnm{r-UW|o3bH2 From 750a75397d295e65d3fe6e9e18e53eabc39aa177 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ladislav=20Slez=C3=A1k?= <lslezak@suse.cz> Date: Fri, 5 May 2023 10:09:03 +0200 Subject: [PATCH 56/58] Updated screenshots --- doc/images/screenshots/storage-page.png | Bin 67727 -> 67049 bytes doc/images/screenshots/users-page.png | Bin 30160 -> 32046 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/doc/images/screenshots/storage-page.png b/doc/images/screenshots/storage-page.png index bf83dba72e51ef34c3a8f66ff3604187b2f66205..4937eb64a5bf90882a60166bec6220525ab83b37 100644 GIT binary patch literal 67049 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 C^!?ia literal 67727 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 NnzHueBE{cd{|odU_M!j) diff --git a/doc/images/screenshots/users-page.png b/doc/images/screenshots/users-page.png index f23c6fb660d5bd8fc964fd08b59d0dd7d11c894c..e15a985e08b36a7c5f284d4d73e243793a44d981 100644 GIT binary patch literal 32046 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 G?*9P&RI%Xz literal 30160 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 From 32aaa54c75961882e97f64e8e043e21fa0853e27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Iv=C3=A1n=20L=C3=B3pez=20Gonz=C3=A1lez?= <jlopez@suse.com> Date: Fri, 5 May 2023 11:42:48 +0100 Subject: [PATCH 57/58] [web] Load proposal if needed --- web/src/client/storage.js | 4 +- web/src/components/storage/ProposalPage.jsx | 15 +++++- .../components/storage/ProposalPage.test.jsx | 53 +++++++++++++++++-- 3 files changed, 65 insertions(+), 7 deletions(-) diff --git a/web/src/client/storage.js b/web/src/client/storage.js index 3907cd6fed..1cfc396ef9 100644 --- a/web/src/client/storage.js +++ b/web/src/client/storage.js @@ -114,7 +114,7 @@ class ProposalManager { * @typedef {object} ProposalData * @property {AvailableDevice[]} availableDevices * @property {Volume[]} volumeTemplates - * @property {Result} result + * @property {Result|undefined} result */ async getData() { const availableDevices = await this.getAvailableDevices(); @@ -154,7 +154,7 @@ class ProposalManager { /** * Gets the values of the current proposal * - * @return {Promise<Result>} + * @return {Promise<Result|undefined>} */ async getResult() { const proxy = await this.proposalProxy(); diff --git a/web/src/components/storage/ProposalPage.jsx b/web/src/components/storage/ProposalPage.jsx index a274fa0209..a0ae75c08a 100644 --- a/web/src/components/storage/ProposalPage.jsx +++ b/web/src/components/storage/ProposalPage.jsx @@ -27,6 +27,7 @@ import { toValidationError, useCancellablePromise } from "~/utils"; import { Icon } from "~/components/layout"; import { Page } from "~/components/core"; import { ProposalActionsSection, ProposalPageOptions, ProposalSettingsSection } from "~/components/storage"; +import { IDLE } from "~/client/status"; const initialState = { loading: true, @@ -49,7 +50,7 @@ const reducer = (state, action) => { case "UPDATE_PROPOSAL": { const { proposal, errors } = action.payload; - const { availableDevices, volumeTemplates, result } = proposal; + const { availableDevices, volumeTemplates, result = {} } = proposal; const { candidateDevices, lvm, encryptionPassword, volumes, actions } = result; return { ...state, @@ -92,7 +93,7 @@ export default function ProposalPage() { const { proposal, errors } = await loadProposal(); dispatch({ type: "UPDATE_PROPOSAL", payload: { proposal, errors } }); - dispatch({ type: "STOP_LOADING" }); + if (proposal.result !== undefined) dispatch({ type: "STOP_LOADING" }); }, [cancellablePromise, client, loadProposal]); const calculate = useCallback(async (settings) => { @@ -111,6 +112,16 @@ export default function ProposalPage() { return client.onDeprecate(() => load()); }, [client, load]); + useEffect(() => { + const statusHandler = (serviceStatus) => { + // Load the proposal if no proposal has been loaded yet. This can happen if the proposal + // page is visited before probing has finished. + if (serviceStatus === IDLE && state.settings.candidateDevices === undefined) load(); + }; + + return client.onStatusChange(statusHandler); + }); + const changeSettings = async (settings) => { const newSettings = { ...state.settings, ...settings }; diff --git a/web/src/components/storage/ProposalPage.test.jsx b/web/src/components/storage/ProposalPage.test.jsx index e8b1ea2100..7bccd931ef 100644 --- a/web/src/components/storage/ProposalPage.test.jsx +++ b/web/src/components/storage/ProposalPage.test.jsx @@ -23,6 +23,7 @@ import React from "react"; import { act, screen, waitFor } from "@testing-library/react"; import { createCallbackMock, installerRender, mockComponent } from "~/test-utils"; import { createClient } from "~/client"; +import { IDLE } from "~/client/status"; import { ProposalPage } from "~/components/storage"; jest.mock("~/client"); @@ -56,10 +57,12 @@ const isDeprecatedFn = jest.fn(); let onDeprecateFn = jest.fn(); +let onStatusChangeFn = jest.fn(); + beforeEach(() => { isDeprecatedFn.mockResolvedValue(false); - proposalData = defaultProposalData; + proposalData = { ...defaultProposalData }; createClient.mockImplementation(() => { return { @@ -71,7 +74,8 @@ beforeEach(() => { }, getErrors: jest.fn().mockResolvedValue([]), isDeprecated: isDeprecatedFn, - onDeprecate: onDeprecateFn + onDeprecate: onDeprecateFn, + onStatusChange: onStatusChangeFn } }; }); @@ -130,7 +134,7 @@ describe("when the storage devices become deprecated", () => { await screen.findByText("/dev/vda"); - proposalData.result.candidateDevices = ["/dev/vdb"]; + proposalData.result = { ...defaultProposalData.result, candidateDevices: ["/dev/vdb"] }; const [onDeprecateCb] = callbacks; await act(() => onDeprecateCb()); @@ -138,3 +142,46 @@ describe("when the storage devices become deprecated", () => { await screen.findByText("/dev/vdb"); }); }); + +describe("when there is no proposal yet", () => { + beforeEach(() => { + proposalData.result = undefined; + }); + + it("shows the page as loading", async () => { + installerRender(<ProposalPage />); + + screen.getAllByText(/PFSkeleton/); + await waitFor(() => expect(screen.queryByText(/Installation device/)).toBeNull()); + }); + + it("loads the proposal when the service finishes to calculate", async () => { + const [mockFunction, callbacks] = createCallbackMock(); + onStatusChangeFn = mockFunction; + installerRender(<ProposalPage />); + + screen.getAllByText(/PFSkeleton/); + + proposalData.result = { ...defaultProposalData.result }; + + const [onStatusChangeCb] = callbacks; + await act(() => onStatusChangeCb(IDLE)); + await screen.findByText("/dev/vda"); + }); +}); + +describe("when there is a proposal", () => { + it("does not load the proposal when the service finishes to calculate", async () => { + const [mockFunction, callbacks] = createCallbackMock(); + onStatusChangeFn = mockFunction; + installerRender(<ProposalPage />); + + await screen.findByText("/dev/vda"); + + proposalData.result.candidateDevices = ["/dev/vdb"]; + + const [onStatusChangeCb] = callbacks; + await act(() => onStatusChangeCb(IDLE)); + await screen.findByText("/dev/vda"); + }); +}); From 0e8d1de3407817b930a7ff4e4b8f19462d0334e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Iv=C3=A1n=20L=C3=B3pez=20Gonz=C3=A1lez?= <jlopez@suse.com> Date: Fri, 5 May 2023 14:16:31 +0100 Subject: [PATCH 58/58] [web] Only subscribe when needed --- web/src/components/storage/ProposalPage.jsx | 10 +++++++--- web/src/components/storage/ProposalPage.test.jsx | 5 +---- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/web/src/components/storage/ProposalPage.jsx b/web/src/components/storage/ProposalPage.jsx index a0ae75c08a..44ddf89368 100644 --- a/web/src/components/storage/ProposalPage.jsx +++ b/web/src/components/storage/ProposalPage.jsx @@ -113,14 +113,18 @@ export default function ProposalPage() { }, [client, load]); useEffect(() => { + const proposalLoaded = () => state.settings.candidateDevices !== undefined; + const statusHandler = (serviceStatus) => { // Load the proposal if no proposal has been loaded yet. This can happen if the proposal // page is visited before probing has finished. - if (serviceStatus === IDLE && state.settings.candidateDevices === undefined) load(); + if (serviceStatus === IDLE && !proposalLoaded()) load(); }; - return client.onStatusChange(statusHandler); - }); + if (!proposalLoaded()) { + return client.onStatusChange(statusHandler); + } + }, [client, load, state.settings]); const changeSettings = async (settings) => { const newSettings = { ...state.settings, ...settings }; diff --git a/web/src/components/storage/ProposalPage.test.jsx b/web/src/components/storage/ProposalPage.test.jsx index 7bccd931ef..b106cd7e07 100644 --- a/web/src/components/storage/ProposalPage.test.jsx +++ b/web/src/components/storage/ProposalPage.test.jsx @@ -178,10 +178,7 @@ describe("when there is a proposal", () => { await screen.findByText("/dev/vda"); - proposalData.result.candidateDevices = ["/dev/vdb"]; - const [onStatusChangeCb] = callbacks; - await act(() => onStatusChangeCb(IDLE)); - await screen.findByText("/dev/vda"); + expect(onStatusChangeCb).toBeUndefined(); }); });