Index: imaps-frontend/node_modules/react-router-dom/dist/react-router-dom.development.js
===================================================================
--- imaps-frontend/node_modules/react-router-dom/dist/react-router-dom.development.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/react-router-dom/dist/react-router-dom.development.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -1,4 +1,4 @@
 /**
- * React Router DOM v6.26.0
+ * React Router DOM v6.28.0
  *
  * Copyright (c) Remix Software Inc.
@@ -11,5 +11,5 @@
 import * as React from 'react';
 import * as ReactDOM from 'react-dom';
-import { UNSAFE_mapRouteProperties, UNSAFE_DataRouterContext, UNSAFE_DataRouterStateContext, Router, UNSAFE_useRoutesImpl, UNSAFE_NavigationContext, useHref, useResolvedPath, useLocation, useNavigate, createPath, UNSAFE_useRouteId, UNSAFE_RouteContext, useMatches, useNavigation, useBlocker } from 'react-router';
+import { UNSAFE_mapRouteProperties, UNSAFE_logV6DeprecationWarnings, UNSAFE_DataRouterContext, UNSAFE_DataRouterStateContext, Router, UNSAFE_useRoutesImpl, UNSAFE_NavigationContext, useHref, useResolvedPath, useLocation, useNavigate, createPath, UNSAFE_useRouteId, UNSAFE_RouteContext, useMatches, useNavigation, useBlocker } from 'react-router';
 export { AbortedDeferredError, Await, MemoryRouter, Navigate, NavigationType, Outlet, Route, Router, Routes, UNSAFE_DataRouterContext, UNSAFE_DataRouterStateContext, UNSAFE_LocationContext, UNSAFE_NavigationContext, UNSAFE_RouteContext, UNSAFE_useRouteId, createMemoryRouter, createPath, createRoutesFromChildren, createRoutesFromElements, defer, generatePath, isRouteErrorResponse, json, matchPath, matchRoutes, parsePath, redirect, redirectDocument, renderMatches, replace, resolvePath, useActionData, useAsyncError, useAsyncValue, useBlocker, useHref, useInRouterContext, useLoaderData, useLocation, useMatch, useMatches, useNavigate, useNavigation, useNavigationType, useOutlet, useOutletContext, useParams, useResolvedPath, useRevalidator, useRouteError, useRouteLoaderData, useRoutes } from 'react-router';
 import { stripBasename, UNSAFE_warning, createRouter, createBrowserHistory, createHashHistory, UNSAFE_ErrorResponseImpl, UNSAFE_invariant, joinPaths, IDLE_FETCHER, matchPath } from '@remix-run/router';
@@ -238,6 +238,6 @@
     routes,
     mapRouteProperties: UNSAFE_mapRouteProperties,
-    unstable_dataStrategy: opts?.unstable_dataStrategy,
-    unstable_patchRoutesOnMiss: opts?.unstable_patchRoutesOnMiss,
+    dataStrategy: opts?.dataStrategy,
+    patchRoutesOnNavigation: opts?.patchRoutesOnNavigation,
     window: opts?.window
   }).initialize();
@@ -256,6 +256,6 @@
     routes,
     mapRouteProperties: UNSAFE_mapRouteProperties,
-    unstable_dataStrategy: opts?.unstable_dataStrategy,
-    unstable_patchRoutesOnMiss: opts?.unstable_patchRoutesOnMiss,
+    dataStrategy: opts?.dataStrategy,
+    patchRoutesOnNavigation: opts?.patchRoutesOnNavigation,
     window: opts?.window
   }).initialize();
@@ -431,6 +431,6 @@
   let setState = React.useCallback((newState, {
     deletedFetchers,
-    unstable_flushSync: flushSync,
-    unstable_viewTransitionOpts: viewTransitionOpts
+    flushSync: flushSync,
+    viewTransitionOpts: viewTransitionOpts
   }) => {
     deletedFetchers.forEach(key => fetcherData.current.delete(key));
@@ -601,4 +601,5 @@
     v7_relativeSplatPath: router.future.v7_relativeSplatPath
   }), [router.future.v7_relativeSplatPath]);
+  React.useEffect(() => UNSAFE_logV6DeprecationWarnings(future, router.future), [future, router.future]);
 
   // The fragment and {null} here are important!  We need them to keep React 18's
@@ -666,4 +667,5 @@
   }, [setStateImpl, v7_startTransition]);
   React.useLayoutEffect(() => history.listen(setState), [history, setState]);
+  React.useEffect(() => UNSAFE_logV6DeprecationWarnings(future), [future]);
   return /*#__PURE__*/React.createElement(Router, {
     basename: basename,
@@ -704,4 +706,5 @@
   }, [setStateImpl, v7_startTransition]);
   React.useLayoutEffect(() => history.listen(setState), [history, setState]);
+  React.useEffect(() => UNSAFE_logV6DeprecationWarnings(future), [future]);
   return /*#__PURE__*/React.createElement(Router, {
     basename: basename,
@@ -736,4 +739,5 @@
   }, [setStateImpl, v7_startTransition]);
   React.useLayoutEffect(() => history.listen(setState), [history, setState]);
