From 8bc01a1ad7dfb589d220b65b6cd23ebcf9e1ff65 Mon Sep 17 00:00:00 2001 From: Michael Tang Date: Thu, 5 Oct 2023 11:16:22 -0400 Subject: [PATCH 01/88] changing landing page text --- src/content/index.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/content/index.tsx b/src/content/index.tsx index 3e4e15fc..c99dffc6 100644 --- a/src/content/index.tsx +++ b/src/content/index.tsx @@ -62,7 +62,7 @@ const PageContentContainer = styled.div` justify-content: center; .loginPageTextContainer { - width: 703px; + width: 775px; height: 265px; display: flex; flex-direction: column; @@ -166,7 +166,7 @@ const Home: FC = () => { {authData.isLoggedIn ? (
- Welcome to CRDC Data Hub + Welcome to CRDC Submission Portal
You are logged in. @@ -176,7 +176,7 @@ const Home: FC = () => { : (
- Login to CRDC + Login to CRDC Submission Portal
Please login with a Login.gov account to make a data submission request or to upload data for approved submissions From ca26bedaf015ef544dd53e344d925d797bbe1c55 Mon Sep 17 00:00:00 2001 From: Alejandro-Vega Date: Thu, 5 Oct 2023 12:27:14 -0400 Subject: [PATCH 02/88] Remove trailing letters in cancer type --- src/config/CancerTypesConfig.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/CancerTypesConfig.ts b/src/config/CancerTypesConfig.ts index 02163952..c835bf57 100644 --- a/src/config/CancerTypesConfig.ts +++ b/src/config/CancerTypesConfig.ts @@ -5,7 +5,7 @@ const options: string[] = [ "Adrenal Gland, Adrenocortical Carcinoma", "Adrenal Gland, Pheochromocytoma", - "Bile Duct, Cholangiocarcinomaetc", + "Bile Duct, Cholangiocarcinoma", "Bladder, Urothelial (Transitional Cell) Carcinoma", "Blood/Bone Marrow, Acute Lymphocytic Leukemia (ALL)", "Blood/Bone Marrow, Acute Myeloid Leukemia (AML)", From 484b34e56b209bbf8a8aa166d5f4b1d4fac6eaa9 Mon Sep 17 00:00:00 2001 From: Alejandro-Vega Date: Thu, 5 Oct 2023 14:48:38 -0400 Subject: [PATCH 03/88] Small wording changes --- src/components/Questionnaire/SubmitFormDialog.tsx | 2 +- src/content/questionnaire/FormView.tsx | 2 +- src/content/questionnaire/ListView.tsx | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/Questionnaire/SubmitFormDialog.tsx b/src/components/Questionnaire/SubmitFormDialog.tsx index d5f582de..369fd89e 100644 --- a/src/components/Questionnaire/SubmitFormDialog.tsx +++ b/src/components/Questionnaire/SubmitFormDialog.tsx @@ -33,7 +33,7 @@ const SubmitFormDialog: FC = ({ open={open} onClose={onClose} title={title || "Submit Request"} - message={message || "Once your application is submitted for review, no further changes can be made. Are you sure you want to proceed?"} + message={message || "Once your submission request is submitted for review, no further changes can be made. Are you sure you want to proceed?"} actions={( <>
) } + { + navMobileItem.className === 'navMobileSubItem action' + && typeof navMobileItem.onClick === "function" + && ( +
{ if (e.key === "Enter") { navMobileItem.onClick(); } }} + onClick={() => navMobileItem.onClick()} + > + {navMobileItem.name} +
+ ) + } { navMobileItem.className === 'navMobileSubItem' && ( @@ -394,6 +416,7 @@ const Header = () => { aria-label="greyContainer" /> + setOpenAPITokenDialog(false)} /> ); diff --git a/src/components/Header/components/NavbarDesktop.tsx b/src/components/Header/components/NavbarDesktop.tsx index c9795556..73e1dabf 100644 --- a/src/components/Header/components/NavbarDesktop.tsx +++ b/src/components/Header/components/NavbarDesktop.tsx @@ -1,9 +1,11 @@ import React, { useEffect, useState, useRef } from 'react'; import { NavLink, Link, useNavigate } from 'react-router-dom'; +import { Button } from '@mui/material'; import styled from 'styled-components'; import { useAuthContext } from '../../Contexts/AuthContext'; import GenericAlert from '../../GenericAlert'; import { navMobileList, navbarSublists } from '../../../config/globalHeaderData'; +import APITokenDialog from '../../../content/users/APITokenDialog'; const Nav = styled.div` top: 0; @@ -358,6 +360,7 @@ const useOutsideAlerter = (ref1, ref2) => { const NavBar = () => { const [clickedTitle, setClickedTitle] = useState(""); + const [openAPITokenDialog, setOpenAPITokenDialog] = useState(false); const dropdownSelection = useRef(null); const nameDropdownSelection = useRef(null); const clickableObject = navMobileList.filter((item) => item.className === 'navMobileItem clickable'); @@ -525,9 +528,9 @@ const NavBar = () => { - setClickedTitle("")}> + {(authData?.user?.role === "Admin" || authData?.user?.role === "Organization Owner") && ( @@ -561,6 +564,7 @@ const NavBar = () => {
+ setOpenAPITokenDialog(false)} /> ); }; From 30a2a87de26fde9be8f29cde421a789c2ca7f83b Mon Sep 17 00:00:00 2001 From: Alejandro-Vega Date: Thu, 19 Oct 2023 10:40:57 -0400 Subject: [PATCH 13/88] Removed unused imports --- src/content/users/APITokenDialog.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/users/APITokenDialog.tsx b/src/content/users/APITokenDialog.tsx index fa0fec33..c895c598 100644 --- a/src/content/users/APITokenDialog.tsx +++ b/src/content/users/APITokenDialog.tsx @@ -1,5 +1,5 @@ import { FC, useState } from "react"; -import { Button, Dialog, DialogProps, IconButton, OutlinedInput, Stack, Typography, Tooltip as MuiToolTip, styled, TooltipProps } from "@mui/material"; +import { Button, Dialog, DialogProps, IconButton, OutlinedInput, Stack, Typography, styled } from "@mui/material"; import CloseIcon from '@mui/icons-material/Close'; import { useMutation } from "@apollo/client"; import { GRANT_TOKEN, GrantTokenResp } from "../../graphql"; From edb8207b6b8649e3605f7c752ff124859d8c94d4 Mon Sep 17 00:00:00 2001 From: Alec M Date: Fri, 20 Oct 2023 10:19:12 -0400 Subject: [PATCH 14/88] CRDCDH-18 Rename Submission Templates to Model Navigator --- src/config/globalHeaderData.tsx | 6 +++--- src/content/templates/Controller.tsx | 2 +- src/router.tsx | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/config/globalHeaderData.tsx b/src/config/globalHeaderData.tsx index 8c73e198..d96836f3 100644 --- a/src/config/globalHeaderData.tsx +++ b/src/config/globalHeaderData.tsx @@ -33,9 +33,9 @@ export const navMobileList = [ className: 'navMobileItem', }, { - name: 'Data Submission Templates', - link: '/submission-templates', - id: 'navbar-dropdown-submission-templates', + name: 'Model Navigator', + link: '/model-navigator', + id: 'navbar-dropdown-model-navigator', className: 'navMobileItem', } ]; diff --git a/src/content/templates/Controller.tsx b/src/content/templates/Controller.tsx index 051d99e1..8c278c5a 100644 --- a/src/content/templates/Controller.tsx +++ b/src/content/templates/Controller.tsx @@ -6,7 +6,7 @@ import ErrorBoundary from '../../components/ErrorBoundary'; export default () => ( - + diff --git a/src/router.tsx b/src/router.tsx index 74119422..fc59cf94 100644 --- a/src/router.tsx +++ b/src/router.tsx @@ -80,8 +80,8 @@ const routes: RouteObject[] = [ element: } redirectPath="/profile" redirectName="User Profile" /> }, { - path: '/submission-templates', - element: } redirectPath="/submission-templates" redirectName="Data Submission Templates" /> + path: '/model-navigator', + element: } redirectPath="/model-navigator" redirectName="Model Navigator" /> }, { path: '/organizations/:orgId?', From 253f97368473322475b8117556e474be7c77279f Mon Sep 17 00:00:00 2001 From: Alec M Date: Mon, 23 Oct 2023 11:33:32 -0400 Subject: [PATCH 15/88] Force dmn version lock --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index e3a273f0..4280367d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22684,7 +22684,7 @@ } }, "node_modules/data-model-navigator": { - "version": "1.1.02", + "version": "1.1.9", "license": "ISC", "dependencies": { "@apollo/client": "^3.3.4", diff --git a/package.json b/package.json index c0b1918d..1f694891 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "@types/jest": "^27.5.2", "@types/react": "^18.2.6", "@types/react-dom": "^18.2.4", - "data-model-navigator": "^1.1.2", + "data-model-navigator": "1.1.9", "dayjs": "^1.11.8", "graphql": "^16.7.1", "lodash": "^4.17.21", From 1262896f87cf1048642b7adc2ba3e872fd987de6 Mon Sep 17 00:00:00 2001 From: Alejandro-Vega Date: Mon, 23 Oct 2023 12:03:30 -0400 Subject: [PATCH 16/88] Added submissionAction mutation and types --- src/graphql/index.ts | 3 +++ src/graphql/submissionAction.ts | 22 ++++++++++++++++++++++ src/types/Submissions.d.ts | 9 +++++++++ 3 files changed, 34 insertions(+) create mode 100644 src/graphql/submissionAction.ts diff --git a/src/graphql/index.ts b/src/graphql/index.ts index 8e0b401a..1a80c501 100644 --- a/src/graphql/index.ts +++ b/src/graphql/index.ts @@ -33,6 +33,9 @@ export type { Response as GetSubmissionResp } from "./getSubmission"; export { query as GET_DATA_SUBMISSION_BATCH_FILES } from "./getDataSubmissionBatchFiles"; export type { Response as GetDataSubmissionBatchFilesResp } from "./getDataSubmissionBatchFiles"; +export { mutation as SUBMISSION_ACTION } from "./submissionAction"; +export type { Response as SubmissionActionResp } from "./submissionAction"; + // User Profile export { query as GET_USER } from "./getUser"; export type { Response as GetUserResp } from "./getUser"; diff --git a/src/graphql/submissionAction.ts b/src/graphql/submissionAction.ts new file mode 100644 index 00000000..fcf7b3c7 --- /dev/null +++ b/src/graphql/submissionAction.ts @@ -0,0 +1,22 @@ +import gql from "graphql-tag"; +// action in [Submit, Release, Withdraw, Reject, Complete, Cancel, Archive] +export const mutation = gql` + mutation submissionAction($submissionID: ID!, $action: String!) { + submissionAction(submissionID: $submissionID, action: $action) { + _id + status + history { + status + reviewComment + dateTime + userID + } + createdAt + updatedAt + } + } +`; + +export type Response = { + submissionAction: Submission; +}; diff --git a/src/types/Submissions.d.ts b/src/types/Submissions.d.ts index 0226ab34..037bbe71 100644 --- a/src/types/Submissions.d.ts +++ b/src/types/Submissions.d.ts @@ -29,6 +29,15 @@ type SubmissionStatus = | "Archived" | "Canceled"; +type SubmissionAction = + | "Submit" + | "Release" + | "Withdraw" + | "Reject" + | "Complete" + | "Cancel" + | "Archive"; + type FileInfo = { filePrefix: string; // prefix/path within S3 bucket fileName: string; From cf900117c6eafbe233bfb90b51fa98dd47207b0c Mon Sep 17 00:00:00 2001 From: Alejandro-Vega Date: Mon, 23 Oct 2023 12:52:08 -0400 Subject: [PATCH 17/88] Submission actions call real API. Added additional error handling --- src/components/GenericAlert/index.tsx | 7 +- .../dataSubmissions/DataSubmission.tsx | 56 ++++-- .../dataSubmissions/DataSubmissionActions.tsx | 175 +++++++----------- 3 files changed, 112 insertions(+), 126 deletions(-) diff --git a/src/components/GenericAlert/index.tsx b/src/components/GenericAlert/index.tsx index 53e5d992..aeaec9a3 100644 --- a/src/components/GenericAlert/index.tsx +++ b/src/components/GenericAlert/index.tsx @@ -1,5 +1,5 @@ import React, { FC, useEffect, useState } from 'react'; -import { Alert, AlertProps, styled } from '@mui/material'; +import { Alert, AlertColor, AlertProps, styled } from '@mui/material'; const StyledAlert = styled(Alert, { shouldForwardProp: (prop) => prop !== "bgColor" @@ -20,6 +20,11 @@ const StyledAlert = styled(Alert, { userSelect: 'none', }))); +export type AlertState = { + message: string; + severity: AlertColor; +}; + type Props = { open: boolean; severity?: AlertProps["severity"], diff --git a/src/content/dataSubmissions/DataSubmission.tsx b/src/content/dataSubmissions/DataSubmission.tsx index 5069217d..b0ef46a5 100644 --- a/src/content/dataSubmissions/DataSubmission.tsx +++ b/src/content/dataSubmissions/DataSubmission.tsx @@ -15,11 +15,19 @@ import { isEqual } from "lodash"; import bannerSvg from "../../assets/dataSubmissions/dashboard_banner.svg"; import LinkTab from "../../components/DataSubmissions/LinkTab"; import DataSubmissionUpload from "../../components/DataSubmissions/DataSubmissionUpload"; -import { GET_DATA_SUBMISSION_BATCH_FILES, GET_SUBMISSION, GetDataSubmissionBatchFilesResp, GetSubmissionResp } from "../../graphql"; +import { + GET_DATA_SUBMISSION_BATCH_FILES, + GET_SUBMISSION, + GetDataSubmissionBatchFilesResp, + GetSubmissionResp, +} from "../../graphql"; import DataSubmissionSummary from "../../components/DataSubmissions/DataSubmissionSummary"; -import GenericAlert from "../../components/GenericAlert"; +import GenericAlert, { AlertState } from "../../components/GenericAlert"; import PieChart from "../../components/DataSubmissions/PieChart"; -import DataSubmissionBatchTable, { Column, FetchListing } from "../../components/DataSubmissions/DataSubmissionBatchTable"; +import DataSubmissionBatchTable, { + Column, + FetchListing, +} from "../../components/DataSubmissions/DataSubmissionBatchTable"; import { FormatDate } from "../../utils"; import DataSubmissionActions from "./DataSubmissionActions"; @@ -209,9 +217,9 @@ const DataSubmission = () => { const [dataSubmission, setDataSubmission] = useState(null); const [batchFiles, setBatchFiles] = useState([]); const [prevBatchFetch, setPrevBatchFetch] = useState>(null); - const [error, setError] = useState(false); + const [error, setError] = useState(null); const [loading, setLoading] = useState(false); - const [openAlert, setOpenAlert] = useState(null); + const [changesAlert, setChangesAlert] = useState(null); const isValidTab = tab && Object.values(URLTabs).includes(tab); const [getSubmission] = useLazyQuery(GET_SUBMISSION, { @@ -228,7 +236,7 @@ const DataSubmission = () => { const handleFetchBatchFiles = async (fetchListing: FetchListing) => { const { first, offset, sortDirection, orderBy } = fetchListing || {}; if (!submissionId) { - setError(true); + setError("Invalid submission ID provided."); return; } if (batchFiles?.length > 0 && isEqual(fetchListing, prevBatchFetch)) { @@ -251,12 +259,12 @@ const DataSubmission = () => { fetchPolicy: 'no-cache' }); if (batchFilesError || !newBatchFiles?.getDataSubmissionBatchFiles) { - setError(true); + setError("Unable to retrieve batch data."); return; } setBatchFiles(newBatchFiles.getDataSubmissionBatchFiles.batchFiles); } catch (err) { - setError(true); + setError("Unable to retrieve batch data."); } finally { setLoading(false); } @@ -264,13 +272,14 @@ const DataSubmission = () => { useEffect(() => { if (!submissionId) { + setError("Invalid submission ID provided."); return; } (async () => { if (!dataSubmission?._id) { const { data: newDataSubmission, error } = await getSubmission(); if (error || !newDataSubmission?.getSubmission) { - setError(true); + setError("Unable to retrieve Data Submission."); return; } setDataSubmission(newDataSubmission.getSubmission); @@ -278,27 +287,37 @@ const DataSubmission = () => { })(); }, [submissionId]); - const handleOnDataSubmissionChange = (dataSubmission: Submission) => { - setDataSubmission(dataSubmission); + const createAlert = (alert: AlertState, duration = 10000) => { + setChangesAlert(alert); + setTimeout(() => setChangesAlert(null), duration); }; const handleOnUpload = (message: string) => { - setOpenAlert(message); - setTimeout(() => setOpenAlert(null), 10000); + createAlert({ message, severity: "success" }); + }; + + const handleSubmissionAction = async (submission: Submission) => { + // createAlert({ message: `Submission has been ${submission?.status?.toLowerCase()} successfully.`, severity: "success" }); + setDataSubmission((prevSubmission) => ({ ...prevSubmission, ...submission })); }; return ( - 0} key="data-submission-alert"> + - {openAlert} + {changesAlert?.message} - {error && Oops! An error occurred. Unable to retrieve Data Submission.} + {error && ( + + Oops! An error occurred. + {error} + +)} @@ -432,8 +451,9 @@ const DataSubmission = () => { diff --git a/src/content/dataSubmissions/DataSubmissionActions.tsx b/src/content/dataSubmissions/DataSubmissionActions.tsx index d974d1d9..45510567 100644 --- a/src/content/dataSubmissions/DataSubmissionActions.tsx +++ b/src/content/dataSubmissions/DataSubmissionActions.tsx @@ -1,8 +1,10 @@ import { useState } from "react"; +import { useMutation } from "@apollo/client"; import { LoadingButton } from "@mui/lab"; import { Button, Stack, Typography, styled } from "@mui/material"; import { useAuthContext } from "../../components/Contexts/AuthContext"; import CustomDialog from "../../components/Shared/Dialog"; +import { SUBMISSION_ACTION, SubmissionActionResp } from "../../graphql"; const StyledActionWrapper = styled(Stack)(() => ({ justifyContent: "center", @@ -121,94 +123,53 @@ const CompleteStatuses: SubmissionStatus[] = ["Released"]; const CancelStatuses: SubmissionStatus[] = ["New", "In Progress"]; const ArchiveStatuses: SubmissionStatus[] = ["Completed"]; -type DataSubmissionAction = - | "Submitting" - | "Releasing" - | "Withdrawing" - | "Rejecting" - | "Completing" - | "Canceling" - | "Archiving"; - type Props = { - dataSubmission: Submission; - onDataSubmissionChange: (dataSubmission: Submission) => void; + submission: Submission; + onSubmissionChange: (submission: Submission) => void; + onError?: (error: string) => void; }; -const DataSubmissionActions = ({ dataSubmission, onDataSubmissionChange }: Props) => { +const DataSubmissionActions = ({ submission, onSubmissionChange, onError }: Props) => { const { user } = useAuthContext(); const [currentDialog, setCurrentDialog] = useState(null); - const [action, setAction] = useState(null); - - const handleOnSubmit = () => { - setAction("Submitting"); - // TODO: Submit the Data Submission - setTimeout(() => { - onDataSubmissionChange({ ...dataSubmission, status: "Submitted" }); - onCloseDialog(); - setAction(null); - }, 3500); - }; - - const handleOnRelease = () => { - setAction("Releasing"); - // TODO: Release the Data Submission - setTimeout(() => { - onDataSubmissionChange({ ...dataSubmission, status: "Released" }); - onCloseDialog(); - setAction(null); - }, 3500); - }; - - const handleOnWithdraw = () => { - setAction("Withdrawing"); - // TODO: Withdraw the Data Submission - setTimeout(() => { - onDataSubmissionChange({ ...dataSubmission, status: "Withdrawn" }); - onCloseDialog(); - setAction(null); - }, 3500); - }; - - const handleOnReject = () => { - setAction("Rejecting"); - // TODO: Reject the Data Submission - setTimeout(() => { - onDataSubmissionChange({ ...dataSubmission, status: "Rejected" }); - onCloseDialog(); - setAction(null); - }, 3500); - }; - - const handleOnComplete = () => { - setAction("Completing"); - // TODO: Reject the Data Submission - setTimeout(() => { - onDataSubmissionChange({ ...dataSubmission, status: "Completed" }); - onCloseDialog(); + const [action, setAction] = useState(null); + + const [submissionAction] = useMutation(SUBMISSION_ACTION, { + context: { clientName: 'backend' }, + fetchPolicy: 'no-cache' + }); + + const updateSubmissionAction = async (action: SubmissionAction) => { + if (!submission?._id) { + return; + } + + try { + const { data: d, errors } = await submissionAction({ + variables: { + submissionID: submission._id, + action + } + }); + if (errors || !d?.submissionAction?._id) { + onError(`Error occurred while performing '${action}' submission action.`); + return; + } + onSubmissionChange(d.submissionAction); + } catch (err) { + onError(`Error occurred while performing '${action}' submission action.`); + } finally { setAction(null); - }, 3500); + } }; - const handleOnArchive = () => { - setAction("Archiving"); - // TODO: Archive the Data Submission - setTimeout(() => { - onDataSubmissionChange({ ...dataSubmission, status: "Archived" }); - onCloseDialog(); - setAction(null); - }, 3500); - }; - - const handleOnCancel = () => { - setAction("Canceling"); - // TODO: Cancel the Data Submission - setTimeout(() => { - onDataSubmissionChange({ ...dataSubmission, status: "Canceled" }); - onCloseDialog(); - setAction(null); - }, 3500); + const handleOnAction = (action: SubmissionAction) => { + if (currentDialog) { + setCurrentDialog(null); + } + setAction(action); + updateSubmissionAction(action); }; const onOpenDialog = (dialog: ActiveDialog) => { @@ -222,12 +183,12 @@ const DataSubmissionActions = ({ dataSubmission, onDataSubmissionChange }: Props return ( {/* Action Buttons */} - {SubmitStatuses.includes(dataSubmission?.status) && SubmitRoles.includes(user?.role) ? ( + {SubmitStatuses.includes(submission?.status) && SubmitRoles.includes(user?.role) ? ( handleOnAction("Submit")} + loading={action === "Submit"} + disabled={action && action !== "Submit"} /* TODO: Post MVP2-M2 - Will be disabled if fails validation check */ disableElevation disableRipple disableTouchRipple @@ -235,12 +196,12 @@ const DataSubmissionActions = ({ dataSubmission, onDataSubmissionChange }: Props Submit ) : null} - {ReleaseStatuses.includes(dataSubmission?.status) && ReleaseRoles.includes(user?.role) ? ( + {ReleaseStatuses.includes(submission?.status) && ReleaseRoles.includes(user?.role) ? ( handleOnAction("Release")} + loading={action === "Release"} + disabled={action && action !== "Release"} disableElevation disableRipple disableTouchRipple @@ -248,12 +209,12 @@ const DataSubmissionActions = ({ dataSubmission, onDataSubmissionChange }: Props Release ) : null} - {WithdrawStatuses.includes(dataSubmission?.status) && WithdrawRoles.includes(user?.role) ? ( + {WithdrawStatuses.includes(submission?.status) && WithdrawRoles.includes(user?.role) ? ( onOpenDialog("Withdraw")} - loading={action === "Withdrawing"} - disabled={action && action !== "Withdrawing"} + loading={action === "Withdraw"} + disabled={action && action !== "Withdraw"} disableElevation disableRipple disableTouchRipple @@ -261,12 +222,12 @@ const DataSubmissionActions = ({ dataSubmission, onDataSubmissionChange }: Props Withdraw ) : null} - {RejectStatuses.includes(dataSubmission?.status) && RejectRoles.includes(user?.role) ? ( + {RejectStatuses.includes(submission?.status) && RejectRoles.includes(user?.role) ? ( onOpenDialog("Reject")} - loading={action === "Rejecting"} - disabled={action && action !== "Rejecting"} + loading={action === "Reject"} + disabled={action && action !== "Reject"} disableElevation disableRipple disableTouchRipple @@ -274,12 +235,12 @@ const DataSubmissionActions = ({ dataSubmission, onDataSubmissionChange }: Props Reject ) : null} - {CompleteStatuses.includes(dataSubmission?.status) && CompleteRoles.includes(user?.role) ? ( + {CompleteStatuses.includes(submission?.status) && CompleteRoles.includes(user?.role) ? ( onOpenDialog("Complete")} - loading={action === "Completing"} - disabled={action && action !== "Completing"} + loading={action === "Complete"} + disabled={action && action !== "Complete"} disableElevation disableRipple disableTouchRipple @@ -287,12 +248,12 @@ const DataSubmissionActions = ({ dataSubmission, onDataSubmissionChange }: Props Complete ) : null} - {ArchiveStatuses.includes(dataSubmission?.status) && ArchiveRoles.includes(user?.role) ? ( + {ArchiveStatuses.includes(submission?.status) && ArchiveRoles.includes(user?.role) ? ( handleOnAction("Archive")} + loading={action === "Archive"} + disabled={action && action !== "Archive"} disableElevation disableRipple disableTouchRipple @@ -300,12 +261,12 @@ const DataSubmissionActions = ({ dataSubmission, onDataSubmissionChange }: Props Archive ) : null} - {CancelStatuses.includes(dataSubmission?.status) && CancelRoles.includes(user?.role) ? ( + {CancelStatuses.includes(submission?.status) && CancelRoles.includes(user?.role) ? ( onOpenDialog("Cancel")} - loading={action === "Canceling"} - disabled={action && action !== "Canceling"} + loading={action === "Cancel"} + disabled={action && action !== "Cancel"} disableElevation disableRipple disableTouchRipple @@ -323,7 +284,7 @@ const DataSubmissionActions = ({ dataSubmission, onDataSubmissionChange }: Props <> handleOnAction("Cancel")} loading={!!action} color="error" autoFocus @@ -348,7 +309,7 @@ const DataSubmissionActions = ({ dataSubmission, onDataSubmissionChange }: Props <> handleOnAction("Withdraw")} loading={!!action} color="error" autoFocus @@ -373,7 +334,7 @@ const DataSubmissionActions = ({ dataSubmission, onDataSubmissionChange }: Props <> handleOnAction("Reject")} loading={!!action} color="error" autoFocus @@ -397,7 +358,7 @@ const DataSubmissionActions = ({ dataSubmission, onDataSubmissionChange }: Props <> handleOnAction("Complete")} loading={!!action} color="error" autoFocus From 8b9c1ccf219a19093224c5077d2b607808b5bcdf Mon Sep 17 00:00:00 2001 From: Alec M Date: Mon, 23 Oct 2023 13:17:50 -0400 Subject: [PATCH 18/88] deps: Bump DMN to `v1.1.10` --- package-lock.json | 7 ++++--- package.json | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4280367d..9930779f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25,7 +25,7 @@ "@types/jest": "^27.5.2", "@types/react": "^18.2.6", "@types/react-dom": "^18.2.4", - "data-model-navigator": "^1.1.2", + "data-model-navigator": "1.1.10", "dayjs": "^1.11.8", "graphql": "^16.7.1", "lodash": "^4.17.21", @@ -22684,8 +22684,9 @@ } }, "node_modules/data-model-navigator": { - "version": "1.1.9", - "license": "ISC", + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/data-model-navigator/-/data-model-navigator-1.1.10.tgz", + "integrity": "sha512-ILRVZILgofixEkQz6BC/ab7xBYi4+x6f4CKcGsgG56fyBdjwMpr8TIKkHcnK1hI8Rc4HoCsxpGjJ0zZtqbSomg==", "dependencies": { "@apollo/client": "^3.3.4", "@apollo/react-components": "^4.0.0", diff --git a/package.json b/package.json index 1f694891..43de571d 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "@types/jest": "^27.5.2", "@types/react": "^18.2.6", "@types/react-dom": "^18.2.4", - "data-model-navigator": "1.1.9", + "data-model-navigator": "1.1.10", "dayjs": "^1.11.8", "graphql": "^16.7.1", "lodash": "^4.17.21", From 470a4e16ce59f97c6a2aedb849ff380ec7ddc0a5 Mon Sep 17 00:00:00 2001 From: Michael Tang Date: Wed, 25 Oct 2023 12:32:34 -0400 Subject: [PATCH 19/88] adding ccdi data common --- src/content/dataSubmissions/DataSubmissionsListView.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/dataSubmissions/DataSubmissionsListView.tsx b/src/content/dataSubmissions/DataSubmissionsListView.tsx index 4fbbee00..3265168c 100644 --- a/src/content/dataSubmissions/DataSubmissionsListView.tsx +++ b/src/content/dataSubmissions/DataSubmissionsListView.tsx @@ -560,7 +560,7 @@ const ListingView: FC = () => {
Date: Thu, 26 Oct 2023 01:30:05 -0400 Subject: [PATCH 20/88] Added listBatches query and types --- src/graphql/index.ts | 3 +++ src/graphql/listBatches.ts | 45 ++++++++++++++++++++++++++++++++++++++ src/types/Submissions.d.ts | 23 ++++++++++++++++--- 3 files changed, 68 insertions(+), 3 deletions(-) create mode 100644 src/graphql/listBatches.ts diff --git a/src/graphql/index.ts b/src/graphql/index.ts index 8e0b401a..fc509ec8 100644 --- a/src/graphql/index.ts +++ b/src/graphql/index.ts @@ -33,6 +33,9 @@ export type { Response as GetSubmissionResp } from "./getSubmission"; export { query as GET_DATA_SUBMISSION_BATCH_FILES } from "./getDataSubmissionBatchFiles"; export type { Response as GetDataSubmissionBatchFilesResp } from "./getDataSubmissionBatchFiles"; +export { query as LIST_BATCHES } from "./listBatches"; +export type { Response as ListBatchesResp } from "./listBatches"; + // User Profile export { query as GET_USER } from "./getUser"; export type { Response as GetUserResp } from "./getUser"; diff --git a/src/graphql/listBatches.ts b/src/graphql/listBatches.ts new file mode 100644 index 00000000..280d8733 --- /dev/null +++ b/src/graphql/listBatches.ts @@ -0,0 +1,45 @@ +import gql from 'graphql-tag'; + +export const query = gql` + query listBatches( + $submissionID: ID! + $first: Int + $offset: Int + $orderBy: String + $sortDirection: String + ) { + listBatches( + submissionID: $submissionID + first: $first + offset: $offset + orderBy: $orderBy + sortDirection: $sortDirection + ) { + total + batches { + _id + submissionID + type + metadataIntention + fileCount + files { + filePrefix + fileName + size + status + errors + createdAt + updatedAt + } + status + errors + createdAt + updatedAt + } + } + } +`; + +export type Response = { + listBatches: ListBatches; +}; diff --git a/src/types/Submissions.d.ts b/src/types/Submissions.d.ts index 0226ab34..c08c7333 100644 --- a/src/types/Submissions.d.ts +++ b/src/types/Submissions.d.ts @@ -55,14 +55,26 @@ type UploadResult = { errors: string[]; }; +type BatchFileInfo = { + filePrefix: string; // prefix/path within S3 bucket + fileName: string; + size: number; + status: string; // [New, Uploaded, Failed] + errors: string[]; + createdAt: string; // ISO 8601 date time format with UTC or offset e.g., 2023-05-01T09:23:30Z + updatedAt: string // ISO 8601 date time format with UTC or offset e.g., 2023-05-01T09:23:30Z +}; + +type BatchStatus = "New" | "Uploaded" | "Upload Failed" | "Loaded" | Rejected; + type Batch = { _id: string; submissionID: string; // parent type: string; // [metadata, file] metadataIntention: string; // [New, Update, Delete], Update is meant for "Update or insert", metadata only! file batches are always treated as Update fileCount: number; // calculated by BE - files: FileInfo[]; - status: string; // [New, Uploaded, Upload Failed, Loaded, Rejected] Loaded and Rejected are for metadata batch only + files: BatchFileInfo[]; + status: BatchStatus; // [New, Uploaded, Upload Failed, Loaded, Rejected] Loaded and Rejected are for metadata batch only errors: string[]; createdAt: string; // ISO 8601 date time format with UTC or offset e.g., 2023-05-01T09:23:30Z updatedAt: string; // ISO 8601 date time format with UTC or offset e.g., 2023-05-01T09:23:30Z @@ -77,7 +89,7 @@ type NewBatch = { metadataIntention: string; // [New, Update, Delete], Update is meant for "Update or insert", metadata only! file batches are always treated as Update fileCount: number; // calculated by BE files: FileURL[]; - status: string; // [New, Uploaded, Upload Failed, Loaded, Rejected] Loaded and Rejected are for metadata batch only + status: BatchStatus; // [New, Uploaded, Upload Failed, Loaded, Rejected] Loaded and Rejected are for metadata batch only errors: string[]; createdAt: string; // ISO 8601 date time format with UTC or offset e.g., 2023-05-01T09:23:30Z updatedAt: string; // ISO 8601 date time format with UTC or offset e.g., 2023-05-01T09:23:30Z @@ -92,6 +104,11 @@ type BatchFile = { errorCount: number; }; +type ListBatches = { + total: number; + batches: Batch[]; +}; + type TempCredentials = { accessKeyId: string; secretAccessKey: string; From 6756efd785e106a96aa54e0589562f89dccb4199 Mon Sep 17 00:00:00 2001 From: Alejandro-Vega Date: Thu, 26 Oct 2023 01:30:49 -0400 Subject: [PATCH 21/88] Fixed 1-off pagination mistake --- src/components/DataSubmissions/PaginationActions.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/DataSubmissions/PaginationActions.tsx b/src/components/DataSubmissions/PaginationActions.tsx index 3a6525d7..fda417f2 100644 --- a/src/components/DataSubmissions/PaginationActions.tsx +++ b/src/components/DataSubmissions/PaginationActions.tsx @@ -52,7 +52,7 @@ const PaginationActions = ({ }: TablePaginationProps) => ( Date: Thu, 26 Oct 2023 01:32:02 -0400 Subject: [PATCH 22/88] Updated Batch Table loading, styling, --- .../DataSubmissionBatchTable.tsx | 96 +++++++++++-------- 1 file changed, 54 insertions(+), 42 deletions(-) diff --git a/src/components/DataSubmissions/DataSubmissionBatchTable.tsx b/src/components/DataSubmissions/DataSubmissionBatchTable.tsx index 7146a09f..65a7e68c 100644 --- a/src/components/DataSubmissions/DataSubmissionBatchTable.tsx +++ b/src/components/DataSubmissions/DataSubmissionBatchTable.tsx @@ -1,3 +1,4 @@ +/* eslint-disable react/no-array-index-key */ import { Box, CircularProgress, @@ -37,17 +38,25 @@ const StyledTableHead = styled(TableHead)({ background: "#5C8FA7", }); +const StyledTableRow = styled(TableRow)({ + height: "46.59px", + minHeight: "46.59px" +}); + const StyledHeaderCell = styled(TableCell)({ fontWeight: 700, fontSize: "16px", lineHeight: "16px", color: "#fff !important", - "&.MuiTableCell-root": { - padding: "16px", + padding: "22px 53px 22px 16px", + "&.MuiTableCell-root:first-of-type": { + paddingTop: "22px", + paddingRight: "16px", + paddingBottom: "22px", color: "#fff !important", verticalAlign: "top", }, - "& .MuiSvgIcon-root, & .MuiButtonBase-root": { + "& .MuiSvgIcon-root, & .MuiButtonBase-root": { color: "#fff !important", }, }); @@ -56,7 +65,7 @@ const StyledTableCell = styled(TableCell)({ fontSize: "16px", color: "#083A50 !important", borderBottom: "0.5px solid #6B7294", - fontFamily: "'Nunito'", + fontFamily: "'Nunito', 'Rubik', sans-serif", fontStyle: "normal", fontWeight: 400, lineHeight: "19.6px", @@ -110,6 +119,7 @@ export type Column = { value: (a: T, user: User) => string | boolean | number | React.ReactNode; field?: keyof T; default?: true; + minWidth?: string; }; export type FetchListing = { @@ -191,11 +201,28 @@ const DataSubmissionBatchTable = ({ return ( + {loading && ( + + + + )} {columns.map((col: Column) => ( - + {col.field ? ( ({ - {loading && ( - - - - - - - + {loading ? Array.from(Array(perPage).keys())?.map((_, idx) => ( + + + + )) : ( + data?.map((d: T) => ( + + {columns.map((col: Column) => ( + + {col.value(d, user)} + + ))} + + )) )} - {data?.map((d: T) => ( - - {columns.map((col: Column) => ( - - {col.value(d, user)} - - ))} - - ))} - {/* Fill the difference between perPage and count to prevent height changes */} - {emptyRows > 0 && ( - - - + {!loading && emptyRows > 0 && ( + Array.from(Array(emptyRows).keys())?.map((row) => ( + + + + )) )} {/* No content message */} - {(!total || total === 0) && ( - + {!loading && (!total || total === 0) && ( + Date: Thu, 26 Oct 2023 01:32:29 -0400 Subject: [PATCH 23/88] Added return button to data submission dashboard --- .../dataSubmissions/DataSubmissionActions.tsx | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/content/dataSubmissions/DataSubmissionActions.tsx b/src/content/dataSubmissions/DataSubmissionActions.tsx index d974d1d9..8d8fd05f 100644 --- a/src/content/dataSubmissions/DataSubmissionActions.tsx +++ b/src/content/dataSubmissions/DataSubmissionActions.tsx @@ -1,6 +1,8 @@ import { useState } from "react"; +import { useNavigate } from "react-router-dom"; import { LoadingButton } from "@mui/lab"; import { Button, Stack, Typography, styled } from "@mui/material"; +import ArrowBackIcon from '@mui/icons-material/ArrowBack'; import { useAuthContext } from "../../components/Contexts/AuthContext"; import CustomDialog from "../../components/Shared/Dialog"; @@ -87,6 +89,15 @@ const StyledArchiveButton = styled(StyledButtonBase)(() => ({ }, })); +const StyledReturnButton = styled(StyledButtonBase)(() => ({ + background: "#6A5ACD", + color: "#FFF", + flexDirection: "row", + "&:hover": { + background: "#594ABF", + }, +})); + const StyledDialog = styled(CustomDialog)({ "& .MuiDialog-paper": { maxWidth: "none", @@ -137,6 +148,7 @@ type Props = { const DataSubmissionActions = ({ dataSubmission, onDataSubmissionChange }: Props) => { const { user } = useAuthContext(); + const navigate = useNavigate(); const [currentDialog, setCurrentDialog] = useState(null); const [action, setAction] = useState(null); @@ -219,8 +231,25 @@ const DataSubmissionActions = ({ dataSubmission, onDataSubmissionChange }: Props setCurrentDialog(null); }; + const returnToSubmissionList = () => { + navigate("/data-submissions"); + window.scrollTo(0, 0); + }; + return ( + {/* Return to Data Submission List Button */} + } + disabled={!!action} + disableElevation + disableRipple + disableTouchRipple + > + Return + {/* Action Buttons */} {SubmitStatuses.includes(dataSubmission?.status) && SubmitRoles.includes(user?.role) ? ( Date: Thu, 26 Oct 2023 01:33:57 -0400 Subject: [PATCH 24/88] Updated listBatches mockAPI to real API. Also, updated columns --- .../dataSubmissions/DataSubmission.tsx | 66 ++++++++++--------- 1 file changed, 35 insertions(+), 31 deletions(-) diff --git a/src/content/dataSubmissions/DataSubmission.tsx b/src/content/dataSubmissions/DataSubmission.tsx index 5069217d..4e20742a 100644 --- a/src/content/dataSubmissions/DataSubmission.tsx +++ b/src/content/dataSubmissions/DataSubmission.tsx @@ -3,6 +3,7 @@ import { useParams } from "react-router-dom"; import { useLazyQuery } from "@apollo/client"; import { Alert, + Box, Card, CardActions, CardContent, @@ -15,7 +16,7 @@ import { isEqual } from "lodash"; import bannerSvg from "../../assets/dataSubmissions/dashboard_banner.svg"; import LinkTab from "../../components/DataSubmissions/LinkTab"; import DataSubmissionUpload from "../../components/DataSubmissions/DataSubmissionUpload"; -import { GET_DATA_SUBMISSION_BATCH_FILES, GET_SUBMISSION, GetDataSubmissionBatchFilesResp, GetSubmissionResp } from "../../graphql"; +import { GET_SUBMISSION, GetSubmissionResp, LIST_BATCHES, ListBatchesResp } from "../../graphql"; import DataSubmissionSummary from "../../components/DataSubmissions/DataSubmissionSummary"; import GenericAlert from "../../components/GenericAlert"; import PieChart from "../../components/DataSubmissions/PieChart"; @@ -158,17 +159,16 @@ const StyledErrorCount = styled("div")(() => ({ textDecorationLine: "underline", })); -const columns: Column[] = [ +const columns: Column[] = [ { - label: "Batch ID", - value: (data) => data?._id, - field: "_id", - default: true, + label: "Upload Type", + value: (data) => data?.metadataIntention, + field: "metadataIntention", }, { - label: "Uploaded Type", - value: (data) => data?.uploadType, - field: "uploadType", + label: "Batch Type", + value: (data) => {data?.type}, + field: "type", }, { label: "File Count", @@ -181,18 +181,20 @@ const columns: Column[] = [ field: "status", }, { - label: "Last Access Date", - value: (data) => (data?.submittedDate ? FormatDate(data.submittedDate, "M-D-YYYY hh:mm A") : ""), - field: "submittedDate", + label: "Uploaded Date", + value: (data) => (data?.createdAt ? `${FormatDate(data.createdAt, "M-D-YYYY")} at ${FormatDate(data.createdAt, "hh:mm A")}` : ""), + field: "createdAt", + default: true, + minWidth: "240px" }, { - label: "Error Count", + label: "Error", value: (data) => ( - {data.errorCount > 0 ? `${data.errorCount} ${data.errorCount === 1 ? "Error" : "Errors"}` : ""} + {data.errors?.length > 0 ? `${data.errors.length} ${data.errors.length === 1 ? "Error" : "Errors"}` : ""} ), - field: "errorCount", + field: "errors", }, ]; @@ -207,8 +209,9 @@ const DataSubmission = () => { const { submissionId, tab } = useParams(); const [dataSubmission, setDataSubmission] = useState(null); - const [batchFiles, setBatchFiles] = useState([]); - const [prevBatchFetch, setPrevBatchFetch] = useState>(null); + const [batchFiles, setBatchFiles] = useState([]); + const [totalBatchFiles, setTotalBatchFiles] = useState(0); + const [prevBatchFetch, setPrevBatchFetch] = useState>(null); const [error, setError] = useState(false); const [loading, setLoading] = useState(false); const [openAlert, setOpenAlert] = useState(null); @@ -220,12 +223,12 @@ const DataSubmission = () => { fetchPolicy: 'no-cache' }); - const [getBatchFiles] = useLazyQuery(GET_DATA_SUBMISSION_BATCH_FILES, { - context: { clientName: 'mockService' }, + const [listBatches] = useLazyQuery(LIST_BATCHES, { + context: { clientName: 'backend' }, fetchPolicy: 'no-cache' }); - const handleFetchBatchFiles = async (fetchListing: FetchListing) => { + const handleFetchBatchFiles = async (fetchListing: FetchListing) => { const { first, offset, sortDirection, orderBy } = fetchListing || {}; if (!submissionId) { setError(true); @@ -239,22 +242,23 @@ const DataSubmission = () => { try { setLoading(true); - const { data: newBatchFiles, error: batchFilesError } = await getBatchFiles({ - variables: { // TODO: Replace with dynamic variables when real endpoint is created - id: "8887654", - first: 10, - offset: 0, - sortDirection: "desc", - orderBy: "_id" + const { data: newBatchFiles, error: batchFilesError } = await listBatches({ + variables: { + submissionID: submissionId, + first, + offset, + sortDirection, + orderBy }, - context: { clientName: 'mockService' }, + context: { clientName: 'backend' }, fetchPolicy: 'no-cache' }); - if (batchFilesError || !newBatchFiles?.getDataSubmissionBatchFiles) { + if (batchFilesError || !newBatchFiles?.listBatches) { setError(true); return; } - setBatchFiles(newBatchFiles.getDataSubmissionBatchFiles.batchFiles); + setBatchFiles(newBatchFiles.listBatches.batches); + setTotalBatchFiles(newBatchFiles.listBatches.total); } catch (err) { setError(true); } finally { @@ -422,7 +426,7 @@ const DataSubmission = () => { From c3b9c0d66b604d16c543cb491ef5e0ec5d7c69d3 Mon Sep 17 00:00:00 2001 From: Alec M Date: Thu, 26 Oct 2023 09:13:42 -0400 Subject: [PATCH 25/88] CRDCDH-529 Add CCDI to DC_POC DC dropdown --- src/config/Datacommons.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/Datacommons.ts b/src/config/Datacommons.ts index 48e99944..2c727086 100644 --- a/src/config/Datacommons.ts +++ b/src/config/Datacommons.ts @@ -5,4 +5,5 @@ */ export const DataCommons: string[] = [ "CDS", + "CCDI", ]; From 22285150f55dae57699cb7928229063193f55b1c Mon Sep 17 00:00:00 2001 From: Alec M Date: Thu, 26 Oct 2023 09:49:55 -0400 Subject: [PATCH 26/88] Remove auth from DMN route --- src/router.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/router.tsx b/src/router.tsx index fc59cf94..946a5e5f 100644 --- a/src/router.tsx +++ b/src/router.tsx @@ -81,7 +81,7 @@ const routes: RouteObject[] = [ }, { path: '/model-navigator', - element: } redirectPath="/model-navigator" redirectName="Model Navigator" /> + element: }, { path: '/organizations/:orgId?', From 5a51f8d8a6fecf467d99ed6643aa051cbca51723 Mon Sep 17 00:00:00 2001 From: Michael Tang Date: Thu, 26 Oct 2023 10:38:17 -0400 Subject: [PATCH 27/88] make CDS default data commons --- src/content/dataSubmissions/DataSubmissionsListView.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/content/dataSubmissions/DataSubmissionsListView.tsx b/src/content/dataSubmissions/DataSubmissionsListView.tsx index 3265168c..bcd51dc3 100644 --- a/src/content/dataSubmissions/DataSubmissionsListView.tsx +++ b/src/content/dataSubmissions/DataSubmissionsListView.tsx @@ -271,7 +271,7 @@ const ListingView: FC = () => { const [page, setPage] = useState(0); const [perPage, setPerPage] = useState(10); const [creatingSubmission, setCreatingSubmission] = useState(false); - const [dataCommons, setDataCommons] = useState(null); + const [dataCommons, setDataCommons] = useState("CDS"); const [study, setStudy] = useState("All"); const [dbgapid, setDbgapid] = useState(null); const [createSubmissionError, setCreateSubmissionError] = useState(false); @@ -331,7 +331,7 @@ const ListingView: FC = () => { }; const onCreateSubmissionButtonClick = async () => { setCreatingSubmission(true); - setDataCommons(null); + setDataCommons("CDS"); setStudy(null); setSubmissionName(null); setDbgapid(null); From 27c164a3891f79748bbe3f4392acc811a18a5147 Mon Sep 17 00:00:00 2001 From: Alec M Date: Thu, 26 Oct 2023 14:04:17 -0400 Subject: [PATCH 28/88] CRDCDH-523 Groundwork for dynamic model inclusion --- src/config/Datacommons.ts | 18 ++++++++---- src/config/ModelNavigator.ts | 6 ++-- src/config/globalHeaderData.tsx | 11 +++++-- src/content/users/ProfileView.tsx | 4 +-- src/router.tsx | 2 +- src/types/DataCommon.d.ts | 48 +++++++++++++++++++++++++++++++ 6 files changed, 75 insertions(+), 14 deletions(-) create mode 100644 src/types/DataCommon.d.ts diff --git a/src/config/Datacommons.ts b/src/config/Datacommons.ts index 2c727086..f0b71f32 100644 --- a/src/config/Datacommons.ts +++ b/src/config/Datacommons.ts @@ -1,9 +1,15 @@ /** - * An array of assignable Data Commons. - * - * @type {string[]} + * A collection of site-wide supported Data Commons. */ -export const DataCommons: string[] = [ - "CDS", - "CCDI", +export const DataCommons: DataCommon[] = [ + { + name: "CDS", + relative_assets: null, + source_assets: null + }, + { + name: "CCDI", + relative_assets: null, + source_assets: null + }, ]; diff --git a/src/config/ModelNavigator.ts b/src/config/ModelNavigator.ts index 7e7bca2b..4d66652d 100644 --- a/src/config/ModelNavigator.ts +++ b/src/config/ModelNavigator.ts @@ -1,6 +1,6 @@ -export const DATA_MODEL = "models/icdc-model.yml"; -export const DATA_MODEL_PROPS = "models/icdc-model-props.yml"; -export const DATA_MODEL_README = "models/icdc-model-readme.md"; +export const DATA_MODEL = "/models/icdc-model.yml"; +export const DATA_MODEL_PROPS = "/models/icdc-model-props.yml"; +export const DATA_MODEL_README = "/models/icdc-model-readme.md"; const facetFilterSearchData = [ { diff --git a/src/config/globalHeaderData.tsx b/src/config/globalHeaderData.tsx index d96836f3..d4cad73b 100644 --- a/src/config/globalHeaderData.tsx +++ b/src/config/globalHeaderData.tsx @@ -1,6 +1,7 @@ import Logo from '../assets/header/Portal_Logo.svg'; import LogoSmall from '../assets/header/Portal_Logo_Small.svg'; import usaFlagSmall from '../assets/header/us_flag_small.svg'; +import { DataCommons } from './DataCommons'; // globalHeaderLogo image 468x100 // globalHeaderImage: image 2200x100 @@ -34,9 +35,9 @@ export const navMobileList = [ }, { name: 'Model Navigator', - link: '/model-navigator', + link: '#', id: 'navbar-dropdown-model-navigator', - className: 'navMobileItem', + className: 'navMobileItem clickable', } ]; @@ -50,4 +51,10 @@ export const navbarSublists = { // className: 'navMobileSubTitle', // }, // ], + "Model Navigator": DataCommons.map((dc) => ({ + name: `${dc.name} Model`, + link: `/model-navigator/${dc.name.toLowerCase()}`, + text: '', + className: 'navMobileSubTitle', + })), }; diff --git a/src/content/users/ProfileView.tsx b/src/content/users/ProfileView.tsx index e0590879..066bf25c 100644 --- a/src/content/users/ProfileView.tsx +++ b/src/content/users/ProfileView.tsx @@ -18,7 +18,7 @@ import SuspenseLoader from '../../components/SuspenseLoader'; import { OrgAssignmentMap, OrgRequiredRoles, Roles } from '../../config/AuthRoles'; import { EDIT_USER, EditUserResp, GET_USER, GetUserResp, UPDATE_MY_USER, UpdateMyUserResp } from '../../graphql'; import { formatIDP, getEditableFields } from '../../utils'; -import { DataCommons } from '../../config/Datacommons'; +import { DataCommons } from '../../config/DataCommons'; type Props = { _id: User["_id"]; @@ -444,7 +444,7 @@ const ProfileView: FC = ({ _id, viewType }: Props) => { MenuProps={{ disablePortal: true }} multiple > - {DataCommons.map((dc) => {dc})} + {DataCommons.map((dc) => {dc.name})} )} /> diff --git a/src/router.tsx b/src/router.tsx index 946a5e5f..23942c5e 100644 --- a/src/router.tsx +++ b/src/router.tsx @@ -80,7 +80,7 @@ const routes: RouteObject[] = [ element: } redirectPath="/profile" redirectName="User Profile" /> }, { - path: '/model-navigator', + path: '/model-navigator/:dataCommons', element: }, { diff --git a/src/types/DataCommon.d.ts b/src/types/DataCommon.d.ts new file mode 100644 index 00000000..88682a30 --- /dev/null +++ b/src/types/DataCommon.d.ts @@ -0,0 +1,48 @@ +type DataCommon = { + /** + * The user-friendly name of the Data Common. + * + * @example "CDS" + */ + name: string; + /** + * The relative-URLs of the Data Common's asset locations + * stored in the production `/build` folder. + * + * Examples of relative-URLs: "/models/cds/1.0.0/model.yaml" + */ + relative_assets: DataCommonAssets; + /** + * The public URLs of the Data Common's asset locations + * stored in their respective GitHub repositories. + * + * These are fetched and stored during the production build process. + * + * Examples of public-URLs: "https://raw.githubusercontent.com/..." + */ + source_assets: DataCommonAssets; +}; + +type DataCommonAssets = { + /** + * The URL of the Data Common's model. + * + * @example "/models/cds/1.0.0/model.yaml" + * @example "https://raw.githubusercontent.com/.../model.yaml" + */ + model: string; + /** + * The URL of the Data Common's model props. + * + * @example "/models/cds/1.0.0/model-props.yaml" + * @example "https://raw.githubusercontent.com/.../model-props.yaml" + */ + props: string; + /** + * The URL of the Data Common's model readme. + * + * @example "/models/cds/1.0.0/README.md" + * @example "https://raw.githubusercontent.com/.../README.md" + */ + readme: string; +}; From 2ec45343f46aafacf666fa20b007ba96aa5a20dd Mon Sep 17 00:00:00 2001 From: Michael Tang Date: Fri, 27 Oct 2023 10:42:49 -0400 Subject: [PATCH 29/88] rename reject to inquire --- src/components/Contexts/FormContext.tsx | 30 +++++++ .../Questionnaire/InquireFormDialog.tsx | 88 +++++++++++++++++++ .../DataSubmissionsListView.tsx | 2 +- src/content/questionnaire/FormView.tsx | 50 ++++++----- src/content/questionnaire/ListView.tsx | 2 +- src/content/questionnaire/sections/A.tsx | 4 +- src/content/questionnaire/sections/B.tsx | 4 +- src/content/questionnaire/sections/C.tsx | 4 +- src/content/questionnaire/sections/D.tsx | 4 +- src/content/questionnaire/sections/Review.tsx | 6 +- src/graphql/index.ts | 3 + src/graphql/inquireApplication.ts | 13 +++ src/types/Application.d.ts | 2 +- src/types/Globals.d.ts | 2 +- 14 files changed, 175 insertions(+), 39 deletions(-) create mode 100644 src/components/Questionnaire/InquireFormDialog.tsx create mode 100644 src/graphql/inquireApplication.ts diff --git a/src/components/Contexts/FormContext.tsx b/src/components/Contexts/FormContext.tsx index d2d33a7e..5f8378e9 100644 --- a/src/components/Contexts/FormContext.tsx +++ b/src/components/Contexts/FormContext.tsx @@ -13,6 +13,7 @@ import { GET_APP, LAST_APP, REJECT_APP, + INQUIRE_APP, REOPEN_APP, REVIEW_APP, SAVE_APP, @@ -20,6 +21,7 @@ import { ApproveAppResp, GetAppResp, LastAppResp, + InquireAppResp, RejectAppResp, ReopenAppResp, ReviewAppResp, @@ -41,6 +43,7 @@ export type ContextState = { reopenForm?: () => Promise; reviewForm?: () => Promise; approveForm?: (comment: string, wholeProgram: boolean) => Promise; + inquireForm?: (comment: string) => Promise; rejectForm?: (comment: string) => Promise; setData?: (Application) => Promise; error?: string; @@ -140,6 +143,12 @@ export const FormProvider: FC = ({ children, id } : ProviderProps fetchPolicy: 'no-cache' }); + const [inquireApp] = useMutation(INQUIRE_APP, { + variables: { id }, + context: { clientName: 'backend' }, + fetchPolicy: 'no-cache' + }); + const [rejectApp] = useMutation(REJECT_APP, { variables: { id }, context: { clientName: 'backend' }, @@ -282,6 +291,26 @@ export const FormProvider: FC = ({ children, id } : ProviderProps return res?.approveApplication?.["_id"] || false; }; + // Here we set the form to inquired through the API with a comment + const inquireForm = async (comment: string) => { + setState((prevState) => ({ ...prevState, status: Status.SUBMITTING })); + + const { data: res, errors } = await inquireApp({ + variables: { + _id: state?.data["_id"], + comment + } + }); + + if (errors) { + setState((prevState) => ({ ...prevState, status: Status.ERROR })); + return false; + } + + setState((prevState) => ({ ...prevState, status: Status.LOADED })); + return res?.inquireApplication?.["_id"] || false; + }; + // Here we reject the form to the API with a comment const rejectForm = async (comment: string) => { setState((prevState) => ({ ...prevState, status: Status.SUBMITTING })); @@ -424,6 +453,7 @@ export const FormProvider: FC = ({ children, id } : ProviderProps setData, submitData, approveForm, + inquireForm, rejectForm, reviewForm, reopenForm, diff --git a/src/components/Questionnaire/InquireFormDialog.tsx b/src/components/Questionnaire/InquireFormDialog.tsx new file mode 100644 index 00000000..44621829 --- /dev/null +++ b/src/components/Questionnaire/InquireFormDialog.tsx @@ -0,0 +1,88 @@ +import { LoadingButton } from "@mui/lab"; +import { Button, DialogProps, styled } from "@mui/material"; +import { FC, useState } from "react"; +import Dialog from "../Shared/Dialog"; +import TextInput from "./TextInput"; + +const StyledDialog = styled(Dialog)({ + "& .MuiDialog-paper": { + maxWidth: "none", + borderRadius: "8px", + width: "567px !important", + }, +}); + +type Props = { + title?: string; + message?: string; + disableActions?: boolean; + loading?: boolean; + onCancel?: () => void; + onSubmit?: (reviewComment: string) => void; +} & DialogProps; + +const InquireFormDialog: FC = ({ + title, + message, + disableActions, + loading, + onCancel, + onSubmit, + open, + onClose, + ...rest +}) => { + const [reviewComment, setReviewComment] = useState(""); + + const handleCommentChange = (event: React.ChangeEvent) => { + const val = event?.target?.value || ""; + setReviewComment(val); + }; + + const handleOnCancel = () => { + if (typeof onCancel === "function") { + onCancel(); + } + setReviewComment(""); + }; + + return ( + + + onSubmit(reviewComment)} + loading={loading} + disabled={!reviewComment || disableActions} + autoFocus + > + Confirm to move to Inquired + + + )} + {...rest} + > + + + ); +}; + +export default InquireFormDialog; diff --git a/src/content/dataSubmissions/DataSubmissionsListView.tsx b/src/content/dataSubmissions/DataSubmissionsListView.tsx index 4fbbee00..930a5e52 100644 --- a/src/content/dataSubmissions/DataSubmissionsListView.tsx +++ b/src/content/dataSubmissions/DataSubmissionsListView.tsx @@ -137,7 +137,7 @@ const columns: Column[] = [ { label: "dbGaP ID", value: (a) => a.dbGaPID, - field: "dbGapID", + field: "dbGaPID", }, { label: "Status", diff --git a/src/content/questionnaire/FormView.tsx b/src/content/questionnaire/FormView.tsx index c781d9be..437dddbf 100644 --- a/src/content/questionnaire/FormView.tsx +++ b/src/content/questionnaire/FormView.tsx @@ -18,7 +18,7 @@ import map, { InitialSections } from '../../config/SectionConfig'; import UnsavedChangesDialog from '../../components/Questionnaire/UnsavedChangesDialog'; import SubmitFormDialog from '../../components/Questionnaire/SubmitFormDialog'; import useFormMode from './sections/hooks/useFormMode'; -import RejectFormDialog from '../../components/Questionnaire/RejectFormDialog'; +import InquireFormDialog from '../../components/Questionnaire/InquireFormDialog'; import ApproveFormDialog from '../../components/Questionnaire/ApproveFormDialog'; import PageBanner from '../../components/PageBanner'; import bannerPng from "../../assets/banner/submission_banner.png"; @@ -83,13 +83,14 @@ type AlertState = { */ const FormView: FC = ({ section, classes } : Props) => { const navigate = useNavigate(); - const { status, data, setData, submitData, approveForm, rejectForm, reopenForm, reviewForm, error } = useFormContext(); + // TODO: use rejectForm + const { status, data, setData, submitData, approveForm, inquireForm, rejectForm, reopenForm, reviewForm, error } = useFormContext(); const { user, status: authStatus } = useAuthContext(); const [activeSection, setActiveSection] = useState(validateSection(section) ? section : "A"); const [blockedNavigate, setBlockedNavigate] = useState(false); const [openSubmitDialog, setOpenSubmitDialog] = useState(false); const [openApproveDialog, setOpenApproveDialog] = useState(false); - const [openRejectDialog, setOpenRejectDialog] = useState(false); + const [openInquireDialog, setOpenInquireDialog] = useState(false); const [hasError, setHasError] = useState(false); const { formMode, readOnlyInputs } = useFormMode(); const [changesAlert, setChangesAlert] = useState(null); @@ -112,7 +113,7 @@ const FormView: FC = ({ section, classes } : Props) => { submitFormRef: createRef(), nextButtonRef: createRef(), approveFormRef: createRef(), - rejectFormRef: createRef(), + inquireFormRef: createRef(), getFormObjectRef: useRef<(() => FormObject) | null>(null), }; @@ -140,7 +141,7 @@ const FormView: FC = ({ section, classes } : Props) => { if (status !== FormStatus.LOADED && authStatus !== AuthStatus.LOADED) { return; } - if (!hasReopenedFormRef.current && data?.status === "Rejected" && formMode === "Edit") { + if (!hasReopenedFormRef.current && data?.status === "Inquired" && formMode === "Edit") { handleReopenForm(); hasReopenedFormRef.current = true; } @@ -281,7 +282,7 @@ const FormView: FC = ({ section, classes } : Props) => { * * @returns {Promise} true if the review submit was successful, false otherwise */ - const submitRejectForm = async (reviewComment: string): Promise => { + const submitInquireForm = async (reviewComment: string): Promise => { if (formMode !== "Review") { return false; } @@ -292,20 +293,21 @@ const FormView: FC = ({ section, classes } : Props) => { } try { - const res = await rejectForm(reviewComment); - setOpenRejectDialog(false); + // TODO: rename to inquire + const res = await inquireForm(reviewComment); + setOpenInquireDialog(false); navigate('/submissions'); setHasError(false); return res; } catch (err) { - setOpenRejectDialog(false); + setOpenInquireDialog(false); setHasError(true); return false; } }; /** - * Reopen the form when it has already been rejected + * Reopen the form when it has already been inquired * and the user wants to retry submission * * @@ -516,19 +518,19 @@ const FormView: FC = ({ section, classes } : Props) => { setOpenApproveDialog(true); }; - const handleRejectForm = () => { + const handleInquireForm = () => { if (formMode !== "Review") { return; } - setOpenRejectDialog(true); + setOpenInquireDialog(true); }; const handleCloseApproveFormDialog = () => { setOpenApproveDialog(false); }; - const handleCloseRejectFormDialog = () => { - setOpenRejectDialog(false); + const handleCloseInquireFormDialog = () => { + setOpenInquireDialog(false); }; const handleBackClick = () => { @@ -648,14 +650,14 @@ const FormView: FC = ({ section, classes } : Props) => { Approve - Reject + Inquire Additional Information - {(authData?.user?.role === "Admin" || authData?.user?.role === "Organization Owner") && ( setClickedTitle("")}> @@ -546,6 +541,13 @@ const NavBar = () => { )} + {(authData?.user?.role === "Submitter" || authData?.user?.role === "Organization Owner") && ( + + + + )} Date: Mon, 30 Oct 2023 18:19:33 -0400 Subject: [PATCH 49/88] Added explanation text once token is created. Small styling changes --- src/content/users/APITokenDialog.tsx | 43 +++++++++++++++++++--------- 1 file changed, 30 insertions(+), 13 deletions(-) diff --git a/src/content/users/APITokenDialog.tsx b/src/content/users/APITokenDialog.tsx index e4942591..c98ec126 100644 --- a/src/content/users/APITokenDialog.tsx +++ b/src/content/users/APITokenDialog.tsx @@ -26,15 +26,25 @@ const StyledHeader = styled(Typography)({ }); const StyledTitle = styled(Typography)({ - fontFamily: "'Nunito'", + fontFamily: "'Nunito', 'Rubik', sans-serif", fontSize: "16px", fontStyle: "normal", fontWeight: 400, lineHeight: "19.6px", - height: "74px", marginBottom: "58px" }); +const StyledExplanationText = styled(Typography)({ + fontFamily: "'Nunito', 'Rubik', sans-serif", + color: "#083A50", + textAlign: "center", + fontSize: "16px", + fontStyle: "italic", + fontWeight: 400, + lineHeight: "19.6px", + marginTop: "20px" +}); + const StyledTokenInput = styled(OutlinedInput)({ display: "flex", width: "313px", @@ -47,7 +57,7 @@ const StyledTokenInput = styled(OutlinedInput)({ flexShrink: 0, background: "#FFFFFF", color: "#000000", - fontFamily: "'Nunito'", + fontFamily: "'Nunito', 'Rubik', sans-serif", fontSize: "16px", fontStyle: "normal", fontWeight: 400, @@ -71,7 +81,7 @@ const StyledGenerateButton = styled(Button)({ background: "#1D91AB", color: "#FFFFFF", textAlign: "center", - fontFamily: "'Nunito'", + fontFamily: "'Nunito', 'Rubik', sans-serif", fontSize: "16px", fontStyle: "normal", fontWeight: 700, @@ -119,7 +129,7 @@ const StyledCloseButton = styled(Button)({ letterSpacing: "0.32px", textTransform: "none", alignSelf: "center", - marginTop: "112px" + marginTop: "45px" }); type Props = { @@ -213,25 +223,32 @@ const APITokenDialog: FC = ({ > - + API Token - + An API Token is required to utilize the Uploader CLI tool for file uploads.

- Each time you click the 'Create Token' button, a new token will be generated, and the previous token will be invalidated. A token expires 60 days after its creation. + Each time you click the 'Create Token' button, a new token will be generated, and +
+ the previous token will be invalidated. A token expires 60 days after its creation.
- - + + Create Token - - + + - + + Copy your token to the clipboard, +
+ as this will be the only time you can see this token +
+ Close From f5d57f800c7f0de4d01d0bbbb157a7d1be826e55 Mon Sep 17 00:00:00 2001 From: Alejandro-Vega Date: Mon, 30 Oct 2023 18:30:29 -0400 Subject: [PATCH 50/88] Removed unused route --- src/router.tsx | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/router.tsx b/src/router.tsx index 61de87c8..74119422 100644 --- a/src/router.tsx +++ b/src/router.tsx @@ -79,10 +79,6 @@ const routes: RouteObject[] = [ path: '/profile/:userId?', element: } redirectPath="/profile" redirectName="User Profile" /> }, - { - path: '/profile/:userId?/api-token', - element: } redirectPath="/api-token" redirectName="User API Token" /> - }, { path: '/submission-templates', element: } redirectPath="/submission-templates" redirectName="Data Submission Templates" /> From d0d6d5d6691179735e46e775a576768d5ce3b7a6 Mon Sep 17 00:00:00 2001 From: Alejandro-Vega Date: Mon, 30 Oct 2023 18:35:53 -0400 Subject: [PATCH 51/88] Added additional role guard --- src/content/users/APITokenDialog.tsx | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/content/users/APITokenDialog.tsx b/src/content/users/APITokenDialog.tsx index c98ec126..ba23bef9 100644 --- a/src/content/users/APITokenDialog.tsx +++ b/src/content/users/APITokenDialog.tsx @@ -5,6 +5,7 @@ import { GRANT_TOKEN, GrantTokenResp } from "../../graphql"; import GenericAlert, { AlertState } from "../../components/GenericAlert"; import { ReactComponent as CopyIconSvg } from "../../assets/icons/copy_icon.svg"; import { ReactComponent as CloseIconSvg } from "../../assets/icons/close_icon.svg"; +import { useAuthContext } from "../../components/Contexts/AuthContext"; const StyledDialog = styled(Dialog)({ "& .MuiDialog-paper": { @@ -132,6 +133,8 @@ const StyledCloseButton = styled(Button)({ marginTop: "45px" }); +const canGenerateTokenRoles: User["role"][] = ["Submitter", "Organization Owner"]; + type Props = { title?: string; message?: string; @@ -151,6 +154,8 @@ const APITokenDialog: FC = ({ open, ...rest }) => { + const { user } = useAuthContext(); + const [tokens, setTokens] = useState([]); const [tokenIdx, setTokenIdx] = useState(null); const [changesAlert, setChangesAlert] = useState(null); @@ -166,6 +171,11 @@ const APITokenDialog: FC = ({ }; const generateToken = async () => { + if (!canGenerateTokenRoles.includes(user?.role)) { + onGenerateTokenError(); + return; + } + try { const { data: d, errors } = await grantToken(); const tokens = d?.grantToken?.tokens; From 1f34b0d92cca3f7a523a0fd91607a6887079220b Mon Sep 17 00:00:00 2001 From: Alec M Date: Tue, 31 Oct 2023 10:13:07 -0400 Subject: [PATCH 52/88] CRDCDH-493 Implement "Other X" study tooltip --- src/content/organizations/ListView.tsx | 75 ++++++++++++++++---------- 1 file changed, 47 insertions(+), 28 deletions(-) diff --git a/src/content/organizations/ListView.tsx b/src/content/organizations/ListView.tsx index 942019f9..c9078570 100644 --- a/src/content/organizations/ListView.tsx +++ b/src/content/organizations/ListView.tsx @@ -161,6 +161,12 @@ const StyledTablePagination = styled(TablePagination)<{ component: React.Element background: "#F5F7F8", }); +const StyledStudyCount = styled(Typography)<{ component: ElementType }>(({ theme }) => ({ + textDecoration: "underline", + cursor: "pointer", + color: theme.palette.primary.main, +})); + const columns: Column[] = [ { label: "Name", @@ -174,35 +180,34 @@ const columns: Column[] = [ }, { label: "Studies", - value: ({ _id, studies }) => ( - - - {studies?.map(({ studyName, studyAbbreviation }) => ( - - {studyName} - {" ("} - {studyAbbreviation} - {") "} -
-
- ))} -
+ value: ({ _id, studies }) => { + if (!studies || studies?.length < 1) { + return ""; + } + + return ( + <> + {studies[0].studyAbbreviation} + {studies.length > 1 && " and "} + {studies.length > 1 && ( + } + placement="top" + open={undefined} + onBlur={undefined} + disableHoverListener={false} + arrow + > + + other + {" "} + {studies.length - 1} + + )} - placement="top" - open={undefined} - onBlur={undefined} - disableHoverListener={false} - arrow - > - - {studies?.slice(0, 2)?.map((s) => s.studyAbbreviation).join(", ")} - {studies?.length > 2 && ", ..."} - - - - ), + + ); + }, }, { label: "Status", @@ -221,6 +226,20 @@ const columns: Column[] = [ }, ]; +const StudyContent: FC<{ _id: Organization["_id"], studies: Organization["studies"] }> = ({ _id, studies }) => ( + + {studies?.map(({ studyName, studyAbbreviation }) => ( + + {studyName} + {" ("} + {studyAbbreviation} + {") "} +
+
+ ))} +
+); + /** * View for List of Organizations * From 365aa35c8e4a04ff7f03ebec8b20b8ad248b2506 Mon Sep 17 00:00:00 2001 From: Alejandro-Vega Date: Tue, 31 Oct 2023 10:21:18 -0400 Subject: [PATCH 53/88] Fixed header extra padding on button --- src/components/Header/components/NavbarDesktop.tsx | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/components/Header/components/NavbarDesktop.tsx b/src/components/Header/components/NavbarDesktop.tsx index 7cb5212e..c7ef298e 100644 --- a/src/components/Header/components/NavbarDesktop.tsx +++ b/src/components/Header/components/NavbarDesktop.tsx @@ -297,6 +297,13 @@ const NameDropdownContainer = styled.div` .dropdownItem:hover { text-decoration: underline; } + .dropdownItemButton { + padding-bottom: 0; + text-transform: none; + } + .dropdownItemButton:hover { + background: transparent; + } #navbar-dropdown-item-name-logout { max-width: 200px; } @@ -543,7 +550,7 @@ const NavBar = () => { )} {(authData?.user?.role === "Submitter" || authData?.user?.role === "Organization Owner") && ( - From f0421dd2130908698e39b31ec3ba5101f6a980a1 Mon Sep 17 00:00:00 2001 From: Alejandro-Vega Date: Tue, 31 Oct 2023 10:21:45 -0400 Subject: [PATCH 54/88] Minor styling changes to dialog --- src/content/users/APITokenDialog.tsx | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/content/users/APITokenDialog.tsx b/src/content/users/APITokenDialog.tsx index ba23bef9..a85fe2b3 100644 --- a/src/content/users/APITokenDialog.tsx +++ b/src/content/users/APITokenDialog.tsx @@ -12,7 +12,10 @@ const StyledDialog = styled(Dialog)({ maxWidth: "none", borderRadius: "8px", width: "755px !important", - padding: "47px 59px 71px 54px" + padding: "47px 59px 71px 54px", + border: "2px solid #0B7F99", + background: "linear-gradient(0deg, #F2F6FA 0%, #F2F6FA 100%), #2E4D7B", + boxShadow: "0px 4px 45px 0px rgba(0, 0, 0, 0.40)", }, }); @@ -130,7 +133,11 @@ const StyledCloseButton = styled(Button)({ letterSpacing: "0.32px", textTransform: "none", alignSelf: "center", - marginTop: "45px" + marginTop: "45px", + "&:hover": { + background: "transparent", + border: "1px solid #000", + } }); const canGenerateTokenRoles: User["role"][] = ["Submitter", "Organization Owner"]; From 0147b29ca58031454313b04733d763d1d9bef774 Mon Sep 17 00:00:00 2001 From: Alejandro-Vega Date: Tue, 31 Oct 2023 16:49:14 -0400 Subject: [PATCH 55/88] Added resume action, when submission is Rejected and an upload occurs --- .../dataSubmissions/DataSubmission.tsx | 46 +++++++-- .../dataSubmissions/DataSubmissionActions.tsx | 95 +++++++------------ src/types/Submissions.d.ts | 1 + 3 files changed, 72 insertions(+), 70 deletions(-) diff --git a/src/content/dataSubmissions/DataSubmission.tsx b/src/content/dataSubmissions/DataSubmission.tsx index 74711670..2304ae54 100644 --- a/src/content/dataSubmissions/DataSubmission.tsx +++ b/src/content/dataSubmissions/DataSubmission.tsx @@ -1,6 +1,6 @@ import { useEffect, useRef, useState } from "react"; import { useParams } from "react-router-dom"; -import { useLazyQuery } from "@apollo/client"; +import { useLazyQuery, useMutation } from "@apollo/client"; import { Alert, AlertColor, @@ -20,8 +20,10 @@ import DataSubmissionUpload from "../../components/DataSubmissions/DataSubmissio import { GET_SUBMISSION, LIST_BATCHES, + SUBMISSION_ACTION, GetSubmissionResp, - ListBatchesResp + ListBatchesResp, + SubmissionActionResp, } from "../../graphql"; import DataSubmissionSummary from "../../components/DataSubmissions/DataSubmissionSummary"; import GenericAlert, { AlertState } from "../../components/GenericAlert"; @@ -235,6 +237,11 @@ const DataSubmission = () => { fetchPolicy: 'no-cache' }); + const [submissionAction] = useMutation(SUBMISSION_ACTION, { + context: { clientName: 'backend' }, + fetchPolicy: 'no-cache' + }); + const handleFetchBatchFiles = async (fetchListing: FetchListing, force: boolean) => { const { first, offset, sortDirection, orderBy } = fetchListing || {}; if (!submissionId) { @@ -273,6 +280,28 @@ const DataSubmission = () => { } }; + const updateSubmissionAction = async (action: SubmissionAction) => { + if (!submissionId) { + return; + } + + try { + const { data: d, errors } = await submissionAction({ + variables: { + submissionID: submissionId, + action + } + }); + if (errors || !d?.submissionAction?._id) { + throw new Error(`Error occurred while performing '${action}' submission action.`); + return; + } + setDataSubmission((prevSubmission) => ({ ...prevSubmission, ...d.submissionAction })); + } catch (err) { + setError(err?.toString()); + } + }; + useEffect(() => { if (!submissionId) { setError("Invalid submission ID provided."); @@ -294,14 +323,15 @@ const DataSubmission = () => { tableRef.current?.refresh(); }; - const handleOnDataSubmissionChange = (dataSubmission: Submission) => { - setDataSubmission(dataSubmission); - }; - const handleOnUpload = (message: string, severity: AlertColor) => { refreshBatchTable(); setChangesAlert({ message, severity }); setTimeout(() => setChangesAlert(null), 10000); + + const preInProgressStatuses = ["Rejected"]; + if (preInProgressStatuses.includes(dataSubmission?.status)) { + updateSubmissionAction("Resume"); + } }; return ( @@ -318,6 +348,7 @@ const DataSubmission = () => { {error && ( Oops! An error occurred. + {" "} {error} )} @@ -457,8 +488,7 @@ const DataSubmission = () => { diff --git a/src/content/dataSubmissions/DataSubmissionActions.tsx b/src/content/dataSubmissions/DataSubmissionActions.tsx index 68dcff2a..6bbdd8b7 100644 --- a/src/content/dataSubmissions/DataSubmissionActions.tsx +++ b/src/content/dataSubmissions/DataSubmissionActions.tsx @@ -1,12 +1,10 @@ import { useState } from "react"; -import { useMutation } from "@apollo/client"; import { useNavigate } from "react-router-dom"; import { LoadingButton } from "@mui/lab"; import { Button, Stack, Typography, styled } from "@mui/material"; import ArrowBackIcon from '@mui/icons-material/ArrowBack'; import { useAuthContext } from "../../components/Contexts/AuthContext"; import CustomDialog from "../../components/Shared/Dialog"; -import { SUBMISSION_ACTION, SubmissionActionResp } from "../../graphql"; const StyledActionWrapper = styled(Stack)(() => ({ justifyContent: "center", @@ -162,52 +160,25 @@ const actionConfig: Record = { type Props = { submission: Submission; - onSubmissionChange: (submission: Submission) => void; - onError?: (error: string) => void; + onAction: (action: SubmissionAction) => Promise; }; -const DataSubmissionActions = ({ submission, onSubmissionChange, onError }: Props) => { +const DataSubmissionActions = ({ submission, onAction }: Props) => { const { user } = useAuthContext(); const navigate = useNavigate(); const [currentDialog, setCurrentDialog] = useState(null); const [action, setAction] = useState(null); - const [submissionAction] = useMutation(SUBMISSION_ACTION, { - context: { clientName: 'backend' }, - fetchPolicy: 'no-cache' - }); - - const updateSubmissionAction = async (action: SubmissionAction) => { - if (!submission?._id) { - return; - } - - try { - const { data: d, errors } = await submissionAction({ - variables: { - submissionID: submission._id, - action - } - }); - if (errors || !d?.submissionAction?._id) { - onError(`Error occurred while performing '${action}' submission action.`); - return; - } - onSubmissionChange(d.submissionAction); - } catch (err) { - onError(`Error occurred while performing '${action}' submission action.`); - } finally { - setAction(null); - } - }; - - const handleOnAction = (action: SubmissionAction) => { + const handleOnAction = async (action: SubmissionAction) => { if (currentDialog) { setCurrentDialog(null); } setAction(action); - updateSubmissionAction(action); + if (typeof onAction === "function") { + await onAction(action); + } + setAction(null); }; const onOpenDialog = (dialog: ActiveDialog) => { @@ -269,32 +240,6 @@ const DataSubmissionActions = ({ submission, onSubmissionChange, onError }: Prop Release ) : null} - {canShowAction("Withdraw") ? ( - onOpenDialog("Withdraw")} - loading={action === "Withdraw"} - disabled={action && action !== "Withdraw"} - disableElevation - disableRipple - disableTouchRipple - > - Withdraw - - ) : null} - {canShowAction("SubmittedReject") || canShowAction("ReleasedReject") ? ( - onOpenDialog("Reject")} - loading={action === "Reject"} - disabled={action && action !== "Reject"} - disableElevation - disableRipple - disableTouchRipple - > - Reject - - ) : null} {canShowAction("Complete") ? ( ) : null} + {canShowAction("Withdraw") ? ( + onOpenDialog("Withdraw")} + loading={action === "Withdraw"} + disabled={action && action !== "Withdraw"} + disableElevation + disableRipple + disableTouchRipple + > + Withdraw + + ) : null} + {canShowAction("SubmittedReject") || canShowAction("ReleasedReject") ? ( + onOpenDialog("Reject")} + loading={action === "Reject"} + disabled={action && action !== "Reject"} + disableElevation + disableRipple + disableTouchRipple + > + Reject + + ) : null} {canShowAction("Cancel") ? ( In Progress | "Complete" | "Cancel" | "Archive"; From 64f36f46a45910cf97715e2b3f7103cd5aeca258 Mon Sep 17 00:00:00 2001 From: Alejandro-Vega Date: Tue, 31 Oct 2023 17:42:59 -0400 Subject: [PATCH 56/88] Fixed error handling when upload fails --- .../DataSubmissions/DataSubmissionUpload.tsx | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/components/DataSubmissions/DataSubmissionUpload.tsx b/src/components/DataSubmissions/DataSubmissionUpload.tsx index a4ea919a..8b79dea7 100644 --- a/src/components/DataSubmissions/DataSubmissionUpload.tsx +++ b/src/components/DataSubmissions/DataSubmissionUpload.tsx @@ -193,7 +193,8 @@ const DataSubmissionUpload = ({ submitterID, readOnly, onUpload }: Props) => { return batch?.createBatch; } catch (err) { - onUploadFail(); + // Unable to initiate upload process so all failed + onUploadFail(selectedFiles?.length); return null; } }; @@ -226,7 +227,6 @@ const DataSubmissionUpload = ({ submitterID, readOnly, onUpload }: Props) => { } uploadResult.push({ fileName: file.fileName, succeeded: true, errors: null }); } catch (err) { - onUploadFail(); uploadResult.push({ fileName: file.fileName, succeeded: false, errors: err?.toString() }); } }); @@ -237,6 +237,13 @@ const DataSubmissionUpload = ({ submitterID, readOnly, onUpload }: Props) => { }; const onBucketUpload = async (batchID: string, files: UploadResult[]) => { + let failedFilesCount = 0; + files?.forEach((file) => { + if (!file.succeeded) { + failedFilesCount++; + } + }); + try { const { errors } = await updateBatch({ variables: { @@ -248,17 +255,22 @@ const DataSubmissionUpload = ({ submitterID, readOnly, onUpload }: Props) => { if (errors) { throw new Error("Unexpected network error"); } + if (failedFilesCount > 0) { + onUploadFail(failedFilesCount); + return; + } // Batch upload completed successfully onUpload(`${selectedFiles.length} ${selectedFiles.length > 1 ? "Files" : "File"} successfully uploaded`, "success"); setIsUploading(false); setSelectedFiles(null); } catch (err) { - onUploadFail(); + // Unable to let BE know of upload result so all fail + onUploadFail(selectedFiles?.length); } }; - const onUploadFail = () => { - onUpload(`${selectedFiles.length} ${selectedFiles.length > 1 ? "Files" : "File"} failed to upload`, "error"); + const onUploadFail = (fileCount = 0) => { + onUpload(`${fileCount} ${fileCount > 1 ? "Files" : "File"} failed to upload`, "error"); setSelectedFiles(null); setIsUploading(false); }; From 16fb7183ef47586d4b3b5533bcabd1a82c7b9891 Mon Sep 17 00:00:00 2001 From: Alec M Date: Wed, 1 Nov 2023 10:42:37 -0400 Subject: [PATCH 57/88] Rename directory --- src/content/{templates => modelNavigator}/Controller.tsx | 0 src/content/{templates => modelNavigator}/NavigatorView.tsx | 0 src/content/{templates => modelNavigator}/utils/ReduxStore.ts | 0 .../{templates => modelNavigator}/utils/usePopulateModelData.ts | 0 src/router.tsx | 2 +- 5 files changed, 1 insertion(+), 1 deletion(-) rename src/content/{templates => modelNavigator}/Controller.tsx (100%) rename src/content/{templates => modelNavigator}/NavigatorView.tsx (100%) rename src/content/{templates => modelNavigator}/utils/ReduxStore.ts (100%) rename src/content/{templates => modelNavigator}/utils/usePopulateModelData.ts (100%) diff --git a/src/content/templates/Controller.tsx b/src/content/modelNavigator/Controller.tsx similarity index 100% rename from src/content/templates/Controller.tsx rename to src/content/modelNavigator/Controller.tsx diff --git a/src/content/templates/NavigatorView.tsx b/src/content/modelNavigator/NavigatorView.tsx similarity index 100% rename from src/content/templates/NavigatorView.tsx rename to src/content/modelNavigator/NavigatorView.tsx diff --git a/src/content/templates/utils/ReduxStore.ts b/src/content/modelNavigator/utils/ReduxStore.ts similarity index 100% rename from src/content/templates/utils/ReduxStore.ts rename to src/content/modelNavigator/utils/ReduxStore.ts diff --git a/src/content/templates/utils/usePopulateModelData.ts b/src/content/modelNavigator/utils/usePopulateModelData.ts similarity index 100% rename from src/content/templates/utils/usePopulateModelData.ts rename to src/content/modelNavigator/utils/usePopulateModelData.ts diff --git a/src/router.tsx b/src/router.tsx index 23942c5e..269ec20d 100644 --- a/src/router.tsx +++ b/src/router.tsx @@ -36,7 +36,7 @@ const Login = Loader(lazy(() => import('./content/login/Controller'))); const Questionnaire = Loader(lazy(() => import('./content/questionnaire/Controller'))); const DataSubmissions = Loader(lazy(() => import('./content/dataSubmissions/Controller'))); const Users = Loader(lazy(() => import('./content/users/Controller'))); -const DMN = Loader(lazy(() => import('./content/templates/Controller'))); +const DMN = Loader(lazy(() => import('./content/modelNavigator/Controller'))); const Organizations = Loader(lazy(() => import('./content/organizations/Controller'))); // Status Pages From 0a0c4b2689545e01adc33df4ec06992ff733a8d2 Mon Sep 17 00:00:00 2001 From: Alec M Date: Wed, 1 Nov 2023 11:21:05 -0400 Subject: [PATCH 58/88] Refactor DataCommon type Convert Data Submission List hardcoded list to reference config --- .../Header/components/NavbarDesktop.tsx | 6 +- src/config/Datacommons.ts | 8 +- src/config/globalHeaderData.tsx | 2 +- .../DataSubmissionsListView.tsx | 3 +- src/types/DataCommon.d.ts | 77 +++++++++++++------ 5 files changed, 64 insertions(+), 32 deletions(-) diff --git a/src/components/Header/components/NavbarDesktop.tsx b/src/components/Header/components/NavbarDesktop.tsx index c7ef298e..1be65887 100644 --- a/src/components/Header/components/NavbarDesktop.tsx +++ b/src/components/Header/components/NavbarDesktop.tsx @@ -505,10 +505,10 @@ const NavBar = () => { )} - +
{ - (clickedTitle !== "" && !authData.isLoggedIn && clickedTitle !== displayName) + (clickedTitle !== "" && clickedTitle !== displayName) ? navbarSublists[clickedTitle]?.map((dropItem, idx) => { const dropkey = `drop_${idx}`; return ( @@ -524,7 +524,7 @@ const NavBar = () => { : null }
-
+
diff --git a/src/config/Datacommons.ts b/src/config/Datacommons.ts index f0b71f32..c5f63b11 100644 --- a/src/config/Datacommons.ts +++ b/src/config/Datacommons.ts @@ -4,12 +4,12 @@ export const DataCommons: DataCommon[] = [ { name: "CDS", - relative_assets: null, - source_assets: null + route: "icdc", + config: null, }, { name: "CCDI", - relative_assets: null, - source_assets: null + route: "icdc", + config: null, }, ]; diff --git a/src/config/globalHeaderData.tsx b/src/config/globalHeaderData.tsx index d4cad73b..2bd2e945 100644 --- a/src/config/globalHeaderData.tsx +++ b/src/config/globalHeaderData.tsx @@ -53,7 +53,7 @@ export const navbarSublists = { // ], "Model Navigator": DataCommons.map((dc) => ({ name: `${dc.name} Model`, - link: `/model-navigator/${dc.name.toLowerCase()}`, + link: `/model-navigator/${dc.route}`, text: '', className: 'navMobileSubTitle', })), diff --git a/src/content/dataSubmissions/DataSubmissionsListView.tsx b/src/content/dataSubmissions/DataSubmissionsListView.tsx index eb2af7a0..39f18302 100644 --- a/src/content/dataSubmissions/DataSubmissionsListView.tsx +++ b/src/content/dataSubmissions/DataSubmissionsListView.tsx @@ -21,6 +21,7 @@ import { mutation as CREATE_SUBMISSION, Response as CreateSubmissionResp } from import SelectInput from "../../components/Questionnaire/SelectInput"; import TextInput from "../../components/Questionnaire/TextInput"; import GenericAlert from '../../components/GenericAlert'; +import { DataCommons } from '../../config/DataCommons'; type T = Submission; @@ -561,7 +562,7 @@ const ListingView: FC = () => { ({ label: dc.name, value: dc.name }))} label="Data Commons" required value={dataCommons} diff --git a/src/types/DataCommon.d.ts b/src/types/DataCommon.d.ts index 88682a30..ad7f4c05 100644 --- a/src/types/DataCommon.d.ts +++ b/src/types/DataCommon.d.ts @@ -1,48 +1,79 @@ type DataCommon = { /** * The user-friendly name of the Data Common. + * This is also used to retrieve asset URLs from DataCommonAssets. * * @example "CDS" */ name: string; /** - * The relative-URLs of the Data Common's asset locations - * stored in the production `/build` folder. + * The route of the Data Model Navigator. * - * Examples of relative-URLs: "/models/cds/1.0.0/model.yaml" + * No leading or trailing slashes. + * + * @example "cds-model" */ - relative_assets: DataCommonAssets; + route: string; /** - * The public URLs of the Data Common's asset locations - * stored in their respective GitHub repositories. - * - * These are fetched and stored during the production build process. - * - * Examples of public-URLs: "https://raw.githubusercontent.com/..." + * The Data Model Navigator configuration for the Data Common. */ - source_assets: DataCommonAssets; + config: DataCommonConfig; }; +/** + * The strictly-typed configuration for the Data Model Navigator. + * + * @TODO The exact requirements of this type are not yet known. + */ +type DataCommonConfig = null; + +/** + * The Data Commons assets file. + * This is a JSON file that contains asset details for data models. + * It is maintained in a CRDC Hub repository. + * + * @see TODO + */ type DataCommonAssets = { + [key in DataCommon["name"]]: DataCommonAsset; +}; + +/** + * The type definition for the Data Commons assets file. + * + * Imported dynamically from a CRDC Hub maintained repository. + */ +type DataCommonAsset = { + /** + * The file name of the Data Model file. + * + * @example "cds-model.yaml" + */ + "model-file": string; + /** + * The file name of the Data Model properties file. + * + * @example "cds-model-props.yaml" + */ + "prop-file": string; /** - * The URL of the Data Common's model. + * The file name of the Data Model README file. * - * @example "/models/cds/1.0.0/model.yaml" - * @example "https://raw.githubusercontent.com/.../model.yaml" + * @example "cds-model-readme.md" + * @example "README.md" */ - model: string; + "readme-file": string; /** - * The URL of the Data Common's model props. + * The most-recent version of the Data Model to import * - * @example "/models/cds/1.0.0/model-props.yaml" - * @example "https://raw.githubusercontent.com/.../model-props.yaml" + * @example "1.0" */ - props: string; + "current-version": string | number; /** - * The URL of the Data Common's model readme. + * The full list of Data Model versions. + * Includes the most-recent version as well. * - * @example "/models/cds/1.0.0/README.md" - * @example "https://raw.githubusercontent.com/.../README.md" + * @example ["1.0", "1.1", "1.3"] */ - readme: string; + "versions": string[] | number[]; }; From 70a8a7fcdbb3abbbf659e2719ace8bd283d287e5 Mon Sep 17 00:00:00 2001 From: Alec M Date: Wed, 1 Nov 2023 11:34:25 -0400 Subject: [PATCH 59/88] Force file rename --- src/config/{Datacommons.ts => DataCommons.ts} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/config/{Datacommons.ts => DataCommons.ts} (100%) diff --git a/src/config/Datacommons.ts b/src/config/DataCommons.ts similarity index 100% rename from src/config/Datacommons.ts rename to src/config/DataCommons.ts From eb53b9671277ebe8e8414784f478d3daf1029853 Mon Sep 17 00:00:00 2001 From: Michael Tang Date: Wed, 1 Nov 2023 12:16:19 -0400 Subject: [PATCH 60/88] submit -> create --- .../dataSubmissions/DataSubmissionsListView.tsx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/content/dataSubmissions/DataSubmissionsListView.tsx b/src/content/dataSubmissions/DataSubmissionsListView.tsx index eb2af7a0..ea050d6d 100644 --- a/src/content/dataSubmissions/DataSubmissionsListView.tsx +++ b/src/content/dataSubmissions/DataSubmissionsListView.tsx @@ -337,7 +337,7 @@ const ListingView: FC = () => { setSubmissionName(null); setDbgapid(null); }; - const onDialogSubmit = async () => { + const onDialogCreate = async () => { const valid = createSubmissionDialogFormRef.current.checkValidity(); if (valid) { createSubmission(); @@ -601,16 +601,16 @@ const ListingView: FC = () => {
{ if (e.key === "Enter") { - onDialogSubmit(); + onDialogCreate(); } }} - onClick={() => onDialogSubmit()} + onClick={() => onDialogCreate()} > - Submit + Create
Unable to create this data submission. If the problem persists please contact From 9151c59e4623de831de8aee6a2df90ff328cd397 Mon Sep 17 00:00:00 2001 From: Alejandro-Vega Date: Wed, 1 Nov 2023 13:19:27 -0400 Subject: [PATCH 61/88] Added listLogs query and types --- src/graphql/index.ts | 3 +++ src/graphql/listLogs.ts | 18 ++++++++++++++++++ src/types/Submissions.d.ts | 11 +++++++++++ 3 files changed, 32 insertions(+) create mode 100644 src/graphql/listLogs.ts diff --git a/src/graphql/index.ts b/src/graphql/index.ts index d3a0ad96..615be55e 100644 --- a/src/graphql/index.ts +++ b/src/graphql/index.ts @@ -42,6 +42,9 @@ export type { Response as UpdateBatchResp } from './updateBatch'; export { query as LIST_BATCHES } from "./listBatches"; export type { Response as ListBatchesResp } from "./listBatches"; +export { query as LIST_LOGS } from "./listLogs"; +export type { Response as ListLogsResp } from "./listLogs"; + // User Profile export { query as GET_USER } from "./getUser"; export type { Response as GetUserResp } from "./getUser"; diff --git a/src/graphql/listLogs.ts b/src/graphql/listLogs.ts new file mode 100644 index 00000000..4e84d1d4 --- /dev/null +++ b/src/graphql/listLogs.ts @@ -0,0 +1,18 @@ +import gql from "graphql-tag"; + +export const query = gql` + query listLogs($submissionID: ID!) { + listLogs(submissionID: $submissionID) { + logFiles { + fileName + uploadType + downloadUrl + fileSize + } + } + } +`; + +export type Response = { + listLogs: ListLogFiles; +}; diff --git a/src/types/Submissions.d.ts b/src/types/Submissions.d.ts index 8a33b109..a54183c3 100644 --- a/src/types/Submissions.d.ts +++ b/src/types/Submissions.d.ts @@ -118,3 +118,14 @@ type TempCredentials = { }; type SubmissionHistoryEvent = HistoryBase; + +type ListLogFiles = { + logFiles: LogFile[] +}; + +type LogFile = { + fileName: string; + uploadType: string; // [metadata, file] + downloadUrl: string; // s3 presigned download url of the file + fileSize: number // size in byte +}; From 6483970be21d2168781eda4b2913b9b3d716f56c Mon Sep 17 00:00:00 2001 From: Alejandro-Vega Date: Wed, 1 Nov 2023 13:20:24 -0400 Subject: [PATCH 62/88] Created QualityControl component to retrieve and display validation downloads --- .../dataSubmissions/QualityControl.tsx | 144 ++++++++++++++++++ 1 file changed, 144 insertions(+) create mode 100644 src/content/dataSubmissions/QualityControl.tsx diff --git a/src/content/dataSubmissions/QualityControl.tsx b/src/content/dataSubmissions/QualityControl.tsx new file mode 100644 index 00000000..abd2084f --- /dev/null +++ b/src/content/dataSubmissions/QualityControl.tsx @@ -0,0 +1,144 @@ +import { useLazyQuery } from "@apollo/client"; +import { useParams } from "react-router-dom"; +import { Button, Stack, Typography, styled } from "@mui/material"; +import { useEffect, useState } from "react"; +import { LIST_LOGS, ListLogsResp } from "../../graphql"; + +const StyledDownloadButton = styled(Button)({ + display: "flex", + height: "44px", + padding: "10px 25px", + justifyContent: "center", + alignItems: "center", + gap: "10px", + borderRadius: "8px", + border: "1.5px solid #FFF", + background: "#005EA2", + color: "#FFF", + textAlign: "center", + fontFamily: "'Nunito', 'Rubik', sans-serif", + fontSize: "16px", + fontStyle: "normal", + fontWeight: 700, + lineHeight: "16px", + letterSpacing: "0.32px", + textTransform: "none", + "&:hover": { + background: "#005EA2", + color: "#FFF", + }, + "&.Mui-disabled": { + border: "1.5px solid #FFF", + background: "#BBB", + color: "#FFF", + }, +}); + +const StyledDownloadLabel = styled(Typography)({ + fontFamily: "'Nunito', 'Rubik', sans-serif", + color: "#083A50", + textAlign: "right", + fontSize: "16px", + fontStyle: "normal", + fontWeight: 700, + lineHeight: "19.6px", + textTransform: "capitalize", +}); + +const StyledValidationMessage = styled(Typography)({ + fontFamily: "'Nunito', 'Rubik', sans-serif", + color: "#083A50", + textAlign: "center", + fontSize: "16px", + fontStyle: "normal", + fontWeight: "700", + lineHeight: "23px", +}); + +const QualityControl = () => { + const { submissionId } = useParams(); + + const [filesValidationUrl, setFilesValidationUrl] = useState(null); + const [metadataValidationUrl, setMetadataValidationUrl] = useState(null); + + const [listLogs] = useLazyQuery(LIST_LOGS, { + variables: { submissionID: submissionId }, + context: { clientName: "backend" }, + fetchPolicy: "no-cache", + }); + + useEffect(() => { + if (!submissionId) { + return; + } + (async () => { + const { data: d, error } = await listLogs(); + if (error || !d?.listLogs) { + return; + } + console.log(d.listLogs); + setMetadataValidationUrl(d.listLogs); + })(); + }, [submissionId]); + + return ( + + + + + Files Validation Results + + + Download + + + + + Metadata Validation Results + + + Download + + + + + {filesValidationUrl?.length || metadataValidationUrl?.length ? ( + "If your submission has failed validation, please fix all errors and resubmit" + ) : ( + <> + Validation results are not yet available. You will be notified via + email when +
+ your submission has been validated and results are ready or you to + download. + + )} +
+
+ ); +}; + +export default QualityControl; From 385f7cd5f4501a6b083d4a7220c4edb488470cae Mon Sep 17 00:00:00 2001 From: Alejandro-Vega Date: Wed, 1 Nov 2023 13:21:12 -0400 Subject: [PATCH 63/88] Added QualityControl to submission tab. Also hid the action buttons when in QC tab --- src/content/dataSubmissions/DataSubmission.tsx | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/content/dataSubmissions/DataSubmission.tsx b/src/content/dataSubmissions/DataSubmission.tsx index 2bc2625b..95b802c4 100644 --- a/src/content/dataSubmissions/DataSubmission.tsx +++ b/src/content/dataSubmissions/DataSubmission.tsx @@ -7,6 +7,7 @@ import { Box, Card, CardActions, + CardActionsProps, CardContent, Container, Stack, @@ -24,6 +25,7 @@ import PieChart from "../../components/DataSubmissions/PieChart"; import DataSubmissionBatchTable, { Column, FetchListing, TableMethods } from "../../components/DataSubmissions/DataSubmissionBatchTable"; import { FormatDate } from "../../utils"; import DataSubmissionActions from "./DataSubmissionActions"; +import QualityControl from "./QualityControl"; const dummyChartData = [ { label: 'Group A', value: 12, color: "#DFC798" }, @@ -113,6 +115,12 @@ const StyledMainContentArea = styled("div")(() => ({ padding: "21px 40px 0", })); +const StyledCardActions = styled(CardActions, { + shouldForwardProp: (prop) => prop !== "isVisible" +})(({ isVisible }) => ({ + visibility: isVisible ? "visible" : "hidden" +})); + const StyledTabs = styled(Tabs)(() => ({ position: 'relative', "& .MuiTabs-flexContainer": { @@ -445,15 +453,15 @@ const DataSubmission = () => { onFetchData={handleFetchBatchFiles} /> - ) : null} + ) : } - + - + From bc46c14ba7623d9301462afd8037f6a45c3c6ccd Mon Sep 17 00:00:00 2001 From: Alejandro-Vega Date: Wed, 1 Nov 2023 14:41:09 -0400 Subject: [PATCH 64/88] Removed old mock api query --- src/graphql/getDataSubmissionBatchFiles.ts | 38 ---------------------- src/graphql/index.ts | 3 -- 2 files changed, 41 deletions(-) delete mode 100644 src/graphql/getDataSubmissionBatchFiles.ts diff --git a/src/graphql/getDataSubmissionBatchFiles.ts b/src/graphql/getDataSubmissionBatchFiles.ts deleted file mode 100644 index f64dab22..00000000 --- a/src/graphql/getDataSubmissionBatchFiles.ts +++ /dev/null @@ -1,38 +0,0 @@ -import gql from "graphql-tag"; - -export const query = gql` - query getDataSubmissionBatchFiles( - $id: ID! - $first: Int - $offset: Int - $orderBy: String - $sortDirection: String - ) { - getDataSubmissionBatchFiles( - _id: $id - first: $first - offset: $offset - orderBy: $orderBy - sortDirection: $sortDirection - ) { - total - batchFiles { - _id - uploadType - fileCount - status - submittedDate - errorCount - __typename - } - __typename - } - } -`; - -export type Response = { - getDataSubmissionBatchFiles: { - total: number; - batchFiles: BatchFile[]; - }; -}; diff --git a/src/graphql/index.ts b/src/graphql/index.ts index 615be55e..8622f32b 100644 --- a/src/graphql/index.ts +++ b/src/graphql/index.ts @@ -30,9 +30,6 @@ export type { Response as UpdateMyUserResp } from "./updateMyUser"; export { query as GET_SUBMISSION } from "./getSubmission"; export type { Response as GetSubmissionResp } from "./getSubmission"; -export { query as GET_DATA_SUBMISSION_BATCH_FILES } from "./getDataSubmissionBatchFiles"; -export type { Response as GetDataSubmissionBatchFilesResp } from "./getDataSubmissionBatchFiles"; - export { mutation as CREATE_BATCH } from './createBatch'; export type { Response as CreateBatchResp } from './createBatch'; From 77ef05045448cc49dece3b23b03a8be2bbcb551e Mon Sep 17 00:00:00 2001 From: Alejandro-Vega Date: Wed, 1 Nov 2023 15:29:24 -0400 Subject: [PATCH 65/88] Added jszip and file-saver dependencies --- package-lock.json | 8 ++++++-- package.json | 2 ++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9930779f..41c505c1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,7 +27,9 @@ "@types/react-dom": "^18.2.4", "data-model-navigator": "1.1.10", "dayjs": "^1.11.8", + "file-saver": "^2.0.5", "graphql": "^16.7.1", + "jszip": "^3.10.1", "lodash": "^4.17.21", "nprogress": "^0.2.0", "react": "^18.2.0", @@ -31191,7 +31193,8 @@ }, "node_modules/file-saver": { "version": "2.0.5", - "license": "MIT" + "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz", + "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==" }, "node_modules/file-system-cache": { "version": "1.1.0", @@ -36237,7 +36240,8 @@ }, "node_modules/jszip": { "version": "3.10.1", - "license": "(MIT OR GPL-3.0-or-later)", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", "dependencies": { "lie": "~3.3.0", "pako": "~1.0.2", diff --git a/package.json b/package.json index 43de571d..94a51166 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,9 @@ "@types/react-dom": "^18.2.4", "data-model-navigator": "1.1.10", "dayjs": "^1.11.8", + "file-saver": "^2.0.5", "graphql": "^16.7.1", + "jszip": "^3.10.1", "lodash": "^4.17.21", "nprogress": "^0.2.0", "react": "^18.2.0", From 0662cf142cf46a0148480b733b8b4258798e7d02 Mon Sep 17 00:00:00 2001 From: Alejandro-Vega Date: Wed, 1 Nov 2023 15:42:28 -0400 Subject: [PATCH 66/88] Created UploadType type --- src/types/Submissions.d.ts | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/src/types/Submissions.d.ts b/src/types/Submissions.d.ts index a54183c3..18c98ed3 100644 --- a/src/types/Submissions.d.ts +++ b/src/types/Submissions.d.ts @@ -69,10 +69,12 @@ type BatchStatus = "New" | "Uploaded" | "Upload Failed" | "Loaded" | "Rejected"; type MetadataIntention = "New" | "Update" | "Delete"; +type UploadType = "metadata" | "file"; + type Batch = { _id: string; submissionID: string; // parent - type: string; // [metadata, file] + type: UploadType; // [metadata, file] metadataIntention: MetadataIntention; // [New, Update, Delete], Update is meant for "Update or insert", metadata only! file batches are always treated as Update fileCount: number; // calculated by BE files: BatchFileInfo[]; @@ -97,15 +99,6 @@ type NewBatch = { updatedAt: string; // ISO 8601 date time format with UTC or offset e.g., 2023-05-01T09:23:30Z }; -type BatchFile = { - _id: string; - uploadType: string; - fileCount: number; - status: string; - submittedDate: string; - errorCount: number; -}; - type ListBatches = { total: number; batches: Batch[]; @@ -125,7 +118,7 @@ type ListLogFiles = { type LogFile = { fileName: string; - uploadType: string; // [metadata, file] + uploadType: UploadType; // [metadata, file] downloadUrl: string; // s3 presigned download url of the file fileSize: number // size in byte }; From d8b7a9c945afd986478412a16bdedaa37ef43252 Mon Sep 17 00:00:00 2001 From: Alejandro-Vega Date: Wed, 1 Nov 2023 16:02:32 -0400 Subject: [PATCH 67/88] Added when download is clicked, will retrieve logs, zip them, then download for user. Only submission owner can download --- .../dataSubmissions/DataSubmission.tsx | 2 +- .../dataSubmissions/QualityControl.tsx | 198 ++++++++++++------ 2 files changed, 134 insertions(+), 66 deletions(-) diff --git a/src/content/dataSubmissions/DataSubmission.tsx b/src/content/dataSubmissions/DataSubmission.tsx index 95b802c4..6e0546c2 100644 --- a/src/content/dataSubmissions/DataSubmission.tsx +++ b/src/content/dataSubmissions/DataSubmission.tsx @@ -453,7 +453,7 @@ const DataSubmission = () => { onFetchData={handleFetchBatchFiles} /> - ) : } + ) : } diff --git a/src/content/dataSubmissions/QualityControl.tsx b/src/content/dataSubmissions/QualityControl.tsx index abd2084f..f6cf2ba7 100644 --- a/src/content/dataSubmissions/QualityControl.tsx +++ b/src/content/dataSubmissions/QualityControl.tsx @@ -1,10 +1,15 @@ +import { useEffect, useRef, useState } from "react"; import { useLazyQuery } from "@apollo/client"; +import JSZip from "jszip"; +import { saveAs } from "file-saver"; import { useParams } from "react-router-dom"; -import { Button, Stack, Typography, styled } from "@mui/material"; -import { useEffect, useState } from "react"; +import { Stack, Typography, styled } from "@mui/material"; +import { LoadingButton } from "@mui/lab"; import { LIST_LOGS, ListLogsResp } from "../../graphql"; +import GenericAlert, { AlertState } from "../../components/GenericAlert"; +import { useAuthContext } from "../../components/Contexts/AuthContext"; -const StyledDownloadButton = styled(Button)({ +const StyledDownloadButton = styled(LoadingButton)({ display: "flex", height: "44px", padding: "10px 25px", @@ -55,11 +60,21 @@ const StyledValidationMessage = styled(Typography)({ lineHeight: "23px", }); -const QualityControl = () => { +type Props = { + submitterID: string; +}; + +const QualityControl = ({ submitterID }: Props) => { const { submissionId } = useParams(); + const { user } = useAuthContext(); - const [filesValidationUrl, setFilesValidationUrl] = useState(null); - const [metadataValidationUrl, setMetadataValidationUrl] = useState(null); + const [files, setFiles] = useState([]); + const [loading, setLoading] = useState(false); + const [changesAlert, setChangesAlert] = useState(null); + const metadataLogs = files.filter((file) => file.uploadType === "metadata"); + const fileLogs = files.filter((file) => file.uploadType === "file"); + const alertTimeoutRef = useRef(null); + const isSubmissionOwner = submitterID === user?._id; const [listLogs] = useLazyQuery(LIST_LOGS, { variables: { submissionID: submissionId }, @@ -68,76 +83,129 @@ const QualityControl = () => { }); useEffect(() => { - if (!submissionId) { + if (!submissionId || !isSubmissionOwner) { return; } (async () => { - const { data: d, error } = await listLogs(); - if (error || !d?.listLogs) { - return; + try { + setLoading(true); + const { data: d, error } = await listLogs(); + if (error || !d?.listLogs) { + throw new Error("Unexpected network error"); + } + + setFiles(d.listLogs.logFiles); + } catch (err) { + setChangesAlert({ + message: "Unable to retrieve logs", + severity: "error", + }); + if (alertTimeoutRef.current) { + clearTimeout(alertTimeoutRef.current); + } + alertTimeoutRef.current = setTimeout( + () => setChangesAlert(null), + 10000 + ); + } finally { + setLoading(false); } - console.log(d.listLogs); - setMetadataValidationUrl(d.listLogs); })(); - }, [submissionId]); + }, [submissionId, submitterID, user]); + + const downloadFiles = async (uploadType: UploadType) => { + const zip = new JSZip(); + const filesToDownload = files.filter( + (file) => file.uploadType === uploadType + ); + + await Promise.all( + filesToDownload.map(async (file) => { + const response = await fetch(file.downloadUrl); + const blob = await response.blob(); + zip.file(file.fileName, blob); + }) + ); + + zip.generateAsync({ type: "blob" }).then((blob) => { + saveAs(blob, `${uploadType}_logs.zip`); + }); + }; return ( - - - - + + {changesAlert?.message} + + + + - Files Validation Results - - - Download - - - - + Files Validation Results + + downloadFiles("file")} + loading={loading} + disabled={!fileLogs?.length} + > + Download + + + - Metadata Validation Results - - - Download - + + Metadata Validation Results + + downloadFiles("metadata")} + loading={loading} + disabled={!metadataLogs?.length} + > + Download + + + + {files?.length > 0 ? ( + "If your submission has failed validation, please fix all errors and resubmit" + ) : ( + <> + Validation results are not yet available. You will be notified via + email when +
+ your submission has been validated and results are ready or you to + download. + + )} +
- - {filesValidationUrl?.length || metadataValidationUrl?.length ? ( - "If your submission has failed validation, please fix all errors and resubmit" - ) : ( - <> - Validation results are not yet available. You will be notified via - email when -
- your submission has been validated and results are ready or you to - download. - - )} -
- + ); }; From 359b70791bec7b3ed5f2a3bb4db570aaf823f66b Mon Sep 17 00:00:00 2001 From: Alejandro-Vega Date: Thu, 2 Nov 2023 10:23:09 -0400 Subject: [PATCH 68/88] Added isDownloading, and added missing try/catch --- .../dataSubmissions/QualityControl.tsx | 70 ++++++++++++------- 1 file changed, 46 insertions(+), 24 deletions(-) diff --git a/src/content/dataSubmissions/QualityControl.tsx b/src/content/dataSubmissions/QualityControl.tsx index f6cf2ba7..d2601c66 100644 --- a/src/content/dataSubmissions/QualityControl.tsx +++ b/src/content/dataSubmissions/QualityControl.tsx @@ -70,6 +70,7 @@ const QualityControl = ({ submitterID }: Props) => { const [files, setFiles] = useState([]); const [loading, setLoading] = useState(false); + const [isDownloading, setIsDownloading] = useState(false); const [changesAlert, setChangesAlert] = useState(null); const metadataLogs = files.filter((file) => file.uploadType === "metadata"); const fileLogs = files.filter((file) => file.uploadType === "file"); @@ -96,40 +97,61 @@ const QualityControl = ({ submitterID }: Props) => { setFiles(d.listLogs.logFiles); } catch (err) { - setChangesAlert({ + updateAlert({ message: "Unable to retrieve logs", severity: "error", }); - if (alertTimeoutRef.current) { - clearTimeout(alertTimeoutRef.current); - } - alertTimeoutRef.current = setTimeout( - () => setChangesAlert(null), - 10000 - ); } finally { setLoading(false); } })(); }, [submissionId, submitterID, user]); - const downloadFiles = async (uploadType: UploadType) => { - const zip = new JSZip(); - const filesToDownload = files.filter( - (file) => file.uploadType === uploadType - ); + const updateAlert = (alert: AlertState) => { + if (!alert?.message || !alert?.severity) { + return; + } - await Promise.all( - filesToDownload.map(async (file) => { - const response = await fetch(file.downloadUrl); - const blob = await response.blob(); - zip.file(file.fileName, blob); - }) + setChangesAlert({ + message: alert.message, + severity: alert.severity, + }); + if (alertTimeoutRef.current) { + clearTimeout(alertTimeoutRef.current); + } + alertTimeoutRef.current = setTimeout( + () => setChangesAlert(null), + 10000 ); + }; - zip.generateAsync({ type: "blob" }).then((blob) => { - saveAs(blob, `${uploadType}_logs.zip`); - }); + const downloadFiles = async (uploadType: UploadType) => { + try { + setIsDownloading(true); + const zip = new JSZip(); + const filesToDownload = files.filter( + (file) => file.uploadType === uploadType + ); + + await Promise.all( + filesToDownload.map(async (file) => { + const response = await fetch(file.downloadUrl); + const blob = await response.blob(); + zip.file(file.fileName, blob); + }) + ); + + zip.generateAsync({ type: "blob" }).then((blob) => { + saveAs(blob, `${uploadType}_logs.zip`); + }); + } catch (err) { + updateAlert({ + message: "Unable to download logs", + severity: "error", + }); + } finally { + setIsDownloading(false); + } }; return ( @@ -163,7 +185,7 @@ const QualityControl = ({ submitterID }: Props) => { downloadFiles("file")} - loading={loading} + loading={loading || isDownloading} disabled={!fileLogs?.length} > Download @@ -184,7 +206,7 @@ const QualityControl = ({ submitterID }: Props) => { downloadFiles("metadata")} - loading={loading} + loading={loading || isDownloading} disabled={!metadataLogs?.length} > Download From 4ecdb300b5c4498a6170d806e4fb49ebfc80ba1a Mon Sep 17 00:00:00 2001 From: Michael Tang Date: Thu, 2 Nov 2023 10:49:22 -0400 Subject: [PATCH 69/88] addressing comments, updating tests, removing todo --- src/content/questionnaire/FormView.tsx | 1 - src/utils/formModeUtils.test.ts | 57 +++++++++++++++++++------- 2 files changed, 42 insertions(+), 16 deletions(-) diff --git a/src/content/questionnaire/FormView.tsx b/src/content/questionnaire/FormView.tsx index cac5c66c..f7612a36 100644 --- a/src/content/questionnaire/FormView.tsx +++ b/src/content/questionnaire/FormView.tsx @@ -84,7 +84,6 @@ type AlertState = { */ const FormView: FC = ({ section, classes } : Props) => { const navigate = useNavigate(); - // TODO: use rejectForm const { status, data, setData, submitData, approveForm, inquireForm, rejectForm, reopenForm, reviewForm, error } = useFormContext(); const { user, status: authStatus } = useAuthContext(); const [activeSection, setActiveSection] = useState(validateSection(section) ? section : "A"); diff --git a/src/utils/formModeUtils.test.ts b/src/utils/formModeUtils.test.ts index 39fa5b94..33f3593e 100644 --- a/src/utils/formModeUtils.test.ts +++ b/src/utils/formModeUtils.test.ts @@ -47,16 +47,16 @@ describe('getFormMode tests based on provided requirements', () => { expect(utils.getFormMode(user, baseSubmission)).toBe(utils.FormModes.EDIT); }); - it('should set View Only for User when form is Submitted, In Review, or Approved', () => { - const statuses: ApplicationStatus[] = ['Submitted', 'In Review', 'Approved']; + it('should set View Only for User when form is Submitted, In Review, Approved, or Rejected', () => { + const statuses: ApplicationStatus[] = ['Submitted', 'In Review', 'Approved', 'Rejected']; statuses.forEach((status) => { expect(utils.getFormMode(user, { ...baseSubmission, status })).toBe(utils.FormModes.VIEW_ONLY); }); }); - it('should allow User to edit when form status is New or In Progress', () => { - const statuses: ApplicationStatus[] = ['New', 'In Progress']; + it('should allow User to edit when form status is New, In Progress or Inquired', () => { + const statuses: ApplicationStatus[] = ['New', 'In Progress', 'Inquired']; statuses.forEach((status) => { expect(utils.getFormMode(user, { ...baseSubmission, status })).toBe(utils.FormModes.EDIT); @@ -78,16 +78,16 @@ describe('getFormMode tests based on provided requirements', () => { expect(utils.getFormMode(user, baseSubmission)).toBe(utils.FormModes.EDIT); }); - it('should set View Only for Submitter when form is Submitted, In Review, or Approved', () => { - const statuses: ApplicationStatus[] = ['Submitted', 'In Review', 'Approved']; + it('should set View Only for Submitter when form is Submitted, In Review, Approved, or Rejected', () => { + const statuses: ApplicationStatus[] = ['Submitted', 'In Review', 'Approved', 'Rejected']; statuses.forEach((status) => { expect(utils.getFormMode(user, { ...baseSubmission, status })).toBe(utils.FormModes.VIEW_ONLY); }); }); - it('should allow Submitter to edit when form status is New or In Progress', () => { - const statuses: ApplicationStatus[] = ['New', 'In Progress']; + it('should allow Submitter to edit when form status is New, In Progress, or Inquired', () => { + const statuses: ApplicationStatus[] = ['New', 'In Progress', 'Inquired']; statuses.forEach((status) => { expect(utils.getFormMode(user, { ...baseSubmission, status })).toBe(utils.FormModes.EDIT); @@ -108,7 +108,7 @@ describe('getFormMode tests based on provided requirements', () => { }); it('should set View Only mode for Fed Lead for all other statuses', () => { - const statuses: ApplicationStatus[] = ['New', 'Approved', 'In Progress', 'Rejected']; + const statuses: ApplicationStatus[] = ['New', 'Approved', 'In Progress', 'Rejected', 'Inquired']; statuses.forEach((status) => { expect(utils.getFormMode(user, { ...baseSubmission, status })).toBe(utils.FormModes.VIEW_ONLY); @@ -126,16 +126,16 @@ describe('getFormMode tests based on provided requirements', () => { describe('getFormMode > Org Owner tests', () => { const user: User = { ...baseUser, role: "Organization Owner" }; - it('should allow Org Owner to edit their own unsubmitted or rejected forms', () => { - const statuses: ApplicationStatus[] = ['New', 'In Progress', 'Rejected']; + it('should allow Org Owner to edit their own unsubmitted or inquired forms', () => { + const statuses: ApplicationStatus[] = ['New', 'In Progress', 'Inquired']; statuses.forEach((status) => { expect(utils.getFormMode(user, { ...baseSubmission, status })).toBe(utils.FormModes.EDIT); }); }); - it('should set View Only for Org Owner when form is Submitted, In Review, or Approved', () => { - const statuses: ApplicationStatus[] = ['Submitted', 'In Review', 'Approved']; + it('should set View Only for Org Owner when form is Submitted, In Review, Approved, or Rejected', () => { + const statuses: ApplicationStatus[] = ['Submitted', 'In Review', 'Approved', 'Rejected']; statuses.forEach((status) => { expect(utils.getFormMode(user, { ...baseSubmission, status })).toBe(utils.FormModes.VIEW_ONLY); @@ -154,7 +154,7 @@ describe('getFormMode tests based on provided requirements', () => { const user: User = { ...baseUser, role: 'Admin' }; it('should always set View Only for Admin', () => { - const statuses: ApplicationStatus[] = ['New', 'Submitted', 'In Review', 'Approved', 'In Progress', 'Rejected']; + const statuses: ApplicationStatus[] = ['New', 'Submitted', 'In Review', 'Approved', 'In Progress', 'Rejected', 'Inquired']; statuses.forEach((status) => { expect(utils.getFormMode(user, { ...baseSubmission, status })).toBe(utils.FormModes.VIEW_ONLY); @@ -172,7 +172,7 @@ describe('getFormMode tests based on provided requirements', () => { describe('getFormMode > Other roles tests', () => { it('should always set View Only for all other roles', () => { const roles: User["role"][] = ['Data Commons POC', "Some other role", "This role doesn't exist"] as unknown as User["role"][]; - const statuses: ApplicationStatus[] = ['New', 'In Progress', 'Submitted', 'In Review', 'Approved', 'Rejected']; + const statuses: ApplicationStatus[] = ['New', 'In Progress', 'Submitted', 'In Review', 'Approved', 'Rejected', 'Inquired']; roles.forEach((role) => { const user: User = { ...baseUser, role }; @@ -183,6 +183,33 @@ describe('getFormMode tests based on provided requirements', () => { }); }); + // New Rejected status tests + describe('getFormMode > New Rejected status test', () => { + it('rejected is a final state, no role should be able to do anything past rejected', () => { + const roles: User["role"][] = ['Data Commons POC', "Some other role", "This role doesn't exist"] as unknown as User["role"][]; + const status: ApplicationStatus = 'Rejected'; + + roles.forEach((role) => { + const user: User = { ...baseUser, role }; + expect(utils.getFormMode(user, { ...baseSubmission, status })).toBe(utils.FormModes.VIEW_ONLY); + }); + }); + }); + + // New Inquired status tests + describe('getFormMode > New Inquired status test', () => { + it('inquired should be read only for Fed Lead but not for the submission request owner', () => { + const submission: Application = { ...baseSubmission, status: "Inquired", applicant: { ...baseSubmission.applicant, applicantID: "user-456-another-user" } }; + const fedLead: User = { ...baseUser, role: "Organization Owner" }; + const submitterOwner: User = { ...baseUser, role: "Submitter", _id: "user-456-another-user" }; + const orgOwnerSubmissionOwner: User = { ...baseUser, role: "Organization Owner", _id: "user-456-another-user" }; + + expect(utils.getFormMode(fedLead, submission)).toBe(utils.FormModes.VIEW_ONLY); + expect(utils.getFormMode(submitterOwner, submission)).toBe(utils.FormModes.EDIT); + expect(utils.getFormMode(orgOwnerSubmissionOwner, submission)).toBe(utils.FormModes.EDIT); + }); + }); + // Edge case Tests describe('getFormMode > Edge Case Tests', () => { describe('getFormMode > Edge Case Tests > Invalid data tests', () => { From b5da1bbc521b6cdb2620845a60b76282e7570634 Mon Sep 17 00:00:00 2001 From: Michael Tang Date: Thu, 2 Nov 2023 12:14:04 -0400 Subject: [PATCH 70/88] inquire -> request on button and dialog --- src/components/Questionnaire/InquireFormDialog.tsx | 2 +- src/content/questionnaire/FormView.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/Questionnaire/InquireFormDialog.tsx b/src/components/Questionnaire/InquireFormDialog.tsx index 44621829..0bcaf767 100644 --- a/src/components/Questionnaire/InquireFormDialog.tsx +++ b/src/components/Questionnaire/InquireFormDialog.tsx @@ -50,7 +50,7 @@ const InquireFormDialog: FC = ({ + handleOnAction("Submit")} + loading={!!action} + color="error" + autoFocus + > + Yes + + + )} + > + + This action will lock your submission and it will no longer accept updates + to the data. Are you sure you want to proceed? + + + + {/* Release Dialog */} + + + handleOnAction("Release")} + loading={!!action} + color="error" + autoFocus + > + Yes + + + )} + > + + This action will release this submission to data commons and it can no + longer accept changes to the data. Are you sure you want to proceed? + + + {/* Cancel Dialog */} { handleOnAction("Withdraw")} + disabled={!reviewComment?.length} loading={!!action} color="error" autoFocus @@ -354,6 +417,18 @@ const DataSubmissionActions = ({ submission, onAction }: Props) => { This action will stop the submission process and revert control of the submission to you. Are you sure you want to proceed? + {/* Reject Dialog */} @@ -376,7 +451,8 @@ const DataSubmissionActions = ({ submission, onAction }: Props) => { )} > - This action will reject the submission and return control to the submitter. Are you sure you want to proceed? + This action will reject the submission and return control to the submitter. + Are you sure you want to proceed? @@ -400,7 +476,8 @@ const DataSubmissionActions = ({ submission, onAction }: Props) => { )} > - This action will close out the submission and start close out activities. Are you sure you want to proceed? + This action will close out the submission and start close out activities. + Are you sure you want to proceed? From 839230e26fe1f88cdaf8cc6a966f28ac639873bd Mon Sep 17 00:00:00 2001 From: Alejandro-Vega Date: Mon, 6 Nov 2023 18:04:57 -0500 Subject: [PATCH 77/88] Prevent upload if submission locked --- src/components/DataSubmissions/DataSubmissionUpload.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/DataSubmissions/DataSubmissionUpload.tsx b/src/components/DataSubmissions/DataSubmissionUpload.tsx index 8b79dea7..76435c61 100644 --- a/src/components/DataSubmissions/DataSubmissionUpload.tsx +++ b/src/components/DataSubmissions/DataSubmissionUpload.tsx @@ -155,7 +155,7 @@ const DataSubmissionUpload = ({ submitterID, readOnly, onUpload }: Props) => { }); const handleChooseFilesClick = () => { - if (!canUpload) { + if (!canUpload || readOnly) { return; } uploadMetatadataInputRef?.current?.click(); @@ -200,7 +200,7 @@ const DataSubmissionUpload = ({ submitterID, readOnly, onUpload }: Props) => { }; const handleUploadFiles = async () => { - if (!selectedFiles?.length || !canUpload) { + if (!selectedFiles?.length || !canUpload || readOnly) { return; } From b8b11329c14f40d08100ae9c22738c8c10f70d1c Mon Sep 17 00:00:00 2001 From: Alejandro-Vega Date: Tue, 7 Nov 2023 09:34:46 -0500 Subject: [PATCH 78/88] Removed review comment in withdraw dialog. Also, wording changes --- .../dataSubmissions/DataSubmissionActions.tsx | 69 ++++++------------- 1 file changed, 22 insertions(+), 47 deletions(-) diff --git a/src/content/dataSubmissions/DataSubmissionActions.tsx b/src/content/dataSubmissions/DataSubmissionActions.tsx index 96e01976..5ca6e438 100644 --- a/src/content/dataSubmissions/DataSubmissionActions.tsx +++ b/src/content/dataSubmissions/DataSubmissionActions.tsx @@ -1,7 +1,7 @@ import { useState } from "react"; import { useNavigate } from "react-router-dom"; import { LoadingButton } from "@mui/lab"; -import { Button, Stack, TextField, Typography, styled } from "@mui/material"; +import { Button, Stack, Typography, styled } from "@mui/material"; import ArrowBackIcon from '@mui/icons-material/ArrowBack'; import { useAuthContext } from "../../components/Contexts/AuthContext"; import CustomDialog from "../../components/Shared/Dialog"; @@ -106,18 +106,13 @@ const StyledDialog = styled(CustomDialog)({ }, }); -const StyledCancelText = styled(Typography)({ +const StyledDialogText = styled(Typography)({ fontWeight: 400, fontSize: "16px", fontFamily: "'Nunito', 'Rubik', sans-serif", lineHeight: "19.6px", }); -const StyledReviewCommentInput = styled(TextField)({ - width: "100%", - marginTop: "16px" -}); - export type ActiveDialog = "Submit" | "Release" | "Withdraw" | "Reject" | "Complete" | "Cancel"; type UserRole = User["role"]; @@ -174,12 +169,6 @@ const DataSubmissionActions = ({ submission, onAction }: Props) => { const [currentDialog, setCurrentDialog] = useState(null); const [action, setAction] = useState(null); - const [reviewComment, setReviewComment] = useState(""); - - const handleCommentChange = (event: React.ChangeEvent) => { - const val = event?.target?.value || ""; - setReviewComment(val); - }; const handleOnAction = async (action: SubmissionAction) => { if (currentDialog) { @@ -197,7 +186,6 @@ const DataSubmissionActions = ({ submission, onAction }: Props) => { }; const onCloseDialog = () => { - setReviewComment(""); setCurrentDialog(null); }; @@ -337,10 +325,10 @@ const DataSubmissionActions = ({ submission, onAction }: Props) => { )} > - + This action will lock your submission and it will no longer accept updates to the data. Are you sure you want to proceed? - + {/* Release Dialog */} @@ -362,10 +350,10 @@ const DataSubmissionActions = ({ submission, onAction }: Props) => { )} > - + This action will release this submission to data commons and it can no longer accept changes to the data. Are you sure you want to proceed? - + {/* Cancel Dialog */} @@ -387,10 +375,10 @@ const DataSubmissionActions = ({ submission, onAction }: Props) => { )} > - + This action will remove this submission and it will no longer be accessible. Are you sure you want to proceed? - + {/* Withdraw Dialog */} @@ -400,35 +388,22 @@ const DataSubmissionActions = ({ submission, onAction }: Props) => { title="Withdraw Data Submission" actions={( <> - + handleOnAction("Withdraw")} - disabled={!reviewComment?.length} loading={!!action} color="error" autoFocus > - Withdraw + Yes )} > - - This action will stop the submission process and revert control of the - submission to you. Are you sure you want to proceed? - - + + This action will halt the data curation process and give control back to you + if you wish to update the data within the submission. Are you certain you want to proceed? + {/* Reject Dialog */} @@ -438,22 +413,22 @@ const DataSubmissionActions = ({ submission, onAction }: Props) => { title="Reject Data Submission" actions={( <> - + handleOnAction("Reject")} loading={!!action} color="error" autoFocus > - Reject + Yes )} > - + This action will reject the submission and return control to the submitter. Are you sure you want to proceed? - + {/* Complete Dialog */} @@ -463,22 +438,22 @@ const DataSubmissionActions = ({ submission, onAction }: Props) => { title="Complete Data Submission" actions={( <> - + handleOnAction("Complete")} loading={!!action} color="error" autoFocus > - Complete + Yes )} > - + This action will close out the submission and start close out activities. Are you sure you want to proceed? - + ); From afe3c93e94217d57285c0dcb84e33dd6c7141b6f Mon Sep 17 00:00:00 2001 From: Michael Tang Date: Tue, 7 Nov 2023 10:29:57 -0500 Subject: [PATCH 79/88] ccdi -> icdc --- src/config/DataCommons.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/DataCommons.ts b/src/config/DataCommons.ts index c5f63b11..be99b665 100644 --- a/src/config/DataCommons.ts +++ b/src/config/DataCommons.ts @@ -8,7 +8,7 @@ export const DataCommons: DataCommon[] = [ config: null, }, { - name: "CCDI", + name: "ICDC", route: "icdc", config: null, }, From 2fdef278bde629d3fbb5a19e1e3b8372b238204d Mon Sep 17 00:00:00 2001 From: Alec M Date: Tue, 7 Nov 2023 12:35:21 -0500 Subject: [PATCH 80/88] Documentation & DX QoL Updates (#177) * Add Nginx configuration docs * Add PR actions pipeline and PR template * fix: Unused variables --- .github/PULL_REQUEST_TEMPLATE.md | 11 ++ .github/workflows/code-certify.yml | 36 +++++ README.md | 4 +- nginx/README.md | 134 ++++++++++++++++++ nginx/nginx.conf | 46 ++++++ package.json | 4 +- .../DataSubmissions/PaginationActions.tsx | 2 +- .../Header/components/NavbarDesktop.tsx | 94 ++++++------ 8 files changed, 280 insertions(+), 51 deletions(-) create mode 100644 .github/PULL_REQUEST_TEMPLATE.md create mode 100644 .github/workflows/code-certify.yml create mode 100644 nginx/README.md create mode 100644 nginx/nginx.conf diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 00000000..8b4ddb1f --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,11 @@ +### Overview + +N/A + +### Change Details (Specifics) + +N/A + +### Related Ticket(s) + +N/A diff --git a/.github/workflows/code-certify.yml b/.github/workflows/code-certify.yml new file mode 100644 index 00000000..ae279ccc --- /dev/null +++ b/.github/workflows/code-certify.yml @@ -0,0 +1,36 @@ +name: Certify Changes + +on: + pull_request: + branches: "*" + paths: + - "src/**" + - "public/**" + - "*.json" + - "*.js" + - "*.jsx" + - "*.ts" + - "*.tsx" + +permissions: + contents: read + +jobs: + certify: + name: Certify Build Changes + runs-on: ubuntu-latest + steps: + - name: Checkout Repository + uses: actions/checkout@v3 + + - name: Install Dependencies + run: npm ci --legacy-peer-deps + + - name: Run Typecheck + run: npm run check:ci + + - name: Run Jest + run: npm run test:ci + + - name: Run Linter + run: npm run lint:ci diff --git a/README.md b/README.md index 960422dd..94b17e3c 100644 --- a/README.md +++ b/README.md @@ -5,14 +5,14 @@ CRDC Data Hub is a React application designed to provide a user-friendly interface for accessing and managing data using various technologies and tools. This project utilizes TypeScript, React v18, Material-UI v5, ESLint, React Router DOM, GraphQL, and Apollo. - ## Installation To run the CRDC Data Hub project locally, follow these steps: 1. Clone the repository -2. Navigate to the project directory +2. Navigate to the project directory 3. Install the dependencies: `npm install --legacy-peer-deps` 4. Start the development server: `npm start` 5. Open your browser and visit `http://localhost:3000` to access the application. +Please see the instructions in [nginx/README.md](./nginx/README.md) for configuring Nginx. diff --git a/nginx/README.md b/nginx/README.md new file mode 100644 index 00000000..c29b563a --- /dev/null +++ b/nginx/README.md @@ -0,0 +1,134 @@ +# NGINX Installation For Mac + +Follow this guide to install and configure Nginx for usage with this project. For a understanding of the overall architecture, see the [Deployment Architecture](#deployment-architecture) section. + +Install NGINX: + +```bash +brew install nginx +``` + +Remove Default NGINX Configuration (Optional) + +```bash +rm /usr/local/etc/nginx/nginx.conf.default +rm /usr/local/etc/nginx/nginx.conf +``` + +Clone Provided Configuration + +```bash +cp ./nginx.conf /usr/local/etc/nginx/ +``` + +> **Warning**: Do not confuse the [nginx.conf](./nginx.conf) file in this directory with the one in [conf/nginx.conf](../conf/nginx.conf). The latter is used for +> production deployments. + +Start/Restart NGINX + +```bash +brew services restart nginx +``` + +# React App Configuration + +See the provided [.env](../.env.example) file for the required environment variables. At a minimum, include: + +```properties +# ... other variables + +REACT_APP_BACKEND_API="http://localhost:4010/api/graphql" + +PORT=3010 + +# ... other variables +``` + +> **Note**: After modifying the .env file, you must completely restart the React app for the changes to take effect. + +# Deployment Architecture + +## Semi-Hosted Deployment (Recommended) + +A deployment architecture diagram is shown below using the frontend deployed locally and the backend deployed on the hosted DEV/DEV2 tiers. This avoids the need to install and configure the entire backend tech stack. + +```mermaid +--- +title: Semi-Hosted Deployment Architecture +--- +flowchart TD + id0["Browser – You"] + id1["Nginx – port:4010"] + id2["FE – port:3010"] + id3["DEV Backend"] + id4["DEV AuthZ"] + id5["DEV AuthN"] + + id0 <--"https://localhost:4010"--> id1 + subgraph lh[" "] + subgraph nx["Nginx – Reverse Proxy"] + id1 + end + subgraph be["DEV/DEV2 Hosted Backend Services"] + id1 --"/api/graphql"---> id3 + id1 --"/api/authn/"---> id4 + id1 --"/api/authz/"---> id5 + end + subgraph fe["Frontend Services"] + id2 + end + id1 <--"*Catch All*"--> fe + end +``` + +## Local Deployment + +An overview of the local deployment architecture is shown below using the following locally hosted tech stack: + +- Frontend – +- Backend – +- AuthZ – +- AuthN – +- MongoDB + +Please see the individual repos for installation and configuration instructions. + +```mermaid +--- +title: Local Deployment Architecture +--- +flowchart TD + id0["Browser"] + id1["Nginx – port:4010"] + id2["FE – port:3010"] + id3["BE – port:4020"] + id4["AuthZ – port:4030"] + id5["AuthN – port:4040"] + id6["MongoDB"] + + id0 <--"https://localhost:4010"--> id1 + subgraph lh[" "] + subgraph nx[" "] + id1 + end + id1 --"/api/graphql"---> be + id1 --"/api/authn/graphql"---> be + id1 --"/api/authz/graphql"---> be + subgraph be["Backend Services"] + direction RL + id3 + id4 + id5 + subgraph misc["Misc. Dependencies"] + id6 + end + id3-->misc + id4-->misc + id5-->misc + end + subgraph fe["Frontend Services"] + id2 + end + id1 <--"*Catch All*"--> fe + end +``` diff --git a/nginx/nginx.conf b/nginx/nginx.conf new file mode 100644 index 00000000..dff8bea4 --- /dev/null +++ b/nginx/nginx.conf @@ -0,0 +1,46 @@ +# CRDC-DH NGINX Config +# +# Last Modified: October 23, 2023 +# https://github.com/CBIIT/crdc-datahub-ui + +# NOTES: +# - Nginx runs on port 4010 +# - The frontend runs on port 3010 +# - Modify the proxy_pass URL to point to the DEV or DEV2 tiers + +worker_processes 1; + +events { + worker_connections 1024; +} + +http { + server { + listen 0.0.0.0:4010; + server_name localhost; + + # Authn + location /api/authn/ { + # proxy_pass http://localhost:4030/api/authn/; + proxy_pass "https://hub-dev2.datacommons.cancer.gov/api/authn/"; + } + + # AuthZ + location /api/authz/ { + # proxy_pass http://localhost:4020/api/authz/; + proxy_pass "https://hub-dev2.datacommons.cancer.gov/api/authz/"; + } + + # Backend + location /api/graphql { + # proxy_pass http://localhost:4040/api/graphql; + proxy_pass "https://hub-dev2.datacommons.cancer.gov/api/graphql"; + } + + # Frontend + location / { + allow all; + proxy_pass http://localhost:3010/; + } + } +} diff --git a/package.json b/package.json index 94a51166..7856aade 100644 --- a/package.json +++ b/package.json @@ -47,10 +47,12 @@ "build": "react-scripts build", "postbuild": "rm ./build/models/.gitkeep", "test": "TZ=UTC react-scripts test", + "test:ci": "TZ=UTC CI=true react-scripts test --passWithNoTests", "eject": "react-scripts eject", "lint": "eslint . --ignore-path .gitignore", "lint:fix": "eslint --fix . --ignore-path .gitignore", - "check": "tsc --noEmit" + "lint:ci": "eslint . --ignore-path .gitignore --max-warnings 0", + "check:ci": "tsc --noEmit" }, "eslintConfig": { "extends": [ diff --git a/src/components/DataSubmissions/PaginationActions.tsx b/src/components/DataSubmissions/PaginationActions.tsx index c6527596..43110248 100644 --- a/src/components/DataSubmissions/PaginationActions.tsx +++ b/src/components/DataSubmissions/PaginationActions.tsx @@ -50,7 +50,7 @@ const StyledPaginationItem = styled(PaginationItem)(({ selected }) => ({ const PaginationActions = ({ count, page, - onChange, + // onChange, rowsPerPage, onPageChange, }: TablePaginationProps) => ( diff --git a/src/components/Header/components/NavbarDesktop.tsx b/src/components/Header/components/NavbarDesktop.tsx index 1be65887..20adb3e9 100644 --- a/src/components/Header/components/NavbarDesktop.tsx +++ b/src/components/Header/components/NavbarDesktop.tsx @@ -222,53 +222,53 @@ const Dropdown = styled.div` // opacity: 0; `; -const DropdownContainer = styled.div` - margin: 0 auto; - text-align: left; - position: relative; - max-width: 1400px; - - .dropdownList { - background: #1F4671; - display: grid; - grid-template-columns: repeat( auto-fit, minmax(250px, 1fr) ); - padding: 32px 32px 0 32px; - } - .dropdownNameList { - background: #1F4671; - display: flex; - flex-direction: column; - padding: 32px 32px 0 32px; - width: 400px; - height: 200px; - justify-content: end; - } - - .dropdownItem { - padding: 0 10px 52px 10px; - text-align: left; - font-family: 'Poppins'; - font-weight: 600; - font-style: normal; - font-size: 20px; - line-height: 110%; - color: #FFFFFF; - text-decoration: none; - } - - .dropdownItem:hover { - text-decoration: underline; - } - - .dropdownItemText { - margin-top: 5px; - font-family: 'Open Sans'; - font-style: normal; - font-weight: 400; - font-size: 16.16px; - line-height: 22px; - } -`; +// const DropdownContainer = styled.div` +// margin: 0 auto; +// text-align: left; +// position: relative; +// max-width: 1400px; + +// .dropdownList { +// background: #1F4671; +// display: grid; +// grid-template-columns: repeat( auto-fit, minmax(250px, 1fr) ); +// padding: 32px 32px 0 32px; +// } +// .dropdownNameList { +// background: #1F4671; +// display: flex; +// flex-direction: column; +// padding: 32px 32px 0 32px; +// width: 400px; +// height: 200px; +// justify-content: end; +// } + +// .dropdownItem { +// padding: 0 10px 52px 10px; +// text-align: left; +// font-family: 'Poppins'; +// font-weight: 600; +// font-style: normal; +// font-size: 20px; +// line-height: 110%; +// color: #FFFFFF; +// text-decoration: none; +// } + +// .dropdownItem:hover { +// text-decoration: underline; +// } + +// .dropdownItemText { +// margin-top: 5px; +// font-family: 'Open Sans'; +// font-style: normal; +// font-weight: 400; +// font-size: 16.16px; +// line-height: 22px; +// } +// `; const NameDropdownContainer = styled.div` margin: 0 auto; From 9abb751b9baab8932bfbc2117d5498c4be15bae7 Mon Sep 17 00:00:00 2001 From: Michael Tang Date: Tue, 7 Nov 2023 14:46:20 -0500 Subject: [PATCH 81/88] update submission req icons --- src/components/StatusBar/icons/InProgress.svg | 25 ++++++++++++++++ src/components/StatusBar/icons/New.svg | 29 ++++++++++++++----- src/components/StatusBar/icons/Submitted.svg | 23 ++++++++++++--- src/components/StatusBar/icons/index.tsx | 2 ++ 4 files changed, 67 insertions(+), 12 deletions(-) create mode 100644 src/components/StatusBar/icons/InProgress.svg diff --git a/src/components/StatusBar/icons/InProgress.svg b/src/components/StatusBar/icons/InProgress.svg new file mode 100644 index 00000000..8239e092 --- /dev/null +++ b/src/components/StatusBar/icons/InProgress.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/components/StatusBar/icons/New.svg b/src/components/StatusBar/icons/New.svg index 44eb441c..f2c10551 100644 --- a/src/components/StatusBar/icons/New.svg +++ b/src/components/StatusBar/icons/New.svg @@ -1,8 +1,21 @@ - - - - + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/components/StatusBar/icons/Submitted.svg b/src/components/StatusBar/icons/Submitted.svg index 7304a0a6..ebd28a4d 100644 --- a/src/components/StatusBar/icons/Submitted.svg +++ b/src/components/StatusBar/icons/Submitted.svg @@ -1,5 +1,20 @@ - - + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/components/StatusBar/icons/index.tsx b/src/components/StatusBar/icons/index.tsx index a38b0c7f..ac39c325 100644 --- a/src/components/StatusBar/icons/index.tsx +++ b/src/components/StatusBar/icons/index.tsx @@ -5,6 +5,7 @@ import Approved from "./Approved.svg"; import UnderReview from "./UnderReview.svg"; import StatusApproved from "./StatusApproved.svg"; import StatusRejected from "./StatusRejected.svg"; +import InProgress from "./InProgress.svg"; export type IconType = { [key: string]: string; @@ -21,6 +22,7 @@ export const HistoryIconMap : IconType = { Rejected, Approved, "In Review": UnderReview, + "In Progress": InProgress, }; /** From 56d8edf2e64cd2538fe7233b44effa310569f471 Mon Sep 17 00:00:00 2001 From: Michael Tang Date: Tue, 7 Nov 2023 15:24:44 -0500 Subject: [PATCH 82/88] update test cases --- src/components/StatusBar/StatusBar.test.tsx | 18 ++---------------- 1 file changed, 2 insertions(+), 16 deletions(-) diff --git a/src/components/StatusBar/StatusBar.test.tsx b/src/components/StatusBar/StatusBar.test.tsx index eb31fad0..6924f219 100644 --- a/src/components/StatusBar/StatusBar.test.tsx +++ b/src/components/StatusBar/StatusBar.test.tsx @@ -16,6 +16,7 @@ import Approved from './icons/Approved.svg'; import Rejected from './icons/Rejected.svg'; import Submitted from './icons/Submitted.svg'; import UnderReview from './icons/UnderReview.svg'; +import InProgress from './icons/InProgress.svg'; import { FormatDate } from "../../utils"; type Props = { @@ -328,22 +329,7 @@ describe("StatusBar > History Modal Tests", () => { expect(() => getByTestId("status-bar-history-item-1-icon")).toThrow(); }); - const noIconStatuses = ["In Progress"]; - it.each(noIconStatuses)("does not render an icon for status %s", (status) => { - const data = { - history: [{ dateTime: "2023-11-24T01:25:45Z", status }], - }; - - const { getByTestId, getByText } = render(); - - act(() => { - fireEvent.click(getByText("Full History")); - }); - - expect(() => getByTestId("status-bar-history-item-0-icon")).toThrow(); - }); - - const statusesWithIcons = [["New", New], ["Submitted", Submitted], ["Approved", Approved], ["Rejected", Rejected], ["In Review", UnderReview]]; + const statusesWithIcons = [["New", New], ["Submitted", Submitted], ["Approved", Approved], ["Rejected", Rejected], ["In Review", UnderReview], ["In Progress", InProgress]]; it.each(statusesWithIcons)("renders the correct icon for the status %s", (status, svg) => { const data = { history: [{ dateTime: "2023-11-24T01:25:45Z", status }], From 2e49b75831b2400aa2d3399f0f2911905d3a0fa8 Mon Sep 17 00:00:00 2001 From: Alejandro-Vega Date: Tue, 7 Nov 2023 16:27:19 -0500 Subject: [PATCH 83/88] Removed Pie chart widgets and Error Count from batch table in submissions dashboard. These will be re-added in the future --- .../dataSubmissions/DataSubmission.tsx | 115 +----------------- 1 file changed, 2 insertions(+), 113 deletions(-) diff --git a/src/content/dataSubmissions/DataSubmission.tsx b/src/content/dataSubmissions/DataSubmission.tsx index d87169e2..45491ac5 100644 --- a/src/content/dataSubmissions/DataSubmission.tsx +++ b/src/content/dataSubmissions/DataSubmission.tsx @@ -165,16 +165,6 @@ const StyledRejectedStatus = styled("div")(() => ({ fontWeight: 600 })); -const StyledErrorCount = styled("div")(() => ({ - color: "#0D78C5", - fontFamily: "Inter", - fontSize: "16px", - fontStyle: "normal", - fontWeight: 600, - lineHeight: "25px", - textDecorationLine: "underline", -})); - const columns: Column[] = [ { label: "Upload Type", @@ -203,15 +193,7 @@ const columns: Column[] = [ default: true, minWidth: "240px" }, - { - label: "Error Count", - value: (data) => ( - - {data.errors?.length > 0 ? `${data.errors.length} ${data.errors.length === 1 ? "Error" : "Errors"}` : ""} - - ), - field: "errors", - }, + /* TODO: Error Count removed for MVP2-M2. Will be re-added in the future */ ]; const URLTabs = { @@ -371,100 +353,7 @@ const DataSubmission = () => { )} - - - - - - + {/* TODO: Widgets removed for MVP2-M2. Will be re-added in the future */} From 72037e72ea4af711e2f4ee62ea1a488337508982 Mon Sep 17 00:00:00 2001 From: Alejandro-Vega Date: Tue, 7 Nov 2023 16:35:59 -0500 Subject: [PATCH 84/88] Removed additional items missed --- src/content/dataSubmissions/DataSubmission.tsx | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/content/dataSubmissions/DataSubmission.tsx b/src/content/dataSubmissions/DataSubmission.tsx index 45491ac5..9e2284d3 100644 --- a/src/content/dataSubmissions/DataSubmission.tsx +++ b/src/content/dataSubmissions/DataSubmission.tsx @@ -28,19 +28,11 @@ import { } from "../../graphql"; import DataSubmissionSummary from "../../components/DataSubmissions/DataSubmissionSummary"; import GenericAlert, { AlertState } from "../../components/GenericAlert"; -import PieChart from "../../components/DataSubmissions/PieChart"; import DataSubmissionBatchTable, { Column, FetchListing, TableMethods } from "../../components/DataSubmissions/DataSubmissionBatchTable"; import { FormatDate } from "../../utils"; import DataSubmissionActions from "./DataSubmissionActions"; import QualityControl from "./QualityControl"; -const dummyChartData = [ - { label: 'Group A', value: 12, color: "#DFC798" }, - { label: 'Group B', value: 28, color: "#137E87" }, - { label: 'Group C', value: 30, color: "#99A4E4" }, - { label: 'Group D', value: 30, color: "#CB2809" }, -]; - const StyledBanner = styled("div")(({ bannerSrc }: { bannerSrc: string }) => ({ background: `url(${bannerSrc})`, backgroundBlendMode: "luminosity, normal", From a0f9d260b152662c16260bfcce4b7331c1ff9fbc Mon Sep 17 00:00:00 2001 From: Alejandro-Vega Date: Wed, 8 Nov 2023 10:26:23 -0500 Subject: [PATCH 85/88] Fixed summary section being right above tabs. Changed banner to match new design --- src/assets/dataSubmissions/summary_banner.png | Bin 167911 -> 202952 bytes .../DataSubmissions/DataSubmissionSummary.tsx | 7 ---- .../dataSubmissions/DataSubmission.tsx | 31 +++++++----------- 3 files changed, 12 insertions(+), 26 deletions(-) diff --git a/src/assets/dataSubmissions/summary_banner.png b/src/assets/dataSubmissions/summary_banner.png index e032fbe32daa0cdeaa4cd06ac2dec4875a6e7711..36081e6e2ea5b6cd7dcdf779c83eaca6c11c57c2 100644 GIT binary patch literal 202952 zcmWh!Wmwct7p0^_KuThjE=lQFk#14x?(UXYIwS@DG%O(^(k;34f;5P*gh+$rk_#;R zdwoC5Gtb;_Gjs1f_sl($_(n&SjQA-r78Vwnx|-5kEUZUlSXkI{g!um~rHx8l|0W_Y zHDg~aEE4Mf4{WUbLi&G3Y~Q!4ud(W;m=69e@EjGi6|k@x(@4q75VRSh*bv+PrBS2Kw2 z|J+CXg|zlOF+5J58@!l=|LK6wuCQ@^m$X0uOA>bPp=5vn5s;Kk$Khq?BXk5$l_g2Y zK=whbCxj##Q2RQz2KTE0m%VJ`E-^yc4oPulTo}aIWgGg|^jkVEkk|yS1ihoJ&96K} zTcE%qCC9At++BsXJZPxxKmi${|4dy{+lKtfY`*1P@r`X7CKj;IX-lc!g2+G20$p{7 z-ZlkK4GqT`2f!0L*%N|@Zz;DOYmb~@yKNlpGc zx~C)Y*0t`6BvuH?)FRs!IC7~(a$02*(hvNs4Z0;HUD-S@OIbeuT8s9!xU^msL@VZo zgj!x*$X4DjiBH?fA2d>G)nuaTJBla;zbVG*ACc3cag*HX&;nPcz2aP5Ucdn>*VN0_HFa_FG z6x}{aTb#QRX^mG>pO(+nBs=!>DtP1%;Eeluq`aexHhz{LNV8BOO)!JKhJ~$n{I^p%tBFt zJ^A8WM}w9AKnid&C5B2)Y4rUy8QF_mXVO``yy@x{L>E|wtsKv-8HL}j29BSHt=+n< zx`F7plH`LJQ~6V$w!zN?*KnACr|$->=l>?X3fX{t7Y}B9sDwlnFhIO8G`Md)=tJxz8#C>p9ACMifbVV?ojXVf@m%{ ze~*}ldW3b?Ory-HepGLvXwDR>w>0|eUUA!gp(lFU)xX%L%A<7yEQW!ip@s}FR0?p3 z%n#R=exN{05afy95~RwF;AFqJ8vy7$lZSx|WWi$A${ESW^0uOkn*8=ZiTWa*&1-|? z{kK2{A3nep@;4~tD$p~Knak5TnF^4CinAE!qQ`*A->v-JJ=v9g=fDpJNsusRJ>Q>< zOfwV?%y!NM1Pz4`Twg%}^d8WUbI9^Cg}tyu^ES*>XY%vnXClw=O*#-YZlIXyaCnR3+>m__* z>Q-M;l1;$0PUPejqo{7`m`Vbd^`CVnTQ1??xlXI( zVT$OrCf_wLw60>$X{>Iggc~mDDMY^hLfs+A6BQKHG}CnugXY3;P|J@epy=syF9ug= zH=rn}Qa4c*LoV(&pH;R9W|Sqd;-)&YYgCKb6WkltW5r^&M#;M~^1@l1n<$zyZKX!F z0RKh5Df_KQ+`3=BTlCsda)J-pey{W`(P6B2eXL$-cnP6)FtF&UO0Wty>^h~*`ma1K zISAo_!}s>@*uqBiLY3j5<%681JQ8So_tTM7r!koHX{El?6YtYMOAlvUnDGlKjAN76 z=z#r=eV2->GAnbS3Re0d<8+yaU&Gp2uDW0`ppiex81UyeMYpA_!yjPuG!~fkN%&6p zD_*v!5ExFacc;Dqq1wYSP-Gef>{8&f+fKpt@3zQB!-g4U=$>fwe{G)K@C7EXef2|q zUmDp$?cK0r-?HF<)fEXHCYE4e=wI%E`k+?3oqj`417XYnA3gI{ClYc;CsZJlL{Gn0 zKV2v4Pv*n!<^G-t2%+j<(HZoP0Ict~S)sibo{2&nxqst?k8OQ3V}a5@t^BY*u$|J= z@}NIV=yy6OjY4CrnMa4d^%Us(nABP3ocJ(&1G9r+&0`?@5vT)Qe82P(4X>uhXbLoF zk1Yzk*9!J?tXK*Au`GeIKbYrzEIMYw#SC~d)k`KK^X2j?Oi!BV!Baqw ziYO__VBUBAi6ntR8K-m@IC6`mpt41-7zOGHg=_Y-n(=!aegAet#=~G4f?)k40RVY~ zrj5o|flI2$BT(qnW)&0zYs3#dYo*f_Rtp=(g9aS9!5+X+JEqAUYbf*{eGbrP#)=ze zZZE)ls)DwLaWqe+zdM~-%a4*iK>N?POC!%{S@e{&pvQMGK|-dGbh9i|qUQP~kITjz7ItAbw);Q*^A{5D$+>ejKX&S#8A6 zX{O^vM2c&<7iItl zr7@MKHG(`Y7YMvod$e()KJcp+ABY;NdqHi}(3|^b_LZb^SARkX3_>^i`lNzdi_bjO z*0sV7<)+Bsv0{AjO%*j*n!igv)1?rMMh=N=AH*F9^mN@D%aw0>OL8Vrel4&*@9io* zhq))1H`JG?H$^j?4NMQ;lj0Qbwsck*W@4p^BGbBlp32{!%L=|zph%|I$4#vv)n>X7 z>Nu9yMMv*hTF0c@-s=nvaqf=?gWDo?N=$x=EG>X)!e$|!Dc))U^wQ#I(0N*V3|Sxn zz}*zx_C|PYQS7WH?%R^LyII9#->%WGPl=XnZ>B}#)}^LZQZ8mUvL_ASR>NE2{EpZ= z*YSY^4IsinSkZ^pV{vp&ah4gU#hN&ycx5p|M?L~FW_lC76`0$LWS~^}Y63~KEC&q{ zV7&9lua6@<(e0#GM2df94D>tCbRnvF(C1l~81zfT8J#(w2Ss*4zK+-sCk&2|nb zq|+9i*tGI}<&>RZE%$@2ZIVZ^%sBFeYnIGI{H@-i1cM80F>Q4GzcaLDPV(E;Xp&xE-)T_^xw(itgio9p zuDA$Fho|dI`l_5?CNy8|zx9zC5uVEJwHXULK-D}M5D;DX~FwjO*VA2E`-@43t>kSEPfAwWqq3ZHj5pI7WK@}rl6to_e zT>-c3Ug!f$iBn&(-bgjp;n72hc&Qzy<-}EYg%Tl%W44tDUx_Qz?heLwRDxu}Sah$p zWYkg6<}mO=r8^7F=7HmhnO;?vaJhvHg2|xPeNvuV0097}&l&%)zo(0qA=r}t>b~Xq zr0R0JwAfx=ei_T`6=_Wf%xwC&ZwSJVfsxx>KqN7mEbeL2Iapfgcm$p_w$@bj{hRg3 zSjYu{Ktc|)SC%NqKcOapVL89^ZNLZ(Lj5a)l9pj8@B~y+C-SP(KnkUG>Gs9_>*poR z-M4Q_?D+3r^OlH_?+DG0^d);z?AyL+M_P!Vi3H9h=GofyKwiAu_(Xox;#&j}%gc(} z7bVc8QIqTA{b}kUj6YrYewve*gI0QfiUyfKvHX0Vo5j!XEbpj+`9>qf@Y_HJ8KSA> zReoycws
{QGfB`*8*7CFl;qv;H$=^NYxUtUM6lZg082gkj6wOB?ms=w}jDpX}S z>24%pO!uFt?Qdjr9^Rz47CJ#)_7fUGYW(jtj_#&JHEGNcuXw4$1}Mg=A}!&v#k zj?$$#6L?n0`)JAQ{m^VDIx8OUyW3og{4>AyJ3Q_lyOV0qU?l-$+jZT}Q!3{96h0Yb zSy2^3y8inW=hmgsh5OeT3MQ6U8-!5oKL1=vq2g9-weSxM_%r;%vq>*9s>rC=NzwE0 z_|1Fb-MsGm^o8t=OKe5)`M|Dv7Q;>Vv|>Cw670v14Pv{fDf3{+`Z#=9r*@^+FdW;$ zcvL-vg+HWhMk@8wtg{3SeJ#d@lR6ecPWu4k+9Pp9&tX8tYFWityuT1sBpTcAvD%~m z(=loQ8Lq67pVTDvgkqnKz_L6?70$Ja;m?S7TzLtjC3#6*_b$|5DxfMK@V^SqF<$^g z7-~n?+q*+m3F&l9lT5(xj=1-or+Hz$KTmH@V~0X%&hS1HzZrjPmN<6EiOG|c+?w8; z;yV+`TVR9pcmGY?mPop(Kt45vgVQPm^9IDVaPc;O71GP!jv@g#^n0jAI0-O+0_}Ui zOC1cqv@~ksSPgiJu|}m)pxf(Ju1OvL0c}Lk9q=H#0egUiNuV{CCby=vdATR^KEJ9W zcC6|C$lx4MejGodw{;&2=)H_gorl0+_J<(&-j=i+ou@1!`JP)0>ZqlL4lTG!P4xkgAf|MVV=t09kl=fw`%- zE8~WYA2S@#IzMX!HQAIUG=ogRj{|C^dTyC=eQV~ip~Dpy)0mlw`AvXt%&nVlZR#TU z@}bc6!*PLIJeO%G^ltjQT5J|KLrcwxn@5=hG&w2xB;;O0cO7*awN}03*0VP4oosfe zB=re4BrXCm!LWAi5_$HuXwB^%1JIx6D9$|?DVl14?k-8(U z$AEDIxbgdDFV}@n;OoD5gd0)M8h)t7%Pb-O(9nC`%zsK6Dj=&Hn%3YP-7rwSyjjL} z42o}_Hgs5W99{5!$MiHa@3We|SYXEXYa&4#dUeX7K@zR)8Wyp$ic4{;lcjpj3g^>) zKI4j#9eQ4#{W6enX}x@WqxXVL8hzha9^rgB5E& zea?yI_eA=RNSrWKE;)mvxtx#Wr|qLK+4gN8oRMxZQ-{YLIeI^v<3oQZ4#EDwnE&|r z-2^-janKXB zp%VGZ-AG)8i04!H-|0Rem}OMa56Gy+De~Z=eiV`6!7BP}ENlZN2l7vn?>mF2{k>wP zsKVMYp*hT6O!~f;4N5ZVk*}Dj=8(!g!^^co^?`*grX);tD32*@4EJDXg4o7hIG$Xx z!KaG{G<1-Ky;$HEgB+&}(lel_cM8rSL?xH>Dv**?5M8?z(}S==Id13_?kw^0 zh0hf)R_FfL@-z7`Vv;pz3-rnaheGaUAjRyq{dM3btbYEf6E46^em47efJPd_wL8)ndmaJO+N2}c>(ik!8^_}nVWlMW;DN`VS z4PtJO-}A?kkCqN?v?$7+?)HqYcf81gRDVWzqRSm+1z2p(g;!nK1f}*uj%er=szUkS zm&{1HC9(ff=Mu$2m#dRjPV-OXck{qLHlFVQd^Oo&pGmD^C82t%q$Y4}oeEbfqI_yM z!1B(nu=N3Uwq9>95x!??R(nX4Cj7H_7#SppV6&;*d6XpRf#7)z(6(P^dXESV>2bF! zVfr9RgrOJXTf9Em9Im(Jcs@D?vxnc=0=zJu!e7U13nhZ%iC1I;+L`08YTZe*r?cw_ zzd1e=ZGHfDf#^U%jG#b)JT(&86Zd0fcnK3S42ZK>_X;|i`JaIOTiV+uRk>{LAt{F~ zJ(c#-;1?oprmWU+c2zW7~CQ1kPP|02(U=|`N=0=>fRddI!Cx1U3YonHKm z1cnA+7k)cr(wH=XkIa($FQN{Bh1B=t-)`Qr5NIMdeQvLT+IAX9E?{UT7PLCAiUa_b zkY6v4`eh7w&NT9kWw!J?{DhJYi!ai3Z1g#za3*;myg^6o8~C{_%kyHw6|&Q&sf{NH z(ZkQLRD;@5LmZRc(iO_gXq1^FI*o>3rXS0FH7|~ z+OS&ak8R8}{7V0NxZ>pO#!fwH^M=FWvX$_^q&kw}1MB@+*;G4j|tP9ubrBxDbP; zIE(<9b#*M>H|N zItRW3=h7GV1Q?(#u@Vb99On!W#7}}MZ`Yy~XWPjN?4KjL^JBh{I`zg69~7?Nk!=?7 zhk7QCn9=pgpFxYz0lyXS@^lENDwSj+V^wZfy>k>h%s-^ZxI4g8~gfya>4#^T$l8?sn_|!+Lh*HH`G# zLqjvJAK&Wqan+lgpWCoH`t{nxv9!~>(qJk8%Yyn!a8~KCjVV25{rb@V6mtL5tes*I zvU2YUcv951wYyIo0OKAU;V6hvDf}efexJtki#Nua@Q`6(TxG$1z7s?OEZhVp-}meC>J&(0SQPm&mT--*i1b= z!g6Bb+=&)ia@x^V41#9kK*aK`T($y>c5B*pXZkrSs6`{L5+9Z;IGzwisOO73 z{HG>0^kYdru$>{^J5bR^?6$*^|Z5&EPB!RACd(_->Yb``WOC3`{QKiwfAzBnAaCdAw*VpCs4%S zwP@An_`EPY952>@i2P@=R`zaUTU^`OVq*f&XDwM^)oe%P~SZF@XY2f$No0K*?Bfc%1Oe z*lUFN$L|!E2Z4M$0l9DY{v4wYOp_6}4-7@zu2Cm6`_W?~Ep?^GbH! zIQQ%F$bC#8S-I{IN_XG$o8o)^l9=W<@Py~`Bk*-Xufb5}l@*78`@duFncJ#tJzk<9 zWNdH$UHw7VSWn=t@`vS0aB6Gejq5LAdp}=+td0i+Y`b@cO;_yx(^@T(nA15q#$>1S z=rS_;EUlPGKQ?P_tw0=7E-{lxSU(f)aodXt)2NSi9=v5UibShD#2%Ut%~)PnW476c z_tqRNWd22-27prl;(pO& zRk!#RnV)?y3)jhh>Qs;{is12uySR7y+O8w`q+d4yLLbl+u6#=ke4&UFwBg}`EwA&8 zj;G$szc7v#ES~dui7xOw6gMak3Zg#CfbS5E|JrGFKI{0r2t)$FN3hSq_u;qfPd0(b zu3(hw2(Ux{8F=(za;)vsiSEL52$Jl2;uz<)cpD3uY8yT6tAyo&*uCz^1d_Z4heOYa z1%!07lnvE`W2xBcBV9|K4Ow=mtX)=$LsOshM~qZAiWfl}7T2O)D>DpXQX`Jsj8MebH{~E3IkK z;wmz#UzK5EbQs?ehDe5K4;8BLV8p}ISRN}ATjuZ2TCZ(FG_HE}i z!{g>&|BzH_SQ7T67`dMG`Q4o6+ul>$9A-fbS8+unvN{E_;Nh+em<`7ILSxfc|3b$}iqA z)~TpzI?OuzvsTHj5fQi_AZUY#$!zmpf*Im;AVC?n8<5MCJ%yizD5aJj@{q6${L?Eg;9wu+p z5QlT+VusBj$aRY1ri#QaZXiDhVGU6T@cMLoWAI=As9(_jT!2N5`~(B^XE#B!zT zBYbr810sJ=TMV>NVsVJjV&^LGPFCL9=)S&P=e%@)&7GZIrzJY;I<=bj6%hX#*nUR- zgmA$)$MW$mogZvy0P=(Ump$Fc;IKrUiZj8&%j8|r>NM~Epr?g>fiPYy++9)UuKdB{ zh@3Wk@l^3h%yVr_l@feAqr#Ke!9r9ZQQ~^seQp=f%F0WP2;!0Y+(Pspht$3OyYg^; zJol+5Y6>49HV3fSPHroo1jv3ld27oGc4z()wsgOE6NVogz6ExNbUyqTspTNX+Ts`s`MIL? zez&0jeCOiH-wJT1*4wXOX@SEw>+kNb75crs90AsmGCWG?C)46 z-(x>~Az^KSpA*l znQQ5K425@E(f!|aUpHS(d~!HzJI* zstaQ$x5tXj(RApXwX!u_$4A?JV0j1p|JFLGe9fQV5no+D0*J-aZZgC5{gd|_7YmsH z+=3M%%T75E!wV8k-hWO2rG0kmGR|5Sb}|5Yt$$+2y5J~R6f$Yd)&h9f_fa=ht2~YY z{LnY7h!^oo&90=l)hE1YlxeR zse}rI{(4SS>dnrU=yaQyD~++`_omWls)?X1>>2=}a+^a3sO;>&m^>D7KHKKCpPQBx zH`{y51=#>6jrSYB8>>o!$LCgl@^Vd|ls`D!`{M7@Iz&2^-|={lx66NI5{KqSUD#2` zYnK~_yKk(6sE?(Cbi_>rX_I$dL_&1&H$`BEg<0neOkl~Ct9sxH<;;q2W{;>jJ#ykvm8+h7`AGEIf%uK#ADW}DmeoP^$KPYq)=C{&2 z*!)V_Cv{4sB_tS6Ojt& zSQY75Y6egPPI;q&SI1Mye+4oBvYi5ZMs7W#@I$93O+lR7GK!4;CVIfV&Y zvG(IeiCAek7creO*}@`cZ9cZV+t|om52=JcF;dx1MuQ&u7%8QfL5h9&bs+mO!l&6a zufp^h$koGU4qA(`j`g=TUvUr^~zJq@5v({ch9K-e_2iKU1&a7dtH)D@iJL)X=meP}Is_2q{#~L;#qJ}QNC}Lnwn~5EEx;u2~7cEC&$+mf- zpHSqoxvnLh;g7(#zB0_wIpd1{r0uUH!Y&|k=EvMW6( zOU=GS@68Dq&@6g~v^o}sg+Va>7NqD*T{`?EFX+W#Zg_6IdcQ|y!@g1h=&$#ncMFCA zGpn>`5BsspXVj{+(MR*%y%6@3zz=JF^4yymANv!EDeUqj`C9*;ZTa~~+K)?i=$ zA&45d{&TjesY$T^Otx^w1h3|&2G_ty^{Vpr3#1+DRLN>QA*MU}-3AO~slI>C?0i4l zF9>Z~1z)<@O~rJdStgo+Zm1(h>srkv!h+m?mPbryyuc~c;O??MYz@WesKH6gBLNMk zZ71A)SmZOzEP8kK@=ghywSU{@dul6ZyU2TQ-@KAW0~}bbj&XH4qi*66>*N{Of~>hI zM@s2YJ$@AC;CyQgjB35;F}z=`Wzy=N&nuGSaD|6fuaaVzIMkItJxKJXGDX!e9>`fo zGGrg1*74*?yLbcYy=$<X~*A!iUfiNy+=sNSH&BRj6T{C1ZT#jwdx8ty+t@8iKf zXski85gUwqi2o}aRC|etDLDSY3|lf-I{sK3D}8)Jm2m7hCoHXQ;`532&XkjR$dJ!R z?V#DS{bOg`P7VMk01T5|Q1y5_FUyhFK;`W40!|~<&%9-dE&p@%ZT}u8upeA4PpXz1}*E>aBOg5^to7@RVkL06-u_Ap70Z3| z1{WGHhAt+UY6rWRLoWK}Us>~hb@BO2Lr6YlQ7FP4o%cS{F;V?VF=YqXzG4D-p*&S- zXSLT(`CGsK)%2>6;@XcVca=O}i17_(rsBpWiw;jG0!Don{md2&h13)X$esj9Nwq%j z9C$=}p-K>Ropb)qh%>42w%)ijqvn+^BdA`EsWB7l5roE&2J83xbKi3N9~mrWQw-#) zm{R4}T-h~u%aFBF|BOd0XXQM`Qt>7chD02s<>_JaY7y1gvqaH*`J9YC>4KG-xY@Ws zW&PGrVSfRm3|5GW&m*zFWrZJ>!k_v@pR|#k1|&z*n7zl9;n}*wufL=~<6@qMq+tC< z-86bc--q_X>{>^wDDxNPk13ws`}7uZ%kHr!x=4vJzk9uBrr4dm-iZ*^gB#*)K{CxFo|;_O(t=b-ZRg& zK~FT7IEJ8foA0fxSyC@Bk zwu(oyDiiI$yDY-CU~8q1Omb}<`j!1}<0z3Imd&?y1A4!c8O+&p5*lDLgq7Wm+nI#3 zt7_sX=Wk6$`}Db_=n+oOHuE`(S|!F$9+x@N`OA<2*i%ow|ES^bnVf6i;(ATC4~o$| z+QA>P#fNSQ9kJtPni2mKV?GhTo4U$YxpX7d?6!K6pdAxL@LP)>r^7+0sM*3yqC0SO z7_d!MrR&%?O<=CmLT>Knf-n7U2RtoQ?svv|+MG$!%wHCHMsRy1q(GK+xz)dvgin8aO7xnu$M9`=^xJK< zw`B&|P1G>eZYHqz zHxTYJ;El=4y(nF0DR@0r`Afm;^|U1tyl5y^x9Xz|?m|MAN0&ZwQMw}9lGRUH+CR{` zoX1{FHG!lPy<6e?l=JoOj1>Vn2rzSjHqPHT|6FT})-fkM7jbfgwGWlS+Xn5hXTG$OUpI3QIoQBmsapdar$egdW z+jU-+iyo5q#*2RAfIg2=&zs6tHYGNQIeDJO!RZXe;g)9Rz?sz3^VWZ;3OjD0I(28q z8~4uH=%y~fDp}M^Xtk76kr}+`uqS!Pzza!Ue3Vz}aOILYXP-MAP9jtOnl%S@0U0( zI6Zwm)(>0j3QKxY#%wOLM(#F6{|{a5IDd1ZZ6DvZY=6^#crJyZK!H2M{RB)nGbs8t z6%OA%ECfM4=lYAKG!!YpXW*dhEy$z@<*luuoh#IGXsYz0f-m!D@}Ip$`L59fX`Qb8 z{PcwL)oPO03lPfh1kD}=KgeUYOYr!R(}zE&{1{e4<=roa04YHe+P~8bhLSum*epf+ z!P>6;2FvDL4QT?Fp;g7A=sR^S8$3t4716Nw<+fMjCY^qsW-JBg7`hobX7C)v|8$6w*EE>v#3 zF=qndabS6(sI$yBbUOT)bLfRVoJ>BTme}cc4w_$8@M6fOMHc z@Na}~O-Bu^XqM?(O?>>iHAqpkDDC9x=~!|#uTHww$LW{t#C+nd&pC91m%(SiM`|Wu z&9U9p{SeN-Gy?O=TXP&^)6W#Kbd}rFgCl%AtVk#yu4{%;7lm6v^O9BX?1uaePo#tH^$+kxQDQ0vp z=>wv6hJpU}kdNz7#W{)}lRHm-l~BdLXlx$gqXqtT%;5StX>Pe%Ux1t!HvD#FC%(4F z@Fz1t)wtP&pYM!8p&dd!*rl&?Iv0BLhE-1-(I7Fz(crZieL#Uv9a3`(IH2}Dsx|x$ zs}8bk4EoM2i1|lqq}4F%QNAY|$hk@OQYwgiv(yKwU%?K)Nc%u&Kz~Szf?-{L>tq0! zJuD7Yw7|+CAaErFNM#aIrpSwAS=qLm#iLJgqU+W zpv`sCgpZA5{%A$@$)-gd8e6zK9WIz%OXV9Ci_Zqxk?C_I^Ixte&aLQt{ung=hRNq} zNK^$!U;VXiL}b5Wgn~N3{PXj={#%q@)Qkwuoy8v2pjKIqXv<>lN^mU`USfsX2VNvT zo7s@gDx0K)<6QeT{ls;kRh$GSr!#+$(QaTguP_ZycJ#v;CjXj(GgOOnt!}1yf=5Gz zba(apJcBfIS|miOJr)vp;yg?$UgcP165{dKti_xSTg-8dXkbqDBfPNlfPQCyb*6uK ze(%JvzNTDc!RFm++GJ+}3QR_sCO-KQZ_6HhTW#`BQ7HdQ%6aA`nlA5jqj-3sp~UX2HQMzg zf3+YowE>5=WLGXnixFu35`0y@Es27mGmaRjpEO<-uejSCwY|Dy(zH6r+m;E|z%T=E z)(`XUWE$b0KOPtyN!oEV&Jk}qF1c9lG6J*VWQ>3o_f*M4)KON?q#}qAX)u4m`-7Zi zWc=ee)9)FgPpi$uD|EPW7f%JMI~I`h@j?hHxXU48;#VLmXavYie4DD-0)S+{rJP*3 zg!JW%b{1t8K{5eR9h@{uU_ZvyJj_&t3K!U8F^?gKf8iopq1DHBI%d5>? z?dk6Vi29?bAL|d0dzTH6N&Hj!5Y1JS#AeFC--9_3O`DmVin_emvn2dl3)C-hZ@ab+D1 zv-d7o&yY3BC0R0cmL0*&1M?s$V44C0<(<(6puAdG{NZKYYCiZu_l}GG{Xi`@;-Q|t zoGhYfFkByP>CS+_cdfY1W4y83I^|F}t`8plEX8r2a)VMCnfMbz zL)dtv^E1cTSN}aX+ZYKW{XjssXQt^QOW|D-bHE%!Z1i{_e5TQ}jG>QRx03A&?b|~5 zjX~+Uf7x_|%NpU%a4G)vl!3hrif8zsh#y0UXfcJOx@N?p(xsK9mnyQ zZojNjeG$5%8*BbmDdN$Ro<6?>eR}aXW+B9Ef}(!D-S8Qcra>BMeBGYI*Px}d(?rwc zh$r;msX6=wCbcz`#jyu^ka~B0C`%xa9@%^QNth;`OXt>d2O(DcTnjS*5#P{#ARG?z z*}bRH*c_M=?)hc$V;(7!ppB@Gsyn*0*YW86J5^afw9&!RVqL`Ti@vy{Kr64%IW?4=2kgcSl6AS!n4gYzN-G4nm zr`|4b>002}ZGC<92|L|Lqx-adnuy_y`FMd``c;__xhGzZM2I=~Qfs2s}|%*rdQ6GK@Ds^)>;*riuSBBTYv3a4Y(2}k^7NXlRLWBA#)0~A1O5liy- z>%}Xg<uBghwBLeV#(r0;uXOEx8mB-AM<`0~D>$kgdsbzL1F#H4mw+@jg&lT-pBH*f!UWx{$3kPrkjaBCY zRQ=S529pEOMOAyh)rq+u0beM5tRI?2Y7_^on-nMc8p{s(&5Mx)4~TVGAI$P%Q5+Sb z*8O%{%u$wM?&fRb|DA>2Ra>uQsKeS}9o^qul|yw|@>ibRxJ)^^7Z54F1lr||Kzaeq zy*a1$l(dd1j@JkM)Cd{3 zf@6%^@6`C^XTX)lf7MBeJw{>rS8iHtj#hG(x?e9ARPiHz>r$T9?8P&XoKjr=VCyt7 z=N$cZL5Si9`G-6T{;(jjsjc%-_9s1WgmL|TOqA0PUv@u@+vv}0{PDc6nF{vBIivfI zj0@!Aeqm7*+CJT-Rx9pHyT>uAr{EcFw@PRxk)foo9pB|wB1Ok7ewt+;ZI*T&TlB*H zP{>7Xr(x67}QdBQ3?D^69Z{8(Vy@Ye2=Q(R57O2g&9<#%3(gQ5vS15)@B~P$dvU~#^ zq<{}`VgN7an1FGrWdVJ&-td3}VO4QK1U!n4Dy8$!3M zf5FF5XVAg8F^38ViNn$o0Nnir$!oS0briRVC4UC?Gru0UYsIlLO%u=-U^Y8!{^ZKF z!oDy7bbv?!+|V@(7SYsq;r(ZV7UidUy*!K|$_-P&S(GYFjE6$vGzAjt<-bjl%B;Qy5vy-D*v4RF$;Tc^|2wS04r(eFG zGnD9PTo+1$M#5DK{3`H5%m{FPFzV+jq8}h=XYVnfBR9?n}h79m-Scd(Crl$H;O7?FNT* zAMzRgou9cK&o$F>KpZhDq0D{Fb0Sg#<7{(WUvb_%0uz;A-DB@uj3z1|am9 z!Fpf>(gx`60p>xsk&q+*SBJ*lwK3O8m3Gxl4twPfi{o7TqAIMPdOLD5&xe$`jg_IZ zKBE=yif0r;RD=|aRI|2U(_@@P#WBIKhdYSHU}ON6m%>d1Cwu4;#j?X^gz&kj+=67m zhRxZX$a>D^7bc?f`?X!;79Mwy=0u+j;iUM4#dXwJ%b8Kv_8H1H^PzF!pQF8agxm!> z-~#x?Zf+Wo3Hg{|>JS?|e5gkq9zt?Mg`NuddTK3s^x29YQ=W6=L+&7=HeJ@Z5u-0s=;~Wq|7iaHnm4rwxX3CimEcV`(LSK{UM0YQ7*O@x7jIMmT0?k zfFk@6s^Iy*j&pJg$Rm>uGme=xNC)l-F~LXfF=eD)n)FGZqf@^X5p%#>#aK$koeMVJ zCikVko{=_wsT5XBpxGdXCyiK&6!LN>Q4-=f% zK4ny+UXn!5o=@jJZhG;Y%Wg`?Yv0)KHlv=9!#I`KrIgzGX{ZFHF2BGLQKF%c9gP={ zY;}|yK=jAzu<++-wC}jkDuPfjxq~>yEv_@W0jwH=l18bAIORz8TynjQA|w z)@zOlepKonwsOQ*O(XMuhjSNi$V*~Ksl2FOnn=~-*>mW2HK#pKOqU(u>*c4P_>3VO zQAyX?d#ucB8TWI_nPIY7?dfF6Q^95O4y;>95^bgAa76DayW`n>)+BtV}I z9|EtuLWBGDq^eMTkjv!K@D!O9i&pB;thtX^x`L;Px7}v0pH&?f#r!(HDG8#R=l*-Q z4`)Zrk-oS5j2I}+sHf#e4`xV2jwBLv7yGptaO+W(U4^-eQHL=Dli`KbKD3g5?gl}r z>2B=JG`X|~TQA_5_~cnmGyH!&G=Ivo{rMk7XZ_aH|HfgO4^j$Jl1hoRNXH};X_S_3 zknUz8NJvRYrznUZ-8C8}F_31!=&mthz_#<{`^)(U&UMc9em~Fsx?e`kd>tn@mWXCw zdqdT+@MqoOi?U%nFMd6dq9`B&oa_DZ%zul}h{Pd-i1vQ}eVy``?5HAl@wuf00pquc zCOXH#^#3Sc*TpuuEK=~0l1^&P|D$mN+2gnT_Z!eS=Fff@SG{hyRIvH+UR(x;08Os6 zt7PWT>AqeJmSZ>V%JLnB&V0;(G0F%@WE-wfT#jFjq@C>yhV;9vJez zP(jZdVSl1^VRNjGPF>mggH|kX3g^ybtnaR@mJnM;f(z!F$t+QPj3Tj)FASgYWwx#y zN&$%m9MW!Vaz_i9<6<|cx-`qnG`Aa3c&0*5*u@YJJub6yT$FqAcsk>; zAh7C|b`#t8;+g*^7FWESX%6%?@mBP@7z8$f z&+Wk@&bu2kZG;P)T;Mgi1=wBi3UGEB;eK7)OSI}yI&sXBO^KNTM*eLDPHzJV(rZL* zH}bZ>o2K07pi`kvG8VmOKnMs6N)tFlwenpxFBj+K)%TA8%AvEa%Qfa1j1(_LH&;(4 z+nCYaz!Q8;0v}95VfikVF7GC@fk51`(ZJv4Qz`ykp989RRNNKpsK2f1(DGZ3E%|fB(|Ey({IX6 zsEM=8a)=nOzPQx4SPj1R-+#wD{LvBvxwXPs1_a%#6SqxAJVdCB*mPATdX>QSPC0P2 z>=^dQiq@*>NFKmZbZhA_d`oV=trmR$;|A{>$^kXSOU72EXPF16KK+lYyFLM&s@de7 z%vGGem}H{7SRMfW+x-@49r2b_QGfRQ;^{tpIUaX5H$&|Y+N^v1JR)kp9Lr`Mz41SY zy6R}EoL<=S^nKap89e0wTLk5#)YAv2frZl?mtCly#A)!Mf{zS$%nbLWrJl9cYdxQ~ z|F0xX>rs2XPW{_Q9GWygXdpTHDyN&jlSG+U{>W{}6YQJt$?ViD|1C(iTTOW-p%}%I z`Um!Q1KRb4F~w2;Ynr<#&6HK+Kt!y+Z*J|PilTGq?HOFf6TYEo7{>ndkqndJ+1_Bo z)B~ymY5Z4P851ls#5|`JK-s-voQQ4?8Tkrl2SIeJ1F=k8;L*XVDfjcE_LM>O-#thW z|BRgfDf=P0<+8J5Z6u#VY_EfskU$-oLLKwyOsDJ5HN&XC}99BxHw(kGme z=1AB95uzq`%klcm6vee_JN>F~bunYL1-xOop+>+V?ZqD3Y3J#eRQ>%vKTNBI(>Edc z_A7U(R~*PL)k_uT5tFL)bf^+R1kjnN%5UUul!9l zIt9Z_CT|aZJ1&%LM6>fE(YtiK-X`&3W>!Q`sx2MKV)$o*uw?+;4Y3Ofw1kV$+8E;C)| zv;iISuVbnxz!exPh`7pa{x{l->`^Scw@6*NpksFw*Fti zeb=B)9KJHn$m`GcGdE?Sv$Q%m4_g*R`gC4IXriBk?71Xvi-9B)^+RgdU4<3PT#`PF&mws2rwtKUIa0q`2jIE&bV<7oK$zLGAy6<|urvtv3 zROtH75YDhZ?)x5X2)W0(N4)HWy~xu|{4-=X&`t;9V;U*tl%Z0~RuYJw>2Gjc~j z8KEl}##>cc`+9ol`A9^GGwAg0o|1DqM`0hZf<}19fj8I{rX-F2ZCIl3kbJ%Zco<>0 zHEzg}H?4~IKCT`+(+wV<)8kx0&xM7MtSWR7A*nGte^w#njALF+EXZKNlShm`CXZUY z?7&pyqS-n8IYCY{;!6bZaf}41GV7?wTPpZ!Nuhoa%^v$FDO*!vCb^EX+3%3X z!wX{sVzPURpW0^_0Dy;`)*)AkY|#wRJ_2vLYfU3AJzch$O~@*kix|8C-seyAK(BgN zuZHB=E=kJ#YS=&~0&PGygmj)!am`?M$%Z8X{h{9!r?~+_Xsybmz*>8OjF=5jrRBAt z4*Cj_=RVG}()QuDz{@W0m3-v&`UhMm4Z=vGa6;_C;7+vm$fYsuGQht_aaAImFAcG> z_~!;jgVro%Qh2Dd1f=d;M9IRwg}!GCr`BaVnJ*7DKQFiufyEtzJz6oq({YQqCHeD~ z2Vx4WwWaXo;DikjOnN7ZJnxT;11Lw(69+nHF`{ zZ4Q;VmtvG7gH^*DN2jDsZg(GDOvAfRLs)_4q>UK%Fcg5QxfD-LZjq~IJ;Qf>ZV+(b zy>JwM9C*LFV|e_VCeu;Y8_YqxEd1(*|J6mlNOZm9BkTLGmgqxbGMX34mxo_vR%B<_$)#lx+hA8igz<}(Hg#rAPo&jV7E zB7sYG1-+%b0&|AMfTlUPD9cVu%oT zQaFNk??Ce=yw=8$Rgg;p=V=b*qy+1+2P4PZ=tN*)hXEI%bq7jbwEbF+-1%wAX)_iU z|HD_QLgw@|W)!>B#5(eFGl1qaA^91mKPBbLxo;7u01QQ}+O?d54h5L;+b@%asBN^_ zqJ%M|H#5*5ZWd_7=9%1^>Y9amO`@Dy0vnBpIv*Jn?!uXL<~HQ19unGi(1lj*J-tqZb zcoB|c9^t_YEqUr5KX=}?5es_~EI$`cUz1u(m+TzcoOH3JOz*_DKTygx^$kV~vzl{Q zn(%r|_x4OG`@sTeqxFhlwx>cn=)EF57PgtV#v^B)iV9cY{B<0H0oDYCsGA(u*_Bi4 z6h~8Z4cCEfQ>f`UeuI1~NN%HW>>q9jOM$USXZwt=0lI+GRH;@K(Z}1!j6X~6ASRMl_)@Y(L2sDm1((@q;b;GsGalmGh9<|oQcj<5Hf zJ&KUelGa><6@FAKJxk#@`_?f{*Xw3yaO5(OX1~ZWNgTWl#rTT zHbd+LTh-4hb*W_j&2HXU+2z-3((aoz2LI>H zdExS)sRRr(6+sjgASzJP!095WCcmusZV>zkL_%jc(QQT~8dz5;<_1BUMGh^#)?-Drz5os0K=n#^}q1>gknkG?{+IFR8SuE4*Ew41E zA<0}H8f)XY((ePkpjqSj%11+xVMIUZ4m%Q`<=V$53Hmti$`>)*04FBN+VLX=cjeK) z=P5m?J*6HlZ^#p&d4#&XcvbTV5cLX@;UF+%EIDfNw^~Glt`Z;Y2CkBYBuPi1uH_=N zKS(LnGPo*j6V;I^X<~%0#aA$y4zHdGuIfKe-1!g4#l%jiNDra5w#8|I9{;5y#z?ii zSJTRI`l0Kf50skbji2h)5xzAP0 zZ((hRpT!SEa)(vcu}uYzn(@O%HR^IXfR2~&o>eSkz-d&t0Cu<2uH@7GcC*l}()R8* zH(AR`NOcP@8XmIXu<9m$OWSXHO^wxQ#L<9fCuN9R{1xhlJ4!%+&5T%Zcb?DH*y`Td zs_Z&;Fw)Hp<;}%l3c6d)ZvP$!k8ha zyq;o6@THNZa@_;4yuA?(^g2rmF4B3W^=+6N6*I-@ zKK8f)(muE1o7$+P8LD4SpEN)@KMvjvY;~Y-Yu{2`A;_wJ%}e;~RW3Ah4eH1RGBLb_ z*IKAMyrXQKzL86f|I&l}N2@VfDqNh}$yRhhO0RsJh>j62C;zY0j-ac0c_?oA+Pxj}D43$*jMK_lI zG2$9@@fEN6$zgl1O8AFx_T*%1T4Rs%wcf7+O*cYme(F~@;u}wgD%<962rAV8iFlM&-&cltlMXH*&yPbU5Q(!bAwW~h}z#|-i8{aBBd;SgtF3LEpyy1!$VgA zsO^0o9~zFe^LvJCIYv0SrqgPPhBPTf!!Ap|TaLV3PiyE1B_=CzHwi&VcU$St7DA-Q zNlEkbJPr(kdESH?GVfpb?TIHLcMe6|Ezws#m&kv@>0KK!NFkHvzI+L%jY8}pHxtc4 zquUFI7%f=bE1EgsUX5jqZdO^00mFQSs}OaXCGmkr7_I>omS%tDn`)a)#C)+Z`hJ8; zUSr)^BWfgs1?+~9c!o;^uS$^a;*On%7;uWx>N?D27uOEYbtFzdgQpoE1khQ{pxhwP zvSbR(&Rm7N`b!KU;E({fNJfRuDqnRDE#D&00ro$?x0@wO<+4~Jc4|KZp$j6*HU|P0 zvo{A9uLbJ5nmKcib1mY$Z`(tUw|4N^!vpC)mb%@`M==8{P+`oD&dN~8=LLxkXAhI` zRgVSv6<;Ae+v6}^Z zksqUb*nt1nXc5% zj`-(?^nD@2>ylExjXT`*P7G->H{EUx`-2kF#9|-s{nvqo*ar3M^@BV-MjR6*i+)9V zT_Z8YPphNg3)ekj@=1>ZyU#1ij(GZNw_>R`2!UnG+b+AugV(9F_S1y{6uomRKravg z&|t8H?CccJOZ#7=QntU@hgr(`{Tjg@$(m{pL-PCD|E%1Bi?VDv7=RrKky>0A5)`H# zLZHFTUnMR-1M9bv_S&)$Un+QT2;w4Yc;mHNa`Dic5$)W(6$~V;oHOYKA0~Y(^`IYU z(AtNuGaq>D7@mUTfP?m(o=STk>CdPuFbYsr>%u|;r_Y|I&($E3%J)L@*TdQ31=)Au zc{N4`!e9anidP z6p5&kW5Ud#0r^Q&Ej83H(n7t`v9b2J&`1@kcJ!1}p>F3d!Q7r_mO@CC;iny8$M+ZX zZWBJFt!33l`vyg)c*kESew|=j3AJPld|bW8EB4NUlTu_x=C1-*6pZl~N+)#_J8oW@ z$i!03=Td+G^~8(6-Ju2@Y>zpW%{5$r6xcv1*Ti$Z_OX`|rc!#tMjqohwq{M!2Fa`B zVRZF_8^?7#o}nB4y4ZY?!)Ju6WMRG+JT9(Mrd+&JxPCChgLgaCDkZWMm5@wg{Ai#h zW|9>>WPjCirzWaTFx_weLia$PSrqjd+&b7r=(gl`ON~Q5S+0w*w)OBQO{YWN{ZQqr zWJSdv8rj7m7Pg%F9HYi(cR0%%m}2Ie1a5XL!LxhL zXDUJ#RDGSYO#wrFwk6dFW(autV?tr^-(;lH(xEY!E>q!-FHQUnrSH58Y$bDLnE> z`C0ZLsa6oiqZoB50 zYG^Yd1%*VbZLTvAf*Uk0FcB?u~Qa=A@7pneT)wax}d>ikvoF>2?4W@ugB0=_d zX2KrT=)CDBcc@^<>SxvS_d!R1mxFDqdA8Z^@c0ce9f8gH%02aH;NSP)@m+Ay-N++R z4;14cd1ks^x22flK|(II{P{EZW(`;AHM*z+C@rJ^R9C`bmkSsA8{XRr)jFFe25f zt6_8<7^rpVaU4*1ONH+ ztXK+M^JhT(8YG7UR`0Sf|820AGzv9$32A~0^RdCzo03oB`T)`9rK4__@=B0SU2V<$ zXBm=s_M1}n(DS!4mh>v1MP5iQJEl-hfE5@7YzKiHL8-$x@C_V4f^6VU4J>hUP_;Qm z4m{hB07ZQtBCaIRSNr($4Oqgk>1vp;UCF_`Jn8#?Gkf~|##wZMMxyO&^}*u5<@L9Z zmK;NZI#^1CU&}Jk?a)SClnCuI@rcrvUHOj_8!wXv&%dj4lX`z^XSGkYU+8e&eaveD z+xsy~2abZhbbS((;LQC!*n!rpHGEY6nXD@;pKqZ*Yi5t!+X!JsRq*j|V{(|gqqHL} zy0UHs_#lGJQsgPGY-!SC|Hf3@32-yEx#ai#e<9KITgF}u9JeMCO*?%$9; za;P`T#Ahxz*if4x@(n?8rB|{pZ|9FgF|?*9z4Z1gl*fQ7og9bO!lJqV&O>6+2qa(| zvXDPTf{SH#RA$7v(Kn<{MP_v!X2~BI$!1u-hMj$x_eL>yIowcH5oED980nB7SSxCi z{-BL{Q1enF%1a|!H9PY)js%^@`J#TLlcdBOF zn$&oW?jya8)|(enOjdUR(u6pp6X2AujFp=`Iewe$<7|Wg4lzK`*RezVK3XUK4{Z2C znf^3u<*ID9A>ThNarx9hzansf|E5m(_GqV2?r&@H;k!yT9!oi{1Yk!sbQA3n{%PH} zdh3S;8w)!IahMrM{u=#C?1Sk0<@XyHe zmF+-ZeA1$+qpYdk@lO&n{qk^!sx;?ZimLYNZ_X|8O?~u%bGf3Llpi4?Jc_Tt;}cgJFWSCyfLHU z7rfUPdU{9El_M*ja|8(_32JHD$iz5)C&%6h)(_Sszhsibs*AEKD$7$Ci*tu{M&+cK zV7J1Vqb;sPlj##B@|HLJ2CT$gxx`|6t~oPRA^CD`t_BxQot;~uHI8#h2SbZ56>iJ6 zre4=51afEGE|N8^Q1I4y3aOGLJbSkW34dBzEiPZgc6BgS`Q3#}sl?k>zof`Y6Afxw zPbxmGF=dt2YvWwLScr@1W|99}m?X@AlYJcQI?a|V?t-t~{SC8UuXo@kVf~A`_ptna zq3F-f(hd4>WqAQ^dfWqFs}|DeB+pmxogtc8W>Uazn|x2gsHwYi%)zzhsxQ#@e@rvH0+FN73;Mqbvq1WUG0i{L6*u}0tZwDFohA% zu*XJ$v4F>S1$q__O#O2+NGgkb?r@c0ipacks5)~;R;+YM2lEQ{5AJU9j8g!z zK!X=U@-4bxgWATRvUflto|B<@lF3>3QxZIZ_l94M7+c!YV32rD@M*FT?lR#Hv783y zP+M9aTbg=Nkr((9gw_gfvfGLQqvoL38FgPqs!Ho&WHMA#MW0o{BnsZ{Hi`SK{y8CW9| z1DuSoi7W~D!byU2#0x&z6q44ucD5Szmd(Ph@-%bvOMp;`#L`#xS8a1YO9>e-`$dby z`@h@M&O#yp>*SLrqd*imYV9sbBDxEtcmO&sufXY#d4QCJ1g_N*G=TeVLNgx5uAYJ za;J0~0|?n6Px*uVdUZR-&_H~(8&Ey}Ue1C0{ZY`fP~WcAQ<;lQtmfjUZ)PQxg}AVF z_Rb%)lIxJqo+hYcGf5q%rnNVWv$Z=x&Ur;Ls<-IjWHIduMAED{wja;yA}A4zD`rq6eydCSDD~b40Ge=_e!Gf7Ssg`p&>h zP0?;Qu+Gfs@c!;MI+*-Zdl>PM*)aEraROu6l@F7yjH3Sjq?p*tLUwmk{X-&wA;I(n z5AhZ0<2h{ne~SI@mEzR6IKrKJXjPO1PCpG>k=pnapZn-npPr^3Y9Pe^KH4o2rf8b_ z&Y3mk<-JJw7G^tWT(?og!pr(jVuUD?WR(A!?W^1z)9N?MS(ng{4)H6qvV2cyf(0{G zC&>&~7>C2hn#O~VO@92gpJso-%xkb0HV!c#mutPPF51iyqy4wJrSq>*o#x*!Un}$F z)Skh40++C-9*d|2n(D{41n0(Ws4a=%QkBE{j(76qQHI#h=ZM9p8z*X5==*tmr{dtGG05smi%h8q#`LHmuzbauuq(d8$VGEule&H{n zZq^;FMa_zmEn};{mxVFx{&2mq$*NH#@OyWTZ3vL%@Cy+iavOHn2kRlSY2T0!*YQu! zX|87q z(A%Dj1!1>uax8X}&}*Zw$6|z~Q1C6dGOFY??-V_34jNgLR!L&`Ql0rltRpJD$MhzP zG?O7)$zRvtCiJHJ$%<;>fSosD;iR4ZrgS=HW@sK}sJAYt_GLK2r>&q8?mz|)3-hY~P-0?UWm#|L~z7OwZECfzNa zf4B$_J;Agmb4o%paua_h7rJA6!6V9QTSovKrcU+CSRy((Y=peP)qQLCPCg$g9w4+l zFnrgd5V)Q!1vq+LIg=kdliOa~pnw{cvu3b^&7sY|QC`D9$cT{c>#ITI-Xo2#A#)X5 z@jw}mh!(C;vn@LON|l}q9^OjJ%@Sb7fJig?$%Yk4 z{vQlm1699z7jGLqMh^p6fg1b#np5Ckzy$qDwS-;s2uSY-6=y`griw3rQSQ|rBvGii zRwgeSr94UhE*HJ>X>`{Q-*nQGL^viv09rQMG9GQhh4%&1z}Wc3gAHEGnjFMA7^3#sRhnv99uw}` zvA3=3)id@)eWg%v1f~0E6sckNn*V@f8ZQkFx@hDXWq?%a({Derq+X?Ige*#hj~5F| z=Komx?#jh*+b+2eNWnzjvUi;Mh15N32X`5MZN^yTh4&IX8m6Zx0ndm`6;+#1?=}6E zeS#@`EU(fwm`?SdA(jcti_1Rz&wv#x-jZ=~%|AD*f@0~kMyrk}dRx~;^_SDi9kIym zMLy{)cN|f09ud#|?^~?9%Mz5|xI4Mvt#r8D>z+8;HD|b0(*1Coq<)DJJRsQ8-Dh^Ay~iSPhB<4kkRKmYMx+@ zFI#u!}~`L}6t3SJ6FJAkH6lXWmxLBSM94X|BEjO%n)#wT9VZz3OTv`uy!3%dnA zP+;l{iXZ_x^>Vm*~=?d(<_?fXsy zpSwG!sJ^g(<5e?a(J?Dz0X=^ZFxF23pMzE~zy1d`7rDUA|8b&bC}2DkvN)>^6Ls}G z_N#Qemll`q)aJ6>HU#@$oPY*pc1prr;vAfpZ$3TGWC~qX=>QN`@d?2OA*_z ziE&c^Sf)-UoEBTg%PUm<2IKV-1CCp%wfI5bwB?v?_y)T=n~Gm=LBzdLt=Cyl5gWYr<_x|=V<_G>!X2H zQR>X??BD=1JJO3>fb+d;&>(cQx8@tGha-G*0OZ5PI2fd3YnD{35IxJ1;lbQhf5RbN zn9r8neGS?LWJ!i^+;M&6IWu!L5a-r}XCe)ny9^U#)BBulPDmqM;UJ(a)91w|n#9;0 zC%-Hdz6$Q283SNrJh&jXyE_!5Q@@xR;u246%278N_8h4lcyXAX|3>nL#J)rRYqN=r9O*}+(?674 z1i$Xh)A|+;dK&(X=@6N=C#a*;k>%4&^~C+rY<&r8dMJVsCrUGY+(bB@uKXG?k!K6e zR37unt9CE+s-pU0Or?wo3wM^~ig!Yk;#z53&X(G2Bi(KL-86%Jwl zDb_089z$4KiMQ1$3PN7+lvEh@g2y<#Oh23{48&*-DX2W3v{ipn)U{5E`x(F|`&7D1 z#0aYD^L+VB>RU>cYC6AEQa}He4jvroW8wAaMpq@uqVdOZ|H9V4omOi9{QjaU)iHNP7`+p>d+fv{ez7Q+|&4jUfk0 zu=MGWXYhsx6~IE2M7xsC^^7r-ge+h9ShnzGWmGbmqdmpW!5lsG8|&{?do*(vzLaNT zumN^B!|ZtABI{-L#8!UTrOsO6z`rTuAh$5)PI}>JsjTkdZgrhA{tLLg z9d$qi+%ugvVL3oB9k>n0o0eh)Ww3(Y%zX|Em@Eg80|Qd!O2?nEAa}++NAl6cYRVDabw@65K#t*L z<-S5j8$Z^^5=HgMsBEE6UaytNhAf^XbpriB9XTniFF7EEDzP4grI&B8FBVWVM&EIu zmTpfMR6|bz4hO!p(|DmYQ?IWorqztF`*YPH^`3+p6a?>Sw(g>`BQvfby)zaM^!ag$ zlq*hWMI+biJ!lZNxgGSG$tU^yz#AK-tW8asGcf<*%bO1?U?!(6lcy8w&uIY;-8Xoy zOmSQwrmI&&!FVsq6F3*7h}?7&1Kw8po6{rU0nYvLK(lb{TRJ?)Si^uji`O6k2TIa* zwjlbW{|%ZK9VT0xFy0rB;G)x@0n%(+m!Qr6QWG$b9}0@_Pi%)w&hKdwncyG{3|H!( zPL!D`Xbd|XC%RR}VA%IO?>!A`*|CYqC>NJkqke0_yQi=PZU4VYQL)jtT3xSSXT7{C ztf0neHmCeOKk!J~BVMgXxX=4QNw-ww7}@OthKr8Hh(1KvyDz7HFKqhh@Fm?kCk$bG z(HTbh7t*wb$?IsYEHBG@Zx%N8_}Hgfn`3Y{_rZyb^oUbeVqNg+H_Pf%}wC0n(mvGQJC}}EZ^Uul4b`hNSuT2e0 zbYXRz1P*aluw6R0Z@UvlGCue{jk@EsS{%*Mnk>8dRWE!AXrzP?c(go#qx-=r5wc+t z^9+99)%~`K+t9^*0$MbA2!i&`O_X zxwFGK2jBy#OvW!p9_(IKg!m+sYW=n&W!A#t2lGT>b)z@+c9gX5uq)E85NrV}_MRqs zsSuSN4b=SsA*o}jAKRxLvV8`Jt|Jb^M=E@y)%5E{OHoO-|Mk^dLCYB9jpxRiaAzyg z0M+z>@=XWkJY@zp*9D^myG3jPqN(=Tmx~e}>^!hOLr zQwv2sCJ+k{;tqyHSt^7>9*zJzsc9RQsohj9nbc0~tzj=}-ED&t(W}0f_G!NlKDMrp z2~Ph^1lT_lj3!o#gBNQdZfE777Dm^?!SKeyIxE*#rh*tFf}Y6aWXBav4n_@ph0qb| zAj**TW?@-C5^kAm{ezcW*TH{fx^{3!CE>`!=IR4qQ}U}JKQZVLj@??~i&`2~`4Mnb z@)$l_eUSlSYZ*KygqJb~p4}xpTiV-L1Ck(FO%_PUI}RnDWs(1nG5Tu0?k)c@{T5&( zC(UGpe8Ej#umUQLJ{H z_@=OHe0QF`7wW2USscz@iww~w_}ktJ3Y1QrcBxvvOf_g)!r}So4;iaX1_`Erj_;Cu zpY$9pCh~wTXtSTG+6^OAkU~*2gLofu?)FrK*3Vtw(_r*bU1Rg+;i)1AH~(#g33bP| zepP#_g$-lf9PjQo{s0l&O_T6q2y@D|$R3@fYuQ(asTU48<(`GLeU z4jn?^lznXheWGBi$=|6>G3$RDCP8`zsrANMi5v(ZswdQ@ly#n@mg`|k~1 zoa(e!eXRox=(HNbjt&rz+c7JZO$`eRTKJ^y>V;yLm`M0LI8$q0IT3S!_u*J_J1d)-6$O5%cxB#BFk0_+(x}& zOfADCIl`g$+WsB2Rkif_)tJdU3w^pHm`zE&oLc?C&zy0+z&ckFkQ#^a(AO|~ogP!e z7;4_`nnSD{0a*o^1H1q!g0Vc?Ce;H)Zv`h{G69GK-J3MkZ?)GzLkFfug?|D)ZqGwO z^hp|ZI9FLOgbr`J8rE=0wXLnvPkSVsc6f4&Q(>pmv^0l9raPyz;> zdU!a+F_(P`n*cb=00tcXof{wjqm+t@ZSW27;b-U`=I(6)i*unW$e|S5p{?bn4d4MS zFr#|aS>rb5Pj9(Z$-7up7oCa9;0uY*rx~GIKmSvpGX6Vj3S+vLjzSeYRFXTF4;dx6 z1CNl9Gmhz6H_P7!k4-dzWF}xI36RxR^dkOY|AmtW06UAMsqaLEK*#J(KLZxe6*25} z_6dr@ccux;acu74Sq~%EB2Qgh#9EKv;vlCr%Ty z)8Yf|ZvER2s#ad4a8`&l`>{#u&1j6d6KIIG-gKK+LUvkCtDDJgRP!l{c{mr8>o;Ja z5pvx*H2u9wR-O`25e^mxfaW=j;Hum!B)|zg?&DiSBwNq$!>_#ZA9OilKEy?*Tv*H) zo@-|8tTZ1fud^Q=^;BK96iu^MA9ENr;=gMvIXroWU15-6I8V=K?AS~#DrU#phnOl* z(XW*7D>Ukey_GY0v$KOA^snc|zYe9DA1qUGiBWy%l`rF8QbwqLbFkWzHgx|XO__sV zk4zAT338~y{IP%2PfUzA9%X)(r)riqKkTnO)=^cViF}l4uoW_uZ4$KGrNcthadsFs z#|U+PL9!5+k^Dk*MCoy1n=&x~y+S+@zI0?r>7bvCn~a zz_%HSkFEyIx3qvU9rq^b1M}P1m@Wirg8G^U5ymQY{3Lf;OlE`%$LwQRPW3`DODy^K zK~PUzH#Mg3!kU=H5CeP!mthv&{M20gAf&r?92W8R2arI z+dQwh{SQQ{70e8H?>AocK~K6&p4cq>M)nDum~8mtJeghCMLG?vI_Z!Mg(bKf0mjgS zg?=DZ_Q_pNL$c~Im1{OWf8S&YuEozS=kX;REO|WUZm_T}R$) z8?-hm;S87w4-vT-MdH?gfwHb3CfCx*)?@o>p=;tz^jqfokW3VHVtuOL;46jHZsphW zcU8ps=pp&@bw396a>sb1GqiYL)@^*0h-Y@~CkG{lX4v4rH_>UJLa)}CPpct3=HmKe zIR3lrlw?N|H`VC2YuCS9r;x>rMgX)!hl}BSgi&^TU;9u2338m(#JL3K$K|kcJ+EyD zdfj~WLR+dyfs@p-s_6%W?ZXbG#X9=RxMApO66)iPqNB`3O5Po?2lyE!&wLQpu2Vpt zs~%dO6;KdDCW1Ro%OqL4*1w?(f&wu>-SrVf!d(wA4>Jl0czj!pZ1BVL7hd4Il%30J zV~dsL^H)OceFl6e()E^a*@P5;9w3C-Kg@3!eMOCpNq>$)Abi7eM*vfez7s~^hw$*@dVrFky(Uvg)h+*t{>o-p$BgI_eV2{X@|QWT zl~N)N`ZVx-uJB#SmI4~AjXR-V-2zlGh$T08{WdR(rDJ{Q7(NMF6~n1^@#u}#rawU^ zCoyu4b?}R^n1n=L0gr9R# zJS__x(3Fzt7FKfk`=4R&Ur)>53F4wH?}_2x^HXx3D_}3w7b_q`qQCaAB~P(=wNAnU z@ITo(TZdH{mg{sM3z;pS*sColL82b{o^N-!@)IY)35HVRo@4UD@TKc=tOI}K!VWL4^tucw~sY#zDP>G znSV(Db=~X+LW6jEplo61`&8k4T#=YPjvbvWj3Gp*xQ#^bsJ1AdNi69}q<$NTcrOOi z!E$^$fTbvIM{wl3Ml=o9z$mL7Sgk2BB}kB+LDKhUNkuI5_#xW9@_iN6C*Acl@!uG2 ze7-e^VEI&wp@{F2C5gX;_&I}ExBtwzqtOnaZHO@Ea4X;i|ZQ7X;d>`rOu9uy=_fs zvt+zO4w$lj{=S}dG~AMwHEgTFqFuqeF>Ze)Eq8JXS|xAx!CqhQuH)Ts@ES1Hc*=Z;ijP2JR&i2*A{ks!!Mwldzd=I!~V2@K;7Ya?CyR{gUHp?Lg zl>g1e_@u9@&o-a)CcxvKXabKZKHm=c^gY?!slNua|3)7p2LWju>k`Y#LuNpN=fS12 zz8kD{yyjpp6#FzHTcpxI??(cui!I6IN)ooWAN;p)yz4Jd&*JL?1BKM9O5-OF^McmR zC5f^`HnZx-Vy|vm2iJZllUA#;i);7ysxyXP{@mP)p~8WxtZBWyzH;+J$2~0$RM{Ly ze%SfhA3t%FEE|PIxm+hMCK`O(TA4Llm zKS?*b7GUiHbNX|{{vtgm1JE&roY1H{a&T`+R04FDR_xTxBi01KxU1Qc|2on>C>T!O z)}0n+o!9ft^@E*w*4Bl}A%3?vllRvxiGSVg3PQ$kQaBe^YZklnZ{T_$BhT)o*&wTn zzqcP9OxF6B|5k%Z6^Q_jAmem5%GwR{_8~&xbtoKpQB=o$mz|zxMS?^ecwI0_ZVVC& zI8OdGc5q@b2@aMNvi${&%o^&JeG=c>OuEx@ba zQKXZ(L8T-}!`#PB9%Gs}K!6`+PIJm)B=~&6jnnyEi8zJlMWY0pRVdc?7LSW9wLj^f1F*InousG(Cvu=54h?DIZh)qN|bw zTzqC;a5KCrzjS~_@hpzaKjloC`S?pSM;6|c*v2=r=W*N^-a6-&k4&0!_XIx?7~1tF z@lX1^8heTxVL@zc(eZ%T3?@w~f^va5o*pI_oFT|gxx!Vc*;JsSU4SmY- zyhaR;AQKiJO0A`!sY~NKiL%+7fpv%7FW+T5Gz#XUoZ^G1GuuD;A46vu)?^!oVHycR zKuYRUy1Qc{NDB&5(hbre9V4VmX(gqlMkC#f1_eoBz~~-1VC?<&d&m24$MZh#eP7pk za!?|-83%?JFL9rs9o~vW>PkDCab2H!_i`sux_@!h0UM$_-H;oiC#P!)d@wV_Ddqxj;bS8bt# z%nm9FD7RpZZMBZZzy2Pz4e{#V8mXUgUW4weB-XUVy@~C?^$YTuOp9&Hr2mpTc6w~v zwe=Sn^XT7wo0yo3iyNvn|LhZc{GoJ{UT9vPEX$1qQR?$&;NH6JOCkr5`mQ?7$4r(u zNrm{&Q2+-lEjxatNxR{()47YTz^N`?`gQhs$Aq()26MlKVY)j4XL{pF2FlsAH?kq0 zJ3kt1Eq}KVtRIVon@Zm#R_=uRMA$wedA+g~!2>t_jC$lX6>AigI=}jJz_@tAALImR zW>+Bta&)>USj?Tn+=4ukL={k=J8{2G9Eqx}w1h1Z;4M~a`ks+rwl3X$${hh0@^ZNGP)(+3RtOWigJ8dC<<`zj1C-h; zb5`@YP>+^n)vf>3;oUl2(4tK^KeS%B>g1)-af+UtAY<6ghkJ&BxIb?G>u%k=_oh$5 zpA`zCMSl9@?9oA_*JR4?zOS94a$koIOCj_uq7(V7=DZly8|k6O=Zd~Pm-)Gkl#Uve zOeh^R>=%P@X4lTghpZ#Ego|K00NM|RCfRVDdh<@$&uTLhI3+&V50A^l zA%*v&6xu?{)JySQ(FK~?sD|Cpi+$**cs0bweHR$|`>G*4@9^w2M7+1@TL#?~a(wvD z#H09fMbscC`0QVDP$4wQR^iy$43qS{6)UYr_Siq0mzRRK!NKQLMw=O)_Lv*HR!j5h zM-(B#5(#y#ZtwbDQg{Lkg94pij1uJlH{lY#X1xcD1ePs->bzV=wJ5dGFd~obob)d~ z+X%cOb`}z#ZTpN_p{Q0Skhp{j4vt7!j@ob#OqA!@}lD`@3 z2u;sYxuqYnBt_7dNexRhE>KEXA;w0yuKq+p97v#$(tp*F>kuWy>oVhjrg!Ix1lK z69$~cr%L%;T$5cK-(R0W{!tgdn$yFJK83HnLl@Jc1hGl$HkYrp-(kbs+9-4fMU=gR zedNOoUp`13rmkIKgDKslj9YzIO99jABBqUgptb>F)a!f_NX&jsK9Vg ztPJFL)*A(H5kC|mB(pxbZV4_j)+3I14aC{a^J|aB=5o(TUf>C$X5G|N3h|t$UB0m~ zxu3uBl8#%Ho<~ZW)o62BWtS@b91JtZ{vH};3ss9qtMG;mgC;Oh#$T6VT z+Fh%=+di|=*@i9B7*GJn1QA2%t~Fc_)UhOh|qwk9CYr3EB`f`+bXS`H%P#1b>~CSZWK_B#7$dfYNH?OucQdC zj7ODr0r84nT7Z1&DR0+Es^W-*H4Wd=!q;G8-p%;prWD)Yu<+0YR~HM3G*O9pc86uk z3jo`5AvFsF-~cfI!)?X()m|>Z7AW)_+fo=An0B)2Oj|o0 zWZ`T|B+yOFCsAW&YTBN>f%4z02%p#~ReOu2?X`2(KNZeWjby$B!s4c*O2M5XFSZ7g zIMVz))|IYZ@jf`|Guuxn7Dbwq*Q3{pj767p@1OPtf**eo%f%gx44ch1+{6oJcHrcS z!!g8@`SyaLB1*l+`g1=20D3%5q8^;`<^Yts9iUCtQ0x8etlF#?qE(d4hOg3);l~}} zG3CtUQHe+RzQFMFk7Z+JcRaSrGHz~$(=k>kZa-F_C}@;PpNT#0I}T}8;FjDDCYRY@ zY%CF-4B^PlpTWIq!+p-mohq58XMt>uR~!AiU}Y)3;xPUWPuQU(H%6e?_vqE0s2HCx z&QmB@R$Jx}%N#k~kofy}=5R2!&M;H9Ez1S29wv^~i%T~5<`=#@VjEjNJ8>_Y^mRhn zNcVa}E~FXUJ9jXJ4|q7ZB6W~hVzdLlDC^Q%R+&k?Aw?!xbs8T z@@e==)*JWJj2B)Q#z{3TikD3)(*HL{=}rA3mU*rH)QkR}JoxqB(Ulg^9)xjs5juqs z_|%u*FHz)BjWD;nu*w(>2Nx*TOI+|a>Y5e5{|l9mjEAeB^i=ZBbaKKm60&1a(8}h6 zZ^-`Pm6FmiFcA9!QE*F(s-pX#sDdei!d&J0zMd6G%5ZxuYm(uqjO&1-?!R62RISP6U)tE8eJP?!9ny!sa-e%!q;r{&n+s8(tazLlr^4LZ_H?E@nq~S%J z=jQ>3G8V^EGJ>7@vw}0*7r7TAx9zR{Xy6hExkPiQbpR0#zHptnuseJPOdV>5rlpZ~9kU%YfRtoL zSssxD<6<4``13=@KGaKxQ2`_#EaksK931p8PA%EZ9TKfpIZghWI26GU<6MZRGc$ znO~2qGbykQP~anaEkmEcY|_qxwqFcFnJU8ER4Kn!Ti>7-enAwn%$%X5?~lGE2DPK{L>j=J5o^4Qa2M3Zs7$R4^HM#7PfdxBz8M_?O9$hNto&0 z`opcZIdMSx6k}V17Qr}-J-6CCw)%C)4Oa_PM(zwJ`3pV_s4*D(ZW^L6q|6*Uu6t*q zaFh5D0U9rgSARW>{!+}TX7w!M#b z-Ksc;=AqEBX|vB@Qr!alrjwyH=|@6C3ssnk#V>}G`BOP!sZvgE$lmcr`& zP5!W6xiJ3i_Svq zV+vnbjIofcSV1(3>|rkz2c@wqPsWq?n%yNGcHcfjmp>+_D54`$&QE9{Nj1Eb?zcX( z;^TNKOlop^nnzmX%FJNXE>>zIT%6od>p9y%(hccu1dsd}U3=p3xDW&*1~wo<-t*sE zpK4E;-7MN4K7F{#uEE#&FIu`g)%aKvwepAVcVjZwFQMljeA@1?zA{W4^W693!yw7q zT!9m8WIY8XZ4a@7vVAW_1W~jB*I3tf$FQVOGkT;vGUUw`}w~vsCw#S;yAdMT&Fmp-jBR$Z ztI6?&IrGRINf-@Eq7!{B--k6uL@mg+m7`gpdT!~?`;KkNVrq6T#W7`YxBm>lbgu6C z7?uJQcpDL57ZAK5)Tb%ASz+OBcbI~D#OBUHfwmBERp@eAPg*!KUbx9DJ`)62hAup- z4;KB&@$@}ofFtQVsi~*tK#xnAp!C%u&GPlcG|trrjUNx6;4Fe2=zTzy(eV6dDD$_X zD#$9M9t`qsnW*yY zQ!!xZH3;C{EaKK})!Xct}YUtUcLAZ&_2af%6jv=sfLd3jc~To09MRB zBoP2G+|;aMnLjr1Iky={xyklMW$fEg;2`ZgA9f{7aR>#Yb#C~ZI(`3Got-N!w+I<` zagdp10i}Z{tPIyJVcD3D;ZD_iJ*b&o1+(s?CWH2R)9P4&z3IchxBeT%e7ho$78=?R>bmQxAc-0 zu7*Irbmg@eF%DK4wwq0XKEK*oMlVN(8MQTVRo4Mk&uGk7{3f;)FlyBo=9ybV`cnU& z#?CGU>G17R)$={qt;_dg%@ejMW{zg#R+A`f3c8oiKIrPPY+|A<>A ze9{y7#SL}ZUH8Eny5_ZSV7{o{PmW4kwBkIo7xATH{+_dI^jLqxqLFzfd`!#DmUFE-4K2UDfkvN-G6Nr^Ent)xyaa&Cq`EGc@g2SNVy~2?UO&r2N}>A>-Hn z)IHk~=v=4J+LJ%mEKEm(=b})16CBo$*yq12lvf9x;>sw3p;l|_$Z9s{`=dQW|KHt& zlws&C&{@G+UIKRct>&oI0`3c%;V?z*!*0^MmZ|TL{ZpPZd4))>)vbwDtczG6-2rg$ zcZ%N=t*htVcLD1j9_nAyL;b_PNOU~^9ra@mJ+JSifBKc{BZFJ}q|M3nHo)798@Nxd z`QHJGa=b4BZV`ojXOwUq?MgfVT4B8V9R&+yuB`L^Cs$Dd@CNy`fy%1W!b#JWE<9ejg9Q1G+UPBPE^t*FN~)*vhlc$2f3HK-9S zfhGrZS;U+vXG;-AQUGK%cl6t}DRPDK1dzvOKqn@Q;>)|;0y`3=4nL>ea5XryIM~5^ zJom1IN8;SV2y!v7dSd`a@Y?4%PW*?Wi_D^i@)T=X0-vh-+Xr;XW=0%v{bm5ja^;cs zCcO$dV`=F@0J*5IgS`xZeA@DD1LA0*1wCt5712QWIXuAQ8F2=KDrC8{GcsviNk}?n(;shK3a^I0jo)!hD1Yl_0u>i+^$fWd7 z>B>dJZ2uyBKkfvr2H%0@smvYmFry9}<~SIN!OdAz*6q76BtNcg)wxHIArkTiGqO^( zFN2lxYr81KJZk+3mMIiBY25bws#&0i(VFc3Cvm|~8#?t>^GUdbNgWcTJi7w0rti%y z#)v<<(vX+{O!{sfvS^$ECAmzOe3_9^VW@3(N} z^_s%tP~Qob2+Kv*-uK$?A`y9VS{pqp6imJ2XX#T!!0LpyE+pi5P*%!9QInS7K%-kA zisQ@y(<-qN9Omm*@_ct=^UB5gw^5{Ky`+JU39 z;L>^*>JSP0SAX5-uj3TSMh%rA-1-f<%3Ez1z=UAHyW!Kq@_Q8%=(GTQ9LOY(G?R?z zqqto0`GzKGWAfOQYds4&D~JXoJ?FH9H-IBvg@`3{G0(|3u;oM{P1{h=1y3k_+d)u= zmI=w&@)u0UiFdg(oBU@@U%@5_hJ?0(i`>n+aD0OItOT|>$*EuF#1&f*Rc)>1MT z347LxD;MPL$M{GxcQk&U70`UFJS%F|&2=Pqrtbp^jgE;wzoAob;vhiBK!E~CaFCwjU~ ziSRSfqBHG72=v3-45{&pPPS3tzMjb0kU|~iQNrF3Te6|Edsutd!vYA~LLhv4rITQ^uF!Yd%!oj6FFurCG#b(5BG z&z>0~y^wKi-#Xs%6}oBTtNY!Q?I*(~Terc6biQ+@cRv!`j6uv&1vgC;1+? zlqb**uqdtC%qorE@mcKAiQGdE-CD{2#wcW=SjGW3QzLoxH^_K~TH~*u?XyJg%Y4ee zlJ@LK_WonN_HWIdqgf(PfvLVLw8aFkkl)iqrnZbGd^%0a(t^VLkGC!C!;7-GD!spe zxp|fzu#7B1Z(9O3X6JkRK}8E!#gDOgHl7W{yi=KXU<)aIlTIgcNq-oAPpz{N3HYUY zEGK#-XRd+n4D$V3&oK*vVox5ljsO81!>1{zpDz%^5Gfx3d&{}M?W`_DYLVipzFN9m z#-1`%Z|sHDef<)kD)!7*7dzR`YRc>!ZxA{~4G|L+Jcin*Kj>rNp^W}m15bjmjzrle zvNI3_23P^gGmYf@?|heLg%Vpx10OH*Qe+heF8(LI+o~(Lsi*r$7GitdWTH|@-V~Xw zpDHR5>^stSX8*v``+}CEJgfTbwMb~9?7hi(*N46vl_dr6%2$^1nZKkIGKU?q*)ta% zkWTp{)9W`4vCZZ&ED^cR?Nm)X8|`L!3o^5D8UFN+#5BJLJ(J9ERuQWuPTF*GX ztsprmkrKD($WU4<<*n?yan*}gzj90u;>+~?jH zoQE2R@#l~;l)jPKqnu6xdQyM4`&FD-BmH2eUdQXv)ATLm7^2FGO2^|vdd*qYlnaZk zKaoW)X89a21WdWx>E8;_T0_jhn`&h(BD5lzrg2Q={pGMpd3q*9a!XuEa#T@bszp#c zc*>t_T>H+YNUXyNd;h$TQMA?Y;jQ497F_7r4LPcHb*;U!w=zK-oG(2;yHlL`kd1bA zE3G2_IP4OF71Xt$jm6`rGx}ma+vJcPI$T}TODX>+b0U^ELn^ahN1P^6UmowM*1Ec?bD1i? z*$fR8Y;(!IKx%jqKAo*kaV+;*^8A*mJUxdOdfvFg+~IQzzsNC+0~mHpeIK~gQ1PPs z11koKxA8rg{A&++Iq|2kH0Wv)F1~+}+NlEpA>TI> z?8n%bgo(zrrz(x@L}+@_8glZH_Fz|QF% z7>o0*VStXDTvLIGUH`wbAa_EsvZpNT8J;@&X4Ak70ZICg8-F@-)+mtuZ1Zo0zk4F< z*?;rf+7Q1?3=Z^?Qt)YhJ5Tg(i=9Hd1^-ChEvT@g7H2{F1UeG(Zj+WjPb>FKdTGpz z>7(l^Qyt#!2}Rqyq_4hcO(c0?+34mfKb)=XZE%kTDOB1`lt}$9t=)?4<|K3m(l?M? zyNWO0;D^b4)0%3Ux^k9+*uEyUrYS%gdMPS?dVpUD5*2Zw}|=tBmfh(7DJE!7j1Y|Fy_1T=qe2!WnLk@#pr22 zPYJk3sH4aOww$fJR>@V=Z2{x2a?v|(CUWNQx=9YH0AV$0CjT_@FV)v~`d4hdqqQW8f0CT#Ye>96E6o8>Y%K+=FKXKLlO2LPsl34!-Cb)KWrPGw1@7oP(Kp9wP za#eeZ{*7kgmEtio8^?0=JU?JwvBm2}0N(@lkPzAH-477YL<(Gz0Z>XCu;APZmH4vN z8f*?vAI^GMlhKCg{!6GCnsZHV-soA3J%gb@2T~yo);Ju$vzuh^HTO;gNq1)g$Ik(2 z2Ws>%cxUb+{B~f&;=UZEfS9)VeV1||7nc8tB2!3<1oJT1bNwac-GUq$tAOnFI(p~7 zDgHb{bT61Q^%;P{3R5J3FSFD0E*9boBvJ;0KC?%oqk+H+ULAMl#A&1HfQos`lci6X z07`#53Rvfr&ZM>KEABp9ayMhceR6#TH$jZ%((#?C>@vx5(wr3 zncA+tHI2VBHT7Mp%e1(zMmw5W7I5AOps9^8ZBPJt20>!^rd)$XD^-7Y$p7k1l@Pp&6ymtqllF?+`XD-MjH745vpR+m$R^nsrmK@?aD zy^R}tcy9-(%M|-vt<-wuZ8p%jf`BZ{7I-HE_9#ks07ld~Ff;;SL?7usV03a2Av%GO zCL^8n^5Klqrz}-gz_Oz*sJiFlt1_8c#3x^zc!QL0x`uQ*rl0-B^Ij+ZyvWotX0!VO zbyICeT(1n||2}l%T1*VBF;KMnDs8`>w0O%aG<_wUc<`?9&#U-S+|x^in>!_J|F_)i z*e)71*x0*!e{C=6`f%_j3eAh1+PZB<&*(xhlx^i7I5}rQ9BJhn$sTN?O9Gs@9;xj( z5~;5*=ay4Xy?fZnrQfaEaP&>QRn2qftLv7v(gk=`O}mlbuw?jniCO?ZtJ%U(@32wK+PO zI6CfKkK({usBy7GLt`@Zc&3kab0kxi5_|hYY^sKR+ClerX3grG>~WR1lKt}+y*X0$ zOQKMa16JO=6#CF;^k3|-83C##`jQTsqjq4dp4Z%6;mRb`jexC&xO3yYG=9pRKJ~S* z@#lYNi>Ul;B&IBZHt&nC%&f!9R11I?pilPN@|PQN@35POcOhzC%|!KQAXg(-?K38L z%Slbi%`lik#h{cE4cl7eX={x&B#r3Z!qm+OH;#N!j{(w`vT+)}_wQb=#5N6*YTYQm z%y22gy8O9tda;Ulov-17Xb_MD4yFj;XnT0ZE_g}fqcCV7taJGU|7eYSwDFQwx>ATYs?N?>W~ zQSEjmPUuH!Ee6ATwrG(;SjKlu>94JC=dR!!s;a*4w&ZBtQG$7=r+swPJfF*SECX!$ z%mf6dTBR3LX#v5G5}kQymYmq_tLTXE4GUzCa-qr1uUEc5T^M+xw~op&!y;pLiOWgO z-eXfM>M2(FZd>bg#BS4c-k1DN{PM!26gFy}dOZJJ^_-1tKB1>se`Th!Lvqj{@%ng? zuISZw0HSngla!|c5q!t-xt8Uav0=#kT0=7^*I}-NZx?Vv^<0&>gdrf4K*&E|*$Icz zUEKe)J+H}c+>y{>&@xLmp5K&By^hW^1ZGHc5rzm9Iz76}z}Q74Smg*`R5w2OR)ewv zSJzl7p4bdgp>6O5W*(*HVf>TfDPA8PWQ9+n95 zrXEDA%rPGq@9T7LPMb;oYpceOOKTv~A0Hdxrk^Tg)JNEP9q>=FrXBfqU7CB<6B{>Q ze7I@%6?vYNh+(yemh=fR@tPXod_np_nIG9ml8J|JHWWW zERlgwXqE!RN9%QW&?+>{UR3U8+&e}7)pNL%?fb{)g+3MwYYy<9;Y}wKZIQX~RGSj* zv%w;KVH1cNDYYs2z*>9Rg+oMj0XIta-F@{XZJw6%_+T6N;D7F=&U(W%*+4JY9ifP~ zVvp_zn?6xg(}&LWe_JG;ja|@bdgP?d2IHSdGuY$Z#8q&L;|^j35_xym)U9uca6 zWesuzrkoM6%8O0Fs=>;6hlZ)Mye8;yx}s%UUa3%x1!{}L;j@kn8s30zVUaH`7Wkm~ zzUurOFiN`Lv#9r5*G>f11Jt_e$rIxqG*UTcJvbN?k^ z@4XG=dC-1Kk+vyxILjo*#+_T|!x{iXmgf4v$Z_D28bC+os1;)#=IL^~*ONK8(e>;tFzu8bykKgytZ!x5 z9esrqot*T#xcJ;P;FHOpgDgmULxV0)TuI@vcT3;K935pp#|!WCz#BkFvKc>$Jm-Oa z?U}1Rfer}8!VDBBWVp|f&!>CKDx(%-`)1L@z$^+3HTl`nSfQID++BC;y|UT|gzp31 zolB+Nw1Nj0gaBBfU>ae6?U4Ak8ApG~mp7kFYBFl)ot1UuyN zTV@+*qc0ci5kHmH4W~ghx#nh-eemjr^dFR?InW8Iy6>|DHFx)3kQ^!@cWm94KV)lg{p1~vEC;fq7x#iCyeh;8F?GP!NT z1=>a0;@4NTMsDZj5yL+HEE3Ot=+g$cw#tLzU5os~8VJ#I+RV7Wa&1QSm=-|eE5 zej^pNqOb=Jax8EkkUG0EAHtONif-i}nV!8CX*!JQhL!$u+ub|zUwnpm$P`M;PE&spn3IJM_$7@KaLzUpwh%|v)fWEGpzy-@L2lu zbzFe$NgnC0DF@O^Tpt>=;p>+P|m0N}0=aA!OKI8TUA zeSK5F@oD9R8^Y(J@gRGv@N0C3-L2yy^9?77FN1BP`15|L927xaJh~Of%ye?gYX}0* z{W(4>)cEim<@_X`wcmH+0BYxLo*EN4MXhs<7FBqwQ-}1?BK-s&T{>c}n$|O{%^ta( z*Fia4Nk3(+L2hBbXr5Qa-1rd8H@6*kN*T4nH!(Ylo1YQ_n0A`@Lp;zkoILzoOFK)o zPlrPk`TdsLG>~8!Jqon)Uu5sIzyTMx0h>+tPhT@dO)z}iy}27aw=UD*5AAZOoh>HN zE!YTd+-1{0Q+XT8>{b0&G5oSR`jqeI+_XX@{kC^XUG!ES1@t)qcd6_>NV@@-aYQvN zJzfk^hlVqwX#Qf7X^8To#lQ|KK`<~ja!_c>Yxr$3JaDC!3f_joUo8u*{ zFQc#d0P8K}{JBu&bVayeqybh8&faX%b1O0pbOv+$RaKJ)NG6TN$)!d zZhGUmx`fQqo~5W=GQDUXto>YYsNg=R7e4*ZV(@Vx={Y?u9U8y^f67oe<=IuMU~}_g zZp1p{icNB*1$|mqT}--%n!rPv3b*P%D$u2KFg-Z1H8=`dcbmh2?pGs!JnyxBq{fDY zNO8^!8az{EL1I$JIJ9UBN(y+;dBFG-sjhLO?eJm9PrT6EFF#nWUg0vN>!(2>r}nXa|h!lOtn z1%5MW`_o^v9Rwyz3d5o31G6` z|HaZ`a%v8V%PKXWp9>woysg>?*i+)4L;6d-zd5i?5DLa8mty&MTB7w%%CpQY6&|zh z;Q4-?O~@X?z(nbp%5NqRumXB4A?`5+BbKCveyYhX*wnr-QWjm@rZM__2-x^1{KMiG z|B*HTDG_}oGxtwG5_|97cU%RW(^JAi1;q3WSqWd)E2$bV1H5z+3TMq$jRljFpAqC` zj0bC4z4Dk>3K$9b0EZwYv+l41WbO>1P=$1Ufo(B{hD`vI*`73iE{Q&k<9xi^WdT+3 zY`8~sSxkjK6VLW7^j3z4ZS~Pn&K891*^IKp?*d9F@>{4wQ|aBJeKjXfMy)?He0JBy zasm#p?$((vr%kLOS{1{RMZKnXsDW~0NFPp>aM>q^o-PoJ3m>CUNHrwp<#pSLG=o&s z(Dfz7ScMwJ)AX;VBKD^a`JqOC%b$kuaLHi>5?L<`2@CsEs;oLp=Y!MlOP*U=|46<) zqzue!=1Jg4rT?6r>AZM&Mb3dQ#Za#31Ul1(U+uL;Ob7M z3O+_xe5Px2kxwvzu6HqtH1uj5+FT<`V>x}E$(d)8$I{G1O!xnE-3!jpky7pfl_EbwMmX3xL9Y=VSlr=7vY5xGJ4T>O&9~= zw$&6GS&ABcukXTv^B7Qna9$Ea$8D=G>-4aq2)&~(d8A9DF6uuukp`ztXiSN|mGRQH zh|w5|;V_{_s=tP?M3Vq@5x6S`A|FFMNi4S*44To|atiXksrshKT^BCuy!_Ye zrdUabcgsk^v~^d8=>TLncrS1OT)pdxQ}9z6kG}W)9lZ-FYQe+g<=Wut6w_7?-6xbL z&F-^@41P80Cwy-o==KfBUnS(k+yfd?MpBz4zQLJz*5}<6v1A?E0i*UgFun)(9FHSe z5LiZCzq2%=0Os5BL=Ta5fsMEv_p9dI95zKL25Tk1oPaH$u67?4rrc|eOwc{vt9xjo;I zgFL;z5WHPAWSK%k?;Mfjjh2Q#yf=F`YqAxO$x&IBUW23so9_9ht}_@auz@$6#WLbY zo9=~~k(VR&Yyr37=B$UDiyMn5io6Fg0HhcTJTTtoJppv!G*2Yq4^aU43{Z$>%AGYA zT+_B6Lsl+SUf?ZV0-R?6DXZNmwxRDiIPatLZo%m{)~^^!rZVT#!_asBeI)1($dWp- z(YaB*Sl}x%xt0?Fr_}gb40vLpg*WZ_koFU1`JpFwtSe@r(z`M%(NKXe{)tUzDOOqV zA&D$WAbYje|Li_s7*J~tf&w1sf}d-f)wq{KPsf3m$TwgQdm3`jQf}8zaA}CLQ9ah}y|QSZgAH$< zHS(MzooAYP6bWur1845S!}WruyPj(cDDdq_3NaS;w(19g1b~Y5yAi>gN)fYb^um_h zF7N~}v?xs@71FNzja_VblG6CmE^C8*+{5lAw;@>9t~xzTz0vzvZ0twk!AK#E8l-Ys zjV6PF=qs+~cl|<&?;^?1*2Up=q=ow2e2xcjGQ94FedUI1wBF~Nui<=;%B4*p=Jr&c z;l&S{AIpeUPK$4%Aq+O>k16r|d~3d>r*R5;Km3(QEqd>^&R>DY8#Ve`AGEEUT}PaR z9dtue7#}=yA(s#g?)}_gJMvA|KJh8aDcD$DgH@hMh`qGNM?2n(ik9huN)U*4=gAx$W z30ibmQ$n`(YxjrXry*SDCpmx0@8EX5wC{dd()6hlx1v4Y_YVq?#eO6h+R}4O&+6@~ z{_t0qcW8EO3Mz}qM9aHc>?dq}O#*()dD7jq?uO^$>l3{fpm-v|+DlnR9`s*`%SzwN zVXD~4zRgYUwF1b|XRx02x#wU%Nc#JcVC2(f>^s^GFadu*$nGI=nun2=Q2kD3!{YgI z642r>6!IL+Gi9Qn*=M}(hyVL|P-GIIAwmfx6!_u%>%JjPrbS6|I*8obG|*qOn1HZv zbei;=l={yHdx$BLpfLs0yv_qHrsx6~6Uy;^)zxuHJI5|6)oQ$F0eay(xk5wdg|Zxe zCW)4&Qe`Z*iD~fZU7h!Y2-;_0MQp0iO=z}E{d!aeOyANdd*F;s0^S_2IMF#6D&<(S zoFem55 zEMdA>0oh04h$L@TF6osUJx@%+mlRm9Y7^R-BT8%7&oFiFiPq_b(KtEC*yH1h{=i%) zgjqsRk_fN?C>OIAl@XkIi1KX3$T~KFO?QFWRw9OJlSJKJkl&Q0yQ^a%eGHQ*DH=9C zYea^g9;6HIUk-NbJ_E8F7p^*4Pz8*?ksx>RP_5~Z-^T#enW=JbCL8xGmBj5MEo-P3 z=1kCeBSnt_T@9-pYU7MA#Js81MWu+L#_tpssWcnV5&x>S9EX59BTxr`xowKfeVRA= zcH-;t+LlLKOn2G%!n-!Hy%u;+N$T>b^A+J6&1O8Mmyqh_#|IB~)pE#TvO3CJ`-!{1 z`J#11oR7Mw>yybhyCd7F1Ea{L`=rOe#v0{=O%|bzE;JUQvK4nZL&gOU^K1&(Xbi=CGUIJP!T6-XsS~9}>}RQ2kz7 z0sUbYCjN@WU%!Iq-8*{njxwei{FiTP7yaJDez1`Y^9>asW2V}0W_@2iK`WvnopHW8 z@ae8S=r~53E|CyWM>o}nzLhndz$-Zevfdyec&3g7dYp`^BC=?W;h%@XcK&91Zo^D{ z!j}i-8!W7a$!{C<_4QI`-FB%Oz{Nb`&9y4UK5e6x!p%x09U(%fa-b4ke9(2rG6*Il z>j!I>G{5I_`h6~ao`czP6*T4~=s0F(us@|m?>75RcO@DAduQ{xaubnz5U>aSgv^xV zL+$nh*Te(pW|#!ZFs!(@wDwy_#q&=h#uBS%g2od(rG!51=wj%;Oe0Lerr(9x0b4G( zRzHEC+vr*(pc3 zRs7eFlDgII`XgN2eR2=NA433!=XwQVclt*j^oOv&>cV`f3GOG;$2V0-PqFDYr#Rrr zbyC;U-*V9q4)hQA<3{>z0TckMx|+!l*oqTQi_VE*Dg_ta&e-)p#m)EVPzBIUT6EQa z?-wWmW-1TgrxWFsOw#cGTCDt>?*M^x?zRkm*46fq)BYZKtw14osIQs&CeY_-%n?Eg7Ydk^ywOS~D z>tH%J0U@S*y1oO9pCYKy=zP)rJCScuA;X`@|6s&N{&9)~!_&!B-iyL1dJiA&fQdNp zp19rn^O@s&$5yv!3X=~<1}&=4xy&hXA+%o)4sWIMjA|_4S9HGY1xT$#foHu3g!TY= z@LcD~OdQgvLT_QpPRhXKqt>0bhC+A>`)UsDC_uZw1-^>)`{dOez_|t3C6xo9B(&qq z`?{lkZd(}WO`eF|?!i*|>2tDP9$F%yM?wT^d318x1+Wl;=XpLe^l5VwZ2e1e>U+*y zm*VBFw)%3q>Ufwh6dt1sGS-bpqBETqRNgScalD0)_O5bGu@6Uj(jpeSXOY_exunkA zuecR^{;#O953dv!`Qzo6}502Im#Fe z7T$0KPL5!(s)&4zl%%(Wl9pFz)3EZY8^wm4+3Z9Hp|3Mu2gamj?%$&-fDcbR<zGrflH!a5;Qg;15oYG`F+ytcM=oxz9YZt$$q63 zO{l&q&J8}e(q(^Gd-RL4?iY_rn%4YnGT8Uk0#>cN*q2-@>8;PhVB^2V?s^C<8t1-s#@7+*IMGg=VUy${ZuEeMimr9jt!iAaKzlVp0XA1xu+)CafJvtJkT zxbXaU7RtPP>icsA>E!mJwvxDE6d~R691QQNy}}vUkrRTY5z|zUco42cut0)40jN8) z1^iIG56m8MB2wajR2a{{+z@IlmZ0PfAPUTfA}1W0dIT^f-rFy7ve(5Z)P2;Jt35;<8*0>k9Y!A`S0q~x*$$Hm~ z8%B2xn5;J(SpN;Z?FU*Ey99S|`F$w+S7VES$dOmme_%MCqhFf;+ zS8huT&7ip#sjD_$iI=dPd!Cm2?BWN3G?n^S_7ii@+gxrSpUq;_m9JM=57NwxO!#m< zd4GT12?zSkd`>77WVPqkF18)A@Fd2|g@@lJ=oq+_i4sPmjqh!U583-1bo9w$a#XG} zmLc3vnSpC5tPo*8X)32F-MtEe*{BRfLh>F>8gUAUnj?%kg8mlSTc?3`~ z>6Y%lU*y!Bcf;}#f((FueK6*ON2vDVmm~&IClVB!uKgsvj$tm=QwtOB>2)4IdTCOf zZWzsEacY=&0Rq3y46KYLt$DNb1t<-=y>U`$XDv!`o6Cj)xbm39w>aMJlD{tz#EQ+3 znD{mCt+!#~cGDiaWsE&aNVHh1x7_H%0gk1Zt|5m(Acgh2RnamO<6^K{w8cBKU%NFbjdgzBrcPsmNDL@JoXplF8lovrOV-9+*GtGDkIJtRA0 zUbK0UE?*;~XT;_ql+36*`}|`g`E8ai-#w?Vzsq{|Sw&U6HAhP}&1bcrq)Z4c7nWtu zlIuq3^m0vPekOSZ`e4+B;jsAgw)hVo*=a_f{wuUX(fjDYk+w7ZMDjuI7acw+rRE!l z`1ra{mryUSuZN#cl4n_4xID46 zh*JGGnh$^NxGdZU$*R#Z2r?np!-@2fNWY6e$tyAOUq+NWJlnY<0zUc_TPa5iqu~19 z0=LI|m{%MfSoG+ubdjoJE{i6uC5@e^gNLP5XSoksJr`;+3fx(+UlWC}C#8|Y2MRM1 zRKF0&g2v^4sd1ivk1By#A*s`zXT70}h7ysRe^6$`mkfB@Pva=FFm`nG(WQP76J@+5 zSyjmPj)cn1XuU1>4_G?|pj6Z%uxF^|6^tkNVyx!({A$&s(|ZWrfYjP}g#{vTRPk(Z zSZ|9>ovd4QSOfb91s>~LF|y;g3~t+9SfQQUawYIEU7@AwldlQ~$gK;Gd67#5)){{9 z6;DqWBaLs=_^elP(r3P-w0We+g0Kmx^^nNT%CIl2?qvZ(V#9^~Jjo@Xe0f5o8>A&)o7ObHsX3*gkoc<;|c5Ho+rs zpB))+Q!mJVXoHu<_Gctb3UiU31thw0LR#+Jv<1I4JTel|4I7S*gjh`BK<Y&$T*R=JaxfA&hB=xPo09o&G-$y zjjprW3K&ner>|wbncWEwl0u{Nd++K+Tg%F#hu@@*-}G*(<&}N?I(snOBE2ny1!w^T zo9)Z&jkIptov4LWXI>nB5E;kzi#=@_NIL_= zz!X%id7}(?7w-=1lnLPe#`ummDEO1xiifjHy;TH5AZ#wF>+fU&2n!i95S_WN`E72N zkQ{T(MG!FU4p*Rw;TFr^+icQ@Rc`fk0FQsXOO{#Js1(a#uMi&SgWLqazz^4r${J&V zIU<|>La*rm9tl4&pT2Q6hgTG>Db+M9ZF}8R&U-ylrHF4(xt&H{@rIuN<)4V0Hyk2A zuY&bfFVJbnUkBFQMdWD@Ay-6njYmG5QT<95dSRFomic^TYDsI2PM^Ys@pGM?|b4`7mlps~D%oo$Xyo|hRuDN?I%9oSFVZ$%gU_OXIW#z; zKU?Gm^nv@LBIhuGx4hZbw=cjZhqgHhS3TI>>7En|X?!WA@VTHp5^0@UcsZ%SBFjx1yW7)a374mgvWVao6-hIAs|fD8m_>PeeHlxmJJy+U#JdFzB9<1 z_>b?ZDFPNXD)E+Od|q%tVM?LjSCF9(GGN{GbE66w*S~Be!6N~t>vo={iwQkVD$4B@ zPkGl%Vf&=R@e|3vJ$L>rrlbe>`P$8ejp@($glRZ;tn26KLj8{p=w0LMXb-v6z;-FF zBj5<&NrxVR=jIu~E$}dRXe^Ri0}D65$yx#Bzy+}3wd;R&UNux-#&sg~8sxKoBclM; z+CAx^Q2QKjSC__8-zAvOg7f7|Ibv(f(M!74vXhypW5_Sl51Ov+Ngf540A++J65^YM ztkpM50OTx0Z%FZU>Uy06*13Q`Xn*k!%e+p&cuy*bawP+xwj)^S>tBF9CK^=PB!`1z z^e?Y9zW?zd-HJ#PcJ#B7Nesx@KtvMQH`rhj$SLs41?EfHI{+CL{*Wp(;naAsFDj)% zXs_3&hB|3|bY9z;ksbu3v(&&3$TIW2s#5+*S+p$d2PV#m<$HJJQvg3JQQ<%VG!n2| zezxL_1);AOPMJe<09m{b-nQwesT^kemivz=zXIh(&L&_cPX>8AFCB}lm3^M?(ycj{ za-T;qAQljhOJ;U$>uW7YJYaOQxim89zLqJd#X^JV06ofbG?1Lr@GwMP9}#LrfVy}ym|Qg^!qn2lSS!_n}-&$pLp zi2}WMPcQqt^7KWfcibz!ZCt4cSv_0VdtMDo@+vkbdzGTjleX(HCk_dkhv*b$2X;4% zTbVJ9D3c8w+Fo9Mnk#~Bp5;7d51*0I9sU4BnwjlHH=LB@a)|_vNZ0YX)ZCPIujhEgflZa;VW zjsyviwJw@1p{d1w5zRP;A<)#V_C30T6v)SRBzv%DQv|E-tbg}>gNPwZyH(K-RjUEM zo*;~|xf4brMNclW!RhpV{Ok_}E{aYu25h1J?M1!<6h%0O5jNVGH#5$-Jn z8+9zGzw25v+x=abaei%{ygRs-a@#5Ep@mb=rs!0`sMW9604?eSRS*Si0c$VuNML{O z7vv{Wi$&N_nbh`eQ`uE7lhXM8%7FRPNm1)sCD}rdUZFf+;*1kElRA>;UM!@F_;!u? zG7=&16!u@|5f*eqBf;%rxGI`+>@xi?s5qF(7Xz6^gp2R1lWzU6-1TN{|1WFR-#A+O z&r?PpELTglgDY)F-)eFW7D^72PvrQc-%xkF$L?4Oc2S@lC9crA<5@xQ{=;(^@jo>9~hsp$o@YsN2IRgn#Z#Y1DXb%UeQo z6;oew!x3cja&sFPdHIhKCBTn@#8qGaw#(Bz865z__21P6>3Oqr!{S?fu<*ibMkb+IbDxQ-cA~%A&WKvJI^9S`8x2 z2VqX*H*`Yrf0Qw^lIS%c)G$N`!~oPre9|G}FSTZHzEigjxyiJ06mM5<%j3px^t28F zrSkBdvumw_necZnZ)~kvX~V68Yf-(5L|;bEh_PNenXe~c`NNj!ZpyT3Jb&fr1YMAM z*AZOAzQ)sf57n6_FUWJG7o=s6XLp$SKV`l2iqIOoAkOzUm~QM443%hF7ER^4%I#^2 z_?T6NaNcCJ30@s2UHE4uWkMB;>Tu>Eyt`S4%;x31>y&y1Og9p?oDQO+yV0h%Pu~og zkhw{lKIbZX+gMhrR+JA_5{B-~URmryedzuSTJP>25a&#Pd|rib`BFVnp}5E z!dCBUxt3(+0A??hPex24&;>crdWDFt4mb51jf7crK`}}BbNrmm*OK^WQ!<94wl_A)F7UXQqpoUtF^(Rb|vo?8irVPmfVF8qBTBA{tw zH~3$F^F$^_>N*PMG#e~2Lx0I!kQbeSm%9=+LMXqu=VByjvukxm|M0l4j7L|4DhjgF zJ4Akhw#De&>oqK6m4vN13?u6aEM5#T$JtD2EzTn+L;!>t{S_j|odJLuGy(8J!dG8f zh}%jugVsuD=ltQB$+o9^!UN_1uxGzFZJa&c(zwkFjQjrLCGID`+4OADc0M->Ptq`@ znE?9F1Lksju)As}qg_(HT@e9Ml=Tl~s;M)ajm#EFy+h}$h{f;-1)t6>7E>gA%iI*1 zwAMI6b*+aQISqepW2bN-qUiVYFF#<`gX)tJqqSd!$o9mgQVJ5Ztv5J7?ceLMzCR5S z!Tul)HLET>{*r? zOhQOB*n7|3fR+68UhA`2+kD%`_e>lDM(zo*T;W#5H>~rSIe_}hE@5mv&iIS-57PiO=Xq8^Dfi zU=i#~EWK0jI3Ow1UZ;Gm^H;P6^j~F}BpIC4qdQ}Ma;GCY_kHOfv6rF?OH6HLQP zI>5PxF&ss2s;lo$>9uvS&jf`n40>>jNHP^}eG^Bnou0mVdVeV;#We3aE*w*L<0mNo zuFo2FtG+R0dYWepU0X6YDvNoUwH%>yB$RchHgtILCueA7KF5O#G{?zsS%Q&#(w4pF;@Lu0Nv+T$ zK&@7UHoBP*PFMS@Rq%ZscE!t}*j#=2)idvGIm!o=86o~#A~-4E>rRE!w|je019fI^ zai0GU_1FMgX@R~On-S!X`lCDdFIbZ1AM^ux=6OkxG5_X_Rgfif>UD!2V3(J%sh)hN zflHTKuR3rAn9MXz{tbC6YkbGB9b2G=w|eag@?^mE<~9jEK!_Nq5BcG{%pfSsR1=2Q zUcol2o`phD?q%Ah8meHzyH*FcNzfTvlvF@OcRi66r?oy=%*nGUs#@H}1H6y?RtdqS zv0Tsm;xuv{(w!=jslOyjH-9yI;wT)88sf7Grh_dml!k) z(3bLv763m~%tWQBuE{h0SQhFoW+F4)J5mm+5&WPjgf7sFKt|x7&3;3P6 z0heG2vuow5brUB`w7q`3gE0n*KzvEbS-e5T#38D!46pQCzPIoH_t&CJpcs8mf#rk9 zLp@{ZO-`1mDqMez_64^S)X z^_*$^UGq4~?KBVuof{6nf?#NtuOvSuCC(Q1om`qij@9u*H;&)Nvrc{2mbh z<{gl4Toy%N48ANlm}vT}|50)?FnG=<(b_e6PWeBBpESV8f8zH9R>5CzrOPxNFLy%Z z8a7`w@}RsPaZ6Xy4nKz83A)eyhPR>}0c%=2-0K%8&G53ixzOPn2vqCImbYpkdsQ1c zMP7qbe%yUL{`xd)lTThgcQ)c}8g;nyjLt&-_^FfToI~SI6y)ZUQn&Sq{{z>&cR8`*|_g)a`1zN%?WuA0Zc&y!qbV;nAwTu{6L$^R>?c9n?Z$oXcV%}9B1KXwFvFv`j^RL{+Xj~-F z%BQVGiDh7BZU2?nlX``9DOiM1M?!HyVzs{;$2Q-G`Hp8BxV<1bD5Wf_Ktd6 zkO^}T)=gP|Znc5@FcmKyZAU5<(}@&%p1*p~OedEf#fDvz>T2@h&+#lmLJkcqaBhC% zSss0mbTM_)cSeb4l^Z=uGdxkCGB?~Mk0Y+`tefpQx^SYj*WU@*-u_#Pu>hF zeo!-OL?WoMkXsnq#Ud{Z2+~J3C|TOLyNoGwp54Xyd-D&ZZAN4woLbxE^NT zu%v$1_R9=uCc)e6c+bD9C_jAhP7~YyE2Uc?j-~z?Eil`SdS24&SFyl}CVMHn(c=}2 zmXBhKB;JkZgMu{f3g&p-icozDP8F0getGpsr^)lxd^sn(VPIL0BQ~d+&yY3ieV83k z=X_edWx?t{u@7j(a1mc{%++t z;pNz#8$+nJ1%Tbwu20Z#M`}B?5ct!MUa?hxUGdQBaBD`_`vyx;g+5_($_fWxu5n6l zOE|U+(xG^%<@-0Hm_@3YyxBhmlQqab%m34L#s(nVt{>gi<`-G7%iNeDZ2haD=DA*) zy8|ST*(x}bg+KaxY(Q}*W}hm*oc#u5Rg;7NZU!kM7H27pEL7`V@qb{J14S3uJ8G9Z zgvb$#0IN1vqq`&kKKm z#m#Sg@%RaVaSjEqFiLnt*Iki^QF@d0AgM?sp*EkSKssxkaj17}c?M~^kIoW~Fo|}f z-r{?K*Umi79Hx!R4P}aNz34tZwEWu9v#yCdZMqKSsN~1Hpf;M`ibf|3XsLiLL>e!= z(8$6KPQE`&7KAB94BIgwN>BZ5SC)~5R%zdq@Z~8e&XW~8z5S=#rs5`BnmbWGu*b=d z_LdP;LgAay@lSyB)_b2KhHF$z6T_F(@PyVW_I|bu^P+d`R%Nvl-jdyWQfZn^kL+v~Iw&XJS%>*swXF z+Rm{2z?m9+rs<)y^v!Tyi9{EJ?pEY6OPOe4`{8Mu6(5lsD2RnsEr73UQ75{%7K9CH z2hBmJ{sm4Xv@Kr*e!pPaRY2r64JmT&>Y&fm5sPV_61)eLuMXHe!G#-}LIX}T%+l}g z*mkk9)H1=|w!kO{r|ylBQ0FuvwNm6936Lwo1>PYYH#a+1>Fp4t-ZlOamNvGVM)9M%lzjamL$Vfr(76%ncm0>t+2c_w zGNaugw~XflM^m)IXSs*G-vw7v8suB^0-xESgQC3U*V1_v?!E94f#ZS%_JSx*Unl@2G98WM z`&Z~fl&0O-N%f_X@>bkS-H*(}SomfYq zM1I#((8VJL!>;xq=zrGkzXA26n|?kXQB}poAKe$`$qk>`BTZBLiq|jk$GiGABiYFrpbI`Kqi4lE3upqpU35h z{tm6M3T5N89TA3J)E&S3MHADLHu9ILEXga7S=eUZ4e8o!c?noDtO&eMD@y_{#J3F~ z2Y={2AI+y7g&w9#L$&U!rY4?A|I}u4(q^$z{)>cEwLQerhcuGMCP18p(6x9< zEUl+eq76|{Yt@^4LlrZaB-tJVAD{Vj5(^i%f)LTWl8D52aA(`)D?rR`%Q13y!D1`=(jT0Ivz2GYa&s~O7SU5OJ+2ShHhbN$y9nK1W4f(y<8|gthWqe~t0**1(oB2M_IH zy0!?^uv_4V3h@0Yx!{hMrreTl6V1e0JcZIZ+rI~bf6Vw^j$0aAb|=WUS%^CLfW813 znytK`+~W3}HINVi1bO)MlA4wu7(1Z_>b8g;H7=orjFv64$v@u<~kB>wB z8xKY5y#v3!6q`VaTe5GL{(kw%Kp%lW2E;9XOygFeM<2kACxe8<@>U`^{hj>PTT@Bl zt>=50q7Fmg?;scrFRp$29z-vSO?)9hH|kgL!amPEHORZrP?ojB zCwW-#IADbR_E^Z`RO&Fd*70+Ck$9hD6OZMoEf#XjGMcZQbc{w|I-I*#$6&HEYUJG5nW#CzO0v^)nW#LxZy7mV>i~s-15IBSjk=!~0$3ol_ zege;LMIH=a7vWqspn!JNnRdcFKHpngaDH$d@bu`yf9SUcPri5CXwc>6^b)}8BkjtItDPcq_Nu7(X zY=4b~hJI+M;r%pPZnNnZ8DGt!JEMKUL{B>V$RL7O7Ww%+&WBJ(M({e4a|SIl=+InM z(GEY*Fa9*qwcpJwyE*cGbXET;#bX+iG)2*v`;YgHu-3Ty7xSvI<2@y&!|&^4q8w%{ zlGsecwji%`>io-ynV2&ai~3B-RAzt7D@a}LuaLOt0y2JR7ZLQ|-AJG-Z&G^BYV&;5 zaLbJM*Wv3N(Qmji0jJBI2F347Lkd_Td}oX+ysYX?e=E*5S3m8dAX2ftGr_L?o8T2C z#Y9_KI_?_Y2eu`nN~LX^9hff|r8)DW4TzdY4MBCMJ+s5^msk;Fn|3Pi4FoCK>`;DO zo4n|B3QPGiYT{L-g@&EqC3M>>jWJBA!VWfTbuT9!_d)2LEESFymszLwr+dS5uo}wkCe`g&+ zV3gTxXVMT9VR}*Im+a}8D4L$z^|l=itJtSa!ZcnRbV#e!_#%H0aqZTB$e(d1nTxiVLpyF;Lq@`)Uq#25%cpydKREkz?r%9EE@}X^m_Zi#YN`9iUKT<%RQm>7St&t z!E&u&V`v-;B-4Df?S5I^KfMe)oX$7Y1R#s8zc&3(MP3UkhCOmQy@3qQ4)OOldXB-8 z?lji@*}uQx?0W{(W`YXxigA9#*U&)%m<}@ZuB^V*y3ThfwsN&GS{Zb*xFU(W^g{v# zjr;uqzIM{&J1L+J@I7kP3ma{w{81HHdp!cTOsjes_b|DEs z9C$aMDp&CY}W5S^swHxrQPWrdK=yPb=d3^HPTnHQe;KjiXN3 z+{*#_Bu2O5#dG!6AF~eLD6Jlu6*Z6JsNq@%^op=d+v2))xH2Ce2F5@Xyce@9nW3@P z_TlC+;{6rUNh@U`-sCOJz>f|=9>v<-7~ye6Z)5{@RVt(Hc3thr9sYc}Tl$FA4r>Q9{@ zP;Xb>zZ#7H8JQ|=j~x$>BtmXugB;!04z1@Ddz=dHu0rxr?=&y!bTZ)e+Y1`c&$I2! z`>I@4{5^Rn$3uUxoRkG?*;?yr7`$q;R%;(udfiB2TvI{GHtGL>9%<1MK=d;wDFL+s z>#K9E3pbs5n5YQo`^cmPpsN=2pAVf;wBkNrWjzt4>>1_I%Bgs`(Iw`{s=3AucIhqG zzo|Bv4W=jwSpH`#t-t90b;MKN-Y;I9E$3E-3eAR3{z(~~ha0I#*!Ls3wH*58#KtN99%{XLMq>=#X5WLi#|v%w3gpeD=a zE#HO7gzKhjmqp!{#lug9^uk~ zwEd-C(=J-X;USm#gc{sc;wK~J zP-Hb1IOqx8I!jwbMS`^Cj3(a%wIj6%vUp^z$4H{QNPC8t8Ecz}* z?!8<47~KxucFe9K?ZrZPr5_h~*OWpR(Md8ZkrSH9Hdic?P}*R1z1Ot{p2@Xe#})7e zqRVKRpgb8sHOT@E)57v8+!OxlYXdsoY`ZA88q9o;83xodZrAwy*S?wH(I)Wfzy|`p zjKLN({+pfg4|cx#=jABmL0{-w3wtOK-ISFh?TLD(7~o00-*f$ZL1M!IW|jg3@H>U@ z288$es2gkrAg%%TK0(Cx<0m!SBHxg;ZP{|I$5$%KLzj-2Z;UPuYataWN960(pY zvcckl1qp+sTC+B@(LP2RIMp~{Su1L=^E1WoFXU$llA_)HJy&QFZ)_4BfKlK|>l8@$ z@VEK%d=F!o9G3_bw=MZgc(Akcv1{tZ5~4&@Ky1Ai|8N%Ex&eLdN4NsQAyhG;CTXQp zrt|A2L4rINJ53)qiu1ZsILR4_-lg5L1TA*kDCLrTe1CW&p8Gm;ev>h3@=^ZxXxS%V zZ|BwdPrqoh48!XihV^yT<6)_Z@$ItMT-g!G9+2#(38B5F zw^Y!r_XVi%9a$_kC}paQoGF@uez&ygwr zjvg}~l5#i+Kiy_l^NBpP#AW*P^tzG|MSW-}smP1w63Uh_Ep8Uy=RBU}a#+$dBE?6J z&s-zWE>E+0zRrP}`+KOc>Jn|aiKF8e<(Ks@+<54vG3`*HXZNwBb%%ex3e`F4FLe}d zFg88{-nUaOCt_Wbqp{suR@m|#}b@~`S$EGanpTbe}k4rK4Yf*7xW|l#MgVS8*njsat1s>T;o83yuH`s?EGtwK(@gDXYp-(E0I->FddLagP zo+|4GU_wmT25iU629_93XJ1x`*wBAk1<(3ByTNM$B%8g*uiAK?+y{0dgz(mjKO|{@ z&o)!vat^fHa#v6;-uD>rQ^7C&*9zb|EZvOnpZZCFMc%6g1O*`b;vJVwGcvCrw9sq& z3qwivn|493POrOnziYy0-k?+XL_C+mbh<|Dcc)nJQ2ogjr}S?#J47_f6TG{mWlzqDA7(roHs4)i4n^(2pSnlyzAa+-y_LlpP1}}u5 z=y`hz?d8%eLJmR1*QtR5Gy-cD-~A=?d08_c<}&g4r3dx(rtRayq^<@tHVyN;ul~+T zZ@9;BVylbVY-&v0Gv_eU4pQ9s6%@RPiY4Az*+kSh+0I_>9UgV2@0 zlbBvdtdR7UZ$Q|MBuc2NT>9}{mOx9!C zcU4w@=0lvy>|4PP|FL@*$`Ob}jwf?F@0pg41_4APxt38L;8N=q#0?JRAwL?A0v7-S z(eTXB%qZY{NaY8^)=M}oFeJ3CF;?EuonGkS*Am22X^Fh(Wy-&}-Ub?kXn|$u(cE`Q zmOq&r`t%g}TgDUG>tKeV&{;+*@54nM7&x{J3*M#|@^(Z@B|?2|1f>t#-ZmNCOu6s+ z`Xd3zTB^+wiXMO>AsKIL(9ok#M_&QB#Ud#I(I;Lne~vt7Lel}%82{kS;h-Q4pleMU>_=n4QU}^~)=2_9X{w@CWhE#IG{9nlThB@JeK%4Nw%5(0wWjl^* z)xQ76+5w_uoO(W8`sx?2XPeB30bl31g2&r_ore|EX2jysoev~fcC`OCAALY(kQma4 zQYS6?zM@Nc5>g7(s5xC&{jRkAnLA%#krfOIu%jOce9T}>6927eQ7GK`$i}Pi_9hO+ zOSlkBKRGXcCF;wpD5%AJv7F>G_(Z&tZYEFdcxa}1m0#F7PI&TJdhoA=pyt!YXKVUY zM^d>j=qC*Ah2&Zx%7_!4ssgnzH62>YX|EYkPO|0NiA{KLnKdidStPLY zAGXrE5Bz2YG#kV{6a&ckyh_+)O*v4PjRa;&6ozC8^$GdE)po@NxCbcRp4q6oock}yZ7et zQYd&Es*u*SYDsa z-t-p-$xrFeIzy)vTz%I6nin+x4ID%P&C6D(r>kC0%U=)V_gf@B6#J%*N-WTC$XnP2 z)$oc<;1q9d!WJZAU&;MLktV^9nKwQhksk?@>O)@sF-R(O_dU z`$2a3haHa8pzvYMjpc$TIUkN>Zj8wG-v1rT5bs?HRCV*ZSunU90SnEa6ZkYF@uQ!{ z{%zi@1S#I@RAbz3n5B;y?TKiOyLyd!5wTLD<^cAqN$Kuaip<~1;USWx>R*WmgHxmD z$_^U-#!2F9;e)FFLuI(B`#c0-9?8*G0zr%o#)7w005>!nxosp#mLY*GK!zIzs_l4y zldd;b(4+p1^QI1rUDW`jpS<4txD_Py+Islg1GCp>UoQc*a!#=5*FSP4IKH5IH}R3{ zU2lcgG%|Qw4BDX|DV2`}6IKCv9ySZwR7b^|C!7O}NYG8whB2&HbPG1L_u&kZ*ogwt z(+*7L+mGRyC0{qlG{kh{WzXp?un6q2EItDuC9zF$gk9F6!2~KihGKN~;|MOD8Isp( z$sN*CwxQkSGC~%~fS0wPA8P%C0tiP(fd|#LY_R);)2o=Fl0l%k9rWLP*8s2%6iPMG z2JHwun9{x~?47Uch3A8OFMu7>C?F+c@7sZE(sDeI1>67f;gaYe&G@Ui&9@&*3SLAnTclYp-{i^PY&Q;^w8OpO2gBtW7n*%Oe zGw2M4-Jnyq70kxDqX~b23WV4*%(bnavGGF`D+pIzQbw1?DBJ`mBoRGxYsq~67GaXq zo-!1kG^=UDpFyX4+1YOxUtI0ovRHKGg3E=@g)(kAync0)zuGa0JS7vD4On80Io_gq#vFz?L5B~@5Hx9$L+9e>ue8HlLlHn$t120SfAhQ zVwvtS2qm@Cr(&QxL6rb1NPBM*9C849mwEt9kEaf%5^|;ZbinFCIZzlH2|?-(q-b5Q z906;=tLW9uYqewVI^Dn@n9+^&LqB8hH3gitx7atiGyQMS4kc`D(eJNX332&TNjS>V z_p@Rd45U*A+~HMqTaWK>=cqkyqdfcd?9*5}YC!PI;&{pGWI+zayad{ntMu18ICvEZ zq-NBQXclp-)}0qygF0%YFo?IeNb&Gri}`)Ri2b_S8syktT8pKL+fW<;uOkAMJ5qmU zBrD{C)WBma97MJbqm5TzrXQcc!}aLg53q z=JNw|vb0#Y-WMsNiwt}!(tU1*+GxOTU5>DOUbkqPSLu+gl`1v(j)?k|3;wxgNG%#& zmw(-Xx`^$NkYCg8$P-tpVbwf*<5u%1P6K% zD`|cclcEkf2&morjMkFzTe`Kk!7kw@>lHNzjrzIMO8maKi z*vMHt^r*ne+n7ASo3*>3jJ2TC=m=dZ!0-1Ko21aS3MG-18=k59?l=nV1N#1LEvsZl zEJ4?ShKz=J!DwC95(v=+&iu!s78VqAsM!=^tWSvbKwEKF5=a7K<2A}&_6|1JZB7dqyUba=Y3lZIlfmP5uG+&Ikz*uso%H@TzBZGxjiyp z1*Ohf{C?M?>kcv+RmnXy?m9|i_)rakz@UeJ3>1ElzJ2M9yZ0p_?>ff?Vx;HN5+v6s zH8&T4GI{_&SW3-sYIhM{eDkY4)Rd`*KCLLnBrB^+)y!g?r3lBR!$1hk&}oMUzjLXN zO}(UzfjieO=1m#zuqzKO&HBufJl61Gxn~b+Ejp4a$64++tF+u?01#D@MCGo*Zyp|9 zh8RDh5qnC%%eLJ{!SbGGh4p^FH_>Xm`EF!#P(PEiN0_fs?4va6TQSv`znWsUI3N0^ zo#vB87d*94!~MihSZ{7^_1PU%Mzkg#e1skcZpVS_At;C9pyLvYGoZhDwXxGw`kv)C zIf>7MDwAGLvfyom3_B8i&v(r!F?>1NH!iOU;$x6%EdfNsZk7iPP*C*m1w0!tn_zt+ z0Vr!?*k&J6?BdIf(6;SMngIgy(egBX1fkT&d$6PnJ^#I7xA`Lw0cFdMd_F_r+EhoIbP2`3eJ$ClJ6_Pp z*B>k>FGdJ|9WmYNnD^=G5)Vz^N`5oUtzm=DsGSVFC`mc~n_l((XY9|-zJo{rUl`*< zYB?KEo`s~IPr|IzxIX++ZnnmcSrz@4TT;ZjQS5AQ^HVw$?rWppD|5>Aqi|^42n$l#Bchq7sU;57Ej%-Myzu>ton&jv7S&-Ju0wnrCGFm&GQt zl)*|lUD=@O97HN5aKw?4cH@ztkH&y&8yIE&DT=P+!XTPh{pawZRXOE1XFPb8xV(sb zCuZ+h_3Wl9IX8)*C#`g@&bDLv9}6~Q6R9~-6WKx6wt5k=mJz) zsswo5WkYijpkIt%jHs|lS*Y#N`6|5%TjD~)%Pu0Jv+C5GPqi%ESj%h3#D9tNK6-~n zKGlB_wq71MrkGgB80au$sOeaq7mI6R$Za}ifjBObcIDx74TJvl{HC4$o;#s*Y=d7@ zMXkR2fmUx-xQ3ow5!Pq#3oab#i{os@)n)w{DS)+`i|(^tpZUi1zf*u#R)85?ls0Lx z_)?!IozUS~{ImYqnxK*P0+Kw$F4`~so^rz8^D`QaDk_eb=3UIydL#jog1V;`eRbCL zhtM_1xWQ=;?9ZQ2fXO4M&hgu{y{TtqMt6l(w3T$Oc{Ae3`+9B{N&##GJBMPYbsj!2 z$UN<7^Lich*DQc#ej<(D~!-WORC zOw;-+-@RHr*VkFa@kB&H)CFmKB2Y-p&(^V#1>#TAN2z3L}K z89*rgW=r7lHxH_X&NfH85ts}Rje=<1sqD;U^6^EPp@H>y>$p0n_pryyW;;T+;tr>c zmr&6Bcfk}CgzU*Uij3eI6E%^-iLdU|gpR^;zJL4M)v8cArpg>S~guxe5GE z`RCm!2y{LOTQzh$vz7}_gy(8K{9Lv-EVOx54cx_h=%h;s+Oh~?3-H6C*9VmZwX6P( z16%n>U`I{0?X`*0G@P}2nY1cIPkb2pF4SbhkyEb9-Duj-MM7EjR|cZsr}!!e-N@bLdpC7ybieI?>F#+_DqIO=f?W6GUBObN8Ip zB|6uiE~EwD9L7cqcpK{m=k#(yeVnc+I|v#)I>!<3Ik5%q{!{D4ek6j-Q|@_A;XG`L z3I|>T%V@vJ!4navfnLUK&)Mr^%i-Ud2HDpoTHo^G;EN8k97HRTITbB+gf%V za-n=oof!Em+m8D_Oa#QEq9zZ%ImFvJz_(^scJ;)lxj5{@Kk9(rg3D-S(oFTz6%>U3 z1$)7;a(2+kvSmx&a+A}P$MxsmN*>rd8GxiQE2s+zZQJ%Z%k)2)FaH^2|xy%KM99rxx^)L(Y4b&7qJ0Yu>p%4LO5XO$daSO z=??`SF20AC8Pw)>X^}1U9{8gFRXy6&$wwv11&?TB#0k&_P1|&J_tJwl%;D7RXNCq@ z4T1%gRxdo<2Xk`*d>yCVu^ey=G4ROz5d&5{!lvEfz#DDco7#}gZ z`$=x6VV+j4W~wjaU{Chy={IFfLlR)F1&dtSOEl}%ejLdFns%Gd0ikdOiHFaf$=zJv z^79tRpLJDI;hHt8r;Q-QmC2W-qr5L5r!Sjrly%IP*Z&(-vy#5r9VGZx*Ej_#?wKxn z@}2Yo??5Z9g29t7Qa10(egv^UrIKAq!Tuvc_gu5@7XInmXMr}Z6aOU}@qPZR_k+Mi zusWB=$QLeD^s8Uamh=kooggAU zlKO>&J<|oN(hoJDU76=JT~q`l6%+Y_2B?A zzHFDDloK*wUvR?&$XW|`nwdqPgsAgwbHp4jpcA|nd>-itG%inegXkU!4JyWND=D2I z>s9D<Cab7}T+>7U%iU?s8GTEUP zEG)!&W%Q9a!Kn^7;posbNq4tYO})H2=Pp~ZKT-l4@*HQK_Wf=%x>NP7$^OB>97xpI z;G+|>ol^zm^D^6nGO~~ZZkJ|Ds-!oEoQj-K8lZh_UCz#cZA-AiEzU}&7NtNkX(lo= z(sW|Ov0YTaiSKld1^88jCF1KeE=u(E-ZX`LW7VI83{!&SNf${sg%-B>AlJZ_yPC5E zjmp?;5NMdkAS(!#rgiMBvfw_CslU;g50U=>(<&kgT*XbvDxM1um2QyyZUQyX)sk?` z$*J*}VX8^T;EGJU)p%s3lsvvq%kFDE8LqZ06DS$WQRJP7v7HV5>(crV3r_)#-1nbb z)@3_)zh6ZrDw?MvyBtJLfTPi^dxaKtSe+`0gZtVLw;P^394%3PRB%A4JY-DAA`b`*V#zqLF$9o7)!Bb8zC_d>1pA$p z%r_`qA$~b4FSl@NvNi*trb;7|UMZ)kJ*sQ5&ZF$^P#9|I+>W2|z2}#P3ovQJAKB~= zI69SP3}^vNcttw(`XSF)w^{`hjRWkfm)QKO!)Wf?o*Bq5+09n4!EfL+Y6X?srUyzm z*t4iwn80nAXY!q)D-On!e=JmmZAwu`m? zk2%s;Lt=1g$aHBW-cL1jJWtyw(uwF;!|2#kA6xzJ1F$F);bZ_Ad@;w8Yo755pbt8`s%^^(g+vI zA?jo>U)<|c4)kLI1E$y3pS-3a;#5*h@p68Jo`Y2%rX_879fEbc@{ftl=M^Dx^DOaN zFp2cE7ykrpw>qvv_DeD(dfXwF;8~5TAV5KSFV#}f%>4{P*;;G=Gz1^!MH_Eh z(-Dl(`55xNWP0{|hfiX?$4}z^`jsZc+w+~*Z~Uj8@3U(v`RVQ_w}*I@bmS2C0{I%0 zVuc*AZ=RDRG&ijr$mSENraO~h3yj~tg-b@JKl=>&@1NA4k*=JSscEPn@sR;eT{k>3n#&sS7djldy%Anox7q*<#U9Yzj+ruH3hi5nw5 zI!+yXiy&^@Gn2`pHu~ zz5ouzT?fzq!;b;1388(UsCMROO^cclRl65>gLr4_%{hukAws}Yn*BiDi9)avgltDBTD*X3CgWxuYzs{c^SR1Y`?ggg7o^CdPmiCLuTM_8{S4h{OQK*!7}! zG3y{YpvmIN!2PJ;7;$DPoAQaz{4T-MieXA+O8qr{NAcfaj=tgLP#yf0_Yp*V* zV107H)p$?msXYEOtXy>}=d0Wm&;>dZSK-mot331{p`g$x&J9WOv^l|N^sITmDCl|f z2Tzn@I+s~KvZFB3b^7NvC*Tk7gmv%ltT;&;0&Chq?6 zGu8iWUvc6r^y$YmlNSTqzjuX?M+3AobssbC&y&+3i|hUICxZ@3np+tqJG8CX>0lx*W>Sxx6g0gKc1==P8SAhm409#jQ z8ihT(;A#rO)+r-IivI$!C8F$8Mef{U=5hoF=22Nh-+qmt+9Crb zH=sHA(x6P4|LAUFC2oJWUv>(C=Xg)niu^Zuq|d!TaTSmay*WC2VzxBpVnyl31b4(5 z&}+IEb%%XCy>$4_P~-g7Rs`(7klud}XZk91sk)#^nIiMjcf6{I>%T@aT!(-a{VH2W zcN3^*l9I)Y)bvE=1WXrjs(&kaV-}6P<+I=Z3M+)?E8Rywi9RgQD!Tu>0S!YzuG2eN z2nU(&fTuqkRAq?_r=TZ=1HYZDM?@Ey0K;V29(fe_qh-XbFy7E9nsFAlF8^J!BHl)( z%2(BT|M|pC^Djqi$%O0sCHYb&iPw%1W9pS8HJEodDeWIkG5(gpe*a0zca^fM+U0`e zwRdXwoMV8m6D}^b!^Y!(5i5Od=vHm5vcjd~XbKwd+hvwR&@a^t;fb62i;G$lUo?9y zi1#k4dccnDgtmgNFSKp5%1!!)a-i7cS4LRgfp?g+H1Cn4n{L4H;m77*>hv(5`I?u1 zx0!*3jZCpOxr;D|k1r$m1c7R@wRJ!E;e=kxC+_P0en(N-sWn#QrGQkXV%X8d80opW z`@Xs{Dlz?*D6c4XyUm+DJQqkZ{bKY{h*$*k@?QI_eim?C>}YiboPIBA`R!Uapgjd- zrKT$088?281rn9?O*1b|@i3cD{cChs%ST39k2LAv&>v09y239R#<9#18 z6Tgxw5LUT|#~5D1au5y?g05>qCQ%SpjySF>n@VFiQ4}D#Y`?P8z`sB5F|;$;JqmbFg{-ya@g6j_A%XtXE^@p@yPalIcj;(qtHgCYstc@=WOt1exyrRU z)u)uQMARbILwUKmRTlT3K2w)a7#6I}psOc&8%y`)w&2~i#DWrOC5~710*0k%hp4*? zfkDWeofgcGxa9{FAm?tP*L#ki;1hGhb~vlu1$6(FB(XAhic9#BJi6#G?^~9 z(y*{~-c2@uY=n(|#l2dr!#x&)Y@)yrvoD}3{<&f)2KihL^9Xl)L;tEbe#&QCP314uh8W4Q?QOthUpN+@)GInY!|%>6q26eD#y7L5`Vyy>@&w9 zcM5G`O6a#?jlh^jRIVatZPZLJn3P*vl&>G;{+{Kt{=EE!VFi|fuN!>c?0>skj_(ZV zS{>vbp@&4a-QJq&UWvHjKsY&XV{2q>K$+z&DA>%OHphN~i8e^ltseO>gyOU3AuKS_ zHT9ma>ouV4-t^3WuGu2&#%}EQgXXQ!r-s%&m%5L1-J~y6-<$_BN;%$?&yoU{^X*y9 z5@XAEBwsarHXg5F9I46MhZ|-N>0RFpAg|YoUYuDp6R2xWZT~e%WVVqSM30W$314m6 zwWyG5ct1DR*k#U!Cth~<`j3e*RJ>n@L|^!yoL|9wK^LseDnSQz91Is$2VVP73G-b=)||LEjkxQuZhoKe zE!{`0T$gb-xeIcDnvP4pxgUO)o}AV!O>Ja!E~gAg5p+wn&NK-d6~VT8YQNgONGIpz zu)%JC4PJl#xZ;ln#(^?-IjkoBF#g90!)Sny2mOMD3!cG%Xvi&Wk!4!F8-Bedyzqt2 z!Tax~>;xijOu<0J7=NrfdbvFSg*TmJeiQQ@eX&&JEoZy+iSgq3;Y0e;ZCK_=d#DNi zAI;k(NZS4|{wP?Arx|mOECCu4PI<%b!*l*T3z@??vj5S!QWxZ~xl&TObk4=_%DfBY zcg@0g9M^kVsvZo?A;z|I?hd3t88VhXh>FSCT?1X=0ySR_;Y0lAFJx0$MV2Cxf47;o{UO;rx2QWh%j7SUj-o+PxB6czqWkCd0$$3UD^)^4F!=bUJ<&?_QRs0*)on)O1+U5h$9mecD-24QAgj|`oFe9GUS{*r`04&z`q0H%f zl^pcsP!=*56Ngzj9=?WKBHir7R=p=vUZ}HPOTAkLN2W|^1&ej6&RLJtoks~)cWXvi z4Rx`Q>mx9u${Tmt=I73}`nL#zvLe2IR`T4+90Rx82Usz@7;Y|-k3jQ^TL<;S%@1Ba zobo3S_gdy|6j+8G1E09@xzGK5X)sFLe9V5f@yI4tJTy4t3L(vO#3dU1qW@ieA2C!3 zJyRu{;l3_^lD6VMOj&zk%v~iKP}X>Cbe{winG;Tv?8kQ?yQ~iVwP~RKBy4Dvp(zRj zYQA<jRFj#(gnt=9%WB;GF)TnKdcL)>XT9 z9LP0&*B>@*(sgmDF52}WRN8G0hxRpPF#S<%u&C;In%snl<0UR-dbc5LVT=b$FDM;j zvcZ>E%)rI#7dJoGo=+QP`L?l#b#Tshoxx8e#~0Sxnq2^`>_qTqovt*mdqT=+8 zIdQj9dcVB|)F|8(7mTnCpSahtP1LKW9^+a!?kjQ6`&lf#Za!u&bZr4or5w)wi2sy% zZsMi1SbQ#EKZSE0C^(r>rI6b{Rz)O2tMO3RJS?=u63;8kL*lDSG$HQO4vap;0hww)`$e&2=*W_L=3YX&Md$giwBUL6&5!G7xM> z>0zUmuuVgit}%;7gFReiOikN5#C3o3swr(dHKo$-P&IU>lvGExm;^@RLbYMd)>+Bw z`vDC|jju}Y`nhDV%+4x2!H93?vM%YSs0qE&2~%M zWHhQB{UBU0o8P zvAUPC=7QsPyEbi%4K~ffmQNl^ohWOr5sJ;Y3^EP1Y0Y!$>mXIWgqD@OvA^h^H;*;E z5SZiedxjBG6}a7mm+#e4gW$>~8|}$f1+J*jF6`P5BX^Qk>|V~jWF-mXA@l^#s=4-g z)S~)TuoVVrGF0knM!d&lfdc%vpVMg5p-bdK3b*%BVNYP;KWd-bv*{^qFHpO z8tDua4_`)HT1)gPDRO!-Yz&lkfyz9-wDu$WR19ccG zRh<_jgq3`=VaQ=FMCfqKzI9fC>H|i2TMy^VheGxwO2?L+^IUPTjTrIzhidiB4Qzb1 z?bS^;OF&j=e?a|{>s{5#DlIWDpxrTWBpwTfZHc(}nTKybKNClMc;Dr@7G7TdkIMYD(>sNhcw7IRzg{1^jL%71B?Ei`QvWKIUi%MYn@}vY z;~U&xil~VtGYOOXbieh|{(177)#)vBiSY=02wsp*I)70zE^g%Rr&kQ#y@vc<0<5wq zKYH!Wh$x2h$i46JdG8#DC-2q@6$zIt^O^0#rqgd3*6RM{TJ5R zwfgPFcwKV7$`6{`^|JvG0so<6srapLgz4;!&5w zD`i!T_&;7;Pr0-rK8hI-wpXP$tbV5+X5%tdh9^(yzJK_tiLC2gu-rHc)cb*V&9yb~ zFIB54n8{%~!-O7If1}QUoH5^3dJwEH@D#;zH*@Z*ci21{J;wBI&tP@jxIKw|5u-_3 zVRnAJ;r0Y<8;61G{uurvD-3R#N!qEW zuU57Q+2J_X0WOK9!JFf=g&5y@TM|-?f=d>UJ8n?;zukh3uRp$9NoABt zqa@qE3q4kLhE^DVd4fmChYtFkKn7qMpDlh(Jijv}c{Ixg!~z4xUT;2k;}TDm{5v!J zza$gi&5qw*ob5$Tz{~=`)ktrI@g%8ss z){nc4^|}1hkpc6f0Dwe&cFL8&vH}iV>WMJ-T0zSL6J%VNCX$Iy$-l|r{MW(f`At#z zgHT}7>8t{IydmdKFms8nx14?CHb8f7E2gZ1&23O2T?CXT)7p(B7P9&1WDtm|mPay) zh-?k_2z4n1hT){B%wZJx60?ciueSabBe zK8r|wSZN2xACBo%m)pC+U!H$DNu7kLaCH3Fh0fZ(i!tuWu#}yLDK5O*3xnKTa@VvC z(gkrA$-m#u5F)5i3)&d?Z_Q3nW?!C6Qu(KQ|( z#{Dzux!SYCzjzJdKTv1*uJ;4E&8?~JDLms3?SrYP%#0p1G#;x2xBaaBC;;!|?=KL! zK2pBbQyOr0ubLi2@Avv7&X8t~=lr0X{AWBn6?^#jAU6k1S(?KrDgZ<$za-TTHu4I} z@S}w51@Z`Kyi1J%+&Mp7cY?NpK2zfsfA~#e6k^Nxe9FsZOl5}d(abrMSkSgb9slg^ zTQE&MI>6S@ZOgLKRgERFH0bq0&hKxr@E7b0i?){nZj?@5r|gTYeft$((}rsZ5~s0_gu6>O;GE3aVSwLHjo|8UZ8lm#H%)JneIwUx!HIEA@?TO z?jiCj@xXoC?a#0PyNFK%-QJB%xjqZB*CE3W3ljJi_5rFs*b!N#2IJ-AzGQoT_$`N_ z$U_TUF>kr)CzWuK&r*mER5c|Pa3ytR=u$@Wt$pn#^Z*{ZU(HP*6q0zrckt%&x2m34UY5gK#jaSQOsN&msl3FT6@8tUD`T1j7HcE51S z>Yk>!IBZ>8a|rg2KOltPhm?&KF`W2pA2!%lN`KmS6-S{RK-z{54O=>ASTCLm2u@xH zsC^>xJvi{NkZds1HS^35UQ5j0<2E1*H<VkL7qL%({`)(wX)w%j@CNDWsQ$OWSq=y)xeurf8!DLC!4r;snYmKdicMWdgOG5&o(xjUD@X>& zjL?3N<`g%xZi;nhfd3W^LDRv8$}0yh)DN8LHDAO^?wiKPG66m_+!27P?7;D`ecw)?m!6ZxOp@TC`QARNSLaSc4wfRgU#&V`xkd(-rzF)RM_+?p3VY zW=okIex3wrDtFx?y>1i}qi`ssh=K?Ync+g=Aj=a52K{)5<4o_Zs((IbfOdz;x28zD zRl*ctUupJuwKiLfO+(1gk~zE{Ox?{ZRH4p9t{-p_q&X`VUDJ;OqaL&mop;ARnL=Saw@r&#XGV8Cu|CDiOd=|+y%WUrnoBk&-)o|gSDb3*zx0A} zBmEX48beR|AQQHVa3TD}_>AuwnCg+4*M}5#*KQm9S2%%r3sq=gt8{e3WIY8EAo(2* zf1X+xwPK(zeoKO9unMi9T~Jp;n8zqJhZ9W&BxTbkuExix>8CG9DRW~L(@sd=O+>pQ zoX*AgY0R2a&gDJ~#F#fXbt?C)D9v~U^?^=0$U}c%MDP1C(%KPl<1O==N6)vPYoE&z z#-rh8r9Z@G9Vd`c+v&AWo(T8GsIeEaCU|JVzX9MPyXzCA?+B?t-#C>x`@JLvSbN9g zK8L$Qj z=ihHhVWrs~a8CmIFu)afH%uQ~Tzi|Bh8o`HG$v;RNd|;?Q1UDtyr9|5$;07M|M&>_B;#TS1mPb~4QTL28~h9zYoJiS7Cp;7@`i7_2t<18+P)h7rB zKqT-m@cic>vgu&_ClhYI^xyL#j!LNK;k^ZJ+X;s|-!AoKwt{cg1M>|rZ!=XitP9bN z%ia4{)!`lP61inCsC>uBh+TFo;!aI8*5QCjI>*&L@J~d0dXkdzCxi!c(C5wB26I*q zQu{lCOkH42lH=`5=eiK`c`C>Lg13^Pk?hl>?L~i#ek}N%cVCPpDEjVtM@3Z&7P$9W z&p*8R74RsH*@#x|0xeGUn$Df_N8I81O05%{m&Co5*&lyBjLs)Gj)QsO3i|4LUU>9a zGNHVt??jT;hC_AF0K<^eG30*PIw6N8{Umy5Xfcj;$4IhwBEqjk{2|p%>mTM)u2QzY za3(xnq;}NJ-)8NTlUN-QerE zA7H-_%&xU2Ac=u|Mufcj5?a5>QRC3`g2EuIVUr2iHPBC92T8~6_#Vyd%NS6CDT2GM z(Mj#U?=51gpR`;+(QduVmlZ9ey+F{r^x~eI!JnW-UIc=3xwFu4Hf%P{H}xuW#jxCA z=s?uDgXV%8FvCMupi9|pPt>d)(@4fx2vUz#!>S$lapJ$vy~M0&{^eqm02swK!U3J_ zo!dkuS@*H3e)Dv-x=E>O9Rde2h3>~L_XN{*U3Z`Y*6S8{;{CCGI61w#i`MZWg7jov3+P}r6&AKW)LV0KLe<>3zjcOd z!BSYymcidj_#LyDyz3i-s_Kw_nrxzikkv(E7YSeZodQ)Qp(Q*BQt7}Flp+JM>P{nP z!J`ba%*3ud!3NP%Ja&)wQPCCe&aZ|P!iQF8)YH^@-aL~Q%5f>=eZJ{DNw3tg3Q5jJ z$(p%b4g-y6i;@oYgy&O0L>4uH0&=;Q71FqQLqV>P_U?_7T%eg-ENoB_hYLZ~yH<#0 z*Pz_5L(k&6@>~bo4hI3_w3Arh<6yP!h0DH6f??7Uhc&Icih;}?kMf2khpZjBQ~BI< zdJY$GZOBMldb+m92hKk>SmCJ7JX$8}UN>;A-91B|@*N|fa&$l+{St*`>=GBU*|=52 zq|=zbQaNi@Ns>yMH{#-`S^lpaUzcdnj%@n1irCa~k3a`Zc7^MvYx|8yYi0%de&sYJ zU(wDUiY$rCf_y{UkcCl6d-DalH3363B()&Wo+SLqC6)GPU`qzObaYy}ZbNQ1-=vXH z(H;V-iF5Xjd-g^F-nSy-U5tfG`}oRs5|i~jB}1?cMPOUwgiPV*n>U|R2tzy`TyKimKb@Itg3gDOsNTn&O4bQgP=`SHk zf0pI0YHWu`He}%-?%vu(050^0s3t2#x%G`&`Xd7I^FcIh57`ULH0{8wsjTFfncfky zhjg@@T+p57S36r##Z}vkMm&Uqm|_8EY;cba`FiO@7r5&pOAW$zNq~NWjmaCjA8$fE^&1@i044qq>_WMe4(pJJGXYY!GFfIvqNDVrdT24N+f;<$Een!UB4Ofg+H1 zDp@3pj&@xGaCw$bWPgtpcX-w}0bEQfN*2g%+h`f0x5mjbGRviKU=M);m=)%vvHB7V zml5ypyH1sc+O2aPDgbE=nFXI;R_w=u4%F$fG$Zon$G)c#`{{#{EPhq@B?4UGT4Cb` z(#YUaGn;w$9%K^tUb_IXNt#`-HPv3?gb)DaTaZhg>mHIGCn@O(l^#}5SPaRC-pUJp zi1)4ny-T5jL(m3f&ZjQ(&kkDZBs$k2SQ_lQk@Af9D)!_+7Ak#JvI>|oKF!ZX0sc1* zcwh!UH1gXxjul_q3Z}NG>!^kq3q!2ga#>Hs6D%@4PX2NYrxmq z^aUSm-(;WyxU*myy#bld&b6qx1-Bqbf|EE+7cQjq2jIj6T08t==8sJw(t@+-UY|NHLh5 zgrdCa#^bQ$Jj~dmkUTF){G3$QM4ZgDM)p_3%*^g=u94RE$61#;yz7uqB`<%twR6D7 zlCM)YsbEffl2d8W82To~DghhExwRVopq+~A@``=ioa7sLO8NnVreDE@+IG0C#@+LO zSMD&)!2%p!z2X)r!uWll`-RBMfbSh}ELkG=rzX;}p8cX7eEwx}Sn`1L(_f1y@5TMR zGHxa|DXxDGX(No2>`d$}I!GaW-$gNk$MBXImesS7sH5W9s!=r{A@tuK))>nvqF(VU z7O+Gl-#Do#x1>i6*4WJK#_6HLU0zP!+qp=*9(_dM=2V3~p6@W-XUH+Y*XGMMKNRvf zh?zgA9&eOr>~zCw8dW^WySV;1Mxtj{L)h@l-H?~x*I_P?)%Ljo6v3XU+osH}?IqW& zca+@iiuHf|n%fG}h%YkQQsg#2!Z=8+eOpctSZgBgI`7p)FmWV(c!r28+ni|Fx=+`DD!qR^%UQ1~`+o~}-U{`r)5A}jY>e(Zg;MLV6WX=5L5zvnG z5-`0V(f^ziIy00JdX01fc{MJ7Pt6|W*+4z@1A z6%!KPRP#f>^1EZqw^{bU+zAB0=u(Z%e*1`l=rQ_;IRcJZYT-U zbZN}#0yU_Q@`}8PG`b$WA9DaSm2`rJ$6q;9;&m+UziW7;$bui^5y6CU9Z!Y5BU`}) zis8W_BL_2MfF56d+Rh+LTxcexAblppvqit{9QMpYyJ$l!>^Qq*+F{V2(A0E#Z+R69 zTbo?t_>>l4#SZ|Yf{{W4 z_1}9aOu0<(pko5xxw-d&8CQLiuMp=*FR1A`TbaSU#du9MWMCo^)7*G1n00+1|H3Up z8s(0%_J4M>VDEP1hJ^|zrvitc5B2=2g3s}5d^{CT*$eWw(wuVTE;k_#SYupEX0;Oe z!vn*ieAlBqy#}!ELJ6a0F48%dduxsvXvUwcG6a)~J5OO@t|Z!{L{==a;%_XmQ0YiP ziV%xi|8=GRoN@#y=td&K=}37kf?XBY!{SM9j}jL|x!A_vdHAP@T=o;6*v>GEObgF| z<><^KD_ec|IVlI+G2Nx@PcL)#%V!drDR@y$V)B0+J7)^obB-)ikN(}fw@+}sG!n&^ zMLl_uxAvZo4dOyEqB@QrjyHe5@2P1y#!7tj&1wIy$KI!*H%Zkb2VqsV{>iu4=J-8S z951=QCVkv@H~uW4CM@+OdDgi|$NBB?QwX`E^5>6HKTt6fHI=UE)XL#xnG;dnBsSXn zAI(Q*9>!4>NF@ty?Gr~-eQi*M1vjT(^uOdhVY%v_M;Yr>u_$KruQLPdU(rs=1p&6IFh{62Jb|5c+M7EL96<7D`p0 z;4g}_a7KJIX^d0*fK}0ut1M2QaWYs1{mf5@05YGD+_!*e?c~3FKU_8YAs++P3~~A7 z(oF8Q2g)%tM-9mfDZKhGk>kv1{Y|{a3A54i1eO4+z&3FCSjgA*pZmacG>$3pnzI2{Fs|>uEf&7_VX;2rFNCNc;f>Gzig9O;Uh2DJ z-EU(R)X;J*%I<0S9nbSAQsZ&-YW0cx_1C2R=y^1sf#4e=VGZ3QxVjRaXB53*-yv`w510Gg_E$W}66|@9eV4#@ zEqfJiaT5)(COF)sxt_Gt@0b-H&}T+5zl^5*zTNSnrbtXApn0QzZ_3GisP?Ahv7mmJ z?4U9{r-DE*CsX7CJk%d8J%9$e$R5%s0}jv8)L#Xvl*WZhPk9H!xvRr-YU5GBY2Tjd zS=#_WD%#XPVElUZR0xa($l9uR$5%@lV!hN10 zL0-e@Q)>VZkTxWAUCURA0fYb{Y*Z8Ms(m;01kwX_r@?Qq!3zjQ08WW_gfo&V__g8#^?Liihtq>Rbgi zfd%7(cWRl1ZaZg8CIH^M#jZ)ulH$y;Aeo>gog^S(`0Ge-UV8%1$EZ;%wQ&0??N!JB zBrK_27NL`zLWfzUVh%{;8t|9jHOFkPl)NRIo`&W|2WeXdOA7DTD?@Bt*w@;jr$nd*_j#B)A`LkE_ zh4y!g^+Gcm7)ZzWbeWF2<^OfrzZ-e_`9t*qzvw)}TLRWF#0aY?dz+q7ErDsT^A_BYOQf~#j?C`9m_|aK zZ6w?WL3+gj@wxNw5Nf-ww>>2zsLwC->XlQ}@(Gk%@zZ#=>f)jos8FS{{&x0cuZ4M23b6(O{0*LcXF6HB?u4FEHr#weNkGB%<#3IQ}GGa#N z3GH1F;gxd!XNRoUN!40cx`Kn$6SC4>@}gvS>z@~a$#HF8yTU?Z<6-*PpDwsEk1wKMa4ik=Lk=`RrDZtu?e$e@4 z;vhXABjNDqH??4xmX@!D5cm%OZ=hCNV=-6J0q+w#nirZ3s81u4|HGMRN5px#}W6Qr0Iuj zb}K3==g@6z`UgTrUr^1Wt2|6U@!-FlN|$ON}1aJh6uBtxOB?j33n4Jup2v?KYL$TmBv9xjtYdeC9?JRYN19T^> zSW&$eJM`a`K7uh=9*x@oN|AOBZ_9R#X=ZsdCcUHJ9JEREKUn|3e~R~mJXWFR@Z4}o zY1y?x0phfzYsy$F*G@~xxHDjvp<&T9hhZ+P2qOG2>;y1H$}qXxa~B*|N2&i>ek=_x z&HJ+kbZ-FTk|GTJM~AHpD1a?t1>aM#1~}m%L$UG!b5fODQ&;46yC*5Ymz2Ys?lZDI zq4h!r!66Dk=|kdG(C?k3je^X{6mDka5y2a^c4?0~C(?31X(xeAU3~YT!_%Gy^Xy0d zzRZuz22>LB_$8D^3kBxe3LgBhGMT>h+WT+(n~_Ju3sGq%2_Iz(D{tOLL_(+69p|5L z?wY|$|7jaiz1F8}G7F|6E4US%`KKk-llD~+k4?mXR-#0I+wR!NXGz?uxb`m%QObuu zwc}8tRnC)oypo_HpuC5lQ69eBak*sT2lNx4vVR&??a}@FDwb&9hup-GQn%#Ji!hr% zGm~O{e)?orG=UtiiszRL0$&C}*rHVg75-IY;085Yn28i%GzPN2#lI7j%0A&(7uMym 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 z�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�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%0D=AczMm2wDeIqr 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 literal 167911 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 ({ - background: `url(${summaryBannerSvg})`, - backgroundSize: "cover", - backgroundRepeat: "no-repeat", - backgroundPosition: "top", borderRadius: "8px 8px 0px 0px", - borderBottom: "1px solid #6CACDA", textWrap: "nowrap", - // boxShadow: "0px 2px 35px 0px rgba(62, 87, 88, 0.35)", padding: "25px 21px 59px 48px", })); diff --git a/src/content/dataSubmissions/DataSubmission.tsx b/src/content/dataSubmissions/DataSubmission.tsx index 9e2284d3..1dee613b 100644 --- a/src/content/dataSubmissions/DataSubmission.tsx +++ b/src/content/dataSubmissions/DataSubmission.tsx @@ -16,6 +16,7 @@ import { } from "@mui/material"; import { isEqual } from "lodash"; import bannerSvg from "../../assets/dataSubmissions/dashboard_banner.svg"; +import summaryBannerSvg from "../../assets/dataSubmissions/summary_banner.png"; import LinkTab from "../../components/DataSubmissions/LinkTab"; import DataSubmissionUpload from "../../components/DataSubmissions/DataSubmissionUpload"; import { @@ -93,20 +94,6 @@ const StyledCard = styled(Card)(() => ({ }, })); -const StyledChartArea = styled("div")(() => ({ - height: "253.42px", - display: "flex", - justifyContent: "center", - alignItems: "center", - overflow: "visible", - "& div": { - overflow: "visible", - margin: "0 auto", - marginLeft: "30px", - marginRight: "30px" - } -})); - const StyledMainContentArea = styled("div")(() => ({ borderRadius: 0, background: "#FFFFFF", @@ -152,6 +139,13 @@ const StyledWrapper = styled("div")({ background: "#FBFDFF", }); +const StyledCardContent = styled(CardContent)({ + background: `url(${summaryBannerSvg})`, + backgroundSize: "auto", + backgroundRepeat: "no-repeat", + backgroundPosition: "top", +}); + const StyledRejectedStatus = styled("div")(() => ({ color: "#E25C22", fontWeight: 600 @@ -335,7 +329,7 @@ const DataSubmission = () => { - + {error && ( Oops! An error occurred. @@ -344,9 +338,8 @@ const DataSubmission = () => { )} - - {/* TODO: Widgets removed for MVP2-M2. Will be re-added in the future */} - + + {/* TODO: Widgets removed for MVP2-M2. Will be re-added in the future */} { ) : } - + Date: Wed, 8 Nov 2023 11:23:31 -0500 Subject: [PATCH 86/88] add nullsafe chaining --- src/content/dataSubmissions/DataSubmissionsListView.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/content/dataSubmissions/DataSubmissionsListView.tsx b/src/content/dataSubmissions/DataSubmissionsListView.tsx index aa47073a..bf3ac024 100644 --- a/src/content/dataSubmissions/DataSubmissionsListView.tsx +++ b/src/content/dataSubmissions/DataSubmissionsListView.tsx @@ -268,7 +268,7 @@ const ListingView: FC = () => { // Only org owners/submitters with organizations assigned can create data submissions const orgOwnerOrSubmitter = (user?.role === "Organization Owner" || user?.role === "Submitter"); - const hasOrganizationAssigned = (user?.organization !== null && user.organization.orgID !== null); + const hasOrganizationAssigned = (user?.organization !== null && user?.organization?.orgID !== null); const shouldHaveAllFilter = (user?.role === "Admin" || user?.role === "Federal Lead" || user?.role === "Data Curator" || user?.role === "Data Commons POC"); const [page, setPage] = useState(0); const [perPage, setPerPage] = useState(10); @@ -304,7 +304,7 @@ const ListingView: FC = () => { offset: page * perPage, sortDirection: order.toUpperCase(), orderBy: orderBy.field, - organization: (organizationFilter !== "All" ? allOrganizations?.listOrganizations?.find((org) => org.name === organizationFilter)._id : "All"), + organization: (organizationFilter !== "All" ? allOrganizations?.listOrganizations?.find((org) => org.name === organizationFilter)?._id : "All"), status: statusFilter, }, context: { clientName: 'backend' }, From 0687c5e47a1056ec4eb5ac992dc821ae62d916f2 Mon Sep 17 00:00:00 2001 From: mtangmt Date: Wed, 8 Nov 2023 13:33:47 -0500 Subject: [PATCH 87/88] CRDCDH-575 moving icons (#203) * moving icons * update test case imports * renaming the updated icons --- .../history/submissionRequest}/Approved.svg | 0 .../history/submissionRequest}/InProgress.svg | 0 .../history/submissionRequest}/Rejected.svg | 0 .../submissionRequest}/StatusApproved.svg | 0 .../submissionRequest}/StatusRejected.svg | 0 .../submissionRequest/SubmissionRequestNew.svg} | 0 .../SubmissionRequestSubmitted.svg} | 0 .../history/submissionRequest}/UnderReview.svg | 0 .../history/submissionRequest}/index.tsx | 4 ++-- src/components/StatusBar/StatusBar.test.tsx | 16 ++++++++-------- .../StatusBar/components/HistorySection.tsx | 2 +- .../StatusBar/components/StatusSection.tsx | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) rename src/{components/StatusBar/icons => assets/history/submissionRequest}/Approved.svg (100%) rename src/{components/StatusBar/icons => assets/history/submissionRequest}/InProgress.svg (100%) rename src/{components/StatusBar/icons => assets/history/submissionRequest}/Rejected.svg (100%) rename src/{components/StatusBar/icons => assets/history/submissionRequest}/StatusApproved.svg (100%) rename src/{components/StatusBar/icons => assets/history/submissionRequest}/StatusRejected.svg (100%) rename src/{components/StatusBar/icons/New.svg => assets/history/submissionRequest/SubmissionRequestNew.svg} (100%) rename src/{components/StatusBar/icons/Submitted.svg => assets/history/submissionRequest/SubmissionRequestSubmitted.svg} (100%) rename src/{components/StatusBar/icons => assets/history/submissionRequest}/UnderReview.svg (100%) rename src/{components/StatusBar/icons => assets/history/submissionRequest}/index.tsx (87%) diff --git a/src/components/StatusBar/icons/Approved.svg b/src/assets/history/submissionRequest/Approved.svg similarity index 100% rename from src/components/StatusBar/icons/Approved.svg rename to src/assets/history/submissionRequest/Approved.svg diff --git a/src/components/StatusBar/icons/InProgress.svg b/src/assets/history/submissionRequest/InProgress.svg similarity index 100% rename from src/components/StatusBar/icons/InProgress.svg rename to src/assets/history/submissionRequest/InProgress.svg diff --git a/src/components/StatusBar/icons/Rejected.svg b/src/assets/history/submissionRequest/Rejected.svg similarity index 100% rename from src/components/StatusBar/icons/Rejected.svg rename to src/assets/history/submissionRequest/Rejected.svg diff --git a/src/components/StatusBar/icons/StatusApproved.svg b/src/assets/history/submissionRequest/StatusApproved.svg similarity index 100% rename from src/components/StatusBar/icons/StatusApproved.svg rename to src/assets/history/submissionRequest/StatusApproved.svg diff --git a/src/components/StatusBar/icons/StatusRejected.svg b/src/assets/history/submissionRequest/StatusRejected.svg similarity index 100% rename from src/components/StatusBar/icons/StatusRejected.svg rename to src/assets/history/submissionRequest/StatusRejected.svg diff --git a/src/components/StatusBar/icons/New.svg b/src/assets/history/submissionRequest/SubmissionRequestNew.svg similarity index 100% rename from src/components/StatusBar/icons/New.svg rename to src/assets/history/submissionRequest/SubmissionRequestNew.svg diff --git a/src/components/StatusBar/icons/Submitted.svg b/src/assets/history/submissionRequest/SubmissionRequestSubmitted.svg similarity index 100% rename from src/components/StatusBar/icons/Submitted.svg rename to src/assets/history/submissionRequest/SubmissionRequestSubmitted.svg diff --git a/src/components/StatusBar/icons/UnderReview.svg b/src/assets/history/submissionRequest/UnderReview.svg similarity index 100% rename from src/components/StatusBar/icons/UnderReview.svg rename to src/assets/history/submissionRequest/UnderReview.svg diff --git a/src/components/StatusBar/icons/index.tsx b/src/assets/history/submissionRequest/index.tsx similarity index 87% rename from src/components/StatusBar/icons/index.tsx rename to src/assets/history/submissionRequest/index.tsx index ac39c325..d0e1d9cd 100644 --- a/src/components/StatusBar/icons/index.tsx +++ b/src/assets/history/submissionRequest/index.tsx @@ -1,5 +1,5 @@ -import New from "./New.svg"; -import Submitted from "./Submitted.svg"; +import New from "./SubmissionRequestNew.svg"; +import Submitted from "./SubmissionRequestSubmitted.svg"; import Rejected from "./Rejected.svg"; import Approved from "./Approved.svg"; import UnderReview from "./UnderReview.svg"; diff --git a/src/components/StatusBar/StatusBar.test.tsx b/src/components/StatusBar/StatusBar.test.tsx index 6924f219..ec7ffa6b 100644 --- a/src/components/StatusBar/StatusBar.test.tsx +++ b/src/components/StatusBar/StatusBar.test.tsx @@ -9,14 +9,14 @@ import { Status as FormStatus, } from '../Contexts/FormContext'; import StatusBar from './StatusBar'; -import StatusApproved from './icons/StatusApproved.svg'; -import StatusRejected from './icons/StatusRejected.svg'; -import New from './icons/New.svg'; -import Approved from './icons/Approved.svg'; -import Rejected from './icons/Rejected.svg'; -import Submitted from './icons/Submitted.svg'; -import UnderReview from './icons/UnderReview.svg'; -import InProgress from './icons/InProgress.svg'; +import StatusApproved from '../../assets/history/submissionRequest/StatusApproved.svg'; +import StatusRejected from '../../assets/history/submissionRequest/StatusRejected.svg'; +import New from '../../assets/history/submissionRequest/SubmissionRequestNew.svg'; +import Approved from '../../assets/history/submissionRequest/Approved.svg'; +import Rejected from '../../assets/history/submissionRequest/Rejected.svg'; +import Submitted from '../../assets/history/submissionRequest/SubmissionRequestSubmitted.svg'; +import UnderReview from '../../assets/history/submissionRequest/UnderReview.svg'; +import InProgress from '../../assets/history/submissionRequest/InProgress.svg'; import { FormatDate } from "../../utils"; type Props = { diff --git a/src/components/StatusBar/components/HistorySection.tsx b/src/components/StatusBar/components/HistorySection.tsx index b7b14459..3c5d4519 100644 --- a/src/components/StatusBar/components/HistorySection.tsx +++ b/src/components/StatusBar/components/HistorySection.tsx @@ -18,7 +18,7 @@ import { } from "@mui/lab"; import { styled } from "@mui/material/styles"; import { useFormContext } from "../../Contexts/FormContext"; -import { HistoryIconMap } from "../icons"; +import { HistoryIconMap } from "../../../assets/history/submissionRequest"; import { FormatDate, SortHistory } from "../../../utils"; const StyledDate = styled("span")({ diff --git a/src/components/StatusBar/components/StatusSection.tsx b/src/components/StatusBar/components/StatusSection.tsx index 19999c92..65c205f5 100644 --- a/src/components/StatusBar/components/StatusSection.tsx +++ b/src/components/StatusBar/components/StatusSection.tsx @@ -9,7 +9,7 @@ import { } from "@mui/material"; import { styled } from "@mui/material/styles"; import { useFormContext } from "../../Contexts/FormContext"; -import { StatusIconMap } from "../icons"; +import { StatusIconMap } from "../../../assets/history/submissionRequest"; import { FormatDate, SortHistory } from "../../../utils"; const StyledAvatar = styled(Avatar)({ From a68db56d519c3e343d75122f7ff3a6eb1e019638 Mon Sep 17 00:00:00 2001 From: Alejandro Vega Date: Wed, 8 Nov 2023 13:05:43 -0600 Subject: [PATCH 88/88] CRDCDH-549 Fixing File Selecting OS Issue (#204) * Updated file filtering to check the file extension instead of MIME type. Fixed issue when selecting same file. Added logs for testing * Added null check for ref * Remove console logs --- src/components/DataSubmissions/DataSubmissionUpload.tsx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/components/DataSubmissions/DataSubmissionUpload.tsx b/src/components/DataSubmissions/DataSubmissionUpload.tsx index c1366a53..9ba32923 100644 --- a/src/components/DataSubmissions/DataSubmissionUpload.tsx +++ b/src/components/DataSubmissions/DataSubmissionUpload.tsx @@ -170,7 +170,7 @@ const DataSubmissionUpload = ({ submitterID, readOnly, onUpload }: Props) => { } // Filter out any file that is not tsv - const filteredFiles = Array.from(files)?.filter((file: File) => file.type === "text/tab-separated-values"); + const filteredFiles = Array.from(files)?.filter((file: File) => file.name?.toLowerCase()?.endsWith(".tsv")); if (!filteredFiles?.length) { setSelectedFiles(null); return; @@ -275,6 +275,9 @@ const DataSubmissionUpload = ({ submitterID, readOnly, onUpload }: Props) => { onUpload(`${selectedFiles.length} ${selectedFiles.length > 1 ? "Files" : "File"} successfully uploaded`, "success"); setIsUploading(false); setSelectedFiles(null); + if (uploadMetatadataInputRef.current) { + uploadMetatadataInputRef.current.value = ""; + } } catch (err) { // Unable to let BE know of upload result so all fail onUploadFail(selectedFiles?.length); @@ -285,6 +288,9 @@ const DataSubmissionUpload = ({ submitterID, readOnly, onUpload }: Props) => { onUpload(`${fileCount} ${fileCount > 1 ? "Files" : "File"} failed to upload`, "error"); setSelectedFiles(null); setIsUploading(false); + if (uploadMetatadataInputRef.current) { + uploadMetatadataInputRef.current.value = ""; + } }; return (