diff --git a/js/search.js b/js/search.js
index 45836c4a5f..a917ef32d1 100644
--- a/js/search.js
+++ b/js/search.js
@@ -1,51 +1,25 @@
+import algoliasearch from 'algoliasearch';
 import instantsearch from 'instantsearch.js';
-import {searchBox, hits, pagination, currentRefinedValues, menu, refinementList} from "instantsearch.js/es/widgets";
-
-document.getElementById('search_query_query').addEventListener('keydown', function (e) {
-    if (e.keyCode === 13) {
-        e.preventDefault();
-    }
-});
-
-// Add accessibility functionality:
-// "Press '/' to focus the searchbar".
-document.addEventListener('keydown', function (e) {
-    if (e.key !== '/') {
-        return;
-    }
-    var searchInput = document.getElementById('search_query_query');
-    // Just ignore if we can't find the search input for some reason maybe we are on a page without it.
-    if (!searchInput) {
-        return;
-    }
-    // If we already have input focus ignore.
-    if (document.activeElement.tagName === 'INPUT') {
-        return;
-    }
-    searchInput.focus();
-    // Prevent '/' being inserted on focus.
-    e.preventDefault();
-});
-
-var searchParameters = {};
+import { connectSearchBox } from 'instantsearch.js/es/connectors';
+import { hits, pagination, currentRefinements, menu, refinementList} from "instantsearch.js/es/widgets";
 
 if (decodeURI(location.search).match(/[<>]/)) {
     location.replace(location.pathname);
 }
 