+  React.useEffect(() => UNSAFE_logV6DeprecationWarnings(future), [future]);
   return /*#__PURE__*/React.createElement(Router, {
     basename: basename,
@@ -763,5 +767,5 @@
   to,
   preventScrollReset,
-  unstable_viewTransition,
+  viewTransition,
   ...rest
 }, ref) {
@@ -806,5 +810,5 @@
     preventScrollReset,
     relative,
-    unstable_viewTransition
+    viewTransition
   });
   function handleClick(event) {
@@ -838,5 +842,5 @@
   style: styleProp,
   to,
-  unstable_viewTransition,
+  viewTransition,
   children,
   ...rest
@@ -854,5 +858,5 @@
   // Conditional usage is OK here because the usage of a data router is static
   // eslint-disable-next-line react-hooks/rules-of-hooks
-  useViewTransitionState(path) && unstable_viewTransition === true;
+  useViewTransitionState(path) && viewTransition === true;
   let toPathname = navigator.encodeLocation ? navigator.encodeLocation(path).pathname : path.pathname;
   let locationPathname = location.pathname;
@@ -899,5 +903,5 @@
     style: style,
     to: to,
-    unstable_viewTransition: unstable_viewTransition
+    viewTransition: viewTransition
   }), typeof children === "function" ? children(renderProps) : children);
 });
@@ -935,5 +939,5 @@
   relative,
   preventScrollReset,
-  unstable_viewTransition,
+  viewTransition,
   ...props
 }, forwardedRef) => {
@@ -957,5 +961,5 @@
       relative,
       preventScrollReset,
-      unstable_viewTransition
+      viewTransition
     });
   };
@@ -1007,5 +1011,5 @@
 }(DataRouterStateHook || {}); // Internal hooks
 function getDataRouterConsoleError(hookName) {
-  return `${hookName} must be used within a data router.  See https://reactrouter.com/routers/picking-a-router.`;
+  return `${hookName} must be used within a data router.  See https://reactrouter.com/v6/routers/picking-a-router.`;
 }
 function useDataRouterContext(hookName) {
@@ -1033,5 +1037,5 @@
   preventScrollReset,
   relative,
-  unstable_viewTransition
+  viewTransition
 } = {}) {
   let navigate = useNavigate();
@@ -1052,8 +1056,8 @@
         preventScrollReset,
         relative,
-        unstable_viewTransition
+        viewTransition
       });
     }
-  }, [location, navigate, path, replaceProp, state, target, to, preventScrollReset, relative, unstable_viewTransition]);
+  }, [location, navigate, path, replaceProp, state, target, to, preventScrollReset, relative, viewTransition]);
 }
 
@@ -1126,5 +1130,5 @@
         formMethod: options.method || method,
         formEncType: options.encType || encType,
-        unstable_flushSync: options.unstable_flushSync
+        flushSync: options.flushSync
       });
     } else {
@@ -1138,6 +1142,6 @@
         state: options.state,
         fromRouteId: currentRouteId,
-        unstable_flushSync: options.unstable_flushSync,
-        unstable_viewTransition: options.unstable_viewTransition
+        flushSync: options.flushSync,
+        viewTransition: options.viewTransition
       });
     }
@@ -1177,7 +1181,11 @@
     // on match.route.index below
     let params = new URLSearchParams(path.search);
-    if (params.has("index") && params.get("index") === "") {
+    let indexValues = params.getAll("index");
+    let hasNakedIndexParam = indexValues.some(v => v === "");
+    if (hasNakedIndexParam) {
       params.delete("index");
-      path.search = params.toString() ? `?${params.toString()}` : "";
+      indexValues.filter(v => v).forEach(v => params.append("index", v));
+      let qs = params.toString();
+      path.search = qs ? `?${qs}` : "";
     }
   }
@@ -1484,5 +1492,5 @@
 function useViewTransitionState(to, opts = {}) {
   let vtContext = React.useContext(ViewTransitionContext);
-  !(vtContext != null) ? UNSAFE_invariant(false, "`unstable_useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`.  " + "Did you accidentally import `RouterProvider` from `react-router`?")  : void 0;
+  !(vtContext != null) ? UNSAFE_invariant(false, "`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`.  " + "Did you accidentally import `RouterProvider` from `react-router`?")  : void 0;
   let {
     basename
@@ -1501,9 +1509,9 @@
   // an indicated transition apply.  I.e., on the list view you have:
   //
-  //   <NavLink to="/details/1" unstable_viewTransition>
+  //   <NavLink to="/details/1" viewTransition>
   //
   // If you click the breadcrumb back to the list view:
   //
-  //   <NavLink to="/list" unstable_viewTransition>
+  //   <NavLink to="/list" viewTransition>
   //
   // We should apply the transition because it's indicated as active going
@@ -1515,4 +1523,4 @@
 //#endregion
 
-export { BrowserRouter, Form, HashRouter, Link, NavLink, RouterProvider, ScrollRestoration, FetchersContext as UNSAFE_FetchersContext, ViewTransitionContext as UNSAFE_ViewTransitionContext, useScrollRestoration as UNSAFE_useScrollRestoration, createBrowserRouter, createHashRouter, createSearchParams, HistoryRouter as unstable_HistoryRouter, usePrompt as unstable_usePrompt, useViewTransitionState as unstable_useViewTransitionState, useBeforeUnload, useFetcher, useFetchers, useFormAction, useLinkClickHandler, useSearchParams, useSubmit };
+export { BrowserRouter, Form, HashRouter, Link, NavLink, RouterProvider, ScrollRestoration, FetchersContext as UNSAFE_FetchersContext, ViewTransitionContext as UNSAFE_ViewTransitionContext, useScrollRestoration as UNSAFE_useScrollRestoration, createBrowserRouter, createHashRouter, createSearchParams, HistoryRouter as unstable_HistoryRouter, usePrompt as unstable_usePrompt, useBeforeUnload, useFetcher, useFetchers, useFormAction, useLinkClickHandler, useSearchParams, useSubmit, useViewTransitionState };
 //# sourceMappingURL=react-router-dom.development.js.map