-var searchThrottle = null;
-var search = instantsearch({
-    appId: algoliaConfig.app_id,
-    apiKey: algoliaConfig.search_key,
+let searchThrottle = null;
+const search = instantsearch({
     indexName: algoliaConfig.index_name,
+    searchClient: algoliasearch(algoliaConfig.app_id, algoliaConfig.search_key),
     routing: {
         stateMapping: {
             stateToRoute: function (uiState) {
+                const state = uiState[algoliaConfig.index_name];
                 return {
-                    query: uiState.query && uiState.query.replace(new RegExp('([^\\s])--', 'g'), '$1-'),
-                    type: uiState.menu && uiState.menu.type,
-                    tags: uiState.refinementList && uiState.refinementList.tags && uiState.refinementList.tags.join('~'),
-                    page: uiState.page,
+                    query: state.query && state.query.replace(new RegExp('([^\\s])--', 'g'), '$1-'),
+                    type: state.menu && state.menu.type,
+                    tags: state.refinementList && state.refinementList.tags && state.refinementList.tags.join('~'),
+                    page: state.page,
                 };
             },
             routeToState: function (routeState) {
@@ -62,24 +36,27 @@ var search = instantsearch({
                 }
 
                 return {
-                    query: routeState.query || '',
-                    menu: {
-                        type: routeState.type
-                    },
-                    refinementList: {
-                        tags: routeState.tags && routeState.tags.replace(/[\s-]+/g, ' ').split('~'),
-                    },
-                    page: routeState.page
-                };
+                    [algoliaConfig.index_name]: {
+                        query: routeState.query || '',
+                        menu: {
+                            type: routeState.type
+                        },
+                        refinementList: {
+                            tags: routeState.tags && routeState.tags.replace(/[\s-]+/g, ' ').split('~'),
+                        },
+                        page: routeState.page
+                    }
+                }
             },
         },
     },
-    searchFunction: function(helper) {
-        var searchResults = document.querySelector('#search-container');
+    onStateChange: function({uiState, setUiState}) {
+        const searchResults = document.querySelector('#search-container');
+        const state = uiState[algoliaConfig.index_name];
 
-        if (helper.state.query === ''
-            && helper.state.hierarchicalFacetsRefinements.type === undefined
-            && (helper.state.disjunctiveFacetsRefinements.tags === undefined || helper.state.disjunctiveFacetsRefinements.tags.length === 0)
+        if (state.query === ''
+            && state.hierarchicalFacetsRefinements.type === undefined
+            && (state.disjunctiveFacetsRefinements.tags === undefined || state.disjunctiveFacetsRefinements.tags.length === 0)
         ) {
             searchResults.classList.add('hidden');
             return;
@@ -92,41 +69,73 @@ var search = instantsearch({
         }
 
         // force focus to prevent algolia from updating the search field input with the modified value
-        if (helper.state.query.match(/-/)) {
+        if (state.query.match(/-/)) {
             document.getElementById('search_query_query').focus();
         }
 
-        if (helper.state.query.match(/^PKSA-.{14}$/) || helper.state.query.match(/^GHSA-.{14}$/) || helper.state.query.match(/^CVE-\d{4}-\d+$/)) {
-            document.location.href = "/security-advisories/" + helper.state.query;
+        if (state.query.match(/^PKSA-.{14}$/) || state.query.match(/^GHSA-.{14}$/) || state.query.match(/^CVE-\d{4}-\d+$/)) {
+            document.location.href = "/security-advisories/" + state.query;
         }
 
-        helper.state.query = helper.state.query.replace(new RegExp('([^\\s])-', 'g'), '$1--');
+        state.query = state.query.replace(new RegExp('([^\\s])-', 'g'), '$1--');
 
-        searchThrottle = setTimeout(function () {
-            helper.search();
+        searchThrottle = setTimeout(() => {
+            setUiState({[algoliaConfig.index_name]: state});
         }, 300);
     },
-    searchParameters: searchParameters
 });
 
-var autofocus = false;
-if (location.pathname == "/" || location.pathname == "/explore/") {
-    autofocus = true;
-}
-search.addWidget(
-    searchBox({
-        container: '#search_query_query',
-        magnifier: false,
-        reset: false,
-        wrapInput: false,
-        autofocus: autofocus
-    })
-);
-
-search.addWidget(
+const renderSearchBox = (renderOptions, isFirstRender) => {
+    const { query, refine, clear, isSearchStalled, widgetParams } = renderOptions;
+    const input = document.querySelector('#search_query_query');
+
+    // register events on the first render
+    if (isFirstRender) {
+        // focus the search on the homepage and explore
+        if(location.pathname === "/" || location.pathname === "/explore/") {
+            input.focus();
+        }
+
+        // trigger search on input change
+        input.addEventListener('input', event => {
+            refine(event.target.value);
+        });
+
+        // prevent form submission
+        input.addEventListener('keydown', event => {
+            if (event.key === 'Enter') {
+                event.preventDefault();
+            }
+        });
+
+        // clear search on escape
+        input.addEventListener('keydown', event => {
+            if (event.key === 'Escape') {
+                clear();
+            }
+        });
+
+        // focus search on / but not when typing in the input
+        document.addEventListener('keydown', event => {
+            if (event.key !== '/' || document.activeElement === input) {
+                return;
+            }
+
+            input.focus();
+            event.preventDefault();
+        });
+    }
+
+    input.value = query;
+};
+
+const customSearchBox = connectSearchBox(renderSearchBox);
+
+search.addWidgets([
+    customSearchBox({}),
     hits({
         container: '.search-list',
-        transformData: function (hit) {
+        transformItems: hits => hits.map(hit => {
             hit.url = '/packages/' + hit.name;
             if (hit.type === 'virtual-package') {
                 hit.virtual = true;
@@ -144,7 +153,7 @@ search.addWidget(
             }
 
             return hit;
-        },
+        }),
         templates: {
             empty: 'No packages found.',
             item: `
@@ -153,7 +162,7 @@ search.addWidget(
         <div class="col-sm-9 col-lg-10">
             <p class="pull-right language">{{ language }}</p>
             <h4 class="font-bold">
-                <a href="{{ url }}" tabindex="2">{{{ _highlightResult.name.value }}}</a>
+                <a href="{{ url }}" tabindex="2">{{#helpers.highlight}}{ "attribute": "name" }{{/helpers.highlight}}</a>
                 {{#virtual}}
                     <small>(Virtual Package)</small>
                 {{/virtual}}
@@ -187,20 +196,14 @@ search.addWidget(
             root: 'packages',
             item: 'row'
         }
-    })
-);
-
-search.addWidget(
+    }),
     pagination({
         container: '.pagination',
         maxPages: 200,
         scrollTo: document.getElementById('search_query_query'),
         showFirstLast: false,
-    })
-);
-
-search.addWidget(
-    currentRefinedValues({
+    }),
+    currentRefinements({
         container: '.search-facets-active-filters',
         clearAll: 'before',
         clearsQuery: false,
@@ -210,7 +213,7 @@ search.addWidget(
         templates: {
             header: 'Active filters',
             item: function (filter) {
-                if ('tags' == filter.attributeName) {
+                if ('tags' === filter.attributeName) {
                     return 'tag: ' + filter.name
                 } else {
                     return filter.attributeName + ': ' + filter.name
@@ -218,32 +221,26 @@ search.addWidget(
             }
         },
         onlyListedAttributes: true,
-    })
-);
-
-search.addWidget(
+    }),
     menu({
         container: '.search-facets-type',
-        attributeName: 'type',
+        attribute: 'type',
         limit: 15,
         showMore: true,
         templates: {
             header: 'Package type'
         }
-    })
-);
-
-search.addWidget(
+    }),
     refinementList({
         container: '.search-facets-tags',
-        attributeName: 'tags',
+        attribute: 'tags',
         limit: 15,
         showMore: true,
         templates: {
             header: 'Tags'
         },
         searchForFacetValues:true
-    })
-);
+    }),
+]);
 
 search.start();
diff --git a/package-lock.json b/package-lock.json
index d1b67159e2..00ef00853a 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -6,9 +6,10 @@
         "": {
             "name": "packagist.org",
             "dependencies": {
+                "algoliasearch": "^4.22.1",
                 "bootstrap": "3.3.5",
                 "d3": "^3.5.17",
-                "instantsearch.js": "^2.7.4",
+                "instantsearch.js": "^4.66.0",
                 "jquery": "^3.6.0",
                 "nvd3": "^1.8.6",
                 "plausible-tracker": "^0.3",
@@ -21,6 +22,137 @@
                 "esbuild-plugin-sass": "^1.0.1"
             }
         },
+        "node_modules/@algolia/cache-browser-local-storage": {
+            "version": "4.22.1",
+            "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.22.1.tgz",
+            "integrity": "sha512-Sw6IAmOCvvP6QNgY9j+Hv09mvkvEIDKjYW8ow0UDDAxSXy664RBNQk3i/0nt7gvceOJ6jGmOTimaZoY1THmU7g==",
+            "dependencies": {
+                "@algolia/cache-common": "4.22.1"
+            }
+        },
+        "node_modules/@algolia/cache-common": {
+            "version": "4.22.1",
+            "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.22.1.tgz",
+            "integrity": "sha512-TJMBKqZNKYB9TptRRjSUtevJeQVXRmg6rk9qgFKWvOy8jhCPdyNZV1nB3SKGufzvTVbomAukFR8guu/8NRKBTA=="
+        },
+        "node_modules/@algolia/cache-in-memory": {
+            "version": "4.22.1",
+            "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.22.1.tgz",
+            "integrity": "sha512-ve+6Ac2LhwpufuWavM/aHjLoNz/Z/sYSgNIXsinGofWOysPilQZPUetqLj8vbvi+DHZZaYSEP9H5SRVXnpsNNw==",
+            "dependencies": {
+                "@algolia/cache-common": "4.22.1"
+            }
+        },
+        "node_modules/@algolia/client-account": {
+            "version": "4.22.1",
+            "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.22.1.tgz",
+            "integrity": "sha512-k8m+oegM2zlns/TwZyi4YgCtyToackkOpE+xCaKCYfBfDtdGOaVZCM5YvGPtK+HGaJMIN/DoTL8asbM3NzHonw==",
+            "dependencies": {
+                "@algolia/client-common": "4.22.1",
+                "@algolia/client-search": "4.22.1",
+                "@algolia/transporter": "4.22.1"
+            }
+        },
+        "node_modules/@algolia/client-analytics": {
+            "version": "4.22.1",
+            "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.22.1.tgz",
+            "integrity": "sha512-1ssi9pyxyQNN4a7Ji9R50nSdISIumMFDwKNuwZipB6TkauJ8J7ha/uO60sPJFqQyqvvI+px7RSNRQT3Zrvzieg==",
+            "dependencies": {
+                "@algolia/client-common": "4.22.1",
+                "@algolia/client-search": "4.22.1",
+                "@algolia/requester-common": "4.22.1",
+                "@algolia/transporter": "4.22.1"
+            }
+        },
+        "node_modules/@algolia/client-common": {
+            "version": "4.22.1",
+            "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.22.1.tgz",
+            "integrity": "sha512-IvaL5v9mZtm4k4QHbBGDmU3wa/mKokmqNBqPj0K7lcR8ZDKzUorhcGp/u8PkPC/e0zoHSTvRh7TRkGX3Lm7iOQ==",
+            "dependencies": {
+                "@algolia/requester-common": "4.22.1",
+                "@algolia/transporter": "4.22.1"
+            }
+        },
+        "node_modules/@algolia/client-personalization": {
+            "version": "4.22.1",
+            "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.22.1.tgz",
+            "integrity": "sha512-sl+/klQJ93+4yaqZ7ezOttMQ/nczly/3GmgZXJ1xmoewP5jmdP/X/nV5U7EHHH3hCUEHeN7X1nsIhGPVt9E1cQ==",
+            "dependencies": {
+                "@algolia/client-common": "4.22.1",
+                "@algolia/requester-common": "4.22.1",
+                "@algolia/transporter": "4.22.1"
+            }
+        },
+        "node_modules/@algolia/client-search": {
+            "version": "4.22.1",
+            "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.22.1.tgz",
+            "integrity": "sha512-yb05NA4tNaOgx3+rOxAmFztgMTtGBi97X7PC3jyNeGiwkAjOZc2QrdZBYyIdcDLoI09N0gjtpClcackoTN0gPA==",
+            "dependencies": {
+                "@algolia/client-common": "4.22.1",
+                "@algolia/requester-common": "4.22.1",
+                "@algolia/transporter": "4.22.1"
+            }
+        },
+        "node_modules/@algolia/events": {
+            "version": "4.0.1",
+            "resolved": "https://registry.npmjs.org/@algolia/events/-/events-4.0.1.tgz",
+            "integrity": "sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ=="
+        },
+        "node_modules/@algolia/logger-common": {
+            "version": "4.22.1",
+            "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.22.1.tgz",
+            "integrity": "sha512-OnTFymd2odHSO39r4DSWRFETkBufnY2iGUZNrMXpIhF5cmFE8pGoINNPzwg02QLBlGSaLqdKy0bM8S0GyqPLBg=="
+        },
+        "node_modules/@algolia/logger-console": {
+            "version": "4.22.1",
+            "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.22.1.tgz",
+            "integrity": "sha512-O99rcqpVPKN1RlpgD6H3khUWylU24OXlzkavUAMy6QZd1776QAcauE3oP8CmD43nbaTjBexZj2nGsBH9Tc0FVA==",
+            "dependencies": {
+                "@algolia/logger-common": "4.22.1"
+            }
+        },
+        "node_modules/@algolia/requester-browser-xhr": {
+            "version": "4.22.1",
+            "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.22.1.tgz",
+            "integrity": "sha512-dtQGYIg6MteqT1Uay3J/0NDqD+UciHy3QgRbk7bNddOJu+p3hzjTRYESqEnoX/DpEkaNYdRHUKNylsqMpgwaEw==",
+            "dependencies": {
+                "@algolia/requester-common": "4.22.1"
+            }
+        },
+        "node_modules/@algolia/requester-common": {
+            "version": "4.22.1",
+            "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.22.1.tgz",
+            "integrity": "sha512-dgvhSAtg2MJnR+BxrIFqlLtkLlVVhas9HgYKMk2Uxiy5m6/8HZBL40JVAMb2LovoPFs9I/EWIoFVjOrFwzn5Qg=="
+        },
+        "node_modules/@algolia/requester-node-http": {
+            "version": "4.22.1",
+            "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.22.1.tgz",
+            "integrity": "sha512-JfmZ3MVFQkAU+zug8H3s8rZ6h0ahHZL/SpMaSasTCGYR5EEJsCc8SI5UZ6raPN2tjxa5bxS13BRpGSBUens7EA==",
+            "dependencies": {
+                "@algolia/requester-common": "4.22.1"
+            }
+        },
+        "node_modules/@algolia/transporter": {
+            "version": "4.22.1",
+            "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.22.1.tgz",
+            "integrity": "sha512-kzWgc2c9IdxMa3YqA6TN0NW5VrKYYW/BELIn7vnLyn+U/RFdZ4lxxt9/8yq3DKV5snvoDzzO4ClyejZRdV3lMQ==",
+            "dependencies": {
+                "@algolia/cache-common": "4.22.1",
+                "@algolia/logger-common": "4.22.1",
+                "@algolia/requester-common": "4.22.1"
+            }
+        },
+        "node_modules/@babel/runtime": {
+            "version": "7.24.1",
+            "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.1.tgz",
+            "integrity": "sha512-+BIznRzyqBf+2wCTxcKE3wDjfGeCoVE61KSHGpkzqrLi8qxqFwBeUFyId2cxkTmm55fzDGnm0+yCxaxygrLUnQ==",
+            "dependencies": {
+                "regenerator-runtime": "^0.14.0"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            }
+        },
         "node_modules/@esbuild/android-arm": {
             "version": "0.15.18",
             "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.18.tgz",
@@ -53,56 +185,61 @@
                 "node": ">=12"
             }
         },
+        "node_modules/@types/dom-speech-recognition": {
+            "version": "0.0.1",
+            "resolved": "https://registry.npmjs.org/@types/dom-speech-recognition/-/dom-speech-recognition-0.0.1.tgz",
+            "integrity": "sha512-udCxb8DvjcDKfk1WTBzDsxFbLgYxmQGKrE/ricoMqHRNjSlSUCcamVTA5lIQqzY10mY5qCY0QDwBfFEwhfoDPw=="
+        },
+        "node_modules/@types/google.maps": {
+            "version": "3.55.5",
+            "resolved": "https://registry.npmjs.org/@types/google.maps/-/google.maps-3.55.5.tgz",
+            "integrity": "sha512-U1QwCo1GeeLm0YI/GoHvfd1VfwgnoUSBcKCMXXFAM+2izSSuqqwZUJ9XNO6NxZxmYKjBNI+NF5eGF6uUSb1aSg=="
+        },
+        "node_modules/@types/hogan.js": {
+            "version": "3.0.5",
+            "resolved": "https://registry.npmjs.org/@types/hogan.js/-/hogan.js-3.0.5.tgz",
+            "integrity": "sha512-/uRaY3HGPWyLqOyhgvW9Aa43BNnLZrNeQxl2p8wqId4UHMfPKolSB+U7BlZyO1ng7MkLnyEAItsBzCG0SDhqrA=="
+        },
+        "node_modules/@types/qs": {
+            "version": "6.9.14",
+            "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.14.tgz",
+            "integrity": "sha512-5khscbd3SwWMhFqylJBLQ0zIu7c1K6Vz0uBIt915BI3zV0q1nfjRQD3RqSBcPaO6PHEF4ov/t9y89fSiyThlPA=="
+        },
         "node_modules/abbrev": {
             "version": "1.1.1",
             "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
             "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
         },
-        "node_modules/agentkeepalive": {
-            "version": "2.2.0",
-            "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-2.2.0.tgz",
-            "integrity": "sha512-TnB6ziK363p7lR8QpeLC8aMr8EGYBKZTpgzQLfqTs3bR0Oo5VbKdwKf8h0dSzsYrB7lSCgfJnMZKqShvlq5Oyg==",
-            "engines": {
-                "node": ">= 0.10.0"
-            }
-        },
         "node_modules/algoliasearch": {
-            "version": "3.35.1",
-            "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-3.35.1.tgz",
-            "integrity": "sha512-K4yKVhaHkXfJ/xcUnil04xiSrB8B8yHZoFEhWNpXg23eiCnqvTZw1tn/SqvdsANlYHLJlKl0qi3I/Q2Sqo7LwQ==",
+            "version": "4.22.1",
+            "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.22.1.tgz",
+            "integrity": "sha512-jwydKFQJKIx9kIZ8Jm44SdpigFwRGPESaxZBaHSV0XWN2yBJAOT4mT7ppvlrpA4UGzz92pqFnVKr/kaZXrcreg==",
             "dependencies": {
-                "agentkeepalive": "^2.2.0",
-                "debug": "^2.6.9",
-                "envify": "^4.0.0",
-                "es6-promise": "^4.1.0",
-                "events": "^1.1.0",
-                "foreach": "^2.0.5",
-                "global": "^4.3.2",
-                "inherits": "^2.0.1",
-                "isarray": "^2.0.1",
-                "load-script": "^1.0.0",
-                "object-keys": "^1.0.11",
-                "querystring-es3": "^0.2.1",
-                "reduce": "^1.0.1",
-                "semver": "^5.1.0",
-                "tunnel-agent": "^0.6.0"
-            },
-            "engines": {
-                "node": ">=0.8"
+                "@algolia/cache-browser-local-storage": "4.22.1",
+                "@algolia/cache-common": "4.22.1",
+                "@algolia/cache-in-memory": "4.22.1",
+                "@algolia/client-account": "4.22.1",
+                "@algolia/client-analytics": "4.22.1",
+                "@algolia/client-common": "4.22.1",
+                "@algolia/client-personalization": "4.22.1",
+                "@algolia/client-search": "4.22.1",
+                "@algolia/logger-common": "4.22.1",
+                "@algolia/logger-console": "4.22.1",
+                "@algolia/requester-browser-xhr": "4.22.1",
+                "@algolia/requester-common": "4.22.1",
+                "@algolia/requester-node-http": "4.22.1",
+                "@algolia/transporter": "4.22.1"
             }
         },
         "node_modules/algoliasearch-helper": {
-            "version": "2.28.1",
-            "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-2.28.1.tgz",
-            "integrity": "sha512-4yg3anWdILD6ZJ/GxWmtu4HgxauSemhSqbe9Cx6SFdPzaMHrccew4IDomMeQlz9RHJwRgi5sEeX//jx2H/PaWg==",
-            "deprecated": "3.7.3",
+            "version": "3.16.3",
+            "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.16.3.tgz",
+            "integrity": "sha512-1OuJT6sONAa9PxcOmWo5WCAT3jQSpCR9/m5Azujja7nhUQwAUDvaaAYrcmUySsrvHh74usZHbE3jFfGnWtZj8w==",
             "dependencies": {
-                "events": "^1.1.1",
-                "lodash": "^4.17.5",
-                "qs": "^6.5.1"
+                "@algolia/events": "^4.0.1"
             },
             "peerDependencies": {
-                "algoliasearch": ">= 3.1 < 5"
+                "algoliasearch": ">= 3.1 < 6"
             }
         },
         "node_modules/anymatch": {
@@ -163,19 +300,6 @@
                 "node": ">=8"
             }
         },
-        "node_modules/call-bind": {
-            "version": "1.0.5",
-            "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz",
-            "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==",
-            "dependencies": {
-                "function-bind": "^1.1.2",
-                "get-intrinsic": "^1.2.1",
-                "set-function-length": "^1.1.1"
-            },
-            "funding": {
-                "url": "https://github.com/sponsors/ljharb"
-            }
-        },
         "node_modules/chokidar": {
             "version": "3.5.3",
             "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
@@ -203,11 +327,6 @@
                 "fsevents": "~2.3.2"
             }
         },
-        "node_modules/classnames": {
-            "version": "2.3.2",
-            "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz",
-            "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw=="
-        },
         "node_modules/concat-map": {
             "version": "0.0.1",
             "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
@@ -232,65 +351,6 @@
             "resolved": "https://registry.npmjs.org/d3/-/d3-3.5.17.tgz",
             "integrity": "sha512-yFk/2idb8OHPKkbAL8QaOaqENNoMhIaSHZerk3oQsECwkObkCpJyjYwCe+OHiq6UEdhe1m8ZGARRRO3ljFjlKg=="
         },
-        "node_modules/debug": {
-            "version": "2.6.9",
-            "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-            "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-            "dependencies": {
-                "ms": "2.0.0"
-            }
-        },
-        "node_modules/define-data-property": {
-            "version": "1.1.1",
-            "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz",
-            "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==",
-            "dependencies": {
-                "get-intrinsic": "^1.2.1",
-                "gopd": "^1.0.1",
-                "has-property-descriptors": "^1.0.0"
-            },
-            "engines": {
-                "node": ">= 0.4"
-            }
-        },
-        "node_modules/define-properties": {
-            "version": "1.2.1",
-            "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
-            "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
-            "dependencies": {
-                "define-data-property": "^1.0.1",
-                "has-property-descriptors": "^1.0.0",
-                "object-keys": "^1.1.1"
-            },
-            "engines": {
-                "node": ">= 0.4"
-            },
-            "funding": {
-                "url": "https://github.com/sponsors/ljharb"
-            }
-        },
-        "node_modules/dom-walk": {
-            "version": "0.1.2",
-            "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz",
-            "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w=="
-        },
-        "node_modules/envify": {
-            "version": "4.1.0",
-            "resolved": "https://registry.npmjs.org/envify/-/envify-4.1.0.tgz",
-            "integrity": "sha512-IKRVVoAYr4pIx4yIWNsz9mOsboxlNXiu7TNBnem/K/uTHdkyzXWDzHCK7UTolqBbgaBz0tQHsD3YNls0uIIjiw==",
-            "dependencies": {
-                "esprima": "^4.0.0",
-                "through": "~2.3.4"
-            },
-            "bin": {
-                "envify": "bin/envify"
-            }
-        },
-        "node_modules/es6-promise": {
-            "version": "4.2.8",
-            "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz",
-            "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w=="
-        },
         "node_modules/esbuild": {
             "version": "0.15.18",
             "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.18.tgz",
@@ -663,26 +723,6 @@
                 "node": ">=12"
             }
         },
-        "node_modules/esprima": {
-            "version": "4.0.1",
-            "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
-            "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
-            "bin": {
-                "esparse": "bin/esparse.js",
-                "esvalidate": "bin/esvalidate.js"
-            },
-            "engines": {
-                "node": ">=4"
-            }
-        },
-        "node_modules/events": {
-            "version": "1.1.1",
-            "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz",
-            "integrity": "sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==",
-            "engines": {
-                "node": ">=0.4.x"
-            }
-        },
         "node_modules/fill-range": {
             "version": "7.0.1",
             "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
@@ -695,11 +735,6 @@
                 "node": ">=8"
             }
         },
-        "node_modules/foreach": {
-            "version": "2.0.6",
-            "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.6.tgz",
-            "integrity": "sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg=="
-        },
         "node_modules/fs-extra": {
             "version": "10.0.0",
             "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz",
@@ -734,28 +769,6 @@
                 "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
             }
         },
-        "node_modules/function-bind": {
-            "version": "1.1.2",
-            "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
-            "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
-            "funding": {
-                "url": "https://github.com/sponsors/ljharb"
-            }
-        },
-        "node_modules/get-intrinsic": {
-            "version": "1.2.2",
-            "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz",
-            "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==",
-            "dependencies": {
-                "function-bind": "^1.1.2",
-                "has-proto": "^1.0.1",
-                "has-symbols": "^1.0.3",
-                "hasown": "^2.0.0"
-            },
-            "funding": {
-                "url": "https://github.com/sponsors/ljharb"
-            }
-        },
         "node_modules/glob": {
             "version": "7.2.3",
             "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
@@ -788,76 +801,12 @@
                 "node": ">= 6"
             }
         },
-        "node_modules/global": {
-            "version": "4.4.0",
-            "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz",
-            "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==",
-            "dependencies": {
-                "min-document": "^2.19.0",
-                "process": "^0.11.10"
-            }
-        },
-        "node_modules/gopd": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
-            "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
-            "dependencies": {
-                "get-intrinsic": "^1.1.3"
-            },
-            "funding": {
-                "url": "https://github.com/sponsors/ljharb"
-            }
-        },
         "node_modules/graceful-fs": {
             "version": "4.2.11",
             "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
             "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
             "dev": true
         },
-        "node_modules/has-property-descriptors": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz",
-            "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==",
-            "dependencies": {
-                "get-intrinsic": "^1.2.2"
-            },
-            "funding": {
-                "url": "https://github.com/sponsors/ljharb"
-            }
-        },
-        "node_modules/has-proto": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
-            "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
-            "engines": {
-                "node": ">= 0.4"
-            },
-            "funding": {
-                "url": "https://github.com/sponsors/ljharb"
-            }
-        },
-        "node_modules/has-symbols": {
-            "version": "1.0.3",
-            "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
-            "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
-            "engines": {
-                "node": ">= 0.4"
-            },
-            "funding": {
-                "url": "https://github.com/sponsors/ljharb"
-            }
-        },
-        "node_modules/hasown": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
-            "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
-            "dependencies": {
-                "function-bind": "^1.1.2"
-            },
-            "engines": {
-                "node": ">= 0.4"
-            }
-        },
         "node_modules/hogan.js": {
             "version": "3.0.2",
             "resolved": "https://registry.npmjs.org/hogan.js/-/hogan.js-3.0.2.tgz",
@@ -870,13 +819,10 @@
                 "hulk": "bin/hulk"
             }
         },
-        "node_modules/immutability-helper": {
-            "version": "2.9.1",
-            "resolved": "https://registry.npmjs.org/immutability-helper/-/immutability-helper-2.9.1.tgz",
-            "integrity": "sha512-r/RmRG8xO06s/k+PIaif2r5rGc3j4Yhc01jSBfwPCXDLYZwp/yxralI37Df1mwmuzcCsen/E/ITKcTEvc1PQmQ==",
-            "dependencies": {
-                "invariant": "^2.2.0"
-            }
+        "node_modules/htm": {
+            "version": "3.1.1",
+            "resolved": "https://registry.npmjs.org/htm/-/htm-3.1.1.tgz",
+            "integrity": "sha512-983Vyg8NwUE7JkZ6NmOqpCZ+sh1bKv2iYTlUkzlWmA5JD2acKoxd4KVxbMmxX/85mtfdnDmTFoNKcg5DGAvxNQ=="
         },
         "node_modules/immutable": {
             "version": "4.3.4",
@@ -897,33 +843,37 @@
         "node_modules/inherits": {
             "version": "2.0.4",
             "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
-            "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+            "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+            "dev": true
+        },
+        "node_modules/instantsearch-ui-components": {
+            "version": "0.4.0",
+            "resolved": "https://registry.npmjs.org/instantsearch-ui-components/-/instantsearch-ui-components-0.4.0.tgz",
+            "integrity": "sha512-Isa9Ankm89e9PUXsUto6TxYzcQpXKlWZMsKLXc//dO4i9q5JS8s0Es+c+U65jRLK2j1DiVlNx/Z6HshRIZwA8w==",
+            "dependencies": {
+                "@babel/runtime": "^7.1.2"
+            }
         },
         "node_modules/instantsearch.js": {
-            "version": "2.10.5",
-            "resolved": "https://registry.npmjs.org/instantsearch.js/-/instantsearch.js-2.10.5.tgz",
-            "integrity": "sha512-Rj0Xdkg40T/jADI6UDbY7jOtG9EJo0HskXf3Z5lhv2gddcf9jAmJ1JBaOS+bcVx0V1fZuG2l5e7coobNWrfM1A==",
+            "version": "4.66.0",
+            "resolved": "https://registry.npmjs.org/instantsearch.js/-/instantsearch.js-4.66.0.tgz",
+            "integrity": "sha512-85HVTVBfO0QUBPfbCx2wPE9wEsnWQqWl8IHEOni4567IhH//CwbWv8PwHhT7rBrxSCHsxrgnMTe5dFMz7yc+/A==",
             "dependencies": {
-                "algoliasearch": "^3.27.0",
-                "algoliasearch-helper": "^2.26.0",
-                "classnames": "^2.2.5",
-                "events": "^1.1.0",
+                "@algolia/events": "^4.0.1",
+                "@types/dom-speech-recognition": "^0.0.1",
+                "@types/google.maps": "^3.45.3",
+                "@types/hogan.js": "^3.0.0",
+                "@types/qs": "^6.5.3",
+                "algoliasearch-helper": "3.16.3",
                 "hogan.js": "^3.0.2",
-                "lodash": "^4.17.5",
-                "preact": "^8.2.7",
-                "preact-compat": "^3.18.0",
-                "preact-rheostat": "^2.1.1",
-                "prop-types": "^15.5.10",
-                "qs": "^6.5.1",
-                "to-factory": "^1.0.0"
-            }
-        },
-        "node_modules/invariant": {
-            "version": "2.2.4",
-            "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
-            "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
-            "dependencies": {
-                "loose-envify": "^1.0.0"
+                "htm": "^3.0.0",
+                "instantsearch-ui-components": "0.4.0",
+                "preact": "^10.10.0",
+                "qs": "^6.5.1 < 6.10",
+                "search-insights": "^2.13.0"
+            },
+            "peerDependencies": {
+                "algoliasearch": ">= 3.1 < 6"
             }
         },
         "node_modules/is-binary-path": {
@@ -968,11 +918,6 @@
                 "node": ">=0.12.0"
             }
         },
-        "node_modules/isarray": {
-            "version": "2.0.5",
-            "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
-            "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="
-        },
         "node_modules/jquery": {
             "version": "3.7.1",
             "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz",
@@ -995,16 +940,6 @@
                 "graceful-fs": "^4.1.6"
             }
         },
-        "node_modules/load-script": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/load-script/-/load-script-1.0.0.tgz",
-            "integrity": "sha512-kPEjMFtZvwL9TaZo0uZ2ml+Ye9HUMmPwbYRJ324qF9tqMejwykJ5ggTyvzmrbBeapCAbk98BSbTeovHEEP1uCA=="
-        },
-        "node_modules/lodash": {
-            "version": "4.17.21",
-            "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
-            "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
-        },
         "node_modules/loose-envify": {
             "version": "1.4.0",
             "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
@@ -1022,14 +957,6 @@
             "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==",
             "dev": true
         },
-        "node_modules/min-document": {
-            "version": "2.19.0",
-            "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz",
-            "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==",
-            "dependencies": {
-                "dom-walk": "^0.1.0"
-            }
-        },
         "node_modules/minimatch": {
             "version": "3.1.2",
             "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
@@ -1051,11 +978,6 @@
                 "node": "*"
             }
         },
-        "node_modules/ms": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-            "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
-        },
         "node_modules/nopt": {
             "version": "1.0.10",
             "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
@@ -1095,39 +1017,6 @@
                 "node": ">=0.10.0"
             }
         },
-        "node_modules/object-inspect": {
-            "version": "1.13.1",
-            "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
-            "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",
-            "funding": {
-                "url": "https://github.com/sponsors/ljharb"
-            }
-        },
-        "node_modules/object-keys": {
-            "version": "1.1.1",
-            "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
-            "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
-            "engines": {
-                "node": ">= 0.4"
-            }
-        },
-        "node_modules/object.assign": {
-            "version": "4.1.4",
-            "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz",
-            "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==",
-            "dependencies": {
-                "call-bind": "^1.0.2",
-                "define-properties": "^1.1.4",
-                "has-symbols": "^1.0.3",
-                "object-keys": "^1.1.1"
-            },
-            "engines": {
-                "node": ">= 0.4"
-            },
-            "funding": {
-                "url": "https://github.com/sponsors/ljharb"
-            }
-        },
         "node_modules/once": {
             "version": "1.4.0",
             "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
@@ -1167,95 +1056,18 @@
             }
         },
         "node_modules/preact": {
-            "version": "8.5.3",
-            "resolved": "https://registry.npmjs.org/preact/-/preact-8.5.3.tgz",
-            "integrity": "sha512-O3kKP+1YdgqHOFsZF2a9JVdtqD+RPzCQc3rP+Ualf7V6rmRDchZ9MJbiGTT7LuyqFKZqlHSOyO/oMFmI2lVTsw==",
-            "hasInstallScript": true
-        },
-        "node_modules/preact-compat": {
-            "version": "3.19.0",
-            "resolved": "https://registry.npmjs.org/preact-compat/-/preact-compat-3.19.0.tgz",
-            "integrity": "sha512-f83A4hIhH8Uzhb9GbIcGk8SM19ffWlwP9mDaYwQdRnMdekZwcCA7eIAbeV4EMQaV9C0Yuy8iKgBAtyTKPZQt/Q==",
-            "dependencies": {
-                "immutability-helper": "^2.7.1",
-                "preact-context": "^1.1.3",
-                "preact-render-to-string": "^3.8.2",
-                "preact-transition-group": "^1.1.1",
-                "prop-types": "^15.6.2",
-                "standalone-react-addons-pure-render-mixin": "^0.1.1"
-            },
-            "peerDependencies": {
-                "preact": "<10"
-            }
-        },
-        "node_modules/preact-context": {
-            "version": "1.1.4",
-            "resolved": "https://registry.npmjs.org/preact-context/-/preact-context-1.1.4.tgz",
-            "integrity": "sha512-gcCjPJ65R0MiW9hDu8W/3WAmyTElIvwLyEO6oLQiM6/TbLKLxCpBCWV8GJjx52TTEyUr60HLDcmoCXZlslelzQ==",
-            "peerDependencies": {
-                "preact": "^8.2.7"
-            }
-        },
-        "node_modules/preact-render-to-string": {
-            "version": "3.8.2",
-            "resolved": "https://registry.npmjs.org/preact-render-to-string/-/preact-render-to-string-3.8.2.tgz",
-            "integrity": "sha512-przuZPajiurStGgxMoJP0EJeC4xj5CgHv+M7GfF3YxAdhGgEWAkhOSE0xympAFN20uMayntBZpttIZqqLl77fw==",
-            "dependencies": {
-                "pretty-format": "^3.5.1"
-            },
-            "peerDependencies": {
-                "preact": "*"
-            }
-        },
-        "node_modules/preact-rheostat": {
-            "version": "2.1.1",
-            "resolved": "https://registry.npmjs.org/preact-rheostat/-/preact-rheostat-2.1.1.tgz",
-            "integrity": "sha512-d03JgkpbjknALYl+zfNiJQ60sFd4A0YjnLCe/DB+rqKQck7jXpsW9RqSN0R50/lV8fEezhVCjq2WMPDDOKmwaA==",
-            "dependencies": {
-                "object.assign": "^4.0.4",
-                "preact": "^8.2.5",
-                "preact-compat": "^3.17.0",
-                "prop-types": "^15.5.10"
-            }
-        },
-        "node_modules/preact-transition-group": {
-            "version": "1.1.1",
-            "resolved": "https://registry.npmjs.org/preact-transition-group/-/preact-transition-group-1.1.1.tgz",
-            "integrity": "sha512-v89XLodCvylf5lMrhI+LqIhDsAjWfiDKV4keAU+L5yDtxmqn8uvjZXn+haKMEG0x0PZz81own19SuNJD5NlOFQ==",
-            "peerDependencies": {
-                "preact": "*"
-            }
-        },
-        "node_modules/pretty-format": {
-            "version": "3.8.0",
-            "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-3.8.0.tgz",
-            "integrity": "sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew=="
-        },
-        "node_modules/process": {
-            "version": "0.11.10",
-            "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
-            "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
-            "engines": {
-                "node": ">= 0.6.0"
-            }
-        },
-        "node_modules/prop-types": {
-            "version": "15.8.1",
-            "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
-            "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
-            "dependencies": {
-                "loose-envify": "^1.4.0",
-                "object-assign": "^4.1.1",
-                "react-is": "^16.13.1"
+            "version": "10.20.1",
+            "resolved": "https://registry.npmjs.org/preact/-/preact-10.20.1.tgz",
+            "integrity": "sha512-JIFjgFg9B2qnOoGiYMVBtrcFxHqn+dNXbq76bVmcaHYJFYR4lW67AOcXgAYQQTDYXDOg/kTZrKPNCdRgJ2UJmw==",
+            "funding": {
+                "type": "opencollective",
+                "url": "https://opencollective.com/preact"
             }
         },
         "node_modules/qs": {
-            "version": "6.11.2",
-            "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz",
-            "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==",
-            "dependencies": {
-                "side-channel": "^1.0.4"
-            },
+            "version": "6.9.7",
+            "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz",
+            "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==",
             "engines": {
                 "node": ">=0.6"
             },
@@ -1263,14 +1075,6 @@
                 "url": "https://github.com/sponsors/ljharb"
             }
         },
-        "node_modules/querystring-es3": {
-            "version": "0.2.1",
-            "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
-            "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==",
-            "engines": {
-                "node": ">=0.4.x"
-            }
-        },
         "node_modules/react": {
             "version": "17.0.2",
             "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz",
@@ -1296,11 +1100,6 @@
                 "react": "17.0.2"
             }
         },
-        "node_modules/react-is": {
-            "version": "16.13.1",
-            "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
-            "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
-        },
         "node_modules/readdirp": {
             "version": "3.6.0",
             "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
@@ -1313,13 +1112,10 @@
                 "node": ">=8.10.0"
             }
         },
-        "node_modules/reduce": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/reduce/-/reduce-1.0.2.tgz",
-            "integrity": "sha512-xX7Fxke/oHO5IfZSk77lvPa/7bjMh9BuCk4OOoX5XTXrM7s0Z+MkPfSDfz0q7r91BhhGSs8gii/VEN/7zhCPpQ==",
-            "dependencies": {
-                "object-keys": "^1.1.0"
-            }
+        "node_modules/regenerator-runtime": {
+            "version": "0.14.1",
+            "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
+            "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="
         },
         "node_modules/rimraf": {
             "version": "3.0.2",
@@ -1336,25 +1132,6 @@
                 "url": "https://github.com/sponsors/isaacs"
             }
         },
-        "node_modules/safe-buffer": {
-            "version": "5.2.1",
-            "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
-            "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
-            "funding": [
-                {
-                    "type": "github",
-                    "url": "https://github.com/sponsors/feross"
-                },
-                {
-                    "type": "patreon",
-                    "url": "https://www.patreon.com/feross"
-                },
-                {
-                    "type": "consulting",
-                    "url": "https://feross.org/support"
-                }
-            ]
-        },
         "node_modules/sass": {
             "version": "1.47.0",
             "resolved": "https://registry.npmjs.org/sass/-/sass-1.47.0.tgz",
@@ -1381,40 +1158,10 @@
                 "object-assign": "^4.1.1"
             }
         },
-        "node_modules/semver": {
-            "version": "5.7.2",
-            "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
-            "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
-            "bin": {
-                "semver": "bin/semver"
-            }
-        },
-        "node_modules/set-function-length": {
-            "version": "1.1.1",
-            "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz",
-            "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==",
-            "dependencies": {
-                "define-data-property": "^1.1.1",
-                "get-intrinsic": "^1.2.1",
-                "gopd": "^1.0.1",
-                "has-property-descriptors": "^1.0.0"
-            },
-            "engines": {
-                "node": ">= 0.4"
-            }
-        },
-        "node_modules/side-channel": {
-            "version": "1.0.4",
-            "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
-            "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
-            "dependencies": {
-                "call-bind": "^1.0.0",
-                "get-intrinsic": "^1.0.2",
-                "object-inspect": "^1.9.0"
-            },
-            "funding": {
-                "url": "https://github.com/sponsors/ljharb"
-            }
+        "node_modules/search-insights": {
+            "version": "2.13.0",
+            "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.13.0.tgz",
+            "integrity": "sha512-Orrsjf9trHHxFRuo9/rzm0KIWmgzE8RMlZMzuhZOJ01Rnz3D0YBAe+V6473t6/H6c7irs6Lt48brULAiRWb3Vw=="
         },
         "node_modules/source-map": {
             "version": "0.6.1",
@@ -1434,16 +1181,6 @@
                 "node": ">=0.10.0"
             }
         },
-        "node_modules/standalone-react-addons-pure-render-mixin": {
-            "version": "0.1.1",
-            "resolved": "https://registry.npmjs.org/standalone-react-addons-pure-render-mixin/-/standalone-react-addons-pure-render-mixin-0.1.1.tgz",
-            "integrity": "sha512-HFkwqpJmvz4vxHyzdeUcjtsp8Am+NauLXdU2/YXT1/InPbszaRo1cLPAy/58H7oOPNNjteqHcv04JEw+d9C+Xw=="
-        },
-        "node_modules/through": {
-            "version": "2.3.8",
-            "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
-            "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg=="
-        },
         "node_modules/tmp": {
             "version": "0.2.1",
             "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz",
@@ -1456,11 +1193,6 @@
                 "node": ">=8.17.0"
             }
         },
-        "node_modules/to-factory": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/to-factory/-/to-factory-1.0.0.tgz",
-            "integrity": "sha512-JVYrY42wMG7ddf+wBUQR/uHGbjUHZbLisJ8N62AMm0iTZ0p8YTcZLzdtomU0+H+wa99VbkyvQGB3zxB7NDzgIQ=="
-        },
         "node_modules/to-regex-range": {
             "version": "5.0.1",
             "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
@@ -1473,17 +1205,6 @@
                 "node": ">=8.0"
             }
         },
-        "node_modules/tunnel-agent": {
-            "version": "0.6.0",
-            "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
-            "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
-            "dependencies": {
-                "safe-buffer": "^5.0.1"
-            },
-            "engines": {
-                "node": "*"
-            }
-        },
         "node_modules/universalify": {
             "version": "2.0.0",
             "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
@@ -1517,6 +1238,134 @@
         }
     },
     "dependencies": {
+        "@algolia/cache-browser-local-storage": {
+            "version": "4.22.1",
+            "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.22.1.tgz",
+            "integrity": "sha512-Sw6IAmOCvvP6QNgY9j+Hv09mvkvEIDKjYW8ow0UDDAxSXy664RBNQk3i/0nt7gvceOJ6jGmOTimaZoY1THmU7g==",
+            "requires": {
+                "@algolia/cache-common": "4.22.1"
+            }
+        },
+        "@algolia/cache-common": {
+            "version": "4.22.1",
+            "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.22.1.tgz",
+            "integrity": "sha512-TJMBKqZNKYB9TptRRjSUtevJeQVXRmg6rk9qgFKWvOy8jhCPdyNZV1nB3SKGufzvTVbomAukFR8guu/8NRKBTA=="
+        },
+        "@algolia/cache-in-memory": {
+            "version": "4.22.1",
+            "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.22.1.tgz",
+            "integrity": "sha512-ve+6Ac2LhwpufuWavM/aHjLoNz/Z/sYSgNIXsinGofWOysPilQZPUetqLj8vbvi+DHZZaYSEP9H5SRVXnpsNNw==",
+            "requires": {
+                "@algolia/cache-common": "4.22.1"
+            }
+        },
+        "@algolia/client-account": {
+            "version": "4.22.1",
+            "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.22.1.tgz",
+            "integrity": "sha512-k8m+oegM2zlns/TwZyi4YgCtyToackkOpE+xCaKCYfBfDtdGOaVZCM5YvGPtK+HGaJMIN/DoTL8asbM3NzHonw==",
+            "requires": {
+                "@algolia/client-common": "4.22.1",
+                "@algolia/client-search": "4.22.1",
+                "@algolia/transporter": "4.22.1"
+            }
+        },
+        "@algolia/client-analytics": {
+            "version": "4.22.1",
+            "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.22.1.tgz",
+            "integrity": "sha512-1ssi9pyxyQNN4a7Ji9R50nSdISIumMFDwKNuwZipB6TkauJ8J7ha/uO60sPJFqQyqvvI+px7RSNRQT3Zrvzieg==",
+            "requires": {
+                "@algolia/client-common": "4.22.1",
+                "@algolia/client-search": "4.22.1",
+                "@algolia/requester-common": "4.22.1",
+                "@algolia/transporter": "4.22.1"
+            }
+        },
+        "@algolia/client-common": {
+            "version": "4.22.1",
+            "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.22.1.tgz",
+            "integrity": "sha512-IvaL5v9mZtm4k4QHbBGDmU3wa/mKokmqNBqPj0K7lcR8ZDKzUorhcGp/u8PkPC/e0zoHSTvRh7TRkGX3Lm7iOQ==",
+            "requires": {
+                "@algolia/requester-common": "4.22.1",
+                "@algolia/transporter": "4.22.1"
+            }
+        },
+        "@algolia/client-personalization": {
+            "version": "4.22.1",
+            "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.22.1.tgz",
+            "integrity": "sha512-sl+/klQJ93+4yaqZ7ezOttMQ/nczly/3GmgZXJ1xmoewP5jmdP/X/nV5U7EHHH3hCUEHeN7X1nsIhGPVt9E1cQ==",
+            "requires": {
+                "@algolia/client-common": "4.22.1",
+                "@algolia/requester-common": "4.22.1",
+                "@algolia/transporter": "4.22.1"
+            }
+        },
+        "@algolia/client-search": {
+            "version": "4.22.1",
+            "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.22.1.tgz",
+            "integrity": "sha512-yb05NA4tNaOgx3+rOxAmFztgMTtGBi97X7PC3jyNeGiwkAjOZc2QrdZBYyIdcDLoI09N0gjtpClcackoTN0gPA==",
+            "requires": {
+                "@algolia/client-common": "4.22.1",
+                "@algolia/requester-common": "4.22.1",
+                "@algolia/transporter": "4.22.1"
+            }
+        },
+        "@algolia/events": {
+            "version": "4.0.1",
+            "resolved": "https://registry.npmjs.org/@algolia/events/-/events-4.0.1.tgz",
+            "integrity": "sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ=="
+        },
+        "@algolia/logger-common": {
+            "version": "4.22.1",
+            "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.22.1.tgz",
+            "integrity": "sha512-OnTFymd2odHSO39r4DSWRFETkBufnY2iGUZNrMXpIhF5cmFE8pGoINNPzwg02QLBlGSaLqdKy0bM8S0GyqPLBg=="
+        },
+        "@algolia/logger-console": {
+            "version": "4.22.1",
+            "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.22.1.tgz",
+            "integrity": "sha512-O99rcqpVPKN1RlpgD6H3khUWylU24OXlzkavUAMy6QZd1776QAcauE3oP8CmD43nbaTjBexZj2nGsBH9Tc0FVA==",
+            "requires": {
+                "@algolia/logger-common": "4.22.1"
+            }
+        },
+        "@algolia/requester-browser-xhr": {
+            "version": "4.22.1",
+            "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.22.1.tgz",
+            "integrity": "sha512-dtQGYIg6MteqT1Uay3J/0NDqD+UciHy3QgRbk7bNddOJu+p3hzjTRYESqEnoX/DpEkaNYdRHUKNylsqMpgwaEw==",
+            "requires": {
+                "@algolia/requester-common": "4.22.1"
+            }
+        },
+        "@algolia/requester-common": {
+            "version": "4.22.1",
+            "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.22.1.tgz",
+            "integrity": "sha512-dgvhSAtg2MJnR+BxrIFqlLtkLlVVhas9HgYKMk2Uxiy5m6/8HZBL40JVAMb2LovoPFs9I/EWIoFVjOrFwzn5Qg=="
+        },
+        "@algolia/requester-node-http": {
+            "version": "4.22.1",
+            "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.22.1.tgz",
+            "integrity": "sha512-JfmZ3MVFQkAU+zug8H3s8rZ6h0ahHZL/SpMaSasTCGYR5EEJsCc8SI5UZ6raPN2tjxa5bxS13BRpGSBUens7EA==",
+            "requires": {
+                "@algolia/requester-common": "4.22.1"
+            }
+        },
+        "@algolia/transporter": {
+            "version": "4.22.1",
+            "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.22.1.tgz",
+            "integrity": "sha512-kzWgc2c9IdxMa3YqA6TN0NW5VrKYYW/BELIn7vnLyn+U/RFdZ4lxxt9/8yq3DKV5snvoDzzO4ClyejZRdV3lMQ==",
+            "requires": {
+                "@algolia/cache-common": "4.22.1",
+                "@algolia/logger-common": "4.22.1",
+                "@algolia/requester-common": "4.22.1"
+            }
+        },
+        "@babel/runtime": {
+            "version": "7.24.1",
+            "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.1.tgz",
+            "integrity": "sha512-+BIznRzyqBf+2wCTxcKE3wDjfGeCoVE61KSHGpkzqrLi8qxqFwBeUFyId2cxkTmm55fzDGnm0+yCxaxygrLUnQ==",
+            "requires": {
+                "regenerator-runtime": "^0.14.0"
+            }
+        },
         "@esbuild/android-arm": {
             "version": "0.15.18",
             "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.18.tgz",
@@ -1531,46 +1380,58 @@
             "dev": true,
             "optional": true
         },
+        "@types/dom-speech-recognition": {
+            "version": "0.0.1",
+            "resolved": "https://registry.npmjs.org/@types/dom-speech-recognition/-/dom-speech-recognition-0.0.1.tgz",
+            "integrity": "sha512-udCxb8DvjcDKfk1WTBzDsxFbLgYxmQGKrE/ricoMqHRNjSlSUCcamVTA5lIQqzY10mY5qCY0QDwBfFEwhfoDPw=="
+        },
+        "@types/google.maps": {
+            "version": "3.55.5",
+            "resolved": "https://registry.npmjs.org/@types/google.maps/-/google.maps-3.55.5.tgz",
+            "integrity": "sha512-U1QwCo1GeeLm0YI/GoHvfd1VfwgnoUSBcKCMXXFAM+2izSSuqqwZUJ9XNO6NxZxmYKjBNI+NF5eGF6uUSb1aSg=="
+        },
+        "@types/hogan.js": {
+            "version": "3.0.5",
+            "resolved": "https://registry.npmjs.org/@types/hogan.js/-/hogan.js-3.0.5.tgz",
+            "integrity": "sha512-/uRaY3HGPWyLqOyhgvW9Aa43BNnLZrNeQxl2p8wqId4UHMfPKolSB+U7BlZyO1ng7MkLnyEAItsBzCG0SDhqrA=="
+        },
+        "@types/qs": {
+            "version": "6.9.14",
+            "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.14.tgz",
+            "integrity": "sha512-5khscbd3SwWMhFqylJBLQ0zIu7c1K6Vz0uBIt915BI3zV0q1nfjRQD3RqSBcPaO6PHEF4ov/t9y89fSiyThlPA=="
+        },
         "abbrev": {
             "version": "1.1.1",
             "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
             "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
         },
-        "agentkeepalive": {
-            "version": "2.2.0",
-            "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-2.2.0.tgz",
-            "integrity": "sha512-TnB6ziK363p7lR8QpeLC8aMr8EGYBKZTpgzQLfqTs3bR0Oo5VbKdwKf8h0dSzsYrB7lSCgfJnMZKqShvlq5Oyg=="
-        },
         "algoliasearch": {
-            "version": "3.35.1",
-            "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-3.35.1.tgz",
-            "integrity": "sha512-K4yKVhaHkXfJ/xcUnil04xiSrB8B8yHZoFEhWNpXg23eiCnqvTZw1tn/SqvdsANlYHLJlKl0qi3I/Q2Sqo7LwQ==",
+            "version": "4.22.1",
+            "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.22.1.tgz",
+            "integrity": "sha512-jwydKFQJKIx9kIZ8Jm44SdpigFwRGPESaxZBaHSV0XWN2yBJAOT4mT7ppvlrpA4UGzz92pqFnVKr/kaZXrcreg==",
             "requires": {
-                "agentkeepalive": "^2.2.0",
-                "debug": "^2.6.9",
-                "envify": "^4.0.0",
-                "es6-promise": "^4.1.0",
-                "events": "^1.1.0",
-                "foreach": "^2.0.5",
-                "global": "^4.3.2",
-                "inherits": "^2.0.1",
-                "isarray": "^2.0.1",
-                "load-script": "^1.0.0",
-                "object-keys": "^1.0.11",
-                "querystring-es3": "^0.2.1",
-                "reduce": "^1.0.1",
-                "semver": "^5.1.0",
-                "tunnel-agent": "^0.6.0"
+                "@algolia/cache-browser-local-storage": "4.22.1",
+                "@algolia/cache-common": "4.22.1",
+                "@algolia/cache-in-memory": "4.22.1",
+                "@algolia/client-account": "4.22.1",
+                "@algolia/client-analytics": "4.22.1",
+                "@algolia/client-common": "4.22.1",
+                "@algolia/client-personalization": "4.22.1",
+                "@algolia/client-search": "4.22.1",
+                "@algolia/logger-common": "4.22.1",
+                "@algolia/logger-console": "4.22.1",
+                "@algolia/requester-browser-xhr": "4.22.1",
+                "@algolia/requester-common": "4.22.1",
+                "@algolia/requester-node-http": "4.22.1",
+                "@algolia/transporter": "4.22.1"
             }
         },
         "algoliasearch-helper": {
-            "version": "2.28.1",
-            "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-2.28.1.tgz",
-            "integrity": "sha512-4yg3anWdILD6ZJ/GxWmtu4HgxauSemhSqbe9Cx6SFdPzaMHrccew4IDomMeQlz9RHJwRgi5sEeX//jx2H/PaWg==",
+            "version": "3.16.3",
+            "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.16.3.tgz",
+            "integrity": "sha512-1OuJT6sONAa9PxcOmWo5WCAT3jQSpCR9/m5Azujja7nhUQwAUDvaaAYrcmUySsrvHh74usZHbE3jFfGnWtZj8w==",
             "requires": {
-                "events": "^1.1.1",
-                "lodash": "^4.17.5",
-                "qs": "^6.5.1"
+                "@algolia/events": "^4.0.1"
             }
         },
         "anymatch": {
@@ -1619,16 +1480,6 @@
                 "fill-range": "^7.0.1"
             }
         },
-        "call-bind": {
-            "version": "1.0.5",
-            "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz",
-            "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==",
-            "requires": {
-                "function-bind": "^1.1.2",
-                "get-intrinsic": "^1.2.1",
-                "set-function-length": "^1.1.1"
-            }
-        },
         "chokidar": {
             "version": "3.5.3",
             "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
@@ -1645,11 +1496,6 @@
                 "readdirp": "~3.6.0"
             }
         },
-        "classnames": {
-            "version": "2.3.2",
-            "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz",
-            "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw=="
-        },
         "concat-map": {
             "version": "0.0.1",
             "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
@@ -1671,53 +1517,6 @@
             "resolved": "https://registry.npmjs.org/d3/-/d3-3.5.17.tgz",
             "integrity": "sha512-yFk/2idb8OHPKkbAL8QaOaqENNoMhIaSHZerk3oQsECwkObkCpJyjYwCe+OHiq6UEdhe1m8ZGARRRO3ljFjlKg=="
         },
-        "debug": {
-            "version": "2.6.9",
-            "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-            "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-            "requires": {
-                "ms": "2.0.0"
-            }
-        },
-        "define-data-property": {
-            "version": "1.1.1",
-            "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz",
-            "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==",
-            "requires": {
-                "get-intrinsic": "^1.2.1",
-                "gopd": "^1.0.1",
-                "has-property-descriptors": "^1.0.0"
-            }
-        },
-        "define-properties": {
-            "version": "1.2.1",
-            "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
-            "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
-            "requires": {
-                "define-data-property": "^1.0.1",
-                "has-property-descriptors": "^1.0.0",
-                "object-keys": "^1.1.1"
-            }
-        },
-        "dom-walk": {
-            "version": "0.1.2",
-            "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz",
-            "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w=="
-        },
-        "envify": {
-            "version": "4.1.0",
-            "resolved": "https://registry.npmjs.org/envify/-/envify-4.1.0.tgz",
-            "integrity": "sha512-IKRVVoAYr4pIx4yIWNsz9mOsboxlNXiu7TNBnem/K/uTHdkyzXWDzHCK7UTolqBbgaBz0tQHsD3YNls0uIIjiw==",
-            "requires": {
-                "esprima": "^4.0.0",
-                "through": "~2.3.4"
-            }
-        },
-        "es6-promise": {
-            "version": "4.2.8",
-            "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz",
-            "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w=="
-        },
         "esbuild": {
             "version": "0.15.18",
             "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.18.tgz",
@@ -1900,16 +1699,6 @@
             "dev": true,
             "optional": true
         },
-        "esprima": {
-            "version": "4.0.1",
-            "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
-            "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
-        },
-        "events": {
-            "version": "1.1.1",
-            "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz",
-            "integrity": "sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw=="
-        },
         "fill-range": {
             "version": "7.0.1",
             "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
@@ -1919,11 +1708,6 @@
                 "to-regex-range": "^5.0.1"
             }
         },
-        "foreach": {
-            "version": "2.0.6",
-            "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.6.tgz",
-            "integrity": "sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg=="
-        },
         "fs-extra": {
             "version": "10.0.0",
             "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz",
@@ -1948,22 +1732,6 @@
             "dev": true,
             "optional": true
         },
-        "function-bind": {
-            "version": "1.1.2",
-            "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
-            "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="
-        },
-        "get-intrinsic": {
-            "version": "1.2.2",
-            "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz",
-            "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==",
-            "requires": {
-                "function-bind": "^1.1.2",
-                "has-proto": "^1.0.1",
-                "has-symbols": "^1.0.3",
-                "hasown": "^2.0.0"
-            }
-        },
         "glob": {
             "version": "7.2.3",
             "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
@@ -1987,55 +1755,12 @@
                 "is-glob": "^4.0.1"
             }
         },
-        "global": {
-            "version": "4.4.0",
-            "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz",
-            "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==",
-            "requires": {
-                "min-document": "^2.19.0",
-                "process": "^0.11.10"
-            }
-        },
-        "gopd": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
-            "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
-            "requires": {
-                "get-intrinsic": "^1.1.3"
-            }
-        },
         "graceful-fs": {
             "version": "4.2.11",
             "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
             "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
             "dev": true
         },
-        "has-property-descriptors": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz",
-            "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==",
-            "requires": {
-                "get-intrinsic": "^1.2.2"
-            }
-        },
-        "has-proto": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
-            "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg=="
-        },
-        "has-symbols": {
-            "version": "1.0.3",
-            "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
-            "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A=="
-        },
-        "hasown": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
-            "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
-            "requires": {
-                "function-bind": "^1.1.2"
-            }
-        },
         "hogan.js": {
             "version": "3.0.2",
             "resolved": "https://registry.npmjs.org/hogan.js/-/hogan.js-3.0.2.tgz",
@@ -2045,13 +1770,10 @@
                 "nopt": "1.0.10"
             }
         },
-        "immutability-helper": {
-            "version": "2.9.1",
-            "resolved": "https://registry.npmjs.org/immutability-helper/-/immutability-helper-2.9.1.tgz",
-            "integrity": "sha512-r/RmRG8xO06s/k+PIaif2r5rGc3j4Yhc01jSBfwPCXDLYZwp/yxralI37Df1mwmuzcCsen/E/ITKcTEvc1PQmQ==",
-            "requires": {
-                "invariant": "^2.2.0"
-            }
+        "htm": {
+            "version": "3.1.1",
+            "resolved": "https://registry.npmjs.org/htm/-/htm-3.1.1.tgz",
+            "integrity": "sha512-983Vyg8NwUE7JkZ6NmOqpCZ+sh1bKv2iYTlUkzlWmA5JD2acKoxd4KVxbMmxX/85mtfdnDmTFoNKcg5DGAvxNQ=="
         },
         "immutable": {
             "version": "4.3.4",
@@ -2072,33 +1794,34 @@
         "inherits": {
             "version": "2.0.4",
             "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
-            "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+            "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+            "dev": true
+        },
+        "instantsearch-ui-components": {
+            "version": "0.4.0",
+            "resolved": "https://registry.npmjs.org/instantsearch-ui-components/-/instantsearch-ui-components-0.4.0.tgz",
+            "integrity": "sha512-Isa9Ankm89e9PUXsUto6TxYzcQpXKlWZMsKLXc//dO4i9q5JS8s0Es+c+U65jRLK2j1DiVlNx/Z6HshRIZwA8w==",
+            "requires": {
+                "@babel/runtime": "^7.1.2"
+            }
         },
         "instantsearch.js": {
-            "version": "2.10.5",
-            "resolved": "https://registry.npmjs.org/instantsearch.js/-/instantsearch.js-2.10.5.tgz",
-            "integrity": "sha512-Rj0Xdkg40T/jADI6UDbY7jOtG9EJo0HskXf3Z5lhv2gddcf9jAmJ1JBaOS+bcVx0V1fZuG2l5e7coobNWrfM1A==",
+            "version": "4.66.0",
+            "resolved": "https://registry.npmjs.org/instantsearch.js/-/instantsearch.js-4.66.0.tgz",
+            "integrity": "sha512-85HVTVBfO0QUBPfbCx2wPE9wEsnWQqWl8IHEOni4567IhH//CwbWv8PwHhT7rBrxSCHsxrgnMTe5dFMz7yc+/A==",
             "requires": {
-                "algoliasearch": "^3.27.0",
-                "algoliasearch-helper": "^2.26.0",
-                "classnames": "^2.2.5",
-                "events": "^1.1.0",
+                "@algolia/events": "^4.0.1",
+                "@types/dom-speech-recognition": "^0.0.1",
+                "@types/google.maps": "^3.45.3",
+                "@types/hogan.js": "^3.0.0",
+                "@types/qs": "^6.5.3",
+                "algoliasearch-helper": "3.16.3",
                 "hogan.js": "^3.0.2",
-                "lodash": "^4.17.5",
-                "preact": "^8.2.7",
-                "preact-compat": "^3.18.0",
-                "preact-rheostat": "^2.1.1",
-                "prop-types": "^15.5.10",
-                "qs": "^6.5.1",
-                "to-factory": "^1.0.0"
-            }
-        },
-        "invariant": {
-            "version": "2.2.4",
-            "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
-            "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
-            "requires": {
-                "loose-envify": "^1.0.0"
+                "htm": "^3.0.0",
+                "instantsearch-ui-components": "0.4.0",
+                "preact": "^10.10.0",
+                "qs": "^6.5.1 < 6.10",
+                "search-insights": "^2.13.0"
             }
         },
         "is-binary-path": {
@@ -2131,11 +1854,6 @@
             "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
             "dev": true
         },
-        "isarray": {
-            "version": "2.0.5",
-            "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
-            "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="
-        },
         "jquery": {
             "version": "3.7.1",
             "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz",
@@ -2156,16 +1874,6 @@
                 "universalify": "^2.0.0"
             }
         },
-        "load-script": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/load-script/-/load-script-1.0.0.tgz",
-            "integrity": "sha512-kPEjMFtZvwL9TaZo0uZ2ml+Ye9HUMmPwbYRJ324qF9tqMejwykJ5ggTyvzmrbBeapCAbk98BSbTeovHEEP1uCA=="
-        },
-        "lodash": {
-            "version": "4.17.21",
-            "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
-            "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
-        },
         "loose-envify": {
             "version": "1.4.0",
             "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
@@ -2180,14 +1888,6 @@
             "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==",
             "dev": true
         },
-        "min-document": {
-            "version": "2.19.0",
-            "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz",
-            "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==",
-            "requires": {
-                "dom-walk": "^0.1.0"
-            }
-        },
         "minimatch": {
             "version": "3.1.2",
             "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
@@ -2202,11 +1902,6 @@
             "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz",
             "integrity": "sha512-OHsdUcVAQ6pOtg5JYWpCBo9W/GySVuwvP9hueRMW7UqshC0tbfzLv8wjySTPm3tfUZ/21CE9E1pJagOA91Pxew=="
         },
-        "ms": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-            "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
-        },
         "nopt": {
             "version": "1.0.10",
             "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
@@ -2232,27 +1927,6 @@
             "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
             "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="
         },
-        "object-inspect": {
-            "version": "1.13.1",
-            "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
-            "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ=="
-        },
-        "object-keys": {
-            "version": "1.1.1",
-            "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
-            "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="
-        },
-        "object.assign": {
-            "version": "4.1.4",
-            "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz",
-            "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==",
-            "requires": {
-                "call-bind": "^1.0.2",
-                "define-properties": "^1.1.4",
-                "has-symbols": "^1.0.3",
-                "object-keys": "^1.1.1"
-            }
-        },
         "once": {
             "version": "1.4.0",
             "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
@@ -2280,86 +1954,14 @@
             "integrity": "sha512-lmOWYQ7s9KOUJ1R+YTOR3HrjdbxIS2Z4de0P/Jx2dQPteznJl2eX3tXxKClpvbfyGP59B5bbhW8ftN59HbbFSg=="
         },
         "preact": {
-            "version": "8.5.3",
-            "resolved": "https://registry.npmjs.org/preact/-/preact-8.5.3.tgz",
-            "integrity": "sha512-O3kKP+1YdgqHOFsZF2a9JVdtqD+RPzCQc3rP+Ualf7V6rmRDchZ9MJbiGTT7LuyqFKZqlHSOyO/oMFmI2lVTsw=="
-        },
-        "preact-compat": {
-            "version": "3.19.0",
-            "resolved": "https://registry.npmjs.org/preact-compat/-/preact-compat-3.19.0.tgz",
-            "integrity": "sha512-f83A4hIhH8Uzhb9GbIcGk8SM19ffWlwP9mDaYwQdRnMdekZwcCA7eIAbeV4EMQaV9C0Yuy8iKgBAtyTKPZQt/Q==",
-            "requires": {
-                "immutability-helper": "^2.7.1",
-                "preact-context": "^1.1.3",
-                "preact-render-to-string": "^3.8.2",
-                "preact-transition-group": "^1.1.1",
-                "prop-types": "^15.6.2",
-                "standalone-react-addons-pure-render-mixin": "^0.1.1"
-            }
-        },
-        "preact-context": {
-            "version": "1.1.4",
-            "resolved": "https://registry.npmjs.org/preact-context/-/preact-context-1.1.4.tgz",
-            "integrity": "sha512-gcCjPJ65R0MiW9hDu8W/3WAmyTElIvwLyEO6oLQiM6/TbLKLxCpBCWV8GJjx52TTEyUr60HLDcmoCXZlslelzQ==",
-            "requires": {}
-        },
-        "preact-render-to-string": {
-            "version": "3.8.2",
-            "resolved": "https://registry.npmjs.org/preact-render-to-string/-/preact-render-to-string-3.8.2.tgz",
-            "integrity": "sha512-przuZPajiurStGgxMoJP0EJeC4xj5CgHv+M7GfF3YxAdhGgEWAkhOSE0xympAFN20uMayntBZpttIZqqLl77fw==",
-            "requires": {
-                "pretty-format": "^3.5.1"
-            }
-        },
-        "preact-rheostat": {
-            "version": "2.1.1",
-            "resolved": "https://registry.npmjs.org/preact-rheostat/-/preact-rheostat-2.1.1.tgz",
-            "integrity": "sha512-d03JgkpbjknALYl+zfNiJQ60sFd4A0YjnLCe/DB+rqKQck7jXpsW9RqSN0R50/lV8fEezhVCjq2WMPDDOKmwaA==",
-            "requires": {
-                "object.assign": "^4.0.4",
-                "preact": "^8.2.5",
-                "preact-compat": "^3.17.0",
-                "prop-types": "^15.5.10"
-            }
-        },
-        "preact-transition-group": {
-            "version": "1.1.1",
-            "resolved": "https://registry.npmjs.org/preact-transition-group/-/preact-transition-group-1.1.1.tgz",
-            "integrity": "sha512-v89XLodCvylf5lMrhI+LqIhDsAjWfiDKV4keAU+L5yDtxmqn8uvjZXn+haKMEG0x0PZz81own19SuNJD5NlOFQ==",
-            "requires": {}
-        },
-        "pretty-format": {
-            "version": "3.8.0",
-            "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-3.8.0.tgz",
-            "integrity": "sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew=="
-        },
-        "process": {
-            "version": "0.11.10",
-            "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
-            "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A=="
-        },
-        "prop-types": {
-            "version": "15.8.1",
-            "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
-            "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
-            "requires": {
-                "loose-envify": "^1.4.0",
-                "object-assign": "^4.1.1",
-                "react-is": "^16.13.1"
-            }
+            "version": "10.20.1",
+            "resolved": "https://registry.npmjs.org/preact/-/preact-10.20.1.tgz",
+            "integrity": "sha512-JIFjgFg9B2qnOoGiYMVBtrcFxHqn+dNXbq76bVmcaHYJFYR4lW67AOcXgAYQQTDYXDOg/kTZrKPNCdRgJ2UJmw=="
         },
         "qs": {
-            "version": "6.11.2",
-            "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz",
-            "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==",
-            "requires": {
-                "side-channel": "^1.0.4"
-            }
-        },
-        "querystring-es3": {
-            "version": "0.2.1",
-            "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
-            "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA=="
+            "version": "6.9.7",
+            "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz",
+            "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw=="
         },
         "react": {
             "version": "17.0.2",
@@ -2380,11 +1982,6 @@
                 "scheduler": "^0.20.2"
             }
         },
-        "react-is": {
-            "version": "16.13.1",
-            "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
-            "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
-        },
         "readdirp": {
             "version": "3.6.0",
             "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
@@ -2394,13 +1991,10 @@
                 "picomatch": "^2.2.1"
             }
         },
-        "reduce": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/reduce/-/reduce-1.0.2.tgz",
-            "integrity": "sha512-xX7Fxke/oHO5IfZSk77lvPa/7bjMh9BuCk4OOoX5XTXrM7s0Z+MkPfSDfz0q7r91BhhGSs8gii/VEN/7zhCPpQ==",
-            "requires": {
-                "object-keys": "^1.1.0"
-            }
+        "regenerator-runtime": {
+            "version": "0.14.1",
+            "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
+            "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="
         },
         "rimraf": {
             "version": "3.0.2",
@@ -2411,11 +2005,6 @@
                 "glob": "^7.1.3"
             }
         },
-        "safe-buffer": {
-            "version": "5.2.1",
-            "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
-            "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
-        },
         "sass": {
             "version": "1.47.0",
             "resolved": "https://registry.npmjs.org/sass/-/sass-1.47.0.tgz",
@@ -2436,31 +2025,10 @@
                 "object-assign": "^4.1.1"
             }
         },
-        "semver": {
-            "version": "5.7.2",
-            "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
-            "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g=="
-        },
-        "set-function-length": {
-            "version": "1.1.1",
-            "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz",
-            "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==",
-            "requires": {
-                "define-data-property": "^1.1.1",
-                "get-intrinsic": "^1.2.1",
-                "gopd": "^1.0.1",
-                "has-property-descriptors": "^1.0.0"
-            }
-        },
-        "side-channel": {
-            "version": "1.0.4",
-            "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
-            "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
-            "requires": {
-                "call-bind": "^1.0.0",
-                "get-intrinsic": "^1.0.2",
-                "object-inspect": "^1.9.0"
-            }
+        "search-insights": {
+            "version": "2.13.0",
+            "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.13.0.tgz",
+            "integrity": "sha512-Orrsjf9trHHxFRuo9/rzm0KIWmgzE8RMlZMzuhZOJ01Rnz3D0YBAe+V6473t6/H6c7irs6Lt48brULAiRWb3Vw=="
         },
         "source-map": {
             "version": "0.6.1",
@@ -2474,16 +2042,6 @@
             "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
             "dev": true
         },
-        "standalone-react-addons-pure-render-mixin": {
-            "version": "0.1.1",
-            "resolved": "https://registry.npmjs.org/standalone-react-addons-pure-render-mixin/-/standalone-react-addons-pure-render-mixin-0.1.1.tgz",
-            "integrity": "sha512-HFkwqpJmvz4vxHyzdeUcjtsp8Am+NauLXdU2/YXT1/InPbszaRo1cLPAy/58H7oOPNNjteqHcv04JEw+d9C+Xw=="
-        },
-        "through": {
-            "version": "2.3.8",
-            "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
-            "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg=="
-        },
         "tmp": {
             "version": "0.2.1",
             "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz",
@@ -2493,11 +2051,6 @@
                 "rimraf": "^3.0.0"
             }
         },
-        "to-factory": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/to-factory/-/to-factory-1.0.0.tgz",
-            "integrity": "sha512-JVYrY42wMG7ddf+wBUQR/uHGbjUHZbLisJ8N62AMm0iTZ0p8YTcZLzdtomU0+H+wa99VbkyvQGB3zxB7NDzgIQ=="
-        },
         "to-regex-range": {
             "version": "5.0.1",
             "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
@@ -2507,14 +2060,6 @@
                 "is-number": "^7.0.0"
             }
         },
-        "tunnel-agent": {
-            "version": "0.6.0",
-            "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
-            "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
-            "requires": {
-                "safe-buffer": "^5.0.1"
-            }
-        },
         "universalify": {
             "version": "2.0.0",
             "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
diff --git a/package.json b/package.json
index bc5df8cb3b..2a545272be 100644
--- a/package.json
+++ b/package.json
@@ -1,9 +1,10 @@
 {
     "name": "packagist.org",
     "dependencies": {
+        "algoliasearch": "^4.22.1",
         "bootstrap": "3.3.5",
         "d3": "^3.5.17",
-        "instantsearch.js": "^2.7.4",
+        "instantsearch.js": "^4.66.0",
         "jquery": "^3.6.0",
         "nvd3": "^1.8.6",
         "plausible-tracker": "^0.3",
diff --git a/templates/layout.html.twig b/templates/layout.html.twig
index 97a50974b7..a8adae0863 100644
--- a/templates/layout.html.twig
+++ b/templates/layout.html.twig
@@ -223,11 +223,7 @@
         </footer>
 
         <script nonce="{{ csp_nonce('script') }}">
-            var algoliaConfig = {{ algolia|json_encode|raw }};
-            {# For Aloglia instantsearch 2.x, can be dropped once we upgrade to 4.x #}
-            window.process = {
-                env: { DEBUG: undefined },
-            };
+            const algoliaConfig = {{ algolia|json_encode|raw }};
         </script>
         {% block script_init %}{% endblock %}